1
0
Fork 0

fix(docs): Update Guides documentation 2

This commit is contained in:
Benjamin F 2022-12-25 21:13:48 -08:00
parent d0415b33a5
commit 7cb6f11882
31 changed files with 81 additions and 81 deletions

View file

@ -3,7 +3,7 @@ title: Construct paths counter-clockwise
order: 70 order: 70
--- ---
Construct your paths counter-clockwise. You have to pick a direction anyway, and going Construct your paths _counter-clockwise_ (anti-clockwise). You have to pick a direction anyway, and going
counter-clockwise is a bit of a convention. counter-clockwise is a bit of a convention.
This applies both to naming points (specifically the control points of curves) This applies both to naming points (specifically the control points of curves)
@ -16,8 +16,8 @@ of (a part of) a garment.
So pick a point, and make your way around counter-clockwise. So pick a point, and make your way around counter-clockwise.
When naming control points for curves, re-use the name of the point they are attached to When naming control points for curves, re-use the name of the point they are attached to
and add `Cp1` to the control point before and `Cp2` to the control point after the point if and add `Cp1` to the control point before and `Cp2` to the control point after the point if,
, once again, you'd follow your path counter-clockwise. once again, you follow your path counter-clockwise.
For example: For example:

View file

@ -3,7 +3,8 @@ title: Re-use CSS classes
order: 30 order: 30
--- ---
While you can style your pattern however you want, try to re-use the CSS class names that While you can style your pattern however you want, try to re-use the
are in use in our default [theme plugin](/reference/plugins/theme). [CSS class names](/reference/css) that
are in use in our default `@freesewing/plugin-theme` plugin.
Doing so will ensure consistent styling for patterns. Doing so will ensure consistent styling for patterns.

View file

