diff --git a/markdown/dev/guides/code-of-conduct/en.md b/markdown/dev/guides/code-of-conduct/en.md index ae10642606a..93e375389c6 100644 --- a/markdown/dev/guides/code-of-conduct/en.md +++ b/markdown/dev/guides/code-of-conduct/en.md @@ -14,6 +14,7 @@ This Code of Conduct is an almost verbatim copy of the [Contributor Covenant][ho available at [http://contributor-covenant.org/version/2/0][version] [homepage]: http://contributor-covenant.org + [version]: http://contributor-covenant.org/version/2/0/ diff --git a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/correction/en.md b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/correction/en.md index 42c92fcc515..82691a2983c 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/correction/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/correction/en.md @@ -4,12 +4,14 @@ order: 10 --- ##### Community Impact -Use of inappropriate language or other behavior + +Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. ##### Consequence -A private, written warning from community leaders, -providing clarity around the nature of the violation and an -explanation of why the behavior was inappropriate. - + +A private, written warning from community leaders, +providing clarity around the nature of the violation and an +explanation of why the behavior was inappropriate. + A public apology may be requested. diff --git a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/en.md b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/en.md index 86513580827..37202cd5ec7 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/en.md @@ -3,8 +3,8 @@ title: Enforcement Guidelines order: 60 --- -Community leaders will follow these Community Impact Guidelines -in determining the consequences for any action they deem +Community leaders will follow these Community Impact Guidelines +in determining the consequences for any action they deem in violation of FreeSewing's Code of Conduct: diff --git a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/permanent-ban/en.md b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/permanent-ban/en.md index 0143bf8c17f..1c44452a7cd 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/permanent-ban/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/permanent-ban/en.md @@ -4,10 +4,12 @@ order: 40 --- ##### Community Impact -Demonstrating a pattern of violation of -community standards, including sustained inappropriate behavior, -harassment of an individual, or aggression toward or + +Demonstrating a pattern of violation of +community standards, including sustained inappropriate behavior, +harassment of an individual, or aggression toward or disparagement of classes of individuals. ##### Consequence + A permanent ban from any sort of public interaction within the community. diff --git a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/temporary-ban/en.md b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/temporary-ban/en.md index e489b00f48d..6ccccfdbf4b 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/temporary-ban/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/temporary-ban/en.md @@ -3,18 +3,19 @@ title: Temporary ban order: 30 --- -##### Community Impact -A serious violation of community standards, +##### Community Impact + +A serious violation of community standards, including sustained inappropriate behavior. ##### Consequence -A temporary ban from any sort of interaction or -public communication with the community for a specified period -of time. -No public or private interaction with the people -involved, including unsolicited interaction with those enforcing -the Code of Conduct, is allowed during this period. +A temporary ban from any sort of interaction or +public communication with the community for a specified period +of time. + +No public or private interaction with the people +involved, including unsolicited interaction with those enforcing +the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. - diff --git a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/warning/en.md b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/warning/en.md index 9ac4e38f9b2..81891cdc362 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-guidelines/warning/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-guidelines/warning/en.md @@ -4,14 +4,16 @@ order: 20 --- ##### Community Impact + A violation through a single incident or series of actions. - + ##### Consequence -A warning with consequences for continued behavior. -No interaction with the people involved, including unsolicited -interaction with those enforcing the Code of Conduct, for a -specified period of time. This includes avoiding interactions + +A warning with consequences for continued behavior.\ +No interaction with the people involved, including unsolicited +interaction with those enforcing the Code of Conduct, for a +specified period of time. This includes avoiding interactions in community spaces as well as external channels like social -media. +media. Violating these terms may lead to a temporary or permanent ban. diff --git a/markdown/dev/guides/code-of-conduct/enforcement-responsibilities/en.md b/markdown/dev/guides/code-of-conduct/enforcement-responsibilities/en.md index d6991787dad..eb795eb7b7b 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement-responsibilities/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement-responsibilities/en.md @@ -3,12 +3,12 @@ title: Enforcement responsibilities order: 30 --- -Community leaders are responsible for clarifying and enforcing our standards -of acceptable behavior and will take appropriate and fair corrective action -in response to any behavior that they deem inappropriate, threatening, +Community leaders are responsible for clarifying and enforcing our standards +of acceptable behavior and will take appropriate and fair corrective action +in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. -Community leaders have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, and will communicate reasons +Community leaders have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. diff --git a/markdown/dev/guides/code-of-conduct/enforcement/en.md b/markdown/dev/guides/code-of-conduct/enforcement/en.md index a632e384144..f1af46ef72d 100644 --- a/markdown/dev/guides/code-of-conduct/enforcement/en.md +++ b/markdown/dev/guides/code-of-conduct/enforcement/en.md @@ -6,11 +6,10 @@ order: 50 Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement: - - Joost De Cock (joost@joost.at) - - Sorcha Ní Dhubhghaill (nidhubhs@gmail.com) +- Joost De Cock (joost@joost.at) +- Sorcha Ní Dhubhghaill (nidhubhs@gmail.com) All complaints will be reviewed and investigated promptly and fairly. -All community leaders are obligated to respect the privacy and +All community leaders are obligated to respect the privacy and security of the reporter of any incident. - diff --git a/markdown/dev/guides/code-of-conduct/our-pledge/en.md b/markdown/dev/guides/code-of-conduct/our-pledge/en.md index 41a2a697718..f0492375fde 100644 --- a/markdown/dev/guides/code-of-conduct/our-pledge/en.md +++ b/markdown/dev/guides/code-of-conduct/our-pledge/en.md @@ -3,14 +3,13 @@ title: Our pledge order: 10 --- -We as members, contributors, and leaders of the FreeSewing community pledge +We as members, contributors, and leaders of the FreeSewing community pledge to make participation in our community a harassment-free experience for everyone. -Everyone, regardless of age, body size, visible or invisible disability, -ethnicity, sex characteristics, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, +Everyone, regardless of age, body size, visible or invisible disability, +ethnicity, sex characteristics, gender identity and expression, level of experience, +education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. -We pledge to act and interact in ways that contribute to an open, welcoming, +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. - diff --git a/markdown/dev/guides/code-of-conduct/our-standards/en.md b/markdown/dev/guides/code-of-conduct/our-standards/en.md index 747b50a477c..57c6c8d80a4 100644 --- a/markdown/dev/guides/code-of-conduct/our-standards/en.md +++ b/markdown/dev/guides/code-of-conduct/our-standards/en.md @@ -5,16 +5,16 @@ order: 20 Examples of behavior that contributes to a positive environment for our community include: - - Demonstrating empathy and kindness toward other people - - Being respectful of differing opinions, viewpoints, and experiences - - Giving and gracefully accepting constructive feedback - - Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience - - Focusing on what is best not just for us as individuals, but for the overall community +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: - - The use of sexualized language or imagery, and sexual attention or advances of any kind - - Trolling, insulting or derogatory comments, and personal or political attacks - - Public or private harassment - - Publishing others’ private information, such as a physical or email address, without their explicit permission - - Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting diff --git a/markdown/dev/guides/code-of-conduct/scope/en.md b/markdown/dev/guides/code-of-conduct/scope/en.md index 74545fb0cb4..5fade6e37c0 100644 --- a/markdown/dev/guides/code-of-conduct/scope/en.md +++ b/markdown/dev/guides/code-of-conduct/scope/en.md @@ -3,10 +3,9 @@ title: Scope order: 40 --- -This Code of Conduct applies within all FreeSewing community spaces, and also applies -when an individual is officially representing the FreeSewing community in public spaces. +This Code of Conduct applies within all FreeSewing community spaces, and also applies +when an individual is officially representing the FreeSewing community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed representative +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed representative at an online or offline event. - diff --git a/markdown/dev/guides/docs/en.md b/markdown/dev/guides/docs/en.md index f4090560c0c..8eeab20227f 100644 --- a/markdown/dev/guides/docs/en.md +++ b/markdown/dev/guides/docs/en.md @@ -10,10 +10,10 @@ documentation can help you find your feet, and figure out what goes where. Our documentation is divided into four different types: - - [**Tutorials**](/tutorials) are lessons that lead you through a series of steps to complete a project. - - [**Guides**](/guides) tell a story to further your understanding of a specific topic. - - [**Howtos**](/howtos) give you concrete steps to solve a common problem or challenge. - - [**Reference**](/reference) holds technical descriptions of the underlying technology and how to make use of it. +- [**Tutorials**](/tutorials) are lessons that lead you through a series of steps to complete a project. +- [**Guides**](/guides) tell a story to further your understanding of a specific topic. +- [**Howtos**](/howtos) give you concrete steps to solve a common problem or challenge. +- [**Reference**](/reference) holds technical descriptions of the underlying technology and how to make use of it. Each time you write documentation, you have to ask yourself: Is it a tutorial? Is it a Guide? Is it a Howto? Or is it Reference documentation. @@ -21,24 +21,21 @@ Is it a Howto? Or is it Reference documentation. If you find it hard to answer that question, the illustration below might help you figure out where your documentation should go based on what it's trying to accomplish: -![A graphic showing a visual representation of our documentation +![A graphic showing a visual representation of our documentation structure](docs.png "A visual representation of how our documentation is structured") - -- Write a **Tutorial** is your aim is to help people learn the platform -- Write a **Guide** if your aim is to further people's understanding of a topic by going a bit deeper -- Write a **Howto** if your ain is to help people accomplish a task -- Write **Reference** documentation to detail how things work under the hood -- Refer people to **Discord or Github** for things that are not (yet) covered in our documentation - +- Write a **Tutorial** is your aim is to help people learn the platform +- Write a **Guide** if your aim is to further people's understanding of a topic by going a bit deeper +- Write a **Howto** if your ain is to help people accomplish a task +- Write **Reference** documentation to detail how things work under the hood +- Refer people to **Discord or Github** for things that are not (yet) covered in our documentation ##### Based on a talk by Daniele Procida -This structure is loosely based +This structure is loosely based on [this talk by Daniele Procida](https://www.youtube.com/watch?v=t4vKPhjcMZg) at PyCon AU 2017. - diff --git a/markdown/dev/guides/en.md b/markdown/dev/guides/en.md index 1f7819e91bc..7c65bb95600 100644 --- a/markdown/dev/guides/en.md +++ b/markdown/dev/guides/en.md @@ -3,8 +3,7 @@ title: Guides order: zbb --- -You can find a list of all FreeSewing guides below: - +You can find a list of all FreeSewing guides below: @@ -20,4 +19,3 @@ guides take more time to explain in-depth what is being done and why. For more details, refer to [How we structure our documentation](/guides/docs). - diff --git a/markdown/dev/guides/markdown/code-blocks/en.md b/markdown/dev/guides/markdown/code-blocks/en.md index 3f26926c81e..54aa23ac86b 100644 --- a/markdown/dev/guides/markdown/code-blocks/en.md +++ b/markdown/dev/guides/markdown/code-blocks/en.md @@ -3,7 +3,7 @@ title: Code and code blocks order: 80 --- -Especially for our developer documentation, there's a lot of times we include source code +Especially for our developer documentation, there's a lot of times we include source code in the documentation. You can make these look pretty by using a code block. @@ -15,7 +15,7 @@ let me = 'you' ``` ```` -Gives you: +Gives you: ```text let me = 'you' @@ -38,14 +38,11 @@ let me = 'you' The following language codes are supported: - - `js` for Javascript code - - `markdown` for Markdown - - `html` for HTML - - `svg` for SVG - - `bash` for Bash or shell scripts - - `mdx` for MDX - - `jsx` for JSX - - `json` for JSON - - - +- `js` for Javascript code +- `markdown` for Markdown +- `html` for HTML +- `svg` for SVG +- `bash` for Bash or shell scripts +- `mdx` for MDX +- `jsx` for JSX +- `json` for JSON diff --git a/markdown/dev/guides/markdown/custom-components/en.md b/markdown/dev/guides/markdown/custom-components/en.md index be1de34bf67..fd133c6287e 100644 --- a/markdown/dev/guides/markdown/custom-components/en.md +++ b/markdown/dev/guides/markdown/custom-components/en.md @@ -3,7 +3,7 @@ title: Custom components order: 90 --- -The way we render markdown on our websites is through the use of [MDX](https://mdxjs.com/). +The way we render markdown on our websites is through the use of [MDX](https://mdxjs.com/).\ This allows us to extend Markdown with our own so-called *custom components*. Such custom components allow us to put things in Markdown content that would @@ -42,7 +42,6 @@ The **Comment** component requires a `by` attribute that lists the author of the **Do** try this at home ``` - ## Fixme @@ -62,7 +61,6 @@ or can't fix it now. ``` - ## Note @@ -91,6 +89,7 @@ It's typically used on overview pages, such as out [markdown guide](/guides/mark It won't show anything on this page, since this page has not child-pages. ## Related + This snippet is provided by [the buttons plugin](/reference/plugins/buttons) @@ -104,6 +103,7 @@ Use **Related** to add something that is relevant to the current topic. ``` ## Tip + Comparing yourself to others is the fastest way to become unhappy @@ -117,6 +117,7 @@ Use **Tip** for, you know, tips. ``` ## Warning + ##### Please make a backup Following these instructions will remove all your data @@ -142,7 +143,7 @@ Embed a video: ```markdown ``` - + Embed a playlist: @@ -150,6 +151,3 @@ Embed a playlist: ```md ``` - - - diff --git a/markdown/dev/guides/markdown/en.md b/markdown/dev/guides/markdown/en.md index a5fe24d44da..a7eb6e6a6f9 100644 --- a/markdown/dev/guides/markdown/en.md +++ b/markdown/dev/guides/markdown/en.md @@ -14,7 +14,7 @@ goals: - Learn about the different custom components --- -Markdown is a lightweight markup language with plain text formatting syntax. +Markdown is a lightweight markup language with plain text formatting syntax. It is designed to be easily readable by humans, and computers alike. Markdown is often used to format documentation, online comments, @@ -24,6 +24,5 @@ In this guide, we'll look at the following topics: -This will be enough to get you started. If you'd like to learn more, +This will be enough to get you started. If you'd like to learn more, visit [markdownguide.org](https://www.markdownguide.org/). - diff --git a/markdown/dev/guides/markdown/frequent-mistakes/en.md b/markdown/dev/guides/markdown/frequent-mistakes/en.md index 3d08eee9554..8b94c1b90ad 100644 --- a/markdown/dev/guides/markdown/frequent-mistakes/en.md +++ b/markdown/dev/guides/markdown/frequent-mistakes/en.md @@ -7,33 +7,33 @@ Some things to keep in mind when working in Markdown are: ## Use remark-jargon for glossary terms -There is no need to add a *glossary* section to documentation. -We use a plugin called [remark-jargon][rj] to explain terms. +There is no need to add a *glossary* section to documentation. +We use a plugin called [remark-jargon][rj] to explain terms. Information can be found at the link. [rj]: https://github.com/freesewing/freesewing/blob/develop/packages/remark-jargon/README.md ## Let lists be lists -Please make sure to use Markdown proper, doing things such as hardcoding -numbers for lists and using `·` for bulleted lists won't be rendered -properly and will be styled differently. -Using Markdown in the same way for everything ensures the site and -documentation look clean and professional. You can use a Markdown editor +Please make sure to use Markdown proper, doing things such as hardcoding +numbers for lists and using `·` for bulleted lists won't be rendered +properly and will be styled differently. +Using Markdown in the same way for everything ensures the site and +documentation look clean and professional. You can use a Markdown editor like [StackEdit](https://stackedit.io/) to preview your text. Github itself also allows working in Markdown and will give you a handy preview! -If you get lost or have a question about how to do something, feel free to come -ask on the Discord. We've all had to learn Markdown at some point and would be -delighted to pass knowledge on. +If you get lost or have a question about how to do something, feel free to come +ask on the Discord. We've all had to learn Markdown at some point and would be +delighted to pass knowledge on. ## Create meaningful links -When adding links please do not link them using a structure like: -Link [here][yt]. Instead put the link under the relevant term. +When adding links please do not link them using a structure like: +Link [here][yt]. Instead put the link under the relevant term. See first list item for an example. [yt]: https://www.youtube.com/watch?v=dQw4w9WgXcQ @@ -42,22 +42,23 @@ See first list item for an example. ### Lining within the same website -When you are linking within freesewing.dev or freesewing.org you can use a relative link from -the site root. +When you are linking within freesewing.dev or freesewing.org you can use a relative link from +the site root.\ Use: ```text /guides/markdown/frequent-mistakes ``` -instead of + +instead of ```text https://freesewing.dev/guides/markdown/frequent-mistakes -``` +``` ### Linking images -Images can be put in the same folder you are working on with a link +Images can be put in the same folder you are working on with a link to the filename. For example: ```markdown @@ -66,16 +67,16 @@ This is [a picture of a banana](banana.jpg) ## Avoid ambiguity when lising a number of steps -If you're writing documentation that involves steps, please do not mix levels -of steps. Steps written out in documentation are there to facilitate brainless +If you're writing documentation that involves steps, please do not mix levels +of steps. Steps written out in documentation are there to facilitate brainless execution. Don't be afraid to repeat yourself. -If you use substeps we want those substeps to take away ambiguity rather -than introduce it into your instructions. In the next example the substep -introduces something that ought to be done before the previous steps. -This creates confusion about when that step ought to be executed. +If you use substeps we want those substeps to take away ambiguity rather +than introduce it into your instructions. In the next example the substep +introduces something that ought to be done before the previous steps. +This creates confusion about when that step ought to be executed. -An example of what not to do: +An example of what not to do: ```md 1. cut collar @@ -87,18 +88,18 @@ An example of what not to do: ## Be mindful of whitespace -Markdown sytax around white space is a little unintuitive. If you want a -paragraph break but no white space you need to add two spaces at the end of -your line. I've found it helpful to experiment and keep checking the preview -to see how things look. Not all the empty lines and whitespace in your -document will render in the preview. +Markdown sytax around white space is a little unintuitive. If you want a +paragraph break but no white space you need to add two spaces at the end of +your line. I've found it helpful to experiment and keep checking the preview +to see how things look. Not all the empty lines and whitespace in your +document will render in the preview. ## Using custom components -When you're using custom components you want to leave an empty line before -and after your component. +When you're using custom components you want to leave an empty line before +and after your component. -```markdown +```markdown Lorem ipsum dolor sit amet, @@ -108,9 +109,8 @@ consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. ``` -If you're using any markdown syntax within a custom component you want to also -leave an empty line at the start and end of your component. - +If you're using any markdown syntax within a custom component you want to also +leave an empty line at the start and end of your component. ```markdown Lorem ipsum dolor sit amet, @@ -125,11 +125,7 @@ sed eiusmod tempor incidunt ut labore et dolore magna aliqua. ``` ## Don't be shy to ask a friend -Learning a new language can be intimidating, whether its Javascript, Norse or -Markdown but everyone in the Freesewing community is glad you're here and -helping us make the site even more awesome. - - - - +Learning a new language can be intimidating, whether its Javascript, Norse or +Markdown but everyone in the Freesewing community is glad you're here and +helping us make the site even more awesome. diff --git a/markdown/dev/guides/markdown/images/en.md b/markdown/dev/guides/markdown/images/en.md index c87921b59a2..8c70f211c5f 100644 --- a/markdown/dev/guides/markdown/images/en.md +++ b/markdown/dev/guides/markdown/images/en.md @@ -20,9 +20,8 @@ followed by a space and the image title between quotes. ##### Images go in the same folder as your markdown file -The convention is to always place your images in the same folder as the +The convention is to always place your images in the same folder as the text where you are including the image. That way, you just need to specify the image name, and not the path to its location. - diff --git a/markdown/dev/guides/markdown/italic-and-bold/en.md b/markdown/dev/guides/markdown/italic-and-bold/en.md index 7936606922d..f2829fe0ba6 100644 --- a/markdown/dev/guides/markdown/italic-and-bold/en.md +++ b/markdown/dev/guides/markdown/italic-and-bold/en.md @@ -7,10 +7,11 @@ order: 30 You can make text *italic* or **bold** by wrapping it in 1 or 2 asterisk respectively. ``` + You can make text *italic* or **bold** by wrapping it in 1 or 2 asterisk respectively: ```md Alternatively, you can also use underscores to mark _italic_ or __bold__. ``` -Alternatively, you can also use underscores to mark _italic_ or __bold__. +Alternatively, you can also use underscores to mark *italic* or **bold**. diff --git a/markdown/dev/guides/markdown/line-breaks/en.md b/markdown/dev/guides/markdown/line-breaks/en.md index abdadecbe91..a40f933c2dc 100644 --- a/markdown/dev/guides/markdown/line-breaks/en.md +++ b/markdown/dev/guides/markdown/line-breaks/en.md @@ -11,6 +11,5 @@ Like this. ``` -Like +Like\ this. - diff --git a/markdown/dev/guides/markdown/links/en.md b/markdown/dev/guides/markdown/links/en.md index fdc6416fdc9..37842b23cc9 100644 --- a/markdown/dev/guides/markdown/links/en.md +++ b/markdown/dev/guides/markdown/links/en.md @@ -8,6 +8,7 @@ Links combine square brackets for the link text with round brackets for the dest ```md [Like this](https://freesewing.org) ``` + [Like this](https://freesewing.org) An alternative notation allows you to include the links as such: @@ -22,6 +23,7 @@ See [the reference documentation][1] on [freesewing.dev][2] See [the reference documentation][1] on [freesewing.dev][2] [1]: https://freesewing.dev/reference + [2]: https://freesewing.dev/reference You don't have to use numbers, but can also use named references. @@ -35,4 +37,3 @@ We moved the markdown content to [our monorepo][monorepo] We moved the markdown content to [our monorepo][monorepo] [monorepo]: https://github.com/freesewing/freesewing - diff --git a/markdown/dev/guides/markdown/lists/en.md b/markdown/dev/guides/markdown/lists/en.md index 6b5f8b26ac5..6ea2731dfb9 100644 --- a/markdown/dev/guides/markdown/lists/en.md +++ b/markdown/dev/guides/markdown/lists/en.md @@ -12,12 +12,12 @@ To make a list, just do as you would in plain text: - item ``` -- a bullet -- list - - a sublist - - item +- a bullet +- list + - a sublist + - item -If you want an numbered list, just write numbers. +If you want an numbered list, just write numbers. They don't even have to be the correct numbers: ```md @@ -27,7 +27,6 @@ They don't even have to be the correct numbers: 2. Item 3 ``` -1. Item 1 -2. Item 2 -2. Item 3 - +1. Item 1 +2. Item 2 +3. Item 3 diff --git a/markdown/dev/guides/markdown/tables/en.md b/markdown/dev/guides/markdown/tables/en.md index c2334ad3ce6..2bd2a8c51a6 100644 --- a/markdown/dev/guides/markdown/tables/en.md +++ b/markdown/dev/guides/markdown/tables/en.md @@ -5,7 +5,6 @@ order: 70 If you need them, you can create tables too, using a structure as shown below: - ```md | Name | Description | | ---- | ----------- | @@ -35,4 +34,3 @@ You can change the alignment of the columns by using a colon (`:`) on the line b | Compound | A substance composed of two or more elements. Chemically combined in definite proportions by weight | | Mixture | Two or more substances that are not chemically united, such as air | | Solution | A uniform mixture of varying proportions of a solvent and a solute | - diff --git a/markdown/dev/guides/markdown/text-and-paragraphs/en.md b/markdown/dev/guides/markdown/text-and-paragraphs/en.md index b838690d604..ffa00063d4d 100644 --- a/markdown/dev/guides/markdown/text-and-paragraphs/en.md +++ b/markdown/dev/guides/markdown/text-and-paragraphs/en.md @@ -10,7 +10,7 @@ You can just start writing. An empty line starts a new paragraph. ``` + You can just start writing. An empty line starts a new paragraph. - diff --git a/markdown/dev/guides/patterns/config/en.md b/markdown/dev/guides/patterns/config/en.md index 8472ba845a8..6d39322bb34 100644 --- a/markdown/dev/guides/patterns/config/en.md +++ b/markdown/dev/guides/patterns/config/en.md @@ -12,11 +12,11 @@ The pattern configuration holds important information about the pattern A pattern's [configuration](/reference/config/) is created by the pattern designer and details a number of important things about the pattern, like: -- The **measurements** that are required to draft the pattern -- The different **parts** in the pattern and how they depend on each other -- The different **options** that are available to tweak the pattern +- The **measurements** that are required to draft the pattern +- The different **parts** in the pattern and how they depend on each other +- The different **options** that are available to tweak the pattern -The configuration is part of the pattern's code. It is created by the designer and +The configuration is part of the pattern's code. It is created by the designer and it is the same for everybody using the pattern. In other words, you cannot change the configuration. Instead, the configuration specifies what kind of settings the pattern accepts. diff --git a/markdown/dev/guides/patterns/en.md b/markdown/dev/guides/patterns/en.md index 1a40a5dfae8..a38a4092fa6 100644 --- a/markdown/dev/guides/patterns/en.md +++ b/markdown/dev/guides/patterns/en.md @@ -3,12 +3,12 @@ title: How patterns work --- This short guide will illustrate and explain how patterns work in FreeSewing. -Not to be confused with how sewing pattern work — although there's [great books -about that](https://www.assembil.com/how-patterns-work-book/) if you're +Not to be confused with how sewing pattern work — although there's [great books +about that](https://www.assembil.com/how-patterns-work-book/) if you're interested — it's about what goes on under the hood each time a sewing pattern is generated by FreeSewing. -This illustration is a good starting point to gain a better +This illustration is a good starting point to gain a better understanding of the structure of a FreeSewing pattern: @@ -17,9 +17,9 @@ A schematic overview of FreeSewing If we look at our image, it can be divided into three areas: - - The left area with the **settings** box - - The middle area with the **Pattern** box and everything in it - - The right area with the **draft** box and the *SVG* and *React* logos +- The left area with the **settings** box +- The middle area with the **Pattern** box and everything in it +- The right area with the **draft** box and the *SVG* and *React* logos Let's take a closer look at everything that is contained within our central **Pattern** box: @@ -34,5 +34,3 @@ application. That part is outside the scope of this guide. - - diff --git a/markdown/dev/guides/patterns/parts/en.md b/markdown/dev/guides/patterns/parts/en.md index ccb8c6094f5..0de62b5c381 100644 --- a/markdown/dev/guides/patterns/parts/en.md +++ b/markdown/dev/guides/patterns/parts/en.md @@ -8,12 +8,11 @@ Parts divide your pattern into re-usable components Parts are a container for the points, paths, and snippets of (a part of) your pattern. -They are also re-usable by other patterns, which makes them a powerful tool to build +They are also re-usable by other patterns, which makes them a powerful tool to build a pattern library. If you design a T-shirt pattern with a `front`, `back`, and `sleeve`, each of those would be a part. -If you then wanted to make a long-sleeved version of your T-shirt pattern, you only need to design +If you then wanted to make a long-sleeved version of your T-shirt pattern, you only need to design a new sleeve part. You can re-use the `front` and `back` parts of your short-sleeved T-shirt pattern, as they did not change. When developing a FreeSewing pattern, you will spend most of your time designing the individual parts. - diff --git a/markdown/dev/guides/patterns/paths/en.md b/markdown/dev/guides/patterns/paths/en.md index cc3b97aae38..8c00da01c6b 100644 --- a/markdown/dev/guides/patterns/paths/en.md +++ b/markdown/dev/guides/patterns/paths/en.md @@ -12,15 +12,15 @@ Paths are the lines and curves that make up your pattern. They are made up of a set of drawing operations that together make up the path. FreeSewing supports the following types of drawing operations: - - The **move** operation moves our virtual pen but does not draw anything. - - The **line** operation draws a straight line - - The **curve** operation draws a [Bézier curve](/guides/overview/about/beziercurves/) - - The **close** operation closes the path +- The **move** operation moves our virtual pen but does not draw anything. +- The **line** operation draws a straight line +- The **curve** operation draws a [Bézier curve](/guides/overview/about/beziercurves/) +- The **close** operation closes the path To crucial thing to keep in mind is that, with the exception of the **move** operation, all drawing operations start from wherever you are currently on your virtual sheet of paper. -For example, you might expect the **line** operation to take a start- and endpoint. +For example, you might expect the **line** operation to take a start- and endpoint. But in fact, it only takes an endpoint, and will draw a straight line from where our virtual pen currently is to said endpoint. @@ -35,8 +35,7 @@ Understanding that each drawing operation builds upon the next one is an importa -Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of +Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of paths in it. Each box, the arrows, the lines in the React logo, and so on. - diff --git a/markdown/dev/guides/patterns/pattern/en.md b/markdown/dev/guides/patterns/pattern/en.md index f02b3a27bae..efcf6ffbef0 100644 --- a/markdown/dev/guides/patterns/pattern/en.md +++ b/markdown/dev/guides/patterns/pattern/en.md @@ -14,7 +14,6 @@ and the store. In reality, your pattern will be a *constructor* that takes the user's settings as input and will return a new instance of your pattern. -That pattern instance will have a `draft()` method which will do the actual work of -drafting the pattern. Once drafted, you can either call the `render()` method on +That pattern instance will have a `draft()` method which will do the actual work of +drafting the pattern. Once drafted, you can either call the `render()` method on the pattern instance, or pass it to [our React component](/packages/components) to render it in the browser. - diff --git a/markdown/dev/guides/patterns/points/en.md b/markdown/dev/guides/patterns/points/en.md index 4d056024c71..ba59e740717 100644 --- a/markdown/dev/guides/patterns/points/en.md +++ b/markdown/dev/guides/patterns/points/en.md @@ -14,25 +14,24 @@ Before we can draw any line, we need to know where it starts from, and where it That's why we have **points**. They are the most basic building block of a FreeSewing pattern, and their role is to store coordinates. -Each point must have: +Each point must have: - - A **X-coordinate** - - A **Y-coordinate** +- A **X-coordinate** +- A **Y-coordinate** Together, these coordinates determine the location of the point in the 2-dimensional plane we're drawing on. Points are unlikely to confuse you. The only gotcha is [the -coordinate system](/guides/prerequisites/coordinate-system/) which has a Y-axis that is inverted to what you +coordinate system](/guides/prerequisites/coordinate-system/) which has a Y-axis that is inverted to what you may intuitively expect. -Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of +Our example image (which, if you hadn't realized was created with FreeSewing) has a lot of points in it. The corners of the boxes, the location where the text goes, and so on. - diff --git a/markdown/dev/guides/patterns/snippets/en.md b/markdown/dev/guides/patterns/snippets/en.md index f1dea74bf36..ecceac63ef1 100644 --- a/markdown/dev/guides/patterns/snippets/en.md +++ b/markdown/dev/guides/patterns/snippets/en.md @@ -8,12 +8,12 @@ Snippets are little embelishments that go on your pattern Snippets are little embellishments you can use and re-use on your pattern. -They are typically used for things like logos or buttons. +They are typically used for things like logos or buttons. Each snippet must have: - - An anchor point that determine where the snippet will be located - - The name of the snippet to insert +- An anchor point that determine where the snippet will be located +- The name of the snippet to insert Since our example image does not have any snippets in it, here's another example of a `button`, `buttonhole`, and `logo` snippet added to a FreeSewing pattern: @@ -21,4 +21,3 @@ of a `button`, `buttonhole`, and `logo` snippet added to a FreeSewing pattern: An example of the use of snippets - diff --git a/markdown/dev/guides/patterns/store/en.md b/markdown/dev/guides/patterns/store/en.md index b7ed5732174..8291e9c352a 100644 --- a/markdown/dev/guides/patterns/store/en.md +++ b/markdown/dev/guides/patterns/store/en.md @@ -11,4 +11,3 @@ The store provides key-value storage that is shared across your pattern. If you have some information in one part that you want to make available outside that part (in another part) you can save it to the store. - diff --git a/markdown/dev/guides/plugins/conditionally-loading-build-time-plugins/en.md b/markdown/dev/guides/plugins/conditionally-loading-build-time-plugins/en.md index 4bd9ecef2e5..6b36ae558cb 100644 --- a/markdown/dev/guides/plugins/conditionally-loading-build-time-plugins/en.md +++ b/markdown/dev/guides/plugins/conditionally-loading-build-time-plugins/en.md @@ -20,6 +20,7 @@ const condition = settings => { else return false // Do not load the plugin } ``` + You pass your plugin and condition method as a third parameter to the Design constructor with the `plugin` and `condition` keys respectively. @@ -50,16 +51,15 @@ const Pattern = new freesewing.Design( Our condition method will return `true` only if the following conditions are met: - - A `settings` object is passed into the method - - `settings.options` is _truthy_ - - `settings.options.draftForHighBust` is _truthy_ - - `settings.options.measurements.highBust` is _truthy_ +- A `settings` object is passed into the method +- `settings.options` is *truthy* +- `settings.options.draftForHighBust` is *truthy* +- `settings.options.measurements.highBust` is *truthy* This is a real-world example from our Teagan pattern. A t-shirt pattern that can be -drafted to the high bust (rather than the full chest circumference) if the user +drafted to the high bust (rather than the full chest circumference) if the user choses so. But that feat is handled auto-magically by `plugin-bust` which is a build-time plugin. So whether to load this plugin or not hinges on the user settings, which is why we load this plugin conditionally. - diff --git a/markdown/dev/guides/plugins/hooks/en.md b/markdown/dev/guides/plugins/hooks/en.md index 6812c6ab9ac..6bfd015d112 100644 --- a/markdown/dev/guides/plugins/hooks/en.md +++ b/markdown/dev/guides/plugins/hooks/en.md @@ -5,17 +5,16 @@ order: 60 A **hook** is a lifecycle event. The available hooks are: - - [preRender](/reference/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern#render) - - [postRender](/reference/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern#render) - - [insertText](/reference/hooks/inserttext/): Called when inserting text - - [preDraft](/reference/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern#draft) - - [postDraft](/reference/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern#draft) - - [preSample](/reference/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern#sample) - - [postSample](/reference/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern#sample) +- [preRender](/reference/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern#render) +- [postRender](/reference/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern#render) +- [insertText](/reference/hooks/inserttext/): Called when inserting text +- [preDraft](/reference/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern#draft) +- [postDraft](/reference/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern#draft) +- [preSample](/reference/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern#sample) +- [postSample](/reference/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern#sample) You can register a method for a hook. When the hook is triggered, your method will be called. It will receive two parameters: - - An object relevant to the hook. See the [hooks API reference](/reference/hooks/) for details. - - Data passed when the hook was registered (optional) - +- An object relevant to the hook. See the [hooks API reference](/reference/hooks/) for details. +- Data passed when the hook was registered (optional) diff --git a/markdown/dev/guides/plugins/loading-build-time-plugins/en.md b/markdown/dev/guides/plugins/loading-build-time-plugins/en.md index e926872c7b7..d83f9d7a696 100644 --- a/markdown/dev/guides/plugins/loading-build-time-plugins/en.md +++ b/markdown/dev/guides/plugins/loading-build-time-plugins/en.md @@ -3,7 +3,7 @@ title: Loading build-time plugins order: 20 --- -Build-time plugins are loaded at build time, by passing them to +Build-time plugins are loaded at build time, by passing them to the [`freesewing.Design`](/reference/api/#design) constructor: ```js @@ -24,4 +24,3 @@ import config from "../config" const Pattern = new freesewing.Design(config, [plugins, gorePlugin] ) ``` - diff --git a/markdown/dev/guides/plugins/loading-run-time-plugins/en.md b/markdown/dev/guides/plugins/loading-run-time-plugins/en.md index 81ce39c34aa..866831426ee 100644 --- a/markdown/dev/guides/plugins/loading-run-time-plugins/en.md +++ b/markdown/dev/guides/plugins/loading-run-time-plugins/en.md @@ -22,5 +22,3 @@ const myAaron = new Aaron() Plugins that use only hooks are typically run-time plugins - - diff --git a/markdown/dev/guides/plugins/macros/en.md b/markdown/dev/guides/plugins/macros/en.md index 15390d13da5..becc51850e8 100644 --- a/markdown/dev/guides/plugins/macros/en.md +++ b/markdown/dev/guides/plugins/macros/en.md @@ -5,8 +5,8 @@ order: 90 Plugin structure for macros is similar, with a few changes: - - Rather than the hook name, you provide the macro name (that you choose yourself) - - The context (`this`) of a macro method is **always** a [Part](/reference/api/part) object. +- Rather than the hook name, you provide the macro name (that you choose yourself) +- The context (`this`) of a macro method is **always** a [Part](/reference/api/part) object. Apart from these, the structure is very similar: @@ -35,7 +35,7 @@ export default { } ``` -Did you figure out what this plugin does? +Did you figure out what this plugin does? It provides a `box` macro that draws a box on our pattern in a given location with a give size. We can use it like this: @@ -48,7 +48,7 @@ macro('box', { }); ``` -Obviously, you can expect to learn how to call a macro in its documentation, +Obviously, you can expect to learn how to call a macro in its documentation, rather than have to comb through its code. @@ -61,4 +61,3 @@ to a macro needs to be contained in a single argument. Typically, you use a single plain object to configure the macro. - diff --git a/markdown/dev/guides/plugins/plugin-structure/en.md b/markdown/dev/guides/plugins/plugin-structure/en.md index d23cc608b03..56d0c9e30e4 100644 --- a/markdown/dev/guides/plugins/plugin-structure/en.md +++ b/markdown/dev/guides/plugins/plugin-structure/en.md @@ -3,10 +3,10 @@ title: Plugin structure order: 50 --- -Plugins can do two things: +Plugins can do two things: - - They can use hooks - - They can provide macros +- They can use hooks +- They can provide macros Your plugin should export an object with the following structure: @@ -19,7 +19,6 @@ Your plugin should export an object with the following structure: }; ``` -The `name` and `version` attributes are self-explanatory. +The `name` and `version` attributes are self-explanatory. The [hooks](/guides/plugins/hooks/) and [macros](/guides/plugins/macros/) sections explain the `hooks` and `macros` properties. - diff --git a/markdown/dev/guides/plugins/types-of-plugins/en.md b/markdown/dev/guides/plugins/types-of-plugins/en.md index 951165fd518..ece50367835 100644 --- a/markdown/dev/guides/plugins/types-of-plugins/en.md +++ b/markdown/dev/guides/plugins/types-of-plugins/en.md @@ -5,8 +5,8 @@ order: 10 Plugins come in two flavours: - - [Build-time plugins](#build-time-plugins) - - [Run-time plugins](#run-time-plugins) +- [Build-time plugins](#build-time-plugins) +- [Run-time plugins](#run-time-plugins) When writing a plugin, ask yourself whether it's a run-time or a build-time plugin. And if the answer is both, please split them into two plugins. @@ -25,14 +25,12 @@ Our [plugin bundle](/reference/plugins/bundle/) bundles build-time plugins that Plugins that provide a macro are typically build-time plugins - ## Run-time plugins A plugin is a run-time plugin if it can be added after instantiating your pattern. Think of it as a plugin to be used in the front-end. -Run-time plugins are not a dependecy of the pattern. They just _add something_ to it. +Run-time plugins are not a dependecy of the pattern. They just *add something* to it. Our [theme plugin](/reference/plugins/theme/) is a good example of a run-time plugin. If it's missing, your pattern will still work, it just won't look pretty. - diff --git a/markdown/dev/guides/plugins/using-hooks-without-plugin/en.md b/markdown/dev/guides/plugins/using-hooks-without-plugin/en.md index 6b0495a61ee..bdd452a33a1 100644 --- a/markdown/dev/guides/plugins/using-hooks-without-plugin/en.md +++ b/markdown/dev/guides/plugins/using-hooks-without-plugin/en.md @@ -3,7 +3,7 @@ title: Using hooks without a plugin order: 85 --- -You can attach a method to a hook at run-time without the need for a plugin +You can attach a method to a hook at run-time without the need for a plugin using the [Pattern.on()](/reference/api/pattern/on) method. The method takes the hook name as its first argument, and the hook method as its second. @@ -17,4 +17,3 @@ pattern.on('preRender', function(svg) { ``` Congratulations, you've just made your pattern yellow. - diff --git a/markdown/dev/guides/plugins/using-hooks/en.md b/markdown/dev/guides/plugins/using-hooks/en.md index f0d36583bf2..56c200d565b 100644 --- a/markdown/dev/guides/plugins/using-hooks/en.md +++ b/markdown/dev/guides/plugins/using-hooks/en.md @@ -9,8 +9,8 @@ that as the second object. Remember that: - - The `insertText` hook will receive a locale and string and you should return a string. - - All other hooks receive an object. You don't need to return anything, but rather modify the object you receive. +- The `insertText` hook will receive a locale and string and you should return a string. +- All other hooks receive an object. You don't need to return anything, but rather modify the object you receive. Let's look at an example: @@ -39,8 +39,8 @@ export default { This is a complete plugin, ready to be published on NPM. It uses two hooks: - - `preRender` : We add some style and defs to our SVG - - `insertText` : We transfer all text to UPPERCASE +- `preRender` : We add some style and defs to our SVG +- `insertText` : We transfer all text to UPPERCASE @@ -52,8 +52,7 @@ the SVG tag with the name and version of our plugin. We check for this attribute when the `preRender` hook runs, thereby avoiding that our styles and defs will be added twice. -It is good practice to wrap you hook methods in a call like this, because you have +It is good practice to wrap you hook methods in a call like this, because you have no guarantee the user won't render your pattern more than once. - diff --git a/markdown/dev/guides/prerequisites/bezier-curves/en.md b/markdown/dev/guides/prerequisites/bezier-curves/en.md index d8b4e800860..1894cad3db6 100644 --- a/markdown/dev/guides/prerequisites/bezier-curves/en.md +++ b/markdown/dev/guides/prerequisites/bezier-curves/en.md @@ -3,40 +3,38 @@ title: Understanding Bézier curves order: 50 --- -While lines on computers are easy to store with a start and end point, +While lines on computers are easy to store with a start and end point, curves require more information. In FreeSewing — as in SVG and countless of other computer applications — -curves are stored as [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve), -named after French engineer [Pierre Bézier](https://en.wikipedia.org/wiki/Pierre_B%C3%A9zier) who +curves are stored as [Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve), +named after French engineer [Pierre Bézier](https://en.wikipedia.org/wiki/Pierre_B%C3%A9zier) who popularized their use back in the 1960s. In FreeSewing, we use so-called cubic Bézier curves which have: - - A start point - - A first control point that’s linked to the start point - - A second control point that’s linked to the end point - - An end point +- A start point +- A first control point that’s linked to the start point +- A second control point that’s linked to the end point +- An end point An example of a Bézier curve drawn by the Path.curve() method -Bézier curves and their *handles* or *control points* are surprisingly intuitive. +Bézier curves and their *handles* or *control points* are surprisingly intuitive. The following illustration does a great job at explaining how they are constructed: ![How Bézier curves are constructed](bezier.gif) -You don't need understand the mathematics behind Bézier Curves. +You don't need understand the mathematics behind Bézier Curves. As long as you intuitively *get* how the control points influence the curve, you're good to go. ###### More on Bézier curves -Wikipedia has a good [introduction to Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). -For a deep-dive into the subject, check out [A Primer on Bézier Curves](https://pomax.github.io/bezierinfo/) by +Wikipedia has a good [introduction to Bézier curves](https://en.wikipedia.org/wiki/B%C3%A9zier_curve).\ +For a deep-dive into the subject, check out [A Primer on Bézier Curves](https://pomax.github.io/bezierinfo/) by [Pomax](https://github.com/Pomax). - - diff --git a/markdown/dev/guides/prerequisites/coordinate-system/en.md b/markdown/dev/guides/prerequisites/coordinate-system/en.md index 211cff34b29..2b758169f19 100644 --- a/markdown/dev/guides/prerequisites/coordinate-system/en.md +++ b/markdown/dev/guides/prerequisites/coordinate-system/en.md @@ -24,4 +24,3 @@ This is a common point of confusion so keep in mind that the Y-axis may not behave as you would have intuitively expected. - diff --git a/markdown/dev/guides/prerequisites/en.md b/markdown/dev/guides/prerequisites/en.md index 8be7a2ef965..3fe5b05a737 100644 --- a/markdown/dev/guides/prerequisites/en.md +++ b/markdown/dev/guides/prerequisites/en.md @@ -16,7 +16,7 @@ goals: --- Drawing lines and curves on paper is a skill most people have been practicing since kindergarten. -In FreeSewing, we draw lines and curves with code, which is a bit more abstract +In FreeSewing, we draw lines and curves with code, which is a bit more abstract but doesn't have to be complicated once you understand a few basic building blocks. Understanding the concepts that are involved in designing sewing patterns in code will pay dividents later. @@ -30,12 +30,11 @@ That is why we recommend you familiarize yourself with the following topics: FreeSewing sits at the intersection of the world of makers and developers. If your background is in development, you will need no explaining what SVG is, but might not -know much about designing sewing patterns. +know much about designing sewing patterns. If on the other hand your background is in sewing or pattern design, you might wonder what the heck Node JS is and why you should care. -Few people straddle both worlds, so as you start using FreeSewing, chances are -you'll learn a few new things along the way. +Few people straddle both worlds, so as you start using FreeSewing, chances are +you'll learn a few new things along the way. - diff --git a/markdown/dev/guides/prerequisites/svg/en.md b/markdown/dev/guides/prerequisites/svg/en.md index 5bc9ab91bc8..7439442af48 100644 --- a/markdown/dev/guides/prerequisites/svg/en.md +++ b/markdown/dev/guides/prerequisites/svg/en.md @@ -6,10 +6,9 @@ order: 20 Patterns are rendered as **SVG** — short for [Scalable Vector Graphics](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics) — an XML-based vector image format and an open standard. -While you don’t need to be an SVG expert, a basic understanding of the format +While you don’t need to be an SVG expert, a basic understanding of the format will greatly help you to understand FreeSewing. For example, the coordinate system and the way paths are structured are all related to the SVG drawing system, which is closely related to other 2D drawing technologies such as PostScript or PDF. - diff --git a/markdown/dev/guides/prerequisites/units/en.md b/markdown/dev/guides/prerequisites/units/en.md index e45a1eda904..18ccf8c7d3b 100644 --- a/markdown/dev/guides/prerequisites/units/en.md +++ b/markdown/dev/guides/prerequisites/units/en.md @@ -3,14 +3,12 @@ title: Units in FreeSewing order: 40 --- -FreeSewing uses millimeter for all its internal units. +FreeSewing uses millimeter for all its internal units. We do support both imperial and metrics units, which are displayed as cm or inch, but under the hood everything is handled in millimeter. So as a pattern designer, you will work with mm. When you write `1`, that’s one mm. When you write `7.8`, that’s 7.8mm. -While you can use cm or inch on the FreeSewing website, that is merely a layer of +While you can use cm or inch on the FreeSewing website, that is merely a layer of abstration on top of the internal units, which are always mm. - - diff --git a/markdown/dev/guides/translation/en.md b/markdown/dev/guides/translation/en.md index a090828f407..5030e5b73e8 100644 --- a/markdown/dev/guides/translation/en.md +++ b/markdown/dev/guides/translation/en.md @@ -5,7 +5,7 @@ title: Translation guide Freesewing.org is proudly multilingual, and we currently support five languges. For this, we rely on the work of our translators who volunteer their time to translate FreeSewing into various languages from English, which -is our source language. +is our source language. This translation guide will tell you everything you need to know to join the effort as a translator for FreeSewing. @@ -14,7 +14,7 @@ know to join the effort as a translator for FreeSewing. ##### TL;DR: Becoming a FreeSewing translator -Our translation project on Crowdin is accessible +Our translation project on Crowdin is accessible via [translate.freesewing.org](https://translate.freesewing.org). To get started, you will need to be invited as a translator. No need to worry, @@ -27,16 +27,15 @@ Bonus: You'll get an `@freesewing.org` email alias - ## Languages We currently support the following five languages: - - **en** : English - - **de** : German - - **es** : Spanish - - **fr** : French - - **nl** : Dutch +- **en** : English +- **de** : German +- **es** : Spanish +- **fr** : French +- **nl** : Dutch @@ -50,8 +49,8 @@ please [come and talk to us on Discord](https://discord.freesewing.org). We use two different tools to manage our translations, depending on the context: - - Markdown content and code strings in our monorepo are translated within **Crowdin** - - Blog and showcase posts are translated within **Strapi** +- Markdown content and code strings in our monorepo are translated within **Crowdin** +- Blog and showcase posts are translated within **Strapi** @@ -59,7 +58,7 @@ We use two different tools to manage our translations, depending on the context: If you'd like to help out, please join our translation team on Crowdin. -While it can be nice to have blog and showcase posts translated, these are less important than the +While it can be nice to have blog and showcase posts translated, these are less important than the translation work in Crowdin which is about the documentation and strings that allow people to use FreeSewing.org in a different language. @@ -84,7 +83,7 @@ Strapi ([strapi.io](https://strapi.io/)) is a so-called *headless content manage Headless just means that we load the content from it via an API, rather than have it be part of our website like a classic CMS (eg. Wordpress). -In Strapi, we keep our blog posts and showcases for FreeSewing.org. +In Strapi, we keep our blog posts and showcases for FreeSewing.org. We also keep our newsletter editions there and developer blog posts for FreeSewing.dev there, but since those are not translated, we will ignore them in this guide. @@ -129,8 +128,6 @@ These will be filled in later with the correct value. For example: looks like this in Spanish - ```yaml {field} guardado ``` - diff --git a/markdown/dev/howtos/code/accessing-measurements/en.md b/markdown/dev/howtos/code/accessing-measurements/en.md index 6c1f5cbe228..dc6b0f5d2b1 100644 --- a/markdown/dev/howtos/code/accessing-measurements/en.md +++ b/markdown/dev/howtos/code/accessing-measurements/en.md @@ -6,10 +6,9 @@ about: Shows you how to access user measurements from inside your pattern Measurements are stored in `pattern.settings.measurements`. -You can pull them out of there with +You can pull them out of there with the [shorthand](/howtos/code/shorthand/) call: - ```js const { measurements, options } = part.shorthand() diff --git a/markdown/dev/howtos/code/accessing-options/en.md b/markdown/dev/howtos/code/accessing-options/en.md index 0f51762dc0d..0e2cf55070c 100644 --- a/markdown/dev/howtos/code/accessing-options/en.md +++ b/markdown/dev/howtos/code/accessing-options/en.md @@ -6,13 +6,11 @@ about: Shows you how to access user options from inside your pattern Options are stored in `pattern.settings.options`. -You can pull them out of there with +You can pull them out of there with the [shorthand](/howtos/code/shorthand/) call: - ```js const { measurements, options } = part.shorthand() let sleeveBonus = measurements.shoulderToWrist * (1 + options.sleeveLengthBonus); ``` - diff --git a/markdown/dev/howtos/code/adding-instructions/en.md b/markdown/dev/howtos/code/adding-instructions/en.md index 5b98c7ccd12..7ef4745561d 100644 --- a/markdown/dev/howtos/code/adding-instructions/en.md +++ b/markdown/dev/howtos/code/adding-instructions/en.md @@ -8,11 +8,11 @@ about: While documentation is good, sometimes you want to add some instructions ##### See this example in our source code - - [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/38d101b0415a4cbf3f9f86e006bd8cb7c43c703b/packages/jaeger/src/front.js#L411) +- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/38d101b0415a4cbf3f9f86e006bd8cb7c43c703b/packages/jaeger/src/front.js#L411) -Adding instructions to your pattern is _just_ a matter of adding text. +Adding instructions to your pattern is *just* a matter of adding text. The tricky part is to make sure your text can be translated. Below is a rather involved example from Aaron: diff --git a/markdown/dev/howtos/code/adding-parts/en.md b/markdown/dev/howtos/code/adding-parts/en.md index e4718055a72..c87aa088cfb 100644 --- a/markdown/dev/howtos/code/adding-parts/en.md +++ b/markdown/dev/howtos/code/adding-parts/en.md @@ -4,7 +4,7 @@ for: developers about: Shows you how to add new parts to your pattern --- -Since the patterns parts are listed +Since the patterns parts are listed in [the configuration file](/reference/config/), freesewing knows about all the parts that belong to your pattern. diff --git a/markdown/dev/howtos/code/adding-paths/en.md b/markdown/dev/howtos/code/adding-paths/en.md index 8c0251c73a2..8c055dc6307 100644 --- a/markdown/dev/howtos/code/adding-paths/en.md +++ b/markdown/dev/howtos/code/adding-paths/en.md @@ -5,7 +5,7 @@ icon: pattern about: Shows you how to add paths to your pattern --- -After using the [shorthand](/howtos/code/shorthand/) call, +After using the [shorthand](/howtos/code/shorthand/) call, `Path` contains the path constructor, while `paths` is a reference to `part.paths`, which is where you should store your paths. diff --git a/markdown/dev/howtos/code/adding-points/en.md b/markdown/dev/howtos/code/adding-points/en.md index bb56e4bb021..d3790844458 100644 --- a/markdown/dev/howtos/code/adding-points/en.md +++ b/markdown/dev/howtos/code/adding-points/en.md @@ -4,7 +4,7 @@ for: developers about: Shows you how to add points to your pattern --- -After using the [shorthand](/howtos/code/shorthand/) call, +After using the [shorthand](/howtos/code/shorthand/) call, `Point` contains the point constructor, while `points` is a reference to `part.points`, which is where you should store your points. diff --git a/markdown/dev/howtos/code/adding-snippets/en.md b/markdown/dev/howtos/code/adding-snippets/en.md index 6746d00162e..bbb6e2ec6e2 100644 --- a/markdown/dev/howtos/code/adding-snippets/en.md +++ b/markdown/dev/howtos/code/adding-snippets/en.md @@ -4,7 +4,7 @@ for: developers about: Shows you how to add snippets to your pattern --- -After using the [shorthand](/howtos/code/shorthand/) call, +After using the [shorthand](/howtos/code/shorthand/) call, `Snippet` contains the path constructor, while `snippets` is a reference to `part.snippets`, which is where you should store your paths. @@ -16,8 +16,8 @@ snippets.logo = new Snippet('logo', points.logoAnchor); You can scale and rotate a snippet by setting the `data-scale` and `data-rotate` attributes respectively. - - **data-scale** : Either a single scale factor, or a set of 2 scale factors for the X and Y axis respectively. See [the SVG scale transform](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#Scale) for details. - - **data-rotate**: A rotation in degrees. The center of the rotation will be the snippet's anchor point +- **data-scale** : Either a single scale factor, or a set of 2 scale factors for the X and Y axis respectively. See [the SVG scale transform](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#Scale) for details. +- **data-rotate**: A rotation in degrees. The center of the rotation will be the snippet's anchor point @@ -30,4 +30,3 @@ Below is an example of the available snippets, and the use of the `data-scale` a Overview of available snippets - diff --git a/markdown/dev/howtos/code/adding-text/en.md b/markdown/dev/howtos/code/adding-text/en.md index b21ba085f96..d5dddcba509 100644 --- a/markdown/dev/howtos/code/adding-text/en.md +++ b/markdown/dev/howtos/code/adding-text/en.md @@ -4,8 +4,8 @@ title: Adding text SVG is pretty great, but its text handling leaves much to be desired. -To abstract away the intricacies of adding text to an SVG document, -FreeSewing lets you add text to patterns by adding it to the attributes +To abstract away the intricacies of adding text to an SVG document, +FreeSewing lets you add text to patterns by adding it to the attributes of points and paths. All you have to do is set the `data-text` attribute to the text you want to add to the pattern: @@ -48,4 +48,3 @@ paths.example = new Path() Text on a path - diff --git a/markdown/dev/howtos/code/attributes/en.md b/markdown/dev/howtos/code/attributes/en.md index 2159294eecb..db218c7d9a4 100644 --- a/markdown/dev/howtos/code/attributes/en.md +++ b/markdown/dev/howtos/code/attributes/en.md @@ -14,7 +14,7 @@ paths.example.attributes.add('class', 'lining dashed'); ``` Because it's so common to set attributes, Points, Paths and Snippets all have -the `attr()` helper method. +the `attr()` helper method. Not only is less more, the method is also *chainable*, which allows you to do this: @@ -33,7 +33,7 @@ The [adding-text](/concepts/adding-text) documentation explains this in detail. -When rendering, FreeSewing will output all your attributes. This gives you the +When rendering, FreeSewing will output all your attributes. This gives you the possiblity to use any valid attribute to control the appearance. This is also why we use the *data-* prefix for those attributes that have diff --git a/markdown/dev/howtos/code/create-new-design/en.md b/markdown/dev/howtos/code/create-new-design/en.md index 6c038aafc6e..79e25926ac2 100644 --- a/markdown/dev/howtos/code/create-new-design/en.md +++ b/markdown/dev/howtos/code/create-new-design/en.md @@ -5,7 +5,7 @@ about: Shows you how to create a new design --- To create a new pattern, call `new freesewing.Design()`. -It takes your pattern configuration, +It takes your pattern configuration, and any plugins you want to load as parameters. For example, if we were creating a new pattern called `Sorcha`: @@ -19,7 +19,7 @@ import config from "../config" const Sorcha = new freesewing.Design(config, plugins) ``` -This method does not return a `Design` object. Instead it returns +This method does not return a `Design` object. Instead it returns a constructor method for your pattern. When importing your pattern, it is itself a constructor: @@ -35,7 +35,7 @@ let pattern = new Sorcha() ##### Design() is a super-constructor -Constructors are functions you can call with `new` to create an object. +Constructors are functions you can call with `new` to create an object. As `freesewing.Design()` returns a constructor, you can think of it as a super-constructor. diff --git a/markdown/dev/howtos/code/dependencies/en.md b/markdown/dev/howtos/code/dependencies/en.md index daeaea85d76..a31fe4aa858 100644 --- a/markdown/dev/howtos/code/dependencies/en.md +++ b/markdown/dev/howtos/code/dependencies/en.md @@ -18,7 +18,7 @@ dependencies: { } ``` -This could be from a T-shirt pattern where the `front` and `back` patterns are very similar, +This could be from a T-shirt pattern where the `front` and `back` patterns are very similar, so they both are inheriting a `base` part. In addition, the `sleeve` part needs to be drafted after the `front` and `back` part because in `front` and `back` we store the length of the armhole seam in the [store](/reference/api/store) and @@ -26,9 +26,9 @@ we need that info to fit the sleevecap to the armhole. Now if a user requests to draft only the `sleeve` part, FreeSewing will still draft: - - First the `base` part - - Then the `front` and `back` parts - - Finally the `sleeve` part +- First the `base` part +- Then the `front` and `back` parts +- Finally the `sleeve` part but it will only render the `sleeve` part, as that's the only thing the user requested. diff --git a/markdown/dev/howtos/code/drawing-circles/en.md b/markdown/dev/howtos/code/drawing-circles/en.md index 2648a391287..9fad26af7e2 100644 --- a/markdown/dev/howtos/code/drawing-circles/en.md +++ b/markdown/dev/howtos/code/drawing-circles/en.md @@ -4,10 +4,10 @@ for: developers about: Shows how you can add circles to your pattern --- -Real circles are rarely used in pattern design, and they are not part of the SVG path specification, +Real circles are rarely used in pattern design, and they are not part of the SVG path specification, but rather a different SVG element. -Still, if you want a circle, you can draw one by setting a Point's `data-circle` attribute +Still, if you want a circle, you can draw one by setting a Point's `data-circle` attribute to the radius of the circle you want to draw. In addition, all attributes that have a `data-circle-` prefix will apply to the circle, rather than the point. @@ -15,4 +15,3 @@ In addition, all attributes that have a `data-circle-` prefix will apply to the Circles - diff --git a/markdown/dev/howtos/code/extend-pattern/en.md b/markdown/dev/howtos/code/extend-pattern/en.md index 37324a41471..8fdeb33092a 100644 --- a/markdown/dev/howtos/code/extend-pattern/en.md +++ b/markdown/dev/howtos/code/extend-pattern/en.md @@ -8,49 +8,52 @@ about: Shows how to create a variation of a pre-existing design ##### See this example in our source code - - [packages/aaron/config/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/config/index.js#L34) - - [packages/aaron/src/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/index.js#L2) - - [packages/carlita/src/index.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlita/src/index.js#L25) +- [packages/aaron/config/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/config/index.js#L34) +- [packages/aaron/src/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/index.js#L2) +- [packages/carlita/src/index.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlita/src/index.js#L25) ## Setup To be able to extend existing patterns, you will have to access them on your local machine. There are two ways to do this: -- add needed dependencies when using `npx create-freesewing-pattern` -- create your new pattern in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing) + +- add needed dependencies when using `npx create-freesewing-pattern` +- create your new pattern in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing) ### When using `npx create-freesewing-pattern` -If you want to use existing patterns when creating your new pattern with `npx create-freesewing-pattern`, you have to install the needed dependencies. -Let's say you want to extend Brian. -In your freshly created pattern folder, you now have to run +If you want to use existing patterns when creating your new pattern with `npx create-freesewing-pattern`, you have to install the needed dependencies.\ +Let's say you want to extend Brian.\ +In your freshly created pattern folder, you now have to run ```bash npm install --save @freesewing/brian ``` -This will install Brian as a dependency, which you can then access in your pattern (see [examples](/howtos/code/extend-pattern/#examples) below on how to do that). + +This will install Brian as a dependency, which you can then access in your pattern (see [examples](/howtos/code/extend-pattern/#examples) below on how to do that).\ This has to be repeated for every new pattern you create. - - Some packages need more than one dependency. Carlton, for example, is based on Bent, which in turn is based on Brian. You will have to install all dependencies in the way shown above. If something is still missing, error messages will tell you what you still need to install. - + +Some packages need more than one dependency. Carlton, for example, is based on Bent, which in turn is based on Brian. You will have to install all dependencies in the way shown above. If something is still missing, error messages will tell you what you still need to install. + ### Using the freesewing monorepo -You can use the power of robots to install the needed dependencies if you work in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing). -- First, clone the monorepo (or your fork of it) to your local machine. -- Go to the root and run `yarn kickstart`. This will take a while, so grab a coffee and come back later. -- Once that is done, edit the file `config/descriptions.yaml` to include the name and description of your new pattern (take care to start the description with `A FreeSewing pattern`). -- Create a folder for your new pattern in `packages`. -- Run `yarn reconfigure`. This will read the changes in `config/descriptions.yaml` and create the needed files in your new folder. -- If you haven't already, now is also a good time to create a feature branch so that you don't work directly in the `develop`-branch of the git-repository: `git checkout -b mycoolnewpattern` (adjust name accordingly). -- You can now start the actual pattern design work (i.e. editing and adding `src` and `config` files for your pattern. -- For dependencies, configure them in `config/dependencies.yaml`. -- Run `yarn reconfigure` again, and the magic will make sure that your `package.json` is updated accordingly. -- You can set yourself as an author in `config/exceptions.yaml`, and - you guessed it - run `yarn reconfigure` again. +You can use the power of robots to install the needed dependencies if you work in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing). + +- First, clone the monorepo (or your fork of it) to your local machine. +- Go to the root and run `yarn kickstart`. This will take a while, so grab a coffee and come back later. +- Once that is done, edit the file `config/descriptions.yaml` to include the name and description of your new pattern (take care to start the description with `A FreeSewing pattern`). +- Create a folder for your new pattern in `packages`. +- Run `yarn reconfigure`. This will read the changes in `config/descriptions.yaml` and create the needed files in your new folder. +- If you haven't already, now is also a good time to create a feature branch so that you don't work directly in the `develop`-branch of the git-repository: `git checkout -b mycoolnewpattern` (adjust name accordingly). +- You can now start the actual pattern design work (i.e. editing and adding `src` and `config` files for your pattern. +- For dependencies, configure them in `config/dependencies.yaml`. +- Run `yarn reconfigure` again, and the magic will make sure that your `package.json` is updated accordingly. +- You can set yourself as an author in `config/exceptions.yaml`, and - you guessed it - run `yarn reconfigure` again. Now you can work on extending existing patterns into something new and exciting. And the best part about using this method is that making a pull request will be much easier once you're done developing your new pattern. diff --git a/markdown/dev/howtos/code/hide-paths/en.md b/markdown/dev/howtos/code/hide-paths/en.md index 275f2946654..40c54da9751 100644 --- a/markdown/dev/howtos/code/hide-paths/en.md +++ b/markdown/dev/howtos/code/hide-paths/en.md @@ -8,7 +8,7 @@ about: When you inherit a part, it comes with a bunch of paths. Here'show to hid ##### See this example in our source code - - [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L22) +- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L22) diff --git a/markdown/dev/howtos/code/inheritance/en.md b/markdown/dev/howtos/code/inheritance/en.md index 76c381e2537..62df1f88824 100644 --- a/markdown/dev/howtos/code/inheritance/en.md +++ b/markdown/dev/howtos/code/inheritance/en.md @@ -7,7 +7,7 @@ about: Shows how you can use one design as the basis for another If your pattern is based on, or extending, another pattern (some of) your pattern parts will need to be drafted by the parent pattern. -In such a case, rather than return our own draft method for the part, you +In such a case, rather than return our own draft method for the part, you should instantiate the parent pattern, and return its part draft method: ```js diff --git a/markdown/dev/howtos/code/inject/en.md b/markdown/dev/howtos/code/inject/en.md index 3f36815da2e..a06d0224562 100644 --- a/markdown/dev/howtos/code/inject/en.md +++ b/markdown/dev/howtos/code/inject/en.md @@ -15,16 +15,16 @@ inject: { } ``` -The `front` and `back` parts will be *injected* with the `base` part. As a result, both -the `front` and `back` parts will be instantiated with a cloned copy of all the points, paths, +The `front` and `back` parts will be *injected* with the `base` part. As a result, both +the `front` and `back` parts will be instantiated with a cloned copy of all the points, paths, and snippets of the `base` part. This is a common design pattern where one part builds on another. In our example, we can imagine a T-shirt pattern where the front and back are rather similar, apart from the neckline. -So rather than repeating ourselves, we draft a `base` part and inject that in the `front` and +So rather than repeating ourselves, we draft a `base` part and inject that in the `front` and `back` parts. -Using `inject` will cause FreeSewing to always draft the injected part prior to +Using `inject` will cause FreeSewing to always draft the injected part prior to drafting the part it gets injected to. It will, in other words, influece the draft order. diff --git a/markdown/dev/howtos/code/remove-paths/en.md b/markdown/dev/howtos/code/remove-paths/en.md index 20b7251b47b..bea55db766d 100644 --- a/markdown/dev/howtos/code/remove-paths/en.md +++ b/markdown/dev/howtos/code/remove-paths/en.md @@ -8,11 +8,10 @@ about: When you inherit a part, it comes with a bunch of paths. Here'show to rem ##### See this example in our source code - - [packages/carlton/src/back.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlton/src/back.js#L62) +- [packages/carlton/src/back.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlton/src/back.js#L62) - ```js for (let i in paths) delete paths[i] ``` diff --git a/markdown/dev/howtos/code/shared-dimensions/en.md b/markdown/dev/howtos/code/shared-dimensions/en.md index f0e96317389..59f95ef75cd 100644 --- a/markdown/dev/howtos/code/shared-dimensions/en.md +++ b/markdown/dev/howtos/code/shared-dimensions/en.md @@ -8,17 +8,16 @@ about: Shows how to share dimensions between similar pattern parts ##### See this example in our source code - - [packages/aaron/src/shared.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/shared.js) - - [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/front.js#L160) +- [packages/aaron/src/shared.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/shared.js) +- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/front.js#L160) - When you have different pattern parts that look similar -- like the front -and back of a garment -- you may find that there's a lot of dimensions +and back of a garment -- you may find that there's a lot of dimensions shared between them. -The example below is from Aaron where dimensions are shared between +The example below is from Aaron where dimensions are shared between the back and front part. Aaron has a file called `shared.js` that looks like this: @@ -49,8 +48,7 @@ import { dimensions } from './shared' -Since our shared dimension method is a so-called _named export_ we need to +Since our shared dimension method is a so-called *named export* we need to import it with the syntax you see above. - diff --git a/markdown/dev/howtos/code/shorthand/en.md b/markdown/dev/howtos/code/shorthand/en.md index 3c210e8ed68..eaa78f1cff8 100644 --- a/markdown/dev/howtos/code/shorthand/en.md +++ b/markdown/dev/howtos/code/shorthand/en.md @@ -9,7 +9,7 @@ The [Part.shorthand()](/reference/api/part/#shorthand) method will become your b By using [object destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring) you'll get access to a bunch of handy variables to make your code more concise and readable. -[Part.shorthand()](/reference/api/part/#shorthand) provides a lot of things, and you typically +[Part.shorthand()](/reference/api/part/#shorthand) provides a lot of things, and you typically don't need all of them, but here's everything it has to offer: ```js diff --git a/markdown/dev/howtos/code/store/en.md b/markdown/dev/howtos/code/store/en.md index f798916219a..7bed724f287 100644 --- a/markdown/dev/howtos/code/store/en.md +++ b/markdown/dev/howtos/code/store/en.md @@ -8,7 +8,7 @@ Sometimes, you'll want to access data from one part into another part. For example, you may store the length of the armhole in your front and back parts, and then read that value when drafting the sleeve so you can verify the sleeve fits the armhole. -For this, you should use the [Store](/reference/api/store/), which is available via +For this, you should use the [Store](/reference/api/store/), which is available via the [shorthand](/howtos/code/shorthand/) call: ```js diff --git a/markdown/dev/howtos/code/storing-path-length/en.md b/markdown/dev/howtos/code/storing-path-length/en.md index caf154b805b..5c478d9559d 100644 --- a/markdown/dev/howtos/code/storing-path-length/en.md +++ b/markdown/dev/howtos/code/storing-path-length/en.md @@ -8,11 +8,11 @@ about: Shows how to store a seam length so you can true the seam of another part ##### See this example in our source code - - [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L103) +- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L103) -Often when designing patterns, we need to _true a seam_ which means to make sure +Often when designing patterns, we need to *true a seam* which means to make sure that two parts that need to be joined together are the same distance. The example below is from Aaron and stores the length of the armhole seam: @@ -27,4 +27,3 @@ The example below is from Aaron and stores the length of the armhole seam: .length() ) ``` - diff --git a/markdown/dev/howtos/code/text-whitespace/en.md b/markdown/dev/howtos/code/text-whitespace/en.md index 18dde09550b..56515eb9a7f 100644 --- a/markdown/dev/howtos/code/text-whitespace/en.md +++ b/markdown/dev/howtos/code/text-whitespace/en.md @@ -52,5 +52,3 @@ points.example.attr( Whether you're rendering to SVG or React, by using ` ` your spaces will be properly rendered in both environments. - - diff --git a/markdown/dev/howtos/design/fit-sleeve/en.md b/markdown/dev/howtos/design/fit-sleeve/en.md index 98efad7ab10..52017a65973 100644 --- a/markdown/dev/howtos/design/fit-sleeve/en.md +++ b/markdown/dev/howtos/design/fit-sleeve/en.md @@ -8,12 +8,12 @@ about: Shows how to adapt the length of the sleevecap to fit your armhole ##### See this example in our source code - - [packages/bent/src/sleeve.js](https://github.com/freesewing/freesewing/blob/develop/packages/bent/src/sleeve.js) +- [packages/bent/src/sleeve.js](https://github.com/freesewing/freesewing/blob/develop/packages/bent/src/sleeve.js) Fitting the sleevecap to the armhole means that we need to make sure the length -of the seams match. +of the seams match.\ A similar challenge is to fit the collar to the neck opening and so on. For all of these situations where you have to create curved seams with matching @@ -25,15 +25,15 @@ This pattern is rather common, and we will unpack an example from Bent below. Before we dive in, here's a few things to keep in mind: - - In Javascript, you can create a function within your function and call it - - Bent extends Brian which sets both the `frontArmholeLength` and `backArmholeLength` values in the store with the length of those seams - - We need to match the length of the sleevecap + sleeve cap ease to the length of the front and back armhole +- In Javascript, you can create a function within your function and call it +- Bent extends Brian which sets both the `frontArmholeLength` and `backArmholeLength` values in the store with the length of those seams +- We need to match the length of the sleevecap + sleeve cap ease to the length of the front and back armhole Here's how you can handle this in code: - - We create a method that does teh actual drafting of our sleevecap - - We use a `tweak` value to influence the process, we start with a value of `1` - - We check the length after every attempt, and adjust the `tweak` value +- We create a method that does teh actual drafting of our sleevecap +- We use a `tweak` value to influence the process, we start with a value of `1` +- We check the length after every attempt, and adjust the `tweak` value ```js export default function (part) { @@ -81,7 +81,7 @@ export default function (part) { A few things that are important: - - We check to see how close we are by using `Math.abs(delta)` which gives us the absolute value of our delta - - We guard against an endless loop by keeping track of the runs and giving up after 25 - - We multiply by `0.99` and `1.02` to respectively decrease and increase our `tweak` factor. - This assymetric approach avoids that we end up ping-ponging around our target value and never land somewhere in the middle +- We check to see how close we are by using `Math.abs(delta)` which gives us the absolute value of our delta +- We guard against an endless loop by keeping track of the runs and giving up after 25 +- We multiply by `0.99` and `1.02` to respectively decrease and increase our `tweak` factor. + This assymetric approach avoids that we end up ping-ponging around our target value and never land somewhere in the middle diff --git a/markdown/dev/howtos/design/seam-allowance/en.md b/markdown/dev/howtos/design/seam-allowance/en.md index 13bb3cbab50..a5d7388569a 100644 --- a/markdown/dev/howtos/design/seam-allowance/en.md +++ b/markdown/dev/howtos/design/seam-allowance/en.md @@ -8,7 +8,7 @@ about: Adding seam allowance or hem allowance is easy to do ##### See this example in our source code - - [packages/bruce/src/inset.js](https://github.com/freesewing/freesewing/blob/develop/packages/bruce/src/inset.js#L34) +- [packages/bruce/src/inset.js](https://github.com/freesewing/freesewing/blob/develop/packages/bruce/src/inset.js#L34) @@ -20,8 +20,8 @@ seam allowance. In the example below we have two such paths: - - `paths.saBase` is the path that will require regular seam allowance - - `paths.hemBase` is the path that will require more seam allowance, or hem allowance +- `paths.saBase` is the path that will require regular seam allowance +- `paths.hemBase` is the path that will require more seam allowance, or hem allowance When creating them, we disable rendering, effectively hiding them. Then we string together our real path and our seam allowance based on them: diff --git a/markdown/dev/howtos/design/slash-spread/en.md b/markdown/dev/howtos/design/slash-spread/en.md index a0afc41d31f..dbd705ed701 100644 --- a/markdown/dev/howtos/design/slash-spread/en.md +++ b/markdown/dev/howtos/design/slash-spread/en.md @@ -8,18 +8,18 @@ about: Slash and spread is easy enough on paper, here's how to do it in code ##### See this example in our source code - - [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L64) +- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L64) -When we _slash and spread_ a pattern, we cut out a triangle, and then rotate it +When we *slash and spread* a pattern, we cut out a triangle, and then rotate it around the tip of the triangle. And that's exactly what we do in code. We just need to know: - - What point we want to rotate around - - Which points we want to rotate - - By how much we want to rotate +- What point we want to rotate around +- Which points we want to rotate +- By how much we want to rotate ```js let rotate = [ diff --git a/markdown/dev/howtos/design/sprinkle-snippets/en.md b/markdown/dev/howtos/design/sprinkle-snippets/en.md index 29c5cd6fe03..60d744247cb 100644 --- a/markdown/dev/howtos/design/sprinkle-snippets/en.md +++ b/markdown/dev/howtos/design/sprinkle-snippets/en.md @@ -8,7 +8,7 @@ about: Adding multiple snippets doesn't need to be a chore with this handy macro ##### See this example in our source code - - [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L381) +- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L381) diff --git a/markdown/dev/howtos/dev/en.md b/markdown/dev/howtos/dev/en.md index 9fd7170fccc..9f972588375 100644 --- a/markdown/dev/howtos/dev/en.md +++ b/markdown/dev/howtos/dev/en.md @@ -7,4 +7,3 @@ the hardest part. These guides will walk you through setting up your development environment on your operating system of choice. - diff --git a/markdown/dev/howtos/dev/freesewing-dev/en.md b/markdown/dev/howtos/dev/freesewing-dev/en.md index ad80489f7f6..c31900a6f35 100644 --- a/markdown/dev/howtos/dev/freesewing-dev/en.md +++ b/markdown/dev/howtos/dev/freesewing-dev/en.md @@ -4,7 +4,7 @@ for: developers about: Shows you how to setup your development environment to work on freesewing.dev, our website for developers --- -freesewing.dev is built from a package in our monorepo. You will need the following setup and installed before you begin: Node, [lerna](https://lerna.js.org/) and [yarn](https://yarnpkg.com/). +freesewing.dev is built from a package in our monorepo. You will need the following setup and installed before you begin: Node, [lerna](https://lerna.js.org/) and [yarn](https://yarnpkg.com/). To get started, checkout the repository: diff --git a/markdown/dev/howtos/dev/freesewing-org/en.md b/markdown/dev/howtos/dev/freesewing-org/en.md index fc1e9aa14ea..0fdb8d579b4 100644 --- a/markdown/dev/howtos/dev/freesewing-org/en.md +++ b/markdown/dev/howtos/dev/freesewing-org/en.md @@ -21,20 +21,20 @@ Enter the newly installed repository: cd freesewing.org ``` -Copy the `.env.example` file to `.env`. If you just want to get the site running you don't need to edit the values inside the `.env` file. But if you want to use any of the integrations (e.g. Google Authentication, Algolia search) you will need to enter your own values to this file. +Copy the `.env.example` file to `.env`. If you just want to get the site running you don't need to edit the values inside the `.env` file. But if you want to use any of the integrations (e.g. Google Authentication, Algolia search) you will need to enter your own values to this file. ```bash cp .env.example .env ``` -Because freesewing.org is in the process of moving to the monorepo, it's using shared components from the monorepo as a submodule. You will need to initialize the monorepo submodule. Do so with the following git commands: +Because freesewing.org is in the process of moving to the monorepo, it's using shared components from the monorepo as a submodule. You will need to initialize the monorepo submodule. Do so with the following git commands: ```bash git submodule init git submodule update ``` -Before running the above command the `monorepo` folder will be empty. After running the above commands you should see files in the `monorepo` folder. +Before running the above command the `monorepo` folder will be empty. After running the above commands you should see files in the `monorepo` folder. Now install the dependencies: diff --git a/markdown/dev/howtos/editors/blogpost/en.md b/markdown/dev/howtos/editors/blogpost/en.md index 5e5e9b8c79d..2ea62092fd6 100644 --- a/markdown/dev/howtos/editors/blogpost/en.md +++ b/markdown/dev/howtos/editors/blogpost/en.md @@ -8,4 +8,3 @@ Blog posts have been migrated to [Strapi](https://strapi.io/), a headless CMS sy Our strapi instance can be accessed at [posts.freesewing.org](https://posts.freesewing.org/). If you don't have a Strapi account (yet), [reach out to us on Discord](https://discord.freesewing.org). - diff --git a/markdown/dev/howtos/editors/frontmatter/lists/en.md b/markdown/dev/howtos/editors/frontmatter/lists/en.md index a5f2f1646dc..335b6bc2926 100644 --- a/markdown/dev/howtos/editors/frontmatter/lists/en.md +++ b/markdown/dev/howtos/editors/frontmatter/lists/en.md @@ -13,4 +13,3 @@ categories: - anothercat - somethingelse ``` - diff --git a/markdown/dev/howtos/editors/frontmatter/multi-line/en.md b/markdown/dev/howtos/editors/frontmatter/multi-line/en.md index c4c9926ffce..1b08a73268c 100644 --- a/markdown/dev/howtos/editors/frontmatter/multi-line/en.md +++ b/markdown/dev/howtos/editors/frontmatter/multi-line/en.md @@ -3,7 +3,7 @@ title: Mult-line text order: 40 --- -To add multi-line text in frontmatter, use a `|` character, +To add multi-line text in frontmatter, use a `|` character, and prefix the lines by spaces: ```md @@ -11,6 +11,3 @@ about: | This is a multi-line text that will be assigned to the about key ``` - - - diff --git a/markdown/dev/howtos/en.md b/markdown/dev/howtos/en.md index 876815b5dd2..6cabfd16308 100644 --- a/markdown/dev/howtos/en.md +++ b/markdown/dev/howtos/en.md @@ -3,8 +3,7 @@ title: Howtos order: zcc --- -You can find a list of all FreeSewing hotwtos below: - +You can find a list of all FreeSewing hotwtos below: @@ -20,4 +19,3 @@ guides take more time to explain in-depth what is being done and why. For more details, refer to [How we structure our documentation](/guides/docs). - diff --git a/markdown/dev/howtos/environments/browser/en.md b/markdown/dev/howtos/environments/browser/en.md index a78d19b27fe..cf728dea4cd 100644 --- a/markdown/dev/howtos/environments/browser/en.md +++ b/markdown/dev/howtos/environments/browser/en.md @@ -2,8 +2,8 @@ title: FreeSewing in the browser --- -Thanks to the advances in browser standardisation around Javascrip -ESM modules, not to mention [the new Skypack CDN](https://www.skypack.dev/), +Thanks to the advances in browser standardisation around Javascrip +ESM modules, not to mention [the new Skypack CDN](https://www.skypack.dev/), you can generate patterns in the browser with a few lines of Javascript. @@ -21,19 +21,18 @@ our website for makers. To generate a pattern, you will need to: - - Instantiate the pattern (`new ...`) - - Pass it the settings and measurements you want to use (`{ ... }`) - - Load the theme plugin (using `use()`) - - Draft the pattern (using `draft()`) - - Render it to SVG (using `render()`) +- Instantiate the pattern (`new ...`) +- Pass it the settings and measurements you want to use (`{ ... }`) +- Load the theme plugin (using `use()`) +- Draft the pattern (using `draft()`) +- Render it to SVG (using `render()`) Which can be done as a one-liner since `use()`, `draft()` and `render()` are all chainable, as shown below. ## Code example -Below is a complete example. - +Below is a complete example. ```html @@ -87,9 +86,7 @@ Below is a complete example. ## Dependencies -If you compare this example with [our NodeJS +If you compare this example with [our NodeJS example](/reference/howtos/nodejs) you'll notice that you do not need to worry about loading any dependencies. Not even `@freesewing/core` is loaded, because Skypack will pull in all dependencies for you. - - diff --git a/markdown/dev/howtos/environments/en.md b/markdown/dev/howtos/environments/en.md index 8bf00a574e5..7cc3269df09 100644 --- a/markdown/dev/howtos/environments/en.md +++ b/markdown/dev/howtos/environments/en.md @@ -3,4 +3,3 @@ title: FreeSewing in different environments --- You can use FreeSewing a different environments: - diff --git a/markdown/dev/howtos/environments/nodejs/en.md b/markdown/dev/howtos/environments/nodejs/en.md index 31be0020200..6642adcf1e8 100644 --- a/markdown/dev/howtos/environments/nodejs/en.md +++ b/markdown/dev/howtos/environments/nodejs/en.md @@ -22,11 +22,11 @@ our website for makers. To generate a pattern, you will need to: - - Instantiate the pattern (`new ...`) - - Pass it the settings and measurements you want to use (`{ ... }`) - - Load the theme plugin (using `use()`) - - Draft the pattern (using `draft()`) - - Render it to SVG (using `render()`) +- Instantiate the pattern (`new ...`) +- Pass it the settings and measurements you want to use (`{ ... }`) +- Load the theme plugin (using `use()`) +- Draft the pattern (using `draft()`) +- Render it to SVG (using `render()`) Which can be done as a one-liner since `use()`, `draft()` and `render()` are all chainable, as shown below. @@ -64,11 +64,11 @@ console.log(svg) ##### Remarks on the example code -- We are using `@freesewing/aaron` as the design, but you could use any design -- You probably want to [use your own measurements](/reference/api/settings/measurements) -or you could use `@freesewing/models` to load measurements from [our sizing grid](https://freesewing.org/sizes/) -- We are using `@freesewing/plugin-theme` to theme our SVG, but you -could [pass in your own CSS](/guides/plugins/using-hooks-without-plugin) +- We are using `@freesewing/aaron` as the design, but you could use any design +- You probably want to [use your own measurements](/reference/api/settings/measurements) + or you could use `@freesewing/models` to load measurements from [our sizing grid](https://freesewing.org/sizes/) +- We are using `@freesewing/plugin-theme` to theme our SVG, but you + could [pass in your own CSS](/guides/plugins/using-hooks-without-plugin) @@ -77,11 +77,11 @@ could [pass in your own CSS](/guides/plugins/using-hooks-without-plugin) The code above will only work if you've got the required dependencies installed on your system. Obviously you need NodeJS, but you will also need the following packages: - - `@freesewing/core`: Our core library - - `@freesewing/plugin-bundle`: Set of common plugins - - `@freesewing/aaron` or any design you want to use - - Any design on which the design you choose is built. In this case, Aaron depends on `@freesewing/brian` - - `@freesewing/utils` +- `@freesewing/core`: Our core library +- `@freesewing/plugin-bundle`: Set of common plugins +- `@freesewing/aaron` or any design you want to use +- Any design on which the design you choose is built. In this case, Aaron depends on `@freesewing/brian` +- `@freesewing/utils` For the example above, your `package.json` **dependencies** section will look like this: diff --git a/markdown/dev/howtos/git/en.md b/markdown/dev/howtos/git/en.md index bfaea1bb096..d5cd3d55c0d 100644 --- a/markdown/dev/howtos/git/en.md +++ b/markdown/dev/howtos/git/en.md @@ -2,7 +2,6 @@ title: Common git challenges --- - Git is a distributed version control system originally created by Linus Torvalds (of linux fame). Much like Linux itself, git is immensly powerful yet can be intimidating @@ -17,7 +16,7 @@ Below are some common challenges when working with FreeSewing code in git: ##### Git what now? If you've never heard of git, if you're not even sure what a version -control system is, I recommend +control system is, I recommend this [Learn Git in 15 Minutes](https://www.youtube.com/watch?v=USjZcfj8yxE&) introduction video. If you've used git before, but always felt confused about how it works, @@ -25,4 +24,3 @@ check out this [Git For Ages 4 And Up](https://youtu.be/1ffBJ4sVUb4?t=121) video A bit longer, but it well worth a watch. - diff --git a/markdown/dev/howtos/git/save-often/en.md b/markdown/dev/howtos/git/save-often/en.md index 1ccf10bac29..8113fc16652 100644 --- a/markdown/dev/howtos/git/save-often/en.md +++ b/markdown/dev/howtos/git/save-often/en.md @@ -94,11 +94,10 @@ Date: Sun Jan 16 13:48:15 2022 +0100 ``` Instead, all the previous changes are now staged, and we can do a new commit, -and rewrite our for quick-save commits into one commit that only commits the +and rewrite our for quick-save commits into one commit that only commits the end result of our repeated attempts. This approach keeps the commit history clean, not to mention that it makes you look like a total boss who gets everything right at the first attempt. - [1]: https://github.com/freesewing/freesewing/commit/5204ff5c16327962108e1629716e045275d3bf84 diff --git a/markdown/dev/howtos/help/en.md b/markdown/dev/howtos/help/en.md index 99f244af014..dca16c4df28 100644 --- a/markdown/dev/howtos/help/en.md +++ b/markdown/dev/howtos/help/en.md @@ -9,18 +9,15 @@ about: | ask questions or share your feedback --- -Our [chatrooms on Discord](https://discord.freesewing.org/) are the best place to +Our [chatrooms on Discord](https://discord.freesewing.org/) are the best place to ask questions or share your feedback. Many of the FreeSewing contributors hang out there, and since we're spread over different parts of the world, you're likely to find somebody there who can answer your question(s) at any given moment. - If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). - - diff --git a/markdown/dev/howtos/ways-to-contribute/body-ambassador/en.md b/markdown/dev/howtos/ways-to-contribute/body-ambassador/en.md index a9da887c14e..e0fd4dccd30 100644 --- a/markdown/dev/howtos/ways-to-contribute/body-ambassador/en.md +++ b/markdown/dev/howtos/ways-to-contribute/body-ambassador/en.md @@ -2,15 +2,15 @@ title: Body ambassador --- -Maybe you’re unusually short or tall. -Maybe you have a bit of a pot belly or very large breasts. -Maybe you have a disability that requires fit adjustments. +Maybe you’re unusually short or tall. +Maybe you have a bit of a pot belly or very large breasts. +Maybe you have a disability that requires fit adjustments. -Whatever it is, if you represent a minority fitting issue you could +Whatever it is, if you represent a minority fitting issue you could represent this minority to make sure their needs are heard and understood. - + Join the `#pattern-design` channel on the Discord server and help us understand how we can design patterns that fit people with your body type. diff --git a/markdown/dev/howtos/ways-to-contribute/community-building/en.md b/markdown/dev/howtos/ways-to-contribute/community-building/en.md index a77ae091306..6f00016218b 100644 --- a/markdown/dev/howtos/ways-to-contribute/community-building/en.md +++ b/markdown/dev/howtos/ways-to-contribute/community-building/en.md @@ -2,10 +2,9 @@ title: Community building --- -The FreeSewing community resides [on Discord](https://discord.freesewing.org/). +The FreeSewing community resides [on Discord](https://discord.freesewing.org/). Just being there to answer questions and chat with other people is a valuable part of community building. We also can be found [in plenty of other places](https://freesewing.org/community/where/) where we'd love to have you join us. Apart from being present in chat rooms and social media, you could also take on some responsibility on one or more platforms. - diff --git a/markdown/dev/howtos/ways-to-contribute/develop-patterns/en.md b/markdown/dev/howtos/ways-to-contribute/develop-patterns/en.md index 6251674ac09..2848fe7c16d 100644 --- a/markdown/dev/howtos/ways-to-contribute/develop-patterns/en.md +++ b/markdown/dev/howtos/ways-to-contribute/develop-patterns/en.md @@ -2,7 +2,6 @@ title: Develop sewing patterns --- -You could program new designs for FreeSewing. -If you're not afraid of Javascript and are happy to team up with a designer, +You could program new designs for FreeSewing. +If you're not afraid of Javascript and are happy to team up with a designer, you could work on a new pattern together. - diff --git a/markdown/dev/howtos/ways-to-contribute/en.md b/markdown/dev/howtos/ways-to-contribute/en.md index 6c8e182224b..572e33b0afd 100644 --- a/markdown/dev/howtos/ways-to-contribute/en.md +++ b/markdown/dev/howtos/ways-to-contribute/en.md @@ -2,7 +2,7 @@ title: Ways to contribute --- -Thank you for being part of our community, and for wanting to contribute! ❤️ +Thank you for being part of our community, and for wanting to contribute! ❤️\ FreeSewing is an open source project ran by volunteers from different corners of the world. We would love to have you on board, and this page lists everything you need to know to get started. @@ -13,8 +13,8 @@ value a safe and welcoming environment for all members of the FreeSewing communi To that extend, we impose the following requirements to ensure everyone feels safe and welcome: - - Any member of our community must respect [our community standards](https://freesewing.org/docs/various/community-standards/) - - As a contributor, you must uphold [our Code of Conduct](/guides/code-of-conduct/) +- Any member of our community must respect [our community standards](https://freesewing.org/docs/various/community-standards/) +- As a contributor, you must uphold [our Code of Conduct](/guides/code-of-conduct/) Go ahead and read those, we'll wait. @@ -22,16 +22,16 @@ Go ahead and read those, we'll wait. With that out of the way, here's a few more things that are *good to know*: - - Nobody gets paid to work on/for FreeSewing. We are a 100% volunteer organisation. - - We have patrons who support us financially, but all the money that comes in goes to charity — - See our [revenue pledge](https://freesewing.org/docs/various/pledge/) for details - - FreeSewing follows the [all-contributors](https://allcontributors.org/) specification. - Contributions of any kind are welcome. +- Nobody gets paid to work on/for FreeSewing. We are a 100% volunteer organisation. +- We have patrons who support us financially, but all the money that comes in goes to charity — + See our [revenue pledge](https://freesewing.org/docs/various/pledge/) for details +- FreeSewing follows the [all-contributors](https://allcontributors.org/) specification. + Contributions of any kind are welcome. ## Where to begin Below is a list of ideas or roles you could take up. -If you're not sure what to do, or if you have questions, [please reach out to +If you're not sure what to do, or if you have questions, [please reach out to us](https://discord.freesewing.org/). @@ -43,12 +43,9 @@ us](https://discord.freesewing.org/). For many in our community, contributring to FreeSewing marked their first steps into the world of open source software development. -I (joost) am happy to provide guidance or mentorship to anyone who +I (joost) am happy to provide guidance or mentorship to anyone who wants to learn, especially when doing so enables upwards social mobility. [Reach out](https://discord.freesewing.org/) and we let's do this. - - - diff --git a/markdown/dev/howtos/ways-to-contribute/illustrations/en.md b/markdown/dev/howtos/ways-to-contribute/illustrations/en.md index 3fddbf8a563..137b81d1853 100644 --- a/markdown/dev/howtos/ways-to-contribute/illustrations/en.md +++ b/markdown/dev/howtos/ways-to-contribute/illustrations/en.md @@ -4,4 +4,3 @@ title: Make illustrations Our documentation can always use some more/better illustrations to help people figure out how to make our patterns into garments. - diff --git a/markdown/dev/howtos/ways-to-contribute/language-ambassador/en.md b/markdown/dev/howtos/ways-to-contribute/language-ambassador/en.md index 0cd46c8c929..c86fe12b3e5 100644 --- a/markdown/dev/howtos/ways-to-contribute/language-ambassador/en.md +++ b/markdown/dev/howtos/ways-to-contribute/language-ambassador/en.md @@ -2,7 +2,6 @@ title: Language ambassador --- -You could represent FreeSewing in a non-English community. -There, you can help answer questions or triage problem reports. +You could represent FreeSewing in a non-English community. +There, you can help answer questions or triage problem reports. Or you can point out where translations are missing. - diff --git a/markdown/dev/howtos/ways-to-contribute/pattern-ambassador/en.md b/markdown/dev/howtos/ways-to-contribute/pattern-ambassador/en.md index 5a0539aab0e..ca1e7dc3a10 100644 --- a/markdown/dev/howtos/ways-to-contribute/pattern-ambassador/en.md +++ b/markdown/dev/howtos/ways-to-contribute/pattern-ambassador/en.md @@ -2,8 +2,8 @@ title: Pattern ambassador --- -You could take charge of a specific FreeSewing design/pattern. +You could take charge of a specific FreeSewing design/pattern. -You’ll be the person to ask questions about how to make that pattern. -You’ll make sure the documentation is not forgotten. +You’ll be the person to ask questions about how to make that pattern. +You’ll make sure the documentation is not forgotten. And you can help with questions or triage problem reports to developers or designers. diff --git a/markdown/dev/howtos/ways-to-contribute/pattern-testing/en.md b/markdown/dev/howtos/ways-to-contribute/pattern-testing/en.md index 08fbab584c6..fc9f6bec356 100644 --- a/markdown/dev/howtos/ways-to-contribute/pattern-testing/en.md +++ b/markdown/dev/howtos/ways-to-contribute/pattern-testing/en.md @@ -5,7 +5,7 @@ title: Pattern testing You could make (a muslin for) our patterns prior to release to make sure everything is ok. - + Join the `#pattern-design` channel on the Discord server and let us know you would like to help. Here you will find people designing new patterns and reviewing existing patterns. Feedback is very welcome! diff --git a/markdown/dev/howtos/ways-to-contribute/project-management/en.md b/markdown/dev/howtos/ways-to-contribute/project-management/en.md index d125cd76375..0a5b8f0f61e 100644 --- a/markdown/dev/howtos/ways-to-contribute/project-management/en.md +++ b/markdown/dev/howtos/ways-to-contribute/project-management/en.md @@ -9,7 +9,6 @@ organize milestones, and so on. This is helpful in more than one way: - - It reduces the cognitive load of the people implementing changes because they don't have to worry about forgetting things - - It increases transparency by making it clear what sort of things are being worked on - - It gives us that good feeling of closing the issue when the task is done - +- It reduces the cognitive load of the people implementing changes because they don't have to worry about forgetting things +- It increases transparency by making it clear what sort of things are being worked on +- It gives us that good feeling of closing the issue when the task is done diff --git a/markdown/dev/howtos/ways-to-contribute/report-bugs/en.md b/markdown/dev/howtos/ways-to-contribute/report-bugs/en.md index 8dbbcf043fe..6a080ed27d5 100644 --- a/markdown/dev/howtos/ways-to-contribute/report-bugs/en.md +++ b/markdown/dev/howtos/ways-to-contribute/report-bugs/en.md @@ -2,17 +2,16 @@ title: Report bugs --- -Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). -Create an issue [in our monorepo](https://github.com/freesewing/freesewing/issues/new?assignees=&labels=%F0%9F%90%9B+bug&template=bug-report.md&title=Bug+report) if you've found one. +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). +Create an issue [in our monorepo](https://github.com/freesewing/freesewing/issues/new?assignees=\&labels=%F0%9F%90%9B+bug\&template=bug-report.md\&title=Bug+report) if you've found one. Explain the problem and include additional details to help maintainers reproduce the problem: -* **Use a clear and descriptive title** for the issue to identify the problem. -* **Describe the exact steps which reproduce the problem** in as many details as possible. -* **Include relevant information** such as your username on the site, or the person you drafted a pattern for. +- **Use a clear and descriptive title** for the issue to identify the problem. +- **Describe the exact steps which reproduce the problem** in as many details as possible. +- **Include relevant information** such as your username on the site, or the person you drafted a pattern for. Provide more context by answering these questions: -* **Did the problem start happening recently** (e.g. it worked fine before but since the latest update it doesn't) -* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. - +- **Did the problem start happening recently** (e.g. it worked fine before but since the latest update it doesn't) +- **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens. diff --git a/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md b/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md index 85dc96a4dc3..b2242a07ba5 100644 --- a/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md +++ b/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md @@ -4,6 +4,5 @@ title: Showcase our patterns Anytime somebody has made one of our patterns, we like to showcase it on [freesewing.org](https://freesewing.org/showcase/). -Unpublished showcases are tracked as [GitHub issues](https://guides.github.com/features/issues/). -Create an issue [in our monorepo](https://github.com/freesewing/freesewing/issues/new?assignees=&labels=%F0%9F%91%8D+good+first+issue%2C+%F0%9F%93%B8+showcase%2C+%F0%9F%A4%97+community&template=showcase-template.md&title=Create+showcase+from+this+content) when you've made one of our patterns, or have come across pictures from another maker who did. - +Unpublished showcases are tracked as [GitHub issues](https://guides.github.com/features/issues/). +Create an issue [in our monorepo](https://github.com/freesewing/freesewing/issues/new?assignees=\&labels=%F0%9F%91%8D+good+first+issue%2C+%F0%9F%93%B8+showcase%2C+%F0%9F%A4%97+community\&template=showcase-template.md\&title=Create+showcase+from+this+content) when you've made one of our patterns, or have come across pictures from another maker who did. diff --git a/markdown/dev/howtos/ways-to-contribute/translation/en.md b/markdown/dev/howtos/ways-to-contribute/translation/en.md index 72c23a32476..039dafb49f6 100644 --- a/markdown/dev/howtos/ways-to-contribute/translation/en.md +++ b/markdown/dev/howtos/ways-to-contribute/translation/en.md @@ -2,6 +2,5 @@ title: Translation --- -You could translate FreeSewing into one of its additional languages -(French, German, Dutch, Spanish). Or if you’re ambitious, add a new one. - +You could translate FreeSewing into one of its additional languages +(French, German, Dutch, Spanish). Or if you’re ambitious, add a new one. diff --git a/markdown/dev/howtos/ways-to-contribute/triage-issues/en.md b/markdown/dev/howtos/ways-to-contribute/triage-issues/en.md index 1e40e424a74..5a8fabd8d38 100644 --- a/markdown/dev/howtos/ways-to-contribute/triage-issues/en.md +++ b/markdown/dev/howtos/ways-to-contribute/triage-issues/en.md @@ -4,12 +4,11 @@ title: Triage issues Triaging issues is a great way to get involved in FreeSewing. You can do tasks such as: - - Making sure issues are properly labeled - - Ensuring they have a good title that explains the issue in brief - - Assigning issues to people to make sure they are tended to - - Keeping an eye on stale issues, and either updating or closing them - - Assigning issues to milestones so we can plan our releases +- Making sure issues are properly labeled +- Ensuring they have a good title that explains the issue in brief +- Assigning issues to people to make sure they are tended to +- Keeping an eye on stale issues, and either updating or closing them +- Assigning issues to milestones so we can plan our releases All FreeSewing contributors have triage permissions that allows them to do this. If you don't have the rights, or bump into any issues, [reach out to us on Discord](https://discord.freesewing.org). - diff --git a/markdown/dev/reference/api/attributes/add/en.md b/markdown/dev/reference/api/attributes/add/en.md index 0d90138460c..a3db8fb0ad6 100644 --- a/markdown/dev/reference/api/attributes/add/en.md +++ b/markdown/dev/reference/api/attributes/add/en.md @@ -8,7 +8,7 @@ Attributes attributes.add(string key, string value) Adds `value` to the attribute identified by `key`. -Adding multiple values to the same key will result in them being joined together +Adding multiple values to the same key will result in them being joined together (with a space) when rendering. ```js @@ -28,4 +28,3 @@ paths.demo = new Path() paths.demo = new Path() .attr('class', 'classA classB'); ``` - diff --git a/markdown/dev/reference/api/attributes/clone/en.md b/markdown/dev/reference/api/attributes/clone/en.md index 4cd60530c24..e7ed1d6fe72 100644 --- a/markdown/dev/reference/api/attributes/clone/en.md +++ b/markdown/dev/reference/api/attributes/clone/en.md @@ -17,4 +17,3 @@ paths.demo = new Path() paths.clone = paths.demo.clone() ``` - diff --git a/markdown/dev/reference/api/attributes/en.md b/markdown/dev/reference/api/attributes/en.md index 9d1b12d1bc3..a541a7971e9 100644 --- a/markdown/dev/reference/api/attributes/en.md +++ b/markdown/dev/reference/api/attributes/en.md @@ -6,7 +6,7 @@ order: 40 Attributes is an object that holds attributes for a variety of other objects. Attributes are attached to [`Point`](/reference/api/point), [`Path`](/reference/api/path), and [`Snippet`](/reference/api/snippet) objects, -as well as the internal [`Svg`](/reference/api/svg) object. +as well as the internal [`Svg`](/reference/api/svg) object. All of these have an instantiated Attributes object in their `attributes` property. diff --git a/markdown/dev/reference/api/attributes/getasarray/en.md b/markdown/dev/reference/api/attributes/getasarray/en.md index 5cd98fc44c2..f006cde5797 100644 --- a/markdown/dev/reference/api/attributes/getasarray/en.md +++ b/markdown/dev/reference/api/attributes/getasarray/en.md @@ -18,4 +18,3 @@ paths.demo = new Path() let class = paths.demo.attributes.getAsArray('class'); // class now holds: ["classA", "classB"] ``` - diff --git a/markdown/dev/reference/api/config/dependencies/en.md b/markdown/dev/reference/api/config/dependencies/en.md index 53d6da6634e..aa9fdfef41c 100644 --- a/markdown/dev/reference/api/config/dependencies/en.md +++ b/markdown/dev/reference/api/config/dependencies/en.md @@ -4,18 +4,18 @@ title: dependencies The `dependencies` key in the pattern configuration file allow you to configure dependencies between different parts of your pattern. -For example, you may only be able to draft the sleeve after having drafted the +For example, you may only be able to draft the sleeve after having drafted the part that contains the armhole the sleeve should fit in. Dependencies control the order in which parts get drafted, but are also used -when users requests to [only draft some parts of a +when users requests to [only draft some parts of a pattern](/reference/api/settings/only). Behind the scenes, FreeSewing will draft all dependencies, and make sure to not render them if they were not requested. ## Structure -A plain object of `key`-`value` pairs that controls the order in which pattern +A plain object of `key`-`value` pairs that controls the order in which pattern parts will get drafted. The value can either be a string, or an array of strings. Those strings should be part names. @@ -33,12 +33,11 @@ dependencies: { In this example: -- The `front` part depends on the `back` part -- The `sleeveplacket` part depends on the `sleeve` and `cuff` parts. +- The `front` part depends on the `back` part +- The `sleeveplacket` part depends on the `sleeve` and `cuff` parts. See [Part dependencies](/advanced/dependencies) for more in-depth information on dependencies. - diff --git a/markdown/dev/reference/api/config/hide/en.md b/markdown/dev/reference/api/config/hide/en.md index db817230818..ff744987228 100644 --- a/markdown/dev/reference/api/config/hide/en.md +++ b/markdown/dev/reference/api/config/hide/en.md @@ -7,11 +7,10 @@ parts that should be hidden by default. *Hidden* means that they will be drafted, but not rendered. This is typically used for a base part on which other parts are built. -Note that hidden parts will be rendered when the user requests -to [only draft some parts of a pattern](/reference/api/settings/only) +Note that hidden parts will be rendered when the user requests +to [only draft some parts of a pattern](/reference/api/settings/only) and includes the hidden part(s). - ## Structure An array of strings that holds part names. diff --git a/markdown/dev/reference/api/config/inject/en.md b/markdown/dev/reference/api/config/inject/en.md index bc7c4536f6f..8e847c770f0 100644 --- a/markdown/dev/reference/api/config/inject/en.md +++ b/markdown/dev/reference/api/config/inject/en.md @@ -4,12 +4,12 @@ title: inject The `inject` key in the pattern configuration file allow you to configure the rules for injecting one part into another. -By *injecting* we mean that rather than starting out with a fresh part, +By *injecting* we mean that rather than starting out with a fresh part, you'll get a part that has the points, paths, and snippets of the injected part. ## Structure -A plain object of key/value pairs of parts. +A plain object of key/value pairs of parts. The `value` part will be injected in the `key` part. ## Example diff --git a/markdown/dev/reference/api/config/measurements/en.md b/markdown/dev/reference/api/config/measurements/en.md index ca6d91f3cb8..fd45063103f 100644 --- a/markdown/dev/reference/api/config/measurements/en.md +++ b/markdown/dev/reference/api/config/measurements/en.md @@ -8,7 +8,7 @@ the measurments that are required to draft the pattern. ## Structure An array of strings where the strings are the names of the measurements -required to draft this pattern. +required to draft this pattern. ## Example @@ -23,7 +23,7 @@ measurements: [ ###### Don't just make up names -See [freesewing models](https://freesewing.dev/reference/packages/models) +See [freesewing models](https://freesewing.dev/reference/packages/models) for a list of measurement names already used in freesewing patterns. It is a [best practice](/guides/best-practices/reuse-measurements/) to stick to these names. @@ -32,7 +32,7 @@ It is a [best practice](/guides/best-practices/reuse-measurements/) to stick to This configuration is for **required measurements** only. -There is a also a way to configure [optional +There is a also a way to configure [optional measurements](/reference/api/config/optionalmeasurements) diff --git a/markdown/dev/reference/api/config/name/en.md b/markdown/dev/reference/api/config/name/en.md index 15547e9970f..3937eee6283 100644 --- a/markdown/dev/reference/api/config/name/en.md +++ b/markdown/dev/reference/api/config/name/en.md @@ -6,7 +6,7 @@ The `name` key in the pattern configuration holds the name of your design. ## Structure -The value should hold a string that is also a [valid NPM package +The value should hold a string that is also a [valid NPM package name](https://github.com/npm/validate-npm-package-name). ## Example diff --git a/markdown/dev/reference/api/config/optionalmeasurements/en.md b/markdown/dev/reference/api/config/optionalmeasurements/en.md index d6c32aafe60..6d6617941e5 100644 --- a/markdown/dev/reference/api/config/optionalmeasurements/en.md +++ b/markdown/dev/reference/api/config/optionalmeasurements/en.md @@ -2,7 +2,7 @@ title: optionalMeasurements --- -The `optionalMeasurements` key in the pattern configuration file allows +The `optionalMeasurements` key in the pattern configuration file allows you to configure measurments that are optional to draft the pattern. ## Structure @@ -22,8 +22,8 @@ optionalMeasurements: [ ###### Why would you want optional measurements? -This is often used in combination with [the bust plugin](/reference/plugins/bust/) to -allow a pattern to be drafted to the `highBust` measurement rather than the +This is often used in combination with [the bust plugin](/reference/plugins/bust/) to +allow a pattern to be drafted to the `highBust` measurement rather than the `chest` measurement, thereby providing better fit for people with breasts. diff --git a/markdown/dev/reference/api/config/optiongroups/en.md b/markdown/dev/reference/api/config/optiongroups/en.md index cb8bcd5e079..243f2dc65ed 100644 --- a/markdown/dev/reference/api/config/optiongroups/en.md +++ b/markdown/dev/reference/api/config/optiongroups/en.md @@ -6,7 +6,6 @@ Option groups allow you to group options together when presenting them to the user. They also support (one) level of sub-grouping which is useful when your design has many options. - ##### This section applies to frontend integration @@ -22,14 +21,14 @@ it is not intended as a way to block access to a given option. It merely hides i ## Structure -Option groups are stored under the `optionGroups` key in the pattern +Option groups are stored under the `optionGroups` key in the pattern configuration file. They hold a plain object where each property can hold: - - An array of strings that are the names of the options to include in the group - - A plain object whose properties hold an array of strings that are the names - of the options to include in the group. (this creates a subgroup) +- An array of strings that are the names of the options to include in the group +- A plain object whose properties hold an array of strings that are the names + of the options to include in the group. (this creates a subgroup) ## Example @@ -54,12 +53,12 @@ optionGroups: { The configuration above will create the following structure: -- **fit** - - `chestEase` - - `waistEase` -- **style** - - `cuffStyle` - - `hemStyle` - - **collar** - - `collarHeight` - - `collarShape` +- **fit** + - `chestEase` + - `waistEase` +- **style** + - `cuffStyle` + - `hemStyle` + - **collar** + - `collarHeight` + - `collarShape` diff --git a/markdown/dev/reference/api/config/options/bool/en.md b/markdown/dev/reference/api/config/options/bool/en.md index 951740082e6..5b71d46f1b9 100644 --- a/markdown/dev/reference/api/config/options/bool/en.md +++ b/markdown/dev/reference/api/config/options/bool/en.md @@ -9,8 +9,8 @@ or **yes** or **no**, use a boolean option. A boolean option is a plain object with these properties: - - `bool` : Either `true` or `false` which will be the default - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `bool` : Either `true` or `false` which will be the default +- `hide` (optional) : A method to [control the optional display of the option][hide] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method @@ -23,4 +23,3 @@ options: { } } ``` - diff --git a/markdown/dev/reference/api/config/options/const/en.md b/markdown/dev/reference/api/config/options/const/en.md index db64edd6490..59b5f36725a 100644 --- a/markdown/dev/reference/api/config/options/const/en.md +++ b/markdown/dev/reference/api/config/options/const/en.md @@ -2,8 +2,8 @@ title: constant --- -If your option is a scalar value (like a string or a number), -it will be treated as a constant. Constant options are never +If your option is a scalar value (like a string or a number), +it will be treated as a constant. Constant options are never exposed in the frontend, but can still be set when using FreeSewing via the API. @@ -26,12 +26,11 @@ options: { There are typically two use-cases for constant options: -- Rather than define constants in your code, it's good practice to set -them in your configuration file. This way, people who extend your -pattern can change them if they would like to. -- A constant option can be used as a feature-flag. Enabling or disabling -parts of the code beyond the control of the end user, but accessible to -developers. +- Rather than define constants in your code, it's good practice to set + them in your configuration file. This way, people who extend your + pattern can change them if they would like to. +- A constant option can be used as a feature-flag. Enabling or disabling + parts of the code beyond the control of the end user, but accessible to + developers. - diff --git a/markdown/dev/reference/api/config/options/counter/en.md b/markdown/dev/reference/api/config/options/counter/en.md index 7dbeff9b83a..6cffa1f3baf 100644 --- a/markdown/dev/reference/api/config/options/counter/en.md +++ b/markdown/dev/reference/api/config/options/counter/en.md @@ -9,10 +9,10 @@ Counters are for integers only. Things like number of buttons and so on. Your counter option should be a plain object with these properties: - - `count` : The default integer value - - `min` : The minimal integer value that's allowed - - `max` : The maximum integer value that's allowed - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `count` : The default integer value +- `min` : The minimal integer value that's allowed +- `max` : The maximum integer value that's allowed +- `hide` (optional) : A method to [control the optional display of the option][hide] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method diff --git a/markdown/dev/reference/api/config/options/deg/en.md b/markdown/dev/reference/api/config/options/deg/en.md index aeac99f8275..ea5aa8ddd1e 100644 --- a/markdown/dev/reference/api/config/options/deg/en.md +++ b/markdown/dev/reference/api/config/options/deg/en.md @@ -8,10 +8,10 @@ For angles, use a degree option. Your degree option should be a plain object with these properties: - - `deg` : The default value in degrees - - `min` : The minimul that's allowed - - `max` : The maximum that's allowed - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `deg` : The default value in degrees +- `min` : The minimul that's allowed +- `max` : The maximum that's allowed +- `hide` (optional) : A method to [control the optional display of the option][hide] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method diff --git a/markdown/dev/reference/api/config/options/en.md b/markdown/dev/reference/api/config/options/en.md index 510c90f1b6f..51cf65a9838 100644 --- a/markdown/dev/reference/api/config/options/en.md +++ b/markdown/dev/reference/api/config/options/en.md @@ -7,18 +7,18 @@ file give designers flexility to make one pattern with different variations. ## The use case for (design) options -One of the things that sets FreeSewing apart is that sewing patterns are not -static. Each pattern is generated on the spot to accommodate the input +One of the things that sets FreeSewing apart is that sewing patterns are not +static. Each pattern is generated on the spot to accommodate the input provided by the user. Input that typically includes their measurments. -This *made-to-measure* approach is sort of *our thing* at FreeSewing, +This *made-to-measure* approach is sort of *our thing* at FreeSewing, but why stop there? -There's a lot of things that can be left up to the user and taken into +There's a lot of things that can be left up to the user and taken into consideration when drafting the pattern. Things like how many buttons to use, whether or not to include pockets, shape of the collar, and so on. The only limit really is the creativity of the designer. -The `options` section in a pattern's configuration file is what makes this +The `options` section in a pattern's configuration file is what makes this possible. ## The five option types you should know @@ -26,11 +26,11 @@ possible. There are the five option types that an aspiring pattern designer should be familiar with: -1. [**boolean** options][bool] are for yes/no choices -1. [**counter** options][count] are for integer values -1. [**degree** options][deg] are for degrees -1. [**list** options][list] are for a list of possible choices -1. [**percentage** options][pct] are for percentages +1. [**boolean** options][bool] are for yes/no choices +2. [**counter** options][count] are for integer values +3. [**degree** options][deg] are for degrees +4. [**list** options][list] are for a list of possible choices +5. [**percentage** options][pct] are for percentages @@ -43,10 +43,10 @@ They also have the most features and flexibility. For the sake of completeness, here are the two other types of options: -6. [**constant** options][const] are used as -[feature flags](https://en.wikipedia.org/wiki/Feature_toggle) -6. [**millimeter** options][const] are **deprecated** (in favor of [snapped -percentage options][snapped]) +6. [**constant** options][const] are used as + [feature flags](https://en.wikipedia.org/wiki/Feature_toggle) +7. [**millimeter** options][const] are **deprecated** (in favor of [snapped + percentage options][snapped]) @@ -66,7 +66,6 @@ How you configure the default value depends on the option type - ### Optionally hide options by configuring a `hide()` method @@ -84,9 +83,9 @@ it is not intended as a way to block access to a given option. It merely hides i By default options are shown to the user when: - - They are not a constant option - - **and** - - They are included in an optionGroup +- They are not a constant option +- **and** +- They are included in an optionGroup You can further control the optional display of options by adding a method to the `hide` key under you option, as such: @@ -111,8 +110,8 @@ So you can make a choice whether to show the option or not. If it's not obvious from the name, your `hide()` method you should: -- Return `true` or a truthy value to hide the option -- Return `false` or a falsy value to show the option +- Return `true` or a truthy value to hide the option +- Return `false` or a falsy value to show the option @@ -122,16 +121,20 @@ If you do not specify a `hide()` method, it will be populated with the default `hide()` method -- which always returns `false` thus always showing the option. In other words, the `hide()` option is always there and will always get called -to determine whether an option should be shown or not. +to determine whether an option should be shown or not. - [bool]: /reference/api/config/options/bool -[const]: /reference/api/config/options/const -[count]: /reference/api/config/options/count -[deg]: /reference/api/config/options/deg -[list]: /reference/api/config/options/list -[pct]: /reference/api/config/options/pct -[snapped]: /reference/api/config/options/pct/snap +[const]: /reference/api/config/options/const + +[count]: /reference/api/config/options/count + +[deg]: /reference/api/config/options/deg + +[list]: /reference/api/config/options/list + +[pct]: /reference/api/config/options/pct + +[snapped]: /reference/api/config/options/pct/snap diff --git a/markdown/dev/reference/api/config/options/list/en.md b/markdown/dev/reference/api/config/options/list/en.md index 9b3850abdc1..02dfdafb66a 100644 --- a/markdown/dev/reference/api/config/options/list/en.md +++ b/markdown/dev/reference/api/config/options/list/en.md @@ -8,9 +8,9 @@ Use a list option when you want to offer an array of choices. Your list option should be a plain object with these properties: - - `dflt` : The default for this option - - `list` : An array of available values options - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `dflt` : The default for this option +- `list` : An array of available values options +- `hide` (optional) : A method to [control the optional display of the option][hide] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method diff --git a/markdown/dev/reference/api/config/options/mm/en.md b/markdown/dev/reference/api/config/options/mm/en.md index 0d16c843f09..6f5c5cc2e52 100644 --- a/markdown/dev/reference/api/config/options/mm/en.md +++ b/markdown/dev/reference/api/config/options/mm/en.md @@ -2,18 +2,18 @@ title: millimeter --- -While FreeSewing supports millimeter options, we recommend -using [percentage options][1] and will not accept +While FreeSewing supports millimeter options, we recommend +using [percentage options][1] and will not accept contributions that use millimeter options. ## Structure A millimeter option should be a plain object with these properties: - - `mm` : The default value in millimeter - - `min` : The minimul that's allowed - - `max` : The maximum that's allowed - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `mm` : The default value in millimeter +- `min` : The minimul that's allowed +- `max` : The maximum that's allowed +- `hide` (optional) : A method to [control the optional display of the option][hide] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method @@ -33,18 +33,18 @@ options: { ##### What's wrong with millimeter options? -Millimeter options do not scale. -Parametric design is the _raison d'être_ of FreeSewing and that core belief -that things should seamlessly adapt goes out the window when you use a `mm` -option because now you have a value that will not change based on the +Millimeter options do not scale. +Parametric design is the *raison d'être* of FreeSewing and that core belief +that things should seamlessly adapt goes out the window when you use a `mm` +option because now you have a value that will not change based on the input measurements. -You could argue that it's fine because _you can just lower the option_ -but that breaks the principle of _sensible defaults_ (aka no surprises). -The fact that you can sidestep the bullet does not mean you're not creating +You could argue that it's fine because *you can just lower the option* +but that breaks the principle of *sensible defaults* (aka no surprises). +The fact that you can sidestep the bullet does not mean you're not creating a footgun. -When you need a millimeter option, reach for a [snapped +When you need a millimeter option, reach for a [snapped percentage option][1] instead. diff --git a/markdown/dev/reference/api/config/options/pct/en.md b/markdown/dev/reference/api/config/options/pct/en.md index 5d0f4d92aca..bc6234d989a 100644 --- a/markdown/dev/reference/api/config/options/pct/en.md +++ b/markdown/dev/reference/api/config/options/pct/en.md @@ -10,17 +10,20 @@ they ensure that your pattern will scale regardless of size. Your percentage option should be a plain object with these properties: - - `pct` : The default percentage - - `min` : The minimum percentage that's allowed - - `max` : The maximum percentage that's allowed - - `hide` (optional) : A method to [control the optional display of the option][hide] - - `fromAbs` (optional) : A method to [determine the percentage based on a value in millimeter][fromabs] - - `toAbs` (optional) : A method to [return the option value in millimeter][toabs] - - `snap` (optional) : The configuration to control [snapping of percentage options][snap] +- `pct` : The default percentage +- `min` : The minimum percentage that's allowed +- `max` : The maximum percentage that's allowed +- `hide` (optional) : A method to [control the optional display of the option][hide] +- `fromAbs` (optional) : A method to [determine the percentage based on a value in millimeter][fromabs] +- `toAbs` (optional) : A method to [return the option value in millimeter][toabs] +- `snap` (optional) : The configuration to control [snapping of percentage options][snap] [hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method + [fromabs]: /reference/api/config/options/pct/fromabs + [toabs]: /reference/api/config/options/pct/toabs + [snap]: /reference/api/config/options/pct/snap @@ -28,7 +31,7 @@ Your percentage option should be a plain object with these properties: ###### Percentage options will be divided by 100 when loaded You specify percentages in your config file. For example, `50` means 50%. -When your configuration is loaded, those percentages will be divided by 100. +When your configuration is loaded, those percentages will be divided by 100. So a percentage of `50` in your config file will be `0.5` when you read out that option in your pattern. @@ -58,4 +61,3 @@ options: { Percentage options have a few more tricks up their sleeve: - diff --git a/markdown/dev/reference/api/config/options/pct/fromabs/en.md b/markdown/dev/reference/api/config/options/pct/fromabs/en.md index 9f9c623ef35..38d614b4179 100644 --- a/markdown/dev/reference/api/config/options/pct/fromabs/en.md +++ b/markdown/dev/reference/api/config/options/pct/fromabs/en.md @@ -3,7 +3,7 @@ title: Setting a value in millimeter as a percentage option --- Percentage options are great for parametric desing, but not always -very intuitive for the user. For example: A user may desire 13 +very intuitive for the user. For example: A user may desire 13 centimeters (5 inches) of chest ease. But what percentage should they set the `chestEase` option to to accomplish this? @@ -15,7 +15,7 @@ value. Note that this method will not change the percentage of the option. -It will merely return return a percentage value. It is up to the +It will merely return return a percentage value. It is up to the frontend designer to then either set this value, or suggest it to the user. @@ -23,7 +23,7 @@ the user. ## Structure -The `fromAbs` property should hold a function with the following +The `fromAbs` property should hold a function with the following signature: ```js @@ -34,11 +34,10 @@ function toAbs(millimeter, settings) { The first parameter is the desired value in millimeter (for example `130` for `13cm`). -The second parameter is the pattern's run-time configuration +The second parameter is the pattern's run-time configuration or [settings](/reference/api/settings) which holds -- among other things -- the measurements provided by the user. - ## Example In our example above, let's say that the `chestEase` option is @@ -56,7 +55,7 @@ chestEase: { } ``` -With object destructuring and fat-arrow notation, +With object destructuring and fat-arrow notation, you can write it a bit terser like this: ```js @@ -65,10 +64,10 @@ fromAbs: (val, { measurements }) => val /measurements.chest ## Using pctBasedOn for simple measurement fractions -Many percentage options represent a simple fraction of a measurement +Many percentage options represent a simple fraction of a measurement (chest circumference in the example above). -As this scenario is so common, `@freesewing/core` exports a `pctBasedOn` method +As this scenario is so common, `@freesewing/core` exports a `pctBasedOn` method that will do the work for you: ```js @@ -90,10 +89,9 @@ const config = { } ``` -This will not only add an `fromAbs()` method to your option -- +This will not only add an `fromAbs()` method to your option -- one that will return the percentage of any millimeter value passed into it -- -it will also add a `toAbs()` method that does the inverse: return the +it will also add a `toAbs()` method that does the inverse: return the value in millimeter of whatever percentage the option is set to. -See [Reporting a percentage option value in +See [Reporting a percentage option value in millimeter](/reference/api/config/options/pct/toabs) for details. - diff --git a/markdown/dev/reference/api/config/options/pct/snap/en.md b/markdown/dev/reference/api/config/options/pct/snap/en.md index 6e829f1b475..851ab8342da 100644 --- a/markdown/dev/reference/api/config/options/pct/snap/en.md +++ b/markdown/dev/reference/api/config/options/pct/snap/en.md @@ -3,21 +3,21 @@ title: Snapped percentage options --- Snapped percentage options are a hybrid between [list options][list] and -[percentage options][pct]. By combining traits of both, they create a +[percentage options][pct]. By combining traits of both, they create a sort of *smart list option* that will select the most appropriate value -from the list, and also allow a pure parametric value if no close match +from the list, and also allow a pure parametric value if no close match is found. ## Structure Your snapped percentage option should be a plain object with these properties: - - `pct` : The default percentage - - `min` : The minimum percentage that's allowed - - `max` : The maximum percentage that's allowed - - `snap`: Holds the snap configuration (see [Snap configuration](#)) - - `toAbs`: a method returning the **millimeter value** of the option ([see `toAbs()`](toabs)) - - `hide` (optional) : A method to [control the optional display of the option][hide] +- `pct` : The default percentage +- `min` : The minimum percentage that's allowed +- `max` : The maximum percentage that's allowed +- `snap`: Holds the snap configuration (see [Snap configuration](#)) +- `toAbs`: a method returning the **millimeter value** of the option ([see `toAbs()`](toabs)) +- `hide` (optional) : A method to [control the optional display of the option][hide] ## Snap configuration @@ -28,10 +28,10 @@ There are three different scenarios: ### snap holds a number -When `snap` holds a number, the option will be *snapped* to a -multiple of this value. +When `snap` holds a number, the option will be *snapped* to a +multiple of this value. -In the example below, the absolute value of this option will be set to a multiple of `7` +In the example below, the absolute value of this option will be set to a multiple of `7` (so one of `7`, `14`, `21`, `28`, `35`, ...). ```js @@ -46,19 +46,19 @@ myOption: { -In a case like this, the value will **always** be snapped, -because the snap points will be distributed equally across the entire range +In a case like this, the value will **always** be snapped, +because the snap points will be distributed equally across the entire range of all possible inputs. ### snap holds an array of numbers -When snap holds an array of numbers, the option will be *snapped* to one of +When snap holds an array of numbers, the option will be *snapped* to one of the numbers unless it's further away than half the distance to its closest neighbor. -In the example below, if the absolute value returned by `toAbs()` is in the -region of influence -- in this example between 4.5 and 69.5 -- the nearest snap value +In the example below, if the absolute value returned by `toAbs()` is in the +region of influence -- in this example between 4.5 and 69.5 -- the nearest snap value will be used. If instead it is outside the region of influence, the result of `toAbs()` will be uses as-is. @@ -74,17 +74,17 @@ myOption: { ### snap is a plain object with `metric` and `imperial` properties that each hold an array of numbers -In this case, the behavior is exaxtle the same as when `snap` holds an array +In this case, the behavior is exaxtle the same as when `snap` holds an array of numbers. The differnce is that this allows you to supply a different list of snap values -for users using metric or imperial units. +for users using metric or imperial units. -In the example below, the value of [settings.units](/api/settings/units) will -determine which list of snap values gets used. +In the example below, the value of [settings.units](/api/settings/units) will +determine which list of snap values gets used. -Then, if the absolute value returned by `toAbs()` is in the -region of influence -- in this example between 4.5 and 69.5 -- the nearest snap value +Then, if the absolute value returned by `toAbs()` is in the +region of influence -- in this example between 4.5 and 69.5 -- the nearest snap value will be used. If instead it is outside the region of influence, the result of `toAbs()` will be uses as-is. @@ -124,7 +124,7 @@ We have a few different ways we can approach this: ### Approach A: We use a percentage option -We use a percentage option based on a vertical measurement, like +We use a percentage option based on a vertical measurement, like `waistToFloor`. The elastic width people end up with is something like 34.12mm for @@ -150,8 +150,8 @@ our solution does not scale. We combine approaches A and B and configure a snapped percentage option with: - - A percentage based on `waistToFloor` - - Our list of standard elastic widths as *snaps* +- A percentage based on `waistToFloor` +- Our list of standard elastic widths as *snaps* For typical humans, our options will *snap* to the closest match in our list and behave just like Approach A (with a list option). @@ -165,54 +165,54 @@ Sweet! Before we wade into the details, let's first agree on terminology: -- The **percentage value** is the page passed by the user for the option. -Its value always represents a percentage. -- The **millimeter value** is the result of feeding the **percentage value** to -the `toAbs()` method. Its value always represents millimeters. -- The **snap values** are the values provided by the snap confguration. -Each of the values always represents millimeters. +- The **percentage value** is the page passed by the user for the option. + Its value always represents a percentage. +- The **millimeter value** is the result of feeding the **percentage value** to + the `toAbs()` method. Its value always represents millimeters. +- The **snap values** are the values provided by the snap confguration. + Each of the values always represents millimeters. Under the hood, and snapped percentage option will: -- Use `toAbs()` to calculate the **millimeter value** from the **percentage value** -- See whether the **millimeter value** approaches one of the **snap values** -- If so, use the snap value (in millimeter) as provided by one of the **snap values** -- If not, use the **millimeter value** as-is +- Use `toAbs()` to calculate the **millimeter value** from the **percentage value** +- See whether the **millimeter value** approaches one of the **snap values** +- If so, use the snap value (in millimeter) as provided by one of the **snap values** +- If not, use the **millimeter value** as-is If you're head's spinning, here's an image that will hopefully clarify things a bit: ![A visual guide to how snapped percentage options work](snap.png) -The gradient box represents the range of any given measurement, +The gradient box represents the range of any given measurement, from dolls all the way on the left, to giants all the way on the right. -The sort of middle green-colored region is what the designer had in mind +The sort of middle green-colored region is what the designer had in mind when designing the pattern, and they have set up snap values -- marked by a red dot -- for values that they feel make sense. -The region of influence of any given snap point will extend 50% towards its -neighbor on both sides (indicated by the dashed lines).This means that the -region of snap points is continuous, once you're in, you're going to be +The region of influence of any given snap point will extend 50% towards its +neighbor on both sides (indicated by the dashed lines).This means that the +region of snap points is continuous, once you're in, you're going to be snapped to one of the snap points. -However, when you venture out into the area where the designer did not +However, when you venture out into the area where the designer did not configure any snap points, the absolute value will be used as-is, without snapping, just as it would in a normal percentage option. This system results in the best of both worlds: -- Things like elastic widths and so on can be configured to be fixed values, - of common elastic widths for example -- The absolute value will still scale up and down, but will snap to the closest - fixed value when appropriate. -- When the input measurements go somewhere the designer did not anticipate, - the option will just behave as a regular percentage option +- Things like elastic widths and so on can be configured to be fixed values, + of common elastic widths for example +- The absolute value will still scale up and down, but will snap to the closest + fixed value when appropriate. +- When the input measurements go somewhere the designer did not anticipate, + the option will just behave as a regular percentage option ## Using snapped percentage options in your pattern code This is all well and good, but how do you use this? -Well, just like you can get the `options` object from our shorthand call, -you can now get the `absoluteOptions` object that holds absolute values +Well, just like you can get the `options` object from our shorthand call, +you can now get the `absoluteOptions` object that holds absolute values for those options with snaps configured. In our paco example, what used to be: @@ -229,15 +229,18 @@ store.set('ankleElastic', absoluteOptions.ankleElastic) -There's really no added value in setting this in the store as `absoluteOptions` +There's really no added value in setting this in the store as `absoluteOptions` is available everywhere, but we've changed as little as possible in the example to clarify the difference. [fromabs]: /reference/api/config/options/pct/fromabs -[toabs]: /reference/api/config/options/pct/toabs -[pct]: /reference/api/config/options/pct -[list]: /reference/api/config/options/list -[hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method +[toabs]: /reference/api/config/options/pct/toabs + +[pct]: /reference/api/config/options/pct + +[list]: /reference/api/config/options/list + +[hide]: /reference/api/config/options#optionally-hide-options-by-configuring-a-hide-method diff --git a/markdown/dev/reference/api/config/options/pct/toabs/en.md b/markdown/dev/reference/api/config/options/pct/toabs/en.md index d3ecb905d5a..dd1e31d1c21 100644 --- a/markdown/dev/reference/api/config/options/pct/toabs/en.md +++ b/markdown/dev/reference/api/config/options/pct/toabs/en.md @@ -3,7 +3,7 @@ title: Reporting a percentage option value in millimeter --- Percentage options are great for parametric desing, but not always -very intuitive for the user. For example: Setting the `chestEase` +very intuitive for the user. For example: Setting the `chestEase` option to `9%` is not very meaningful unless you happen to know what that percentage is based on. @@ -13,7 +13,7 @@ millimeter. ## Structure -The `toAbs` property should hold a function with the following +The `toAbs` property should hold a function with the following signature: ```js @@ -24,11 +24,10 @@ function toAbs(percentage, settings) { The first parameter is the percentage value provided by the user (for example `0.5` for `50%`). -The second parameter is the pattern's run-time configuration +The second parameter is the pattern's run-time configuration or [settings](/reference/api/settings) which holds -- among other things -- the measurements provided by the user. - ## Example In our example above, let's say that the `chestEase` option is @@ -46,7 +45,7 @@ chestEase: { } ``` -With object destructuring and fat-arrow notation, +With object destructuring and fat-arrow notation, you can write it a bit terser like this: ```js @@ -55,10 +54,10 @@ toAbs: (val, { measurements }) => measurements.chest * val ## Using pctBasedOn for simple measurement fractions -Many percentage options represent a simple fraction of a measurement +Many percentage options represent a simple fraction of a measurement (chest circumference in the example above). -As this scenario is so common, `@freesewing/core` exports a `pctBasedOn` method +As this scenario is so common, `@freesewing/core` exports a `pctBasedOn` method that will do the work for you: ```js @@ -81,8 +80,7 @@ const config = { ``` This will not only add an `toAbs()` method to your option -- one that will return -the value in millimeter of whatever percentage the option is set to -- it will +the value in millimeter of whatever percentage the option is set to -- it will also add a `fromAbs()` method that does the inverse: return the percentage of -any millimeter value passed into it. See [Setting a value in millimeter as a +any millimeter value passed into it. See [Setting a value in millimeter as a percentage option](/api/config/options/pct/fromabs) for details. - diff --git a/markdown/dev/reference/api/config/parts/en.md b/markdown/dev/reference/api/config/parts/en.md index c9397fb478f..6ca6b013c6f 100644 --- a/markdown/dev/reference/api/config/parts/en.md +++ b/markdown/dev/reference/api/config/parts/en.md @@ -11,7 +11,7 @@ names of pattern parts. This list of parts is needed for the `draft()` method to figure out what parts need to be drafted. -So if parts are included in the `dependencies`, `inject`, or `hide` configuration, +So if parts are included in the `dependencies`, `inject`, or `hide` configuration, there's no need to include them here, as we already know of their existence. @@ -28,4 +28,3 @@ parts: [ "back" ] ``` - diff --git a/markdown/dev/reference/api/config/ui/code/en.md b/markdown/dev/reference/api/config/ui/code/en.md index bd02b90e7ff..6c7ab7da7a4 100644 --- a/markdown/dev/reference/api/config/ui/code/en.md +++ b/markdown/dev/reference/api/config/ui/code/en.md @@ -7,4 +7,3 @@ code: "Joost De Cock", ``` The name of the developer. - diff --git a/markdown/dev/reference/api/config/ui/department/en.md b/markdown/dev/reference/api/config/ui/department/en.md index aa5ee29e4db..e2a8b2fc68a 100644 --- a/markdown/dev/reference/api/config/ui/department/en.md +++ b/markdown/dev/reference/api/config/ui/department/en.md @@ -8,7 +8,7 @@ department: "menswear", One of the following: - - menswear - - womenswear - - unisex - - accessories +- menswear +- womenswear +- unisex +- accessories diff --git a/markdown/dev/reference/api/config/ui/optiongroups/en.md b/markdown/dev/reference/api/config/ui/optiongroups/en.md index 6be756aac84..6b2cb42688f 100644 --- a/markdown/dev/reference/api/config/ui/optiongroups/en.md +++ b/markdown/dev/reference/api/config/ui/optiongroups/en.md @@ -2,7 +2,7 @@ title: optionGroups --- -Organises your pattern options in groups. +Organises your pattern options in groups. It expects an object where the key is the group title, and the value an array of options: ```js @@ -26,4 +26,3 @@ Options that are not included in the `optionGroup` configuration won't be exposed in the frontend and thus will be unavailable to the user. - diff --git a/markdown/dev/reference/api/config/ui/optiongroups/nested-optiongroups/en.md b/markdown/dev/reference/api/config/ui/optiongroups/nested-optiongroups/en.md index 87c129cca03..cf6f5731045 100644 --- a/markdown/dev/reference/api/config/ui/optiongroups/nested-optiongroups/en.md +++ b/markdown/dev/reference/api/config/ui/optiongroups/nested-optiongroups/en.md @@ -24,4 +24,3 @@ optionGroups: { Only create subgroups one level deep. We do not support groups in groups in groups. - diff --git a/markdown/dev/reference/api/config/ui/type/en.md b/markdown/dev/reference/api/config/ui/type/en.md index 201c85bc03c..46d2521c8b5 100644 --- a/markdown/dev/reference/api/config/ui/type/en.md +++ b/markdown/dev/reference/api/config/ui/type/en.md @@ -8,5 +8,5 @@ type: "pattern", One of the following: - - pattern - - block +- pattern +- block diff --git a/markdown/dev/reference/api/config/version/en.md b/markdown/dev/reference/api/config/version/en.md index 519d5d91dd9..f6ff071d5a8 100644 --- a/markdown/dev/reference/api/config/version/en.md +++ b/markdown/dev/reference/api/config/version/en.md @@ -12,7 +12,4 @@ A string that holds a valid semantic version number. ## Example -``` -version: "0.3.1" -``` - + version: "0.3.1" diff --git a/markdown/dev/reference/api/design/en.md b/markdown/dev/reference/api/design/en.md index 6c1e6c99c4e..d7c8921f10e 100644 --- a/markdown/dev/reference/api/design/en.md +++ b/markdown/dev/reference/api/design/en.md @@ -16,13 +16,13 @@ function freesewing.Design( ) ``` -This constructor creates a new pattern design. +This constructor creates a new pattern design. It takes the following arguments: - - `config` : The pattern configuration - - `plugins` : Either a [plugin object](/guides/plugins/), or an array of plugin objects - - `conditionalPlugins` : Either a [conditional plugin object](/guides/plugins/conditionally-loading-build-time-plugins/), or an array - of conditional plugin objects to (conditionally) load in your pattern +- `config` : The pattern configuration +- `plugins` : Either a [plugin object](/guides/plugins/), or an array of plugin objects +- `conditionalPlugins` : Either a [conditional plugin object](/guides/plugins/conditionally-loading-build-time-plugins/), or an array + of conditional plugin objects to (conditionally) load in your pattern ```js import freesewing from "@freesewing/core" @@ -35,9 +35,9 @@ const Sorcha = new freesewing.Design(config, plugins) -This method is a *super-constructor*. It will return a constructor +This method is a *super-constructor*. It will return a constructor method that will become the default export of your design and -should be called to instantiate your pattern. +should be called to instantiate your pattern. See [creating a new pattern design](/howtos/code/create-new-design) for a complete example. diff --git a/markdown/dev/reference/api/en.md b/markdown/dev/reference/api/en.md index 49190c5d676..9b519c93c6a 100644 --- a/markdown/dev/reference/api/en.md +++ b/markdown/dev/reference/api/en.md @@ -3,7 +3,7 @@ title: "@freesewing/core API" --- This is the documentation for FreeSewing's core library, published as `@freesewing/core` on NPM. -It's a complete toolbox for parametric design with a primary focus on +It's a complete toolbox for parametric design with a primary focus on sewing patterns, but can be utilized for a variety of similar 2D design tasks. ## Getting started @@ -16,7 +16,7 @@ import freesewing from '@freesewing/core' -This is the reference documentation. For a more hands-on walkthrough, +This is the reference documentation. For a more hands-on walkthrough, please refer to our [pattern design tutorial](/tutorials/pattern-design/) @@ -25,19 +25,18 @@ please refer to our [pattern design tutorial](/tutorials/pattern-design/) The `@freesewing/core` default export is a single object with the following properties: - - `Design`: The [Design constructor](/reference/api/design/) to create a new design +- `Design`: The [Design constructor](/reference/api/design/) to create a new design -You will typically use the `Design()` constructor. -The other constructors and utilities below are exported to facilitate unit testing. +You will typically use the `Design()` constructor.\ +The other constructors and utilities below are exported to facilitate unit testing. - - `Path`: The [Path constructor](/reference/api/path) to create a new path - - `Pattern`: The [Pattern constructor](/reference/api/pattern) to create a new pattern - - `Point`: The [Point constructor](/reference/api/point) to create a new point - - `Snippet`: The [Snippet constructor](/reference/api/snippet) to create a new snippet - - `utils`: A collection of [utilities](/reference/api/utils) - - `version`: A string containing the `@freesewing/core` version number - +- `Path`: The [Path constructor](/reference/api/path) to create a new path +- `Pattern`: The [Pattern constructor](/reference/api/pattern) to create a new pattern +- `Point`: The [Point constructor](/reference/api/point) to create a new point +- `Snippet`: The [Snippet constructor](/reference/api/snippet) to create a new snippet +- `utils`: A collection of [utilities](/reference/api/utils) +- `version`: A string containing the `@freesewing/core` version number diff --git a/markdown/dev/reference/api/hooks/en.md b/markdown/dev/reference/api/hooks/en.md index 384a5ce60fa..db803e1e449 100644 --- a/markdown/dev/reference/api/hooks/en.md +++ b/markdown/dev/reference/api/hooks/en.md @@ -9,8 +9,8 @@ A **hook** is a lifecycle event. You can register a method for a hook. When the hook is triggered, your method will be called. It will receive two parameters: - - An object relevant to the hook (see the specific hook for details) - - Data passed when the hook was registered (optional) +- An object relevant to the hook (see the specific hook for details) +- Data passed when the hook was registered (optional) Below is a list of all available hooks: diff --git a/markdown/dev/reference/api/hooks/inserttext/en.md b/markdown/dev/reference/api/hooks/inserttext/en.md index 855a3b1b945..af9aadce745 100644 --- a/markdown/dev/reference/api/hooks/inserttext/en.md +++ b/markdown/dev/reference/api/hooks/inserttext/en.md @@ -6,11 +6,11 @@ The `insertText` hook is called when text is about to be inserted during renderi Methods attached to the `insertText` hook will receive 2 parameters: - - `locale` : The language code of the language requested by the user (defaults to `en`) - - `text`: The text to be inserted +- `locale` : The language code of the language requested by the user (defaults to `en`) +- `text`: The text to be inserted -Unlike most hooks that receive an object that you can make changes to, -for this hook you need to return a string. +Unlike most hooks that receive an object that you can make changes to, +for this hook you need to return a string. This hook is typically used for translation, as is the case in [our i18n plugin](/reference/plugins/i18n/). @@ -20,8 +20,8 @@ in [our i18n plugin](/reference/plugins/i18n/). When we say that *this hook is called when text is about to be inserted*, that is a simplified view. In reality, this hook is called: - - For every value set on data-text - - For the combined result of these values, joined together with spaces +- For every value set on data-text +- For the combined result of these values, joined together with spaces Let's use an example to clarify things: @@ -33,15 +33,14 @@ points.example For the example point above, the `insertText` hook will end up being called 3 times: - - First it will pass `seamAllowance` to the plugin - - Then it will pass `: 1cm` to the plugin - - Finally it will pass `seamAllowance : 1cm` to the plugin +- First it will pass `seamAllowance` to the plugin +- Then it will pass `: 1cm` to the plugin +- Finally it will pass `seamAllowance : 1cm` to the plugin Having the `insertText` hook only run once with `Seam allowance: 1cm` would be problematic because the seam allowance may differ, or perhaps we're using imperial units, and so on. Instead, you can (and should) divide your text into chunks that need translating, and chunks that do not. -This is also why we're not inserting **Seam allowance** but rather **seamAllowance**; +This is also why we're not inserting **Seam allowance** but rather **seamAllowance**; It is merely a key to indicate what translation we want to replace this text with. - diff --git a/markdown/dev/reference/api/hooks/postdraft/en.md b/markdown/dev/reference/api/hooks/postdraft/en.md index 180a6dd7929..0291e148180 100644 --- a/markdown/dev/reference/api/hooks/postdraft/en.md +++ b/markdown/dev/reference/api/hooks/postdraft/en.md @@ -4,7 +4,7 @@ title: postDraft The `postDraft` hook runs just after your pattern is drafted. -Your plugin will receive the Pattern object. +Your plugin will receive the Pattern object. diff --git a/markdown/dev/reference/api/hooks/postrender/en.md b/markdown/dev/reference/api/hooks/postrender/en.md index 7ef73906741..9f82c7f6103 100644 --- a/markdown/dev/reference/api/hooks/postrender/en.md +++ b/markdown/dev/reference/api/hooks/postrender/en.md @@ -11,4 +11,3 @@ Like the `preRender` hook, it receives [the SVG object](/api/svg) as its first p The `postRender` hooks is rarely used. - diff --git a/markdown/dev/reference/api/hooks/postsample/en.md b/markdown/dev/reference/api/hooks/postsample/en.md index 6a5b972e9da..2280e21e9ca 100644 --- a/markdown/dev/reference/api/hooks/postsample/en.md +++ b/markdown/dev/reference/api/hooks/postsample/en.md @@ -3,17 +3,16 @@ title: postSample --- The `postSample` hook runs just after your pattern is sampled. -Your plugin will receive the Pattern object. +Your plugin will receive the Pattern object. It is triggered just before the end of either: - - the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method - - the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method - - the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method +- the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method +- the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method +- the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method The `postSample` hook is rarely used. - diff --git a/markdown/dev/reference/api/hooks/predraft/en.md b/markdown/dev/reference/api/hooks/predraft/en.md index ec981e917ab..25d38faa2c6 100644 --- a/markdown/dev/reference/api/hooks/predraft/en.md +++ b/markdown/dev/reference/api/hooks/predraft/en.md @@ -4,7 +4,7 @@ title: preDraft The `preDraft` hook runs just before your pattern is drafted. -Your plugin will receive the Pattern object. +Your plugin will receive the Pattern object. diff --git a/markdown/dev/reference/api/hooks/presample/en.md b/markdown/dev/reference/api/hooks/presample/en.md index 3bab2ab937d..f4dc7f5f3cf 100644 --- a/markdown/dev/reference/api/hooks/presample/en.md +++ b/markdown/dev/reference/api/hooks/presample/en.md @@ -6,11 +6,11 @@ The `preSample` hook runs just before your pattern is sampled. It is triggered at the very start of either: - - the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method - - the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method - - the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method +- the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method +- the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method +- the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method -Your plugin will receive the Pattern object. +Your plugin will receive the Pattern object. diff --git a/markdown/dev/reference/api/macros/banner/en.md b/markdown/dev/reference/api/macros/banner/en.md index da35e12af7d..66daf6221fd 100644 --- a/markdown/dev/reference/api/macros/banner/en.md +++ b/markdown/dev/reference/api/macros/banner/en.md @@ -21,7 +21,7 @@ macro('banner', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------:|------------|------------|-------------| | `text` | | `text` | The text to place repeat along the path | | `dy` | `1` | `number` | Controls how far the text will be located above the path | diff --git a/markdown/dev/reference/api/macros/bartack/en.md b/markdown/dev/reference/api/macros/bartack/en.md index 18ca2191ee2..295f17f654f 100644 --- a/markdown/dev/reference/api/macros/bartack/en.md +++ b/markdown/dev/reference/api/macros/bartack/en.md @@ -19,7 +19,7 @@ macro('bartack', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------:|------------|------------|-------------| | `anchor` | | `Point` | The point to start the bartack from | | `angle` | `0` | `number` | The angle under which to draw the bartack | diff --git a/markdown/dev/reference/api/macros/bartackalong/en.md b/markdown/dev/reference/api/macros/bartackalong/en.md index 0c900b71527..740733e3a2e 100644 --- a/markdown/dev/reference/api/macros/bartackalong/en.md +++ b/markdown/dev/reference/api/macros/bartackalong/en.md @@ -33,7 +33,7 @@ macro('sprinkle', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------:|------------|------------|-------------| | `angle` | `0` | `number` | The angle under which to draw the bartack | | `density` | `3` | `number` | Controls how close the stitches are togeter | @@ -43,4 +43,3 @@ macro('sprinkle', { | `prefix` | | `string` | A prefix to apply to the names of the generated path and points | | `suffix` | | `string` | A suffix to apply to the names of the generated path and points | | `width` | `3` | `number` | Width of the bartack | - diff --git a/markdown/dev/reference/api/macros/bartackfractionalong/en.md b/markdown/dev/reference/api/macros/bartackfractionalong/en.md index c26e17380b9..7780eda9356 100644 --- a/markdown/dev/reference/api/macros/bartackfractionalong/en.md +++ b/markdown/dev/reference/api/macros/bartackfractionalong/en.md @@ -35,7 +35,7 @@ macro('sprinkle', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------:|------------|------------|-------------| | `angle` | `0` | `number` | The angle under which to draw the bartack | | `density` | `3` | `number` | Controls how close the stitches are togeter | @@ -47,4 +47,3 @@ macro('sprinkle', { | `start` | `0` | `number` | At which fraction of the path length (from `0` to `1`) should the bartack start | | `suffix` | | `string` | A suffix to apply to the names of the generated path and points | | `width` | `3` | `number` | Width of the bartack | - diff --git a/markdown/dev/reference/api/macros/cutonfold/en.md b/markdown/dev/reference/api/macros/cutonfold/en.md index 2876b988e39..39ea5340cf7 100644 --- a/markdown/dev/reference/api/macros/cutonfold/en.md +++ b/markdown/dev/reference/api/macros/cutonfold/en.md @@ -2,7 +2,7 @@ title: cutonfold --- -The `cutonfold` macro adds a *cut on fold* indicator to your pattern. +The `cutonfold` macro adds a *cut on fold* indicator to your pattern.\ It is provided by the [cutonfold plugin](/reference/plugins/cutonfold). @@ -17,7 +17,7 @@ macro('cutonfold', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |------------:|---------|---------------------|-------------| | `from` | | [Point](/reference/api/point) | The startpoint of the *cut on fold* indicator | | `to` | | [Point](/reference/api/point) | The endpoint of the *cut on fold* indicator | @@ -29,9 +29,7 @@ macro('cutonfold', { ###### It's safe to use a corner of your pattern part for this -Since this is typically used on corners, the generated cut-on-fold indicator +Since this is typically used on corners, the generated cut-on-fold indicator will not go all the way to the `to` and `from` points. - - diff --git a/markdown/dev/reference/api/macros/en.md b/markdown/dev/reference/api/macros/en.md index 537d7a48be7..484ef2e5443 100644 --- a/markdown/dev/reference/api/macros/en.md +++ b/markdown/dev/reference/api/macros/en.md @@ -17,5 +17,3 @@ Below is a list of macros from [the plugins we maintain](/reference/plugins): For more info on a specific macro and examples, follow the link to the plugin that provides the macro. - - diff --git a/markdown/dev/reference/api/macros/flip/en.md b/markdown/dev/reference/api/macros/flip/en.md index b55081c8f0b..68a7733eb11 100644 --- a/markdown/dev/reference/api/macros/flip/en.md +++ b/markdown/dev/reference/api/macros/flip/en.md @@ -2,7 +2,7 @@ title: flip --- -The `flip` macro flips (mirrors) an entire part vertically around either the X-axis or the Y-axis. +The `flip` macro flips (mirrors) an entire part vertically around either the X-axis or the Y-axis.\ It is provided by the [flip plugin](/reference/plugins/flip). ```js @@ -11,7 +11,7 @@ macro("flip", { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |----------------:|---------|---------------------|-------------| | `axis` | 'x' | The axis to flip around. Either `x` or `y` | @@ -19,8 +19,8 @@ macro("flip", { Under the hood, this macro will: - - Go through all Points in your Part, and multiply their (X or Y)-coordinate by -1 - - Go through all the Paths in your Part, and for each drawing operation will multiply the (X or Y)-coordinare by -1 - - Go through all the Snippets in your Part and multiply the (X or Y)-coordinate of the anchor point by -1 +- Go through all Points in your Part, and multiply their (X or Y)-coordinate by -1 +- Go through all the Paths in your Part, and for each drawing operation will multiply the (X or Y)-coordinare by -1 +- Go through all the Snippets in your Part and multiply the (X or Y)-coordinate of the anchor point by -1 diff --git a/markdown/dev/reference/api/macros/gore/en.md b/markdown/dev/reference/api/macros/gore/en.md index eea858eed8e..d437db690b1 100644 --- a/markdown/dev/reference/api/macros/gore/en.md +++ b/markdown/dev/reference/api/macros/gore/en.md @@ -18,7 +18,7 @@ macro("gore", { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |--------------:|---------|------------|----------------------------------------------| | `from` | | [Point][2] | The point to start drafting the gore from | | `radius` | | number | The radius of the sphere the gores should cover | @@ -27,6 +27,6 @@ macro("gore", { | `render` | `false` | boolean | Whether or not to render the generated path | | `class` | | boolean | Any classes to add to the generated path | +[1]: https://en.wikipedia.org/wiki/Gore_\(segment\) -[1]: https://en.wikipedia.org/wiki/Gore_(segment) [2]: /reference/api/point diff --git a/markdown/dev/reference/api/macros/grainline/en.md b/markdown/dev/reference/api/macros/grainline/en.md index 9d82cb4ed9f..3cb9b700e28 100644 --- a/markdown/dev/reference/api/macros/grainline/en.md +++ b/markdown/dev/reference/api/macros/grainline/en.md @@ -2,7 +2,7 @@ title: grainline --- -The `grainline` macro adds a *grainline* indicator to your pattern. +The `grainline` macro adds a *grainline* indicator to your pattern.\ It is provided by the [grainline plugin](/reference/plugins/grainline/). @@ -16,7 +16,7 @@ macro("grainline", { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |------------:|-------------|------------|----------------------------------------------| | `from` | | [Point][1] | The startpoint of the *grainline* indicator | | `to` | | [Point][1] | The endpoint of the *grainline* indicator | diff --git a/markdown/dev/reference/api/macros/hd/en.md b/markdown/dev/reference/api/macros/hd/en.md index 9be2625e774..434fb0cfaac 100644 --- a/markdown/dev/reference/api/macros/hd/en.md +++ b/markdown/dev/reference/api/macros/hd/en.md @@ -2,7 +2,7 @@ title: hd --- -The `hd` macro adds a *horizontal dimension* to your pattern. +The `hd` macro adds a *horizontal dimension* to your pattern.\ It is provided by the [dimension plugin](/reference/plugins/dimension/). @@ -17,7 +17,7 @@ macro('hd', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |----------------:|----------|---------------------|-------------| | `from` | | [Point](/reference/api/point) | The startpoint of the dimension | | `to` | | [Point](/reference/api/point) | The endpoint of the dimension | @@ -31,8 +31,7 @@ macro('hd', { Setting a custom ID will: - - Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) - - Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) +- Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) +- Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) - diff --git a/markdown/dev/reference/api/macros/ld/en.md b/markdown/dev/reference/api/macros/ld/en.md index 3bc2cc6642b..b8385d45e3e 100644 --- a/markdown/dev/reference/api/macros/ld/en.md +++ b/markdown/dev/reference/api/macros/ld/en.md @@ -2,7 +2,7 @@ title: ld --- -The `ld` macro adds a *linear dimension* to your pattern. +The `ld` macro adds a *linear dimension* to your pattern.\ It is provided by the [dimension plugin](/reference/plugins/dimension/). @@ -17,8 +17,7 @@ macro('ld', { }) ``` - -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-----------------|---------|---------------------|-------------| | `from` | | [Point](/reference/api/point) | The startpoint of the dimension | | `to` | | [Point](/reference/api/point) | The endpoint of the dimension | @@ -32,8 +31,7 @@ macro('ld', { Setting a custom ID will: - - Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) - - Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) +- Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) +- Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) - diff --git a/markdown/dev/reference/api/macros/miniscale/en.md b/markdown/dev/reference/api/macros/miniscale/en.md index 82545e3865c..81289c1651e 100644 --- a/markdown/dev/reference/api/macros/miniscale/en.md +++ b/markdown/dev/reference/api/macros/miniscale/en.md @@ -18,9 +18,7 @@ macro('miniscale', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------|---------|---------------------|-------------| | `at` | | [Point](/reference/api/point) | The point to anchor the *scale box* on | | `rotate` | 0 | Number | Rotation in degrees | - - diff --git a/markdown/dev/reference/api/macros/mirror/en.md b/markdown/dev/reference/api/macros/mirror/en.md index e7973ddf464..619f69aa15d 100644 --- a/markdown/dev/reference/api/macros/mirror/en.md +++ b/markdown/dev/reference/api/macros/mirror/en.md @@ -33,7 +33,7 @@ macro('sprinkle', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------:|------------|------------|-------------| | `mirror` | | `array` | Array with 2 [Point](/reference/api/point) objects that define the *mirror line* | | `clone` | `true` | `bool` | Whether to clone mirrored points and or paths | @@ -41,4 +41,3 @@ macro('sprinkle', { | `paths` | | `array` | An array of [Path](/reference/api/path) objects | | `prefix` | `mirrored` | `string` | A prefix to apply to the names of the clones points and or paths. Ignored if `nameFormat` is set | | `nameFormat` | | `function` | A method that receives the name of the path or point and should return the name for the cloned path and or point | - diff --git a/markdown/dev/reference/api/macros/pd/en.md b/markdown/dev/reference/api/macros/pd/en.md index 240a3c69463..1e86bb8b17d 100644 --- a/markdown/dev/reference/api/macros/pd/en.md +++ b/markdown/dev/reference/api/macros/pd/en.md @@ -2,7 +2,7 @@ title: pd --- -The `pd` macro adds a *path dimension* to your pattern, indicating the length of a path. +The `pd` macro adds a *path dimension* to your pattern, indicating the length of a path.\ It is provided by the [dimension plugin](/reference/plugins/dimension/). @@ -16,7 +16,7 @@ macro('pd', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |----------------:|---------|---------------------|-------------| | `path` | | [Path](/reference/api/path) | The path to draw the dimension along | | `d` | 0 | Number | The offset at which to draw the dimension | @@ -29,9 +29,7 @@ macro('pd', { Setting a custom ID will: - - Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) - - Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) +- Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) +- Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) - - diff --git a/markdown/dev/reference/api/macros/rmd/en.md b/markdown/dev/reference/api/macros/rmd/en.md index a82db9d80a7..0c28330e065 100644 --- a/markdown/dev/reference/api/macros/rmd/en.md +++ b/markdown/dev/reference/api/macros/rmd/en.md @@ -24,7 +24,6 @@ macro('rmd', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |----------|---------|----------|-------------| | `id` | | `string` | The id of the dimension to remove | - diff --git a/markdown/dev/reference/api/macros/round/en.md b/markdown/dev/reference/api/macros/round/en.md index 81d085c4c7b..1f11657f54a 100644 --- a/markdown/dev/reference/api/macros/round/en.md +++ b/markdown/dev/reference/api/macros/round/en.md @@ -21,7 +21,7 @@ macro('round', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |------------:|---------|---------------------|-------------| | `from` | | [Point](/reference/api/point) | The startpoint towards the corner to round | | `to` | | [Point](/reference/api/point) | The endpoint away from the corner to round | @@ -30,4 +30,3 @@ macro('round', { | `prefix` | | String | A prefix to give to the points and paths created by this macro | | `render` | `false` | Boolean | Whether to render the path created by this macro | | `class` | | String | Class(es) to assign to the path created by this macro | - diff --git a/markdown/dev/reference/api/macros/scalebox/en.md b/markdown/dev/reference/api/macros/scalebox/en.md index 6baa4e5a554..31a58a36e8f 100644 --- a/markdown/dev/reference/api/macros/scalebox/en.md +++ b/markdown/dev/reference/api/macros/scalebox/en.md @@ -17,7 +17,7 @@ macro('scalebox', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |-------------|---------|---------------------|-------------| | `at` | | [Point](/reference/api/point) | The point to anchor the *scale box* on | | `lead` | FreeSewing | String | The lead text above the title | @@ -26,4 +26,3 @@ macro('scalebox', { | `rotate` | 0 | Number | Rotation in degrees | (\*) `freesewingIsMadeByJoostDeCockAndContributors \n withTheFinancialSupportOfOurPatrons` - diff --git a/markdown/dev/reference/api/macros/sprinkle/en.md b/markdown/dev/reference/api/macros/sprinkle/en.md index 0709557464e..a17125b1fba 100644 --- a/markdown/dev/reference/api/macros/sprinkle/en.md +++ b/markdown/dev/reference/api/macros/sprinkle/en.md @@ -2,7 +2,7 @@ title: sprinkle --- -The `sprinkle` macro facilitates adding snippets to your pattern in bulk. +The `sprinkle` macro facilitates adding snippets to your pattern in bulk.\ It is by the [sprinkle plugin](/reference/plugins/sprinkle). @@ -16,11 +16,9 @@ macro('sprinkle', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |------------:|---------|------------------|-------------| | `snippet` | | String | Name of the snippet to sprinkle | | `on` | `[]` | Array of strings | An array with **the names** of points to add the snippet on | | `scale` | 1 | number | Scale for the individual snippets | | `rotate` | 0 | number | Rotation for the individual snippets | - - diff --git a/markdown/dev/reference/api/macros/title/en.md b/markdown/dev/reference/api/macros/title/en.md index 1f6342869cd..a615580fcfe 100644 --- a/markdown/dev/reference/api/macros/title/en.md +++ b/markdown/dev/reference/api/macros/title/en.md @@ -2,12 +2,12 @@ title: title --- -The `title` macro adds a title to a pattern part. +The `title` macro adds a title to a pattern part.\ It is provided by the [title plugin](/reference/plugins/title). Example of a title added by this macro -| Property | Default | Type | Description | +| Property | Default | Type | Description | | ----------:| :-----: | ------------------- | ----------- | | `at` | | [Point](/reference/api/point) | The point at which to insert the title | | `nr` | | String | The number of the pattern part | @@ -16,4 +16,3 @@ It is provided by the [title plugin](/reference/plugins/title). | `append` | `false` | Boolean | Set this to `true` to append the `nr` to any text already set in Point `at`'s attributes, rather than overwrite it | | `rotation` | 0 | Number | An optional rotation in degrees | | `scale` | 1 | Number | An optional scaling factor | - diff --git a/markdown/dev/reference/api/macros/vd/en.md b/markdown/dev/reference/api/macros/vd/en.md index 92460a12730..34ecf2ab807 100644 --- a/markdown/dev/reference/api/macros/vd/en.md +++ b/markdown/dev/reference/api/macros/vd/en.md @@ -2,7 +2,7 @@ title: vd --- -The `vd` macro adds a *vertical dimension* to your pattern. +The `vd` macro adds a *vertical dimension* to your pattern.\ It is provided by the [dimension plugin](/reference/plugins/dimension/). @@ -17,7 +17,7 @@ macro('vd', { }) ``` -| Property | Default | Type | Description | +| Property | Default | Type | Description | |----------------:|---------|---------------------|-------------| | `from` | | [Point](/reference/api/point) | The startpoint of the dimension | | `to` | | [Point](/reference/api/point) | The endpoint of the dimension | @@ -31,10 +31,7 @@ macro('vd', { Setting a custom ID will: - - Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) - - Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) +- Allow removal of the dimension with [the `rmd` macro](/reference/macros/rmd) +- Prevent removal of the dimension with [the `rmad` macro](/reference/macros/rmad/) - - - diff --git a/markdown/dev/reference/api/part/en.md b/markdown/dev/reference/api/part/en.md index a15932f9e3f..60c5eb5c91e 100644 --- a/markdown/dev/reference/api/part/en.md +++ b/markdown/dev/reference/api/part/en.md @@ -3,7 +3,7 @@ title: Part order: 20 --- -The `Part` object in FreeSewing's core library holds all data and logic of a pattern part. +The `Part` object in FreeSewing's core library holds all data and logic of a pattern part. A pattern part is what holds the actual information about points and paths, and multiple parts together typically make up a pattern. diff --git a/markdown/dev/reference/api/part/getid/en.md b/markdown/dev/reference/api/part/getid/en.md index ad6537b270e..5595d571c22 100644 --- a/markdown/dev/reference/api/part/getid/en.md +++ b/markdown/dev/reference/api/part/getid/en.md @@ -30,5 +30,3 @@ export default function (part) { return part } ``` - - diff --git a/markdown/dev/reference/api/part/raise/debug/en.md b/markdown/dev/reference/api/part/raise/debug/en.md index 59f5016420e..5816cbc0528 100644 --- a/markdown/dev/reference/api/part/raise/debug/en.md +++ b/markdown/dev/reference/api/part/raise/debug/en.md @@ -35,4 +35,3 @@ export default function (part) { return part } ``` - diff --git a/markdown/dev/reference/api/part/raise/en.md b/markdown/dev/reference/api/part/raise/en.md index 37f08d903e3..4c4a7b7b363 100644 --- a/markdown/dev/reference/api/part/raise/en.md +++ b/markdown/dev/reference/api/part/raise/en.md @@ -15,7 +15,7 @@ roadmap](https://github.com/freesewing/freesewing/discussions/1278) for details. -There are four different types of information with their own method: +There are four different types of information with their own method: @@ -32,13 +32,13 @@ events: { Calling the relevant `raise` method will add the data you pass to it to the relevant array. -For example, if we use: +For example, if we use: ```js raise.info('Hello') ``` -The result will be: +The result will be: ```js events: { @@ -62,4 +62,3 @@ But if an error is raised, core won't attempt to pack the pattern parts on the p In other words, it will abort after the draft, and not provide a layout. - diff --git a/markdown/dev/reference/api/part/raise/error/en.md b/markdown/dev/reference/api/part/raise/error/en.md index 00c9c3078fd..96d790279c3 100644 --- a/markdown/dev/reference/api/part/raise/error/en.md +++ b/markdown/dev/reference/api/part/raise/error/en.md @@ -32,4 +32,3 @@ export default function (part) { } } ``` - diff --git a/markdown/dev/reference/api/part/raise/warning/en.md b/markdown/dev/reference/api/part/raise/warning/en.md index 6345b3bd24b..b841e4e76c8 100644 --- a/markdown/dev/reference/api/part/raise/warning/en.md +++ b/markdown/dev/reference/api/part/raise/warning/en.md @@ -41,4 +41,3 @@ export default function (part) { return part } ``` - diff --git a/markdown/dev/reference/api/part/shorthand/en.md b/markdown/dev/reference/api/part/shorthand/en.md index 188c2397c15..5a229d50274 100644 --- a/markdown/dev/reference/api/part/shorthand/en.md +++ b/markdown/dev/reference/api/part/shorthand/en.md @@ -4,7 +4,7 @@ title: Part.shorthand() A part's `shorthand()` method provides easy access to a number of internal objects and properties. It does so be returning an object -that contains all you need to draft your pattern parts. It is +that contains all you need to draft your pattern parts. It is typically combined with object destructuring to pull out those properties you need. @@ -80,8 +80,7 @@ paths.example = new Path() -As you can see in the example above, you can/should load only +As you can see in the example above, you can/should load only the shorthand you need by using object destructuring. - diff --git a/markdown/dev/reference/api/part/units/en.md b/markdown/dev/reference/api/part/units/en.md index 9c082d1c24b..94c7f31c006 100644 --- a/markdown/dev/reference/api/part/units/en.md +++ b/markdown/dev/reference/api/part/units/en.md @@ -4,7 +4,7 @@ title: Part.units() A part's `units()` method will formats a float you pass it, which should represent a value in mm, into the units requested by the user. -The returned value is to be used in presentation only, as it will be +The returned value is to be used in presentation only, as it will be a string that includes the user's units. @@ -34,4 +34,3 @@ export default function (part) { raise.info(`Pattern drafted for a ${units(measurements.chest)} chest`) } ``` - diff --git a/markdown/dev/reference/api/path/clone/en.md b/markdown/dev/reference/api/path/clone/en.md index 266fdf7d111..a7dc591fdfd 100644 --- a/markdown/dev/reference/api/path/clone/en.md +++ b/markdown/dev/reference/api/path/clone/en.md @@ -2,7 +2,6 @@ title: clone() --- - ```js Path path.clone() ``` @@ -32,4 +31,3 @@ paths.clone = paths.example .attr("class", "note lashed stroke-l") .attr("style", "stroke-opacity: 0.5"); ``` - diff --git a/markdown/dev/reference/api/path/close/en.md b/markdown/dev/reference/api/path/close/en.md index 8b1acc4f888..db3e3b7a738 100644 --- a/markdown/dev/reference/api/path/close/en.md +++ b/markdown/dev/reference/api/path/close/en.md @@ -27,4 +27,3 @@ paths.line = new Path() .attr("data-text", "Path._close()") .attr("data-text-class", "text-sm right fill-note"); ``` - diff --git a/markdown/dev/reference/api/path/edge/en.md b/markdown/dev/reference/api/path/edge/en.md index 0d2a102cf98..50a51aa43d9 100644 --- a/markdown/dev/reference/api/path/edge/en.md +++ b/markdown/dev/reference/api/path/edge/en.md @@ -8,14 +8,14 @@ Point path.edge(string side) Returns the Point object at the edge of the path you specify. Edge must be one of: - - `top` - - `bottom` - - `left` - - `right` - - `topLeft` - - `topRight` - - `bottomLeft` - - `bottomRight` +- `top` +- `bottom` +- `left` +- `right` +- `topLeft` +- `topRight` +- `bottomLeft` +- `bottomRight` Example of the Path.edge() method @@ -50,4 +50,3 @@ for (let i of [ "right" ]) snippets[i] = new Snippet("notch", paths.demo.edge(i)); ``` - diff --git a/markdown/dev/reference/api/path/en.md b/markdown/dev/reference/api/path/en.md index e41c0a6e9e6..66566cd384b 100644 --- a/markdown/dev/reference/api/path/en.md +++ b/markdown/dev/reference/api/path/en.md @@ -3,7 +3,7 @@ title: Path order: 30 --- -A path represents an SVG path; The lines and curves on our pattern. +A path represents an SVG path; The lines and curves on our pattern. The Path constructor takes no arguments: @@ -13,8 +13,8 @@ Path new Path(); A Path objects comes with the following properties: - - `render` : Set this to `false` to not render the path (exclude it from the output) - - `attributes` : An [Attributes](/reference/api/attributes) instance holding the path's attributes +- `render` : Set this to `false` to not render the path (exclude it from the output) +- `attributes` : An [Attributes](/reference/api/attributes) instance holding the path's attributes In addition, a Path object exposes the following methods: diff --git a/markdown/dev/reference/api/path/intersects/en.md b/markdown/dev/reference/api/path/intersects/en.md index c3ff2976c7a..ccd40c43819 100644 --- a/markdown/dev/reference/api/path/intersects/en.md +++ b/markdown/dev/reference/api/path/intersects/en.md @@ -2,9 +2,7 @@ title: intersects() --- -``` -array|false path.intersects(Path path) -``` + array|false path.intersects(Path path) Returns the Point object(s) where the path intersects with a path you pass it. @@ -57,4 +55,3 @@ for (let p of paths.demo1.intersects(paths.demo2)) { snippets[part.getId()] = new Snippet("notch", p); } ``` - diff --git a/markdown/dev/reference/api/path/join/en.md b/markdown/dev/reference/api/path/join/en.md index 81d6e66be88..32a2e1ab4a0 100644 --- a/markdown/dev/reference/api/path/join/en.md +++ b/markdown/dev/reference/api/path/join/en.md @@ -42,4 +42,3 @@ paths.joint = paths.path1 .attr("class", "note lashed stroke-l") .attr("style", "stoke-opacity: 0.5"); ``` - diff --git a/markdown/dev/reference/api/path/move/en.md b/markdown/dev/reference/api/path/move/en.md index 71e21d911ed..7fb24ec2aee 100644 --- a/markdown/dev/reference/api/path/move/en.md +++ b/markdown/dev/reference/api/path/move/en.md @@ -6,19 +6,18 @@ title: move() Path path.move(Point to) ``` -Moves to a given point without drawing a line. - +Moves to a given point without drawing a line. ###### Always start your path with a move -When drawing a path, you must always start with a `move()` call, +When drawing a path, you must always start with a `move()` call, followed by your `line()` and/or `curve()` calls and an optional `close()` call. These calls are chainable, making your code easier to read: - + ```js paths.example = new Path() .move(points.a) @@ -29,7 +28,6 @@ paths.example = new Path() - Example of the Path.move() method diff --git a/markdown/dev/reference/api/path/noop/en.md b/markdown/dev/reference/api/path/noop/en.md index 3d467e5d540..67851f79241 100644 --- a/markdown/dev/reference/api/path/noop/en.md +++ b/markdown/dev/reference/api/path/noop/en.md @@ -1,12 +1,12 @@ --- title: noop() --- - + ```js Path path.noop(string id) ``` -Adds a placeholder path opertion. +Adds a placeholder path opertion.\ A `noop` operation does nothing, but is intended to be replaced later with [`Path.insop()`](#insop). Add example diff --git a/markdown/dev/reference/api/path/offset/en.md b/markdown/dev/reference/api/path/offset/en.md index 0f6ade6a88e..c5ce02fae6d 100644 --- a/markdown/dev/reference/api/path/offset/en.md +++ b/markdown/dev/reference/api/path/offset/en.md @@ -1,7 +1,7 @@ --- title: offset() --- - + ```js Path path.offset(float distance) ``` diff --git a/markdown/dev/reference/api/path/reverse/en.md b/markdown/dev/reference/api/path/reverse/en.md index 74193b3ca11..55f8f102fc9 100644 --- a/markdown/dev/reference/api/path/reverse/en.md +++ b/markdown/dev/reference/api/path/reverse/en.md @@ -10,7 +10,7 @@ Returns a path that is the reversed version of this path. As in, start becomes e -The reversed path is a shallow copy. +The reversed path is a shallow copy. It will in other words not inherit the attributes of the original path. If you want a deep copy, including the attributes, use `Path.clone().reverse()`. diff --git a/markdown/dev/reference/api/path/shiftfractionalong/en.md b/markdown/dev/reference/api/path/shiftfractionalong/en.md index 594a5fcf541..e5c98c6c664 100644 --- a/markdown/dev/reference/api/path/shiftfractionalong/en.md +++ b/markdown/dev/reference/api/path/shiftfractionalong/en.md @@ -52,4 +52,3 @@ If you don't need that precision, you can pass a lower number. But for most cases, you can just ignore it. - diff --git a/markdown/dev/reference/api/path/split/en.md b/markdown/dev/reference/api/path/split/en.md index eab87b5749b..c1d5d2117ca 100644 --- a/markdown/dev/reference/api/path/split/en.md +++ b/markdown/dev/reference/api/path/split/en.md @@ -1,7 +1,7 @@ --- title: split --- - + ```js array path.split(Point splitPoint) ``` diff --git a/markdown/dev/reference/api/path/translate/en.md b/markdown/dev/reference/api/path/translate/en.md index fbff05e7456..6bfbcc1385c 100644 --- a/markdown/dev/reference/api/path/translate/en.md +++ b/markdown/dev/reference/api/path/translate/en.md @@ -1,12 +1,12 @@ --- title: translate() --- - + ```js Path path.translate(float deltaX, float deltaY) ``` -Returns a path with +Returns a path with [a translate transform](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform#Translate) applied. diff --git a/markdown/dev/reference/api/path/trim/en.md b/markdown/dev/reference/api/path/trim/en.md index 166a2fb4341..e85934e6b15 100644 --- a/markdown/dev/reference/api/path/trim/en.md +++ b/markdown/dev/reference/api/path/trim/en.md @@ -19,11 +19,11 @@ it on a long/complex path will be significant. To limit the impact of path.trim(), follow this approach: - - construct a minimal path that contains the overlap - - trim it - - now join it to the rest of your path +- construct a minimal path that contains the overlap +- trim it +- now join it to the rest of your path -You can see an example of this +You can see an example of this [in the front part of the Bruce pattern](https://github.com/freesewing/freesewing/blob/develop/packages/bruce/src/front.js#L195). diff --git a/markdown/dev/reference/api/pattern/draft/en.md b/markdown/dev/reference/api/pattern/draft/en.md index 73fde02a68b..933f90eefe3 100644 --- a/markdown/dev/reference/api/pattern/draft/en.md +++ b/markdown/dev/reference/api/pattern/draft/en.md @@ -13,7 +13,7 @@ that are required for the pattern to be drafted. ```js Pattern pattern.draft() -``` +``` ## Pattern.draft() example @@ -29,5 +29,4 @@ const pattern = new Aaron({ }) const svg = pattern.draft().render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/en.md b/markdown/dev/reference/api/pattern/en.md index 76014c53dc8..d4536208c01 100644 --- a/markdown/dev/reference/api/pattern/en.md +++ b/markdown/dev/reference/api/pattern/en.md @@ -3,7 +3,7 @@ title: Pattern order: 15 --- -The `Pattern` object in FreeSewing's core library holds all data and logic of a pattern. +The `Pattern` object in FreeSewing's core library holds all data and logic of a pattern. It is the parametric blueprint that when instantiated with a user's measurements and objects will generate a made-to-measure pattern. @@ -18,17 +18,16 @@ A pattern is instantiated by passing a [settings object](/reference/api/settings This settings objects holds, amongst other things, the measurements and options chosen by the user. Refer to the [settings documentation](/reference/api/settings/) for an exhaustive list. - ## Pattern properties - - `settings` : The settings as set by the user - - `options` : the options as set by the user - - `config` : The pattern configuration - - `parts` : A plain object to hold your parts - - `Part` : The [Part](/reference/api/part) constructor - - `store` : A [Store](/reference/api/store) instance - - `svg` : An [Svg](/reference/api/svg) instance - - `is` : A string that will be set to `draft` or `sample` when you respectively draft or sample a pattern. This allows plugins that hook into your pattern to determine what to do in a given scenario. +- `settings` : The settings as set by the user +- `options` : the options as set by the user +- `config` : The pattern configuration +- `parts` : A plain object to hold your parts +- `Part` : The [Part](/reference/api/part) constructor +- `store` : A [Store](/reference/api/store) instance +- `svg` : An [Svg](/reference/api/svg) instance +- `is` : A string that will be set to `draft` or `sample` when you respectively draft or sample a pattern. This allows plugins that hook into your pattern to determine what to do in a given scenario. ## Pattern methods diff --git a/markdown/dev/reference/api/pattern/getrenderprops/en.md b/markdown/dev/reference/api/pattern/getrenderprops/en.md index 2d9c48f291d..f0b785c6f33 100644 --- a/markdown/dev/reference/api/pattern/getrenderprops/en.md +++ b/markdown/dev/reference/api/pattern/getrenderprops/en.md @@ -2,7 +2,7 @@ title: Pattern.getRenderProps() --- -A pattern's `getRenderProps()` method will return a set of properties +A pattern's `getRenderProps()` method will return a set of properties that allow the pattern to be rendered be an external renderer such as a React component. It should only be called after calling `Pattern.draft()`. @@ -10,7 +10,7 @@ a React component. It should only be called after calling `Pattern.draft()`. ```js Object pattern.getRenderProps() -``` +``` The object returned by this method contains the following properties: @@ -29,7 +29,6 @@ See [the Draft React component](/reference/packages/components/draft/) for more - ## Pattern.getRenderProps() example ```jsx @@ -44,5 +43,4 @@ const MyReactComponent = ({ measurements }) => { } export default MyReactComponent -``` - +``` diff --git a/markdown/dev/reference/api/pattern/on/en.md b/markdown/dev/reference/api/pattern/on/en.md index a4dd7add514..a271574500e 100644 --- a/markdown/dev/reference/api/pattern/on/en.md +++ b/markdown/dev/reference/api/pattern/on/en.md @@ -2,7 +2,7 @@ title: Pattern.on() --- -A pattern's `on()` method allows you to attach a function to one of the +A pattern's `on()` method allows you to attach a function to one of the pattern's [lifecycle hooks](/reference/hooks/). It takes the lifecycle hook's name as the first argument and the function as the second. This method will then be triggered by the lifecycle hook. @@ -13,7 +13,7 @@ This method will then be triggered by the lifecycle hook. ```js Pattern pattern.on(string hook, function method) -``` +``` @@ -38,4 +38,3 @@ Your pattern now has a yellow background. The [plugin guide](/guides/plugins/) contains more info on how you can use hooks - diff --git a/markdown/dev/reference/api/pattern/render/en.md b/markdown/dev/reference/api/pattern/render/en.md index a89fa6a0880..ea83f28109f 100644 --- a/markdown/dev/reference/api/pattern/render/en.md +++ b/markdown/dev/reference/api/pattern/render/en.md @@ -10,7 +10,7 @@ the SVG as a string. It should only ever be called after calling ```js string pattern.render() -``` +``` # Pattern.render() example @@ -26,5 +26,4 @@ const pattern = new Aaron({ }) const svg = pattern.draft().render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/sample/en.md b/markdown/dev/reference/api/pattern/sample/en.md index 7fd6471cda2..7bbfdfeccdc 100644 --- a/markdown/dev/reference/api/pattern/sample/en.md +++ b/markdown/dev/reference/api/pattern/sample/en.md @@ -4,28 +4,28 @@ title: Pattern.sample() A pattern's `sample()` method will *sample* the pattern which means to draft it in different iterations while adjusting the input settings. -Under the hood, this method will call one of +Under the hood, this method will call one of [Pattern.sampleOption()](/reference/apu/pattern/sampleoption), [Pattern.sampleMeasurement()](/reference/apu/pattern/sampleoption), or [Pattern.sampleModels()](/reference/apu/pattern/sampleoption) to sample an option, a measurement, or a set of measurements respectively. -Unlike those three methods where you pass the relevant info to to the method, -this `Pattern.sample()` will instead read the `pattern.settings.sample` +Unlike those three methods where you pass the relevant info to to the method, +this `Pattern.sample()` will instead read the `pattern.settings.sample` object to determine what to do. The possiblities are: - - **type**: One of `option`, `measurement`, or `models` - - **option**: An option name as defined in the pattern config file (only used when `type` is option). - - **measurement**: A measurement name as defined in the pattern config file (only used when `type` is measurement). - - **models**: An array of models with the required measurements for this pattern (only used when `type` is models). +- **type**: One of `option`, `measurement`, or `models` +- **option**: An option name as defined in the pattern config file (only used when `type` is option). +- **measurement**: A measurement name as defined in the pattern config file (only used when `type` is measurement). +- **models**: An array of models with the required measurements for this pattern (only used when `type` is models). See the specific sample methods below for more details: -- [Pattern.sampleOption()](/reference/apu/pattern/sampleoption) -- [Pattern.sampleMeasurement()](/reference/apu/pattern/sampleoption) -- [Pattern.sampleModels()](/reference/apu/pattern/sampleoption) +- [Pattern.sampleOption()](/reference/apu/pattern/sampleoption) +- [Pattern.sampleMeasurement()](/reference/apu/pattern/sampleoption) +- [Pattern.sampleModels()](/reference/apu/pattern/sampleoption) From a lifecycle point of view, the `Pattern.sample()` method is a substitute for `Pattern.draft()`. So you call it after instantiating the pattern, prior to @@ -56,12 +56,11 @@ roadmap](https://github.com/freesewing/freesewing/discussions/1278) for details. - ## Pattern.sample() signature ```js Pattern pattern.sample() -``` +``` ## Pattern.sample() example @@ -77,5 +76,4 @@ const pattern = new Aaron({ }) const svg = pattern.sample().render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/samplemeasurement/en.md b/markdown/dev/reference/api/pattern/samplemeasurement/en.md index bc50c20d903..b335cdfa0c1 100644 --- a/markdown/dev/reference/api/pattern/samplemeasurement/en.md +++ b/markdown/dev/reference/api/pattern/samplemeasurement/en.md @@ -5,7 +5,7 @@ title: Pattern.sampleMeasurement() A pattern's `sampleMeasurement()` method will *sample* a given measurement, which means to draft it in different iterations while adjusting the input value of the given measurement. -In practice, it will draft 10 iterations of the pattern +In practice, it will draft 10 iterations of the pattern while adapting the measurement between 90% and 110% of its original value. @@ -34,5 +34,4 @@ import models from "@freesewing/models" const pattern = new Aaron({ measurements: models.manSize38 }) const svg = pattern.sampleMeasurement("chest").render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/samplemodels/en.md b/markdown/dev/reference/api/pattern/samplemodels/en.md index 273f6bc3e82..6a8efc43c08 100644 --- a/markdown/dev/reference/api/pattern/samplemodels/en.md +++ b/markdown/dev/reference/api/pattern/samplemodels/en.md @@ -27,7 +27,8 @@ In other words, for each sample, the anchor point will be kept in the same locat ```js Pattern pattern.sampleModels(object models, string focus) -``` +``` + The models object you pass as the first parameter should be structured as such: ```js @@ -46,12 +47,12 @@ The models object you pass as the first parameter should be structured as such: } ``` -The (optional) string you can pass as the second parameter should hold the +The (optional) string you can pass as the second parameter should hold the key of one of the models in the first parameter. In our example above, it could hold `modelName2` for example. -By passing this second parameter, you can put the *focus* on one of the models, -which will influence the render style, and make it +By passing this second parameter, you can put the *focus* on one of the models, +which will influence the render style, and make it easier to see a comparison between a given set of measrurements, and the rest. Alternatively, you can use the `Pattern.sample()` method and set `settings.sample.focus` to the key @@ -66,5 +67,4 @@ import models from "@freesewing/models" const Aaron = new Aaron() const svg = aaron.sampleModels(models, "manSize38").render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/sampleoption/en.md b/markdown/dev/reference/api/pattern/sampleoption/en.md index 959e3f8972d..eadb0daf706 100644 --- a/markdown/dev/reference/api/pattern/sampleoption/en.md +++ b/markdown/dev/reference/api/pattern/sampleoption/en.md @@ -7,9 +7,9 @@ which means to draft it in different iterations while adjusting the input value of the given option. The practical implementation varies based on [the type of option](/config/options/): - - For options that are an object with a **min** and **max** property, 10 steps will be sampled, between min and max - - For options that are a numeric value (**constants**), 10 steps will be sampled between 90% and 110% of the value - - For options with a **list** of options, each option in the list will be sampled +- For options that are an object with a **min** and **max** property, 10 steps will be sampled, between min and max +- For options that are a numeric value (**constants**), 10 steps will be sampled between 90% and 110% of the value +- For options with a **list** of options, each option in the list will be sampled The goal of option sampling is to verify the impact of an option on the pattern, and verify that @@ -33,12 +33,10 @@ In other words, for each sample, the anchor point will be kept in the same locat ```js Pattern pattern.sampleOption(string option) -``` +``` ## Pattern.sampleOption() example - - ```js import Aaron from "@freesewing/aaron" import models from "@freesewing/models" @@ -48,5 +46,4 @@ const pattern = new aaron({ }) const svg = pattern.sampleOption("necklineDrop").render() -``` - +``` diff --git a/markdown/dev/reference/api/pattern/use/en.md b/markdown/dev/reference/api/pattern/use/en.md index 4a9e761396a..7a3bb6869c1 100644 --- a/markdown/dev/reference/api/pattern/use/en.md +++ b/markdown/dev/reference/api/pattern/use/en.md @@ -13,7 +13,7 @@ to run-time plugins. For more details, refer to [the plugin guide](/guides/plugi ```js Pattern pattern.use(object plugin) -``` +``` See [the plugin guide](/guides/plugins/) for details on how to structure you plugin object. @@ -33,4 +33,4 @@ const pattern = new Aaron({ }).use(theme) const svg = pattern.draft().render() -``` +``` diff --git a/markdown/dev/reference/api/point/copy/en.md b/markdown/dev/reference/api/point/copy/en.md index 87b5407682a..3d92c2a7397 100644 --- a/markdown/dev/reference/api/point/copy/en.md +++ b/markdown/dev/reference/api/point/copy/en.md @@ -1,8 +1,9 @@ --- title: Point.copy() --- + A point's `copy()` method returns a new point with the same coordinates as the original point. -This method does _not_ copy any attributes the original point may have. +This method does *not* copy any attributes the original point may have. ## Point.copy() signature diff --git a/markdown/dev/reference/api/point/en.md b/markdown/dev/reference/api/point/en.md index 67d44af6806..fba2c3f89bd 100644 --- a/markdown/dev/reference/api/point/en.md +++ b/markdown/dev/reference/api/point/en.md @@ -7,14 +7,14 @@ A Point object represents a point on a 2D plane with an X and Y axis. Point objects come with the following properties: - - `x` : The X-coordinate of the point - - `y` : The Y-coordinate of the point - - `attributes` : An [Attributes](../attributes) instance holding the point's attributes +- `x` : The X-coordinate of the point +- `y` : The Y-coordinate of the point +- `attributes` : An [Attributes](../attributes) instance holding the point's attributes The point constructor takes two arguments: - - `x` : The X-coordinate of the point - - `y` : The Y-coordinate of the point +- `x` : The X-coordinate of the point +- `y` : The Y-coordinate of the point ```js Point new Point(x, y); diff --git a/markdown/dev/reference/api/point/shiftfractiontowards/en.md b/markdown/dev/reference/api/point/shiftfractiontowards/en.md index 652c80dde03..8dd4d589682 100644 --- a/markdown/dev/reference/api/point/shiftfractiontowards/en.md +++ b/markdown/dev/reference/api/point/shiftfractiontowards/en.md @@ -8,7 +8,7 @@ point and the target. This method accepts values larger than 1 to go beyond the target point, or negative values to shift the point in the opposite direction. -If you need to move a point by a specific distance instead of a percentage, use [`Point.shiftTowards()`]((reference/api/point/shifttowards/)) or [`Point.shiftOutwards()`](reference/api/point/shiftoutwards/) instead. +If you need to move a point by a specific distance instead of a percentage, use [`Point.shiftTowards()`](\(reference/api/point/shifttowards/\)) or [`Point.shiftOutwards()`](reference/api/point/shiftoutwards/) instead. ## Point.shiftFractionTowards() signature diff --git a/markdown/dev/reference/api/point/sitson/en.md b/markdown/dev/reference/api/point/sitson/en.md index 9552f016b04..744dcaa2f01 100644 --- a/markdown/dev/reference/api/point/sitson/en.md +++ b/markdown/dev/reference/api/point/sitson/en.md @@ -2,13 +2,13 @@ title: Point.sitsOn() --- -Returns `true` if this point has the _exact_ same coordinates as the point you pass to it. +Returns `true` if this point has the *exact* same coordinates as the point you pass to it. ###### Too exact? -This method is _very_ precise, so points with an X-coordinate of `10` and `10.0001` +This method is *very* precise, so points with an X-coordinate of `10` and `10.0001` are considered to be different. To check if two points have the same coordinates rounded to the nearest diff --git a/markdown/dev/reference/api/point/translate/en.md b/markdown/dev/reference/api/point/translate/en.md index 23c51c8f0fb..03e126ffb91 100644 --- a/markdown/dev/reference/api/point/translate/en.md +++ b/markdown/dev/reference/api/point/translate/en.md @@ -12,8 +12,8 @@ Point point.translate(float deltaX, float deltaY) In other words, this will: -- Add `deltaX` to the point's X-coordinate -- Add `deltaY` to the point's Y-coordinate +- Add `deltaX` to the point's X-coordinate +- Add `deltaY` to the point's Y-coordinate Positive values for `deltaX` will move the point to the right. Positive values for `deltaY` will move the point downwards. diff --git a/markdown/dev/reference/api/settings/complete/en.md b/markdown/dev/reference/api/settings/complete/en.md index 9f4e62b68aa..7950cd9c15c 100644 --- a/markdown/dev/reference/api/settings/complete/en.md +++ b/markdown/dev/reference/api/settings/complete/en.md @@ -1,11 +1,11 @@ ---- +--- title: complete --- The `complete` setting controls the level of details that's included on your pattern. This has different uses, such as generating patterns to be cut out with a laser cutter. -The default `complete` setting is `true`. +The default `complete` setting is `true`. Set this to `false` to draft a base outline of the pattern, rather than a fully detailed pattern. diff --git a/markdown/dev/reference/api/settings/embed/en.md b/markdown/dev/reference/api/settings/embed/en.md index 802157a55f7..e229183a2e8 100644 --- a/markdown/dev/reference/api/settings/embed/en.md +++ b/markdown/dev/reference/api/settings/embed/en.md @@ -1,4 +1,4 @@ ---- +--- title: embed --- @@ -9,7 +9,7 @@ The default for `embed` is `false` which will include the `width` and `height` attributes in the SVG tag, thereby making it suitable for printing. When set to `true` the `width` and `height` attributes will not be added -which allows you to inject the SVG into an HTML document, where it will +which allows you to inject the SVG into an HTML document, where it will responsively scale. ```js @@ -25,4 +25,3 @@ const pattern = new Brian({ Do **not** use this for SVGs you want to print. - diff --git a/markdown/dev/reference/api/settings/en.md b/markdown/dev/reference/api/settings/en.md index 1a8639babc0..82eab54915e 100644 --- a/markdown/dev/reference/api/settings/en.md +++ b/markdown/dev/reference/api/settings/en.md @@ -1,4 +1,4 @@ ---- +--- title: Settings for: developers about: Documents all the settings your pattern can receive, including the pattern options, measurmeents, and design options diff --git a/markdown/dev/reference/api/settings/idprefix/en.md b/markdown/dev/reference/api/settings/idprefix/en.md index 69f2d710c81..7af1597022e 100644 --- a/markdown/dev/reference/api/settings/idprefix/en.md +++ b/markdown/dev/reference/api/settings/idprefix/en.md @@ -1,4 +1,4 @@ ---- +--- title: idPrefix --- diff --git a/markdown/dev/reference/api/settings/layout/en.md b/markdown/dev/reference/api/settings/layout/en.md index 3af67b2a611..c17845c16c9 100644 --- a/markdown/dev/reference/api/settings/layout/en.md +++ b/markdown/dev/reference/api/settings/layout/en.md @@ -1,23 +1,23 @@ ---- +--- title: layout --- -The `layout` setting allows you to control the way pattern parts are +The `layout` setting allows you to control the way pattern parts are layed out on the pattern. There are 3 scenarios: -- layout is truthy: Do layout algorithmically -- layout is falsy: Do not do any layout apart from stacking all parts together -- layout is an object: Layout the parts as detailed in the layout object +- layout is truthy: Do layout algorithmically +- layout is falsy: Do not do any layout apart from stacking all parts together +- layout is an object: Layout the parts as detailed in the layout object Let's look at each in detail: ## layout is truthy -This is the default behaviour. Parts will be laid without overlap in -a space that's a small as possible. +This is the default behaviour. Parts will be laid without overlap in +a space that's a small as possible. -Don't expect miracles here. -It's one of those things humans are far better at than +Don't expect miracles here. +It's one of those things humans are far better at than computers. ## layout is falsy @@ -57,10 +57,10 @@ let pattern = new brian({ For each part in the `parts` attribute of our layout object, there are 4 possible attributes: - - move: Expects an object with an `x` and `y` property, and will move the part by `x` along the X-axis and by `y` along the Y-axis - - rotate: Expects a number, and will rotate the part by number degrees around its center point - - flipX: Will flip/mirror the part horizontally - - flipY: Will flip/mirror the part vertically +- move: Expects an object with an `x` and `y` property, and will move the part by `x` along the X-axis and by `y` along the Y-axis +- rotate: Expects a number, and will rotate the part by number degrees around its center point +- flipX: Will flip/mirror the part horizontally +- flipY: Will flip/mirror the part vertically diff --git a/markdown/dev/reference/api/settings/locale/en.md b/markdown/dev/reference/api/settings/locale/en.md index ee27ad2008b..4ef9bde4142 100644 --- a/markdown/dev/reference/api/settings/locale/en.md +++ b/markdown/dev/reference/api/settings/locale/en.md @@ -1,4 +1,4 @@ ---- +--- title: locale --- diff --git a/markdown/dev/reference/api/settings/margin/en.md b/markdown/dev/reference/api/settings/margin/en.md index 6efcd740eaa..d81de9d3847 100644 --- a/markdown/dev/reference/api/settings/margin/en.md +++ b/markdown/dev/reference/api/settings/margin/en.md @@ -1,15 +1,15 @@ ---- +--- title: margin --- -The `margin` setting allows you to specify a part margin (in mm). -Each part will have this margin applied. The default is `2mm`. +The `margin` setting allows you to specify a part margin (in mm). +Each part will have this margin applied. The default is `2mm`. This means that: - - At the edge of the SVG, the margin will be `margin * 1` (2mm by default) - - Between parts, the margin will be `margin * 2` (4mm by default) - +- At the edge of the SVG, the margin will be `margin * 1` (2mm by default) +- Between parts, the margin will be `margin * 2` (4mm by default) + Note that setting the margin to zero (or below) will cause parts to overlap. ```js @@ -24,10 +24,10 @@ const pattern = new Brian({ ###### For paperless, the minimal margin is 10mm -In paperless mode, the margin will not go below 10mm. +In paperless mode, the margin will not go below 10mm. That is because text is not taken into account when calculating the bounding box of the part. -Since dimensions are typically the outermost elements in a paperless part, +Since dimensions are typically the outermost elements in a paperless part, a too narrow margin would cause the dimension text to get cut off. diff --git a/markdown/dev/reference/api/settings/measurements/en.md b/markdown/dev/reference/api/settings/measurements/en.md index e0149b8c1dc..1e9e92c87c7 100644 --- a/markdown/dev/reference/api/settings/measurements/en.md +++ b/markdown/dev/reference/api/settings/measurements/en.md @@ -1,9 +1,9 @@ ---- +--- title: measurements --- -The `measurements` settings should hold and object with the -measurements to draft the pattern for. +The `measurements` settings should hold and object with the +measurements to draft the pattern for. The pattern configuration lists all required measurements. ```js @@ -16,4 +16,3 @@ const pattern = new Brian({ } }) ``` - diff --git a/markdown/dev/reference/api/settings/only/en.md b/markdown/dev/reference/api/settings/only/en.md index 1880bb76c8c..4dd29567616 100644 --- a/markdown/dev/reference/api/settings/only/en.md +++ b/markdown/dev/reference/api/settings/only/en.md @@ -1,11 +1,11 @@ ---- +--- title: only --- -The `only` setting allows you to specify one or more parts to +The `only` setting allows you to specify one or more parts to draft/render, rather than the entire pattern. -It accepts either a single part name as a string, or an array of +It accepts either a single part name as a string, or an array of one or more part names. ```js diff --git a/markdown/dev/reference/api/settings/options/en.md b/markdown/dev/reference/api/settings/options/en.md index 98862fbd01b..0661631675a 100644 --- a/markdown/dev/reference/api/settings/options/en.md +++ b/markdown/dev/reference/api/settings/options/en.md @@ -1,8 +1,8 @@ ---- +--- title: options --- -The `options` setting allows you to specify values for the pattern-specific +The `options` setting allows you to specify values for the pattern-specific options that have been implemented by the pattern designer. The available options are listed in the pattern configuration. @@ -22,4 +22,3 @@ const pattern = new Brian({ ``` Unlike measurements, options come with defaults. - diff --git a/markdown/dev/reference/api/settings/paperless/en.md b/markdown/dev/reference/api/settings/paperless/en.md index e437883da2d..b448c03310a 100644 --- a/markdown/dev/reference/api/settings/paperless/en.md +++ b/markdown/dev/reference/api/settings/paperless/en.md @@ -1,4 +1,4 @@ ---- +--- title: paperless --- @@ -15,4 +15,3 @@ const pattern = new Brian({ paperless: true }) ``` - diff --git a/markdown/dev/reference/api/settings/sa/en.md b/markdown/dev/reference/api/settings/sa/en.md index 239e811dcdc..326ae2ce136 100644 --- a/markdown/dev/reference/api/settings/sa/en.md +++ b/markdown/dev/reference/api/settings/sa/en.md @@ -1,4 +1,4 @@ ---- +--- title: sa --- diff --git a/markdown/dev/reference/api/settings/scale/en.md b/markdown/dev/reference/api/settings/scale/en.md index 183aa7b48f0..2d41aa8c6fd 100644 --- a/markdown/dev/reference/api/settings/scale/en.md +++ b/markdown/dev/reference/api/settings/scale/en.md @@ -7,7 +7,7 @@ title: scale ##### This setting is for future use This setting has been added to our core library in anticipation -of a feature request that we've made part of [our v3 +of a feature request that we've made part of [our v3 roadmap](https://github.com/freesewing/freesewing/discussions/1278). It does not currently have any effect. @@ -18,10 +18,10 @@ The `scale` setting is an overal factor that will influence a variety of factors to better support very large or very small patterns. To be clear, `scale` does not change the size of the pattern itself. -It merely controls things like the various stroke width, the size of arrows +It merely controls things like the various stroke width, the size of arrows on dimensions, the size of the text on the pattern, and so on. -This is a feature request by those users that our generating pattern +This is a feature request by those users that our generating pattern for dolls. At such small sizes, many snippets, text, or logos become so large (in comparison to the pattern) that they are problematic. @@ -34,4 +34,3 @@ const pattern = new Brian({ scale: 0.5 }) ``` - diff --git a/markdown/dev/reference/api/settings/units/en.md b/markdown/dev/reference/api/settings/units/en.md index 8efcec00e44..795f1155279 100644 --- a/markdown/dev/reference/api/settings/units/en.md +++ b/markdown/dev/reference/api/settings/units/en.md @@ -1,11 +1,11 @@ ---- +--- title: units --- The `units` setting controls the units used on the pattern. It can be either `metric` (the default) or `imperial`. -Note that this is only used to format the output. +Note that this is only used to format the output. Freesewing expects mm as input. ```js diff --git a/markdown/dev/reference/api/snippet/attr/en.md b/markdown/dev/reference/api/snippet/attr/en.md index 72e0412eab8..0b0f0856a18 100644 --- a/markdown/dev/reference/api/snippet/attr/en.md +++ b/markdown/dev/reference/api/snippet/attr/en.md @@ -10,10 +10,10 @@ Snippet snippet.attr( ) ``` -This `Snippet.attr()` method calls [`Attributes.add()`](./attributes#add) under the hood, +This `Snippet.attr()` method calls [`Attributes.add()`](./attributes#add) under the hood, but returns the Snippet object. This allows you to chain different calls together. -If the third parameter is set to `true` it will call [`Attributes.set()`](./attributes#set) instead, +If the third parameter is set to `true` it will call [`Attributes.set()`](./attributes#set) instead, thereby overwriting the value of the attribute. diff --git a/markdown/dev/reference/api/snippet/clone/en.md b/markdown/dev/reference/api/snippet/clone/en.md index 520fb1c6890..fbf3afcec1d 100644 --- a/markdown/dev/reference/api/snippet/clone/en.md +++ b/markdown/dev/reference/api/snippet/clone/en.md @@ -12,7 +12,6 @@ Returns a new Snippets object that is a deep copy of this one. An example of the Snippet.clone() method - ```js let { Point, points, Snippet, snippets } = part.shorthand(); diff --git a/markdown/dev/reference/api/snippet/en.md b/markdown/dev/reference/api/snippet/en.md index 015c711df5c..847843a7fb3 100644 --- a/markdown/dev/reference/api/snippet/en.md +++ b/markdown/dev/reference/api/snippet/en.md @@ -8,8 +8,8 @@ SVG `defs` section, and rendered with the SVG `use` tag. The snippet constructor takes two arguments: - - `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section - - `anchor` : A [`Point`](#point) on which to anchor the snippet +- `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section +- `anchor` : A [`Point`](#point) on which to anchor the snippet ```js Snippet new Snippet(def, Point); @@ -17,9 +17,9 @@ Snippet new Snippet(def, Point); A Snippet object comes with the following properties: - - `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section - - `anchor` : A [`Point`](../point) on which to anchor the snippet - - `attributes` : An [`Attributes`](../attributes) instance holding the snippet's attributes +- `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section +- `anchor` : A [`Point`](../point) on which to anchor the snippet +- `attributes` : An [`Attributes`](../attributes) instance holding the snippet's attributes In addition, a Snippet object exposes the following methods: diff --git a/markdown/dev/reference/api/snippets/bnotch/en.md b/markdown/dev/reference/api/snippets/bnotch/en.md index 9d93dfbb1c0..9aba63594dd 100644 --- a/markdown/dev/reference/api/snippets/bnotch/en.md +++ b/markdown/dev/reference/api/snippets/bnotch/en.md @@ -12,4 +12,3 @@ snippets.demo = new Snippet('bnotch', points.anchor) ``` An example of the bnotch snippet - diff --git a/markdown/dev/reference/api/snippets/button/en.md b/markdown/dev/reference/api/snippets/button/en.md index f9396e65768..6ea9369378f 100644 --- a/markdown/dev/reference/api/snippets/button/en.md +++ b/markdown/dev/reference/api/snippets/button/en.md @@ -12,4 +12,3 @@ snippets.demo = new Snippet('button', points.anchor) An example of the button snippet - diff --git a/markdown/dev/reference/api/snippets/buttonhole-end/en.md b/markdown/dev/reference/api/snippets/buttonhole-end/en.md index 2ad50665e6a..76f6b78044c 100644 --- a/markdown/dev/reference/api/snippets/buttonhole-end/en.md +++ b/markdown/dev/reference/api/snippets/buttonhole-end/en.md @@ -19,8 +19,8 @@ An example of the buttonhole-end snippet We provide three buttonhole snippets with a different alignment: - - [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole - - [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole - - [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole +- [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole +- [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole +- [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole diff --git a/markdown/dev/reference/api/snippets/buttonhole-start/en.md b/markdown/dev/reference/api/snippets/buttonhole-start/en.md index e08a75d2ef6..4680901314d 100644 --- a/markdown/dev/reference/api/snippets/buttonhole-start/en.md +++ b/markdown/dev/reference/api/snippets/buttonhole-start/en.md @@ -13,15 +13,14 @@ snippets.demo = new Snippet('buttonhole-start', points.anchor) An example of the buttonhole-start snippet - ##### Aligning your buttons and buttonholes We provide three buttonhole snippets with a different alignment: - - [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole - - [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole - - [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole +- [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole +- [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole +- [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole diff --git a/markdown/dev/reference/api/snippets/buttonhole/en.md b/markdown/dev/reference/api/snippets/buttonhole/en.md index df36625a4d0..1fb9234fae8 100644 --- a/markdown/dev/reference/api/snippets/buttonhole/en.md +++ b/markdown/dev/reference/api/snippets/buttonhole/en.md @@ -19,9 +19,8 @@ An example of the buttonhole snippet We provide three buttonhole snippets with a different alignment: - - [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole - - [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole - - [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole +- [buttonhole](/reference/snippets/buttonhole/): Anchor point is the middle of the buttonhole +- [buttonhole-start](/reference/snippets/buttonhole-start/): Anchor point is the start of the buttonhole +- [buttonhole-end](/reference/snippets/buttonhole-end/): Anchor point is the end of the buttonhole - diff --git a/markdown/dev/reference/api/snippets/logo/en.md b/markdown/dev/reference/api/snippets/logo/en.md index bf8a0f55950..17339ff4208 100644 --- a/markdown/dev/reference/api/snippets/logo/en.md +++ b/markdown/dev/reference/api/snippets/logo/en.md @@ -12,4 +12,3 @@ snippets.demo = new Snippet('logo', points.anchor) An example of the logo snippet - diff --git a/markdown/dev/reference/api/snippets/notch/en.md b/markdown/dev/reference/api/snippets/notch/en.md index 8b25d3f01c5..e481d6ce9cb 100644 --- a/markdown/dev/reference/api/snippets/notch/en.md +++ b/markdown/dev/reference/api/snippets/notch/en.md @@ -8,7 +8,7 @@ provided by [plugin-theme](/reference/plugins/theme/). ```js snippets.demo = new Snippet('bnotch', points.anchor) ``` + An example of the notch snippet - diff --git a/markdown/dev/reference/api/snippets/snap-socket/en.md b/markdown/dev/reference/api/snippets/snap-socket/en.md index 91abf00e4dc..0717bb39473 100644 --- a/markdown/dev/reference/api/snippets/snap-socket/en.md +++ b/markdown/dev/reference/api/snippets/snap-socket/en.md @@ -13,4 +13,3 @@ snippets.demo = new Snippet('snap-socket', points.anchor) An example of the snap-socket snippet - diff --git a/markdown/dev/reference/api/snippets/snap-stud/en.md b/markdown/dev/reference/api/snippets/snap-stud/en.md index b1b83c45103..94c572b9d2e 100644 --- a/markdown/dev/reference/api/snippets/snap-stud/en.md +++ b/markdown/dev/reference/api/snippets/snap-stud/en.md @@ -13,4 +13,3 @@ snippets.demo = new Snippet('snap-stud', points.anchor) An example of the snap-stud snippet - diff --git a/markdown/dev/reference/api/store/en.md b/markdown/dev/reference/api/store/en.md index 320c0b17951..8b7bb84cdc6 100644 --- a/markdown/dev/reference/api/store/en.md +++ b/markdown/dev/reference/api/store/en.md @@ -4,12 +4,12 @@ components: true order: 70 --- -The **Store** object holds a simple key/value store with -methods for storing and retrieving information. +The **Store** object holds a simple key/value store with +methods for storing and retrieving information.\ A single store per pattern is shared by all pattern parts. A store is typically used to share information between parts. For example -the length of the neck opening in one part can be used to calculate the +the length of the neck opening in one part can be used to calculate the length for the collar in another part. The `Store` object exposes the following methods: diff --git a/markdown/dev/reference/api/store/get/en.md b/markdown/dev/reference/api/store/get/en.md index ba913e2e6c3..2fe44f6b302 100644 --- a/markdown/dev/reference/api/store/get/en.md +++ b/markdown/dev/reference/api/store/get/en.md @@ -7,4 +7,3 @@ mixed store.get(string key) ``` Returnes the value stored under `key`. - diff --git a/markdown/dev/reference/api/store/set/en.md b/markdown/dev/reference/api/store/set/en.md index 0f48e820175..5a4de058726 100644 --- a/markdown/dev/reference/api/store/set/en.md +++ b/markdown/dev/reference/api/store/set/en.md @@ -7,4 +7,3 @@ void store.set(string key, mixed value) ``` Stores the value of `value` in the store under key `key`. - diff --git a/markdown/dev/reference/api/svg/attributes/en.md b/markdown/dev/reference/api/svg/attributes/en.md index 2f03c472f2b..4b778848a34 100644 --- a/markdown/dev/reference/api/svg/attributes/en.md +++ b/markdown/dev/reference/api/svg/attributes/en.md @@ -3,4 +3,3 @@ title: attributes --- An [Attributes](/reference/api/attributes) instance that controls the attributes of the SVG tag. - diff --git a/markdown/dev/reference/api/svg/defs/en.md b/markdown/dev/reference/api/svg/defs/en.md index fb0244664dd..44a05afe66b 100644 --- a/markdown/dev/reference/api/svg/defs/en.md +++ b/markdown/dev/reference/api/svg/defs/en.md @@ -2,8 +2,8 @@ title: defs --- -A string that will be rendered -as [the defs section](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs) of +A string that will be rendered +as [the defs section](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs) of the SVG document. The defs attribute is where plugins will add additional snippets. @@ -13,9 +13,11 @@ The defs attribute is where plugins will add additional snippets. /* svg.defs will be inserted */ ``` + ###### Add, but don't overwrite + When adding your own defs, it's important not to overwrite this property, but rather add your own. @@ -24,6 +26,7 @@ In other words, do this: ```js svg.defs += myDefs; ``` + and don't do this: ```js diff --git a/markdown/dev/reference/api/svg/en.md b/markdown/dev/reference/api/svg/en.md index 625fa7d5104..d5df13c18b9 100644 --- a/markdown/dev/reference/api/svg/en.md +++ b/markdown/dev/reference/api/svg/en.md @@ -14,4 +14,3 @@ want to develop a plugin, or use a custom layout: ## Svg properties - diff --git a/markdown/dev/reference/api/svg/head/en.md b/markdown/dev/reference/api/svg/head/en.md index 7c513bba9d0..b10aafbb824 100644 --- a/markdown/dev/reference/api/svg/head/en.md +++ b/markdown/dev/reference/api/svg/head/en.md @@ -26,10 +26,9 @@ and `defs` sections and an opening tag for an SVG group. ###### This does not include the opening SVG tag -Note that while [Pattern.svg.tail](/reference/api/pattern/svg/tail/) closes the SVG tag, -[Pattern.svg.head](/reference/api/pattern/head/) does not open it. +Note that while [Pattern.svg.tail](/reference/api/pattern/svg/tail/) closes the SVG tag, +[Pattern.svg.head](/reference/api/pattern/head/) does not open it. That's because the `width`, `height` and `viewBox` attributes will depend on the main body of the SVG document. - diff --git a/markdown/dev/reference/api/svg/layout/en.md b/markdown/dev/reference/api/svg/layout/en.md index 44e2a05601a..4e1ae72828d 100644 --- a/markdown/dev/reference/api/svg/layout/en.md +++ b/markdown/dev/reference/api/svg/layout/en.md @@ -14,4 +14,3 @@ It is structured as follows: // Other parts follow } ``` - diff --git a/markdown/dev/reference/api/svg/script/en.md b/markdown/dev/reference/api/svg/script/en.md index 98ecfd1188d..b6a712b8f41 100644 --- a/markdown/dev/reference/api/svg/script/en.md +++ b/markdown/dev/reference/api/svg/script/en.md @@ -15,6 +15,7 @@ We don't use this ourselves, but it's there if you need it. ###### Add, but don't overwrite + When adding your own script, it's important not to overwrite this property, but rather add your own. @@ -23,6 +24,7 @@ In other words, do this: ```js svg.script += myScript; ``` + and don't do this: ```js diff --git a/markdown/dev/reference/api/svg/style/en.md b/markdown/dev/reference/api/svg/style/en.md index 086ad25889d..b0f10521747 100644 --- a/markdown/dev/reference/api/svg/style/en.md +++ b/markdown/dev/reference/api/svg/style/en.md @@ -15,6 +15,7 @@ The style attribute is where plugins will add additional snippets. ###### Add, but don't overwrite + When adding your own styles, it's important not to overwrite this property, but rather add your own. @@ -23,6 +24,7 @@ In other words, do this: ```js svg.style += myStyles; ``` + and don't do this: ```js diff --git a/markdown/dev/reference/api/svg/tail/en.md b/markdown/dev/reference/api/svg/tail/en.md index fcb6c570747..b8a72ca8e14 100644 --- a/markdown/dev/reference/api/svg/tail/en.md +++ b/markdown/dev/reference/api/svg/tail/en.md @@ -2,11 +2,10 @@ title: tail --- -A string that closes both the group opened by [Pattern.svg.head](/reference/api/pattern/svg/head/) and the SVG tag. +A string that closes both the group opened by [Pattern.svg.head](/reference/api/pattern/svg/head/) and the SVG tag. ```svg ``` - diff --git a/markdown/dev/reference/api/utils/beamintersectscircle/en.md b/markdown/dev/reference/api/utils/beamintersectscircle/en.md index bbdc0b9b070..34a6c448153 100644 --- a/markdown/dev/reference/api/utils/beamintersectscircle/en.md +++ b/markdown/dev/reference/api/utils/beamintersectscircle/en.md @@ -16,13 +16,13 @@ Finds the intersection between an endless line through points `point1` and `poin and a circle with its center at point `center` and a radius of `radius` mm. The 5th and last parameter controls the *sorting* of the found intersections. -This will (almost) always return 2 intersections, and you can choose how +This will (almost) always return 2 intersections, and you can choose how they are ordered in the returned array: Set sort to: - - `x` : The point with the lowest X-coordinate will go first (left to right) - - `y` : The point with the lowest Y-coordinate will go first (top to bottom) +- `x` : The point with the lowest X-coordinate will go first (left to right) +- `y` : The point with the lowest Y-coordinate will go first (top to bottom) A Utils.beamIntersectsCircle() example diff --git a/markdown/dev/reference/api/utils/beamintersectsx/en.md b/markdown/dev/reference/api/utils/beamintersectsx/en.md index b3d854bf790..74984909dcb 100644 --- a/markdown/dev/reference/api/utils/beamintersectsx/en.md +++ b/markdown/dev/reference/api/utils/beamintersectsx/en.md @@ -36,4 +36,3 @@ A Utils.beamIntersectsX() example .line(new Point(40, 35)) .attr("class", "note dashed"); ``` - diff --git a/markdown/dev/reference/api/utils/circlesintersect/en.md b/markdown/dev/reference/api/utils/circlesintersect/en.md index 77ee1a139b7..c1e1487a9bf 100644 --- a/markdown/dev/reference/api/utils/circlesintersect/en.md +++ b/markdown/dev/reference/api/utils/circlesintersect/en.md @@ -19,8 +19,8 @@ When this returns 2 intersections, you can choose how they are ordered in the re Set sort to: - - `x` : The point with the lowest X-coordinate will go first (left to right) - - `y` : The point with the lowest Y-coordinate will go first (top to bottom) +- `x` : The point with the lowest X-coordinate will go first (left to right) +- `y` : The point with the lowest Y-coordinate will go first (top to bottom) A Utils.circlesIntersect() example @@ -61,4 +61,3 @@ snippets.second1 = new Snippet("notch", intersections1[1]); snippets.first2 = new Snippet("bnotch", intersections2[0]); snippets.second2 = new Snippet("notch", intersections2[1]); ``` - diff --git a/markdown/dev/reference/api/utils/curveintersectsx/en.md b/markdown/dev/reference/api/utils/curveintersectsx/en.md index abf8ec96d33..53243bf4ca8 100644 --- a/markdown/dev/reference/api/utils/curveintersectsx/en.md +++ b/markdown/dev/reference/api/utils/curveintersectsx/en.md @@ -13,15 +13,15 @@ array | Point | false utils.curveIntersectsX( Finds the point(s) where a curve intersects a given X-value. -This is a low-level variant +This is a low-level variant of [`Path.intersectsX()`](/reference/api/path/#pathintersectsx). Instead of a path, you describe a single curve by passing the four points that describes it. -This returns `false` if no intersections are found, -a [Point](/reference/api/point) object if -a single intersection is found, and an array -of [Point](/reference/api/point) objects if +This returns `false` if no intersections are found, +a [Point](/reference/api/point) object if +a single intersection is found, and an array +of [Point](/reference/api/point) objects if multiple intersections are found. A Utils.curveIntersectX() example @@ -69,4 +69,3 @@ for (let p of utils.curveIntersectsX( )) snippets[p.y] = new Snippet("notch", p); ``` - diff --git a/markdown/dev/reference/api/utils/curveintersectsy/en.md b/markdown/dev/reference/api/utils/curveintersectsy/en.md index 7e23e205327..c7cd56d611a 100644 --- a/markdown/dev/reference/api/utils/curveintersectsy/en.md +++ b/markdown/dev/reference/api/utils/curveintersectsy/en.md @@ -13,15 +13,15 @@ array | Point | false utils.curveIntersectsY( Finds the point(s) where a curve intersects a given Y-value. -This is a low-level variant +This is a low-level variant of [`Path.intersectsY()`](/reference/api/path/#pathintersectsy). Instead of a path, you describe a single curve by passing the four points that describes it. -This returns `false` if no intersections are found, -a [Point](/reference/api/point/) object if -a single intersection is found, and an array -of [Point](/reference/api/point/) objects if +This returns `false` if no intersections are found, +a [Point](/reference/api/point/) object if +a single intersection is found, and an array +of [Point](/reference/api/point/) objects if multiple intersections are found. A Utils.curveIntersectY() example @@ -69,4 +69,3 @@ for (let p of utils.curveIntersectsY( )) snippets[p.x] = new Snippet("notch", p); ``` - diff --git a/markdown/dev/reference/api/utils/curvesintersect/en.md b/markdown/dev/reference/api/utils/curvesintersect/en.md index 4a5519f5e05..d73cd721f44 100644 --- a/markdown/dev/reference/api/utils/curvesintersect/en.md +++ b/markdown/dev/reference/api/utils/curvesintersect/en.md @@ -60,4 +60,3 @@ for (let p of utils.curvesIntersect( snippets[part.getId()] = new Snippet("notch", p); } ``` - diff --git a/markdown/dev/reference/api/utils/deg2rad/en.md b/markdown/dev/reference/api/utils/deg2rad/en.md index aa137e76d6b..a3175b669bd 100644 --- a/markdown/dev/reference/api/utils/deg2rad/en.md +++ b/markdown/dev/reference/api/utils/deg2rad/en.md @@ -10,4 +10,3 @@ Returns the degrees you pass to it as radians. This is useful for when you use methods like `Math.cos()` that expects a corner in radians, when we typically use degrees. - diff --git a/markdown/dev/reference/api/utils/lineintersectscircle/en.md b/markdown/dev/reference/api/utils/lineintersectscircle/en.md index f349ba976aa..903833ff50e 100644 --- a/markdown/dev/reference/api/utils/lineintersectscircle/en.md +++ b/markdown/dev/reference/api/utils/lineintersectscircle/en.md @@ -20,8 +20,8 @@ When this returns 2 intersections, you can choose how they are ordered in the re Set sort to: - - `x` : The point with the lowest X-coordinate will go first (left to right) - - `y` : The point with the lowest Y-coordinate will go first (top to bottom) +- `x` : The point with the lowest X-coordinate will go first (left to right) +- `y` : The point with the lowest Y-coordinate will go first (top to bottom) A Utils.lineIntersectsCircle() example @@ -78,4 +78,3 @@ snippets.second2 = new Snippet("notch", intersections2[1]); snippets.first3 = new Snippet("bnotch", intersections3[0]); snippets.second3 = new Snippet("notch", intersections3[1]); ``` - diff --git a/markdown/dev/reference/api/utils/lineintersectscurve/en.md b/markdown/dev/reference/api/utils/lineintersectscurve/en.md index d53fa94dc3e..8c9784bf67e 100644 --- a/markdown/dev/reference/api/utils/lineintersectscurve/en.md +++ b/markdown/dev/reference/api/utils/lineintersectscurve/en.md @@ -14,7 +14,7 @@ array | false utils.lineIntersectsCurve( ``` Finds the intersection between a line segment from point `from` to point `to` -and a curve described by points `start`, `cp1`, `cp2, and `end`. +and a curve described by points `start`, `cp1`, `cp2, and `end\`. A Utils.lineIntersectsCurve() example @@ -53,4 +53,3 @@ for (let p of utils.lineIntersectsCurve( snippets[part.getId()] = new Snippet("notch", p); } ``` - diff --git a/markdown/dev/reference/api/utils/linesintersect/en.md b/markdown/dev/reference/api/utils/linesintersect/en.md index a97fe0743c6..23d69a03b5d 100644 --- a/markdown/dev/reference/api/utils/linesintersect/en.md +++ b/markdown/dev/reference/api/utils/linesintersect/en.md @@ -42,5 +42,3 @@ snippets.X = new Snippet( utils.linesIntersect(points.A, points.B, points.C, points.D) ); ``` - - diff --git a/markdown/dev/reference/api/utils/pointonbeam/en.md b/markdown/dev/reference/api/utils/pointonbeam/en.md index 14d8899c217..fc875f13c8f 100644 --- a/markdown/dev/reference/api/utils/pointonbeam/en.md +++ b/markdown/dev/reference/api/utils/pointonbeam/en.md @@ -18,8 +18,8 @@ The fourth parameter controls the precision. Lower numbers make the check less p ###### Tweak precision only when needed -Typically, you don't need to worry about precision. But occasionally, you may get -unexpected results because of floating point errors, rounding errors, or +Typically, you don't need to worry about precision. But occasionally, you may get +unexpected results because of floating point errors, rounding errors, or cubic bezier juggling. When that happens, you can lower the precision so you get what you expect. @@ -81,4 +81,3 @@ paths.lne2 = new Path() .line(points.b2) .attr("class", "fabric dashed"); ``` - diff --git a/markdown/dev/reference/api/utils/pointoncurve/en.md b/markdown/dev/reference/api/utils/pointoncurve/en.md index 953a3fd2e76..d025b4b7971 100644 --- a/markdown/dev/reference/api/utils/pointoncurve/en.md +++ b/markdown/dev/reference/api/utils/pointoncurve/en.md @@ -66,4 +66,3 @@ paths.curve = new Path() .curve(points.cp1, points.cp2, points.end) .attr("class", "fabric stroke-lg"); ``` - diff --git a/markdown/dev/reference/api/utils/rad2deg/en.md b/markdown/dev/reference/api/utils/rad2deg/en.md index 835de2a3100..1f2c3798f1c 100644 --- a/markdown/dev/reference/api/utils/rad2deg/en.md +++ b/markdown/dev/reference/api/utils/rad2deg/en.md @@ -7,4 +7,3 @@ float rad2deg(float radians) ``` Returns the radians you pass to it as degrees. - diff --git a/markdown/dev/reference/api/utils/round/en.md b/markdown/dev/reference/api/utils/round/en.md index f34029cfcaa..d4664362cf8 100644 --- a/markdown/dev/reference/api/utils/round/en.md +++ b/markdown/dev/reference/api/utils/round/en.md @@ -8,6 +8,5 @@ float utils.round(float value) Rounds a value to two decimals. For example: - - 0.1234 becomes 0.12 - - 5.6789 becomes 5.68 - +- 0.1234 becomes 0.12 +- 5.6789 becomes 5.68 diff --git a/markdown/dev/reference/api/utils/units/en.md b/markdown/dev/reference/api/utils/units/en.md index f5f8112054e..99b0c03d834 100644 --- a/markdown/dev/reference/api/utils/units/en.md +++ b/markdown/dev/reference/api/utils/units/en.md @@ -16,5 +16,3 @@ The [Part.shorthand](/reference/api/part/shorthand/) call provides a context-awa `unit()` method that will call this method and pass it the units requested by the user. - - diff --git a/markdown/dev/reference/en.md b/markdown/dev/reference/en.md index b102d482519..459117e19f1 100644 --- a/markdown/dev/reference/en.md +++ b/markdown/dev/reference/en.md @@ -3,8 +3,7 @@ title: Reference order: zdd --- -You can find a list of all FreeSewing reference documentation below: - +You can find a list of all FreeSewing reference documentation below: @@ -17,4 +16,3 @@ Reference materials hold technical descriptions of the underlying technology and For more details, refer to [How we structure our documentation](/guides/docs). - diff --git a/markdown/dev/reference/measurements/en.md b/markdown/dev/reference/measurements/en.md index b3433f0243a..1ed924167cf 100644 --- a/markdown/dev/reference/measurements/en.md +++ b/markdown/dev/reference/measurements/en.md @@ -5,61 +5,61 @@ title: Measurements Below is the complete list of measurements currently used by the designs we maintain: -- `ankle` -- `biceps` -- `bustFront` -- `bustPointToUnderbust` -- `bustSpan` -- `chest` -- `crossSeam` -- `crossSeamFront` -- `crotchDepth` -- `head` -- `heel` -- `highBust` -- `highBustFront` -- `hips` -- `hpsToBust` -- `hpsToWaistBack` -- `hpsToWaistFront` -- `inseam` -- `knee` -- `neck` -- `seat` -- `seatBack` -- `shoulderSlope` -- `shoulderToElbow` -- `shoulderToShoulder` -- `shoulderToWrist` -- `underbust` -- `upperLeg` -- `waist` -- `waistBack` -- `waistToFloor` -- `waistToHips` -- `waistToKnee` -- `waistToSeat` -- `waistToUnderbust` -- `waistToUpperLeg` -- `wrist` +- `ankle` +- `biceps` +- `bustFront` +- `bustPointToUnderbust` +- `bustSpan` +- `chest` +- `crossSeam` +- `crossSeamFront` +- `crotchDepth` +- `head` +- `heel` +- `highBust` +- `highBustFront` +- `hips` +- `hpsToBust` +- `hpsToWaistBack` +- `hpsToWaistFront` +- `inseam` +- `knee` +- `neck` +- `seat` +- `seatBack` +- `shoulderSlope` +- `shoulderToElbow` +- `shoulderToShoulder` +- `shoulderToWrist` +- `underbust` +- `upperLeg` +- `waist` +- `waistBack` +- `waistToFloor` +- `waistToHips` +- `waistToKnee` +- `waistToSeat` +- `waistToUnderbust` +- `waistToUpperLeg` +- `wrist` In addition, the [@freesewing/plugin-measurements](/reference/plugins/measurements) plugin will add the following measurements when the measurements they are derived from are provided: -- `seatFront` (if both `seat` and `seatBack` are provided) -- `seatBackArc` (if both `seat` and `seatBack` are provided) -- `seatFrontArc` (if both `seat` and `seatBack` are provided) -- `waistFront` (if both `waist` and `waistBack` are provided) -- `waistBackArc` (if both `waist` and `waistBack` are provided) -- `waistFrontArc` (if both `waist` and `waistBack` are provided) -- `crossSeamBack` (if both `crossSeam` and `crossSeamFront` are available) +- `seatFront` (if both `seat` and `seatBack` are provided) +- `seatBackArc` (if both `seat` and `seatBack` are provided) +- `seatFrontArc` (if both `seat` and `seatBack` are provided) +- `waistFront` (if both `waist` and `waistBack` are provided) +- `waistBackArc` (if both `waist` and `waistBack` are provided) +- `waistFrontArc` (if both `waist` and `waistBack` are provided) +- `crossSeamBack` (if both `crossSeam` and `crossSeamFront` are available) ##### How to take measurements is documented on FreeSewing.org -For instructions on how to take measurements, please refer to our +For instructions on how to take measurements, please refer to our maker documentation on FreeSewing.org: https://freesewing.org/docs/measurements/ diff --git a/markdown/dev/reference/plugins/banner/en.md b/markdown/dev/reference/plugins/banner/en.md index 9bf273668c2..ef6d1b65bf7 100644 --- a/markdown/dev/reference/plugins/banner/en.md +++ b/markdown/dev/reference/plugins/banner/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-banner" --- -The **@freesewing/plugin-banner** plugin provides +The **@freesewing/plugin-banner** plugin provides [the banner macro](/reference/api/macros/banner). This macro allows you to add repeating text along a path. @@ -29,7 +29,5 @@ import config from "../config"; const Pattern = new freesewing.Design(config, banner); ``` -Now you can use the +Now you can use the [banner](/reference/api/macros/banner/) macros in your parts. - - diff --git a/markdown/dev/reference/plugins/bartack/en.md b/markdown/dev/reference/plugins/bartack/en.md index b6d7990b729..94da11bca86 100644 --- a/markdown/dev/reference/plugins/bartack/en.md +++ b/markdown/dev/reference/plugins/bartack/en.md @@ -2,9 +2,9 @@ title: "@freesewing/plugin-bartack" --- -The **@freesewing/plugin-bartack** plugin provides +The **@freesewing/plugin-bartack** plugin provides [the bartack macro](/reference/api/macros/bartack). -This macro allows you to add bartacks — a set of +This macro allows you to add bartacks — a set of tight zig-zag stitches used to enforce a seam — to your design. ## Example @@ -30,9 +30,7 @@ import config from "../config"; const Pattern = new freesewing.Design(config, bartack); ``` -Now you can use the -[bartack](/reference/api/macros/bartack/), -[bartackAlong](/reference/api/macros/bartackalong/), and +Now you can use the +[bartack](/reference/api/macros/bartack/), +[bartackAlong](/reference/api/macros/bartackalong/), and [bartackFractionAlong](/reference/api/macros/bartackfractionalong/) macros in your parts. - - diff --git a/markdown/dev/reference/plugins/bundle/en.md b/markdown/dev/reference/plugins/bundle/en.md index 4853b073170..eb6f311f37c 100644 --- a/markdown/dev/reference/plugins/bundle/en.md +++ b/markdown/dev/reference/plugins/bundle/en.md @@ -4,14 +4,14 @@ title: "@freesewing/plugin-bundle" The **@freesewing/plugin-bundle** plugin bundles the most common FreeSewing build-time plugins: -- [plugin-cutonfold](/reference/plugins/cutonfold) : Add cut-on-fold indicators to your patterns -- [plugin-dimension](/reference/plugins/dimension) : Add dimensions to your (paperless) patterns -- [plugin-grainline](/reference/plugins/grainline) : Add grainline indicators to your patterns -- [plugin-logo](/reference/plugins/logo) : Add a scalebox to your patterns -- [plugin-scalebox](/reference/plugins/scalebox) : Add pretty titles to your pattern parts -- [plugin-title](/reference/plugins/title) : Add pretty titles to your pattern parts -- [plugin-round](/reference/plugins/round) : Rounds corners -- [plugin-sprinkle](/reference/plugins/sprinkle) : Add multiple snippets to your pattern +- [plugin-cutonfold](/reference/plugins/cutonfold) : Add cut-on-fold indicators to your patterns +- [plugin-dimension](/reference/plugins/dimension) : Add dimensions to your (paperless) patterns +- [plugin-grainline](/reference/plugins/grainline) : Add grainline indicators to your patterns +- [plugin-logo](/reference/plugins/logo) : Add a scalebox to your patterns +- [plugin-scalebox](/reference/plugins/scalebox) : Add pretty titles to your pattern parts +- [plugin-title](/reference/plugins/title) : Add pretty titles to your pattern parts +- [plugin-round](/reference/plugins/round) : Rounds corners +- [plugin-sprinkle](/reference/plugins/sprinkle) : Add multiple snippets to your pattern Almost all patterns use these plugins, so it made sense to bundle them. @@ -33,4 +33,3 @@ import config from "../config"; const Pattern = new freesewing.Design(config, plugins); ``` - diff --git a/markdown/dev/reference/plugins/bust/en.md b/markdown/dev/reference/plugins/bust/en.md index 03920ea76db..e198e488cac 100644 --- a/markdown/dev/reference/plugins/bust/en.md +++ b/markdown/dev/reference/plugins/bust/en.md @@ -20,8 +20,8 @@ This is the same technique that's used in a full-bust adjustment to fit a womens This plugin helps you by: - - Storing the chest circumference in `measurements.bust` - - Changing `measurments.chestCircumference` to the value of `measurements.highBust` +- Storing the chest circumference in `measurements.bust` +- Changing `measurments.chestCircumference` to the value of `measurements.highBust` @@ -33,7 +33,7 @@ In this case, the plugin will always be loaded since the pattern assumes breasts This way you can extend a menswear pattern and have it drafted with the high bust measurement as chest measurment, after which you can create room for the breasts. -You can see this in practice in our [Carlita][1] pattern, +You can see this in practice in our [Carlita][1] pattern, which extends the menswear [Carlton][2] pattern. @@ -47,8 +47,8 @@ To learn more about extending a pattern, see [Design inheritance](/howtos/code/i To create a truly gender-neutral pattern — one that will adapt to breasts only if they are present — you can use this plugin, but you'll also need a few other things: -- You'll need to mark the breast measurements as [optional measurements](/reference/api/config/optionalmeasurements) -- You'll need to [conditionally load this plugin](/guides/plugins/conditionally-loading-build-time-plugins) +- You'll need to mark the breast measurements as [optional measurements](/reference/api/config/optionalmeasurements) +- You'll need to [conditionally load this plugin](/guides/plugins/conditionally-loading-build-time-plugins) You can see an example of this in [our Teagan design][3]. @@ -77,7 +77,8 @@ import config from "../config"; const Pattern = new freesewing.Design(config, bust); ``` - [1]: https://github.com/freesewing/freesewing/blob/develop/packages/carlita/src/index.js#L12 + [2]: https://github.com/freesewing/freesewing/blob/develop/packages/carlton + [3]: https://github.com/freesewing/freesewing/blob/develop/packages/teagan/src/index.js diff --git a/markdown/dev/reference/plugins/buttons/en.md b/markdown/dev/reference/plugins/buttons/en.md index f3f8df1e2c3..15b07319b53 100644 --- a/markdown/dev/reference/plugins/buttons/en.md +++ b/markdown/dev/reference/plugins/buttons/en.md @@ -4,12 +4,12 @@ title: "@freesewing/plugin-buttons" The **@freesewing/plugin-buttons** plugin provides the following [snippets](/reference/api/snippets): - - [button](/reference/api/snippets/button) - - [buttonhole](/reference/api/snippets/buttonhole) - - [buttonhole-start](/reference/api/snippets/buttonhole-start) - - [buttonhole-end](/reference/api/snippets/buttonhole-end) - - [snap-stud](/reference/api/snippets/snap-stud) - - [snap-socket](/reference/api/snippets/snap-socket) +- [button](/reference/api/snippets/button) +- [buttonhole](/reference/api/snippets/buttonhole) +- [buttonhole-start](/reference/api/snippets/buttonhole-start) +- [buttonhole-end](/reference/api/snippets/buttonhole-end) +- [snap-stud](/reference/api/snippets/snap-stud) +- [snap-socket](/reference/api/snippets/snap-socket) An example of the button, buttonhole, buttonhole-start, buttonhole-end, snap-stud, and snap-socket snippets @@ -41,11 +41,10 @@ const Pattern = new freesewing.Design(config, buttons); ``` Now you can use the -[button](/reference/api/snippets/button), -[buttonhole](/reference/api/snippets/buttonhole), -[buttonhole-start](/reference/api/snippets/buttonhole-start), -[buttonhole-end](/reference/api/snippets/buttonhole-end), -[snap-stud](/reference/api/snippets/snap-stud), and +[button](/reference/api/snippets/button), +[buttonhole](/reference/api/snippets/buttonhole), +[buttonhole-start](/reference/api/snippets/buttonhole-start), +[buttonhole-end](/reference/api/snippets/buttonhole-end), +[snap-stud](/reference/api/snippets/snap-stud), and [snap-socket](/reference/api/snippets/snap-socket) snippets in your designs. - diff --git a/markdown/dev/reference/plugins/cutonfold/en.md b/markdown/dev/reference/plugins/cutonfold/en.md index 48fc528f7a6..7d912373bce 100644 --- a/markdown/dev/reference/plugins/cutonfold/en.md +++ b/markdown/dev/reference/plugins/cutonfold/en.md @@ -2,8 +2,8 @@ title: "@freesewing/plugin-cutonfold" --- -The **@freesewing/plugin-cutonfold** plugin provides -[the cutonfold macro](/reference/api/macros/cutonfold) which adds a cut-on-fold +The **@freesewing/plugin-cutonfold** plugin provides +[the cutonfold macro](/reference/api/macros/cutonfold) which adds a cut-on-fold indicator to your design. diff --git a/markdown/dev/reference/plugins/dimension/en.md b/markdown/dev/reference/plugins/dimension/en.md index cf168d6159a..4c95286a10f 100644 --- a/markdown/dev/reference/plugins/dimension/en.md +++ b/markdown/dev/reference/plugins/dimension/en.md @@ -3,18 +3,18 @@ title: "@freesewing/plugin-dimension" --- The **@freesewing/plugin-dimension** plugin provides a variety of macros -to facilitate adding *dimensions* to your design. By *dimensions* we mean -the indicators for distance that are added to patterns +to facilitate adding *dimensions* to your design. By *dimensions* we mean +the indicators for distance that are added to patterns in [paperless mode](/reference/api/settings/paperless). The following macors are provided by this plugin: - - [hd](/reference/api/macros/hd) : Adds a horizontal dimension - - [vd](/reference/api/macros/vd) : Adds a vertical dimension - - [ld](/reference/api/macros/ld) : Adds a linear dimension - - [pd](/reference/api/macros/pd) : Adds a dimension along a path - - [rmd](/reference/api/macros/rmd) : Removes a dimension - - [rmad](/reference/api/macros/rmad) : Removes all dimensions with a default prefix +- [hd](/reference/api/macros/hd) : Adds a horizontal dimension +- [vd](/reference/api/macros/vd) : Adds a vertical dimension +- [ld](/reference/api/macros/ld) : Adds a linear dimension +- [pd](/reference/api/macros/pd) : Adds a dimension along a path +- [rmd](/reference/api/macros/rmd) : Removes a dimension +- [rmad](/reference/api/macros/rmad) : Removes all dimensions with a default prefix @@ -47,12 +47,11 @@ import config from "../config"; const Pattern = new freesewing.Design(config, dimension); ``` -Now you can use the -[hd](/reference/api/macros/hd/), -[vd](/reference/api/macros/vd/), -[ld](/reference/api/macros/ld/), -[pd](/reference/api/macros/pd/), +Now you can use the +[hd](/reference/api/macros/hd/), +[vd](/reference/api/macros/vd/), +[ld](/reference/api/macros/ld/), +[pd](/reference/api/macros/pd/), [rmd](/reference/api/macros/rmd/), and -[rmad](/reference/api/macros/rmad/) +[rmad](/reference/api/macros/rmad/) macros in your parts. - diff --git a/markdown/dev/reference/plugins/en.md b/markdown/dev/reference/plugins/en.md index 98f74e0ec5b..318d8d7d345 100644 --- a/markdown/dev/reference/plugins/en.md +++ b/markdown/dev/reference/plugins/en.md @@ -9,5 +9,3 @@ Refer to [the plugin guide](/guides/plugins) for an in-depth look into plugins. We maintain the following plugins for @freesewing/core: - - diff --git a/markdown/dev/reference/plugins/export-dxf/en.md b/markdown/dev/reference/plugins/export-dxf/en.md index fd1ff8be614..8d09b4189e2 100644 --- a/markdown/dev/reference/plugins/export-dxf/en.md +++ b/markdown/dev/reference/plugins/export-dxf/en.md @@ -3,7 +3,7 @@ title: "@freesewing/plugin-export-dxf" --- The **@freesewing/plugin-export-dxf** plugin exports your pattern -to [the DXF file format](https://en.wikipedia.org/wiki/AutoCAD_DXF). +to [the DXF file format](https://en.wikipedia.org/wiki/AutoCAD_DXF). It will attach the [the postDraft lifecycle hook](/reference/api/hooks/postdraft) to add a `renderDxf()` method to the pattern object. @@ -13,7 +13,7 @@ to the pattern object. ##### This is de-facto unmaintained This plugin is de-facto unmaintained because I have no use for it. -I keep it around in case it might be useful, and I've used it +I keep it around in case it might be useful, and I've used it myself for exporting to different software. The being said, DXF is a poor choice as a file format for storing sewing patterns. @@ -30,7 +30,7 @@ npm install @freesewing/plugin-export-dxf ## Usage Like all [run-time plugins](/guides/plugins/types-of-plugins#run-time-plugins), you -load them by by passing them to the `use()` method of an instatiated pattern. +load them by by passing them to the `use()` method of an instatiated pattern. That method is chainable, so if you have multiple plugins you can just chain them together. @@ -41,5 +41,5 @@ import theme from "@freesewing/plugin-theme"; const pattern = new Aaron().use(theme); ``` -After calling `pattern.draft()` you will be able to call `pattern.renderDxf()` +After calling `pattern.draft()` you will be able to call `pattern.renderDxf()` which will return the Dxf output. diff --git a/markdown/dev/reference/plugins/flip/en.md b/markdown/dev/reference/plugins/flip/en.md index 3a665511af6..0fb5658d5b3 100644 --- a/markdown/dev/reference/plugins/flip/en.md +++ b/markdown/dev/reference/plugins/flip/en.md @@ -2,10 +2,10 @@ title: "@freesewing/plugin-flip" --- -The **@freesewing/plugin-flip** plugin provides [the flip -macro](/reference/apis/macros/flip/) which flips (mirrors) +The **@freesewing/plugin-flip** plugin provides [the flip +macro](/reference/apis/macros/flip/) which flips (mirrors) an entire part vertically around the Y-axis. -It's typically used to create a right and left pattern part from +It's typically used to create a right and left pattern part from the same basis. ## Installation diff --git a/markdown/dev/reference/plugins/gore/en.md b/markdown/dev/reference/plugins/gore/en.md index 93c654cff6e..7a35f8cd8d0 100644 --- a/markdown/dev/reference/plugins/gore/en.md +++ b/markdown/dev/reference/plugins/gore/en.md @@ -2,14 +2,14 @@ title: "@freesewing/plugin-gore" --- -The **@freesewing/plugin-gore** plugin provides +The **@freesewing/plugin-gore** plugin provides [the gore macro](/reference/api/macros/gore). -This macro allows you to generate [gore -segments](https://en.wikipedia.org/wiki/Gore_(segment)) — -2D panels to create a sphehrical shape as used in hats for example — +This macro allows you to generate [gore +segments](https://en.wikipedia.org/wiki/Gore_\(segment\)) — +2D panels to create a sphehrical shape as used in hats for example — to your design. -You'll be happy to hear that this plugin handles all the +You'll be happy to hear that this plugin handles all the mathematics for you to create a (part-)sphere in your patterns. ## Installation @@ -32,4 +32,3 @@ const Pattern = new freesewing.Design(config, gore); ``` Now you can use the [gore](/reference/api/macros/gore) macro in your parts. - diff --git a/markdown/dev/reference/plugins/grainline/en.md b/markdown/dev/reference/plugins/grainline/en.md index 58cba3336c5..f4a6ed519dd 100644 --- a/markdown/dev/reference/plugins/grainline/en.md +++ b/markdown/dev/reference/plugins/grainline/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-grainline" --- -The **@freesewing/plugin-grainline** plugin provides [the grainline +The **@freesewing/plugin-grainline** plugin provides [the grainline macro](/reference/macros/grainline/) which adds a *grainline* indicator to your design. diff --git a/markdown/dev/reference/plugins/i18n/en.md b/markdown/dev/reference/plugins/i18n/en.md index 91e33950119..1280c74c46d 100644 --- a/markdown/dev/reference/plugins/i18n/en.md +++ b/markdown/dev/reference/plugins/i18n/en.md @@ -3,7 +3,7 @@ title: "@freesewing/plugin-i18n" --- The **@freesewing/plugin-i18n** plugin provides a mechanism to translate your designs. -It does that by attaching to [the insertText lifecycle hook](/reference/api/hooks/inserttext) to +It does that by attaching to [the insertText lifecycle hook](/reference/api/hooks/inserttext) to intercept all operations that add text to a design and attempt to translate the text prior to insertion. @@ -22,7 +22,7 @@ npm install @freesewing/plugin-i18n ## Usage -Like all [build-time plugins](/guides/plugins/#build-time-plugins), you load them +Like all [build-time plugins](/guides/plugins/#build-time-plugins), you load them by passing them to the [`freesewing.Design`](/reference/api#design) constructor: ```js @@ -50,5 +50,3 @@ It should be structured as such: } } ``` - - diff --git a/markdown/dev/reference/plugins/logo/en.md b/markdown/dev/reference/plugins/logo/en.md index 9c4921b8a68..8cbe03cee0a 100644 --- a/markdown/dev/reference/plugins/logo/en.md +++ b/markdown/dev/reference/plugins/logo/en.md @@ -35,4 +35,3 @@ const Pattern = new freesewing.Design(config, logo); ``` You can now use the [logo](/reference/api/snippets/logo) snippet in your parts. - diff --git a/markdown/dev/reference/plugins/measurements/en.md b/markdown/dev/reference/plugins/measurements/en.md index 26da43e6d4e..638e5ccfdae 100644 --- a/markdown/dev/reference/plugins/measurements/en.md +++ b/markdown/dev/reference/plugins/measurements/en.md @@ -9,13 +9,13 @@ they can be deduced from the measurements that are provided. It will add the following measurements: - - `seatFront` (if both `seat` and `seatBack` are provided) - - `seatBackArc` (if both `seat` and `seatBack` are provided) - - `seatFrontArc` (if both `seat` and `seatBack` are provided) - - `waistFront` (if both `waist` and `waistBack` are provided) - - `waistBackArc` (if both `waist` and `waistBack` are provided) - - `waistFrontArc` (if both `waist` and `waistBack` are provided) - - `crossSeamBack` (if both `crossSeam` and `crossSeamFront` are available) +- `seatFront` (if both `seat` and `seatBack` are provided) +- `seatBackArc` (if both `seat` and `seatBack` are provided) +- `seatFrontArc` (if both `seat` and `seatBack` are provided) +- `waistFront` (if both `waist` and `waistBack` are provided) +- `waistBackArc` (if both `waist` and `waistBack` are provided) +- `waistFrontArc` (if both `waist` and `waistBack` are provided) +- `crossSeamBack` (if both `crossSeam` and `crossSeamFront` are available) ## Installation @@ -35,4 +35,3 @@ import config from "../config"; const Pattern = new freesewing.Design(config, measurements); ``` - diff --git a/markdown/dev/reference/plugins/mirror/en.md b/markdown/dev/reference/plugins/mirror/en.md index 4fdac240cf2..5f0793a1d79 100644 --- a/markdown/dev/reference/plugins/mirror/en.md +++ b/markdown/dev/reference/plugins/mirror/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-mirror" --- -The **@freesewing/plugin-mirror** plugin provides [the mirror +The **@freesewing/plugin-mirror** plugin provides [the mirror macro](/reference/api/macros/mirror) which facilitates mirroring a number of points and/or paths around a given mirror line. @@ -28,5 +28,3 @@ const Pattern = new freesewing.Design(config, mirror); ``` You can now use the [mirror](/reference/api/macros/mirror) macro in your parts. - - diff --git a/markdown/dev/reference/plugins/notches/en.md b/markdown/dev/reference/plugins/notches/en.md index c96fc083b83..ad0f3497250 100644 --- a/markdown/dev/reference/plugins/notches/en.md +++ b/markdown/dev/reference/plugins/notches/en.md @@ -4,8 +4,8 @@ title: "@freesewing/plugin-notches" The **@freesewing/plugin-notces** plugin provides the following [snippets](/reference/api/snippets): - - [notch](/reference/api/snippets/notch) - - [bnotch](/reference/api/snippets/bnotch) +- [notch](/reference/api/snippets/notch) +- [bnotch](/reference/api/snippets/bnotch) An example of the button, buttonhole, buttonhole-start, buttonhole-end, snap-stud, and snap-socket snippets @@ -37,7 +37,6 @@ const Pattern = new freesewing.Design(config, notches); ``` Now you can use the -[notch](/reference/api/snippets/notch) and +[notch](/reference/api/snippets/notch) and\ [bnotch](/reference/api/snippets/buttonhole) snippets in your designs. - diff --git a/markdown/dev/reference/plugins/round/en.md b/markdown/dev/reference/plugins/round/en.md index 25a846cbd68..d0e744364ee 100644 --- a/markdown/dev/reference/plugins/round/en.md +++ b/markdown/dev/reference/plugins/round/en.md @@ -2,13 +2,13 @@ title: "@freesewing/plugin-round" --- -The **@freesewing/plugin-round** plugin provides [the -round macro](/reference/api/macros/round) which helps you round -corners on your designs. +The **@freesewing/plugin-round** plugin provides [the +round macro](/reference/api/macros/round) which helps you round +corners on your designs. -##### Straight corners only +##### Straight corners only The round macro is intended for rounding 90° angles. It does not support rounding other angles/corners. @@ -43,5 +43,3 @@ const Pattern = new freesewing.Design(config, round); ``` Now you can use [the round macro](/reference/macros/round/): in your parts. - - diff --git a/markdown/dev/reference/plugins/scalebox/en.md b/markdown/dev/reference/plugins/scalebox/en.md index f72f8126bc5..300edc8b6cc 100644 --- a/markdown/dev/reference/plugins/scalebox/en.md +++ b/markdown/dev/reference/plugins/scalebox/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-scalebox" --- -The **@freesewing/plugin-scalebox** plugin provides [the +The **@freesewing/plugin-scalebox** plugin provides [the scalebox macro](/reference/api/macros/scalebox/) with facilitates adding a scalebox to your design, so users can verify that the pattern is printed at the correct scale. diff --git a/markdown/dev/reference/plugins/sprinkle/en.md b/markdown/dev/reference/plugins/sprinkle/en.md index 00115c062c5..e60649d2a42 100644 --- a/markdown/dev/reference/plugins/sprinkle/en.md +++ b/markdown/dev/reference/plugins/sprinkle/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-sprinkle" --- -The **@freesewing/plugin-sprinkle** plugin provides [the +The **@freesewing/plugin-sprinkle** plugin provides [the sprinkle macro](/reference/api/macros/sprinkle/) which is a faster way to add several of the same snippets to your designs (think of it as *sprinkling* them onto your parts). diff --git a/markdown/dev/reference/plugins/svgattr/en.md b/markdown/dev/reference/plugins/svgattr/en.md index ead435dde4d..2a09abc592e 100644 --- a/markdown/dev/reference/plugins/svgattr/en.md +++ b/markdown/dev/reference/plugins/svgattr/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-svgattr" --- -The **@freesewing/plugin-svgattr** plugin takes an object of key-value +The **@freesewing/plugin-svgattr** plugin takes an object of key-value pairs and adds them ass attributes to your SVG document on render. It leverages [the preRender lifecycle hook](/reference/api/hooks/prerender) to do so. @@ -27,5 +27,3 @@ const myAaron = new Aaron() ``` You should pass a second argument which holds key-value pairs of the attributes you want to add to the SVG tag. - - diff --git a/markdown/dev/reference/plugins/theme/en.md b/markdown/dev/reference/plugins/theme/en.md index 1c20a1b6713..e3879e84292 100644 --- a/markdown/dev/reference/plugins/theme/en.md +++ b/markdown/dev/reference/plugins/theme/en.md @@ -6,7 +6,6 @@ The **@freesewing-plugin-theme** plugin provides CSS styling for SVG output. It leverages [the preRender lifecycle hook](/reference/api/hooks/prerender) to accomplish this. - ##### Only applies to SVG/PS/PDF output @@ -27,7 +26,7 @@ npm install @freesewing/plugin-theme ## Usage Like all [run-time plugins](/guides/plugins/types-of-plugins#run-time-plugins), you -load them by by passing them to the `use()` method of an instatiated pattern. +load them by by passing them to the `use()` method of an instatiated pattern. That method is chainable, so if you have multiple plugins you can just chain them together. @@ -37,4 +36,3 @@ import theme from "@freesewing/plugin-theme"; const pattern = new Aaron().use(theme); ``` - diff --git a/markdown/dev/reference/plugins/title/en.md b/markdown/dev/reference/plugins/title/en.md index 64bf5624352..a6ea84c5c96 100644 --- a/markdown/dev/reference/plugins/title/en.md +++ b/markdown/dev/reference/plugins/title/en.md @@ -2,7 +2,7 @@ title: "@freesewing/plugin-title" --- -The **@freesewing/plugin-title** plugin provides [the +The **@freesewing/plugin-title** plugin provides [the title macro](/reference/api/macros/title/) which facilitates adding part titles to your desings. @@ -34,4 +34,3 @@ const Pattern = new freesewing.Design(config, title); ``` Now you can use the [title](/reference/api/macros/title/) macro in your parts. - diff --git a/markdown/dev/reference/plugins/versionfree-svg/en.md b/markdown/dev/reference/plugins/versionfree-svg/en.md index 340fe841815..10dcc05defc 100644 --- a/markdown/dev/reference/plugins/versionfree-svg/en.md +++ b/markdown/dev/reference/plugins/versionfree-svg/en.md @@ -16,7 +16,7 @@ npm install @freesewing/plugin-bartack ## Usage Like all [run-time plugins](/guides/plugins/types-of-plugins#run-time-plugins), you -load them by by passing them to the `use()` method of an instatiated pattern. +load them by by passing them to the `use()` method of an instatiated pattern. That method is chainable, so if you have multiple plugins you can just chain them together. @@ -26,4 +26,3 @@ import versionfreeSvg from "@freesewing/plugin-versionfree-svg"; const pattern = new Aaron().use(versionfreeSvg); ``` - diff --git a/markdown/dev/reference/terms/commit/en.md b/markdown/dev/reference/terms/commit/en.md index dfc8b00290f..d2d94ba3934 100644 --- a/markdown/dev/reference/terms/commit/en.md +++ b/markdown/dev/reference/terms/commit/en.md @@ -4,4 +4,4 @@ title: Commit A [commit](https://github.com/git-guides/git-commit) is made every time somebody publishes an update to our source code. -The word is also used as a verb as in _to commit changes_. +The word is also used as a verb as in *to commit changes*. diff --git a/markdown/dev/reference/terms/discord/en.md b/markdown/dev/reference/terms/discord/en.md index b0aa98ebf5d..4448fe2c7d8 100644 --- a/markdown/dev/reference/terms/discord/en.md +++ b/markdown/dev/reference/terms/discord/en.md @@ -4,4 +4,4 @@ title: Discord The name of our chat provider that powers our chat at https://discord.freesewing.org/ -When you hear _discord_ just think _chat_. +When you hear *discord* just think *chat*. diff --git a/markdown/dev/reference/terms/en.md b/markdown/dev/reference/terms/en.md index d00bc91d63f..313ae2ff467 100644 --- a/markdown/dev/reference/terms/en.md +++ b/markdown/dev/reference/terms/en.md @@ -7,7 +7,7 @@ for: contributors about: Terms and definitions that will help you navigate the world of FreeSewing --- -Below is a list of terms you may come across when working with FreeSewing with a +Below is a list of terms you may come across when working with FreeSewing with a link to a brief description: diff --git a/markdown/dev/reference/terms/express/en.md b/markdown/dev/reference/terms/express/en.md index 3612bf42e1b..0da1fac99ca 100644 --- a/markdown/dev/reference/terms/express/en.md +++ b/markdown/dev/reference/terms/express/en.md @@ -2,6 +2,6 @@ title: Express --- -[Express](https://expressjs.com/) is a web framework for NodeJS. +[Express](https://expressjs.com/) is a web framework for NodeJS. The FreeSewing backend is powered by Express. diff --git a/markdown/dev/reference/terms/freesewing.org/en.md b/markdown/dev/reference/terms/freesewing.org/en.md index e27d4849b72..d7ce58d3a0d 100644 --- a/markdown/dev/reference/terms/freesewing.org/en.md +++ b/markdown/dev/reference/terms/freesewing.org/en.md @@ -19,7 +19,7 @@ built with Gatsby. ## i18n -Short of _internationalisation_. within the context of FreeSewing, this mostly +Short of *internationalisation*. within the context of FreeSewing, this mostly means translation, but can also relate to other intenationalisation concerns such as the type of units to use, or paper sizes, and so on. @@ -62,7 +62,7 @@ Node (or Node JS) is a Javascript runtime that allows to use the language outsid ## Parametric pattern design -A design approach whereby sewing patterns are contructed based on parameters, +A design approach whereby sewing patterns are contructed based on parameters, and can adapt automatically when those parameters change. Those parameters almost always include body measurements, and user preferences. @@ -79,7 +79,7 @@ An extension to FreeSewing core that provides an extra feature of functionality. A pull request is a proposal to commit changes to a repository. -Pull requests can either be made because the person does not have the rights to make +Pull requests can either be made because the person does not have the rights to make changes to the repository directly. Or to discuss or validate the changes prior to accepting them. diff --git a/markdown/dev/reference/terms/gatsby/en.md b/markdown/dev/reference/terms/gatsby/en.md index ee287903079..0be00624200 100644 --- a/markdown/dev/reference/terms/gatsby/en.md +++ b/markdown/dev/reference/terms/gatsby/en.md @@ -2,6 +2,6 @@ title: Gatsby --- -[Gatsby](https://www.gatsbyjs.com/) is a static-site generator for React. +[Gatsby](https://www.gatsbyjs.com/) is a static-site generator for React. Both freesewing.org and freesewing.dev are built on top of Gatsby. diff --git a/markdown/dev/reference/terms/i18n/en.md b/markdown/dev/reference/terms/i18n/en.md index 7d805b7533c..f88e6a9b815 100644 --- a/markdown/dev/reference/terms/i18n/en.md +++ b/markdown/dev/reference/terms/i18n/en.md @@ -2,6 +2,6 @@ title: i18n --- -Short for _internationalisation_. Within the context of FreeSewing, this mostly +Short for *internationalisation*. Within the context of FreeSewing, this mostly means translation, but can also relate to other internationalisation concerns such as the type of units to use, or paper sizes, and so on. diff --git a/markdown/dev/reference/terms/issue/en.md b/markdown/dev/reference/terms/issue/en.md index a34cf8fbcd6..2bef239968e 100644 --- a/markdown/dev/reference/terms/issue/en.md +++ b/markdown/dev/reference/terms/issue/en.md @@ -6,4 +6,4 @@ An issue is a sort of support ticket. It can be a bug report, a feature request, or problem report. Issues are hosted on Github. Each repository can have its own issues, but most our -issue are handled on our monorepo: https://github.com/freesewing/freesewing/issues +issue are handled on our monorepo: https://github.com/freesewing/freesewing/issues diff --git a/markdown/dev/reference/terms/parametric-pattern-design/en.md b/markdown/dev/reference/terms/parametric-pattern-design/en.md index c0a7a1114d0..ff803177e87 100644 --- a/markdown/dev/reference/terms/parametric-pattern-design/en.md +++ b/markdown/dev/reference/terms/parametric-pattern-design/en.md @@ -2,7 +2,7 @@ title: Parametric pattern design --- -A design approach whereby sewing patterns are contructed based on parameters, +A design approach whereby sewing patterns are contructed based on parameters, and can adapt automatically when those parameters change. Those parameters almost always include body measurements, and user preferences. diff --git a/markdown/dev/reference/terms/pull-request/en.md b/markdown/dev/reference/terms/pull-request/en.md index ed6074725ef..6989508f1b9 100644 --- a/markdown/dev/reference/terms/pull-request/en.md +++ b/markdown/dev/reference/terms/pull-request/en.md @@ -4,6 +4,6 @@ title: Pull request A pull request is a proposal to commit changes to a repository. -Pull requests can either be made because the person does not have the rights to make +Pull requests can either be made because the person does not have the rights to make changes to the repository directly. Or to discuss or validate the changes prior to accepting them. diff --git a/markdown/dev/reference/terms/tiler/en.md b/markdown/dev/reference/terms/tiler/en.md index cab46f3c470..11db6655364 100644 --- a/markdown/dev/reference/terms/tiler/en.md +++ b/markdown/dev/reference/terms/tiler/en.md @@ -6,4 +6,3 @@ The FreeSewing tiler is responsible for taking a pattern and splitting it into d pages so it can be printed. The tiler is a backend service that is independent from the main FreeSewing backend. - diff --git a/markdown/dev/tutorials/en.md b/markdown/dev/tutorials/en.md index c0880c4bcae..0c2b84de34d 100644 --- a/markdown/dev/tutorials/en.md +++ b/markdown/dev/tutorials/en.md @@ -3,8 +3,7 @@ title: Tutorials order: zaa --- -You can find a list of all FreeSewing tutorials below: - +You can find a list of all FreeSewing tutorials below: @@ -17,4 +16,3 @@ Tutorials are lessons that take you by the hand through a series of steps to com For more details, refer to [How we structure our documentation](/guides/docs). - diff --git a/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md b/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md index dc4adb37f6f..17eeab66f2d 100644 --- a/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md +++ b/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md @@ -17,19 +17,17 @@ You can change all of these later. It's just to get you started. If you're not sure what to fill in, you can stick with the defaults or leave them blank. Only a few of these are mandatory. - - **Language**: Use the arrow keys to chose the language of your choice - - **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. - - **description**: A description of your pattern. It's not mandatory. - - **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick - - **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. - - **Author**: You can enter your name, or leave this blank for now - - **GitHub repository**: You can leave this blank for now - - **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. - +- **Language**: Use the arrow keys to chose the language of your choice +- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. +- **description**: A description of your pattern. It's not mandatory. +- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick +- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. +- **Author**: You can enter your name, or leave this blank for now +- **GitHub repository**: You can leave this blank for now +- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. When you've answered all questions, the command will download the development enviroment, and set it up based on the choices you made. This step will take anywhere from a few to about 10 minutes to complete. But when it's done, you will have a new folder with the development environent inside. - diff --git a/markdown/dev/tutorials/getting-started-linux/en.md b/markdown/dev/tutorials/getting-started-linux/en.md index 8da3d560daa..c63451861b6 100644 --- a/markdown/dev/tutorials/getting-started-linux/en.md +++ b/markdown/dev/tutorials/getting-started-linux/en.md @@ -15,7 +15,7 @@ goals: - Starting the FreeSewing development environment --- -In this tutorial, we will setup Node JS and initialize the FreeSewing +In this tutorial, we will setup Node JS and initialize the FreeSewing development environment on a Linux system. We'll cover the following steps: @@ -23,4 +23,3 @@ We'll cover the following steps: These instructions are also valid for BSD- or other unix systems - diff --git a/markdown/dev/tutorials/getting-started-linux/installing-node/en.md b/markdown/dev/tutorials/getting-started-linux/installing-node/en.md index 7bfb1c15809..ce534734aac 100644 --- a/markdown/dev/tutorials/getting-started-linux/installing-node/en.md +++ b/markdown/dev/tutorials/getting-started-linux/installing-node/en.md @@ -12,4 +12,3 @@ nvm install lts/* This will install the most recent so-called LTS version on your system. LTS versions -- short for Long Term Support -- are good node versions to use because they are stable and supported for a long time. - diff --git a/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md b/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md index 9711fb6f507..e200c81681b 100644 --- a/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md +++ b/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md @@ -5,14 +5,14 @@ order: 10 FreeSewing is built with [Node.js](https://nodejs.org/), a JavaScript runtime. -You'll need to install Node JS on your system, and to do so, we'll -use [nvm](https://github.com/nvm-sh/nvm), short for _Node version manager_. +You'll need to install Node JS on your system, and to do so, we'll +use [nvm](https://github.com/nvm-sh/nvm), short for *Node version manager*. Using nvm has a number of benefits in comparison with installing Node from the node.js website, or from a package provided by your linux distribution: - - You can easily switch between different Node versions - - Everything gets installed in your home folder, avoiding permission problems +- You can easily switch between different Node versions +- Everything gets installed in your home folder, avoiding permission problems To setup nvm, run the following command in a terminal: @@ -32,7 +32,7 @@ After the script is completed, try running the following command: nvm ``` -If all goes well, it should show you the nvm help. +If all goes well, it should show you the nvm help. diff --git a/markdown/dev/tutorials/getting-started-linux/node-versions/en.md b/markdown/dev/tutorials/getting-started-linux/node-versions/en.md index dd5d4ab5c05..e1c4285d67d 100644 --- a/markdown/dev/tutorials/getting-started-linux/node-versions/en.md +++ b/markdown/dev/tutorials/getting-started-linux/node-versions/en.md @@ -17,8 +17,8 @@ To see the different Node versions on your system, run this command: nvm ls ``` -It will show you a list of local node versions. -Either the version number, or an _alias_ that points to a specific version. +It will show you a list of local node versions. +Either the version number, or an *alias* that points to a specific version. You should see the `lts/*` alias in the list which is what we've just installed. ### nvm ls-remote @@ -52,4 +52,3 @@ nvm use v10.22.1 If you picked a version that is not installed, `nvm` will simply tell you and even suggest the command you should type to install it. Handy! - diff --git a/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md b/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md index e209df599bd..8a180606414 100644 --- a/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md +++ b/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md @@ -8,9 +8,9 @@ If you chose `test`, you will have a `test` folder. If you chose `banana`, you'l If you enter that folder, you'll find a couple of subfolders: - - `config` holds your pattern's configuration file - - `src` holds your pattern's source code - - `example` holds the development environment +- `config` holds your pattern's configuration file +- `src` holds your pattern's source code +- `example` holds the development environment To start the development environment, enter the `example` folder and run: `npm run start` (or `yarn start` if you're using Yarn as a package manager. @@ -24,7 +24,6 @@ the pattern's source code. When you do, it will update automatically in your bro All you have to do now, is design your pattern. Thankfully, we have a tutorial for that too: - - [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern +- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern - diff --git a/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md b/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md index 17f2885cd97..90052b04d89 100644 --- a/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md +++ b/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md @@ -17,19 +17,17 @@ You can change all of these later. It's just to get you started. If you're not sure what to fill in, you can stick with the defaults or leave them blank. Only a few of these are mandatory. - - **Language**: Use the arrow keys to chose the language of your choice - - **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. - - **description**: A description of your pattern. It's not mandatory. - - **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick - - **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. - - **Author**: You can enter your name, or leave this blank for now - - **GitHub repository**: You can leave this blank for now - - **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. - +- **Language**: Use the arrow keys to chose the language of your choice +- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. +- **description**: A description of your pattern. It's not mandatory. +- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick +- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. +- **Author**: You can enter your name, or leave this blank for now +- **GitHub repository**: You can leave this blank for now +- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. When you've answered all questions, the command will download the development enviroment, and set it up based on the choices you made. This step will take anywhere from a few to about 10 minutes to complete. But when it's done, you will have a new folder with the development environent inside. - diff --git a/markdown/dev/tutorials/getting-started-mac/en.md b/markdown/dev/tutorials/getting-started-mac/en.md index 7be0fbc741e..476b92bdbfb 100644 --- a/markdown/dev/tutorials/getting-started-mac/en.md +++ b/markdown/dev/tutorials/getting-started-mac/en.md @@ -16,7 +16,7 @@ goals: - Starting the FreeSewing development environment --- -In this tutorial, we will setup Node JS and initialize the FreeSewing +In this tutorial, we will setup Node JS and initialize the FreeSewing development environment on a Mac system running OS X. @@ -29,4 +29,3 @@ application at `/Applications/Utilities/`. We'll cover the following steps: - diff --git a/markdown/dev/tutorials/getting-started-mac/installing-node/en.md b/markdown/dev/tutorials/getting-started-mac/installing-node/en.md index 4b17a2999d0..e4afb4919f1 100644 --- a/markdown/dev/tutorials/getting-started-mac/installing-node/en.md +++ b/markdown/dev/tutorials/getting-started-mac/installing-node/en.md @@ -12,4 +12,3 @@ nvm install lts/* This will install the most recent so-called LTS version on your system. LTS versions -- short for Long Term Support -- are good node versions to use because they are stable and supported for a long time. - diff --git a/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md b/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md index 9bedb11bde9..64cb41b7ecc 100644 --- a/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md +++ b/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md @@ -5,16 +5,16 @@ order: 20 FreeSewing is built with [Node.js](https://nodejs.org/), a JavaScript runtime. -You'll need to install Node JS on your system, and to do so, we'll -use [nvm](https://github.com/nvm-sh/nvm), short for _Node version manager_. +You'll need to install Node JS on your system, and to do so, we'll +use [nvm](https://github.com/nvm-sh/nvm), short for *Node version manager*. Using nvm has a number of benefits in comparison with installing Node from the node.js website, or from a package provided by Homebrew or your OS distribution: - - You can easily switch between different Node versions - - Everything gets installed in your home folder, avoiding permission problems +- You can easily switch between different Node versions +- Everything gets installed in your home folder, avoiding permission problems -The latest instructions for setting up nvm can be found [here](https://github.com/nvm-sh/nvm#installing-and-updating). If you want to just skip to the commands that most likely work, keep reading. +The latest instructions for setting up nvm can be found [here](https://github.com/nvm-sh/nvm#installing-and-updating). If you want to just skip to the commands that most likely work, keep reading. To setup nvm, run the following command in a terminal window: @@ -34,7 +34,7 @@ After the script is completed, try running the following command: nvm ``` -If all goes well, it should show you the nvm help. +If all goes well, it should show you the nvm help. @@ -42,4 +42,3 @@ If you get `nvm: command not found` or something similar, close the Terminal application, and open a new one. Now `nvm` should be found. - diff --git a/markdown/dev/tutorials/getting-started-mac/installing-xcode/en.md b/markdown/dev/tutorials/getting-started-mac/installing-xcode/en.md index ba58b511ce6..ca9b37506af 100644 --- a/markdown/dev/tutorials/getting-started-mac/installing-xcode/en.md +++ b/markdown/dev/tutorials/getting-started-mac/installing-xcode/en.md @@ -4,7 +4,7 @@ order: 10 --- Before we can get started, we need some basic tools for development. -They are bundled in the _Xcode command-line tools_ so let's install +They are bundled in the *Xcode command-line tools* so let's install that first. Open the Terminal application, and type the following command: @@ -15,4 +15,3 @@ xcode-select --install A popup will appear asking you to confirm the installation. Confirm, and go make a cup of coffee while the install does its thing. - diff --git a/markdown/dev/tutorials/getting-started-mac/node-versions/en.md b/markdown/dev/tutorials/getting-started-mac/node-versions/en.md index a8dddd60f7b..51807a74010 100644 --- a/markdown/dev/tutorials/getting-started-mac/node-versions/en.md +++ b/markdown/dev/tutorials/getting-started-mac/node-versions/en.md @@ -17,8 +17,8 @@ To see the different Node versions on your system, run this command: nvm ls ``` -It will show you a list of local node versions. -Either the version number, or an _alias_ that points to a specific version. +It will show you a list of local node versions. +Either the version number, or an *alias* that points to a specific version. You should see the `lts/*` alias in the list which is what we've just installed. ### nvm ls-remote @@ -52,4 +52,3 @@ nvm use v10.22.1 If you picked a version that is not installed, `nvm` will simply tell you and even suggest the command you should type to install it. Handy! - diff --git a/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md b/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md index dea05307202..6df45bd454f 100644 --- a/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md +++ b/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md @@ -8,9 +8,9 @@ If you chose `test`, you will have a `test` folder. If you chose `banana`, you'l If you enter that folder, you'll find a couple of subfolders: - - `config` holds your pattern's configuration file - - `src` holds your pattern's source code - - `example` holds the development environment +- `config` holds your pattern's configuration file +- `src` holds your pattern's source code +- `example` holds the development environment To start the development environment, enter the `example` folder and run: `npm run start` (or `yarn start` if you're using Yarn as a package manager. @@ -24,7 +24,6 @@ the pattern's source code. When you do, it will update automatically in your bro All you have to do now, is design your pattern. Thankfully, we have a tutorial for that too: - - [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern +- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern - diff --git a/markdown/dev/tutorials/getting-started-windows/en.md b/markdown/dev/tutorials/getting-started-windows/en.md index ac8c4c44d37..4b25d09cc5f 100644 --- a/markdown/dev/tutorials/getting-started-windows/en.md +++ b/markdown/dev/tutorials/getting-started-windows/en.md @@ -14,7 +14,9 @@ goals: - Initializing the FreeSewing development environment - Starting the FreeSewing development environment --- + ## Setting up a development environment using Windows Subsystem for Linux (WSL) and Visual Studio Code (VSCode) + If you already have a working WSL environment and VSCode Remote configured you can follow the [getting started on Linux guide](/tutorials/getting-started-linux) or skip ahead to [Setting up the FreeSewing development environment (WSL)](#setting-up-the-freesewing-development-environment-wsl). If not, the following process is very similar but has some differences to avoid quirks specific to this environment. Windows Subsystem for Linux allows you to run a Linux distribution as a development environment, with enough functionality to develop a FreeSewing pattern. While this approach offers some advantages this is not strictly necessary to develop patterns on Windows. If you would prefer a simpler setup process refer to [Setting up a development environment in Windows](#setting-up-a-development-environment-in-windows). @@ -22,6 +24,7 @@ Windows Subsystem for Linux allows you to run a Linux distribution as a developm Installing and using an IDE is optional, you can skip that step or use a different editor if you'd like. This guide suggests VSCode as it is freely available on multiple platforms and provides enough functionality to build the FreeSewing project. ### Install WSL + This guide uses WSL version 2, which requires installing the Hyper-V virtualisation system. If you have another virtualisation system installed (such as VirtualBox or VMWare) you may run into conflicts which require either updating that system to a version which can use the HyperV backend or porting your existing machines to use HyperV. @@ -29,11 +32,13 @@ This guide uses WSL version 2, which requires installing the Hyper-V virtualisat Follow the [Windows Subsystem for Linux Installation Guide for Windows 10](https://docs.microsoft.com/en-gb/windows/wsl/install-win10) (requires a recent version of Windows 10). #### Install NVM + Open a new WSL terminal from the shortcuts created or by searching for "WSL Terminal" in the start menu. [Install NVM by following the NVM setup guide](https://github.com/nvm-sh/nvm#install--update-script). Once installed you will need to activate NVM by either following the instructions printed to the screen or opening a new terminal. #### Install Node (and optionally Yarn) + Now that you have NVM installed, you can install node. The latest version can be installed using `nvm install default`. You can also install a specific version using `nvm install v12.16.1`. For the purposes of debugging it can be useful to have the same version of node installed as the main project uses, which you can then activate using `nvm use `. You can determine what version the FreeSewing project uses by checking [freesewing/freesewing/.node-version](https://github.com/freesewing/freesewing/blob/develop/.node-version). @@ -43,7 +48,9 @@ At the time this guide was written the latest version of node/npm has a bug in t Node comes with the Node Package Manager (npm) by default which can be used to set up the project. The default package manager uses a fairly simplistic aproach to dependency resolution which can make builds take a long time. Yarn is an alternative package manager which makes builds faster, especially for monolithic projects like FreeSewing. If you'd like to install yarn run `npm install yarn -g` (optional). #### Install and configure Git (recommended) + The create-freesewing-pattern script will attempt to create a git repository as part of the setup. It's not strictly required to have git installed in the WSL environment but you will get errors during the project setup process if it isn't installed or configured correctly. As such it's recommended to have git installed on the WSL environment even if you're going to be using a GUI client from the windows side. + ```bash sudo apt install git git config --global user.email "" @@ -51,39 +58,41 @@ git config --global user.name "" ``` ### Install VSCode (optional) + [Download and install VSCode](https://code.visualstudio.com/). FreeSewing uses .editorconfig files to enforce a consistent style for the project. VSCode relies on extensions to provide this functionality and due to a design shortcoming it does not respect certain editorconfig options which will break certain files in the freesewing project ([see vscode/65663 for details](https://github.com/microsoft/vscode/issues/65663)). If you use this editor please ensure that your settings.json file is configured to not trim trailing whitespace from markdown files. The following snippet can be added to your settings.json file to add an exemption for this file type: -``` - "[markdown]": { - "files.trimTrailingWhitespace": false - }, -``` + "[markdown]": { + "files.trimTrailingWhitespace": false + }, #### Install VSCode Remote + In order to be able to use VSCode's IDE features (such as the built in terminal) and also make use of the node installation we set up in the previous steps you will need to install VSCode Remote so that VSCode can make use of the linux environment. [Follow the getting started guide for VSCode Remote](https://code.visualstudio.com/docs/remote/wsl) (If you've been following this guide you have already done steps 1 and 2, you will only need to install the [remote development extension](https://aka.ms/vscode-remote/download/extension)) ### Setting up the FreeSewing development environment (WSL) + If you've chosen to use VSCode as your IDE open VSCode, and inside VSCode open the folder you wish to contain the pattern (e.g. `documents/my-freesewing-patterns`). Ensure VSCode Remote is active then open a terminal (this will automatically set your working directory to the folder open in VSCode) and run `npx create-freesewing-pattern`. If you are using a different IDE or just wish to use a bare terminal then you will need to navigate to the folder and run the same command. This script will prompt you for certain options. Only "Pattern name" is mandatory, the other prompts are optional and/or suggest sensible defaults. You can change all of these later. It's just to get you started. If you're not sure what to fill in you can stick with the defaults or leave them blank. - - **Language**: Use the arrow keys to chose the language of your choice - - **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. - - **description**: A description of your pattern. It's not mandatory. - - **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. - - **department**: Use the arrow keys to pick a department like `menswear`, `womenswear` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. - - **Author**: You can enter your name, or leave this blank for now. - - **GitHub repository**: You can leave this blank for now. - - **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. +- **Language**: Use the arrow keys to chose the language of your choice +- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. +- **description**: A description of your pattern. It's not mandatory. +- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. +- **department**: Use the arrow keys to pick a department like `menswear`, `womenswear` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. +- **Author**: You can enter your name, or leave this blank for now. +- **GitHub repository**: You can leave this blank for now. +- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. ### Start the development environment (WSL) -After this process completes you will be ready to run the development environment. + +After this process completes you will be ready to run the development environment. Navigate to the `example` folder and run `npm start`/`yarn start` to launch the development environment. @@ -92,10 +101,13 @@ Your browser will not automatically open if you are running the freesewing examp ## Setting up a development environment in Windows. + ### Install NVM + While node can be installed directly on Windows, we strongly recommend using a version manager such as [Node Version Manager for Windows](https://github.com/coreybutler/nvm-windows/releases/latest). That link will take you to the latest release which provides an installer you can download and run. Once nvm-windows is installed you will be able to continue with the rest of this process. ### Install node + Open a Powershell terminal or command prompt. Run `nvm ls available` to show versions that can be installed. Choose the appropriate version (you should use the same version as the freesewing project or latest LTS version) then run `nvm install 14.15.4` and `nvm use 14.15.4` (where `14.15.4` is the full version string of the version you wish to use) to activate the newly installed version. You will receive a prompt for elevated permissions and will need to accept it in order to activate the new version of node. @@ -105,18 +117,20 @@ At the time this guide was written the latest version of node/npm has a bug in t Node comes with the Node Package Manager (npm) by default which can be used to set up the project. The default package manager uses a fairly simplistic aproach to dependency resolution which can make builds take a long time. Yarn is an alternative package manager which makes builds faster, especially for monolithic projects like FreeSewing. If you'd like to install yarn run (`npm install yarn -g`) (optional). ### Setting up the FreeSewing development environment + Open a terminal, then navigate to the folder you wish to contain the pattern (e.g. `D:\Documents\my-freesewing-patterns`). Inside this directory run `npx create-freesewing-pattern`. This script will prompt you for certain options. Only "Pattern name" is mandatory, the other prompts are optional and/or suggest sensible defaults. You can change all of these later. It's just to get you started. If you're not sure what to fill in you can stick with the defaults or leave them blank. - - **Language**: Use the arrow keys to chose the language of your choice - - **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. - - **description**: A description of your pattern. It's not mandatory. - - **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. - - **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. - - **Author**: You can enter your name, or leave this blank for now. - - **GitHub repository**: You can leave this blank for now. - - **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. +- **Language**: Use the arrow keys to chose the language of your choice +- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. +- **description**: A description of your pattern. It's not mandatory. +- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. +- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. +- **Author**: You can enter your name, or leave this blank for now. +- **GitHub repository**: You can leave this blank for now. +- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. ### Start the development environment + After this process completes you will be ready to run the development environment. In the current terminal (or a new window if you prefer) you will need to build the package. Navigate to the folder you created during the previous step (whatever you provided for the "Pattern name" option) and then to the `example` folder inside this folder, then run `npm start` or `yarn start` depending on the build system you chose. This will build the pattern package which is used by the development instance, build the example application, and start a local web server instance so you can test your changes. diff --git a/markdown/dev/tutorials/pattern-design/adding-measurements/en.md b/markdown/dev/tutorials/pattern-design/adding-measurements/en.md index 83a93836d6e..c8e203d622f 100644 --- a/markdown/dev/tutorials/pattern-design/adding-measurements/en.md +++ b/markdown/dev/tutorials/pattern-design/adding-measurements/en.md @@ -3,7 +3,7 @@ title: Adding measurements order: 130 --- -FreeSewing is all about *made-to-measure* sewing patterns; +FreeSewing is all about *made-to-measure* sewing patterns; we are going to draft our pattern according to the measurements provided to us. Which begs the question, which measurements? @@ -35,7 +35,7 @@ This change will also get picked up by the development environment, and you'll n ![This screen tells you you are missing some required measurements](./required-measurements.png) -Since it's just one measurement, let's simply enter a value by hand. +Since it's just one measurement, let's simply enter a value by hand. For example `38` as 38cm is a realistic head circumference measurement for a baby. Enter `38` in the box, and click on **Draft your pattern** in the top navigation bar to get back to your draft, diff --git a/markdown/dev/tutorials/pattern-design/adding-options/en.md b/markdown/dev/tutorials/pattern-design/adding-options/en.md index ee98d2b98ff..c019cf35069 100644 --- a/markdown/dev/tutorials/pattern-design/adding-options/en.md +++ b/markdown/dev/tutorials/pattern-design/adding-options/en.md @@ -6,9 +6,9 @@ order: 140 You know what your bib should look like, and you have the *head* measurement to work with. But there's still a number of choices you have to make: - - How large should the neck opening be? - - How wide should the bib be? - - How long should the bib be? +- How large should the neck opening be? +- How wide should the bib be? +- How long should the bib be? You can make all of these choices for the user and set them in stone, so to speak. @@ -17,7 +17,7 @@ flexible and let the user decide. All you have to do is add options to your patt ## Add the neckRatio option -The first option we're going to add controls the ratio between the neck opening +The first option we're going to add controls the ratio between the neck opening and the head circumference. Let's call it `neckRatio`. Open the config file at `config/index.js` and add this to the options: @@ -33,10 +33,10 @@ Open the config file at `config/index.js` and add this to the options: Can you guess what it means? - - We've added a option of type percentage - - Its minimum value is 70% - - Its maximum value is 90% - - Its default value is 80% +- We've added a option of type percentage +- Its minimum value is 70% +- Its maximum value is 90% +- Its default value is 80% @@ -55,9 +55,9 @@ options: { } ``` - - You've added `widthRatio` and `lengthRatio` options - - You've given all options sensible defaults - - You've given all options sensible maximum and minimum boundaries +- You've added `widthRatio` and `lengthRatio` options +- You've given all options sensible defaults +- You've given all options sensible maximum and minimum boundaries @@ -76,7 +76,7 @@ optionGroups: { -The `optionGroups` entry does not do anything for your pattern as such. +The `optionGroups` entry does not do anything for your pattern as such. Instead it signals to the frontend that this is how options should be grouped together and presented to the user. diff --git a/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md b/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md index 32703439581..39c407d15e2 100644 --- a/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md +++ b/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md @@ -51,6 +51,4 @@ points.snapLeft = points.top.shiftFractionTowards(points.edgeTop, 0.5) The right part looks a bit wonky now, but we'll get to that - Now let's mirror this on the other side, and replace our `neck` and `rect` paths with a new path. - diff --git a/markdown/dev/tutorials/pattern-design/completing-the-neck-opening/en.md b/markdown/dev/tutorials/pattern-design/completing-the-neck-opening/en.md index 701afd7574d..b930fb06bc0 100644 --- a/markdown/dev/tutorials/pattern-design/completing-the-neck-opening/en.md +++ b/markdown/dev/tutorials/pattern-design/completing-the-neck-opening/en.md @@ -67,4 +67,3 @@ paths.neck = new Path() And now you have a complete neck opening - diff --git a/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md b/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md index ce19b65c30b..e42a8fbff6d 100644 --- a/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md +++ b/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md @@ -22,8 +22,8 @@ export default function(part) { } ``` -So far, we've kept to the *// Design pattern here* area, but now we're going to work on -the area under *// Complete?* +So far, we've kept to the *// Design pattern here* area, but now we're going to work on +the area under *// Complete?* @@ -99,8 +99,8 @@ snippets.logo = new Snippet("logo", points.logo) - You can find all possible snippets in [our documentation](/reference/snippets/). - +You can find all possible snippets in [our documentation](/reference/snippets/). + ## Seam allowance @@ -120,7 +120,7 @@ So you can simply remove that condition. However, for future refefence, `sa` is a variable that you can get from `part.shorthand()` just like `complete`. But instead of `true` or `false` it will hold the amount of seam allowance -in mm. +in mm. Note that you can still do `if (sa)` because zero is *falsy*. @@ -144,12 +144,12 @@ as explained in [Adding text](/concepts/adding-text). ## Scalebox and title -Two more macros and we're done. +Two more macros and we're done. The `title` macro adds a title to our part. It's not that big a deal here since we only have one part in our pattern. But patterns typically have many different parts, some of them which might look rather similar. -That's why you should number your parts and give them a name. +That's why you should number your parts and give them a name. The `title` macro can help you with that: @@ -176,6 +176,4 @@ And with that, our pattern is now *complete*: We used attributes to add color, dashes, text on a path and even opacity - We're not done yet though. There's one more thing the user can ask for: a *paperless* pattern. - diff --git a/markdown/dev/tutorials/pattern-design/conclusion/en.md b/markdown/dev/tutorials/pattern-design/conclusion/en.md index 4b11bf999ba..521b6dc715a 100644 --- a/markdown/dev/tutorials/pattern-design/conclusion/en.md +++ b/markdown/dev/tutorials/pattern-design/conclusion/en.md @@ -3,29 +3,29 @@ title: Conclusion order: 280 --- -Congratulations, you have created your first pattern. And while it's arguably rather simple, +Congratulations, you have created your first pattern. And while it's arguably rather simple, you have learned a bunch of things along the way. Let's list some of the things you've learned: - - You learned how to [setup your development environment](/tutorials/pattern-design/create-freesewing-pattern) with `npx create-freesewing-pattern` - - You learned how to [add parts](/tutorials/pattern-design/your-first-part), [measurements](/tutorials/pattern-design/adding-measurements), and [options](/tutorials/pattern-design/adding-options) to your pattern's configuration file - - You learned what [a good boilerplate is to start with a new part](/tutorials/pattern-design/part-structure) - - You learned [how to add points and draw paths](/tutorials/pattern-design/constructing-the-neck-opening) - - You learned how you can make changes in a loop to [adapt the neck opening](/tutorials/pattern-design/fitting-the-neck-opening) or [rotate the straps](/tutorials/pattern-design/avoiding-overlap) until they were just right - - You learned about [macros and how to use them](/tutorials/pattern-design/creating-the-closure) - - You learned different methods to manipulate [points](/reference/api/point/) and [paths](/reference/api/path/) - - You learned about using [attributes](/reference/api/attributes/) to influence the appearance of points and paths - - You learned about what it means to draft [a complete pattern](/tutorials/pattern-design/completing-your-pattern) - - You learned about [snippets and how to add them](/tutorials/pattern-design/completing-your-pattern#adding-snippets) - - You learned [how to offset a path](/tutorials/pattern-design/completing-your-pattern#seam-allowance) to create seam allowance, or in our case, mark the bias tape line - - You learned how to create a [paperless pattern](/tutorials/pattern-design/paperless-bib) by adding dimensions +- You learned how to [setup your development environment](/tutorials/pattern-design/create-freesewing-pattern) with `npx create-freesewing-pattern` +- You learned how to [add parts](/tutorials/pattern-design/your-first-part), [measurements](/tutorials/pattern-design/adding-measurements), and [options](/tutorials/pattern-design/adding-options) to your pattern's configuration file +- You learned what [a good boilerplate is to start with a new part](/tutorials/pattern-design/part-structure) +- You learned [how to add points and draw paths](/tutorials/pattern-design/constructing-the-neck-opening) +- You learned how you can make changes in a loop to [adapt the neck opening](/tutorials/pattern-design/fitting-the-neck-opening) or [rotate the straps](/tutorials/pattern-design/avoiding-overlap) until they were just right +- You learned about [macros and how to use them](/tutorials/pattern-design/creating-the-closure) +- You learned different methods to manipulate [points](/reference/api/point/) and [paths](/reference/api/path/) +- You learned about using [attributes](/reference/api/attributes/) to influence the appearance of points and paths +- You learned about what it means to draft [a complete pattern](/tutorials/pattern-design/completing-your-pattern) +- You learned about [snippets and how to add them](/tutorials/pattern-design/completing-your-pattern#adding-snippets) +- You learned [how to offset a path](/tutorials/pattern-design/completing-your-pattern#seam-allowance) to create seam allowance, or in our case, mark the bias tape line +- You learned how to create a [paperless pattern](/tutorials/pattern-design/paperless-bib) by adding dimensions You can find the complete code of the tutorial pattern [here on GitHub](https://github.com/freesewing/freesewing/blob/develop/packages/tutorial/src/bib.js). ## More reading material - - If you haven't done so already, read through [the pattern guide](/guides/patterns/) which provides a good overview of how patterns work under the hood - - Bookmark [the FreeSewing API docs](/reference/api/), they are your reference every time you're not entirely certain how something works - - Have a look at [the design guide](/guides/best-practices/) for best practices that will help you make the best possible patterns +- If you haven't done so already, read through [the pattern guide](/guides/patterns/) which provides a good overview of how patterns work under the hood +- Bookmark [the FreeSewing API docs](/reference/api/), they are your reference every time you're not entirely certain how something works +- Have a look at [the design guide](/guides/best-practices/) for best practices that will help you make the best possible patterns ## What to do next diff --git a/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md b/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md index a19691cddca..b0c49e00dc5 100644 --- a/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md +++ b/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md @@ -6,14 +6,13 @@ order: 160 Your goal is to construct a slightly oval neck opening that has a circumference that is the `head` measurements multiplied by the `neckRatio` option. -That might involve some trial and error. But since the neck opening will be symetric -both horizontal and vertical, you only need to construct one quadrant. +That might involve some trial and error. But since the neck opening will be symetric +both horizontal and vertical, you only need to construct one quadrant. We'll be adding some points to our pattern to do just that. But we want to have access to our measurements and options to do so. For this, you first update the shorthand call to indicate you also want access to `measurements` and `options`: - ```js let { Point, @@ -51,10 +50,10 @@ You've added some points to your part, and drawn your first path. Let's look at points.right = new Point(measurements.head / 10, 0) ``` - - We're adding a point named `right` to `points` which holds our part's points - - We're using the Point constructor, which takes two arguments: The point's X and Y values - - The X value is `measurements.head / 10` - - The Y value is `0` +- We're adding a point named `right` to `points` which holds our part's points +- We're using the Point constructor, which takes two arguments: The point's X and Y values +- The X value is `measurements.head / 10` +- The Y value is `0` The `bottom` part is very similar, so let's skip to the next line: @@ -63,19 +62,19 @@ points.rightCp1 = points.right .shift(90, points.bottom.dy(points.right)/2) ``` - - We're adding a point named `rightCp1`, which will become the *control point* of the right part - - Instead of using the Point constructor, we're calling the `Point.shift()` method on an existing point - - It takes two arguments: The angle to shift towards, and the distance - - You can see that we're shifting 90 degrees (that means up) but the distance uses another method - - The `Point.dy()` method returns the delta along the Y axis between the point you call it on and the point you pass it - - We shift half of the Y-delta +- We're adding a point named `rightCp1`, which will become the *control point* of the right part +- Instead of using the Point constructor, we're calling the `Point.shift()` method on an existing point +- It takes two arguments: The angle to shift towards, and the distance +- You can see that we're shifting 90 degrees (that means up) but the distance uses another method +- The `Point.dy()` method returns the delta along the Y axis between the point you call it on and the point you pass it +- We shift half of the Y-delta -The next point is very similar again, except that this time we're shifting to the right (0 degrees) for half of +The next point is very similar again, except that this time we're shifting to the right (0 degrees) for half of the X-delta between points `bottom` and `right`. -Points come with a bunch of these methods. +Points come with a bunch of these methods. You can find them all in [the Point API docs](/reference/api/point/). @@ -88,10 +87,10 @@ paths.quarterNeck = new Path() .curve(points.rightCp1, points.bottomCp2, points.bottom) ``` - - We're adding a path named `quarterNeck` to `paths` which holds our part's paths - - We're using the Path constructor, which takes no arguments - - We're following up with a `Path.move()` call that takes one Point as argument - - Then, there's a `Path.curve()` call that takes 3 points as arguments +- We're adding a path named `quarterNeck` to `paths` which holds our part's paths +- We're using the Path constructor, which takes no arguments +- We're following up with a `Path.move()` call that takes one Point as argument +- Then, there's a `Path.curve()` call that takes 3 points as arguments If you've read through the high-level [Pattern guide](/guides/patterns/) you will have learned that paths always start with a `move()` operation. In this case, we moved to our `right` points. @@ -105,4 +104,3 @@ When all is said and done, we now have a quarter of our neck opening: The only problem is, we have no guarantee whatsoever that this opening is the correct size. Rather than hope it is the correct size, you'll make sure it is next. - diff --git a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md b/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md index 0bff7cab4ed..bd7e45965e8 100644 --- a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md +++ b/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md @@ -8,7 +8,7 @@ order: 100 ###### Already did the Getting started tutorial? If you already set up the FreeSewing development environment and created a pattern, you can use that pattern and skip these steps. You can move on to [Your first part](/tutorials/pattern-design/your-first-part/). - + Open a terminal and enter the following command: @@ -19,20 +19,20 @@ npx create-freesewing-pattern This will load a few dependencies, and then ask you the following questions: - - **Language**: Use the arrow keys to select the language of your choice - - **Pattern name**: Enter `tutorial` - - **description**: Enter `The FreeSewing tutorial` - - **Pattern type**: Use the arrow key to select `Pattern` - - **Department**: Use the arrow keys to select `Accessories` - - **Author**: Enter your GitHub username - - **GitHub repository**: This will be prefilled for you, so just hit Enter - - **Package manager**: Use the arrow to choose. Pick `npm` if you're not sure. +- **Language**: Use the arrow keys to select the language of your choice +- **Pattern name**: Enter `tutorial` +- **description**: Enter `The FreeSewing tutorial` +- **Pattern type**: Use the arrow key to select `Pattern` +- **Department**: Use the arrow keys to select `Accessories` +- **Author**: Enter your GitHub username +- **GitHub repository**: This will be prefilled for you, so just hit Enter +- **Package manager**: Use the arrow to choose. Pick `npm` if you're not sure. After you've answered these questions, the default template will be copied, after which all dependencies will be installed. -This will take a few minutes because we're loading some software for your development environment. +This will take a few minutes because we're loading some software for your development environment. diff --git a/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md b/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md index d343a54f173..1774a661a2f 100644 --- a/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md +++ b/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md @@ -67,6 +67,3 @@ Like our neck opening, we've only drawn half since we can simply copy the points However, doing so would make both straps overlap. Which doesn't work for a pattern as it would make it impossible to cut it out of a single piece of fabric. So let's deal with the overlap next. - - - diff --git a/markdown/dev/tutorials/pattern-design/drawing-the-bib-outline/en.md b/markdown/dev/tutorials/pattern-design/drawing-the-bib-outline/en.md index 6350deafc32..8954c686550 100644 --- a/markdown/dev/tutorials/pattern-design/drawing-the-bib-outline/en.md +++ b/markdown/dev/tutorials/pattern-design/drawing-the-bib-outline/en.md @@ -66,5 +66,3 @@ You didn't have to do that. But it looks nicely balanced this way: Note how the neck opening is the same distance from the left, right, and top edge - - diff --git a/markdown/dev/tutorials/pattern-design/drawing-the-straps/en.md b/markdown/dev/tutorials/pattern-design/drawing-the-straps/en.md index 532e6dcd97b..b9b569a9ad7 100644 --- a/markdown/dev/tutorials/pattern-design/drawing-the-straps/en.md +++ b/markdown/dev/tutorials/pattern-design/drawing-the-straps/en.md @@ -107,8 +107,8 @@ macro("round", { - You can also remove the `render` line completely. More on this in the next section. - +You can also remove the `render` line completely. More on this in the next section. + With that out of the way, our bib now looks like this: @@ -117,14 +117,12 @@ With that out of the way, our bib now looks like this: That is looking a lot like a bib - We used the `part.attr()` method to style our path? But because the `fabric` class is drawn in black, -it doesn't look much different. We'll use some other classes later that will make its effect more clear. +it doesn't look much different. We'll use some other classes later that will make its effect more clear. It's looking pretty good. But those sharp corners at the bottom don't exactly say *baby* do they? Let's fix that. - diff --git a/markdown/dev/tutorials/pattern-design/en.md b/markdown/dev/tutorials/pattern-design/en.md index 461b35be983..ce45ce5bcf9 100644 --- a/markdown/dev/tutorials/pattern-design/en.md +++ b/markdown/dev/tutorials/pattern-design/en.md @@ -33,14 +33,14 @@ At the end of this tutorial, you will have created this pattern: Your end result -Before we can get started, let's make sure you have the required software +Before we can get started, let's make sure you have the required software installed on your computer: ## Prerequisites FreeSewing is a JavaScript library that runs on [Node.js](https://nodejs.org/). -If you don't have Node.js on your system, follow the link above and +If you don't have Node.js on your system, follow the link above and install it on your system. When you're done, you can test whether it works by running: diff --git a/markdown/dev/tutorials/pattern-design/fitting-the-neck-opening/en.md b/markdown/dev/tutorials/pattern-design/fitting-the-neck-opening/en.md index bb159a57499..6a7051243fa 100644 --- a/markdown/dev/tutorials/pattern-design/fitting-the-neck-opening/en.md +++ b/markdown/dev/tutorials/pattern-design/fitting-the-neck-opening/en.md @@ -28,17 +28,17 @@ do { We've added a few new variables: - - `tweak`: A *tweak factor* that we'll use to increase or decrease the neck opening by making it more or less than 1 - - `target`: How long our (quarter) neck opening should be - - `delta`: How far we're off. Positive numbers mean it's too long, negative means too short +- `tweak`: A *tweak factor* that we'll use to increase or decrease the neck opening by making it more or less than 1 +- `target`: How long our (quarter) neck opening should be +- `delta`: How far we're off. Positive numbers mean it's too long, negative means too short Now that we know what `target` is, we construct our path as we did before. But this time around, we multiply our point coordinates with our `tweak` variable (1 at the start). -Then, we compare our `target` to the result of `paths.neck.length()` which — you guessed it — returns the +Then, we compare our `target` to the result of `paths.neck.length()` which — you guessed it — returns the length of our neck path. -If the delta is positive, our path is too long and we reduce the tweak factor. +If the delta is positive, our path is too long and we reduce the tweak factor.\ If the delta is negative, our path is too short and we increase the tweak factor. We keep on doing this until `Math.abs(delta)` is less than 1. Meaning that we are within 1mm of our target value. @@ -48,4 +48,3 @@ It might look the same as before, but now it's just right Now that we're happy with the length of our quarter neck opening, let's construct the entire neck opening. - diff --git a/markdown/dev/tutorials/pattern-design/paperless-bib/en.md b/markdown/dev/tutorials/pattern-design/paperless-bib/en.md index 985e0925234..a6eb697cb11 100644 --- a/markdown/dev/tutorials/pattern-design/paperless-bib/en.md +++ b/markdown/dev/tutorials/pattern-design/paperless-bib/en.md @@ -26,7 +26,7 @@ let { ``` The idea behind *paperless patterns* is that users don't need to print your -pattern in order to use it. +pattern in order to use it. Instead, we include dimensions on the pattern that allows them to transfer the pattern directly onto fabric, or onto an intermediate medium such as tracing paper. @@ -36,10 +36,10 @@ markings, depending on the units requested by the user. While the grid gets added automatically, the dimensions you have to add yourself. Thankfully, there's macros that can help you with that, specifically: - - The `hd` macro adds a horizontal dimension - - The `vd` macro adds a vertical dimension - - The `ld` macro adds a linear dimension - - The `pd` macro adds a path dimension that follows a given path +- The `hd` macro adds a horizontal dimension +- The `vd` macro adds a vertical dimension +- The `ld` macro adds a linear dimension +- The `pd` macro adds a path dimension that follows a given path The documentation, as always, holds [all the information about the macros](/reference/macros/). @@ -89,8 +89,8 @@ Your paperless bib We used the `hd` macro to add two horizontal dimensions: - - One at the bottom for the width of our bib - - One for the width of the neck opening +- One at the bottom for the width of our bib +- One for the width of the neck opening The `hd` macro takes a `from` and `to` point as well as a `y` value that says at what Y-value to draw the dimension. @@ -104,4 +104,3 @@ While most dimensions are horizontal or vertical, sometimes you want a straight The `ld` macro takes a `d` argument (short for delta) that indicates how far the dimension should be offset from the line from the `from` to the `to` point, if at all. Making your pattern paperless is the icing on the cake. Time to wrap up, go over what we've learned, and give some pointers on where to go from here. - diff --git a/markdown/dev/tutorials/pattern-design/part-structure/en.md b/markdown/dev/tutorials/pattern-design/part-structure/en.md index c0b4252324b..04df359884f 100644 --- a/markdown/dev/tutorials/pattern-design/part-structure/en.md +++ b/markdown/dev/tutorials/pattern-design/part-structure/en.md @@ -65,25 +65,25 @@ and you use JavaScript's *object destructuring* to only get what you need. The example above makes the following variables available: - - `Point`: The Point constructor - - `points`: A reference to the part's points - - `Path`: The Path constructor - - `paths`: A reference to the part's paths +- `Point`: The Point constructor +- `points`: A reference to the part's points +- `Path`: The Path constructor +- `paths`: A reference to the part's paths These will make it possible for you to draw points and paths easily. The following three variables are also needed to create a full-fledged FreeSewing pattern; their function and usage will be covered in detail [later on in this tutorial](/tutorials/pattern-design/completing-your-pattern/): -- `complete`: create a *complete* pattern (or not) -- `sa`: include *seam allowance* (or not) -- `paperless`: allow the pattern to be *paperless* +- `complete`: create a *complete* pattern (or not) +- `sa`: include *seam allowance* (or not) +- `paperless`: allow the pattern to be *paperless* For now, we only need these so that the pattern skeleton compiles properly. -This will all become clear, but if you're curious, the API docs have all the details +This will all become clear, but if you're curious, the API docs have all the details on [the Part.shorthand() method](/reference/api/part/#shorthand). diff --git a/markdown/dev/tutorials/pattern-design/rounding-the-corners/en.md b/markdown/dev/tutorials/pattern-design/rounding-the-corners/en.md index d5aa904582d..673eddaaad4 100644 --- a/markdown/dev/tutorials/pattern-design/rounding-the-corners/en.md +++ b/markdown/dev/tutorials/pattern-design/rounding-the-corners/en.md @@ -5,7 +5,6 @@ order: 240 We already know how to round corners, let the `round` macro do it: - ```js macro("round", { from: points.topLeft, @@ -30,8 +29,8 @@ you'll notice that we used this line in the beginning: render: true, ``` -This instructs the `round` macro create a path that draws the rounded corner. -Whereas by default, it merely constructs the points required to round the corner. +This instructs the `round` macro create a path that draws the rounded corner. +Whereas by default, it merely constructs the points required to round the corner. Typically, your rounded corner will be part of a larger path and so you don't want the macro to draw it. That's why the `round` macro's `render` property defaults to `false`. @@ -40,9 +39,9 @@ We've left it out here, and you should also remove it from your earlier use of t We merely set `render` to `true` and then `false` at that time so you could see what the macro was doing. - - There is no need to explicitly specify a default value. While writing `render: false,` also works, it clutters up your code a bit. - + +There is no need to explicitly specify a default value. While writing `render: false,` also works, it clutters up your code a bit. + With our corners rounded, we should update our path. @@ -75,6 +74,3 @@ The shape our bib is now completed: That is looking a lot like a bib - - - diff --git a/markdown/dev/tutorials/pattern-design/shaping-the-straps/en.md b/markdown/dev/tutorials/pattern-design/shaping-the-straps/en.md index 9eab40fc3c1..0aeceab55e4 100644 --- a/markdown/dev/tutorials/pattern-design/shaping-the-straps/en.md +++ b/markdown/dev/tutorials/pattern-design/shaping-the-straps/en.md @@ -47,4 +47,3 @@ All of a sudden, things are starting to look like a bib: Pretty good, but how are we going to fit it over the baby's head? - diff --git a/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md b/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md index f704b7aecab..931f7e624b1 100644 --- a/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md +++ b/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md @@ -3,8 +3,8 @@ title: "Testing your pattern" order: 250 --- -With the basic outline of your pattern ready, now would be a good time -to test it to see how well it adapts to different measurements, +With the basic outline of your pattern ready, now would be a good time +to test it to see how well it adapts to different measurements, and the range of options we provided. @@ -18,12 +18,12 @@ for different measurements and options to see how well it adapts. If testing your pattern sounds like a lot of work, you're in luck. FreeSewing can do it -for you. Click the **Test your pattern** button in the top navigation bar of your +for you. Click the **Test your pattern** button in the top navigation bar of your development environment, and you'll see a number of choices on the right: - - Test pattern options - - Test measurements - - Test models +- Test pattern options +- Test measurements +- Test models The [API docs on sampling](/reference/api/pattern/#sample) have all the details on how this works, but for now we'll just look at the end result of each of these. @@ -39,42 +39,44 @@ Click on any of the options we've added to our pattern, and your bib will be dra The `lengthRatio` option controls the length of our bib. Testing it confirms that it only influences the length: - -Your bib with the lengthRatio option sampled - + +Your bib with the lengthRatio option sampled ### neckRatio The `neckRatio` option will determine the size of the neck opening. For a the same `head` measurement, varying this option should result in bibs with increasingly larger -neck opening. +neck opening. Testing it confirms this. We can also see that as the neck opening gets smaller, we will rotate the straps further out of the way to avoid overlap: - -Your bib with the neckRatio option sampled - + +Your bib with the neckRatio option sampled ### widthRatio @@ -82,11 +84,11 @@ The `widthRatio` option will determine the width of our bib. For a the same `head` measurement, varying this option should result in increasingly wider bibs. If we test it, we can see that it works as intended. But there's one thing that perhaps requires your attention. -Making the bib wider shortens the length from the bottom of the neck opening to the bottom of the bib. +Making the bib wider shortens the length from the bottom of the neck opening to the bottom of the bib. Thereby making the bib shorter when it's worn. Even if the *total length* of the bib stays the same, the *useable length* shortens when the bib is made wider. -Users will not expect this, so it's something that we should fix in our pattern. +Users will not expect this, so it's something that we should fix in our pattern. @@ -95,19 +97,20 @@ covered in this tutorial. It is left *as an exercise to the reader*. - -Your bib with the widthRatio option sampled - + +Your bib with the widthRatio option sampled ## Testing measurements @@ -116,19 +119,20 @@ This gives you the option to determine how any given measurement is influencing For our bib, we only use one measurement, so it influences the entire pattern: - -Your bib with the head circumference measurement sampled - + +Your bib with the head circumference measurement sampled ## Testing models @@ -142,29 +146,30 @@ set of measurements. But most patterns use multiple measurements, and you'll find this test gives you insight into how your pattern will adapt to differently sized bodies. - -Your bib sampled for a range of baby sizes - + +Your bib sampled for a range of baby sizes ## The antperson test @@ -172,31 +177,32 @@ A special case of model testing is the so-called *antperson test*. It drafts your pattern with a set of *typical* measurements , and then drafts it again with measurements that are 1/10th of those *typical* measurements. -It is named after [the cartoon character](https://en.wikipedia.org/wiki/Ant-Man_(film)) who can shrink, +It is named after [the cartoon character](https://en.wikipedia.org/wiki/Ant-Man_\(film\)) who can shrink, yet somehow his suit still fits. The purpose of the antperson test is to bring out areas in your pattern where you made assumptions that will not properly scale. Many drafting books will tell you to *add 3cm there* or *measure 2 inch to the right*. Those instructions -don't scale, and you should avoid them. +don't scale, and you should avoid them. The best patterns will pass the antperson test with 2 patterns exactly the same, where one will simply be 1/10th the scale of the other. - -Congratulations, your bib passes the antperson test - + +Congratulations, your bib passes the antperson test When you're happy with how your pattern passes these tests, it's time to complete it. diff --git a/markdown/dev/tutorials/pattern-design/your-first-part/en.md b/markdown/dev/tutorials/pattern-design/your-first-part/en.md index 2e04367c63a..727056d7d7e 100644 --- a/markdown/dev/tutorials/pattern-design/your-first-part/en.md +++ b/markdown/dev/tutorials/pattern-design/your-first-part/en.md @@ -3,7 +3,7 @@ title: Your first part order: 120 --- -Much like garments themselves, patterns are made up of *parts*. +Much like garments themselves, patterns are made up of *parts*. Most patterns will have multiple parts. A sleeve, a back part, the collar, and so on. Our pattern is very simple, and only has one part: the bib. @@ -24,14 +24,14 @@ Update the **parts** array with `bib`, rather than `box`: ```js parts: ["bib"], ``` + - ##### Don't worry about the big red error - - This will (temporarily) cause en error to appear in your development environment, because the rest of the code is still expecting to find a part named `box`, but we will fix this in the next steps. - - +##### Don't worry about the big red error +This will (temporarily) cause en error to appear in your development environment, because the rest of the code is still expecting to find a part named `box`, but we will fix this in the next steps. + + When that's done, rename the `src/box.js` file into `src/bib.js`. @@ -67,12 +67,11 @@ In our case, we have a part named `bib` so we're using `draftBib()` as the metho -Congratulations, your pattern now has a `bib` part, rather than a `box` part. +Congratulations, your pattern now has a `bib` part, rather than a `box` part. It still looks the same though: Our bib part, which is the renamed box part - This `bib` part is where we'll do some real work. But first, we have some more configuration to do.