chore: Remove tutorial design, it is no longer used
This commit is contained in:
parent
1154d2de93
commit
8189258d40
22 changed files with 0 additions and 1274 deletions
30
CHANGELOG.md
30
CHANGELOG.md
|
@ -586,12 +586,6 @@
|
||||||
|
|
||||||
### trayvon
|
### trayvon
|
||||||
|
|
||||||
#### Changed
|
|
||||||
|
|
||||||
- Migrated from Rollup to Esbuild for all builds
|
|
||||||
|
|
||||||
### tutorial
|
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
|
||||||
- Migrated from Rollup to Esbuild for all builds
|
- Migrated from Rollup to Esbuild for all builds
|
||||||
|
@ -1110,12 +1104,6 @@
|
||||||
|
|
||||||
### trayvon
|
### trayvon
|
||||||
|
|
||||||
#### Changed
|
|
||||||
|
|
||||||
- Switched to default import for version from package.json
|
|
||||||
|
|
||||||
### tutorial
|
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
|
||||||
- Switched to default import for version from package.json
|
- Switched to default import for version from package.json
|
||||||
|
@ -1784,12 +1772,6 @@
|
||||||
|
|
||||||
- The `s3collar and `s3armhole` options now allow shifting the shoulder seam (`s3` is short for *Shift Shoulder Seam*)
|
- The `s3collar and `s3armhole` options now allow shifting the shoulder seam (`s3` is short for *Shift Shoulder Seam*)
|
||||||
|
|
||||||
### tutorial
|
|
||||||
|
|
||||||
#### Fixed
|
|
||||||
|
|
||||||
- Set department in the config to one of the newly accepted values
|
|
||||||
|
|
||||||
### plugin-mirror
|
### plugin-mirror
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
@ -2829,12 +2811,6 @@
|
||||||
- Ported trayvon to the new (names for) measurements. See [#416](https://github.com/freesewing/freesewing/issues/416)
|
- Ported trayvon to the new (names for) measurements. See [#416](https://github.com/freesewing/freesewing/issues/416)
|
||||||
- Removed `Circumference` suffix from measurement names
|
- Removed `Circumference` suffix from measurement names
|
||||||
|
|
||||||
### tutorial
|
|
||||||
|
|
||||||
#### Changed
|
|
||||||
|
|
||||||
- Removed `Circumference` suffix from measurement names
|
|
||||||
|
|
||||||
### wahid
|
### wahid
|
||||||
|
|
||||||
#### Changed
|
#### Changed
|
||||||
|
@ -3446,12 +3422,6 @@
|
||||||
|
|
||||||
### trayvon
|
### trayvon
|
||||||
|
|
||||||
#### Added
|
|
||||||
|
|
||||||
- Initial release
|
|
||||||
|
|
||||||
### tutorial
|
|
||||||
|
|
||||||
#### Added
|
#### Added
|
||||||
|
|
||||||
- Initial release
|
- Initial release
|
||||||
|
|
|
@ -384,10 +384,6 @@
|
||||||
"tags": ["accessories"],
|
"tags": ["accessories"],
|
||||||
"techniques": ["precision", "lining"]
|
"techniques": ["precision", "lining"]
|
||||||
},
|
},
|
||||||
"tutorial": {
|
|
||||||
"description": "A FreeSewing pattern for a baby bib that's used in our tutorial",
|
|
||||||
"code": "Joost De Cock"
|
|
||||||
},
|
|
||||||
"uma": {
|
"uma": {
|
||||||
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
"description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern",
|
||||||
"code": "Joost De Cock",
|
"code": "Joost De Cock",
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
# Change log for: @freesewing/tutorial
|
|
||||||
|
|
||||||
|
|
||||||
## 2.21.0 (2022-06-27)
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Migrated from Rollup to Esbuild for all builds
|
|
||||||
|
|
||||||
## 2.20.0 (2022-01-24)
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Switched to default import for version from package.json
|
|
||||||
|
|
||||||
## 2.17.0 (2021-07-01)
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Set department in the config to one of the newly accepted values
|
|
||||||
|
|
||||||
## 2.7.0 (2020-07-12)
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Removed `Circumference` suffix from measurement names
|
|
||||||
|
|
||||||
## 2.0.0 (2019-08-25)
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
- Initial release
|
|
||||||
|
|
||||||
|
|
||||||
This is the **initial release**, and the start of this change log.
|
|
||||||
|
|
||||||
> Prior to version 2, FreeSewing was not a JavaScript project.
|
|
||||||
> As such, that history is out of scope for this change log.
|
|
||||||
|
|
|
@ -1,305 +0,0 @@
|
||||||

|
|
||||||
<p align='center'><a
|
|
||||||
href="https://www.npmjs.com/package/@freesewing/tutorial"
|
|
||||||
title="@freesewing/tutorial on NPM"
|
|
||||||
><img src="https://img.shields.io/npm/v/@freesewing/tutorial.svg"
|
|
||||||
alt="@freesewing/tutorial on NPM"/>
|
|
||||||
</a><a
|
|
||||||
href="https://opensource.org/licenses/MIT"
|
|
||||||
title="License: MIT"
|
|
||||||
><img src="https://img.shields.io/npm/l/@freesewing/tutorial.svg?label=License"
|
|
||||||
alt="License: MIT"/>
|
|
||||||
</a><a
|
|
||||||
href="https://deepscan.io/dashboard#view=project&tid=2114&pid=2993&bid=23256"
|
|
||||||
title="Code quality on DeepScan"
|
|
||||||
><img src="https://deepscan.io/api/teams/2114/projects/2993/branches/23256/badge/grade.svg"
|
|
||||||
alt="Code quality on DeepScan"/>
|
|
||||||
</a><a
|
|
||||||
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Atutorial"
|
|
||||||
title="Open issues tagged pkg:tutorial"
|
|
||||||
><img src="https://img.shields.io/github/issues/freesewing/freesewing/pkg:tutorial.svg?label=Issues"
|
|
||||||
alt="Open issues tagged pkg:tutorial"/>
|
|
||||||
</a><a
|
|
||||||
href="#contributors-"
|
|
||||||
title="All Contributors"
|
|
||||||
><img src="https://img.shields.io/badge/all_contributors-111-pink.svg"
|
|
||||||
alt="All Contributors"/>
|
|
||||||
</a></p><p align='center'><a
|
|
||||||
href="https://twitter.com/freesewing_org"
|
|
||||||
title="Follow @freesewing_org on Twitter"
|
|
||||||
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
|
|
||||||
alt="Follow @freesewing_org on Twitter"/>
|
|
||||||
</a><a
|
|
||||||
href="https://chat.freesewing.org"
|
|
||||||
title="Chat with us on Discord"
|
|
||||||
><img src="https://img.shields.io/discord/698854858052075530?label=Chat%20on%20Discord"
|
|
||||||
alt="Chat with us on Discord"/>
|
|
||||||
</a><a
|
|
||||||
href="https://freesewing.org/patrons/join"
|
|
||||||
title="Become a FreeSewing Patron"
|
|
||||||
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
|
|
||||||
alt="Become a FreeSewing Patron"/>
|
|
||||||
</a><a
|
|
||||||
href="https://instagram.com/freesewing_org"
|
|
||||||
title="Follow @freesewing_org on Twitter"
|
|
||||||
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15"
|
|
||||||
alt="Follow @freesewing_org on Twitter"/>
|
|
||||||
</a></p>
|
|
||||||
|
|
||||||
# @freesewing/tutorial
|
|
||||||
|
|
||||||
A FreeSewing pattern for a baby bib that's used in our tutorial
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
> #### Note: Version 3 is a work in progress
|
|
||||||
>
|
|
||||||
> We are working on a new major version (v3) but it is not ready for prime-time.
|
|
||||||
> For production use, please refer to our v2 packages (the `latest` on NPM)
|
|
||||||
> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
|
|
||||||
>
|
|
||||||
> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
|
|
||||||
|
|
||||||
## What am I looking at? 🤔
|
|
||||||
|
|
||||||
This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
|
|
||||||
|
|
||||||
This folder holds: @freesewing/tutorial
|
|
||||||
|
|
||||||
If you're not entirely sure what to do or how to start, type this command:
|
|
||||||
|
|
||||||
```
|
|
||||||
npm run tips
|
|
||||||
```
|
|
||||||
|
|
||||||
> If you don't want to set up a dev environment, you can run it in your browser:
|
|
||||||
>
|
|
||||||
> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
|
|
||||||
>
|
|
||||||
> We recommend that you fork our repository and then
|
|
||||||
> put `gitpod.io/#<entire-url-of-your-fork` into a browser
|
|
||||||
> to start up a browser-based dev environment of your own.
|
|
||||||
|
|
||||||
## About FreeSewing 💀
|
|
||||||
|
|
||||||
Where the world of makers and developers collide, that's where you'll find FreeSewing.
|
|
||||||
|
|
||||||
If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
|
|
||||||
our sewing patterns adapted to your measurements.
|
|
||||||
|
|
||||||
If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
|
|
||||||
Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
|
|
||||||
for parametric design of sewing patterns. But we also provide a range
|
|
||||||
of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
|
|
||||||
functionality of the platform.
|
|
||||||
|
|
||||||
If you have NodeJS installed, you can try it right now by running:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npx create-freesewing-pattern
|
|
||||||
```
|
|
||||||
|
|
||||||
Or, consult our getting started guides
|
|
||||||
for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
|
|
||||||
[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
|
|
||||||
or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
|
|
||||||
|
|
||||||
We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
|
|
||||||
walks you through your first parametric design,
|
|
||||||
and [a friendly community](https://freesewing.org/community/where/) with
|
|
||||||
people who can help you when you get stuck.
|
|
||||||
|
|
||||||
## Support FreeSewing: Become a patron 🥰
|
|
||||||
|
|
||||||
FreeSewing is an open source project run by a community,
|
|
||||||
and financially supported by our patrons.
|
|
||||||
|
|
||||||
If you feel what we do is worthwhile, and you can spend a few coind without
|
|
||||||
hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
|
|
||||||
|
|
||||||
## Links 👩💻
|
|
||||||
|
|
||||||
- 💻 Makers website: [freesewing.org](https://freesewing.org)
|
|
||||||
- 💻 Developers website: [freesewing.dev](https://freesewing.dev)
|
|
||||||
- 💬 Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
|
|
||||||
- ✅ Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
|
|
||||||
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
|
|
||||||
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
|
|
||||||
|
|
||||||
## License: MIT 🤓
|
|
||||||
|
|
||||||
© [Joost De Cock](https://github.com/joostdecock).
|
|
||||||
See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
|
|
||||||
|
|
||||||
## Where to get help 🤯
|
|
||||||
|
|
||||||
Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
|
|
||||||
share your feedback, or just hang out.
|
|
||||||
|
|
||||||
If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Contributors ✨
|
|
||||||
|
|
||||||
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
||||||
<!-- prettier-ignore-start -->
|
|
||||||
<!-- markdownlint-disable -->
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://adamrtomkins.github.io/"><img src="https://avatars.githubusercontent.com/u/5709603?v=4?s=100" width="100px;" alt="Adam Tomkins"/><br /><sub><b>Adam Tomkins</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=AdamRTomkins" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://polymerisation-des-concepts.fr/"><img src="https://avatars.githubusercontent.com/u/365999?v=4?s=100" width="100px;" alt="Alexandre Ignjatovic"/><br /><sub><b>Alexandre Ignjatovic</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bankair" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AlfaLyr"><img src="https://avatars.githubusercontent.com/u/39273729?v=4?s=100" width="100px;" alt="AlfaLyr"/><br /><sub><b>AlfaLyr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=AlfaLyr" title="Code">💻</a> <a href="#plugin-AlfaLyr" title="Plugin/utility libraries">🔌</a> <a href="#design-AlfaLyr" title="Design">🎨</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://thelettereph.com"><img src="https://avatars.githubusercontent.com/u/357684?v=4?s=100" width="100px;" alt="Andrew James"/><br /><sub><b>Andrew James</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ephphatha" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/annekecaramin"><img src="https://avatars.githubusercontent.com/u/38046191?v=4?s=100" width="100px;" alt="Anneke"/><br /><sub><b>Anneke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=annekecaramin" title="Documentation">📖</a> <a href="#translation-annekecaramin" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anniekao"><img src="https://avatars.githubusercontent.com/u/1550506?v=4?s=100" width="100px;" alt="Annie Kao"/><br /><sub><b>Annie Kao</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anniekao" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Anternative"><img src="https://avatars.githubusercontent.com/u/81079850?v=4?s=100" width="100px;" alt="Anternative"/><br /><sub><b>Anternative</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Anternative" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Quiltmaster"><img src="https://avatars.githubusercontent.com/u/71795777?v=4?s=100" width="100px;" alt="Anthony"/><br /><sub><b>Anthony</b></sub></a><br /><a href="#question-Quiltmaster" title="Answering Questions">💬</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/arigrayzel"><img src="https://avatars.githubusercontent.com/u/33040950?v=4?s=100" width="100px;" alt="Ari Grayzel-student"/><br /><sub><b>Ari Grayzel-student</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=arigrayzel" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Bart-PXL"><img src="https://avatars.githubusercontent.com/u/45118788?v=4?s=100" width="100px;" alt="Bart"/><br /><sub><b>Bart</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Bart-PXL" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/BenJamesBen"><img src="https://avatars.githubusercontent.com/u/109869956?v=4?s=100" width="100px;" alt="BenJamesBen"/><br /><sub><b>BenJamesBen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=BenJamesBen" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=BenJamesBen" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3ABenJamesBen" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/camerondubas"><img src="https://avatars.githubusercontent.com/u/6216460?v=4?s=100" width="100px;" alt="Cameron Dubas"/><br /><sub><b>Cameron Dubas</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=camerondubas" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cabi"><img src="https://avatars.githubusercontent.com/u/2596253?v=4?s=100" width="100px;" alt="Carsten Biebricher"/><br /><sub><b>Carsten Biebricher</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cabi" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cathyzoller"><img src="https://avatars.githubusercontent.com/u/2120275?v=4?s=100" width="100px;" alt="Cathy Zoller"/><br /><sub><b>Cathy Zoller</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=cathyzoller" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Chantalbijoux"><img src="https://avatars.githubusercontent.com/u/39673694?v=4?s=100" width="100px;" alt="Chantal Lapointe"/><br /><sub><b>Chantal Lapointe</b></sub></a><br /><a href="#translation-Chantalbijoux" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dpiquet"><img src="https://avatars.githubusercontent.com/u/4688628?v=4?s=100" width="100px;" alt="Damien PIQUET"/><br /><sub><b>Damien PIQUET</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=dpiquet" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.darigovresearch.com/"><img src="https://avatars.githubusercontent.com/u/30328618?v=4?s=100" width="100px;" alt="Darigov Research"/><br /><sub><b>Darigov Research</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=darigovresearch" title="Documentation">📖</a> <a href="#ideas-darigovresearch" title="Ideas, Planning, & Feedback">🤔</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/clegganator259"><img src="https://avatars.githubusercontent.com/u/3974250?v=4?s=100" width="100px;" alt="David Clegg"/><br /><sub><b>David Clegg</b></sub></a><br /><a href="#design-clegganator259" title="Design">🎨</a> <a href="https://github.com/freesewing/freesewing/commits?author=clegganator259" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ElenaFdR"><img src="https://avatars.githubusercontent.com/u/5113815?v=4?s=100" width="100px;" alt="Elena FdR"/><br /><sub><b>Elena FdR</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ElenaFdR" title="Documentation">📖</a> <a href="#blog-ElenaFdR" title="Blogposts">📝</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://emmanuelnyachoke.com/"><img src="https://avatars.githubusercontent.com/u/1908926?v=4?s=100" width="100px;" alt="Emmanuel Nyachoke"/><br /><sub><b>Emmanuel Nyachoke</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=enyachoke" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://enochriese.com"><img src="https://avatars.githubusercontent.com/u/5298929?v=4?s=100" width="100px;" alt="Enoch Riese"/><br /><sub><b>Enoch Riese</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eriese" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EvEkSwed"><img src="https://avatars.githubusercontent.com/u/39723451?v=4?s=100" width="100px;" alt="EvEkSwed"/><br /><sub><b>EvEkSwed</b></sub></a><br /><a href="#translation-EvEkSwed" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fantastik-Maman"><img src="https://avatars.githubusercontent.com/u/39785382?v=4?s=100" width="100px;" alt="Fantastik-Maman"/><br /><sub><b>Fantastik-Maman</b></sub></a><br /><a href="#translation-Fantastik-Maman" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.forresto.com/"><img src="https://avatars.githubusercontent.com/u/395307?v=4?s=100" width="100px;" alt="Forrest O."/><br /><sub><b>Forrest O.</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=forresto" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fmatray"><img src="https://avatars.githubusercontent.com/u/8267716?v=4?s=100" width="100px;" alt="Frédéric"/><br /><sub><b>Frédéric</b></sub></a><br /><a href="#translation-fmatray" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.linkedin.com/in/glennfmatthews/"><img src="https://avatars.githubusercontent.com/u/5603551?v=4?s=100" width="100px;" alt="Glenn Matthews"/><br /><sub><b>Glenn Matthews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=glennmatthews" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://greg.technology/"><img src="https://avatars.githubusercontent.com/u/1017304?v=4?s=100" width="100px;" alt="Greg Sadetsky"/><br /><sub><b>Greg Sadetsky</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=gregsadetsky" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://kirby.zone"><img src="https://avatars.githubusercontent.com/u/75245963?v=4?s=100" width="100px;" alt="Igor Couto"/><br /><sub><b>Igor Couto</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aiocouto" title="Bug reports">🐛</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=eltociear" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Irapeke"><img src="https://avatars.githubusercontent.com/u/39604334?v=4?s=100" width="100px;" alt="Irapeke"/><br /><sub><b>Irapeke</b></sub></a><br /><a href="#translation-Irapeke" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ibek"><img src="https://avatars.githubusercontent.com/u/1140579?v=4?s=100" width="100px;" alt="Ivo Bek"/><br /><sub><b>Ivo Bek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=ibek" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jsawo"><img src="https://avatars.githubusercontent.com/u/1294706?v=4?s=100" width="100px;" alt="Jacek Sawoszczuk"/><br /><sub><b>Jacek Sawoszczuk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jsawo" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jgfichte"><img src="https://avatars.githubusercontent.com/u/1787162?v=4?s=100" width="100px;" alt="Jason Williams"/><br /><sub><b>Jason Williams</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jgfichte" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jejacks0n"><img src="https://avatars.githubusercontent.com/u/13765?v=4?s=100" width="100px;" alt="Jeremy Jackson"/><br /><sub><b>Jeremy Jackson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jejacks0n" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://jeroenhoek.nl"><img src="https://avatars.githubusercontent.com/u/683699?v=4?s=100" width="100px;" alt="Jeroen Hoek"/><br /><sub><b>Jeroen Hoek</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jdhoek" title="Documentation">📖</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joeschofield0"><img src="https://avatars.githubusercontent.com/u/47668691?v=4?s=100" width="100px;" alt="Joe Schofield"/><br /><sub><b>Joe Schofield</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joeschofield0" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Joebidido"><img src="https://avatars.githubusercontent.com/u/39796210?v=4?s=100" width="100px;" alt="Joebidido"/><br /><sub><b>Joebidido</b></sub></a><br /><a href="#translation-Joebidido" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://joost.at/"><img src="https://avatars.githubusercontent.com/u/1708494?v=4?s=100" width="100px;" alt="Joost De Cock"/><br /><sub><b>Joost De Cock</b></sub></a><br /><a href="#maintenance-joostdecock" title="Maintenance">🚧</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/joshessman"><img src="https://avatars.githubusercontent.com/u/9941074?v=4?s=100" width="100px;" alt="Josh Essman"/><br /><sub><b>Josh Essman</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=joshessman" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.earth.li/~kake/"><img src="https://avatars.githubusercontent.com/u/1956810?v=4?s=100" width="100px;" alt="Kake"/><br /><sub><b>Kake</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=KakeLP" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/kapunahele"><img src="https://avatars.githubusercontent.com/u/4116963?v=4?s=100" width="100px;" alt="Kapunahele Wong"/><br /><sub><b>Kapunahele Wong</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kapunahelewong" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangerineshark"><img src="https://avatars.githubusercontent.com/u/70777269?v=4?s=100" width="100px;" alt="Karen"/><br /><sub><b>Karen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=tangerineshark" title="Documentation">📖</a> <a href="#eventOrganizing-tangerineshark" title="Event Organizing">📋</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcgnly"><img src="https://avatars.githubusercontent.com/u/5653631?v=4?s=100" width="100px;" alt="Katie McGinley"/><br /><sub><b>Katie McGinley</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=mcgnly" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.kieranklaassen.com/"><img src="https://avatars.githubusercontent.com/u/209089?v=4?s=100" width="100px;" alt="Kieran Klaassen"/><br /><sub><b>Kieran Klaassen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kieranklaassen" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Kittycatou"><img src="https://avatars.githubusercontent.com/u/48165583?v=4?s=100" width="100px;" alt="Kittycatou"/><br /><sub><b>Kittycatou</b></sub></a><br /><a href="#translation-Kittycatou" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.krishoward.org/"><img src="https://avatars.githubusercontent.com/u/5946286?v=4?s=100" width="100px;" alt="Kris"/><br /><sub><b>Kris</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=web-goddess" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kristinruben"><img src="https://avatars.githubusercontent.com/u/17237479?v=4?s=100" width="100px;" alt="Kristin Ruben"/><br /><sub><b>Kristin Ruben</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=kristinruben" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/compilin"><img src="https://avatars.githubusercontent.com/u/40794281?v=4?s=100" width="100px;" alt="Lin"/><br /><sub><b>Lin</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=compilin" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loudepeuter"><img src="https://avatars.githubusercontent.com/u/38081954?v=4?s=100" width="100px;" alt="Loudepeuter"/><br /><sub><b>Loudepeuter</b></sub></a><br /><a href="#translation-Loudepeuter" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lucibytes"><img src="https://avatars.githubusercontent.com/u/77203781?v=4?s=100" width="100px;" alt="Lucian"/><br /><sub><b>Lucian</b></sub></a><br /><a href="#eventOrganizing-lucibytes" title="Event Organizing">📋</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/luizfzs"><img src="https://avatars.githubusercontent.com/u/6039675?v=4?s=100" width="100px;" alt="Luiz Saggioro"/><br /><sub><b>Luiz Saggioro</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=luizfzs" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/MA-TATAS"><img src="https://avatars.githubusercontent.com/u/125549564?v=4?s=100" width="100px;" alt="MA-TATAS"/><br /><sub><b>MA-TATAS</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=MA-TATAS" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/manufakturedelweiss"><img src="https://avatars.githubusercontent.com/u/38063391?v=4?s=100" width="100px;" alt="Marcus"/><br /><sub><b>Marcus</b></sub></a><br /><a href="#translation-manufakturedelweiss" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/martintribo"><img src="https://avatars.githubusercontent.com/u/1613442?v=4?s=100" width="100px;" alt="Martin Tribo"/><br /><sub><b>Martin Tribo</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=martintribo" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nadege"><img src="https://avatars.githubusercontent.com/u/3792171?v=4?s=100" width="100px;" alt="Nadege Michel"/><br /><sub><b>Nadege Michel</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Tests">⚠️</a> <a href="https://github.com/freesewing/freesewing/commits?author=nadege" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nataliasayang"><img src="https://avatars.githubusercontent.com/u/48160791?v=4?s=100" width="100px;" alt="Natalia"/><br /><sub><b>Natalia</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nataliasayang" title="Code">💻</a> <a href="#design-nataliasayang" title="Design">🎨</a> <a href="#blog-nataliasayang" title="Blogposts">📝</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://yergler.net/"><img src="https://avatars.githubusercontent.com/u/510875?v=4?s=100" width="100px;" alt="Nathan Yergler"/><br /><sub><b>Nathan Yergler</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nyergler" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicholasdower"><img src="https://avatars.githubusercontent.com/u/9117775?v=4?s=100" width="100px;" alt="Nick Dower"/><br /><sub><b>Nick Dower</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=nicholasdower" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/issues?q=author%3Anicholasdower" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nchilada"><img src="https://avatars.githubusercontent.com/u/692925?v=4?s=100" width="100px;" alt="Nikhil Chelliah"/><br /><sub><b>Nikhil Chelliah</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=nchilada" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OysteinHoiby"><img src="https://avatars.githubusercontent.com/u/49735055?v=4?s=100" width="100px;" alt="OysteinHoiby"/><br /><sub><b>OysteinHoiby</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=OysteinHoiby" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://pat.forringer.com/"><img src="https://avatars.githubusercontent.com/u/136456?v=4?s=100" width="100px;" alt="Patrick Forringer"/><br /><sub><b>Patrick Forringer</b></sub></a><br /><a href="#plugin-destos" title="Plugin/utility libraries">🔌</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://pd75.github.io/"><img src="https://avatars.githubusercontent.com/u/10294795?v=4?s=100" width="100px;" alt="Paul"/><br /><sub><b>Paul</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=PD75" title="Documentation">📖</a> <a href="#blog-PD75" title="Blogposts">📝</a> <a href="#translation-PD75" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/phillipthelen"><img src="https://avatars.githubusercontent.com/u/298062?v=4?s=100" width="100px;" alt="Phillip Thelen"/><br /><sub><b>Phillip Thelen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=phillipthelen" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pixieish"><img src="https://avatars.githubusercontent.com/u/32991415?v=4?s=100" width="100px;" alt="Pixieish"/><br /><sub><b>Pixieish</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Pixieish" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.uza.be/persoon/prof-dr-sorcha-ni-dhubhghaill"><img src="https://avatars.githubusercontent.com/u/30624634?v=4?s=100" width="100px;" alt="Prof. dr. Sorcha Ní Dhubhghaill"/><br /><sub><b>Prof. dr. Sorcha Ní Dhubhghaill</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sorchanidhubhghaill" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/QuentinFelix"><img src="https://avatars.githubusercontent.com/u/5288091?v=4?s=100" width="100px;" alt="Quentin FELIX"/><br /><sub><b>Quentin FELIX</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=QuentinFelix" title="Code">💻</a> <a href="#design-QuentinFelix" title="Design">🎨</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RikHekker"><img src="https://avatars.githubusercontent.com/u/31843274?v=4?s=100" width="100px;" alt="Rik Hekker"/><br /><sub><b>Rik Hekker</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ARikHekker" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://resume.livingston-gray.com/faq.html"><img src="https://avatars.githubusercontent.com/u/6462?v=4?s=100" width="100px;" alt="Sam Livingston-Gray"/><br /><sub><b>Sam Livingston-Gray</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=geeksam" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sannek"><img src="https://avatars.githubusercontent.com/u/17491062?v=4?s=100" width="100px;" alt="Sanne"/><br /><sub><b>Sanne</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=sannek" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tyrannogina"><img src="https://avatars.githubusercontent.com/u/19556565?v=4?s=100" width="100px;" alt="Sara Latorre"/><br /><sub><b>Sara Latorre</b></sub></a><br /><a href="#translation-Tyrannogina" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SeaZeeZee"><img src="https://avatars.githubusercontent.com/u/86711383?v=4?s=100" width="100px;" alt="SeaZeeZee"/><br /><sub><b>SeaZeeZee</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=SeaZeeZee" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SimonbJohnson"><img src="https://avatars.githubusercontent.com/u/2110742?v=4?s=100" width="100px;" alt="SimonbJohnson"/><br /><sub><b>SimonbJohnson</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3ASimonbJohnson" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SirCharlotte"><img src="https://avatars.githubusercontent.com/u/63847870?v=4?s=100" width="100px;" alt="SirCharlotte"/><br /><sub><b>SirCharlotte</b></sub></a><br /><a href="#translation-SirCharlotte" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://www.instagram.com/celine_mge/"><img src="https://avatars.githubusercontent.com/u/57619777?v=4?s=100" width="100px;" alt="Slylele"/><br /><sub><b>Slylele</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=Slylele" title="Documentation">📖</a> <a href="#translation-Slylele" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Soazillon"><img src="https://avatars.githubusercontent.com/u/40845940?v=4?s=100" width="100px;" alt="Soazillon"/><br /><sub><b>Soazillon</b></sub></a><br /><a href="#translation-Soazillon" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SoneaTheBest"><img src="https://avatars.githubusercontent.com/u/64635425?v=4?s=100" width="100px;" alt="SoneaTheBest"/><br /><sub><b>SoneaTheBest</b></sub></a><br /><a href="#translation-SoneaTheBest" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://metafly.info/"><img src="https://avatars.githubusercontent.com/u/961256?v=4?s=100" width="100px;" alt="Stefan Sydow"/><br /><sub><b>Stefan Sydow</b></sub></a><br /><a href="#translation-stsydow" title="Translation">🌍</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Documentation">📖</a> <a href="https://github.com/freesewing/freesewing/commits?author=stsydow" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/trentonTrama"><img src="https://avatars.githubusercontent.com/u/41126812?v=4?s=100" width="100px;" alt="Trent Trama"/><br /><sub><b>Trent Trama</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=trentonTrama" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TriploidTree"><img src="https://avatars.githubusercontent.com/u/4170521?v=4?s=100" width="100px;" alt="Tríona"/><br /><sub><b>Tríona</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=TriploidTree" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/theUnmutual"><img src="https://avatars.githubusercontent.com/u/22374635?v=4?s=100" width="100px;" alt="Unmutual"/><br /><sub><b>Unmutual</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=theUnmutual" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woutervdub"><img src="https://avatars.githubusercontent.com/u/24414629?v=4?s=100" width="100px;" alt="Wouter van Wageningen"/><br /><sub><b>Wouter van Wageningen</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woutervdub" title="Code">💻</a> <a href="#design-woutervdub" title="Design">🎨</a> <a href="#tool-woutervdub" title="Tools">🔧</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amysews"><img src="https://avatars.githubusercontent.com/u/25280778?v=4?s=100" width="100px;" alt="amysews"/><br /><sub><b>amysews</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=amysews" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/anna-puk"><img src="https://avatars.githubusercontent.com/u/100537439?v=4?s=100" width="100px;" alt="anna-puk"/><br /><sub><b>anna-puk</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=anna-puk" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/beautifulsummermoon"><img src="https://avatars.githubusercontent.com/u/40396388?v=4?s=100" width="100px;" alt="beautifulsummermoon"/><br /><sub><b>beautifulsummermoon</b></sub></a><br /><a href="#translation-beautifulsummermoon" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/berce"><img src="https://avatars.githubusercontent.com/u/10439709?v=4?s=100" width="100px;" alt="berce"/><br /><sub><b>berce</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=berce" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/biou"><img src="https://avatars.githubusercontent.com/u/1340376?v=4?s=100" width="100px;" alt="biou"/><br /><sub><b>biou</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=biou" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/bobgeorgethe3rd"><img src="https://avatars.githubusercontent.com/u/16866285?v=4?s=100" width="100px;" alt="bobgeorgethe3rd"/><br /><sub><b>bobgeorgethe3rd</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=bobgeorgethe3rd" title="Documentation">📖</a> <a href="#design-bobgeorgethe3rd" title="Design">🎨</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brmlyklr"><img src="https://avatars.githubusercontent.com/u/22308713?v=4?s=100" width="100px;" alt="brmlyklr"/><br /><sub><b>brmlyklr</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=brmlyklr" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="http://www.chrisbarrett.fr"><img src="https://avatars.githubusercontent.com/u/2373249?v=4?s=100" width="100px;" alt="chri5b"/><br /><sub><b>chri5b</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=chri5b" title="Tests">⚠️</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dingcycle"><img src="https://avatars.githubusercontent.com/u/1681985?v=4?s=100" width="100px;" alt="dingcycle"/><br /><sub><b>dingcycle</b></sub></a><br /><a href="#translation-dingcycle" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/drowned-in-books"><img src="https://avatars.githubusercontent.com/u/100040772?v=4?s=100" width="100px;" alt="drowned-in-books"/><br /><sub><b>drowned-in-books</b></sub></a><br /><a href="#question-drowned-in-books" title="Answering Questions">💬</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/econo202"><img src="https://avatars.githubusercontent.com/u/34138153?v=4?s=100" width="100px;" alt="econo202"/><br /><sub><b>econo202</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=econo202" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ericamattos"><img src="https://avatars.githubusercontent.com/u/4341417?v=4?s=100" width="100px;" alt="ericamattos"/><br /><sub><b>ericamattos</b></sub></a><br /><a href="#translation-ericamattos" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/evilrobotfromouterspace"><img src="https://avatars.githubusercontent.com/u/143673955?v=4?s=100" width="100px;" alt="evilrobotfromouterspace"/><br /><sub><b>evilrobotfromouterspace</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Aevilrobotfromouterspace" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fightingrabbit"><img src="https://avatars.githubusercontent.com/u/25751445?v=4?s=100" width="100px;" alt="fightingrabbit"/><br /><sub><b>fightingrabbit</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=fightingrabbit" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DocSpencer77"><img src="https://avatars.githubusercontent.com/u/43393580?v=4?s=100" width="100px;" alt="gaylyndie"/><br /><sub><b>gaylyndie</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=DocSpencer77" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/grimlokason"><img src="https://avatars.githubusercontent.com/u/5112238?v=4?s=100" width="100px;" alt="grimlokason"/><br /><sub><b>grimlokason</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=grimlokason" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://weblog.redisdead.net"><img src="https://avatars.githubusercontent.com/u/6494414?v=4?s=100" width="100px;" alt="hellgy"/><br /><sub><b>hellgy</b></sub></a><br /><a href="#design-hellgy" title="Design">🎨</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jackseye"><img src="https://avatars.githubusercontent.com/u/27834526?v=4?s=100" width="100px;" alt="jackseye"/><br /><sub><b>jackseye</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=jackseye" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marckiesel"><img src="https://avatars.githubusercontent.com/u/39653780?v=4?s=100" width="100px;" alt="marckiesel"/><br /><sub><b>marckiesel</b></sub></a><br /><a href="#translation-marckiesel" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/marpants"><img src="https://avatars.githubusercontent.com/u/61366665?v=4?s=100" width="100px;" alt="marpants"/><br /><sub><b>marpants</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=marpants" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://tech.lgbt/@mergerg"><img src="https://avatars.githubusercontent.com/u/64447714?v=4?s=100" width="100px;" alt="mergerg"/><br /><sub><b>mergerg</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=raphaelsiz" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Mesil"><img src="https://avatars.githubusercontent.com/u/14284175?v=4?s=100" width="100px;" alt="mesil"/><br /><sub><b>mesil</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/issues?q=author%3Amesil" title="Bug reports">🐛</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/starfetch"><img src="https://avatars.githubusercontent.com/u/80041179?v=4?s=100" width="100px;" alt="starfetch"/><br /><sub><b>starfetch</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Code">💻</a> <a href="https://github.com/freesewing/freesewing/commits?author=starfetch" title="Documentation">📖</a> <a href="#translation-starfetch" title="Translation">🌍</a> <a href="#design-starfetch" title="Design">🎨</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/timorl"><img src="https://avatars.githubusercontent.com/u/4363804?v=4?s=100" width="100px;" alt="timorl"/><br /><sub><b>timorl</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=timorl" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ttimearl"><img src="https://avatars.githubusercontent.com/u/77916590?v=4?s=100" width="100px;" alt="ttimearl"/><br /><sub><b>ttimearl</b></sub></a><br /><a href="#content-ttimearl" title="Content">🖋</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chrisgloom"><img src="https://avatars.githubusercontent.com/u/15905991?v=4?s=100" width="100px;" alt="tuesgloomsday"/><br /><sub><b>tuesgloomsday</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=chrisgloom" title="Documentation">📖</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/valadaptive"><img src="https://avatars.githubusercontent.com/u/79560998?v=4?s=100" width="100px;" alt="valadaptive"/><br /><sub><b>valadaptive</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=valadaptive" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/viocky"><img src="https://avatars.githubusercontent.com/u/39279173?v=4?s=100" width="100px;" alt="viocky"/><br /><sub><b>viocky</b></sub></a><br /><a href="#translation-viocky" title="Translation">🌍</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/woolishboy"><img src="https://avatars.githubusercontent.com/u/57816321?v=4?s=100" width="100px;" alt="woolishboy"/><br /><sub><b>woolishboy</b></sub></a><br /><a href="https://github.com/freesewing/freesewing/commits?author=woolishboy" title="Code">💻</a></td>
|
|
||||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cloutiy"><img src="https://avatars.githubusercontent.com/u/8433147?v=4?s=100" width="100px;" alt="yc"/><br /><sub><b>yc</b></sub></a><br /><a href="#translation-cloutiy" title="Translation">🌍</a></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<!-- markdownlint-restore -->
|
|
||||||
<!-- prettier-ignore-end -->
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
/* This script will build the package with esbuild */
|
|
||||||
import esbuild from 'esbuild'
|
|
||||||
import pkg from './package.json' assert { type: 'json' }
|
|
||||||
|
|
||||||
// Create banner based on package info
|
|
||||||
const banner = `/**
|
|
||||||
* ${pkg.name} | v${pkg.version}
|
|
||||||
* ${pkg.description}
|
|
||||||
* (c) ${new Date().getFullYear()} ${pkg.author}
|
|
||||||
* @license ${pkg.license}
|
|
||||||
*/`
|
|
||||||
|
|
||||||
// Shared esbuild options
|
|
||||||
const options = {
|
|
||||||
banner: { js: banner },
|
|
||||||
bundle: true,
|
|
||||||
entryPoints: ['src/index.mjs'],
|
|
||||||
format: 'esm',
|
|
||||||
outfile: 'dist/index.mjs',
|
|
||||||
external: ['@freesewing'],
|
|
||||||
metafile: process.env.VERBOSE ? true : false,
|
|
||||||
minify: process.env.NO_MINIFY ? false : true,
|
|
||||||
sourcemap: true,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Let esbuild generate the build
|
|
||||||
const build = async () => {
|
|
||||||
const result = await esbuild.build(options).catch(() => process.exit(1))
|
|
||||||
|
|
||||||
if (process.env.VERBOSE) {
|
|
||||||
const info = await esbuild.analyzeMetafile(result.metafile)
|
|
||||||
console.log(info)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
build()
|
|
|
@ -1,36 +0,0 @@
|
||||||
import pkg from '../package.json' assert { type: 'json' }
|
|
||||||
|
|
||||||
const { version } = pkg
|
|
||||||
|
|
||||||
export default {
|
|
||||||
version,
|
|
||||||
name: 'tutorial',
|
|
||||||
design: 'joostdecock',
|
|
||||||
code: 'joostdecock',
|
|
||||||
department: 'accessorties',
|
|
||||||
type: 'pattern',
|
|
||||||
difficulty: 1,
|
|
||||||
tags: ['example'],
|
|
||||||
optionGroups: {
|
|
||||||
fit: ['neckRatio', 'widthRatio', 'lengthRatio'],
|
|
||||||
box: ['size'],
|
|
||||||
},
|
|
||||||
measurements: ['head'],
|
|
||||||
inject: {
|
|
||||||
step4: 'step3',
|
|
||||||
step5: 'step4',
|
|
||||||
step6: 'step5',
|
|
||||||
step7: 'step6',
|
|
||||||
step8: 'step7',
|
|
||||||
step9: 'step8',
|
|
||||||
step10: 'step9',
|
|
||||||
step11: 'step10',
|
|
||||||
},
|
|
||||||
parts: ['step1', 'step2', 'bib'],
|
|
||||||
options: {
|
|
||||||
size: { pct: 50, min: 10, max: 100 },
|
|
||||||
neckRatio: { pct: 80, min: 70, max: 90 },
|
|
||||||
widthRatio: { pct: 45, min: 35, max: 55 },
|
|
||||||
lengthRatio: { pct: 75, min: 55, max: 85 },
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
// This file is auto-generated | All changes you make will be overwritten.
|
|
||||||
export const name = '@freesewing/tutorial'
|
|
||||||
export const version = '3.0.0-alpha.10'
|
|
||||||
export const data = { name, version }
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {
|
|
||||||
"finishWithBiasTape": "Finish with bias tape"
|
|
||||||
},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
import en from './en.json' assert { type: 'json' }
|
|
||||||
import de from './de.json' assert { type: 'json' }
|
|
||||||
import es from './es.json' assert { type: 'json' }
|
|
||||||
import fr from './fr.json' assert { type: 'json' }
|
|
||||||
import nl from './nl.json' assert { type: 'json' }
|
|
||||||
import uk from './uk.json' assert { type: 'json' }
|
|
||||||
|
|
||||||
export const i18n = { en, de, es, fr, nl, uk }
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"t": "Tutorial",
|
|
||||||
"d": "A FreeSewing pattern used in our pattern design tutorial",
|
|
||||||
"p": {
|
|
||||||
"bib": "Bib"
|
|
||||||
},
|
|
||||||
"s": {},
|
|
||||||
"o": {}
|
|
||||||
}
|
|
|
@ -1,73 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@freesewing/tutorial",
|
|
||||||
"version": "3.0.0-alpha.10",
|
|
||||||
"description": "A FreeSewing pattern for a baby bib that's used in our tutorial",
|
|
||||||
"author": "Joost De Cock <joost@joost.at> (https://github.com/joostdecock)",
|
|
||||||
"homepage": "https://freesewing.org/",
|
|
||||||
"repository": "github:freesewing/freesewing",
|
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/freesewing/freesewing/issues"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"type": "individual",
|
|
||||||
"url": "https://freesewing.org/patrons/join"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"freesewing",
|
|
||||||
"design",
|
|
||||||
"diy",
|
|
||||||
"fashion",
|
|
||||||
"made to measure",
|
|
||||||
"parametric design",
|
|
||||||
"pattern",
|
|
||||||
"sewing",
|
|
||||||
"sewing pattern"
|
|
||||||
],
|
|
||||||
"type": "module",
|
|
||||||
"module": "dist/index.mjs",
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"internal": "./src/index.mjs",
|
|
||||||
"default": "./dist/index.mjs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"build": "node build.mjs",
|
|
||||||
"build:all": "yarn build",
|
|
||||||
"clean": "rimraf dist",
|
|
||||||
"mbuild": "NO_MINIFY=1 node build.mjs",
|
|
||||||
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
|
|
||||||
"test": "npx mocha tests/*.test.mjs",
|
|
||||||
"vbuild": "VERBOSE=1 node build.mjs",
|
|
||||||
"lab": "cd ../../sites/lab && yarn start",
|
|
||||||
"tips": "node ../../scripts/help.mjs",
|
|
||||||
"lint": "npx eslint 'src/**' 'tests/*.mjs'",
|
|
||||||
"prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'",
|
|
||||||
"testci": "NODE_OPTIONS=\"--conditions=internal\" npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js",
|
|
||||||
"wbuild": "node build.mjs",
|
|
||||||
"wbuild:all": "yarn wbuild"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@freesewing/core": "3.0.0-alpha.10"
|
|
||||||
},
|
|
||||||
"dependencies": {},
|
|
||||||
"devDependencies": {
|
|
||||||
"mocha": "10.2.0",
|
|
||||||
"chai": "4.3.9",
|
|
||||||
"@freesewing/models": "3.0.0-alpha.10",
|
|
||||||
"@freesewing/plugin-timing": "3.0.0-alpha.10"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"dist/*",
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public",
|
|
||||||
"tag": "next"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "18",
|
|
||||||
"npm": "9"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,233 +0,0 @@
|
||||||
import { configpart } from './configpart.mjs'
|
|
||||||
|
|
||||||
export const bib = {
|
|
||||||
name: 'tutorial.bib',
|
|
||||||
after: configpart,
|
|
||||||
draft: ({
|
|
||||||
Point,
|
|
||||||
points,
|
|
||||||
Path,
|
|
||||||
paths,
|
|
||||||
measurements,
|
|
||||||
options,
|
|
||||||
macro,
|
|
||||||
complete,
|
|
||||||
snippets,
|
|
||||||
Snippet,
|
|
||||||
paperless,
|
|
||||||
part,
|
|
||||||
}) => {
|
|
||||||
// Construct the neck opening
|
|
||||||
let tweak = 1
|
|
||||||
let target = (measurements.head * options.neckRatio) / 4
|
|
||||||
let delta
|
|
||||||
do {
|
|
||||||
points.right = new Point((tweak * measurements.head) / 10, 0)
|
|
||||||
points.bottom = new Point(0, (tweak * measurements.head) / 12)
|
|
||||||
|
|
||||||
points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)
|
|
||||||
points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)
|
|
||||||
|
|
||||||
paths.neck = new Path()
|
|
||||||
.move(points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
|
|
||||||
delta = paths.neck.length() - target
|
|
||||||
if (delta > 0) tweak = tweak * 0.99
|
|
||||||
else tweak = tweak * 1.02
|
|
||||||
} while (Math.abs(delta) > 1)
|
|
||||||
|
|
||||||
points.rightCp2 = points.rightCp1.flipY()
|
|
||||||
points.bottomCp1 = points.bottomCp2.flipX()
|
|
||||||
|
|
||||||
points.left = points.right.flipX()
|
|
||||||
points.leftCp1 = points.rightCp2.flipX()
|
|
||||||
points.leftCp2 = points.rightCp1.flipX()
|
|
||||||
|
|
||||||
points.top = points.bottom.flipY()
|
|
||||||
points.topCp1 = points.bottomCp2.flipY()
|
|
||||||
points.topCp2 = points.bottomCp1.flipY()
|
|
||||||
|
|
||||||
// Construct the outline
|
|
||||||
let width = measurements.head * options.widthRatio
|
|
||||||
let length = measurements.head * options.lengthRatio
|
|
||||||
|
|
||||||
points.topLeft = new Point(width / -2, points.top.y - (width / 2 - points.right.x))
|
|
||||||
points.topRight = points.topLeft.shift(0, width)
|
|
||||||
points.bottomLeft = points.topLeft.shift(-90, length)
|
|
||||||
points.bottomRight = points.topRight.shift(-90, length)
|
|
||||||
|
|
||||||
points.edgeLeft = new Point(points.topLeft.x, points.left.y)
|
|
||||||
points.edgeRight = new Point(points.topRight.x, points.right.y)
|
|
||||||
points.edgeTop = new Point(0, points.topLeft.y)
|
|
||||||
|
|
||||||
points.edgeLeftCp = points.edgeLeft.shiftFractionTowards(points.topLeft, 0.5)
|
|
||||||
points.edgeRightCp = points.edgeLeftCp.flipX()
|
|
||||||
points.edgeTopLeftCp = points.edgeTop.shiftFractionTowards(points.topLeft, 0.5)
|
|
||||||
points.edgeTopRightCp = points.edgeTopLeftCp.flipX()
|
|
||||||
|
|
||||||
// Round the end of the straps
|
|
||||||
let strap = points.edgeTop.dy(points.top)
|
|
||||||
|
|
||||||
points.tipRight = points.edgeTop.translate(strap / 2, strap / 2)
|
|
||||||
points.tipRightTop = new Point(points.tipRight.x, points.edgeTop.y)
|
|
||||||
points.tipRightBottom = new Point(points.tipRight.x, points.top.y)
|
|
||||||
|
|
||||||
macro('round', {
|
|
||||||
from: points.edgeTop,
|
|
||||||
to: points.tipRight,
|
|
||||||
via: points.tipRightTop,
|
|
||||||
prefix: 'tipRightTop',
|
|
||||||
})
|
|
||||||
macro('round', {
|
|
||||||
from: points.tipRight,
|
|
||||||
to: points.top,
|
|
||||||
via: points.tipRightBottom,
|
|
||||||
prefix: 'tipRightBottom',
|
|
||||||
})
|
|
||||||
|
|
||||||
// Rotate straps so they don't overlap
|
|
||||||
let rotateThese = [
|
|
||||||
'edgeTopLeftCp',
|
|
||||||
'edgeTop',
|
|
||||||
'tipRight',
|
|
||||||
'tipRightTop',
|
|
||||||
'tipRightTopStart',
|
|
||||||
'tipRightTopCp1',
|
|
||||||
'tipRightTopCp2',
|
|
||||||
'tipRightTopEnd',
|
|
||||||
'tipRightBottomStart',
|
|
||||||
'tipRightBottomCp1',
|
|
||||||
'tipRightBottomCp2',
|
|
||||||
'tipRightBottomEnd',
|
|
||||||
'tipRightBottom',
|
|
||||||
'top',
|
|
||||||
'topCp2',
|
|
||||||
]
|
|
||||||
|
|
||||||
while (points.tipRightBottomStart.x > -1) {
|
|
||||||
for (let p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add points to anchor snaps on
|
|
||||||
points.snapLeft = points.top.shiftFractionTowards(points.edgeTop, 0.5)
|
|
||||||
|
|
||||||
// Mirror points to the other side
|
|
||||||
points.edgeTopRightCp = points.edgeTopLeftCp.flipX()
|
|
||||||
points.topCp1 = points.topCp2.flipX()
|
|
||||||
points.tipLeftTopStart = points.tipRightTopStart.flipX()
|
|
||||||
points.tipLeftTopCp1 = points.tipRightTopCp1.flipX()
|
|
||||||
points.tipLeftTopCp2 = points.tipRightTopCp2.flipX()
|
|
||||||
points.tipLeftTopEnd = points.tipRightTopEnd.flipX()
|
|
||||||
points.tipLeftBottomStart = points.tipRightBottomStart.flipX()
|
|
||||||
points.tipLeftBottomCp1 = points.tipRightBottomCp1.flipX()
|
|
||||||
points.tipLeftBottomCp2 = points.tipRightBottomCp2.flipX()
|
|
||||||
points.tipLeftBottomEnd = points.tipRightBottomEnd.flipX()
|
|
||||||
points.snapRight = points.snapLeft.flipX()
|
|
||||||
|
|
||||||
// Round the bottom of the bib
|
|
||||||
// Radius is fixed, but you could use an option for it)
|
|
||||||
macro('round', {
|
|
||||||
from: points.topLeft,
|
|
||||||
to: points.bottomRight,
|
|
||||||
via: points.bottomLeft,
|
|
||||||
radius: points.bottomRight.x / 4,
|
|
||||||
prefix: 'bottomLeft',
|
|
||||||
})
|
|
||||||
macro('round', {
|
|
||||||
from: points.bottomLeft,
|
|
||||||
to: points.topRight,
|
|
||||||
via: points.bottomRight,
|
|
||||||
radius: points.bottomRight.x / 4,
|
|
||||||
prefix: 'bottomRight',
|
|
||||||
})
|
|
||||||
|
|
||||||
// Construct the path
|
|
||||||
paths.seam = new Path()
|
|
||||||
.move(points.edgeLeft)
|
|
||||||
.line(points.bottomLeftStart)
|
|
||||||
.curve(points.bottomLeftCp1, points.bottomLeftCp2, points.bottomLeftEnd)
|
|
||||||
.line(points.bottomRightStart)
|
|
||||||
.curve(points.bottomRightCp1, points.bottomRightCp2, points.bottomRightEnd)
|
|
||||||
.line(points.edgeRight)
|
|
||||||
.curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)
|
|
||||||
.curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)
|
|
||||||
.curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)
|
|
||||||
.curve(points.topCp1, points.rightCp2, points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
.curve(points.bottomCp1, points.leftCp2, points.left)
|
|
||||||
.curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)
|
|
||||||
.curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)
|
|
||||||
.curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)
|
|
||||||
.curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)
|
|
||||||
.close()
|
|
||||||
.attr('class', 'fabric')
|
|
||||||
|
|
||||||
// Complete?
|
|
||||||
if (complete) {
|
|
||||||
// Add the snaps
|
|
||||||
snippets.snapStud = new Snippet('snap-stud', points.snapLeft)
|
|
||||||
snippets.snapSocket = new Snippet('snap-socket', points.snapRight).attr('opacity', 0.5)
|
|
||||||
|
|
||||||
// Add the bias tape
|
|
||||||
paths.bias = paths.seam
|
|
||||||
.offset(-5)
|
|
||||||
.attr('class', 'various dashed')
|
|
||||||
.attr('data-text', 'tutorial:finishWithBiasTape')
|
|
||||||
.attr('data-text-class', 'center fill-various')
|
|
||||||
|
|
||||||
// Add the title
|
|
||||||
points.title = points.bottom.shift(-90, 45)
|
|
||||||
macro('title', {
|
|
||||||
at: points.title,
|
|
||||||
nr: 1,
|
|
||||||
title: 'bib',
|
|
||||||
})
|
|
||||||
|
|
||||||
// Add the scalebox
|
|
||||||
points.scalebox = points.title.shift(-90, 55)
|
|
||||||
macro('scalebox', { at: points.scalebox })
|
|
||||||
|
|
||||||
// Add the logo
|
|
||||||
points.logo = new Point(0, 0)
|
|
||||||
snippets.logo = new Snippet('logo', points.logo)
|
|
||||||
|
|
||||||
// Paperless?
|
|
||||||
if (paperless) {
|
|
||||||
// Add dimensions
|
|
||||||
macro('hd', {
|
|
||||||
from: points.bottomLeftStart,
|
|
||||||
to: points.bottomRightEnd,
|
|
||||||
y: points.bottomLeft.y + 15,
|
|
||||||
})
|
|
||||||
macro('vd', {
|
|
||||||
from: points.bottomRightStart,
|
|
||||||
to: points.bottom,
|
|
||||||
x: points.bottomRight.x + 15,
|
|
||||||
})
|
|
||||||
macro('vd', {
|
|
||||||
from: points.bottomRightStart,
|
|
||||||
to: points.right,
|
|
||||||
x: points.bottomRight.x + 30,
|
|
||||||
})
|
|
||||||
macro('vd', {
|
|
||||||
from: points.bottomRightStart,
|
|
||||||
to: points.tipLeftTopStart,
|
|
||||||
x: points.bottomRight.x + 45,
|
|
||||||
})
|
|
||||||
macro('hd', {
|
|
||||||
from: points.left,
|
|
||||||
to: points.right,
|
|
||||||
y: points.left.y + 25,
|
|
||||||
})
|
|
||||||
macro('ld', {
|
|
||||||
from: points.tipLeftBottomEnd,
|
|
||||||
to: points.tipLeftTopStart,
|
|
||||||
d: -15,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
// This tutorial design is kinda weird, so we've
|
|
||||||
// setup this part to hold options & measurements config
|
|
||||||
export const configpart = {
|
|
||||||
name: 'tutorial.configpart',
|
|
||||||
measurements: ['head'],
|
|
||||||
options: {
|
|
||||||
size: { pct: 50, min: 10, max: 100 },
|
|
||||||
neckRatio: { pct: 80, min: 70, max: 90 },
|
|
||||||
widthRatio: { pct: 45, min: 35, max: 55 },
|
|
||||||
lengthRatio: { pct: 75, min: 55, max: 85 },
|
|
||||||
},
|
|
||||||
hide: { self: true },
|
|
||||||
draft: ({ part }) => part,
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
import { Design } from '@freesewing/core'
|
|
||||||
import { data } from '../data.mjs'
|
|
||||||
import { i18n } from '../i18n/index.mjs'
|
|
||||||
import { step1, step2, step3, step4 } from './step1-4.mjs'
|
|
||||||
import { step5, step6, step7, step8 } from './step5-8.mjs'
|
|
||||||
import { step9, step10, step11 } from './step9-11.mjs'
|
|
||||||
import { bib } from './bib.mjs'
|
|
||||||
|
|
||||||
// Setup our new design
|
|
||||||
const Tutorial = new Design({
|
|
||||||
data,
|
|
||||||
parts: [step1, step2, step3, step4, step5, step6, step7, step8, step9, step10, step11, bib],
|
|
||||||
})
|
|
||||||
|
|
||||||
// Named exports
|
|
||||||
export {
|
|
||||||
step1,
|
|
||||||
step2,
|
|
||||||
step3,
|
|
||||||
step4,
|
|
||||||
step5,
|
|
||||||
step6,
|
|
||||||
step7,
|
|
||||||
step8,
|
|
||||||
step9,
|
|
||||||
step10,
|
|
||||||
step11,
|
|
||||||
bib,
|
|
||||||
Tutorial,
|
|
||||||
i18n,
|
|
||||||
}
|
|
|
@ -1,138 +0,0 @@
|
||||||
import { configpart } from './configpart.mjs'
|
|
||||||
|
|
||||||
export const step1 = {
|
|
||||||
name: 'tutorial.step1',
|
|
||||||
after: configpart,
|
|
||||||
draft: ({
|
|
||||||
options,
|
|
||||||
Point,
|
|
||||||
Path,
|
|
||||||
points,
|
|
||||||
paths,
|
|
||||||
Snippet,
|
|
||||||
snippets,
|
|
||||||
complete,
|
|
||||||
sa,
|
|
||||||
store,
|
|
||||||
paperless,
|
|
||||||
macro,
|
|
||||||
part,
|
|
||||||
}) => {
|
|
||||||
const w = 500 * options.size
|
|
||||||
points.topLeft = new Point(0, 0)
|
|
||||||
points.topRight = new Point(w, 0)
|
|
||||||
points.bottomLeft = new Point(0, w / 2)
|
|
||||||
points.bottomRight = new Point(w, w / 2)
|
|
||||||
|
|
||||||
paths.seam = new Path()
|
|
||||||
.move(points.topLeft)
|
|
||||||
.line(points.bottomLeft)
|
|
||||||
.line(points.bottomRight)
|
|
||||||
.line(points.topRight)
|
|
||||||
.line(points.topLeft)
|
|
||||||
.close()
|
|
||||||
.attr('class', 'fabric')
|
|
||||||
|
|
||||||
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')
|
|
||||||
/*
|
|
||||||
* Annotations
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Cutlist
|
|
||||||
store.cutlist.setCut({ cut: 1, from: 'fabric' })
|
|
||||||
|
|
||||||
// Logo & Hello
|
|
||||||
points.logo = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
|
|
||||||
snippets.logo = new Snippet('logo', points.logo)
|
|
||||||
|
|
||||||
if (complete) points.text = points.logo.shift(-90, w / 8).addText('hello', 'center')
|
|
||||||
|
|
||||||
//Dimensions
|
|
||||||
macro('hd', {
|
|
||||||
id: 'width',
|
|
||||||
from: points.bottomLeft,
|
|
||||||
to: points.bottomRight,
|
|
||||||
y: points.bottomLeft.y + sa + 15,
|
|
||||||
})
|
|
||||||
macro('vd', {
|
|
||||||
id: 'height',
|
|
||||||
from: points.bottomRight,
|
|
||||||
to: points.topRight,
|
|
||||||
x: points.topRight.x + sa + 15,
|
|
||||||
})
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step2 = {
|
|
||||||
name: 'tutorial.step2',
|
|
||||||
after: configpart,
|
|
||||||
draft: ({ Point, points, Path, paths, measurements, part }) => {
|
|
||||||
points.right = new Point(measurements.head / 10, 0)
|
|
||||||
points.bottom = new Point(0, measurements.head / 12)
|
|
||||||
|
|
||||||
points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)
|
|
||||||
points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)
|
|
||||||
|
|
||||||
paths.neck = new Path()
|
|
||||||
.move(points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step3 = {
|
|
||||||
name: 'tutorial.step3',
|
|
||||||
after: configpart,
|
|
||||||
draft: ({ Point, points, Path, paths, measurements, options, part }) => {
|
|
||||||
let tweak = 1
|
|
||||||
let target = (measurements.head * options.neckRatio) / 4
|
|
||||||
let delta
|
|
||||||
do {
|
|
||||||
points.right = new Point((tweak * measurements.head) / 10, 0)
|
|
||||||
points.bottom = new Point(0, (tweak * measurements.head) / 12)
|
|
||||||
|
|
||||||
points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)
|
|
||||||
points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)
|
|
||||||
|
|
||||||
paths.neck = new Path()
|
|
||||||
.move(points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
|
|
||||||
delta = paths.neck.length() - target
|
|
||||||
if (delta > 0) tweak = tweak * 0.99
|
|
||||||
else tweak = tweak * 1.02
|
|
||||||
} while (Math.abs(delta) > 1)
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step4 = {
|
|
||||||
name: 'tutorial.step4',
|
|
||||||
from: step3,
|
|
||||||
draft: ({ points, Path, paths, part }) => {
|
|
||||||
points.rightCp2 = points.rightCp1.flipY()
|
|
||||||
points.bottomCp1 = points.bottomCp2.flipX()
|
|
||||||
|
|
||||||
points.left = points.right.flipX()
|
|
||||||
points.leftCp1 = points.rightCp2.flipX()
|
|
||||||
points.leftCp2 = points.rightCp1.flipX()
|
|
||||||
|
|
||||||
points.top = points.bottom.flipY()
|
|
||||||
points.topCp1 = points.bottomCp2.flipY()
|
|
||||||
points.topCp2 = points.bottomCp1.flipY()
|
|
||||||
|
|
||||||
paths.neck = new Path()
|
|
||||||
.move(points.top)
|
|
||||||
.curve(points.topCp2, points.leftCp1, points.left)
|
|
||||||
.curve(points.leftCp2, points.bottomCp1, points.bottom)
|
|
||||||
.curve(points.bottomCp2, points.rightCp1, points.right)
|
|
||||||
.curve(points.rightCp2, points.topCp1, points.top)
|
|
||||||
.close()
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,131 +0,0 @@
|
||||||
import { step4 } from './step1-4.mjs'
|
|
||||||
|
|
||||||
export const step5 = {
|
|
||||||
name: 'tutorial.step5',
|
|
||||||
from: step4,
|
|
||||||
draft: ({ Point, points, Path, paths, measurements, options, part }) => {
|
|
||||||
const width = measurements.head * options.widthRatio
|
|
||||||
const length = measurements.head * options.lengthRatio
|
|
||||||
|
|
||||||
points.topLeft = new Point(width / -2, points.top.y - (width / 2 - points.right.x))
|
|
||||||
points.topRight = points.topLeft.shift(0, width)
|
|
||||||
points.bottomLeft = points.topLeft.shift(-90, length)
|
|
||||||
points.bottomRight = points.topRight.shift(-90, length)
|
|
||||||
|
|
||||||
paths.rect = new Path()
|
|
||||||
.move(points.topLeft)
|
|
||||||
.line(points.bottomLeft)
|
|
||||||
.line(points.bottomRight)
|
|
||||||
.line(points.topRight)
|
|
||||||
.line(points.topLeft)
|
|
||||||
.close()
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step6 = {
|
|
||||||
name: 'tutorial.step6',
|
|
||||||
from: step5,
|
|
||||||
draft: ({ Point, points, Path, paths, part }) => {
|
|
||||||
points.edgeLeft = new Point(points.topLeft.x, points.left.y)
|
|
||||||
points.edgeRight = new Point(points.topRight.x, points.right.y)
|
|
||||||
points.edgeTop = new Point(0, points.topLeft.y)
|
|
||||||
|
|
||||||
points.edgeLeftCp = points.edgeLeft.shiftFractionTowards(points.topLeft, 0.5)
|
|
||||||
points.edgeRightCp = points.edgeLeftCp.flipX()
|
|
||||||
points.edgeTopLeftCp = points.edgeTop.shiftFractionTowards(points.topLeft, 0.5)
|
|
||||||
points.edgeTopRightCp = points.edgeTopLeftCp.flipX()
|
|
||||||
|
|
||||||
paths.rect = new Path()
|
|
||||||
.move(points.edgeTop)
|
|
||||||
.curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)
|
|
||||||
.line(points.bottomLeft)
|
|
||||||
.line(points.bottomRight)
|
|
||||||
.line(points.edgeRight)
|
|
||||||
.curve(points.edgeRightCp, points.edgeTopRightCp, points.edgeTop)
|
|
||||||
.close()
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step7 = {
|
|
||||||
name: 'tutorial.step7',
|
|
||||||
from: step6,
|
|
||||||
draft: ({ Point, points, macro, part }) => {
|
|
||||||
const strap = points.edgeTop.dy(points.top)
|
|
||||||
|
|
||||||
points.tipRight = points.edgeTop.translate(strap / 2, strap / 2)
|
|
||||||
points.tipRightTop = new Point(points.tipRight.x, points.edgeTop.y)
|
|
||||||
points.tipRightBottom = new Point(points.tipRight.x, points.top.y)
|
|
||||||
|
|
||||||
macro('round', {
|
|
||||||
from: points.edgeTop,
|
|
||||||
to: points.tipRight,
|
|
||||||
via: points.tipRightTop,
|
|
||||||
prefix: 'tipRightTop',
|
|
||||||
})
|
|
||||||
macro('round', {
|
|
||||||
from: points.tipRight,
|
|
||||||
to: points.top,
|
|
||||||
via: points.tipRightBottom,
|
|
||||||
prefix: 'tipRightBottom',
|
|
||||||
})
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step8 = {
|
|
||||||
name: 'tutorial.step8',
|
|
||||||
from: step7,
|
|
||||||
draft: ({ points, Path, paths, macro, part }) => {
|
|
||||||
const rotateThese = [
|
|
||||||
'edgeTopLeftCp',
|
|
||||||
'edgeTop',
|
|
||||||
'tipRight',
|
|
||||||
'tipRightTop',
|
|
||||||
'tipRightTopStart',
|
|
||||||
'tipRightTopCp1',
|
|
||||||
'tipRightTopCp2',
|
|
||||||
'tipRightTopEnd',
|
|
||||||
'tipRightBottomStart',
|
|
||||||
'tipRightBottomCp1',
|
|
||||||
'tipRightBottomCp2',
|
|
||||||
'tipRightBottomEnd',
|
|
||||||
'tipRightBottom',
|
|
||||||
'top',
|
|
||||||
'topCp2',
|
|
||||||
]
|
|
||||||
while (points.tipRightBottomStart.x > -1) {
|
|
||||||
for (let p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft)
|
|
||||||
}
|
|
||||||
|
|
||||||
points.snapLeft = points.top.shiftFractionTowards(points.edgeTop, 0.5)
|
|
||||||
|
|
||||||
macro('round', {
|
|
||||||
from: points.edgeTop,
|
|
||||||
to: points.tipRight,
|
|
||||||
via: points.tipRightTop,
|
|
||||||
prefix: 'tipRightTop',
|
|
||||||
})
|
|
||||||
macro('round', {
|
|
||||||
from: points.tipRight,
|
|
||||||
to: points.top,
|
|
||||||
via: points.tipRightBottom,
|
|
||||||
prefix: 'tipRightBottom',
|
|
||||||
})
|
|
||||||
|
|
||||||
paths.rect = new Path()
|
|
||||||
.move(points.edgeTop)
|
|
||||||
.curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)
|
|
||||||
.line(points.bottomLeft)
|
|
||||||
.line(points.bottomRight)
|
|
||||||
.line(points.edgeRight)
|
|
||||||
.curve(points.edgeRightCp, points.edgeTopRightCp, points.edgeTop)
|
|
||||||
.close()
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,117 +0,0 @@
|
||||||
import { step8 } from './step5-8.mjs'
|
|
||||||
|
|
||||||
export const step9 = {
|
|
||||||
name: 'tutorial.step9',
|
|
||||||
from: step8,
|
|
||||||
draft: ({ points, Path, paths, part }) => {
|
|
||||||
points.edgeTopRightCp = points.edgeTopLeftCp.flipX()
|
|
||||||
points.topCp1 = points.topCp2.flipX()
|
|
||||||
points.tipLeftTopStart = points.tipRightTopStart.flipX()
|
|
||||||
points.tipLeftTopCp1 = points.tipRightTopCp1.flipX()
|
|
||||||
points.tipLeftTopCp2 = points.tipRightTopCp2.flipX()
|
|
||||||
points.tipLeftTopEnd = points.tipRightTopEnd.flipX()
|
|
||||||
points.tipLeftBottomStart = points.tipRightBottomStart.flipX()
|
|
||||||
points.tipLeftBottomCp1 = points.tipRightBottomCp1.flipX()
|
|
||||||
points.tipLeftBottomCp2 = points.tipRightBottomCp2.flipX()
|
|
||||||
points.tipLeftBottomEnd = points.tipRightBottomEnd.flipX()
|
|
||||||
points.snapRight = points.snapLeft.flipX()
|
|
||||||
|
|
||||||
paths.seam = new Path()
|
|
||||||
.move(points.edgeLeft)
|
|
||||||
.line(points.bottomLeft)
|
|
||||||
.line(points.bottomRight)
|
|
||||||
.line(points.edgeRight)
|
|
||||||
.curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)
|
|
||||||
.curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)
|
|
||||||
.curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)
|
|
||||||
.curve(points.topCp1, points.rightCp2, points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
.curve(points.bottomCp1, points.leftCp2, points.left)
|
|
||||||
.curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)
|
|
||||||
.curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)
|
|
||||||
.curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)
|
|
||||||
.curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)
|
|
||||||
.close()
|
|
||||||
.attr('class', 'fabric')
|
|
||||||
|
|
||||||
delete paths.neck
|
|
||||||
delete paths.rect
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step10 = {
|
|
||||||
name: 'tutorial.step10',
|
|
||||||
from: step9,
|
|
||||||
draft: ({ points, Path, paths, macro, part }) => {
|
|
||||||
macro('round', {
|
|
||||||
from: points.topLeft,
|
|
||||||
to: points.bottomRight,
|
|
||||||
via: points.bottomLeft,
|
|
||||||
radius: points.bottomRight.x / 4,
|
|
||||||
prefix: 'bottomLeft',
|
|
||||||
})
|
|
||||||
macro('round', {
|
|
||||||
from: points.bottomLeft,
|
|
||||||
to: points.topRight,
|
|
||||||
via: points.bottomRight,
|
|
||||||
radius: points.bottomRight.x / 4,
|
|
||||||
prefix: 'bottomRight',
|
|
||||||
})
|
|
||||||
|
|
||||||
paths.seam = new Path()
|
|
||||||
.move(points.edgeLeft)
|
|
||||||
.line(points.bottomLeftStart)
|
|
||||||
.curve(points.bottomLeftCp1, points.bottomLeftCp2, points.bottomLeftEnd)
|
|
||||||
.line(points.bottomRightStart)
|
|
||||||
.curve(points.bottomRightCp1, points.bottomRightCp2, points.bottomRightEnd)
|
|
||||||
.line(points.edgeRight)
|
|
||||||
.curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)
|
|
||||||
.curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)
|
|
||||||
.curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)
|
|
||||||
.curve(points.topCp1, points.rightCp2, points.right)
|
|
||||||
.curve(points.rightCp1, points.bottomCp2, points.bottom)
|
|
||||||
.curve(points.bottomCp1, points.leftCp2, points.left)
|
|
||||||
.curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)
|
|
||||||
.curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)
|
|
||||||
.curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)
|
|
||||||
.curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)
|
|
||||||
.close()
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
export const step11 = {
|
|
||||||
name: 'tutorial.step11',
|
|
||||||
from: step10,
|
|
||||||
draft: ({ Point, points, paths, macro, complete, snippets, Snippet, part }) => {
|
|
||||||
// Complete?
|
|
||||||
if (complete) {
|
|
||||||
snippets.snapStud = new Snippet('snap-stud', points.snapLeft)
|
|
||||||
snippets.snapSocket = new Snippet('snap-socket', points.snapRight).attr('opacity', 0.5)
|
|
||||||
|
|
||||||
paths.bias = paths.seam
|
|
||||||
.offset(-5)
|
|
||||||
.attr('class', 'various dashed')
|
|
||||||
.attr('data-text', 'finishWithBiasTape')
|
|
||||||
.attr('data-text-class', 'center fill-various')
|
|
||||||
|
|
||||||
points.title = points.bottom.shift(-90, 45)
|
|
||||||
macro('title', {
|
|
||||||
at: points.title,
|
|
||||||
nr: 1,
|
|
||||||
title: 'bib',
|
|
||||||
})
|
|
||||||
|
|
||||||
points.scalebox = points.title.shift(-90, 55)
|
|
||||||
macro('scalebox', { at: points.scalebox })
|
|
||||||
|
|
||||||
points.logo = new Point(0, 0)
|
|
||||||
snippets.logo = new Snippet('logo', points.logo)
|
|
||||||
}
|
|
||||||
|
|
||||||
return part
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
// This file is auto-generated | Any changes you make will be overwritten.
|
|
||||||
import { Tutorial, i18n } from '../src/index.mjs'
|
|
||||||
|
|
||||||
// Shared tests
|
|
||||||
import { testPatternConfig } from '../../../tests/designs/config.mjs'
|
|
||||||
import { testPatternI18n } from '../../../tests/designs/i18n.mjs'
|
|
||||||
import { testPatternDrafting } from '../../../tests/designs/drafting.mjs'
|
|
||||||
import { testPatternSampling } from '../../../tests/designs/sampling.mjs'
|
|
||||||
|
|
||||||
// Test config
|
|
||||||
testPatternConfig(Tutorial)
|
|
||||||
|
|
||||||
// Test translation
|
|
||||||
testPatternI18n(Tutorial, i18n)
|
|
||||||
|
|
||||||
// Test drafting - Change the second parameter to `true` to log errors
|
|
||||||
testPatternDrafting(Tutorial, false)
|
|
||||||
|
|
||||||
// Test sampling - Change the second parameter to `true` to log errors
|
|
||||||
testPatternSampling(Tutorial, false)
|
|
Loading…
Add table
Add a link
Reference in a new issue