@ -5,14 +5,14 @@ order: 60
Don't insert literal text in your patterns. Instead, insert a key that can then be translated. Don't insert literal text in your patterns. Instead, insert a key that can then be translated.
For example, if you want to put _Finish with bias tape_ on your pattern, don't be For example, if you want to put "_Finish with bias tape_" on your pattern, don't be
tempted to do this: tempted to do this:
```js ```js
path.seam.attr("data-text", "Finish with bias tape"); path.seam.attr("data-text", "Finish with bias tape");
``` ```
That (English) string is now hard-coded in your pattern. As freesewing supports That (English) string is now hard-coded in your pattern. As FreeSewing supports
translation out of the box, it would be a real shame not to make use of it. translation out of the box, it would be a real shame not to make use of it.
Instead, insert a key to identify the string: Instead, insert a key to identify the string:
@ -21,6 +21,10 @@ Instead, insert a key to identify the string:
path.seam.attr("data-text", "finishWithBiasTape"); path.seam.attr("data-text", "finishWithBiasTape");
``` ```
This way, it can be translated. This way, different strings for different languages can be associated with
the key, allowing translated text to be used.
You can find and browse the translations and available translation keys [in the freesewing/freesewing project](https://github.com/freesewing/freesewing/tree/develop/packages/i18n/src/locales). You can find and browse the translations and available translation keys in the
[freesewing/freesewing project on GitHub][1].
[1]: https://github.com/freesewing/freesewing/tree/develop/packages/i18n/src/locales

View file

@ -10,6 +10,7 @@ A violation through a single incident or series of actions.
##### Consequence ##### Consequence
A warning with consequences for continued behavior. A warning with consequences for continued behavior.
No interaction with the people involved, including unsolicited No interaction with the people involved, including unsolicited
interaction with those enforcing the Code of Conduct, for a interaction with those enforcing the Code of Conduct, for a
specified period of time. This includes avoiding interactions specified period of time. This includes avoiding interactions

View file

@ -3,7 +3,7 @@ title: Scope
order: 40 order: 40
--- ---
This Code of Conduct applies within all FreeSewing community spaces, and also applies 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. when an individual is officially representing the FreeSewing community in public spaces.
Examples of representing our community include using an official e-mail address, Examples of representing our community include using an official e-mail address,

View file

@ -2,9 +2,9 @@
title: How we structure our documentation title: How we structure our documentation
--- ---
Whether you're writing documenation for FreeSewing, or merely trying Whether you're writing documentation for FreeSewing or merely trying
to find what you are looking for, understanding how we structure our to find what you are looking for, understanding how we structure our
documentation can help you find your feet, and figure out what goes where. documentation can help you find your feet and figure out what goes where.
## Types of documentation ## Types of documentation
@ -16,7 +16,7 @@ Our documentation is divided into four different types:
- [**Reference**](/reference) holds technical descriptions of the underlying technology and how to make use of it. - [**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? 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. 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 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: where your documentation should go based on what it's trying to accomplish:
@ -26,9 +26,9 @@ structure](docs.png "A visual representation of how our documentation is structu
- Write a **Tutorial** is your aim is to help people learn the platform - 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 **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 a **Howto** if your aim is to help people accomplish a task
- Write **Reference** documentation to detail how things work under the hood - 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 - Refer people to **Discord** or **GitHub** for things that are not (yet) covered in our documentation
<Note> <Note>

View file

@ -13,7 +13,7 @@ You can find a list of all FreeSewing guides below:
Guides tell a story to further your understanding of a specific topic. Guides tell a story to further your understanding of a specific topic.
Guides and howtos are on a spectrum with howtos being terse _do-this-then-that_ recipes, whereas Guides and Howtos are on a spectrum with Howtos being terse _do-this-then-that_ recipes, whereas
guides take more time to explain in-depth what is being done and why. 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). For more details, refer to [How we structure our documentation](/guides/docs).

View file

@ -38,7 +38,7 @@ let me = 'you'
The following language codes are supported: The following language codes are supported:
- `js` for Javascript code - `js` for JavaScript code
- `markdown` for Markdown - `markdown` for Markdown
- `html` for HTML - `html` for HTML
- `svg` for SVG - `svg` for SVG

View file

@ -4,7 +4,7 @@ order: 900
--- ---
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. It is designed to be easily readable by humans and computers alike.
Markdown is often used to format documentation, online comments, Markdown is often used to format documentation, online comments,
or anywhere where you want rich text while using a plain text editor. or anywhere where you want rich text while using a plain text editor.

View file

@ -109,7 +109,7 @@ consectetur adipisci elit,
sed eiusmod tempor incidunt ut labore et dolore magna aliqua. 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 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. leave an empty line at the start and end of your component.
```markdown ```markdown

View file

@ -18,7 +18,7 @@ followed by a space and the image title between quotes.
<Tip> <Tip>
##### Images go in the same folder as your markdown file ##### 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 text where you are including the image. That way, you just need to specify

View file

@ -3,7 +3,7 @@ title: Using jargon
order: yyy order: yyy
--- ---
Jargon are terminology that could throw off new users. Jargon are terms that could throw off new users.
Rather than create a glossary on every page, we use a plugin to manage Rather than create a glossary on every page, we use a plugin to manage
jargon terms for us. This page shows you how to use it. jargon terms for us. This page shows you how to use it.

View file

@ -3,7 +3,7 @@ title: Line breaks
order: 20 order: 20
--- ---
If you want to force a linebreak, but not a new paragraph, If you want to force a line break but not a new paragraph,
simply leave 2 spaces at the end of the line. simply leave 2 spaces at the end of the line.
```md ```md

View file

@ -29,11 +29,11 @@ See [the reference documentation][1] on [freesewing.dev][2]
You don't have to use numbers, but can also use named references. You don't have to use numbers, but can also use named references.
```md ```md
We moved the markdown content to [our monorepo][monorepo] We moved the Markdown content to [our monorepo][monorepo]
[monorepo]: https://github.com/freesewing/freesewing [monorepo]: https://github.com/freesewing/freesewing
``` ```
We moved the markdown content to [our monorepo][monorepo] We moved the Markdown content to [our monorepo][monorepo]
[monorepo]: https://github.com/freesewing/freesewing [monorepo]: https://github.com/freesewing/freesewing

View file

@ -4,7 +4,7 @@ order: 120
--- ---
A pattern is a container for a bunch of parts. And parts are in turn a A pattern is a container for a bunch of parts. And parts are in turn a
container for the the points, paths, and snippets of (a part of) your pattern. container for the points, paths, and snippets of (a part of) your pattern.
Parts can be re-used and mixed and matched to create other patterns, a powerful Parts can be re-used and mixed and matched to create other patterns, a powerful
concept to build a pattern library. concept to build a pattern library.

View file

@ -110,10 +110,12 @@ Understanding that each drawing operation builds upon the next one is an importa
<Tip> <Tip>
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)
paths in it. Each box, the arrows, the lines in the React logo, and so on. has a lot of paths in it.
Each box is a path made of 4 lines, and every text label is anchored on a path
containing a hidden line.
Click the **X-Ray** tab to reveal them. Click the **X-Ray** tab to reveal some of the lines in the paths.
</Tip> </Tip>

View file

@ -3,10 +3,6 @@ title: Pattern
order: 80 order: 80
--- ---
<Example part="docs_overview" options_focus="Pattern">
The pattern you create will be a constructor for instances of your pattern
</Example>
Last but not least, we've arrived at the level of the pattern itself. Last but not least, we've arrived at the level of the pattern itself.
The pattern is a container that holds all your parts, along with the configuration The pattern is a container that holds all your parts, along with the configuration
and the store. and the store.
@ -16,4 +12,4 @@ 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 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 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. the pattern instance, or pass it to our React component to render it in the browser.

View file

@ -207,8 +207,11 @@ This is illustrated below:
## One set is plenty ## One set is plenty
In the vast majority of cases, a pattern will only have one set of settings. As such, multiset support is not something you need to be intimately familiar with. In the vast majority of cases, a pattern will only have one set of settings.
But it is good to know it exists, and explain certain things that might seem _odd_ if you are unaware of multiset support, such as the fact that there's a pattern-wide store, and a different store per set, the so-called setStore(s). As such, multiset support is not something you need to be intimately familiar with.
But it is good to know it exists and explains certain things that might seem
_odd_ if you were unaware of multiset support, such as the fact that there's a
pattern-wide store and a different store per set, the so-called _setStore(s)_.
Below is an illustration of a pattern with a single set of settings which, once again, is the vast majority of use cases: Below is an illustration of a pattern with a single set of settings which, once again, is the vast majority of use cases:

View file

@ -90,15 +90,6 @@ Each snippet must have:
``` ```
</Example> </Example>
<Tip>
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.
Click the **X-Ray** tab to reveal them.
</Tip>
Since our example image does not have any snippets in it, here's an example Since our example image does not have any snippets in it, here's an example
of a `button` snippet: of a `button` snippet:

View file

@ -3,12 +3,12 @@ title: Stacks
order: 110 order: 110
--- ---
Stacks come into play when layouting a pattern. Stacks come into play when laying out a pattern.
The FreeSewing core library, by default, will handle the layout of a pattern The FreeSewing core library, by default, will handle the layout of a pattern
for you by placing all parts next to each other in as small a space as for you by placing all parts next to each other in as small a space as
possible. possible.
That is _typically_ what you want, but not always. For example, when sampling, That is _typically_ what you want, but not always. For example, when sampling
you want parts to be stacked on top of each other: you want parts to be stacked on top of each other:
<Example settings="sample: { type: measurement, measurement: head }" withHead caption="A simple example of sampling the `head` measurement"> <Example settings="sample: { type: measurement, measurement: head }" withHead caption="A simple example of sampling the `head` measurement">
@ -40,7 +40,7 @@ you want parts to be stacked on top of each other:
``` ```
</Example> </Example>
Under the hood, sampling uses multiple sets of settings, and then uses stacks Under the hood, sampling uses multiple sets of settings and then uses stacks
to place them on top of each other. But this functionality is also available to place them on top of each other. But this functionality is also available
to patterns designers who want to use it. to patterns designers who want to use it.

View file

@ -5,15 +5,15 @@ order: 60
The store in a FreeSewing pattern provides shared key-value storage. The store in a FreeSewing pattern provides shared key-value storage.
If you have some information in one part that you want to make available 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. outside that part (to share it with another part) you can save it to the store.
There are two types of stores: There are two types of stores:
- A pattern-wide store that - A pattern-wide store that is shared across all parts in all sets
- A store per set that is shared across parts in that set - A store per set that is shared across parts in that set
When you interact with a store in your part code, it is almost certainly the When you interact with a store in your part code, it is almost certainly the
so-called setStore, the store that is shared accross parts in the set. so-called setStore, the store that is shared across parts in the set.
The pattern-wide store is used for pattern initialization and storing logs and The pattern-wide store is used for pattern initialization and storing logs and
other data in the early stages of the pattern lifecycle. other data in the early stages of the pattern lifecycle.

View file

@ -15,7 +15,7 @@ A FreeSewing plugin can extend FreeSewing in 3 different ways:
We have [a list of plugins](/reference/plugins/) that we maintain, but We have [a list of plugins](/reference/plugins/) that we maintain, but
if you can't find what you're looking for, you can write your own plugin. if you can't find what you're looking for, you can write your own plugin.
If you plan on doing that, or if you would like to understand how plugins work, If you plan on doing that or if you would like to understand how plugins work,
this guide is for you. this guide is for you.
We'll cover the following topics: We'll cover the following topics:

View file

@ -9,7 +9,7 @@ lifecycle.
## Signature ## Signature
To provide one or more hooks, your plugin should have a `hooks` property that To provide one or more hooks, your plugin should have a `hooks` property that
is an object where the keys are the lifecycle hook name, and the value holds a is an object where the keys are the lifecycle hook name and the value holds a
method. When the lifecycle hook is triggered, your method will be called. method. When the lifecycle hook is triggered, your method will be called.
```mjs ```mjs

View file

@ -3,7 +3,8 @@ title: Loading plugins
order: 140 order: 140
--- ---
Plugins can be loaded at build time and added to the design. Or at run time and added to an instantiated pattern. Plugins can be loaded at build time and added to the design.
Or, they can be added at run time and added to an instantiated pattern.
To load a plugin at build time, it should be added to [the `plugins` key of the part configuration](/reference/api/part/config/plugins). To load a plugin at build time, it should be added to [the `plugins` key of the part configuration](/reference/api/part/config/plugins).

View file

@ -29,7 +29,7 @@ const myPlugin = {
All macros receive two arguments: All macros receive two arguments:
- `so`: A plain object holding configuration object passed to the macro - `so`: A plain object holding configuration object passed to the macro
- `props`: The same object as passed to the Part.draft()` method that you can destructure - `props`: The same object as passed to the [`Part.draft()`](/reference/api/part/draft) method that you can destructure
<Note> <Note>
###### Macros take only 1 argument ###### Macros take only 1 argument

View file

@ -40,16 +40,17 @@ All store methods receive at least two arguments:
## Overwriting store methods ## Overwriting store methods
You are allowed to overwrite existing store methods. You are allowed to overwrite existing store methods.
As it happens, this is how you should implement a custom logging solution, but overwriting the logging methods under the store's `log` key, As it happens, this is how you should implement a custom logging solution,
by overwriting the logging methods under the store's `log` key,
However, the following methods cannot be overwritten: However, the following store methods cannot be overwritten:
- `extend` - `extend()`
- `get` - `get()`
- `push` - `push()`
- `set` - `set()`
- `setIfUnset` - `setIfUnset()`
- `unset` - `unset()`
## Return value ## Return value

View file

@ -18,8 +18,8 @@ Object plugin = {
A plugin **must** have the `name` and `version` properties. A plugin **must** have the `name` and `version` properties.
The other properties are optional, and they map to the three different functionalities macros can provide: The other properties are optional, and they map to the three different functionalities macros can provide:
- `hooks`: Holds an object with lifecycle hooks the plugin wants to hook into - [`hooks`](/guides/plugins/hooks): Holds an object with lifecycle hooks the plugin wants to hook into
- `macros`: Holds and object with macros the plugin provides - [`macros`](/guides/plugins/macros): Holds and object with macros the plugin provides
- `store`: Holds and Array with store methods the plugin provides. - [`store`](/guides/plugins/store): Holds and Array with store methods the plugin provides.
Click on the links above for more details on the structure of these properties. Click on the links above for more details on the structure of these properties.

View file

@ -41,7 +41,7 @@ The following illustration does a great job at explaining how they are construct
![How Bézier curves are constructed](bezier.gif) ![How Bézier curves are constructed](bezier.gif)
You don't need understand the mathematics behind Bézier Curves. You don't need to 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. As long as you intuitively _get_ how the control points influence the curve, you're good to go.
<Note> <Note>

View file

@ -6,7 +6,7 @@ Drawing lines and curves on paper is a skill most people have been practicing si
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. 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. Understanding the concepts that are involved in designing sewing patterns in code will pay dividends later.
That is why we recommend you familiarize yourself with the following topics: That is why we recommend you familiarize yourself with the following topics:
<ReadMore list /> <ReadMore list />
@ -16,10 +16,10 @@ That is why we recommend you familiarize yourself with the following topics:
##### There's no need to know everything ##### There's no need to know everything
FreeSewing sits at the intersection of the world of makers and developers. 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 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 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. the heck NodeJS is and why you should care.
Few people straddle both worlds, so as you start using FreeSewing, chances are Few people straddle both worlds, so as you start using FreeSewing, chances are
you'll learn a few new things along the way. you'll learn a few new things along the way.

View file

@ -3,12 +3,12 @@ title: Units in FreeSewing
order: 40 order: 40
--- ---
FreeSewing uses millimeter for all its internal units. FreeSewing uses _millimeter (mm)_ for all its internal units.
We do support both imperial and metrics units, which are displayed We do support both imperial and metrics units, which are displayed
as cm or inch, but under the hood everything is handled in millimeter. as _cm_ or _inch_, but under the hood everything is handled in millimeter.
So as a pattern designer, you will work with mm. So as a pattern designer, you will work with mm.
When you write `1`, thats one mm. When you write `7.8`, thats 7.8mm. When you write `1`, thats one millimeter. When you write `7.8`, thats 7.8 mm.
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. abstraction on top of the internal units, which are always mm.

View file

@ -19,11 +19,11 @@ website(s) or other more user-facing aspects.
FreeSewing is now ESM only. We no longer publish CJS modules. FreeSewing is now ESM only. We no longer publish CJS modules.
To make this explicit, we now use `.mjs` as file extention for our source code. To make this explicit, we now use the `.mjs` file extension for our source code, instead of `js`.
### Named exports only ### Named exports only
All our published packages now have only named exports, and no longer any All our published packages now have only named exports and no longer have any
default exports. default exports.
Please refer to [the reference documentation](/reference/api#named-exports) to see what Please refer to [the reference documentation](/reference/api#named-exports) to see what
@ -38,7 +38,7 @@ FreeSewing now requires NodeJS version 16 or more recent.
The following packages have been removed in v3: The following packages have been removed in v3:
- **@freesewing/pattern-info** - **@freesewing/pattern-info**
- **gatsby-remark-jargon**: We no longer use gatsby - **gatsby-remark-jargon**: We no longer use Gatsby
- **remark-jargon**: Use rehype-jargon instead - **remark-jargon**: Use rehype-jargon instead
- **@freesewing/mui-theme**: We no longer use Material-UI - **@freesewing/mui-theme**: We no longer use Material-UI
- **@freesewing/css-theme**: We now use TailwindCSS - **@freesewing/css-theme**: We now use TailwindCSS
@ -69,9 +69,9 @@ Refer to [the `Store.log` documentation](/reference/api/store/log) for all detai
### Design configuration ### Design configuration
In v2, a design had its own confifuration which contained all the info about In v2, a design had its own configuration which contained all the info about
the design. In v3, all of that is migrated to the part level. A design is now the design. In v3, all of that is migrated to the part level. A design is now
merely a container of parts, but also allows you to pass in additional data: merely a container of parts, but it also allows you to pass in additional data:
```js ```js
import { Design } from '@freesewing/core' // Note: named export import { Design } from '@freesewing/core' // Note: named export
@ -88,7 +88,7 @@ export const MyDesign = new Design({
}) })
``` ```
You pass the Design contructor a single object where the only required property You pass the Design constructor a single object where the only required property
is the `parts` key that holds an array of part objects. The `data` property is is the `parts` key that holds an array of part objects. The `data` property is
optional, and allows you to add data/information to the design that you can use optional, and allows you to add data/information to the design that you can use
to facilitate frontend integration or a host of other things. Anything under to facilitate frontend integration or a host of other things. Anything under
@ -116,6 +116,6 @@ Apart from being attached at the part level, changes in comparison to v2 include
### File and directory structure changes ### File and directory structure changes
- We no longer use a `config` folder, instead keep the config next to the parts. - Designs no longer use a `config` folder, instead keeping the config in the parts files.
- We use `.mjs` extentions rather than `.js` - We use `.mjs` extensions rather than `.js`