diff --git a/.all-contributorsrc b/.all-contributorsrc index 7eabd1d839e..f827c7a3159 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -867,6 +867,61 @@ "contributions": [ "code" ] + }, + { + "login": "BenJamesBen", + "name": "BenJamesBen", + "avatar_url": "https://avatars.githubusercontent.com/u/109869956?v=4", + "profile": "https://github.com/BenJamesBen", + "contributions": [ + "code", + "doc" + ] + }, + { + "login": "SimonbJohnson", + "name": "SimonbJohnson", + "avatar_url": "https://avatars.githubusercontent.com/u/2110742?v=4", + "profile": "https://github.com/SimonbJohnson", + "contributions": [ + "bug" + ] + }, + { + "login": "joeschofield0", + "name": "Joe Schofield", + "avatar_url": "https://avatars.githubusercontent.com/u/47668691?v=4", + "profile": "https://github.com/joeschofield0", + "contributions": [ + "doc" + ] + }, + { + "login": "gregsadetsky", + "name": "Greg Sadetsky", + "avatar_url": "https://avatars.githubusercontent.com/u/1017304?v=4", + "profile": "https://greg.technology/", + "contributions": [ + "doc" + ] + }, + { + "login": "nchilada", + "name": "Nikhil Chelliah", + "avatar_url": "https://avatars.githubusercontent.com/u/692925?v=4", + "profile": "https://github.com/nchilada", + "contributions": [ + "doc" + ] + }, + { + "login": "OysteinHoiby", + "name": "OysteinHoiby", + "avatar_url": "https://avatars.githubusercontent.com/u/49735055?v=4", + "profile": "https://github.com/OysteinHoiby", + "contributions": [ + "code" + ] } ], "skipCi": true diff --git a/.github/ISSUE_TEMPLATE/01_bug-report.yaml b/.github/ISSUE_TEMPLATE/01_bug-report.yaml new file mode 100644 index 00000000000..7163615fb77 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_bug-report.yaml @@ -0,0 +1,135 @@ +--- +name: 🐛 Bug report +description: Report a problem, or something that went wrong +title: "[bug]: " +labels: [ "\U0001F41B bug" ] +body: + - type: markdown + attributes: + value: "Bugs happen :shrug: Please complete the information below so we know what's going on :point_down:" + - type: textarea + id: desc + attributes: + label: "What seems to be the problem? 🤔" + description: Please provide a clear and concise description of the problem you encountered + placeholder: | + When I generate a Simone with my dimensions, the corners of the yoke appear malformed. \ + This happens both in the lab as on freesewing.org. Seems to occur only when the `box pleat` option is enabled. + - type: dropdown + id: pkg + attributes: + label: "Design / Plugin / Package 🧐" + description: Do you know what design/plugin/package the bug is in? + multiple: true + options: + - designs/aaron + - designs/albert + - designs/bee + - designs/bella + - designs/benjamin + - designs/bent + - designs/bob + - designs/breanna + - designs/brian + - designs/bruce + - designs/carlita + - designs/carlton + - designs/cathrin + - designs/charlie + - designs/cornelius + - designs/diana + - designs/examples + - designs/florence + - designs/florent + - designs/hi + - designs/holmes + - designs/hortensia + - designs/huey + - designs/hugo + - designs/jaeger + - designs/legend + - designs/lucy + - designs/lunetius + - designs/noble + - designs/paco + - designs/penelope + - designs/plugintest + - designs/rendertest + - designs/sandy + - designs/shin + - designs/simon + - designs/simone + - designs/sven + - designs/tamiko + - designs/teagan + - designs/theo + - designs/tiberius + - designs/titan + - designs/trayvon + - designs/tutorial + - designs/unice + - designs/ursula + - designs/wahid + - designs/walburga + - designs/waralee + - designs/yuri + - plugins/plugin-banner + - plugins/plugin-bartack + - plugins/plugin-bundle + - plugins/plugin-bust + - plugins/plugin-buttons + - plugins/plugin-cutonfold + - plugins/plugin-dimension + - plugins/plugin-export-dxf + - plugins/plugin-flip + - plugins/plugin-gore + - plugins/plugin-grainline + - plugins/plugin-i18n + - plugins/plugin-logo + - plugins/plugin-measurements + - plugins/plugin-mirror + - plugins/plugin-notches + - plugins/plugin-round + - plugins/plugin-scalebox + - plugins/plugin-sprinkle + - plugins/plugin-svgattr + - plugins/plugin-theme + - plugins/plugin-title + - plugins/plugin-validate + - plugins/plugin-versionfree-svg + - packages/components + - packages/config-helpers + - packages/core + - packages/css-theme + - packages/gatsby-remark-jargon + - packages/i18n + - packages/models + - packages/mui-theme + - packages/new-design + - packages/pattern-info + - packages/prettier-config + - packages/rehype-jargon + - packages/remark-jargon + - packages/utils + - type: dropdown + id: patron + attributes: + label: Are you a FreeSewing patron? 😃 + description: "Patrons support us financially :pray: so they get priority" + options: + - "Yes, I am a tier-2 patron ❤️" + - "Yes, I am a tier-4 patron ❤️ 💙" + - "Yes, I am a tier-8 patron ❤️ 💙 💜" + - "No, I am not 😞" + validations: + required: true + - type: textarea + id: extra + attributes: + label: Additional context + description: Add any other context or screenshots about the issue you are facing here. + - type: markdown + attributes: + value: | + Please keep in mind that **FreeSewing is a community project** that depends on **[your support](https://freesewing.org/community/join/)**. +--- diff --git a/.github/ISSUE_TEMPLATE/02_feature-request.yaml b/.github/ISSUE_TEMPLATE/02_feature-request.yaml new file mode 100644 index 00000000000..51e10143ba5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_feature-request.yaml @@ -0,0 +1,38 @@ +--- +name: 🚀 Feature request +description: Suggest an idea to make FreeSewing better +title: "[feature]: " +labels: [ "\U0001F48E enhancement" ] +body: + - type: markdown + attributes: + value: "You've got a great idea to make FreeSewing better? Tell us all about it :point_down:" + - type: textarea + id: desc + attributes: + label: "What is it that you would like to see happen? 🤔" + description: Please provide a clear and concise description of what you want to happen + placeholder: | + I would like to be able to export patterns as a Gitlab snippet, just like they can be exported as a Github gist + - type: dropdown + id: patron + attributes: + label: Are you a FreeSewing patron? 😃 + description: "Patrons support us financially :pray: so they get priority" + options: + - "Yes, I am a tier-2 patron ❤️" + - "Yes, I am a tier-4 patron ❤️ 💙" + - "Yes, I am a tier-8 patron ❤️ 💙 💜" + - "No, I am not 😞" + validations: + required: true + - type: textarea + id: extra + attributes: + label: Additional context + description: Add any other context or screenshots you think will be helpful here. + - type: markdown + attributes: + value: | + Please keep in mind that **FreeSewing is a community project** that depends on **[your support](https://freesewing.org/community/join/)**. +--- diff --git a/.github/ISSUE_TEMPLATE/03_documentation-update.yaml b/.github/ISSUE_TEMPLATE/03_documentation-update.yaml new file mode 100644 index 00000000000..36920f336fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_documentation-update.yaml @@ -0,0 +1,44 @@ +--- +description: Suggest updates to FreeSewing documentation or site content +labels: [ "\U0001F44D good first issue", "\U0001F4D6 documentation" ] +name: "📝 Documentation or content update" +title: "[docs]: " +body: + - type: markdown + attributes: + value: "Found an issue in our documentation, a blog post, showcase or other content? Please complete the information below so we can fix it :point_down:" + - type: input + id: url + attributes: + label: "Where can we see the problem? 🤔" + description: Provide a link here to the page to be updated. If the page provides an anchor link to the section of interest (indicated by a chain icon next to a heading) please copy that link if possible. + placeholder: "https://freesewing/docs/patterns/aaron/cutting" + - type: dropdown + id: patron + attributes: + label: Are you a FreeSewing patron? 😃 + description: "Patrons support us financially :pray: so they get priority" + options: + - "Yes, I am a tier-2 patron ❤️" + - "Yes, I am a tier-4 patron ❤️ 💙" + - "Yes, I am a tier-8 patron ❤️ 💙 💜" + - "No, I am not 😞" + validations: + required: true + - type: textarea + id: suggestion + attributes: + label: Suggested content + description: Do you have any changes you'd like to suggest to improve the documentation? + - type: textarea + id: extra + attributes: + label: Additional context + description: Add any other context or screenshots about the issue you found here. + - type: markdown + attributes: + value: Looking to tackle this issue? Check out our [markdown guide](https://freesewing.dev/guides/markdown) to learn how to format documentation. + - type: markdown + attributes: + value: Please keep in mind that **FreeSewing is a community project** that depends on **[your support](https://freesewing.org/community/join/)**. +--- diff --git a/.github/ISSUE_TEMPLATE/04_showcase-template.yaml b/.github/ISSUE_TEMPLATE/04_showcase-template.yaml new file mode 100644 index 00000000000..0ffcbd3fd54 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04_showcase-template.yaml @@ -0,0 +1,89 @@ +--- +name: 📸 (request to) add a new Showcase post +description: Add a new showcase on FreeSewing.org +title: "[showcase]: Found a great project to showcase" +labels: [ "\U0001F44D good first issue, \U0001F4F8 showcase, \U0001F917 community" ] +body: + - type: markdown + attributes: + value: "Found a great project/make to showcase? Awesome :tada: Please complete the information below so we can add it to our showcases :point_down:" + - type: input + id: url + attributes: + label: "Where can we find the awesomeness? 🤔" + description: Provide a link here to where we can find the pictures/description. Like a blog post or Instagram post, or something on Discord or ... + placeholder: "https://www.instagram.com/p/CgRPJCqjgTw/" + - type: dropdown + id: design + attributes: + label: "Do you know what FreeSewing design was used? 🧐" + description: If you know which of our patterns was used, please select one of more from the list below + multiple: true + options: + - Aaron + - Albert + - Bee + - Bella + - Benjamin + - Bent + - Bob + - Breanna + - Brian + - Bruce + - Carlita + - Carlton + - Cathrin + - Charlie + - Cornelius + - Diana + - Florence + - Florent + - Hi + - Holmes + - Hortensia + - Huey + - Hugo + - Jaeger + - Lucy + - Lunetius + - Noble + - Paco + - Penelope + - Sandy + - Shin + - Simon + - Simone + - Sven + - Tamiko + - Teagan + - Theo + - Tiberius + - Titan + - Trayvon + - Unice + - Ursula + - Wahid + - Walburga + - Waralee + - Yuri + - type: dropdown + id: permission + attributes: + label: "Do we have permission to (re)post this? ✅" + description: We only post showcases with permission from the original author. Please indicate whether or not permission was granted by choosing the relevant option in the list below + options: + - ✅ I am the original author, and hereby grant permission to repost this content + - ✅ I am not the original author, but I have asked for permission on behalf of FreeSewing and the original author granted it + - ❌ Please ask permission from the original author + - type: textarea + id: extra + attributes: + label: Additional context + description: If there is any other info or pictures you'd like to add you can do so here + - type: markdown + attributes: + value: Looking to tackle this issue? We have [a how-to that shows how to add a showcase to the site](https://freesewing.dev/editors/howtos/showcase/). + - type: markdown + attributes: + value: Please keep in mind that **FreeSewing is a community project** that depends on **[your support](https://freesewing.org/community/join/)**. +--- diff --git a/.github/ISSUE_TEMPLATE/05_all-contributors.yaml b/.github/ISSUE_TEMPLATE/05_all-contributors.yaml new file mode 100644 index 00000000000..6ccbd069b12 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/05_all-contributors.yaml @@ -0,0 +1,57 @@ +--- +name: 🎖️ All Contributors update +description: Help capture the various contributions to FreeSewing +title: "[all contributors]: Please add (username here)" +labels: [ "\U0001F49C all contributors" ] +assignees: [ 'joostdecock' ] +body: + - type: markdown + attributes: + value: "FreeSewing is an [All Contributors](https://allcontributors.org/) project. Anybody can nominate someone to be added to our contributors list. Fill in the form below to do so :point_down:" + - type: input + id: username + attributes: + label: "Who made the contribution(s)? 🤔" + description: Please enter the Github username of the person who made the contribution(s) + placeholder: "joostdecock" + - type: dropdown + id: design + attributes: + label: "What type(s) of contribution(s) did they make? 🧐" + description: Check the emoji list and descriptions below and select whatever is appropriate + multiple: true + options: + - "♿️ a11y: Reporting or working on accessibility issues" + - "🐛 bug: Reporting or working on bugs" + - "📝 blog: Writing blog posts" + - "💻 code: Writing or improving our code" + - "🖋 content: Showcase posts, newsletters, social media, and so on (not documentation or blog)" + - "📖 doc: Documentation" + - "🎨 design: Pattern design, but also UI/UX" + - "📋 eventOrganizing: Organizing events and meetups" + - "💵 financial: Provding financial support" + - "🚇 infra: Hosting, Servers, SaaS, etc." + - "🚧 maintenance: Reserved for maintainers who do a bit of everything" + - "🧑‍🏫 mentoring: Mentoring of new contributors" + - "📦 platform: Providing specific platform support (Linux/Mac/Windows)" + - "🔌 plugin: Writing/improving plugins" + - "📆 projectManagement: Coordinating work" + - "💬 question: Answering Questions in Issues, on Discord, etc." + - "👀 review: Reviewing Pull Requests" + - "🛡️ security: Identify and/or reduce security threats, GDPR, Privacy, etc" + - "🔧 tool: Work on tooling" + - "🌍 translation: Providing translations" + - "⚠️ test: People who write tests" + - "✅ tutorial: Creating tutorials" + - "📢 talk: Giving talks or presentations" + - "📓 userTesting: End-to-end testing" + - "📹 video: Making videos" + - type: textarea + id: extra + attributes: + label: Additional context + description: If there is any other info or pictures you'd like to add you can do so here + - type: markdown + attributes: + value: Please keep in mind that **FreeSewing is a community project** that depends on **[your support](https://freesewing.org/community/join/)**. +--- diff --git a/.github/ISSUE_TEMPLATE/1_bug-report.md b/.github/ISSUE_TEMPLATE/1_bug-report.md deleted file mode 100644 index f799e007c73..00000000000 --- a/.github/ISSUE_TEMPLATE/1_bug-report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: 🐛 Bug report -about: Report a problem, or something that went wrong -title: Bug report -labels: "\U0001F41B bug" -assignees: '' - ---- - -**What seems to be the problem?** - -A clear and concise description of the problem you encountered. - -**Are you a FreeSewing patron?** - - - [ ] Yes, I am :hugs: - - [ ] No, I am not :thinking: - -**Additional context** - -Add any other context or screenshots about the problem request here. diff --git a/.github/ISSUE_TEMPLATE/2_feature-request.md b/.github/ISSUE_TEMPLATE/2_feature-request.md deleted file mode 100644 index efb1fcc8dd0..00000000000 --- a/.github/ISSUE_TEMPLATE/2_feature-request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: 🚀 Feature request -about: Suggest an idea to make FreeSewing better -title: Feature request -labels: "\U0001F48E enhancement" -assignees: '' - ---- - -**What is it that you would like to see happen?** - -A clear and concise description of what you want to happen. - -**Are you a FreeSewing patron?** - - - [ ] Yes, I am :hugs: - - [ ] No, I am not :thinking: - -**Additional context** - -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/3_documentation-update.md b/.github/ISSUE_TEMPLATE/3_documentation-update.md deleted file mode 100644 index 5ef872f7f4a..00000000000 --- a/.github/ISSUE_TEMPLATE/3_documentation-update.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: 📝 Documentation/content update -about: Suggest updates to FreeSewing documentation or site content -title: Documentation/content update -labels: "\U0001F44D good first issue, \U0001F4D6 documentation" -assignees: '' - ---- - -- Page link: Provide a link here to the page (or pages) to be updated. If the page provides an anchor link to the section of interest (indicated by a chain icon next to a heading) please copy that link if possible. -- Relevant section: If a specific section needs to be updated and you are unable to provide an anchor link, what's the heading or area of interest? -- Suggested content: Do you have any changes you'd like to suggest to improve the documentation? - -Looking to tackle this issue? Check out our [documentation for editors](https://freesewing.dev/editors/) to learn how to contribute updates. diff --git a/.github/ISSUE_TEMPLATE/4_showcase-template.md b/.github/ISSUE_TEMPLATE/4_showcase-template.md deleted file mode 100644 index 3b0d736ef19..00000000000 --- a/.github/ISSUE_TEMPLATE/4_showcase-template.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: 📸 Showcase template -about: Add a new showcase on freesewing.org -title: Create showcase from this content -labels: "\U0001F44D good first issue, \U0001F4F8 showcase, \U0001F917 community" -assignees: '' - ---- - -- Content: Provide a link here to where we can find the content - - Permission: - - [ ] I am the original author, and hereby grant permission to repost this content - - [ ] I am not the original author, please ask permission from them - - Credit: Please enter the FreeSewing, Instagram, Twitter, or other username of the original author (if you know it and they want to be credited) - -Looking to tackle this issue? We have [a how-to that shows how to add a showcase to the site](https://freesewing.dev/editors/howtos/showcase/). diff --git a/.github/ISSUE_TEMPLATE/5_all-contributors.md b/.github/ISSUE_TEMPLATE/5_all-contributors.md deleted file mode 100644 index 6ac6da1158e..00000000000 --- a/.github/ISSUE_TEMPLATE/5_all-contributors.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: 🎖️ All Contributors update -about: Help capture the various contributions to FreeSewing -title: "All Contributors: Please add (username here)" -labels: "\U0001F49C all contributors" -assignees: 'joostdecock' ---- - -### Who made the contribution(s)? - -- GitHub username: - -Please provide the GitHub username of the contributor. -(If it is you, you can skip this part, as your username will be available in the issue) - -### What type(s) of contribution did they make? - -- Contribution type(s): - -The most common contribution types are: - - - `doc` for documentation work - - `translation` for translation work - - `code` for code contributions - - `blog` for blog posts or showcase posts - - `question` for helping others by answering questions (on Discord for example) - - `bug` for reporting bugs - -A complete list of contribution types is available [on the all contributors website](https://allcontributors.org/docs/en/emoji-key). diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index d954f574538..3ae4520663f 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -1,92 +1,109 @@ ##### Labeler ##### labelPRBasedOnFilePath: - # Add 'label1' to any changes within 'example' folder or any subfolders - ":package: aaron": [ packages/aaron/* ] - ":package: albert": [ packages/albert/* ] - ":package: bee": [ packages/bee/* ] - ":package: bella": [ packages/bella/* ] - ":package: benjamin": [ packages/benjamin/* ] - ":package: bent": [ packages/bent/* ] - ":package: breanna": [ packages/breanna/* ] - ":package: brian": [ packages/brian/* ] - ":package: bruce": [ packages/bruce/* ] - ":package: carlita": [ packages/carlita/* ] - ":package: carlton": [ packages/carlton/* ] - ":package: cathrin": [ packages/cathrin/* ] - ":package: charlie": [ packages/charlie/* ] + # "label": [ folder or subfolders ] ":package: components": [ packages/components/* ] + ":package: config-helpers": [ packages/config-helpers/* ] ":package: core": [ packages/core/* ] - ":package: cornelius": [ packages/cornelius/* ] ":package: create-freesewing-pattern": [ packages/create-freesewing-pattern/* ] ":package: css-theme": [ packages/css-theme/* ] - ":package: diana": [ packages/diana/* ] - ":package: examples": [ packages/examples/* ] - ":package: florence": [ packages/florence/* ] - ":package: florent": [ packages/florent/* ] ":package: gatsby-remark-jargon": [ packages/gatsby-remark-jargon/* ] - ":package: holmes": [ packages/holmes/* ] - ":package: hortensia": [ packages/hortensia/* ] - ":package: huey": [ packages/huey/* ] - ":package: hugo": [ packages/hugo/* ] ":package: i18n": [ packages/i18n/* ] - ":package: jaeger": [ packages/jaeger/* ] - ":package: legend": [ packages/legend/* ] - ":package: lunetius": [ packages/lunetius/* ] ":package: models": [ packages/models/* ] ":package: mui-theme": [ packages/mui-theme/* ] - ":package: paco": [ packages/paco/* ] + ":package: new-design": [ packages/new-design/* ] ":package: pattern-info": [ packages/pattern-info/* ] - ":package: penelope": [ packages/penelope/* ] - ":package: plugin-banner": [ packages/plugin-banner/* ] - ":package: plugin-bartack": [ packages/plugin-bartack/* ] - ":package: plugin-bundle": [ packages/plugin-bundle/* ] - ":package: plugin-bust": [ packages/plugin-bust/* ] - ":package: plugin-buttons": [ packages/plugin-buttons/* ] - ":package: plugin-cutonfold": [ packages/plugin-cutonfold/* ] - ":package: plugin-dimension": [ packages/plugin-dimension/* ] - ":package: plugin-export-dxf": [ packages/plugin-export-dxf/* ] - ":package: plugin-flip": [ packages/plugin-flip/* ] - ":package: plugin-gore": [ packages/plugin-gore/* ] - ":package: plugin-grainline": [ packages/plugin-grainline/* ] - ":package: plugin-i18n": [ packages/plugin-i18n/* ] - ":package: plugin-logo": [ packages/plugin-logo/* ] - ":package: plugin-measurements": [ packages/plugin-measurements/* ] - ":package: plugin-mirror": [ packages/plugin-mirror/* ] - ":package: plugin-notches": [ packages/plugin-notches/* ] - ":package: plugin-round": [ packages/plugin-round/* ] - ":package: plugin-scalebox": [ packages/plugin-scalebox/* ] - ":package: plugin-sprinkle": [ packages/plugin-sprinkle/* ] - ":package: plugin-svgattr": [ packages/plugin-svgattr/* ] - ":package: plugin-theme": [ packages/plugin-theme/* ] - ":package: plugin-title": [ packages/plugin-title/* ] - ":package: plugin-validate": [ packages/plugin-validate/* ] - ":package: plugin-versionfree-svg": [ packages/plugin-versionfree-svg/* ] ":package: prettier-config": [ packages/prettier-config/* ] + ":package: rehype-jargon": [ packages/rehype-jargon/* ] ":package: remark-jargon": [ packages/remark-jargon/* ] - ":package: rendertest": [ packages/rendertest/* ] - ":package: sandy": [ packages/sandy/* ] - ":package: shin": [ packages/shin/* ] - ":package: simon": [ packages/simon/* ] - ":package: simone": [ packages/simone/* ] - ":package: snapseries": [ packages/snapseries/* ] - ":package: strapi": [ packages/strapi/* ] - ":package: sven": [ packages/sven/* ] - ":package: tamiko": [ packages/tamiko/* ] - ":package: teagan": [ packages/teagan/* ] - ":package: theo": [ packages/theo/* ] - ":package: tiberius": [ packages/tiberius/* ] - ":package: titan": [ packages/titan/* ] - ":package: trayvon": [ packages/trayvon/* ] - ":package: tutorial": [ packages/tutorial/* ] - ":package: ursula": [ packages/ursula/* ] ":package: utils": [ packages/utils/* ] - ":package: wahid": [ packages/wahid/* ] - ":package: walburga": [ packages/walburga/* ] - ":package: waralee": [ packages/waralee/* ] - ":package: yuri": [ packages/yuri/* ] + ":electric_plug: plugin-banner": [ plugins/plugin-banner/* ] + ":electric_plug: plugin-bartack": [ plugins/plugin-bartack/* ] + ":electric_plug: plugin-bundle": [ plugins/plugin-bundle/* ] + ":electric_plug: plugin-bust": [ plugins/plugin-bust/* ] + ":electric_plug: plugin-buttons": [ plugins/plugin-buttons/* ] + ":electric_plug: plugin-cutonfold": [ plugins/plugin-cutonfold/* ] + ":electric_plug: plugin-dimension": [ plugins/plugin-dimension/* ] + ":electric_plug: plugin-export-dxf": [ plugins/plugin-export-dxf/* ] + ":electric_plug: plugin-flip": [ plugins/plugin-flip/* ] + ":electric_plug: plugin-gore": [ plugins/plugin-gore/* ] + ":electric_plug: plugin-grainline": [ plugins/plugin-grainline/* ] + ":electric_plug: plugin-i18n": [ plugins/plugin-i18n/* ] + ":electric_plug: plugin-logo": [ plugins/plugin-logo/* ] + ":electric_plug: plugin-measurements": [ plugins/plugin-measurements/* ] + ":electric_plug: plugin-mirror": [ plugins/plugin-mirror/* ] + ":electric_plug: plugin-notches": [ plugins/plugin-notches/* ] + ":electric_plug: plugin-round": [ plugins/plugin-round/* ] + ":electric_plug: plugin-scalebox": [ plugins/plugin-scalebox/* ] + ":electric_plug: plugin-sprinkle": [ plugins/plugin-sprinkle/* ] + ":electric_plug: plugin-svgattr": [ plugins/plugin-svgattr/* ] + ":electric_plug: plugin-theme": [ plugins/plugin-theme/* ] + ":electric_plug: plugin-title": [ plugins/plugin-title/* ] + ":electric_plug: plugin-validate": [ plugins/plugin-validate/* ] + ":electric_plug: plugin-versionfree-svg": [ plugins/plugin-versionfree-svg/* ] ":book: documentation": [ markdown/* ] + ":scroll: scripts": [ scripts/* ] + ":computer: backend": [ sites/backend/* ] + ":computer: dev": [ sites/dev/* ] + ":computer: lab": [ sites/lab/* ] + ":computer: org": [ sites/org/* ] + ":computer: shared": [ sites/shared/* ] + ":computer: strapi": [ sites/strapi/* ] + ":computer: svgtopdf": [ sites/svgtopdf/* ] ":test_tube: tests": [ tests/* ] ":gear: configuration": [ "config/*", ".github/*" ] + ":shirt: aaron": [ designs/aaron/* ] + ":shirt: albert": [ designs/albert/* ] + ":shirt: bee": [ designs/bee/* ] + ":shirt: bella": [ designs/bella/* ] + ":shirt: benjamin": [ designs/benjamin/* ] + ":shirt: bent": [ designs/bent/* ] + ":shirt: bob": [ designs/bob/* ] + ":shirt: breanna": [ designs/breanna/* ] + ":shirt: brian": [ designs/brian/* ] + ":shirt: bruce": [ designs/bruce/* ] + ":shirt: carlita": [ designs/carlita/* ] + ":shirt: carlton": [ designs/carlton/* ] + ":shirt: cathrin": [ designs/cathrin/* ] + ":shirt: charlie": [ designs/charlie/* ] + ":shirt: cornelius": [ designs/cornelius/* ] + ":shirt: diana": [ designs/diana/* ] + ":shirt: examples": [ designs/examples/* ] + ":shirt: florence": [ designs/florence/* ] + ":shirt: florent": [ designs/florent/* ] + ":shirt: hi": [ designs/hi/* ] + ":shirt: holmes": [ designs/holmes/* ] + ":shirt: hortensia": [ designs/hortensia/* ] + ":shirt: huey": [ designs/huey/* ] + ":shirt: hugo": [ designs/hugo/* ] + ":shirt: jaeger": [ designs/jaeger/* ] + ":shirt: legend": [ designs/legend/* ] + ":shirt: lucy": [ designs/lucy/* ] + ":shirt: lunetius": [ designs/lunetius/* ] + ":shirt: noble": [ designs/noble/* ] + ":shirt: octoplushy": [ designs/octoplushy/* ] + ":shirt: paco": [ designs/paco/* ] + ":shirt: penelope": [ designs/penelope/* ] + ":shirt: plugintest": [ designs/plugintest/* ] + ":shirt: rendertest": [ designs/rendertest/* ] + ":shirt: sandy": [ designs/sandy/* ] + ":shirt: shin": [ designs/shin/* ] + ":shirt: simon": [ designs/simon/* ] + ":shirt: simone": [ designs/simone/* ] + ":shirt: snapseries": [ designs/snapseries/* ] + ":shirt: sven": [ designs/sven/* ] + ":shirt: tamiko": [ designs/tamiko/* ] + ":shirt: teagan": [ designs/teagan/* ] + ":shirt: theo": [ designs/theo/* ] + ":shirt: tiberius": [ designs/tiberius/* ] + ":shirt: titan": [ designs/titan/* ] + ":shirt: trayvon": [ designs/trayvon/* ] + ":shirt: tutorial": [ designs/tutorial/* ] + ":shirt: unice": [ designs/unice/* ] // New + ":shirt: ursula": [ designs/ursula/* ] + ":shirt: wahid": [ designs/wahid/* ] + ":shirt: walburga": [ designs/walburga/* ] + ":shirt: waralee": [ designs/waralee/* ] + ":shirt: yuri": [ designs/yuri/* ] labelerFlags: labelOnPRUpdates: true diff --git a/.github/workflows/checkdocs.yml b/.github/workflows/checkdocs.yml index 6dd0812d970..689ff52d5c9 100644 --- a/.github/workflows/checkdocs.yml +++ b/.github/workflows/checkdocs.yml @@ -5,12 +5,12 @@ on: branches: - develop paths: - - 'markdown/**' + - 'markdown/**/en.md' pull_request: branches: - develop paths: - - 'markdown/**' + - 'markdown/**/en.md' jobs: test: diff --git a/.github/workflows/nextjs-only.yml b/.github/workflows/nextjs-only.yml new file mode 100644 index 00000000000..c67a6f881fd --- /dev/null +++ b/.github/workflows/nextjs-only.yml @@ -0,0 +1,23 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Add comment for nextjs-only tag +on: + issues: + types: + - labeled +jobs: + add-comment: + if: github.event.label.name == 'nextjs-only' + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Add comment + uses: peter-evans/create-or-update-comment@a35cf36e5301d70b76f316e867e7788a55a31dae + with: + issue-number: ${{ github.event.issue.number }} + body: | + This issue will not be considered for inclusion in the current (Gatbsy-based) freesewing.org website. It will only be considered for inclusion in the future (NextJS-based) freesewing.org website. This is because we want to migrate sooner rather than later, and all work on the legacy site slows that process down. diff --git a/.github/workflows/tests.all.yml b/.github/workflows/tests.all.yml index ce45a233e60..7b3033fc6ed 100644 --- a/.github/workflows/tests.all.yml +++ b/.github/workflows/tests.all.yml @@ -38,4 +38,10 @@ jobs: run: npm run buildall - name: Run all tests run: npm run testall - + - name: Upload to codecov.io + uses: codecov/codecov-action@v3 + with: + files: ./packages/core/coverage/coverage-final.json + flags: core + name: codecov-core + fail_ci_if_error: true diff --git a/.gitignore b/.gitignore index 067df08b64c..dc64b4aff5e 100644 --- a/.gitignore +++ b/.gitignore @@ -60,7 +60,6 @@ packages/utils/tiler packages/utils/validateEmail packages/utils/validateTld - # Any NPM or Yarn lock files designs/*/package-lock.json designs/*/yarn.lock @@ -82,6 +81,10 @@ packages/new-design/shared/public/locales/*/*.json packages/new-design/shared/.gitignore packages/new-design/lib/banner.mjs +# Translation files for NextJS +# Remove this after we move to Node 16 and deprecate pattern-info +#/home/joost/git/freesewing/packages/i18n/src/next/*/*.mjs + # Lab auto-generated pages sites/lab/lib sites/lab/pages @@ -106,6 +109,7 @@ prebuild/*.json sites/*/out sites/*/public/mdx sites/*/prebuild +!sites/shared/prebuild # misc .DS_Store @@ -129,3 +133,7 @@ scripts/verdaccio.sh !markdown/dev/reference/api/point/dist .test-failures.log +core.7268 +.gitignore +sites/lab/package.json +sites/lab/core.873 diff --git a/.gitpod.yml b/.gitpod.yml index e8e1a1af730..283b3c68f89 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -9,8 +9,7 @@ tasks: before: | nvm install lts/fermium nvm use lts/fermium - init: yarn kickstart - command: yarn lab + command: yarn kickstart && yarn lab github: prebuilds: @@ -25,4 +24,4 @@ github: # add a "Review in Gitpod" button as a comment to pull requests (defaults to false) addComment: true # add a "Review in Gitpod" button to the pull request's description (defaults to false) - addBadge: false \ No newline at end of file + addBadge: false diff --git a/.remarkrc.yaml b/.remarkrc.yaml new file mode 100644 index 00000000000..fc2d3b93642 --- /dev/null +++ b/.remarkrc.yaml @@ -0,0 +1,7 @@ +settings: + bullet: "-" +plugins: + # Check that markdown is consistent. + - remark-preset-lint-consistent + # Few recommended rules. + - remark-preset-lint-recommended diff --git a/CHANGELOG.md b/CHANGELOG.md index 9192154b2fb..71fbd8fd934 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,89 @@ ## Unreleased +### breanna -## 2.21.3 (2022-07-03) +#### Fixed + + - Fixed bug where a large shoulder slope could cause an error. Fixes [#2516](https://github.com/freesewing/freesewing/issues/2516) + +### brian + +#### Fixed + + - Make s3 options sticky to zero below 10% to avoid path split issues. Fixes [#2249](https://github.com/freesewing/freesewing/issues/2249) + +### aaron + +#### Added + + - Support drafting for high bust + +### cathrin + +#### Fixed + + - Removed seam allowance from Part1a foldline. Fixes [#2545](https://github.com/freesewing/freesewing/issues/2545) + +### charlie + +#### Changed + + - Renamed back pocket jet to back pocket welt + +### hugo + +#### Added + + - Support drafting for high bust Closes [#802](https://github.com/freesewing/freesewing/issues/802) + +### paco + +#### Changed + + - Fix hem allowance. Closes [#2350](https://github.com/freesewing/freesewing/issues/2350) + +### simon + +#### Fixed + + - Fix issue with boxPleat and yoke Fixes [#2400](https://github.com/freesewing/freesewing/issues/2400) + - Removed superfluous notches in button placket, buttonhole placket, and split yoke. Fixes [#2399](https://github.com/freesewing/freesewing/issues/2399) + +### simone + +#### Added + + - Added Bust-aligned buttons option and functionality. Closes [#2154] (https://github.com/freesewing/freesewing/issues/2154) + - Added a notch at the center front bustline. + +#### Fixed + + - Don't do a negative FBA from there's no need for an FBA Fixes [#2121](https://github.com/freesewing/freesewing/issues/2121) + - Duplicate config rather than mutating the imported simon config + +### theo + +#### Changed + + - migrated `waistbandWidth` option from `mm` to snapped `pct` option + +### wahid + +#### Fixed + + - Prevent facing/lining overlap when shoulders get very narrow fixes [#2233](https://github.com/freesewing/freesewing/issues/2233) + - Fixed dependency issue with pocketFacing part + +### plugin-title + +#### Added + + - Added support for removing the title via a macro call + - Added a render timestamp to the title + + +## 2.21.3 (2022-07-02) ### core @@ -555,12 +636,6 @@ - Migrated from Rollup to Esbuild for all builds - The `pctBasedOn()` helper method for pattern config was moved to config-helpers We did not make this a breaking change since it's only used internally. -### create-freesewing-pattern - -#### Deprecated - - - This package is deprecated. Please use `npx @freesewing/new-design` - ### gatsby-remark-jargon #### Changed @@ -738,12 +813,6 @@ ## 2.20.4 (2022-01-28) -### create-freesewing-pattern - -#### Fixed - - - Downgraded back to react-scripts 4 because 5 has a regression bug - ## 2.20.3 (2022-01-28) @@ -761,12 +830,6 @@ - Setting Path.render() no longer raises an info message - Always raise debug, but only store it whend debug is enabled -### create-freesewing-pattern - -#### Fixed - - - Updated to react-scripts 5 to sidestep bug in error-overlay - ## 2.20.2 (2022-01-27) @@ -1431,12 +1494,6 @@ - Added the new attributes.setIfUnset() method - Added the new `scale` setting -### create-freesewing-pattern - -#### Fixed - - - Fix axios version conflict - ## 2.19.5 (2021-11-13) @@ -1895,12 +1952,6 @@ - Fixed edge case in utils.beamsIntersect() when line is almost vertical See [#1206](https://github.com/freesewing/freesewing/issues/1206) -### create-freesewing-pattern - -#### Fixed - - - Updated department to new range of options See [#1207](https://github.com/freesewing/freesewing/pull/1207) - ## 2.17.0 (2021-07-01) @@ -2067,13 +2118,6 @@ - Don't publish ESM modules as it causes issues with react-intl See [#1079](https://github.com/freesewing/freesewing/issues/1079) -### create-freesewing-pattern - -#### Changed - - - Added .gitignore file to the template - - Added eslint for linting - ### i18n #### Changed @@ -2300,12 +2344,6 @@ - Added a new `designs` icon - We now publish .mjs files again for the different components -### create-freesewing-pattern - -#### Fixed - - - Don't list pattern as dependency in the example package.json - ### i18n #### Added @@ -2358,17 +2396,6 @@ - Added rollup sass plugin - Updated for new major version of react-markdown -### create-freesewing-pattern - -#### Changed - - - Migrated to React 17 - - Migrated to create-react-app/react-scripts 4 - - Migrated to Webpack 5 - - Add react-intl as dependency - - Renamed template `default` to `freesewing` - - Use defaults for browserlist - ### css-theme #### Changed @@ -2632,12 +2659,6 @@ - Fixed type in bustsidecode finder code -### create-freesewing-pattern - -#### Fixed - - - Updated chat link from gitter to discord - ### pattern-info #### Fixed @@ -2743,12 +2764,6 @@ ## 2.12.1 (2021-01-27) -### create-freesewing-pattern - -#### Added - - - Fixed missing dependency - ## 2.12.0 (2021-01-19) @@ -2889,12 +2904,6 @@ ## 2.11.1 (2021-01-11) -### create-freesewing-pattern - -#### Fixed - - - Fixed issue with node-sass, see [#778](https://github.com/freesewing/freesewing/issues/778) and [#779](https://github.com/freesewing/freesewing/issues/779) - ## 2.11.0 (2021-01-10) @@ -3078,12 +3087,6 @@ - Added the `info` type to raised events - Added support for conditional loading of plugins -### create-freesewing-pattern - -#### Fixed - - - No longer instantiate a pattern, just to get the config - ### css-theme #### Added @@ -3123,12 +3126,6 @@ - Added Titan as a peer dependency -### create-freesewing-pattern - -#### Fixed - - - Fixed breaking change in execa upgrade in 2.8.0 - ## 2.8.0 (2020-08-10) @@ -3667,12 +3664,6 @@ - utils now includes `Bezier` which holds the bezier-js library so you don't need to re-import it - We no longer set the plugin configuration/data object to fall in `pattern.use()` -### create-freesewing-pattern - -#### Added - - - [#365](https://github.com/freesewing/freesewing/issues/365): Check for node version and raise an error it is too old. - ### css-theme #### Added @@ -4007,12 +3998,6 @@ - Added the `Path.noop()` method - Added the `Path.insop()` methods -### create-freesewing-pattern - -#### Fixed - - - [#257](https://github.com/freesewing/freesewing/issues/257): Explain that pattern names are bound by the constraints of NPM package names - ### css-theme #### Added @@ -4312,12 +4297,6 @@ - Tweaked DraftConfigurator tags to match CSS rules after frontend upgrade to react-intl v3 -### create-freesewing-pattern - -#### Fixed - - - Updated example package.json to use latest tag rather than beta - ### utils #### Fixed @@ -4356,16 +4335,6 @@ - DraftConfigurator now properly styles pattern options 3 levels deep - [#105](https://github.com/freesewing/freesewing.org/issues/105): Moved state change in render loop to useEffect -### create-freesewing-pattern - -#### Changed - - - Updated dependencies - -#### Fixed - - - Added missing `file-saver` dependency - ### css-theme #### Fixed @@ -4665,12 +4634,6 @@ ### core -#### Added - - - Initial release - -### create-freesewing-pattern - #### Added - Initial release diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 0819dbf2022..4664c1c2cc2 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -19,112 +19,118 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/LATEST_NEWS.md b/LATEST_NEWS.md index 899c90bef0c..bea8791669a 100644 --- a/LATEST_NEWS.md +++ b/LATEST_NEWS.md @@ -1,13 +1,13 @@ -##### Next contributor call on 9 July +##### Next contributor call on 20 August -[The next contributor call](https://github.com/freesewing/freesewing/discussions/2300) is on **09 July 2022**, Lexander and Karen will host it. +[The next contributor call](https://github.com/freesewing/freesewing/discussions) is on **20 August 2022**, Lexander and Karen will host it. The call is on [discord.freesewing.org](https://discord.freesewing.org/). Check the meetings voice/video channel. -##### New designs: Hi, Noble, and Unice +##### New designs: Hi, Noble, Unice, Bob, and Lucy -Check the new designs, [Hi](/designs/hi), [Noble](/designs/noble), and [Unice](/unice). +Check the new designs, [Hi](/designs/hi), [Noble](/designs/noble), [Unice](/designs/unice), [Bob](/designs/bob), and [Lucy](/designs/lucy) ##### Check out where FreeSewing is heading diff --git a/LICENSE b/LICENSE index 7c49b11ae2d..953afc18908 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Joost De Cock +Copyright (c) 2022 Joost De Cock Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 32a20b21ddb..3a0e1909b98 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/artwork/royvdhel/bee/Bee.png b/artwork/royvdhel/bee/Bee.png new file mode 100644 index 00000000000..ac4d782cb5d Binary files /dev/null and b/artwork/royvdhel/bee/Bee.png differ diff --git a/artwork/royvdhel/bee/Bee_transparent.png b/artwork/royvdhel/bee/Bee_transparent.png new file mode 100644 index 00000000000..3ebb7952f8a Binary files /dev/null and b/artwork/royvdhel/bee/Bee_transparent.png differ diff --git a/artwork/royvdhel/bee/Bee_transparent_cut.png b/artwork/royvdhel/bee/Bee_transparent_cut.png new file mode 100644 index 00000000000..91548799cbc Binary files /dev/null and b/artwork/royvdhel/bee/Bee_transparent_cut.png differ diff --git a/config/build-order.mjs b/config/build-order.mjs index e4a00614570..5ffb77fb13c 100644 --- a/config/build-order.mjs +++ b/config/build-order.mjs @@ -1,4 +1,4 @@ -import { designs, plugins, packages, software } from './software/index.mjs' +import { designs, plugins, packages } from './software/index.mjs' /* * As this monorepo has interlocking dependencies @@ -6,9 +6,10 @@ import { designs, plugins, packages, software } from './software/index.mjs' * order. This file takes care of that */ -const first = [ 'core', 'config-helpers', 'remark-jargon' ] +const first = [ 'core', 'config-helpers', 'remark-jargon'] const blocks = [ 'brian', 'titan', 'bella', 'breanna' ] const extended = [ 'bent', 'simon', 'carlton', 'ursula' ] +const last = ['i18n'] export const buildOrder = [ @@ -31,6 +32,8 @@ export const buildOrder = [ Object.keys(designs).filter(id => [...blocks, ...extended].indexOf(id) === -1), // Finally build the rest of the packages - Object.keys(packages).filter(id => first.indexOf(id) === -1), + Object.keys(packages).filter(id => first.indexOf(id) === -1 && last.indexOf(id) === -1), + + last ] diff --git a/config/changelog.yaml b/config/changelog.yaml index 8e0e22006f8..7ac9e8cfecf 100644 --- a/config/changelog.yaml +++ b/config/changelog.yaml @@ -1,8 +1,52 @@ Unreleased: Added: + aaron: + - Support drafting for high bust + hugo: + - Support drafting for high bust + Closes [#802](https://github.com/freesewing/freesewing/issues/802) + plugin-title: + - Added support for removing the title via a macro call + - Added a render timestamp to the title + simone: + - Added Bust-aligned buttons option and functionality. + Closes [#2154] (https://github.com/freesewing/freesewing/issues/2154) + - Added a notch at the center front bustline. + + Changed: + charlie: + - Renamed back pocket jet to back pocket welt + paco: + - Fix hem allowance. Closes [#2350](https://github.com/freesewing/freesewing/issues/2350) + theo: + - migrated `waistbandWidth` option from `mm` to snapped `pct` option + + Fixed: + breanna: + - Fixed bug where a large shoulder slope could cause an error. + Fixes [#2516](https://github.com/freesewing/freesewing/issues/2516) + brian: + - Make s3 options sticky to zero below 10% to avoid path split issues. + Fixes [#2249](https://github.com/freesewing/freesewing/issues/2249) + cathrin: + - Removed seam allowance from Part1a foldline. + Fixes [#2545](https://github.com/freesewing/freesewing/issues/2545) + simon: + - Fix issue with boxPleat and yoke + Fixes [#2400](https://github.com/freesewing/freesewing/issues/2400) + - Removed superfluous notches in button placket, buttonhole placket, and split yoke. + Fixes [#2399](https://github.com/freesewing/freesewing/issues/2399) + simone: + - Don't do a negative FBA from there's no need for an FBA + Fixes [#2121](https://github.com/freesewing/freesewing/issues/2121) + - Duplicate config rather than mutating the imported simon config + wahid: + - Prevent facing/lining overlap when shoulders get very narrow + fixes [#2233](https://github.com/freesewing/freesewing/issues/2233) + - Fixed dependency issue with pocketFacing part 2.21.3: - date: 2022-07-03 + date: 2022-07-02 Changed: core: diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 8c2073495e4..ea7b3018d48 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -16,6 +16,7 @@ _types: aaron: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing bee: peer: '@freesewing/bella': *freesewing @@ -23,26 +24,27 @@ bent: peer: '@freesewing/brian': *freesewing '@freesewing/plugin-mirror': *freesewing + '@freesewing/plugin-bust': *freesewing breanna: peer: '@freesewing/brian': *freesewing brian: peer: '@freesewing/plugin-mirror': *freesewing + '@freesewing/plugin-bust': *freesewing carlita: peer: '@freesewing/brian': *freesewing '@freesewing/bent': *freesewing '@freesewing/carlton': *freesewing '@freesewing/plugin-bust': *freesewing - '@freesewing/plugin-buttons': *freesewing '@freesewing/plugin-mirror': *freesewing carlton: peer: '@freesewing/brian': *freesewing '@freesewing/bent': *freesewing - '@freesewing/plugin-buttons': *freesewing '@freesewing/plugin-mirror': *freesewing + '@freesewing/plugin-bust': *freesewing charlie: peer: '@freesewing/plugin-bartack': *freesewing @@ -87,30 +89,10 @@ core: 'hooks': '^0.3.2' dev: 'nyc': '^15.1.0' -create-freesewing-pattern: - _: - 'chalk': '^4.1.1' - 'commander': '^9.0.0' - 'conf': '^10.0.1' - 'cp-file': '^9.0.0' - 'execa': '^5.1.0' - 'git-config-path': '^2.0.0' - 'github-username': '^6.0.0' - 'globby': '^11.0.3' - 'handlebars': '^4.7.7' - 'inquirer': '^8.0.0' - 'make-dir': '^3.1.0' - 'normalize-path': '^3.0.0' - 'ora': '^5.4.1' - 'p-each-series': '^2.2.0' - 'parse-git-config': '^3.0.0' - 'validate-npm-package-name': '^3.0.0' - 'which': '^2.0.2' - '@freesewing/i18n': *freesewing - '@freesewing/pattern-info': *freesewing diana: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing examples: peer: '@freesewing/plugin-mirror': *freesewing @@ -126,9 +108,11 @@ holmes: huey: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing hugo: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing i18n: dev: 'js-yaml': '^4.1.0' @@ -138,7 +122,7 @@ jaeger: peer: '@freesewing/brian': *freesewing '@freesewing/bent': *freesewing - '@freesewing/plugin-buttons': *freesewing + '@freesewing/plugin-bust': *freesewing '@freesewing/plugin-mirror': *freesewing models: peer: @@ -206,22 +190,25 @@ plugintest: react-pattern: peer: '@freesewing/i18n': *freesewing +rehype-jargon: + _: + 'unist-util-visit': '^4.1.0' + 'hast-util-from-html': '^1.0.0' remark-jargon: _: - 'unist-util-visit': '^2.0.3' + 'unist-util-visit': '^4.1.0' peer: 'remark': '^13.0.0' 'remark-html': '^13.0.1' simon: peer: '@freesewing/brian': *freesewing - '@freesewing/plugin-buttons': *freesewing + '@freesewing/plugin-bust': *freesewing '@freesewing/plugin-flip': *freesewing simone: peer: '@freesewing/brian': *freesewing '@freesewing/simon': *freesewing - '@freesewing/plugin-buttons': *freesewing '@freesewing/plugin-flip': *freesewing '@freesewing/plugin-bust': *freesewing strapi: @@ -239,6 +226,10 @@ strapi: sven: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing +tamiko: + peer: + '@freesewing/plugin-bust': *freesewing teagan: peer: '@freesewing/brian': *freesewing @@ -250,9 +241,9 @@ utils: wahid: peer: '@freesewing/brian': *freesewing - '@freesewing/plugin-buttons': *freesewing - '@freesewing/plugin-round': *freesewing + '@freesewing/plugin-bust': *freesewing yuri: peer: '@freesewing/brian': *freesewing + '@freesewing/plugin-bust': *freesewing diff --git a/config/exceptions.yaml b/config/exceptions.yaml index dcfc887207f..c953f6334cc 100644 --- a/config/exceptions.yaml +++ b/config/exceptions.yaml @@ -1,5 +1,6 @@ noNamespace: - create-freesewing-pattern + - rehype-jargon - remark-jargon - gatsby-remark-jargon customBuild: @@ -14,6 +15,9 @@ customBuild: - remark-jargon - plugin-bundle - utils + - rehype-jargon +skipTests: + - theo packageJson: bee: author: bobgeorgethe3rd (https://github.com/bobgeorgethe3rd) @@ -91,6 +95,8 @@ packageJson: noble: author: woutervdub (https://github.com/woutervdub) + octoplushy: + author: woutervdub (https://github.com/woutervdub) plugin-gore: author: AlfaLyr (https://github.com/alfalyr) prettier-config: diff --git a/config/keywords.yaml b/config/keywords.yaml index b170414b2e4..f6b93f28536 100644 --- a/config/keywords.yaml +++ b/config/keywords.yaml @@ -8,10 +8,6 @@ core: - patterns - sewing - sewing patterns -create-freesewing-pattern: - - development - - initializer - - react components: - react css-theme: diff --git a/config/scripts.yaml b/config/scripts.yaml index 940028c9390..7ff69749c2d 100644 --- a/config/scripts.yaml +++ b/config/scripts.yaml @@ -10,20 +10,12 @@ _: _types: design: prettier: "npx prettier --write 'src/*.js' 'config/*.js'" - test: &test 'BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register' - testci: &testci "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js" + test: &test 'npx mocha tests/*.test.mjs' + testci: &testci "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js" plugin: prettier: "npx prettier --write 'src/*.js' 'tests/*.mjs'" test: *test testci: *testci -create-freesewing-pattern: - build: '!' - cibuild_step1: '!' - clean: '!' - mbuild: '!' - test: '!' - testci: '!' - vbuild: '!' css-theme: build: 'npx node-sass --output-style compressed src/theme.scss dist/theme.css' watch: 'npx node-sass --watch --output-style compressed src/theme.scss dist/theme.css' @@ -32,14 +24,13 @@ components: storybook: 'start-storybook -p 6663' test: *notests core: - coverage: 'BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov' - report: 'BABEL_ENV=production nyc report --reporter=html' - test: 'BABEL_ENV=production nyc -x node_modules -x tests/fixtures -x bin-pack npx mocha tests/*.test.js' - testci: "BABEL_ENV=production npx mocha tests/*.test.js --require @babel/register --reporter ../../tests/reporters/terse.js" - testonly: 'BABEL_ENV=production npx mocha tests/*.test.js' + report: 'nyc report --reporter=html' + test: 'nyc -x node_modules -x tests -x bin-pack npx mocha tests/*.test.js' + testci: "nyc --silent npx mocha tests/*.test.js --reporter ../../tests/reporters/terse.js && nyc report --reporter=json" + testonly: 'npx mocha tests/*.test.js' i18n: # react-scripts doesn't handle .mjs files correctly - prebuild: 'node src/prebuild.mjs' + prebuild: 'node scripts/prebuilder.mjs' test: *test testci: *testci new-design: @@ -50,7 +41,7 @@ new-design: vbuild: '!' pattern-info: cibuild_step1: '!' - build: 'node src/prebuild.js && node build.js' + build: 'node build.js' prebuild: 'node src/prebuild.js' utils: clean: "rimraf backend && rimraf camelCase && rimraf capitalize && rimraf cloneObject && rimraf convertSize && rimraf defaultGist && rimraf defaultSa && rimraf formatImperial && rimraf formatMm && rimraf isDegMeasurement && rimraf measurementAsMm && rimraf measurementDiffers && rimraf neckstimate && rimraf optionDefault && rimraf optionType && rimraf roundMm && rimraf roundMmDown && rimraf roundMmUp && rimraf sliderStep && rimraf smallestImperialStep && rimraf storage && rimraf tiler && rimraf validateEmail && rimraf validateTld" diff --git a/config/software/designs.json b/config/software/designs.json index 06962887eb9..09faf8595f9 100644 --- a/config/software/designs.json +++ b/config/software/designs.json @@ -7,6 +7,7 @@ "hi": "A FreeSewing pattern for a shark plush toy", "holmes": "A FreeSewing pattern for a Sherlock Holmes hat", "hortensia": "A FreeSewing pattern for a handbag", + "octoplushy": "A FreeSewing pattern for an octopus plushy toy", "trayvon": "A FreeSewing pattern for a tie" }, "blocks": { @@ -58,4 +59,4 @@ "rendertest": "A FreeSewing pattern to test (y)our render engine our CSS", "tutorial": "A FreeSewing pattern for a baby bib that's used in our tutorial" } -} +} \ No newline at end of file diff --git a/config/software/packages.json b/config/software/packages.json index 546a6c48098..bc436407246 100644 --- a/config/software/packages.json +++ b/config/software/packages.json @@ -2,7 +2,6 @@ "components": "A collection of React components for FreeSewing web UIs", "config-helpers": "A FreeSewing package to facilitate pattern configurations", "core": "A library for creating made-to-measure sewing patterns", - "create-freesewing-pattern": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern", "css-theme": "A CSS theme for FreeSewing web UIs", "gatsby-remark-jargon": "A gatsby-transformer-remark sub-plugin for jargon terms", "i18n": "Translations for the FreeSewing project", @@ -11,6 +10,7 @@ "new-design": "Initializer package for a new FreeSewing design: npx @freesewing/new-design", "pattern-info": "Information about available freesewing patterns", "prettier-config": "FreeSewing's shared configuration for prettier", + "rehype-jargon": "A Rehype plugin for jargon terms", "remark-jargon": "A Remark plugin for jargon terms", "utils": "A collection of utilities shared across freesewing projects" } diff --git a/config/templates/design.test.mjs b/config/templates/design.test.mjs new file mode 100644 index 00000000000..4d8f4f50d8a --- /dev/null +++ b/config/templates/design.test.mjs @@ -0,0 +1,40 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import chai from 'chai' +import models from '@freesewing/models' +import patterns from '@freesewing/pattern-info' +import Pattern from './dist/index.mjs' + +// Shared tests +import { testPatternConfig } from '../../../tests/patterns/config.mjs' +import { testPatternDrafting } from '../../../tests/patterns/drafting.mjs' +import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' + +const expect = chai.expect + +// Test config +testPatternConfig( + "{{name}}", + new Pattern(), + expect, + models, + patterns +) + +// Test drafting +testPatternDrafting( + "{{name}}", + Pattern, + expect, + models, + patterns +) + +// Test sampling +testPatternSampling( + "{{name}}", + Pattern, + expect, + models, + patterns +) diff --git a/config/templates/package.dflt.json b/config/templates/package.dflt.json index fd16baebc7f..0be3916083f 100644 --- a/config/templates/package.dflt.json +++ b/config/templates/package.dflt.json @@ -25,7 +25,7 @@ "files": ["dist/*", "README.md"], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/config/templates/plugin.test.mjs b/config/templates/plugin.test.mjs new file mode 100644 index 00000000000..9638f75571e --- /dev/null +++ b/config/templates/plugin.test.mjs @@ -0,0 +1,8 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import plugin from './dist/index.mjs' +import { sharedPluginTests } from '../../../tests/plugins/shared.mjs' + + +// Run shared tests +sharedPluginTests(plugin) diff --git a/config/templates/readme.dflt.md b/config/templates/readme.dflt.md index 3beaf176aa8..61884a457d2 100644 --- a/config/templates/readme.dflt.md +++ b/config/templates/readme.dflt.md @@ -9,8 +9,7 @@ ## What am I looking at? 🤔 -This repository is our *monorepo* -holding [all our NPM packages](https://freesewing.dev/reference/packages/). +This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites. This folder holds: {{{fullname}}} diff --git a/config/templates/readme.main.md b/config/templates/readme.main.md index 30cfd6ffac7..719a278a869 100644 --- a/config/templates/readme.main.md +++ b/config/templates/readme.main.md @@ -48,7 +48,7 @@ ## What am I looking at? 🤔 -This repository is our *monorepo* holding [all our NPM packages](https://freesewing.dev/reference/packages/). +This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites. ## Get involved with FreeSewing v3 🚀 diff --git a/crowdin.yml b/crowdin.yml index 32c1c13ad09..9335efd4269 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -6,4 +6,3 @@ files: translation: /packages/i18n/src/locales/%two_letters_code%/**/%original_file_name% - source: /markdown/org/**/en.md translation: /markdown/org/**/%two_letters_code%.md - diff --git a/designs/aaron/README.md b/designs/aaron/README.md index 62bf19050ae..94f9b1c4310 100644 --- a/designs/aaron/README.md +++ b/designs/aaron/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/aaron/config/index.js b/designs/aaron/config/index.js index ca18e5824ad..79cb08c948f 100644 --- a/designs/aaron/config/index.js +++ b/designs/aaron/config/index.js @@ -11,7 +11,7 @@ export default { type: 'pattern', difficulty: 2, optionGroups: { - fit: ['chestEase', 'hipsEase', 'stretchFactor'], + fit: ['chestEase', 'hipsEase', 'stretchFactor', 'draftForHighBust'], style: [ 'armholeDrop', 'backlineBend', @@ -32,6 +32,7 @@ export default { 'shoulderToShoulder', 'hips', ], + optionalMeasurements: ['highBust'], dependencies: { front: 'base', back: 'front', @@ -65,5 +66,8 @@ export default { stretchFactor: { pct: 5, min: 0, max: 15 }, shoulderStrapWidth: { pct: 15, min: 10, max: 40 }, shoulderStrapPlacement: { pct: 40, min: 20, max: 80 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/aaron/package.json b/designs/aaron/package.json index 00b0dbb51f2..a093f5a12b6 100644 --- a/designs/aaron/package.json +++ b/designs/aaron/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/aaron", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a A-shirt or tank top", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/aaron/src/index.js b/designs/aaron/src/index.js index 3f1ed602685..ed1023c4cde 100644 --- a/designs/aaron/src/index.js +++ b/designs/aaron/src/index.js @@ -1,14 +1,27 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftBack from './back' import draftFront from './front' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Aaron = new freesewing.Design(config, plugins) +const Aaron = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype Aaron.prototype.draftBase = function (part) { diff --git a/designs/aaron/tests/shared.test.mjs b/designs/aaron/tests/shared.test.mjs index 8752d77db99..a67ed06ffa8 100644 --- a/designs/aaron/tests/shared.test.mjs +++ b/designs/aaron/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Aaron from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'aaron', - new Aaron(), + "aaron", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'aaron', - Aaron, + "aaron", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'aaron', - Aaron, + "aaron", + Pattern, expect, models, patterns diff --git a/designs/albert/README.md b/designs/albert/README.md index af6ed627f4c..426c7c7addb 100644 --- a/designs/albert/README.md +++ b/designs/albert/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/albert/package.json b/designs/albert/package.json index 1d413119356..65403ba3140 100644 --- a/designs/albert/package.json +++ b/designs/albert/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/albert", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for an apron", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/albert/tests/shared.test.mjs b/designs/albert/tests/shared.test.mjs index a2d6c06ed73..a2d23a365c9 100644 --- a/designs/albert/tests/shared.test.mjs +++ b/designs/albert/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Albert from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'albert', - new Albert(), + "albert", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'albert', - Albert, + "albert", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'albert', - Albert, + "albert", + Pattern, expect, models, patterns diff --git a/designs/bee/README.md b/designs/bee/README.md index f4c474dc124..092b7a288c3 100644 --- a/designs/bee/README.md +++ b/designs/bee/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/bee/config/index.js b/designs/bee/config/index.js index adfe587edd1..3285ea449dc 100644 --- a/designs/bee/config/index.js +++ b/designs/bee/config/index.js @@ -121,7 +121,7 @@ export default { metric: [6, 13, 19, 25, 32, 38], imperial: [6.35, 12.7, 19.05, 25.4, 31.75, 38.1], }, - toAbs: (pct, { measurements }) => measurements.bustSpan * pct, + ...pctBasedOn('bustSpan'), }, neckTieLength: { pct: 80, min: 70, max: 100 }, neckTieEnds: { dflt: 'straight', list: ['straight', 'pointed'] }, diff --git a/designs/bee/package.json b/designs/bee/package.json index fcf9f6b4bd4..7df30c4270e 100644 --- a/designs/bee/package.json +++ b/designs/bee/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/bee", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a bikini top", "author": "bobgeorgethe3rd (https://github.com/bobgeorgethe3rd)", "homepage": "https://freesewing.org/", @@ -31,19 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/bella": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/bella": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/bee/src/cup.js b/designs/bee/src/cup.js index 0658c1d8d23..0d12f0749d2 100644 --- a/designs/bee/src/cup.js +++ b/designs/bee/src/cup.js @@ -22,25 +22,8 @@ export default function (part) { for (let i in paths) delete paths[i] for (let i in snippets) delete snippets[i] //removing macros not required from Bella - delete points.titleAnchor - delete points.__titleNr - delete points.__titleName - delete points.__titlePattern - delete points.scaleboxAnchor - delete points.__scaleboxImperialBottomLeft - delete points.__scaleboxMetricBottomLeft - delete points.__scaleboxImperialTopLeft - delete points.__scaleboxMetricTopLeft - delete points.__scaleboxImperialTopRight - delete points.__scaleboxMetricTopRight - delete points.__scaleboxImperialBottomRight - delete points.__scaleboxMetricBottomRight - delete points.__scaleboxLead - delete points.__scaleboxTitle - delete points.__scaleboxText - delete points.__scaleboxLink - delete points.__scaleboxImperial - delete points.__scaleboxMetric + macro('title', false) + macro('scalebox', false) //bella alterations points.sideHemNew = points.armhole.shiftOutwards( points.bustDartTop, diff --git a/designs/bee/tests/shared.test.mjs b/designs/bee/tests/shared.test.mjs index 8e9d253a69d..dcd182c5ecf 100644 --- a/designs/bee/tests/shared.test.mjs +++ b/designs/bee/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bee from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'bee', - new Bee(), + "bee", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'bee', - Bee, + "bee", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'bee', - Bee, + "bee", + Pattern, expect, models, patterns diff --git a/designs/bella/README.md b/designs/bella/README.md index 28c243c303f..c737116c675 100644 --- a/designs/bella/README.md +++ b/designs/bella/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/bella/package.json b/designs/bella/package.json index 1f82de5b34b..9c7202a303b 100644 --- a/designs/bella/package.json +++ b/designs/bella/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/bella", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a womenswear bodice block", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step3": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/bella/tests/shared.test.mjs b/designs/bella/tests/shared.test.mjs index acbb1d7b00d..54d5f545417 100644 --- a/designs/bella/tests/shared.test.mjs +++ b/designs/bella/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bella from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'bella', - new Bella(), + "bella", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'bella', - Bella, + "bella", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'bella', - Bella, + "bella", + Pattern, expect, models, patterns diff --git a/designs/benjamin/README.md b/designs/benjamin/README.md index 1862f06b3ef..b270d03c2a4 100644 --- a/designs/benjamin/README.md +++ b/designs/benjamin/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/benjamin/package.json b/designs/benjamin/package.json index c9010d904ba..ad4487496e6 100644 --- a/designs/benjamin/package.json +++ b/designs/benjamin/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/benjamin", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a bow tie", "author": "woutervdub (https://github.com/woutervdub)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/benjamin/tests/shared.test.mjs b/designs/benjamin/tests/shared.test.mjs index c544d0ec9a6..64823b6505d 100644 --- a/designs/benjamin/tests/shared.test.mjs +++ b/designs/benjamin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Benjamin from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'benjamin', - new Benjamin(), + "benjamin", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'benjamin', - Benjamin, + "benjamin", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'benjamin', - Benjamin, + "benjamin", + Pattern, expect, models, patterns diff --git a/designs/bent/README.md b/designs/bent/README.md index 11196cdb95d..e8252d1e56e 100644 --- a/designs/bent/README.md +++ b/designs/bent/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/bent/config/index.js b/designs/bent/config/index.js index d35ac4cfa60..4cd715cfc17 100644 --- a/designs/bent/config/index.js +++ b/designs/bent/config/index.js @@ -18,6 +18,7 @@ export default { 'lengthBonus', 'sleeveLengthBonus', 'sleeveBend', + 'draftForHighBust', ], style: ['s3Collar', 's3Armhole'], advanced: [ @@ -42,6 +43,7 @@ export default { 'shoulderToWrist', 'wrist', ], + optionalMeasurements: ['highBust'], dependencies: { back: 'base', front: 'back', @@ -81,5 +83,8 @@ export default { // s3 is short for Shoulder Seam Shift s3Collar: { pct: 0, min: -100, max: 100 }, s3Armhole: { pct: 0, min: -100, max: 100 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/bent/package.json b/designs/bent/package.json index 9cc9c0f751a..60fafc10187 100644 --- a/designs/bent/package.json +++ b/designs/bent/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/bent", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a menswear body block with a two-part sleeve", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,20 +31,21 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step4": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -57,7 +58,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/bent/src/index.js b/designs/bent/src/index.js index f76d2679f7c..74b221eb88a 100644 --- a/designs/bent/src/index.js +++ b/designs/bent/src/index.js @@ -1,6 +1,7 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' import mirrorPlugin from '@freesewing/plugin-mirror' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import Brian from '@freesewing/brian' import config from '../config' // Parts @@ -8,8 +9,20 @@ import draftSleeve from './sleeve' import draftTopSleeve from './topsleeve' import draftUnderSleeve from './undersleeve' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create new design -const Bent = new freesewing.Design(config, [plugins, mirrorPlugin]) +const Bent = new freesewing.Design(config, [plugins, mirrorPlugin], { plugin, condition }) // Attach draft methods from Brian to prototype Bent.prototype.draftBase = function (part) { diff --git a/designs/bent/tests/shared.test.mjs b/designs/bent/tests/shared.test.mjs index d6745640730..78ce691501c 100644 --- a/designs/bent/tests/shared.test.mjs +++ b/designs/bent/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bent from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'bent', - new Bent(), + "bent", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'bent', - Bent, + "bent", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'bent', - Bent, + "bent", + Pattern, expect, models, patterns diff --git a/designs/bob/README.md b/designs/bob/README.md index 2345dd8e52e..52dcce31a63 100644 --- a/designs/bob/README.md +++ b/designs/bob/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/bob/package.json b/designs/bob/package.json index 51f6bcea87f..0256afa597d 100644 --- a/designs/bob/package.json +++ b/designs/bob/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/bob", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a bib", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/bob/tests/shared.test.mjs b/designs/bob/tests/shared.test.mjs index 264cb3fb140..47b77e878af 100644 --- a/designs/bob/tests/shared.test.mjs +++ b/designs/bob/tests/shared.test.mjs @@ -12,14 +12,13 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( "bob", new Pattern(), expect, models, - patterns, + patterns ) // Test drafting @@ -28,8 +27,7 @@ testPatternDrafting( Pattern, expect, models, - patterns, - true + patterns ) // Test sampling diff --git a/designs/breanna/README.md b/designs/breanna/README.md index 0d04b951b5d..820e80cffda 100644 --- a/designs/breanna/README.md +++ b/designs/breanna/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/breanna/config/index.js b/designs/breanna/config/index.js index 48043fb492d..3723b463a39 100644 --- a/designs/breanna/config/index.js +++ b/designs/breanna/config/index.js @@ -127,6 +127,7 @@ export default { '17:00', ], dflt: '06:00', + doNotTranslate: true, }, secondaryBustDart: { list: [ @@ -148,6 +149,7 @@ export default { '17:00', ], dflt: '13:30', + doNotTranslate: true, }, // Percentages diff --git a/designs/breanna/package.json b/designs/breanna/package.json index 38f89189bee..1d6bab699e0 100644 --- a/designs/breanna/package.json +++ b/designs/breanna/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/breanna", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a basic body block for womenswear", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step3": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/breanna/src/sleeve.js b/designs/breanna/src/sleeve.js index 09864482678..08fb5888684 100644 --- a/designs/breanna/src/sleeve.js +++ b/designs/breanna/src/sleeve.js @@ -65,7 +65,9 @@ export default (part) => { if (q1Len === frontTarget) points.frontNotch = points.capQ1.clone() else if (q1Len > frontTarget) points.frontNotch = q1.shiftAlong(frontTarget) else { - let q2 = new Path().move(points.capQ1).curve(points.capQ1Cp2, points.capQ2Cp1, points.capQ2) + let q2 = new Path().move(points.capQ1) + .curve(points.capQ1Cp2, points.capQ2Cp1, points.capQ2) + .curve(points.capQ2Cp2, points.capQ3Cp1, points.capQ3) points.frontNotch = q2.shiftAlong(frontTarget - q1Len) } let q4 = new Path().move(points.bicepsLeft)._curve(points.capQ4Cp2, points.capQ4) @@ -74,7 +76,9 @@ export default (part) => { if (q4Len === backTarget) points.backNotch = points.capQ4.clone() else if (q4Len > backTarget) points.backNotch = q4.shiftAlong(backTarget) else { - let q3 = new Path().move(points.capQ4).curve(points.capQ4Cp1, points.capQ3Cp2, points.capQ3) + let q3 = new Path().move(points.capQ4) + .curve(points.capQ4Cp1, points.capQ3Cp2, points.capQ3) + .curve(points.capQ3Cp1, points.capQ2Cp2, points.capQ2) points.backNotch = q3.shiftAlong(backTarget - q4Len) } snippets.frontNotch = new Snippet('notch', points.frontNotch) diff --git a/designs/breanna/tests/shared.test.mjs b/designs/breanna/tests/shared.test.mjs index c15e1f2b2bf..c22ca9fbf4d 100644 --- a/designs/breanna/tests/shared.test.mjs +++ b/designs/breanna/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Breanna from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'breanna', - new Breanna(), + "breanna", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'breanna', - Breanna, + "breanna", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'breanna', - Breanna, + "breanna", + Pattern, expect, models, patterns diff --git a/designs/brian/README.md b/designs/brian/README.md index f4fdf114497..cb12e27a291 100644 --- a/designs/brian/README.md +++ b/designs/brian/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/brian/config/index.js b/designs/brian/config/index.js index d719040bc64..716831764d8 100644 --- a/designs/brian/config/index.js +++ b/designs/brian/config/index.js @@ -17,6 +17,7 @@ export default { 'shoulderEase', 'lengthBonus', 'sleeveLengthBonus', + 'draftForHighBust', ], style: ['s3Collar', 's3Armhole'], advanced: [ @@ -62,6 +63,7 @@ export default { 'shoulderToWrist', 'wrist', ], + optionalMeasurements: ['highBust'], dependencies: { back: 'base', front: 'back', @@ -116,5 +118,8 @@ export default { sleevecapQ4Spread2: { pct: 6.3, min: 4, max: 20 }, sleeveWidthGuarantee: { pct: 90, min: 25, max: 100 }, sleeveLengthBonus: { pct: 0, min: -40, max: 10 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/brian/package.json b/designs/brian/package.json index 6095a8da9eb..7b46b9b38d5 100644 --- a/designs/brian/package.json +++ b/designs/brian/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/brian", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a basic body block for menswear", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step3": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/brian/src/back.js b/designs/brian/src/back.js index 2b2ffe5376f..a640aca822e 100644 --- a/designs/brian/src/back.js +++ b/designs/brian/src/back.js @@ -20,7 +20,8 @@ export default (part) => { // Adapt the shoulder seam according to the relevant options // Note: s3 stands for Shoulder Seam Shift - if (options.s3Collar === 0) { + // Don't bother with less than 10% as that's just asking for trouble + if (options.s3Collar < 0.1 && options.s3Collar > -0.1) { points.s3CollarSplit = points.hps paths.backCollar = new Path() .move(points.hps) @@ -58,7 +59,8 @@ export default (part) => { .reverse() .setRender(false) } - if (options.s3Armhole === 0) { + // Don't bother with less than 10% as that's just asking for trouble + if (options.s3Armhole < 0.1 && options.s3Armhole > -0.1) { points.s3ArmholeSplit = points.shoulder paths.backArmhole = new Path() .move(points.armholePitch) diff --git a/designs/brian/src/front.js b/designs/brian/src/front.js index 2b5ed037aaa..1d6a47681a2 100644 --- a/designs/brian/src/front.js +++ b/designs/brian/src/front.js @@ -23,7 +23,8 @@ export default (part) => { points.armholePitchCp2 = points.frontArmholePitchCp2 // Adapt the shoulder line according to the relevant options - if (options.s3Collar === 0) { + // Don't bother with less than 10% as that's just asking for trouble + if (options.s3Collar < 0.1 && options.s3Collar > -0.1) { points.s3CollarSplit = points.hps paths.frontCollar = new Path() .move(points.hps) @@ -60,7 +61,7 @@ export default (part) => { .join(new Path().move(points.hps).curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck)) .setRender(false) } - if (options.s3Armhole === 0) { + if (options.s3Armhole < 0.1 && options.s3Armhole > -0.1) { points.s3ArmholeSplit = points.shoulder paths.frontArmhole = new Path() .move(points.armholePitch) diff --git a/designs/brian/src/index.js b/designs/brian/src/index.js index 89e6bd38d2e..b2168915d57 100644 --- a/designs/brian/src/index.js +++ b/designs/brian/src/index.js @@ -1,5 +1,6 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftBase from './base' @@ -8,8 +9,20 @@ import draftFront from './front' import draftSleevecap from './sleevecap' import draftSleeve from './sleeve' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Brian = new freesewing.Design(config, plugins) +const Brian = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype Brian.prototype.draftBase = draftBase diff --git a/designs/brian/tests/shared.test.mjs b/designs/brian/tests/shared.test.mjs index 327a0df60f0..282943f30a6 100644 --- a/designs/brian/tests/shared.test.mjs +++ b/designs/brian/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Brian from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'brian', - new Brian(), + "brian", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'brian', - Brian, + "brian", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'brian', - Brian, + "brian", + Pattern, expect, models, patterns diff --git a/designs/bruce/README.md b/designs/bruce/README.md index 197f10eb0bb..2d8d3c0846b 100644 --- a/designs/bruce/README.md +++ b/designs/bruce/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/bruce/package.json b/designs/bruce/package.json index 81d7e269a13..f997eb249ba 100644 --- a/designs/bruce/package.json +++ b/designs/bruce/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/bruce", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for boxer briefs", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/bruce/tests/shared.test.mjs b/designs/bruce/tests/shared.test.mjs index 80c87cc5124..3b450e91488 100644 --- a/designs/bruce/tests/shared.test.mjs +++ b/designs/bruce/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Bruce from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'bruce', - new Bruce(), + "bruce", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'bruce', - Bruce, + "bruce", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'bruce', - Bruce, + "bruce", + Pattern, expect, models, patterns diff --git a/designs/carlita/README.md b/designs/carlita/README.md index c39cf4b53a2..169c81d4797 100644 --- a/designs/carlita/README.md +++ b/designs/carlita/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/carlita/package.json b/designs/carlita/package.json index 24a91b70fd7..bcdf6b2252a 100644 --- a/designs/carlita/package.json +++ b/designs/carlita/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/carlita", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,24 +31,23 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/bent": "^2.21.3", - "@freesewing/carlton": "^2.21.3", - "@freesewing/plugin-bust": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/bent": "^2.22.0-rc.0", + "@freesewing/carlton": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -61,7 +60,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/carlita/tests/shared.test.mjs b/designs/carlita/tests/shared.test.mjs index 48ec4cd0101..c37781445ea 100644 --- a/designs/carlita/tests/shared.test.mjs +++ b/designs/carlita/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Carlita from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'carlita', - new Carlita(), + "carlita", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'carlita', - Carlita, + "carlita", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'carlita', - Carlita, + "carlita", + Pattern, expect, models, patterns diff --git a/designs/carlton/README.md b/designs/carlton/README.md index 6457c652ee9..ea7e1e5953d 100644 --- a/designs/carlton/README.md +++ b/designs/carlton/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/carlton/config/index.js b/designs/carlton/config/index.js index b2476ae9831..ccf2810b780 100644 --- a/designs/carlton/config/index.js +++ b/designs/carlton/config/index.js @@ -20,6 +20,7 @@ export default { 'sleeveLengthBonus', 'waistEase', 'seatEase', + 'draftForHighBust', ], advanced: [ 'backNeckCutout', @@ -73,6 +74,7 @@ export default { 'waistToSeat', 'seat', ], + optionalMeasurements: ['highBust'], dependencies: { bentBack: 'bentBase', bentFront: 'bentBack', @@ -165,5 +167,8 @@ export default { // s3 is short for Shoulder Seam Shift s3Collar: { pct: 0, min: -100, max: 100 }, s3Armhole: { pct: 0, min: -100, max: 100 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/carlton/package.json b/designs/carlton/package.json index f87283658f6..2a1df7dcf64 100644 --- a/designs/carlton/package.json +++ b/designs/carlton/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/carlton", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,22 +31,22 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step4": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/bent": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/bent": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -59,7 +59,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/carlton/src/index.js b/designs/carlton/src/index.js index 75876fed1ed..dd3ff6ff63b 100644 --- a/designs/carlton/src/index.js +++ b/designs/carlton/src/index.js @@ -1,5 +1,6 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import Bent from '@freesewing/bent' import config from '../config' // Parts @@ -21,8 +22,20 @@ import draftInnerPocketWelt from './innerpocketwelt' import draftInnerPocketBag from './innerpocketbag' import draftInnerPocketTab from './innerpockettab' -// Create new design -const Carlton = new freesewing.Design(config, plugins) +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + +// Create design +const Carlton = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods from Bent to prototype Carlton.prototype.draftBentBase = function (part) { diff --git a/designs/carlton/tests/shared.test.mjs b/designs/carlton/tests/shared.test.mjs index 1abbefda9a5..5abe4bcc11e 100644 --- a/designs/carlton/tests/shared.test.mjs +++ b/designs/carlton/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Carlton from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'carlton', - new Carlton(), + "carlton", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'carlton', - Carlton, + "carlton", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'carlton', - Carlton, + "carlton", + Pattern, expect, models, patterns diff --git a/designs/cathrin/README.md b/designs/cathrin/README.md index b07812b300c..f881af04cd1 100644 --- a/designs/cathrin/README.md +++ b/designs/cathrin/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/cathrin/package.json b/designs/cathrin/package.json index c694a0c3426..f9ab95ee896 100644 --- a/designs/cathrin/package.json +++ b/designs/cathrin/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/cathrin", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a underbust corset / waist trainer", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/cathrin/src/panel1ab.js b/designs/cathrin/src/panel1ab.js index 10a3925bf3e..89eb5ba9b0b 100644 --- a/designs/cathrin/src/panel1ab.js +++ b/designs/cathrin/src/panel1ab.js @@ -12,13 +12,16 @@ export default function (part) { .curve(paths.panel1.ops[1].cp1, paths.panel1.ops[1].cp2, paths.panel1.ops[1].to) points.bottomABsplit = bottom.shiftFractionAlong(0.3) - paths.panel1a = bottom - .split(points.bottomABsplit)[0] + paths.panel1a_nonfold = new Path() + .move(points.bottomCF) + .join(bottom.split(points.bottomABsplit)[0]) .line(points.topABsplit) .join(top.split(points.topABsplit)[1]) - .line(points.bottomCF) + .setRender(false) + paths.panel1a = paths.panel1a_nonfold.clone() .close() .attr('class', 'fabric') + .setRender(true) paths.panel1b = bottom .split(points.bottomABsplit)[1] .curve(points.hipsGap1Cp, points.waistGap1LeftCp1, points.waistGap1Left) @@ -35,7 +38,11 @@ export default function (part) { // Complete pattern? if (complete) { if (sa) { - paths.saA = paths.panel1a.offset(sa).attr('class', 'fabric sa') + paths.saA = paths.panel1a_nonfold.offset(sa).attr('class', 'fabric sa') + paths.saA + .line(points.topCF) + .move(points.bottomCF) + .line(paths.saA.start()) paths.saB = paths.panel1b.offset(sa).attr('class', 'fabric sa') } macro('cutonfold', { diff --git a/designs/cathrin/tests/shared.test.mjs b/designs/cathrin/tests/shared.test.mjs index 729b2cc73a5..5f9e94136ce 100644 --- a/designs/cathrin/tests/shared.test.mjs +++ b/designs/cathrin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Cathrin from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'cathrin', - new Cathrin(), + "cathrin", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'cathrin', - Cathrin, + "cathrin", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'cathrin', - Cathrin, + "cathrin", + Pattern, expect, models, patterns diff --git a/designs/charlie/README.md b/designs/charlie/README.md index 02e5e5a05b6..80f153f0efd 100644 --- a/designs/charlie/README.md +++ b/designs/charlie/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/charlie/config/index.js b/designs/charlie/config/index.js index 3fd9903e31f..239220addf5 100644 --- a/designs/charlie/config/index.js +++ b/designs/charlie/config/index.js @@ -71,7 +71,7 @@ export default { frontPocketFacing: 'frontPocket', backPocketFacing: 'backPocket', backPocketInterfacing: 'backPocket', - backPocketJet: 'backPocketFacing', + backPocketWelt: 'backPocketFacing', flyFacing: 'front', flyExtension: 'flyFacing', }, @@ -91,6 +91,7 @@ export default { fitCrossSeam: true, fitCrossSeamFront: true, fitCrossSeamBack: true, + fitGuides: false, // Lock titan options fitKnee: true, diff --git a/designs/charlie/package.json b/designs/charlie/package.json index 0793e3fb31a..e1e1bc27ca7 100644 --- a/designs/charlie/package.json +++ b/designs/charlie/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/charlie", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for chino trousers", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,21 +31,21 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-bartack": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3", - "@freesewing/titan": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-bartack": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/titan": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -58,7 +58,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/charlie/src/back-pocket-jet.js b/designs/charlie/src/back-pocket-welt.js similarity index 83% rename from designs/charlie/src/back-pocket-jet.js rename to designs/charlie/src/back-pocket-welt.js index c1b5e3b5e12..9cc1c5e21e1 100644 --- a/designs/charlie/src/back-pocket-jet.js +++ b/designs/charlie/src/back-pocket-welt.js @@ -6,13 +6,13 @@ export default (part) => { for (let id in paths) delete paths[id] delete snippets.logo - const jetHeight = points.bottomRight.x / 5 + const weltHeight = points.bottomRight.x / 5 points.bottomLeft = points.curveStartLeft.shift(-90, points.rightNotch.x / 1.75) points.bottomRight = points.bottomLeft.flipX() - points.midLeft = points.bottomLeft.shift(90, jetHeight) - points.midRight = points.bottomRight.shift(90, jetHeight) - points.topLeft = points.bottomLeft.shift(90, jetHeight * 2) - points.topRight = points.bottomRight.shift(90, jetHeight * 2) + points.midLeft = points.bottomLeft.shift(90, weltHeight) + points.midRight = points.bottomRight.shift(90, weltHeight) + points.topLeft = points.bottomLeft.shift(90, weltHeight * 2) + points.topRight = points.bottomRight.shift(90, weltHeight * 2) points.leftNotch = new Point(points.leftNotch.x, points.midRight.y) points.rightNotch = points.leftNotch.flipX() @@ -34,7 +34,7 @@ export default (part) => { macro('title', { at: points.titleAnchor, nr: 4, - title: 'backPocketJet', + title: 'backPocketWelt', scale: 0.5, }) points.grainlineTop = points.topLeft.shiftFractionTowards(points.topRight, 0.15) diff --git a/designs/charlie/src/index.js b/designs/charlie/src/index.js index b1b0eddff2e..e5650336070 100644 --- a/designs/charlie/src/index.js +++ b/designs/charlie/src/index.js @@ -15,7 +15,7 @@ import draftFrontPocketFacing from './front-pocket-facing' import draftBackPocket from './back-pocket' import draftBackPocketFacing from './back-pocket-facing' import draftBackPocketInterfacing from './back-pocket-interfacing' -import draftBackPocketJet from './back-pocket-jet' +import draftBackPocketWelt from './back-pocket-welt' import draftFlyFacing from './fly-facing' import draftFlyExtension from './fly-extension' import draftBeltLoops from './beltloops' @@ -40,7 +40,7 @@ Charlie.prototype.draftFrontPocketFacing = (part) => draftFrontPocketFacing(part Charlie.prototype.draftBackPocket = (part) => draftBackPocket(part) Charlie.prototype.draftBackPocketFacing = (part) => draftBackPocketFacing(part) Charlie.prototype.draftBackPocketInterfacing = (part) => draftBackPocketInterfacing(part) -Charlie.prototype.draftBackPocketJet = (part) => draftBackPocketJet(part) +Charlie.prototype.draftBackPocketWelt = (part) => draftBackPocketWelt(part) Charlie.prototype.draftFlyFacing = (part) => draftFlyFacing(part) Charlie.prototype.draftFlyExtension = (part) => draftFlyExtension(part) Charlie.prototype.draftBeltLoops = (part) => draftBeltLoops(part) diff --git a/designs/charlie/tests/shared.test.mjs b/designs/charlie/tests/shared.test.mjs index ebe77b6d038..c4e6cebfe99 100644 --- a/designs/charlie/tests/shared.test.mjs +++ b/designs/charlie/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Charlie from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'charlie', - new Charlie(), + "charlie", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'charlie', - Charlie, + "charlie", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'charlie', - Charlie, + "charlie", + Pattern, expect, models, patterns diff --git a/designs/cornelius/README.md b/designs/cornelius/README.md index 3639cd4c0b9..979e1c4bcb5 100644 --- a/designs/cornelius/README.md +++ b/designs/cornelius/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/cornelius/package.json b/designs/cornelius/package.json index dfea27410bc..00b848690c3 100644 --- a/designs/cornelius/package.json +++ b/designs/cornelius/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/cornelius", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for cycling breeches, based on the Keystone drafting system", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/cornelius/tests/shared.test.mjs b/designs/cornelius/tests/shared.test.mjs index 6e97e345187..b4ed062d556 100644 --- a/designs/cornelius/tests/shared.test.mjs +++ b/designs/cornelius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Cornelius from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'cornelius', - new Cornelius(), + "cornelius", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'cornelius', - Cornelius, + "cornelius", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'cornelius', - Cornelius, + "cornelius", + Pattern, expect, models, patterns diff --git a/designs/diana/README.md b/designs/diana/README.md index c72a9611b38..091f9a6ea88 100644 --- a/designs/diana/README.md +++ b/designs/diana/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/diana/config/index.js b/designs/diana/config/index.js index 6a38ffb01a3..c8594c11802 100644 --- a/designs/diana/config/index.js +++ b/designs/diana/config/index.js @@ -18,6 +18,7 @@ export default { 'hipsEase', 'lengthBonus', 'sleeveLengthBonus', + 'draftForHighBust', ], style: ['drapeAngle', 'shoulderSeamLength'], advanced: [ @@ -63,6 +64,7 @@ export default { 'shoulderToWrist', 'wrist', ], + optionalMeasurements: ['highBust'], dependencies: { frontBase: 'base', backBase: 'base', @@ -129,5 +131,8 @@ export default { sleevecapQ4Spread1: { pct: 7, min: 4, max: 20 }, sleevecapQ4Spread2: { pct: 7, min: 4, max: 20 }, sleeveWidthGuarantee: { pct: 90, min: 25, max: 100 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/diana/package.json b/designs/diana/package.json index 9c74ce27d8a..79d1224bc75 100644 --- a/designs/diana/package.json +++ b/designs/diana/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/diana", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a top with a draped neck", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/diana/src/index.js b/designs/diana/src/index.js index 62355c1031b..531e3c989b1 100644 --- a/designs/diana/src/index.js +++ b/designs/diana/src/index.js @@ -1,13 +1,26 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftFront from './front' import draftSleeve from './sleeve' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Diana = new freesewing.Design(config, plugins) +const Diana = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype Diana.prototype.draftBase = function (part) { diff --git a/designs/diana/tests/shared.test.mjs b/designs/diana/tests/shared.test.mjs index 9aa6aa10b0f..dfb6e4af6d9 100644 --- a/designs/diana/tests/shared.test.mjs +++ b/designs/diana/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Diana from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'diana', - new Diana(), + "diana", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'diana', - Diana, + "diana", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'diana', - Diana, + "diana", + Pattern, expect, models, patterns diff --git a/designs/examples/README.md b/designs/examples/README.md index f0b94d6d540..a7b5b0ea7dd 100644 --- a/designs/examples/README.md +++ b/designs/examples/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/examples/package.json b/designs/examples/package.json index e43073ec046..f8608d31fea 100644 --- a/designs/examples/package.json +++ b/designs/examples/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/examples", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern holding examples for our documentation", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -26,20 +26,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3", - "@freesewing/plugin-gore": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-gore": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -52,7 +52,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/examples/tests/shared.test.mjs b/designs/examples/tests/shared.test.mjs index 5e5741bdb26..bd09fccb59d 100644 --- a/designs/examples/tests/shared.test.mjs +++ b/designs/examples/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Examples from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'examples', - new Examples(), + "examples", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'examples', - Examples, + "examples", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'examples', - Examples, + "examples", + Pattern, expect, models, patterns diff --git a/designs/florence/README.md b/designs/florence/README.md index f55ea433095..0662084769d 100644 --- a/designs/florence/README.md +++ b/designs/florence/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/florence/package.json b/designs/florence/package.json index b434512bdaa..c39538447d6 100644 --- a/designs/florence/package.json +++ b/designs/florence/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/florence", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a face mask", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/florence/tests/shared.test.mjs b/designs/florence/tests/shared.test.mjs index a3b798a43c4..9bc382152f9 100644 --- a/designs/florence/tests/shared.test.mjs +++ b/designs/florence/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Florence from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'florence', - new Florence(), + "florence", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'florence', - Florence, + "florence", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'florence', - Florence, + "florence", + Pattern, expect, models, patterns diff --git a/designs/florent/README.md b/designs/florent/README.md index f8a046665e4..24dc9bf4378 100644 --- a/designs/florent/README.md +++ b/designs/florent/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/florent/package.json b/designs/florent/package.json index df783e32078..35f03e9c38f 100644 --- a/designs/florent/package.json +++ b/designs/florent/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/florent", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a flat cap", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/florent/tests/shared.test.mjs b/designs/florent/tests/shared.test.mjs index 69764327b90..18b44937ed9 100644 --- a/designs/florent/tests/shared.test.mjs +++ b/designs/florent/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Florent from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'florent', - new Florent(), + "florent", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'florent', - Florent, + "florent", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'florent', - Florent, + "florent", + Pattern, expect, models, patterns diff --git a/designs/hi/README.md b/designs/hi/README.md index fd23a37a690..5f4b6a685ee 100644 --- a/designs/hi/README.md +++ b/designs/hi/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/hi/package.json b/designs/hi/package.json index 75663325dd7..7ecb92907c6 100644 --- a/designs/hi/package.json +++ b/designs/hi/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/hi", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a shark plush toy", "author": "woutervdub (https://github.com/woutervdub)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/hi/src/aboveMouth.js b/designs/hi/src/aboveMouth.js index de0bd2e50cd..150bc950d8e 100644 --- a/designs/hi/src/aboveMouth.js +++ b/designs/hi/src/aboveMouth.js @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, diff --git a/designs/hi/src/belly.js b/designs/hi/src/belly.js index 5ab1fa8d88a..48904022827 100644 --- a/designs/hi/src/belly.js +++ b/designs/hi/src/belly.js @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -18,13 +17,13 @@ export default function (part) { let belly01_02d = 224.8451041 * options.size let belly02_03d = 108.1988389 * options.size let belly03_04d = 216.7485605 * options.size - let belly04_05d = 164.7592153 * options.size + //let belly04_05d = 164.7592153 * options.size let belly01_10d = 129.2449198 * options.size let belly01_02a = 25.7020193 let belly02_03a = 2.2164353 let belly03_04a = 338.0869319 - let belly04_05a = 198.1877729 + //let belly04_05a = 198.1877729 let belly01_10a = 163.4959859 let belly10_05d = 231.4386252 * options.size let belly10_05a = 0 @@ -40,7 +39,7 @@ export default function (part) { let belly05cp1d = 48.20828587 * options.size // let belly05cp2d = 48.20828587 * options.size let belly05cp2d = 68 * options.size - let belly10cp1d = 45.42602302 * options.size + //let belly10cp1d = 45.42602302 * options.size // let belly10cp2d = 45.42602302 * options.size let belly10cp2d = 65.42602302 * options.size @@ -56,7 +55,7 @@ export default function (part) { let belly05cp1a = 8.1545383 // let belly05cp2a = 8.1545383 let belly05cp2a = 5 - let belly10cp1a = 169.9644604 + //let belly10cp1a = 169.9644604 let belly10cp2a = 175.9644604 points.belly10 = new Point(0, 0) diff --git a/designs/hi/src/body.js b/designs/hi/src/body.js index 5b7206cf951..772664287e0 100644 --- a/designs/hi/src/body.js +++ b/designs/hi/src/body.js @@ -1,5 +1,5 @@ export default function (part) { - let { + const { store, sa, Point, @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -35,10 +34,9 @@ export default function (part) { let body16_17d = 152.51537318250902 * options.size let body17_18d = 255.15294373571314 * options.size let body18_19d = 71.90453921693678 * options.size - let body19_01d = 61.33021195137026 * options.size + //let body19_01d = 61.33021195137026 * options.size - let body01cp1d = 42.13103487929059 * options.size - body01cp1d = 32.13103487929059 * options.size + let body01cp1d = 32.13103487929059 * options.size let body01cp2d = 23.72518967258217 * options.size let body02cp1d = 44.99353642469105 * options.size let body02cp2d = 42.33568754608812 * options.size @@ -166,7 +164,7 @@ export default function (part) { let body16_17a = 353.6138832 let body17_18a = 2.546389668 let body18_19a = 348.3450181 - let body19_01a = 59.63482522 + //let body19_01a = 59.63482522 let body01cp1a = 161.5263465 let body01cp2a = 255.6503959 diff --git a/designs/hi/src/bottomFin.js b/designs/hi/src/bottomFin.js index eea6870eed5..24c37a96184 100644 --- a/designs/hi/src/bottomFin.js +++ b/designs/hi/src/bottomFin.js @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, diff --git a/designs/hi/src/lowerTeeth.js b/designs/hi/src/lowerTeeth.js index 151eab6fbc4..717fccbb9e2 100644 --- a/designs/hi/src/lowerTeeth.js +++ b/designs/hi/src/lowerTeeth.js @@ -11,7 +11,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, diff --git a/designs/hi/src/mouth.js b/designs/hi/src/mouth.js index bfcdcb11459..12142c8a619 100644 --- a/designs/hi/src/mouth.js +++ b/designs/hi/src/mouth.js @@ -1,5 +1,5 @@ export default function (part) { - let { + const { store, sa, Point, @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, diff --git a/designs/hi/src/tail.js b/designs/hi/src/tail.js index 5b3cb6a002f..396fadd9051 100644 --- a/designs/hi/src/tail.js +++ b/designs/hi/src/tail.js @@ -1,5 +1,5 @@ export default function (part) { - let { + const { store, sa, Point, @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, diff --git a/designs/hi/src/topFin.js b/designs/hi/src/topFin.js index e1368a9e6d1..5fe804e0794 100644 --- a/designs/hi/src/topFin.js +++ b/designs/hi/src/topFin.js @@ -1,5 +1,5 @@ export default function (part) { - let { + const { store, sa, Point, @@ -9,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -20,7 +19,7 @@ export default function (part) { let topFin01_02d = 256.9537569065251 * options.size let topFin01_02a = 325.46697637215823 - let topFin01_03d = 149.5416276819869 * options.size + //let topFin01_03d = 149.5416276819869 * options.size let topFin01_03a = 275.4353725228365 let topFin01cp1d = 178.52481158058 * options.size let topFin01cp2d = 27.240286624072077 * options.size diff --git a/designs/hi/src/upperTeeth.js b/designs/hi/src/upperTeeth.js index 808a6838d50..94c315dc973 100644 --- a/designs/hi/src/upperTeeth.js +++ b/designs/hi/src/upperTeeth.js @@ -1,7 +1,7 @@ import { createTeeth } from './teeth.js' export default function (part) { - let { + const { store, sa, Point, @@ -11,18 +11,17 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, } = part.shorthand() let upperTeeth01_02d = 131.305041182736 * options.size - let upperTeeth01_02a = 34.147056946748805 + let upperTeeth01_02a = 34.147056946748805 let upperTeeth02cp1d = 64.30113337316406 * options.size let upperTeeth02cp1a = 55.1335930733262 +180 let upperTeeth01cp2d = 48.331000000000017 * options.size - let upperTeeth01cp2a = 0 + let upperTeeth01cp2a = 0 points.upperTeeth01 = new Point(0, 0) points.upperTeeth02 = points.upperTeeth01.shift(upperTeeth01_02a, upperTeeth01_02d) diff --git a/designs/hi/tests/shared.test.mjs b/designs/hi/tests/shared.test.mjs index db48ff487d3..c75c84f5196 100644 --- a/designs/hi/tests/shared.test.mjs +++ b/designs/hi/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Hi from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'hi', - new Hi(), + "hi", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'hi', - Hi, + "hi", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'hi', - Hi, + "hi", + Pattern, expect, models, patterns diff --git a/designs/holmes/README.md b/designs/holmes/README.md index 861244ae829..a1dd993dc98 100644 --- a/designs/holmes/README.md +++ b/designs/holmes/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/holmes/package.json b/designs/holmes/package.json index c8958c567fc..a896b39a9f8 100644 --- a/designs/holmes/package.json +++ b/designs/holmes/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/holmes", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a Sherlock Holmes hat", "author": "AlfaLyr (https://github.com/alfalyr)", "homepage": "https://freesewing.org/", @@ -31,22 +31,22 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-bust": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": { - "@freesewing/plugin-gore": "^2.21.3" + "@freesewing/plugin-gore": "^2.22.0-rc.0" }, "devDependencies": { "mocha": "^10.0.0", @@ -58,7 +58,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/holmes/tests/shared.test.mjs b/designs/holmes/tests/shared.test.mjs index 74eae33e0e7..53faddc7791 100644 --- a/designs/holmes/tests/shared.test.mjs +++ b/designs/holmes/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Holmes from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'holmes', - new Holmes(), + "holmes", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'holmes', - Holmes, + "holmes", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'holmes', - Holmes, + "holmes", + Pattern, expect, models, patterns diff --git a/designs/hortensia/README.md b/designs/hortensia/README.md index da113c66b99..5f308e997ca 100644 --- a/designs/hortensia/README.md +++ b/designs/hortensia/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/hortensia/package.json b/designs/hortensia/package.json index 9bd5f11aca8..4e170be03c3 100644 --- a/designs/hortensia/package.json +++ b/designs/hortensia/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/hortensia", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a handbag", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/hortensia/tests/shared.test.mjs b/designs/hortensia/tests/shared.test.mjs index c8338f7eedb..c6fe242d158 100644 --- a/designs/hortensia/tests/shared.test.mjs +++ b/designs/hortensia/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Hortensia from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'hortensia', - new Hortensia(), + "hortensia", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'hortensia', - Hortensia, + "hortensia", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'hortensia', - Hortensia, + "hortensia", + Pattern, expect, models, patterns diff --git a/designs/huey/README.md b/designs/huey/README.md index cc3136edc13..85c4ed874c8 100644 --- a/designs/huey/README.md +++ b/designs/huey/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/huey/config/index.js b/designs/huey/config/index.js index 491d3b84417..c7fe05c5886 100644 --- a/designs/huey/config/index.js +++ b/designs/huey/config/index.js @@ -18,6 +18,7 @@ export default { 'shoulderEase', 'hipsEase', 'ribbingStretch', + 'draftForHighBust', ], style: [ 'lengthBonus', @@ -38,6 +39,7 @@ export default { advanced: brianConfig.optionGroups.advanced, }, measurements: [...brianConfig.measurements, 'head', 'hips'], + optionalMeasurements: brianConfig.optionalMeasurements, dependencies: { backBase: 'base', frontBase: 'backBase', diff --git a/designs/huey/package.json b/designs/huey/package.json index a8eecdcde2c..7022bd63562 100644 --- a/designs/huey/package.json +++ b/designs/huey/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/huey", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a zip-up hoodie", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/huey/src/index.js b/designs/huey/src/index.js index e45ee40ffdd..1b065445354 100644 --- a/designs/huey/src/index.js +++ b/designs/huey/src/index.js @@ -1,5 +1,6 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import Brian from '@freesewing/brian' import config from '../config' // Parts @@ -11,8 +12,20 @@ import draftHood from './hood' import draftWaistband from './waistband' import draftCuff from './cuff' -// Create new design -const Huey = new freesewing.Design(config, plugins) +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + +// Create design +const Huey = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods from Brian to prototype Huey.prototype.draftBase = function (part) { diff --git a/designs/huey/tests/shared.test.mjs b/designs/huey/tests/shared.test.mjs index 99d80316d35..59125600a4d 100644 --- a/designs/huey/tests/shared.test.mjs +++ b/designs/huey/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Huey from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'huey', - new Huey(), + "huey", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'huey', - Huey, + "huey", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'huey', - Huey, + "huey", + Pattern, expect, models, patterns diff --git a/designs/hugo/README.md b/designs/hugo/README.md index 8149d2f16d4..603076e523e 100644 --- a/designs/hugo/README.md +++ b/designs/hugo/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/hugo/config/index.js b/designs/hugo/config/index.js index 1ee23532a47..2e2b3534595 100644 --- a/designs/hugo/config/index.js +++ b/designs/hugo/config/index.js @@ -9,7 +9,7 @@ export default { type: 'pattern', difficulty: 3, optionGroups: { - fit: ['bicepsEase', 'chestEase', 'cuffEase', 'hipsEase', 'ribbingStretch'], + fit: ['bicepsEase', 'chestEase', 'cuffEase', 'hipsEase', 'ribbingStretch', 'draftForHighBust'], style: ['lengthBonus', 'sleeveLengthBonus', 'ribbingHeight'], advanced: ['acrossBackFactor', 'backNeckCutout'], }, @@ -26,6 +26,7 @@ export default { 'shoulderToWrist', 'wrist', ], + optionalMeasurements: [ 'highBust' ], parts: ['waistband', 'cuff'], dependencies: { frontBase: 'base', @@ -95,5 +96,8 @@ export default { sleeveLengthBonus: { pct: 2, min: 0, max: 10 }, ribbingStretch: { pct: 5, min: 0, max: 10 }, ribbingHeight: { pct: 10, min: 4, max: 20 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/hugo/package.json b/designs/hugo/package.json index 5cdaaf23d4c..6d051e487a2 100644 --- a/designs/hugo/package.json +++ b/designs/hugo/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/hugo", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a hooded jumper with raglan sleeves", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/hugo/src/index.js b/designs/hugo/src/index.js index 366cbf5c2f0..683c5279d6f 100644 --- a/designs/hugo/src/index.js +++ b/designs/hugo/src/index.js @@ -1,6 +1,7 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftBack from './back' @@ -13,8 +14,20 @@ import draftHoodCenter from './hoodcenter' import draftWaistband from './waistband' import draftCuff from './cuff' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Hugo = new freesewing.Design(config, plugins) +const Hugo = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype Hugo.prototype.draftBase = function (part) { diff --git a/designs/hugo/tests/shared.test.mjs b/designs/hugo/tests/shared.test.mjs index 1cc71803064..3856cad5fc2 100644 --- a/designs/hugo/tests/shared.test.mjs +++ b/designs/hugo/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Hugo from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'hugo', - new Hugo(), + "hugo", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'hugo', - Hugo, + "hugo", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'hugo', - Hugo, + "hugo", + Pattern, expect, models, patterns diff --git a/designs/jaeger/README.md b/designs/jaeger/README.md index 8d921a20c31..91dbbb5c44b 100644 --- a/designs/jaeger/README.md +++ b/designs/jaeger/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/jaeger/config/index.js b/designs/jaeger/config/index.js index ebf52ca9240..4cc3ba14606 100644 --- a/designs/jaeger/config/index.js +++ b/designs/jaeger/config/index.js @@ -21,6 +21,7 @@ export default { 'lengthBonus', 'shoulderEase', 'waistEase', + 'draftForHighBust', ], sleeves: ['sleeveBend', 'sleeveLengthBonus', 'sleeveVentLength', 'sleeveVentWidth'], advanced: [ @@ -87,6 +88,7 @@ export default { 'shoulderToWrist', 'wrist', ], + optionalMeasurements: [ 'highBust' ], dependencies: { bentBack: 'bentBase', bentFront: 'bentBack', @@ -237,5 +239,8 @@ export default { list: ['1', '2', '3'], dflt: '2', }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/jaeger/package.json b/designs/jaeger/package.json index c6ca2c1a32f..6437975ce12 100644 --- a/designs/jaeger/package.json +++ b/designs/jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/jaeger", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a sport coat style jacket", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,22 +31,22 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/bent": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/bent": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -59,7 +59,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/jaeger/src/index.js b/designs/jaeger/src/index.js index eb8ec6c3518..43eadae95c4 100644 --- a/designs/jaeger/src/index.js +++ b/designs/jaeger/src/index.js @@ -1,6 +1,6 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' -import buttons from '@freesewing/plugin-buttons' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import Bent from '@freesewing/bent' import config from '../config' // Parts @@ -21,8 +21,20 @@ import draftInnerPocketBag from './innerpocketbag' import draftTopSleeve from './topsleeve' import draftUnderSleeve from './undersleeve' -// Create new design -const Jaeger = new freesewing.Design(config, [plugins, buttons]) +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + +// Create design +const Jaeger = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods from Bent to prototype Jaeger.prototype.draftBentBase = function (part) { diff --git a/designs/jaeger/tests/shared.test.mjs b/designs/jaeger/tests/shared.test.mjs index bf828f24762..7590fdffdfd 100644 --- a/designs/jaeger/tests/shared.test.mjs +++ b/designs/jaeger/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Jaeger from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'jaeger', - new Jaeger(), + "jaeger", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'jaeger', - Jaeger, + "jaeger", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'jaeger', - Jaeger, + "jaeger", + Pattern, expect, models, patterns diff --git a/designs/legend/README.md b/designs/legend/README.md index 275cb1a5ba1..0826efa3cb7 100644 --- a/designs/legend/README.md +++ b/designs/legend/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/legend/package.json b/designs/legend/package.json index ab462e25d02..0a2a66393ab 100644 --- a/designs/legend/package.json +++ b/designs/legend/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/legend", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern to document pattern notation", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-buttons": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/legend/tests/shared.test.mjs b/designs/legend/tests/shared.test.mjs index 1ea2b4174e8..fe903075b15 100644 --- a/designs/legend/tests/shared.test.mjs +++ b/designs/legend/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Legend from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'legend', - new Legend(), + "legend", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'legend', - Legend, + "legend", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'legend', - Legend, + "legend", + Pattern, expect, models, patterns diff --git a/designs/lucy/README.md b/designs/lucy/README.md index ba87b4685e7..c34aa11c8ca 100644 --- a/designs/lucy/README.md +++ b/designs/lucy/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/lucy/package.json b/designs/lucy/package.json index 611d7daf01f..feff1367019 100644 --- a/designs/lucy/package.json +++ b/designs/lucy/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/lucy", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a historical tie-on pocket", "author": "SeaZeeZee (https://github.com/SeaZeeZee)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/lucy/tests/shared.test.mjs b/designs/lucy/tests/shared.test.mjs index e1a2abdcad9..288fa5915b3 100644 --- a/designs/lucy/tests/shared.test.mjs +++ b/designs/lucy/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Lucy from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'lucy', - new Lucy(), + "lucy", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'lucy', - Lucy, + "lucy", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'lucy', - Lucy, + "lucy", + Pattern, expect, models, patterns diff --git a/designs/lunetius/README.md b/designs/lunetius/README.md index 6921fe6de0a..518ad4b3958 100644 --- a/designs/lunetius/README.md +++ b/designs/lunetius/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/lunetius/package.json b/designs/lunetius/package.json index e66c9013de4..3c844e3be23 100644 --- a/designs/lunetius/package.json +++ b/designs/lunetius/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/lunetius", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a lacerna, a historical Roman cloak", "author": "Starfetch (https://github.com/starfetch)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/lunetius/tests/shared.test.mjs b/designs/lunetius/tests/shared.test.mjs index 73495022eda..2ecce331b77 100644 --- a/designs/lunetius/tests/shared.test.mjs +++ b/designs/lunetius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Lunetius from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'lunetius', - new Lunetius(), + "lunetius", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'lunetius', - Lunetius, + "lunetius", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'lunetius', - Lunetius, + "lunetius", + Pattern, expect, models, patterns diff --git a/designs/noble/README.md b/designs/noble/README.md index 990c6854ab4..dc97572edb9 100644 --- a/designs/noble/README.md +++ b/designs/noble/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/noble/config/index.js b/designs/noble/config/index.js index 898cb1775a2..7b72fd9f0af 100644 --- a/designs/noble/config/index.js +++ b/designs/noble/config/index.js @@ -2,8 +2,6 @@ import Bella from '@freesewing/bella' import { version } from '../package.json' -import configHelpers from '@freesewing/config-helpers' -const { pctBasedOn } = configHelpers export default { ...Bella.config, @@ -17,15 +15,28 @@ export default { optionGroups: { type: ['dartPosition'], fit: ['chestEase', 'waistEase', 'bustSpanEase'], - darts: ['backDartHeight', 'waistDartLength', 'shoulderDartPosition','upperDartLength','armholeDartPosition'], + darts: [ + 'backDartHeight', + 'waistDartLength', + 'shoulderDartPosition', + 'upperDartLength', + 'armholeDartPosition', + ], armhole: [ 'armholeDepth', 'backArmholeSlant', 'backArmholeCurvature', + 'frontArmholeCurvature', 'frontArmholePitchDepth', 'backArmholePitchDepth', ], - advanced: ['backNeckCutout', 'backHemSlope', 'frontShoulderWidth', 'highBustWidth', 'shoulderToShoulderEase'], + advanced: [ + 'backNeckCutout', + 'backHemSlope', + 'frontShoulderWidth', + 'highBustWidth', + 'shoulderToShoulderEase', + ], }, measurements: [ 'chest', @@ -36,14 +47,12 @@ export default { 'hpsToWaistBack', 'shoulderToShoulder', 'shoulderSlope', - // ], - // optionalMeasurements: [ 'highBust', 'underbust', 'bustSpan', 'hpsToBust', ], - hide: ['bellaFrontSideDart', 'bellaBack', 'backPoints', 'frontPoints',], + hide: ['bellaFrontSideDart', 'bellaBack', 'backPoints', 'frontPoints'], inject: { ...Bella.config.inject, backPoints: 'bellaBack', @@ -61,16 +70,9 @@ export default { backOutside: 'backPoints', frontPoints: 'bellaBack', frontInside: 'frontPoints', - frontOutside: ['frontPoints','frontInside'], + frontOutside: ['frontPoints', 'frontInside'], }, - parts: [ - 'backPoints', - 'backInside', - 'backOutside', - 'frontPoints', - 'frontInside', - 'frontOutside', - ], + parts: ['backPoints', 'backInside', 'backOutside', 'frontPoints', 'frontInside', 'frontOutside'], options: { // Constants acrossBackFactor: 0.925, @@ -81,6 +83,8 @@ export default { backDartLocation: 0.145, backCenterWaistReduction: 0.35, collarFactor: 0.19, + bustDartCurve: 1, + bustDartLength: 0.9, // Percentages backNeckCutout: { pct: 6, min: 3, max: 9 }, @@ -99,13 +103,20 @@ export default { frontArmholePitchDepth: { pct: 29, max: 31, min: 27 }, backArmholePitchDepth: { pct: 35, max: 40, min: 30 }, highBustWidth: { pct: 86, max: 92, min: 80 }, - bustDartLength: { pct: 90, min: 75, max: 100 }, waistDartLength: { pct: 90, min: 75, max: 95 }, - bustDartCurve: { pct: 100, min: 0, max: 100 }, upperDartLength: { pct: 90, min: 80, max: 95 }, - dartPosition: { dflt: 'shoulder', list: ['shoulder','armhole'] }, - shoulderDartPosition: { pct: 50, min: 10, max: 90, hide: ({options}) => (options.dartPosition != 'shoulder') }, - armholeDartPosition: { pct: 50, min: 10, max: 90, hide: ({options}) => (options.dartPosition == 'shoulder') }, - } - + dartPosition: { dflt: 'shoulder', list: ['shoulder', 'armhole'] }, + shoulderDartPosition: { + pct: 50, + min: 10, + max: 90, + hide: ({ options }) => options.dartPosition != 'shoulder', + }, + armholeDartPosition: { + pct: 50, + min: 10, + max: 90, + hide: ({ options }) => options.dartPosition == 'shoulder', + }, + }, } diff --git a/designs/noble/package.json b/designs/noble/package.json index e00a3d9e7f2..a7e7c3bf358 100644 --- a/designs/noble/package.json +++ b/designs/noble/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/noble", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a princess seam bodice block", "author": "woutervdub (https://github.com/woutervdub)", "homepage": "https://freesewing.org/", @@ -31,19 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/bella": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/bella": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/noble/src/backInside.js b/designs/noble/src/backInside.js index b449317dfc1..08693dd8b78 100644 --- a/designs/noble/src/backInside.js +++ b/designs/noble/src/backInside.js @@ -1,16 +1,12 @@ export default function (part) { - let { - utils, - store, + const { sa, - Point, points, Path, paths, Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -152,6 +148,6 @@ export default function (part) { }) } } - + return part } diff --git a/designs/noble/src/backOutside.js b/designs/noble/src/backOutside.js index 1f80f5d2741..b3b0347bc62 100644 --- a/designs/noble/src/backOutside.js +++ b/designs/noble/src/backOutside.js @@ -1,31 +1,27 @@ export default function (part) { - let { - utils, - store, + const { sa, - Point, points, Path, paths, Snippet, snippets, options, - measurements, complete, paperless, macro, } = part.shorthand() if( options.dartPosition != 'shoulder' ) { - return part + return part } - + paths.dart = new Path() .move(points.shoulderDart) .curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip) .curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight) .setRender(false) - + paths.outsideSeam = new Path() .move(points.dartBottomRight) .line(points.waistSide) @@ -36,10 +32,10 @@ export default function (part) { .join(paths.dart) .close() .attr('class', 'fabric') - + if (complete) { snippets.dartTip = new Snippet('notch', points.dartTip) - + points.titleAnchor = points.dartBottomRight.shiftFractionTowards( points.waistSide, .1 ).shiftFractionTowards( points.shoulder, .3 ) macro('title', { at: points.titleAnchor, @@ -120,6 +116,6 @@ export default function (part) { }) } } - + return part } diff --git a/designs/noble/src/backPoints.js b/designs/noble/src/backPoints.js index 0ea3cd26052..3931c0dab63 100644 --- a/designs/noble/src/backPoints.js +++ b/designs/noble/src/backPoints.js @@ -1,13 +1,13 @@ export default function (part) { - let { - points, - Path, - paths, - options, - snippets, - } = part.shorthand() + const { + points, + Path, + paths, + options, + snippets, + } = part.shorthand() - // Hide Bella paths + // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] @@ -56,7 +56,7 @@ export default function (part) { let diff = 0 let angle = 0 do { - if (length?.o) angle = diff*( length.o > length.i ? -.1 : .1 ) + if (length.o) angle = diff*( length.o > length.i ? -.1 : .1 ) points.dartBottomRight = points.dartBottomRight.rotate( angle, points.waistSide ) diff --git a/designs/noble/src/frontInside.js b/designs/noble/src/frontInside.js index 949e417321c..a8e9c77b721 100644 --- a/designs/noble/src/frontInside.js +++ b/designs/noble/src/frontInside.js @@ -1,6 +1,5 @@ export default function (part) { - let { - utils, + const { store, sa, Point, @@ -10,7 +9,6 @@ export default function (part) { Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -171,7 +169,7 @@ export default function (part) { to: points.hps, y: points.hps.y - sa - 15, }) - } + } } return part diff --git a/designs/noble/src/frontOutside.js b/designs/noble/src/frontOutside.js index c94d12fb6dc..2fceb131ec8 100644 --- a/designs/noble/src/frontOutside.js +++ b/designs/noble/src/frontOutside.js @@ -1,16 +1,13 @@ export default function (part) { - let { - utils, + const { store, sa, - Point, points, Path, paths, Snippet, snippets, options, - measurements, complete, paperless, macro, @@ -154,7 +151,7 @@ export default function (part) { to: points.shoulderDartOutside, x: pLeft.x -sa - 15, }) - + let pArmholeLeft = paths.armhole.edge('left') macro('hd', { from: points.waistDartRight, diff --git a/designs/noble/src/frontPoints.js b/designs/noble/src/frontPoints.js index 84d12245946..a232edccc53 100644 --- a/designs/noble/src/frontPoints.js +++ b/designs/noble/src/frontPoints.js @@ -1,18 +1,10 @@ export default function (part) { - let { - utils, - store, - sa, - Point, + const { points, Path, paths, - Snippet, snippets, options, - measurements, - complete, - paperless, macro, } = part.shorthand() @@ -21,27 +13,10 @@ export default function (part) { // Hide Bella paths for (let key of Object.keys(paths)) paths[key].render = false for (let i in snippets) delete snippets[i] - - //removing macros not required from Bella - delete points.titleAnchor - delete points.__titleNr - delete points.__titleName - delete points.__titlePattern - delete points.scaleboxAnchor - delete points.__scaleboxImperialBottomLeft - delete points.__scaleboxMetricBottomLeft - delete points.__scaleboxImperialTopLeft - delete points.__scaleboxMetricTopLeft - delete points.__scaleboxImperialTopRight - delete points.__scaleboxMetricTopRight - delete points.__scaleboxImperialBottomRight - delete points.__scaleboxMetricBottomRight - delete points.__scaleboxLead - delete points.__scaleboxTitle - delete points.__scaleboxText - delete points.__scaleboxLink - delete points.__scaleboxImperial - delete points.__scaleboxMetric + + // Remove macros from Bella + macro('title', false) + macro('scalebox', false) points.shoulderDartInside = points.hps.shiftFractionTowards( points.shoulder, @@ -244,7 +219,6 @@ export default function (part) { .rotate(-2.5, points.shoulderDartOutside) .shiftFractionTowards(points.shoulderDartOutside, 0.2) - let lInside = shoulderInsideSeam.length() let iteration = 1 let diff = 0 do { @@ -298,7 +272,7 @@ export default function (part) { points.waistDartRight, -1 * bCircle * points.armholeDartOutside.dist(points.armholeDartTip) ) - + diff = 0 iteration = 0 do { @@ -325,7 +299,7 @@ export default function (part) { .attr('class', 'lining') diff = paths.armholeTempCircleOutside.length() - paths.armholeTempCircleInside.length() - iteration ++ + iteration ++ } while( (diff < -1 || diff > 1) && iteration < 200 ) if (iteration >= 200) { raise.error('Something is not quite right here!') diff --git a/designs/noble/tests/shared.test.mjs b/designs/noble/tests/shared.test.mjs index f9b90351043..b66f938614e 100644 --- a/designs/noble/tests/shared.test.mjs +++ b/designs/noble/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Noble from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'noble', - new Noble(), + "noble", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'noble', - Noble, + "noble", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'noble', - Noble, + "noble", + Pattern, expect, models, patterns diff --git a/designs/octoplushy/CHANGELOG.md b/designs/octoplushy/CHANGELOG.md new file mode 100644 index 00000000000..677f0fb5323 --- /dev/null +++ b/designs/octoplushy/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: @freesewing/octoplushy + + + +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. + diff --git a/packages/create-freesewing-pattern/README.md b/designs/octoplushy/README.md similarity index 92% rename from packages/create-freesewing-pattern/README.md rename to designs/octoplushy/README.md index be08428f3b3..fd4b6efa446 100644 --- a/packages/create-freesewing-pattern/README.md +++ b/designs/octoplushy/README.md @@ -1,13 +1,13 @@ ![FreeSewing](https://static.freesewing.org/banner.png)

create-freesewing-pattern on NPM + href="https://www.npmjs.com/package/@freesewing/octoplushy" + title="@freesewing/octoplushy on NPM" + >@freesewing/octoplushy on NPM License: MIT Code quality on DeepScan Open issues tagged pkg:create-freesewing-pattern + href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Aoctoplushy" + title="Open issues tagged pkg:octoplushy" + >Open issues tagged pkg:octoplushy All Contributors

-# create-freesewing-pattern +# @freesewing/octoplushy -Initializer package for FreeSewing patterns: npm init FreeSewing-pattern +A FreeSewing pattern for an octopus plushy toy ## What am I looking at? 🤔 -This repository is our *monorepo* -holding [all our NPM packages](https://freesewing.dev/reference/packages/). +This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites. -This folder holds: create-freesewing-pattern +This folder holds: @freesewing/octoplushy If you're not entirely sure what to do or how to start, type this command: @@ -153,112 +152,118 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/octoplushy/build.js b/designs/octoplushy/build.js new file mode 100644 index 00000000000..7248b245c69 --- /dev/null +++ b/designs/octoplushy/build.js @@ -0,0 +1,57 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.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.js'], + external: ["@freesewing"], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + minify: false, + sourcemap: false, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/designs/octoplushy/config/index.js b/designs/octoplushy/config/index.js new file mode 100644 index 00000000000..0d8911cc64a --- /dev/null +++ b/designs/octoplushy/config/index.js @@ -0,0 +1,47 @@ +import { version } from '../package.json' + +export default { + name: 'octoplushy', + version: version, + design: 'Wouter Van Wageningen', + code: 'Wouter Van Wageningen', + department: 'accessories', + type: 'pattern', + difficulty: 5, + optionGroups: { + style: ['size','type','armWidth','armLength','neckWidth','armTaper','bottomTopArmRatio','bottomArmReduction','bottomArmReductionPlushy'], + }, + parts: ['headSection0', 'headSection1', 'armSection0', 'armSection1', 'eye0', 'eye1', 'eye2'], + measurements: [], + dependencies: { + eye0: 'headSection0', + eye1: 'headSection0', + eye2: 'headSection0', + armSection0: 'headSection0', + armSection1: 'headSection1', + }, + inject: {}, + hide: [], + options: { + sizeConstant: 200, + size: { pct: 100, min: 5, max: 500 }, + type: { dflt: 'octoplushy', list: ['octoplushy', 'octopus', 'squid'] }, + armWidth: { pct: 15, min: 10, max: 30 }, + armLength: { pct: 200, min: 100, max: 500 }, + neckWidth: { pct: 25, min: 25, max: 45 }, + armTaper: { pct: 25, min: 0, max: 50 }, + bottomTopArmRatio: { pct: 87, min: 75, max: 100 }, + bottomArmReduction: { + pct: 90, + min: 75, + max: 125, + hide: ({ options }) => options.type == 'octoplushy', + }, + bottomArmReductionPlushy: { + pct: 80, + min: 75, + max: 125, + hide: ({ options }) => options.type != 'octoplushy', + }, + }, +} diff --git a/designs/octoplushy/package.json b/designs/octoplushy/package.json new file mode 100644 index 00000000000..2a8266b578a --- /dev/null +++ b/designs/octoplushy/package.json @@ -0,0 +1,64 @@ +{ + "name": "@freesewing/octoplushy", + "version": "2.22.0-rc.0", + "description": "A FreeSewing pattern for an octopus plushy toy", + "author": "woutervdub (https://github.com/woutervdub)", + "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" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "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.js", + "lab": "cd ../../sites/lab && yarn start", + "tips": "node ../../scripts/help.mjs", + "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", + "cibuild_step5": "node build.js" + }, + "peerDependencies": { + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "^10.0.0", + "chai": "^4.2.0" + }, + "files": [ + "dist/*", + "README.md" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/designs/octoplushy/src/armSection.js b/designs/octoplushy/src/armSection.js new file mode 100644 index 00000000000..44fc7d67e92 --- /dev/null +++ b/designs/octoplushy/src/armSection.js @@ -0,0 +1,311 @@ +export default function (partNumber, part) { + const { + options, + Point, + Path, + points, + paths, + Snippet, + snippets, + complete, + sa, + paperless, + macro, + utils, + store, + } = part.shorthand() + + if (partNumber > (options.type == 'squid' ? 1 : 0)) { + return part + } + + const c = 0.55191502449351 + const w = options.sizeConstant * options.size + const sections = options.type == 'squid' ? 10 : 8 + + let sectionWidth = (w * 2) / sections + let armWidth = (w * options.armWidth * options.bottomTopArmRatio * 3.1415) / 2 + let armAdjustedWidth = armWidth * options.bottomTopArmRatio + let armLength = ((w * 2) / 3.1415) * options.armLength + switch (options.type) { + case 'octopus': + armLength *= 2 + armLength *= 1 - (1 - options.bottomArmReduction) / 2 + break + case 'squid': + armLength *= 1.8 + if (partNumber == 1) { + armLength *= 1.2 + } + break + case 'octoplushy': + armLength *= options.bottomArmReductionPlushy + } + + points.armMiddle = new Point(0, 0) + + points.skirtLeft2 = points.armMiddle.shift( + 270 - 360 / sections / 2, + (w * options.armWidth * options.bottomTopArmRatio) / + 2 / + Math.sin(utils.deg2rad(360 / sections / 2)) + ) + if (options.type == 'octoplushy') { + points.skirtLeft2 = points.skirtLeft2.shift( + 90, + points.skirtLeft2.y - points.armMiddle.y - store.get('armSkirtRadius') + ) + } + + if (options.type == 'squid') { + points.skirtLeft2 = points.skirtLeft2.shift(90, (points.skirtLeft2.y - points.armMiddle.y) / 2) + } + points.armMiddleCp1 = points.armMiddle.shiftFractionTowards(points.skirtLeft2, c) + points.skirtLeft3 = new Point((-1 * armAdjustedWidth) / 2, points.skirtLeft2.y) + points.skirtLeft = points.skirtLeft3.clone() + let pHelper = points.skirtLeft.shift(store.get('armSkirtToTopAngle'), 10) + if (Math.round(pHelper.x * 1000) <= Math.round((armAdjustedWidth / -2) * 1000)) { + points.armTopLeft = points.skirtLeft.clone() + } else { + points.armTopLeft = utils.beamIntersectsX( + points.skirtLeft, + points.skirtLeft.shift(store.get('armSkirtToTopAngle'), 10), + armAdjustedWidth / -2 + ) + } + points.armTopLeftCp2 = points.armTopLeft.shift(90, (points.armTopLeft.y - points.skirtLeft.y) * c) + points.armTopLeftCp1 = points.armTopLeft.shift(270, armLength / 10) + points.armBottomLeft = points.armTopLeft.shift(270, armLength).shift(0, armAdjustedWidth / 4) + points.armBottom = points.armTopLeft + .shift(270, armLength + armAdjustedWidth / 4) + .shift(0, armAdjustedWidth / 2) + + points.armBottomLeft = points.armBottom + .shift(90, (armAdjustedWidth / 2) * (1 - options.armTaper)) + .shift(180, (armAdjustedWidth / 2) * (1 - options.armTaper)) + points.armBottomLeftCp2 = points.armBottomLeft.shift(90, armLength / 10) + points.armBottomLeftCp1 = points.armBottomLeft.shift( + 270, + (armAdjustedWidth / 2) * (1 - options.armTaper) * c + ) + points.armBottomCp2 = points.armBottom.shift( + 180, + (armAdjustedWidth / 2) * (1 - options.armTaper) * c + ) + + if (options.type == 'octopus') { + let pSkirtLeft = new Path() + .move(points.armTopLeft) + .curve(points.armTopLeftCp2, points.armMiddleCp1, points.armMiddle) + + points.skirtLeft = points.armTopLeft.shift( + pSkirtLeft.shiftAlong(0.1).angle(points.armTopLeft), + armWidth + ) + points.armTopLeft = points.armTopLeft.shift(270, armWidth * 1.6) + points.armTopLeftCp1 = points.armTopLeft.shift(270, armWidth / 2) + points.armTopLeftCp2 = points.armTopLeft.shift(90, armWidth / 2) + } + + if (options.type == 'squid') { + points.tentacleLeft = utils.beamIntersectsX( + points.armBottomLeft, + points.armBottomLeft.shift(180 + 70, 100), + -1.2 * armAdjustedWidth + ) + points.tentacleLeftCp2 = points.tentacleLeft.shift( + 90, + points.armBottomLeft.dist(points.tentacleLeft) / 3 + ) + points.tentacleLeftCp1 = points.tentacleLeft.shift( + 270, + points.armBottomLeft.dist(points.tentacleLeft) / 3 + ) + + if (partNumber == 1) { + points.armBottomLeftCp1 = points.armBottomLeft.shift(270, armAdjustedWidth * c) + points.armBottom = points.armBottom.flipY(points.tentacleLeft) + points.armBottomCp2 = points.armBottomCp2.flipY(points.tentacleLeft) + } + } + points.armMiddleCp2 = points.armMiddleCp1.flipX(points.armMiddle) + points.skirtRight = points.skirtLeft.flipX(points.armMiddle) + points.armTopRight = points.armTopLeft.flipX(points.armMiddle) + points.armTopRightCp1 = points.armTopLeftCp2.flipX(points.armMiddle) + points.armTopRightCp2 = points.armTopLeftCp1.flipX(points.armMiddle) + points.armBottomRight = points.armBottomLeft.flipX(points.armMiddle) + points.armBottomRightCp1 = points.armBottomLeftCp2.flipX(points.armMiddle) + points.armBottomRightCp2 = points.armBottomLeftCp1.flipX(points.armMiddle) + points.armBottom = points.armBottom.flipX(points.armMiddle) + points.armBottomCp1 = points.armBottomCp2.flipX(points.armMiddle) + + if (options.type == 'squid') { + points.tentacleRight = points.tentacleLeft.flipX(points.sectionTop) + points.tentacleRightCp1 = points.tentacleLeftCp2.flipX(points.sectionTop) + points.tentacleRightCp2 = points.tentacleLeftCp1.flipX(points.sectionTop) + } + + paths.armBottom = new Path() + .move(points.armBottomLeft) + .curve(points.armBottomLeftCp1, points.armBottomCp2, points.armBottom) + .curve(points.armBottomCp1, points.armBottomRightCp2, points.armBottomRight) + .setRender(false) + if (options.type == 'squid') { + if (partNumber == 1) { + paths.armBottom = new Path() + .move(points.armBottomLeft) + .curve(points.armBottomLeftCp1, points.tentacleLeftCp2, points.tentacleLeft) + .curve(points.tentacleLeftCp1, points.armBottomCp2, points.armBottom) + .curve(points.armBottomCp1, points.tentacleRightCp2, points.tentacleRight) + .curve(points.tentacleRightCp1, points.armBottomRightCp2, points.armBottomRight) + .setRender(false) + } + } + + if (points.skirtLeft.sitsRoughlyOn(points.armTopLeft)) { + paths.topLeft = new Path() + .move(points.armMiddle) + .curve(points.armMiddleCp1, points.skirtLeft, points.skirtLeft) + } else { + paths.topLeft = new Path() + .move(points.armMiddle) + .curve(points.armMiddleCp1, points.skirtLeft, points.skirtLeft) + .curve(points.skirtLeft, points.armTopLeftCp2, points.armTopLeft) + } + if (points.skirtRight.sitsRoughlyOn(points.armTopRight)) { + paths.topRight = new Path() + .move(points.armTopRight) + .curve(points.skirtRight, points.armMiddleCp2, points.armMiddle) + } else { + paths.topRight = new Path() + .move(points.armTopRight) + .curve(points.armTopRightCp1, points.skirtRight, points.skirtRight) + .curve(points.skirtRight, points.armMiddleCp2, points.armMiddle) + } + paths.section = new Path() + .move(points.armMiddle) + .join(paths.topLeft) + .curve(points.armTopLeftCp1, points.armBottomLeftCp2, points.armBottomLeft) + .join(paths.armBottom) + .curve(points.armBottomRightCp1, points.armTopRightCp2, points.armTopRight) + .join(paths.topRight) + .close() + + // Complete? + if (complete) { + points.logo = points.armMiddle.shiftFractionTowards(points.armBottom, 0.08) + snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.4) + + points.armMiddle.attr('data-text', 'C').attr('data-text-class', 'center') + points.armTopLeft.attr('data-text', 'D').attr('data-text-class', 'center') + points.armTopRight.attr('data-text', 'D').attr('data-text-class', 'center') + + points.titleAnchor = points.armMiddle + .shiftFractionTowards(points.armBottom, 0.2) + .shift(180, sectionWidth * 0.1) + + macro('title', { + at: points.titleAnchor, + nr: 2 + partNumber * 3, + title: 'Arm' + (partNumber == 0 ? '' : ' (a)'), + rotation: 90, + scale: 0.3, + }) + + for (var i = 0; i < 4; i++) { + snippets[`armLeft${i}`] = new Snippet( + 'notch', + points.armTopLeft.shiftFractionTowards(points.armBottomLeft, i / 4) + ) + snippets[`armRight${i}`] = new Snippet( + 'notch', + points.armTopRight.shiftFractionTowards(points.armBottomRight, i / 4) + ) + } + if (options.type == 'octopus') { + points.skirtArmLeft = utils.curveIntersectsX( + points.skirtLeft, + points.skirtLeft, + points.armMiddleCp1, + points.armMiddle, + points.armTopLeft.x + ) + points.skirtArmRight = points.skirtArmLeft.flipX(points.sectionTop) + paths.armLeftLine = new Path() + .move(points.skirtArmLeft) + .line(points.armTopLeft) + .attr('data-text', 'stitch line') + .attr('data-text-class', 'center') + .attr('class', 'hint dotted') + paths.armRightLine = new Path() + .move(points.armTopRight) + .line(points.skirtArmRight) + .attr('data-text', 'stitch line') + .attr('data-text-class', 'center') + .attr('class', 'hint dotted') + } + + if (sa) { + paths.sa = paths.section.offset(sa).attr('class', 'fabric sa') + } + + if (paperless) { + macro('hd', { + from: points.armTopLeft, + to: points.armTopRight, + y: points.armMiddle.y - sa, + }) + macro('hd', { + from: points.armBottomLeft, + to: points.armBottomRight, + y: points.armBottom.y + sa + 10, + }) + + macro('vd', { + from: points.armBottom, + to: points.armMiddle, + x: points.skirtLeft.x - sa - 20, + }) + + if (options.type == 'octopus') { + macro('hd', { + from: points.skirtLeft, + to: points.skirtRight, + y: points.skirtRight.y, + }) + macro('vd', { + from: points.skirtLeft, + to: points.armMiddle, + x: points.skirtLeft.x - sa - 10, + }) + macro('vd', { + from: points.armTopLeft, + to: points.skirtLeft, + x: points.skirtLeft.x - sa - 10, + }) + } else { + macro('vd', { + from: points.armTopLeft, + to: points.armMiddle, + x: points.skirtLeft.x - sa - 10, + }) + } + if (options.type == 'squid') { + if (partNumber == 1) { + macro('hd', { + from: points.tentacleLeft, + to: points.tentacleRight, + y: points.tentacleRight.y, + }) + macro('vd', { + from: points.armBottom, + to: points.tentacleLeft, + x: points.tentacleLeft.x - sa - 10, + }) + } + } + } + } + + return part +} diff --git a/designs/octoplushy/src/eye.js b/designs/octoplushy/src/eye.js new file mode 100644 index 00000000000..83faad86caa --- /dev/null +++ b/designs/octoplushy/src/eye.js @@ -0,0 +1,129 @@ +export default function (partNumber, part) { + const { + options, + Point, + Path, + points, + paths, + Snippet, + snippets, + complete, + sa, + paperless, + macro, + store, + } = part.shorthand() + + if (options.type != 'squid' && options.type != 'octopus') { + return part + } + if (partNumber > (options.type == 'squid' ? 1 : 2)) { + return part + } + + const c = 0.55191502449351 + + let sectionWidth = store.get('sectionWidth') + let eyeSize = sectionWidth / 1.5 + let logoScale = 0.25 + let titleScale = 0.25 + if (partNumber == 1) { + eyeSize *= 0.65 + logoScale = 0.15 + titleScale = 0.16 + } + + if (partNumber < 2) { + points.top = new Point(0, -1 * (eyeSize / 2)) + points.left = new Point(-1 * (eyeSize / 2), 0) + points.bottom = new Point(0, eyeSize / 2) + points.right = new Point(eyeSize / 2, 0) + + points.topCp1 = points.top.shift(180, (eyeSize / 2) * c) + points.topCp2 = points.top.shift(0, (eyeSize / 2) * c) + points.leftCp1 = points.left.shift(270, (eyeSize / 2) * c) + points.leftCp2 = points.left.shift(90, (eyeSize / 2) * c) + points.bottomCp1 = points.bottom.shift(0, (eyeSize / 2) * c) + points.bottomCp2 = points.bottom.shift(180, (eyeSize / 2) * c) + points.rightCp1 = points.right.shift(90, (eyeSize / 2) * c) + points.rightCp2 = points.right.shift(270, (eyeSize / 2) * c) + + paths.eye = new Path() + .move(points.top) + .curve(points.topCp1, points.leftCp2, points.left) + .curve(points.leftCp1, points.bottomCp2, points.bottom) + .curve(points.bottomCp1, points.rightCp2, points.right) + .curve(points.rightCp1, points.topCp2, points.top) + .close() + .attr('class', 'fabric') + .setRender(true) + points.logo = points.top.shiftFractionTowards(points.bottom, 0.3) + points.titleAnchor = points.bottom + .shiftFractionTowards(points.top, 0.25) + .shift(180, eyeSize / 10) + } else { + logoScale = 0.35 + titleScale = 0.25 + let eyeBrowWidth = eyeSize * 0.375 + let eyeCirc = (eyeSize + eyeBrowWidth * 2) * Math.PI + points.tl = new Point(0, 0) + points.tr = points.tl.shift(0, eyeCirc) + points.bl = points.tl.shift(270, eyeBrowWidth * 2) + points.br = points.bl.shift(0, eyeCirc) + + paths.eye = new Path() + .move(points.tl) + .line(points.bl) + .line(points.br) + .line(points.tr) + .line(points.tl) + .close() + .attr('class', 'fabric') + .setRender(true) + + points.logo = points.tl + .shiftFractionTowards(points.bl, 0.5) + .shiftFractionTowards(points.br, 0.3) + points.titleAnchor = points.tr + .shiftFractionTowards(points.br, 0.5) + .shiftFractionTowards(points.bl, 0.3) + } + if (complete) { + snippets.logo = new Snippet('logo', points.logo).attr('data-scale', logoScale) + + macro('title', { + at: points.titleAnchor, + nr: 3 + partNumber * 3, + title: partNumber == 2 ? 'eyebrow' : partNumber == 1 ? 'pupil' : 'eye', + scale: titleScale, + }) + + if (sa) { + paths.sa = paths.eye.offset(Math.min(sa, 6)).attr('class', 'fabric sa') + } + } + + // Paperless? + if (paperless) { + if (partNumber < 2) { + macro('hd', { + from: points.left, + to: points.right, + y: points.top.y - sa, + }) + } else { + macro('hd', { + from: points.tl, + to: points.tr, + y: points.tl.y - sa, + }) + macro('vd', { + from: points.bl, + to: points.tl, + x: points.tl.x - sa, + }) + } + } + + return part +} diff --git a/designs/octoplushy/src/headSection.js b/designs/octoplushy/src/headSection.js new file mode 100644 index 00000000000..390b19be31f --- /dev/null +++ b/designs/octoplushy/src/headSection.js @@ -0,0 +1,609 @@ +// import mirror from '@freesewing/plugin-mirror' +// import { PostAddSharp } from '@material-ui/icons' +// import { Store } from "@material-ui/icons"; + +export default function (partNumber, part) { + const { + options, + Point, + Path, + points, + paths, + Snippet, + snippets, + complete, + sa, + paperless, + macro, + utils, + store, + } = part.shorthand() + + if (partNumber > (options.type == 'squid' ? 1 : 0)) { + return part + } + + const c = 0.55191502449351 + const w = options.sizeConstant * options.size + const h = options.sizeConstant * options.size * 0.5 + const sections = options.type == 'squid' ? 10 : 8 + + let sectionWidth = (w * 2) / sections + let neckWidth = sectionWidth * options.neckWidth + let armWidth = (w * options.armWidth * options.bottomTopArmRatio * 3.1415) / 2 + let armAdjustedWidth = armWidth * options.bottomTopArmRatio + let armLength = ((w * 2) / 3.1415) * options.armLength + if (options.type == 'octopus') { + armLength *= 2 + } + if (options.type == 'squid') { + armLength *= 1.8 + if (partNumber == 1) { + armLength *= 1.2 + } + } + + // console.log({ w: w }) + // console.log({ sectionWidth: sectionWidth }) + // console.log({ neckWidth: neckWidth }) + // console.log({ armAdjustedWidth: w * options.armWidth * options.bottomTopArmRatio }) + // console.log({ toparmWidth: armAdjustedWidth }) + // console.log({ armLength: armLength }) + + points.topLeft = new Point(-1 * w, -1 * h) + points.topRight = new Point(w, -1 * h) + points.bottomLeft = new Point(-1 * w, h) + points.bottomRight = new Point(w, h) + points.left = new Point(-1 * w, 0) + points.right = new Point(w, 0) + + points.sectionTop = new Point(0, -1 * h) + points.sectionBottom = new Point(0, h) + points.sectionLeft = new Point((-1 * sectionWidth) / 2, 0) + let sectionMid = points.sectionLeft.shiftFractionTowards(points.sectionTop, 0.5) + + const sectionAngle = sectionMid.angle(points.sectionTop) + + let lineEnd = sectionMid.shift(sectionAngle - 90, 1000) + points.circleCenter = utils.beamIntersectsY(sectionMid, lineEnd, 0) + + const circleRadius = points.circleCenter.dist(points.sectionTop) + + points.sectionLeftCp2 = points.sectionLeft.shift(90, circleRadius * c) + points.sectionLeftCp1 = points.sectionLeft.shift(270, circleRadius * c) + points.circleTop = points.circleCenter.shift(90, circleRadius) + points.sectionTopCp1 = points.circleTop.shift(180, circleRadius * c) + points.circleBottom = points.circleCenter.shift(270, circleRadius) + points.sectionBottomCp2 = points.circleBottom.shift(180, circleRadius * c) + + paths.circle = new Path() + .move(points.circleTop) + .curve(points.sectionTopCp1, points.sectionLeftCp2, points.sectionLeft) + .curve(points.sectionLeftCp1, points.sectionBottomCp2, points.circleBottom) + .setRender(true) + + let iteration = 0 + let diff = 0 + let div = 4 + do { + points.lowerLeft = points.bottomLeft.shift(90, h / div) + points.lowerRight = points.bottomRight.clone() + + points.sectionBottomLeft = utils.curveIntersectsY( + points.sectionLeft, + points.sectionLeftCp1, + points.sectionBottomCp2, + points.circleBottom, + points.lowerLeft.y + ) + + let currentNeckWidth = (points.sectionTop.x - points.sectionBottomLeft.x) * 2 + + diff = neckWidth - currentNeckWidth + div = div * (currentNeckWidth / neckWidth) + iteration++ + } while ((diff < -1 || diff > 1) && iteration < 100) + + paths.circle = new Path() + .move(points.circleTop) + .curve(points.sectionTopCp1, points.sectionLeftCp2, points.sectionLeft) + .curve(points.sectionLeftCp1, points.sectionBottomCp2, points.circleBottom) + .setRender(false) + + points.sectionBottomLeft = utils.curveIntersectsY( + points.sectionLeft, + points.sectionLeftCp1, + points.sectionBottomCp2, + points.circleBottom, + points.lowerLeft.y + ) + + let sectionLeft = paths.circle.split(points.sectionTop)[1].split(points.sectionBottomLeft)[0] + + points.sectionTop = sectionLeft.ops[0].to.clone() + points.sectionTopCp1 = sectionLeft.ops[1].cp1.clone() + points.sectionLeftCp2 = sectionLeft.ops[1].cp2.clone() + points.sectionLeft = sectionLeft.ops[1].to.clone() + points.sectionLeftCp1 = sectionLeft.ops[2].cp1.clone() + points.sectionBottomLeftCp2 = sectionLeft.ops[2].cp2.clone() + points.sectionBottomLeft = sectionLeft.ops[2].to.clone() + + points.sectionBottomLeftCp1 = points.sectionBottomLeft.shiftFractionTowards( + points.sectionBottomLeftCp2, + -0.5 + ) + + points.skirtTopMiddle = points.sectionBottomLeft.shift(0, neckWidth / 2).shift(270, neckWidth / 3) + points.skirtBottomLeft2 = points.skirtTopMiddle.shift( + 270 - 360 / sections / 2, + (w * options.armWidth * options.bottomTopArmRatio) / + 2 / + Math.sin(utils.deg2rad(360 / sections / 2)) + ) + points.skirtBottomLeft3 = new Point( + points.sectionTop.x - armAdjustedWidth / 2, + points.skirtBottomLeft2.y + ) + if (options.type == 'octoplushy') { + points.skirtBottomLeft3 = points.skirtBottomLeft3.shift( + 270, + (points.skirtTopMiddle.y - points.skirtBottomLeft3.y) / 2 + ) + } + points.skirtBottomLeft = points.skirtBottomLeft3.clone() + points.armTopLeft = utils.beamIntersectsX( + points.skirtBottomLeft, + points.skirtBottomLeft.shift(270 + 30, 100), + points.sectionTop.x - armAdjustedWidth / 2 + ) + points.armTopLeftCp2 = points.armTopLeft.shift( + 90, + points.skirtBottomLeft.dist(points.armTopLeft) / 2 + ) + points.armTopLeftCp1 = points.armTopLeft.shift(270, armLength / 10) + + points.armBottom = points.armTopLeft + .shift(270, armLength + armAdjustedWidth / 4) + .shift(0, armAdjustedWidth / 2) + + points.armBottomLeft = points.armBottom + .shift(90, (armAdjustedWidth / 2) * (1 - options.armTaper)) + .shift(180, (armAdjustedWidth / 2) * (1 - options.armTaper)) + points.armBottomLeftCp2 = points.armBottomLeft.shift(90, armLength / 10) + points.armBottomLeftCp1 = points.armBottomLeft.shift( + 270, + (armAdjustedWidth / 2) * (1 - options.armTaper) * c + ) + points.armBottomCp2 = points.armBottom.shift( + 180, + (armAdjustedWidth / 2) * (1 - options.armTaper) * c + ) + + if (options.type == 'octopus') { + let octopusHeadFactor = 0.7 + let sectionHeight = points.sectionBottom.dist(points.sectionTop) + points.sectionTop = points.sectionTop.shift(90, sectionHeight * octopusHeadFactor) + points.sectionTopCp1 = points.sectionTopCp1.shift(90, sectionHeight * octopusHeadFactor) + points.sectionLeft = points.sectionLeft.shift(90, (sectionHeight * octopusHeadFactor) / 1.1) + points.sectionLeftCp1 = points.sectionLeftCp1.shift( + 90, + (sectionHeight * octopusHeadFactor) / 1.1 + ) + points.sectionLeftCp2 = points.sectionLeftCp2.shift( + 90, + (sectionHeight * octopusHeadFactor) / 1.1 + ) + + let pSkirtLeft = new Path() + .move(points.skirtBottomLeft) + .curve(points.skirtBottomLeft, points.sectionBottomLeftCp1, points.sectionBottomLeft) + + points.skirtBottomLeft = points.skirtBottomLeft.shift( + pSkirtLeft.shiftAlong(0.1).angle(points.skirtBottomLeft), + armWidth + ) + points.armTopLeft = points.armTopLeft.shift(270, armWidth * 1.6) + points.armTopLeftCp1 = points.armTopLeft.shift(270, armWidth / 2) + points.armTopLeftCp2 = points.armTopLeft.shift(90, armWidth / 2) + } + if (options.type == 'squid') { + points.skirtBottomLeft = points.armTopLeft.clone() + points.armTopLeftCp2 = points.armTopLeft.clone() + let sectionHeight = points.sectionBottom.dist(points.sectionTop) + points.sectionTop = points.sectionTop.shift(90, sectionHeight) + points.sectionTopCp1 = points.sectionTopCp1.shift(90, sectionHeight) + points.sectionLeft = points.sectionLeft.shift(90, sectionHeight / 3) + points.sectionLeftCp1 = points.sectionLeftCp1.shift(90, sectionHeight / 3) + points.sectionLeftCp2 = points.sectionLeftCp2.shift(90, sectionHeight / 3) + + points.tentacleLeft = utils.beamIntersectsX( + points.armBottomLeft, + points.armBottomLeft.shift(180 + 70, 100), + -1.2 * armAdjustedWidth + ) + points.tentacleLeftCp2 = points.tentacleLeft.shift( + 90, + points.armBottomLeft.dist(points.tentacleLeft) / 3 + ) + points.tentacleLeftCp1 = points.tentacleLeft.shift( + 270, + points.armBottomLeft.dist(points.tentacleLeft) / 3 + ) + + if (partNumber == 1) { + points.armBottomLeftCp1 = points.armBottomLeft.shift(270, armAdjustedWidth * c) + points.armBottom = points.armBottom.flipY(points.tentacleLeft) + points.armBottomCp2 = points.armBottomCp2.flipY(points.tentacleLeft) + + let pLeftSection = new Path() + .move(points.sectionLeft) + .curve(points.sectionLeftCp2, points.sectionTopCp1, points.sectionTop) + points.finSection = pLeftSection.shiftFractionAlong(0.45) + let pLeftCurves = pLeftSection.split(points.finSection) + + points.sectionLeftCp2 = pLeftCurves[0].ops[1].cp1.clone() + points.finSectionCp1 = pLeftCurves[0].ops[1].cp2.clone() + points.finFold = points.finSection.rotate(-20, points.sectionTop) + points.finSeam = points.finSection.rotate(-40, points.sectionTop) + let foldAngle = points.sectionTop.angle(points.finFold) + let aCp1 = points.sectionTop.angle(pLeftCurves[1].ops[1].cp1) - foldAngle + let aCp2 = points.sectionTop.angle(pLeftCurves[1].ops[1].cp2) - foldAngle + points.finSeamCp2 = points.sectionTop.shift( + foldAngle - aCp1, + points.sectionTop.dist(pLeftCurves[1].ops[1].cp1) + ) + points.finTopCp1 = points.sectionTop.shift( + foldAngle - aCp2, + points.sectionTop.dist(pLeftCurves[1].ops[1].cp2) + ) + } + points.sectionMidLeft = points.sectionBottomLeft.shift(90, sectionHeight / 3) + points.sectionMidLeftCp2 = points.sectionMidLeft.shift( + points.sectionBottomLeft.angle(points.sectionBottomLeftCp2), + points.sectionBottomLeft.dist(points.sectionBottomLeftCp2) + ) + points.sectionMidLeftCp1 = points.sectionMidLeftCp2.flipY(points.sectionMidLeft) + } + + points.sectionTopCp2 = points.sectionTopCp1.flipX(points.sectionTop) + points.sectionRightCp1 = points.sectionLeftCp2.flipX(points.sectionTop) + points.sectionRight = points.sectionLeft.flipX(points.sectionTop) + points.sectionRightCp2 = points.sectionLeftCp1.flipX(points.sectionTop) + points.sectionBottomRightCp1 = points.sectionBottomLeftCp2.flipX(points.sectionTop) + points.sectionBottomRight = points.sectionBottomLeft.flipX(points.sectionTop) + points.sectionBottomRightCp2 = points.sectionBottomLeftCp1.flipX(points.sectionTop) + points.skirtBottomRight = points.skirtBottomLeft.flipX(points.sectionTop) + points.armTopRightCp1 = points.armTopLeftCp2.flipX(points.sectionTop) + points.armTopRight = points.armTopLeft.flipX(points.sectionTop) + points.armTopRightCp2 = points.armTopLeftCp1.flipX(points.sectionTop) + points.armBottomRightCp1 = points.armBottomLeftCp2.flipX(points.sectionTop) + points.armBottomRight = points.armBottomLeft.flipX(points.sectionTop) + points.armBottomRightCp2 = points.armBottomLeftCp1.flipX(points.sectionTop) + points.armBottomCp1 = points.armBottomCp2.flipX(points.sectionTop) + + if (options.type == 'squid') { + points.sectionMidRightCp1 = points.sectionMidLeftCp2.flipX(points.sectionTop) + points.sectionMidRight = points.sectionMidLeft.flipX(points.sectionTop) + points.sectionMidRightCp2 = points.sectionMidLeftCp1.flipX(points.sectionTop) + points.tentacleRight = points.tentacleLeft.flipX(points.sectionTop) + points.tentacleRightCp1 = points.tentacleLeftCp2.flipX(points.sectionTop) + points.tentacleRightCp2 = points.tentacleLeftCp1.flipX(points.sectionTop) + } + + if (partNumber == 0) { + store.set('sectionWidth', sectionWidth) + store.set('armSkirtWidth', points.skirtBottomLeft.dist(points.skirtBottomRight)) + store.set('armSkirtRadius', points.skirtBottomLeft.y - points.skirtTopMiddle.y) + store.set('armSkirtToTopAngle', points.skirtBottomLeft.angle(points.armTopLeft)) + } + + paths.armBottom = new Path() + .move(points.armBottomLeft) + .curve(points.armBottomLeftCp1, points.armBottomCp2, points.armBottom) + .curve(points.armBottomCp1, points.armBottomRightCp2, points.armBottomRight) + .setRender(false) + + if (options.type == 'squid') { + paths.sectionLeft = new Path() + .move(points.sectionTop) + .curve(points.sectionTopCp1, points.sectionLeftCp2, points.sectionLeft) + .curve(points.sectionLeftCp1, points.sectionMidLeftCp2, points.sectionMidLeft) + .curve(points.sectionMidLeftCp1, points.sectionBottomLeftCp2, points.sectionBottomLeft) + .setRender(false) + paths.sectionRight = new Path() + .move(points.sectionBottomRight) + .curve(points.sectionBottomRightCp1, points.sectionMidRightCp2, points.sectionMidRight) + .curve(points.sectionMidRightCp1, points.sectionRightCp2, points.sectionRight) + .setRender(false) + paths.skirtLeft = new Path() + .move(points.sectionBottomLeft) + .curve(points.sectionBottomLeftCp1, points.armTopLeftCp2, points.armTopLeft) + .setRender(false) + paths.skirtRight = new Path() + .move(points.armTopRight) + .curve(points.armTopRightCp1, points.sectionBottomRightCp2, points.sectionBottomRight) + .setRender(false) + if (partNumber == 1) { + paths.sectionLeft = new Path() + .move(points.sectionTop) + .curve(points.finTopCp1, points.finSeamCp2, points.finSeam) + .line(points.finFold) + .line(points.finSection) + .curve(points.finSectionCp1, points.sectionLeftCp2, points.sectionLeft) + .curve(points.sectionLeftCp1, points.sectionMidLeftCp2, points.sectionMidLeft) + .curve(points.sectionMidLeftCp1, points.sectionBottomLeftCp2, points.sectionBottomLeft) + .setRender(false) + paths.armBottom = new Path() + .move(points.armBottomLeft) + .curve(points.armBottomLeftCp1, points.tentacleLeftCp2, points.tentacleLeft) + .curve(points.tentacleLeftCp1, points.armBottomCp2, points.armBottom) + .curve(points.armBottomCp1, points.tentacleRightCp2, points.tentacleRight) + .curve(points.tentacleRightCp1, points.armBottomRightCp2, points.armBottomRight) + .setRender(false) + } + } else { + paths.sectionLeft = new Path() + .move(points.sectionTop) + .curve(points.sectionTopCp1, points.sectionLeftCp2, points.sectionLeft) + .curve(points.sectionLeftCp1, points.sectionBottomLeftCp2, points.sectionBottomLeft) + .setRender(false) + paths.sectionRight = new Path() + .move(points.sectionBottomRight) + .curve(points.sectionBottomRightCp1, points.sectionRightCp2, points.sectionRight) + .setRender(false) + if (points.skirtBottomLeft.sitsRoughlyOn(points.armTopLeft)) { + paths.skirtLeft = new Path() + .move(points.sectionBottomLeft) + .curve(points.sectionBottomLeftCp1, points.skirtBottomLeft, points.skirtBottomLeft) + .setRender(false) + paths.skirtRight = new Path() + .move(points.armTopRight) + .curve(points.skirtBottomRight, points.sectionBottomRightCp2, points.sectionBottomRight) + .setRender(false) + } else { + paths.skirtLeft = new Path() + .move(points.sectionBottomLeft) + .curve(points.sectionBottomLeftCp1, points.skirtBottomLeft, points.skirtBottomLeft) + .curve(points.skirtBottomLeft, points.armTopLeftCp2, points.armTopLeft) + .setRender(false) + paths.skirtRight = new Path() + .move(points.armTopRight) + .curve(points.armTopRightCp1, points.skirtBottomRight, points.skirtBottomRight) + .curve(points.skirtBottomRight, points.sectionBottomRightCp2, points.sectionBottomRight) + .setRender(false) + } + } + + paths.section = new Path() + .move(points.sectionTop) + .join(paths.sectionLeft) + .join(paths.skirtLeft) + .curve(points.armTopLeftCp1, points.armBottomLeftCp2, points.armBottomLeft) + .join(paths.armBottom) + .curve(points.armBottomRightCp1, points.armTopRightCp2, points.armTopRight) + .join(paths.skirtRight) + .join(paths.sectionRight) + .curve(points.sectionRightCp1, points.sectionTopCp2, points.sectionTop) + .close() + .attr('class', 'fabric') + + // paths.box = new Path() + // .move(points.topLeft) + // .line(points.bottomLeft) + // .line(points.bottomRight) + // .line(points.topRight) + // .line(points.topLeft) + // .close() + // .attr('class', 'fabric') + // .setRender(false) + + // Complete? + if (complete) { + points.logo = points.sectionTop.shiftFractionTowards( + points.sectionBottom, + options.type == 'octoplushy' ? 0.3 : 0.5 + ) + snippets.logo = new Snippet('logo', points.logo).attr('data-scale', 0.4) + + points.titleAnchor = points.sectionBottom + .shiftFractionTowards(points.sectionTop, options.type == 'octoplushy' ? 0.3 : 0.4) + .shift(180, sectionWidth * 0.2) + macro('title', { + at: points.titleAnchor, + nr: 1 + partNumber * 3, + title: 'Head' + (partNumber == 0 ? '' : ' (a)'), + rotation: 90, + scale: options.type == 'octoplushy' ? 0.35 : 0.5, + }) + + if (options.type == 'octoplushy') { + points.eyeLeft = paths.sectionLeft + .shiftFractionAlong(0.465) + .attr('data-text', 'eye') + .attr('data-text-class', 'center') + points.eyeRight = points.eyeLeft + .flipX(points.sectionTop) + .attr('data-text', 'eye') + .attr('data-text-class', 'center') + snippets.eyeLeft = new Snippet('button', points.eyeLeft) + snippets.eyeRight = new Snippet('button', points.eyeRight) + + points.mouthMiddle = points.sectionBottom.shiftFractionTowards(points.sectionTop, 0.45) + points.mouthLeft = points.mouthMiddle.shift(180, sectionWidth / 4) + points.mouthRight = points.mouthMiddle.shift(0, sectionWidth / 4) + points.mouthBottom = points.mouthMiddle.shift(270, sectionWidth / 4) + points.mouthLeftCp1 = points.mouthLeft.shift(270, (sectionWidth / 4) * c) + points.mouthRightCp2 = points.mouthRight.shift(270, (sectionWidth / 4) * c) + points.mouthBottomCp2 = points.mouthBottom.shift(180, (sectionWidth / 4) * c) + points.mouthBottomCp1 = points.mouthBottom.shift(0, (sectionWidth / 4) * c) + paths.mouth = new Path() + .move(points.mouthLeft) + .curve(points.mouthLeftCp1, points.mouthBottomCp2, points.mouthBottom) + .curve(points.mouthBottomCp1, points.mouthRightCp2, points.mouthRight) + .attr('data-text', 'mouth') + .attr('data-text-class', 'text-xs center') + .attr('class', 'stroke-lg') + } + + if (options.type == 'squid' && partNumber == 1) { + paths.fold = new Path() + .move(points.sectionTop) + .line(points.finFold) + .attr('data-text', 'fold line') + .attr('data-text-class', 'center') + .attr('class', 'hint dotted') + } + if (options.type == 'octopus') { + points.skirtArmLeft = utils.curveIntersectsX( + points.sectionBottomLeft, + points.sectionBottomLeftCp1, + points.skirtBottomLeft, + points.skirtBottomLeft, + points.armTopLeft.x + ) + points.skirtArmRight = points.skirtArmLeft.flipX(points.sectionTop) + paths.armLeftLine = new Path() + .move(points.skirtArmLeft) + .line(points.armTopLeft) + .attr('data-text', 'stitch line') + .attr('data-text-class', 'center') + .attr('class', 'hint dotted') + paths.armRightLine = new Path() + .move(points.armTopRight) + .line(points.skirtArmRight) + .attr('data-text', 'stitch line') + .attr('data-text-class', 'center') + .attr('class', 'hint dotted') + } + points.sectionTop.attr('data-text', 'A').attr('data-text-class', 'center') + points.armTopLeft.attr('data-text', 'B').attr('data-text-class', 'center') + points.armTopRight.attr('data-text', 'B').attr('data-text-class', 'center') + + snippets.left = new Snippet('notch', points.sectionLeft) + snippets.right = new Snippet('notch', points.sectionRight) + snippets.bottomLeft = new Snippet('notch', points.sectionBottomLeft) + snippets.bottomRight = new Snippet('notch', points.sectionBottomRight) + for (var i = 0; i < 4; i++) { + snippets[`armLeft${i}`] = new Snippet( + 'notch', + points.armTopLeft.shiftFractionTowards(points.armBottomLeft, i / 4) + ) + snippets[`armRight${i}`] = new Snippet( + 'notch', + points.armTopRight.shiftFractionTowards(points.armBottomRight, i / 4) + ) + } + + if (sa) { + paths.sa = paths.section.offset(sa).attr('class', 'fabric sa') + } + } + + // Paperless? + if (paperless) { + macro('hd', { + from: points.sectionLeft, + to: points.sectionRight, + y: points.sectionTop.y - sa, + }) + macro('hd', { + from: points.armTopLeft, + to: points.armTopRight, + y: points.armTopRight.y, + }) + macro('hd', { + from: points.armBottomLeft, + to: points.armBottomRight, + y: points.armBottom.y + sa + 10, + }) + + macro('vd', { + from: points.sectionTop, + to: points.sectionRight, + x: points.skirtBottomRight.x + sa + 10, + }) + macro('vd', { + from: points.sectionTop, + to: points.sectionBottomRight, + x: points.skirtBottomRight.x + sa + 20, + }) + macro('vd', { + from: points.sectionTop, + to: points.skirtBottomRight, + x: points.skirtBottomRight.x + sa + 30, + }) + macro('vd', { + from: points.sectionTop, + to: points.armBottom, + x: points.skirtBottomRight.x + sa + 40, + }) + + if (options.type == 'octopus') { + macro('hd', { + from: points.skirtBottomLeft, + to: points.skirtBottomRight, + y: points.skirtBottomRight.y, + }) + macro('vd', { + from: points.skirtBottomRight, + to: points.armTopRight, + x: points.skirtBottomRight.x + sa + 30, + }) + } + if (options.type == 'squid') { + macro('vd', { + from: points.armTopLeft, + to: points.sectionBottomLeft, + x: points.armTopLeft.x - sa - 10, + }) + macro('vd', { + from: points.sectionBottomLeft, + to: points.sectionMidLeft, + x: points.armTopLeft.x - sa - 10, + }) + if (partNumber == 1) { + macro('hd', { + from: points.tentacleLeft, + to: points.tentacleRight, + y: points.tentacleRight.y, + }) + macro('hd', { + from: points.finSeam, + to: points.sectionTop, + y: points.sectionTop.y, + }) + macro('hd', { + from: points.finSeam, + to: points.finSection, + y: points.finSection.y, + }) + macro('hd', { + from: points.finFold, + to: points.finSection, + y: points.finFold.y, + }) + macro('vd', { + from: points.armBottom, + to: points.tentacleLeft, + x: points.tentacleLeft.x - sa - 10, + }) + macro('vd', { + from: points.finSeam, + to: points.sectionTop, + x: points.finSeam.x - sa, + }) + macro('vd', { + from: points.finFold, + to: points.sectionTop, + x: points.finSeam.x - sa - 10, + }) + macro('vd', { + from: points.finSection, + to: points.sectionTop, + x: points.finSeam.x - sa - 20, + }) + } + } + } + return part +} diff --git a/designs/octoplushy/src/index.js b/designs/octoplushy/src/index.js new file mode 100644 index 00000000000..87668795ae5 --- /dev/null +++ b/designs/octoplushy/src/index.js @@ -0,0 +1,27 @@ +import freesewing from '@freesewing/core' +import plugins from '@freesewing/plugin-bundle' +import config from '../config' +import draftHeadSection from './headSection' +import draftArmSection from './armSection' +import draftEye from './eye' + +// Create new design +const Octoplushy = new freesewing.Design(config, plugins) + +// Attach the draft methods to the prototype +// Octoplushy.prototype.draftHeadSection = draftHeadSection +for (let i = 0; i < 2; i++) { + Octoplushy.prototype[`draftHeadSection${i}`] = (part) => draftHeadSection(i, part) +} +for (let i = 0; i < 2; i++) { + Octoplushy.prototype[`draftArmSection${i}`] = (part) => draftArmSection(i, part) +} +for (let i = 0; i < 3; i++) { + Octoplushy.prototype[`draftEye${i}`] = (part) => draftEye(i, part) +} + +// Named exports +export { config, Octoplushy } + +// Default export +export default Octoplushy diff --git a/designs/octoplushy/tests/shared.test.mjs b/designs/octoplushy/tests/shared.test.mjs new file mode 100644 index 00000000000..c1691114e32 --- /dev/null +++ b/designs/octoplushy/tests/shared.test.mjs @@ -0,0 +1,40 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import chai from 'chai' +import models from '@freesewing/models' +import patterns from '@freesewing/pattern-info' +import Pattern from './dist/index.mjs' + +// Shared tests +import { testPatternConfig } from '../../../tests/patterns/config.mjs' +import { testPatternDrafting } from '../../../tests/patterns/drafting.mjs' +import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' + +const expect = chai.expect + +// Test config +testPatternConfig( + "octoplushy", + new Pattern(), + expect, + models, + patterns +) + +// Test drafting +testPatternDrafting( + "octoplushy", + Pattern, + expect, + models, + patterns +) + +// Test sampling +testPatternSampling( + "octoplushy", + Pattern, + expect, + models, + patterns +) diff --git a/designs/paco/README.md b/designs/paco/README.md index a11b16c9e97..96ce64fafbd 100644 --- a/designs/paco/README.md +++ b/designs/paco/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/paco/config/index.js b/designs/paco/config/index.js index f2a13374985..e3bf59e2603 100644 --- a/designs/paco/config/index.js +++ b/designs/paco/config/index.js @@ -76,6 +76,7 @@ export default { fitCrossSeam: true, fitCrossSeamFront: true, fitCrossSeamBack: true, + fitGuides: false, kneeEase: 0.06, fitKnee: false, frontPocketHeelRatio: 0.4, diff --git a/designs/paco/package.json b/designs/paco/package.json index 1f362bbd0d8..51a7106dde2 100644 --- a/designs/paco/package.json +++ b/designs/paco/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/paco", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for summer pants", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/titan": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/titan": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/paco/src/back.js b/designs/paco/src/back.js index e208e75eb62..e9ee4b0c713 100644 --- a/designs/paco/src/back.js +++ b/designs/paco/src/back.js @@ -161,11 +161,12 @@ export default function (part) { } if (sa) { - let waistIn = points.styleWaistIn || points.waistIn - let hemOffset = options.elasticatedHem ? sa : 4 * sa + const waistIn = points.styleWaistIn || points.waistIn + const hemSa = options.elasticatedHem ? sa : 4 * sa paths.sa = drawInseam() .offset(sa) - .join(new Path().move(points.floorIn).line(points.floorOut).offset(hemOffset)) + .line(points.floorIn.shift(180, sa).shift(-90, hemSa)) + .line(points.floorOut.shift(0, sa).shift(-90, hemSa)) .join(drawOutseam().offset(sa).trim()) .join( new Path() diff --git a/designs/paco/src/front.js b/designs/paco/src/front.js index 8914424241f..38e619e6eab 100644 --- a/designs/paco/src/front.js +++ b/designs/paco/src/front.js @@ -187,12 +187,13 @@ export default function (part) { } if (sa) { - let waistIn = points.styleWaistIn || points.waistIn - let waistOut = points.styleWaistOut || points.waistOut - let hemSa = options.elasticatedHem ? sa : 4 * sa + const waistIn = points.styleWaistIn || points.waistIn + const waistOut = points.styleWaistOut || points.waistOut + const hemSa = options.elasticatedHem ? sa : 4 * sa paths.sa = drawOutseam() .offset(sa) - .join(new Path().move(points.floorOut).line(points.floorIn).offset(hemSa)) + .line(points.floorOut.shift(180, sa).shift(-90, hemSa)) + .line(points.floorIn.shift(0, sa).shift(-90, hemSa)) .join(drawInseam().offset(sa)) .join( new Path() diff --git a/designs/paco/tests/shared.test.mjs b/designs/paco/tests/shared.test.mjs index bdcf8d01e2d..2466d706e4c 100644 --- a/designs/paco/tests/shared.test.mjs +++ b/designs/paco/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Paco from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'paco', - new Paco(), + "paco", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'paco', - Paco, + "paco", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'paco', - Paco, + "paco", + Pattern, expect, models, patterns diff --git a/designs/penelope/README.md b/designs/penelope/README.md index e891bd5b5f8..1e3a8e2ba81 100644 --- a/designs/penelope/README.md +++ b/designs/penelope/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/penelope/package.json b/designs/penelope/package.json index 40a157dbc58..2b144d8de28 100644 --- a/designs/penelope/package.json +++ b/designs/penelope/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/penelope", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a pencil skirt", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/penelope/tests/shared.test.mjs b/designs/penelope/tests/shared.test.mjs index 2915dd361bf..0a1e1ec23be 100644 --- a/designs/penelope/tests/shared.test.mjs +++ b/designs/penelope/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Penelope from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'penelope', - new Penelope(), + "penelope", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'penelope', - Penelope, + "penelope", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'penelope', - Penelope, + "penelope", + Pattern, expect, models, patterns diff --git a/designs/plugintest/README.md b/designs/plugintest/README.md index bae0f4f5aa7..b85e9870232 100644 --- a/designs/plugintest/README.md +++ b/designs/plugintest/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/plugintest/package.json b/designs/plugintest/package.json index c3e4c676f7a..837636c9f89 100644 --- a/designs/plugintest/package.json +++ b/designs/plugintest/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugintest", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern to test (y)our plugins", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,39 +31,39 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/plugin-banner": "^2.21.3", - "@freesewing/plugin-bartack": "^2.21.3", - "@freesewing/plugin-bust": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-cutonfold": "^2.21.3", - "@freesewing/plugin-dimension": "^2.21.3", - "@freesewing/plugin-flip": "^2.21.3", - "@freesewing/plugin-gore": "^2.21.3", - "@freesewing/plugin-grainline": "^2.21.3", - "@freesewing/plugin-i18n": "^2.21.3", - "@freesewing/plugin-logo": "^2.21.3", - "@freesewing/plugin-measurements": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3", - "@freesewing/plugin-notches": "^2.21.3", - "@freesewing/plugin-round": "^2.21.3", - "@freesewing/plugin-scalebox": "^2.21.3", - "@freesewing/plugin-sprinkle": "^2.21.3", - "@freesewing/plugin-svgattr": "^2.21.3", - "@freesewing/plugin-theme": "^2.21.3", - "@freesewing/plugin-title": "^2.21.3", - "@freesewing/plugin-validate": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-banner": "^2.22.0-rc.0", + "@freesewing/plugin-bartack": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0", + "@freesewing/plugin-buttons": "^2.22.0-rc.0", + "@freesewing/plugin-cutonfold": "^2.22.0-rc.0", + "@freesewing/plugin-dimension": "^2.22.0-rc.0", + "@freesewing/plugin-flip": "^2.22.0-rc.0", + "@freesewing/plugin-gore": "^2.22.0-rc.0", + "@freesewing/plugin-grainline": "^2.22.0-rc.0", + "@freesewing/plugin-i18n": "^2.22.0-rc.0", + "@freesewing/plugin-logo": "^2.22.0-rc.0", + "@freesewing/plugin-measurements": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-notches": "^2.22.0-rc.0", + "@freesewing/plugin-round": "^2.22.0-rc.0", + "@freesewing/plugin-scalebox": "^2.22.0-rc.0", + "@freesewing/plugin-sprinkle": "^2.22.0-rc.0", + "@freesewing/plugin-svgattr": "^2.22.0-rc.0", + "@freesewing/plugin-theme": "^2.22.0-rc.0", + "@freesewing/plugin-title": "^2.22.0-rc.0", + "@freesewing/plugin-validate": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -76,7 +76,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/plugintest/tests/shared.test.mjs b/designs/plugintest/tests/shared.test.mjs index 64ab9155b37..6759fd66ab0 100644 --- a/designs/plugintest/tests/shared.test.mjs +++ b/designs/plugintest/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Plugintest from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'plugintest', - new Plugintest(), + "plugintest", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'plugintest', - Plugintest, + "plugintest", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'plugintest', - Plugintest, + "plugintest", + Pattern, expect, models, patterns diff --git a/designs/rendertest/README.md b/designs/rendertest/README.md index 57614e4085a..e7acc12ae14 100644 --- a/designs/rendertest/README.md +++ b/designs/rendertest/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/rendertest/package.json b/designs/rendertest/package.json index 86097e151f9..cef9feb6906 100644 --- a/designs/rendertest/package.json +++ b/designs/rendertest/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/rendertest", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern to test (y)our render engine our CSS", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/rendertest/tests/shared.test.mjs b/designs/rendertest/tests/shared.test.mjs index 3950522602e..ac861763945 100644 --- a/designs/rendertest/tests/shared.test.mjs +++ b/designs/rendertest/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Rendertest from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'rendertest', - new Rendertest(), + "rendertest", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'rendertest', - Rendertest, + "rendertest", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'rendertest', - Rendertest, + "rendertest", + Pattern, expect, models, patterns diff --git a/designs/sandy/README.md b/designs/sandy/README.md index 40ff31b0fa0..f40bbf97494 100644 --- a/designs/sandy/README.md +++ b/designs/sandy/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/sandy/config/index.js b/designs/sandy/config/index.js index 68fa5051729..7895acea059 100644 --- a/designs/sandy/config/index.js +++ b/designs/sandy/config/index.js @@ -1,5 +1,4 @@ import { version } from '../package.json' -import freesewing from '@freesewing/core' import configHelpers from '@freesewing/config-helpers' const { elastics, pctBasedOn } = configHelpers diff --git a/designs/sandy/package.json b/designs/sandy/package.json index ae8406858e1..3dccf4a2227 100644 --- a/designs/sandy/package.json +++ b/designs/sandy/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/sandy", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a circle skirt", "author": "AlfaLyr (https://github.com/alfalyr)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/sandy/tests/shared.test.mjs b/designs/sandy/tests/shared.test.mjs index 0a34d922817..929a16d333e 100644 --- a/designs/sandy/tests/shared.test.mjs +++ b/designs/sandy/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Sandy from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'sandy', - new Sandy(), + "sandy", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'sandy', - Sandy, + "sandy", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'sandy', - Sandy, + "sandy", + Pattern, expect, models, patterns diff --git a/designs/shin/README.md b/designs/shin/README.md index 91d23021ea3..887ea97cfb8 100644 --- a/designs/shin/README.md +++ b/designs/shin/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/shin/config/index.js b/designs/shin/config/index.js index 6fc17724ab6..1db9cac7995 100644 --- a/designs/shin/config/index.js +++ b/designs/shin/config/index.js @@ -1,5 +1,4 @@ import { version } from '../package.json' -import freesewing from '@freesewing/core' import configHelpers from '@freesewing/config-helpers' const { elastics, pctBasedOn } = configHelpers diff --git a/designs/shin/package.json b/designs/shin/package.json index ace7e568e20..354d67e88ea 100644 --- a/designs/shin/package.json +++ b/designs/shin/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/shin", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for swim trunks", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/shin/tests/shared.test.mjs b/designs/shin/tests/shared.test.mjs index 88c4dd19b43..204a79f2285 100644 --- a/designs/shin/tests/shared.test.mjs +++ b/designs/shin/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Shin from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'shin', - new Shin(), + "shin", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'shin', - Shin, + "shin", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'shin', - Shin, + "shin", + Pattern, expect, models, patterns diff --git a/designs/simon/README.md b/designs/simon/README.md index e8c320007ee..27ef1517f22 100644 --- a/designs/simon/README.md +++ b/designs/simon/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/simon/config/index.js b/designs/simon/config/index.js index 99222510612..d59d6c70b94 100644 --- a/designs/simon/config/index.js +++ b/designs/simon/config/index.js @@ -66,6 +66,7 @@ const config = { ], }, measurements: [...Brian.config.measurements, 'waist', 'hips'], + optionalMeasurements: [ 'highBust' ], dependencies: { sleeveBase: ['frontBase', 'backBase', 'back'], sleeve: ['sleeveBase', 'front', 'back'], @@ -187,6 +188,9 @@ const config = { // Various ffsa: { pct: 150, min: 100, max: 200 }, // Flat-felled seam allowance + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/simon/package.json b/designs/simon/package.json index edb1927c887..f3e14545a63 100644 --- a/designs/simon/package.json +++ b/designs/simon/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/simon", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a button down shirt", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,21 +31,21 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step4": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-flip": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0", + "@freesewing/plugin-flip": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -58,7 +58,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/simon/src/back.js b/designs/simon/src/back.js index 3f0630800bd..674b27c5fb2 100644 --- a/designs/simon/src/back.js +++ b/designs/simon/src/back.js @@ -129,6 +129,7 @@ export default (part) => { } else points.cbTop = points.cbYoke // Box pleat + points.armholeYokeSplitPreBoxpleat = points.armholeYokeSplit.clone() if (options.boxPleat) { points.boxPleatLeft = points.cbTop.shift(0, store.get('boxPleatWidth') / 2) points.boxPleatMid = points.boxPleatLeft.shift(0, store.get('boxPleatFold')) diff --git a/designs/simon/src/buttonholeplacket.js b/designs/simon/src/buttonholeplacket.js index 932fd7dfb10..ab561db006e 100644 --- a/designs/simon/src/buttonholeplacket.js +++ b/designs/simon/src/buttonholeplacket.js @@ -25,6 +25,9 @@ export default (part) => { } for (const id in paths) delete part.paths[id] + for (const i of ['waist', 'armholePitch', 'hips', 'armhole', 'bust',]) { + delete snippets[i + '-notch'] + } const width = store.get('buttonholePlacketWidth') const fold = store.get('buttonholePlacketFoldWidth') @@ -95,6 +98,12 @@ export default (part) => { // Notches snippets['cfArmhole-notch'].anchor.x = points.cfArmhole.x - fold * 2 snippets['cfWaist-notch'].anchor.x = points.cfArmhole.x - fold * 2 + // Not available in Simon + if (typeof snippets['cfBust-notch'] !== 'undefined') + snippets['cfBust-notch'].anchor.x = points.cfArmhole - fold * 2 + // Not available in Simon + if (typeof snippets['cfHem-notch'] !== 'undefined') + snippets['cfHem-notch'].anchor.x = points.cfArmhole.x - fold * 2 // This notch is not available in Simone if (typeof snippets['cfHips-notch'] !== 'undefined') snippets['cfHips-notch'].anchor.x = points.cfArmhole.x - fold * 2 diff --git a/designs/simon/src/buttonplacket.js b/designs/simon/src/buttonplacket.js index 551ab9c8023..40649b08239 100644 --- a/designs/simon/src/buttonplacket.js +++ b/designs/simon/src/buttonplacket.js @@ -27,6 +27,11 @@ export default (part) => { for (const id in paths) { if (id !== 'seam') delete part.paths[id] } + let notchesToKeep = ['cfBust-notch', 'cfArmhole-notch', 'cfWaist-notch', + 'cfHem-notch'] + for (const id in snippets) { + if (!notchesToKeep.includes(id)) delete snippets[id] + } macro('flip') const width = store.get('buttonPlacketWidth') points.placketTopIn = utils.lineIntersectsCurve( diff --git a/designs/simon/src/frontleft-classic-cuton.js b/designs/simon/src/frontleft-classic-cuton.js index 78459e14734..b1e5523a078 100644 --- a/designs/simon/src/frontleft-classic-cuton.js +++ b/designs/simon/src/frontleft-classic-cuton.js @@ -22,6 +22,8 @@ export default (part) => { points.placketBottomOuterEdgeUnder = points.placketCfHem.shift(180, width / 2 + fold) points.placketTopEdge = points.placketTopOuterEdgeFold.shift(180, width) points.placketBottomEdge = points.placketBottomOuterEdgeFold.shift(180, width) + if (typeof points.cfBust !== 'undefined') + points.cfBust = points.cfBust.shift(180, fold * 2) paths.seam.line(points.placketTopEdge).line(points.placketBottomEdge).close() @@ -63,6 +65,8 @@ export default (part) => { points.placketEdgeWaist = new Point(points.placketBottomEdge.x, points.waist.y) points.placketEdgeArmhole = new Point(points.placketBottomEdge.x, points.armhole.y) points.placketEdgeHips = new Point(points.placketBottomEdge.x, points.hips.y) + // Delete old cfBust location notch, so we can re-add in new location. + delete snippets['cfBust-notch'] macro('sprinkle', { snippet: 'notch', on: [ @@ -83,6 +87,7 @@ export default (part) => { 'placketBottomOuterEdgeFold', 'placketBottomOuterEdgeOver', 'placketBottomOuterEdgeUnder', + 'cfBust' ], }) delete snippets['cfWaist-notch'] diff --git a/designs/simon/src/frontleft-classic-seperate.js b/designs/simon/src/frontleft-classic-seperate.js index 055df2fa8da..0fa378f0a86 100644 --- a/designs/simon/src/frontleft-classic-seperate.js +++ b/designs/simon/src/frontleft-classic-seperate.js @@ -25,6 +25,7 @@ export default (part) => { delete snippets['cfWaist-notch'] delete snippets['cfHips-notch'] delete snippets['cfArmhole-notch'] + delete snippets['cfBust-notch'] points.edgeArmhole = new Point(points.neckEdge.x, points.armhole.y) points.edgeWaist = new Point(points.neckEdge.x, points.waist.y) points.edgeHips = new Point(points.neckEdge.x, points.hips.y) diff --git a/designs/simon/src/frontright-classic-seperate.js b/designs/simon/src/frontright-classic-seperate.js index 8d73dcf4bd1..fa0256b7078 100644 --- a/designs/simon/src/frontright-classic-seperate.js +++ b/designs/simon/src/frontright-classic-seperate.js @@ -23,6 +23,7 @@ export default (part) => { delete snippets['cfWaist-notch'] delete snippets['cfHips-notch'] delete snippets['cfArmhole-notch'] + delete snippets['cfBust-notch'] points.edgeArmhole = new Point(points.placketTopIn.x, points.armhole.y) points.edgeWaist = new Point(points.placketTopIn.x, points.waist.y) points.edgeHips = new Point(points.placketTopIn.x, points.hips.y) diff --git a/designs/simon/src/index.js b/designs/simon/src/index.js index 96e9733a907..1824b75ec0d 100644 --- a/designs/simon/src/index.js +++ b/designs/simon/src/index.js @@ -2,7 +2,7 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' import flipPlugin from '@freesewing/plugin-flip' -import buttonPlugin from '@freesewing/plugin-buttons' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftBack from './back' @@ -19,8 +19,20 @@ import draftSleevePlacketUnderlap from './sleeveplacket-underlap' import draftSleevePlacketOverlap from './sleeveplacket-overlap' import draftCuff from './cuff' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Simon = new freesewing.Design(config, [plugins, flipPlugin, buttonPlugin]) +const Simon = new freesewing.Design(config, [plugins, flipPlugin], { plugin, condition }) // Attach draft methods to prototype Simon.prototype.draftBase = function (part) { diff --git a/designs/simon/src/shared.js b/designs/simon/src/shared.js index d63fac81a9f..9d40a074cf8 100644 --- a/designs/simon/src/shared.js +++ b/designs/simon/src/shared.js @@ -27,15 +27,84 @@ export const calculateReduction = function (part) { export const addButtons = function (part, origin = 'cfNeck', snippet = 'button') { const { points, options, snippets, Snippet } = part.shorthand() - const len = points.cfNeck.dist(points.cfHips) * (1 - options.buttonFreeLength) - for (let i = 1; i <= options.buttons; i++) { - points['button' + i] = points[origin].shift(-90, (len / options.buttons) * i) - snippets[snippet + i] = new Snippet(snippet, points['button' + i]) + const full_len = points.cfNeck.dist(points.cfHips) + const adjusted_len = full_len * (1 - options.buttonFreeLength) + const total_buttons = options.buttons + + const spacing_strategy = 'bustAlignedButtons' in options ? options.bustAlignedButtons : 'default' + switch (spacing_strategy) { + case 'even': { + // Strategy: Even button spacing, + // - Determine the correct spacing above the bustline and use that + // spacing for all buttons. + // - The bottom button position is variable, and it ignores the "Button + // free length" setting. + const top_len = points.cfNeck.dist(points.cfBust) + const top_percentage = top_len / full_len + const top_number_buttons = Math.round(total_buttons * top_percentage) + const top_spacing = top_len / top_number_buttons + const even_spacing = top_spacing + for (let i = 1; i <= total_buttons; i++) { + points['button' + i] = points[origin].shift(-90, (even_spacing * i)) + snippets[snippet + i] = new Snippet(snippet, points['button' + i]) + } + break } + case 'split': { + // Strategy: Different spacings above and below. + // - Calculate the number of buttons that should be above and below + // the bustline by proportion. + // - Calculate the correct spacings to be used above and below the + // bustline, adhering to the "Button free length" setting. + // - For the first and last bottom buttons, slightly shift their + // positions to make the difference in spacings less noticeable + // at the bustline. + const top_len = points.cfNeck.dist(points.cfBust) + const bot_len = adjusted_len - top_len + const top_percentage = top_len / adjusted_len + const top_number_buttons = Math.round(total_buttons * top_percentage) + const bot_number_buttons = total_buttons - top_number_buttons + const top_spacing = top_len / top_number_buttons + const bot_spacing = bot_len / bot_number_buttons + // Top buttons + for (let i = 1; i <= top_number_buttons; i++) { + points['button' + i] = points[origin].shift(-90, top_spacing * i) + snippets[snippet + i] = new Snippet(snippet, points['button' + i]) + } + // Bottom buttons + const adjustment = (top_spacing - bot_spacing) / 2 + points.currentpoint = points['cfBust'].clone() + for (let i = top_number_buttons + 1; i <= total_buttons; i++) { + points.currentpoint = points.currentpoint.shift(-90, bot_spacing) + if (i == top_number_buttons + 1) { + // Adjust first button position + points.currentpoint = points.currentpoint.shift(-90, adjustment) + } else if (i == total_buttons) { + // Adjust last button position in opposite direction. + points.currentpoint = points.currentpoint.shift(90, adjustment) + } + points['button' + i] = points.currentpoint.clone() + snippets[snippet + i] = new Snippet(snippet, points['button' + i]) + } + break } + case 'disabled': + case 'default': + default: { + // Strategy: The default strategy. + // - Buttons are evenly spaced without regard to the bustline. + // - The "Button free length" setting is obeyed. + const default_spacing = adjusted_len / total_buttons + for (let i = 1; i <= total_buttons; i++) { + points['button' + i] = points[origin].shift(-90, default_spacing * i) + snippets[snippet + i] = new Snippet(snippet, points['button' + i]) + } + } } + + // Add optional extra top button if (options.extraTopButton) snippets['top' + snippet] = new Snippet( snippet, - points[origin].shift(-90, len / options.buttons / 2) + points[origin].shift(-90, adjusted_len / total_buttons / 2) ) } diff --git a/designs/simon/src/yoke.js b/designs/simon/src/yoke.js index 1209f186d27..98649023fbd 100644 --- a/designs/simon/src/yoke.js +++ b/designs/simon/src/yoke.js @@ -7,7 +7,7 @@ export default (part) => { } // Paths - paths.saBase = new Path().move(points.cbYoke).line(points.armholeYokeSplit) + paths.saBase = new Path().move(points.cbYoke).line(points.armholeYokeSplitPreBoxpleat) if (options.yokeHeight > 0) paths.saBase = paths.saBase.join(paths.backArmholeYoke) paths.saBase = paths.saBase.line(points.s3CollarSplit).join(paths.backCollar) if (options.splitYoke) paths.saBase = paths.saBase.line(points.cbYoke).close() @@ -29,26 +29,20 @@ export default (part) => { delete snippets.armholePitchNotch delete snippets.collarNotch delete snippets.shoulderNotch + snippets.sleevecapNotch = new Snippet('notch', points.armholeYokeSplitPreBoxpleat) points.title = new Point(points.neck.x, points.cbYoke.y / 3) macro('title', { at: points.title, nr: 4, title: 'yoke', scale: 0.8 }) points.logo = points.title.shift(-90, 50) snippets.logo = new Snippet('logo', points.logo) snippets.logo.attr('data-scale', 0.8) - if (options.splitYoke) { - macro('cutonfold', { - from: points.cbNeck, - to: points.cbYoke, - grainline: true, - }) - snippets.sleeveNotch = new Snippet('bnotch', points.armholePitch) - } else { - points.grainlineFrom = points.cbYoke.shift(0, 20) - points.grainlineTo = points.cbNeck.shift(0, 20) - macro('grainline', { - from: points.grainlineFrom, - to: points.grainlineTo, - }) - } + + points.grainlineFrom = points.cbYoke.shift(0, 20) + points.grainlineTo = points.cbNeck.shift(0, 20) + macro('grainline', { + from: points.grainlineFrom, + to: points.grainlineTo, + }) + if (sa) { paths.sa = paths.saBase.offset(sa).attr('class', 'fabric sa') diff --git a/designs/simon/tests/shared.test.mjs b/designs/simon/tests/shared.test.mjs index 52037194167..29d47cab4f5 100644 --- a/designs/simon/tests/shared.test.mjs +++ b/designs/simon/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Simon from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'simon', - new Simon(), + "simon", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'simon', - Simon, + "simon", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'simon', - Simon, + "simon", + Pattern, expect, models, patterns diff --git a/designs/simone/README.md b/designs/simone/README.md index 1dca0506b1e..96e8d023ea1 100644 --- a/designs/simone/README.md +++ b/designs/simone/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/simone/config/index.js b/designs/simone/config/index.js index 4353ffde57c..081b5eaa95d 100644 --- a/designs/simone/config/index.js +++ b/designs/simone/config/index.js @@ -1,5 +1,6 @@ import { version } from '../package.json' import { config as simonConfig } from '@freesewing/simon' +import Brian from '@freesewing/brian' const config = { version, @@ -7,7 +8,55 @@ const config = { name: 'simone', optionGroups: { ...simonConfig.optionGroups, - style: [...simonConfig.optionGroups.style, 'frontDarts', 'contour'], + style: [ + ...Brian.config.optionGroups.style, + 'contour', + 'hemStyle', + 'hemCurve', + 'boxPleat', + 'backDarts', + 'frontDarts', + 'splitYoke', + 'yokeHeight', + { + closure: [ + 'extraTopButton', + 'buttons', + 'seperateButtonPlacket', + 'buttonPlacketStyle', + 'seperateButtonholePlacket', + 'buttonholePlacketStyle', + 'buttonPlacketWidth', + 'buttonholePlacketWidth', + 'buttonholePlacketFoldWidth', + 'buttonFreeLength', + 'bustAlignedButtons', + ], + }, + { + cuffs: [ + 'cuffStyle', + 'barrelCuffNarrowButton', + 'cuffButtonRows', + 'sleevePlacketWidth', + 'sleevePlacketLength', + 'cuffDrape', + 'cuffLength', + ], + }, + { + collar: [ + 'collarAngle', + 'collarStandBend', + 'collarStandCurve', + 'collarFlare', + 'collarStandWidth', + 'collarBend', + 'collarGap', + 'collarRoll', + ], + }, + ], advanced: [ ...simonConfig.optionGroups.advanced, 'bustDartAngle', @@ -38,7 +87,11 @@ const config = { frontDarts: { bool: false }, frontDartLength: { pct: 45, min: 30, max: 60 }, contour: { pct: 50, min: 30, max: 75 }, - }, + bustAlignedButtons: { + dflt: 'disabled', + list: ['even', 'split', 'disabled'], + }, + } } export default config diff --git a/designs/simone/package.json b/designs/simone/package.json index 5c77dc7f139..67f8ad25751 100644 --- a/designs/simone/package.json +++ b/designs/simone/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/simone", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,23 +31,22 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/simon": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-flip": "^2.21.3", - "@freesewing/plugin-bust": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/simon": "^2.22.0-rc.0", + "@freesewing/plugin-flip": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -60,7 +59,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/simone/src/fba-front.js b/designs/simone/src/fba-front.js index 1b16ffe1fd9..ba2840a6253 100644 --- a/designs/simone/src/fba-front.js +++ b/designs/simone/src/fba-front.js @@ -1,5 +1,5 @@ export default (part) => { - let { + const { measurements, Point, points, @@ -12,6 +12,7 @@ export default (part) => { utils, sa, complete, + raise } = part.shorthand() /* @@ -31,6 +32,16 @@ export default (part) => { * */ const FBA = ((1 + options.chestEase) * (measurements.bust - measurements.highBust)) / 2 + /* + * If the FBA is negative, that means the high bust measurement is higher than the + * front bust. That's not uncommon for people who don't have much breast tissue but + * it generates a negative dart which is confusing and incorrect. So in that case, just + * return the original part from simon + */ + if (FBA < 0) { + raise.info('No FBA required, using unaltered Simon front') + return part + } /* * Locate bust point @@ -54,6 +65,11 @@ export default (part) => { * it's based on the model's measurements. (bust span and high point shoulder (HPS) to bust). * So we need to find the bust point that would end up in the right place AFTER we do the FBA * For this, we'll just rotate it FBARot in the other direction + * In other words, we are pre-rotating points.bust now, so it gets rotated + * back to its original position during the FBA procedure. + * For convenience and clarity, we're defining points.realBustPoint here. + * However, points.bust will eventually be identical to points.realBustPoint + * after the FBA procedure. */ points.realBustPoint = points.bust.clone() points.bust = points.bust.rotate(FBARot * -1, points.armholePitch) @@ -265,7 +281,7 @@ export default (part) => { 'armholePitchCp1', ] for (let p of clone1) points[p] = points[`${p}_rot1`].clone() - let clone2 = ['hem', 'hips', 'hipsCp2', 'waistCp1', 'waist'] + let clone2 = ['hem', 'hips', 'hipsCp2', 'waistCp1', 'waist', 'bust'] for (let p of clone2) points[p] = points[`${p}_rot2`].clone() points.cfHem = new Point(points.cfHem.x, points.bustHem_rot2.y) points.waistCp2 = points.belowDartCpBottom_rot2.clone() @@ -276,6 +292,7 @@ export default (part) => { points.cfArmhole = new Point(0, points.armhole.y) points.cfWaist = new Point(0, points.waist.y) points.cfHips = new Point(0, points.hips.y) + points.cfBust = new Point(0, points.bust.y) // // Smooth out the armhole to avoid a kink where we rotated @@ -300,7 +317,8 @@ export default (part) => { for (let s in snippets) delete snippets[s] macro('sprinkle', { snippet: 'notch', - on: ['armhole', 'armholePitch', 'cfArmhole', 'cfWaist', 'cfHem', 'hips', 'waist', 'bust_rot2'], + on: ['armhole', 'armholePitch', 'cfArmhole', 'cfWaist', 'cfHem', 'hips', + 'waist', 'bust', 'cfBust',], }) points.logo = new Point(points.armhole.x / 2, points.armhole.y) snippets.logo = new Snippet('logo', points.logo) diff --git a/designs/simone/tests/shared.test.mjs b/designs/simone/tests/shared.test.mjs index 5495ad0530f..aaf72f234f6 100644 --- a/designs/simone/tests/shared.test.mjs +++ b/designs/simone/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Simone from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'simone', - new Simone(), + "simone", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'simone', - Simone, + "simone", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'simone', - Simone, + "simone", + Pattern, expect, models, patterns diff --git a/designs/sven/README.md b/designs/sven/README.md index 5b149714457..a0fe6692b7d 100644 --- a/designs/sven/README.md +++ b/designs/sven/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/sven/config/index.js b/designs/sven/config/index.js index 7d7397936f6..772691b40ac 100644 --- a/designs/sven/config/index.js +++ b/designs/sven/config/index.js @@ -15,6 +15,7 @@ export default { advanced: [...brianConfig.optionGroups.advanced, 'ribbingStretch'], }, measurements: [...brianConfig.measurements, 'hips', 'waist'], + optionalMeasurements: brianConfig.optionalMeasurements, dependencies: { frontBase: 'base', backBase: 'base', diff --git a/designs/sven/package.json b/designs/sven/package.json index 01900a9a884..9fc5ec0fda4 100644 --- a/designs/sven/package.json +++ b/designs/sven/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/sven", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a straightforward sweater", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/sven/src/index.js b/designs/sven/src/index.js index 303ed5f34df..e3690f853e2 100644 --- a/designs/sven/src/index.js +++ b/designs/sven/src/index.js @@ -1,6 +1,7 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftFront from './front' @@ -8,8 +9,20 @@ import draftSleeve from './sleeve' import draftCuff from './cuff' import draftWaistband from './waistband' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Sven = new freesewing.Design(config, plugins) +const Sven = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods to prototype Sven.prototype.draftBase = function (part) { diff --git a/designs/sven/tests/shared.test.mjs b/designs/sven/tests/shared.test.mjs index c39350775cd..1e2d6d95197 100644 --- a/designs/sven/tests/shared.test.mjs +++ b/designs/sven/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Sven from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'sven', - new Sven(), + "sven", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'sven', - Sven, + "sven", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'sven', - Sven, + "sven", + Pattern, expect, models, patterns diff --git a/designs/tamiko/README.md b/designs/tamiko/README.md index cc1bcba66a4..892555c0834 100644 --- a/designs/tamiko/README.md +++ b/designs/tamiko/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/tamiko/config/index.js b/designs/tamiko/config/index.js index 6cac7a1132f..4af9a0e2e95 100644 --- a/designs/tamiko/config/index.js +++ b/designs/tamiko/config/index.js @@ -9,10 +9,11 @@ export default { type: 'pattern', difficulty: 1, optionGroups: { - fit: ['armholeDepthFactor', 'chestEase'], + fit: ['armholeDepthFactor', 'chestEase', 'draftForHighBust'], style: ['flare', 'lengthBonus', 'shoulderseamLength'], }, measurements: ['shoulderToShoulder', 'chest', 'hpsToWaistBack', 'shoulderSlope', 'waistToHips'], + optionalMeasurements: [ 'highBust' ], parts: ['top'], options: { armholeDepthFactor: { pct: 50, min: 40, max: 60 }, @@ -20,5 +21,8 @@ export default { flare: { deg: 15, min: -10, max: 30 }, lengthBonus: { pct: 13, min: 0, max: 60 }, shoulderseamLength: { pct: 10, min: 5, max: 25 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/tamiko/package.json b/designs/tamiko/package.json index dcf513685e3..f8c3cd38218 100644 --- a/designs/tamiko/package.json +++ b/designs/tamiko/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/tamiko", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a zero-waste top", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,19 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +56,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/tamiko/src/index.js b/designs/tamiko/src/index.js index ec5d4e9f431..9c84f27a31f 100644 --- a/designs/tamiko/src/index.js +++ b/designs/tamiko/src/index.js @@ -1,11 +1,24 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftTop from './top' +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + // Create design -const Tamiko = new freesewing.Design(config, plugins) +const Tamiko = new freesewing.Design(config, plugins, { plugin, condition }) // Part draft method Tamiko.prototype.draftTop = (part) => draftTop(part) diff --git a/designs/tamiko/tests/shared.test.mjs b/designs/tamiko/tests/shared.test.mjs index bd654a2edc9..61e3dd78fd8 100644 --- a/designs/tamiko/tests/shared.test.mjs +++ b/designs/tamiko/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tamiko from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'tamiko', - new Tamiko(), + "tamiko", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'tamiko', - Tamiko, + "tamiko", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'tamiko', - Tamiko, + "tamiko", + Pattern, expect, models, patterns diff --git a/designs/teagan/README.md b/designs/teagan/README.md index a41716d86f0..56e3afee39f 100644 --- a/designs/teagan/README.md +++ b/designs/teagan/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/teagan/package.json b/designs/teagan/package.json index d5ef17fb1a4..887ddf4269b 100644 --- a/designs/teagan/package.json +++ b/designs/teagan/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/teagan", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a T-shirt", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,20 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/plugin-bust": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -57,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/teagan/tests/shared.test.mjs b/designs/teagan/tests/shared.test.mjs index 25dc2f1a4b0..b32a4578e78 100644 --- a/designs/teagan/tests/shared.test.mjs +++ b/designs/teagan/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Teagan from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'teagan', - new Teagan(), + "teagan", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'teagan', - Teagan, + "teagan", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'teagan', - Teagan, + "teagan", + Pattern, expect, models, patterns diff --git a/designs/theo/README.md b/designs/theo/README.md index 267c2faac7c..e7f0540ada6 100644 --- a/designs/theo/README.md +++ b/designs/theo/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/theo/config/index.js b/designs/theo/config/index.js index 6936522c09f..190bd88d87a 100644 --- a/designs/theo/config/index.js +++ b/designs/theo/config/index.js @@ -1,4 +1,6 @@ import { version } from '../package.json' +import configHelpers from '@freesewing/config-helpers' +const { steps, pctBasedOn } = configHelpers export default { version, @@ -34,7 +36,8 @@ export default { // Constants // Millimeter - waistbandWidth: { mm: 40, min: 5, max: 80 }, + //waistbandWidth: { mm: 40, min: 5, max: 80 }, + waistbandWidth: { pct: 3, min: 2, max: 6, snap: steps, ...pctBasedOn('waistToFloor') }, // Percentages legWidth: { pct: 10, min: 0, max: 30 }, diff --git a/designs/theo/package.json b/designs/theo/package.json index 70ca99a0137..49dff244fce 100644 --- a/designs/theo/package.json +++ b/designs/theo/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/theo", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for classic trousers", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "echo \"skipping tests for theo\"", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "echo \"skipping tests for theo\"", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/theo/src/back.js b/designs/theo/src/back.js index 7a70bb06387..2ad01910b4f 100644 --- a/designs/theo/src/back.js +++ b/designs/theo/src/back.js @@ -1,11 +1,12 @@ export default function (part) { - let { + const { store, sa, Point, points, Path, paths, + absoluteOptions, options, complete, paperless, @@ -45,7 +46,7 @@ export default function (part) { points[0] = new Point(0, 0) points[1] = new Point( 0, - measurements.crotchDepth - measurements.waistToHips - options.waistbandWidth + measurements.crotchDepth - measurements.waistToHips - absoluteOptions.waistbandWidth ) points[2] = new Point(0, points[1].y + measurements.inseam + store.get('lengthBonus')) points[201] = points[2].shift(-90, 10) diff --git a/designs/theo/src/belt-loop.js b/designs/theo/src/belt-loop.js index 0e65cdca203..01cdbc6ab29 100644 --- a/designs/theo/src/belt-loop.js +++ b/designs/theo/src/belt-loop.js @@ -1,7 +1,7 @@ export default function (part) { - let { options, Point, points, Path, paths, complete, paperless, macro } = part.shorthand() + let { absoluteOptions, Point, points, Path, paths, complete, paperless, macro } = part.shorthand() - let height = options.waistbandWidth + 30 + let height = absoluteOptions.waistbandWidth + 30 let width = (height - 30) / 2 points.topRight = new Point(width / 2, 0) diff --git a/designs/theo/src/waistband-interfacing-left.js b/designs/theo/src/waistband-interfacing-left.js index 683d17675bc..76bd55d4617 100644 --- a/designs/theo/src/waistband-interfacing-left.js +++ b/designs/theo/src/waistband-interfacing-left.js @@ -4,7 +4,7 @@ export default function (part) { points, Path, paths, - options, + absoluteOptions, complete, paperless, measurements, @@ -14,7 +14,7 @@ export default function (part) { } = part.shorthand() points[0] = new Point(0, 0) - points[2] = new Point(options.waistbandWidth, measurements.hips / 2 + 60) + points[2] = new Point(absoluteOptions.waistbandWidth, measurements.hips / 2 + 60) points[1] = new Point(points[2].x, points[0].y) points[3] = new Point(points[0].x, points[2].y) diff --git a/designs/theo/src/waistband-interfacing-right.js b/designs/theo/src/waistband-interfacing-right.js index cbb3c943049..b57ebcbf159 100644 --- a/designs/theo/src/waistband-interfacing-right.js +++ b/designs/theo/src/waistband-interfacing-right.js @@ -4,7 +4,7 @@ export default function (part) { points, Path, paths, - options, + absoluteOptions, complete, paperless, measurements, @@ -14,7 +14,7 @@ export default function (part) { } = part.shorthand() points[0] = new Point(0, 0) - points[2] = new Point(options.waistbandWidth, measurements.hips / 2 + 40) + points[2] = new Point(absoluteOptions.waistbandWidth, measurements.hips / 2 + 40) points[1] = new Point(points[2].x, points[0].y) points[3] = new Point(points[0].x, points[2].y) diff --git a/designs/theo/tests/shared.test.mjs b/designs/theo/tests/shared.test.mjs index 0a18006bebe..a813421686c 100644 --- a/designs/theo/tests/shared.test.mjs +++ b/designs/theo/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Theo from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'theo', - new Theo(), + "theo", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'theo', - Theo, + "theo", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'theo', - Theo, + "theo", + Pattern, expect, models, patterns diff --git a/designs/tiberius/README.md b/designs/tiberius/README.md index 865c1b9b16b..14e27659d25 100644 --- a/designs/tiberius/README.md +++ b/designs/tiberius/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/tiberius/package.json b/designs/tiberius/package.json index 1e3f13c9233..aa7bd37862c 100644 --- a/designs/tiberius/package.json +++ b/designs/tiberius/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/tiberius", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a tunica, a historical Roman tunic", "author": "Starfetch (https://github.com/starfetch)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/tiberius/tests/shared.test.mjs b/designs/tiberius/tests/shared.test.mjs index 56b6fad1643..0489da09a14 100644 --- a/designs/tiberius/tests/shared.test.mjs +++ b/designs/tiberius/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tiberius from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'tiberius', - new Tiberius(), + "tiberius", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'tiberius', - Tiberius, + "tiberius", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'tiberius', - Tiberius, + "tiberius", + Pattern, expect, models, patterns diff --git a/designs/titan/README.md b/designs/titan/README.md index a4baf50ca21..31e6404df3a 100644 --- a/designs/titan/README.md +++ b/designs/titan/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/titan/config/index.js b/designs/titan/config/index.js index 01b722efe72..8a8d6c1c68e 100644 --- a/designs/titan/config/index.js +++ b/designs/titan/config/index.js @@ -49,6 +49,7 @@ export default { fitCrossSeam: true, fitCrossSeamFront: true, fitCrossSeamBack: true, + fitGuides: true, // Fit waistEase: { pct: 2, min: 0, max: 10 }, diff --git a/designs/titan/package.json b/designs/titan/package.json index 05962d5f7ea..18889cb32cf 100644 --- a/designs/titan/package.json +++ b/designs/titan/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/titan", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a unisex trouser block", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step3": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/titan/src/back.js b/designs/titan/src/back.js index fe378786fb6..1bff01db2f5 100644 --- a/designs/titan/src/back.js +++ b/designs/titan/src/back.js @@ -221,7 +221,7 @@ export default (part) => { to: points.grainlineBottom, }) macro('scalebox', { at: points.knee }) - points.logoAnchor = new Point(points.crossSeamCurveStart.x / 2, points.crossSeamCurveStart.y) + points.logoAnchor = new Point(points.crossSeamCurveStart.x / 2, points.fork.y) snippets.logo = new Snippet('logo', points.logoAnchor) points.titleAnchor = points.logoAnchor.shift(-90, 60) macro('title', { @@ -229,7 +229,162 @@ export default (part) => { title: 'back', at: points.titleAnchor, }) - + //notches + if (options.fitGuides) { + points.waistMid = points.waistOut.shiftFractionTowards(points.waistIn, 0.5) + points.seatMid = points.waistMid + .shiftTowards(points.waistIn, measurements.waistToSeat) + .rotate(90, points.waistMid) + points.seatInTarget = points.seatOut.shiftOutwards(points.seatMid, measurements.seat / 4) + points.seatOutTarget = points.seatMid.shiftTowards(points.seatOut, measurements.seat / 4) + points.hipsInTarget = points.waistIn + .shiftTowards(points.waistOut, measurements.waistToHips) + .rotate(-90, points.waistIn) + points.hipsOutTarget = points.waistOut + .shiftTowards(points.waistIn, measurements.waistToHips) + .rotate(90, points.waistOut) + points.hipsIn = utils.beamsIntersect( + points.hipsOutTarget, + points.hipsInTarget, + points.waistIn, + points.crossSeamCurveStart + ) + points.crossSeamCurveStartMid = utils.beamsIntersect( + points.crossSeamCurveStart, + points.crossSeamCurveStart.shift(points.waistIn.angle(points.waistOut), 1), + points.waistMid, + points.seatMid + ) + if (points.seatMid.y > points.crossSeamCurveStartMid.y) { + points.seatIn = utils.lineIntersectsCurve( + points.seatMid, + points.seatInTarget, + points.crossSeamCurveStart, + points.crossSeamCurveCp1, + points.crossSeamCurveCp2, + points.fork + ) + } else { + points.seatIn = utils.beamsIntersect( + points.seatMid, + points.seatInTarget, + points.waistIn, + points.crossSeamCurveStart + ) + } + if (options.fitKnee) { + if (points.waistOut.x > points.seatOut.x) { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.kneeOut, + points.kneeOutCp2, + points.seatOut, + points.waistOut + ) + points.seatOutNotch = utils.lineIntersectsCurve( + points.seatMid, + points.seatOutTarget, + points.kneeOut, + points.kneeOutCp2, + points.seatOut, + points.waistOut + ) + } else { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.seatOut, + points.seatOutCp2, + points.waistOut, + points.waistOut + ) + points.seatOutNotch = points.seatOut + } + points.kneeOutNotch = points.kneeOut + points.kneeInNotch = points.kneeIn + } else { + if (points.waistOut.x > points.seatOut.x) { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.floorOut, + points.kneeOutCp2, + points.seatOut, + points.waistOut + ) + points.seatOutNotch = utils.lineIntersectsCurve( + points.seatMid, + points.seatOutTarget, + points.floorOut, + points.kneeOutCp2, + points.seatOut, + points.waistOut + ) + points.kneeOutNotch = utils.lineIntersectsCurve( + points.kneeOut, + points.kneeIn.rotate(180, points.kneeOut), + points.floorOut, + points.kneeOutCp2, + points.seatOut, + points.waistOut + ) + } else { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.seatOut, + points.seatOutCp2, + points.waistOut, + points.waistOut + ) + points.seatOutNotch = points.seatOut + points.kneeOutNotch = utils.lineIntersectsCurve( + points.kneeOut, + points.kneeIn.rotate(180, points.kneeOut), + points.floorOut, + points.kneeOutCp2, + points.seatOutCp1, + points.seatOut + ) + } + points.kneeInNotch = utils.lineIntersectsCurve( + points.kneeIn, + points.kneeOut.rotate(180, points.kneeIn), + points.fork, + points.forkCp2, + points.kneeInCp1, + points.floorIn + ) + } + macro('sprinkle', { + snippet: 'notch', + on: ['seatOutNotch', 'kneeInNotch', 'kneeOutNotch'], + }) + macro('sprinkle', { + snippet: 'bnotch', + on: ['crossSeamCurveStart', 'seatIn'], + }) + paths.seatline = new Path() + .move(points.seatIn) + .line(points.seatOutNotch) + .attr('class', 'fabric help') + .attr('data-text', 'Seat Line') + .attr('data-text-class', 'center') + if ( + measurements.waistToHips * (1 - options.waistHeight) + absoluteOptions.waistbandWidth < + measurements.waistToHips + ) { + snippets.hipsIn = new Snippet('bnotch', points.hipsIn) + snippets.hipsOut = new Snippet('notch', points.hipsOut) + paths.hipline = new Path() + .move(points.hipsIn) + .line(points.hipsOut) + .attr('class', 'fabric help') + .attr('data-text', 'Hip Line') + .attr('data-text-class', 'center') + } + } if (sa) { paths.saBase = drawOutseam() .join( diff --git a/designs/titan/src/front.js b/designs/titan/src/front.js index 2e3384d6665..ba80a877803 100644 --- a/designs/titan/src/front.js +++ b/designs/titan/src/front.js @@ -295,7 +295,7 @@ export default (part) => { from: points.grainlineTop, to: points.grainlineBottom, }) - points.logoAnchor = new Point(points.crotchSeamCurveStart.x / 2, points.crotchSeamCurveStart.y) + points.logoAnchor = new Point(points.crotchSeamCurveStart.x / 2, points.fork.y) snippets.logo = new Snippet('logo', points.logoAnchor) points.titleAnchor = points.logoAnchor.shift(-90, 60) macro('title', { @@ -303,7 +303,160 @@ export default (part) => { title: 'front', at: points.titleAnchor, }) - + //notches + if (options.fitGuides) { + points.waistMid = points.waistOut.shiftFractionTowards(points.waistIn, 0.5) + points.seatMid = points.waistMid + .shiftTowards(points.waistOut, measurements.waistToSeat) + .rotate(90, points.waistMid) + points.seatInTarget = points.seatOut.shiftOutwards(points.seatMid, measurements.seat / 4) + points.seatOutTarget = points.seatMid.shiftTowards(points.seatOut, measurements.seat / 4) + points.hipsInTarget = points.waistIn + .shiftTowards(points.waistOut, measurements.waistToHips) + .rotate(90, points.waistIn) + points.hipsOutTarget = points.waistOut + .shiftTowards(points.waistIn, measurements.waistToHips) + .rotate(-90, points.waistOut) + points.hipsIn = utils.beamsIntersect( + points.hipsOutTarget, + points.hipsInTarget, + points.waistIn, + points.crotchSeamCurveStart + ) + points.crotchSeamCurveStartMid = utils.beamsIntersect( + points.crotchSeamCurveStart, + points.crotchSeamCurveStart.shift(points.waistIn.angle(points.waistOut), 1), + points.waistMid, + points.seatMid + ) + if (points.seatMid.y > points.crotchSeamCurveStartMid.y) { + points.seatIn = utils.lineIntersectsCurve( + points.seatMid, + points.seatInTarget, + points.fork, + points.crotchSeamCurveCp1, + points.crotchSeamCurveCp2, + points.crotchSeamCurveStart + ) + } else { + points.seatIn = utils.beamsIntersect( + points.seatMid, + points.seatInTarget, + points.crotchSeamCurveStart, + points.waistIn + ) + } + if (options.fitKnee) { + if (points.waistOut.x < points.seatOut.x) { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.waistOut, + points.seatOut, + points.kneeOutCp1, + points.kneeOut + ) + points.seatOutNotch = utils.lineIntersectsCurve( + points.seatMid, + points.seatOutTarget, + points.waistOut, + points.seatOut, + points.kneeOutCp1, + points.kneeOut + ) + } else { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.waistOut, + points.waistOut, + points.seatOutCp1, + points.seatOut + ) + points.seatOutNotch = points.seatOut + } + points.kneeOutNotch = points.kneeOut + points.kneeInNotch = points.kneeIn + } else { + if (points.waistOut.x < points.seatOut.x) { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.waistOut, + points.seatOut, + points.kneeOutCp1, + points.floorOut + ) + points.seatOutNotch = utils.lineIntersectsCurve( + points.seatMid, + points.seatOutTarget, + points.waistOut, + points.seatOut, + points.kneeOutCp1, + points.floorOut + ) + points.kneeOutNotch = utils.lineIntersectsCurve( + points.kneeOut, + points.kneeIn.rotate(180, points.kneeOut), + points.waistOut, + points.seatOut, + points.kneeOutCp1, + points.floorOut + ) + } else { + points.hipsOut = utils.lineIntersectsCurve( + points.hipsOutTarget, + points.hipsIn.rotate(180, points.hipsOutTarget), + points.waistOut, + points.waistOut, + points.seatOutCp1, + points.seatOut + ) + points.seatOutNotch = points.seatOut + points.kneeOutNotch = utils.lineIntersectsCurve( + points.kneeOut, + points.kneeIn.rotate(180, points.kneeOut), + points.seatOut, + points.seatOutCp2, + points.kneeOutCp1, + points.floorOut + ) + } + points.kneeInNotch = utils.lineIntersectsCurve( + points.kneeIn, + points.kneeOut.rotate(180, points.kneeIn), + points.floorIn, + points.kneeInCp2, + points.forkCp1, + points.fork + ) + } + macro('sprinkle', { + snippet: 'notch', + on: ['crotchSeamCurveStart', 'seatIn', 'seatOutNotch', 'kneeInNotch', 'kneeOutNotch'], + }) + paths.seatline = new Path() + .move(points.seatOutNotch) + .line(points.seatIn) + .attr('class', 'fabric help') + .attr('data-text', 'Seat Line') + .attr('data-text-class', 'center') + if ( + measurements.waistToHips * (1 - options.waistHeight) + absoluteOptions.waistbandWidth < + measurements.waistToHips + ) { + macro('sprinkle', { + snippet: 'notch', + on: ['hipsIn', 'hipsOut'], + }) + paths.hipline = new Path() + .move(points.hipsOut) + .line(points.hipsIn) + .attr('class', 'fabric help') + .attr('data-text', 'Hip Line') + .attr('data-text-class', 'center') + } + } if (sa) { paths.saBase = drawInseam() .join( diff --git a/designs/titan/tests/shared.test.mjs b/designs/titan/tests/shared.test.mjs index e51f8d6f90e..f19dc20cbed 100644 --- a/designs/titan/tests/shared.test.mjs +++ b/designs/titan/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Titan from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'titan', - new Titan(), + "titan", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'titan', - Titan, + "titan", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'titan', - Titan, + "titan", + Pattern, expect, models, patterns diff --git a/designs/trayvon/README.md b/designs/trayvon/README.md index bc6b861ed8c..b8a859da1fa 100644 --- a/designs/trayvon/README.md +++ b/designs/trayvon/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/trayvon/config/index.js b/designs/trayvon/config/index.js index 887e8e796b3..7889b4abe4d 100644 --- a/designs/trayvon/config/index.js +++ b/designs/trayvon/config/index.js @@ -1,5 +1,4 @@ import { version } from '../package.json' -import freesewing from '@freesewing/core' import configHelpers from '@freesewing/config-helpers' const { smallsteps, pctBasedOn } = configHelpers diff --git a/designs/trayvon/package.json b/designs/trayvon/package.json index 3411d5561c7..b7334435d74 100644 --- a/designs/trayvon/package.json +++ b/designs/trayvon/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/trayvon", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a tie", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/trayvon/tests/shared.test.mjs b/designs/trayvon/tests/shared.test.mjs index e195b68cbd2..2db17742222 100644 --- a/designs/trayvon/tests/shared.test.mjs +++ b/designs/trayvon/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Trayvon from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'trayvon', - new Trayvon(), + "trayvon", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'trayvon', - Trayvon, + "trayvon", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'trayvon', - Trayvon, + "trayvon", + Pattern, expect, models, patterns diff --git a/designs/tutorial/README.md b/designs/tutorial/README.md index 780df99ec16..84fb161a286 100644 --- a/designs/tutorial/README.md +++ b/designs/tutorial/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/tutorial/package.json b/designs/tutorial/package.json index 54c48cacf38..5a96db2b8de 100644 --- a/designs/tutorial/package.json +++ b/designs/tutorial/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/tutorial", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a baby bib that's used in our tutorial", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/tutorial/tests/shared.test.mjs b/designs/tutorial/tests/shared.test.mjs index ec7dd348d11..57b964d1d3d 100644 --- a/designs/tutorial/tests/shared.test.mjs +++ b/designs/tutorial/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Tutorial from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'tutorial', - new Tutorial(), + "tutorial", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'tutorial', - Tutorial, + "tutorial", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'tutorial', - Tutorial, + "tutorial", + Pattern, expect, models, patterns diff --git a/designs/unice/README.md b/designs/unice/README.md index aa2555fb55c..9e31cc78e3f 100644 --- a/designs/unice/README.md +++ b/designs/unice/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/unice/config/index.js b/designs/unice/config/index.js index 0e578b51b61..af39af98d28 100644 --- a/designs/unice/config/index.js +++ b/designs/unice/config/index.js @@ -10,13 +10,15 @@ const config = { code: design, name: 'unice', inject: { - ...ursulaConfig.inject, front: 'ursulaFront', back: 'ursulaBack', gusset: 'ursulaGusset', + front2: 'front', + back2: 'back', + gusset2: 'gusset', }, - hide: ['ursulaBack', 'ursulaFront', 'ursulaGusset'], - parts: [], + hide: ['ursulaBack', 'ursulaFront', 'ursulaGusset','front', 'back', 'gusset'], + parts: ['front','back','gusset','elastic','front2','back2','gusset2'], optionalMeasurements: ['crossSeam','crossSeamFront'], measurements: ['waist', 'seat', 'waistToSeat', 'waistToUpperLeg','hips','waistToHips'], optionGroups: { @@ -31,6 +33,14 @@ const config = { 'gussetLength' ], }, + dependencies: { + back: 'front', + gusset: 'back', + elastic: 'gusset', + front2: 'elastic', + back2: 'elastic', + gusset2: 'elastic', + }, options: { ...ursulaConfig.options, gussetShift: 0.015, // fraction of seat circumference - could be an advanced option? diff --git a/designs/unice/example/netlify.toml b/designs/unice/example/netlify.toml index cfd34cb43db..9890e6c62f2 100644 --- a/designs/unice/example/netlify.toml +++ b/designs/unice/example/netlify.toml @@ -1,5 +1,5 @@ [build] - base = "packages/unice/example" + base = "designs/unice/example" publish = "build" command = "npm run build" diff --git a/designs/unice/package.json b/designs/unice/package.json index 19cb2e6664b..d6e3dd09a78 100644 --- a/designs/unice/package.json +++ b/designs/unice/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/unice", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern", "author": "Anna Puk (https://github.com/anna-puk)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/unice/src/back.js b/designs/unice/src/back.js index 0f97c2b694b..39b86acb13d 100644 --- a/designs/unice/src/back.js +++ b/designs/unice/src/back.js @@ -1,279 +1,4 @@ -export default function (part) { - const { - options, - Point, - Path, - points, - paths, - measurements, - // Snippet, - // snippets, - store, - utils, - complete, - sa, - paperless, - macro, - } = part.shorthand() +const method = part => part - // Design pattern here +export default method - // Create points -return part - points.backWaistMid = new Point(measurements.seat / 4, 0) - points.backWaistBandLeft = new Point( - store.get('sideSeamWaist').x / options.backToFrontWidth, - store.get('sideSeamWaist').y - ) - points.backLegOpeningLeft = new Point( - store.get('sideSeamHip').x / options.backToFrontWidth, - store.get('sideSeamHip').y - ) - - // back height is given by (estimated) cross seam, minus front and gusset lengths - // this does not account for vertical stretch yet - const backHeight = store.get('crossSeam') - store.get('frontHeight') - options.gussetLength * measurements.seat - - // calculate the actual back height, using yScale above and yScaleReduced below leg opening - const backHeightAbove = store.get('frontHeightAbove') // part above has same height front and back - - let backHeightBelow - backHeightBelow = store.get('yScale')*(backHeight - backHeightAbove/store.get('yScaleReduced')) - - const backHeightReduced = backHeightBelow + backHeightAbove - - points.backGussetLeft = new Point( - measurements.seat / 4 - - ((measurements.waist * options.gussetWidth * store.get('xScale')) / options.gussetRatio) * - options.backToFrontWidth, - backHeightReduced - ) - points.backGussetMid = new Point( - measurements.seat / 4, - backHeightReduced - ) - - points.backGussetRight = points.backGussetLeft.flipX(points.backWaistMid) - points.backLegOpeningRight = points.backLegOpeningLeft.flipX(points.backWaistMid) - points.backWaistBandRight = points.backWaistBandLeft.flipX(points.backWaistMid) - - points.backWaistBandMid = points.backWaistBandLeft - .shiftFractionTowards(points.backWaistBandRight, 0.5) - .shift(270, measurements.waistToUpperLeg * options.backDip) - - /* Middle point for label */ - points.backMidMid = points.backLegOpeningLeft.shiftFractionTowards( - points.backLegOpeningRight, - 0.5 - ) - - // Create control points - - /* Control point for waistband dip */ - points.backWaistBandLeftCp1 = points.backWaistBandMid.shift(0,points.backWaistBandMid.dx(points.backWaistBandLeft) / 3 ) - - /* Flip points to right side */ - points.backWaistBandRightCp1 = points.backWaistBandLeftCp1.flipX(points.backWaistMid) - - // Shape back coverage - - /* Only have to do this on one side */ - points.backLegOpeningCorner = utils.beamsIntersect( - points.backLegOpeningLeft, - points.backLegOpeningLeft.shift(180, points.backGussetLeft.dy(points.backLegOpeningLeft)), - points.backGussetLeft, - points.backGussetLeft.shift(270, points.backGussetLeft.dy(points.backLegOpeningLeft)) - ) - - if (options.backExposure >= 0) { - /* If back exposure is high, like a thong style */ - /* This controls the hip bit */ - points.backLegOpeningLeftCp1 = points.backLegOpeningLeft.shiftFractionTowards( - points.backLegOpeningCorner, - options.backExposure - ) - /* This controls the center bit */ - points.backGussetLeftCp1 = points.backGussetLeft.shiftFractionTowards( - points.backWaistBandMid, - options.backExposure - ) - points.backGussetLeft = points.backGussetLeft.shiftFractionTowards( - points.backGussetMid, - options.backExposure - ) // This narrows the back of the gusset - points.backGussetRight = points.backGussetLeft.flipX(points.backWaistMid) - } else { - /* If back exposure is low and flares out to cover more */ - store.set('adjustedBackExposure',options.backExposure * store.get('adjustedLegOpening')) // flare depends on leg opening - /* This controls the hip bit */ - points.backLegOpeningLeftCp1 = points.backLegOpeningLeft.shift( - -45,store.get('adjustedBackExposure') * points.backWaistBandMid.dx(points.backWaistBandLeft)) - /* This controls the taper to gusset */ - points.backGussetLeftCp1 = points.backGussetLeft.shift(115, store.get('adjustedBackExposure') * points.backWaistBandMid.dx(points.backWaistBandLeft)) - - /* center of the flare and its control points are on a line parallel to the backGussetLeft to backLegOpeningLeft line - * first, define the points on that line */ - points.backFlare = points.backGussetLeft.shiftFractionTowards(points.backLegOpeningLeft, 0.5) - // points.backFlareCp1 = points.backGussetLeft.shiftFractionTowards(points.backLegOpeningLeft, 0.5 - store.get('adjustedBackExposure')) - points.backFlareCp1 = points.backGussetLeft.shiftFractionTowards(points.backLegOpeningLeft, 0.7) - points.backFlareCp2 = points.backGussetLeft.shiftFractionTowards(points.backLegOpeningLeft, 0.3) - /* then shift all three points outward */ - points.backFlareLeft = points.backFlare.shift( - 215,(points.backWaistBandMid.dx(points.backWaistBandLeft)) * store.get('adjustedBackExposure') * 2 ) - points.backFlareLeftCp1 = points.backFlareCp1.shift( - 215,(points.backWaistBandMid.dx(points.backWaistBandLeft)) * store.get('adjustedBackExposure') * 2 ) - points.backFlareLeftCp2 = points.backFlareCp2.shift( - 215,(points.backWaistBandMid.dx(points.backWaistBandLeft)) * store.get('adjustedBackExposure') * 2 ) - - - /* Flip points to the right */ - - points.backFlareRight = points.backFlareLeft.flipX(points.backWaistBandMid) - points.backFlareRightCp1 = points.backFlareLeftCp1.flipX(points.backWaistMid) - points.backFlareRightCp2 = points.backFlareLeftCp2.flipX(points.backWaistMid) - } - - /* Flip points to the right */ - - points.backLegOpeningRightCp1 = points.backLegOpeningLeftCp1.flipX(points.backWaistMid) - points.backGussetRightCp1 = points.backGussetLeftCp1.flipX(points.backWaistMid) - - // Draw paths - - if (options.backExposure >= 0) { - paths.seam = new Path() - .move(points.backWaistBandMid) - .curve(points.backWaistBandLeftCp1, points.backWaistBandLeft, points.backWaistBandLeft) // Waist band dip - .line(points.backLegOpeningLeft) - .curve(points.backLegOpeningLeftCp1, points.backGussetLeftCp1, points.backGussetLeft) - .line(points.backGussetMid) - .line(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backLegOpeningRightCp1, points.backLegOpeningRight) - .line(points.backWaistBandRight) - .curve(points.backWaistBandRight, points.backWaistBandRightCp1, points.backWaistBandMid) // Waist band dip - .close() - .attr('class', 'fabric') - } else { - paths.seam = new Path() - .move(points.backWaistBandMid) - .curve(points.backWaistBandLeftCp1, points.backWaistBandLeft, points.backWaistBandLeft) // Waist band dip - .line(points.backLegOpeningLeft) - .curve(points.backLegOpeningLeftCp1, points.backFlareLeftCp1, points.backFlareLeft) - .curve(points.backFlareLeftCp2, points.backGussetLeftCp1, points.backGussetLeft) - .line(points.backGussetMid) - .line(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backFlareRightCp2, points.backFlareRight) - .curve(points.backFlareRightCp1, points.backLegOpeningRightCp1, points.backLegOpeningRight) - .line(points.backWaistBandRight) - .curve(points.backWaistBandRight, points.backWaistBandRightCp1, points.backWaistBandMid) // Waist band dip - .close() - .attr('class', 'fabric') - } - - // Store points for use in other parts - - /* Store gusset points for use in gusset */ - - store.set('backGussetLeft', points.backGussetLeft) - store.set('backGussetRight', points.backGussetRight) - - /* Store lengths for use in elastic */ - - if (options.backExposure >= 0) { - store.set( - 'backLegOpeningLength', - new Path() - .move(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backLegOpeningRightCp1, points.backLegOpeningRight) - .length() - ) - } else { - store.set( - 'backLegOpeningLength', - new Path() - .move(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backFlareRightCp2, points.backFlareRight) - .curve(points.backFlareRightCp1, points.backLegOpeningRightCp1, points.backLegOpeningRight) - .length() - ) - } - - store.set( - 'backWaistBandLength', - new Path() - .move(points.backWaistBandRight) - .curve(points.backWaistBandRightCp1, points.backWaistBandLeftCp1, points.backWaistBandLeft) - .length() - ) - - // Complete? - if (complete) { - if (sa) { - paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') - } - } - - macro('title', { - at: points.backMidMid, - nr: 2, - title: 'back', - }) - - macro('grainline', { - from: points.backGussetMid, - to: points.backGussetMid.shiftFractionTowards(points.backWaistBandMid, 0.4), - }) - - points.scaleboxAnchor = points.scalebox = points.backMidMid.shift(90, -50) - macro('miniscale', { at: points.scalebox }) - - // Paperless? - if (paperless) { - macro('hd', { - from: points.backWaistBandRight, - to: points.backWaistBandLeft, - y: points.backWaistBandRight.y + sa - 15, - }) - macro('hd', { - from: points.backLegOpeningRight, - to: points.backLegOpeningLeft, - y: points.backLegOpeningRight.y + sa - 15, - }) - macro('hd', { - from: points.backGussetLeft, - to: points.backGussetRight, - y: points.backGussetLeft.y + sa + 15, - }) - macro('vd', { - from: points.backWaistBandMid, - to: points.backGussetMid, - x: points.backWaistBandMid.x + sa + 15, - }) - if (options.backExposure >= 0) { - macro('pd', { - path: new Path() - .move(points.backGussetRight) - .curve( - points.backGussetRightCp1, - points.backLegOpeningRightCp1, - points.backLegOpeningRight - ), - d: 15, - }) - } else { - macro('pd', { - path: new Path() - .move(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backFlareRightCp2, points.backFlareRight) - .curve( - points.backFlareRightCp1, - points.backLegOpeningRightCp1, - points.backLegOpeningRight - ), - d: 15, - }) - } - } - - return part -} diff --git a/designs/unice/src/front.js b/designs/unice/src/front.js index 2a4bc075283..75dd42b7c86 100644 --- a/designs/unice/src/front.js +++ b/designs/unice/src/front.js @@ -202,24 +202,25 @@ export default function (part) { /* Store lengths for use in elastic */ - store.set( - 'frontLegOpeningLength', - new Path() + paths.frontLegOpening = new Path() .move(points.frontGussetRight) .curve( points.frontGussetRightCp1, points.frontLegOpeningRightCp1, points.frontLegOpeningRight ) - .length() - ) - store.set( - 'frontWaistBandLength', - new Path() + .setRender(false) + store.set('frontLegOpeningLength',paths.frontLegOpening.length()) + + paths.frontWaistBand = new Path() .move(points.frontWaistBandRight) - .curve(points.frontWaistBandRightCp1, points.frontWaistBandLeftCp1, points.frontWaistBandLeft) - .length() - ) + .curve( + points.frontWaistBandRightCp1, + points.frontWaistBandLeftCp1, + points.frontWaistBandLeft + ) + .setRender(false) + store.set('frontWaistBandLength',paths.frontWaistBand.length()) // Complete? if (complete) { diff --git a/designs/unice/src/gusset.js b/designs/unice/src/gusset.js index 8b1a9a37b31..39b86acb13d 100644 --- a/designs/unice/src/gusset.js +++ b/designs/unice/src/gusset.js @@ -1,82 +1,4 @@ -export default function (part) { - let { options, Point, Path, points, paths, measurements, store, complete, sa, paperless, macro } = - part.shorthand() -return part - var yScaleDoubleLayer - yScaleDoubleLayer = (1 + store.get('yScale'))/2 // double layer of fabric stretches half as much +const method = part => part - // Create points - points.frontGussetLeft = new Point(store.get('frontGussetLeft').x, 0) - points.backGussetLeft = new Point( - store.get('backGussetLeft').x, - measurements.seat * options.gussetLength * yScaleDoubleLayer - ) - points.frontGussetRight = new Point(store.get('frontGussetRight').x, 0) - points.backGussetRight = new Point( - store.get('backGussetRight').x, - measurements.seat * options.gussetLength * yScaleDoubleLayer - ) +export default method - // Create control points - points.gussetCp1 = points.frontGussetLeft - .shiftFractionTowards(points.backGussetLeft, 0.5) - .shift(180, points.frontGussetRight.x / -15) - - // Flip points to right side - points.gussetCp2 = points.gussetCp1.flipX(store.get('frontGussetMid')) - - // Create point for title - points.frontMidMid = points.gussetCp1.shiftFractionTowards(points.gussetCp2, 0.5) - - /* Store lengths for use in elastic */ - store.set( - 'gussetSideLength', - new Path() - .move(points.backGussetRight) - .curve(points.backGussetRight, points.gussetCp2, points.frontGussetRight) - .length() - ) - - // Draw paths - paths.seam = new Path() - .move(points.frontGussetLeft) - .curve(points.gussetCp1, points.backGussetLeft, points.backGussetLeft) - .line(points.backGussetRight) - .curve(points.backGussetRight, points.gussetCp2, points.frontGussetRight) - .line(points.frontGussetLeft) // Without this, doesn't generate seam allowance - .close() - .attr('class', 'fabric') - - // Complete? - if (complete) { - if (sa) { - paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') - } - macro('title', { - at: points.frontMidMid, - nr: 3, - title: 'gusset', - }) - } - - // Paperless? - if (paperless) { - macro('hd', { - from: points.frontGussetLeft, - to: points.frontGussetRight, - y: points.frontGussetLeft.y + sa + 15, - }) - macro('hd', { - from: points.backGussetLeft, - to: points.backGussetRight, - y: points.backGussetLeft.y + sa + 15, - }) - macro('vd', { - from: points.frontGussetRight, - to: points.backGussetRight, - x: points.frontGussetRight.x + sa + 15, - }) - } - - return part -} diff --git a/designs/unice/src/index.js b/designs/unice/src/index.js index e1044cc78f9..e4f33f50dcc 100644 --- a/designs/unice/src/index.js +++ b/designs/unice/src/index.js @@ -20,6 +20,16 @@ for (const name of ['Back', 'Front', 'Gusset']) { Unice.prototype.draftElastic = function (part) { return new Ursula(this.settings).draftElastic(part) } +Unice.prototype.draftFront2 = function (part) { + return new Ursula(this.settings).draftFront2(part) +} +Unice.prototype.draftBack2 = function (part) { + return new Ursula(this.settings).draftBack2(part) +} +Unice.prototype.draftGusset2 = function (part) { + return new Ursula(this.settings).draftGusset2(part) +} + // Attach our own draft methods to the prototype Unice.prototype.draftFront = draftFront diff --git a/designs/unice/tests/shared.test.mjs b/designs/unice/tests/shared.test.mjs index 502e7795595..cbb45b725a3 100644 --- a/designs/unice/tests/shared.test.mjs +++ b/designs/unice/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Unice from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'unice', - new Unice(), + "unice", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'unice', - Unice, + "unice", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'unice', - Unice, + "unice", + Pattern, expect, models, patterns diff --git a/designs/ursula/README.md b/designs/ursula/README.md index 8881db6ce68..abb437fcb56 100644 --- a/designs/ursula/README.md +++ b/designs/ursula/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/ursula/package.json b/designs/ursula/package.json index 17f0c3c2d55..ef6b08405fa 100644 --- a/designs/ursula/package.json +++ b/designs/ursula/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/ursula", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a basic, highly-customizable underwear pattern", "author": "Natalia Sayang (https://github.com/nataliasayang)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step4": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/ursula/src/back2.js b/designs/ursula/src/back2.js index 0b1d4c1d69f..de3bec23bd6 100644 --- a/designs/ursula/src/back2.js +++ b/designs/ursula/src/back2.js @@ -1,19 +1,10 @@ export default function (part) { - let { - options, - Point, - Path, + const { points, paths, - measurements, Snippet, snippets, store, - utils, - complete, - sa, - paperless, - macro, } = part.shorthand() points.waist2 = points.backWaistBandMid diff --git a/designs/ursula/src/front2.js b/designs/ursula/src/front2.js index b9aaeeaf12b..56638d2e49d 100644 --- a/designs/ursula/src/front2.js +++ b/designs/ursula/src/front2.js @@ -1,19 +1,10 @@ export default function (part) { - let { - options, - Point, - Path, + const { points, paths, - measurements, Snippet, snippets, store, - utils, - complete, - sa, - paperless, - macro, } = part.shorthand() // draw markers to indicate elastic distribution diff --git a/designs/ursula/src/gusset2.js b/designs/ursula/src/gusset2.js index e99992e6f37..a95f464aecc 100644 --- a/designs/ursula/src/gusset2.js +++ b/designs/ursula/src/gusset2.js @@ -1,23 +1,14 @@ export default function (part) { - let { - options, - Point, - Path, + const { points, paths, - measurements, Snippet, snippets, store, - utils, - complete, - sa, - paperless, - macro, } = part.shorthand() // draw markers to indicate elastic distribution - if ((store.get('numLegMarkersFront') < 1) & (store.get('numLegMarkersGusset') > 0)) { + if ((store.get('numLegMarkersFront') < 1) && (store.get('numLegMarkersGusset') > 0)) { // draw first marker, on gusset // use (1 - frac) because the path is drawn from back to front points.leg1L = paths.gussetLegOpening.shiftFractionAlong(1 - store.get('legMarker1Frac')) @@ -27,7 +18,7 @@ export default function (part) { snippets.leg1R = new Snippet('notch', points.leg1R) } if ( - (store.get('numLegMarkersFront') < 2) & + (store.get('numLegMarkersFront') < 2) && (store.get('numLegMarkersFront') + store.get('numLegMarkersGusset') > 1) ) { // draw second marker, on gusset @@ -39,7 +30,7 @@ export default function (part) { snippets.leg2R = new Snippet('notch', points.leg2R) } if ( - (store.get('numLegMarkersFront') < 3) & + (store.get('numLegMarkersFront') < 3) && (store.get('numLegMarkersFront') + store.get('numLegMarkersGusset') > 3) ) { // draw third marker, on gusset diff --git a/designs/ursula/tests/shared.test.mjs b/designs/ursula/tests/shared.test.mjs index 184f094fb61..fc376ac1bbe 100644 --- a/designs/ursula/tests/shared.test.mjs +++ b/designs/ursula/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Ursula from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'ursula', - new Ursula(), + "ursula", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'ursula', - Ursula, + "ursula", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'ursula', - Ursula, + "ursula", + Pattern, expect, models, patterns diff --git a/designs/wahid/README.md b/designs/wahid/README.md index ddb47d49629..72c00b9d461 100644 --- a/designs/wahid/README.md +++ b/designs/wahid/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/wahid/config/index.js b/designs/wahid/config/index.js index 4e030f4da34..c032a139fd5 100644 --- a/designs/wahid/config/index.js +++ b/designs/wahid/config/index.js @@ -18,6 +18,7 @@ export default { 'backScyeDart', 'frontScyeDart', 'centerBackDart', + 'draftForHighBust', ], style: [ 'pocketLocation', @@ -42,6 +43,7 @@ export default { 'shoulderToShoulder', 'waist', ], + optionalMeasurements: ['highBust'], dependencies: { backBlock: 'base', frontBlock: 'backBlock', @@ -50,6 +52,7 @@ export default { frontFacing: 'front', frontLining: 'front', pocketBag: 'front', + pocketFacing: 'front', }, inject: { backBlock: 'base', @@ -106,5 +109,8 @@ export default { shoulderInset: { pct: 10, min: 0, max: 20 }, neckInset: { pct: 5, min: 0, max: 10 }, pocketAngle: { deg: 5, min: 0, max: 5 }, + + // draft for high bust + draftForHighBust: { bool: false }, }, } diff --git a/designs/wahid/package.json b/designs/wahid/package.json index 75929821e89..24d44eee88d 100644 --- a/designs/wahid/package.json +++ b/designs/wahid/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/wahid", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a classic fitted waistcoat", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,21 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-round": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -58,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/wahid/src/back.js b/designs/wahid/src/back.js index bb86ebcd277..5067515c887 100644 --- a/designs/wahid/src/back.js +++ b/designs/wahid/src/back.js @@ -107,6 +107,13 @@ export default (part) => { paths.dart.render = false if (complete) { + //Grainline + points.grainlineBottom = new Point(points.logo.x/2, points.cbNeck.y) + points.grainlineTop = new Point(points.grainlineBottom.x, points.gridAnchor.y) + macro('grainline', { + from: points.grainlineTop, + to: points.grainlineBottom, + }) macro('scalebox', { at: new Point(points.logo.x, points.armholePitchCp2.y) }) if (sa) { paths.sa = paths.saBase diff --git a/designs/wahid/src/front.js b/designs/wahid/src/front.js index fc2d30ba145..dc8fda62fc1 100644 --- a/designs/wahid/src/front.js +++ b/designs/wahid/src/front.js @@ -1,5 +1,4 @@ import { constructMainDart, shapeSideSeam, dartPath } from './shared' - export default (part) => { let { points, @@ -17,11 +16,9 @@ export default (part) => { paperless, store, } = part.shorthand() - // Cleanup from Brian for (let i of Object.keys(paths)) delete paths[i] delete snippets.armholePitchNotch - // Neck cutout points.closureTop = new Point( measurements.chest * options.frontOverlap * -1, @@ -41,24 +38,19 @@ export default (part) => { points.armholeHollow = points.armholeHollow.shift(180, frontInset / 2) points.armholeHollowCp2 = points.armholeHollowCp2.shift(180, frontInset / 2) points.armholeHollowCp1 = points.armholeHollowCp1.shift(180, frontInset / 2) - // Shoulder inset points.shoulder = points.shoulder.shiftTowards(points.neck, shoulderLen * options.shoulderInset) points.shoulderCp1 = points.shoulderCp1.shift( points.shoulder.angle(points.neck), shoulderLen * options.shoulderInset ) - // Neck inset points.neck = points.neck.shiftTowards(points.shoulder, shoulderLen * options.neckInset) points.neckCp2 = points.neck.shift(points.shoulder.angle(points.neck) + 90, shoulderLen * 0.2) - // Construct main dart constructMainDart(part) - // Shape side seam shapeSideSeam(part) - // Hem if (options.hemStyle === 'classic') { // Construct cutaway @@ -120,16 +112,13 @@ export default (part) => { // (essentially a rounded hem with radius zero if (!points.roundStart) points.roundStart = points.closureBottom.clone() if (!points.roundEnd) points.roundEnd = points.closureBottom.clone() - // Add dart start and end point regardless of style or front or back points.dartStart = options.hemStyle === 'classic' ? points.splitDartHemLeft : points.dartHemLeft points.dartEnd = options.hemStyle === 'classic' ? points.splitDartHemRight : points.dartHemRight - // Pockets let pw = measurements.hips * options.pocketWidth // Pocket width let pwh = pw * options.weltHeight // Pocket welt height let pwvh = pwh / Math.cos(utils.deg2rad(options.pocketAngle)) // Pocket welt vertical height - points.pocketTopMid = points.dartWaistCenter.shiftFractionTowards( points.dartHipCenter, options.pocketLocation @@ -156,7 +145,6 @@ export default (part) => { points.pocketBottomRight = points.pocketTopRight.shift(options.pocketAngle - 90, pwh) // Store pocket bag length store.set('pocketBagLength', points.pocketTopMid.dy(points.cfHem) * 0.75) - if (options.frontScyeDart) { // Front scye dart points._dartWidth = points.dartTop.shiftFractionTowards( @@ -205,11 +193,12 @@ export default (part) => { } points.armholeHollowCp1 = points.armholeHollowCp2.rotate(180, points.armholeHollow) } - // Facing/Lining boundary (flb) points.flbTop = points.neck.shiftFractionTowards(points.shoulder, 0.5) - points.flbCp = points.dartTop.shift(90, points.dartTop.dist(points.flbTop) / 2) - + points.flbCp = points.dartTop.shift(-90, points.armholePitch.dy(points.flbTop) / 2) + points.flbCpTop = points.flbTop + .shiftTowards(points.neck, points.flbTop.dy(points.armholePitch)) + .rotate(90, points.flbTop) // Seam line delete paths.cutonfold delete paths.saBase @@ -247,7 +236,6 @@ export default (part) => { paths.saBase.render = false paths.hemBase.render = false paths.dart.render = false - if (complete) { // Pocket path paths.pocket = new Path() @@ -260,7 +248,6 @@ export default (part) => { .line(points.pocketTopRight) .line(points.pocketTopMidRight) .attr('class', 'fabric dashed') - // Buttons points.button1 = new Point(0, points.closureTop.y + 10) let delta = points.button1.dist(points.lastButton) / (options.buttons - 1) @@ -272,16 +259,19 @@ export default (part) => { 90 ) } - // Facing/Lining boundary (flb) - points.flbTop = points.neck.shiftFractionTowards(points.shoulder, 0.5) - points.flbCp = points.dartTop.shift(90, points.dartTop.dist(points.flbTop) / 2) paths.flbFacing = new Path() .move(points.dartTop) - .curve_(points.flbCp, points.flbTop) + .curve(points.flbCp, points.flbCpTop, points.flbTop) .attr('class', 'fabric') paths.flbLining = paths.flbFacing.clone().attr('class', 'lining dashed') + //Grainline + + macro('grainline', { + to: points.neck, + from: new Point(points.neck.x, points.cfHem.y), + }) if (sa) { paths.sa = paths.saBase .offset(sa) @@ -289,7 +279,6 @@ export default (part) => { .close() .attr('class', 'fabric sa') } - if (paperless) { macro('hd', { from: points.closureTop, @@ -474,6 +463,5 @@ export default (part) => { }) } } - return part } diff --git a/designs/wahid/src/frontfacing.js b/designs/wahid/src/frontfacing.js index fc16a38dc93..663b8f675b4 100644 --- a/designs/wahid/src/frontfacing.js +++ b/designs/wahid/src/frontfacing.js @@ -1,18 +1,16 @@ export default (part) => { let { points, Point, paths, Path, options, macro, snippets, Snippet, complete, sa } = part.shorthand() - // Cleanup from front part - for (let i of Object.keys(paths)) delete paths[i] + for (let i of Object.keys(paths).filter((name) => name !== 'grainline')) delete paths[i] for (let i of Object.keys(snippets)) delete snippets[i] - // Seam line paths.seam = new Path() .move(points.dartStart) .line(points.dartHipLeft) .curve(points.dartHipLeftCpTop, points.dartWaistLeftCpBottom, points.dartWaistLeft) .curve_(points.dartWaistLeftCpTop, points.dartTop) - .curve_(points.flbCp, points.flbTop) + .curve(points.flbCp, points.flbCpTop, points.flbTop) .line(points.neck) .curve(points.neckCp2, points.closureTopCp1, points.closureTop) if (options.hemStyle === 'classic') { @@ -29,19 +27,17 @@ export default (part) => { paths.seam.line(points.closureBottom).line(points.dartHemLeft) } paths.seam.close().attr('class', 'fabric') - if (complete) { if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') - points.title = new Point(points.dartWaistLeft.x / 2, points.waist.y) macro('title', { nr: 3, at: points.title, title: 'frontFacing', }) + points.logo = points.closureTop.shiftFractionTowards(points.dartWaistLeft, 0.5) snippets.logo = new Snippet('logo', points.logo) } - return part } diff --git a/designs/wahid/src/frontlining.js b/designs/wahid/src/frontlining.js index 24c2f4d9de9..6bc69f90b8a 100644 --- a/designs/wahid/src/frontlining.js +++ b/designs/wahid/src/frontlining.js @@ -1,10 +1,9 @@ export default (part) => { - let { points, paths, Path, options, macro, snippets, Snippet, complete, sa } = part.shorthand() - + let { points, Point, paths, Path, options, macro, snippets, Snippet, complete, sa } = + part.shorthand() // Cleanup from Brian for (let i of Object.keys(paths)) delete paths[i] for (let i of Object.keys(snippets)) delete snippets[i] - // Seam line paths.seam = new Path() .move(points.hem) @@ -15,7 +14,7 @@ export default (part) => { .curve(points.armholeHollowCp2, points.armholePitchCp1, points.armholePitch) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .line(points.flbTop) - ._curve(points.flbCp, points.dartTop) + .curve(points.flbCpTop, points.flbCp, points.dartTop) ._curve(points.dartWaistRightCpTop, points.dartWaistRight) .curve(points.dartWaistRightCpBottom, points.dartHipRightCpTop, points.dartHipRight) .line(points.dartEnd) @@ -23,8 +22,12 @@ export default (part) => { paths.seam.curve(points.splitDartHemRightCp2, points.splitHemCp1, points.hem) } else paths.seam.line(points.hem) paths.seam.close() - if (complete) { + macro('grainline', { + from: points.flbTop, + to: new Point(points.flbTop.x, points.dartTop.y), + }) + if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') points.title = points.armhole.shiftFractionTowards(points.dartTop, 0.5) macro('title', { @@ -35,6 +38,5 @@ export default (part) => { points.logo = points.dartWaistRight.shiftFractionTowards(points.waist, 0.5) snippets.logo = new Snippet('logo', points.logo) } - return part } diff --git a/designs/wahid/src/index.js b/designs/wahid/src/index.js index e49f19649a6..d098482cb75 100644 --- a/designs/wahid/src/index.js +++ b/designs/wahid/src/index.js @@ -1,8 +1,7 @@ import freesewing from '@freesewing/core' import Brian from '@freesewing/brian' import plugins from '@freesewing/plugin-bundle' -import round from '@freesewing/plugin-round' -import buttons from '@freesewing/plugin-buttons' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import config from '../config' // Parts import draftFront from './front' @@ -27,8 +26,20 @@ const wristPlugin = { }, } -// Create pattern -const Wahid = new freesewing.Design(config, [plugins, round, buttons, wristPlugin]) +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + +// Create design +const Wahid = new freesewing.Design(config, [plugins, wristPlugin], { plugin, condition }) // Parts we're getting from Brian Wahid.prototype.draftBase = function (part) { diff --git a/designs/wahid/src/pocketbag.js b/designs/wahid/src/pocketbag.js index ff53d01b0a5..d58ceb26fdf 100644 --- a/designs/wahid/src/pocketbag.js +++ b/designs/wahid/src/pocketbag.js @@ -1,10 +1,8 @@ export default (part) => { let { points, Point, paths, Path, measurements, options, macro, complete, paperless, store } = part.shorthand() - let pw = measurements.hips * options.pocketWidth // Pocket width let ph = store.get('pocketBagLength') // Pocket height - points.topLeft = new Point(0, 0) points.topRight = new Point(pw + 30, 0) points.bottomLeft = new Point(0, ph + 10) @@ -25,7 +23,6 @@ export default (part) => { render: false, prefix: 'roundRight', }) - paths.seam = new Path() .move(points.topLeft) .line(points.roundLeftStart) @@ -36,7 +33,6 @@ export default (part) => { .line(points.topLeft) .close() .attr('class', 'lining') - if (complete) { points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) macro('title', { @@ -46,6 +42,10 @@ export default (part) => { }) } + macro('grainline', { + from: points.roundLeftEnd, + to: new Point(points.roundLeftEnd.x, points.topLeft.y), + }) if (paperless) { macro('hd', { from: points.bottomLeft, @@ -58,6 +58,5 @@ export default (part) => { x: points.topRight.x + 15, }) } - return part } diff --git a/designs/wahid/src/pocketfacing.js b/designs/wahid/src/pocketfacing.js index b4c6138554c..4ce18f3d8f8 100644 --- a/designs/wahid/src/pocketfacing.js +++ b/designs/wahid/src/pocketfacing.js @@ -1,11 +1,9 @@ export default (part) => { let { points, Point, paths, Path, measurements, options, macro, complete, paperless, store } = part.shorthand() - let pw = measurements.hips * options.pocketWidth // Pocket width let pwh = pw * options.weltHeight // Pocket welt height let ph = store.get('pocketBagLength') + pwh // Pocket height - points.topLeft = new Point(0, 0) points.topRight = new Point(pw + 30, 0) points.bottomLeft = new Point(0, ph + 10) @@ -28,7 +26,6 @@ export default (part) => { render: false, prefix: 'roundRight', }) - paths.seam = new Path() .move(points.topLeft) .line(points.roundLeftStart) @@ -39,7 +36,6 @@ export default (part) => { .line(points.topLeft) .close() .attr('class', 'fabric') - if (complete) { points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) macro('title', { @@ -47,6 +43,23 @@ export default (part) => { title: 'pocketFacing', at: points.title, }) + //Grainline + let grainlineVariableShift = points.topLeft.dist(points.topRight) * 0.1 + points.grainlineFromPocketFacing = new Point(points.topLeft.x, points.topLeft.y).shift( + 0, + grainlineVariableShift + ) + points.grainlineToPocketFacing = new Point(points.topLeft.x, points.topLeft.y) + .shift(0, grainlineVariableShift) + .shift(-90, ph) + points.grainlineToPocketFacingRotated = points.grainlineToPocketFacing.rotate( + options.pocketAngle, + points.grainlineFromPocketFacing + ) + macro('grainline', { + from: points.grainlineFromPocketFacing, + to: points.grainlineToPocketFacingRotated, + }) macro('sprinkle', { snippet: 'notch', on: ['notchLeft', 'notchRight'], @@ -56,7 +69,6 @@ export default (part) => { .line(points.notchRight) .attr('class', 'fabric stroke-sm dashed') } - if (paperless) { macro('hd', { from: points.bottomLeft, @@ -69,6 +81,5 @@ export default (part) => { x: points.topRight.x + 15, }) } - return part } diff --git a/designs/wahid/src/pocketinterfacing.js b/designs/wahid/src/pocketinterfacing.js index 22e5f14c9e3..a2350bcd2fb 100644 --- a/designs/wahid/src/pocketinterfacing.js +++ b/designs/wahid/src/pocketinterfacing.js @@ -1,17 +1,14 @@ export default (part) => { let { points, Point, paths, Path, measurements, options, macro, complete, paperless } = part.shorthand() - let pw = measurements.hips * options.pocketWidth // Pocket width let pwh = pw * options.weltHeight // Pocket welt height - points.topLeft = new Point(0, 0) points.topRight = new Point(pw + 30, 0) points.bottomLeft = new Point(0, pwh + 20) points.bottomRight = new Point(points.topRight.x, points.bottomLeft.y) points.notchLeft = new Point(15, 10) points.notchRight = new Point(pw + 15, 10) - paths.seam = new Path() .move(points.topLeft) .line(points.bottomLeft) @@ -20,7 +17,6 @@ export default (part) => { .line(points.topLeft) .close() .attr('class', 'interfacing') - if (complete) { points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) macro('title', { @@ -28,6 +24,24 @@ export default (part) => { title: 'pocketInterfacing', at: points.title, }) + //Grainline + let grainlineVariableShift = points.topLeft.dist(points.topRight) * 0.1 + + points.grainlineFromInterfacing = new Point(points.topLeft.x, points.topLeft.y).shift( + 0, + grainlineVariableShift + ) + points.grainlineToInterfacing = new Point(points.topLeft.x, points.topLeft.y) + .shift(0, grainlineVariableShift) + .shift(-90, pwh + 20) + points.grainlineToInterfacingRotated = points.grainlineToInterfacing.rotate( + options.pocketAngle, + points.grainlineFromInterfacing + ) + macro('grainline', { + from: points.grainlineFromInterfacing, + to: points.grainlineToInterfacingRotated, + }) macro('sprinkle', { snippet: 'notch', on: ['notchLeft', 'notchRight'], @@ -37,7 +51,6 @@ export default (part) => { .line(points.notchRight) .attr('class', 'interfacing stroke-sm dashed') } - if (paperless) { macro('hd', { from: points.bottomLeft, @@ -50,6 +63,5 @@ export default (part) => { x: points.topRight.x + 15, }) } - return part } diff --git a/designs/wahid/src/pocketwelt.js b/designs/wahid/src/pocketwelt.js index 945fa07dfb6..5aea9c3d0fb 100644 --- a/designs/wahid/src/pocketwelt.js +++ b/designs/wahid/src/pocketwelt.js @@ -1,10 +1,8 @@ export default (part) => { let { points, Point, paths, Path, measurements, options, macro, complete, paperless } = part.shorthand() - let pw = measurements.hips * options.pocketWidth // Pocket width let pwh = pw * options.weltHeight // Pocket welt height - points.topLeft = new Point(0, 0) points.topRight = new Point(pw + 30, 0) points.bottomLeft = new Point(0, pwh * 2 + 20) @@ -13,7 +11,6 @@ export default (part) => { points.notchRight = new Point(pw + 15, 10) points.midLeft = new Point(0, pwh + 10) points.midRight = new Point(pw + 30, pwh + 10) - paths.seam = new Path() .move(points.topLeft) .line(points.bottomLeft) @@ -22,7 +19,6 @@ export default (part) => { .line(points.topLeft) .close() .attr('class', 'fabric') - if (complete) { points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) macro('title', { @@ -30,6 +26,25 @@ export default (part) => { title: 'pocketWelt', at: points.title, }) + //Grainline + let grainlineVariableShift = points.topLeft.dist(points.topRight) * 0.1 + + points.grainlineFromWelt = new Point(points.topLeft.x, points.topLeft.y).shift( + 0, + grainlineVariableShift + ) + points.grainlineToWelt = new Point(points.topLeft.x, points.topLeft.y) + .shift(0, grainlineVariableShift) + .shift(-90, pwh * 2 + 20) + points.grainlineToWeltRotated = points.grainlineToWelt.rotate( + options.pocketAngle, + points.grainlineFromWelt + ) + + macro('grainline', { + from: points.grainlineFromWelt, + to: points.grainlineToWeltRotated, + }) macro('sprinkle', { snippet: 'notch', on: ['notchLeft', 'notchRight'], @@ -43,7 +58,6 @@ export default (part) => { .line(points.midRight) .attr('class', 'hint dotted') } - if (paperless) { macro('hd', { from: points.notchLeft, @@ -71,6 +85,5 @@ export default (part) => { x: points.midRight.x + 45, }) } - return part } diff --git a/designs/wahid/tests/shared.test.mjs b/designs/wahid/tests/shared.test.mjs index 766411b90d1..87d1c494da5 100644 --- a/designs/wahid/tests/shared.test.mjs +++ b/designs/wahid/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Wahid from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'wahid', - new Wahid(), + "wahid", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'wahid', - Wahid, + "wahid", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'wahid', - Wahid, + "wahid", + Pattern, expect, models, patterns diff --git a/designs/walburga/README.md b/designs/walburga/README.md index 9afcd3bb017..7b55fb45887 100644 --- a/designs/walburga/README.md +++ b/designs/walburga/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/walburga/package.json b/designs/walburga/package.json index 90ea919f759..56d3f781fef 100644 --- a/designs/walburga/package.json +++ b/designs/walburga/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/walburga", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a wappenrock (tabard/surcoat), a historical European/medieval (ish) garment", "author": "Starfetch (https://github.com/starfetch)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/walburga/tests/shared.test.mjs b/designs/walburga/tests/shared.test.mjs index 39ede37c28f..eefb69ca2fb 100644 --- a/designs/walburga/tests/shared.test.mjs +++ b/designs/walburga/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Walburga from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'walburga', - new Walburga(), + "walburga", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'walburga', - Walburga, + "walburga", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'walburga', - Walburga, + "walburga", + Pattern, expect, models, patterns diff --git a/designs/waralee/README.md b/designs/waralee/README.md index 4b390459768..07cbdd73f0e 100644 --- a/designs/waralee/README.md +++ b/designs/waralee/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/waralee/package.json b/designs/waralee/package.json index feda77f11fb..75a10047460 100644 --- a/designs/waralee/package.json +++ b/designs/waralee/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/waralee", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for wrap pants", "author": "woutervdub (https://github.com/woutervdub)", "homepage": "https://freesewing.org/", @@ -31,18 +31,18 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -55,7 +55,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/waralee/tests/shared.test.mjs b/designs/waralee/tests/shared.test.mjs index f3b6e830268..e4f648d6392 100644 --- a/designs/waralee/tests/shared.test.mjs +++ b/designs/waralee/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Waralee from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'waralee', - new Waralee(), + "waralee", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'waralee', - Waralee, + "waralee", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'waralee', - Waralee, + "waralee", + Pattern, expect, models, patterns diff --git a/designs/yuri/README.md b/designs/yuri/README.md index 200ab4bb93d..6a9ce8e0440 100644 --- a/designs/yuri/README.md +++ b/designs/yuri/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/designs/yuri/config/index.js b/designs/yuri/config/index.js index e4db1f9e476..3e80fdb0cb8 100644 --- a/designs/yuri/config/index.js +++ b/designs/yuri/config/index.js @@ -14,6 +14,7 @@ const config = { fit: [...brianConfig.optionGroups.fit, 'hipsEase'], }, measurements: [...brianConfig.measurements, 'head', 'hips', 'hpsToBust'], + optionalMeasurements: [ 'highBust' ], dependencies: { backBase: 'base', frontBase: 'backBase', diff --git a/designs/yuri/package.json b/designs/yuri/package.json index 23a537259d7..66a9c307e99 100644 --- a/designs/yuri/package.json +++ b/designs/yuri/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/yuri", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing pattern for a fancy zipless sweater based on the Huey hoodie", "author": "biou (https://github.com/biou)", "homepage": "https://freesewing.org/", @@ -31,19 +31,20 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'config/*.js'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step5": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3", - "@freesewing/plugin-bundle": "^2.21.3", - "@freesewing/config-helpers": "^2.21.3", - "@freesewing/brian": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0", + "@freesewing/plugin-bundle": "^2.22.0-rc.0", + "@freesewing/config-helpers": "^2.22.0-rc.0", + "@freesewing/brian": "^2.22.0-rc.0", + "@freesewing/plugin-bust": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -56,7 +57,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/designs/yuri/src/index.js b/designs/yuri/src/index.js index 6e876ccb59b..c4b6c7d75c0 100644 --- a/designs/yuri/src/index.js +++ b/designs/yuri/src/index.js @@ -1,5 +1,6 @@ import freesewing from '@freesewing/core' import plugins from '@freesewing/plugin-bundle' +import plugin from '@freesewing/plugin-bust' // Note: conditional plugin import Brian from '@freesewing/brian' import config from '../config' // Parts @@ -10,8 +11,20 @@ import draftGusset from './gusset' import draftHoodSide from './hoodside' import draftHoodCenter from './hoodcenter' -// Create new design -const Yuri = new freesewing.Design(config, plugins) +/* Check to see whether we should load the bust plugin + * Only of the `draftForHighBust` options is set + * AND the highBust measurement is available + */ +const condition = (settings = false) => + settings && + settings.options && + settings.options.draftForHighBust && + settings.measurements.highBust + ? true + : false + +// Create design +const Yuri = new freesewing.Design(config, plugins, { plugin, condition }) // Attach draft methods from Brian to prototype Yuri.prototype.draftBase = function (part) { diff --git a/designs/yuri/tests/shared.test.mjs b/designs/yuri/tests/shared.test.mjs index e1e3ccb34be..7c96b8af4c3 100644 --- a/designs/yuri/tests/shared.test.mjs +++ b/designs/yuri/tests/shared.test.mjs @@ -3,7 +3,7 @@ import chai from 'chai' import models from '@freesewing/models' import patterns from '@freesewing/pattern-info' -import Yuri from './dist/index.mjs' +import Pattern from './dist/index.mjs' // Shared tests import { testPatternConfig } from '../../../tests/patterns/config.mjs' @@ -12,11 +12,10 @@ import { testPatternSampling } from '../../../tests/patterns/sampling.mjs' const expect = chai.expect - // Test config testPatternConfig( - 'yuri', - new Yuri(), + "yuri", + new Pattern(), expect, models, patterns @@ -24,8 +23,8 @@ testPatternConfig( // Test drafting testPatternDrafting( - 'yuri', - Yuri, + "yuri", + Pattern, expect, models, patterns @@ -33,8 +32,8 @@ testPatternDrafting( // Test sampling testPatternSampling( - 'yuri', - Yuri, + "yuri", + Pattern, expect, models, patterns diff --git a/lerna.json b/lerna.json index 8a5967e44fb..22993c8869f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.21.3", + "version": "2.22.0-rc.0", "npmClient": "yarn", "command": { "publish": { diff --git a/markdown/dev/guides/best-practices/respect-draft-settings/en.md b/markdown/dev/guides/best-practices/respect-draft-settings/en.md index bce98d1ea3c..38e1cc93999 100644 --- a/markdown/dev/guides/best-practices/respect-draft-settings/en.md +++ b/markdown/dev/guides/best-practices/respect-draft-settings/en.md @@ -12,19 +12,19 @@ that you should take into account while developing your pattern. They are: ## Complete -The [complete](/reference/api/settings#complete) setting is a boolean that is either true or false. +The [complete](/reference/api/settings/complete) setting is a boolean that is either true or false. Its goal is to determine whether we should draft a _complete_ pattern, or merely the outline. ## Paperless -The [paperless](/reference/api/settings#paperless) setting is a boolean that is either true or false. +The [paperless](/reference/api/settings/paperless) setting is a boolean that is either true or false. A _paperless_ pattern is a pattern that has extra dimensions so users can trace the paper on fabric or paper without having the need to print it. ## Seam allowance -The [sa](/reference/api/settings#sa) setting is a number that controls the seam allowance. +The [sa](/reference/api/settings/sa) setting is a number that controls the seam allowance. Unless `sa` is zero, you should add the requested seam allowance to your pattern. diff --git a/markdown/dev/guides/markdown/custom-components/en.md b/markdown/dev/guides/markdown/custom-components/en.md index c6de6ab0cab..0181e1746ae 100644 --- a/markdown/dev/guides/markdown/custom-components/en.md +++ b/markdown/dev/guides/markdown/custom-components/en.md @@ -11,9 +11,24 @@ typically require a lot more complexity. Below is a list of custom components you can use in our Markdown content: +## Comment + +**Do** try this at home + +Use a **Comment** where you want to illustrate something is a personal opinion +or tip/advice rather than the sort of general neutral voice used throughout +our documentation. + +The **Comment** component requires a `by` attribute that lists the author of the comment. + +```markdown +**Do** try this at home +``` + ## Dot + ```dot rankdir="LR" compound=true @@ -43,11 +58,12 @@ frontend -> strapi [color="oc-indigo"] user -> frontend ``` + An example graph using the **Dot** custom component Use **Dot** to add a [Graphviz](https://graphviz.org/) graph written in -the [Dot graph description language](*https://en.wikipedia.org/wiki/DOT_(graph_description_language)). +the [Dot graph description language](https://en.wikipedia.org/wiki/DOT_\(graph_description_language\)). It is a way to include diagrams as code, making them easier to maintain and diff than creating graphic files by hand. These diagrams also support dark mode, translation a and @@ -68,7 +84,7 @@ This custom component makes it easy to use [the open-color color scheme](https://yeun.github.io/open-color/) by using the following color names: - `oc-[color]` will use the `oc-[color]-5` midtone that's suitable for both light and -dark mode. Eg: `oc-violet` + dark mode. Eg: `oc-violet` - `oc-[color]-[shade]` allows you to control the lightness. Eg: `oc-violet-200` @@ -80,7 +96,7 @@ works in dark mode ### Using translation While freesewing.dev is only available in English, you can also use this on -freesewing.org which uses translation. +freesewing.org which uses translation. You can use the `i18n:` prefix followed by the translation key. For example `i18n:docs` will look up the `docs` key in the default namespace. Whereas @@ -94,7 +110,7 @@ You can use the `i18n:` prefix followed by the translation key. For example Use **Example** to embed an example (a part of our `examples` pattern) that is used to illustrate the core API documentation. Check [the examples -source code](https://github.com/freesewing/freesewing/blob/develop/packages/examples/src/index.js) for +source code](https://github.com/freesewing/freesewing/blob/develop/designs/examples/src/index.js) for a full list of all available parts/examples. ```markdown @@ -103,20 +119,6 @@ a full list of all available parts/examples. ``` -## Comment - -**Do** try this at home - -Use a **Comment** where you want to illustrate something is a personal opinion -or tip/advice rather than the sort of general neutral voice used throughout -our documentation. - -The **Comment** component requires a `by` attribute that lists the author of the comment. - -```markdown -**Do** try this at home -``` - ## Fixme diff --git a/markdown/dev/guides/markdown/jargon/en.md b/markdown/dev/guides/markdown/jargon/en.md new file mode 100644 index 00000000000..dc29b7a2fce --- /dev/null +++ b/markdown/dev/guides/markdown/jargon/en.md @@ -0,0 +1,52 @@ +--- +title: Using jargon +order: yyy +--- + +Jargon are terminology that could throw off new users. +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. + +Think of jargon as glossary terms + +## Using jargon + +To use jargon, it's sufficient to emphasize the term: + +```md +We are migrating from _cjs_ to _esm_ modules +``` + +Which renders as: + +We are migrating from _cjs_ to _esm_ modules + +## Adding jargon + +To add a new jargon term, you need to add it to the jargon file for the +website you'd like to add it to: + +| Website | Jargon file | Github link | +| ------- | ----------- | ----------- | +| freesewing.dev | `sites/dev/jargon.mjs` | [jargon.mjs](https://github.com/freesewing/freesewing/blob/develop/sites/dev/jargon.mjs) | +| freesewing.org | `sites/org/jargon.mjs` | [jargon.mjs](https://github.com/freesewing/freesewing/blob/develop/sites/org/jargon.mjs) | + +The file consists of key/value pairs where: + +- The **key** is the jargon term +- The **value** is the jargon description + +### Tips for jargon keys + +The key in the jargon file should always be lowercase. That's because we +lowercase the term before matching it. + +So in your text, you can use `ESM`, `ems`, or even `eSm`, but the key in +the jargon file should be `esm`. + +### Tips for jargon values + +The value can hold HTML tags, just make sure it's valid HTML and don't go +overboard. + +Note that the definition will be _italic_ by default. diff --git a/markdown/dev/guides/plugins/hooks/en.md b/markdown/dev/guides/plugins/hooks/en.md index 2caeb45e36c..f6bcbd907bb 100644 --- a/markdown/dev/guides/plugins/hooks/en.md +++ b/markdown/dev/guides/plugins/hooks/en.md @@ -5,13 +5,13 @@ order: 60 A **hook** is a lifecycle event. The available hooks are: -- [preRender](/reference/api/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern#render) -- [postRender](/reference/api/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern#render) +- [preRender](/reference/api/hooks/prerender/): Called at the start of [`Pattern.render()`](/reference/api/pattern/render) +- [postRender](/reference/api/hooks/postrender/): Called at the end of [`Pattern.render()`](/reference/api/pattern/render) - [insertText](/reference/api/hooks/inserttext/): Called when inserting text -- [preDraft](/reference/api/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern#draft) -- [postDraft](/reference/api/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern#draft) -- [preSample](/reference/api/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern#sample) -- [postSample](/reference/api/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern#sample) +- [preDraft](/reference/api/hooks/predraft/): Called at the start of [`Pattern.draft()`](/reference/api/pattern/draft) +- [postDraft](/reference/api/hooks/postdraft/): Called at the end of [`Pattern.draft()`](/reference/api/pattern/draft) +- [preSample](/reference/api/hooks/presample/): Called at the start of [`Pattern.sample()`](/reference/api/pattern/sample) +- [postSample](/reference/api/hooks/postsample/): Called at the end of [`Pattern.sample()`](/reference/api/pattern/sample) You can register a method for a hook. When the hook is triggered, your method will be called. It will receive two parameters: diff --git a/markdown/dev/guides/plugins/loading-build-time-plugins/en.md b/markdown/dev/guides/plugins/loading-build-time-plugins/en.md index d83f9d7a696..72417d16fc2 100644 --- a/markdown/dev/guides/plugins/loading-build-time-plugins/en.md +++ b/markdown/dev/guides/plugins/loading-build-time-plugins/en.md @@ -4,7 +4,7 @@ order: 20 --- Build-time plugins are loaded at build time, by passing them to -the [`freesewing.Design`](/reference/api/#design) constructor: +the [`freesewing.Design`](/reference/api/design) constructor: ```js import freesewing from "@freesewing/core" diff --git a/markdown/dev/howtos/code/adding-instructions/en.md b/markdown/dev/howtos/code/adding-instructions/en.md index 25ca908d66d..0df0ce5a506 100644 --- a/markdown/dev/howtos/code/adding-instructions/en.md +++ b/markdown/dev/howtos/code/adding-instructions/en.md @@ -8,7 +8,7 @@ about: While documentation is good, sometimes you want to add some instructions ##### See this example in our source code -- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/38d101b0415a4cbf3f9f86e006bd8cb7c43c703b/packages/jaeger/src/front.js#L411) +- [designs/aaron/src/back.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/back.js#L66) @@ -18,27 +18,19 @@ The tricky part is to make sure your text can be translated. Below is a rather involved example from Aaron: ```js -points.bindinAnchor = new Point(points.armhole.x / 4, points.armhole.y) +points.bindingAnchor = new Point(points.armhole.x / 4, points.armhole.y) .attr('data-text', 'cutTwoStripsToFinishTheArmholes') .attr('data-text', ':\n') - .attr('data-text', 'width') - .attr('data-text', ':') - .attr('data-text', units(sa * 6 || 60)) - .attr('data-text', '\n') - .attr('data-text', 'length') - .attr('data-text', ':') - .attr('data-text', units(armholeLength * 0.95 + 2 * sa)) - .attr('data-text', '\n \n') + .attr('data-text', `2x: ${units(sa * 6 || 60)} x ${units(armholeLength * 0.95 + 2 * sa)}`) + .attr('data-text', '\n \n') .attr('data-text', 'cutOneStripToFinishTheNeckOpening') .attr('data-text', ':\n') .attr('data-text', 'width') .attr('data-text', ':') - .attr('data-text', units(sa * 6)) - .attr('data-text', '\n') - .attr('data-text', 'length') - .attr('data-text', ':') - .attr('data-text', units(neckOpeningLength * 2 * 0.95 + 2 * sa)) - .attr('data-text-lineheight', 6) + .attr( + 'data-text', + `${units((sa || 10) * 6)} x ${units(neckOpeningLength * 2 * 0.95 + 2 * sa)}` + ) ``` If you want to add text along a path, you can do that too: diff --git a/markdown/dev/howtos/code/extend-pattern/en.md b/markdown/dev/howtos/code/extend-pattern/en.md index b35e8ac9c58..595b0a4b831 100644 --- a/markdown/dev/howtos/code/extend-pattern/en.md +++ b/markdown/dev/howtos/code/extend-pattern/en.md @@ -1,16 +1,14 @@ --- title: Create a new design based on an existing design -for: developers -about: Shows how to create a variation of a pre-existing design --- ##### See this example in our source code -- [packages/aaron/config/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/config/index.js#L34) -- [packages/aaron/src/index.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/index.js#L2) -- [packages/carlita/src/index.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlita/src/index.js#L25) +- [designs/aaron/config/index.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/config/index.js#L36) +- [designs/aaron/src/index.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/index.js#L2) +- [designs/carlita/src/index.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/carlita/src/index.js#L25) @@ -18,28 +16,43 @@ about: Shows how to create a variation of a pre-existing design To be able to extend existing patterns, you will have to access them on your local machine. There are two ways to do this: -- add needed dependencies when using `npx create-freesewing-pattern` +- add needed dependencies when using `npx @freesewing/new-design` - create your new pattern in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing) -### When using `npx create-freesewing-pattern` +### When using `npx @freesewing/new-design` -If you want to use existing patterns when creating your new pattern with `npx create-freesewing-pattern`, you have to install the needed dependencies.\ -Let's say you want to extend Brian.\ -In your freshly created pattern folder, you now have to run +If you want to use one of our blocks, you can simply pick that option when you run `npx @freesewing/new-design`. +Doing so will set everything up for you, so you won't have to worry about a thing. + +If you want to extend an existing design, you'll have to do some work yourself. + +#### Start from scratch + +First step is to spin up the development environment. Pick _from scratch_ when prompted: ```bash -npm install --save @freesewing/brian +npx @freesewing/new-design ``` -This will install Brian as a dependency, which you can then access in your pattern (see [examples](/howtos/code/extend-pattern/#examples) below on how to do that).\ -This has to be repeated for every new pattern you create. +### Install dependencies + +Let's assume you want to extend **Simon**. You will first need to install it as a dependency. +We also need to install **Brian** since Simon is based on Brian: + +```bash +npm install --save @freesewing/simon @freesewing/brian +``` + +This will install both Simon and Brian as a dependency, which you can then access in your pattern. - -Some packages need more than one dependency. Carlton, for example, is based on Bent, which in turn is based on Brian. You will have to install all dependencies in the way shown above. If something is still missing, error messages will tell you what you still need to install. - +If the design you extend relies on a design you did not install, error messages will tell you what you are missing +### Import your dependencies + +Complete this documentation + ### Using the freesewing monorepo You can use the power of robots to install the needed dependencies if you work in a clone of the [freesewing monorepo](https://github.com/freesewing/freesewing). diff --git a/markdown/dev/howtos/code/hide-paths/en.md b/markdown/dev/howtos/code/hide-paths/en.md index e6841547b94..2a8c07b761a 100644 --- a/markdown/dev/howtos/code/hide-paths/en.md +++ b/markdown/dev/howtos/code/hide-paths/en.md @@ -8,7 +8,7 @@ about: When you inherit a part, it comes with a bunch of paths. Here'show to hid ##### See this example in our source code -- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L22) +- [designs/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/front.js#L22) diff --git a/markdown/dev/howtos/code/remove-paths/en.md b/markdown/dev/howtos/code/remove-paths/en.md index 74bdfbe5294..cb1ca22160d 100644 --- a/markdown/dev/howtos/code/remove-paths/en.md +++ b/markdown/dev/howtos/code/remove-paths/en.md @@ -8,10 +8,12 @@ about: When you inherit a part, it comes with a bunch of paths. Here'show to rem ##### See this example in our source code -- [packages/carlton/src/back.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/carlton/src/back.js#L62) +- [designs/carlton/src/back.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/carlton/src/back.js#L62) ```js - for (let i in paths) delete paths[i] + for (let i in paths) { + if (['backArmhole', 'backCollar'].indexOf(i) === -1) delete paths[i] + } ``` diff --git a/markdown/dev/howtos/code/shared-dimensions/en.md b/markdown/dev/howtos/code/shared-dimensions/en.md index 126271e2fa6..e3401fe80b3 100644 --- a/markdown/dev/howtos/code/shared-dimensions/en.md +++ b/markdown/dev/howtos/code/shared-dimensions/en.md @@ -8,8 +8,8 @@ about: Shows how to share dimensions between similar pattern parts ##### See this example in our source code -- [packages/aaron/src/shared.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/shared.js) -- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/72f34101792bda4d8e553c3479daa63cb461f3c5/packages/aaron/src/front.js#L160) +- [designs/aaron/src/shared.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/shared.js) +- [designs/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/front.js#L160) diff --git a/markdown/dev/howtos/code/shorthand/en.md b/markdown/dev/howtos/code/shorthand/en.md index eaa78f1cff8..0a20bf3f3e0 100644 --- a/markdown/dev/howtos/code/shorthand/en.md +++ b/markdown/dev/howtos/code/shorthand/en.md @@ -4,12 +4,12 @@ for: developers about: Shows you how to use our shorthand method and notation --- -The [Part.shorthand()](/reference/api/part/#shorthand) method will become your best friend. +The [Part.shorthand()](/reference/api/part/shorthand) method will become your best friend. By using [object destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring) you'll get access to a bunch of handy variables to make your code more concise and readable. -[Part.shorthand()](/reference/api/part/#shorthand) provides a lot of things, and you typically +[Part.shorthand()](/reference/api/part/shorthand) provides a lot of things, and you typically don't need all of them, but here's everything it has to offer: ```js diff --git a/markdown/dev/howtos/code/storing-path-length/en.md b/markdown/dev/howtos/code/storing-path-length/en.md index b7b2455bd41..ec0cf1d729e 100644 --- a/markdown/dev/howtos/code/storing-path-length/en.md +++ b/markdown/dev/howtos/code/storing-path-length/en.md @@ -8,7 +8,7 @@ about: Shows how to store a seam length so you can true the seam of another part ##### See this example in our source code -- [packages/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/develop/packages/aaron/src/front.js#L103) +- [designs/aaron/src/front.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/src/front.js#L103) diff --git a/markdown/dev/howtos/design/fit-sleeve/en.md b/markdown/dev/howtos/design/fit-sleeve/en.md index 1dcd33a0e72..a0910e8ba4e 100644 --- a/markdown/dev/howtos/design/fit-sleeve/en.md +++ b/markdown/dev/howtos/design/fit-sleeve/en.md @@ -8,7 +8,7 @@ about: Shows how to adapt the length of the sleevecap to fit your armhole ##### See this example in our source code -- [packages/bent/src/sleeve.js](https://github.com/freesewing/freesewing/blob/develop/packages/bent/src/sleeve.js) +- [designs/bent/src/sleeve.js](https://github.com/freesewing/freesewing/blob/develop/designs/bent/src/sleeve.js) diff --git a/markdown/dev/howtos/design/seam-allowance/en.md b/markdown/dev/howtos/design/seam-allowance/en.md index 7e61e922e62..e4a45e42217 100644 --- a/markdown/dev/howtos/design/seam-allowance/en.md +++ b/markdown/dev/howtos/design/seam-allowance/en.md @@ -8,7 +8,7 @@ about: Adding seam allowance or hem allowance is easy to do ##### See this example in our source code -- [packages/bruce/src/inset.js](https://github.com/freesewing/freesewing/blob/develop/packages/bruce/src/inset.js#L34) +- [designs/bruce/src/inset.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/bruce/src/inset.js#L32) diff --git a/markdown/dev/howtos/design/slash-spread/en.md b/markdown/dev/howtos/design/slash-spread/en.md index 8355fabdb71..e5d7327abd9 100644 --- a/markdown/dev/howtos/design/slash-spread/en.md +++ b/markdown/dev/howtos/design/slash-spread/en.md @@ -8,7 +8,7 @@ about: Slash and spread is easy enough on paper, here's how to do it in code ##### See this example in our source code -- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L64) +- [designs/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/jaeger/src/front.js#L64) diff --git a/markdown/dev/howtos/design/sprinkle-snippets/en.md b/markdown/dev/howtos/design/sprinkle-snippets/en.md index 3f855d34a28..11469f3d5f0 100644 --- a/markdown/dev/howtos/design/sprinkle-snippets/en.md +++ b/markdown/dev/howtos/design/sprinkle-snippets/en.md @@ -8,7 +8,7 @@ about: Adding multiple snippets doesn't need to be a chore with this handy macro ##### See this example in our source code -- [packages/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/8474477911daed3c383700ab29c9565883f16d66/packages/jaeger/src/front.js#L381) +- [designs/jaeger/src/front.js](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/jaeger/src/front.js#L381) diff --git a/markdown/dev/howtos/dev/en.md b/markdown/dev/howtos/dev/en.md deleted file mode 100644 index 9f972588375..00000000000 --- a/markdown/dev/howtos/dev/en.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Setting up your development environment ---- - -If you're new to Javascript development, getting started is probably -the hardest part. These guides will walk you through setting up your -development environment on your operating system of choice. - - diff --git a/markdown/dev/howtos/dev/freesewing-dev/en.md b/markdown/dev/howtos/dev/freesewing-dev/en.md deleted file mode 100644 index c31900a6f35..00000000000 --- a/markdown/dev/howtos/dev/freesewing-dev/en.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Working on freesewing.dev -for: developers -about: Shows you how to setup your development environment to work on freesewing.dev, our website for developers ---- - -freesewing.dev is built from a package in our monorepo. You will need the following setup and installed before you begin: Node, [lerna](https://lerna.js.org/) and [yarn](https://yarnpkg.com/). - -To get started, checkout the repository: - -```bash -git@github.com:freesewing/freesewing.git -``` - - -You should check out your own fork so you can write your changes to it. -Update the command above with the path of your own fork on Github - - -Enter the newly installed repository and run kickstart: - -```bash -cd freesewing -yarn kickstart -``` - -After that completes, navigate to the freesewing.dev package directory: - -```bash -cd freesewing/packages/freesewing.dev -``` - -Now install the dependencies: - -```bash -yarn install -``` - -This will take a while. When it's done, run the following commands to build and then start your development environment: - -```bash -yarn prebuild -yarn dev -``` - -Once the command builds the site, you can open your browser on http://localhost:3002 to see the site. - -As you make changes, they will automatically be loaded into your browser. diff --git a/markdown/dev/howtos/dev/freesewing-org/en.md b/markdown/dev/howtos/dev/freesewing-org/en.md deleted file mode 100644 index 0fdb8d579b4..00000000000 --- a/markdown/dev/howtos/dev/freesewing-org/en.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Working on freesewing.org -for: developers -about: Shows you how to setup your development environment to work on freesewing.org, our website for makers ---- - -freesewing.org is being moved from its current location ([freesewing/freesewing.org](https://github.com/freesewing/freesewing.org)) to the monorepo ([freesewing/freesewing](https://github.com/freesewing/freesewing)). These instructions are subject to change and may be out of date. If you run into issues please reach out on #development-help in [Discord](https://discord.freesewing.org/). In the meantime, to work on freesewing.org, checkout the freesewing.org repository: - -```bash -git@github.com:freesewing/freesewing.org.git -``` - - -You should check out your own fork so you can write your changes to it. -Update the command above with the path of your own fork on Github - - -Enter the newly installed repository: - -```bash -cd freesewing.org -``` - -Copy the `.env.example` file to `.env`. If you just want to get the site running you don't need to edit the values inside the `.env` file. But if you want to use any of the integrations (e.g. Google Authentication, Algolia search) you will need to enter your own values to this file. - -```bash -cp .env.example .env -``` - -Because freesewing.org is in the process of moving to the monorepo, it's using shared components from the monorepo as a submodule. You will need to initialize the monorepo submodule. Do so with the following git commands: - -```bash -git submodule init -git submodule update -``` - -Before running the above command the `monorepo` folder will be empty. After running the above commands you should see files in the `monorepo` folder. - -Now install the dependencies: - -```bash -yarn install -``` - -If you prefer, you can also use npm: - -```bash -npm install -``` - -This will take a while. When it's done, run the following command to start your development environment: - -```bash -npm run develop -``` - -Once the command builds the site, you can open your browser on http://localhost:8000 to see the site. - -As you make changes, they will automatically be loaded into your browser. diff --git a/markdown/dev/howtos/git/editing-content-on-github/commit-changes.png b/markdown/dev/howtos/git/editing-content-on-github/commit-changes.png new file mode 100644 index 00000000000..f9f2face9be Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/commit-changes.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/discord-github-updates.png b/markdown/dev/howtos/git/editing-content-on-github/discord-github-updates.png new file mode 100644 index 00000000000..7c5422d2a08 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/discord-github-updates.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/edit-button.png b/markdown/dev/howtos/git/editing-content-on-github/edit-button.png new file mode 100644 index 00000000000..fa5c7125de1 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/edit-button.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/edit-preview-buttons.png b/markdown/dev/howtos/git/editing-content-on-github/edit-preview-buttons.png new file mode 100644 index 00000000000..be8548021c6 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/edit-preview-buttons.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/en.md b/markdown/dev/howtos/git/editing-content-on-github/en.md new file mode 100644 index 00000000000..148460dfbc4 --- /dev/null +++ b/markdown/dev/howtos/git/editing-content-on-github/en.md @@ -0,0 +1,100 @@ +--- +title: Editing freesewing content on GitHub +--- + +## Introduction + +This 'How to' is designed to help get you started editing content using the +[GitHub website](https://github.com/freesewing). + +GitHub stores a lot of Freesewing content, it allows anyone to suggest +edits, and helps the contributors to review and implement approved changes. + +If you are new to GitHub, you will need to [create an +account](https://github.com/signup?user_email=\&source=form-home-signup) +(they are free). + + +I is also possible to make changes using the GitHub desktop +application and/or your computer's command line; these advanced topics are +beyond the scope of this 'How to'. + + +All pattern instructions and web pages (including this 'How to') are written in +_Markdown_. Please see our [Markdown +guide](https://freesewing.dev/guides/markdown) for more information on this. + +For security, most contributors don't have permission to change the code. +Instead we must follow three steps to make edits: + +1. [_Fork_ (create a copy of) the repository](#fork-the-repository). This will + be your own copy and you can make all the changes you want. +2. [Make the edits](#make-the-edits). +3. [Save your edits and submit a _pull + request_](#save-your-edits-and-submit-a-pull-request) to let the admins know + about your changes. This says _"hey, I made some changes. I think you might + like them and consider them for inclusion into your (original) repository."_ + +The GitHub documentation provides a more [detailed +explanation](https://docs.github.com/en/get-started/quickstart/fork-a-repo), +but this guide should be enough to help you get started. + +## Fork the repository + +- On GitHub.com, navigate to the freesewing + [repository](https://github.com/freesewing/freesewing) +- In the top-right corner of the page, click **Fork** +![Fork button](fork_button.png) +- Click the **Create fork** button. +![Create fork button](fork-create-button.png) + +## Make the edits + +- Navigate to the folder containing the file that you want to edit. + +To help you understand how the repository is organised, here is the path to the +Simone instructions: +`freesewing/markdown/org/docs/patterns/simone/instructions` This folder +contains several files, one for each language. +![Path to Simone instructions](simone-instructions-path.png) + +- Select on the file you want to update. + + +Please only edit the English language files (called `en.md`), +our translation software will handle the other languages. + +- Click on the **Edit** button. +![edit button image](edit-button.png) + + +Clicking **Preview** will show what your changes will look like. + +![Edit and preview buttons](edit-preview-buttons.png) + + +## Save your edits and submit a pull request + +When you are happy with your edits: + +- Scroll to the bottom of the page and enter a brief description of your edits. + This will help us know what has changed. +- Click the **Commit changes** button. This is similar to saving a snapshot of + your edits. + ![Commit changes](commit-changes.png) + +Now you will create a _pull request_ to let the admins know your edits are +ready for review: + +- Navigate to the repository where you created your fork. +- Above the list of files, click the **Pull request** button. +![Pull request button](pull-request-button.png) + +Congratulations - you have just submitted your first edits to the site +maintainers! + +You can keep track of the progress of your changes in GitHub or in the +[github-updates +channel](https://discord.com/channels/698854858052075530/836689608820916234) on +our Discord server. +![github updates channel image](discord-github-updates.png) diff --git a/markdown/dev/howtos/git/editing-content-on-github/fork-create-button.png b/markdown/dev/howtos/git/editing-content-on-github/fork-create-button.png new file mode 100644 index 00000000000..7700a1d128e Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/fork-create-button.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/fork_button.png b/markdown/dev/howtos/git/editing-content-on-github/fork_button.png new file mode 100644 index 00000000000..2ddd5dd1326 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/fork_button.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/pull-request-button.png b/markdown/dev/howtos/git/editing-content-on-github/pull-request-button.png new file mode 100644 index 00000000000..a0725e86418 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/pull-request-button.png differ diff --git a/markdown/dev/howtos/git/editing-content-on-github/simone-instructions-path.png b/markdown/dev/howtos/git/editing-content-on-github/simone-instructions-path.png new file mode 100644 index 00000000000..75a31de26a9 Binary files /dev/null and b/markdown/dev/howtos/git/editing-content-on-github/simone-instructions-path.png differ diff --git a/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md b/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md index b2242a07ba5..b883597655f 100644 --- a/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md +++ b/markdown/dev/howtos/ways-to-contribute/showcase-our-patterns/en.md @@ -2,7 +2,76 @@ title: Showcase our patterns --- -Anytime somebody has made one of our patterns, we like to showcase it on [freesewing.org](https://freesewing.org/showcase/). +Anytime somebody has made one of our patterns, we like to Showcase it on [freesewing.org](https://freesewing.org/showcase/). -Unpublished showcases are tracked as [GitHub issues](https://guides.github.com/features/issues/). -Create an issue [in our monorepo](https://github.com/freesewing/freesewing/issues/new?assignees=\&labels=%F0%9F%91%8D+good+first+issue%2C+%F0%9F%93%B8+showcase%2C+%F0%9F%A4%97+community\&template=showcase-template.md\&title=Create+showcase+from+this+content) when you've made one of our patterns, or have come across pictures from another maker who did. +## How to get your pictures to us + +If you've got pictures, there's a few ways you can get them on the site: + +- [Instagram](#instagram) +- [Twitter](#tiwtter) +- [Facebook](#facebook) +- [Discord](#discrod) +- [Reddit](#reddit) +- [Github](#github) +- [Email](#email) + +### Instagram + +Post your pictures on Instagram, and tag or mention [@freesewing\_org](https://instagram.com/freesewing_org). + +### Twitter + +Post your pictures — or a link to them — on Twitter, and tag or mention [@freesewing\_org](https://twitter.com/freesewing_org). + +### Facebook + +Post your pictures — or a link to them — on Facebook, and tag or mention the [@FreeSewing](https://www.facebook.com/groups/627769821272714/) group. + +### Discord + +Post your pictures — or a link to them — in the `#pattern-showcase` channel [on our Discord](https://discord.freesewing.org). + +### Reddit + +Post your pictures — or a link to them — in [r/freesewing](https://www.reddit.com/r/freesewing). + +### Github + +Create an issue [on Github](https://github.com/freesewing/freesewing/issues/new?assignees=\&labels=%F0%9F%91%8D+good+first+issue%2C+%F0%9F%93%B8+showcase%2C+%F0%9F%A4%97+community\&template=4_showcase-template.md\&title=Create+showcase+from+this+content) and attach your pictures to it, or include a link to the pictures. + +### Email + +Email your pictures — or a link to them — to [showcase@freesewing.org](showcase@freesewing.org). + +## Tips for great pictures + +Below are just a few easy tips and tricks for your Showcase post. +Of course, any Showcase is infinitely better than nothing, so go ahead and send us those low-light mirror selfies - we love them. + +But if you want to take things to the next level, a few things to consider: + +### Show it all + +Show the whole garment. From multiple angles, if possible. +It's awesome to see garments from the front, but back and side views can be really helpful, too. +Bonus points for adding in a seated picture, which are especially great for sewists who use a wheelchair. + +### Embrace the light + +Take pictures in the best light you can — that might be next to a bright window, +in a room where you've turned on all the extra lamps you could find, +or that elusive "golden hour" outdoors. +Bonus points if you can make it bright enough to not need a flash. + +### Background + +A neutral background can be helpful for seeing details. +Try to avoid black on black or another setting that makes it hard to see what is what. + +And remember that the outdoors is often the best background. + +### Close-ups + +If you nailed that welt pocket or hand-stitched all your buttonholes, go ahead and show them off. +Close-up pictures make the showcase so much more relevant for people looking to make the same thing. diff --git a/markdown/dev/reference/api/config/en.md b/markdown/dev/reference/api/config/en.md index 2803f99d2d9..a7e1bbed0dc 100644 --- a/markdown/dev/reference/api/config/en.md +++ b/markdown/dev/reference/api/config/en.md @@ -35,4 +35,4 @@ const config = { } ``` -[aaron]: https://github.com/freesewing/freesewing/blob/develop/packages/aaron/config/index.js +[aaron]: https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/aaron/config/index.js diff --git a/markdown/dev/reference/api/config/options/list/en.md b/markdown/dev/reference/api/config/options/list/en.md index f8df338b7c8..c4a515a95ed 100644 --- a/markdown/dev/reference/api/config/options/list/en.md +++ b/markdown/dev/reference/api/config/options/list/en.md @@ -31,3 +31,46 @@ options: { } } ``` + +## Suppress translation + +In the example above, you want the different `list` options to be translated. +But sometimes, there is no need for that, like in this example from Breanna: + +```js +options: { + primaryBustDart: { + list: [ + '06:00', + '07:00', + '08:00', + '09:00', + '10:00', + '11:00', + '11:30', + '12:00', + '12:30', + '13:00', + '13:30', + '14:00', + '15:00', + '16:00', + '17:00', + ], + dflt: '06:00', + doNotTranslate: true, + }, + // More here +} +``` + +As you can see above, you can set the `doNotTranslate` property to `true` and to indicate this. + + + +##### This is not a core feature + +To be clear, setting this here does not do anything in core. It's merely extra +metadata you can add on the option to facilitate frontend integration. + + diff --git a/markdown/dev/reference/api/hooks/postsample/en.md b/markdown/dev/reference/api/hooks/postsample/en.md index 1aa13dad7df..f044640059e 100644 --- a/markdown/dev/reference/api/hooks/postsample/en.md +++ b/markdown/dev/reference/api/hooks/postsample/en.md @@ -7,9 +7,9 @@ Your plugin will receive the Pattern object. It is triggered just before the end of either: -- the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method -- the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method -- the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method +- the [Pattern.sampleOption()](/reference/api/pattern/sampleoption) method +- the [Pattern.sampleMeasurement()](/reference/api/pattern/samplemeasurement) method +- the [Pattern.sampleModels()](/reference/api/pattern/samplemodels) method diff --git a/markdown/dev/reference/api/hooks/presample/en.md b/markdown/dev/reference/api/hooks/presample/en.md index 8a79e060ea5..20806820400 100644 --- a/markdown/dev/reference/api/hooks/presample/en.md +++ b/markdown/dev/reference/api/hooks/presample/en.md @@ -6,9 +6,9 @@ The `preSample` hook runs just before your pattern is sampled. It is triggered at the very start of either: -- the [Pattern.sampleOption()](/reference/api/pattern/#sampleoption) method -- the [Pattern.sampleMeasurement()](/reference/api/pattern/#samplemeasurement) method -- the [Pattern.sampleModels()](/reference/api/pattern/#samplemodels) method +- the [Pattern.sampleOption()](/reference/api/pattern/sampleoption) method +- the [Pattern.sampleMeasurement()](/reference/api/pattern/samplemeasurement) method +- the [Pattern.sampleModels()](/reference/api/pattern/samplemodels) method Your plugin will receive the Pattern object. diff --git a/markdown/dev/reference/api/macros/cutonfold/en.md b/markdown/dev/reference/api/macros/cutonfold/en.md index f18b933b6a2..f97f6645730 100644 --- a/markdown/dev/reference/api/macros/cutonfold/en.md +++ b/markdown/dev/reference/api/macros/cutonfold/en.md @@ -33,3 +33,12 @@ Since this is typically used on corners, the generated cut-on-fold indicator will not go all the way to the `to` and `from` points. + +## Removing the cut on fold indicator + +If you inherit a part with a cut on fold indicator and you'd like to remove it, +you can do so by passing `false` to the macro: + +```js +macro('cutonfold', false) +``` diff --git a/markdown/dev/reference/api/macros/grainline/en.md b/markdown/dev/reference/api/macros/grainline/en.md index cd5e1d77070..50758fc7649 100644 --- a/markdown/dev/reference/api/macros/grainline/en.md +++ b/markdown/dev/reference/api/macros/grainline/en.md @@ -23,3 +23,12 @@ macro("grainline", { | `text` | 'grainline' | string | The text to put on the _grainline_ indicator | [1]: /reference/api/point + +## Removing the grainline indicator + +If you inherit a part with a grainline indicator and you'd like to remove it, +you can do so by passing `false` to the macro: + +```js +macro('grainline', false) +``` diff --git a/markdown/dev/reference/api/macros/miniscale/en.md b/markdown/dev/reference/api/macros/miniscale/en.md index 19b5cd82ae5..ad9f39536d9 100644 --- a/markdown/dev/reference/api/macros/miniscale/en.md +++ b/markdown/dev/reference/api/macros/miniscale/en.md @@ -22,3 +22,12 @@ macro('miniscale', { |-------------|---------|---------------------|-------------| | `at` | | [Point](/reference/api/point) | The point to anchor the _scale box_ on | | `rotate` | 0 | Number | Rotation in degrees | + +## Removing the miniscal + +If you inherit a part with a miniscale on it and you'd like to remove all points and paths +generated by the miniscale macro, you can do so by passing `false` to the macro: + +```js +macro('miniscale', false) +``` diff --git a/markdown/dev/reference/api/macros/scalebox/en.md b/markdown/dev/reference/api/macros/scalebox/en.md index 8aa60faee1e..f4383b1a1fa 100644 --- a/markdown/dev/reference/api/macros/scalebox/en.md +++ b/markdown/dev/reference/api/macros/scalebox/en.md @@ -26,3 +26,12 @@ macro('scalebox', { | `rotate` | 0 | Number | Rotation in degrees | (\*) `freesewingIsMadeByJoostDeCockAndContributors \n withTheFinancialSupportOfOurPatrons` + +## Removing the scalebox + +If you inherit a part with a scalebox on it and you'd like to remove all points and paths +generated by the scalebox macro, you can do so by passing `false` to the macro: + +```js +macro('scalebox', false) +``` diff --git a/markdown/dev/reference/api/part/addcut/en.md b/markdown/dev/reference/api/part/addcut/en.md new file mode 100644 index 00000000000..f3a94617831 --- /dev/null +++ b/markdown/dev/reference/api/part/addcut/en.md @@ -0,0 +1,59 @@ +--- +title: Part.addCut() +--- + +A part's `addCut()` method allows designers to specify how the part should be cut. +It can also be used to remove cutting information, as an alternative +to [Part.removeCut()](/reference/api/part/removecut). + +## Part.addCut() signature when adding cut information + +```js +Part.part.addCut(cut=2, material='fabric', identical=false) +``` + +In this form, this methiod takes three parameters: + +| Parameter | type | description | default | +| --------- | ---- | ----------- | ------- | +| `cut` | integer | The amount of times this part should be cut. | `2` | +| `material` | string | The name of the material, typically one of `fabric`, `lining`, `facing`, `interfacing`, `canvas`, or `various` | `fabric` | +| `identical` | boolean | Whether or not parts should be cut identical (true) or mirrored (false). Mirorred is often referred to as _good sides together_ | `false` | + +## Part.addCut() signature when removing cut information + +```js +Part.part.addCut(false, material='fabric') +``` + +In this form, this methiod takes two parameters: + +| Parameter | type | description | default | +| --------- | ---- | ----------- | ------- | +| `cut` | `boolean` | Pass `false` to remove the cut info for the material passed as the second parameter | `2` | +| `material` | string | The name of the material, typically one of `fabric`, `lining`, `facing`, `interfacing`, `canvas`, or `various` | `fabric` | + +## Part.addCut() example + +```js +export default function (part) { + + // Cut two from fabric with good sides together + part.addCut(2, 'fabric') + + // Cut seven from lining, identical + part.addCut(7, 'lining') + + // Remove the lining cut info (but keep the fabric info) + part.addCut(false, 'lining') + + // You would do more useful stuff before returning + return part +} +``` + + +The part's grain line and whether it should be cut on fold or not will be +set automatically when you call the [grainline](/reference/api/macros/grainline) or +[cutonfold](/reference/api/macros/cutonfold) macro. + diff --git a/markdown/dev/reference/api/part/en.md b/markdown/dev/reference/api/part/en.md index 60c5eb5c91e..9c630826ea0 100644 --- a/markdown/dev/reference/api/part/en.md +++ b/markdown/dev/reference/api/part/en.md @@ -11,6 +11,7 @@ and multiple parts together typically make up a pattern. | Property | Description | | --------:| ----------- | +| `attributes` | An [Attributes](/reference/api/attributes) instance holding the part's attributes | | `paths` | A plain object to store your paths in | | `points` | A plain object to store your points in | | `render` | A flag that controls whether to include the part in the render output | diff --git a/markdown/dev/reference/api/part/removecut/en.md b/markdown/dev/reference/api/part/removecut/en.md new file mode 100644 index 00000000000..201944f5995 --- /dev/null +++ b/markdown/dev/reference/api/part/removecut/en.md @@ -0,0 +1,58 @@ +--- +title: Part.removeCut() +--- + +A part's `removeCut()` method allows designers to remove cutting information +that was added through [Part.addCut()](/reference/api/part/addcut). + +## Part.addCut() signature when adding cut information + +```js +Part.part.addCut(cut=2, material='fabric', identical=false) +``` + +In this form, this methiod takes three parameters: + +| Parameter | type | description | default | +| --------- | ---- | ----------- | ------- | +| `cut` | integer | The amount of times this part should be cut. | `2` | +| `material` | string | The name of the material, typically one of `fabric`, `lining`, `facing`, `interfacing`, `canvas`, or `various` | `fabric` | +| `identical` | boolean | Whether or not parts should be cut identical (true) or mirrored (false). Mirorred is often referred to as _good sides together_ | `false` | + +## Part.addCut() signature when removing cut information + +```js +Part.part.addCut(false, material='fabric') +``` + +In this form, this methiod takes two parameters: + +| Parameter | type | description | default | +| --------- | ---- | ----------- | ------- | +| `cut` | `boolean` | Pass `false` to remove the cut info for the material passed as the second parameter | `2` | +| `material` | string | The name of the material, typically one of `fabric`, `lining`, `facing`, `interfacing`, `canvas`, or `various` | `fabric` | + +## Part.addCut() example + +```js +export default function (part) { + + // Cut two from fabric with good sides together + part.addCut(2, 'fabric') + + // Cut seven from lining, identical + part.addCut(7, 'lining') + + // Remove the lining cut info (but keep the fabric info) + part.addCut(false, 'lining') + + // You would do more useful stuff before returning + return part +} +``` + + +The part's grain line and whether it should be cut on fold or not will be +set automatically when you call the [grainline](/reference/api/macros/grainline) or +[cutonfold](/reference/api/macros/cutonfold) macro. + diff --git a/markdown/dev/reference/api/part/units/en.md b/markdown/dev/reference/api/part/units/en.md index 94c7f31c006..f4a94f1bfdb 100644 --- a/markdown/dev/reference/api/part/units/en.md +++ b/markdown/dev/reference/api/part/units/en.md @@ -11,7 +11,7 @@ a string that includes the user's units. ###### This method is available as shorthand -You can access this units method from the [Part.shorthand](#shorthand) method: +You can access this units method from the [Part.shorthand](/reference/api/part/shorthand) method: ```js let { units } = part.shorthand(); diff --git a/markdown/dev/reference/api/path/noop/en.md b/markdown/dev/reference/api/path/noop/en.md index 43cebbcc421..88fad6961ff 100644 --- a/markdown/dev/reference/api/path/noop/en.md +++ b/markdown/dev/reference/api/path/noop/en.md @@ -8,7 +8,7 @@ Path path.noop(string id) Adds a placeholder path operation. -A `noop` operation does nothing, but is intended to be replaced later +A `noop` operation does nothing, but is intended to be replaced later with [`Path.insop()`](/reference/api/path/insop). This is often used to insert darts into a path diff --git a/markdown/dev/reference/api/path/trim/en.md b/markdown/dev/reference/api/path/trim/en.md index b734767e864..495a67047a7 100644 --- a/markdown/dev/reference/api/path/trim/en.md +++ b/markdown/dev/reference/api/path/trim/en.md @@ -8,7 +8,7 @@ Path path.trim() Returns a new Path that is this path with overlapping parts removed. -This method is typically used when [Path.offset()](#offset) caused some overlap. +This method is typically used when [Path.offset()](/reference/api/path/offset) caused some overlap. @@ -24,7 +24,7 @@ To limit the impact of path.trim(), follow this approach: - now join it to the rest of your path You can see an example of this -[in the front part of the Bruce pattern](https://github.com/freesewing/freesewing/blob/develop/packages/bruce/src/front.js#L195). +[in the front part of the Bruce pattern](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/bruce/src/front.js#L158). diff --git a/markdown/dev/reference/api/pattern/getcutlist/en.md b/markdown/dev/reference/api/pattern/getcutlist/en.md new file mode 100644 index 00000000000..4dddc3d8083 --- /dev/null +++ b/markdown/dev/reference/api/pattern/getcutlist/en.md @@ -0,0 +1,47 @@ +--- +title: Pattern.getCutList() +--- + +This method will return the cut list, which means the `cut` property of +all parts that were included in the most recent call to `Pattern.draft()`. + +This relies on the pattern designers properly setting the cut property +in each part. + +This method is chainable as it returns the Pattern object + +## Pattern.getCutList() signature + +```js +Object pattern.getCutList() +``` + +## Pattern.getCutList() example + +```js +import Aaron from "@freesewing/aaron" +import models from "@freesewing/models" + +const pattern = new Aaron({ + settings: { + embed: true, + }, + measurements: models.manSize38 +}) + +const cutList = pattern.draft().getCutList() +``` +## Cut list format + +The object returned by `Pattern.getCutList()` is a plain object +with a property for each part that will be included in the pattern's output. + +The value of these properties is the `cut` property of the part in question. + + +Refer to [part.addCut()](/reference/api/part/addcut) for details on the +format of a part's `cut` property + + + + diff --git a/markdown/dev/reference/api/point/clone/en.md b/markdown/dev/reference/api/point/clone/en.md index 07a68e362f6..91cec6088b8 100644 --- a/markdown/dev/reference/api/point/clone/en.md +++ b/markdown/dev/reference/api/point/clone/en.md @@ -14,7 +14,7 @@ Point point.clone() ###### Copy vs clone -The [`Point.copy()`](reference/api/point/copy/) method will only copy the point's coordinates, whereas this +The [`Point.copy()`](/reference/api/point/copy/) method will only copy the point's coordinates, whereas this `Point.clone()` method will also copy its attributes. diff --git a/markdown/dev/reference/api/point/copy/en.md b/markdown/dev/reference/api/point/copy/en.md index 7b78485ab29..41f80e76887 100644 --- a/markdown/dev/reference/api/point/copy/en.md +++ b/markdown/dev/reference/api/point/copy/en.md @@ -16,7 +16,7 @@ Point point.copy() ###### Copy vs clone this `Point.copy()` method will only copy the point's coordinates. -To also copy the attributes, use [`Point.clone()`](reference/api/point/clone/) instead. +To also copy the attributes, use [`Point.clone()`](/reference/api/point/clone/) instead. diff --git a/markdown/dev/reference/api/point/rotate/en.md b/markdown/dev/reference/api/point/rotate/en.md index 74e3632275a..bf4e8b6a949 100644 --- a/markdown/dev/reference/api/point/rotate/en.md +++ b/markdown/dev/reference/api/point/rotate/en.md @@ -5,7 +5,7 @@ title: Point.rotate() A point's `rotate()` method returns a new `Point` that has been rotated by `angle` degrees around the point (`center`) that you pass it. -Just like the result of the [`Point.angle()`](reference/api/point/angle/) method, an angle of 0° points right, and the angle increases counterclockwise. +Just like the result of the [`Point.angle()`](/reference/api/point/angle/) method, an angle of 0° points right, and the angle increases counterclockwise. ## Point.rotate() signature diff --git a/markdown/dev/reference/api/point/shiftfractiontowards/en.md b/markdown/dev/reference/api/point/shiftfractiontowards/en.md index 8dd4d589682..1471e0c576e 100644 --- a/markdown/dev/reference/api/point/shiftfractiontowards/en.md +++ b/markdown/dev/reference/api/point/shiftfractiontowards/en.md @@ -8,7 +8,7 @@ point and the target. This method accepts values larger than 1 to go beyond the target point, or negative values to shift the point in the opposite direction. -If you need to move a point by a specific distance instead of a percentage, use [`Point.shiftTowards()`](\(reference/api/point/shifttowards/\)) or [`Point.shiftOutwards()`](reference/api/point/shiftoutwards/) instead. +If you need to move a point by a specific distance instead of a percentage, use [`Point.shiftTowards()`](/reference/api/point/shifttowards/) or [`Point.shiftOutwards()`](/reference/api/point/shiftoutwards/) instead. ## Point.shiftFractionTowards() signature diff --git a/markdown/dev/reference/api/point/shifttowards/en.md b/markdown/dev/reference/api/point/shifttowards/en.md index 45f8918968f..ea754789e1d 100644 --- a/markdown/dev/reference/api/point/shifttowards/en.md +++ b/markdown/dev/reference/api/point/shifttowards/en.md @@ -4,7 +4,7 @@ title: Point.shiftTowards() Returns a new `Point` that is shifted `distance` (mm) in the direction of the `target`. -If you need to move a point a percentage instead of a specific distance, use [`Point.shiftFractionTowards()`](reference/api/point/shiftfractiontowards/) instead. +If you need to move a point a percentage instead of a specific distance, use [`Point.shiftFractionTowards()`](/reference/api/point/shiftfractiontowards/) instead. ## Point.shiftTowards() signature diff --git a/markdown/dev/reference/api/settings/sa/en.md b/markdown/dev/reference/api/settings/sa/en.md index 326ae2ce136..29e6ef73a9e 100644 --- a/markdown/dev/reference/api/settings/sa/en.md +++ b/markdown/dev/reference/api/settings/sa/en.md @@ -15,7 +15,7 @@ const pattern = new Brian({ -This is ignored if [settings.complete](#complete) is `false` +This is ignored if [settings.complete](/reference/api/settings/complete) is `false` Is it though? diff --git a/markdown/dev/reference/api/snippet/attr/en.md b/markdown/dev/reference/api/snippet/attr/en.md index 0b0f0856a18..192990d2e73 100644 --- a/markdown/dev/reference/api/snippet/attr/en.md +++ b/markdown/dev/reference/api/snippet/attr/en.md @@ -10,10 +10,10 @@ Snippet snippet.attr( ) ``` -This `Snippet.attr()` method calls [`Attributes.add()`](./attributes#add) under the hood, +This `Snippet.attr()` method calls [`Attributes.add()`](/reference/api/attributes/add) under the hood, but returns the Snippet object. This allows you to chain different calls together. -If the third parameter is set to `true` it will call [`Attributes.set()`](./attributes#set) instead, +If the third parameter is set to `true` it will call [`Attributes.set()`](/reference/api/attributes/set) instead, thereby overwriting the value of the attribute. diff --git a/markdown/dev/reference/api/snippet/en.md b/markdown/dev/reference/api/snippet/en.md index e86ecce3dcd..1a3d9194a89 100644 --- a/markdown/dev/reference/api/snippet/en.md +++ b/markdown/dev/reference/api/snippet/en.md @@ -9,7 +9,7 @@ SVG `defs` section, and rendered with the SVG `use` tag. The snippet constructor takes two arguments: - `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section -- `anchor` : A [`Point`](#point) on which to anchor the snippet +- `anchor` : A [`Point`](/reference/api/point) on which to anchor the snippet ```js Snippet new Snippet(def, Point); @@ -18,8 +18,8 @@ Snippet new Snippet(def, Point); A Snippet object comes with the following properties: - `def` : The `xlink:href` id that links to the relevant entry in the SVG `defs` section -- `anchor` : A [`Point`](../point) on which to anchor the snippet -- `attributes` : An [`Attributes`](../attributes) instance holding the snippet's attributes +- `anchor` : A [`Point`](/reference/api/point) on which to anchor the snippet +- `attributes` : An [`Attributes`](/reference/api/attributes) instance holding the snippet's attributes In addition, a Snippet object exposes the following methods: diff --git a/markdown/dev/reference/api/snippets/bnotch/en.md b/markdown/dev/reference/api/snippets/bnotch/en.md index 9aba63594dd..9f7d7d290dd 100644 --- a/markdown/dev/reference/api/snippets/bnotch/en.md +++ b/markdown/dev/reference/api/snippets/bnotch/en.md @@ -5,7 +5,7 @@ title: bnotch The `bnotch` snippet is intended for notches at the back, or when you need an alternative to the default `notch`. -It is provided by [plugin-theme](/reference/plugins/theme/). +It is provided by [plugin-notches](/reference/plugins/notches/). ```js snippets.demo = new Snippet('bnotch', points.anchor) diff --git a/markdown/dev/reference/api/snippets/notch/en.md b/markdown/dev/reference/api/snippets/notch/en.md index e481d6ce9cb..f47aaa70274 100644 --- a/markdown/dev/reference/api/snippets/notch/en.md +++ b/markdown/dev/reference/api/snippets/notch/en.md @@ -3,7 +3,7 @@ title: notch --- The `notch` snippet is intended for notches and is -provided by [plugin-theme](/reference/plugins/theme/). +provided by [plugin-notches](/reference/plugins/notches/). ```js snippets.demo = new Snippet('bnotch', points.anchor) diff --git a/markdown/dev/reference/api/utils/beamintersectsx/en.md b/markdown/dev/reference/api/utils/beamintersectsx/en.md index 74984909dcb..83975c6d11f 100644 --- a/markdown/dev/reference/api/utils/beamintersectsx/en.md +++ b/markdown/dev/reference/api/utils/beamintersectsx/en.md @@ -6,7 +6,7 @@ title: beamIntersectsX() Point | false utils.beamIntersectsX(Point A, Point B, float X) ``` -Finds the intersection between an endless line and a given X-value. Returns a [Point](#point) object +Finds the intersection between an endless line and a given X-value. Returns a [Point](/reference/api/point) object for the intersection, or `false` there is no intersection. diff --git a/markdown/dev/reference/api/utils/beamintersectsy/en.md b/markdown/dev/reference/api/utils/beamintersectsy/en.md index f043898d58f..492a583ef38 100644 --- a/markdown/dev/reference/api/utils/beamintersectsy/en.md +++ b/markdown/dev/reference/api/utils/beamintersectsy/en.md @@ -6,7 +6,7 @@ title: beamIntersectsY() Point | false utils.beamIntersectsY(Point A, Point B, float Y) ``` -Finds the intersection between an endless line and a given Y-value. Returns a [Point](#point) object +Finds the intersection between an endless line and a given Y-value. Returns a [Point](/reference/api/point) object for the intersection, or `false` there is no intersection. diff --git a/markdown/dev/reference/api/utils/beamsintersect/en.md b/markdown/dev/reference/api/utils/beamsintersect/en.md index fc5ae94e26f..14613cb09c1 100644 --- a/markdown/dev/reference/api/utils/beamsintersect/en.md +++ b/markdown/dev/reference/api/utils/beamsintersect/en.md @@ -11,7 +11,7 @@ Point | false utils.beamsIntersect( ) ``` -Finds the intersection between two endless lines (beams). Returns a [Point](#point) object +Finds the intersection between two endless lines (beams). Returns a [Point](/reference/api/point) object for the intersection, or `false` if the lines don't intersect. diff --git a/markdown/dev/reference/api/utils/curveintersectsx/en.md b/markdown/dev/reference/api/utils/curveintersectsx/en.md index 53243bf4ca8..13606058c27 100644 --- a/markdown/dev/reference/api/utils/curveintersectsx/en.md +++ b/markdown/dev/reference/api/utils/curveintersectsx/en.md @@ -14,7 +14,7 @@ array | Point | false utils.curveIntersectsX( Finds the point(s) where a curve intersects a given X-value. This is a low-level variant -of [`Path.intersectsX()`](/reference/api/path/#pathintersectsx). +of [`Path.intersectsX()`](/reference/api/path/intersectsx). Instead of a path, you describe a single curve by passing the four points that describes it. diff --git a/markdown/dev/reference/api/utils/curveintersectsy/en.md b/markdown/dev/reference/api/utils/curveintersectsy/en.md index c7cd56d611a..514aca92b0d 100644 --- a/markdown/dev/reference/api/utils/curveintersectsy/en.md +++ b/markdown/dev/reference/api/utils/curveintersectsy/en.md @@ -14,7 +14,7 @@ array | Point | false utils.curveIntersectsY( Finds the point(s) where a curve intersects a given Y-value. This is a low-level variant -of [`Path.intersectsY()`](/reference/api/path/#pathintersectsy). +of [`Path.intersectsY()`](/reference/api/path/intersectsy). Instead of a path, you describe a single curve by passing the four points that describes it. diff --git a/markdown/dev/reference/api/utils/linesintersect/en.md b/markdown/dev/reference/api/utils/linesintersect/en.md index 23d69a03b5d..6a8c75a3e17 100644 --- a/markdown/dev/reference/api/utils/linesintersect/en.md +++ b/markdown/dev/reference/api/utils/linesintersect/en.md @@ -11,7 +11,7 @@ Point | false utils.linesIntersect( ) ``` -Finds the intersection between two line segments. Returns a [Point](#point) object +Finds the intersection between two line segments. Returns a [Point](../point) object for the intersection, or `false` if the lines don't intersect. diff --git a/markdown/dev/reference/api/utils/pointonline/en.md b/markdown/dev/reference/api/utils/pointonline/en.md index 65fe13547ff..66de7dd3739 100644 --- a/markdown/dev/reference/api/utils/pointonline/en.md +++ b/markdown/dev/reference/api/utils/pointonline/en.md @@ -13,7 +13,7 @@ bool utils.pointOnLine( Returns `true` if the point `check` lies on a line segment from point `from` to point `to`. -The fourth parameter controls the precision. See [pointOnBeam](#utilspointonbeam). +The fourth parameter controls the precision. See [pointOnBeam](/reference/api/utils/pointonbeam). A Utils.pointOnLine() example diff --git a/markdown/dev/reference/plugins/banner/en.md b/markdown/dev/reference/plugins/banner/en.md index ef6d1b65bf7..dad2f2f36cf 100644 --- a/markdown/dev/reference/plugins/banner/en.md +++ b/markdown/dev/reference/plugins/banner/en.md @@ -10,6 +10,12 @@ This macro allows you to add repeating text along a path. Example of the banner macro provided by this plugin + + +The banner plugin is part of our [plugin-bundle](/reference/plugins/bundle) + + + ## Installation ```sh diff --git a/markdown/dev/reference/plugins/bartack/en.md b/markdown/dev/reference/plugins/bartack/en.md index 94da11bca86..736eb8effae 100644 --- a/markdown/dev/reference/plugins/bartack/en.md +++ b/markdown/dev/reference/plugins/bartack/en.md @@ -11,6 +11,12 @@ tight zig-zag stitches used to enforce a seam — to your design. Example of the bartack macro provided by this plugin + + +The bartack plugin is part of our [plugin-bundle](/reference/plugins/bundle) + + + ## Installation ```sh diff --git a/markdown/dev/reference/plugins/bundle/en.md b/markdown/dev/reference/plugins/bundle/en.md index 1568c609c72..d2767f10264 100644 --- a/markdown/dev/reference/plugins/bundle/en.md +++ b/markdown/dev/reference/plugins/bundle/en.md @@ -4,14 +4,20 @@ title: "@freesewing/plugin-bundle" The **@freesewing/plugin-bundle** plugin bundles the most common FreeSewing build-time plugins: +- [plugin-banner](/reference/plugins/banner) : Add repeating text to your patterns +- [plugin-bartack](/reference/plugins/bartack) : Add bartacks to your patterns +- [plugin-buttons](/reference/plugins/buttons) : Add buttons, buttonholes, and snaps to your patterns - [plugin-cutonfold](/reference/plugins/cutonfold) : Add cut-on-fold indicators to your patterns - [plugin-dimension](/reference/plugins/dimension) : Add dimensions to your (paperless) patterns - [plugin-grainline](/reference/plugins/grainline) : Add grainline indicators to your patterns -- [plugin-logo](/reference/plugins/logo) : Add a scalebox to your patterns -- [plugin-scalebox](/reference/plugins/scalebox) : Add pretty titles to your pattern parts +- [plugin-logo](/reference/plugins/logo) : Add a FreeSewing logo to your patterns +- [plugin-measurements](/reference/plugins/measurements) : Make extra, calculated measurements available to your patterns +- [plugin-mirror](/reference/plugins/mirror) : Mirror points and paths in your patterns +- [plugin-notches](/reference/plugins/notches) : Add notches to your patterns +- [plugin-scalebox](/reference/plugins/scalebox) : Add scaleboxes to your pattern parts +- [plugin-round](/reference/plugins/round) : Create rounded corners in your patterns +- [plugin-sprinkle](/reference/plugins/sprinkle) : Add multiple snippets to your patterns - [plugin-title](/reference/plugins/title) : Add pretty titles to your pattern parts -- [plugin-round](/reference/plugins/round) : Rounds corners -- [plugin-sprinkle](/reference/plugins/sprinkle) : Add multiple snippets to your pattern Almost all patterns use these plugins, so it made sense to bundle them. diff --git a/markdown/dev/reference/plugins/bust/en.md b/markdown/dev/reference/plugins/bust/en.md index 101760c5d2d..663a20a2d42 100644 --- a/markdown/dev/reference/plugins/bust/en.md +++ b/markdown/dev/reference/plugins/bust/en.md @@ -77,8 +77,8 @@ import config from "../config"; const Pattern = new freesewing.Design(config, bust); ``` -[1]: https://github.com/freesewing/freesewing/blob/develop/packages/carlita/src/index.js#L12 +[1]: https://github.com/freesewing/freesewing/blob/develop/designs/carlita/src/index.js#L12 -[2]: https://github.com/freesewing/freesewing/blob/develop/packages/carlton +[2]: https://github.com/freesewing/freesewing/blob/develop/designs/carlton -[3]: https://github.com/freesewing/freesewing/blob/develop/packages/teagan/src/index.js +[3]: https://github.com/freesewing/freesewing/blob/develop/designs/teagan/src/index.js diff --git a/markdown/dev/reference/plugins/measurements/en.md b/markdown/dev/reference/plugins/measurements/en.md index b180d5603f2..71edab00a81 100644 --- a/markdown/dev/reference/plugins/measurements/en.md +++ b/markdown/dev/reference/plugins/measurements/en.md @@ -17,6 +17,12 @@ It will add the following measurements: - `waistFrontArc` (if both `waist` and `waistBack` are provided) - `crossSeamBack` (if both `crossSeam` and `crossSeamFront` are available) + + +The measurements plugin is part of our [plugin-bundle](/reference/plugins/bundle) + + + ## Installation ```sh diff --git a/markdown/dev/reference/plugins/mirror/en.md b/markdown/dev/reference/plugins/mirror/en.md index 5f0793a1d79..70a2fd556de 100644 --- a/markdown/dev/reference/plugins/mirror/en.md +++ b/markdown/dev/reference/plugins/mirror/en.md @@ -8,6 +8,12 @@ a number of points and/or paths around a given mirror line. Example of the mirror plugin + + +The mirror plugin is part of our [plugin-bundle](/reference/plugins/bundle) + + + ## Installation ```bash diff --git a/markdown/dev/reference/plugins/title/en.md b/markdown/dev/reference/plugins/title/en.md index a6ea84c5c96..1826f518d32 100644 --- a/markdown/dev/reference/plugins/title/en.md +++ b/markdown/dev/reference/plugins/title/en.md @@ -4,7 +4,7 @@ title: "@freesewing/plugin-title" The **@freesewing/plugin-title** plugin provides [the title macro](/reference/api/macros/title/) which facilitates adding part titles -to your desings. +to your designs. An example of the title macro diff --git a/markdown/dev/reference/terms/freesewing.org/en.md b/markdown/dev/reference/terms/freesewing.org/en.md index 4c31cae2bea..584e96c4e3f 100644 --- a/markdown/dev/reference/terms/freesewing.org/en.md +++ b/markdown/dev/reference/terms/freesewing.org/en.md @@ -4,104 +4,3 @@ title: freesewing.org Our website for makers. -## FreeSewing.dev - -Our website for developers. - -## Frontend - -A user-facing interface. Can refer to one of our websites, or our development environment. - -## Gatsby - -A static-site generator using React. Both freesewing.org and freesewing.dev are -built with Gatsby. - -## i18n - -Short of _internationalisation_. within the context of FreeSewing, this mostly -means translation, but can also relate to other intenationalisation concerns such -as the type of units to use, or paper sizes, and so on. - -## Issue - -An issue is a sort of support ticket. It can be a bug report, a feature request, a question -or problem report. - -Issues are hosted on Github. Each repository can have its own issues, but most our -issue are handled on our monorepo: https://github.com/freesewing/freesewing/issues b - -## Javascript - -The programming language in which FreeSewing is written. It can run in your -browser, as well as outside of it with Node JS. - -## Made-to-measure - -Made to someone's (body) measurements, rather than based on specific sizes. - -## Markdown - -A plain text markup format that is easy to read for computers and humans alike. -It's a way to write things in plain text, yet make them look pretty in HTML. - -All our content is written in markdown. Github issues, commit messages, and comments -also all support markdown. - -## Monorepo - -A monorepo is an organisational approach to software development where rather than -having a multitude of repositories, a number of different software pieces are bundled -together in a single repository. - -FreeSewing's monorepo holds all our Javascript packages in such a structure. - -## Node - -Node (or Node JS) is a Javascript runtime that allows to use the language outside the browser. - -## Parametric pattern design - -A design approach whereby sewing patterns are contructed based on parameters, -and can adapt automatically when those parameters change. - -Those parameters almost always include body measurements, and user preferences. - -## Patron - -A person who supports FreeSewing financially. - -## Plugin - -An extension to FreeSewing core that provides an extra feature of functionality. - -## Pull request - -A pull request is a proposal to commit changes to a repository. - -Pull requests can either be made because the person does not have the rights to make -changes to the repository directly. Or to discuss or validate the changes prior to -accepting them. - -## React - -A Javascript framework to build user interfaces on the web. - -All our frontends are build with React. - -## Repository - -We develop our software collaboratively, and all code is available in Github in so-called repositories. - -One repository bundles a bunch of things that belong together. Think of it as a project. - -## Tiler - -The FreeSewing tiler is responsible for taking a pattern and splitting it into different -pages so it can be printed. - -The tiler is a backend service that is independent from the main FreeSewing backend. - -## Translator - -Somebody who helps with our i18n efforts by translating from Enlish to other languages. diff --git a/markdown/dev/tutorials/getting-started-gitpod/en.md b/markdown/dev/tutorials/getting-started-gitpod/en.md new file mode 100644 index 00000000000..81af807b0c9 --- /dev/null +++ b/markdown/dev/tutorials/getting-started-gitpod/en.md @@ -0,0 +1,16 @@ +--- +title: Getting started with GitPod +order: 10 +--- + +If you don't want to set up a dev environment, or just want to kick the +tires like, right now, you can run our development environment in your browser via Gitpod: + +https://gitpod.io/#https://github.com/freesewing/freesewing + + +We recommend that you fork our repository so you can push changes to the repository. +To do so, simple adapt the URL above as follows: + +https://gitpod.io/#url-to-your-fork + diff --git a/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md b/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md deleted file mode 100644 index e193e20925c..00000000000 --- a/markdown/dev/tutorials/getting-started-linux/create-freesewing-pattern/en.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Setting up the FreeSewing development environment -order: 40 ---- - -FreeSewing provides a development environment to help you design and develop patterns. - -With Node installed, all you need to do to setup this development environment is run this command: - -```bash -npx create-freesewing-pattern -``` - -It will take a moment to download some dependencies, and then will ask you the following questions. - -You can change all of these later. It's just to get you started. -If you're not sure what to fill in, you can stick with the defaults or leave them blank. -Only a few of these are mandatory. - -- **Language**: Use the arrow keys to chose the language of your choice -- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. -- **description**: A description of your pattern. It's not mandatory. -- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick -- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. -- **Author**: You can enter your name, or leave this blank for now -- **GitHub repository**: You can leave this blank for now -- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. - -When you've answered all questions, the command will download the development enviroment, -and set it up based on the choices you made. - -This step will take anywhere from a few to about 10 minutes to complete. -But when it's done, you will have a new folder with the development environent inside. diff --git a/markdown/dev/tutorials/getting-started-linux/dev-setup/en.md b/markdown/dev/tutorials/getting-started-linux/dev-setup/en.md new file mode 100644 index 00000000000..567bbb0d1b8 --- /dev/null +++ b/markdown/dev/tutorials/getting-started-linux/dev-setup/en.md @@ -0,0 +1,118 @@ +--- +title: Setting up the FreeSewing development environment +order: 40 +--- + +FreeSewing provides a development environment to help you design and develop patterns. + +There are two ways to run this development environment: + +- [**Monorepo development**](#monorepo-development): Use this if you intend to contribute your work to FreeSewing +- [**Stand-alone development**](#stand-alone-development): Use this if you want to do your own thing, and not contribute to FreeSewing + +## Monorepo development + +This is the recommended way for (aspiring) FreeSewing contributors + +### TL;DR + +```bash +git clone https://github.com/freesewing/freesewing +cd freesewing +yarn kickstart +``` + + +Even better: [clone your own fork](https://github.com/freesewing/freesewing/fork) + +```bash +git clone https://github.com/your-username/freesewing +cd freesewing +yarn kickstart +``` + + + +### Step by step + + +These docs assume you have git installed. +But if you're running Linux, you have git, right? + + +#### Install yarn + +Our repository uses yarn workspaces. So you'll need yarn to work with it. + +To install it run: + +```bash +npm install yarn --global +``` + +#### Fork our repository + +You'll want to fork our repository. This way you have your own copy where you can make +all the changes you want. To do so, visit https://github.com/freesewing/freesewing/fork + +#### Clone the forked repository + +Now that you have your very own fork, time to clone it locally. + +```bash +git clone +``` + +Make sure to use the URL to your own fork, typically `https://github.com/your-username/freesewing` but +obviously with your real username rather than `your-username`. + +#### Install dependencies + +Enter the directory that was created, and run the `yarn kickstart` command: + +```bash +cd freesewing +yarn kickstart +``` + +Now you're ready to [start the development environment](/tutorials/getting-started-linux/dev-start). + +## Stand-alone development + +With NodeJS installed, all you need to do to setup the stand-alone development environment is run this command: + +```bash +npx @freesewing/new-design +``` + +After you've answered [some questions](#questions), it will take a while to set everything up. +When it's done, you will have a new folder with the development environment inside. + +Now you're ready to [start the development environment](/tutorials/getting-started-linux/dev-start). + +The folder will have the name you chose above. + + +### Questions + +#### What template to use + +Use `From scratch` unless you want to start from our of our blocks: + +- Use `Extend Brian` to start from [Brian](https://freesewing.org/designs/brian) +- Use `Extend Bent` to start from [Bent](https://freesewing.org/designs/bent) +- Use `Extend Bella` to start from [Bella](https://freesewing.org/designs/bella) +- Use `Extend Breanna` to start from [Breanna](https://freesewing.org/designs/breanna) +- Use `Extend Titan` to start from [Titan](https://freesewing.org/designs/titan) + +#### What name to use + +This will become the name of your design. Stick to \[a-z] here to avoid problems. + +If you're not certain what to pick, just mash some keys, it doesn't matter. + +#### What package manager to use + +Chose `npm` if you don't have `yarn` are when you're not sure what the heck `yarn` is. + + diff --git a/markdown/dev/tutorials/getting-started-linux/dev-start/en.md b/markdown/dev/tutorials/getting-started-linux/dev-start/en.md new file mode 100644 index 00000000000..a7db8ebfdd3 --- /dev/null +++ b/markdown/dev/tutorials/getting-started-linux/dev-start/en.md @@ -0,0 +1,62 @@ +--- +title: Start the development environment +order: 50 +--- + +FreeSewing provides a development environment to help you design and develop patterns. + +There are two ways to run this development environment: + +- [**Monorepo development**](#monorepo-development): Use this if you intend to contribute your work to FreeSewing +- [**Stand-alone development**](#stand-alone-development): Use this if you want to do your own thing, and not contribute to FreeSewing + +## Monorepo development + +Run `yarn lab` to start the development environment: + +```bash +yarn lab +``` + +Then point your browser to http://localhost:8000 + + +### Adding a new design +This is all you need to work on existing designs. If you'd like to add a new design, run: + +```bash +yarn new design +``` + +Just make sure to re-start the lab afterwards with `yarn lab` + + +## Standalone development + +You will have a new folder that has the name you picked for your design. +If you chose `test`, you will have a folder named `test`. +If you chose `banana`, you'll have a folder named `banana`. +(Within this new folder, the `design` subfolder holds your design's configuration file and source code. +You can ignore all other subfolders and files; they are part of the development environment.) + +To start the development environment, enter the folder that was created +and run `npm run dev` (or `yarn dev` if you're using Yarn as a package manager). + +Then open your browser and go to http://localhost:8000 + + +The development environment will watch for any changes you make to +the pattern's source code or configuration. +When you do, it will update automatically in your browser. + + + + +##### Yay, you're done! + +All you have to do now is design your pattern. +Thankfully, we have a tutorial for that too: + +- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern + + diff --git a/markdown/dev/tutorials/getting-started-linux/en.md b/markdown/dev/tutorials/getting-started-linux/en.md index c63451861b6..bf407a492e5 100644 --- a/markdown/dev/tutorials/getting-started-linux/en.md +++ b/markdown/dev/tutorials/getting-started-linux/en.md @@ -1,6 +1,6 @@ --- title: Getting started on Linux -order: 10 +order: 15 for: developers icons: - start diff --git a/markdown/dev/tutorials/getting-started-linux/installing-node/en.md b/markdown/dev/tutorials/getting-started-linux/installing-node/en.md index ce534734aac..6291b18e56a 100644 --- a/markdown/dev/tutorials/getting-started-linux/installing-node/en.md +++ b/markdown/dev/tutorials/getting-started-linux/installing-node/en.md @@ -6,9 +6,14 @@ order: 20 Now we will use nvm to install Node JS. Run the following command: ```bash -nvm install lts/* +nvm install lts/fermium ``` -This will install the most recent so-called LTS version on your system. +This will install the so-called LTS version of Node 14 on your system. + LTS versions -- short for Long Term Support -- are good node versions to use because they are stable and supported for a long time. + + +Node 14 is required to use our monorepo [until we upgrade Strapi](https://github.com/freesewing/freesewing/issues/2351). + diff --git a/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md b/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md index c165fc93aad..a4b7f848216 100644 --- a/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md +++ b/markdown/dev/tutorials/getting-started-linux/installing-nvm/en.md @@ -14,16 +14,19 @@ the node.js website, or from a package provided by your linux distribution: - You can easily switch between different Node versions - Everything gets installed in your home folder, avoiding permission problems -To setup nvm, run the following command in a terminal: +To setup nvm, [follow the install instructions in the nvm +README](https://github.com/nvm-sh/nvm#installing-and-updating). + +The TL;DR: is to run the following command in a terminal: ```bash -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` If you don't have `curl` on your system, here's an alternative approach using `wget`: ```bash -wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash +wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash ``` After the script is completed, try running the following command: diff --git a/markdown/dev/tutorials/getting-started-linux/node-versions/en.md b/markdown/dev/tutorials/getting-started-linux/node-versions/en.md index 340fa616b2d..c6f8ee4db3b 100644 --- a/markdown/dev/tutorials/getting-started-linux/node-versions/en.md +++ b/markdown/dev/tutorials/getting-started-linux/node-versions/en.md @@ -52,3 +52,7 @@ nvm use v10.22.1 If you picked a version that is not installed, `nvm` will simply tell you and even suggest the command you should type to install it. Handy! + + +Node 14 is required to use our monorepo [until we upgrade Strapi](https://github.com/freesewing/freesewing/issues/2351). + diff --git a/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md b/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md deleted file mode 100644 index 1f114d8fa8b..00000000000 --- a/markdown/dev/tutorials/getting-started-linux/start-development-environment/en.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Start the development environment -order: 50 ---- - -You will have a new folder that has the name you picked for your pattern. -If you chose `test`, you will have a `test` folder. If you chose `banana`, you'll have a `banana` folder. - -If you enter that folder, you'll find a couple of subfolders: - -- `config` holds your pattern's configuration file -- `src` holds your pattern's source code -- `example` holds the development environment - -To start the development environment, enter the `example` folder and run: `npm run start` (or `yarn start` if you're using Yarn as a package manager. - -The development environment will watch for any changes you make to -the pattern's source code. When you do, it will update automatically in your browser. - - - -##### Yay, you're done! - -All you have to do now, is design your pattern. -Thankfully, we have a tutorial for that too: - -- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern - - diff --git a/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md b/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md deleted file mode 100644 index 5b43c976d1f..00000000000 --- a/markdown/dev/tutorials/getting-started-mac/create-freesewing-pattern/en.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Setting up the FreeSewing development environment -order: 50 ---- - -FreeSewing provides a development environment to help you design and develop patterns. - -With Node installed, all you need to do to setup this development environment is run this command: - -```bash -npx create-freesewing-pattern -``` - -It will take a moment to download some dependencies, and then will ask you the following questions. - -You can change all of these later. It's just to get you started. -If you're not sure what to fill in, you can stick with the defaults or leave them blank. -Only a few of these are mandatory. - -- **Language**: Use the arrow keys to chose the language of your choice -- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. -- **description**: A description of your pattern. It's not mandatory. -- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick -- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. -- **Author**: You can enter your name, or leave this blank for now -- **GitHub repository**: You can leave this blank for now -- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. - -When you've answered all questions, the command will download the development enviroment, -and set it up based on the choices you made. - -This step will take anywhere from a few to about 10 minutes to complete. -But when it's done, you will have a new folder with the development environent inside. diff --git a/markdown/dev/tutorials/getting-started-mac/dev-setup/en.md b/markdown/dev/tutorials/getting-started-mac/dev-setup/en.md new file mode 100644 index 00000000000..17c058f8721 --- /dev/null +++ b/markdown/dev/tutorials/getting-started-mac/dev-setup/en.md @@ -0,0 +1,118 @@ +--- +title: Setting up the FreeSewing development environment +order: 40 +--- + +FreeSewing provides a development environment to help you design and develop patterns. + +There are two ways to run this development environment: + +- [**Monorepo development**](#monorepo-development): Use this if you intend to contribute your work to FreeSewing +- [**Stand-alone development**](#stand-alone-development): Use this if you want to do your own thing, and not contribute to FreeSewing + +## Monorepo development + +This is the recommended way for (aspiring) FreeSewing contributors + +### TL;DR + +```bash +git clone https://github.com/freesewing/freesewing +cd freesewing +yarn kickstart +``` + + +Even better: [clone your own fork](https://github.com/freesewing/freesewing/fork) + +```bash +git clone https://github.com/your-username/freesewing +cd freesewing +yarn kickstart +``` + + + +### Step by step + + +These docs assume you have git installed. +But if you're running macOS, you have git, right? + + +#### Install yarn + +Our repository uses yarn workspaces. So you'll need yarn to work with it. + +To install it run: + +```bash +npm install yarn --global +``` + +#### Fork our repository + +You'll want to fork our repository. This way you have your own copy where you can make +all the changes you want. To do so, visit https://github.com/freesewing/freesewing/fork + +#### Clone the forked repository + +Now that you have your very own fork, time to clone it locally. + +```bash +git clone +``` + +Make sure to use the URL to your own fork, typically `https://github.com/your-username/freesewing` but +obviously with your real username rather than `your-username`. + +#### Install dependencies + +Enter the directory that was created, and run the `yarn kickstart` command: + +```bash +cd freesewing +yarn kickstart +``` + +Now you're ready to [start the development environment](/tutorials/getting-started-mac/dev-start). + +## Stand-alone development + +With NodeJS installed, all you need to do to setup the stand-along development environment is run this command: + +```bash +npx @freesewing/new-design +``` + +After you've answered [some questions](#questions), it will take a while to set everything up. +When it's done, you will have a new folder with the development environment inside. + +Now you're ready to [start the development environment](/tutorials/getting-started-mac/dev-start). + +The folder will have the name you chose above. + + +### Questions + +#### What template to use + +Use `From scratch` unless you want to start from our of our blocks: + +- Use `Extend Brian` to start from [Brian](https://freesewing.org/designs/brian) +- Use `Extend Bent` to start from [Bent](https://freesewing.org/designs/bent) +- Use `Extend Bella` to start from [Bella](https://freesewing.org/designs/bella) +- Use `Extend Breanna` to start from [Breanna](https://freesewing.org/designs/breanna) +- Use `Extend Titan` to start from [Titan](https://freesewing.org/designs/titan) + +#### What name to use + +This will become the name of your design. Stick to \[a-z] here to avoid problems. + +If you're not certain what to pick, just mash some keys, it doesn't matter. + +#### What package manager to use + +Chose `npm` if you don't have `yarn` are when you're not sure what the heck `yarn` is. + + diff --git a/markdown/dev/tutorials/getting-started-mac/dev-start/en.md b/markdown/dev/tutorials/getting-started-mac/dev-start/en.md new file mode 100644 index 00000000000..a7db8ebfdd3 --- /dev/null +++ b/markdown/dev/tutorials/getting-started-mac/dev-start/en.md @@ -0,0 +1,62 @@ +--- +title: Start the development environment +order: 50 +--- + +FreeSewing provides a development environment to help you design and develop patterns. + +There are two ways to run this development environment: + +- [**Monorepo development**](#monorepo-development): Use this if you intend to contribute your work to FreeSewing +- [**Stand-alone development**](#stand-alone-development): Use this if you want to do your own thing, and not contribute to FreeSewing + +## Monorepo development + +Run `yarn lab` to start the development environment: + +```bash +yarn lab +``` + +Then point your browser to http://localhost:8000 + + +### Adding a new design +This is all you need to work on existing designs. If you'd like to add a new design, run: + +```bash +yarn new design +``` + +Just make sure to re-start the lab afterwards with `yarn lab` + + +## Standalone development + +You will have a new folder that has the name you picked for your design. +If you chose `test`, you will have a folder named `test`. +If you chose `banana`, you'll have a folder named `banana`. +(Within this new folder, the `design` subfolder holds your design's configuration file and source code. +You can ignore all other subfolders and files; they are part of the development environment.) + +To start the development environment, enter the folder that was created +and run `npm run dev` (or `yarn dev` if you're using Yarn as a package manager). + +Then open your browser and go to http://localhost:8000 + + +The development environment will watch for any changes you make to +the pattern's source code or configuration. +When you do, it will update automatically in your browser. + + + + +##### Yay, you're done! + +All you have to do now is design your pattern. +Thankfully, we have a tutorial for that too: + +- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern + + diff --git a/markdown/dev/tutorials/getting-started-mac/en.md b/markdown/dev/tutorials/getting-started-mac/en.md index 476b92bdbfb..eb1aae96273 100644 --- a/markdown/dev/tutorials/getting-started-mac/en.md +++ b/markdown/dev/tutorials/getting-started-mac/en.md @@ -1,6 +1,6 @@ --- title: Getting started on Mac -order: 20 +order: 25 for: developers icons: - start diff --git a/markdown/dev/tutorials/getting-started-mac/installing-node/en.md b/markdown/dev/tutorials/getting-started-mac/installing-node/en.md index e4afb4919f1..6291b18e56a 100644 --- a/markdown/dev/tutorials/getting-started-mac/installing-node/en.md +++ b/markdown/dev/tutorials/getting-started-mac/installing-node/en.md @@ -1,14 +1,19 @@ --- title: Installing Node -order: 30 +order: 20 --- Now we will use nvm to install Node JS. Run the following command: ```bash -nvm install lts/* +nvm install lts/fermium ``` -This will install the most recent so-called LTS version on your system. +This will install the so-called LTS version of Node 14 on your system. + LTS versions -- short for Long Term Support -- are good node versions to use because they are stable and supported for a long time. + + +Node 14 is required to use our monorepo [until we upgrade Strapi](https://github.com/freesewing/freesewing/issues/2351). + diff --git a/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md b/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md index ba01ee6aded..a4b7f848216 100644 --- a/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md +++ b/markdown/dev/tutorials/getting-started-mac/installing-nvm/en.md @@ -1,6 +1,6 @@ --- title: Installing nvm -order: 20 +order: 10 --- FreeSewing is built with [Node.js](https://nodejs.org/), a JavaScript runtime. @@ -9,14 +9,15 @@ You'll need to install Node JS on your system, and to do so, we'll use [nvm](https://github.com/nvm-sh/nvm), short for _Node version manager_. Using nvm has a number of benefits in comparison with installing Node from -the node.js website, or from a package provided by Homebrew or your OS distribution: +the node.js website, or from a package provided by your linux distribution: - You can easily switch between different Node versions - Everything gets installed in your home folder, avoiding permission problems -The latest instructions for setting up nvm can be found [here](https://github.com/nvm-sh/nvm#installing-and-updating). If you want to just skip to the commands that most likely work, keep reading. +To setup nvm, [follow the install instructions in the nvm +README](https://github.com/nvm-sh/nvm#installing-and-updating). -To setup nvm, run the following command in a terminal window: +The TL;DR: is to run the following command in a terminal: ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash @@ -38,7 +39,7 @@ If all goes well, it should show you the nvm help. -If you get `nvm: command not found` or something similar, close the Terminal -application, and open a new one. Now `nvm` should be found. +If you get `nvm: command not found` or something similar, close the current terminal +window, and open a new one. Now `nvm` should be found. diff --git a/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md b/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md deleted file mode 100644 index b70ea2a591d..00000000000 --- a/markdown/dev/tutorials/getting-started-mac/start-development-environment/en.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Start the development environment -order: 60 ---- - -You will have a new folder that has the name you picked for your pattern. -If you chose `test`, you will have a `test` folder. If you chose `banana`, you'll have a `banana` folder. - -If you enter that folder, you'll find a couple of subfolders: - -- `config` holds your pattern's configuration file -- `src` holds your pattern's source code -- `example` holds the development environment - -To start the development environment, enter the `example` folder and run: `npm run start` (or `yarn start` if you're using Yarn as a package manager. - -The development environment will watch for any changes you make to -the pattern's source code. When you do, it will update automatically in your browser. - - - -##### Yay, you're done! - -All you have to do now, is design your pattern. -Thankfully, we have a tutorial for that too: - -- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern - - diff --git a/markdown/dev/tutorials/getting-started-windows/en.md b/markdown/dev/tutorials/getting-started-windows/en.md index af0d07aa1c1..f96655803c6 100644 --- a/markdown/dev/tutorials/getting-started-windows/en.md +++ b/markdown/dev/tutorials/getting-started-windows/en.md @@ -1,60 +1,93 @@ --- title: Getting started on Windows order: 30 -for: developers -icons: - - start - - windows -about: | - You'll learn how to setup Node JS on a Windows system, - as well as initialize the FreeSewing development environment. -goals: - - Install Node JS using nvm - - Chosing a Node version to use - - Initializing the FreeSewing development environment - - Starting the FreeSewing development environment --- + +Official support for FreeSewing is provided for Linux, Mac, and BSD-based operating systems. +This _Getting started on Windows_ tutorial was written by FreeSewing community members and should be considered unofficial. +However, if you encounter issues with this tutorial or require assistance with other Microsoft Windows issues, please feel free to [ask for help](/howtos/help) and our community members will be happy to assist you! + + +You will first need to set up your development system either using Windows Subsystem for Linux or directly in Windows. Then, you can setup and start the FreeSewing development environment. + ## Setting up a development environment using Windows Subsystem for Linux (WSL) and Visual Studio Code (VSCode) -If you already have a working WSL environment and VSCode Remote configured you can follow the [getting started on Linux guide](/tutorials/getting-started-linux) or skip ahead to [Setting up the FreeSewing development environment (WSL)](#setting-up-the-freesewing-development-environment-wsl). If not, the following process is very similar but has some differences to avoid quirks specific to this environment. +If you already have a working WSL environment and VSCode Remote configured you +can follow the [getting started on Linux +guide](/tutorials/getting-started-linux) or skip ahead to [Setting up the +FreeSewing development environment +(WSL)](#setting-up-the-freesewing-development-environment-wsl). If not, the +following process is very similar but has some differences to avoid quirks +specific to this environment. -Windows Subsystem for Linux allows you to run a Linux distribution as a development environment, with enough functionality to develop a FreeSewing pattern. While this approach offers some advantages this is not strictly necessary to develop patterns on Windows. If you would prefer a simpler setup process refer to [Setting up a development environment in Windows](#setting-up-a-development-environment-in-windows). +Windows Subsystem for Linux allows you to run a Linux distribution as a +development environment, with enough functionality to develop a FreeSewing +pattern. While this approach offers some advantages this is not strictly +necessary to develop patterns on Windows. If you would prefer a simpler setup +process refer to [Setting up a development environment in +Windows](#setting-up-a-development-environment-in-windows). -Installing and using an IDE is optional, you can skip that step or use a different editor if you'd like. This guide suggests VSCode as it is freely available on multiple platforms and provides enough functionality to build the FreeSewing project. +Installing and using an IDE is optional, you can skip that step or use a +different editor if you'd like. This guide suggests VSCode as it is freely +available on multiple platforms and provides enough functionality to build the +FreeSewing project. ### Install WSL - -This guide uses WSL version 2, which requires installing the Hyper-V virtualisation system. If you have another virtualisation system installed (such as VirtualBox or VMWare) you may run into conflicts which require either updating that system to a version which can use the HyperV backend or porting your existing machines to use HyperV. - + This guide uses WSL version 2, which requires installing the Hyper-V +virtualisation system. If you have another virtualisation system installed (such +as VirtualBox or VMWare) you may run into conflicts which require either +updating that system to a version which can use the HyperV backend or porting +your existing machines to use HyperV. -Follow the [Windows Subsystem for Linux Installation Guide for Windows 10](https://docs.microsoft.com/en-gb/windows/wsl/install-win10) (requires a recent version of Windows 10). +Follow the [Windows Subsystem for Linux Installation Guide for Windows +10](https://docs.microsoft.com/en-gb/windows/wsl/install-win10) (requires a +recent version of Windows 10). #### Install NVM -Open a new WSL terminal from the shortcuts created or by searching for "WSL Terminal" in the start menu. -[Install NVM by following the NVM setup guide](https://github.com/nvm-sh/nvm#install--update-script). -Once installed you will need to activate NVM by either following the instructions printed to the screen or opening a new terminal. +Open a new WSL terminal from the shortcuts created or by searching for "WSL +Terminal" in the start menu. [Install NVM by following the NVM setup +guide](https://github.com/nvm-sh/nvm#install--update-script). Once installed +you will need to activate NVM by either following the instructions printed to +the screen or opening a new terminal. #### Install Node (and optionally Yarn) -Now that you have NVM installed, you can install node. The latest version can be installed using `nvm install default`. You can also install a specific version using `nvm install v12.16.1`. For the purposes of debugging it can be useful to have the same version of node installed as the main project uses, which you can then activate using `nvm use `. You can determine what version the FreeSewing project uses by checking [freesewing/freesewing/.node-version](https://github.com/freesewing/freesewing/blob/develop/.node-version). +Now that you have NVM installed, you can install node. The latest version can be +installed using `nvm install default`. You can also install a specific version +using `nvm install v12.16.1`. For the purposes of debugging it can be useful to +have the same version of node installed as the main project uses, which you can +then activate using `nvm use `. You can determine what version the +FreeSewing project uses by checking +[freesewing/freesewing/.node-version](https://github.com/freesewing/freesewing/blob/develop/.node-version). - -At the time this guide was written the latest version of node/npm has a bug in the dependency resolution process which causes the freesewing project to fail to build. Use the latest LTS version (currently 14.15.4) or the specific version used by the main project to avoid this issue. - + At the time this guide was written the latest version of node/npm has +a bug in the dependency resolution process which causes the freesewing project +to fail to build. Use the latest LTS version (currently 14.15.4) or the specific +version used by the main project to avoid this issue. -Node comes with the Node Package Manager (npm) by default which can be used to set up the project. The default package manager uses a fairly simplistic aproach to dependency resolution which can make builds take a long time. Yarn is an alternative package manager which makes builds faster, especially for monolithic projects like FreeSewing. If you'd like to install yarn run `npm install yarn -g` (optional). +Node comes with the Node Package Manager (npm) by default which can be used to +set up the project. The default package manager uses a fairly simplistic aproach +to dependency resolution which can make builds take a long time. Yarn is an +alternative package manager which makes builds faster, especially for monolithic +projects like FreeSewing. If you'd like to install yarn run `npm install yarn +-g` (optional). #### Install and configure Git (recommended) -The create-freesewing-pattern script will attempt to create a git repository as part of the setup. It's not strictly required to have git installed in the WSL environment but you will get errors during the project setup process if it isn't installed or configured correctly. As such it's recommended to have git installed on the WSL environment even if you're going to be using a GUI client from the windows side. +The create-freesewing-pattern script will attempt to create a git repository as +part of the setup. It's not strictly required to have git installed in the WSL +environment but you will get errors during the project setup process if it isn't +installed or configured correctly. As such it's recommended to have git +installed on the WSL environment even if you're going to be using a GUI client +from the windows side. -```bash -sudo apt install git -git config --global user.email "" -git config --global user.name "" +```bash +sudo apt install git +git config --global user.email "" +git config --global user.name "" ``` ### Install VSCode (optional) @@ -63,76 +96,128 @@ git config --global user.name "" -FreeSewing uses .editorconfig files to enforce a consistent style for the project. VSCode relies on extensions to provide this functionality and due to a design shortcoming it does not respect certain editorconfig options which will break certain files in the freesewing project ([see vscode/65663 for details](https://github.com/microsoft/vscode/issues/65663)). If you use this editor please ensure that your settings.json file is configured to not trim trailing whitespace from markdown files. The following snippet can be added to your settings.json file to add an exemption for this file type: +FreeSewing uses .editorconfig files to enforce a consistent style for the +project. VSCode relies on extensions to provide this functionality and due to a +design shortcoming it does not respect certain editorconfig options which will +break certain files in the freesewing project ([see vscode/65663 for +details](https://github.com/microsoft/vscode/issues/65663)). If you use this +editor please ensure that your settings.json file is configured to not trim +trailing whitespace from markdown files. The following snippet can be added to +your settings.json file to add an exemption for this file type: - ```json - "[markdown]": { - "files.trimTrailingWhitespace": false - }, - ``` +```json + "[markdown]": { "files.trimTrailingWhitespace": false }, +``` #### Install VSCode Remote -In order to be able to use VSCode's IDE features (such as the built in terminal) and also make use of the node installation we set up in the previous steps you will need to install VSCode Remote so that VSCode can make use of the linux environment. [Follow the getting started guide for VSCode Remote](https://code.visualstudio.com/docs/remote/wsl) (If you've been following this guide you have already done steps 1 and 2, you will only need to install the [remote development extension](https://aka.ms/vscode-remote/download/extension)) +In order to be able to use VSCode's IDE features (such as the built in terminal) +and also make use of the node installation we set up in the previous steps you +will need to install VSCode Remote so that VSCode can make use of the linux +environment. [Follow the getting started guide for VSCode +Remote](https://code.visualstudio.com/docs/remote/wsl) (If you've been following +this guide you have already done steps 1 and 2, you will only need to install +the [remote development +extension](https://aka.ms/vscode-remote/download/extension)) -### Setting up the FreeSewing development environment (WSL) - -If you've chosen to use VSCode as your IDE open VSCode, and inside VSCode open the folder you wish to contain the pattern (e.g. `documents/my-freesewing-patterns`). Ensure VSCode Remote is active then open a terminal (this will automatically set your working directory to the folder open in VSCode) and run `npx create-freesewing-pattern`. If you are using a different IDE or just wish to use a bare terminal then you will need to navigate to the folder and run the same command. - -This script will prompt you for certain options. Only "Pattern name" is mandatory, the other prompts are optional and/or suggest sensible defaults. You can change all of these later. It's just to get you started. If you're not sure what to fill in you can stick with the defaults or leave them blank. - -- **Language**: Use the arrow keys to chose the language of your choice -- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. -- **description**: A description of your pattern. It's not mandatory. -- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. -- **department**: Use the arrow keys to pick a department like `menswear`, `womenswear` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. -- **Author**: You can enter your name, or leave this blank for now. -- **GitHub repository**: You can leave this blank for now. -- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. - -### Start the development environment (WSL) - -After this process completes you will be ready to run the development environment. - -Navigate to the `example` folder and run `npm start`/`yarn start` to launch the development environment. - - -Your browser will not automatically open if you are running the freesewing example application inside the WSL environment. You will need to navigate to the URL shown in your browser manually (your terminal may let you click on the link to open it). - ## Setting up a development environment in Windows. ### Install NVM -While node can be installed directly on Windows, we strongly recommend using a version manager such as [Node Version Manager for Windows](https://github.com/coreybutler/nvm-windows/releases/latest). That link will take you to the latest release which provides an installer you can download and run. Once nvm-windows is installed you will be able to continue with the rest of this process. +While node can be installed directly on Windows, we strongly recommend using a +version manager such as [Node Version Manager for +Windows](https://github.com/coreybutler/nvm-windows/releases/latest). That link +will take you to the latest release which provides an installer you can download +and run. Once nvm-windows is installed you will be able to continue with the +rest of this process. -### Install node +### Install Node (and optionally Yarn) -Open a Powershell terminal or command prompt. Run `nvm ls available` to show versions that can be installed. Choose the appropriate version (you should use the same version as the freesewing project or latest LTS version) then run `nvm install 14.15.4` and `nvm use 14.15.4` (where `14.15.4` is the full version string of the version you wish to use) to activate the newly installed version. You will receive a prompt for elevated permissions and will need to accept it in order to activate the new version of node. +Open a Powershell terminal or command prompt. Run `nvm ls available` to show +versions that can be installed. Choose the appropriate version (you should use +the same version as the freesewing project or latest LTS version) then run `nvm +install 14.15.4` and `nvm use 14.15.4` (where `14.15.4` is the full version +string of the version you wish to use) to activate the newly installed version. +You will receive a prompt for elevated permissions and will need to accept it in +order to activate the new version of node. - -At the time this guide was written the latest version of node/npm has a bug in the dependency resolution process which causes the freesewing project to fail to build. Use the latest LTS version (currently 14.15.4) or the specific version used by the main project to avoid this issue. + +At the time this guide was written the latest version of node/npm has +a bug in the dependency resolution process which causes the freesewing project +to fail to build. Use the latest LTS version (currently 14.15.4) or the specific +version used by the main project to avoid this issue. -Node comes with the Node Package Manager (npm) by default which can be used to set up the project. The default package manager uses a fairly simplistic aproach to dependency resolution which can make builds take a long time. Yarn is an alternative package manager which makes builds faster, especially for monolithic projects like FreeSewing. If you'd like to install yarn run (`npm install yarn -g`) (optional). +Node comes with the Node Package Manager (npm) by default which can be used to +set up the project. The default package manager uses a fairly simplistic aproach +to dependency resolution which can make builds take a long time. Yarn is an +alternative package manager which makes builds faster, especially for monolithic +projects like FreeSewing. If you'd like to install yarn run (`npm install yarn +-g`) (optional). -### Setting up the FreeSewing development environment +## Setting up the FreeSewing development environment -Open a terminal, then navigate to the folder you wish to contain the pattern (e.g. `D:\Documents\my-freesewing-patterns`). Inside this directory run `npx create-freesewing-pattern`. +In VSCode or in a terminal, navigate to the folder you wish to contain your new patterns (e.g. `D:\Documents\my-freesewing-patterns`). Inside this directory run `npx @freesewing/new-design`. -This script will prompt you for certain options. Only "Pattern name" is mandatory, the other prompts are optional and/or suggest sensible defaults. You can change all of these later. It's just to get you started. If you're not sure what to fill in you can stick with the defaults or leave them blank. +After you've answered [some questions](#questions), it will take a while to set everything up. +When it's done, you will have a new folder with the development environment inside. -- **Language**: Use the arrow keys to chose the language of your choice -- **Pattern name**: This will be the name of your pattern, but also the name of the folder we'll setup for you. If you're just kicking the tires, something like `test` will do you fine. -- **description**: A description of your pattern. It's not mandatory. -- **Pattern type**: Use the arrow keys to chose either `block` or `pattern`. Choose `pattern` if you're not sure what to pick. -- **department**: Use the arrow keys to pick a department like `tops`, `bottoms` or `accessories`. This is is only relevant if you decide to publish your pattern later. But by that time you will have learned how to change this. -- **Author**: You can enter your name, or leave this blank for now. -- **GitHub repository**: You can leave this blank for now. -- **Package manager**: Choose either `npm` or `yarn` as your package manager. If you're not sure, pick `npm`. +The folder will have the name you chose above. -### Start the development environment + +### Questions -After this process completes you will be ready to run the development environment. In the current terminal (or a new window if you prefer) you will need to build the package. Navigate to the folder you created during the previous step (whatever you provided for the "Pattern name" option) and then to the `example` folder inside this folder, then run `npm start` or `yarn start` depending on the build system you chose. This will build the pattern package which is used by the development instance, build the example application, and start a local web server instance so you can test your changes. +#### What template to use + +Use `From scratch` unless you want to start from our of our blocks: + +- Use `Extend Brian` to start from [Brian](https://freesewing.org/designs/brian) +- Use `Extend Bent` to start from [Bent](https://freesewing.org/designs/bent) +- Use `Extend Bella` to start from [Bella](https://freesewing.org/designs/bella) +- Use `Extend Breanna` to start from [Breanna](https://freesewing.org/designs/breanna) +- Use `Extend Titan` to start from [Titan](https://freesewing.org/designs/titan) + +#### What name to use + +This will become the name of your design. Stick to \[a-z] here to avoid problems. + +If you're not certain what to pick, just mash some keys, it doesn't matter. + +#### What package manager to use + +Chose `npm` if you don't have `yarn` are when you're not sure what the heck `yarn` is. + + + +## Start the development environment + +You will have a new folder that has the name you picked for your design. +If you chose `test`, you will have a folder named `test`. +If you chose `banana`, you'll have a folder named `banana`. +(Within this new folder, the `design` subfolder holds your design's configuration file and source code. +You can ignore all other subfolders and files; they are part of the development environment.) + +To start the development environment, navigate to the folder that was created +and run `npm run dev` (or `yarn dev` if you're using Yarn as a package manager). + +Then open your browser and go to http://localhost:8000 + + +The development environment will watch for any changes you make to +the pattern's source code or configuration. +When you do, it will update automatically in your browser. + + + + +##### Yay, you're done! + +All you have to do now is design your pattern. +Thankfully, we have a tutorial for that too: + +- [Pattern design tutorial](/tutorials/pattern-design/): A step-by-step guide to designing your first pattern + + diff --git a/markdown/dev/tutorials/pattern-design/adding-measurements/en.md b/markdown/dev/tutorials/pattern-design/adding-measurements/en.md index 14df5643315..d21e683e8fa 100644 --- a/markdown/dev/tutorials/pattern-design/adding-measurements/en.md +++ b/markdown/dev/tutorials/pattern-design/adding-measurements/en.md @@ -15,7 +15,7 @@ So let's add it as a required measurement. ## Add required measurements -Open the config file at `config/index.js` and update the `measurements` array with the name of our required measurement: +Open the config file at `design/config.js` and update the `measurements` array with the name of our required measurement: ```js measurements: ["head"], @@ -38,7 +38,7 @@ This change will also get picked up by the development environment, and you'll n Since it's just one measurement, let's simply enter a value by hand. For example `38` as 38cm is a realistic head circumference measurement for a baby. -Enter `38` in the box, and click on **Draft your pattern** in the top navigation bar to get back to your draft, -which for now still looks like this: +Enter `38` in the box, and click on **Draft Design** in the sidebar under the **View** heading. +This brings you back to our work in progress: Nothing has changed, yet diff --git a/markdown/dev/tutorials/pattern-design/adding-measurements/required-measurements.png b/markdown/dev/tutorials/pattern-design/adding-measurements/required-measurements.png index 615f167f29e..d69f01d847c 100644 Binary files a/markdown/dev/tutorials/pattern-design/adding-measurements/required-measurements.png and b/markdown/dev/tutorials/pattern-design/adding-measurements/required-measurements.png differ diff --git a/markdown/dev/tutorials/pattern-design/adding-options/en.md b/markdown/dev/tutorials/pattern-design/adding-options/en.md index 830a4f36e47..8fbd3f8ca17 100644 --- a/markdown/dev/tutorials/pattern-design/adding-options/en.md +++ b/markdown/dev/tutorials/pattern-design/adding-options/en.md @@ -20,7 +20,7 @@ flexible and let the user decide. All you have to do is add options to your patt The first option we're going to add controls the ratio between the neck opening and the head circumference. Let's call it `neckRatio`. -Open the config file at `config/index.js` and add this to the options: +Open the config file at `design/config.js` and add this to the options: ```js options: { @@ -66,7 +66,7 @@ between their minimum and maximum values. At that time, you can still tweak thes -Before you close the `config/index.js` file, make sure to update the `optionGroups` entry as follows: +Before you close the `design/config.js` file, make sure to update the `optionGroups` entry as follows: ```js optionGroups: { diff --git a/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md b/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md index 39c407d15e2..e904b0badab 100644 --- a/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md +++ b/markdown/dev/tutorials/pattern-design/avoiding-overlap/en.md @@ -11,7 +11,7 @@ The rest of your bib should stay as it is, so let's start by making a list of po to rotate: ```js -let rotateThese = [ +const rotateThese = [ "edgeTopLeftCp", "edgeTop", "tipRight", @@ -34,7 +34,7 @@ Now you can rotate them. How far? Until the strap no longer overlaps: ```js while (points.tipRightBottomStart.x > -1) { - for (let p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft) + for (const p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft) } ``` diff --git a/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md b/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md index cb5ed5dd2c8..eaf8a3cf61c 100644 --- a/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md +++ b/markdown/dev/tutorials/pattern-design/completing-your-pattern/en.md @@ -7,7 +7,7 @@ When we started out, we said a good part boilerplate looks like this: ```js export default function(part) { - let { Point, points, Path, paths, complete, sa, paperless } = part.shorthand() + const { Point, points, Path, paths, complete, sa, paperless } = part.shorthand() // Design pattern here // Complete? @@ -42,7 +42,7 @@ To access the setting, we merely have to tell `part.shorthand()` that we'd like While we're at it, also add `snippets` and `Snippet`, like this: ```js -let { +const { Point, points, Path, diff --git a/markdown/dev/tutorials/pattern-design/conclusion/en.md b/markdown/dev/tutorials/pattern-design/conclusion/en.md index e8ce3d0e139..ad58bc31cfe 100644 --- a/markdown/dev/tutorials/pattern-design/conclusion/en.md +++ b/markdown/dev/tutorials/pattern-design/conclusion/en.md @@ -6,7 +6,7 @@ order: 280 Congratulations, you have created your first pattern. And while it's arguably rather simple, you have learned a bunch of things along the way. Let's list some of the things you've learned: -- You learned how to [setup your development environment](/tutorials/pattern-design/create-freesewing-pattern) with `npx create-freesewing-pattern` +- You learned how to [setup your development environment](/tutorials/pattern-design/new-design) with `npx @freesewing/new-design` - You learned how to [add parts](/tutorials/pattern-design/your-first-part), [measurements](/tutorials/pattern-design/adding-measurements), and [options](/tutorials/pattern-design/adding-options) to your pattern's configuration file - You learned what [a good boilerplate is to start with a new part](/tutorials/pattern-design/part-structure) - You learned [how to add points and draw paths](/tutorials/pattern-design/constructing-the-neck-opening) @@ -19,7 +19,7 @@ you have learned a bunch of things along the way. Let's list some of the things - You learned [how to offset a path](/tutorials/pattern-design/completing-your-pattern#seam-allowance) to create seam allowance, or in our case, mark the bias tape line - You learned how to create a [paperless pattern](/tutorials/pattern-design/paperless-bib) by adding dimensions -You can find the complete code of the tutorial pattern [here on GitHub](https://github.com/freesewing/freesewing/blob/develop/packages/tutorial/src/bib.js). +You can find the complete code of the tutorial pattern [here on GitHub](https://github.com/freesewing/freesewing/blob/develop/designs/tutorial/src/bib.js). ## More reading material @@ -34,8 +34,6 @@ Now that you have learned how to create a pattern, why don't you make one? Think about what it is you would like to create, and just do it. If you get stuck at any moment, or need some help or advice, you can [join our chat room](https://discord.freesewing.org/) and we'll help you out. -If you need some ideas or want to help on a pattern design take a look [at these open projects](https://github.com/freesewing/freesewing/discussions?discussions_q=label%3A%22%3Ashirt%3A+pattern+design%22+label%3A%22%3A%2B1%3A+good+first+issue%22) for patterns which are currently being worked on and are good patterns for a first time contributor to have a go at! - ###### Tell us how we can improve this tutorial diff --git a/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md b/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md index 17eedb9d100..54ab0a9606d 100644 --- a/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md +++ b/markdown/dev/tutorials/pattern-design/constructing-the-neck-opening/en.md @@ -14,7 +14,7 @@ to our measurements and options to do so. For this, you first update the shortha to indicate you also want access to `measurements` and `options`: ```js -let { +const { Point, points, Path, diff --git a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/cfp.png b/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/cfp.png deleted file mode 100644 index 7ea92e51dc1..00000000000 Binary files a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/cfp.png and /dev/null differ diff --git a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md b/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md deleted file mode 100644 index dd2bedd5822..00000000000 --- a/markdown/dev/tutorials/pattern-design/create-freesewing-pattern/en.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Setting up the development environment -order: 100 ---- - - - -###### Already did the Getting started tutorial? - -If you already set up the FreeSewing development environment and created a pattern, you can use that pattern and skip these steps. You can move on to [Your first part](/tutorials/pattern-design/your-first-part/). - - - -Open a terminal and enter the following command: - -```bash -npx create-freesewing-pattern -``` - -This will load a few dependencies, and then ask you the following questions: - -- **Language**: Use the arrow keys to select the language of your choice -- **Pattern name**: Enter `tutorial` -- **description**: Enter `The FreeSewing tutorial` -- **Pattern type**: Use the arrow key to select `Pattern` -- **Department**: Use the arrow keys to select `Accessories` -- **Author**: Enter your GitHub username -- **GitHub repository**: This will be prefilled for you, so just hit Enter -- **Package manager**: Use the arrow to choose. Pick `npm` if you're not sure. - -After you've answered these questions, the default template will be copied, after which all dependencies will be installed. - - - -This will take a few minutes because we're loading some software for your development environment. - - - -When it's ready, enter the directory that was just created for our `tutorial` pattern and navigate to the `example` subfolder. There, start the development environment: - -```bash -cd tutorial/example -npm start -``` - -Or if you chose to use Yarn as package manager: - -```bash -cd tutorial/example -yarn start -``` - -If all goes well, your browser will open and show the following landing page: - -![The FreeSewing development environment](./cfp.png) - - - -###### Need help? - -If you run into any issues, join [our chatroom](https://discord.freesewing.org/) and -we'll figure it out together. - - diff --git a/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md b/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md index 1774a661a2f..a0f7f23a18b 100644 --- a/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md +++ b/markdown/dev/tutorials/pattern-design/creating-the-closure/en.md @@ -16,7 +16,7 @@ Before we can use it, we have to update our `part.shorthand()` call to indicate also like to make use of macros. Simply add `macro` at the end: ```js -let { +const { Point, points, Path, diff --git a/markdown/dev/tutorials/pattern-design/en.md b/markdown/dev/tutorials/pattern-design/en.md index ce45ce5bcf9..e1d66569015 100644 --- a/markdown/dev/tutorials/pattern-design/en.md +++ b/markdown/dev/tutorials/pattern-design/en.md @@ -51,4 +51,4 @@ node -v If you get the node version number, you're all set. -You can find the complete code of the tutorial pattern for the final result to help make sure you're following the steps correctly [here on GitHub](https://github.com/freesewing/freesewing/blob/develop/packages/tutorial/src/bib.js). +You can find the complete code of the tutorial pattern for the final result to help make sure you're following the steps correctly [here on GitHub](https://github.com/freesewing/freesewing/blob/develop/designs/tutorial/src/bib.js). diff --git a/markdown/dev/tutorials/pattern-design/new-design/en.md b/markdown/dev/tutorials/pattern-design/new-design/en.md new file mode 100644 index 00000000000..584eb7f5868 --- /dev/null +++ b/markdown/dev/tutorials/pattern-design/new-design/en.md @@ -0,0 +1,53 @@ +--- +title: Setting up the development environment +order: 100 +--- + +Open a terminal and enter the following command: + +```bash +npx @freesewing/new-design +``` + +You'll be asked some questions, use these answers: + +- **What template would you like to use?**: Pick the default `From scratch` +- **What name would you like the design to have**: Enter `bib` +- **What package manager do you use?**: Pick `npm` unless you are certain you have `yarn` installed + +After you've answered these questions, files will be copied, dependencies installed, and components downloaded. + + + +This will take a few minutes because we're loading some software for your development environment. + + + +When it's ready, enter the `bib` directory that was just created and run `npm run dev`: + +```bash +cd bib +npm run dev +``` + +Or if you chose to use Yarn as package manager: + +```bash +cd bib +yarn dev +``` + +Now open your browser at http://localhost:8000 + +If all goes well, you should see this landing page: + +![The FreeSewing development environment](./nd.png) + + + +###### Need help? + +If you run into any issues, join [our chatroom](https://discord.freesewing.org/) and +we'll figure it out together. + + diff --git a/markdown/dev/tutorials/pattern-design/new-design/nd.png b/markdown/dev/tutorials/pattern-design/new-design/nd.png new file mode 100644 index 00000000000..0fc70cc753b Binary files /dev/null and b/markdown/dev/tutorials/pattern-design/new-design/nd.png differ diff --git a/markdown/dev/tutorials/pattern-design/paperless-bib/en.md b/markdown/dev/tutorials/pattern-design/paperless-bib/en.md index 85ee396a55d..770144c81d4 100644 --- a/markdown/dev/tutorials/pattern-design/paperless-bib/en.md +++ b/markdown/dev/tutorials/pattern-design/paperless-bib/en.md @@ -9,7 +9,7 @@ We can get that value of the setting from the `part.shorthand()` method. It will be the last shorthand we will put to use: ```js -let { +const { Point, points, Path, diff --git a/markdown/dev/tutorials/pattern-design/part-structure/en.md b/markdown/dev/tutorials/pattern-design/part-structure/en.md index 165951c87b8..4119dd74c5e 100644 --- a/markdown/dev/tutorials/pattern-design/part-structure/en.md +++ b/markdown/dev/tutorials/pattern-design/part-structure/en.md @@ -4,11 +4,11 @@ order: 150 --- Let's get rid of the example box first. -Open `src/bib.js` and make sure it looks like this: +Open `design/src/bib.js` and make sure it looks like this: ```js export default function(part) { - let { Point, points, Path, paths, complete, sa, paperless } = part.shorthand() + const { Point, points, Path, paths, complete, sa, paperless } = part.shorthand() // Design pattern here // Complete? @@ -84,7 +84,7 @@ For now, we only need these so that the pattern skeleton compiles properly. This will all become clear, but if you're curious, the API docs have all the details -on [the Part.shorthand() method](/reference/api/part/#shorthand). +on [the Part.shorthand() method](/reference/api/part/shorthand). diff --git a/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md b/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md index 3ec2eb08f19..c2b1febcdeb 100644 --- a/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md +++ b/markdown/dev/tutorials/pattern-design/testing-your-pattern/en.md @@ -18,14 +18,20 @@ for different measurements and options to see how well it adapts. If testing your pattern sounds like a lot of work, you're in luck. FreeSewing can do it -for you. Click the **Test your pattern** button in the top navigation bar of your -development environment, and you'll see a number of choices on the right: +for you. Click the **Test Design** link in the sidebar under the **View** title. -- Test pattern options + +The new development environment does not yet support all tests. +Update these docs when that's completed + + +You have a number of ways to test your pattern: + +- Test design options - Test measurements - Test models -The [API docs on sampling](/reference/api/pattern/#sample) have all the details on how this works, but +The [API docs on sampling](/reference/api/pattern/sample) have all the details on how this works, but for now we'll just look at the end result of each of these. ## Testing pattern options @@ -40,7 +46,7 @@ Click on any of the options we've added to our pattern, and your bib will be dra The `lengthRatio` option controls the length of our bib. Testing it confirms that it only influences the length: -Your bib with the lengthRatio option sampled +Your bib with the lengthRatio option sampled ### neckRatio @@ -53,7 +59,7 @@ Testing it confirms this. We can also see that as the neck opening gets smaller, further out of the way to avoid overlap: -Your bib with the neckRatio option sampled +Your bib with the neckRatio option sampled ### widthRatio @@ -76,7 +82,7 @@ covered in this tutorial. It is left _as an exercise to the reader_. -Your bib with the widthRatio option sampled +Your bib with the widthRatio option sampled ## Testing measurements @@ -87,7 +93,7 @@ This gives you the option to determine how any given measurement is influencing For our bib, we only use one measurement, so it influences the entire pattern: -Your bib with the head circumference measurement sampled +Your bib with the head circumference measurement sampled ## Testing models @@ -103,7 +109,7 @@ But most patterns use multiple measurements, and you'll find this test gives you pattern will adapt to differently sized bodies. -Your bib sampled for a range of baby sizes +Your bib sampled for a range of baby sizes ## The antperson test @@ -123,7 +129,7 @@ don't scale, and you should avoid them. The best patterns will pass the antperson test with 2 patterns exactly the same, where one will simply be 1/10th the scale of the other. -Congratulations, your bib passes the antperson test +Congratulations, your bib passes the antperson test When you're happy with how your pattern passes these tests, it's time to complete it. diff --git a/markdown/dev/tutorials/pattern-design/your-first-part/en.md b/markdown/dev/tutorials/pattern-design/your-first-part/en.md index 12fd1d98e0f..9c4bce3c425 100644 --- a/markdown/dev/tutorials/pattern-design/your-first-part/en.md +++ b/markdown/dev/tutorials/pattern-design/your-first-part/en.md @@ -9,7 +9,7 @@ Most patterns will have multiple parts. A sleeve, a back part, the collar, and s Our pattern is very simple, and only has one part: the bib. The pattern that's been created for us also just has one part to get you started. -It's called **box** and it draws a box. If you click on the **Draft your pattern** +It's called **box** and it draws a box. If you click on the **To your design** button in your browser, you'll get to see it: ![The default pattern with its box part](./step1.png) @@ -18,11 +18,11 @@ Since we only need one part, we'll rename this _box_ part, and call it _bib_. ## Rename the box part to bib -First, update the configuration file in `config/index.js`. +First, update the configuration file in `design/config.js`. Update the **parts** array with `bib`, rather than `box`: ```js -parts: ["bib"], +parts: ['bib'], ``` @@ -33,9 +33,9 @@ This will (temporarily) cause en error to appear in your development environment -When that's done, rename the `src/box.js` file into `src/bib.js`. +When that's done, rename the `design/src/box.js` file into `design/src/bib.js`. -Then, in the `src/index.js` file, change the import accordingly: +Then, in the `design/src/index.js` file, change the import accordingly: ```js // Change this line @@ -45,14 +45,14 @@ Then, in the `src/index.js` file, change the import accordingly: import draftBib from "./bib" ``` -Finally, still in the `src/index.js` file, update the draftmethod: +Finally, still in the `design/src/index.js` file, update the draft method: ```js // Change this line -//Pattern.prototype.draftBox = draftBox +//Design.prototype.draftBox = draftBox // Into this -Pattern.prototype.draftBib = draftBib +Design.prototype.draftBib = draftBib ``` diff --git a/markdown/dev/tutorials/pattern-design/your-first-part/step1.png b/markdown/dev/tutorials/pattern-design/your-first-part/step1.png index bd36c055aad..c67f6aa58e3 100644 Binary files a/markdown/dev/tutorials/pattern-design/your-first-part/step1.png and b/markdown/dev/tutorials/pattern-design/your-first-part/step1.png differ diff --git a/markdown/org/docs/faq/breasts/uk.md b/markdown/org/docs/faq/breasts/uk.md new file mode 100644 index 00000000000..4ad81cf227f --- /dev/null +++ b/markdown/org/docs/faq/breasts/uk.md @@ -0,0 +1,23 @@ +--- +title: "What's all this talk about with or without breasts?" +--- + +Some people get confused by the terms _with breasts_ and _without breasts_. + +We use these terms as a gender-inclusive way to ask whether or not a person has breasts. + +##### As it applies to bodies + +Nearly every clothing company has two main categories for their clothing: menswear and womenswear. These garment designs are usually based off of the ideal or average body. Meaning, for womenswear, the designer will likely make a garment for a body with breasts, narrow shoulders, a smaller waist and wide hips. + +These characteristics are generally thought of as _the typical characteristics of a woman's body_. However, we believe it is best to stay away from this; no body is average and we want to build a gender-inclusive environment. + +We do not want to exclude anyone and we think that _body shape ≠ gender_. That's why we use the terminology **with breasts** and **without breasts**, simply asking whether a person has breast tissue or not. + +##### How it applies to patterns + +Any user can draft any pattern on our site, as long as they provide the required measurements. Which for some patterns includes measurements that are only relevant if you have breasts. + +##### How it applies to binding + +If you are binding, use the **without breasts** patterns, and use the cirumference of your binded chest as [chest measurement](/docs/measurements/chest/) diff --git a/markdown/org/docs/faq/commercial-use/uk.md b/markdown/org/docs/faq/commercial-use/uk.md new file mode 100644 index 00000000000..d60116d5b4c --- /dev/null +++ b/markdown/org/docs/faq/commercial-use/uk.md @@ -0,0 +1,7 @@ +--- +title: Can I use FreeSewing patterns for commercial purposes? +--- + +Yes you can. Open Source is a development model, not a business model. + +If our work can help you put food on the table, by all means go ahead. diff --git a/markdown/org/docs/faq/email-trouble/uk.md b/markdown/org/docs/faq/email-trouble/uk.md new file mode 100644 index 00000000000..f442e28bfe2 --- /dev/null +++ b/markdown/org/docs/faq/email-trouble/uk.md @@ -0,0 +1,22 @@ +--- +title: How can I sign up? I never received the E-mail to activate my account! +--- + +If you did not receive the email, check your spam/junk folder. If you can't find it there either, it is most likely that your E-mail provider blocked it outright. + +Either try using a different E-mail address, or [reach out to us](https://discord.freesewing.org/) so we can help you activate your account. + + + +##### Users in France are more likely to run into this problem + +In France, several E-mail providers share the same filtering: + +- free.fr +- laposte.net +- organge.fr +- sfr.fr + +They are all known to cause issues with deliveries. + + diff --git a/markdown/org/docs/faq/measurement-estimates/uk.md b/markdown/org/docs/faq/measurement-estimates/uk.md new file mode 100644 index 00000000000..b601f5d3b3d --- /dev/null +++ b/markdown/org/docs/faq/measurement-estimates/uk.md @@ -0,0 +1,126 @@ +--- +title: What are those symbols next to my measurements? +--- + +You might have noticed these kind of icons next to your measurements: + +The value they represent shows how far the measurement deviates from the proportions we test our designs with: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Icon + + Description +
+ + + The value is significantly lower +
+ + + The value is a good bit lower +
+ + + The value is a bit lower +
+ + + The value is very close +
+ + + The value is very close +
+ + + The value is a bit higher +
+ + + The value is a good bit higher +
+ + + The value is significantly higher +
+ +These indicators serve a dual purpose: + +- Help you spot mistakes in your measurements (you know best where your outliers are) +- Help you anticipate where our software might struggle to come up with good results + + + +##### There are no good or bad measurements + +Designing patterns for a variety of shapes is hard work. + +Unlike other pattern companies, we don't limit ourselves to a particular size range. +All people and all bodies are welcome here. + +If it turns out it doesn't work for you, please [let us know](https://discord.freesewing.org/) and we'll try to do better. + + diff --git a/markdown/org/docs/faq/notches/uk.md b/markdown/org/docs/faq/notches/uk.md new file mode 100644 index 00000000000..20477a2b239 --- /dev/null +++ b/markdown/org/docs/faq/notches/uk.md @@ -0,0 +1,9 @@ +--- +title: Why don't you use double notches to mark the back of the pattern? +--- + +A double-notch is a common way to mark the back of the pattern. Common, but not universal. + +Different parts of the world have different conventions or traditions on how to notch patterns. To avoid confusion, we use a differently styled notch to indicate the back, as detailed in [our pattern notation guide][1]. + +[1]: /docs/various/notation/ diff --git a/markdown/org/docs/faq/privacy/uk.md b/markdown/org/docs/faq/privacy/uk.md new file mode 100644 index 00000000000..b1d3ab2e9e3 --- /dev/null +++ b/markdown/org/docs/faq/privacy/uk.md @@ -0,0 +1,7 @@ +--- +title: What are you doing with my personal data? +--- + +How we handle your personal data is documented in [our privacy notice][1]. + +[1]: /docs/various/privacy/ diff --git a/markdown/org/docs/faq/sizes/uk.md b/markdown/org/docs/faq/sizes/uk.md new file mode 100644 index 00000000000..37ca8fd0686 --- /dev/null +++ b/markdown/org/docs/faq/sizes/uk.md @@ -0,0 +1,10 @@ +--- +title: I know my size, but your pattern doesn't fit me +--- + +The standard sizes we offer are there to allow you to discover our platform without the need to create an account. We advise against using them as-is. + +Drafting made-to-measure sewing patterns really is _our thing_.\ +If you insist on getting a pattern in a standard size, FreeSewing is not for you. + +Thankfully, Fiona curates [a list of indie pattern designers](https://chainstitcher.blogspot.com/p/indie-pattern-designers.html), so you have plenty of alternatives. diff --git a/markdown/org/docs/faq/uk.md b/markdown/org/docs/faq/uk.md new file mode 100644 index 00000000000..aa896744f84 --- /dev/null +++ b/markdown/org/docs/faq/uk.md @@ -0,0 +1,6 @@ +--- +title: Frequently asked questions +order: 150 +--- + + diff --git a/markdown/org/docs/faq/what-is-freesewing/uk.md b/markdown/org/docs/faq/what-is-freesewing/uk.md new file mode 100644 index 00000000000..16dcaf06ee2 --- /dev/null +++ b/markdown/org/docs/faq/what-is-freesewing/uk.md @@ -0,0 +1,11 @@ +--- +title: What is FreeSewing? +--- + +[FreeSewing is an open source software project](https://github.com/freesewing/) with the aim of becoming the WikiPedia of sewing patterns. + +We provide a [core library](https://www.npmjs.com/package/@freesewing/core) for parametric pattern design, an ever-growing [library of designs](/designs/) implemented in code, as well as a bunch of adjacent tools for building modern interfaces on top of our platform. + +We are not interested in fashion, trends, or publishing the hot new pattern of the season. Instead, we want to empower makers by distilling the knowledge of the sewing community into parametric designs + documentation, and make that information freely available. + +FreeSewing is built by [contributors](/community/who/contributors/) who are all volunteers, and financially supported by [our Patrons](/community/who/patrons/). diff --git a/markdown/org/docs/faq/why-signup/uk.md b/markdown/org/docs/faq/why-signup/uk.md new file mode 100644 index 00000000000..036c6fae82a --- /dev/null +++ b/markdown/org/docs/faq/why-signup/uk.md @@ -0,0 +1,21 @@ +--- +title: Why do I need to create an account to download a made-to-measure pattern? +--- + +For practical reasons. To generate made-to-measure sewing patterns, we need your measurements. + +Asking for them every time would be rather tedious, so we need to store this information. And your account is where we do that. + +Without a way to store your measurements, generating made-to-measure patterns would be hopelessly inpractical. + + + +##### Are you asking because you don't trust us? + +This question often hints at an underlying distrust towards +creating an account. As such, the following links may also be relevant: + +- Read \[our privacy notice]\[1] +- Learn more about \[your rights]\[2] + + diff --git a/markdown/org/docs/faq/womenswear-blocks/uk.md b/markdown/org/docs/faq/womenswear-blocks/uk.md new file mode 100644 index 00000000000..b3b3bee326f --- /dev/null +++ b/markdown/org/docs/faq/womenswear-blocks/uk.md @@ -0,0 +1,27 @@ +--- +title: Why do you even publish womenswear blocks? They are [insert strong opinion here]. +--- + +This question comes up every now and then. The wording varies, but the sentiment can be summarized as _why even publish this garbage, it doesn't work at all_. + +Let me start by saying that you are not wrong. Both [Breanna](/designs/breanna/) and [Bella](/designs/bella/) have serious shortcomings. + +I myself ([joost](/makers/joostdecock/)) am painfully aware of them, and I have toyed with the idea of retracting these patterns altogether. + +But there's a subset of people who get good results with them. I've seen several good looking makes based on Bella, and Breanna seems to be popular with people making doll clothes for some reason. + +What I'm saying is, we're not removing them because they work in some cases. Not in all cases though, which can be frustrating. + +I don't pretend to know how to draft for women. But I do get questions all the time about adding more womenswear to freesewing.org, and that starts with a well-designed block. + +I have long waited for somebody to step forward to take this on themselves. Alas, I've been waiting in vain. Since the fastest way to get a question answered on the internet is to answer it yourself incorrectly, I set out to create these blocks. + +So if you think you can do better, I hereby formally invite you to work together to design the womenswear block that you think/know to be the best one out there. + +I gladly offer my services to code/implement your design/vision, so that the entire sewing community can benefit from it. + +You can reach me at joost at freesewing.org, we also have [an active community on Discord](https://discord.freesewing.org/). + +I hope to hear from you soon. + +joost diff --git a/markdown/org/docs/guide/account/uk.md b/markdown/org/docs/guide/account/uk.md new file mode 100644 index 00000000000..f20701ecec1 --- /dev/null +++ b/markdown/org/docs/guide/account/uk.md @@ -0,0 +1,12 @@ +--- +title: Your account +order: 300 +--- + +To generate made-to-measure sewing patterns, we need measurements. Asking for them every time would be rather tedious, so we store them for you. + +We need a place to store them, and that _place_ is your account. Your account data is stored on our backend, subject to [our privacy notice][1], and with respect for [your rights][2]. + +[1]: /docs/various/privacy/ + +[2]: /docs/various/rights/ diff --git a/markdown/org/docs/guide/breasts/uk.md b/markdown/org/docs/guide/breasts/uk.md new file mode 100644 index 00000000000..d71eb14156b --- /dev/null +++ b/markdown/org/docs/guide/breasts/uk.md @@ -0,0 +1,24 @@ +--- +title: With or without breasts? +order: 250 +--- + +Some people get confused by the terms **with breasts** and **without breasts**. + +We use these terms as a gender-inclusive way to ask whether or not a person has breasts. + + + +Check [our FAQ on the matter](/docs/faq/breasts/) for more info. + + + + + +##### Why we ask in the first place + +Fitting a chest with breasts is more complex than fitting a chest without breasts. +There are extra measurements and options required, and we want to display these +only when it's relevant. + + diff --git a/markdown/org/docs/guide/help/uk.md b/markdown/org/docs/guide/help/uk.md new file mode 100644 index 00000000000..3db712e4494 --- /dev/null +++ b/markdown/org/docs/guide/help/uk.md @@ -0,0 +1,8 @@ +--- +title: Getting help +order: 999 +--- + +If you get stuck or have questions, you can [join us on Discord](https://discord.freesewing.org/) where there's always somebody around to offer help. + +Altenatively, you can check out some of the other places [where you can find us](/community/where/). diff --git a/markdown/org/docs/guide/measurements/estimates/uk.md b/markdown/org/docs/guide/measurements/estimates/uk.md new file mode 100644 index 00000000000..5cf96af95ef --- /dev/null +++ b/markdown/org/docs/guide/measurements/estimates/uk.md @@ -0,0 +1,30 @@ +--- +title: Measurements estimates +--- + +To help you spot measuring mistakes, we show an estimate of your different measurements next to the actual value. When the difference gets large, we'll draw your attention to that. + + + +This estimate is based on your neck circumference, so this won't show up until you've measured your neck. + + + + + +##### This is a difficult area for us to work in + +We want to help you get the best results, and that includes helping you spot issues with your measurements. +On the other hand, we in no way want to imply that someone's measurements are _wrong_ somehow. + +We are an extremely size-inclusive pattern outlet, and a disproportionate amount of our users are people who struggle to find clothes or patterns from other outlets. +So on one hand, it might seem like we're setting ourselves up for failure by comparing measurements to a set of more or less _standard_ measurements. +But you know your body. You know which of your measurements deviate from the average. +And us pointing out that they do is in a way only confirmation that you've been measuring correctly. +On the other hand, if something jumps out where you are fairly average sized, you know to double-check those measurements. + +Last but not least, while we try to provide guidance about measurements to help spot mistakes, +we never exclude anyone based on size or measurement. +No matter what you throw at us, we will draft a pattern for you, or (our software will) die trying. + + diff --git a/markdown/org/docs/guide/measurements/graph/uk.md b/markdown/org/docs/guide/measurements/graph/uk.md new file mode 100644 index 00000000000..3db9997c5c2 --- /dev/null +++ b/markdown/org/docs/guide/measurements/graph/uk.md @@ -0,0 +1,7 @@ +--- +title: Measurements graph +--- + +Below is an example of a measurements graph. We will generate such a graph for your people as soon as you provide us with their neck circumference. + +![Example of a measurements graph](graph.svg) diff --git a/markdown/org/docs/guide/measurements/uk.md b/markdown/org/docs/guide/measurements/uk.md new file mode 100644 index 00000000000..78f82c2f765 --- /dev/null +++ b/markdown/org/docs/guide/measurements/uk.md @@ -0,0 +1,15 @@ +--- +title: Measurements +order: 420 +--- + +Taking accurate measurements is crucial for good results with our designs, yet not as trivial as you would think. + +We've added a few indicators to help you spot mistakes or problems in your measurements. + +- We include [estimates for your different measurements][1], and highlight those measurements where a person differs significantly from the estimate +- Your models show [a graph of their body measurements][2] in comparison to our standard sizes + +[1]: /docs/guide/measurements/estimates/ + +[2]: /docs/guide/measurements/graph/ diff --git a/markdown/org/docs/guide/mtm/uk.md b/markdown/org/docs/guide/mtm/uk.md new file mode 100644 index 00000000000..d2ea4a5b875 --- /dev/null +++ b/markdown/org/docs/guide/mtm/uk.md @@ -0,0 +1,21 @@ +--- +title: Made-to-measure sewing patterns +order: 200 +--- + +All of our sewing patterns are **made to measure**. + +We don’t scale or grade patterns. Instead, we draft the pattern to your measurements. That happens in real-time, in your browser. + + + +##### But you do have sizes? + +Generating a made-to-measure sewing pattern requires an account. +For the casual visitor who stumbles upon our website, that +adds a lot of friction before they can try out the website. + +For this reason, we've added standard sizes since version 2.2.\ +We advise against using our standard sizes for actual garment construction. + + diff --git a/markdown/org/docs/guide/options/complete/uk.md b/markdown/org/docs/guide/options/complete/uk.md new file mode 100644 index 00000000000..4b880038805 --- /dev/null +++ b/markdown/org/docs/guide/options/complete/uk.md @@ -0,0 +1,7 @@ +--- +title: Detail +--- + +Turn this setting off to only draft a basic outline of the pattern. + +This is particularly useful for people looking to use a laser cutter or other automated tools, and only want the cutlines of the pattern. diff --git a/markdown/org/docs/guide/options/locale/uk.md b/markdown/org/docs/guide/options/locale/uk.md new file mode 100644 index 00000000000..3004693816b --- /dev/null +++ b/markdown/org/docs/guide/options/locale/uk.md @@ -0,0 +1,7 @@ +--- +title: Language +--- + +This determines the language used on your pattern. + +By default, we use the same language as you're using on the website, but if for some reason you want a pattern in a different language, this is where to configure that. diff --git a/markdown/org/docs/guide/options/margin/uk.md b/markdown/org/docs/guide/options/margin/uk.md new file mode 100644 index 00000000000..d418942ce37 --- /dev/null +++ b/markdown/org/docs/guide/options/margin/uk.md @@ -0,0 +1,5 @@ +--- +title: Margin +--- + +This controls the margin around pattern parts. The default margin is 2mm, but you can change it. diff --git a/markdown/org/docs/guide/options/only/uk.md b/markdown/org/docs/guide/options/only/uk.md new file mode 100644 index 00000000000..a7592ff65b6 --- /dev/null +++ b/markdown/org/docs/guide/options/only/uk.md @@ -0,0 +1,7 @@ +--- +title: Contents +--- + +This setting allows you to manually pick which parts you want to include in your pattern. + +This is often useful when you want to combine different styles. For example, you could draft a shirt pattern, and then also draft different cuffs for it. There's no need to print all pattern parts, so you can only draft your second pair of cuffs. diff --git a/markdown/org/docs/guide/options/paperless/uk.md b/markdown/org/docs/guide/options/paperless/uk.md new file mode 100644 index 00000000000..2f7f167490f --- /dev/null +++ b/markdown/org/docs/guide/options/paperless/uk.md @@ -0,0 +1,7 @@ +--- +title: Paperless +--- + +Paperless patterns have extra markings to use them without a printer. + +The idea is that with the help of the grid and the extra dimensions, you don't need to print the pattern. Instead, you can transfer it directly onto fabric, or onto a intermediate medium such as drafting paper. diff --git a/markdown/org/docs/guide/options/sa/uk.md b/markdown/org/docs/guide/options/sa/uk.md new file mode 100644 index 00000000000..3faa487b56b --- /dev/null +++ b/markdown/org/docs/guide/options/sa/uk.md @@ -0,0 +1,7 @@ +--- +title: Seam allowance +--- + +This controls whether you want _seam allowance_ or not. And, if you want it, how much you want. + +This will probably be self-explanatory if you know what seam allowance is. In case you don't, check out [the seam allowance documentation](/docs/sewing/seam-allowance). diff --git a/markdown/org/docs/guide/options/scale/uk.md b/markdown/org/docs/guide/options/scale/uk.md new file mode 100644 index 00000000000..42996fd6b1d --- /dev/null +++ b/markdown/org/docs/guide/options/scale/uk.md @@ -0,0 +1,9 @@ +--- +title: Scale +--- + +The scale factor can be used to scale down (or up) everything that is not the actual pattern itself. Things like font sizes, arrow sizes, logos, scalebox, line width and so on. + +It was specifically created to accommodate patterns for doll clothes and other situations where the text and snippets would become too large in comparison to the pattern. + +You need to enable _Expert mode_ after which you can find the scale setting under _Advanced_. diff --git a/markdown/org/docs/guide/options/uk.md b/markdown/org/docs/guide/options/uk.md new file mode 100644 index 00000000000..78fc7172f4c --- /dev/null +++ b/markdown/org/docs/guide/options/uk.md @@ -0,0 +1,11 @@ +--- +title: Configuring your pattern +order: 998 +--- + +When you [create a pattern](/create/) there are two important groups of things you can tweak: + +- The **design options** are options the designer added to the pattern. Typically style and fit choices. +- The **pattern options** are a set of options that come with the platform, and are available for all patterns. Below is a complete list: + + diff --git a/markdown/org/docs/guide/options/units/uk.md b/markdown/org/docs/guide/options/units/uk.md new file mode 100644 index 00000000000..a6ad84561bc --- /dev/null +++ b/markdown/org/docs/guide/options/units/uk.md @@ -0,0 +1,13 @@ +--- +title: Units +--- + +This controls the units used (by the text) on the pattern. + +Freesewing supports two types of units: + +- Metric units (cm) +- Imperial units (inch) + +You can configure your default units in your account settings.\ +In addition, you can set the units individually for each model.\ And if that wasn't enough, you can still override the units for an individual pattern with this setting. diff --git a/markdown/org/docs/guide/patterns/uk.md b/markdown/org/docs/guide/patterns/uk.md new file mode 100644 index 00000000000..a1629b6425d --- /dev/null +++ b/markdown/org/docs/guide/patterns/uk.md @@ -0,0 +1,23 @@ +--- +title: Your patterns +order: 400 +--- + +When you generate a made-to-measure pattern, you can tweak it endlessly, and export it to a variety of formats, including PDF.\ +But it remains ephemeral until you save it to your account, so it becomes one of **your patterns**. + +Saving your pattern is optional, but it allows you to re-visit the pattern later, make further tweaks to it or simply download the PDF again. + +You can save as many patterns as you like. + + + +##### Patterns vs Designs + +If you came to this site looking for _patterns_ you might have found them under _designs_. +It's not a super important distinction, but it helps to understand that: + +- **Design**: One of the styles that we offer. We've got dozens of designs, and you can try them all +- **Pattern**: The result of generating one of those styles into a pattern. We've got thousands of patterns stored for our users, and some might be yours + + diff --git a/markdown/org/docs/guide/people/uk.md b/markdown/org/docs/guide/people/uk.md new file mode 100644 index 00000000000..9da2760b959 --- /dev/null +++ b/markdown/org/docs/guide/people/uk.md @@ -0,0 +1,12 @@ +--- +title: Your people +order: 350 +--- + +Once you have an account, you can start adding measurements. But that quickly brings up the next question: what if you want a pattern for you, but also for your partner? + +That's why we have _people_. + +You create a person, and add measurements to that person. Now you can generate patterns for this person, based on their measurements. + +You can add as many people as you like. Having just one for yourself is fine too. diff --git a/markdown/org/docs/guide/uk.md b/markdown/org/docs/guide/uk.md new file mode 100644 index 00000000000..04c73b7acc5 --- /dev/null +++ b/markdown/org/docs/guide/uk.md @@ -0,0 +1,47 @@ +--- +title: Getting started +order: 100 +--- + +Hi there 👋 and welcome to freesewing.org 🙂\ +Reading this guide will take about 10 minutes of your time now, to save you a bunch of questions later, and make sure you get the most out of our website. + +##### What we'll explain + +- We'll tell you \[what FreeSewing is]\[1] and [what freesewing.org is][2] +- We'll tell you about our [made-to-measure sewing patterns][3] and what we mean by [_with breasts_ vs _without breasts_][4] +- We'll cover [why you need an account][5] what we mean by [your people][6] or [your patterns][7], and we talk about [measurements][8] +- We'll go over [how you can configure your patterns][9] with design and pattern options +- Finally, we'll tell you [where you can get help][10] if you get stuck. + +Sounds good? Then let's dive right in: + + + + + +##### You don't have to read everything + +Feel free to click around to the parts that are most relevant to you. +This guide is more reference than story. + + +[1]: /docs/guide/what/ + +[2]: /docs/guide/website/ + +[3]: /docs/guide/mtm/ + +[4]: /docs/guide/breasts/ + +[5]: /docs/guide/account/ + +[6]: /docs/guide/people/ + +[7]: /docs/guide/patterns/ + +[8]: /docs/guide/measurements/ + +[9]: /docs/guide/options/ + +[10]: /docs/guide/help/ diff --git a/markdown/org/docs/guide/website/uk.md b/markdown/org/docs/guide/website/uk.md new file mode 100644 index 00000000000..2b3ce68b1e7 --- /dev/null +++ b/markdown/org/docs/guide/website/uk.md @@ -0,0 +1,8 @@ +--- +title: What is freesewing.org? +order: 150 +--- + +Freesewing.org is our flagship website that offers made-to-measure sewing patterns to makers all over the world. + +It is our most visible asset, and for many people their first encounter with the project. The place where all our work on comes together and teams up, to provide you with something we hope you will appreciate. diff --git a/markdown/org/docs/guide/what/uk.md b/markdown/org/docs/guide/what/uk.md new file mode 100644 index 00000000000..2cfdac35e37 --- /dev/null +++ b/markdown/org/docs/guide/what/uk.md @@ -0,0 +1,12 @@ +--- +title: What is FreeSewing? +order: 100 +--- + +[FreeSewing is an open source software project](https://github.com/freesewing/) with the aim of becoming the Wikipedia of sewing patterns. + +We provide a [core library](https://www.npmjs.com/package/@freesewing/core) for parametric pattern design, an ever-growing [library of designs](/designs/) implemented in code, as well as a bunch of adjacent tools for building modern interfaces on top of our platform. + +We are not interested in fashion, trends, or publishing the hot new pattern of the season. Instead, we want to empower makers by distilling the knowledge of the sewing community into parametric designs + documentation, and make that information freely available. + +FreeSewing is built by [contributors](/community/who/contributors/) who are all volunteers, and financially supported by [our Patrons](/community/who/patrons/). diff --git a/markdown/org/docs/measurements/ankle/uk.md b/markdown/org/docs/measurements/ankle/uk.md new file mode 100644 index 00000000000..ec356b8a6b8 --- /dev/null +++ b/markdown/org/docs/measurements/ankle/uk.md @@ -0,0 +1,7 @@ +--- +title: Ankle circumference +--- + +The **ankle circumference** measurement goes around your ankle. + +To measure your ankle circumference, run the tape measure around your leg, just above your ankle. diff --git a/markdown/org/docs/measurements/biceps/uk.md b/markdown/org/docs/measurements/biceps/uk.md new file mode 100644 index 00000000000..a3cfa4b585d --- /dev/null +++ b/markdown/org/docs/measurements/biceps/uk.md @@ -0,0 +1,7 @@ +--- +title: Biceps circumference +--- + +The **biceps circumference** measurement goes around the fullest part of your upper arm. + +To measure your **biceps circumference**, run the tape measure around the fullest part of your upper arm. diff --git a/markdown/org/docs/measurements/bustfront/uk.md b/markdown/org/docs/measurements/bustfront/uk.md new file mode 100644 index 00000000000..138d2cab5d3 --- /dev/null +++ b/markdown/org/docs/measurements/bustfront/uk.md @@ -0,0 +1,7 @@ +--- +title: Bust front +--- + +The **bust front** is the front part of your chest circumference. + +To measure your bust front, run the tape measure horizontally accross the fullest part of your chest, starting at the side (seam) on one side, across your breasts to the side (seam) on the other side. diff --git a/markdown/org/docs/measurements/bustpointtounderbust/uk.md b/markdown/org/docs/measurements/bustpointtounderbust/uk.md new file mode 100644 index 00000000000..c3c69d09e8a --- /dev/null +++ b/markdown/org/docs/measurements/bustpointtounderbust/uk.md @@ -0,0 +1,7 @@ +--- +title: Bust point to underbust +--- + +The **bust point to underbust** measurement is the distance from your bust point/nipple to your underbust. + +It's the distance an ant would have to walk to go from your bust point/nipple straight down to where your breast meets your torso. diff --git a/markdown/org/docs/measurements/bustspan/uk.md b/markdown/org/docs/measurements/bustspan/uk.md new file mode 100644 index 00000000000..9bdfed4bafa --- /dev/null +++ b/markdown/org/docs/measurements/bustspan/uk.md @@ -0,0 +1,7 @@ +--- +title: Bust span +--- + +The **bust span** is the horizontal distance between the two apex points of your bust. + +To measure your bust span, run the tape measure horizontally in a straight line from the tip of your one breast to the tip of the other. diff --git a/markdown/org/docs/measurements/chest/uk.md b/markdown/org/docs/measurements/chest/uk.md new file mode 100644 index 00000000000..6344d58eab8 --- /dev/null +++ b/markdown/org/docs/measurements/chest/uk.md @@ -0,0 +1,7 @@ +--- +title: Chest circumference +--- + +The **chest circumference** measurement wraps around the fullest part of your chest. + +To measure your chest circumference, wrap the tape measure around your chest at the fullest part. Make sure to keep the tape measure horizontal (parallel to the floor). diff --git a/markdown/org/docs/measurements/crossseam/uk.md b/markdown/org/docs/measurements/crossseam/uk.md new file mode 100644 index 00000000000..500f34620b1 --- /dev/null +++ b/markdown/org/docs/measurements/crossseam/uk.md @@ -0,0 +1,7 @@ +--- +title: Cross seam +--- + +The **cross seam** is measured from the waist line at the front through your legs to the back. + +To measure your **cross seam** tie a string around your waist. Then, measure down from the center front of your waist going through your legs back up to the back until you meet the string at your waist. diff --git a/markdown/org/docs/measurements/crossseamfront/uk.md b/markdown/org/docs/measurements/crossseamfront/uk.md new file mode 100644 index 00000000000..9581768a66b --- /dev/null +++ b/markdown/org/docs/measurements/crossseamfront/uk.md @@ -0,0 +1,11 @@ +--- +title: Cross seam front +--- + +The **cross seam front** is the front part of the [cross seam](/docs/measurements/crossseam/) measurement. + +To measure your **cross seam front** tie a string around your waist. Then, measure down from the center front of your waist until the spot that is: + +- Where the fork of a tight-fitting pair of trousers would sit +- At the base of your scrotum +- Somewhere towards the front of your perineum diff --git a/markdown/org/docs/measurements/crotchdepth/uk.md b/markdown/org/docs/measurements/crotchdepth/uk.md new file mode 100644 index 00000000000..74ccf4ebae3 --- /dev/null +++ b/markdown/org/docs/measurements/crotchdepth/uk.md @@ -0,0 +1,7 @@ +--- +title: Crotch depth +--- + +The **crotch depth** measurement is the height your waist rises from the surface you are sitting on. + +To measure your crotch depth, sit straight on a flat chair or table, and measure from waist line down to the chair/table. diff --git a/markdown/org/docs/measurements/head/uk.md b/markdown/org/docs/measurements/head/uk.md new file mode 100644 index 00000000000..ea14c882d90 --- /dev/null +++ b/markdown/org/docs/measurements/head/uk.md @@ -0,0 +1,7 @@ +--- +title: Head circumference +--- + +The **head circumference** measurement wraps around the fullest part of your head. + +To measure your head circumference, wrap the tape measure around your head at the height of your forehead. diff --git a/markdown/org/docs/measurements/heel/uk.md b/markdown/org/docs/measurements/heel/uk.md new file mode 100644 index 00000000000..584015e52d1 --- /dev/null +++ b/markdown/org/docs/measurements/heel/uk.md @@ -0,0 +1,7 @@ +--- +title: Heel circumference +--- + +The **heel circumference** measurement is the narrowest measurement a trouser leg can be so you can still get in to it. + +To measure your heel circumference, stretch your foot forward, and run the tape measure around your foot at the widest part of your heel. diff --git a/markdown/org/docs/measurements/highbust/uk.md b/markdown/org/docs/measurements/highbust/uk.md new file mode 100644 index 00000000000..b8e99e9bc47 --- /dev/null +++ b/markdown/org/docs/measurements/highbust/uk.md @@ -0,0 +1,9 @@ +--- +title: High bust +--- + +The **high bust** measurement is your chest circumference measured just under your arms, above the fullest part of your bust. + +The point of the high bust measurement is to get an idea of the chest circumference without taking breasts into account. As such, this measurement is only relevant for models with breasts. + +To measure your high bust, wrap the tape measure around your chest just under your arms. You might not be able to keep it horizontal (parallel to the floor), but that's ok. diff --git a/markdown/org/docs/measurements/highbustfront/uk.md b/markdown/org/docs/measurements/highbustfront/uk.md new file mode 100644 index 00000000000..274721d1400 --- /dev/null +++ b/markdown/org/docs/measurements/highbustfront/uk.md @@ -0,0 +1,8 @@ +--- +title: High bust front +--- + +The **high bust front** measurement is the front part of your **high bust** measurement: your chest circumference measured just under your arms, above the fullest part of your bust. + +To measure your high bust front, wrap the tape measure around your chest just under your arms and measure from the side (seam) across your breasts to the other side (seam).\ +You might not be able to keep it horizontal (parallel to the floor), but that's ok. diff --git a/markdown/org/docs/measurements/hips/uk.md b/markdown/org/docs/measurements/hips/uk.md new file mode 100644 index 00000000000..dca41d9a6ab --- /dev/null +++ b/markdown/org/docs/measurements/hips/uk.md @@ -0,0 +1,7 @@ +--- +title: Hips circumference +--- + +The **hips circumference** is measured at the top of your hip bones. + +To measure your **hips circumference** put a tape measure around your body at the height of your hip bone. diff --git a/markdown/org/docs/measurements/hps/uk.md b/markdown/org/docs/measurements/hps/uk.md new file mode 100644 index 00000000000..2f028b25507 --- /dev/null +++ b/markdown/org/docs/measurements/hps/uk.md @@ -0,0 +1,7 @@ +--- +title: High Point Shoulder (HPS) +--- + +The _high point shoulder_ or _HPS_ point is used as the base for several vertical measurements. + +The HPS is where your shoulder seam would meet your neck. The point is situated where your neck meets your shoulder. If you put a marble there, it should not roll forward or backward, but roll towards your shoulder (as in, it should sit in the middle) diff --git a/markdown/org/docs/measurements/hpstobust/es.md b/markdown/org/docs/measurements/hpstobust/es.md index a0d6ce10494..02a9483fba7 100644 --- a/markdown/org/docs/measurements/hpstobust/es.md +++ b/markdown/org/docs/measurements/hpstobust/es.md @@ -19,11 +19,8 @@ El punto de esta medida es localizar la parte más completa de su busto vertical -##### Think about which hand you're using - -If you measure yourself, you might try to hold your measuring tape up to your shoulder with the hand on -the same side of your body as the shoulder you're measuring. So, for example, you could be holding the top of -the tape up to your right shoulder with your right hand, while your left hand is holding the end. +So, for example, you could be holding the top of +the tape up to your right shoulder with your right hand, while your left hand is holding the end. Pero eso significa que distorsionas la longitud que intentas medir al levantar el brazo del mismo lado. Pero eso significa que distorsionas la longitud que intentas medir al levantar el brazo del mismo lado. You might not think there is a difference, but all is connected in the world of physiology, and doing this could lead to an error of ~2.5cm (~1 inch) in your measurement.\ diff --git a/markdown/org/docs/measurements/hpstobust/fr.md b/markdown/org/docs/measurements/hpstobust/fr.md index de73441a3ba..da568d1d176 100644 --- a/markdown/org/docs/measurements/hpstobust/fr.md +++ b/markdown/org/docs/measurements/hpstobust/fr.md @@ -19,11 +19,8 @@ L'objectif de cette mensuration est de déterminer la part la plus importante ve -##### Think about which hand you're using - -If you measure yourself, you might try to hold your measuring tape up to your shoulder with the hand on -the same side of your body as the shoulder you're measuring. So, for example, you could be holding the top of -the tape up to your right shoulder with your right hand, while your left hand is holding the end. +So, for example, you could be holding the top of +the tape up to your right shoulder with your right hand, while your left hand is holding the end. Mais cela signifie que vous déformerez la longueur que vous essayez de mesurer en levant votre bras du même côté. Mais cela signifie que vous déformerez la longueur que vous essayez de mesurer en levant votre bras du même côté. You might not think there is a difference, but all is connected in the world of physiology, and doing this could lead to an error of ~2.5cm (~1 inch) in your measurement.\ diff --git a/markdown/org/docs/measurements/hpstobust/nl.md b/markdown/org/docs/measurements/hpstobust/nl.md index 714bee46cb5..4cbae29fa25 100644 --- a/markdown/org/docs/measurements/hpstobust/nl.md +++ b/markdown/org/docs/measurements/hpstobust/nl.md @@ -19,11 +19,8 @@ Het punt van deze afmeting is bepalen op welke hoogte het volste deel van je bus -##### Think about which hand you're using - -If you measure yourself, you might try to hold your measuring tape up to your shoulder with the hand on -the same side of your body as the shoulder you're measuring. So, for example, you could be holding the top of -the tape up to your right shoulder with your right hand, while your left hand is holding the end. +So, for example, you could be holding the top of +the tape up to your right shoulder with your right hand, while your left hand is holding the end. Maar dat betekent dat je de lengte die je probeert te meten verdraait door je arm aan dezelfde kant op te tillen. Maar dat betekent dat je de lengte die je probeert te meten verdraait door je arm aan dezelfde kant op te tillen. You might not think there is a difference, but all is connected in the world of physiology, and doing this could lead to an error of ~2.5cm (~1 inch) in your measurement.\ diff --git a/markdown/org/docs/measurements/hpstobust/uk.md b/markdown/org/docs/measurements/hpstobust/uk.md new file mode 100644 index 00000000000..36dd57e9347 --- /dev/null +++ b/markdown/org/docs/measurements/hpstobust/uk.md @@ -0,0 +1,34 @@ +--- +title: HPS to bust +--- + + + +###### HPS: high point shoulder + +The _high point shoulder_ or _HPS_ point is used as the base for several vertical measurements. +Refer to [the hps documentation](/docs/measurements/hps/) for information on how to locate this point. + + + +The **high point shoulder (HPS) to bust** measurement runs from your HPS down to the line that forms your bust span. + +To measure your HPS to bust, first [localize your HPS point](/docs/measurements/hps/). Then measure straight down to the line that forms your chest circumference/bust span. + +The point of this measurement is to locate the fullest part of your bust vertically on your torso. + + + +##### Think about which hand you're using + +If you measure yourself, you might try to hold your measuring tape up to your shoulder with the hand on +the same side of your body as the shoulder you're measuring. So, for example, you could be holding the top of +the tape up to your right shoulder with your right hand, while your left hand is holding the end. +But that means you distort the length you are trying to measure by raising your arm on the same side. +You might not think there is a difference, but all is connected in the world of physiology, and +doing this could lead to an error of ~2.5cm (~1 inch) in your measurement.\ +Simply switch your hands around, and you get a more accurate measurement. + +For best results, get a second person to take your measurements (if possible). + + diff --git a/markdown/org/docs/measurements/hpstowaistback/uk.md b/markdown/org/docs/measurements/hpstowaistback/uk.md new file mode 100644 index 00000000000..0923fd522c5 --- /dev/null +++ b/markdown/org/docs/measurements/hpstowaistback/uk.md @@ -0,0 +1,16 @@ +--- +title: HPS to waist back +--- + + + +###### HPS: high point shoulder + +The _high point shoulder_ or _HPS_ point is used as the base for several vertical measurements. +Refer to [the hps documentation](/docs/measurements/hps/) for information on how to locate this point. + + + +The **high point shoulder (HPS) to waist back** measurement runs from your HPS down to your waist line. + +To measure your HPS to waist back, first [localize your HPS point](/docs/measurements/hps/). Then measure straight down to your waist line. diff --git a/markdown/org/docs/measurements/hpstowaistfront/uk.md b/markdown/org/docs/measurements/hpstowaistfront/uk.md new file mode 100644 index 00000000000..bb84a091eaa --- /dev/null +++ b/markdown/org/docs/measurements/hpstowaistfront/uk.md @@ -0,0 +1,16 @@ +--- +title: HPS to waist front +--- + + + +###### HPS: high point shoulder + +The _high point shoulder_ or _HPS_ point is used as the base for several vertical measurements. +Refer to [the hps documentation](/docs/measurements/hps/) for information on how to locate this point. + + + +The **high point shoulder (HPS) to waist front** measurement runs from your HPS down to your waist line across the front of your body. + +To measure your HPS to waist front, first [localize your HPS point](/docs/measurements/hps/). Then measure straight down to your waist line. diff --git a/markdown/org/docs/measurements/inseam/uk.md b/markdown/org/docs/measurements/inseam/uk.md new file mode 100644 index 00000000000..66b84904c39 --- /dev/null +++ b/markdown/org/docs/measurements/inseam/uk.md @@ -0,0 +1,7 @@ +--- +title: Inseam +--- + +The **inseam** is the measurement from your crotch down to the floor. + +To measure your **inseam**, measure down vertically from the point your legs join (at the crotch) down to the floor. diff --git a/markdown/org/docs/measurements/knee/uk.md b/markdown/org/docs/measurements/knee/uk.md new file mode 100644 index 00000000000..e47be90643e --- /dev/null +++ b/markdown/org/docs/measurements/knee/uk.md @@ -0,0 +1,7 @@ +--- +title: Knee circumference +--- + +The **knee circumference** is the measurement around your knee. + +To measure your **knee circumference**, wrap the tape measure around your knee. Make sure to keep the tape measure horizontal to the floor as you measure the circumference of your knee. diff --git a/markdown/org/docs/measurements/neck/uk.md b/markdown/org/docs/measurements/neck/uk.md new file mode 100644 index 00000000000..bcb9892b5d5 --- /dev/null +++ b/markdown/org/docs/measurements/neck/uk.md @@ -0,0 +1,7 @@ +--- +title: Neck circumference +--- + +The **neck circumference** is the measurement around your neck, at the level you would wear your shirt collar, or tie. + +To measure your **neck circumference**, wrap the tape measure around your neck where your shirt collar would sit. diff --git a/markdown/org/docs/measurements/seat/uk.md b/markdown/org/docs/measurements/seat/uk.md new file mode 100644 index 00000000000..83fad8ac8e3 --- /dev/null +++ b/markdown/org/docs/measurements/seat/uk.md @@ -0,0 +1,7 @@ +--- +title: Seat circumference +--- + +The **seat circumference** is the measurement around the fullest part of your bum. + +To measure your **seat circumference**, run the tape measure around your bum at the fullest part. Make sure to keep the tape measure horizontal while doing so. In other words, parallel to the floor. diff --git a/markdown/org/docs/measurements/seatback/uk.md b/markdown/org/docs/measurements/seatback/uk.md new file mode 100644 index 00000000000..e8acd415c34 --- /dev/null +++ b/markdown/org/docs/measurements/seatback/uk.md @@ -0,0 +1,9 @@ +--- +title: Seat back +--- + +The **seat back** is the back portion of your seat circumference. + +To measure your **seat back**, run the tape measure around your bum at the fullest part, and check the length of the back part. + +Make sure to keep the tape measure horizontal while doing so. In other words, parallel to the floor. diff --git a/markdown/org/docs/measurements/shoulderslope/uk.md b/markdown/org/docs/measurements/shoulderslope/uk.md new file mode 100644 index 00000000000..8c045e8c7a9 --- /dev/null +++ b/markdown/org/docs/measurements/shoulderslope/uk.md @@ -0,0 +1,22 @@ +--- +title: Shoulder slope +--- + +The **shoulder slope** measurement is an indicator for the amount with which your shoulder slopes downward. + +To measure your shoulder slope, you need to determine the angle at which your shoulder line slopes downward. + +A good way to measure your shoulder slope is to take a a selfie and rotate it until your shoulder line is horizontal. + +The angle you had to rotate is your shoulder slope. + + + +Almost all people have a slightly different shoulder slope on both sides. +That's because your dominant arm is more pronounced. + +Unless the different is huge, best not to worry about it. +It won't show up for casual garments, and for formal wear, it's better to add +asymmetric shoulder padding, rather than create an asymmetric pattern. + + diff --git a/markdown/org/docs/measurements/shouldertoelbow/uk.md b/markdown/org/docs/measurements/shouldertoelbow/uk.md new file mode 100644 index 00000000000..36f254285f8 --- /dev/null +++ b/markdown/org/docs/measurements/shouldertoelbow/uk.md @@ -0,0 +1,7 @@ +--- +title: Shoulder to elbow +--- + +The **shoulder to elbow** measurement runs from the edge of your shoulder down to your elbow. + +To measure your **shoulder to elbow**, start at the edge of your shoulder, where your sleeve starts at a well-fitting shirt. Follow your arm down to your elbow. diff --git a/markdown/org/docs/measurements/shouldertoshoulder/uk.md b/markdown/org/docs/measurements/shouldertoshoulder/uk.md new file mode 100644 index 00000000000..9817050f64a --- /dev/null +++ b/markdown/org/docs/measurements/shouldertoshoulder/uk.md @@ -0,0 +1,7 @@ +--- +title: Shoulder to shoulder +--- + +The **shoulder to shoulder** measurement runs from the tip of your shoulder on one side across your back to the tip of your other shoulder. + +To measure your **shoulder to shoulder** find the edge of your shoulder where on a good fitting shirt the shoulder seam would sit. Then, measure from there across your back to the same point at the other side. diff --git a/markdown/org/docs/measurements/shouldertowrist/uk.md b/markdown/org/docs/measurements/shouldertowrist/uk.md new file mode 100644 index 00000000000..3854b76ef7b --- /dev/null +++ b/markdown/org/docs/measurements/shouldertowrist/uk.md @@ -0,0 +1,7 @@ +--- +title: Shoulder to wrist +--- + +The **shoulder to wrist** measurement determines your sleeve length, and runs from the shoulder point along the arm to your wrist. + +To measure your **shoulder to wrist** measurement, place your tape measure at your shoulder point. Let your arm hang naturally in a slight bend, and measure along your slightly bent arm up to your wrist. diff --git a/markdown/org/docs/measurements/uk.md b/markdown/org/docs/measurements/uk.md new file mode 100644 index 00000000000..56b8ffad3ab --- /dev/null +++ b/markdown/org/docs/measurements/uk.md @@ -0,0 +1,6 @@ +--- +title: Measurements +order: 300 +--- + + diff --git a/markdown/org/docs/measurements/underbust/uk.md b/markdown/org/docs/measurements/underbust/uk.md new file mode 100644 index 00000000000..dd9c054f7bc --- /dev/null +++ b/markdown/org/docs/measurements/underbust/uk.md @@ -0,0 +1,9 @@ +--- +title: Underbust +--- + +The **underbust** measurement is the circumference of your chest without taking your breasts into account. + +To measure your **underbust**, wrap the tape measure around your chest just below your breasts, where your bra band sits. + +If you don’t have breasts, this measurement does not apply to you. Just use your chest circumference. diff --git a/markdown/org/docs/measurements/upperleg/uk.md b/markdown/org/docs/measurements/upperleg/uk.md new file mode 100644 index 00000000000..6b6135ecff6 --- /dev/null +++ b/markdown/org/docs/measurements/upperleg/uk.md @@ -0,0 +1,16 @@ +--- +title: Upper leg circumference +--- + +The **upper leg circumference** is the measurement around your leg, near the top of your leg. + +You should measure this a bit below your crotch, refer to the illustration for guidance.\ +Make sure to keep the tape measure horizontal to the floor as you measure the circumference of your leg. + + + +##### Be mindful of the vertical location of this measurement + +This measurements is also used as **a vertical reference** to determine the vertical space in which to draft the seat/crotch of trousers. As such, the vertical location of this measurement is important. + + diff --git a/markdown/org/docs/measurements/waist/uk.md b/markdown/org/docs/measurements/waist/uk.md new file mode 100644 index 00000000000..611b8078f91 --- /dev/null +++ b/markdown/org/docs/measurements/waist/uk.md @@ -0,0 +1,7 @@ +--- +title: Waist circumference +--- + +The **waist circumference** measurement is the circumference of your waist below your ribcage. + +To measure your **waist circumference**, wrap the tape measure around the narrowest part of your waist, making sure to keep it horizontal. diff --git a/markdown/org/docs/measurements/waistback/uk.md b/markdown/org/docs/measurements/waistback/uk.md new file mode 100644 index 00000000000..fbb8b149ab8 --- /dev/null +++ b/markdown/org/docs/measurements/waistback/uk.md @@ -0,0 +1,7 @@ +--- +title: Waist back +--- + +The **waist back** measurement is the back part of your waist circumference. + +To measure your **waist back**, wrap the tape measure around the narrowest part of your waist, making sure to keep it horizontal. Then, measure the length from one side over your back to the other. diff --git a/markdown/org/docs/measurements/waisttofloor/uk.md b/markdown/org/docs/measurements/waisttofloor/uk.md new file mode 100644 index 00000000000..61185c43b35 --- /dev/null +++ b/markdown/org/docs/measurements/waisttofloor/uk.md @@ -0,0 +1,9 @@ +--- +title: Waist to floor +--- + +The **waist to floor** is the measurement from your waist down to the floor. + +To measure your waist to floor measurement, locate the height of your waist, and measure how high it is from the floor. + +It is often easiest to measure at the side of your body. diff --git a/markdown/org/docs/measurements/waisttohips/uk.md b/markdown/org/docs/measurements/waisttohips/uk.md new file mode 100644 index 00000000000..24ee4fe0f8f --- /dev/null +++ b/markdown/org/docs/measurements/waisttohips/uk.md @@ -0,0 +1,5 @@ +--- +title: Waist to hips +--- + +The **waist to hips** measurement is measured from your waist down to the top of your hip bone (where your trousers sit). Measure it at the side of your body. diff --git a/markdown/org/docs/measurements/waisttoknee/uk.md b/markdown/org/docs/measurements/waisttoknee/uk.md new file mode 100644 index 00000000000..a231e8b9fdc --- /dev/null +++ b/markdown/org/docs/measurements/waisttoknee/uk.md @@ -0,0 +1,7 @@ +--- +title: Waist to knee +--- + +The **waist to knee** is the measurement from your waist down towards your knee, measured on the side of your body. + +To measure your **waist to knee**, locate the height of both your waist and your knee, and measure the vertical distance between them. Make sure to measure at the side of your body. diff --git a/markdown/org/docs/measurements/waisttoseat/uk.md b/markdown/org/docs/measurements/waisttoseat/uk.md new file mode 100644 index 00000000000..f8adbf48931 --- /dev/null +++ b/markdown/org/docs/measurements/waisttoseat/uk.md @@ -0,0 +1,7 @@ +--- +title: Waist to seat +--- + +The **waist to seat** is the measurement from your waist down towards the fullest part of your bum, measured on the side of your body. + +To measure your **waist to seat**, locate the height of both your waist and seat circumference, and measure the vertical distance between them. Make sure to measure at the side of your body. diff --git a/markdown/org/docs/measurements/waisttounderbust/uk.md b/markdown/org/docs/measurements/waisttounderbust/uk.md new file mode 100644 index 00000000000..75bb34d148c --- /dev/null +++ b/markdown/org/docs/measurements/waisttounderbust/uk.md @@ -0,0 +1,7 @@ +--- +title: Waist to underbust +--- + +The **waist to underbust** is the measurement from your waist up towards your underbust link (where your bra band sits). + +To measure your **waist to underbust**, locate the height of both your waist and underbust, and measure the vertical distance between them. Make sure to measure at the side of your body. diff --git a/markdown/org/docs/measurements/waisttoupperleg/uk.md b/markdown/org/docs/measurements/waisttoupperleg/uk.md new file mode 100644 index 00000000000..82b778775c0 --- /dev/null +++ b/markdown/org/docs/measurements/waisttoupperleg/uk.md @@ -0,0 +1,5 @@ +--- +title: Waist to upper leg +--- + +The **waist to upper leg** is measured from your waist down to the top of your leg. Measure it at the side of your body. diff --git a/markdown/org/docs/measurements/wrist/uk.md b/markdown/org/docs/measurements/wrist/uk.md new file mode 100644 index 00000000000..ffdb4f62932 --- /dev/null +++ b/markdown/org/docs/measurements/wrist/uk.md @@ -0,0 +1,7 @@ +--- +title: Wrist circumference +--- + +The **wrist circumference** measurement is the circumference of your wrist. + +To measure your **wrist circumference**, run the tape measure around your wrist, where your arm joins your hand. diff --git a/markdown/org/docs/patterns/aaron/cutting/uk.md b/markdown/org/docs/patterns/aaron/cutting/uk.md new file mode 100644 index 00000000000..ddeaaeb7cd1 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/cutting/uk.md @@ -0,0 +1,19 @@ +*** + +title: "Aaron A-Shirt: Cutting Instructions" + +*** + +- Cut **1 back** on the fold +- Cut **1 front** on the fold +- Cut **3 strips** for neck opening and armhole binding + + + +#### Caveats + +- There is no seam allowance on the armholes +- There is no seam allowance on the neck opening +- There is extra hem allowance at the hem + + diff --git a/markdown/org/docs/patterns/aaron/fabric/uk.md b/markdown/org/docs/patterns/aaron/fabric/uk.md new file mode 100644 index 00000000000..752ac009ee7 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/fabric/uk.md @@ -0,0 +1,15 @@ +*** + +title: "Aaron A-Shirt: Fabric Options" + +*** + +An A-shirt is essentially underwear. And in that capacity, you want something that is comfortable, feels nice on your skin and breaths. + +Cotton with a hint of something stretchy, maybe rayon, or a fine knit. I suggest you go to the fabric store and feel around a bit. + + + +While stretch is not required, it does make sense for underwear. That being said, you can make this in a non-stretch, just make sure pick loose or casual fit. + + diff --git a/markdown/org/docs/patterns/aaron/instructions/uk.md b/markdown/org/docs/patterns/aaron/instructions/uk.md new file mode 100644 index 00000000000..d5b4f5f85f5 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/instructions/uk.md @@ -0,0 +1,176 @@ +*** + +title: "Aaron A-Shirt: Sewing Instructions" + +*** + +## Step 1: Close seams + +![Close the side and shoulder seams](step01.png) + +Put front and back on top of each other with _good sides together_. Sew the side seams and the short seams at the shoulder straps. If you have a serger, this is a good moment to use it. If not, finish your seams otherwise. + +## Step 2: Finish hem + +![Finish the hem](step02.png) + +Fold the hem upwards, and sew it down. If you have a coverlock, use it. If not, use a _twin needle_ or _zig-zag stitch_ to keep the seam stretchable. + + + +##### Fold only once, to avoid bulk + +Knitwear doesn't ravel, so you can simply fold this over once and sew it down, then neatly trim back the fabric. + + + +## Step 3: Sew knit binding to the front + + + +##### About knit binding + +If you are new to [knit binding](/docs/sewing/knit-binding), you might read [this page on the subject](/docs/sewing/knit-binding). + +###### Repeat steps 3 and 4 for both armholes and the neck opening + +The procedure outlined below applies to both of the armholes as well as the neck opening. In other words, you'll have to do this three times. + +###### Start with the simplest opening + +I would advise you to start with whatever opening has the most uniform curvature. By default, those are the arm holes, but if you changed the pattern options (think racerback) that might not be the case. + +Either way, the less sharp bends you have, the easier it will be. So start with that to warm up before you do the trickier bends. + + + +We are going to finish the arm and neck hole with [knit binding](/docs/sewing/knit-binding) (note: not a knit band. There's a difference, and it's explained [here](/docs/sewing/knit-binding)). + + + +This is the only part of making this A-shirt that requires a bit of practice. Don't worry, all you need to do is make a couple of these and you'll be a pro in no time. + + + +### Pick your spot + +![Applying knit binding](step03a.png) + +The first thing we need to do is decide where we are going to start/stop our binding. Here's what I suggest: + +- For the armholes: at the side seam. This will hide our seam under the arm +- For the neck opening: the center back of the neck. You might want to mark this with a pin + +### Place (the start of) your binding + +![Place (the start of) your binding](step03b.png) + +Put your A-shirt down with the good side up, and place your binding strip on top of it with the good side down (as in, good sides together). + +Align the long edge of your strip with the edge of your fabric so the strip lies on top of the fabric (not in the opening). Place the corner on your starting point. + +Now shift your binding strip 1cm beyond your starting point. This little extra will guarantee we can join the two ends later. + +### Make sure you know where to sew + +![Make sure you know where to sew](step03c.png) + +We are going to sew 1.5cm from the edge. So be careful because this is not the standard seam allowance. + + + +The easy way to keep this 1.5cm distance is by using a seam gauge. +Or do what I do, place a piece of marking tape on your sewing machine and mark a line on it 1.5cm from your needle. +Then all you need to do is keep the edge of your fabric aligned with that line. + + + +Also, we are not starting at our start point, but we skip the first 3cm. We'll need this wiggle room later to join the ends of our binding. + +### Sew binding in place + +![Sew binding in place](step03d.png) + +Sew your binding in place while gently stretching the binding, but not the fabric. Make sure not to sew the last 3cm but leave them, just as you did at the start. + +You might need to practice a bit to get the hang of it. + +> Make sure to stretch your binding more when you're taking a sharper bend. Read my notes on [knit binding](/docs/sewing/knit-binding) for more info. + +### Mark binding ends + +![Joining the binding ends](step03e.png) + +With about 6cm left to go before we complete our circle, it's time to sew the ends of the binding together. + +![Mark binding ends](step03f.png) + +Take one of the edges, and stretch it along the 3cm seperating it from the start point as you would while sewing. + +Mark the binding where it reaches the start point. Do the same for the other end. + +### Sew binding ends together + +![Join the ends of the binding](step03g.png) + +Fold your A-shirt in whatever way makes it easier for you to place both binding ends with good sides together, aligning the marks. Sew them together on the mark. + +> 6 cm is not much, but should be enough to get both edges comfortably under your sewing machine to sew them togther. + +### Finish last 6cm of binding + +![Sew binding ends together](step03h.png) + +Now that your binding ends are joined together, it's time to finish the last 6cm of binding. Sew it down, staying 1.5cm from the edge as you did before. + +## Step 4: Fold knit binding to the back and sew down + +### Fold your binding over the fabric edge to the back + +![Fold knit binding to the back](step04a.png) + +Fold your binding fabric around the fabric of your A-shirt to the back. This is how we'll sew it down. + +> While the fabric is folded double at the front (hiding the fabric edge in the process) there's no need for that at the back. We will merely trim back the edge later, given that knit doesn't ravel. If we were to fold back the fabric at the back too, it would only add bulk. + +### Sew your binding down + +![Sew the knit binding down](step04b.png) + +From the right side of your fabric, sew along the inner edge of your binding (furthest from the edge), making sure to catch the binding at the back in the process. + + + +If you have a coverlock machine, that would be perfect for this seam + + + +You'll have to, once again, stretch your binding a bit while doing this. But this time, there's an extra caveat to look out for. + + + +##### Beware of the uneven feed + +As you feed your binding through your sewing machine, the feed dogs will pull the bottom layer (back of your binding) forward. + +In a perfect world, all layers will follow smoothly. +But more often than not, the top layer (front of your binding) tends to lag behind a bit. +This causes your binding to not neatly fold around the edge of the fabric, but make ugly wrinkles. + +So watch out for this, and if you see it happening, stretch the under-layer a bit extra to compensate. + + + +## Step 5: Trim back knit binding on the inside + +![Trim back knit binding on the inside](step05.png) + +On the inside of your A-shirt, trim back the knit binding against your seam to finish up. + + + +Be careful not to cut a hole in your A-shirt. Seriously, this happened to me on more than one occasion. + + + +![That's it, you're done 👍](finished.gif) diff --git a/markdown/org/docs/patterns/aaron/measurements/uk.md b/markdown/org/docs/patterns/aaron/measurements/uk.md new file mode 100644 index 00000000000..8a73d8767eb --- /dev/null +++ b/markdown/org/docs/patterns/aaron/measurements/uk.md @@ -0,0 +1,7 @@ +*** + +title: "Aaron A-Shirt: Required Measurements" + +*** + + diff --git a/markdown/org/docs/patterns/aaron/needs/uk.md b/markdown/org/docs/patterns/aaron/needs/uk.md new file mode 100644 index 00000000000..3a082cca609 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/needs/uk.md @@ -0,0 +1,21 @@ +*** + +title: "Aaron A-Shirt: What You Need" + +*** + +To make Aaron, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 0.75 meters (0.8 yards) of a suitable fabric ([see Fabric options](/docs/patterns/aaron/fabric)) + + + +#### A serger/overlock is nice, but optional + +As with all knitwear and stretch fabrics, a serger/overlock will make your life easier. + +If you do not have one of those, don't despair. You don't really need it. +Because these side seams and shoulder seams won't get stretched out, you can just sew them with a regular straight stitch. + + diff --git a/markdown/org/docs/patterns/aaron/options/armholedrop/aaron_armholedrop_sample.svg b/markdown/org/docs/patterns/aaron/options/armholedrop/aaron_armholedrop_sample.svg index a2fbb503550..8b9cccf71c2 100644 --- a/markdown/org/docs/patterns/aaron/options/armholedrop/aaron_armholedrop_sample.svg +++ b/markdown/org/docs/patterns/aaron/options/armholedrop/aaron_armholedrop_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/de.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/de.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/de.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/en.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/en.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/en.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/es.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/es.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/es.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/fr.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/fr.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/fr.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/nl.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/nl.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/nl.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/draftforhighbust/uk.md b/markdown/org/docs/patterns/aaron/options/draftforhighbust/uk.md new file mode 100644 index 00000000000..78955c01170 --- /dev/null +++ b/markdown/org/docs/patterns/aaron/options/draftforhighbust/uk.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](aaron_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/aaron/options/hipsease/aaron_hipsease_sample.svg b/markdown/org/docs/patterns/aaron/options/hipsease/aaron_hipsease_sample.svg index e9d0efa84fc..707adf48ffc 100644 --- a/markdown/org/docs/patterns/aaron/options/hipsease/aaron_hipsease_sample.svg +++ b/markdown/org/docs/patterns/aaron/options/hipsease/aaron_hipsease_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/de.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/de.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/de.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/en.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/en.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/en.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/es.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/es.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/es.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/fr.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/fr.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/fr.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/nl.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/nl.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/nl.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/draftforhighbust/uk.md b/markdown/org/docs/patterns/bent/options/draftforhighbust/uk.md new file mode 100644 index 00000000000..4ec621c6a9b --- /dev/null +++ b/markdown/org/docs/patterns/bent/options/draftforhighbust/uk.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](bent_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/bent/options/frontarmholedeeper/bent_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/bent/options/frontarmholedeeper/bent_frontarmholedeeper_sample.svg index 99e518fce84..a7d96ef1b57 100644 --- a/markdown/org/docs/patterns/bent/options/frontarmholedeeper/bent_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/bent/options/frontarmholedeeper/bent_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/brian/options/draftforhighbust/en.md b/markdown/org/docs/patterns/brian/options/draftforhighbust/en.md new file mode 100644 index 00000000000..871e29daab3 --- /dev/null +++ b/markdown/org/docs/patterns/brian/options/draftforhighbust/en.md @@ -0,0 +1,9 @@ +--- +title: undefined +--- + +undefined + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](brian_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/brian/options/fr.md b/markdown/org/docs/patterns/brian/options/fr.md index 1bb8b5ec5b9..61fcf64ded2 100644 --- a/markdown/org/docs/patterns/brian/options/fr.md +++ b/markdown/org/docs/patterns/brian/options/fr.md @@ -87,14 +87,14 @@ We now have all the start and end points to draw the 5 curves that will make up For each of the anchor points (the ones marked in orange, not points 1 and 2) there is an option to control the spread upwards, and downwards: -- [Répartition de tête de manche vers le bas Q1](/docs/patterns/brian/options/sleevecapq1spread1) : contrôle la répartition vers le bas dans le premier quadrant -- [Répartition de tête de manche vers le haut Q1](/docs/patterns/brian/options/sleevecapq1spread2) : contrôle la répartition vers le haut dans le premier quadrant -- [Répartition de tête de manche vers le bas Q2](/docs/patterns/brian/options/sleevecapq2spread1) : contrôle la répartition vers le bas dans le deuxième quadrant -- [Répartition de tête de manche vers le haut Q2](/docs/patterns/brian/options/sleevecapq2spread2) : contrôle la répartition vers le haut dans le deuxième quadrant -- [Répartition de tête de manche vers le haut Q3](/docs/patterns/brian/options/sleevecapq3spread1) : contrôle la répartition vers le haut dans le troisième quadrant -- [Répartition de tête de manche vers le bas Q3](/docs/patterns/brian/options/sleevecapq3spread2) : contrôle la répartition vers le bas dans le troisième quadrant -- [Répartition de tête de manche vers le haut Q4](/docs/patterns/brian/options/sleevecapq4spread1) : contrôle la répartition vers le haut dans le quatrième quadrant -- [Répartition de tête de manche vers le bas Q4](/docs/patterns/brian/options/sleevecapq4spread2) : contrôle la répartition vers le bas dans le quatrième quadrant +- [Répartition de tête de manche vers le bas Q1](/docs/patterns/brian/options/sleevecapq1spread1) : contrôle la répartition vers le bas dans le premier quadrant<0><0> +- [Répartition de tête de manche vers le haut Q1](/docs/patterns/brian/options/sleevecapq1spread2) : contrôle la répartition vers le haut dans le premier quadrant<0><0> +- [Répartition de tête de manche vers le bas Q2](/docs/patterns/brian/options/sleevecapq2spread1) : contrôle la répartition vers le bas dans le deuxième quadrant<0><0> +- [Répartition de tête de manche vers le haut Q2](/docs/patterns/brian/options/sleevecapq2spread2) : contrôle la répartition vers le haut dans le deuxième quadrant<0><0> +- [Répartition de tête de manche vers le haut Q3](/docs/patterns/brian/options/sleevecapq3spread1) : contrôle la répartition vers le haut dans le troisième quadrant<0><0> +- [Répartition de tête de manche vers le bas Q3](/docs/patterns/brian/options/sleevecapq3spread2) : contrôle la répartition vers le bas dans le troisième quadrant<0><0> +- [Répartition de tête de manche vers le haut Q4](/docs/patterns/brian/options/sleevecapq4spread1) : contrôle la répartition vers le haut dans le quatrième quadrant<0><0> +- [Répartition de tête de manche vers le bas Q4](/docs/patterns/brian/options/sleevecapq4spread2) : contrôle la répartition vers le bas dans le quatrième quadrant<0><0> diff --git a/markdown/org/docs/patterns/brian/options/frontarmholedeeper/brian_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/brian/options/frontarmholedeeper/brian_frontarmholedeeper_sample.svg index 4da658ab0d4..73379d51fb7 100644 --- a/markdown/org/docs/patterns/brian/options/frontarmholedeeper/brian_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/brian/options/frontarmholedeeper/brian_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/carlton/options/draftforhighbust/en.md b/markdown/org/docs/patterns/carlton/options/draftforhighbust/en.md new file mode 100644 index 00000000000..40283a3a389 --- /dev/null +++ b/markdown/org/docs/patterns/carlton/options/draftforhighbust/en.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](carlton_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/carlton/options/frontarmholedeeper/carlton_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/carlton/options/frontarmholedeeper/carlton_frontarmholedeeper_sample.svg index d716bef199f..112c8203d85 100644 --- a/markdown/org/docs/patterns/carlton/options/frontarmholedeeper/carlton_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/carlton/options/frontarmholedeeper/carlton_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/diana/options/draftforhighbust/en.md b/markdown/org/docs/patterns/diana/options/draftforhighbust/en.md new file mode 100644 index 00000000000..34eefab926c --- /dev/null +++ b/markdown/org/docs/patterns/diana/options/draftforhighbust/en.md @@ -0,0 +1,9 @@ +--- +title: Draft for high bust +--- + +Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](diana_draftforhighbust_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/diana/options/drapeangle/diana_drapeangle_sample.svg b/markdown/org/docs/patterns/diana/options/drapeangle/diana_drapeangle_sample.svg index 01303891094..f64fe409543 100644 --- a/markdown/org/docs/patterns/diana/options/drapeangle/diana_drapeangle_sample.svg +++ b/markdown/org/docs/patterns/diana/options/drapeangle/diana_drapeangle_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/huey/options/frontarmholedeeper/huey_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/huey/options/frontarmholedeeper/huey_frontarmholedeeper_sample.svg index cc555abeac8..02c96a69b1d 100644 --- a/markdown/org/docs/patterns/huey/options/frontarmholedeeper/huey_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/huey/options/frontarmholedeeper/huey_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/hugo/options/hipsease/hugo_hipsease_sample.svg b/markdown/org/docs/patterns/hugo/options/hipsease/hugo_hipsease_sample.svg index a486c54eccb..829d72d4692 100644 --- a/markdown/org/docs/patterns/hugo/options/hipsease/hugo_hipsease_sample.svg +++ b/markdown/org/docs/patterns/hugo/options/hipsease/hugo_hipsease_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + +chestPiece + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/jaeger/options/frontarmholedeeper/jaeger_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/jaeger/options/frontarmholedeeper/jaeger_frontarmholedeeper_sample.svg index 2d086159435..8ee9b9421cb 100644 --- a/markdown/org/docs/patterns/jaeger/options/frontarmholedeeper/jaeger_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/jaeger/options/frontarmholedeeper/jaeger_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/armholedartposition/uk.md b/markdown/org/docs/patterns/noble/options/armholedartposition/uk.md new file mode 100644 index 00000000000..c012a1e1dbe --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/armholedartposition/uk.md @@ -0,0 +1,13 @@ +--- +title: "Armhole Dart Position" +--- + +*** + +The **Armhole Dart Position** option allows you to move the position of the dart/princess seam. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/de.md b/markdown/org/docs/patterns/noble/options/armholedepth/de.md index 428f856226d..c712f5a819a 100644 --- a/markdown/org/docs/patterns/noble/options/armholedepth/de.md +++ b/markdown/org/docs/patterns/noble/options/armholedepth/de.md @@ -7,3 +7,7 @@ title: "Armhole depth" The **armhole depth** option controls the depth of the armhole. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/en.md b/markdown/org/docs/patterns/noble/options/armholedepth/en.md index 428f856226d..4a6f8b81e9d 100644 --- a/markdown/org/docs/patterns/noble/options/armholedepth/en.md +++ b/markdown/org/docs/patterns/noble/options/armholedepth/en.md @@ -2,8 +2,12 @@ title: "Armhole depth" --- ---- +*** The **armhole depth** option controls the depth of the armhole. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/es.md b/markdown/org/docs/patterns/noble/options/armholedepth/es.md index 428f856226d..c712f5a819a 100644 --- a/markdown/org/docs/patterns/noble/options/armholedepth/es.md +++ b/markdown/org/docs/patterns/noble/options/armholedepth/es.md @@ -7,3 +7,7 @@ title: "Armhole depth" The **armhole depth** option controls the depth of the armhole. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/fr.md b/markdown/org/docs/patterns/noble/options/armholedepth/fr.md index 428f856226d..c712f5a819a 100644 --- a/markdown/org/docs/patterns/noble/options/armholedepth/fr.md +++ b/markdown/org/docs/patterns/noble/options/armholedepth/fr.md @@ -7,3 +7,7 @@ title: "Armhole depth" The **armhole depth** option controls the depth of the armhole. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/nl.md b/markdown/org/docs/patterns/noble/options/armholedepth/nl.md index 428f856226d..c712f5a819a 100644 --- a/markdown/org/docs/patterns/noble/options/armholedepth/nl.md +++ b/markdown/org/docs/patterns/noble/options/armholedepth/nl.md @@ -7,3 +7,7 @@ title: "Armhole depth" The **armhole depth** option controls the depth of the armhole. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/noble_armholedepth_sample.svg b/markdown/org/docs/patterns/noble/options/armholedepth/noble_armholedepth_sample.svg new file mode 100644 index 00000000000..1b838c84324 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/armholedepth/noble_armholedepth_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/armholedepth/uk.md b/markdown/org/docs/patterns/noble/options/armholedepth/uk.md new file mode 100644 index 00000000000..4a6f8b81e9d --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/armholedepth/uk.md @@ -0,0 +1,13 @@ +--- +title: "Armhole depth" +--- + +*** + +The **armhole depth** option controls the depth of the armhole. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_armholedepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/de.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/de.md index 163088b2943..fcbfa6f35a9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholecurvature/de.md +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/de.md @@ -7,3 +7,7 @@ title: "Back armhole curvature" The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md index 163088b2943..e1c8f7813d7 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/en.md @@ -2,8 +2,12 @@ title: "Back armhole curvature" --- ---- +*** The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/es.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/es.md index 163088b2943..fcbfa6f35a9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholecurvature/es.md +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/es.md @@ -7,3 +7,7 @@ title: "Back armhole curvature" The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/fr.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/fr.md index 163088b2943..fcbfa6f35a9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholecurvature/fr.md +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/fr.md @@ -7,3 +7,7 @@ title: "Back armhole curvature" The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/nl.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/nl.md index 163088b2943..fcbfa6f35a9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholecurvature/nl.md +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/nl.md @@ -7,3 +7,7 @@ title: "Back armhole curvature" The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/noble_backarmholecurvature_sample.svg b/markdown/org/docs/patterns/noble/options/backarmholecurvature/noble_backarmholecurvature_sample.svg new file mode 100644 index 00000000000..0371706b036 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/noble_backarmholecurvature_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backarmholecurvature/uk.md b/markdown/org/docs/patterns/noble/options/backarmholecurvature/uk.md new file mode 100644 index 00000000000..e1c8f7813d7 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholecurvature/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back armhole curvature" +--- + +*** + +The **back armhole curvature** option controls how much the armhole is scooped at out the bottom in the back. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/de.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/de.md index 24108f65bda..26421e67ea9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/de.md +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/de.md @@ -7,3 +7,7 @@ title: "Back armhole pitch depth" The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md index 24108f65bda..dfb039d81ce 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/en.md @@ -2,8 +2,12 @@ title: "Back armhole pitch depth" --- ---- +*** The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/es.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/es.md index 24108f65bda..26421e67ea9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/es.md +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/es.md @@ -7,3 +7,7 @@ title: "Back armhole pitch depth" The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/fr.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/fr.md index 24108f65bda..26421e67ea9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/fr.md +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/fr.md @@ -7,3 +7,7 @@ title: "Back armhole pitch depth" The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/nl.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/nl.md index 24108f65bda..26421e67ea9 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/nl.md +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/nl.md @@ -7,3 +7,7 @@ title: "Back armhole pitch depth" The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/noble_backarmholepitchdepth_sample.svg b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/noble_backarmholepitchdepth_sample.svg new file mode 100644 index 00000000000..45a91b19686 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/noble_backarmholepitchdepth_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/uk.md b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/uk.md new file mode 100644 index 00000000000..dfb039d81ce --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholepitchdepth/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back armhole pitch depth" +--- + +*** + +The **back armhole pitch depth** option controls the vertical position of the armhole pitch point at the back. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/de.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/de.md index 59479228432..e47ea0b7be6 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholeslant/de.md +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/de.md @@ -7,3 +7,7 @@ title: "Back armhole slant" The **back armhole slant** slightly rotates the armhole around the back pitch point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md index 59479228432..98dbbc22c50 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/en.md @@ -2,8 +2,12 @@ title: "Back armhole slant" --- ---- +*** The **back armhole slant** slightly rotates the armhole around the back pitch point. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/es.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/es.md index 59479228432..e47ea0b7be6 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholeslant/es.md +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/es.md @@ -7,3 +7,7 @@ title: "Back armhole slant" The **back armhole slant** slightly rotates the armhole around the back pitch point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/fr.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/fr.md index 59479228432..e47ea0b7be6 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholeslant/fr.md +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/fr.md @@ -7,3 +7,7 @@ title: "Back armhole slant" The **back armhole slant** slightly rotates the armhole around the back pitch point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/nl.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/nl.md index 59479228432..e47ea0b7be6 100644 --- a/markdown/org/docs/patterns/noble/options/backarmholeslant/nl.md +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/nl.md @@ -7,3 +7,7 @@ title: "Back armhole slant" The **back armhole slant** slightly rotates the armhole around the back pitch point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/noble_backarmholeslant_sample.svg b/markdown/org/docs/patterns/noble/options/backarmholeslant/noble_backarmholeslant_sample.svg new file mode 100644 index 00000000000..b962b1a3ec0 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/noble_backarmholeslant_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backarmholeslant/uk.md b/markdown/org/docs/patterns/noble/options/backarmholeslant/uk.md new file mode 100644 index 00000000000..98dbbc22c50 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backarmholeslant/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back armhole slant" +--- + +*** + +The **back armhole slant** slightly rotates the armhole around the back pitch point. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backarmholeslant_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/de.md b/markdown/org/docs/patterns/noble/options/backdartheight/de.md index 15a443f28d8..96b84fca0cc 100644 --- a/markdown/org/docs/patterns/noble/options/backdartheight/de.md +++ b/markdown/org/docs/patterns/noble/options/backdartheight/de.md @@ -7,3 +7,7 @@ title: "Back dart height" The **back dart height** option controls the height (length if you will) of the back dart. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/en.md b/markdown/org/docs/patterns/noble/options/backdartheight/en.md index 15a443f28d8..9e415230b0c 100644 --- a/markdown/org/docs/patterns/noble/options/backdartheight/en.md +++ b/markdown/org/docs/patterns/noble/options/backdartheight/en.md @@ -2,8 +2,12 @@ title: "Back dart height" --- ---- +*** The **back dart height** option controls the height (length if you will) of the back dart. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/es.md b/markdown/org/docs/patterns/noble/options/backdartheight/es.md index 15a443f28d8..96b84fca0cc 100644 --- a/markdown/org/docs/patterns/noble/options/backdartheight/es.md +++ b/markdown/org/docs/patterns/noble/options/backdartheight/es.md @@ -7,3 +7,7 @@ title: "Back dart height" The **back dart height** option controls the height (length if you will) of the back dart. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/fr.md b/markdown/org/docs/patterns/noble/options/backdartheight/fr.md index 15a443f28d8..96b84fca0cc 100644 --- a/markdown/org/docs/patterns/noble/options/backdartheight/fr.md +++ b/markdown/org/docs/patterns/noble/options/backdartheight/fr.md @@ -7,3 +7,7 @@ title: "Back dart height" The **back dart height** option controls the height (length if you will) of the back dart. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/nl.md b/markdown/org/docs/patterns/noble/options/backdartheight/nl.md index 15a443f28d8..96b84fca0cc 100644 --- a/markdown/org/docs/patterns/noble/options/backdartheight/nl.md +++ b/markdown/org/docs/patterns/noble/options/backdartheight/nl.md @@ -7,3 +7,7 @@ title: "Back dart height" The **back dart height** option controls the height (length if you will) of the back dart. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/noble_backdartheight_sample.svg b/markdown/org/docs/patterns/noble/options/backdartheight/noble_backdartheight_sample.svg new file mode 100644 index 00000000000..f65398ddf53 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backdartheight/noble_backdartheight_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backdartheight/uk.md b/markdown/org/docs/patterns/noble/options/backdartheight/uk.md new file mode 100644 index 00000000000..9e415230b0c --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backdartheight/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back dart height" +--- + +*** + +The **back dart height** option controls the height (length if you will) of the back dart. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backdartheight_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/de.md b/markdown/org/docs/patterns/noble/options/backhemslope/de.md index eff831b263a..f02484434fc 100644 --- a/markdown/org/docs/patterns/noble/options/backhemslope/de.md +++ b/markdown/org/docs/patterns/noble/options/backhemslope/de.md @@ -7,3 +7,7 @@ title: "Back hem slope" The **back hem slope** option controls the slope of the hem at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/en.md b/markdown/org/docs/patterns/noble/options/backhemslope/en.md index eff831b263a..e108d3e3550 100644 --- a/markdown/org/docs/patterns/noble/options/backhemslope/en.md +++ b/markdown/org/docs/patterns/noble/options/backhemslope/en.md @@ -2,8 +2,12 @@ title: "Back hem slope" --- ---- +*** The **back hem slope** option controls the slope of the hem at the back. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/es.md b/markdown/org/docs/patterns/noble/options/backhemslope/es.md index eff831b263a..f02484434fc 100644 --- a/markdown/org/docs/patterns/noble/options/backhemslope/es.md +++ b/markdown/org/docs/patterns/noble/options/backhemslope/es.md @@ -7,3 +7,7 @@ title: "Back hem slope" The **back hem slope** option controls the slope of the hem at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/fr.md b/markdown/org/docs/patterns/noble/options/backhemslope/fr.md index eff831b263a..f02484434fc 100644 --- a/markdown/org/docs/patterns/noble/options/backhemslope/fr.md +++ b/markdown/org/docs/patterns/noble/options/backhemslope/fr.md @@ -7,3 +7,7 @@ title: "Back hem slope" The **back hem slope** option controls the slope of the hem at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/nl.md b/markdown/org/docs/patterns/noble/options/backhemslope/nl.md index eff831b263a..f02484434fc 100644 --- a/markdown/org/docs/patterns/noble/options/backhemslope/nl.md +++ b/markdown/org/docs/patterns/noble/options/backhemslope/nl.md @@ -7,3 +7,7 @@ title: "Back hem slope" The **back hem slope** option controls the slope of the hem at the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/noble_backhemslope_sample.svg b/markdown/org/docs/patterns/noble/options/backhemslope/noble_backhemslope_sample.svg new file mode 100644 index 00000000000..719647f0baa --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backhemslope/noble_backhemslope_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backhemslope/uk.md b/markdown/org/docs/patterns/noble/options/backhemslope/uk.md new file mode 100644 index 00000000000..e108d3e3550 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backhemslope/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back hem slope" +--- + +*** + +The **back hem slope** option controls the slope of the hem at the back. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backhemslope_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/de.md b/markdown/org/docs/patterns/noble/options/backneckcutout/de.md index 749d3e90c6e..793cf55d1fa 100644 --- a/markdown/org/docs/patterns/noble/options/backneckcutout/de.md +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/de.md @@ -8,3 +8,7 @@ The **back neck cutout** option controls how far the neck opening is scooped out ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/en.md b/markdown/org/docs/patterns/noble/options/backneckcutout/en.md index 749d3e90c6e..539a566b953 100644 --- a/markdown/org/docs/patterns/noble/options/backneckcutout/en.md +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/en.md @@ -2,9 +2,12 @@ title: "Back neck cutout" --- ---- +*** The **back neck cutout** option controls how far the neck opening is scooped out at the back. ## Effect of this option on the pattern +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/es.md b/markdown/org/docs/patterns/noble/options/backneckcutout/es.md index 749d3e90c6e..793cf55d1fa 100644 --- a/markdown/org/docs/patterns/noble/options/backneckcutout/es.md +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/es.md @@ -8,3 +8,7 @@ The **back neck cutout** option controls how far the neck opening is scooped out ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/fr.md b/markdown/org/docs/patterns/noble/options/backneckcutout/fr.md index 749d3e90c6e..793cf55d1fa 100644 --- a/markdown/org/docs/patterns/noble/options/backneckcutout/fr.md +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/fr.md @@ -8,3 +8,7 @@ The **back neck cutout** option controls how far the neck opening is scooped out ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/nl.md b/markdown/org/docs/patterns/noble/options/backneckcutout/nl.md index 749d3e90c6e..793cf55d1fa 100644 --- a/markdown/org/docs/patterns/noble/options/backneckcutout/nl.md +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/nl.md @@ -8,3 +8,7 @@ The **back neck cutout** option controls how far the neck opening is scooped out ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/noble_backneckcutout_sample.svg b/markdown/org/docs/patterns/noble/options/backneckcutout/noble_backneckcutout_sample.svg new file mode 100644 index 00000000000..d6f6b119c57 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/noble_backneckcutout_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/backneckcutout/uk.md b/markdown/org/docs/patterns/noble/options/backneckcutout/uk.md new file mode 100644 index 00000000000..539a566b953 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/backneckcutout/uk.md @@ -0,0 +1,13 @@ +--- +title: "Back neck cutout" +--- + +*** + +The **back neck cutout** option controls how far the neck opening is scooped out at the back. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_backneckcutout_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/de.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/de.md deleted file mode 100644 index e93a4e64eed..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/de.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart curve" ---- - ---- - -The **bust dart curve** option controls the curvature of the bust dart. From straight to slightly curved. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md deleted file mode 100644 index 6504bd99308..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/en.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Bust dart curve" ---- - ---- - -The **bust dart curve** option controls the curvature of the bust dart. -From straight to slightly curved. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/es.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/es.md deleted file mode 100644 index e93a4e64eed..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/es.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart curve" ---- - ---- - -The **bust dart curve** option controls the curvature of the bust dart. From straight to slightly curved. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/fr.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/fr.md deleted file mode 100644 index e93a4e64eed..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/fr.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart curve" ---- - ---- - -The **bust dart curve** option controls the curvature of the bust dart. From straight to slightly curved. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartcurve/nl.md b/markdown/org/docs/patterns/noble/options/bustdartcurve/nl.md deleted file mode 100644 index e93a4e64eed..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartcurve/nl.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart curve" ---- - ---- - -The **bust dart curve** option controls the curvature of the bust dart. From straight to slightly curved. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/de.md b/markdown/org/docs/patterns/noble/options/bustdartlength/de.md deleted file mode 100644 index e4111264722..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/de.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart length" ---- - ---- - -The **bust dart length** option controls the length of the bust dart. The maximum length brings the dart all the way to the bust apex. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/en.md b/markdown/org/docs/patterns/noble/options/bustdartlength/en.md deleted file mode 100644 index 40871394120..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/en.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Bust dart length" ---- - ---- - -The **bust dart length** option controls the length of the bust dart. -The maximum length brings the dart all the way to the bust apex. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/es.md b/markdown/org/docs/patterns/noble/options/bustdartlength/es.md deleted file mode 100644 index e4111264722..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/es.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart length" ---- - ---- - -The **bust dart length** option controls the length of the bust dart. The maximum length brings the dart all the way to the bust apex. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/fr.md b/markdown/org/docs/patterns/noble/options/bustdartlength/fr.md deleted file mode 100644 index e4111264722..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/fr.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart length" ---- - ---- - -The **bust dart length** option controls the length of the bust dart. The maximum length brings the dart all the way to the bust apex. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustdartlength/nl.md b/markdown/org/docs/patterns/noble/options/bustdartlength/nl.md deleted file mode 100644 index e4111264722..00000000000 --- a/markdown/org/docs/patterns/noble/options/bustdartlength/nl.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Bust dart length" ---- - ---- - -The **bust dart length** option controls the length of the bust dart. The maximum length brings the dart all the way to the bust apex. - -## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/de.md b/markdown/org/docs/patterns/noble/options/bustspanease/de.md index 4e82fecb5e4..23cb206f0bd 100644 --- a/markdown/org/docs/patterns/noble/options/bustspanease/de.md +++ b/markdown/org/docs/patterns/noble/options/bustspanease/de.md @@ -9,3 +9,7 @@ The **bust span ease** option controls how much ease is applied to the bust span This will not add ease to the garment, but merely influence the bust point ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/en.md b/markdown/org/docs/patterns/noble/options/bustspanease/en.md index 4e82fecb5e4..dae0e1bb038 100644 --- a/markdown/org/docs/patterns/noble/options/bustspanease/en.md +++ b/markdown/org/docs/patterns/noble/options/bustspanease/en.md @@ -2,10 +2,14 @@ title: "Bust span ease" --- ---- +*** The **bust span ease** option controls how much ease is applied to the bust span. This will not add ease to the garment, but merely influence the bust point ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/es.md b/markdown/org/docs/patterns/noble/options/bustspanease/es.md index 4e82fecb5e4..23cb206f0bd 100644 --- a/markdown/org/docs/patterns/noble/options/bustspanease/es.md +++ b/markdown/org/docs/patterns/noble/options/bustspanease/es.md @@ -9,3 +9,7 @@ The **bust span ease** option controls how much ease is applied to the bust span This will not add ease to the garment, but merely influence the bust point ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/fr.md b/markdown/org/docs/patterns/noble/options/bustspanease/fr.md index 4e82fecb5e4..23cb206f0bd 100644 --- a/markdown/org/docs/patterns/noble/options/bustspanease/fr.md +++ b/markdown/org/docs/patterns/noble/options/bustspanease/fr.md @@ -9,3 +9,7 @@ The **bust span ease** option controls how much ease is applied to the bust span This will not add ease to the garment, but merely influence the bust point ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/nl.md b/markdown/org/docs/patterns/noble/options/bustspanease/nl.md index 4e82fecb5e4..23cb206f0bd 100644 --- a/markdown/org/docs/patterns/noble/options/bustspanease/nl.md +++ b/markdown/org/docs/patterns/noble/options/bustspanease/nl.md @@ -9,3 +9,7 @@ The **bust span ease** option controls how much ease is applied to the bust span This will not add ease to the garment, but merely influence the bust point ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/noble_bustspanease_sample.svg b/markdown/org/docs/patterns/noble/options/bustspanease/noble_bustspanease_sample.svg new file mode 100644 index 00000000000..a9937dbd356 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/bustspanease/noble_bustspanease_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/bustspanease/uk.md b/markdown/org/docs/patterns/noble/options/bustspanease/uk.md new file mode 100644 index 00000000000..dae0e1bb038 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/bustspanease/uk.md @@ -0,0 +1,15 @@ +--- +title: "Bust span ease" +--- + +*** + +The **bust span ease** option controls how much ease is applied to the bust span. + +This will not add ease to the garment, but merely influence the bust point + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_bustspanease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/de.md b/markdown/org/docs/patterns/noble/options/chestease/de.md index dc88c6634cf..77478814fbb 100644 --- a/markdown/org/docs/patterns/noble/options/chestease/de.md +++ b/markdown/org/docs/patterns/noble/options/chestease/de.md @@ -7,3 +7,7 @@ title: "Chest ease" The **chest ease** option controls the amount of ease at the fullest part of your chest. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/en.md b/markdown/org/docs/patterns/noble/options/chestease/en.md index dc88c6634cf..a8152c9e15e 100644 --- a/markdown/org/docs/patterns/noble/options/chestease/en.md +++ b/markdown/org/docs/patterns/noble/options/chestease/en.md @@ -2,8 +2,12 @@ title: "Chest ease" --- ---- +*** The **chest ease** option controls the amount of ease at the fullest part of your chest. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/es.md b/markdown/org/docs/patterns/noble/options/chestease/es.md index dc88c6634cf..77478814fbb 100644 --- a/markdown/org/docs/patterns/noble/options/chestease/es.md +++ b/markdown/org/docs/patterns/noble/options/chestease/es.md @@ -7,3 +7,7 @@ title: "Chest ease" The **chest ease** option controls the amount of ease at the fullest part of your chest. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/fr.md b/markdown/org/docs/patterns/noble/options/chestease/fr.md index dc88c6634cf..77478814fbb 100644 --- a/markdown/org/docs/patterns/noble/options/chestease/fr.md +++ b/markdown/org/docs/patterns/noble/options/chestease/fr.md @@ -7,3 +7,7 @@ title: "Chest ease" The **chest ease** option controls the amount of ease at the fullest part of your chest. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/nl.md b/markdown/org/docs/patterns/noble/options/chestease/nl.md index dc88c6634cf..77478814fbb 100644 --- a/markdown/org/docs/patterns/noble/options/chestease/nl.md +++ b/markdown/org/docs/patterns/noble/options/chestease/nl.md @@ -7,3 +7,7 @@ title: "Chest ease" The **chest ease** option controls the amount of ease at the fullest part of your chest. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/chestease/noble_chestease_sample.svg b/markdown/org/docs/patterns/noble/options/chestease/noble_chestease_sample.svg new file mode 100644 index 00000000000..b36d471f28d --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/chestease/noble_chestease_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/chestease/uk.md b/markdown/org/docs/patterns/noble/options/chestease/uk.md new file mode 100644 index 00000000000..a8152c9e15e --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/chestease/uk.md @@ -0,0 +1,13 @@ +--- +title: "Chest ease" +--- + +*** + +The **chest ease** option controls the amount of ease at the fullest part of your chest. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_chestease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/dartPosition/de.md b/markdown/org/docs/patterns/noble/options/dartPosition/de.md deleted file mode 100644 index af41560fa50..00000000000 --- a/markdown/org/docs/patterns/noble/options/dartPosition/de.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Dart position" ---- - -The **Dart position** option controls whether to create the princess seam at the shoulder or armhole. diff --git a/markdown/org/docs/patterns/noble/options/dartPosition/en.md b/markdown/org/docs/patterns/noble/options/dartPosition/en.md deleted file mode 100644 index af41560fa50..00000000000 --- a/markdown/org/docs/patterns/noble/options/dartPosition/en.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Dart position" ---- - -The **Dart position** option controls whether to create the princess seam at the shoulder or armhole. diff --git a/markdown/org/docs/patterns/noble/options/dartPosition/es.md b/markdown/org/docs/patterns/noble/options/dartPosition/es.md deleted file mode 100644 index af41560fa50..00000000000 --- a/markdown/org/docs/patterns/noble/options/dartPosition/es.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Dart position" ---- - -The **Dart position** option controls whether to create the princess seam at the shoulder or armhole. diff --git a/markdown/org/docs/patterns/noble/options/dartPosition/fr.md b/markdown/org/docs/patterns/noble/options/dartPosition/fr.md deleted file mode 100644 index af41560fa50..00000000000 --- a/markdown/org/docs/patterns/noble/options/dartPosition/fr.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Dart position" ---- - -The **Dart position** option controls whether to create the princess seam at the shoulder or armhole. diff --git a/markdown/org/docs/patterns/noble/options/dartPosition/nl.md b/markdown/org/docs/patterns/noble/options/dartPosition/nl.md deleted file mode 100644 index af41560fa50..00000000000 --- a/markdown/org/docs/patterns/noble/options/dartPosition/nl.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "Dart position" ---- - -The **Dart position** option controls whether to create the princess seam at the shoulder or armhole. diff --git a/markdown/org/docs/patterns/noble/options/dartposition/en.md b/markdown/org/docs/patterns/noble/options/dartposition/en.md new file mode 100644 index 00000000000..ca1d3d04506 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/dartposition/en.md @@ -0,0 +1,9 @@ +--- +title: Dart position +--- + +Controls whether to split at the shoulder or armhole + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_dartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/dartposition/noble_dartposition_sample.svg b/markdown/org/docs/patterns/noble/options/dartposition/noble_dartposition_sample.svg new file mode 100644 index 00000000000..8a73474a853 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/dartposition/noble_dartposition_sample.svg @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md index d14ad8128e6..f04304573b6 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/en.md @@ -2,8 +2,12 @@ title: "Front armhole curvature" --- ---- +*** Controls how deep the armhole is scooped out at the front bottom ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholecurvature_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholecurvature/noble_frontarmholecurvature_sample.svg b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/noble_frontarmholecurvature_sample.svg new file mode 100644 index 00000000000..61e90ec24bf --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/noble_frontarmholecurvature_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/frontarmholecurvature/uk.md b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/uk.md new file mode 100644 index 00000000000..763d9f27909 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholecurvature/uk.md @@ -0,0 +1,9 @@ +--- +title: "Front armhole curvature" +--- + +*** + +Controls how deep the armhole is scooped out at the front bottom + +## Effect of this option on the pattern diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/de.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/de.md index c513394b6e9..4ee8a3791ea 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/de.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/de.md @@ -7,3 +7,7 @@ title: "Front armhole pitch depth" The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md index c513394b6e9..caf05918313 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/en.md @@ -2,8 +2,12 @@ title: "Front armhole pitch depth" --- ---- +*** The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/es.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/es.md index c513394b6e9..4ee8a3791ea 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/es.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/es.md @@ -7,3 +7,7 @@ title: "Front armhole pitch depth" The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/fr.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/fr.md index c513394b6e9..4ee8a3791ea 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/fr.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/fr.md @@ -7,3 +7,7 @@ title: "Front armhole pitch depth" The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/nl.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/nl.md index c513394b6e9..4ee8a3791ea 100644 --- a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/nl.md +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/nl.md @@ -7,3 +7,7 @@ title: "Front armhole pitch depth" The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/noble_frontarmholepitchdepth_sample.svg b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/noble_frontarmholepitchdepth_sample.svg new file mode 100644 index 00000000000..b15b410ffc6 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/noble_frontarmholepitchdepth_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/uk.md b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/uk.md new file mode 100644 index 00000000000..caf05918313 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontarmholepitchdepth/uk.md @@ -0,0 +1,13 @@ +--- +title: "Front armhole pitch depth" +--- + +*** + +The **front armhole pitch depth** option controls the vertical position of the armhole pitch point at the front. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontarmholepitchdepth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/de.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/de.md index 2eabe58a351..e7d38415193 100644 --- a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/de.md +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/de.md @@ -7,3 +7,7 @@ title: "Front shoulder width" The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md index 2eabe58a351..6a57766bcbb 100644 --- a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/en.md @@ -2,8 +2,12 @@ title: "Front shoulder width" --- ---- +*** The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/es.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/es.md index 2eabe58a351..e7d38415193 100644 --- a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/es.md +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/es.md @@ -7,3 +7,7 @@ title: "Front shoulder width" The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/fr.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/fr.md index 2eabe58a351..e7d38415193 100644 --- a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/fr.md +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/fr.md @@ -7,3 +7,7 @@ title: "Front shoulder width" The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/nl.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/nl.md index 2eabe58a351..e7d38415193 100644 --- a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/nl.md +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/nl.md @@ -7,3 +7,7 @@ title: "Front shoulder width" The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/noble_frontshoulderwidth_sample.svg b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/noble_frontshoulderwidth_sample.svg new file mode 100644 index 00000000000..77f5ff01f1b --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/noble_frontshoulderwidth_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/frontshoulderwidth/uk.md b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/uk.md new file mode 100644 index 00000000000..6a57766bcbb --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/frontshoulderwidth/uk.md @@ -0,0 +1,13 @@ +--- +title: "Front shoulder width" +--- + +*** + +The **front shoulder width** option controls the width of the shoulders at the front, relative to the back. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_frontshoulderwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/de.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/de.md deleted file mode 100644 index d912c4f27a7..00000000000 --- a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/de.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Full chest ease reduction" ---- - ---- - -Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area - -## Effect of this option on the pattern - diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md deleted file mode 100644 index d912c4f27a7..00000000000 --- a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/en.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Full chest ease reduction" ---- - ---- - -Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area - -## Effect of this option on the pattern - diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/es.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/es.md deleted file mode 100644 index d912c4f27a7..00000000000 --- a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/es.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Full chest ease reduction" ---- - ---- - -Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area - -## Effect of this option on the pattern - diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/fr.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/fr.md deleted file mode 100644 index d912c4f27a7..00000000000 --- a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/fr.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Full chest ease reduction" ---- - ---- - -Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area - -## Effect of this option on the pattern - diff --git a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/nl.md b/markdown/org/docs/patterns/noble/options/fullchesteasereduction/nl.md deleted file mode 100644 index d912c4f27a7..00000000000 --- a/markdown/org/docs/patterns/noble/options/fullchesteasereduction/nl.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Full chest ease reduction" ---- - ---- - -Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area - -## Effect of this option on the pattern - diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/de.md b/markdown/org/docs/patterns/noble/options/highbustwidth/de.md index f18b9cdb68f..16c8e3d92bc 100644 --- a/markdown/org/docs/patterns/noble/options/highbustwidth/de.md +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/de.md @@ -7,3 +7,7 @@ title: "High bust width" The **high bust width** option allows you to tweak the high bust width at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/en.md b/markdown/org/docs/patterns/noble/options/highbustwidth/en.md index f18b9cdb68f..ff41064f30b 100644 --- a/markdown/org/docs/patterns/noble/options/highbustwidth/en.md +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/en.md @@ -2,8 +2,12 @@ title: "High bust width" --- ---- +*** The **high bust width** option allows you to tweak the high bust width at the front. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/es.md b/markdown/org/docs/patterns/noble/options/highbustwidth/es.md index f18b9cdb68f..16c8e3d92bc 100644 --- a/markdown/org/docs/patterns/noble/options/highbustwidth/es.md +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/es.md @@ -7,3 +7,7 @@ title: "High bust width" The **high bust width** option allows you to tweak the high bust width at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/fr.md b/markdown/org/docs/patterns/noble/options/highbustwidth/fr.md index f18b9cdb68f..16c8e3d92bc 100644 --- a/markdown/org/docs/patterns/noble/options/highbustwidth/fr.md +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/fr.md @@ -7,3 +7,7 @@ title: "High bust width" The **high bust width** option allows you to tweak the high bust width at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/nl.md b/markdown/org/docs/patterns/noble/options/highbustwidth/nl.md index f18b9cdb68f..16c8e3d92bc 100644 --- a/markdown/org/docs/patterns/noble/options/highbustwidth/nl.md +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/nl.md @@ -7,3 +7,7 @@ title: "High bust width" The **high bust width** option allows you to tweak the high bust width at the front. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/noble_highbustwidth_sample.svg b/markdown/org/docs/patterns/noble/options/highbustwidth/noble_highbustwidth_sample.svg new file mode 100644 index 00000000000..16aa6831628 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/noble_highbustwidth_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/highbustwidth/uk.md b/markdown/org/docs/patterns/noble/options/highbustwidth/uk.md new file mode 100644 index 00000000000..ff41064f30b --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/highbustwidth/uk.md @@ -0,0 +1,13 @@ +--- +title: "High bust width" +--- + +*** + +The **high bust width** option allows you to tweak the high bust width at the front. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_highbustwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/de.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/de.md index 3d9b9bbcf76..44746072561 100644 --- a/markdown/org/docs/patterns/noble/options/shoulderdartposition/de.md +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/de.md @@ -7,3 +7,7 @@ title: "Shoulder Dart Position" The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md index 3d9b9bbcf76..91f072ceecd 100644 --- a/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/en.md @@ -2,8 +2,12 @@ title: "Shoulder Dart Position" --- ---- +*** The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/es.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/es.md index 3d9b9bbcf76..44746072561 100644 --- a/markdown/org/docs/patterns/noble/options/shoulderdartposition/es.md +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/es.md @@ -7,3 +7,7 @@ title: "Shoulder Dart Position" The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/fr.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/fr.md index 3d9b9bbcf76..44746072561 100644 --- a/markdown/org/docs/patterns/noble/options/shoulderdartposition/fr.md +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/fr.md @@ -7,3 +7,7 @@ title: "Shoulder Dart Position" The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/nl.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/nl.md index 3d9b9bbcf76..44746072561 100644 --- a/markdown/org/docs/patterns/noble/options/shoulderdartposition/nl.md +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/nl.md @@ -7,3 +7,7 @@ title: "Shoulder Dart Position" The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/noble_shoulderdartposition_sample.svg b/markdown/org/docs/patterns/noble/options/shoulderdartposition/noble_shoulderdartposition_sample.svg new file mode 100644 index 00000000000..e222ee58f35 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/noble_shoulderdartposition_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/shoulderdartposition/uk.md b/markdown/org/docs/patterns/noble/options/shoulderdartposition/uk.md new file mode 100644 index 00000000000..91f072ceecd --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shoulderdartposition/uk.md @@ -0,0 +1,13 @@ +--- +title: "Shoulder Dart Position" +--- + +*** + +The **Shoulder Dart Position** option allows you to move the position of the dart/princess seam. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shoulderdartposition_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/de.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/de.md index ea161d3eeec..9fb667730e2 100644 --- a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/de.md +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/de.md @@ -7,3 +7,7 @@ title: "Shoulder to Shoulder Ease" The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md index ea161d3eeec..2f955138753 100644 --- a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/en.md @@ -2,8 +2,12 @@ title: "Shoulder to Shoulder Ease" --- ---- +*** The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/es.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/es.md index ea161d3eeec..9fb667730e2 100644 --- a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/es.md +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/es.md @@ -7,3 +7,7 @@ title: "Shoulder to Shoulder Ease" The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/fr.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/fr.md index ea161d3eeec..9fb667730e2 100644 --- a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/fr.md +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/fr.md @@ -7,3 +7,7 @@ title: "Shoulder to Shoulder Ease" The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/nl.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/nl.md index ea161d3eeec..9fb667730e2 100644 --- a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/nl.md +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/nl.md @@ -7,3 +7,7 @@ title: "Shoulder to Shoulder Ease" The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/noble_shouldertoshoulderease_sample.svg b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/noble_shouldertoshoulderease_sample.svg new file mode 100644 index 00000000000..6f70b6e7806 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/noble_shouldertoshoulderease_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/uk.md b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/uk.md new file mode 100644 index 00000000000..2f955138753 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/shouldertoshoulderease/uk.md @@ -0,0 +1,13 @@ +--- +title: "Shoulder to Shoulder Ease" +--- + +*** + +The **Shoulder to Shoulder Ease** option allows you to add ease between the shoulders. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_shouldertoshoulderease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/uk.md b/markdown/org/docs/patterns/noble/options/uk.md new file mode 100644 index 00000000000..52e04d7a2a7 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/uk.md @@ -0,0 +1,5 @@ +--- +title: "Noble body block: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/de.md b/markdown/org/docs/patterns/noble/options/upperdartlength/de.md index 7c503656308..5776333df8a 100644 --- a/markdown/org/docs/patterns/noble/options/upperdartlength/de.md +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/de.md @@ -7,3 +7,7 @@ title: "Upper Dart Length" The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/en.md b/markdown/org/docs/patterns/noble/options/upperdartlength/en.md index 7c503656308..b03d776d9bc 100644 --- a/markdown/org/docs/patterns/noble/options/upperdartlength/en.md +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/en.md @@ -2,8 +2,12 @@ title: "Upper Dart Length" --- ---- +*** The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/es.md b/markdown/org/docs/patterns/noble/options/upperdartlength/es.md index 7c503656308..5776333df8a 100644 --- a/markdown/org/docs/patterns/noble/options/upperdartlength/es.md +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/es.md @@ -7,3 +7,7 @@ title: "Upper Dart Length" The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/fr.md b/markdown/org/docs/patterns/noble/options/upperdartlength/fr.md index 7c503656308..5776333df8a 100644 --- a/markdown/org/docs/patterns/noble/options/upperdartlength/fr.md +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/fr.md @@ -7,3 +7,7 @@ title: "Upper Dart Length" The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/nl.md b/markdown/org/docs/patterns/noble/options/upperdartlength/nl.md index 7c503656308..5776333df8a 100644 --- a/markdown/org/docs/patterns/noble/options/upperdartlength/nl.md +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/nl.md @@ -7,3 +7,7 @@ title: "Upper Dart Length" The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/noble_upperdartlength_sample.svg b/markdown/org/docs/patterns/noble/options/upperdartlength/noble_upperdartlength_sample.svg new file mode 100644 index 00000000000..39685ce2fc4 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/noble_upperdartlength_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/upperdartlength/uk.md b/markdown/org/docs/patterns/noble/options/upperdartlength/uk.md new file mode 100644 index 00000000000..b03d776d9bc --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/upperdartlength/uk.md @@ -0,0 +1,13 @@ +--- +title: "Upper Dart Length" +--- + +*** + +The **Upper Dart Length** controls the length of the upper dart, 100% is all teh way to the bust point. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_upperdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/de.md b/markdown/org/docs/patterns/noble/options/waistdartlength/de.md index 0eca8850cce..73d0b718e9e 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/de.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/de.md @@ -7,3 +7,7 @@ title: "Waist dart length" The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/en.md b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md index 0eca8850cce..996129f2c4b 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/en.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/en.md @@ -2,8 +2,12 @@ title: "Waist dart length" --- ---- +*** The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/es.md b/markdown/org/docs/patterns/noble/options/waistdartlength/es.md index 0eca8850cce..73d0b718e9e 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/es.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/es.md @@ -7,3 +7,7 @@ title: "Waist dart length" The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/fr.md b/markdown/org/docs/patterns/noble/options/waistdartlength/fr.md index 0eca8850cce..73d0b718e9e 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/fr.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/fr.md @@ -7,3 +7,7 @@ title: "Waist dart length" The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/nl.md b/markdown/org/docs/patterns/noble/options/waistdartlength/nl.md index 0eca8850cce..73d0b718e9e 100644 --- a/markdown/org/docs/patterns/noble/options/waistdartlength/nl.md +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/nl.md @@ -7,3 +7,7 @@ title: "Waist dart length" The **waist dart length** option controls the length of the waist dart towards the bust. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/noble_waistdartlength_sample.svg b/markdown/org/docs/patterns/noble/options/waistdartlength/noble_waistdartlength_sample.svg new file mode 100644 index 00000000000..611f5386a47 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/noble_waistdartlength_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/waistdartlength/uk.md b/markdown/org/docs/patterns/noble/options/waistdartlength/uk.md new file mode 100644 index 00000000000..996129f2c4b --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistdartlength/uk.md @@ -0,0 +1,13 @@ +--- +title: "Waist dart length" +--- + +*** + +The **waist dart length** option controls the length of the waist dart towards the bust. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistdartlength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/de.md b/markdown/org/docs/patterns/noble/options/waistease/de.md index f4143bcc2cb..321eaea3982 100644 --- a/markdown/org/docs/patterns/noble/options/waistease/de.md +++ b/markdown/org/docs/patterns/noble/options/waistease/de.md @@ -7,3 +7,7 @@ title: "Waist ease" The **waist ease** option controls the amount of ease at your waist. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/en.md b/markdown/org/docs/patterns/noble/options/waistease/en.md index f4143bcc2cb..957c60eb9e3 100644 --- a/markdown/org/docs/patterns/noble/options/waistease/en.md +++ b/markdown/org/docs/patterns/noble/options/waistease/en.md @@ -2,8 +2,12 @@ title: "Waist ease" --- ---- +*** The **waist ease** option controls the amount of ease at your waist. ## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/es.md b/markdown/org/docs/patterns/noble/options/waistease/es.md index f4143bcc2cb..321eaea3982 100644 --- a/markdown/org/docs/patterns/noble/options/waistease/es.md +++ b/markdown/org/docs/patterns/noble/options/waistease/es.md @@ -7,3 +7,7 @@ title: "Waist ease" The **waist ease** option controls the amount of ease at your waist. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/fr.md b/markdown/org/docs/patterns/noble/options/waistease/fr.md index f4143bcc2cb..321eaea3982 100644 --- a/markdown/org/docs/patterns/noble/options/waistease/fr.md +++ b/markdown/org/docs/patterns/noble/options/waistease/fr.md @@ -7,3 +7,7 @@ title: "Waist ease" The **waist ease** option controls the amount of ease at your waist. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/nl.md b/markdown/org/docs/patterns/noble/options/waistease/nl.md index f4143bcc2cb..321eaea3982 100644 --- a/markdown/org/docs/patterns/noble/options/waistease/nl.md +++ b/markdown/org/docs/patterns/noble/options/waistease/nl.md @@ -7,3 +7,7 @@ title: "Waist ease" The **waist ease** option controls the amount of ease at your waist. ## Effect of this option on the pattern + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/options/waistease/noble_waistease_sample.svg b/markdown/org/docs/patterns/noble/options/waistease/noble_waistease_sample.svg new file mode 100644 index 00000000000..83cb21b7783 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistease/noble_waistease_sample.svg @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/noble/options/waistease/uk.md b/markdown/org/docs/patterns/noble/options/waistease/uk.md new file mode 100644 index 00000000000..957c60eb9e3 --- /dev/null +++ b/markdown/org/docs/patterns/noble/options/waistease/uk.md @@ -0,0 +1,13 @@ +--- +title: "Waist ease" +--- + +*** + +The **waist ease** option controls the amount of ease at your waist. + +## Effect of this option on the pattern + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](noble_waistease_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/noble/uk.md b/markdown/org/docs/patterns/noble/uk.md new file mode 100644 index 00000000000..c531609f8ec --- /dev/null +++ b/markdown/org/docs/patterns/noble/uk.md @@ -0,0 +1,5 @@ +--- +title: "Noble body block" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/cutting/de.md b/markdown/org/docs/patterns/octoplushy/cutting/de.md new file mode 100644 index 00000000000..0228fcac052 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/de.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/cutting/en.md b/markdown/org/docs/patterns/octoplushy/cutting/en.md new file mode 100644 index 00000000000..55c384d926e --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/en.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/cutting/es.md b/markdown/org/docs/patterns/octoplushy/cutting/es.md new file mode 100644 index 00000000000..0228fcac052 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/es.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/cutting/fr.md b/markdown/org/docs/patterns/octoplushy/cutting/fr.md new file mode 100644 index 00000000000..0228fcac052 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/fr.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/cutting/nl.md b/markdown/org/docs/patterns/octoplushy/cutting/nl.md new file mode 100644 index 00000000000..0228fcac052 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/nl.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/cutting/uk.md b/markdown/org/docs/patterns/octoplushy/cutting/uk.md new file mode 100644 index 00000000000..0228fcac052 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/cutting/uk.md @@ -0,0 +1,22 @@ +--- +title: "Octoplushy, the plushy octopus: Cutting Instructions" +--- + +- **Color 1 (Upper body, top of legs & head)** + - **Octoplushy, Octopus & Squid** + - Cut **8 head** parts + - **Octopus only** + - Cut **2 eyebrow** parts + - **Squid only** + - Cut **2 head (a)** parts + +- **Color 2 (Belly, bottom of legs)** + - **Octoplushy, Octopus & Squid** + - Cut **8 leg** parts + - **Squid only** + - Cut **2 leg (a)** parts + +- **Eyes Fabric** + - **Octopus & Squid** + - Cut **2 eye (white)** parts + - Cut **2 pupil (black)** parts diff --git a/markdown/org/docs/patterns/octoplushy/de.md b/markdown/org/docs/patterns/octoplushy/de.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/de.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/en.md b/markdown/org/docs/patterns/octoplushy/en.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/en.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/es.md b/markdown/org/docs/patterns/octoplushy/es.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/es.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/fabric/de.md b/markdown/org/docs/patterns/octoplushy/fabric/de.md new file mode 100644 index 00000000000..b2d7180e248 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/de.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fabric/en.md b/markdown/org/docs/patterns/octoplushy/fabric/en.md new file mode 100644 index 00000000000..c08fbc441d2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/en.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fabric/es.md b/markdown/org/docs/patterns/octoplushy/fabric/es.md new file mode 100644 index 00000000000..b2d7180e248 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/es.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fabric/fr.md b/markdown/org/docs/patterns/octoplushy/fabric/fr.md new file mode 100644 index 00000000000..b2d7180e248 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/fr.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fabric/nl.md b/markdown/org/docs/patterns/octoplushy/fabric/nl.md new file mode 100644 index 00000000000..b2d7180e248 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/nl.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fabric/uk.md b/markdown/org/docs/patterns/octoplushy/fabric/uk.md new file mode 100644 index 00000000000..b2d7180e248 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fabric/uk.md @@ -0,0 +1,13 @@ +--- +title: "Octoplushy, the plushy octopus: Fabric Options" +--- + +## Main and Contrast Body Fabrics (Upper body and legs, belly and underside legs) + +This plush toy is intended to have two different coloured fabrics, one for the upper body and top side of the legs, one for the belly and underside of the legs. + +Octoplushy is designed for faux fur fabric, which most plush toys are made from, but you could also use polar fleece, felt, denim, corduroy, or anything moderately heavy. Lightweight or drapey fabrics may not hold Octoplushy's shape well when stuffed. Fabrics with a two-way stretch will work better than wovens, the stretch should be perpendicular to the grainline. + +## Stuffing + +Since this is a plush toy, it will need to be stuffed with material. Most of the time you'll want to use polyester fiberfill (polyfill), but if you have a lot of fabric scraps, you can use shredded scrap fabric. However this may be heavier and less soft than fiberfill. It's also worth thinking about whether your Octoplushy may be at risk of getting dirty, or want to go for a swim, as not all stuffing options are washable. diff --git a/markdown/org/docs/patterns/octoplushy/fr.md b/markdown/org/docs/patterns/octoplushy/fr.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/fr.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/instructions/de.md b/markdown/org/docs/patterns/octoplushy/instructions/de.md new file mode 100644 index 00000000000..594c3c358ec --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/de.md @@ -0,0 +1,89 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/instructions/en.md b/markdown/org/docs/patterns/octoplushy/instructions/en.md new file mode 100644 index 00000000000..2674cffb2b4 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/en.md @@ -0,0 +1,91 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for +stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for +stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/instructions/es.md b/markdown/org/docs/patterns/octoplushy/instructions/es.md new file mode 100644 index 00000000000..594c3c358ec --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/es.md @@ -0,0 +1,89 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/instructions/fr.md b/markdown/org/docs/patterns/octoplushy/instructions/fr.md new file mode 100644 index 00000000000..594c3c358ec --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/fr.md @@ -0,0 +1,89 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/instructions/nl.md b/markdown/org/docs/patterns/octoplushy/instructions/nl.md new file mode 100644 index 00000000000..594c3c358ec --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/nl.md @@ -0,0 +1,89 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/instructions/uk.md b/markdown/org/docs/patterns/octoplushy/instructions/uk.md new file mode 100644 index 00000000000..594c3c358ec --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/instructions/uk.md @@ -0,0 +1,89 @@ +--- +title: "Octoplushy, the plushy octopus: Sewing Instructions" +--- + +## Step 1: The Body + +### The Face + +- **Octoplushy** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - Use topstitching, or a long bar-tack, to make the mouth on one of the segments. + - On the same section create eyes where the buttons are marked on the pattern. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +There are a couple of ways to make eyes for the Octoplushy version. +- Buttons +- Toy eyes +- Embroidery +- Felt or other suitable unravelling fabrics which can be combined with a _satin stitch_ + + + +- **Octopus** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - With _wrong sides_ to _good sides_ sew the pupil to eyes parts. + - With _good sides together_ sew both short ends of eyebrows together, creating a ring. + - With _good sides together_ sew the eyebrows to the circumferences of the eyes, gathering the excess as you go. + - Fold the eyebrows in half _wrong sides together_, and sew it again to the eyes. You may find it easier to hand sew this step. + - Hand sew the eyes to the lower part of one of the head halves, so that you will have two sections between them when it all comes together. + - With _good sides together_ sew the two head halves together, from notch B to the tip of the head part A. + - Turn _good sides_ out. + + + +Before sewing the eyebrows in half, you can stuff the eyebrows to create a more dramatic looking eyebrow. + + + +- **Squid** + - With _good sides together_ sew four head parts together, from notch B to the tip of the head part A creating a semi-sphere like shape. + - Repeat with the remaining four head parts to create a second half. + - On the head (a) parts fold along the fold-line with _good sides together_. + - Sew the straight line that juts out and then turn the flap _good sides_ out. + - With _good sides together_ sew the non - flap edges of the head (a) parts to the one of the head halves sewn earlier, from notch B to the tip of the head part A. + - With _wrong side_ to _good side_ sew the pupils to the eyes and finish their sides the best you can. + - Hand Sew the eyes to the section closest to the legs. + - With _good sides together_ sew the two halves together, from notch B to the tip of the head part A making sure that the flaps are on the outside. + - Turn _good sides_ out. + +## Step 2: The Legs + +- **Octoplushy & Octopus** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +- **Squid** + - With _good sides together_ sew four leg parts together, from notch D to the tip of the leg part C. + - Repeat with the remaining four leg parts to create a second half. + - With _good sides together_ sew a leg (a) part to each half so you have matching halves. + - With _good sides together_ sew the two leg halves together, from notch D to the tip of the leg part C but only one side. This other side stays open for stuffing later. + +## Step 3: Final Construction + +- With _good sides together_ match up the leg parts with the body parts. +- Sew each leg from notch B/D down and back around to notch B/D. +- If the leg part is slightly shorter than the leg on the head partsm you will have to ease it in while matching it up. Notches have been provided to make this easier. + + + +It is easiest to sew one leg almost to the next B/D notch, stop sewing, pin the next leg, and continue sewing rather than trying to pin and sew all the legs in one go. + +Those who are more confident can do this with the needle down on their machine but if you are less confident you may wish to remove from the machine, pin and then start sewing again a little bit over your originial stitching to secure it. + + + +- Turn _good sides_ out. +- For Octopus sew along stitching lines of the legs before stuffing. +- Stuff the plushy through the opening in the legs. +- Hand sew the opening closed. + +## Step 4: Enjoy! + +- That's it you are all done now go explore the depths of the oceans with your new Octoplushy! diff --git a/markdown/org/docs/patterns/octoplushy/measurements/de.md b/markdown/org/docs/patterns/octoplushy/measurements/de.md new file mode 100644 index 00000000000..4ec7011ebc6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/de.md @@ -0,0 +1,8 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + + diff --git a/markdown/org/docs/patterns/octoplushy/measurements/en.md b/markdown/org/docs/patterns/octoplushy/measurements/en.md new file mode 100644 index 00000000000..5dc8617dbf3 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/en.md @@ -0,0 +1,7 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + diff --git a/markdown/org/docs/patterns/octoplushy/measurements/es.md b/markdown/org/docs/patterns/octoplushy/measurements/es.md new file mode 100644 index 00000000000..4ec7011ebc6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/es.md @@ -0,0 +1,8 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + + diff --git a/markdown/org/docs/patterns/octoplushy/measurements/fr.md b/markdown/org/docs/patterns/octoplushy/measurements/fr.md new file mode 100644 index 00000000000..4ec7011ebc6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/fr.md @@ -0,0 +1,8 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + + diff --git a/markdown/org/docs/patterns/octoplushy/measurements/nl.md b/markdown/org/docs/patterns/octoplushy/measurements/nl.md new file mode 100644 index 00000000000..4ec7011ebc6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/nl.md @@ -0,0 +1,8 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + + diff --git a/markdown/org/docs/patterns/octoplushy/measurements/uk.md b/markdown/org/docs/patterns/octoplushy/measurements/uk.md new file mode 100644 index 00000000000..4ec7011ebc6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/measurements/uk.md @@ -0,0 +1,8 @@ +--- +title: "Octoplushy, the plushy octopus: Required Measurements" +--- + + +Octoplushy does not require any measurements + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/de.md b/markdown/org/docs/patterns/octoplushy/needs/de.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/de.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/en.md b/markdown/org/docs/patterns/octoplushy/needs/en.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/en.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/es.md b/markdown/org/docs/patterns/octoplushy/needs/es.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/es.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/fr.md b/markdown/org/docs/patterns/octoplushy/needs/fr.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/fr.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/nl.md b/markdown/org/docs/patterns/octoplushy/needs/nl.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/nl.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/needs/uk.md b/markdown/org/docs/patterns/octoplushy/needs/uk.md new file mode 100644 index 00000000000..b325622d6a0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/needs/uk.md @@ -0,0 +1,26 @@ +--- +title: "Octoplushy, the plushy octopus: What You Need" +--- + +To make Octoplushy, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1 meter (1.1 yards) of a suitable fabric (Upper body) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- About 0.75 meters (0.85 yards) of a suitable fabric (Belly) ([see Octoplushy Fabric options](/docs/patterns/octoplushy/fabric/)) +- Either 2 buttons or a small piece of suitable unraveling, fabric for the eyes of the Octoplushy version +- Small piece of black fabric for the pupils of the Squid and Octopus versions +- Small piece of white fabric for the eyes of the Squid and Octopus versions +- (Optional) Topstitch or Embroidery thread for the mouth of the Octoplushy version +- Stuffing + + + +This list is based on a default Octoplushy and you may need less or more fabric dependant on the [size you are making Octoplushy](/docs/patterns/octoplushy/options/size/). + +The amount of fabric required is also dependant on the [type of Octoplushy you are making](/docs/patterns/octoplushy/options/type/). +- The Octopus version requires about 50% more fabric than the Octoplushy version. +- The Squid version requires about 75% more fabric than the Octoplushy version. + +The color of the pupils and eyes for the Squid and Octopus versions are up to you, but for clarification and simplicity the pupils will be referred to as black and the eyes will be referred to as white in the documentation. + + diff --git a/markdown/org/docs/patterns/octoplushy/nl.md b/markdown/org/docs/patterns/octoplushy/nl.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/nl.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/de.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/de.md new file mode 100644 index 00000000000..7f552ca4956 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/de.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/en.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/en.md new file mode 100644 index 00000000000..e0cc16b9fbd --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/en.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. +The bigger the difference, the more the legs will want to curl. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/es.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/es.md new file mode 100644 index 00000000000..7f552ca4956 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/es.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/fr.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/fr.md new file mode 100644 index 00000000000..7f552ca4956 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/fr.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/nl.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/nl.md new file mode 100644 index 00000000000..7f552ca4956 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/nl.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/octoplushy_bottomlegreduction_sample.svg b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/octoplushy_bottomlegreduction_sample.svg new file mode 100644 index 00000000000..f8444e641b2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/octoplushy_bottomlegreduction_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/uk.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/uk.md new file mode 100644 index 00000000000..7f552ca4956 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreduction/uk.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreduction_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/de.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/de.md new file mode 100644 index 00000000000..373fff50f76 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/de.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/en.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/en.md new file mode 100644 index 00000000000..e5f57dc66a9 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/en.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. +The bigger the difference, the more the legs will want to curl. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/es.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/es.md new file mode 100644 index 00000000000..373fff50f76 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/es.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/fr.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/fr.md new file mode 100644 index 00000000000..373fff50f76 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/fr.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/nl.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/nl.md new file mode 100644 index 00000000000..373fff50f76 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/nl.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/octoplushy_bottomlegreductionplushy_sample.svg b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/octoplushy_bottomlegreductionplushy_sample.svg new file mode 100644 index 00000000000..ae1987ec1f0 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/octoplushy_bottomlegreductionplushy_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/uk.md b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/uk.md new file mode 100644 index 00000000000..373fff50f76 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomlegreductionplushy/uk.md @@ -0,0 +1,10 @@ +--- +title: "Bottom Leg Reduction (Octoplushy)" +--- + +This setting adjusts the difference in length between the top and the bottom fabric of the legs. The bigger the difference, the more the legs will want to curl. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomlegreductionplushy_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/de.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/de.md new file mode 100644 index 00000000000..45c5e25c242 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/de.md @@ -0,0 +1,10 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. The lower the ration, the more fabric will be associated with the top of the leg. 100% makes both the top and the bottom the same. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/en.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/en.md new file mode 100644 index 00000000000..fc7e9cb1923 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/en.md @@ -0,0 +1,11 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. +The lower the ration, the more fabric will be associated with the top of the leg. +100% makes both the top and the bottom the same. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/es.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/es.md new file mode 100644 index 00000000000..45c5e25c242 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/es.md @@ -0,0 +1,10 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. The lower the ration, the more fabric will be associated with the top of the leg. 100% makes both the top and the bottom the same. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/fr.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/fr.md new file mode 100644 index 00000000000..45c5e25c242 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/fr.md @@ -0,0 +1,10 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. The lower the ration, the more fabric will be associated with the top of the leg. 100% makes both the top and the bottom the same. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/nl.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/nl.md new file mode 100644 index 00000000000..45c5e25c242 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/nl.md @@ -0,0 +1,10 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. The lower the ration, the more fabric will be associated with the top of the leg. 100% makes both the top and the bottom the same. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/octoplushy_bottomtoplegratio_sample.svg b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/octoplushy_bottomtoplegratio_sample.svg new file mode 100644 index 00000000000..68d5b5144c3 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/octoplushy_bottomtoplegratio_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/uk.md b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/uk.md new file mode 100644 index 00000000000..45c5e25c242 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/bottomtoplegratio/uk.md @@ -0,0 +1,10 @@ +--- +title: "Bottom to Top Leg Ratio" +--- + +This setting adjusts the ratio between the top and the bottom of the legs. The lower the ration, the more fabric will be associated with the top of the leg. 100% makes both the top and the bottom the same. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_bottomtoplegratio_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/de.md b/markdown/org/docs/patterns/octoplushy/options/de.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/de.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/en.md b/markdown/org/docs/patterns/octoplushy/options/en.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/en.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/es.md b/markdown/org/docs/patterns/octoplushy/options/es.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/es.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/fr.md b/markdown/org/docs/patterns/octoplushy/options/fr.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/fr.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/de.md b/markdown/org/docs/patterns/octoplushy/options/leglength/de.md new file mode 100644 index 00000000000..e7d764ee538 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/de.md @@ -0,0 +1,10 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/en.md b/markdown/org/docs/patterns/octoplushy/options/leglength/en.md new file mode 100644 index 00000000000..6f924bae669 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/en.md @@ -0,0 +1,9 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/es.md b/markdown/org/docs/patterns/octoplushy/options/leglength/es.md new file mode 100644 index 00000000000..e7d764ee538 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/es.md @@ -0,0 +1,10 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/fr.md b/markdown/org/docs/patterns/octoplushy/options/leglength/fr.md new file mode 100644 index 00000000000..e7d764ee538 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/fr.md @@ -0,0 +1,10 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/nl.md b/markdown/org/docs/patterns/octoplushy/options/leglength/nl.md new file mode 100644 index 00000000000..e7d764ee538 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/nl.md @@ -0,0 +1,10 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/octoplushy_leglength_sample.svg b/markdown/org/docs/patterns/octoplushy/options/leglength/octoplushy_leglength_sample.svg new file mode 100644 index 00000000000..800005f10d8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/octoplushy_leglength_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/leglength/uk.md b/markdown/org/docs/patterns/octoplushy/options/leglength/uk.md new file mode 100644 index 00000000000..e7d764ee538 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/leglength/uk.md @@ -0,0 +1,10 @@ +--- +title: "Leg Length" +--- + +The length of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_leglength_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/de.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/de.md new file mode 100644 index 00000000000..f46c7ec96b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/de.md @@ -0,0 +1,10 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/en.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/en.md new file mode 100644 index 00000000000..f6da8b483e6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/en.md @@ -0,0 +1,9 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/es.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/es.md new file mode 100644 index 00000000000..f46c7ec96b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/es.md @@ -0,0 +1,10 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/fr.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/fr.md new file mode 100644 index 00000000000..f46c7ec96b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/fr.md @@ -0,0 +1,10 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/nl.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/nl.md new file mode 100644 index 00000000000..f46c7ec96b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/nl.md @@ -0,0 +1,10 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/octoplushy_legtaper_sample.svg b/markdown/org/docs/patterns/octoplushy/options/legtaper/octoplushy_legtaper_sample.svg new file mode 100644 index 00000000000..fbfe3ac2e58 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/octoplushy_legtaper_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/legtaper/uk.md b/markdown/org/docs/patterns/octoplushy/options/legtaper/uk.md new file mode 100644 index 00000000000..f46c7ec96b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legtaper/uk.md @@ -0,0 +1,10 @@ +--- +title: "Leg Taper" +--- + +This setting changes how much the legs taper from the body down to the end. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legtaper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/de.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/de.md new file mode 100644 index 00000000000..3ed3214d64d --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/de.md @@ -0,0 +1,10 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/en.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/en.md new file mode 100644 index 00000000000..c009369f7b8 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/en.md @@ -0,0 +1,9 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/es.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/es.md new file mode 100644 index 00000000000..3ed3214d64d --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/es.md @@ -0,0 +1,10 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/fr.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/fr.md new file mode 100644 index 00000000000..3ed3214d64d --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/nl.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/nl.md new file mode 100644 index 00000000000..3ed3214d64d --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/octoplushy_legwidth_sample.svg b/markdown/org/docs/patterns/octoplushy/options/legwidth/octoplushy_legwidth_sample.svg new file mode 100644 index 00000000000..35c8aa894b6 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/octoplushy_legwidth_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/legwidth/uk.md b/markdown/org/docs/patterns/octoplushy/options/legwidth/uk.md new file mode 100644 index 00000000000..3ed3214d64d --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/legwidth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Leg Width" +--- + +The width of the legs can be adjusted. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_legwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/de.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/de.md new file mode 100644 index 00000000000..7aaadbbd624 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/de.md @@ -0,0 +1,10 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/en.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/en.md new file mode 100644 index 00000000000..c6ad763d837 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/en.md @@ -0,0 +1,9 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/es.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/es.md new file mode 100644 index 00000000000..7aaadbbd624 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/es.md @@ -0,0 +1,10 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/fr.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/fr.md new file mode 100644 index 00000000000..7aaadbbd624 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/fr.md @@ -0,0 +1,10 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/nl.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/nl.md new file mode 100644 index 00000000000..7aaadbbd624 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/nl.md @@ -0,0 +1,10 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/octoplushy_neckwidth_sample.svg b/markdown/org/docs/patterns/octoplushy/options/neckwidth/octoplushy_neckwidth_sample.svg new file mode 100644 index 00000000000..1a76ad2cf08 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/octoplushy_neckwidth_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/neckwidth/uk.md b/markdown/org/docs/patterns/octoplushy/options/neckwidth/uk.md new file mode 100644 index 00000000000..7aaadbbd624 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/neckwidth/uk.md @@ -0,0 +1,10 @@ +--- +title: "Neck Width" +--- + +The width of the neck can be adjusted. This is a percentage of the head. + + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_neckwidth_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/nl.md b/markdown/org/docs/patterns/octoplushy/options/nl.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/nl.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/options/size/de.md b/markdown/org/docs/patterns/octoplushy/options/size/de.md new file mode 100644 index 00000000000..46b9dce9bd2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/de.md @@ -0,0 +1,9 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. This is a percentage of this default length. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/size/en.md b/markdown/org/docs/patterns/octoplushy/options/size/en.md new file mode 100644 index 00000000000..c5064a12523 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/en.md @@ -0,0 +1,10 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. +This is a percentage of this default length. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/size/es.md b/markdown/org/docs/patterns/octoplushy/options/size/es.md new file mode 100644 index 00000000000..46b9dce9bd2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/es.md @@ -0,0 +1,9 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. This is a percentage of this default length. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/size/fr.md b/markdown/org/docs/patterns/octoplushy/options/size/fr.md new file mode 100644 index 00000000000..46b9dce9bd2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/fr.md @@ -0,0 +1,9 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. This is a percentage of this default length. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/size/nl.md b/markdown/org/docs/patterns/octoplushy/options/size/nl.md new file mode 100644 index 00000000000..46b9dce9bd2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/nl.md @@ -0,0 +1,9 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. This is a percentage of this default length. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/size/octoplushy_size_sample.svg b/markdown/org/docs/patterns/octoplushy/options/size/octoplushy_size_sample.svg new file mode 100644 index 00000000000..bc3b61fa2ef --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/octoplushy_size_sample.svg @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/size/uk.md b/markdown/org/docs/patterns/octoplushy/options/size/uk.md new file mode 100644 index 00000000000..46b9dce9bd2 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/size/uk.md @@ -0,0 +1,9 @@ +--- +title: "Size" +--- + +Octoplushy can be made in different sizes. The default has a head size of about 15cm, and 25cm long legs. This is a percentage of this default length. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_size_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/de.md b/markdown/org/docs/patterns/octoplushy/options/type/de.md new file mode 100644 index 00000000000..680bda746f7 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/de.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/en.md b/markdown/org/docs/patterns/octoplushy/options/type/en.md new file mode 100644 index 00000000000..c46d24ae623 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/en.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/es.md b/markdown/org/docs/patterns/octoplushy/options/type/es.md new file mode 100644 index 00000000000..680bda746f7 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/es.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/fr.md b/markdown/org/docs/patterns/octoplushy/options/type/fr.md new file mode 100644 index 00000000000..680bda746f7 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/fr.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/nl.md b/markdown/org/docs/patterns/octoplushy/options/type/nl.md new file mode 100644 index 00000000000..680bda746f7 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/nl.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/type/octoplushy_type_sample.svg b/markdown/org/docs/patterns/octoplushy/options/type/octoplushy_type_sample.svg new file mode 100644 index 00000000000..5c943b894ac --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/octoplushy_type_sample.svg @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/octoplushy/options/type/uk.md b/markdown/org/docs/patterns/octoplushy/options/type/uk.md new file mode 100644 index 00000000000..680bda746f7 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/type/uk.md @@ -0,0 +1,9 @@ +--- +title: "Type" +--- + +There are three distinct Octoplushies. The original cute Octoplushy, the more authentic Octopus, and the Squid. + + +## Effect of this option on the pattern +![This image shows the effect of this option by superimposing several variants that have a different value for this option](octoplushy_type_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/octoplushy/options/uk.md b/markdown/org/docs/patterns/octoplushy/options/uk.md new file mode 100644 index 00000000000..5a863365006 --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/options/uk.md @@ -0,0 +1,5 @@ +--- +title: "Octoplushy, the plushy octopus: Design Options" +--- + + diff --git a/markdown/org/docs/patterns/octoplushy/uk.md b/markdown/org/docs/patterns/octoplushy/uk.md new file mode 100644 index 00000000000..978951bb5ea --- /dev/null +++ b/markdown/org/docs/patterns/octoplushy/uk.md @@ -0,0 +1,5 @@ +--- +title: Octoplushy, the plushy octopus +--- + + diff --git a/markdown/org/docs/patterns/paco/cutting/uk.md b/markdown/org/docs/patterns/paco/cutting/uk.md new file mode 100644 index 00000000000..e136e6f2d71 --- /dev/null +++ b/markdown/org/docs/patterns/paco/cutting/uk.md @@ -0,0 +1,36 @@ +*** + +title: "Paco pants: Cutting Instructions" + +*** + + + +###### Cut out only what you need + +Depending on the choices you made in your pattern, you may not need all parts. +If a pattern part is not printed, it means you don't need it. + + + +- From your main fabric: + - 2x **part 1**: This is the back panel. Cut these from your **main fabric** with _good sides together_ + - 2x **part 2**: This is the front panel. Cut these from your **main fabric** with _good sides together_ + - 2x **part 3**: This is the waistband. Cut it from your **main fabric** + - 2x **part 4**: This is the ankle cuff. Cut these, from your **main fabric** with _good sides together_ (not needed if your chose not to have an elasticated hem) + - 2x **part 7**: This is the back pocket welt. Cut 2 of these from your **main fabric** with _good sides together_ +- From your lining fabric: + - 2x **part 5**: This is the front pocket bag. Cut these, from your **lining fabric** _on the fold_ (not needed if you chose to not have front pockets) + - 2x **part 6**: This is the back pocket bag. Cut 2 of these from your **lining fabric** _on the fold_ +- From interfacing: + - 2x **part 8**: This is the back pocket welt interfacing. Cut 2 of these from **interfacing** + + + +#### Caveats + +- There is no seam allowance on the interfacing +- There is extra seam allowance on the waist band and hem +- The waistband is a mere rectangle, so it's not fully printed to save paper + + diff --git a/markdown/org/docs/patterns/paco/fabric/de.md b/markdown/org/docs/patterns/paco/fabric/de.md index 9d0fd3903b3..a599ce336a5 100644 --- a/markdown/org/docs/patterns/paco/fabric/de.md +++ b/markdown/org/docs/patterns/paco/fabric/de.md @@ -21,4 +21,3 @@ Verwenden Sie eines der anderen Designs mit einer eingebauten Taille, wenn Sie m Vermeiden Sie auch die Auswahl eines Stoffes mit einer Menge Stretch, denn es wird die Dinge komplizieren, wenn Sie die elastischen installieren. - diff --git a/markdown/org/docs/patterns/paco/fabric/en.md b/markdown/org/docs/patterns/paco/fabric/en.md index c9ffbb7e3f3..ff8ab472735 100644 --- a/markdown/org/docs/patterns/paco/fabric/en.md +++ b/markdown/org/docs/patterns/paco/fabric/en.md @@ -18,6 +18,6 @@ While linen is the go-to for hot summer days, I would not recommend it for these as they come with an elasticated waist/cuffs, which means wrinkle hell. Use one of out other designs with a fitted waist if you want linen pants. -Also avoid picking a fabric with a lot of stretch, for it will complicate matters when you're installing the elastic. +Also avoid picking a fabric with a lot of stretch, for it will complicate matters when you're installing the elastic. diff --git a/markdown/org/docs/patterns/paco/fabric/fr.md b/markdown/org/docs/patterns/paco/fabric/fr.md index 3abc0bb401b..675e48b006a 100644 --- a/markdown/org/docs/patterns/paco/fabric/fr.md +++ b/markdown/org/docs/patterns/paco/fabric/fr.md @@ -21,4 +21,3 @@ Utilisez un autre design avec une taille ajustée si vous voulez un pantalon de Évitez également de ramasser un tissu avec beaucoup d'extension, car cela compliquera les choses lorsque vous installez l'élastique. - diff --git a/markdown/org/docs/patterns/paco/fabric/uk.md b/markdown/org/docs/patterns/paco/fabric/uk.md new file mode 100644 index 00000000000..65a3b534825 --- /dev/null +++ b/markdown/org/docs/patterns/paco/fabric/uk.md @@ -0,0 +1,25 @@ +*** + +title: "Paco pants: Fabric Options" + +*** + +These work best in a lighter fabric with relatively good drape. + +A light cotton, or chambray are particularly well-suited.\ +Rayon or jersey will work too, but will give it a more casual-look. + +For the opposite effect, less casual and more style, you can consider a silk blend or light wool. + + + +###### Some things to avoid + +Resist the temptation to make these in linen. +While linen is the go-to for hot summer days, I would not recommend it for these pants +as they come with an elasticated waist/cuffs, which means wrinkle hell. +Use one of out other designs with a fitted waist if you want linen pants. + +Also avoid picking a fabric with a lot of stretch, for it will complicate matters when you're installing the elastic. + + diff --git a/markdown/org/docs/patterns/paco/instructions/en.md b/markdown/org/docs/patterns/paco/instructions/en.md index 58d088a8057..d2b4b227a51 100644 --- a/markdown/org/docs/patterns/paco/instructions/en.md +++ b/markdown/org/docs/patterns/paco/instructions/en.md @@ -14,7 +14,7 @@ the raw edges. For these instructions, we'll assume that you are using a serger for seam finishes, but we'll also provide alternatives. Other options for finishing seams include trimming them with pinking shears, stitching a zig-zag along the edge of the seam to keep it from fraying, or binding with -bias tape. +bias tape.
diff --git a/markdown/org/docs/patterns/paco/instructions/es.md b/markdown/org/docs/patterns/paco/instructions/es.md index 7c9b3f96b8a..9df1f9bc2a6 100644 --- a/markdown/org/docs/patterns/paco/instructions/es.md +++ b/markdown/org/docs/patterns/paco/instructions/es.md @@ -20,7 +20,7 @@ cinta de sesgo. ## Paso 1: Construir los bolsillos de respaldo -Are you planning to insert welt pockets in the back of your Paco pants? Is so, awesome! This is arguably the trickiest part, and we'll accomplish it first. If not, you can skip ahead to the next step, preparing the front pockets. +Are you planning to insert welt pockets in the back of your Paco pants? Is so, awesome! Is so, awesome! This is arguably the trickiest part, and we'll accomplish it first. If not, you can skip ahead to the next step, preparing the front pockets. Construct the welt pockets at the back of your trousers, including the pocket bag. diff --git a/markdown/org/docs/patterns/paco/instructions/fr.md b/markdown/org/docs/patterns/paco/instructions/fr.md index bc59ee83203..2cf06f90ec0 100644 --- a/markdown/org/docs/patterns/paco/instructions/fr.md +++ b/markdown/org/docs/patterns/paco/instructions/fr.md @@ -38,6 +38,9 @@ vous n'avez jamais fait de poches soudées auparavant, vous allez vous passer. + + ## Étape 2 : Préparez les poches avant Your pockets are cut from a lining material, which can save on weight and bulk, but also means that you'll want to hide them a little bit inside the side seam, so the lining doesn't show. The flap along the outside seam of each leg is for just this purpose. diff --git a/markdown/org/docs/patterns/paco/instructions/nl.md b/markdown/org/docs/patterns/paco/instructions/nl.md index 1ddbd98633e..5b6678f6a81 100644 --- a/markdown/org/docs/patterns/paco/instructions/nl.md +++ b/markdown/org/docs/patterns/paco/instructions/nl.md @@ -38,6 +38,8 @@ je nog nooit paspelzakken hebt gemaakt, ben je in orde. + ## Stap 2: Maak de voorzakken diff --git a/markdown/org/docs/patterns/paco/instructions/uk.md b/markdown/org/docs/patterns/paco/instructions/uk.md new file mode 100644 index 00000000000..30d7ff36938 --- /dev/null +++ b/markdown/org/docs/patterns/paco/instructions/uk.md @@ -0,0 +1,356 @@ +*** + +title: "Paco pants: Sewing Instructions" + +*** + + + +##### A note on seam finishes + +Before you get started, you'll want to decide on your method of seam finishing, or how you tidy +up the raw seams along the legs of your pants to keep them from fraying. There are a lot of +options for this. Common choices are serging the raw edges, or using French seams to encase +the raw edges. + +For these instructions, we'll assume that you are using a serger for seam finishes, but we'll +also provide alternatives. Other options for finishing seams include trimming them with pinking +shears, stitching a zig-zag along the edge of the seam to keep it from fraying, or binding with +bias tape. + + + +## Step 1: Construct the back pockets + +Are you planning to insert welt pockets in the back of your Paco pants? Is so, awesome! This is arguably the trickiest part, and we'll accomplish it first. If not, you can skip ahead to the next step, preparing the front pockets. + +Construct the welt pockets at the back of your trousers, including the pocket bag. + + + +##### Welt pockets + +Constructing a welt pocket is a technique that is used is different garments. That is why it's +branched it off into its own documentation page. + +There’s both written documentation and a video series that shows you how to do it, so even if +you’ve never made welt pockets before, you’ll be fine. + +[To the welt pockets documentation](https://freesewing.org/docs/sewing/double-welt-pockets/) + + + + + +## Step 2: Prepare the front pockets + +Your pockets are cut from a lining material, which can save on weight and bulk, but also means that you'll want to hide them a little bit inside the side seam, so the lining doesn't show. The flap along the outside seam of each leg is for just this purpose. + +If you are using a serger, serge the curved edges of your pocket pieces. Then, serge along the long edges of the pocket flaps. + +![Front pockets with serged edges](step02.svg) + +## Step 3: Attach pockets to pants + +With [good sides together](https://freesewing.org/docs/sewing/good-sides-together/), line up the markings on the edge of the pocket bag with the ends of the flap along the outside seam of the front leg. Sew together. Repeat for second leg. + +![Pockets sewn to front pants](step03.svg) + +Now do the same with the back legs. With good sides together, line up the markings on the edge of the pocket bag with the ends of the flap along the outside seam of the back leg. Before sewing, make sure that your left leg front and back are attached to one pocket, and your right leg front and back are attached to the other. Sew together. + +Press all seams toward the pants (away from the pocket bag). + +![Pressed pockets](step03b.svg) + + + +Optional: You can understitch here, a millimeter or two in from the seam on each side of the pocket +bag, to secure the flaps and pocket bag all together the way you pressed them. + + + +![Understitched pockets](step03c.svg) + +## Step 4: Prepare the side seams and pocket bag + +You should now have two big pieces, each with a front and back leg attached by a pocket. + +Take one of the pieces, and place the front and back leg good sides together. Align the outer side seam, so that the side seam of the leg pieces match up, and the pocket bag edges are aligned, with good sides together. + +## Step 5: Sew the side seams + +You'll sew two separate seams to stitch up your side seams while leaving your pockets open. + +Start at the top of the leg pieces. Sew along the side seam, pivoting as you reach the pocket bag. You can also shorten your stitch length here to reinforce the corner of the pocket opening. Follow the side seam, pivoting again and ending at the top of the pocket. + +Next, you'll close the bottom of the pocket bag and stitch the rest of the side seam. Start at the bottom edge of the pocket bag, sewing along the bottom of the pocket, then pivoting when you get to the side seam of the pants. You can use a shorter stitch length for the first few stitches on the side seam, to reinforce the bottom of the pocket opening. Sew all the way down the leg side seam. + +Repeat for second leg. + +![Sewn up side leg](step05.svg) + +## Step 6: Finish the side seams + +Finishing these seams requires a touch of delicacy, especially around the tops of the pockets. + +It would be difficult to finish the top part of the side seam with a serger, so we'll use a zig-zag stitch. Starting at the top of the side seam, zig-zag stitch along the raw edge of the seam allowance, pivoting around the pocket opening. Continue the zig-zag stitch up the side of the pocket, unless you've serged your pockets already (in which case you can stop when you reach the pocket). + +The bottom opening of the pocket is a tight corner. To finish the seam around this corner, zig-zag stitch the raw edge of the seam allowance, starting where it joins the pocket, pivoting at the corner and continuing about 5 cm (2 in.) down the side seam. You can continue finishing the side seam with a zig-zag stitch all the way down. Alternatively, you can serge the side seam, making sure to stop the line of serger stitches a little ways from the pocket. + + + +Make sure to secure these serger stitches. They won't be caught in any other seams, so they risk +unravelling if left unsecured. + + + +Repeat for second leg. + +![Zig-zag stitched side seams](step06.svg) + +Press the side seams toward the front. + + + +This may feel counterintuitive, as a lot of pants suggest pressing the side seams to the back. +However, with inseam pockets, you'll want the pockets pressed toward the front of the pants. Your +pockets will be fighting your side seam if you press the seam to the back, so we'll press it all +to the front. This will will result in a smoother finish. + + + + + +The corners of a pocket opening are one of the most likely places to wear out or tear, especially +if you use your pockets a lot. If you're worried about tearing at the corners of your pockets, or +if your fabric is more delicate, you can reinforce the pocket openings with bar tacks along the seam +line, just outside the pocket openings. + + + +## Step 7: Anchor pocket bag to waist + +The pockets in Paco are anchored at the waist. This means that you can put things in your pockets without them becoming unsightly bump that’s just dangling around in your trouser leg. + +To anchor each pocket, align the top of the pocket with the mark along the waistline of your pattern. Sew a line of basting stitches inside your seam allowance to hold the pocket in place. + +![Anchored pocket bags showing basted seam](step07.svg) + +## Step 8: Sew and finish the inseams + +Align the inseams with good sides together, then sew up the inseams. Finish the seams the same way you finished the side seams. Press inseams to the back. + +![Sewn up inseam](step08.svg) + +## Step 9: Sew and finish crotch seam + +To attach the individual legs, flip one leg good side out (it doesn't matter which leg), then place it inside the other leg, good sides together. You should now have what looks like just one pant leg, with wrong sides visible. Align the center front, center back, and inseams of each leg, then pin along the length of the crotch seam. Sew and finish the crotch seam. + + + +If you sew from center front to center back, it's easier to keep your inseam seam allowances +pressed to the back as they feed through the machine. + + + +![Crotch seam](step09.svg) + +## Step 10: Place eyelets for the draw string (optional) + +Mark the middle of your waistband length. Fold one of your waistband pieces double, and mark the middle of the width (do not take the seam allowance into account). + +A bit to the left and right of this, you can add two eyelets to pass a drawstring through. Because your Paco pants have elastic in the waistband, as well, this is a nice detail, but is not required. + + + +##### It’s best to add some reinforcement + +If you've chosen a fabric that is slippery, drapey, or thin, you might want to add some reinforcement +behind these eyelets. A bit of interfacing or a leftover piece of denim will do just fine. + + + +![Waistband with eyelets](step10.svg) + +## Step 11: Prepare the waist elastic + +There’s no magic formula for the length of your elastic. So you wrap it around your waist and pull it tight until you get a good fit. Paco is cut to sit at the high hip, so make sure your elastic is long enough to sit comfortably at the high hip. + +Mark this length, cut the elastic, and join the two ends together. + +![Elastic joined with a series of zig-zag stitches](step11.svg) + +## Step 12: Join the waistband + +Place the two waistband pieces good sides together, and align the short edges. Sew the short edges together, then press open. These will be inside the waistband, so you don't need to finish the edges of these seams unless your fabric is particularly likely to fray. + +![Joined waistband pieces](step12.svg) + +Fold the waistband double along the length, with good sides out, and press. This fold will be the top of your waistband. + +## Step 13: Attach the waistband + +You have two options for attaching your waistband. One is a bit simpler, but leaves an exposed seam on the inside. The other is a bit more fiddly, but it encloses the raw edges of your fabric. + +### The simpler method + +Keep your waistband folded double, and place the elastic inside. Make sure to align the place where the elastic is joined with the back of the waistband (opposite the eyelets). + +Find the center front of your waistband (easy if there are eyelets, if not just fold it double), and align that with the center front seam of your pants. Make sure that your waistband is outside of your pants, with good sides together. Pin in place. + + + +##### Mind your eyelets + +If you’ve made eyelets in your waistband, double check that they are placed towards the outside, +not the inside of your waistband. + + + +Next, align the center backs and pin in place, adding additional pins around the waistband as needed. + +Sew the waistband to the pants, as close to the the elastic as you can, but don’t sew into the elastic. + +![Waistband sewn with simple method](step13.svg) + +It’s fine to not sew too close the first time around, and once your elastic is attached and encased, make a second round to sew it a bit more snugly. + +Remove any basting stitches from the tops of the pocket bags. + +Finish the seam with a serger or other method. + +### The enclosed seam method + +Open the waistband. You will still be able to see the fold along its length, but you will be working with each side of the waistband individually. + +Find the center front of your waistband (easy if there are eyelets, if not just fold it double), and align that with the center front seam of your pants. Make sure that your waistband is outside of your pants, with good sides together. Pin in place. + + + +##### Mind your eyelets + +To make sure your eyelets will end up on the outside, make sure they are closer to the top of your +waistband, above the fold, for now. + + + +![Open waistband sewn to pants](step13b.svg) + +Next, align the center back of your waistband with the center back seam. Pin in place. Then, add additional pins around the waistband as needed. + +Sew the waistband to the pants. + +Press the waistband up. Press the seam allowance in on the opposite side of the waistband, maintaining the fold along the center of the waistband. + +Refold the waistband, turning half the waistband to the inside. Pin so that the seam allowance on the inside is just below the seam joining the waistband to the pants, and pin in place around the waistband. From the outside, stitch in the ditch, catching the inner waistband as you go. + + + +![Waistband sewn with enclosed seams](step13c.svg) + +## Step 14: Prepare the cuff elastic + +As you did with the waistband elastic, wrap the elastic for your cuff around your ankle and pull it tight until you get a good fit. + +Mark this length, cut the elastic, and join the two ends together. Repeat for the other cuff elastic. + +![Elastic joined with zig-zag stitching](step14.svg) + +## Step 15: Join the cuffs + +Fold each cuff with good sides together, aligning the short edges. For each cuff, sew the short edges together, then press open. These will be inside the cuff, so you don't need to finish the edges of these seams unless your fabric is particularly likely to fray. + +![Joined cuffs](step15.svg) + +Fold each cuff double along the length, with good sides out, and press. This fold will be the bottom of your cuffs. + +## Step 16: Attach the cuffs + +You will attach your cuffs the same way that you attached the waistband. As with the waistband, there are two options - a simpler choice, and a choice without exposed seams on the inside. + + + +If your sewing machine has a detachable bed (usually removed to expose the "free arm" for sewing +sleeve cuffs), this will make sewing the cuffs easier. + + + +### The simpler method + +Keep your cuffs folded double, and place the elastic inside. + +Align the seam in the cuff with the inseam of the pants. Make sure that your cuff is outside of your pants, with good sides together. Pin in place, then pin the rest of the way around the cuff. + + + +##### Pinning the cuffs + +The elastic will make the cuffs more difficult to pin. To make sure that your cuffs are pinned evenly +to the pants, place your second pin on the opposite side of the leg opening from the first. You can +stretch the elastic to make sure that everything is lined up smoothly, then place your next pins halfway +between the first two. Continue this way, pinning halfway between other pins, until you feel confident +there are enough. + + + +Sew the cuff to the pants opening, as close to the the elastic as you can, but don’t sew into the elastic. + +![Cuffs sewn with simple method](step16.svg) + +Finish the seam with a serger or other method. + +### The enclosed seam method + +Open the cuff. You will still be able to see the fold along its length, but you will be working with each side of the cuff individually. + +Align the seam in the cuff with the inseam of the pants. Make sure that your cuff is outside of your pants, with good sides together. Pin in place, then pin the rest of the way around the cuff. + +Sew the cuff to the pants. + +![Sewing the open cuffs to the pants](step16b.svg) + +Press the cuff away from the pants. Press the seam allowance in on the opposite side of the cuff, maintaining the fold along the center of the cuff. + +Refold the cuff, turning half the cuff to the inside. Pin so that the seam allowance on the inside is just past the seam joining the cuff to the pants, and pin in place around the cuff. From the outside, stitch in the ditch, catching the inner cuff as you go. + +![Cuffs sewn with enclosed seams](step16c.svg) + +## Step 17: Stitching the cuffs and waistband (optional) + +If you have wider cuff elastic, you may want to stitch a horizontal line halfway up the cuff. This will hold your elastic in place and help keep it from folding or twisting. Make sure to stretch the elastic evenly as you sew, so that it gathers the fabric evenly. (If you sew without stretching the elastic, you risk lumpy gathers and a leg opening too narrow to get your foot through.) + + + +If you like the look, you can also sew more than one line of stitches, evenly spaced between the top and bottom of the cuff. + +You can do the same for the waistband. + +![Waistband and cuffs with decorative stitching](step17.svg) + + + +If you put in eyelets for a drawstring, sew a line of stitches above the eyelets and a separate line +below the eyelets, leaving a channel wide enough for your drawstring. + + + +## Step 18: Thread a draw string around the waist (optional) + +If you put eyelets in your waistband, thread a drawstring through one eyelet, around the waist, and out of the other eyelet. + + + +There are tools to make this task easier, but one that almost everyone has is a simple safety pin. +Pin the safety pin to one end of your drawstring, then push it through the channel. The safety pin +will be easier to maneuver through the fabric, and it will pull the drawstring along with it. + + + +![Paco threaded with drawstring](step18.svg) + +## Step 19: Enjoy your Paco pants! + +You did it! Way to go! + + diff --git a/markdown/org/docs/patterns/paco/measurements/uk.md b/markdown/org/docs/patterns/paco/measurements/uk.md new file mode 100644 index 00000000000..6c9c9317f4b --- /dev/null +++ b/markdown/org/docs/patterns/paco/measurements/uk.md @@ -0,0 +1,7 @@ +*** + +title: "Paco pants: Required Measurements" + +*** + + diff --git a/markdown/org/docs/patterns/paco/needs/uk.md b/markdown/org/docs/patterns/paco/needs/uk.md new file mode 100644 index 00000000000..2cf0603aa1f --- /dev/null +++ b/markdown/org/docs/patterns/paco/needs/uk.md @@ -0,0 +1,14 @@ +*** + +title: "Paco pants: What You Need" + +*** + +To make Paco, you will need the following: + +- [Basic sewing supplies](/docs/sewing/basic-sewing-supplies) +- About 1.25 meters (1.4 yards) (depending on your height) of a suitable fabric ([see Fabric options](/docs/patterns/paco/fabric)) +- 30cm (12") of lining for the pocket bags +- A little bit of interfacing for the pocket welts (only needed if you opted for back pockets) +- A drawstring and two eyelets (optional) +- Enough wide flat elastic for your waist and cuffs diff --git a/markdown/org/docs/patterns/paco/options/ankleelastic/paco_ankleelastic_sample.svg b/markdown/org/docs/patterns/paco/options/ankleelastic/paco_ankleelastic_sample.svg index bc1b0b92a09..f2eb2056893 100644 --- a/markdown/org/docs/patterns/paco/options/ankleelastic/paco_ankleelastic_sample.svg +++ b/markdown/org/docs/patterns/paco/options/ankleelastic/paco_ankleelastic_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/simon/options/extratopbutton/simon_extratopbutton_sample.svg b/markdown/org/docs/patterns/simon/options/extratopbutton/simon_extratopbutton_sample.svg index f309806d604..2100b085c95 100644 --- a/markdown/org/docs/patterns/simon/options/extratopbutton/simon_extratopbutton_sample.svg +++ b/markdown/org/docs/patterns/simon/options/extratopbutton/simon_extratopbutton_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/simone/options/extratopbutton/simone_extratopbutton_sample.svg b/markdown/org/docs/patterns/simone/options/extratopbutton/simone_extratopbutton_sample.svg index b5d7455f881..831fdb51ed9 100644 --- a/markdown/org/docs/patterns/simone/options/extratopbutton/simone_extratopbutton_sample.svg +++ b/markdown/org/docs/patterns/simone/options/extratopbutton/simone_extratopbutton_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/sven/options/frontarmholedeeper/sven_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/sven/options/frontarmholedeeper/sven_frontarmholedeeper_sample.svg index 4e936f0e1bd..6c2538fdab6 100644 --- a/markdown/org/docs/patterns/sven/options/frontarmholedeeper/sven_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/sven/options/frontarmholedeeper/sven_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/tamiko/options/flare/tamiko_flare_sample.svg b/markdown/org/docs/patterns/tamiko/options/flare/tamiko_flare_sample.svg index e0bf75cfa2a..946176cc2c6 100644 --- a/markdown/org/docs/patterns/tamiko/options/flare/tamiko_flare_sample.svg +++ b/markdown/org/docs/patterns/tamiko/options/flare/tamiko_flare_sample.svg @@ -1,8 +1,28 @@ \ No newline at end of file diff --git a/markdown/org/docs/patterns/wahid/options/frontinset/uk.md b/markdown/org/docs/patterns/wahid/options/frontinset/uk.md new file mode 100644 index 00000000000..3058377b613 --- /dev/null +++ b/markdown/org/docs/patterns/wahid/options/frontinset/uk.md @@ -0,0 +1,22 @@ +*** + +title: "Front inset" + +*** + +![Front inset](frontinset.svg) + +How far do you want your waistcoat armhole to curve inwards on the front? + + + +###### What's the point? + +The armhole of your waistcoat can curve further inward, given that there is no sleeve attached to it. +This influences the style of the waistcoat. + + + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](wahid_frontinset_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/wahid/options/frontinset/wahid_frontinset_sample.svg b/markdown/org/docs/patterns/wahid/options/frontinset/wahid_frontinset_sample.svg index 7a8caed38fc..711927092b6 100644 --- a/markdown/org/docs/patterns/wahid/options/frontinset/wahid_frontinset_sample.svg +++ b/markdown/org/docs/patterns/wahid/options/frontinset/wahid_frontinset_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/uk.md b/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/uk.md new file mode 100644 index 00000000000..e1917dd70c3 --- /dev/null +++ b/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/uk.md @@ -0,0 +1,13 @@ +*** + +title: "Front armhole extra cutout" + +*** + +Controls how much the front of the armhole is cut deeper into the garment than the back. + +Since the human shoulder is more rounded at the front of the body, the sleeve(cap) is more rounded there too, and the armhole is typically cut deeper into the front of the garment than the back. This option controls how much deeper. + +## Effect of this option on the pattern + +![This image shows the effect of this option by superimposing several variants that have a different value for this option](yuri_frontarmholedeeper_sample.svg "Effect of this option on the pattern") diff --git a/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/yuri_frontarmholedeeper_sample.svg b/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/yuri_frontarmholedeeper_sample.svg index cb42c1d5141..f63577f8236 100644 --- a/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/yuri_frontarmholedeeper_sample.svg +++ b/markdown/org/docs/patterns/yuri/options/frontarmholedeeper/yuri_frontarmholedeeper_sample.svg @@ -1,8 +1,28 @@ + + + + + + + + + + + + + + + + ` } diff --git a/packages/core/tests/part.test.js b/packages/core/tests/part.test.js index 68da7bd8f93..2256b020d98 100644 --- a/packages/core/tests/part.test.js +++ b/packages/core/tests/part.test.js @@ -1,6 +1,7 @@ let expect = require("chai").expect; let freesewing = require("../dist/index.js"); +describe('Part', () => { it("Svg constructor should initialize object", () => { let pattern = new freesewing.Pattern(); let part = new pattern.Part(); @@ -82,11 +83,27 @@ it("Should set part attributes", () => { it("Should inject a part", () => { let pattern = new freesewing.Pattern(); let part = new pattern.Part(); - part.points.foo = new part.Point(12, 23); + part.points.a = new part.Point(12, 23); + part.points.b = new part.Point(10, 10); + part.points.c = new part.Point(20, 20); + part.paths.bar = new freesewing.Path() + .move(part.points.a) + .line(part.points.b) + .curve(part.points.c, part.points.b, part.points.a) + const { Snippet, snippets } = part.shorthand() + snippets.d = new Snippet('notch', part.points.a) let test = new pattern.Part(); test.inject(part); - expect(test.points.foo.x).to.equal(12); - expect(test.points.foo.y).to.equal(23); + expect(test.points.a.x).to.equal(12); + expect(test.points.a.y).to.equal(23); + expect(test.paths.bar.ops.length).to.equal(3) + for (let i=0;i<3;i++) { + expect(test.paths.bar.ops[i].type).to.equal(part.paths.bar.ops[i].type) + expect(test.paths.bar.ops[i].to.x).to.equal(part.paths.bar.ops[i].to.x) + expect(test.paths.bar.ops[i].to.y).to.equal(part.paths.bar.ops[i].to.y) + } + expect(test.snippets.d.anchor.x).to.equal(part.points.a.x) + expect(test.snippets.d.anchor.y).to.equal(part.points.a.y) }); it("Should return shorthand", () => { @@ -98,22 +115,31 @@ it("Should return shorthand", () => { expect(short.complete).to.equal(true); expect(short.paperless).to.equal(true); }); -/* -it("Should not allow a margin below 10 for paperless patterns", () => { - let pattern = new freesewing.Pattern(); - pattern.settings.paperless = true; - pattern.settings.margin = 2; - pattern.parts.a = new pattern.Part(); - let a = pattern.parts.a; - a.points.a = new pattern.Point(0,0); - a.points.b = new pattern.Point(0,100); - a.paths.a = new pattern.Path() - .move(a.points.a) - .line(a.points.b); - pattern.draft(); - expect(pattern.width).to.equal(120); + +it("Should raise a warning when setting a non-Point value in points", () => { + const pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + const part = new pattern.Part(); + const { points } = part.shorthand() + points.a = 'banana' + expect(pattern.events.warning.length).to.equal(3) + expect(pattern.events.warning[0]).to.equal('`points.a` was set with a value that is not a `Point` object') + expect(pattern.events.warning[1]).to.equal('`points.a` was set with a `x` parameter that is not a `number`') + expect(pattern.events.warning[2]).to.equal('`points.a` was set with a `y` parameter that is not a `number`') }); -*/ + +it("Should raise a warning when setting a non-Snippet value in snippets", () => { + const pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + const part = new pattern.Part(); + const { snippets } = part.shorthand() + snippets.a = 'banana' + expect(pattern.events.warning.length).to.equal(3) + expect(pattern.events.warning[0]).to.equal('`snippets.a` was set with a value that is not a `Snippet` object') + expect(pattern.events.warning[1]).to.equal('`snippets.a` was set with a `def` parameter that is not a `string`') + expect(pattern.events.warning[2]).to.equal('`snippets.a` was set with an `anchor` parameter that is not a `Point`') +}); + it("Should calculate the part boundary with default margin", () => { let pattern = new freesewing.Pattern(); pattern.settings.mode = "draft"; @@ -206,3 +232,197 @@ it("Should only stack a part if needed", () => { part.stack(); expect(part.attributes.get("transform")).to.equal(false); }); + +it("Should run hooks", () => { + let count = 0 + const pattern = new freesewing.Pattern() + const part = new pattern.Part(); + part.hooks.preDraft = [{ method: function(p) { count++ }} ] + part.runHooks('preDraft') + expect(count).to.equal(1); +}); + +it("Should get the units closure to raise a debug when passing a non-number", () => { + const pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + const part = new pattern.Part(); + const short = part.shorthand(); + short.units('a') + expect(pattern.events.debug.length).to.equal(1) + expect(pattern.events.debug[0]).to.equal('Calling `units(value)` but `value` is not a number (`string`)') +}); + +it("Should generate the part transforms", () => { + let pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + let part = new pattern.Part(); + let short = part.shorthand(); + part.points.from = new short.Point(2, 2); + part.points.to = new short.Point(19, 76); + part.paths.test = new short.Path() + .move(part.points.from) + .line(part.points.to); + part.stack(); + part.generateTransform({ + move: { + x: 10, + y: 20 + } + }) + expect(part.attributes.list.transform.length).to.equal(1) + expect(part.attributes.list.transform[0]).to.equal('translate(10 20)') +}); + + +it("Should add the part cut", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + expect(part.cut.materials.fabric.cut).to.equal(4) + expect(part.cut.materials.fabric.identical).to.equal(true) + part.addCut() + expect(part.cut.materials.fabric.cut).to.equal(2) + expect(part.cut.materials.fabric.identical).to.equal(false) +}); + +it("Should generate an error if cut is not a number", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut('a', 'fabric', true) + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal('Tried to set cut to a value that is not a positive integer') +}); + +it("Should generate an warning if material is not a string", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(3, 4) + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to set material to a value that is not a string') +}); + +it("Should generate an error when removing a material that is not set (through addCut)", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.addCut(false, 'lining') + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to remove a material that is not set') +}); + +it("Should remove the part cut through addCut", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.addCut(false, 'fabric') + expect(typeof part.cut.materials.fabric).to.equal('undefined') +}); + +it("Should remove the part cut through removeCut", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.removeCut('fabric') + expect(typeof part.cut.materials.fabric).to.equal('undefined') +}); + +it("Should generate an error when removing a material that is not set (through removeCut)", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.removeCut('lining') + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to remove a material that is not set') +}); + +it("Should generate an error when removing a material that is not a string (through removeCut)", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.removeCut(23) + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to remove a material that is not set') +}); + +it("Should generate a warning when calling removeCut without parameters", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.addCut(4, 'fabric', true) + part.removeCut() + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to remove a material that is not set') +}); + +it("Should set the part grainline", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + expect(part.cut.grain).to.equal(90) + part.setGrain(123) + expect(part.cut.grain).to.equal(123) +}); + +it("Should raise a warning when calling part.setGrain() without any parameters", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.setGrain() + expect(part.cut.grain).to.equal(false) +}); + +it("Should raise an error when calling part.setGrain() with a value that is not a number", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + part.setGrain('a') + expect(part.cut.grain).to.equal(90) + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal('Called part.setGrain() with a value that is not a number') +}); + +it("Should set and then remove the cutOnFold", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + const { Point } = part.shorthand() + part.setCutOnFold(new Point(2,3), new Point(100,200)) + expect(part.cut.cutOnFold[0].x).to.equal(2) + expect(part.cut.cutOnFold[0].y).to.equal(3) + expect(part.cut.cutOnFold[1].x).to.equal(100) + expect(part.cut.cutOnFold[1].y).to.equal(200) + part.setCutOnFold(false) + expect(typeof part.cut.cutOnFold).to.equal('undefined') +}); + +it("Should raise an error when setting the cutOnFold with a non-Point value", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + const { Point } = part.shorthand() + part.setCutOnFold(new Point(2,3), 12) + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal('Called part.setCutOnFold() but at least one parameter is not a Point instance') +}); + +describe('isEmpty', () => { + it("Should return true if the part has no paths or snippets", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + expect(part.isEmpty()).to.be.true + }) + + it("Should return false if the part has a path", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + const { Path, paths } = part.shorthand() + paths.seam = new Path() + + expect(part.isEmpty()).to.be.false + }) + + it("Should return false if the part has a snippet", () => { + let pattern = new freesewing.Pattern(); + let part = new pattern.Part(); + const { Point, snippets, Snippet } = part.shorthand() + snippets.test = new Snippet('test', new Point(0,0)) + + expect(part.isEmpty()).to.be.false + }) +}) + +}) diff --git a/packages/core/tests/path.test.js b/packages/core/tests/path.test.js index 8a9bae20b31..feeff9c2ce0 100644 --- a/packages/core/tests/path.test.js +++ b/packages/core/tests/path.test.js @@ -183,6 +183,15 @@ it("Should shift along a line", () => { expect(a.paths.line.shiftAlong(20).y).to.equal(20); }); +it("Should not shift along a path/line if we end up on the end point", () => { + let pattern = new freesewing.Pattern(); + pattern.parts.a = new pattern.Part(); + let a = pattern.parts.a; + + a.paths.line = new a.Path().move(new a.Point(0, 0)).line(new a.Point(10, 0)); + expect(a.paths.line.shiftAlong(10).x).to.equal(10); +}); + it("Should shift along lines", () => { let pattern = new freesewing.Pattern(); pattern.parts.a = new pattern.Part(); @@ -796,3 +805,366 @@ it("Should move along a path even if it lands just on a joint", () => { a.points.test = a.paths.curve.shiftAlong(121.36690836797631) expect(a.points.test).to.be.instanceOf(a.Point) }) + +it("Should add raise methods to a path", () => { + const raise = () => 'hello' + const p1 = new freesewing.Path(10, 20).withRaise(raise); + expect(p1.raise()).to.equal('hello'); +}); + +it("Should add raise methods to a path", () => { + const raise = () => 'hello' + const p1 = new freesewing.Path().withRaise(raise); + expect(p1.raise()).to.equal('hello'); +}); + +it("Should set render to true/false", () => { + const p1 = new freesewing.Path().setRender(false) + expect(p1.render).to.equal(false); +}); + +it("Should set class with setClass", () => { + const p1 = new freesewing.Path().setClass('fabric') + p1.setClass() + expect(p1.attributes.get('class')).to.equal('fabric'); +}); + +it("Should raise a warning when moving to a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + expect(invalid).to.equal(false); + try { + p1.move('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a line to a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + expect(invalid).to.equal(false); + try { + p1.line('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve to a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const a = new freesewing.Point(0,0) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve(a, b, 'c') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve with a Cp1 that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const a = new freesewing.Point(0,0) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve(a, 'x', b) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve with a Cp1 that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve('a', b, b) + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve with a Cp2 that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve(b, 'a', b) + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a _curve with a To that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b)._curve(b, 'a') + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a _curve with a Cp2 that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b)._curve('a', b) + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve_ with a To that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve_(b, 'a') + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when drawing a curve_ with a Cp2 that is a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new freesewing.Path().withRaise(raise) + const b = new freesewing.Point(10,10) + expect(invalid).to.equal(false); + try { + p1.move(b).curve_('a', b) + } + catch (err) { + expect(''+err).to.contain("copy is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should add a noop operation", () => { + const p1 = new freesewing.Path().noop() + expect(p1.ops.length).to.equal(1); + expect(p1.ops[0].type).to.equal('noop'); +}); + +it("Should handle an insop operation", () => { + const a = new freesewing.Point(0,0) + const b = new freesewing.Point(10,10) + const p1 = new freesewing.Path().move(a).line(b) + const p2 = new freesewing.Path().noop('test').insop('test', p1) + expect(p2.ops.length).to.equal(2); + expect(p1.ops[0].type).to.equal('move'); + expect(p1.ops[1].type).to.equal('line'); +}); + +it("Should raise a warning when an insop operation used an falsy ID", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const a = new freesewing.Point(0,0) + const b = new freesewing.Point(10,10) + const p1 = new freesewing.Path().move(a).line(b) + expect(invalid).to.equal(false); + const p2 = new freesewing.Path().withRaise(raise).noop('test').insop(false, p1) + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when an insop operation used an falsy ID", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const a = new freesewing.Point(0,0) + const b = new freesewing.Point(10,10) + const p1 = new freesewing.Path().move(a).line(b) + expect(invalid).to.equal(false); + try { + new freesewing.Path().withRaise(raise).noop('test').insop('test') + } + catch (err) { + expect(''+err).to.contain("Cannot read property 'ops") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when setting an attribute without a name", () => { + let invalid = false + const raise = { warning: () => invalid = true } + expect(invalid).to.equal(false); + const p1 = new freesewing.Path().withRaise(raise).attr() + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when setting an attribute without a value", () => { + let invalid = false + const raise = { warning: () => invalid = true } + expect(invalid).to.equal(false); + const p1 = new freesewing.Path().withRaise(raise).attr('test') + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when calling offset without a distance", () => { + const pattern = new freesewing.Pattern(); + pattern.parts.a = new pattern.Part(); + const { Path, Point, points, paths } = pattern.parts.a.shorthand() + points.a = new Point(0,0) + points.b = new Point(10,10) + paths.a = new Path().move(points.a).line(points.b) + paths.b = paths.a.offset() + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal("Called `Path.offset(distance)` but `distance` is not a number") +}); + +it("Should raise a warning when calling join without a path", () => { + const pattern = new freesewing.Pattern(); + pattern.parts.a = new pattern.Part(); + const { Path, Point, points, paths } = pattern.parts.a.shorthand() + points.a = new Point(0,0) + points.b = new Point(10,10) + try { + paths.a = new Path().move(points.a).line(points.b).join() + } + catch (err) { + expect(''+err).to.contain("Cannot read property 'ops") + } + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal("Called `Path.join(that)` but `that` is not a `Path` object") +}); + +it("Should raise a warning when calling start on a path without drawing operations", () => { + let invalid = false + const raise = { error: () => invalid = true } + expect(invalid).to.equal(false); + try { + new freesewing.Path().withRaise(raise).start() + } + catch (err) { + expect(''+err).to.contain("TypeError: Cannot read property") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when calling end on a path without drawing operations", () => { + let invalid = false + const raise = { error: () => invalid = true } + expect(invalid).to.equal(false); + try { + new freesewing.Path().withRaise(raise).end() + } + catch (err) { + expect(''+err).to.contain("TypeError: Cannot read property") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when calling shiftAlong but distance is not a number", () => { + let invalid = false + const raise = { error: () => invalid = true } + expect(invalid).to.equal(false); + new freesewing.Path() + .withRaise(raise) + .move(new freesewing.Point(0,0)) + .line(new freesewing.Point(10,10)) + .shiftAlong() + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when calling shiftFractionalong but fraction is not a number", () => { + let invalid = false + const raise = { + error: () => invalid = true, + warning: () => invalid = true, + } + expect(invalid).to.equal(false); + new freesewing.Path() + .withRaise(raise) + .move(new freesewing.Point(0,0).withRaise(raise)) + .line(new freesewing.Point(10,10).withRaise(raise)) + .line(new freesewing.Point(10,20).withRaise(raise)) + .shiftFractionAlong() + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when splitting a path on a non-point", () => { + let invalid = false + const raise = { + error: () => invalid = true, + warning: () => invalid = true, + } + const from = new freesewing.Point(0,0).withRaise(raise) + const cp1 = new freesewing.Point(10,0).withRaise(raise) + const cp2 = new freesewing.Point(90,0).withRaise(raise) + const to = new freesewing.Point(100,0).withRaise(raise) + const path = new freesewing.Path() + .withRaise(raise) + .move(from) + .curve(cp1, cp2, to) + .line(from) + .line(cp1) + try { + path.split() + } + catch (err) { + expect(''+err).to.contain("TypeError: Cannot read property") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when splitting a path on a non-point", () => { + let invalid = false + const raise = { + error: () => invalid = true, + warning: () => invalid = true, + } + const from = new freesewing.Point(0,0).withRaise(raise) + const cp1 = new freesewing.Point(10,0).withRaise(raise) + const cp2 = new freesewing.Point(90,0).withRaise(raise) + const to = new freesewing.Point(100,0).withRaise(raise) + const path = new freesewing.Path() + .withRaise(raise) + .move(from) + .curve(cp1, cp2, to) + .line(from) + try { + path.split() + } + catch (err) { + expect(''+err).to.contain("TypeError: Cannot read property") + } + expect(invalid).to.equal(true); +}); diff --git a/packages/core/tests/pattern.test.js b/packages/core/tests/pattern.test.js index 2cba8f45a81..5ba5ab34781 100644 --- a/packages/core/tests/pattern.test.js +++ b/packages/core/tests/pattern.test.js @@ -139,7 +139,7 @@ it("Should throw an error if per-part draft method is missing", () => { it("Should sample an option", () => { let pattern = new freesewing.Pattern({ options: { - len: { pct: 30, min: 0, max: 100 }, + len: { pct: 30, min: 10 }, bonus: 10 } }); @@ -164,6 +164,122 @@ it("Should sample an option", () => { expect(pattern.parts.b.paths.test_10.ops[1].to.y).to.equal(10); }); +it("Should sample a list option", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + options: { + len: { + dflt: 1, + list: [1,2,3] + } + }, + }) + Test.prototype.draftFront = function(part) { + const { Point, points, Path, paths, options } = part.shorthand() + points.from = new Point(0, 0); + points.to = new Point( 100 * options.len, 0) + paths.line = new Path() + .move(points.from) + .line(points.to) + + return part + }; + const pattern = new Test({ + sample: { + type: 'option', + option: 'len' + } + }) + pattern.sample(); + expect(pattern.parts.front.paths.line_1.ops[1].to.x).to.equal(100); + expect(pattern.parts.front.paths.line_2.ops[1].to.x).to.equal(200); + expect(pattern.parts.front.paths.line_3.ops[1].to.x).to.equal(300); +}); + +it("Should sample a measurement", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + measurements: ['head'] + }) + Test.prototype.draftFront = function(part) { + const { Point, points, Path, paths, measurements } = part.shorthand() + points.from = new Point(0, 0); + points.to = new Point( measurements.head, 0) + paths.line = new Path() + .move(points.from) + .line(points.to) + + return part + }; + const pattern = new Test({ + measurements: { + head: 100 + }, + sample: { + type: 'measurement', + measurement: 'head' + } + }) + pattern.sample(); + expect(pattern.is).to.equal('sample') + expect(pattern.events.debug[0]).to.equal('Sampling measurement `head`') + for (let i=0;i<10;i++) { + const j = i + 1 + expect(pattern.parts.front.paths[`line_${j}`].ops[1].to.x).to.equal(90 + 2*i); + } + pattern.sampleMeasurement('nope') + expect(pattern.events.error.length).to.equal(1) + expect(pattern.events.error[0]).to.equal("Cannot sample measurement `nope` because it's `undefined`") +}); + +it("Should sample models", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + measurements: ['head'] + }) + Test.prototype.draftFront = function(part) { + const { Point, points, Path, paths, measurements } = part.shorthand() + points.from = new Point(0, 0); + points.to = new Point( measurements.head, 0) + paths.line = new Path() + .move(points.from) + .line(points.to) + + return part + }; + let pattern = new Test({ + sample: { + type: 'models', + models : { + a: { head: 100 }, + b: { head: 50 }, + } + } + }) + pattern.sample(); + expect(pattern.is).to.equal('sample') + expect(pattern.events.debug[0]).to.equal('Sampling models') + expect(pattern.parts.front.paths[`line_0`].ops[1].to.x).to.equal(100); + expect(pattern.parts.front.paths[`line_1`].ops[1].to.x).to.equal(50); + pattern = new Test({ + sample: { + type: 'models', + models : { + a: { head: 100 }, + b: { head: 50 }, + }, + focus: 'b' + } + }) + pattern.sample(); + expect(pattern.is).to.equal('sample') + expect(pattern.parts.front.paths[`line_-1`].ops[1].to.x).to.equal(50); + expect(pattern.parts.front.paths[`line_0`].ops[1].to.x).to.equal(100); +}); + it("Should register a hook via on", () => { let pattern = new freesewing.Pattern(); let count = 0; @@ -402,6 +518,39 @@ it("Should correctly resolve dependencies - issue #971 - broken version", () => expect(pattern.config.draftOrder[2]).to.equal('crotch'); }); +it("Should correctly resolve dependencies - Handle uncovered code path", () => { + let config = { + name: "test", + dependencies: { + front: 'side', + crotch:['front','back'], + back: 1, + }, + inject: { + front: 'back', + }, + parts: ['back','front','crotch'], + }; + const Test = function(settings = false) { + freesewing.Pattern.call(this, config); + return this; + }; + Test.prototype = Object.create(freesewing.Pattern.prototype); + Test.prototype.constructor = Test; + Test.prototype.draftBack = function(part) { + return part; + }; + Test.prototype.draftFront = function(part) { + return part; + }; + + let pattern = new Test(); + const deps = pattern.resolveDependencies() + expect(pattern.config.draftOrder[0]).to.equal('side'); + expect(pattern.config.draftOrder[1]).to.equal('back'); + expect(pattern.config.draftOrder[2]).to.equal('front'); +}); + it("Should check whether created parts get the pattern context", () => { let pattern = new freesewing.Pattern(); let part = new pattern.Part(); @@ -435,3 +584,165 @@ it("Should correctly merge settings for existing array", () => { expect(pattern.settings.only.length).to.equal(4); expect(pattern.settings.margin).to.equal(5); }); + +it("Should return all render props", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + }); + Test.prototype.draftFront = function(part) { + return part; + }; + const pattern = new Test() + pattern.draft(); + const rp = pattern.getRenderProps() + expect(rp.svg.body).to.equal(''); + expect(rp.width).to.equal(4); + expect(rp.height).to.equal(4); + expect(rp.parts.front.height).to.equal(4); +}); + +it("Should not pack a pattern with errors", () => { + const pattern = new freesewing.Pattern() + pattern.events.error.push('error') + pattern.pack() + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('One or more errors occured. Not packing pattern parts') +}); + +it("Should generate an auto layout if there is no set layout", () => { + const Test = new freesewing.Design({ name: "test", parts: ['front'] }) + Test.prototype.draftFront = function(part) { + const {Path, paths, Point} = part.shorthand() + paths.seam = new Path().move(new Point(0,0)) + .line(new Point(5,5)) + return part + } + const pattern = new Test() + pattern.parts.front = new pattern.Part('front') + pattern.draftFront(pattern.parts.front); + pattern.pack() + expect(pattern.autoLayout.parts.front).to.exist + expect(pattern.autoLayout.parts.front.move.y).to.equal(2) + expect(pattern.autoLayout.parts.front.move.x).to.equal(2) +}) + +it("Should handle custom layouts", () => { + const Test = new freesewing.Design({ name: "test", parts: ['front'] }) + Test.prototype.draftFront = function(part) { return part } + const pattern = new Test({ + layout: { + width: 400, + height: 200, + parts: { front: { move: { x: 14, y: -202 } } } + } + }) + pattern.pack() + expect(pattern.width).to.equal(400) + expect(pattern.height).to.equal(200) +}); + +it("Should handle a simple snapped option", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + measurements: [ 'head' ], + options: { + len: { pct: 50, min: 22, max: 78, snap: 10, ...freesewing.pctBasedOn('head') } + } + }) + Test.prototype.draftFront = function(part) { + const { Point, points, Path, paths, absoluteOptions } = part.shorthand() + points.from = new Point(0, 0); + points.to = new Point( 2 * absoluteOptions.len, 0) + paths.line = new Path() + .move(points.from) + .line(points.to) + + return part + }; + let pattern = new Test({ + sample: { + type: 'option', + option: 'len' + }, + measurements: { + head: 43.23 + } + }) + pattern.sample(); + expect(pattern.is).to.equal('sample') + expect(pattern.events.debug[0]).to.equal('Sampling option `len`') + expect(pattern.parts.front.paths.line_1.ops[1].to.x).to.equal(20); + expect(pattern.parts.front.paths.line_2.ops[1].to.x).to.equal(40); + expect(pattern.parts.front.paths.line_3.ops[1].to.x).to.equal(40); + expect(pattern.parts.front.paths.line_4.ops[1].to.x).to.equal(40); + expect(pattern.parts.front.paths.line_5.ops[1].to.x).to.equal(60); + expect(pattern.parts.front.paths.line_6.ops[1].to.x).to.equal(60); + expect(pattern.parts.front.paths.line_7.ops[1].to.x).to.equal(60); + expect(pattern.parts.front.paths.line_8.ops[1].to.x).to.equal(60); + expect(pattern.parts.front.paths.line_9.ops[1].to.x).to.equal(80); + expect(pattern.parts.front.paths.line_10.ops[1].to.x).to.equal(80); +}); + +it("Should handle a list snapped option", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + measurements: [ 'head' ], + options: { + len: { pct: 50, min: 22, max: 78, snap: [10,14,19,28], ...freesewing.pctBasedOn('head') } + } + }) + Test.prototype.draftFront = function(part) { + const { Point, points, Path, paths, absoluteOptions } = part.shorthand() + points.from = new Point(0, 0); + points.to = new Point( absoluteOptions.len, 0) + paths.line = new Path() + .move(points.from) + .line(points.to) + + return part + }; + let pattern = new Test({ + sample: { + type: 'option', + option: 'len' + }, + measurements: { + head: 43.23 + } + }) + pattern.sample(); + expect(pattern.is).to.equal('sample') + expect(pattern.events.debug[0]).to.equal('Sampling option `len`') + expect(pattern.parts.front.paths.line_1.ops[1].to.x).to.equal(10); + expect(pattern.parts.front.paths.line_2.ops[1].to.x).to.equal(14); + expect(pattern.parts.front.paths.line_3.ops[1].to.x).to.equal(14); + expect(pattern.parts.front.paths.line_4.ops[1].to.x).to.equal(19); + expect(pattern.parts.front.paths.line_5.ops[1].to.x).to.equal(19); + expect(pattern.parts.front.paths.line_6.ops[1].to.x).to.equal(19); + expect(pattern.parts.front.paths.line_7.ops[1].to.x).to.equal(28); + expect(pattern.parts.front.paths.line_8.ops[1].to.x).to.equal(28); + expect(pattern.parts.front.paths.line_9.ops[1].to.x).to.equal(28); + expect(freesewing.utils.round(pattern.parts.front.paths.line_10.ops[1].to.x)).to.equal(33.72); +}); + + +it("Should retrieve the cutList", () => { + const Test = new freesewing.Design({ + name: "test", + parts: ['front'], + }) + Test.prototype.draftFront = function(part) { + part.addCut(4, 'lining', true) + + return part + }; + const pattern = new Test() + expect(JSON.stringify(pattern.getCutList())).to.equal(JSON.stringify({})) + pattern.draft() + const list = `{"front":{"grain":90,"materials":{"lining":{"cut":4,"identical":true}}}}` + expect(JSON.stringify(pattern.getCutList())).to.equal(list) +}); + diff --git a/packages/core/tests/point.test.js b/packages/core/tests/point.test.js index 402e8f9daa0..defaacac9d0 100644 --- a/packages/core/tests/point.test.js +++ b/packages/core/tests/point.test.js @@ -225,3 +225,274 @@ it("Should translate a point", () => { expect(p2.x).to.equal(25); expect(p2.y).to.equal(70); }); + +it("Should add raise methods to a point", () => { + const raise = () => 'hello' + const p1 = new Point(10, 20).withRaise(raise); + expect(p1.raise()).to.equal('hello'); +}); + +it("Should raise a warning on invalid point coordinates", () => { + const invalid = { x: false, y: false } + const raiseX = { warning: () => invalid.x = true } + const raiseY = { warning: () => invalid.y = true } + const p1 = new Point('a',10).withRaise(raiseX); + const p2 = new Point(20, 'b').withRaise(raiseY); + expect(invalid.x).to.equal(false); + expect(invalid.y).to.equal(false); + p1.check() + p2.check() + expect(invalid.x).to.equal(true); + expect(invalid.y).to.equal(true); +}); + +it("Should raise a warning if rotation is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20, 20).withRaise(raise); + expect(invalid).to.equal(false); + const p3 = p1.rotate('a', p2) + expect(invalid).to.equal(true); +}); + +it("Should raise a warning if rotating around what is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.rotate(45, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when flipX'ing around what is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20, 20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.flipX('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when flipY'ing around what is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20, 20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.flipY('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting with a distance that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shift(0, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting with an angle that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shift('a', 12) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting towards with a distance that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftTowards(p2, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting towards with a target that is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftTowards('a', 10) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting fraction towards with a distance that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftFractionTowards(p2, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting a fraction towards with a target that is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftFractionTowards('a', 0.1) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting outowards with a distance that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftOutwards(p2, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when shifting a outowards with a target that is not a point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + const p2 = new Point(20,20).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.shiftOutwards('a', 0.1) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when translating with an X-delta that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.translate('a', 10) + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when translating with an Y-delta that is not a number", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.translate(10, 'a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when sitsOn receives a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.sitsOn('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should raise a warning when sitsRoughlyOn receives a non-point", () => { + let invalid = false + const raise = { warning: () => invalid = true } + const p1 = new Point(10,10).withRaise(raise); + expect(invalid).to.equal(false); + try { + p1.sitsRoughlyOn('a') + } + catch (err) { + expect(''+err).to.contain("check is not a function") + } + expect(invalid).to.equal(true); +}); + +it("Should set the data-text property in a chainable way", () => { + const p1 = new Point(10,10).setText('hello') + expect(p1.attributes.get('data-text')).to.equal('hello'); +}); + +it("Should set the data-text-class property in a chainable way", () => { + const p1 = new Point(10,10).setText('hello', 'fabric') + expect(p1.attributes.get('data-text')).to.equal('hello'); + expect(p1.attributes.get('data-text-class')).to.equal('fabric'); +}); + +it("Should set the data-circle property in a chainable way", () => { + const p1 = new Point(10,10).setCircle('20') + expect(p1.attributes.get('data-circle')).to.equal('20'); +}); + +it("Should set the data-circle-class property in a chainable way", () => { + const p1 = new Point(10,10).setCircle('20', 'fabric') + expect(p1.attributes.get('data-circle')).to.equal('20'); + expect(p1.attributes.get('data-circle-class')).to.equal('fabric'); +}); + diff --git a/packages/core/tests/snippet.test.js b/packages/core/tests/snippet.test.js index f636dca83ff..dfd42385a0c 100644 --- a/packages/core/tests/snippet.test.js +++ b/packages/core/tests/snippet.test.js @@ -26,3 +26,4 @@ it("Should set an attribute", () => { s.attr("class", "less", true); expect(s.attributes.get("class")).to.equal("less"); }); + diff --git a/packages/core/tests/store.test.js b/packages/core/tests/store.test.js index 5fdac207f23..49a3e67100c 100644 --- a/packages/core/tests/store.test.js +++ b/packages/core/tests/store.test.js @@ -18,3 +18,10 @@ it("Should set a store value only if unset", () => { store.setIfUnset("few", "schmoo"); expect(store.get("few")).to.equal("baz"); }); + +it("Should raise a warning when retrieving a invalid key", () => { + store.get('nope') + expect(pattern.events.warning.length).to.equal(1) + expect(pattern.events.warning[0]).to.equal('Tried to access `nope` in the `store` but it is not set') +}); + diff --git a/packages/core/tests/svg.test.js b/packages/core/tests/svg.test.js index 7da10148ce2..c247c8851dd 100644 --- a/packages/core/tests/svg.test.js +++ b/packages/core/tests/svg.test.js @@ -203,6 +203,19 @@ it("Should render an Svg snippet", () => { expect(pattern.render()).to.equalIgnoreSpaces(render.snippet); }); +it("Should render a rotated Svg snippet", () => { + let pattern = new freesewing.Pattern(); + pattern.render(); + pattern.parts.test = new pattern.Part(); + let p = pattern.parts.test; + p.snippets.test = new p.Snippet( + "test", + new p.Point(20, 20), + "This is a snippet" + ).attr('data-rotate', 90) + expect(pattern.render()).to.equalIgnoreSpaces(render.rotatedSnippet); +}); + it("Should replaced double quotes in Svg text", () => { const pattern = new freesewing.Pattern() pattern.render() @@ -247,9 +260,19 @@ it("Should run insertText hook", () => { }); it("Should run postRender hook", () => { - let pattern = new freesewing.Pattern(); + let pattern = new freesewing.Pattern() pattern.on("postRender", svg => { svg.svg = "test"; }); expect(pattern.render()).to.equal("test"); }); + +it("Should tab in and out", () => { + let pattern = new freesewing.Pattern() + pattern.render() + const svg = pattern.svg + svg.tabs = 2 + expect(svg.tab()).to.equal(' ') +}); + + diff --git a/packages/core/tests/utils.test.js b/packages/core/tests/utils.test.js index db4f3436bca..c59a774e714 100644 --- a/packages/core/tests/utils.test.js +++ b/packages/core/tests/utils.test.js @@ -499,3 +499,66 @@ it("Should find intersecting beams when a line is almost vertical", () => { expect(round(i.y)).to.equal(400); }); +it("Should check for valid coordinate", () => { + expect(utils.isCoord(23423.23)).to.equal(true); + expect(utils.isCoord(0)).to.equal(true); + expect(utils.isCoord()).to.equal(false); + expect(utils.isCoord(null)).to.equal(false); + expect(utils.isCoord('hi')).to.equal(false); + expect(utils.isCoord(NaN)).to.equal(false); +}); + +it("Should return the correct sample style", () => { + expect(utils.sampleStyle(0, 5)).to.equal("stroke: hsl(-66, 100%, 35%);") + expect(utils.sampleStyle(1, 5)).to.equal("stroke: hsl(0, 100%, 35%);") + expect(utils.sampleStyle(2, 5)).to.equal("stroke: hsl(66, 100%, 35%);") + expect(utils.sampleStyle(3, 5)).to.equal("stroke: hsl(132, 100%, 35%);") + expect(utils.sampleStyle(4, 5)).to.equal("stroke: hsl(198, 100%, 35%);") +}); + +it("Should return the correct sample styles", () => { + const styles = [ + "stroke: red;", + "stroke: blue;", + "stroke: green;", + "stroke: pink;", + "stroke: orange;", + ] + for (let i=0;i<5;i++) expect(utils.sampleStyle(i, 5, styles)).to.equal(styles[i]) +}); + +it("Should convert degrees to radians", () => { + expect(utils.deg2rad(0)).to.equal(0); + expect(round(utils.deg2rad(69))).to.equal(1.2); +}); + +it("Should convert radians to degrees", () => { + expect(utils.rad2deg(0)).to.equal(0); + expect(round(utils.rad2deg(69))).to.equal(3953.41); +}); + +it("Should shoulder return two methods for pctBasedOn", () => { + const result = utils.pctBasedOn('chest') + expect(typeof result.toAbs).to.equal("function"); + expect(typeof result.fromAbs).to.equal("function"); + const measurements = { chest: 1000 } + expect(result.toAbs(0.0123, { measurements })).to.equal(12.3) + expect(result.fromAbs(12.3, { measurements })).to.equal(0.0123) +}); + +it("Should generate a part transform", () => { + let pattern = new freesewing.Pattern(); + pattern.settings.mode = "draft"; + let part = new pattern.Part(); + let short = part.shorthand(); + part.points.from = new short.Point(2, 2); + part.points.to = new short.Point(19, 76); + part.paths.test = new short.Path() + .move(part.points.from) + .line(part.points.to); + part.stack(); + const transform = utils.generatePartTransform(30,60,90,true,true,part) + expect(transform.transform).to.equal(`translate(${30 + part.topLeft.x + part.bottomRight.x} ${60 + part.topLeft.y + part.bottomRight.y}) scale(-1 -1) rotate(90 ${part.topLeft.x + part.width/2} ${part.topLeft.y + part.height/2})`); +}); + + diff --git a/packages/create-freesewing-pattern/.eslintrc b/packages/create-freesewing-pattern/.eslintrc deleted file mode 100644 index 9f32c566aed..00000000000 --- a/packages/create-freesewing-pattern/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "standard" - ] -} diff --git a/packages/create-freesewing-pattern/.travis.yml b/packages/create-freesewing-pattern/.travis.yml deleted file mode 100644 index 63d005b22b7..00000000000 --- a/packages/create-freesewing-pattern/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -cache: yarn -node_js: - - 9 - - 8 diff --git a/packages/create-freesewing-pattern/CHANGELOG.md b/packages/create-freesewing-pattern/CHANGELOG.md deleted file mode 100644 index 0e47e6efb7c..00000000000 --- a/packages/create-freesewing-pattern/CHANGELOG.md +++ /dev/null @@ -1,127 +0,0 @@ -# Change log for: create-freesewing-pattern - - -## 2.21.0 (2022-06-27) - -### Deprecated - - - This package is deprecated. Please use `npx @freesewing/new-design` - -## 2.20.4 (2022-01-28) - -### Fixed - - - Downgraded back to react-scripts 4 because 5 has a regression bug - -## 2.20.3 (2022-01-28) - -### Fixed - - - Updated to react-scripts 5 to sidestep bug in error-overlay - -## 2.19.6 (2021-12-29) - -### Fixed - - - Fix axios version conflict - -## 2.17.1 (2021-07-14) - -### Fixed - - - Updated department to new range of options See [#1207](https://github.com/freesewing/freesewing/pull/1207) - -## 2.16.2 (2021-05-05) - -### Changed - - - Added .gitignore file to the template - - Added eslint for linting - -## 2.16.1 (2021-05-30) - -### Fixed - - - Don't list pattern as dependency in the example package.json - -## 2.16.0 (2021-05-24) - -### Changed - - - Migrated to React 17 - - Migrated to create-react-app/react-scripts 4 - - Migrated to Webpack 5 - - Add react-intl as dependency - - Renamed template `default` to `freesewing` - - Use defaults for browserlist - -## 2.13.2 (2021-02-21) - -### Fixed - - - Updated chat link from gitter to discord - -## 2.12.1 (2021-01-27) - -### Added - - - Fixed missing dependency - -## 2.11.1 (2021-01-11) - -### Fixed - - - Fixed issue with node-sass, see [#778](https://github.com/freesewing/freesewing/issues/778) and [#779](https://github.com/freesewing/freesewing/issues/779) - -## 2.9.0 (2020-10-02) - -### Fixed - - - No longer instantiate a pattern, just to get the config - -## 2.8.1 (2020-08-16) - -### Fixed - - - Fixed breaking change in execa upgrade in 2.8.0 - -## 2.6.0 (2020-05-01) - -### Added - - - [#365](https://github.com/freesewing/freesewing/issues/365): Check for node version and raise an error it is too old. - -## 2.2.0 (2020-02-22) - -### Fixed - - - [#257](https://github.com/freesewing/freesewing/issues/257): Explain that pattern names are bound by the constraints of NPM package names - -## 2.0.3 (2019-09-15) - -### Fixed - - - Updated example package.json to use latest tag rather than beta - -## 2.0.2 (2019-09-06) - -### Changed - - - Updated dependencies - -### Fixed - - - Added missing `file-saver` dependency - -## 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. - diff --git a/packages/create-freesewing-pattern/index.js b/packages/create-freesewing-pattern/index.js deleted file mode 100755 index 0a0cdab235b..00000000000 --- a/packages/create-freesewing-pattern/index.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -'use strict' - -require('./lib/cli') diff --git a/packages/create-freesewing-pattern/index.test.js b/packages/create-freesewing-pattern/index.test.js deleted file mode 100644 index b6db926d8cd..00000000000 --- a/packages/create-freesewing-pattern/index.test.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' - -const { test } = require('ava') -const execa = require('execa') - -test('--help', async (t) => { - const { stdout } = await execa('./index.js', [ '--help' ]) - t.true(stdout.length > 0) - t.true(/create-react-library/.test(stdout)) -}) diff --git a/packages/create-freesewing-pattern/lib/cli.js b/packages/create-freesewing-pattern/lib/cli.js deleted file mode 100644 index a813b42278d..00000000000 --- a/packages/create-freesewing-pattern/lib/cli.js +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env node -'use strict' - -const path = require('path') -const chalk = require('chalk') -const program = require('commander') -const strings = require('@freesewing/i18n').strings -const freesewing_version = require('@freesewing/pattern-info').versions.brian - -const getDefaultLibraryParams = require('./get-default-library-params') -const createLibrary = require('./create-library') -const promptLibraryParams = require('./prompt-library-params') - -module.exports = async () => { - // Warn about deprecation - console.log(` -⚠️ ${chalk.yellow('create-freesewing-pattern is deprecated')} - -Please use ${chalk.blue('@freesewing/new-design')} instead: - -${chalk.green.bold('npx @freesewing/new-design')} - -`) - // Check node version - const node_version = process.version.slice(1).split('.')[0] - if (parseInt(node_version) < 10 && process.argv.indexOf('--skip-version-check') === -1) - throw ` -⚠️ FreeSewing requires Node v10 or newer. - - We hightly recommend using NVM to manage your Node versions: - https://github.com/nvm-sh/nvm - - When in doubt, pick an active LTS version: - https://nodejs.org/en/about/releases/ - -` - - const defaults = await getDefaultLibraryParams() - - program - .name('create-freesewing-pattern') - .version(node_version) - .usage('[options] [package-name]') - .option('-d, --desc ', 'package description') - .option('-a, --author ', "author's github handle", defaults.author) - .option('-l, --license ', 'package license', defaults.license) - .option('-r, --repo ', 'package repo path') - .option('-g, --no-git', 'generate without git init') - .option('-m, --manager ', 'package manager to use', /^(npm|yarn)$/, defaults.manager) - .option('-v, --skip-version-check', 'proceed even with Node < v10') - .option( - '-t, --template ', - 'package template to use', - /^(freesewing|custom)$/, - defaults.template - ) - .option('-p, --template-path ', 'custom package template path') - .option('-s, --skip-prompts', 'skip all prompts (must provide package-name via cli)') - .parse(process.argv) - - const opts = { - description: program.desc, - author: program.author, - license: program.license, - repo: program.repo, - manager: program.manager, - template: program.template, - templatePath: program.templatePath, - skipPrompts: program.skipPrompts, - git: program.git, - freesewing_version - } - - Object.keys(opts).forEach((key) => { - if (!opts[key] && defaults[key]) { - opts[key] = defaults[key] - } - }) - - if (program.args.length === 1) { - opts.name = program.args[0] - } else if (program.args.length > 1) { - console.error('invalid arguments') - program.help() - process.exit(1) - } - - const params = await promptLibraryParams(opts) - const dest = await createLibrary(params) - - console.log(` -🎉 ${strings[params.language]['cfp.patternCreated']} ${chalk.bold(dest)} - -${strings[params.language]['cfp.runTheseCommands']}: - - 👉 ${chalk.cyan(`cd ${path.join(params.shortName, 'example')} && ${params.manager} start`)} - -${strings[params.language]['cfp.startWebpack']} - -${strings[params.language]['cfp.devDocsAvailableAt']} - ${chalk.bold('https://freesewing.dev/')} - -${strings[params.language]['cfp.talkToUs']} - ${chalk.bold('https://discord.freesewing.org/')} - -` - ) - - return dest -} - -module.exports().catch((err) => { - console.error(err) - process.exit(1) -}) diff --git a/packages/create-freesewing-pattern/lib/config.js b/packages/create-freesewing-pattern/lib/config.js deleted file mode 100644 index 8f466b7fc7b..00000000000 --- a/packages/create-freesewing-pattern/lib/config.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const Conf = require('conf') - -module.exports = new Conf() diff --git a/packages/create-freesewing-pattern/lib/create-library.js b/packages/create-freesewing-pattern/lib/create-library.js deleted file mode 100644 index 05c819c9166..00000000000 --- a/packages/create-freesewing-pattern/lib/create-library.js +++ /dev/null @@ -1,159 +0,0 @@ -'use strict' - -const handlebars = require('handlebars') -const execa = require('execa') -const fs = require('fs') -const globby = require('globby') -const normalize = require('normalize-path') -const mkdirp = require('make-dir') -const ora = require('ora') -const path = require('path') -const pEachSeries = require('p-each-series') - -const pkg = require('../package') - -const templateBlacklist = new Set([path.join('example', 'public', 'favicon.ico')]) - -module.exports = async (info) => { - const { manager, template, name, templatePath, git } = info - - // handle scoped package names - const parts = name.split('/') - info.shortName = parts[parts.length - 1] - - const dest = path.join(process.cwd(), info.shortName) - info.dest = dest - await mkdirp(dest) - - const source = - template === 'custom' - ? path.join(process.cwd(), templatePath) - : path.join(__dirname, '..', 'template', template) - - const files = await globby(normalize(source), { - dot: true - }) - - { - const promise = pEachSeries(files, async (file) => { - return module.exports.copyTemplateFile({ - file, - source, - dest, - info - }) - }) - ora.promise(promise, `Copying ${template} template to ${dest}`) - await promise - } - - { - const promise = module.exports.initPackageManager({ dest, info }) - ora.promise(promise, `Running ${manager} install and ${manager} link`) - await promise - } - - if (git) { - const promise = module.exports.initGitRepo({ dest }) - ora.promise(promise, 'Initializing git repo') - await promise - } - - // Symlink is required since webback 5 / CRA 4 - fs.symlinkSync( - path.join(dest), - path.join(dest, 'example', 'src', 'pattern'), - 'junction', - (err) => { - if (err) console.log('Unable to create symlink to pattern folder:', err) - } - ) - - return dest -} - -module.exports.copyTemplateFile = async (opts) => { - const { file, source, dest, info } = opts - - const fileRelativePath = path.relative(source, file) - const destFilePath = path.join(dest, fileRelativePath) - const destFileDir = path.parse(destFilePath).dir - - await mkdirp(destFileDir) - - if (templateBlacklist.has(fileRelativePath)) { - const content = fs.readFileSync(file) - fs.writeFileSync(destFilePath, content) - } else { - const template = handlebars.compile(fs.readFileSync(file, 'utf8')) - const content = template({ - ...info, - yarn: info.manager === 'yarn' - }) - - fs.writeFileSync(destFilePath, content, 'utf8') - } - - return fileRelativePath -} - -module.exports.initPackageManager = async (opts) => { - const { dest, info } = opts - - const example = path.join(dest, 'example') - - const commands = [ - { - cmd: `${info.manager} install`, - cwd: dest - }, - { - cmd: `${info.manager} link`, - cwd: dest - }, - { - cmd: `${info.manager} install`, - cwd: example - } - ] - - return pEachSeries(commands, async ({ cmd, cwd }) => { - return execa.sync(cmd, { cwd, shell: true }) - }) -} - -module.exports.initGitRepo = async (opts) => { - const { dest } = opts - - const gitIgnorePath = path.join(dest, '.gitignore') - fs.writeFileSync( - gitIgnorePath, - ` -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -node_modules - -# builds -build -dist -.rpt2_cache - -# misc -.DS_Store -.env -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -`, - 'utf8' - ) - - const cmd = `git init && git add . && git commit -m ":tada: Initialized ${pkg.name}@${pkg.version} with create-freesewing-pattern"` - return execa.sync(cmd, { cwd: dest, shell: true }) -} diff --git a/packages/create-freesewing-pattern/lib/create-library.test.js b/packages/create-freesewing-pattern/lib/create-library.test.js deleted file mode 100644 index 19bfe3d68fc..00000000000 --- a/packages/create-freesewing-pattern/lib/create-library.test.js +++ /dev/null @@ -1,116 +0,0 @@ -'use strict' - -const { test } = require('ava') -const execa = require('execa') -const path = require('path') -const rmfr = require('rmfr') - -const createLibrary = require('./create-library') - -const tests = [ - { - name: 'my-test-library', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-test-library', - license: 'MIT', - manager: 'yarn', - template: 'light', - git: true - }, - { - name: 'my-test-dark-library', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-test-library', - license: 'MIT', - manager: 'yarn', - template: 'dark', - git: true - }, - { - name: 'my-test-library', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-test-library', - license: 'MIT', - manager: 'npm', - template: 'light', - git: true - }, - { - name: 'my-test-library', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-test-typescript-library', - license: 'MIT', - manager: 'npm', - template: 'dark', - git: true - }, - { - name: '@freesewing/test', - author: 'joostdecock', - description: 'this is a auto-generated test module. please ignore.', - repo: 'superstar-cats/nala', - license: 'GPL', - manager: 'yarn', - template: 'default', - git: true - }, - { - name: 'no-git-library', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/no-git-library', - license: 'MIT', - manager: 'yarn', - template: 'default', - git: false - }, - { - name: 'my-custom-template', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-custom-template', - license: 'GPL', - manager: 'yarn', - template: 'custom', - templatePath: './template/default', - git: true - } -] - -tests.forEach((opts) => { - test.serial(`creating "${opts.name}" using ${opts.manager}`, async (t) => { - console.log(`creating "${opts.name}" using ${opts.manager}...`) - let ret - - // ensure library is created successfully - const root = await createLibrary(opts) - const example = path.join(root, 'example') - t.truthy(root.indexOf(opts.shortName) >= 0) - - // ensure deps install successfully in root - ret = await execa.shell(`${opts.manager} install`, { cwd: root }) - t.is(ret.code, 0) - - // ensure root tests pass - ret = await execa.shell(`${opts.manager} test`, { cwd: root }) - t.is(ret.code, 0) - - // ensure deps install successfully in example - ret = await execa.shell(`${opts.manager} install`, { cwd: example }) - t.is(ret.code, 0) - - // ensure bundle builds successfully in example - ret = await execa.shell(`${opts.manager} build`, { cwd: example }) - t.is(ret.code, 0) - - // ensure git is initialized properly - ret = await execa.shell('git rev-parse --git-dir', { cwd: root }) - t.is(ret.stdout, opts.git ? '.git' : path.join(process.cwd(), '.git')) - - await rmfr(root) - }) -}) diff --git a/packages/create-freesewing-pattern/lib/get-default-library-params.js b/packages/create-freesewing-pattern/lib/get-default-library-params.js deleted file mode 100644 index 8ac2d602dd8..00000000000 --- a/packages/create-freesewing-pattern/lib/get-default-library-params.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; - -const getGitConfigPath = require("git-config-path"); -const githubUsername = require("github-username"); -const parseGitConfig = require("parse-git-config"); -const which = require("which"); - -const config = require("./config"); - -module.exports = async () => { - const defaults = { - name: "", - description: "", - author: config.get("author"), - repo: info => `${info.author}/${info.name}`, - license: config.get("license", "MIT"), - manager: config.get("manager", "npm"), - template: config.get("template", "freesewing") - }; - - try { - if (!config.get("author")) { - const gitConfigPath = getGitConfigPath("global"); - - if (gitConfigPath) { - const gitConfig = parseGitConfig.sync({ path: gitConfigPath }); - - if (gitConfig.github && gitConfig.github.user) { - defaults.author = gitConfig.github.user; - } else if (gitConfig.user && gitConfig.user.email) { - defaults.author = await githubUsername(gitConfig.user.email); - } - } - - if (defaults.author) { - config.set("author", defaults.author); - } - } - - if (!config.get("manager")) { - if (which.sync("yarn", { nothrow: true })) { - defaults.manager = "yarn"; - } - - config.set("manager", defaults.manager); - } - - if (!config.get("template")) { - config.set("template", defaults.template); - } - } catch (err) {} - - return defaults; -}; diff --git a/packages/create-freesewing-pattern/lib/prompt-library-params.js b/packages/create-freesewing-pattern/lib/prompt-library-params.js deleted file mode 100644 index 93118d04407..00000000000 --- a/packages/create-freesewing-pattern/lib/prompt-library-params.js +++ /dev/null @@ -1,147 +0,0 @@ -'use strict' - -const inquirer = require('inquirer') -const validateNpmName = require('validate-npm-package-name') -const languages = require('@freesewing/i18n').languages -const strings = require('@freesewing/i18n').strings -const config = require('./config') -const chalk = require('chalk') - -const stringToPackageName = string => - string - .replace(/'|"|`|!|\*|~|\(|\)/g, '') - .replace(/ /g, '-') - .toLowerCase() - -let languageChoices = [] -for (let l of Object.keys(languages)) { - languageChoices.push({ - name: languages[l], - value: l, - short: languages[l] - }) -} - -module.exports = async opts => { - if (opts.name && !validateNpmName(opts.name).validForNewPackages) { - throw new Error(`invalid package name "${opts.name}"`) - } - - if (opts.skipPrompts) { - if (!opts.name) { - throw new Error('invalid input; you must pass a package name with --skip-prompts') - } - - Object.keys(opts).forEach(key => { - const value = opts[key] - if (typeof value === 'function') { - opts[key] = value(opts) - } - }) - - return opts - } else { - let lang = 'en' - const info = await inquirer.prompt([ - { - type: 'list', - name: 'language', - message: 'Language', - choices: languageChoices, - default: 'en', - validate: language => { - lang = language - return true - } - }, - { - type: 'input', - name: 'name', - message: info => strings[lang]['cfp.patternName'], - validate: name => { - try { - if (name && validateNpmName(name).validForNewPackages) return true - else { - return ( - strings[lang]['cfp.validNameWarning'] + ' ' + chalk.bold(stringToPackageName(name)) - ) - } - } catch (err) { - console.log({ err }) - } - }, - default: opts.name - }, - { - type: 'input', - name: 'description', - message: info => strings[info.language]['cfp.patternDescription'], - default: opts.description - }, - { - type: 'list', - name: 'type', - message: info => strings[info.language]['cfp.patternType'], - choices: info => [ - { - name: strings[info.language]['filter.type.pattern'], - value: 'pattern' - }, - { name: strings[info.language]['filter.type.block'], value: 'block' } - ], - default: 'pattern' - }, - { - type: 'list', - name: 'department', - message: info => strings[info.language]['filter.department.title'], - choices: info => [ - { - name: strings[info.language]['filter.department.tops'], - value: 'tops' - }, - { - name: strings[info.language]['filter.department.bottoms'], - value: 'bottoms' - }, - { - name: strings[info.language]['filter.department.accessories'], - value: 'accessories' - } - ], - default: 'tops' - }, - { - type: 'input', - name: 'author', - message: info => strings[info.language]['cfp.author'], - default: opts.author - }, - { - type: 'input', - name: 'repo', - message: info => strings[info.language]['cfp.githubRepo'], - default: opts.repo - }, - { - type: 'list', - name: 'manager', - message: info => strings[info.language]['cfp.packageManager'], - choices: ['npm', 'yarn'], - default: opts.manager - } - ]) - - config.set('author', info.author) - config.set('manager', info.manager) - config.set('template', 'freesewing') - config.set('license', 'MIT') - info.template = 'freesewing' - - return { - ...info, - git: opts.git, - freesewing_version: opts.freesewing_version - } - } -} diff --git a/packages/create-freesewing-pattern/lib/prompt-library-params.test.js b/packages/create-freesewing-pattern/lib/prompt-library-params.test.js deleted file mode 100644 index 3354a2716cd..00000000000 --- a/packages/create-freesewing-pattern/lib/prompt-library-params.test.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict' - -const { test } = require('ava') - -const promptLibraryParams = require('./prompt-library-params') - -const opts = { - name: 'my-custom-template', - author: 'nala', - description: 'this is a auto-generated test module. please ignore.', - repo: 'nala/my-custom-template', - license: 'GPL', - manager: 'yarn', - template: 'custom', - templatePath: './template/default', - git: true -} - -test('passed options are returned when skipPrompts is true', async t => { - const result = await promptLibraryParams(Object.assign({}, opts, { skipPrompts: true })) - Object.entries(opts).forEach(opt => { - // console.log(`comparing passed in option ${opt[0]}:${opt[1]} to returned option ${result[opt[0]]}`) - t.is(opt[1], result[opt[0]]) - }) -}) diff --git a/packages/create-freesewing-pattern/media/demo.svg b/packages/create-freesewing-pattern/media/demo.svg deleted file mode 100644 index 262a4cb8231..00000000000 --- a/packages/create-freesewing-pattern/media/demo.svg +++ /dev/null @@ -1 +0,0 @@ -~/dev/temp$~/dev/temp$c~/dev/temp$create-react-library?PackageName?PackageNamem?PackageNamemy?PackageNamemy-d?PackageNamemy-do?PackageNamemy-dop?PackageNamemy-dope?PackageNamemy-dope-?PackageNamemy-dope-c?PackageNamemy-dope-co?PackageNamemy-dope-com?PackageNamemy-dope-comp?PackageNamemy-dope-compo?PackageNamemy-dope-compon?PackageNamemy-dope-compone?PackageNamemy-dope-componen?PackageNamemy-dope-component?PackageNamemy-dope-component?PackageDescription()?PackageDescription?Author'sGitHubHandletransitive-bullshit?GitHubRepoPath(transitive-bullshit/my-dope-component)?GitHubRepoPathtransitive-bullshit/my-dope-component?License(MIT)?LicenseMIT?PackageManager(Usearrowkeys)npmyarn?PackageManageryarnCopyingtemplateto/Users/tfischer/dev/temp/my-dope-componentRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkRunningyarninstallandyarnlinkInitializinggitrepoYourmodulehasbeencreatedat/Users/tfischer/dev/temp/my-dope-component.Togetstarted,inonetab,run:$cdmy-dope-component&&yarnstartAndinanothertab,runthecreate-react-appdevserver:$cdmy-dope-component/example&&yarnstart~/dev/temp$cd~/dev/temp$cdmy-dope-component/master*in~/dev/temp/my-dope-component$master*in~/dev/temp/my-dope-component$tree.├──README.md├──example/├──README.md├──package.json├──public/├──index.html└──manifest.json├──src/├──App.js├──index.css└──index.js└──yarn.lock├──package.json├──rollup.config.js└──src/├──index.js├──styles.css└──test.js4directories,14files~/dev/temp$cr~/dev/temp$cre~/dev/temp$crea~/dev/temp$creat~/dev/temp$create~/dev/temp$create-~/dev/temp$create-r~/dev/temp$create-re~/dev/temp$create-rea~/dev/temp$create-reac~/dev/temp$create-react~/dev/temp$create-react-~/dev/temp$create-react-l~/dev/temp$create-react-li?PackageNamemy-?Author'sGitHubHandle(transitive-bullshit)Copyingtemplateto/Users/tfischer/dev/temp/my-dope-componentCopyingtemplateto/Users/tfischer/dev/temp/my-dope-componentInitializinggitrepo~/dev/temp$cdm~/dev/temp$cdmymaster*in~/dev/temp/my-dope-component$tmaster*in~/dev/temp/my-dope-component$trmaster*in~/dev/temp/my-dope-component$tremaster*in~/dev/temp/my-dope-component$exit \ No newline at end of file diff --git a/packages/create-freesewing-pattern/media/tree.svg b/packages/create-freesewing-pattern/media/tree.svg deleted file mode 100644 index eadc326fdfc..00000000000 --- a/packages/create-freesewing-pattern/media/tree.svg +++ /dev/null @@ -1 +0,0 @@ -~/dev/temp$cdmy-dope-component/master*in~/dev/temp/my-dope-component$tree.├──README.md├──example/├──README.md├──package.json├──public/├──index.html└──manifest.json├──src/├──App.js├──index.css└──index.js└──yarn.lock├──package.json├──rollup.config.js└──src/├──index.js├──styles.css└──test.js4directories,14filesmaster*in~/dev/temp/my-dope-component$ \ No newline at end of file diff --git a/packages/create-freesewing-pattern/package.json b/packages/create-freesewing-pattern/package.json deleted file mode 100644 index 8b4b2a2e0ef..00000000000 --- a/packages/create-freesewing-pattern/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "create-freesewing-pattern", - "version": "2.21.3", - "description": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern", - "author": "Joost De Cock (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", - "development", - "initializer", - "react" - ], - "main": "index.js", - "scripts": { - "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "lab": "cd ../../sites/lab && yarn start", - "tips": "node ../../scripts/help.mjs" - }, - "peerDependencies": {}, - "dependencies": { - "chalk": "^4.1.1", - "commander": "^9.0.0", - "conf": "^10.0.1", - "cp-file": "^9.0.0", - "execa": "^5.1.0", - "git-config-path": "^2.0.0", - "github-username": "^6.0.0", - "globby": "^11.0.3", - "handlebars": "^4.7.7", - "inquirer": "^8.0.0", - "make-dir": "^3.1.0", - "normalize-path": "^3.0.0", - "ora": "^5.4.1", - "p-each-series": "^2.2.0", - "parse-git-config": "^3.0.0", - "validate-npm-package-name": "^3.0.0", - "which": "^2.0.2", - "@freesewing/i18n": "^2.21.3", - "@freesewing/pattern-info": "^2.21.3" - }, - "devDependencies": {}, - "files": [ - "lib", - "template", - "README.md", - "package.json", - "!lib/*.test.js", - "!template/default/node_modules" - ], - "publishConfig": { - "access": "public", - "tag": "latest" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=6" - }, - "bin": { - "create-freesewing-pattern": "index.js" - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/.babelrc b/packages/create-freesewing-pattern/template/freesewing/.babelrc deleted file mode 100644 index eeb6d8c7726..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/.babelrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "presets": [ - ["@babel/preset-env", { - "modules": false - }], - "@babel/preset-react" - ], - "plugins": ["@babel/plugin-proposal-class-properties"] -} \ No newline at end of file diff --git a/packages/create-freesewing-pattern/template/freesewing/.editorconfig b/packages/create-freesewing-pattern/template/freesewing/.editorconfig deleted file mode 100644 index 9d08a1a828a..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/packages/create-freesewing-pattern/template/freesewing/.eslintrc b/packages/create-freesewing-pattern/template/freesewing/.eslintrc deleted file mode 100644 index e74d2122420..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/.eslintrc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "parser": "babel-eslint", - "extends": [ - "standard", - "standard-react" - ], - "env": { - "es6": true - }, - "plugins": [ - "react" - ], - "parserOptions": { - "sourceType": "module" - }, - "rules": { - // don't force es6 functions to include space before paren - "space-before-function-paren": 0, - - // allow specifying true explicitly for boolean props - "react/jsx-boolean-value": 0 - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/.gitignore b/packages/create-freesewing-pattern/template/freesewing/.gitignore deleted file mode 100644 index b9470778764..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -dist/ diff --git a/packages/create-freesewing-pattern/template/freesewing/.travis.yml b/packages/create-freesewing-pattern/template/freesewing/.travis.yml deleted file mode 100644 index 984658c939e..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 9 - - 8 diff --git a/packages/create-freesewing-pattern/template/freesewing/README.md b/packages/create-freesewing-pattern/template/freesewing/README.md deleted file mode 100644 index 1e987747147..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# {{name}} - -> {{description}} - -[![NPM](https://img.shields.io/npm/v/{{name}}.svg)](https://www.npmjs.com/package/{{name}}) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) - -## Install - -```bash -npm install --save {{name}} -``` - -## Usage - -```jsx -import React, { Component } from 'react' - -import MyComponent from '{{name}}' - -class Example extends Component { - render () { - return ( - - ) - } -} -``` - -## License - -{{license}} © [{{author}}](https://github.com/{{author}}) diff --git a/packages/create-freesewing-pattern/template/freesewing/config/index.js b/packages/create-freesewing-pattern/template/freesewing/config/index.js deleted file mode 100644 index 04cf93b401a..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/config/index.js +++ /dev/null @@ -1,35 +0,0 @@ -import { version } from '../package.json' - -// ?? 🤔 ?? --> https://{{language}}.freesewing.dev/packages/core/config - -export default { - name: '{{name}}', - version, - design: '{{author}}', - code: '{{author}}', - department: '{{department}}', - type: '{{type}}', - difficulty: 3, - tags: [ - 'freesewing', - 'design', - 'diy', - 'fashion', - 'made to measure', - 'parametric design', - '{{type}}', - 'sewing', - 'sewing pattern', - ], - optionGroups: { - fit: ['size'], - }, - measurements: [], - dependencies: {}, - inject: {}, - hide: [], - parts: ['box'], - options: { - size: { pct: 50, min: 10, max: 100 }, - }, -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/.babelrc b/packages/create-freesewing-pattern/template/freesewing/example/.babelrc deleted file mode 100644 index 6e3090a4956..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "plugins": [ - ["prismjs", { - "languages": ["javascript", "css", "markup"], - "plugins": ["line-numbers"], - "theme": "twilight", - "css": true - }] - ] -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/.env b/packages/create-freesewing-pattern/template/freesewing/example/.env deleted file mode 100644 index 6f809cc2540..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/.env +++ /dev/null @@ -1 +0,0 @@ -SKIP_PREFLIGHT_CHECK=true diff --git a/packages/create-freesewing-pattern/template/freesewing/example/README.md b/packages/create-freesewing-pattern/template/freesewing/example/README.md deleted file mode 100644 index 851e518678a..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/README.md +++ /dev/null @@ -1,96 +0,0 @@ -

-Freesewing logo -
-FreeSewing v2 -

-

A JavaScript library for made-to-measure sewing patterns

-

Follow @freesewing_org on Twitter - Chat with us on Gitter - Become a FreeSewing Patron - Follow @freesewing_org on Twitter - -

- -# {{name}} example - -This project was bootstrapped with [Create Freesewing Pattern](https://en.freesewing.dev/create-freesewing-pattern): - -```js -npm init freesewing-pattern -``` - -This example folder is part of the local development environment. -It is **not** part of the pattern's source code. - -To run this example, follow these steps: - - - In the folder above this one, run: `yarn start` (or `npm start`) - - Then, in new terminal, run the same command in this folder: `yarn start` (or `npm start`) - -This will spin up the development environment, similar to [our online demo](https://{{name}}.freesewing.dev/). - -## About FreeSewing 🤔 - -Where the world of makers and developers collide, that's where you'll find FreeSewing. - -Our [core library](https://freesewing.dev/en/freesewing) is a *batteries-included* toolbox -for parametric design of sewing patterns. It's a modular system (check our list -of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as: - -```bash -npm init freesewing-pattern -``` - -The [getting started] section on [freesewing.dev](https://freesewing.dev/) is a good -entrypoint to our documentation, but you'll find a lot more there, including -our [API documentation](https://freesewing.dev/en/freesewing/api), -as well as [examples](https://freesewing.dev/en/freesewing/examples), -and [best practices](https://freesewing.dev/en/do). - -If you're a maker, checkout [freesewing.org](https://freesewing/) where you can generate -our sewing patterns adapted to your measurements. - -## 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, you too -should [become a patron](https://freesewing.org/patrons/join). - -## Links 👩‍💻 - - - 💻 Makers website: [freesewing.org](https://freesewing.org) - - 💻 Developers website: [freesewing.dev](https://freesewing.org) - - 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing) - - 🐦 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 [chatroom on Gitter](https://gitter.im) is 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). - diff --git a/packages/create-freesewing-pattern/template/freesewing/example/netlify.toml b/packages/create-freesewing-pattern/template/freesewing/example/netlify.toml deleted file mode 100644 index baee11614b8..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/netlify.toml +++ /dev/null @@ -1,9 +0,0 @@ -[build] - base = "packages/{{name}}/example" - publish = "build" - command = "npm run build" - -[[redirects]] - from = "/*" - to = "/index.html" - status = 200 diff --git a/packages/create-freesewing-pattern/template/freesewing/example/package.json b/packages/create-freesewing-pattern/template/freesewing/example/package.json deleted file mode 100644 index 0667e24cd15..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "{{name}}", - "homepage": "https://{{name}}.freesewing.dev/", - "version": "{{freesewing_version}}", - "private": true, - "dependencies": { - "@fontsource/permanent-marker": "latest", - "@fontsource/roboto-mono": "latest", - "@fontsource/ubuntu": "latest", - "@freesewing/components": "latest", - "@freesewing/core": "latest", - "@freesewing/css-theme": "latest", - "@freesewing/i18n": "latest", - "@freesewing/models": "latest", - "@freesewing/mui-theme": "latest", - "@freesewing/pattern-info": "latest", - "@freesewing/plugin-bundle": "latest", - "@freesewing/plugin-theme": "latest", - "@freesewing/plugin-i18n": "latest", - "@freesewing/plugin-svgattr": "latest", - "@freesewing/utils": "latest", - "@material-ui/core": "^4.11.4", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^v4.0.0-alpha.57", - "prismjs": "1.25.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-intl": "^5.18.0", - "react-scripts": "^4.0.3", - "react-error-overlay": "6.0.9", - "file-saver": "^2.0.5", - "react-markdown": "6.0.2", - "source-map-explorer": "^2.5.2" - }, - "scripts": { - "analyze": "source-map-explorer 'build/static/js/*.js'", - "size": "source-map-explorer 'build/static/js/*.js' --tsv --no-root", - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": [ - "defaults" - ], - "devDependencies": { - "babel-plugin-prismjs": "2.0.1", - "react-error-overlay": "6.0.9" - }, - "resolutions": { - "react-error-overlay": "6.0.9" - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/public/favicon.ico b/packages/create-freesewing-pattern/template/freesewing/example/public/favicon.ico deleted file mode 100644 index 95061a260f1..00000000000 Binary files a/packages/create-freesewing-pattern/template/freesewing/example/public/favicon.ico and /dev/null differ diff --git a/packages/create-freesewing-pattern/template/freesewing/example/public/index.html b/packages/create-freesewing-pattern/template/freesewing/example/public/index.html deleted file mode 100644 index e9b4325fb4a..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/public/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - {{name}} - - - -
- - - diff --git a/packages/create-freesewing-pattern/template/freesewing/example/public/layout.css b/packages/create-freesewing-pattern/template/freesewing/example/public/layout.css deleted file mode 100644 index c62502f9791..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/public/layout.css +++ /dev/null @@ -1 +0,0 @@ -div.layout-wrapper{width:100%;margin:0;padding:0;background-color:red;background:#f8f9fa;background:linear-gradient(90deg, #f1f3f5 0%, #f1f3f5 25%, #f8f9fa 26%, #f8f9fa 100%)}div.layout-wrapper div.layout{display:flex;max-width:1600px;margin:auto;padding:0;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;background-color:#f8f9fa;min-height:calc(100vh - 64px)}div.layout-wrapper div.layout>aside{width:33%;background:#f1f3f5;border-right:2px solid #dee2e6}div.layout-wrapper div.layout>section{margin:0;padding:1rem}div.layout-wrapper div.layout>section>div.content{max-width:66ch;min-width:340px}div.layout-wrapper div.layout>section>div.content.wide{max-width:100%;margin:auto}.theme-wrapper.dark header{background-color:#1a1d21}.theme-wrapper.dark div.layout-wrapper{background:#f8f9fa;background:linear-gradient(90deg, #1a1d21 0%, #1a1d21 25%, #212529 26%, #212529 100%)}.theme-wrapper.dark div.layout-wrapper div.layout{background-color:#212529}.theme-wrapper.dark div.layout-wrapper div.layout>aside{background-color:#1a1d21;border-right:2px solid #343a40}header a svg{color:#ced4da}header a:first-of-type svg{color:#f8f9fa}header a:hover svg{color:#b197fc}header a span,header button span{color:#ced4da}header a span svg,header button span svg{color:#dee2e6}header a:hover span,header button:hover span{color:#f8f9fa}header a:hover span svg,header button:hover span svg{color:#b197fc}header a,header button{padding:0 1vw !important}@media (min-width: 1200px){div.layout>section{width:63%}}@media (max-width: 1199px) and (min-width: 960px){div.layout>aside{width:298px}div.layout>section{width:calc(100% - 300px - 4rem);max-width:none;margin:0 1rem 0 3rem}}@media (max-width: 959px){div.layout>aside{width:218px}div.layout>section{width:calc(100% - 220px - 4rem);max-width:none;margin:0;padding:0 2rem}div.layout>section div.content{min-width:inherit}}@media (max-width: 599px){div.layout>aside{display:none}div.layout>section{width:calc(100%);margin:0 auto;padding:0 1.5rem;max-width:none}}div.gatsby-highlight{margin-bottom:1rem}@media (max-width: 599px){#mobile-menu{position:fixed;top:0;left:0;width:100%;height:100vh;padding:0 0 1rem;max-width:600px;z-index:-10;transition:opacity 0.25s ease 0s;opacity:0;overflow:scroll}#mobile-menu>ul,#mobile-menu>div{transform:translate(0px, 10px);transition:transform 0.25s ease 0s}.theme-wrapper.show-menu #mobile-menu{opacity:1;z-index:10}.theme-wrapper.show-menu #mobile-menu>div{transform:translate(0px, 0px)}}.theme-wrapper.light div.draft-ui-menu,.theme-wrapper.light div.menu{background:#f1f3f5}.theme-wrapper.dark div.draft-ui-menu,.theme-wrapper.dark div.menu{background:#343a40}.theme-wrapper.show-menu div.menu{opacity:1;z-index:10}.theme-wrapper.show-menu div.menu>div{transform:translate(0px, 0px)}div.spaced-buttons>button{margin:0 0.5rem 0.5rem 0}div.spaced>*{margin:0 0.5rem 0.5rem 0}ul#pre-main-menu{margin:0;padding:0}.boldish{font-weight:500}.freesewing.draft{padding:1rem}li.action{clear:both}li.action span.MuiSwitch-root{float:right}.theme-wrapper.light ul#draft-config li.action.toggle.off,.theme-wrapper.dark ul#draft-config li.action.toggle.off{color:#868e96}.theme-wrapper.light ul#draft-config li.action.toggle.off>span svg,.theme-wrapper.dark ul#draft-config li.action.toggle.off>span svg{color:#868e96}footer{background-color:#1a1d21;color:#adb5bd;padding:3rem 0 6rem}footer a{color:#dee2e6 !important;font-weight:400}footer a:hover{color:#d0bfff !important}footer div.cols{display:flex;flex-direction:row;justify-content:space-between;max-width:1600px;margin:auto;padding:0 1.5rem}footer div.cols>div{min-width:150px;max-width:calc(20% - 4rem);padding:0 2rem 0 0;width:100%}footer ul{text-align:left;font-size:1.1rem;margin:0;padding:0;width:100%}footer ul li:first-of-type{padding:0.35rem 0.75rem}footer ul li{display:block}footer ul li a:hover{text-decoration:none !important}footer ul li.heading{font-weight:bold;border-bottom:3px solid #adb5bd;margin-bottom:0.5rem}@media (min-width: 1200px){footer div.cols>div:last-of-type{min-width:350px}}@media (min-width: 600px) and (max-width: 959px){footer div.cols{flex-wrap:wrap}footer div.cols>div{width:calc(30% - 4rem);padding:0 1rem}}@media (max-width: 599px){footer div.cols{display:block}footer div.cols>div{margin:2rem auto 0;max-width:calc(100% - 4rem)}footer div.cols>div:first-of-type{margin-top:0}} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/public/manifest.json b/packages/create-freesewing-pattern/template/freesewing/example/public/manifest.json deleted file mode 100644 index 26684fe23a9..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "{{name}}", - "name": "{{name}}", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/App.js b/packages/create-freesewing-pattern/template/freesewing/example/src/App.js deleted file mode 100644 index e8e07e4eb85..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/App.js +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react' -import freesewing from '@freesewing/core' -import Workbench from '@freesewing/components/Workbench' -import '@freesewing/css-theme' -import Pattern from './pattern/src/index.js' -/* - * The following symlink is required to make this import work: - * `root_folder/example/src/pattern => `../../` - * - * Without it, we can't import the pattern as a local file - * since create-react-app does not allow imports outside ./src - * If it's imported as a dependency, webpack will cache the - * build and there will be no hot-reloading of changes - */ - -const App = (props) => { - // You can use this to add translations - /* - let translations = { - JSON: 'JSON', - someOtherString: 'Some other string that needs translation' - } - */ - - // Adds support for loading an external pattern configuration - let recreate = false - if (window) recreate = window.location.pathname.substr(1).split('/') - if (recreate.length === 3 && recreate[0] === 'recreate') { - recreate = { from: recreate[1], id: recreate[2] } - } else { - recreate = false - } - - return ( - - ) -} - -export default App diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/App.test.js b/packages/create-freesewing-pattern/template/freesewing/example/src/App.test.js deleted file mode 100644 index 4bf19359ea4..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import App from './App' - -it('renders without crashing', () => { - const div = document.createElement('div') - ReactDOM.render(, div) - ReactDOM.unmountComponentAtNode(div) -}) diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/index.js b/packages/create-freesewing-pattern/template/freesewing/example/src/index.js deleted file mode 100644 index 24aefad45a1..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import App from './App' -import * as serviceWorker from './serviceWorker' -import './layout.css' - -ReactDOM.render(, document.getElementById('root')) - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: http://bit.ly/CRA-PWA -serviceWorker.unregister() diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css b/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css deleted file mode 100644 index a4963e16e55..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css +++ /dev/null @@ -1,273 +0,0 @@ -* { - box-sizing: border-box; -} -.MuiToolbar-root { - overflow-y: auto; -} -div.layout-wrapper { - width: 100%; - margin: 0; - padding: 0; - background: #f8f9fa; - background: linear-gradient(90deg, #f1f3f5 0%, #f1f3f5 25%, #f8f9fa 26%, #f8f9fa 100%); -} -div.layout-wrapper div.layout { - display: flex; - max-width: 1600px; - margin: auto; - padding: 0; - flex-direction: row; - flex-wrap: nowrap; - justify-content: space-between; - background-color: #f8f9fa; - min-height: calc(100vh - 64px); -} -div.layout-wrapper div.layout > aside { - width: 33%; - background: #f1f3f5; - border-right: 2px solid #dee2e6; -} -div.layout-wrapper div.layout > section { - margin: 0; - padding: 1rem; -} -div.layout-wrapper div.layout > section > div.content { - max-width: 66ch; - min-width: 340px; -} -div.layout-wrapper div.layout > section > div.content.wide { - max-width: 100%; - margin: auto; -} - -.theme-wrapper.dark header { - background-color: #1a1d21; -} - -.theme-wrapper.dark div.layout-wrapper { - background: #f8f9fa; - background: linear-gradient(90deg, #1a1d21 0%, #1a1d21 25%, #212529 26%, #212529 100%); -} -.theme-wrapper.dark div.layout-wrapper div.layout { - background-color: #212529; -} -.theme-wrapper.dark div.layout-wrapper div.layout > aside { - background-color: #1a1d21; - border-right: 2px solid #343a40; -} - -/* monitor */ -@media (min-width: 1200px) { - div.layout > section { - width: 63%; - } -} - -/* slate */ -@media (max-width: 1199px) and (min-width: 960px) { - div.layout > aside { - width: 298px; - } - div.layout > section { - width: calc(100% - 300px - 4rem); - max-width: none; - margin: 0 1rem 0 3rem; - } -} - -/* tablet */ -@media (max-width: 959px) { - div.layout > aside { - width: 218px; - } - div.layout > section { - width: calc(100% - 220px - 4rem); - max-width: none; - margin: 0; - padding: 0 2rem; - } - div.layout > section div.content { - min-width: inherit; - } -} - -/* mobile */ -@media (max-width: 599px) { - div.layout > aside { - display: none; - } - div.layout > section { - width: calc(100%); - margin: 0 auto; - padding: 0 1.5rem; - max-width: none; - } -} - -div.gatsby-highlight { - margin-bottom: 1rem; -} - -@media (max-width: 599px) { - #mobile-menu { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100vh; - padding: 0 0 1rem; - max-width: 600px; - z-index: -10; - transition: opacity 0.25s ease 0s; - opacity: 0; - overflow: scroll; - } - #mobile-menu > ul, - #mobile-menu > div { - transform: translate(0px, 10px); - transition: transform 0.25s ease 0s; - } - .theme-wrapper.show-menu #mobile-menu { - opacity: 1; - z-index: 10; - } - .theme-wrapper.show-menu #mobile-menu > div { - transform: translate(0px, 0px); - } -} - -.theme-wrapper.light div.draft-ui-menu, -.theme-wrapper.light div.menu { - background: #f1f3f5; -} - -.theme-wrapper.dark div.draft-ui-menu, -.theme-wrapper.dark div.menu { - background: #343a40; -} - -.theme-wrapper.show-menu div.menu { - opacity: 1; - z-index: 10; -} -.theme-wrapper.show-menu div.menu > div { - transform: translate(0px, 0px); -} - -div.spaced-buttons > button { - margin: 0 0.5rem 0.5rem 0; -} - -div.spaced > * { - margin: 0 0.5rem 0.5rem 0; -} - -ul#pre-main-menu { - margin: 0; - padding: 0; -} - -.boldish { - font-weight: 500; -} - -.freesewing.draft { - padding: 1rem; -} - -li.action { - clear: both; -} - -li.action span.MuiSwitch-root { - float: right; -} - -.theme-wrapper.light ul#draft-config li.action.toggle.off, -.theme-wrapper.dark ul#draft-config li.action.toggle.off { - color: #868e96; -} -.theme-wrapper.light ul#draft-config li.action.toggle.off > span svg, -.theme-wrapper.dark ul#draft-config li.action.toggle.off > span svg { - color: #868e96; -} - -footer { - background-color: #1a1d21; - color: #adb5bd; - padding: 3rem 0 6rem; -} -footer a { - color: #dee2e6 !important; - font-weight: 400; -} -footer a:hover { - color: #d0bfff !important; -} -footer div.cols { - display: flex; - flex-direction: row; - justify-content: space-between; - max-width: 1600px; - margin: auto; - padding: 0 1.5rem; -} -footer div.cols > div { - min-width: 150px; - max-width: calc(20% - 4rem); - padding: 0 2rem 0 0; - width: 100%; -} -footer ul { - text-align: left; - font-size: 1.1rem; - margin: 0; - padding: 0; - width: 100%; -} -footer ul li:first-of-type { - padding: 0.35rem 0.75rem; -} -footer ul li { - display: block; -} -footer ul li a:hover { - text-decoration: none !important; -} -footer ul li.heading { - font-weight: bold; - border-bottom: 3px solid #adb5bd; - margin-bottom: 0.5rem; -} - -/* XL screens */ -@media (min-width: 1200px) { - footer div.cols > div:last-of-type { - min-width: 350px; - } -} - -/* SM screens */ -@media (min-width: 600px) and (max-width: 959px) { - footer div.cols { - flex-wrap: wrap; - } - footer div.cols > div { - width: calc(30% - 4rem); - padding: 0 1rem; - } -} - -/* XS screens */ -@media (max-width: 599px) { - footer div.cols { - display: block; - } - footer div.cols > div { - margin: 2rem auto 0; - max-width: calc(100% - 4rem); - } - footer div.cols > div:first-of-type { - margin-top: 0; - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.scss b/packages/create-freesewing-pattern/template/freesewing/example/src/layout.scss deleted file mode 100644 index ae1d21f65c6..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.scss +++ /dev/null @@ -1,284 +0,0 @@ -@import '../../../../../../node_modules/open-color/open-color.scss'; - -// Global style overrides -* { - box-sizing: border-box; -} -.MuiToolbar-root { - overflow-y: auto; -} - -// Main page content layout -div.layout-wrapper { - width: 100%; - margin: 0; - padding: 0; - background: $oc-gray-0; - background: linear-gradient( - 90deg, - $oc-gray-1 0%, - $oc-gray-1 25%, - $oc-gray-0 26%, - $oc-gray-0 100% - ); - div.layout { - display: flex; - max-width: 1600px; - margin: auto; - padding: 0; - flex-direction: row; - flex-wrap: nowrap; - justify-content: space-between; - background-color: $oc-gray-0; - min-height: calc(100vh - 64px); - > aside { - width: 33%; - background: $oc-gray-1; - border-right: 2px solid $oc-gray-3; - } - > section { - margin: 0; - padding: 1rem; - > div.content { - max-width: 66ch; - min-width: 340px; - } - > div.content.wide { - max-width: 100%; - margin: auto; - } - } - } -} -.theme-wrapper.dark { - header { - background-color: darken($oc-gray-9, 3); - } - div.layout-wrapper { - background: $oc-gray-0; - background: linear-gradient( - 90deg, - darken($oc-gray-9, 3) 0%, - darken($oc-gray-9, 3) 25%, - $oc-gray-9 26%, - $oc-gray-9 100% - ); - div.layout { - background-color: $oc-gray-9; - > aside { - background-color: darken($oc-gray-9, 3); - border-right: 2px solid $oc-gray-8; - } - } - } -} - -/* monitor */ -@media (min-width: 1200px) { - div.layout > section { - width: 63%; - } -} -/* slate */ -@media (max-width: 1199px) and (min-width: 960px) { - div.layout { - > aside { - width: 298px; // 2px border - } - > section { - width: calc(100% - 300px - 4rem); - max-width: none; - margin: 0 1rem 0 3rem; - } - } -} - -/* tablet */ -@media (max-width: 959px) { - div.layout { - > aside { - width: 218px; // 2px border - } - > section { - width: calc(100% - 220px - 4rem); - max-width: none; - margin: 0; - padding: 0 2rem; - div.content { - min-width: inherit; - } - } - } -} -/* mobile */ -@media (max-width: 599px) { - div.layout { - > aside { - display: none; - } - > section { - width: calc(100%); - margin: 0 auto; - padding: 0 1.5rem; - max-width: none; - } - } -} - -// Candidates for theme inclusion -div.gatsby-highlight { - margin-bottom: 1rem; -} - -@media (max-width: 599px) { - #mobile-menu { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100vh; - padding: 0 0 1rem; - max-width: 600px; - z-index: -10; - transition: opacity 0.25s ease 0s; - opacity: 0; - overflow: scroll; - > ul, - > div { - transform: translate(0px, 10px); - transition: transform 0.25s ease 0s; - } - } - .theme-wrapper.show-menu #mobile-menu { - opacity: 1; - z-index: 10; - > div { - transform: translate(0px, 0px); - } - } -} - -.theme-wrapper.light div.draft-ui-menu, -.theme-wrapper.light div.menu { - background: $oc-gray-1; -} -.theme-wrapper.dark div.draft-ui-menu, -.theme-wrapper.dark div.menu { - background: $oc-gray-8; -} -.theme-wrapper.show-menu div.menu { - opacity: 1; - z-index: 10; - > div { - transform: translate(0px, 0px); - } -} - -div.spaced-buttons > button { - margin: 0 0.5rem 0.5rem 0; -} -div.spaced > * { - margin: 0 0.5rem 0.5rem 0; -} - -ul#pre-main-menu { - margin: 0; - padding: 0; -} -.boldish { - font-weight: 500; -} -.freesewing.draft { - padding: 1rem; -} -li.action { - clear: both; -} -li.action span.MuiSwitch-root { - float: right; -} -.theme-wrapper.light ul#draft-config li.action.toggle.off, -.theme-wrapper.dark ul#draft-config li.action.toggle.off { - color: $oc-gray-6; - > span svg { - color: $oc-gray-6; - } -} - -footer { - background-color: #1a1d21; - color: #adb5bd; - padding: 3rem 0 6rem; - a { - color: #dee2e6 !important; - font-weight: 400; - } - a:hover { - color: #d0bfff !important; - } - div.cols { - display: flex; - flex-direction: row; - justify-content: space-between; - max-width: 1600px; - margin: auto; - padding: 0 1.5rem; - > div { - min-width: 150px; - max-width: calc(20% - 4rem); - padding: 0 2rem 0 0; - width: 100%; - } - } - ul { - text-align: left; - font-size: 1.1rem; - margin: 0; - padding: 0; - width: 100%; - li:first-of-type { - padding: 0.35rem 0.75rem; - } - li { - display: block; - a:hover { - text-decoration: none !important; - } - } - li.heading { - font-weight: bold; - border-bottom: 3px solid #adb5bd; - margin-bottom: 0.5rem; - } - } -} - -/* XL screens */ -@media (min-width: 1200px) { - footer div.cols > div:last-of-type { - min-width: 350px; - } -} -/* SM screens */ -@media (min-width: 600px) and (max-width: 959px) { - footer div.cols { - flex-wrap: wrap; - > div { - width: calc(30% - 4rem); - padding: 0 1rem; - } - } -} -/* XS screens */ -@media (max-width: 599px) { - footer div.cols { - display: block; - > div { - margin: 2rem auto 0; - max-width: calc(100% - 4rem); - } - > div:first-of-type { - margin-top: 0; - } - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/serviceWorker.js b/packages/create-freesewing-pattern/template/freesewing/example/src/serviceWorker.js deleted file mode 100644 index 4fe923e7795..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/serviceWorker.js +++ /dev/null @@ -1,123 +0,0 @@ -// In production, we register a service worker to serve assets from local cache. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on the "N+1" visit to a page, since previously -// cached resources are updated in the background. - -// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. -// This link also includes instructions on opting out of this behavior. - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/) -) - -export function register(config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL(process.env.PUBLIC_URL, window.location) - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js` - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config) - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://goo.gl/SC7cgQ' - ) - }) - } else { - // Is not local host. Just register service worker - registerValidSW(swUrl, config) - } - }) - } -} - -function registerValidSW(swUrl, config) { - navigator.serviceWorker - .register(swUrl) - .then((registration) => { - registration.onupdatefound = () => { - const installingWorker = registration.installing - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the old content will have been purged and - // the fresh content will have been added to the cache. - // It's the perfect time to display a "New content is - // available; please refresh." message in your web app. - console.log('New content is available; please refresh.') - - // Execute callback - if (config.onUpdate) { - config.onUpdate(registration) - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.') - - // Execute callback - if (config.onSuccess) { - config.onSuccess(registration) - } - } - } - } - } - }) - .catch((error) => { - console.error('Error during service worker registration:', error) - }) -} - -function checkValidServiceWorker(swUrl, config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then((response) => { - // Ensure service worker exists, and that we really are getting a JS file. - if ( - response.status === 404 || - response.headers.get('content-type').indexOf('javascript') === -1 - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then((registration) => { - registration.unregister().then(() => { - window.location.reload() - }) - }) - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config) - } - }) - .catch(() => { - console.log('No internet connection found. App is running in offline mode.') - }) -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then((registration) => { - registration.unregister() - }) - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/package.json b/packages/create-freesewing-pattern/template/freesewing/package.json deleted file mode 100644 index 775da9a0fd7..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "{{name}}", - "version": "0.0.1", - "description": "{{description}}", - "author": "{{author}}", - "license": "MIT", - "repository": "{{repo}}", - "main": "dist/index.js", - "module": "dist/index.es.js", - "jsnext:main": "dist/index.es.js", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "scripts": { - "build": "rollup -c", - "start": "rollup -c -w", - "prepare": "{{manager}} run build", - "predeploy": "cd example && {{manager}} install && {{manager}} run build" - }, - "devDependencies": { - "react": "^17.0.2", - "react-dom": "^17.0.2", - "@freesewing/core": "latest", - "@freesewing/plugin-bundle": "latest", - "@freesewing/components": "latest", - "@freesewing/css-theme": "latest", - "@freesewing/i18n": "latest", - "@freesewing/mui-theme": "latest", - "@freesewing/plugin-bust": "latest", - "@freesewing/plugin-buttons": "latest", - "@freesewing/plugin-debug": "latest", - "@freesewing/plugin-flip": "latest", - "@freesewing/utils": "latest", - "react-scripts": "^5.0.0", - "webpack": "^5.67.0", - "rollup": "^2.66.1", - "rollup-plugin-peer-deps-external": "^2.2.4", - "rollup-plugin-terser": "^7.0.2", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^21.0.1", - "@rollup/plugin-url": "^6.1.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.1.3", - "@rollup/plugin-yaml": "^3.1.0", - "@material-ui/core": "^4.12.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.60", - "axios": "^0.25.0", - "react-intl": "^5.24.4", - "prop-types": "^15.8.1", - "file-saver": "^2.0.5", - "eslint": "^7.32.0", - "eslint-config-standard": "^16.0.3", - "eslint-config-standard-react": "^11.0.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.2.0" - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/rollup.config.js b/packages/create-freesewing-pattern/template/freesewing/rollup.config.js deleted file mode 100644 index 6ae87bfc4ff..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/rollup.config.js +++ /dev/null @@ -1,43 +0,0 @@ -import url from '@rollup/plugin-url' -import babel from '@rollup/plugin-babel' -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import json from '@rollup/plugin-json' -import { terser } from 'rollup-plugin-terser' -import peerDepsExternal from 'rollup-plugin-peer-deps-external' -// import postcss from 'rollup-plugin-postcss' -import { main, module, name, version, description, author, license } from './package.json' - -export default { - input: 'src/index.js', - output: [ - { - file: main, - format: 'cjs', - sourcemap: true, - exports: 'default' - }, - { - file: module, - format: 'es', - sourcemap: true, - exports: 'default' - } - ], - plugins: [ - peerDepsExternal(), - // postcss({ modules: true }), - url({ exclude: ['**/*.svg'] }), - babel({ - exclude: 'node_modules/**' - }), - resolve({ browser: true }), - json(), - commonjs(), - terser({ - output: { - preamble: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */` - } - }) - ] -} diff --git a/packages/create-freesewing-pattern/template/freesewing/src/.eslintrc b/packages/create-freesewing-pattern/template/freesewing/src/.eslintrc deleted file mode 100644 index 55f121d152d..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/src/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "env": { - "jest": true - } -} diff --git a/packages/create-freesewing-pattern/template/freesewing/src/box.js b/packages/create-freesewing-pattern/template/freesewing/src/box.js deleted file mode 100644 index 18b3ab1e23b..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/src/box.js +++ /dev/null @@ -1,49 +0,0 @@ -export default function (part) { - const { options, Point, Path, points, paths, Snippet, snippets, complete, sa, paperless, macro } = - part.shorthand() - - 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') - - // Complete? - if (complete) { - points.logo = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) - snippets.logo = new Snippet('logo', points.logo) - points.text = points.logo - .shift(-90, w / 8) - .attr('data-text', 'hello') - .attr('data-text-class', 'center') - - if (sa) { - paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') - } - } - - // Paperless? - if (paperless) { - macro('hd', { - from: points.bottomLeft, - to: points.bottomRight, - y: points.bottomLeft.y + sa + 15, - }) - macro('vd', { - from: points.bottomRight, - to: points.topRight, - x: points.topRight.x + sa + 15, - }) - } - - return part -} diff --git a/packages/create-freesewing-pattern/template/freesewing/src/index.js b/packages/create-freesewing-pattern/template/freesewing/src/index.js deleted file mode 100644 index 79f79fffeb3..00000000000 --- a/packages/create-freesewing-pattern/template/freesewing/src/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import freesewing from '@freesewing/core' -import plugins from '@freesewing/plugin-bundle' -import config from '../config' -import draftBox from './box' - -// Create new design -const Pattern = new freesewing.Design(config, plugins) - -// Attach the draft methods to the prototype -Pattern.prototype.draftBox = draftBox - -export default Pattern diff --git a/packages/create-freesewing-pattern/tests/cli.test.mjs b/packages/create-freesewing-pattern/tests/cli.test.mjs deleted file mode 100644 index 2990addfa74..00000000000 --- a/packages/create-freesewing-pattern/tests/cli.test.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import chai from 'chai' -import { spawnSync } from 'child_process' - -describe('CLI help', () => { - it("Should run successfully", () => { - const result = spawnSync('node', ['./lib/cli.js', '-h']) - if (result.status != 0) { - console.log('Command failed: node ./lib/cli.js -h'); - console.log('status: ' + result.status); - console.log('stdout:') - console.log(result.stdout.toString('utf8')); - console.log('stderr:') - console.log(result.stderr.toString('utf8')); - chai.assert.fail(); - } - }) -}) diff --git a/packages/css-theme/README.md b/packages/css-theme/README.md index 01293a9740c..f5c13fb6db7 100644 --- a/packages/css-theme/README.md +++ b/packages/css-theme/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/css-theme/package.json b/packages/css-theme/package.json index 1802953f472..ceeddf46aac 100644 --- a/packages/css-theme/package.json +++ b/packages/css-theme/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/css-theme", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A CSS theme for FreeSewing web UIs", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -47,7 +47,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/gatsby-remark-jargon/README.md b/packages/gatsby-remark-jargon/README.md index 7466e1b772e..30f80bdf1b3 100644 --- a/packages/gatsby-remark-jargon/README.md +++ b/packages/gatsby-remark-jargon/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/gatsby-remark-jargon/package.json b/packages/gatsby-remark-jargon/package.json index 0a01fbac742..757610dbf8a 100644 --- a/packages/gatsby-remark-jargon/package.json +++ b/packages/gatsby-remark-jargon/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-remark-jargon", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A gatsby-transformer-remark sub-plugin for jargon terms", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -35,7 +35,7 @@ }, "peerDependencies": {}, "dependencies": { - "remark-jargon": "^2.21.3" + "remark-jargon": "^2.22.0-rc.0" }, "devDependencies": {}, "files": [ @@ -44,7 +44,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/i18n/README.md b/packages/i18n/README.md index 9fc4da136f6..b2dadf89f21 100644 --- a/packages/i18n/README.md +++ b/packages/i18n/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 5ba0c585114..cfbc716c873 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/i18n", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "Translations for the FreeSewing project", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -27,16 +27,17 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", - "prebuild": "node src/prebuild.mjs", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", - "cibuild_step6": "node build.js" + "prebuild": "node scripts/prebuilder.mjs", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", + "precibuild_step7": "node scripts/prebuilder.mjs", + "cibuild_step7": "node build.js" }, "peerDependencies": { - "@freesewing/pattern-info": "^2.21.3" + "@freesewing/pattern-info": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -48,7 +49,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/i18n/scripts/prebuilder.mjs b/packages/i18n/scripts/prebuilder.mjs new file mode 100644 index 00000000000..292e0a69cce --- /dev/null +++ b/packages/i18n/scripts/prebuilder.mjs @@ -0,0 +1,7 @@ +import {build} from '../src/prebuild.mjs' + +// use a deny-list to keep locales that aren't ready out of the build +export const denyList = ['uk'] + +// call this here instead of in the src/prebuild.mjs so that build isn't called by other files importing that build function +build((loc) => denyList.indexOf(loc) === -1) diff --git a/packages/i18n/src/locales/de/options/index.js b/packages/i18n/src/locales/de/options/index.js index 268634de44a..38731b05a6f 100644 --- a/packages/i18n/src/locales/de/options/index.js +++ b/packages/i18n/src/locales/de/options/index.js @@ -43,6 +43,7 @@ import unice from 'unice.yml' import lucy from 'lucy.yml' import bob from 'bob.yml' import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' import { options as optionList } from '@freesewing/pattern-info' import shared from '../../../shared-options.yml' @@ -93,6 +94,7 @@ let patterns = { lucy, bob, noble, + octoplushy, } let options = {} diff --git a/packages/i18n/src/locales/de/options/octoplushy.yml b/packages/i18n/src/locales/de/options/octoplushy.yml new file mode 100644 index 00000000000..974d5f18600 --- /dev/null +++ b/packages/i18n/src/locales/de/options/octoplushy.yml @@ -0,0 +1,28 @@ +size: + title: Size + description: Controls the overall size +type: + title: Type + description: Allows you to choose one of the variants of this design +armWidth: + title: Arm width + description: Controls the width of the arms +armLength: + title: Arm width + description: Controls the length of the arms +neckWidth: + title: Neck width + description: Determines the width at the neck +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/de/options/simone.yml b/packages/i18n/src/locales/de/options/simone.yml index 21f64df4503..57a8560a08f 100644 --- a/packages/i18n/src/locales/de/options/simone.yml +++ b/packages/i18n/src/locales/de/options/simone.yml @@ -1,4 +1,11 @@ --- +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled bustDartAngle: title: Winkel des Brustabnähers description: Kontrolliert den Winkel, in welchem der (seitliche) Brustabnäher sich nach unten neigt diff --git a/packages/i18n/src/locales/de/parts.yaml b/packages/i18n/src/locales/de/parts.yaml index 89365fafb35..40903a4d4f6 100644 --- a/packages/i18n/src/locales/de/parts.yaml +++ b/packages/i18n/src/locales/de/parts.yaml @@ -1,6 +1,7 @@ --- back: Rückseite backBase: Rückseite Basis +backPocketWelt: Back pocket welt base: Basis bentBack: Rückseite Bent bentBase: Basis Bent diff --git a/packages/i18n/src/locales/de/patterns.yml b/packages/i18n/src/locales/de/patterns.yml index 1d1b6c2e196..290b0a691c7 100644 --- a/packages/i18n/src/locales/de/patterns.yml +++ b/packages/i18n/src/locales/de/patterns.yml @@ -80,6 +80,9 @@ lunetius: noble: description: Noble is a body block with prince(ess) seams title: Noble body block +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus paco: description: Paco ist eine lässige, aber stilvolle Sommerhose. title: Paco, die Hose diff --git a/packages/i18n/src/locales/de/settings.yml b/packages/i18n/src/locales/de/settings.yml index 1d6561a92fd..779bfef0df6 100644 --- a/packages/i18n/src/locales/de/settings.yml +++ b/packages/i18n/src/locales/de/settings.yml @@ -5,8 +5,11 @@ advanced: paperless: title: Papierlos description: Zeichnet ein Schnittmuster mit allen benötigten Dimensionen, sodass es direkt auf den Stoff oder ein anderes Medium übertragen werden kann, ohne es auszudrucken +sabool: + title: Include seam allowance + description: Controls whether or not to include seam allowance in your pattern sa: - title: Nahtzugabe + title: Seam allowance size description: Steuert die Breite der Nahtzugabe, die in deinem Schnittmuster enthalten ist locale: title: Sprache diff --git a/packages/i18n/src/locales/en/options/index.js b/packages/i18n/src/locales/en/options/index.js index 268634de44a..38731b05a6f 100644 --- a/packages/i18n/src/locales/en/options/index.js +++ b/packages/i18n/src/locales/en/options/index.js @@ -43,6 +43,7 @@ import unice from 'unice.yml' import lucy from 'lucy.yml' import bob from 'bob.yml' import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' import { options as optionList } from '@freesewing/pattern-info' import shared from '../../../shared-options.yml' @@ -93,6 +94,7 @@ let patterns = { lucy, bob, noble, + octoplushy, } let options = {} diff --git a/packages/i18n/src/locales/en/options/octoplushy.yml b/packages/i18n/src/locales/en/options/octoplushy.yml new file mode 100644 index 00000000000..26d8a8cb3d9 --- /dev/null +++ b/packages/i18n/src/locales/en/options/octoplushy.yml @@ -0,0 +1,36 @@ +size: + title: Size + description: Controls the overall size + +type: + title: Type + description: Allows you to choose one of the variants of this design + +armWidth: + title: Arm width + description: Controls the width of the arms + +armLength: + title: Arm width + description: Controls the length of the arms + +neckWidth: + title: Neck width + description: Determines the width at the neck + +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper + +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" + +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" + +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/en/options/simone.yml b/packages/i18n/src/locales/en/options/simone.yml index ec0923fcdf4..46f20b2b13d 100644 --- a/packages/i18n/src/locales/en/options/simone.yml +++ b/packages/i18n/src/locales/en/options/simone.yml @@ -1,3 +1,11 @@ +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled + bustDartAngle: title: Bust dart angle description: Controls the angle by which the (side) bust dart slopes downward diff --git a/packages/i18n/src/locales/en/options/unice.yml b/packages/i18n/src/locales/en/options/unice.yml index 08e2b4acfa9..f5c26142d41 100644 --- a/packages/i18n/src/locales/en/options/unice.yml +++ b/packages/i18n/src/locales/en/options/unice.yml @@ -8,7 +8,7 @@ fabricStretchY: adjustStretch: title: Adjust stretch - description: This option you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is + description: This option allows you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is useCrossSeam: title: Use crossseam diff --git a/packages/i18n/src/locales/en/parts.yaml b/packages/i18n/src/locales/en/parts.yaml index cae47214e0d..fbe657504ab 100644 --- a/packages/i18n/src/locales/en/parts.yaml +++ b/packages/i18n/src/locales/en/parts.yaml @@ -1,5 +1,6 @@ back: Back backBase: Back base +backPocketWelt: Back pocket welt base: Base bentBack: Bent back bentBase: Bent base diff --git a/packages/i18n/src/locales/en/patterns.yml b/packages/i18n/src/locales/en/patterns.yml index c50403dd253..4ce5d772988 100644 --- a/packages/i18n/src/locales/en/patterns.yml +++ b/packages/i18n/src/locales/en/patterns.yml @@ -79,6 +79,9 @@ lunetius: noble: description: Noble is a body block with prince(ess) seams title: Noble body block +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus paco: description: Paco are casual yet stylish summer pants. title: Paco pants diff --git a/packages/i18n/src/locales/en/settings.yml b/packages/i18n/src/locales/en/settings.yml index 7555266cf1a..27c65e4163a 100644 --- a/packages/i18n/src/locales/en/settings.yml +++ b/packages/i18n/src/locales/en/settings.yml @@ -6,8 +6,12 @@ paperless: title: Paperless description: Drafts a pattern with all dimensions included so you can transfer it on fabric or another medium without the need to print +sabool: + title: Include seam allowance + description: Controls whether or not to include seam allowance in your pattern + sa: - title: Seam allowance + title: Seam allowance size description: Controls the amount of seam allowance included in your pattern locale: diff --git a/packages/i18n/src/locales/es/components/workbench.yaml b/packages/i18n/src/locales/es/components/workbench.yaml index f11754d21af..234c90c93f7 100644 --- a/packages/i18n/src/locales/es/components/workbench.yaml +++ b/packages/i18n/src/locales/es/components/workbench.yaml @@ -1,5 +1,5 @@ --- -designOptions: Design options +designOptions: Opciones de diseño forPrinting: For printing forCutting: For cutting layoutThing: 'Layout {thing}' diff --git a/packages/i18n/src/locales/es/optiongroups.yaml b/packages/i18n/src/locales/es/optiongroups.yaml index 21a7db00d3a..f45c7b85c7a 100644 --- a/packages/i18n/src/locales/es/optiongroups.yaml +++ b/packages/i18n/src/locales/es/optiongroups.yaml @@ -21,5 +21,5 @@ bellaDarts: Pinzas de Bella bellaArmhole: Sisa de Bella bellaAdvanced: Bella advanced clavi: Clavi -type: Type -size: Size +type: Tipo +size: Talla diff --git a/packages/i18n/src/locales/es/options/bee.yml b/packages/i18n/src/locales/es/options/bee.yml index 56d65a62158..b0462151dd3 100644 --- a/packages/i18n/src/locales/es/options/bee.yml +++ b/packages/i18n/src/locales/es/options/bee.yml @@ -78,5 +78,5 @@ highBustWidth: title: High bust width (Bella) description: Controls the high bust width in the underlying Bella block Bee is based on shoulderToShoulderEase: - title: Shoulder to Shoulder ease (Bella) - description: Controls the shoulder to shoulder ease in the underlying Bella block Bee is based on + title: Ancho de hombros (Bella) + description: Controla el ancho de hombros en el patrón de base Bella en el que se basa Bee diff --git a/packages/i18n/src/locales/es/options/hi.yml b/packages/i18n/src/locales/es/options/hi.yml index 534814fca5c..8b612086158 100644 --- a/packages/i18n/src/locales/es/options/hi.yml +++ b/packages/i18n/src/locales/es/options/hi.yml @@ -1,12 +1,12 @@ hungry: - title: Hungry - description: Changes the mouth shape to convey Hi is hungry + title: Hambre + description: Cambios en la forma de la boca para expresar que Hi tiene hambre nosePointiness: - title: Nose pointiness - description: Controls how pointy Hi's nose is + title: Agudeza de la nariz + description: Controla cómo de puntiaguda es la nariz de Hi aggressive: - title: Aggressive - description: Give Hi pointy teeth, or not + title: Agresividad + description: Ponle o no dientes puntiagudos a Hi size: - title: Size - description: Sharks come in all sizes, and so does Hi + title: Tamaño + description: Los tiburones vienen en todos los tamaños, y Hi también diff --git a/packages/i18n/src/locales/es/options/index.js b/packages/i18n/src/locales/es/options/index.js index 268634de44a..38731b05a6f 100644 --- a/packages/i18n/src/locales/es/options/index.js +++ b/packages/i18n/src/locales/es/options/index.js @@ -43,6 +43,7 @@ import unice from 'unice.yml' import lucy from 'lucy.yml' import bob from 'bob.yml' import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' import { options as optionList } from '@freesewing/pattern-info' import shared from '../../../shared-options.yml' @@ -93,6 +94,7 @@ let patterns = { lucy, bob, noble, + octoplushy, } let options = {} diff --git a/packages/i18n/src/locales/es/options/octoplushy.yml b/packages/i18n/src/locales/es/options/octoplushy.yml new file mode 100644 index 00000000000..974d5f18600 --- /dev/null +++ b/packages/i18n/src/locales/es/options/octoplushy.yml @@ -0,0 +1,28 @@ +size: + title: Size + description: Controls the overall size +type: + title: Type + description: Allows you to choose one of the variants of this design +armWidth: + title: Arm width + description: Controls the width of the arms +armLength: + title: Arm width + description: Controls the length of the arms +neckWidth: + title: Neck width + description: Determines the width at the neck +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/es/options/simone.yml b/packages/i18n/src/locales/es/options/simone.yml index d53e1308735..723ae578ce9 100644 --- a/packages/i18n/src/locales/es/options/simone.yml +++ b/packages/i18n/src/locales/es/options/simone.yml @@ -1,4 +1,11 @@ --- +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled bustDartAngle: title: Ángulo de dardos de polvo description: Controla el ángulo por el cual el (lado) dardos de polvo tiene pendiente descendente diff --git a/packages/i18n/src/locales/es/options/unice.yml b/packages/i18n/src/locales/es/options/unice.yml index 598e43f7db5..f91da2e5626 100644 --- a/packages/i18n/src/locales/es/options/unice.yml +++ b/packages/i18n/src/locales/es/options/unice.yml @@ -1,13 +1,13 @@ fabricStretchX: - title: Fabric stretch (horizontal) - description: Adjust this for more or less stretchy fabrics + title: Elasticidad de la tela (horizontal) + description: Ajusta esto para telas más o menos elásticas fabricStretchY: - title: Fabric stretch (vertical) - description: Adjust this for more or less stretchy fabrics + title: Elasticidad de la tela (vertical) + description: Ajusta esto para telas más o menos elásticas adjustStretch: - title: Adjust stretch - description: This option you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is + title: Ajuste por elasticidad + description: En esta opción puedes poner la elasticidad total del tejido tanto en horizontal como en vertical. Cuando se deshabilita, los valores de elasticidad se usan tal cual useCrossSeam: - title: Use crossseam - description: When enabled, the total height of the pattern pieces combined will match the cross seam length minus the front and back rise. When disabled, the total height depends on the gusset length option. + title: Usa el tiro completo + description: Cuando se habilita, la altura total de las piezas del patrón combinadas será la misma que la medida del tiro completo menos las elevaciones frontales y traseras. Cuando se deshabilita, la altura total dependerá de la opción del molde medio o pieza de refuerzo. diff --git a/packages/i18n/src/locales/es/parts.yaml b/packages/i18n/src/locales/es/parts.yaml index 85a72ff1e6c..60b2ad3a3bc 100644 --- a/packages/i18n/src/locales/es/parts.yaml +++ b/packages/i18n/src/locales/es/parts.yaml @@ -1,6 +1,7 @@ --- back: Atrás backBase: Base trasera +backPocketWelt: Ribete del bolsillo trasero base: Base bentBack: Trasero Bent bentBase: Base Bent diff --git a/packages/i18n/src/locales/es/patterns.yml b/packages/i18n/src/locales/es/patterns.yml index 2ff5664a4bf..2e1da6a010a 100644 --- a/packages/i18n/src/locales/es/patterns.yml +++ b/packages/i18n/src/locales/es/patterns.yml @@ -78,8 +78,11 @@ lunetius: description: Lunetius es una lacerna, una capa histórica romana title: Lunetius, lacerna noble: - description: Noble is a body block with prince(ess) seams - title: Noble body block + description: Noble es un patrón base de torso con corte de príncipe o princesa + title: Noble, patrón base de torso +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus paco: description: Paco son pantalones de verano casual pero con estilo. title: Paco, pantalones largos diff --git a/packages/i18n/src/locales/es/settings.yml b/packages/i18n/src/locales/es/settings.yml index 5d6e4eed0e1..0ac6e79ac24 100644 --- a/packages/i18n/src/locales/es/settings.yml +++ b/packages/i18n/src/locales/es/settings.yml @@ -5,8 +5,11 @@ advanced: paperless: title: Sin papel description: Dibuja un patrón con todas las dimensiones incluidas para que puedas transferirlo sobre tela u otro medio sin la necesidad de imprimir +sabool: + title: Include seam allowance + description: Controls whether or not to include seam allowance in your pattern sa: - title: Margen de costura + title: Seam allowance size description: Controla la cantidad de margen de costura incluido en tu patrón locale: title: Idioma diff --git a/packages/i18n/src/locales/fr/options/index.js b/packages/i18n/src/locales/fr/options/index.js index 268634de44a..38731b05a6f 100644 --- a/packages/i18n/src/locales/fr/options/index.js +++ b/packages/i18n/src/locales/fr/options/index.js @@ -43,6 +43,7 @@ import unice from 'unice.yml' import lucy from 'lucy.yml' import bob from 'bob.yml' import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' import { options as optionList } from '@freesewing/pattern-info' import shared from '../../../shared-options.yml' @@ -93,6 +94,7 @@ let patterns = { lucy, bob, noble, + octoplushy, } let options = {} diff --git a/packages/i18n/src/locales/fr/options/octoplushy.yml b/packages/i18n/src/locales/fr/options/octoplushy.yml new file mode 100644 index 00000000000..974d5f18600 --- /dev/null +++ b/packages/i18n/src/locales/fr/options/octoplushy.yml @@ -0,0 +1,28 @@ +size: + title: Size + description: Controls the overall size +type: + title: Type + description: Allows you to choose one of the variants of this design +armWidth: + title: Arm width + description: Controls the width of the arms +armLength: + title: Arm width + description: Controls the length of the arms +neckWidth: + title: Neck width + description: Determines the width at the neck +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/fr/options/simone.yml b/packages/i18n/src/locales/fr/options/simone.yml index d6efa5ec7af..04176b21f7d 100644 --- a/packages/i18n/src/locales/fr/options/simone.yml +++ b/packages/i18n/src/locales/fr/options/simone.yml @@ -1,4 +1,11 @@ --- +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled bustDartAngle: title: Angle des pinces poitrine description: Contrôle l'angle par lequel la pince poitrine (sur le côté) s'incline vers le bas diff --git a/packages/i18n/src/locales/fr/parts.yaml b/packages/i18n/src/locales/fr/parts.yaml index 321f4ec22cf..4d28587c380 100644 --- a/packages/i18n/src/locales/fr/parts.yaml +++ b/packages/i18n/src/locales/fr/parts.yaml @@ -1,6 +1,7 @@ --- back: Retour backBase: Base dos +backPocketWelt: Back pocket welt base: Base bentBack: Dos de Bent bentBase: Base de Bent diff --git a/packages/i18n/src/locales/fr/patterns.yml b/packages/i18n/src/locales/fr/patterns.yml index 2ccd2236616..52533df0763 100644 --- a/packages/i18n/src/locales/fr/patterns.yml +++ b/packages/i18n/src/locales/fr/patterns.yml @@ -80,6 +80,9 @@ lunetius: noble: description: Noble is a body block with prince(ess) seams title: Noble body block +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus paco: description: Paco est un pantalon d'été décontracté mais élégant. title: Pantalon Paco diff --git a/packages/i18n/src/locales/fr/settings.yml b/packages/i18n/src/locales/fr/settings.yml index b1a95425f40..319eb13572b 100644 --- a/packages/i18n/src/locales/fr/settings.yml +++ b/packages/i18n/src/locales/fr/settings.yml @@ -5,8 +5,11 @@ advanced: paperless: title: Sans papier description: Dessine un patron avec toutes les dimensions incluses afin que vous puissiez le transférer sur du tissu ou un autre support sans avoir à imprimer +sabool: + title: Include seam allowance + description: Controls whether or not to include seam allowance in your pattern sa: - title: Marge de couture + title: Seam allowance size description: Contrôle la valeur de la marge de couture incluse dans votre patron locale: title: Langue diff --git a/packages/i18n/src/locales/nl/options/index.js b/packages/i18n/src/locales/nl/options/index.js index 268634de44a..38731b05a6f 100644 --- a/packages/i18n/src/locales/nl/options/index.js +++ b/packages/i18n/src/locales/nl/options/index.js @@ -43,6 +43,7 @@ import unice from 'unice.yml' import lucy from 'lucy.yml' import bob from 'bob.yml' import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' import { options as optionList } from '@freesewing/pattern-info' import shared from '../../../shared-options.yml' @@ -93,6 +94,7 @@ let patterns = { lucy, bob, noble, + octoplushy, } let options = {} diff --git a/packages/i18n/src/locales/nl/options/octoplushy.yml b/packages/i18n/src/locales/nl/options/octoplushy.yml new file mode 100644 index 00000000000..974d5f18600 --- /dev/null +++ b/packages/i18n/src/locales/nl/options/octoplushy.yml @@ -0,0 +1,28 @@ +size: + title: Size + description: Controls the overall size +type: + title: Type + description: Allows you to choose one of the variants of this design +armWidth: + title: Arm width + description: Controls the width of the arms +armLength: + title: Arm width + description: Controls the length of the arms +neckWidth: + title: Neck width + description: Determines the width at the neck +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/nl/options/simone.yml b/packages/i18n/src/locales/nl/options/simone.yml index 77f9837af1a..f346c3db8b5 100644 --- a/packages/i18n/src/locales/nl/options/simone.yml +++ b/packages/i18n/src/locales/nl/options/simone.yml @@ -1,4 +1,11 @@ --- +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled bustDartAngle: title: Hoek busteneep description: Bepaalt de hoek waarin de busteneep vanuit de zijnaad naar beneden wijst diff --git a/packages/i18n/src/locales/nl/parts.yaml b/packages/i18n/src/locales/nl/parts.yaml index db714d04e51..c79d9820a9f 100644 --- a/packages/i18n/src/locales/nl/parts.yaml +++ b/packages/i18n/src/locales/nl/parts.yaml @@ -1,6 +1,7 @@ --- back: Achterzijde backBase: Basis rug +backPocketWelt: Back pocket welt base: Basis bentBack: Achterzijde Bent bentBase: Basis Bent diff --git a/packages/i18n/src/locales/nl/patterns.yml b/packages/i18n/src/locales/nl/patterns.yml index cf80cb672f7..cec99a8439e 100644 --- a/packages/i18n/src/locales/nl/patterns.yml +++ b/packages/i18n/src/locales/nl/patterns.yml @@ -80,6 +80,9 @@ lunetius: noble: description: Noble is a body block with prince(ess) seams title: Noble body block +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus paco: description: Paco is een casual maar stijlvolle zomerbroek. title: Paco broek diff --git a/packages/i18n/src/locales/nl/settings.yml b/packages/i18n/src/locales/nl/settings.yml index b0ff7e2a30f..6358913661d 100644 --- a/packages/i18n/src/locales/nl/settings.yml +++ b/packages/i18n/src/locales/nl/settings.yml @@ -5,8 +5,11 @@ advanced: paperless: title: Papierloos description: Hiermee tekent u een patroon met alle afmetingen zodat u het op stof of een ander medium kunt overbrengen zonder dat u het hoeft af te drukken +sabool: + title: Include seam allowance + description: Controls whether or not to include seam allowance in your pattern sa: - title: Naadtoeslag + title: Seam allowance size description: Bepaalt de hoeveelheid naadtoeslag die is inbegrepen in uw patroon locale: title: Taal diff --git a/packages/i18n/src/locales/uk/account.yaml b/packages/i18n/src/locales/uk/account.yaml new file mode 100644 index 00000000000..884b92baceb --- /dev/null +++ b/packages/i18n/src/locales/uk/account.yaml @@ -0,0 +1,60 @@ +--- +accountRemoved: Обліковий запис видалено +accountRestricted: Обліковий запис обмежено +avatar: Аватар +avatarInfo: Ваш аватар або фото профілю буде показано на сторінці Вашого профілю. +avatarTitle: Встановіть своє зображення профілю +bio: Про мене +bioInfo: Це місце, де Ви можете розповісти іншим користувачам Freesewing трішки про себе. Дане поле підтримує MarkDown - це робить можливим додавання посилань. Для прикладу, Ви можете додати посилання на свій блог, щоб інші могли його відвідати. +bioTitle: Напишіть коротку біографію +currentPassword: Поточний пароль +email: Адреса електронної пошти +emailInfo: Адреса електронної пошти, прив'язана до вашого облікового запису, є важливою, оскільки вона буде використовуватися для відновлення доступу до вашого облікового запису, якщо ви забудете пароль. Через це зміна електронної адреси потребує підтвердження. +emailTitle: Введіть адресу електронної пошти, яку Ви хочете прив'язати до цього облікового запису +exportYourData: Експортуйте Ваші дані +exportYourDataInfo: Загальний регламент про захист даних ЄС (GDPR) забезпечує Ваше так зване право на мобільність даних — право отримувати та повторно використовувати свої особисті дані для власних цілей, в тому числі на різних платформах. +exportYourDataTitle: Натисніть нижче, щоб завантажити персональні дані +github: GitHub +githubInfo: Якщо ви надасте своє ім'я користувача GitHub, сторінка вашого профілю буде містити посилання на ваш обліковий запис в GitHub. Інші відвідувачі зможуть переглянути Ваші внески в код, дати Вам зірочку або підписатися на Вас. +githubTitle: Заповніть своє ім'я користувача GitHub +instagramInfo: Якщо ви надасте ім'я користувача Instagram, сторінка профілю буде містити посилання на Ваш обліковий запис в Instagram. Таким чином, відвідувачі зможуть переглянути Ваші фотографії та слідкувати за Вами. +instagram: Instagram +instagramTitle: Заповніть своє ім'я користувача Instagram +languageInfo: Даний вибір мови визначає, якою мовою ви будете отримувати електронні листи від FreeSewing. Він не визначає мову сайту, яку можна вибрати на кожній сторінці. +language: Мова +languageTitle: Оберіть бажану мову користування +newPassword: Новий пароль +newsletter: Розсилка новин +newsletterTitle: Чи хочете Ви отримувати розсилку новин від FreeSewing? +newsletterInfo: Раз на 3 місяці, ми надсилаємо нашу інформаційну розсилку з корисним та чесним контентом. Без відстеження, без реклами, без нісенітниць. +passwordInfo: Зміна пароля вимагає Вашого поточного пароля. Заповніть його, потім введіть новий пароль. +password: Пароль +passwordTitle: Введіть поточний пароль та новий пароль +patronInfo: Патрони фінансово підтримують FreeSewing. Вони є лояльними прихильниками, які забезпечують стійке майбутнє для freesewing.org, нашого коду, викрійок та нашої спільноти. +patron: Патрон +removeYourAccountInfo: Загальний регламент про захист даних ЄС (GDPR) забезпечує Ваше так зване право на усунення даних — право видалити Ваші персональні дані. +removeYourAccount: Видалення облікового запису +removeYourAccountWarning: Ця дія вилучить Ваш обліковий запис, Ваші чернетки, Ваші моделі, та всю збережену нами інформацію про Ваш обліковий запис. Жодних шляхів назад. +resetPasswordInfo: Введіть Ваш новий пароль. +resetPassword: Змінити пароль +resetPasswordTitle: Введіть Ваш новий пароль +restrictProcessingOfYourDataInfo: Загальний регламент про захист даних ЄС (GDPR) гарантує Ваші так звані права на обмеження опрацювання - право припиняти обробку Ваших даних. +restrictProcessingOfYourData: Обмежити обробку ваших даних +restrictProcessingWarning: Ваші дані не будуть видалені, проте Ви вийдете зі свого облікового запису та заморозите його. Також, Ви не можете відмінити цю дію самостійно – Вам доведеться зв'язатися з нами, якщо Ви захочете відновити доступ до свого облікового запису. +reviewYourConsent: Переглянути вашу згоду +socialInfo: Якщо Ви надасте своє ім'я користувача GitHub, Twitter або Instagram, сторінка вашого профілю буде містити посилання на Ваші облікові записи на цих сайтах. Це дозволяє користувачам FreeSewing підписатися на Вас.
Ми не контактуємо з жодним з цих сайтів від Вашого імені. Це тільки для того, щоб люди могли розуміти, що, наприклад, користувач @joost на FreeSewing є тією самою людиною, що і користувач @j__st в Twitter. +social: Соціальні мережі +socialTitle: Дозволити людям слідкувати за Вами на інших платформах +twitterInfo: Якщо ви надасте своє ім'я користувача Twitter, сторінка вашого профілю буде містити посилання на Ваш обліковий запис у Twitter. Таким чином, відвідувачі можуть переглянути ваші твіти і слідкувати за Вами. +twitterTitle: Заповніть своє ім'я користувача у Twitter +twitter: Twitter +unitsInfo: FreeSewing підтримує як метричну систему, так і імперську систему вимірювань. +unitsTitle: Будь ласка, оберіть систему вимірювань, з якою Ви найбільш знайомі +units: Одиниці вимірювання +usernameInfo: Кожен користувач отримує випадково згенероване ім'я користувача. Це не дуже особисте, тому Ви можете змінити Ваше ім'я користувача на щось більш відповідне Вашій особистості. До прикладу, власне ім'я, або або будь-що інше. +usernameTitle: Будь ласка, oберіть ім'я користувача +username: Ім’я користувача +accountIsInactive: Ваш обліковий запис неактивний +accountNeedsActivation: Перш ніж Ви зможете увійти, потрібно активувати свій обліковий запис. Будь ласка, перевірте Вашу поштову скриньку для реєстрації і натисніть на посилання у листі. +reloadAccount: Перезавантажити обліковий запис +reloadAccountDescription: Це перезавантажить дані Вашого облікового запису із backend. Буквально те саме, що й вийти та знову увійти. diff --git a/packages/i18n/src/locales/uk/app.yaml b/packages/i18n/src/locales/uk/app.yaml new file mode 100644 index 00000000000..c1ee4899d8f --- /dev/null +++ b/packages/i18n/src/locales/uk/app.yaml @@ -0,0 +1,344 @@ +--- +100PercentCommunity: 100% спільноти +100PercentFree: 100% безкоштовно +100PercentOpenSource: 100% відкритий код +aboutFreesewing: Про Freesewing +accessoryPatterns: Викрійки аксесуарів +account: Обліковий запис +accountCreated: Обліковий запис створено +actions: Дії +allDocumentation: Вся документація +andThatIsAwesome: І це чудово +applyThisLayout: Застосувати макет +areYouSureYouWantToContinue: Ви впевнені, що хочете продовжити? +askForHelp: Попросити про допомогу +automatic: Автоматично +averagePeopleDoNotExist: "Середньостатистичних людей не існує" +awesome: Чудово +back: Назад +becauseThatWouldBeReallyHelpful: Тому що це було б дуже корисно. +becomeAPatron: Стати патроном +blockPatterns: Викрійки-основи +blog: Блог +browseBlogposts: Перегляд блог-постів +browsePatterns: Перегляд викрійок +browseShowcases: Перегляд показів +butThatCouldChange: Але це може змінитися +cancel: Скасувати +changePerson: Змінити людину +changePattern: Змінити викрійку +chatOnDiscord: Чат в Discord +checkInboxClickLinkInConfirmationEmail: Тепер перевірте поштову скриньку та перейдіть за посиланням у листі, що ми надіслали вам. +chest: Груди +chestInfo: Молочні залози потребують додаткових замірів. Якщо людина не має молочних залоз, ці заміри будуть приховані. Це не впливає на створення викрійок. +chooseASize: Обрати розмір +chooseAPerson: Обрати людину +chooseADesign: Обрати дизайн +chooseAPattern: Обрати викрійку +chooseYourOptions: Обрати Ваші налаштування +close: Закрити +community: Спільнота +configureLayout: Налаштування макета +configureYourDraft: Налаштуйте свою чернетку +contactUs: Контакти +contentLocaleFallback: Тому замість цього ми показуємо Вам англійську версію. +contents: Зміст +continue: Продовжити +copiedToClipboard: Скопійовано в буфер обміну +copy: Копіювати +couldYouTranslateThis: Можете це перекласти? +countModelsLackingForPattern: '{count} Ваших людей не мають достатньо замірів для створення {pattern}' +created: Створено +custom: Налаштувати +customSeamAllowance: Налаштувати припуски на шви +lightMode: Світлий режим +data: Дані +darkMode: Темний режим +default: За замовчуванням +demo: Демо +designOptions: Налаштування дизайну +designs: Дизайни +docs: Документація +docsFooterMsg: Документація ніколи не завершена. Сподіваємося, ми змогли відповісти на всі Ваші запитання, але якщо це не так - можна звернутися за допомогою. +docsNotFoundMsg: Не вдалося знайти цю документацію. Це зазвичай значить, що вона ще не була написана. +docsNotFoundTitle: Ця документація відсутня +documentationForDevelopers: Документація для розробників +documentationForEditors: Документація для коригувачів +documentationForTranslators: Документація для перекладачів +documentationOverview: Перегляд документації +dolls: Ляльки +download: Завантажити +draft: Чернетка +draftPattern: 'Створити {pattern}' +testPattern: 'Протестувати {pattern}' +draftPatternForModel: 'Створити {pattern} для {model}' +drafts: Чернетки +draftSettings: Налаштування чернетки +dragAndDropImageHere: Перетягніть зображення сюди або виберіть власноруч, тицьнувши на кнопку знизу +emailAddress: Електронна адреса +emailWorksToo: "Якщо Ви не знаєте своє ім'я користувача, можна також використати свою електронну адресу для входу" +enterEmailPickPassword: Введіть свою електронну адресу та оберіть пароль +export: Експортувати +exportTiledPDF: Експортувати посторінковий PDF +faq: Поширені запитання +fieldRemoved: '{field} видалено' +fieldSaved: '{field} збережено' +filterByPattern: Фільтрувати за викрійками +filterPatterns: Фільтрувати викрійки +forgotLoginInstructions: "Якщо Ви не пам'ятаєте свій пароль, напишіть знизу своє ім'я користувача чи електронну адресу та тицьніть кнопку Змінити пароль" +freesewing: Freesewing +freesewingOnGithub: Freesewing на GitHub +garmentPatterns: Викрійки одягу +giants: Велетні +github: GitHub +goAheadWeWillWait: Продовжуйте, ми зачекаємо. +goodJob: Молодець +goodToSeeYouAgain: Раді бачити Вас знову, {user} +handle: Handle +helpUsTranslate: Допоможіть нам з перекладом +home: Головна +howCanWeHelpYou: Як ми можемо Вам допомогти? +howToTakeMeasurements: Як робити заміри +i18n: Інтернаціоналізація +imperialUnits: Імперські одиниці (дюйм) +instagram: Інстаграм +invalidTldMessage: '.{tld} не є дійсним доменом верхнього рівня (TLD)' +joinTheChatMsg: Ми маємо спільноту в Discord, де Ви можете поспілкуватися з привітними людьми. +justAMoment: Зачекайте хвилинку +layout: Макет +logIn: Увійти +loginWithProvider: 'Увійти через {provider}' +logOut: Вийти +manual: Довідник +markdownHelp: MarkDown help +measurements: Заміри +menu: Меню +metadata: Метадані +metricUnits: Метричні одиниці (см) +person: Людина +people: Люди +nameInfo: Назва допомагає відрізняти речі. Ви можете обрати назву, яку душа забажає. +name: Назва +addThing: Додати {thing} +newThing: Створити {thing} +newPatternForModel: 'Створити {pattern} для {model}' +noChanges: Без змін +no: 'Ні' #Keep in quotes or it will evaluate to false +noPasswordPolicy: Ми не застосовуємо політику правил введення пароля +noSeamAllowance: Без припусків на шви +notAllOfThisContentIsAvailableInLanguage: Не весь цей контент доступний англійською мовою +notesInfo: Це Ваші нотатки. Ви можете писати тут все, що забажаєте +notes: Нотатки +ohNo: О ні! +oneMoreThing: І ще одна річ +optionalMeasurements: Додаткові заміри +options: Налаштування +orPayPerYear: Чи оплачувати щороку +other: Інше +otherThing: 'Ще {thing}' +ourPatrons: Наші патрони +ourRevenuePledge: Куди йде наш прибуток +patron-2: Порохова мавпочка +patron-4: First mate +patron-8: Капітан +patronHelp: Якщо Ви маєте будь-які запитання чи бажаєте внести зміни до свого статусу патрона — зв'яжіться з нами, будь ласка +patron: Патрон +patronPitch: Якщо Ви вважаєте, що ми робимо цінну роботу, та можете без труднощів відшкодувати кілька копійок щомісяця, будь ласка, підтримайте нашу працю +patronsKeepUsAfloat: Freesewing існує завдяки фінансовій підтримці наших патронів. Вони тримають цей корабель на плаву. +patternInstructions: Інструкції до викрійок +patternOptions: Налаштування викрійок +pattern: викрійка +sewingPatterns: Викрійка для шиття +patterns: Викрійки +pendingConfirmation: Підтвердження очікується +perMonth: Щомісячно +pleaseEnterAValidEmailAddress: Будь ласка, вкажіть чинну електронну адресу +pleaseIncludeTheInformationBelow: Будь ласка, додайте відомості нижче +preview: Попередній перегляд +privacyNotice: Можливе порушення приватності +proceedWithCaution: Продовжуйте з обережністю +profile: Обліковий запис +relatedLinks: Споріднені посилання +remove: Видалити +removeThing: Видалити {thing} +reportThisOnGithub: Повідомте про проблему на GitHub +requiredMeasurements: Необхідні заміри +resendActivationEmailMessage: "Напишіть електронну адресу, за допомогою якої Ви зареєструвалися - ми надішлемо Вам нове повідомлення для підтвердження." +resendActivationEmail: Повторно надіслати лист для активації +resetPassword: Змінити пароль +reset: Змінити +restoreDefaults: Скидання налаштувань +restoreDesignDefaults: Скинути налаштування дизайну +restorePatternDefaults: Скинути налаштування викрійки +saveDraftToYourAccount: Зберегти чернетку до облікового запису +save: Зберегти +searchLanguageMsg: Кожна мова має власний індекс пошуку. Оскільки не весь наш контент перекладений, Ви, скоріш за все, отримаєте більше результатів англійською. +searchLanguageTitle: Не знайшли, що шукали? +search: Пошук +selectAPartToMoveMirrorOrRotate: Обрати частину для переміщення, віддзеркалення або обертання +selectImage: Вибрати зображення +sendAnEmail: Надіслати e-mail +settings: Налаштування +sewingHelp: Допомога з шиттям +sewingPatternsForNonAveragePeople: Швейні викрійки для справжніх людей +share: Поширити +shareFreesewing: Поширити FreeSewing +showcase: Готові проєкти +signUpForAFreeAccount: Реєстрація безкоштовного облікового запису +signUp: Реєстрація +signupWithProvider: 'Реєстрація через {provider}' +sortByField: Сортувати за {field} +standardSeamAllowance: Стандартні припуски на шви +startOver: Почати знову +startTranslatingNowOrRead: '{startTranslatingNow}, або спочатку прочитайте {documentationForTranslators}.' +startTranslatingNow: Почни перекладати зараз +subscribe: Підписатися +support: Підтримати +supportFreesewing: Підтримати freesewing +tellMeMore: Хочу дізнатися більше +thanksForYourSupport: Дякуємо за Вашу підтримку +thisContentIsNotAvailableInLanguage: Цього контенту немає англійською +thisFieldSupportsMarkdown: Це поле підтримує Markdown +thisPageRequiresAuthentication: Ця сторінка потребує автентифікації +troubleLoggingIn: Не вдається увійти? +twitter: Twitter +txt-footer: Freesewing працює завдяки спільноті учасників
з фінансовою підтримкою наших патронів +txt-tier2: Рівень з найбільш демократичною ціною. Він дешевший за філіжанку кави, але ми дуже цінуємо Вашу підтримку. +txt-tier4: Підпишіться на цей рівень та ми доставимо наші смачнющі "булочки" до Вашого ґанку (будь-де на мапі). +txt-tier8: "Якщо Ви хочете не лише підтримувати нас, а й бажаєте freesewing процвітання, цей рівень для Вас. Також: додаткові \"булочки\". ;)" +txt-tiers: 'FreeSewing існує завдяки добровільній моделі підписки' +unitsInfo: Freesewing підтримує як метричні, так й імперські одиниці вимірювання. Просто оберіть ті, яким надаєте перевагу. (Зазвичай використовуються одиниці, зазначені в Вашому обліковому записі.) +updated: Оновлено +update: Оновити +userHasBeenWithUsSince: '{user} тут з {since}' +users: Користувачі +utilityPatterns: Utility Patterns +weAreValidatingYourConfirmationCode: Ми перевіряємо Ваш код підтвердження +weCouldNotValidateYourConfirmationCode: Нам не вдалося підтвердити Ваш код +weEncounteredAProblem: У нас виникла проблема +weEncourageYouToReportThis: Ми будемо вдячні, якщо Ви повідомите нам про це +welcomeAboard: Ласкаво просимо +welcome: Вітаємо +weNeverShareYourEmail: Ми ніколи не передамо Вашу електронну адресу третім обличчям +whatIsThis: Що це таке? +withBreasts: З молочними залозами +withoutBreasts: Без молочних залоз +yay: Ура! +yes: '"Так"' #Keep in quotes or it will evaluate to true +youAreAPatron: Ви патрон +youAreNotAPatron: Ви не є патроном +youAreNotLoggedIn: Ви не ввійшли в свій обліковий запис +yourRights: Ваші права +makerDocs: Ремісницька документація +devDocs: Розробницька документація +slogan: Бібліотека JavaScript для створення швейних викрійок на базі замірів +getStarted: Розпочати +apiReference: Референс АРІ +tutorial: Урок +editThisPage: Редагувати сторінку +loginRequiredRedirect: 'Вас було перенаправлено на сторінку входу, оскільки {page} потребує автентифікації' +various: Різне +sewing: Шиття +examples: Приклади +by: від +years: Роки +pricing: Ціни +createFirst: Розпочніть зі створення нової викрійки +noPattern: Ви не маєте жодних викрійок (поки що). Створіть нову викрійку, потім збережіть її до свого облікового запису. +modelFirst: Розпочніть з додавання замірів +noModel: Ви не додали жодних замірів (поки що). FreeSewing може створювати швейні викрійки на базі замірів. Однак для цього нам потрібні власне заміри. +noModel2: Розпочніть зі створення людини, після чого діставайте свою сантиметрову стрічку. +noUserBrowsingTitle: "Ви не можете просто переглядати всіх користувачів" +noUserBrowsingText: "У нас їх тисячі. Ви дійсно хочете витрачати свій час на це?" +usePatternMeasurements: 'Використати заміри вихідної викрійки' +createReplica: Створити копію +showDetails: Показати подробиці +hideDetails: Приховати подробиці +clickBelowToLogOut: Тицьніть знизу для виходу +compare: Порівняти +savePattern: Зберегти викрійку +recreate: Відтворити +recreateThing: Відтворити {thing} +recreateThingForPerson: Відтворити {thing} для {person} +seeYouLaterUser: До зустрічі, {user} +exportForPrinting: Експортувати для друку +exportForEditing: Експортувати для коригування +startWithNeckTitle: Розпочніть з обхвату шиї +startWithNeckDescription: Спираючись на Ваш обхват шиї, ми можемо зловити помилки в Ваших замірах. +whatYouNeed: Що Вам потрібно +fabricOptions: Варіанти тканини +cutting: Вирізання +instructions: Інструкція +hide: Приховати +show: Показати +oneMomentPlease: Будь ласка, зачекайте +loadingMagic: Ми завантажуємо магію +estimate: Прикидка +actual: Насправді +weEstimateYM2B: 'Ми прикидаємо, що {measurement} дорівнює:' +exportAsData: Експорт даних +availablePatterns: Доступні викрійки +browseCollection: Огляд колекції +browseYourPatterns: Переглянути викрійки +yourPatterns: Ваші викрійки +loginNeededToSavePatternsMsg: Ви маєте увійти, аби зберігати викрійки +docsForContributors: Документація для учасників +patternDocs: Документація викрійок +socialMedia: Соціальні мережі +create: Створити +browse: Огляд +patrons: Патрони +scrollToTop: Повернутися нагору +sitemap: Мапа сайту +contributeToThing: Долучитися до {thing} +mtmIsOurJam: Ми спеціалізуємося в швейних викрійках на базі замірів +fitYouDeserve: Ви обділяєте себе, обираючи стандартизовані розміри.
Зареєструйтеся сьогодні та отримайте крій, що личить Вам. +supportNag: FreeSeewing є безкоштовною платформою, але ми будемо вдячні, якщо Ви підтримаєте нас. +madeToMeasure: На базі замірів +sizes: Розміри +standardSizes: Стандартні розміри +accountRequired: Ця функція вимагає обліковий запис FreeSewing +size: Розмір +switchToThing: 'Перейти до {thing}' +saveThing: 'Зберегти {thing}' +shareThing: 'Поширити {thing}' +link: Посилання +cloneThing: 'Копіювати {thing}' +cloneDescription: Відтворити точну копію, використовуючи заміри вихідної викрійки. +furtherReading: Подальше вивчення +saveAsNewPattern: Зберегти як нову викрійку +saveAsNewPattern-txt: Збережіть цю викрійку/копію в своєму обліковому записі FreeSewing +exportPattern: Експортувати викрійку +printPattern: Роздрукувати викрійку +exportPattern-txt: Експортувати PDF для Вашого принтера, або завантажити цю викрійку в інших форматах +editThing: 'Коригувати {thing}' +editPattern-txt: Відкрити цю викрійку в швейному редакторі +featureRequiresAccount: Ця функція вимагає обліковий запис FreeSewing +zoom: Масштаб +zoomIn: Збільшити +zoomOut: Зменшити +zoom-txt: Перемикає між ужиманням висоти чи ширини викрійки для розміщення на Вашому екрані +savePattern-txt: Збережіть цю викрійку в своєму обліковому записі FreeSewing +comparePattern: Порівняти викрійку +showPattern: Показати викрійку +comparePattern-txt: Порівняйте свою викрійку зі стандартизованими розмірами для того, щоб побачити можливі проблеми моделювання +recreatePattern: Відтворити викрійку +recreatePattern-txt: Оберіть іншу людину та відтворіть цю викрійку для неї +editOwnPatternsOnly: Ви можете коригувати лише свої викрійки +editOwnPatternsOnly-txt: Ви не можете скоригувати цю викрійку, бо вона не Ваша. Але Ви можете використувати її як базу для створення власної викрійки. +updateNotes-txt: Оновлюйте нотатки до Ваших викрійок +franceWarning: До уваги користувачів з Франції +franceWarning-txt: Декілька французьких провайдерів електронної пошти — включаючи free.fr, laposte.net, orange.fr та sfr.fr — відомі регулярним блокуванням наших електронних листів. +emailNotReceived: Якщо Ви не отримаєте лист для активації, будь ласка, зв'яжіться з нами, щоб ми могли Вам допомогти. +error: Помилка +info: Інформація +warning: Увага +debug: Налагодження +unsubscribe: Відписатися +slogan-come: Приходьте за викрійками +slogan-stay: Залишайтеся заради спільноти +lightTheme: Світла тема +darkTheme: Темна тема +hax0rTheme: Тема Hax0r +lgbtqTheme: Тема ЛГБТК +transTheme: Транс тема diff --git a/packages/i18n/src/locales/uk/cfp.yaml b/packages/i18n/src/locales/uk/cfp.yaml new file mode 100644 index 00000000000..f9aee0501d7 --- /dev/null +++ b/packages/i18n/src/locales/uk/cfp.yaml @@ -0,0 +1,33 @@ +--- +author: Автор +githubRepo: Репозиторій GitHub +packageManager: Менеджер пакунків +patternName: Назва викрійки +patternType: Тип викрійки +patternCreated: Ваш каркас викрійки створено у +runTheseCommands: Щоб розпочати, запустіть цю команду +startRollup: У одному терміналі запустіть ролап у режимі перегляду +startWebpack: "Це відкриє папку \"приклад\" та запустить девелопмент." +devDocsAvailableAt: Документація для розробників доступна за адресою +talkToUs: Для запитань, відгуків чи пропозицій, приєднуйтесь до нашого серверу в Discord +draftYourPattern: Створіть Вашу викрійку +testYourPattern: Протестувати Вашу викрійку +draftThing: 'Створити {thing}' +testThing: 'Протестувати {thing}' +renderInBrowser: Натисніть нижче, щоб відобразити Вашу викрійку у браузері. +weWillReRender: Коли Ви виконаєте зміни, ми перезавантажимо зображення для Вас. +youCan: Ви можете +enterMeasurements: Ввести вимірювання вручну +preloadMeasurements: Завантажити набір мірок +size: Розмір +noRequiredMeasurements: Ця викрійка не потребує замірів +howtoAddMeasurements: Щоб додати бажані мірки, додайте їх у секцію заміри у файлі конфігурації викрійки. +seeDocsAt: Документація по цій темі доступна за адресою +clearDesignMode: Очистити режим дизайну +designMode: Режим дизайну +exportMode: Режим експорту +thingIsEnabled: '{thing} увімкнено' +thingIsDisabled: '{thing} вимкнено' +turnOn: Увімкнути +turnOff: Вимкнути +validNameWarning: "Будь ласка, оберіть іншу назву, бо дана назва може призвести до проблем.\nМи (повторно) використовуємо назву викрійки як NPM назву пакету.\nІмена пакунків повинні бути в нижньому регістрі та не можуть містити спеціальних символів.\nБудь ласка, назвіть викрійку згідно правил, наприклад:" diff --git a/packages/i18n/src/locales/uk/components/common.yaml b/packages/i18n/src/locales/uk/components/common.yaml new file mode 100644 index 00000000000..d06f8332fea --- /dev/null +++ b/packages/i18n/src/locales/uk/components/common.yaml @@ -0,0 +1,14 @@ +--- +account: Обліковий запис +blog: Блог +commumity: Спільнота +designs: Дизайни +docs: Документація +patternInstructions: Інструкції до викрійок +patternOptions: Налаштування викрійок +requiredMeasurements: Необхідні вимірювання +showcase: Готові проєкти +sloganCome: Приходьте за викрійками +sloganStay: Залишайтеся заради спільноти +support: Підтримка + diff --git a/packages/i18n/src/locales/uk/components/homepage.yaml b/packages/i18n/src/locales/uk/components/homepage.yaml new file mode 100644 index 00000000000..f3f0ca0f931 --- /dev/null +++ b/packages/i18n/src/locales/uk/components/homepage.yaml @@ -0,0 +1,2 @@ +--- +scrollDownToLearnMore: Прокрутіть вниз, щоб дізнатися більше про FreeSewing і безкоштовно скористатися його функціями diff --git a/packages/i18n/src/locales/uk/components/ograph.yaml b/packages/i18n/src/locales/uk/components/ograph.yaml new file mode 100644 index 00000000000..0d061e2a1ad --- /dev/null +++ b/packages/i18n/src/locales/uk/components/ograph.yaml @@ -0,0 +1,6 @@ +--- +orgTitle: Ласкаво просимо до FreeSewing.org +devTitle: Ласкаво просимо до FreeSewing.dev +labTitle: Ласкаво просимо до lab.FreeSewing.lab +devDescription: Документація та навчальні матеріали для розробників FreeSewing та учасників. А також наш блог розробників + diff --git a/packages/i18n/src/locales/uk/components/patrons.yaml b/packages/i18n/src/locales/uk/components/patrons.yaml new file mode 100644 index 00000000000..8fc140c705c --- /dev/null +++ b/packages/i18n/src/locales/uk/components/patrons.yaml @@ -0,0 +1,6 @@ +--- +becomeAPatron: Стати патроном +supportFreesewing: Підтримати FreeSewing +patronLead: FreeSewing існує завдяки добровільній моделі підписки +patronPitch: Якщо Ви думаєте, що ми робимо цінну роботу, і якщо Ви можете відшкодувати кілька монет щомісяця без труднощів, будь ласка, підтримайте нашу роботу + diff --git a/packages/i18n/src/locales/uk/components/posts.yaml b/packages/i18n/src/locales/uk/components/posts.yaml new file mode 100644 index 00000000000..9680d80da2c --- /dev/null +++ b/packages/i18n/src/locales/uk/components/posts.yaml @@ -0,0 +1,3 @@ +--- +xMadeThis: "{x} є автором цієї роботи" +xWroteThis: "{x} є автором цього тексту" diff --git a/packages/i18n/src/locales/uk/components/themes.yaml b/packages/i18n/src/locales/uk/components/themes.yaml new file mode 100644 index 00000000000..2b726ac82bf --- /dev/null +++ b/packages/i18n/src/locales/uk/components/themes.yaml @@ -0,0 +1,6 @@ +--- +lightTheme: Світла тема +darkTheme: Темна тема +hax0rTheme: Тема Hax0r +lgbtqTheme: Тема ЛГБТК +transTheme: Тема Транс diff --git a/packages/i18n/src/locales/uk/components/workbench.yaml b/packages/i18n/src/locales/uk/components/workbench.yaml new file mode 100644 index 00000000000..914a7c1bf89 --- /dev/null +++ b/packages/i18n/src/locales/uk/components/workbench.yaml @@ -0,0 +1,8 @@ +--- +designOptions: Варіанти дизайну +forPrinting: Для друку +forCutting: Для вирізання +layoutThing: 'Розташувати {thing}' +pageSize: Розмір сторінки +startBySelectingAThing: 'Почніть з вибору {thing}' +testThing: 'Протестувати {thing}' diff --git a/packages/i18n/src/locales/uk/cty.yaml b/packages/i18n/src/locales/uk/cty.yaml new file mode 100644 index 00000000000..cf71d775ed9 --- /dev/null +++ b/packages/i18n/src/locales/uk/cty.yaml @@ -0,0 +1,20 @@ +--- +wafsHashtag: WeAreFreeSewing +weAreACommunityOfMakers: Ми - спільнота ремісників +weProvideMtmSewingPatterns: Ми надаємо викрійки, адаптовані під надані Вами заміри +isAPatron: є патроном +contributesWith: співпрацює з +communityBuilding: Створення спільноти +development: Розробка +patternTesting: Тестування викрійок +patternDesign: Дизайн викрійок +support: Підтримка +translation: Переклад +writing: Письмо +whereToFindUs: Де нас знайти +whoWeAre: Про нас +community: Спільнота +team: Команда +teams: Команди +contributors: Помічники +calls: Дзвінки помічників diff --git a/packages/i18n/src/locales/uk/docs.yaml b/packages/i18n/src/locales/uk/docs.yaml new file mode 100644 index 00000000000..3b05a2ab676 --- /dev/null +++ b/packages/i18n/src/locales/uk/docs.yaml @@ -0,0 +1,3 @@ +--- +thingIsDeprecated: "{thing} є застарілим" +weRecommendThingInstead: "Ми рекомендуємо {thing} замість цього" diff --git a/packages/i18n/src/locales/uk/email.yaml b/packages/i18n/src/locales/uk/email.yaml new file mode 100644 index 00000000000..5904fdad3f9 --- /dev/null +++ b/packages/i18n/src/locales/uk/email.yaml @@ -0,0 +1,34 @@ +--- +chatWithUs: 'Напишіть нам' +emailchangeActionText: 'Підтвердіть нову адресу електронної пошти' +emailchangeCopy1: 'Ви запросили зміну адреси електронної пошти, прив''язану до вашого облікового запису на freesewing.org.

Перед тим як це зробити, необхідно підтвердити нову адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:' +emailchangeHeaderOpeningLine: 'Просто перевіряємо, що ми зможемо зв''язатися з Вами, коли це буде необхідно' +emailchangeHiddenIntro: "Час підтвердити нову адресу електронної пошти" +emailchangeSubject: 'Будь ласка, підтвердіть нову адресу електронної пошти' +emailchangeTitle: 'Будь ласка, підтвердіть нову адресу електронної пошти' +emailchangeWhy: 'Ви отримали цей лист, оскільки змінили адресу електронної пошти, прив''язану до вашого облікового запису на freesewing.org' +footerCredits: 'Зроблено Йостом та учасниками проєкту завдяки фінансовій допомозі наших патронів ❤️ ' +footerSlogan: 'FreeSewing є платформою з відкритим кодом для створення швейних викрійок, які адаптуються під виміри користувача' +goodbyeCopy1: "Якщо Ви хочете поділитися, чому Ви йдете, можете відповісти на це повідомлення.
З нашого боку, ми більше не турбуватимемо Вас." +goodbyeHeaderOpeningLine: 'Просто щоб Ви знали – Ви завжди можете повернутися' +goodbyeHiddenIntro: 'Дякуємо за ще один шанс для FreeSewing' +goodbyeSubject: 'До побачення 👋' +goodbyeTitle: 'Дякуємо за ще один шанс для FreeSewing' +goodbyeWhy: 'Ви отримали цей лист, як останнє прощання після видалення вашого облікового запису на freesewing.org' +joostFromFreesewing: 'Йост з FreeSewing' +passwordresetActionText: 'Повторно отримати доступ до вашого облікового запису' +passwordresetCopy1: 'Ви забули пароль для облікового запису на freesewing.org.

Натисніть на посилання нижче, щоб змінити пароль:' +passwordresetHeaderOpeningLine: "Не хвилюйтеся, це стається з нами усіма" +passwordresetHiddenIntro: 'Повторно отримати доступ до вашого облікового запису' +passwordresetSubject: 'Повторно отримати доступ до вашого облікового запису на freesewing.org' +passwordresetTitle: 'Змінити пароль і повторно отримати доступ до вашого облікового запису' +passwordresetWhy: 'Ви отримали цей електронний лист, тому що ви запросили зміну паролю на сайті freesewing.org' +questionsJustReply: "Якщо у вас є запитання, просто надішліть відповідь на цей E-mail. Ми завжди раді допомогти 🙂" +signature: 'З любов''ю,' +signupActionText: 'Підтвердіть адресу електронної пошти' +signupCopy1: 'Дякуємо за реєстрацію на freesewing.org.

Перед початком роботи потрібно підтвердити Вашу адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:' +signupHeaderOpeningLine: "Ми дуже раді, що Ви приєдналися до спільноти FreeSewing." +signupHiddenIntro: "Час підтвердити нову адресу електронної пошти" +signupSubject: 'Ласкаво просимо на freesewing.org' +signupTitle: 'Ласкаво просимо' +signupWhy: 'Ви отримали цей електронний лист, тому що ви щойно зареєструвалися на сайті freesewing.org' diff --git a/packages/i18n/src/locales/uk/errors.yaml b/packages/i18n/src/locales/uk/errors.yaml new file mode 100644 index 00000000000..e7681a6cf24 --- /dev/null +++ b/packages/i18n/src/locales/uk/errors.yaml @@ -0,0 +1,11 @@ +--- +404: Сторінку не знайдено +confirmationNotFound: Якщо Ви перейшли на дану сторінку через посилання в електронному листі, ми будемо вдячні, якщо Ви повідомите нам про цю проблему. +emailExists: У нас вже є користувач з цією адресою електронної пошти. Можливо, Ви хочете авторизуватися? +networkError: Помилка сервера або мережі +notAValidImageFormat: Неприпустимий формат зображення +requestFailedWithStatusCode400: Не вдалося виконати запит +requestFailedWithStatusCode401: Помилка аутентифікації +requestFailedWithStatusCode403: Заборонено +requestFailedWithStatusCode500: Виникла неочікувана проблема. Будь ласка, повідомте про це. +something: Щось пішло не так diff --git a/packages/i18n/src/locales/uk/filter.yml b/packages/i18n/src/locales/uk/filter.yml new file mode 100644 index 00000000000..6f3429d68cb --- /dev/null +++ b/packages/i18n/src/locales/uk/filter.yml @@ -0,0 +1,20 @@ +--- +filter: Фільтр +department: Категорія +type: Тип +tags: Теги +code: Код +design: Дизайн +difficulty: Складність +resetFilter: Скинути фільтри +accessories: Аксесуари +block: Основа +pattern: Викрійка +byPattern: Фільтрувати за викрійками +underwear: Спідня білизна +top: Верх +tops: Верх +bottom: Низ +bottoms: Низ +coats: Верхній одяг +swimwear: Купальні костюми diff --git a/packages/i18n/src/locales/uk/gdpr.yaml b/packages/i18n/src/locales/uk/gdpr.yaml new file mode 100644 index 00000000000..5d39df5bf8c --- /dev/null +++ b/packages/i18n/src/locales/uk/gdpr.yaml @@ -0,0 +1,39 @@ +--- +compliant: Freesewing.org поважає вашу конфіденційність і ваші права. Ми застосовуємо Загальний регламент про захист даних (GDPR) Європейського Союзу (ЄС). +consent: Згода +consentForModelData: Дозвіл на дані моделі +consentForProfileData: Дозвіл на дані облікового запису +consentGiven: Згода отримана +consentNotGiven: Згода не отримана +consentWhyAnswer: Згідно з GDPR, обробка ваших персональних даних вимагає Вашої згоди - іншими словами, Ваш дозвіл. +createMyAccount: Створити обліковий запис +furtherReading: Подальше вивчення +modelQuestion: Чи даєте Ви згоду на обробку даних моделі? +modelWarning: Анулювання даної згоди зробить неможливим використання даних замірів моделі. Це також анулює функціонал вебсайту, який залежить від даної інформації. +modelWhatAnswer: Заміри та налаштування молочних залоз кожної моделі. +modelWhatAnswerOptional: 'За навності: Зображення моделі та ім''я моделі.' +modelWhatQuestion: Що таке дані моделі? +modelWhyAnswer: 'Для розробки викрійок, адаптованих під заміри спеціально вимірунам необхідні виміри тіла.' +noConsentNoAccount: Без цієї згоди ми не можемо створити Ваш обліковий запис +noConsentNoPatterns: Без цієї згоди, Ви не можете створити будь-які викрійки +noIDoNot: 'Ні, не даю' +openDataInfo: Ці дані використовуються для вивчення і розуміння людського тіла в усіх його формах. Це дозволяє нам покращити наші викрійки та створювати більш підходящий до тіла одяг. Незважаючи на те, що ці дані є анонімними, Ви маєте право не давати згоду на їх обробку. +openDataQuestion: Поділитися замірами анонімно як відкритими даними +profileQuestion: Чи даєте Ви згоду на обробку даних Вашого облікового запису? +profileShareAnswer: 'Ні, ніколи.' +profileTimingAnswer: '12 місяців після останнього входу в систему, або до тих пір, поки Ви не видалите Ваш обліковий запис або скасуєте дану згоду.' +profileWarning: Відкликання згоди видалить усі Ваші данні. Це має той же ефект, що і видалення облікового запису. +profileWhatAnswerOptional: 'За наявності: зображення облікового запису, біоі соціальні мережі' +profileWhatAnswer: 'Ваша електронна адреса, ім''я користувачаі пароль.' +profileWhatQuestion: Що таке дані облікового запису? +profileWhyAnswer: 'Щоб автентифікувати Вас, зв''язатися з Вами коли це потрібно та задля покращення нашої спільноти.' +readMore: Для отримання додаткової інформації, будь ласка, прочитайте наше повідомлення про конфіденційність. +readRights: Для отримання додаткової інформації, будь ласка, прочитайте про Ваші права. +revokeConsent: Відкликати згоду +shareQuestion: Чи передаємо ми її іншим? +timingQuestion: Скільки ми її зберігаємо? +whatYouNeedToKnow: Що вам потрібно знати +whyQuestion: Чому нам це потрібно? +yesIDoObject: 'Ні, я проти' +yesIDo: 'Так, я даю згоду' +openData: 'Примітка: FreeSewing публікує анонімні заміри тіла як відкриті дані для наукових досліджень. Ви маєте право відмовитися від цього' diff --git a/packages/i18n/src/locales/uk/i18n.yaml b/packages/i18n/src/locales/uk/i18n.yaml new file mode 100644 index 00000000000..9b1ffbadbcd --- /dev/null +++ b/packages/i18n/src/locales/uk/i18n.yaml @@ -0,0 +1,6 @@ +--- +de: Німецька +en: Англійська +es: Іспанська +fr: Французька +nl: Нідерландська diff --git a/packages/i18n/src/locales/uk/intro.yaml b/packages/i18n/src/locales/uk/intro.yaml new file mode 100644 index 00000000000..d922cab5ea9 --- /dev/null +++ b/packages/i18n/src/locales/uk/intro.yaml @@ -0,0 +1,12 @@ +--- +txt-blog: Новини, оновлення та анонси від команди FreeSewing +txt-community: 'Проєкт існує на добровільних засадах. FreeSewing не прив''язаний до жодних комерційних засад та компаній.' +txt-different: Чому ми особливі +txt-draft: "Оберіть одну з викрійок, модель та налаштування. Ми зробимо решту." +txt-how: Як це працює +txt-join: Приєднайтеся до тисяч інших користувачів та створіть безкоштовний акаунт на freesewing.org. +txt-model: Всі наші викрійки адаптуються під задані виміри. Тому перше, що варто зробити – піти взяти сантиметрову стрічку. +txt-newHere: "Якщо ви тут вперше – найкраще місце для початку є наше демо:" +txt-opensource: 'Наша платформа, наші викрійки і навіть наш вебсайт. Весь наш код доступний на GitHub. Пулл реквести вітаються!' +txt-patrons: FreeSewing існує завдяки фінансовій підтримці наших Патронів. Прокрутіть вниз, щоб дізнатися про нашу модель підписки. +txt-showcase: Завершені проекти від спільноти FreeSewing diff --git a/packages/i18n/src/locales/uk/jargon.yml b/packages/i18n/src/locales/uk/jargon.yml new file mode 100644 index 00000000000..21b1cb3912e --- /dev/null +++ b/packages/i18n/src/locales/uk/jargon.yml @@ -0,0 +1,85 @@ +--- +basting: + term: зметування + description: "Дивіться Зметування у документація до шиття" +coverlock: + term: каверлок + description: "Дивіться Каверлок у Документація до шиття" +cutting: + term: вирізання + description: "Дивіться Вирізання у Документація до шиття" +darts: + term: виточки + description: "Дивіться Виточки уДокументація до шиття" +doubleWeltPockets: + term: кишеня з подвійною листочкою + description: "Дивіться Кишеня з подвійною листочкою уДокументація до шиття" +ease: + term: свобода облягання + description: "Дивіться Свобода облягання у Документація до шиття" +edgestitch: + term: шов по краю + description: "Дивіться Шов по краю у Документація до шиття" +fabricGrain: + term: нитка-основа тканини + description: "Дивіться Нитка основа тканини у Документація до шиття" +goodSidesTogether: + term: лицьові сторони одна до одної + description: "Дивіться Лицьові сторони одна до одної у Документація до шиття" +onTheFold: + term: на згині + description: "Дивіться На згині у Документація до шиття" +hemming: + term: підшивання краю + description: "Дивіться Підшивання краю у Документація до шиття" +jersey: + term: джерсі + description: "Дивіться Джерсі у Документація до шиття" +knitBinding: + term: трикотажна бейка + description: "Дивіться Трикотажна бейка у Документація до шиття" +knitFabric: + term: трикотаж + description: "Дивіться Трикотаж у Документація до шиття" +pinning: + term: зметування булавками + description: "Дивіться Зметування булавками у Документація до шиття" +rayon: + term: віскоза + description: "Дивіться Віскоза уДокументація до шиття" +sa: + term: припуск на шов + description: "Дивіться Припуск на шов у Документація до шиття" +serger: + term: машина-оверлок + description: "Дивіться Оверлок у Документація до шиття" +slipstitch: + term: потайний шов + description: "Дивіться Потайний шов у Документація до шиття" +topstitching: + term: оздоблювальний шов + description: "Дивіться Оздоблювальний шов у Документація до шиття" +trimming: + term: підрізання припусків на шов + description: "Дивіться Підрізання припусків на шов у Документація до шиття" +twinNeedle: + term: подвійна голка + description: "Дивіться Подвійна голка у Документація до шиття" +zigZag: + term: шов "Зіг-заг" + description: "Дивіться шов \"Зіг-заг\" уДокументація до пошиття" +freesewing: + term: freesewing + description: 'FreeSewing є платформою з відкритим кодом для створення швейних викрійок, які адаптуються під виміри користувача' +patternOptions: + term: налаштування викрійок + description: 'Налаштування викрійки дозволяє Вам змінити дизайн викрійки за Вашими побажаннями' +draftSettings: + term: налаштування чернетки + description: 'налаштування чернетки надає Вам контроль над генерацією викрійки' +patrons: + term: патрони + description: 'Патрони фінансово підтримують FreeSewing. Вони є лояльними прихильниками, які забезпечують стійке майбутнє для freesewing.org, нашого коду, викрійок та нашої спільноти.' +msf: + term: msf + description: "Médecins Sans Frontières/Лікарі без кордонів – Більше на msf.org" diff --git a/packages/i18n/src/locales/uk/lab.yaml b/packages/i18n/src/locales/uk/lab.yaml new file mode 100644 index 00000000000..a472b5ac43e --- /dev/null +++ b/packages/i18n/src/locales/uk/lab.yaml @@ -0,0 +1,6 @@ +--- +slogan: Лабораторія FreeSewing забезпечує +slogan1: Всі наші дизайни викрійок +slogan2: Нова & стара версія +slogan3: Bleeding edge code +slogan4: Не запущені дизайни diff --git a/packages/i18n/src/locales/uk/measurements.yaml b/packages/i18n/src/locales/uk/measurements.yaml new file mode 100644 index 00000000000..c2f2c64e929 --- /dev/null +++ b/packages/i18n/src/locales/uk/measurements.yaml @@ -0,0 +1,39 @@ +--- +ankle: Обхват щиколотки +biceps: Обхват біцепсів +bustFront: Передній напівобхват грудей +bustPointToUnderbust: Центр грудей до підгруддя +bustSpan: Центр грудей +chest: Обхват грудей +crossSeam: Посадка +crossSeamFront: Посадка спереду +head: Обхват голови +heel: Обхват підйому +highBustFront: Напівобхват над грудьми +highBust: Обхват над грудьми +hips: Обхват тазу +hpsToBust: Від плеча до грудей +hpsToWaistBack: Від плеча до талії ззаду +hpsToWaistFront: Від плеча до талії спереду +inseam: Внутрішній шов +knee: Обхват коліна +neck: Обхват шиї +seat: Обхват стегон +seatBack: Напівобхват стегон +crotchDepth: Висота сидіння +shoulderSlope: Нахил плеча +shoulderToElbow: Від плеча до ліктя +shoulderToShoulder: Ширина плечей +shoulderToWrist: Від плеча до зап'ястя +underbust: Підгруддя +upperLeg: Обхват верху ноги +waist: Обхват талії +waistBack: Ширина талії ззаду +waistToArmhole: Від талії до пройми +waistToFloor: Від талії до підлоги +waistToHips: Талія до кісточки таза +waistToKnee: Талія до коліна +waistToSeat: Від талії до стегон +waistToUnderbust: Від талії до підгруддя +waistToUpperLeg: Від талії до початку ноги +wrist: Обхват зап'ясть diff --git a/packages/i18n/src/locales/uk/optiongroups.yaml b/packages/i18n/src/locales/uk/optiongroups.yaml new file mode 100644 index 00000000000..d4fc1c85335 --- /dev/null +++ b/packages/i18n/src/locales/uk/optiongroups.yaml @@ -0,0 +1,25 @@ +--- +advanced: Додатково +armhole: Пройма +closure: Закриття +collar: Комір +construction: Конструкція +cuffs: Манжети +darts: Виточки +elastic: Резинка +fit: За розміром +pockets: Кишені +preferences: Уподобання +sleevecap: Окат рукава +sleeves: Рукава +style: Стиль +backPockets: Задні кишені +frontPockets: Передні кишені +waistband: Резинка на талії +fly: Гульфик +bellaDarts: Виточки Белла +bellaArmhole: Пройма Белла +bellaAdvanced: Додатково Белла +clavi: Клав +type: Тип +size: Розмір diff --git a/packages/i18n/src/locales/uk/options/aaron.yml b/packages/i18n/src/locales/uk/options/aaron.yml new file mode 100644 index 00000000000..e9071771f11 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/aaron.yml @@ -0,0 +1,25 @@ +--- +armholeDrop: + title: Спуск пройми + description: Опускає пройму на обрану відстань. Негативний показик підіймає пройму. +backlineBend: + title: Задня частина пройми + description: Визначає форму/криву задньої частини пройми. +hipsEase: + title: Свобода облягяння на животі + description: Відсоток свободи облягання на животі. +necklineBend: + title: Форма горловини + description: Визначає форму/криву горловини спереду. +necklineDrop: + title: Спуск горловини + description: Процент відкриття шиї спереду. +shoulderStrapPlacement: + title: Розташування лямки + description: Визначає розташування лямки ближче до шиї (нижчі номери) або ближче до плеча (вищі номери). +shoulderStrapWidth: + title: Ширина лямки + description: Визначає ширину лямок. +stretchFactor: + description: Визначає горизонтальне зменшення свободи облягання. + title: Розтяжність diff --git a/packages/i18n/src/locales/uk/options/albert.yml b/packages/i18n/src/locales/uk/options/albert.yml new file mode 100644 index 00000000000..f8b5dedae55 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/albert.yml @@ -0,0 +1,20 @@ +--- +backOpening: + title: Відкриття спини + description: Контролює відкриття на задній частині фартука +chestDepth: + title: Довжина лямки + description: Контролює довжину лямки +lengthBonus: + title: Додаткова довжина + description: Контролює довжину фартука +bibLength: + title: Довжина нагрудної пройми + description: Контролює довжину нагрудної пройми +bibWidth: + title: Ширина нагрудної пройми + description: Контролює ширину нагрудної пройми +strapWidth: + title: Ширина лямки + description: Контролює ширину лямки + diff --git a/packages/i18n/src/locales/uk/options/bee.yml b/packages/i18n/src/locales/uk/options/bee.yml new file mode 100644 index 00000000000..4068a7cbf1a --- /dev/null +++ b/packages/i18n/src/locales/uk/options/bee.yml @@ -0,0 +1,82 @@ +--- +chestEase: + title: Свобода облягання на грудях + description: Контролює свободу облягання грудей у викрійці-основі Белла, на якій основана Бі +waistEase: + title: Свобода облягання на талії + description: Контролює свободу облягання талії у викрійці-основі Белла, на якій основана Бі +bustSpanEase: + title: Свобода облягання центру грудей + description: Контролює свободу облягання центру грудей у викрійці-основі Белла, на якій основана Бі +topDepth: + title: Глибина верху + description: Контролює, як високо чашка піднімається наверх +bottomCupDepth: + title: Глибина низу + description: Контролює, як низько чашка опускається вниз +sideDepth: + title: Глибина боку + description: Контролює, як далеко чашка збільшується у сторону +sideCurve: + title: Дуга лінії боку + description: Контролює дугу сторони чашки +frontCurve: + title: Дуга внутрішньої лінії + description: Контролює дугу внутрішньої сторони чашки +bellaGuide: + title: Показати Беллу + description: Показує контур викрійки-основи Белла, на якій основана Бі +ties: + title: Зав'язки + description: Чи включати до викрійки зав'язки, так чи ні +bandTieWidth: + title: Ширина зав'язок на спині + description: Контролює ширину зав'язок на спині +bandTieLength: + title: Довжина зав'язок на спині + description: Контролює довжину зав'язок на спині +bandTieEnds: + title: Кінчики зав'язок на спині + description: Створює прямі або загострені кінчики на зав'язках +bandTieColours: + title: Кольори зав'язок на спині + description: Створює монохромні або двоколірні зав'язки на спині +neckTieWidth: + title: Ширина зав'язок на шиї + description: Контролює ширину зав'язок навколо шиї +neckTieLength: + title: Довжина зав'язок навколо шиї + description: Контролює довжину зав'язок навколо шиї +neckTieEnds: + title: Кінчики зав'язок навколо шиї + description: Створює прямі або гострі кінчики на зав'язках навколо шиї +neckTieColours: + title: Колір зав'язок навколо шиї + description: Створює монохромні або двоколірні зав'язки навколо шиї +crossBackTies: + title: Перехресні зав'язки + description: Чи включати до викрійки перехресні зав'язки на спині +bandLength: + title: Довжина резинки (перехресні зав'язки) + description: Контролює довжину резинки навколо спини для версії Бі з перехресними зав'язками +backDartHeight: + title: Висота виточки на спині (Белла) + description: Контролює висоту виточки на спині у викрійці-основі Белла, на якій основана Бі +armholeDepth: + title: Глибина пройми (Белла) + description: Контролює глибину пройми у викрійці-основі Белла, на якій основана Бі +frontArmholePitchDepth: + title: Передній виступ пройми (Белла) + description: Контролює передній виступ пройми у викрійці-основі Белла, на якій основана Бі +frontShoulderWidth: + title: Передня ширина плеча (Белла) + description: Контролює передню ширину плеча у викрійці-основі Белла, на якій основана Бі +fullChestEaseReduction: + title: Зменшення грудної частини (Белла) + description: Контролює зменшення грудної частини у викрійці-основі Белла, на якій основана Бі +highBustWidth: + title: Ширина над грудьми (Белла) + description: Контролює ширину над грудьми у викрійці-основі Белла, на якій основана Бі +shoulderToShoulderEase: + title: Свобода облягання ширини плечей (Белла) + description: Контролює свободу облягання ширини плечей у викрійці-основі Белла, на якій основана Бі diff --git a/packages/i18n/src/locales/uk/options/bella.yml b/packages/i18n/src/locales/uk/options/bella.yml new file mode 100644 index 00000000000..c606ff7e25f --- /dev/null +++ b/packages/i18n/src/locales/uk/options/bella.yml @@ -0,0 +1,58 @@ +--- +chestEase: + title: Свобода облягання на грудях + description: Контролює свободу облягання на найбільшій частині грудей +waistEase: + title: Свобода облягання на талії + description: Контролює свободу облягання на талії +bustSpanEase: + title: Свобода облягання центру грудей + description: Контролює горизонтальну свободу облягання на центрі грудей. +shoulderToShoulderEase: + title: Свобода облягання ширини плечей + description: Контролює свободу облягання ширини плечей. Початково налаштовано на -5%, бо Белла розроблена як викрійка-основа, що застосовується у швейній індустрії. +fullChestEaseReduction: + title: Зменшення свободи облягання на грудях + description: Керує незалежним від інших параметрів зменшенням свободи облягання на грудях для (більш) тугої посадки +backDartHeight: + title: Висота спинної виточки + description: Керує висотою виточки на спині (більше значення зменшує висоту виточки) +bustDartLength: + title: Довжина грудної виточки + description: Керує загальною довжиною виточки на грудях +waistDartLength: + title: Довжина поясної виточки + description: Керує загальною довжиною виточки на талії +bustDartCurve: + title: Заокруглення грудної виточки + description: Керує наскільки кривими є лінії виточки на грудях +armholeDepth: + title: Глибина пройми рукава + description: Керує глибиною (шириною) пройми рукава +backArmholeSlant: + title: Нахил пройми рукава на спині + description: Трохи змінює нахил пройми рукава на спині відповідно до точки збігу пройми +frontArmholeCurvature: + title: Заокруглення пройми рукава спереду + description: Керує заокругленням пройми рукава спереду +backArmholeCurvature: + title: Заокруглення пройми рукава ззаду + description: Керує заокругленням пройми рукава ззаду +frontArmholePitchDepth: + title: Висота передньої точки збігу пройми + description: Налаштовує розташування передньої точки збігу по вертикалі +backArmholePitchDepth: + title: Висота задньої точки збігу пройми + description: Налаштовує розташування задньої точки збігу по вертикалі +backNeckCutout: + title: Глибина горловини ззаду + description: Керує глибиною горловини на задньому полотнищі +backHemSlope: + title: Нахил заднього краю + description: Керує нахилом краю на спині +frontShoulderWidth: + title: Ширина плечей спереду + description: Контролює ширину плечей переднього полотнища відповідно до заднього +highBustWidth: + title: Ширина полички + description: Дозволяє керувати шириною полички на ліфі diff --git a/packages/i18n/src/locales/uk/options/benjamin.yml b/packages/i18n/src/locales/uk/options/benjamin.yml new file mode 100644 index 00000000000..95de15978e7 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/benjamin.yml @@ -0,0 +1,28 @@ +--- +adjustmentRibbon: + title: Рихтувальна тасьма + description: Додавати чи не додавати рихтувальну тасьму в елементи викрійки +bandLength: + title: Довжина пояска + description: Загальна довжина пояска +tipWidth: + title: Ширина країв + description: Ширина чи висота країв бантика +knotWidth: + title: Ширина вузлика + description: Ширина перемички (місця зав'язування краватки) +bowLength: + title: Довжина бантика + description: Довжина бантика (у зав'язаному стані) +bowStyle: + title: Форма бантика + description: Загальна форма бантика +endStyle: + title: Форма стрічок + description: Форма стрічок під бантиком +collarEase: + title: Свобода коміра + description: Свобода облягання коміра навколо шиї +ribbonWidth: + title: Ширина тасьми + description: Ширина тасьми (стрічки) diff --git a/packages/i18n/src/locales/uk/options/bent.yml b/packages/i18n/src/locales/uk/options/bent.yml new file mode 100644 index 00000000000..3569317b092 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/bent.yml @@ -0,0 +1,8 @@ +--- +sleeveBend: + title: Згин рукава + description: Керує кутом згину рукава в лікті. +sleevecapHeight: + title: Висота окату + description: Керує висотою окату рукава. + diff --git a/packages/i18n/src/locales/uk/options/bob.yml b/packages/i18n/src/locales/uk/options/bob.yml new file mode 100644 index 00000000000..fd100ed32d3 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/bob.yml @@ -0,0 +1,12 @@ +neckRatio: + title: Шийний зріз + description: Керує діаметром шийного зрізу відповідно до розміру слинявчика +widthRatio: + title: Ширина + description: Керує загальною шириною слинявчика +lengthRatio: + title: Довжина + description: Керує загальною довжиною слинявчика +headSize: + title: Розмір голови + description: Обхват голови, на який має налізати слинявчик diff --git a/packages/i18n/src/locales/uk/options/breanna.yml b/packages/i18n/src/locales/uk/options/breanna.yml new file mode 100644 index 00000000000..997b2dd4d73 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/breanna.yml @@ -0,0 +1,41 @@ +--- +shoulderDart: + title: Плечова виточка + description: Додавати чи не додавати виточку на плечі для заокруглення спини +shoulderDartSize: + title: Розмір плечової виточки + description: Ширина (розмір) плечової виточки +shoulderDartLength: + title: Довжина плечової виточки + description: Загальна довжина плечової виточки +waistDart: + title: Поясна виточка + description: Додавати чи не додавати виточки на талії для заокруглення спини +waistDartSize: + title: Розмір поясної виточки + description: Ширина (розмір) виточки на талії +waistDartLength: + title: Довжина поясної виточки + description: Загальна довжина виточки на талії +verticalEase: + title: Вертикальна свобода облягання + description: Керує свободою облягання, що розподіляється по довжині виробу +waistEase: + title: Свобода облягання на талії + description: Відсоток свободи облягання на талії +primaryBustDart: + title: Грудна виточка + description: Керує розташуванням виточки для формування ліфу +primaryBustDartLength: + title: Довжина грудної виточки + description: Загальна довжина виточки на грудях +secondaryBustDart: + title: Вторинна грудна виточка + description: За бажанням можна додати вторинну виточку на грудях для подальшого формування ліфу +secondaryBustDartLength: + title: Довжина вторинної грудної виточки + description: Загальна довжина вторинної виточки на грудях +primaryBustDartShaping: + title: Формування грудних виточок + description: Керує співвідношенням між головними та вторинними виточками на грудях + diff --git a/packages/i18n/src/locales/uk/options/brian.yml b/packages/i18n/src/locales/uk/options/brian.yml new file mode 100644 index 00000000000..ab13f033633 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/brian.yml @@ -0,0 +1,103 @@ +--- +acrossBackFactor: + title: Across back factor + description: Controls your across back width as a factor of your shoulder to shoulder measurement. +armholeDepthFactor: + title: Глибина пройми + description: Контролює глибину пройми. Вищі показники роблять глибшу пройму. +backNeckCutout: + title: Глибина горловини ззаду + description: Контролює глибину задньої частини горловини +bicepsEase: + title: Свобода облягання біцепсів + description: 'Контролює свободу облягання на верхній частині Вашої руки. Зверніть увагу, що коректне з''єднання рукава з проймою є більш пріорітетним для програми, аніж свобода облягання рукава.' +collarEase: + title: Свобода облягання коміра + description: Керує свободою облягання навколо шиї +chestEase: + title: Свобода облягання на грудях + description: Керує свободою облягання на грудях. +cuffEase: + title: Свобода облягання манжета + description: Керує свободою облягання на зап'ястях. +frontArmholeDeeper: + title: Front armhole extra cutout + description: How much do you want the front armhole to be cut out deeper than the back. +lengthBonus: + title: Додаткова довжина + description: Додає довжину до виробу. Негативне значення скорочує довжину виробу. +s3Collar: + title: 'Зсув плечевого шва зі сторони коміра' + description: Збільшіть цей показник, щоб змістити плечевий шов зі сторони коміру. Зменшення показника зміщує шов у зворотному напрямку. +s3Armhole: + title: 'Зсув плечевого шва зі сторони пройми' + description: Збільшіть цей показник, щоб змістити плечевий шов зі сторони пройми. Зменшення показника зміщує шов у зворотному напрямку. +shoulderEase: + title: Свобода облягання плеча + description: Керує свободою облягання на плечах. Цей показник збільшує відстань від плеча до плеча для додавання додаткових шарів тканини тощо. +shoulderSlopeReduction: + title: Зменшення нахилу плеча + description: Зменшує нахил плеча для додавання плечових підкладок. +sleeveLengthBonus: + title: Додаткова довжина рукава + description: Додає довжину до рукава. Негативне значення скорочує довжину рукава. +sleevecapEase: + title: Sleevecap ease + description: The amount by which the sleevecap seam is longer than the armhole seam. +sleevecapTopFactorX: + title: Sleevecap top X + description: Controls the horizontal location of the sleevecap top. +sleevecapTopFactorY: + title: Sleevecap top Y + description: Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap. +sleevecapBackFactorX: + title: Sleevecap back X + description: Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal) +sleevecapBackFactorY: + title: Sleevecap back Y + description: Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical) +sleevecapFrontFactorX: + title: Sleevecap front X + description: Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal) +sleevecapFrontFactorY: + title: Sleevecap front Y + description: Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical) +sleevecapQ1Offset: + title: Sleevecap Q1 offset + description: Controls the curvature of the sleevecap in the first quadrant (front armhole) +sleevecapQ2Offset: + title: Sleevecap Q2 offset + description: Controls the curvature of the sleevecap in the second quadrant (front shoulder) +sleevecapQ3Offset: + title: Sleevecap Q3 offset + description: Controls the curvature of the sleevecap in the third quadrant (back shoulder) +sleevecapQ4Offset: + title: Sleevecap Q4 offset + description: Controls the curvature of the sleevecap in the fourth quadrant (back armhole) +sleevecapQ1Spread1: + title: Sleevecap Q1 downward spread + description: Controls the spread of the sleevecap first quadrant curvature towards the armhole +sleevecapQ1Spread2: + title: Sleevecap Q1 upward spread + description: Controls the spread of the sleevecap first quadrant curvature towards the shoulder +sleevecapQ2Spread1: + title: Sleevecap Q2 downward spread + description: Controls the spread of the sleevecap second quadrant curvature towards the armhole +sleevecapQ2Spread2: + title: Sleevecap Q2 upward spread + description: Controls the spread of the sleevecap second quadrant curvature towards the shoulder +sleevecapQ3Spread1: + title: Sleevecap Q3 upward spread + description: Controls the spread of the sleevecap third quadrant curvature towards the shoulder +sleevecapQ3Spread2: + title: Sleevecap Q3 downward spread + description: Controls the spread of the sleevecap third quadrant curvature towards the armhole +sleevecapQ4Spread1: + title: Sleevecap Q4 upward spread + description: Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder +sleevecapQ4Spread2: + title: Sleevecap Q4 downward spread + description: Controls the spread of the sleevecap fourth quadrant curvature towards the armhole +sleeveWidthGuarantee: + title: Sleeve width guarantee + description: Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole. diff --git a/packages/i18n/src/locales/uk/options/bruce.yml b/packages/i18n/src/locales/uk/options/bruce.yml new file mode 100644 index 00000000000..8fe9ae7c69f --- /dev/null +++ b/packages/i18n/src/locales/uk/options/bruce.yml @@ -0,0 +1,19 @@ +--- +bulge: + title: Пахова вставка + description: Керує кутом пахової вставки для регулювання простору в передній мішковині. +legBonus: + title: Додаткова довжина + description: Збільшує загальну довжину по нозі. +rise: + title: Посадка + description: Керує висотою посадки на талії. Негативний показник зробить посадку нижчою. +stretch: + title: Еластичність + description: Керує негативною свободою облягання. +legStretch: + title: Обхват ноги + description: 'Для найкращого результату рекомендується дещо туга посадка на нозі — ніяких пройм.' +backRise: + title: Посадка ззаду + description: Керує відсотком висоти посадки ззаду. diff --git a/packages/i18n/src/locales/uk/options/carlita.yml b/packages/i18n/src/locales/uk/options/carlita.yml new file mode 100644 index 00000000000..dd0888544be --- /dev/null +++ b/packages/i18n/src/locales/uk/options/carlita.yml @@ -0,0 +1,4 @@ +--- +contour: + title: Contour + description: Controls how sharply the princess seam is contoured. diff --git a/packages/i18n/src/locales/uk/options/carlton.yml b/packages/i18n/src/locales/uk/options/carlton.yml new file mode 100644 index 00000000000..fd71c4cf758 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/carlton.yml @@ -0,0 +1,31 @@ +--- +seatEase: + title: Seat ease + description: Amount of ease around your bum +pocketPlacementHorizontal: + title: Horizontal pocket placement + description: The (horizontal) location of the pockets +pocketPlacementVertical: + title: Vertical pocket placement + description: The (vertical) location of the pockets +collarHeight: + title: Collar height + description: Height of the collar +length: + title: Length + description: Total length +pocketFlapRadius: + title: Pocket flap radius + description: The amount by which the pocket flap is rounded +pocketRadius: + title: Pocket radius + description: The amount by which the pocket is rounded +chestPocketHeight: + title: Chest pocket height + description: Height of the chest pocket +beltWidth: + title: Belt width + description: Width of the belt +buttonSpacingHorizontal: + title: Horizontal button spacing + description: Horizontal spacing of the buttons, also determines the front closure overlap diff --git a/packages/i18n/src/locales/uk/options/cathrin.yml b/packages/i18n/src/locales/uk/options/cathrin.yml new file mode 100644 index 00000000000..e43722edb3e --- /dev/null +++ b/packages/i18n/src/locales/uk/options/cathrin.yml @@ -0,0 +1,28 @@ +--- +panels: + title: Кількість панелей + description: Загальна кількість панелей на викрійці. Більша кількість панелей забезпечить кращу посадку для гладких моделей. + options: + '11': 11 панелей + '13': 13 панелей +waistReduction: + title: Утягування талії + description: Відсоток утягування талії для бажаного ефекту. +backOpening: + title: Зріз на спині + description: Ширина відстані центрального спинного зрізу. +backRise: + title: Верхня посадка ззаду + description: Висота задніх панелей від боків до центру спини. +backDrop: + title: Нижня посадка ззаду + description: Наскільки задні панелі опускаються від стегон до центру спини. Від'ємне значення підніме ці панелі вгору. +frontRise: + title: Верхня посадка спереду + description: 'Висота передніх панелей від боків до центру між грудьми. Від''ємне значення опустить ці панелі донизу.' +frontDrop: + title: Нижня посадка спереду + description: Наскільки передні панелі опускаються від стегон до центру тулуба. +hipRise: + title: Посадка на стегнах + description: Наскільки високо розташовуються бокові панелі відповідно до стегон. diff --git a/packages/i18n/src/locales/uk/options/charlie.yml b/packages/i18n/src/locales/uk/options/charlie.yml new file mode 100644 index 00000000000..d86c0f9816b --- /dev/null +++ b/packages/i18n/src/locales/uk/options/charlie.yml @@ -0,0 +1,52 @@ +--- +backPocketHorizontalPlacement: + title: Горизонтальне розміщення задньої кишені + description: Керує розміщенням задньої кишені по горизонталі +backPocketVerticalPlacement: + title: Вертикальне розміщення задньої кишені + description: Керує розміщенням задньої кишені по вертикалі +backPocketWidth: + title: Ширина задньої кишені + description: Керує шириною задньої кишені +backPocketDepth: + title: Глибина задньої кишені + description: Керує глибиною задньої кишені +backPocketFacing: + title: Зовнішня частина задньої кишені + description: Вказує, включати чи не включати зовнішню частину задньої кишені +frontPocketSlantDepth: + title: Глибина пройми передньої кишені + description: Керує глибиною пройми передньої кишені +frontPocketSlantWidth: + title: Ширина пройми передньої кишені + description: Керує шириною пройми передньої кишені +frontPocketSlantRound: + title: Заокруглення пройми передньої кишені + description: Керує, наскільки далеко від низу пройми кишені починається заокруглення до лінії талії +frontPocketSlantBend: + title: Крива пройми передньої кишені + description: Керує радіусом заокруглення кишені до лінії талії +frontPocketWidth: + title: Ширина передньої кишені + description: Керує загальною шириною мішковини передньої кишені +frontPocketDepth: + title: Глибина передньої кишені + description: Керує загальною глибиною мішковини передньої кишені +frontPocketFacing: + title: Зовнішня частина передньої кишені + description: Керує, наскільки глибоко зовнішня частина кишені простягається по мішковині +beltLoops: + title: Поясні петельки + description: Керує загальною кількістю поясних петельок +flyCurve: + title: Крива гульфика + description: Керує кривою лінією гачкоподібного шва гульфика +flyLength: + title: Довжина гульфика + description: Керує загальною довжиною гульфика +flyWidth: + title: Ширина гульфика + description: Керує наскільки далеко гачкоподібний шов відходить від краю гульфика +waistbandCurve: + title: Крива поясу + description: Керує наскільки заокругленою є крива поясу. diff --git a/packages/i18n/src/locales/uk/options/cornelius.yml b/packages/i18n/src/locales/uk/options/cornelius.yml new file mode 100644 index 00000000000..6cf04468cc4 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/cornelius.yml @@ -0,0 +1,26 @@ +--- +fullness: + title: Ширина ногавиць + description: Керує наскільки широкими є ногавиці +waistbandBelowWaist: + title: Нижчий пояс + description: Відсоток зміщення поясу нижче природної талії +waistReduction: + title: Утягування талії + description: Відсоток звуження поясу +cuffWidth: + title: Ширина чохли + description: Загальна ширина чохли (манжета) на ногах +cuffStyle: + title: Стиль чохли + description: Стиль чохли (манжета) на ногах +bandBelowKnee: + title: Чохла нижче коліна + description: Керує відстанню між чохлою (манжетом) та коліном +kneeToBelow: + title: Довжина чохли + description: Керує свободою облягання чохли на нозі +ventLength: + title: Довжина шліца + description: Керує довжиною шліца між коліном та чохлою (манжетом) + diff --git a/packages/i18n/src/locales/uk/options/diana.yml b/packages/i18n/src/locales/uk/options/diana.yml new file mode 100644 index 00000000000..a995e56fc35 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/diana.yml @@ -0,0 +1,8 @@ +--- +shoulderSeamLength: + title: Довжина плечового шва + description: Контролює довжину плечового шва +drapeAngle: + title: Кут драпірування + description: Контролює кількість складок + diff --git a/packages/i18n/src/locales/uk/options/florence.yml b/packages/i18n/src/locales/uk/options/florence.yml new file mode 100644 index 00000000000..e5c568c6a81 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/florence.yml @@ -0,0 +1,10 @@ +--- +height: + title: Висота + description: Контролює висоту данної маски +length: + title: Довжина + description: Контролює довжину маски +curve: + title: Крива + description: Контролює вигин верхнього краю маски diff --git a/packages/i18n/src/locales/uk/options/florent.yml b/packages/i18n/src/locales/uk/options/florent.yml new file mode 100644 index 00000000000..cb6537ee754 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/florent.yml @@ -0,0 +1,4 @@ +--- +headEase: + title: Свобода облягання на голові + description: Контролює свободу облягання навколо голови diff --git a/packages/i18n/src/locales/uk/options/hi.yml b/packages/i18n/src/locales/uk/options/hi.yml new file mode 100644 index 00000000000..93bc9025a56 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/hi.yml @@ -0,0 +1,12 @@ +hungry: + title: Голод + description: Змінює форму рота, аби показати, що Ку-ку голодна +nosePointiness: + title: Загостреність носика + description: Контролює наскільки гострий носик Ку-ку матиме +aggressive: + title: Лють + description: Надати Ку-ку гострі зуби, чи ні +size: + title: Розмір + description: Акули бувають різних розмірів, і Ку-ку теж diff --git a/packages/i18n/src/locales/uk/options/holmes.yml b/packages/i18n/src/locales/uk/options/holmes.yml new file mode 100644 index 00000000000..a6530f862d6 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/holmes.yml @@ -0,0 +1,28 @@ +--- +headEase: + title: Свобода облягання на голові + description: Керує свободою облягання навколо голови. +lengthRatio: + title: Співвідношення довжини + description: Керує відсотком довжини маківки та навушників +gores: + title: Кількість панелей + description: Керує кількістю панелей для побудови маківки (корони) +visorAngle: + title: Кут козирка + description: Кут, який використовується для побудови внутрішньої кривої козирка +visorWidth: + title: Ширина козирка + description: Керує шириною козирка +earLength: + title: Довжина навушника + description: Керує довжиною навушників, окремо від панелей маківки (корони) +earWidth: + title: Ширина навушника + description: Керує шириною навушників +buttonhole: + title: Петля ґудзика + description: Додає петлю для ґудзика на навушник для створення викрійки з ґудзиком +visorLength: + title: Довжина козирка + description: Керує довжиною козирка diff --git a/packages/i18n/src/locales/uk/options/hortensia.yml b/packages/i18n/src/locales/uk/options/hortensia.yml new file mode 100644 index 00000000000..c8325d42156 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/hortensia.yml @@ -0,0 +1,13 @@ +--- +size: + title: Розмір + description: Керує загальним розміром сумочки +zipperSize: + title: Розмір застібки + description: Який розмір застібки-блискавки використовувати +strapLength: + title: Довжина ручок + description: Керує довжиною ручок +handleWidth: + title: Ширина ручок + description: Керує шириною ручок diff --git a/packages/i18n/src/locales/uk/options/huey.yml b/packages/i18n/src/locales/uk/options/huey.yml new file mode 100644 index 00000000000..8dbb43967b5 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/huey.yml @@ -0,0 +1,22 @@ +--- +pocket: + title: Кишеня + description: Чи додавати кишеню спереду +pocketHeight: + title: Висота кишені + description: Керує висотою кишені +hoodHeight: + title: Висота капюшона + description: Керує висотою (довжиною) капюшона +hoodCutback: + title: Пройма капюшона + description: Керує наскільки далеко розміщується пройма +hoodClosure: + title: Закриття капюшона + description: Керує висоту закриття капюшону під підборіддям +hoodDepth: + title: Глибина капюшона + description: Керує глибиною капюшона +hoodAngle: + title: Кут капюшона + description: Керує кут, за яким капюшон з'єднується з тулубом diff --git a/packages/i18n/src/locales/uk/options/hugo.yml b/packages/i18n/src/locales/uk/options/hugo.yml new file mode 100644 index 00000000000..0fc71d84d3b --- /dev/null +++ b/packages/i18n/src/locales/uk/options/hugo.yml @@ -0,0 +1,4 @@ +--- +hipsEase: + title: Свобода облягання на стегнах + description: Керує свободою облягання на стегнах. diff --git a/packages/i18n/src/locales/uk/options/index.js b/packages/i18n/src/locales/uk/options/index.js new file mode 100644 index 00000000000..38731b05a6f --- /dev/null +++ b/packages/i18n/src/locales/uk/options/index.js @@ -0,0 +1,127 @@ +import florence from './florence.yml' +import brian from './brian.yml' +import bella from './bella.yml' +import breanna from './breanna.yml' +import diana from './diana.yml' +import aaron from './aaron.yml' +import simon from './simon.yml' +import simone from './simone.yml' +import sven from './sven.yml' +import wahid from './wahid.yml' +import bent from './bent.yml' +import bruce from './bruce.yml' +import cathrin from './cathrin.yml' +import holmes from './holmes.yml' +import huey from './huey.yml' +import hugo from './hugo.yml' +import tamiko from './tamiko.yml' +import teagan from './teagan.yml' +import trayvon from './trayvon.yml' +import jaeger from './jaeger.yml' +import carlton from './carlton.yml' +import carlita from './carlita.yml' +import benjamin from './benjamin.yml' +import florent from './florent.yml' +import theo from './theo.yml' +import sandy from './sandy.yml' +import shin from './shin.yml' +import penelope from './penelope.yml' +import waralee from './waralee.yml' +import titan from './titan.yml' +import paco from './paco.yml' +import albert from './albert.yml' +import hortensia from './hortensia.yml' +import cornelius from './cornelius.yml' +import charlie from './charlie.yml' +import ursula from './ursula.yml' +import lunetius from './lunetius.yml' +import tiberius from './tiberius.yml' +import walburga from './walburga.yml' +import bee from './bee.yml' +import hi from 'hi.yml' +import unice from 'unice.yml' +import lucy from 'lucy.yml' +import bob from 'bob.yml' +import noble from 'noble.yml' +import octoplushy from 'octoplushy.yml' +import { options as optionList } from '@freesewing/pattern-info' +import shared from '../../../shared-options.yml' + +let patterns = { + florence, + bella, + brian, + breanna, + diana, + aaron, + simon, + simone, + sven, + wahid, + bent, + bruce, + cathrin, + huey, + hugo, + tamiko, + trayvon, + jaeger, + carlton, + carlita, + benjamin, + florent, + theo, + sandy, + shin, + penelope, + waralee, + holmes, + titan, + paco, + teagan, + albert, + hortensia, + cornelius, + charlie, + ursula, + yuri: false, + lunetius, + tiberius, + walburga, + bee, + hi, + unice, + lucy, + bob, + noble, + octoplushy, +} + +let options = {} +for (let pattern in patterns) { + options[pattern] = {} + if (typeof optionList[pattern] === 'undefined') + throw new Error('pattern ' + pattern + ' has no option list') + for (let option of optionList[pattern]) { + let value = patterns[pattern][option] + if (typeof value === 'object') options[pattern][option] = value + else { + if (typeof value === 'undefined') { + if (shared[pattern]) { + if (shared[pattern].dflt && typeof patterns[shared[pattern].dflt][option] === 'object') { + options[pattern][option] = patterns[shared[pattern].dflt][option] + } else if ( + typeof shared[pattern].other !== 'undefined' && + typeof shared[pattern].other[option] === 'string' + ) { + options[pattern][option] = patterns[shared[pattern].other[option]][option] + } else { + throw new Error(`No option translation found for ${option} in ${pattern}`) + } + } + } + } + } +} + +export default options diff --git a/packages/i18n/src/locales/uk/options/jaeger.yml b/packages/i18n/src/locales/uk/options/jaeger.yml new file mode 100644 index 00000000000..e4a168526ed --- /dev/null +++ b/packages/i18n/src/locales/uk/options/jaeger.yml @@ -0,0 +1,112 @@ +--- +centerBackDart: + title: Центральна виточка на комірі + description: Центральна шийна виточка для округлої спини +sleeveVentLength: + title: Довжина вирізу рукава + description: Керує довжиною вирізу рукава +sleeveVentWidth: + title: Ширина вирізу рукава + description: Керує шириною вирізу рукава +chestShaping: + title: Формування грудної частини + description: Amount of shaping to accommodate for the chest curve +frontDartPlacement: + title: Розміщення передньої виточки + description: Керує розташуванням передноьої виточки +frontOverlap: + title: Front overlap + description: How far the fabric extends beyond the closing buttons +sideFrontPlacement: + title: Side/Front placement + description: The location of the side/front boundary +chestPocketDepth: + title: Глибина нагрудної кишені + description: Контролює глибину нагрудної кишені +chestPocketWidth: + title: Ширина нагрудної кишені + description: Контролює ширину нагрудної кишені +chestPocketPlacement: + title: Розташування нагрудної кишені + description: Контролює розташування нагрудної кишені +chestPocketAngle: + title: Кут нагрудної кишені + description: Кут нахилу, під яким розміщується нагрудна кишеня +chestPocketWeltSize: + title: Chest pocket welt size + description: The size of the chest pocket welt +frontPocketPlacement: + title: Front pocket placement + description: Location of the front pocket +frontPocketWidth: + title: Front pocket width + description: The width of the front pocket +frontPocketDepth: + title: Front pocket depth + description: The depth of the front pocket +frontPocketRadius: + title: Front pocket radius + description: The radius by which the front pocket is rounded +innerPocketPlacement: + title: Inner pocket placement + description: The location of the inner pocket +innerPocketWidth: + title: Inner pocket width + description: The width of the inner pocket +innerPocketDepth: + title: Inner pocket depth + description: The depth of the inner pocket +innerPocketWeltHeight: + title: Inner pocket welt height + description: The height of the inner pocket welt +pocketFoldover: + title: Pocket fold-over + description: The amount by which the main fabric is folder over into the pocket +centerFrontHemDrop: + title: Center front hem drop + description: The amount by which the hem is lowered towards the center front +backVent: + title: Виріз на спині + description: Контролює кількість вирізів на спині +backVentLength: + title: Довжина виріз(ів) на спині + description: Контролює довжину виріз(ів) на спині +buttonLength: + title: Довжина між ґудзиками + description: Керує довжиною між ґудзиками +frontCutawayAngle: + title: Front cutaway angle + description: The angle under which the front is cut away towards the hem +frontCutawayStart: + title: Front cutaway start + description: The location at which the front starts opening up towards the hem +frontCutawayEnd: + title: Front cutaway end + description: Increasing this will make the front cutaway stay closer to the center front +collarSpread: + title: Collar spread + description: The collar spread controls how the collar drapes over the shoulders +lapelStart: + title: Lapel start + description: Location where the center front goes over into the lapels +lapelReduction: + title: Lapel reduction + description: How much the tip of the lapels turns inwards +collarHeight: + title: Висота коміру + description: Контролює висоту коміру +collarNotchDepth: + title: Collar notch depth + description: Depth of the collar notch +collarNotchAngle: + title: Collar notch angle + description: Angle of the collar notch +collarNotchReturn: + title: Collar notch return + description: How much the collar returns from the notch, in comparison to the lapel +rollLineCollarHeight: + title: Roll-line collar height + description: How much the roll-line hugs the neck +hemRadius: + title: Hem radius + description: The amount by which the hem is rounded diff --git a/packages/i18n/src/locales/uk/options/lucy.yml b/packages/i18n/src/locales/uk/options/lucy.yml new file mode 100644 index 00000000000..a3330f56ad0 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/lucy.yml @@ -0,0 +1,10 @@ +width: + title: Ширина + description: Ширина кишені +length: + title: Довжина + description: Довжина (глибина) кишені +edge: + title: Taper + description: Controls how much the pocket opening tapers inwards + diff --git a/packages/i18n/src/locales/uk/options/lunetius.yml b/packages/i18n/src/locales/uk/options/lunetius.yml new file mode 100644 index 00000000000..80c8b4e7e6f --- /dev/null +++ b/packages/i18n/src/locales/uk/options/lunetius.yml @@ -0,0 +1,16 @@ +--- +lengthRatio: + title: Length ratio + description: Controls the length of the garment +widthRatio: + title: Width ratio + description: Controls the width of the garment +length: + title: Length + description: Choose from the different length styles + options: + toKnee: On the knee + toBelowKnee: Below the knee + toHips: On the hips + toUpperLeg: On the thigh + toFloor: To the floor diff --git a/packages/i18n/src/locales/uk/options/noble.yml b/packages/i18n/src/locales/uk/options/noble.yml new file mode 100644 index 00000000000..25695a2c358 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/noble.yml @@ -0,0 +1,58 @@ +dartPosition: + description: Controls whether to split at the shoulder or armhole + title: Dart position +chestEase: + description: Controls the amount of ease at the chest + title: Chest ease +waistEase: + description: Controls the amount of ease at the waist + title: Waist ease +bustSpanEase: + description: Controls the amount of ease along the bust span + title: Bust span ease +backDartHeight: + description: Back dart height + title: Controls the height of the back dart +waistDartLength: + description: Controls the length of the waist dart + title: Waist dart length +shoulderDartPosition: + description: Controls the position of the shoulder dart + title: Shoulder dart position +upperDartLength: + description: Controls the length of the upper dart + title: Upper dart length +armholeDartPosition: + description: Controls the position of the armhole dart + title: Armhole dart position +armholeDepth: + description: Controls the depth of the armhole + title: Armhole depth +backArmholeSlant: + description: Controls the slant of the armhole at the back + title: Back armhole slant +backArmholeCurvature: + description: Controls how deep the armhole is scooped out at the back + title: Back armhole curvature +frontArmholePitchDepth: + description: Controls how deep the armhole curts into the front + title: Front armhole pitch depth +backArmholePitchDepth: + description: Controls how deep the armhole curts into the back + title: Back armhole pitch depth +backNeckCutout: + description: Controls how deep the neck is cutout in the back + title: Back neck cutout +backHemSlope: + description: Constrols the slope of the back hem + title: Back hem slope +frontShoulderWidth: + description: Controls how much width is added to the shoulder in the front + title: Front shoulder width +highBustWidth: + description: Controls the widht of the high bust + title: Hight bust width +shoulderToShoulderEase: + description: Controls the amount of ease long the shoulder to shoulder measurement + title: Shoulder to shoulder ease + diff --git a/packages/i18n/src/locales/uk/options/octoplushy.yml b/packages/i18n/src/locales/uk/options/octoplushy.yml new file mode 100644 index 00000000000..974d5f18600 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/octoplushy.yml @@ -0,0 +1,28 @@ +size: + title: Size + description: Controls the overall size +type: + title: Type + description: Allows you to choose one of the variants of this design +armWidth: + title: Arm width + description: Controls the width of the arms +armLength: + title: Arm width + description: Controls the length of the arms +neckWidth: + title: Neck width + description: Determines the width at the neck +armTaper: + title: Arm tapering + description: Controls the amount by which the arms taper +bottomTopArmRatio: + title: Bottom/Top arm ratio + description: "FIXME: No idea what this does" +bottomArmReduction: + title: Bottom arm reduction + description: "FIXME: No idea what this does" +bottomArmReductionPlushy: + title: Bottom arm reduction (plushy) + description: "FIXME: No idea what this does" + diff --git a/packages/i18n/src/locales/uk/options/paco.yml b/packages/i18n/src/locales/uk/options/paco.yml new file mode 100644 index 00000000000..6a404a94603 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/paco.yml @@ -0,0 +1,16 @@ +--- +heelEase: + title: Heel ease + description: The amount of ease at your heel (when stepping into the leg) +frontPockets: + title: Front pockets + description: Whether or not to add front pockets on the side seam +backPockets: + title: Back pockets + description: Whether or not to add welt pockets to the back +elasticatedHem: + title: Elasticated hem + description: Whether or not you want an elasticated hem +ankleElastic: + title: Ankle/Hem elastic width + description: Width of the (optional) elastic at the ankle/hem diff --git a/packages/i18n/src/locales/uk/options/penelope.yml b/packages/i18n/src/locales/uk/options/penelope.yml new file mode 100644 index 00000000000..b069cf618d8 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/penelope.yml @@ -0,0 +1,46 @@ +--- +backDartDepthFactor: + title: Back dart depth factor + description: How far down does the back dart go from the waistband. This is a factor of the Natural Waist To Seat measurement. +backVent: + title: Back vent + description: Add a vent in the back of the skirt. +backVentLength: + title: Back vent length + description: Length of the Back Vent as a percentage of the skirt length. +dartToSideSeamFactor: + title: Dart to side seam factor + description: Percentage of how much of the hip to waist reduction has to be taken in by the darts versus the side seam. +frontDartDepthFactor: + title: Front dart depth factor + description: How far down does the front dart go from the waistband. This is a factor of the Natural Waist To Seat measurement. +hem: + title: Size of the hem + description: The size of the hem. Measurement in absolute values. +hemBonus: + title: Hem bonus + description: This option will reduce the circumference of the skirt at the hem. Percentage of the Seat measurement. +lengthBonus: + title: Length bonus + description: This sets the length of the skirt. Percentage of the Natural Waist to Knee measurement. +nrOfDarts: + title: Number of darts + description: The number of darts used in the pattern. Maximum is 2. This option can be reduced by the pattern if the calculations create darts that are too small. +seatEase: + title: Seat ease + description: Amount of ease at the seat level. +waistBand: + title: Waist band + description: Add a waistband to the pattern. +waistBandWidth: + title: Waist band width + description: The width of the waist band. +waistEase: + title: Waist ease + description: Amount of ease at the waist level. +zipperLocation: + title: Zipper location + description: The location of the zipper. + options: + backSeam: At the back seam + sideSeam: At the side seam diff --git a/packages/i18n/src/locales/uk/options/sandy.yml b/packages/i18n/src/locales/uk/options/sandy.yml new file mode 100644 index 00000000000..3118bafd1d1 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/sandy.yml @@ -0,0 +1,26 @@ +--- +waistbandWidth: + title: Waistband width + description: Controls the width of the waistband. +waistbandPosition: + title: Waistband position + description: Controls the position of the waistband. +waistbandShape: + title: Waistband shape + description: Whether you want a straight or shaped waistband. +circleRatio: + title: Circle ratio + description: The percentage of a circle you want the skirt to be. +waistbandOverlap: + title: Waistband overlap + description: The amount by which the waistband overlaps. +gathering: + title: Gathering + description: The percent by which the top of the skirt is longer than the bottom of the waistband. +seamlessFullCircle: + title: Seamless full circle + description: Enables a seamless full circle skirt. +hemWidth: + title: Hem width + description: Width of the hem + diff --git a/packages/i18n/src/locales/uk/options/shin.yml b/packages/i18n/src/locales/uk/options/shin.yml new file mode 100644 index 00000000000..036e0d17a24 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/shin.yml @@ -0,0 +1,7 @@ +--- +legReduction: + title: Зменшення радіусу штанини + description: Зменшує радіус штанини (шортини :) задля кращого облягання +elasticWidth: + title: Ширина гумки + description: Контролює ширину гумки на талії diff --git a/packages/i18n/src/locales/uk/options/simon.yml b/packages/i18n/src/locales/uk/options/simon.yml new file mode 100644 index 00000000000..b4490ebeaae --- /dev/null +++ b/packages/i18n/src/locales/uk/options/simon.yml @@ -0,0 +1,136 @@ +--- +backDarts: + title: Back darts + description: Whether or not to include back darts + options: + auto: Automatic + always: Always + never: Never +backDartShaping: + title: Back dart shaping + description: The amount of shaping that is done by the back darts +barrelCuffNarrowButton: + title: Cuff narrow button + description: Whether to include a button to tie the cuffs more narrow. This option is only relevant for barrel cuffs. +boxPleat: + title: Box pleat + description: Whether to include a box pleat at the back or not +boxPleatWidth: + title: Box pleat width + description: The total widh of the box pleat +boxPleatFold: + title: Box pleat fold + description: The amount by with the box pleat folds inwards +buttonPlacketStyle: + title: Button placket style + description: Style of the button placket. + options: + classic: Classic style + seamless: French style (seamless) +buttonPlacketWidth: + title: Button placket width + description: Width of the button placket. +buttonFreeLength: + title: Button free length + description: How much of the bottom of the front closure to keep button-free. +buttonholePlacketFoldWidth: + title: Buttonhole placket fold width + description: Width of the buttonhole placket fold. +buttonholePlacketStyle: + title: Buttonhole placket style + description: Style of the buttonhole placket. + options: + classic: Classic style + seamless: French style (seamless) +buttonholePlacketWidth: + title: Buttonhole placket width + description: Width of the buttonhole placket. +buttons: + title: Number of buttons + description: The number of buttons on the front closure. +collarAngle: + title: Collar angle + description: The angle of the collar tips. +collarBend: + title: Collar bend + description: The bend of the collar. +collarFlare: + title: Collar flare + description: The flare of the collar tips. +collarGap: + title: Collar gap + description: The gap between the the two collar ends. +collarRoll: + title: Collar roll + description: The amount by which the top collar is larger than the undercollar. +collarStandBend: + title: Collar stand bend + description: The bend of the collar stand. +collarStandCurve: + title: Collar stand curve + description: The curve of the collar stand. +collarStandWidth: + title: Collar stand width + description: Width of the collar stand. +cuffButtonRows: + title: Cuff button rows + description: Whether to draft a single or double row of cuff buttons. This option is only relevant for barrel cuffs. + options: + '1': Single cuff button row + '2': Double cuff button row +cuffDrape: + title: Cuff drape + description: The amount by which the sleeve is wider than the cuff where the are joined. +cuffLength: + title: Cuff length + description: The length of the cuffs. +cuffStyle: + title: Cuff style + description: The style of the cuffs. + options: + roundedBarrelCuff: Rounded barrel cuff + angledBarrelCuff: Angled barrel cuff + straightBarrelCuff: Straight barrel cuff + roundedFrenchCuff: Rounded French cuff + angledFrenchCuff: Angled French cuff + straightFrenchCuff: Straight French cuff +extraTopButton: + title: Extra top button + description: Whether or not to include an extra top button on the front closure. +ffsa: + title: Flat-felled seam allowace + description: The amount of seam allowance on flet-felled seams as a proportion of the regular seam allowance +hemCurve: + title: Hem curve + description: The height of the curve on a curved hem. +hemStyle: + title: Hem style + description: The style of the shirt hem. + options: + straight: Straight hem + baseball: Baseball hem + slashed: Slashed hem +roundBack: + title: Round back + description: To fit a round(er) back, this adds length to the center back (at the yoke) that tapers of towards the sides. +seperateButtonholePlacket: + title: Seperate buttonhole placket + description: Draft a separate buttonhole placket. +seperateButtonPlacket: + title: Seperate button placket + description: Draft a separate button placket +sleevePlacketLength: + title: Sleeve placket length + description: The length of the sleeve placket. +sleevePlacketWidth: + title: Sleeve placket width + description: The width of the sleeve placket. +splitYoke: + title: Split yoke + description: Whether to draft a split or regular yoke. +waistEase: + title: Waist ease + description: The amount of ease at your (natural) waist. +yokeHeight: + title: Yoke height + description: Controls the height of the yoke diff --git a/packages/i18n/src/locales/uk/options/simone.yml b/packages/i18n/src/locales/uk/options/simone.yml new file mode 100644 index 00000000000..51181b32268 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/simone.yml @@ -0,0 +1,23 @@ +--- +bustAlignedButtons: + title: Bust-aligned buttons + description: Optional button spacing strategies to ensure a button at the bustline + options: + even: Even spacing + split: Split spacing + disabled: Disabled +bustDartAngle: + title: Bust dart angle + description: Controls the angle by which the (side) bust dart slopes downward +bustDartLength: + title: Bust dart length + description: Controls how close the bust dart approaches the bust point +contour: + title: Contour + description: Controls how sharply the extra room for breasts is removed again below the chest +frontDarts: + title: Front darts + description: Whether to include front darts or not +frontDartLength: + title: Front dart length + description: Controls how close the front dart approaches the bust point diff --git a/packages/i18n/src/locales/uk/options/sven.yml b/packages/i18n/src/locales/uk/options/sven.yml new file mode 100644 index 00000000000..3f8e7a99a99 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/sven.yml @@ -0,0 +1,13 @@ +--- +hipsEase: + title: Hips ease + description: Controls the amount of ease at your hips (the bottom of the sweater) +ribbing: + title: Ribbing + description: Whether to finish the hem and cuffs with ribbing or not. +ribbingHeight: + title: Ribbing height + description: The height of the ribbing on cuffs and hem. +ribbingStretch: + title: Ribbing stretch + description: The amount of negative ease to apply to the ribbing used for cuffs and hem. diff --git a/packages/i18n/src/locales/uk/options/tamiko.yml b/packages/i18n/src/locales/uk/options/tamiko.yml new file mode 100644 index 00000000000..41da8be36b6 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/tamiko.yml @@ -0,0 +1,10 @@ +--- +flare: + title: Flare + description: The amount by which the garment flares from your chest downwards +shoulderseamLength: + title: Shoulder seam length + description: The length of the shoulder seam, as a factor of your shoulder to shoulder measurement +shoulderSlope: + title: Shoulder slope + description: Controls the angle of the shoulder seams diff --git a/packages/i18n/src/locales/uk/options/teagan.yml b/packages/i18n/src/locales/uk/options/teagan.yml new file mode 100644 index 00000000000..6b85f9d73e6 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/teagan.yml @@ -0,0 +1,19 @@ +--- +draftForHighBust: + title: Draft for high bust + description: Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts. +sleeveEase: + title: Свобода прилягання рукава + description: Змінити свободу прилягання рукавів +sleeveLength: + title: Довжина рукава + description: Змінити довжину рукавів +necklineBend: + title: Вигін горловини + description: Змінити лінію вигину горловини. +necklineDepth: + title: Глибина горловини + description: Змінити параметр того, як низько знаходиться горловина. +necklineWidth: + title: Ширина горловини + description: Змінити ширину горловини. diff --git a/packages/i18n/src/locales/uk/options/theo.yml b/packages/i18n/src/locales/uk/options/theo.yml new file mode 100644 index 00000000000..b0326ad3481 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/theo.yml @@ -0,0 +1,7 @@ +--- +wedge: + title: Wedge + description: Controls the length of the cross seam +legWidth: + title: Leg width + description: Controls the width of the legs diff --git a/packages/i18n/src/locales/uk/options/tiberius.yml b/packages/i18n/src/locales/uk/options/tiberius.yml new file mode 100644 index 00000000000..d1042cd8830 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/tiberius.yml @@ -0,0 +1,39 @@ +--- +headRatio: + title: Head ratio + description: Controls the size of the head opening +armholeDrop: + title: Armhole drop + description: Controls the depth of the armhole +lengthBonus: + title: Length bonus + description: Allows variation of the length of the garment +widthBonus: + title: Width bonus + description: Allows variation of the width of the garment +clavi: + title: Clavi + description: Whether or not to include guides for clavi +clavusLocation: + title: Clavus location + description: Controls the location of the clavi +clavusWidth: + title: Clavus width + description: Controls the width of the clavi +length: + title: Length + description: Controls the length of the garment + options: + toKnee: On the knee + toMidLeg: On the thigh + toFloor: To the floor +width: + title: Width + description: Controls the width of the garment + options: + toElbow: To the elbow + toShoulder: To the shoulder + toMidArm: To the upper arm +forceWidth: + title: Force width + description: Apply width settings regardless of constraints diff --git a/packages/i18n/src/locales/uk/options/titan.yml b/packages/i18n/src/locales/uk/options/titan.yml new file mode 100644 index 00000000000..10cb926f285 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/titan.yml @@ -0,0 +1,46 @@ +--- +kneeEase: + title: Knee ease + description: Controls the amout of ease at the knee +waistHeight: + title: Waist height + description: Controls the height of the waist, 100% = waist height, 0% = hip height +lengthBonus: + title: Length bonus + description: Controls the length of the trousers +crotchDrop: + title: Crotch drop + description: Lowers the crotch for a more relaxed fit +fitKnee: + title: Fit the knee + description: Fits the legs from based on the knee circumference, rather than seat circumference +legBalance: + title: Leg balance + description: Controls the ratio between front and back panel of the leg +crossSeamCurveStart: + title: Start of the cross seam curve + description: Controls how far into the cross seam we start to curve +crossSeamCurveBend: + title: Cross seam bend + description: Controls the curvature of the cross seam +crossSeamCurveAngle: + title: Cross seam angle + description: Controls the angle of the cross seam +crotchSeamCurveStart: + title: Start of the crotch seam curve + description: Controls how far into the crotch seam we start to curve +crotchSeamCurveBend: + title: Crotch seam bend + description: Controls the curvature of the crotch seam +crotchSeamCurveAngle: + title: Crotch seam angle + description: Controls the angle of the crotch seam +waistBalance: + title: Waist balance + description: Controls the horizontal position of the waist relative to the seat +waistbandWidth: + title: Waistband width + description: The width of the waistband +grainlinePosition: + title: Grainline position + description: Controls the horizontal position of the leg relative to the seat diff --git a/packages/i18n/src/locales/uk/options/trayvon.yml b/packages/i18n/src/locales/uk/options/trayvon.yml new file mode 100644 index 00000000000..188a80ff394 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/trayvon.yml @@ -0,0 +1,7 @@ +--- +tipWidth: + title: Ширина кута + description: Керує шириною кута краватки +knotWidth: + title: Ширина вузлика + description: Керує шириною краватки у зоні вузла diff --git a/packages/i18n/src/locales/uk/options/unice.yml b/packages/i18n/src/locales/uk/options/unice.yml new file mode 100644 index 00000000000..9dd4d4a27f8 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/unice.yml @@ -0,0 +1,13 @@ +fabricStretchX: + title: Еластичність тканини (горизонтальна) + description: Налаштуйте це для більш або менш еластичних тканин +fabricStretchY: + title: Еластичність тканини (вертикальна) + description: Налаштуйте це для більш або менш еластичних тканин +adjustStretch: + title: Налаштувати розтягування + description: За допомогою цього параметру можна задати максимальне розтягування, яке дозволяє тканина у горизонтальному та вертикальному напрямках; Якщо параметр вимкнено, використовуються базові значення розтягування +useCrossSeam: + title: Використати довжину посадки + description: Якщо увімкнути, загальна висота елементів викрійки буде дорівнювати довжині посадки не включаючи переднє і заднє збільшення довжини. Якщо вимкнути, загальна висота буде залежати від параметра довжини ластовиці. + diff --git a/packages/i18n/src/locales/uk/options/ursula.yml b/packages/i18n/src/locales/uk/options/ursula.yml new file mode 100644 index 00000000000..48c0a4aed79 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/ursula.yml @@ -0,0 +1,34 @@ +--- +fabricStretch: + title: Еластичність тканини + description: Налаштуйте це для більш або менш еластичних тканин +gussetWidth: + title: Ширина ластовиці + description: Керує шириною ластовиці +gussetLength: + title: Довжина ластовиці + description: Керує довжиною ластовиці +elasticStretch: + title: Еластичність гумки + description: Налаштуйте це для більш або менш еластичної гумки +rise: + title: Посадка + description: Керує висотою посадки +legOpening: + title: Leg opening + description: Controls how high the leg is cut out +frontDip: + title: Front waist dip + description: Controls how much the front waist curves (revealing more or less skin) +backDip: + title: Back waist dip + description: Controls how much the back waist curves (revealing more or less skin) +taperToGusset: + title: Front exposure + description: Controls the amount of exposed skin on the front +backExposure: + title: Back exposure + description: Controls the amount of exposed skin on the back + + + diff --git a/packages/i18n/src/locales/uk/options/wahid.yml b/packages/i18n/src/locales/uk/options/wahid.yml new file mode 100644 index 00000000000..81d6a78ed50 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/wahid.yml @@ -0,0 +1,43 @@ +--- +backScyeDart: + title: Back scye dart + description: The amount to take out in a dart at the back of the armhole. +frontScyeDart: + title: Front scye dart + description: The amount to take out in a dart at the front of the armhole. +pocketLocation: + title: Pocket location + description: Determines the placement of the pocket +pocketWidth: + title: Pocket width + description: Determines the width of the pocket +weltHeight: + title: Welt height + description: Determines the height of the welt +necklineDrop: + title: Neckline drop + description: Determines how low the neckline drops at the front +frontStyle: + title: Neck opening style + description: Style of the neck opening +hemStyle: + title: Hem style + description: Style of the front hem +hemRadius: + title: Hem radius + description: Radius by which the hem is rounded +backInset: + title: Back inset + description: How much the back of the armhole is cut inwards +frontInset: + title: Front inset + description: How much the front of the armhole is cut inwards +shoulderInset: + title: Shoulder inset + description: How much the shoulder seam is cut inwards at the shoulder +neckInset: + title: Neck inset + description: How much the shoulder seam is cut inwards at the neck +pocketAngle: + title: Pocket angle + description: Angle of the pocket slant diff --git a/packages/i18n/src/locales/uk/options/walburga.yml b/packages/i18n/src/locales/uk/options/walburga.yml new file mode 100644 index 00000000000..c38f11137b5 --- /dev/null +++ b/packages/i18n/src/locales/uk/options/walburga.yml @@ -0,0 +1,23 @@ +--- +headRatio: + title: Head ratio + description: Controls the size of the head opening +lengthBonus: + title: Length bonus + description: Allows variation of the length of the garment +widthBonus: + title: Width bonus + description: Allows variation of the width of the garment +length: + title: Length + description: Controls the length of the garment + options: + toKnee: On the knee + toMidLeg: On the thigh + toFloor: To the floor +neckoRatio: + title: Neck opening shape + description: controls the shape of the neck opening +neckline: + title: Neckline + description: Controls whether or not to draft a neck opening diff --git a/packages/i18n/src/locales/uk/options/waralee.yml b/packages/i18n/src/locales/uk/options/waralee.yml new file mode 100644 index 00000000000..9fd0177b6df --- /dev/null +++ b/packages/i18n/src/locales/uk/options/waralee.yml @@ -0,0 +1,44 @@ +--- +backPocket: + title: Back pocket + description: Whether to include a back pocket or not +frontPocket: + title: Front pocket + description: Whether to include a front pocket or not +hemWidth: + title: Hem size + description: Size of the hem at the bottom of the pants +waistbandWidth: + title: Waist Band + description: Size of the waist band +waistRaise: + title: Waist Raise + description: How much to raise the waist from the seat depth measurement. This influences the depth of the crotch cut-out. +crotchBack: + title: Crotch Back + description: The percentage of the seat circumference that the back crotch needs to occupy. This creates more or less space between the side seam and the back. +crotchFront: + title: Crotch Front + description: The percentage of the seat circumference that the front crotch needs to occupy. This creates more or less space between the side seam and the front. +crotchFactorBackHor: + title: Back Crotch Factor Horizontal + description: Used to move the curve of the crotch in the back horizontally +crotchFactorBackVer: + title: Back Crotch Factor Vertical + description: Used to move the curve of the crotch in the back vertically +crotchFactorFrontHor: + title: Front Crotch Factor Horizontal + description: Used to move the curve of the crotch in the front horizontally +crotchFactorFrontVer: + title: Front Crotch Factor Vertical + description: Used to move the curve of the crotch in the front vertically +waistOverlap: + title: Waist Overlap + description: This dicates how much you want the leg flaps to overlap at the waist. A setting of 0 would have them meet at the side seam, and a setting of 100 makes them meet at the front/back. +legShortening: + title: Leg Shortening + description: This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the more that will be taken off the length. +backRaise: + title: Back Raise + description: This setting raises the waist in the back. Our waist does not sit horizontally, but is angled up at the back. This seting allows you to raise this in the back if you need it for a good fit. + diff --git a/packages/i18n/src/locales/uk/parts.yaml b/packages/i18n/src/locales/uk/parts.yaml new file mode 100644 index 00000000000..3da3e8d555b --- /dev/null +++ b/packages/i18n/src/locales/uk/parts.yaml @@ -0,0 +1,58 @@ +--- +back: Спина +backBase: Основа спинки +backPocketWelt: Листочка задньої кишені +base: База +bentBack: Спина Бент +bentBase: Основа Бент +bentFront: Перед Бент +bentSleeve: Рукав Бент +bentTopSleeve: Верх рукава Бент +bentUnderSleeve: Низ рукава Бент +buttonholePlacket: Шліц під отвір для ґудзика +buttonPlacket: Шліц під ґудзик +collar: Комір +collarStand: Стійка під комір +cuff: Манжет +fabricTail: Деталь хвоста +fabricTip: Деталь кута +frontBase: Низ переду +frontFacing: Лицьовий бік +front: Переднє полотнище +frontLeft: Лівий бік переду +frontLining: Перед підкладки +frontRight: Правий бік переду +gusset: Ластовиця +hoodCenter: Центр капюшону +hood: Капюшон +hoodSide: Сторона капюшону +inset: Вставка +interfacingTail: Деблерінова деталь хвоста +interfacingTip: Дублерінова деталь кута +liningTail: Деталь підкладки хвоста +liningTip: Деталь підкладки кута +loop: Петелька +panel1: Панель 1 +panel2: Панель 2 +panel3: Панель 3 +panel4: Панель 4 +panel5: Панель 5 +panel6: Панель 6 +panels: Панелі +pocketBag: Мішковина кишені +pocketFacing: Зовнішня частина кишені +pocketInterfacing: Деталь кишені з флізеліну +pocket: Кишеня +pocketWelt: Кишенькова листочка +side: Бік +sleeveBase: Основа рукава +sleevecap: Окат рукава +sleevePlacketOverlap: Верх шліца +sleevePlacketUnderlap: Низ шліца +sleeve: Рукав +topSleeve: Верх рукава +top: Верх +underCollar: Підборт +underSleeve: Низ рукава +waistband: Резинка на талії +yoke: Кокетка diff --git a/packages/i18n/src/locales/uk/patterns.yml b/packages/i18n/src/locales/uk/patterns.yml new file mode 100644 index 00000000000..f28c073870d --- /dev/null +++ b/packages/i18n/src/locales/uk/patterns.yml @@ -0,0 +1,142 @@ +--- +aaron: + description: Аарон є спортивною майкою. + title: Майка Аарон +albert: + description: Альберт – це фартук. + title: Фартук Альберт +bee: + description: Бі – це ліф купальника + title: Ліф купальника Бі +bella: + description: Белла є викрійкою-основою з виточками. + title: Викрійка-основа Белла +benjamin: + description: Бенджамін – це викрійка краватки-метелика з чотирьма різними формами. + title: Галстук-метелик Бенджамін +bent: + description: Ця двочастинна викрійка є основою для викрійок пальто та піджаків. + title: Викрійка-основа Бент +bob: + description: Це нагрудник, викрійку якого ви можете самостійно створити, пройшовши нашу інструкцію з дизайну викрійок + title: Нагрудник Боб +breanna: + description: Бреанна – це викрійка-основа з виточками. + title: Викрійка-основа Бреанна +brian: + description: Брайан – це викрійка-основа без виточок. + title: Викрійка-основа Брайан +bruce: + description: Брюс – комфортні та стильні боксери. + title: Труси-боксери Брюс +carlita: + description: 'Версія пальто Карлтон, ака пальто Шерлока Холмса, тільки зі швом Принц(есса).' + title: Пальто Карліта +carlton: + description: 'Підходить для косплею Шерлока Холмса, або просто як гарне і практичне пальто.' + title: Пальто Карлтон +cathrin: + description: Катрін – це підгрудний корсет або тренувач талії. + title: Корсет Катрін +charlie: + description: Чарлі – це викрійка для брюк-чіносів. + title: Брюки-чіноси Чарлі +cornelius: + description: Корнеліус – це бріджі для катання на велосипеді, основані на методі крою Кістон. + title: Бріджі для катання Корнеліус +diana: + description: Діана – це топ з горловиною-хомутом. + title: Топ з горловиною-хомутом Діана +florent: + description: 'Флорент – це пласка кепка, заокруглена кепка з невеликим твердим козирцем спереду.' + title: Пласка кепка Флорент +florence: + description: 'Флоренс – це маска для обличчя.' + title: Маска Флоренс +hi: + description: Найдружелюбніша акула у світі. + title: Акула Куку +holmes: + description: 'Для косплею Шерлока Холмса, або просто як мила шапочка.' + title: Шапка Холмс +hortensia: + description: 'Гортензія – це ручна сумка.' + title: Ручна сумка Гортензія +huey: + description: Хьюі – це худі на блискавці з кишенями спереду (на ваш вибір). + title: Худі Хьюї +hugo: + description: Хьюго – це джампер з капюшоном та рукавами реглан. + title: Худі Хьюго +jaeger: + description: Джагер – це спортивний піджак з двома ґудзиками та накладними кишенями. + title: Піджак Джагер +lucy: + description: Люсі – це кишеня з минулого, яку можна зав'язати на талії. + title: Кишеня на зав'язках Люсі +lunetius: + description: Лютінус – це ласерна, або історична накидка з Древнього Риму. + title: Ласерна Лютінус +noble: + description: Нобл – це викрійка-основа з швом принц(есса). + title: Викрійка-основа Нобл +octoplushy: + description: A multi-armed companion for next-level hugs + title: Octoplushy the octopus +paco: + description: Пако – це базові та стильні літні штани. + title: Штани Пако +penelope: + description: Пенелопа – це спідниця-олівець з розрізом ззаду (за бажанням). + title: Юбка-олівець Пенелопа +sandy: + description: Сенді – викрійка спідниці-сонце на будь-яку довжину та пишність. + title: Юбка-сонце Сенді +shin: + description: Шін – це спортивні плавки. + title: Плавки Шін +simon: + description: Саймон – це викрійка сорочки без передніх виточок. Легко адаптується під Ваші швейні плани. + title: Сорочка Саймон +simone: + description: Сімон – це як Саймон, але з передніми виточками. + title: Сорочка Сімон +sven: + description: Свен – це простий і прямий светр. + title: Светр Свен +tamiko: + description: Таміко – це топ "Нуль відходів". + title: Блузка Таміко +teagan: + description: Тіган – це викрійка футболки по розміру. + title: Футболка Тіган +theo: + description: Тео – це викрійка класичних штанів. + title: Штани Тео +tiberius: + description: Тіберіус – це Древньоримська туніка. + title: Туніка Тіберіус +titan: + description: Титан – це викрійка-основа штанів без виточок. + title: Викрійка-основа штанів Титан +trayvon: + description: Трейвон – це краватка, яка робиться без відрізання кутів для професіонального вигляду. + title: Краватка Трейвон +unice: + description: Юніс – це варіант Урсули. Базова, багатофункціональна викрійка трусів. + title: Труси Юніс +ursula: + description: Урсула – це викрійка базових трусів з великою кількістю налаштувань дизайну. + title: Труси Урсула +wahid: + description: Вахід – це класичний облягаючий жилет. + title: Жилет Вахід +walburga: + description: Валбурга – це гербова накидка; елемент одягу середньовічної Європи. + title: Туніка Валбурга +waralee: + description: Варалі – це штани з запахом. + title: Штани з запахом Варалі +yuri: + description: Юрі – це екстравагантний кардиган без блискавки, оснований на худі Хьюі та Хьюго. + title: Худі Юрі diff --git a/packages/i18n/src/locales/uk/plugin/patterns/aaron.yaml b/packages/i18n/src/locales/uk/plugin/patterns/aaron.yaml new file mode 100644 index 00000000000..5353abebd67 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/aaron.yaml @@ -0,0 +1,5 @@ +--- +cutOneStripToFinishTheNeckOpening: Виріжте одну смугу для обробки горловини +cutTwoStripsToFinishTheArmholes: Виріжте дві смуги для обробки пройми +length: Довжина +width: Ширина diff --git a/packages/i18n/src/locales/uk/plugin/patterns/brian.yaml b/packages/i18n/src/locales/uk/plugin/patterns/brian.yaml new file mode 100644 index 00000000000..4f1941f8a7e --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/brian.yaml @@ -0,0 +1,4 @@ +--- +back: Зад +front: Перед +sleeve: Рукав diff --git a/packages/i18n/src/locales/uk/plugin/patterns/bruce.yaml b/packages/i18n/src/locales/uk/plugin/patterns/bruce.yaml new file mode 100644 index 00000000000..790f9a64c44 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/bruce.yaml @@ -0,0 +1,3 @@ +--- +inset: Вставка +side: Бік diff --git a/packages/i18n/src/locales/uk/plugin/patterns/cfp.yaml b/packages/i18n/src/locales/uk/plugin/patterns/cfp.yaml new file mode 100644 index 00000000000..24e032f612e --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/cfp.yaml @@ -0,0 +1,2 @@ +--- +hello: Привіт diff --git a/packages/i18n/src/locales/uk/plugin/patterns/cornelius.yaml b/packages/i18n/src/locales/uk/plugin/patterns/cornelius.yaml new file mode 100644 index 00000000000..19d64b6bfcf --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/cornelius.yaml @@ -0,0 +1,3 @@ +--- +Vent: Виріз +PocketFacing: Зовнішня частина кишені diff --git a/packages/i18n/src/locales/uk/plugin/patterns/hortensia.yaml b/packages/i18n/src/locales/uk/plugin/patterns/hortensia.yaml new file mode 100644 index 00000000000..8a9cb81dd01 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/hortensia.yaml @@ -0,0 +1,10 @@ +--- +SidePanel: Бокова панель +FrontBackPanel: Передня та задня панель +BottomPanel: Нижня панель +ZipperPanel: Панель під блискавку +Strap: Ручка +strapLength: Довжина ручок +handleWidth: Ширина ручок +zipperSize: Стандартний розмір блискавки +SidePanelReinforcement: Бокова підкріплююча панель diff --git a/packages/i18n/src/locales/uk/plugin/patterns/hugo.yaml b/packages/i18n/src/locales/uk/plugin/patterns/hugo.yaml new file mode 100644 index 00000000000..d799a46aab1 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/hugo.yaml @@ -0,0 +1,7 @@ +--- +cuff: Манжет +hoodCenter: Центр капюшону +hoodSide: Бік капюшону +pocketFacing: Зовнішня частина кишені +pocket: Кишеня +waistband: Резинка на талії diff --git a/packages/i18n/src/locales/uk/plugin/patterns/simon.yaml b/packages/i18n/src/locales/uk/plugin/patterns/simon.yaml new file mode 100644 index 00000000000..72254576cfa --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/simon.yaml @@ -0,0 +1,13 @@ +--- +buttonholePlacket: Шліц під отвір для ґудзика +buttonPlacket: Шліц під ґудзик +collarAndUndercollar: Комір та Внутрішній комір +collarStand: Стійка під комір +cutUndercollarSlightlySmaller: Виріжте внутрішню частину коміру трошки меншою +frontLeft: Перед зліва +frontRight: Перед справа +sideOfTheCollarStand: Бік стійки під комір +sleevePlacketOverlap: Верхня деталь шліца рукава +sleevePlacketUnderlap: Нижня деталь шліца рукава +yoke: Кокетка +matchHere: З'єднайте візерунок тканини по цій лінії diff --git a/packages/i18n/src/locales/uk/plugin/patterns/teagan.yaml b/packages/i18n/src/locales/uk/plugin/patterns/teagan.yaml new file mode 100644 index 00000000000..8ade8b05699 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/teagan.yaml @@ -0,0 +1,2 @@ +--- +fullLengthFromHps: Повна довжина (від ВТП) diff --git a/packages/i18n/src/locales/uk/plugin/patterns/ursula.yaml b/packages/i18n/src/locales/uk/plugin/patterns/ursula.yaml new file mode 100644 index 00000000000..82f51e4ccac --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/patterns/ursula.yaml @@ -0,0 +1,3 @@ +--- +cutTwoPiecesOfElasticToFinishTheLegOpenings: Виріжте два шматочка гумки (резинки) щоб завершити зріз низу +cutOnePieceOfElasticToFinishTheWaistBand: Виріжте один шматок гумки (резинки) щоб завершити пояс diff --git a/packages/i18n/src/locales/uk/plugin/plugins/cutonfold.yaml b/packages/i18n/src/locales/uk/plugin/plugins/cutonfold.yaml new file mode 100644 index 00000000000..72276187e30 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/plugins/cutonfold.yaml @@ -0,0 +1,3 @@ +--- +cutOnFoldAndGrainline: Розрізати у зігнутому вигляді / Нитка основи +cutOnFold: Розрізати у зігнутому вигляді diff --git a/packages/i18n/src/locales/uk/plugin/plugins/grainline.yaml b/packages/i18n/src/locales/uk/plugin/plugins/grainline.yaml new file mode 100644 index 00000000000..e49a2d93f3a --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/plugins/grainline.yaml @@ -0,0 +1,2 @@ +--- +grainline: Нитка основи diff --git a/packages/i18n/src/locales/uk/plugin/plugins/scalebox.yaml b/packages/i18n/src/locales/uk/plugin/plugins/scalebox.yaml new file mode 100644 index 00000000000..328188e5348 --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/plugins/scalebox.yaml @@ -0,0 +1,4 @@ +--- +theBlackOutsideOfThisBoxShouldMeasure: Зовнішня сторона цієї коробки має бути +theWhiteInsideOfThisBoxShouldMeasure: Внутрішня сторона цієї коробки має бути +supportFreesewingBecomeAPatron: Підтримайте FreeSewing, станьте Патроном diff --git a/packages/i18n/src/locales/uk/plugin/plugins/title.yaml b/packages/i18n/src/locales/uk/plugin/plugins/title.yaml new file mode 100644 index 00000000000..2b58a808c0d --- /dev/null +++ b/packages/i18n/src/locales/uk/plugin/plugins/title.yaml @@ -0,0 +1,3 @@ +--- +cut: Вирізати +onFold: У зігнутому вигляді diff --git a/packages/i18n/src/locales/uk/settings.yml b/packages/i18n/src/locales/uk/settings.yml new file mode 100644 index 00000000000..bdff64b52f7 --- /dev/null +++ b/packages/i18n/src/locales/uk/settings.yml @@ -0,0 +1,44 @@ +--- +advanced: + title: Режим фахівця + description: Визначає показ додаткових налаштувань та налаштувань викрійки +paperless: + title: Без паперу + description: Створює викрійку з урахуванням масштабу для перенесення на тканину чи інший матеріал без потреби друку +sabool: + title: Враховувати припуски на шви + description: Керує наявністю припусків на шви в Вашій викрійці +sa: + title: Розмір припусків на шви + description: Визначає розмір припусків на шви в Вашій викрійці +locale: + title: Мова + description: Визначає мову на викрійці +only: + title: Зміст + description: Дозволяє керувати тим, які елементи викрійки відображуватимуться на Вашій викрійці +units: + title: Одиниці виміру + description: Керує одиницями вимірювання на викрійці +margin: + title: Відступ + description: Контролює відступ навколо елементів викрійки +complete: + title: Докладність + description: 'Керує докладність викрійки: відображувати повноцінну викрійку з усіма подробицями чи лише основний контур елементів викрійки' +layout: + title: Макет + description: Керує подальше розташування окремих елементів викрійки на матеріалі +debug: + title: Налагодження + description: Увімкнути налагодження для отримання додаткової інформації щодо способу створення викрійки +scale: + title: Масштаб + description: Керує ширину контуру, кегль шрифту та інші елементи, які не масштабуються відповідно до замірів викрійки +renderer: + title: Двигун відтворювання + description: Керує відтворення викрійки на екрані +xray: + title: Рентген + description: Зазирніть за лаштунки з рентгенівським режимом FreeSewing + diff --git a/packages/i18n/src/locales/uk/welcome.yaml b/packages/i18n/src/locales/uk/welcome.yaml new file mode 100644 index 00000000000..f78c78aa22a --- /dev/null +++ b/packages/i18n/src/locales/uk/welcome.yaml @@ -0,0 +1,10 @@ +--- +units: Оберіть одиниці, які Ви хочете використовувати +username: Оберіть ім'я користувача +avatar: Додайте зображення профілю +bio: Розкажіть нам трохи про себе +social: Дайте нам знати, де ми можемо слідкувати за Вами +newsletter: Надайте нам свої налаштування для розсилки +letUsSetupYourAccount: Давайте налаштуємо Ваш обліковий запис. +walkYouThrough: "Ми допоможемо Вам пройти наступні етапи:" +someOptional: Хоча всі ці етапи необов'язкові, ми рекомендуємо Вам пройти їх, щоб отримати максимум користі від FreeSewing. diff --git a/packages/i18n/src/next/de/.gitkeep b/packages/i18n/src/next/de/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/i18n/src/next/de/index.mjs b/packages/i18n/src/next/de/index.mjs index 75b2c125528..0e477a1cb2a 100644 --- a/packages/i18n/src/next/de/index.mjs +++ b/packages/i18n/src/next/de/index.mjs @@ -51,6 +51,7 @@ import o_jaeger from "./o_jaeger.mjs" import o_lucy from "./o_lucy.mjs" import o_lunetius from "./o_lunetius.mjs" import o_noble from "./o_noble.mjs" +import o_octoplushy from "./o_octoplushy.mjs" import o_paco from "./o_paco.mjs" import o_penelope from "./o_penelope.mjs" import o_sandy from "./o_sandy.mjs" @@ -125,6 +126,7 @@ const allNamespaces = { o_lucy, o_lunetius, o_noble, + o_octoplushy, o_paco, o_penelope, o_sandy, diff --git a/packages/i18n/src/next/de/o_bee.mjs b/packages/i18n/src/next/de/o_bee.mjs index 5884727580a..3178a7f41a7 100644 --- a/packages/i18n/src/next/de/o_bee.mjs +++ b/packages/i18n/src/next/de/o_bee.mjs @@ -54,7 +54,9 @@ const o_bee = { "fullChestEaseReduction.t": "Full chest reduction (Bella)", "fullChestEaseReduction.d": "Controls the full chest reduction in the underlying Bella block Bee is based on", "highBustWidth.t": "Hohe Brustweite (Bella)", - "highBustWidth.d": "Kontrolliert die hohe Brustbreite des zugrunde liegenden Grundschnittes \"Bella\" auf welchem Bee basiert" + "highBustWidth.d": "Kontrolliert die hohe Brustbreite des zugrunde liegenden Grundschnittes \"Bella\" auf welchem Bee basiert", + "shoulderToShoulderEase.t": "Shoulder to Shoulder ease (Bella)", + "shoulderToShoulderEase.d": "Controls the shoulder to shoulder ease in the underlying Bella block Bee is based on" } export default o_bee diff --git a/packages/i18n/src/next/de/o_hi.mjs b/packages/i18n/src/next/de/o_hi.mjs index aa29f46045f..4c2e9292890 100644 --- a/packages/i18n/src/next/de/o_hi.mjs +++ b/packages/i18n/src/next/de/o_hi.mjs @@ -5,7 +5,7 @@ const o_hi = { "hungry.t": "Hungry", "hungry.d": "Changes the mouth shape to convey Hi is hungry", - "nosePointiness.t": "node pointiness", + "nosePointiness.t": "Nose pointiness", "nosePointiness.d": "Controls how pointy Hi's nose is", "aggressive.t": "Aggressive", "aggressive.d": "Give Hi pointy teeth, or not", diff --git a/packages/i18n/src/next/de/o_octoplushy.mjs b/packages/i18n/src/next/de/o_octoplushy.mjs new file mode 100644 index 00000000000..97693f47727 --- /dev/null +++ b/packages/i18n/src/next/de/o_octoplushy.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_octoplushy = { + "size.t": "Size", + "size.d": "Controls the overall size", + "type.t": "Type", + "type.d": "Allows you to choose one of the variants of this design", + "armWidth.t": "Arm width", + "armWidth.d": "Controls the width of the arms", + "armLength.t": "Arm width", + "armLength.d": "Controls the length of the arms", + "neckWidth.t": "Neck width", + "neckWidth.d": "Determines the width at the neck", + "armTaper.t": "Arm tapering", + "armTaper.d": "Controls the amount by which the arms taper", + "bottomTopArmRatio.t": "Bottom/Top arm ratio", + "bottomTopArmRatio.d": "FIXME: No idea what this does", + "bottomArmReduction.t": "Bottom arm reduction", + "bottomArmReduction.d": "FIXME: No idea what this does", + "bottomArmReductionPlushy.t": "Bottom arm reduction (plushy)", + "bottomArmReductionPlushy.d": "FIXME: No idea what this does" +} + +export default o_octoplushy diff --git a/packages/i18n/src/next/de/o_simone.mjs b/packages/i18n/src/next/de/o_simone.mjs index c9cc3744e6a..497588fd527 100644 --- a/packages/i18n/src/next/de/o_simone.mjs +++ b/packages/i18n/src/next/de/o_simone.mjs @@ -3,6 +3,8 @@ * All edits will be overwritten on the next (pre)build */ const o_simone = { + "bustAlignedButtons.t": "Bust-aligned buttons", + "bustAlignedButtons.d": "Optional button spacing strategies to ensure a button at the bustline", "bustDartAngle.t": "Winkel des Brustabnähers", "bustDartAngle.d": "Kontrolliert den Winkel, in welchem der (seitliche) Brustabnäher sich nach unten neigt", "bustDartLength.t": "Länge des Brustabnähers", diff --git a/packages/i18n/src/next/de/optiongroups.mjs b/packages/i18n/src/next/de/optiongroups.mjs index 8624e1a94f5..7608c71f5fb 100644 --- a/packages/i18n/src/next/de/optiongroups.mjs +++ b/packages/i18n/src/next/de/optiongroups.mjs @@ -24,7 +24,9 @@ const optiongroups = { "bellaDarts": "Bella Abnäher", "bellaArmhole": "Bella Armloch", "bellaAdvanced": "Bella Fortgeschritten", - "clavi": "Clavi" + "clavi": "Clavi", + "type": "Type", + "size": "Size" } export default optiongroups diff --git a/packages/i18n/src/next/de/parts.mjs b/packages/i18n/src/next/de/parts.mjs index 8602131aae4..1a4aa77e3d9 100644 --- a/packages/i18n/src/next/de/parts.mjs +++ b/packages/i18n/src/next/de/parts.mjs @@ -5,6 +5,7 @@ const parts = { "back": "Rückseite", "backBase": "Rückseite Basis", + "backPocketWelt": "Back pocket welt", "base": "Basis", "bentBack": "Rückseite Bent", "bentBase": "Basis Bent", diff --git a/packages/i18n/src/next/de/settings.mjs b/packages/i18n/src/next/de/settings.mjs index 2096696c4cb..f9e542c2ec2 100644 --- a/packages/i18n/src/next/de/settings.mjs +++ b/packages/i18n/src/next/de/settings.mjs @@ -7,7 +7,9 @@ const settings = { "advanced.d": "Legt fest, ob erweiterte Einstellungen und Schnittmusteroptionen angezeigt werden sollen oder nicht", "paperless.t": "Papierlos", "paperless.d": "Zeichnet ein Schnittmuster mit allen benötigten Dimensionen, sodass es direkt auf den Stoff oder ein anderes Medium übertragen werden kann, ohne es auszudrucken", - "sa.t": "Nahtzugabe", + "sabool.t": "Include seam allowance", + "sabool.d": "Controls whether or not to include seam allowance in your pattern", + "sa.t": "Seam allowance size", "sa.d": "Steuert die Breite der Nahtzugabe, die in deinem Schnittmuster enthalten ist", "locale.t": "Sprache", "locale.d": "Legt die für deine Schnittmuster verwendete Sprache fest", diff --git a/packages/i18n/src/next/en/.gitkeep b/packages/i18n/src/next/en/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/i18n/src/next/en/index.mjs b/packages/i18n/src/next/en/index.mjs index 75b2c125528..0e477a1cb2a 100644 --- a/packages/i18n/src/next/en/index.mjs +++ b/packages/i18n/src/next/en/index.mjs @@ -51,6 +51,7 @@ import o_jaeger from "./o_jaeger.mjs" import o_lucy from "./o_lucy.mjs" import o_lunetius from "./o_lunetius.mjs" import o_noble from "./o_noble.mjs" +import o_octoplushy from "./o_octoplushy.mjs" import o_paco from "./o_paco.mjs" import o_penelope from "./o_penelope.mjs" import o_sandy from "./o_sandy.mjs" @@ -125,6 +126,7 @@ const allNamespaces = { o_lucy, o_lunetius, o_noble, + o_octoplushy, o_paco, o_penelope, o_sandy, diff --git a/packages/i18n/src/next/en/o_bee.mjs b/packages/i18n/src/next/en/o_bee.mjs index aaae18228b8..10ff6cb7a69 100644 --- a/packages/i18n/src/next/en/o_bee.mjs +++ b/packages/i18n/src/next/en/o_bee.mjs @@ -54,7 +54,9 @@ const o_bee = { "fullChestEaseReduction.t": "Full chest reduction (Bella)", "fullChestEaseReduction.d": "Controls the full chest reduction in the underlying Bella block Bee is based on", "highBustWidth.t": "High bust width (Bella)", - "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on" + "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on", + "shoulderToShoulderEase.t": "Shoulder to Shoulder ease (Bella)", + "shoulderToShoulderEase.d": "Controls the shoulder to shoulder ease in the underlying Bella block Bee is based on" } export default o_bee diff --git a/packages/i18n/src/next/en/o_hi.mjs b/packages/i18n/src/next/en/o_hi.mjs index 1ddaa3c2da0..4c2e9292890 100644 --- a/packages/i18n/src/next/en/o_hi.mjs +++ b/packages/i18n/src/next/en/o_hi.mjs @@ -5,8 +5,8 @@ const o_hi = { "hungry.t": "Hungry", "hungry.d": "Changes the mouth shape to convey Hi is hungry", - "nosePointiness.t": "node pointiness", - "nosePointiness.d": "Controls how pointing Hi's nose is", + "nosePointiness.t": "Nose pointiness", + "nosePointiness.d": "Controls how pointy Hi's nose is", "aggressive.t": "Aggressive", "aggressive.d": "Give Hi pointy teeth, or not", "size.t": "Size", diff --git a/packages/i18n/src/next/en/o_octoplushy.mjs b/packages/i18n/src/next/en/o_octoplushy.mjs new file mode 100644 index 00000000000..97693f47727 --- /dev/null +++ b/packages/i18n/src/next/en/o_octoplushy.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_octoplushy = { + "size.t": "Size", + "size.d": "Controls the overall size", + "type.t": "Type", + "type.d": "Allows you to choose one of the variants of this design", + "armWidth.t": "Arm width", + "armWidth.d": "Controls the width of the arms", + "armLength.t": "Arm width", + "armLength.d": "Controls the length of the arms", + "neckWidth.t": "Neck width", + "neckWidth.d": "Determines the width at the neck", + "armTaper.t": "Arm tapering", + "armTaper.d": "Controls the amount by which the arms taper", + "bottomTopArmRatio.t": "Bottom/Top arm ratio", + "bottomTopArmRatio.d": "FIXME: No idea what this does", + "bottomArmReduction.t": "Bottom arm reduction", + "bottomArmReduction.d": "FIXME: No idea what this does", + "bottomArmReductionPlushy.t": "Bottom arm reduction (plushy)", + "bottomArmReductionPlushy.d": "FIXME: No idea what this does" +} + +export default o_octoplushy diff --git a/packages/i18n/src/next/en/o_simone.mjs b/packages/i18n/src/next/en/o_simone.mjs index c23a665a9bf..ef23cb83bcd 100644 --- a/packages/i18n/src/next/en/o_simone.mjs +++ b/packages/i18n/src/next/en/o_simone.mjs @@ -3,6 +3,8 @@ * All edits will be overwritten on the next (pre)build */ const o_simone = { + "bustAlignedButtons.t": "Bust-aligned buttons", + "bustAlignedButtons.d": "Optional button spacing strategies to ensure a button at the bustline", "bustDartAngle.t": "Bust dart angle", "bustDartAngle.d": "Controls the angle by which the (side) bust dart slopes downward", "bustDartLength.t": "Bust dart length", diff --git a/packages/i18n/src/next/en/o_unice.mjs b/packages/i18n/src/next/en/o_unice.mjs index 91f86bdf4a8..ebf2967acd5 100644 --- a/packages/i18n/src/next/en/o_unice.mjs +++ b/packages/i18n/src/next/en/o_unice.mjs @@ -8,7 +8,7 @@ const o_unice = { "fabricStretchY.t": "Fabric stretch (vertical)", "fabricStretchY.d": "Adjust this for more or less stretchy fabrics", "adjustStretch.t": "Adjust stretch", - "adjustStretch.d": "This option you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is", + "adjustStretch.d": "This option allows you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is", "useCrossSeam.t": "Use crossseam", "useCrossSeam.d": "When enabled, the total height of the pattern pieces combined will match the cross seam length minus the front and back rise. When disabled, the total height depends on the gusset length option." } diff --git a/packages/i18n/src/next/en/og.mjs b/packages/i18n/src/next/en/og.mjs deleted file mode 100644 index 3984120286f..00000000000 --- a/packages/i18n/src/next/en/og.mjs +++ /dev/null @@ -1,13 +0,0 @@ -/* - * This file is auto-generated by the prebuild script - * All edits will be overwritten on the next (pre)build - */ -const og = { - "orgTitle": "Welcome to FreeSewing.org", - "devTitle": "Welcome to FreeSewing.dev", - "labTitle": "Welcome to lab.FreeSewing.lab", - "orgDescription": "Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog", - "devDescription": "Documentation and tutorials for FreeSewing developers and contributors. Plus our Developers Blog" -} - -export default og diff --git a/packages/i18n/src/next/en/optiongroups.mjs b/packages/i18n/src/next/en/optiongroups.mjs index a39b1014735..b1c3b6da855 100644 --- a/packages/i18n/src/next/en/optiongroups.mjs +++ b/packages/i18n/src/next/en/optiongroups.mjs @@ -24,7 +24,9 @@ const optiongroups = { "bellaDarts": "Bella darts", "bellaArmhole": "Bella armhole", "bellaAdvanced": "Bella advanced", - "clavi": "Clavi" + "clavi": "Clavi", + "type": "Type", + "size": "Size" } export default optiongroups diff --git a/packages/i18n/src/next/en/parts.mjs b/packages/i18n/src/next/en/parts.mjs index 26dfd95f941..96c0be77927 100644 --- a/packages/i18n/src/next/en/parts.mjs +++ b/packages/i18n/src/next/en/parts.mjs @@ -5,6 +5,7 @@ const parts = { "back": "Back", "backBase": "Back base", + "backPocketWelt": "Back pocket welt", "base": "Base", "bentBack": "Bent back", "bentBase": "Bent base", diff --git a/packages/i18n/src/next/en/patterns.mjs b/packages/i18n/src/next/en/patterns.mjs index 17b9681dcc7..98c411c4f67 100644 --- a/packages/i18n/src/next/en/patterns.mjs +++ b/packages/i18n/src/next/en/patterns.mjs @@ -57,6 +57,8 @@ const patterns = { "lunetius.d": "Lunetius is a lacerna, a historical Roman cloak", "noble.t": "Noble body block", "noble.d": "Noble is a body block with prince(ess) seams", + "octoplushy.t": "Octoplushy the octopus", + "octoplushy.d": "A multi-armed companion for next-level hugs", "paco.t": "Paco pants", "paco.d": "Paco are casual yet stylish summer pants.", "penelope.t": "Penelope pencil skirt", diff --git a/packages/i18n/src/next/en/settings.mjs b/packages/i18n/src/next/en/settings.mjs index 33a8c24fbe9..9023120766e 100644 --- a/packages/i18n/src/next/en/settings.mjs +++ b/packages/i18n/src/next/en/settings.mjs @@ -7,7 +7,9 @@ const settings = { "advanced.d": "Controls whether or not to display advanced settings and pattern options", "paperless.t": "Paperless", "paperless.d": "Drafts a pattern with all dimensions included so you can transfer it on fabric or another medium without the need to print", - "sa.t": "Seam allowance", + "sabool.t": "Include seam allowance", + "sabool.d": "Controls whether or not to include seam allowance in your pattern", + "sa.t": "Seam allowance size", "sa.d": "Controls the amount of seam allowance included in your pattern", "locale.t": "Language", "locale.d": "Determines the language used on your pattern", diff --git a/packages/i18n/src/next/es/.gitkeep b/packages/i18n/src/next/es/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/i18n/src/next/es/index.mjs b/packages/i18n/src/next/es/index.mjs index 75b2c125528..0e477a1cb2a 100644 --- a/packages/i18n/src/next/es/index.mjs +++ b/packages/i18n/src/next/es/index.mjs @@ -51,6 +51,7 @@ import o_jaeger from "./o_jaeger.mjs" import o_lucy from "./o_lucy.mjs" import o_lunetius from "./o_lunetius.mjs" import o_noble from "./o_noble.mjs" +import o_octoplushy from "./o_octoplushy.mjs" import o_paco from "./o_paco.mjs" import o_penelope from "./o_penelope.mjs" import o_sandy from "./o_sandy.mjs" @@ -125,6 +126,7 @@ const allNamespaces = { o_lucy, o_lunetius, o_noble, + o_octoplushy, o_paco, o_penelope, o_sandy, diff --git a/packages/i18n/src/next/es/o_bee.mjs b/packages/i18n/src/next/es/o_bee.mjs index b8936cee439..39c1eb5afce 100644 --- a/packages/i18n/src/next/es/o_bee.mjs +++ b/packages/i18n/src/next/es/o_bee.mjs @@ -54,7 +54,9 @@ const o_bee = { "fullChestEaseReduction.t": "Full chest reduction (Bella)", "fullChestEaseReduction.d": "Controls the full chest reduction in the underlying Bella block Bee is based on", "highBustWidth.t": "High bust width (Bella)", - "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on" + "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on", + "shoulderToShoulderEase.t": "Ancho de hombros (Bella)", + "shoulderToShoulderEase.d": "Controla el ancho de hombros en el patrón de base Bella en el que se basa Bee" } export default o_bee diff --git a/packages/i18n/src/next/es/o_hi.mjs b/packages/i18n/src/next/es/o_hi.mjs index aa29f46045f..8307bf53538 100644 --- a/packages/i18n/src/next/es/o_hi.mjs +++ b/packages/i18n/src/next/es/o_hi.mjs @@ -3,14 +3,14 @@ * All edits will be overwritten on the next (pre)build */ const o_hi = { - "hungry.t": "Hungry", - "hungry.d": "Changes the mouth shape to convey Hi is hungry", - "nosePointiness.t": "node pointiness", - "nosePointiness.d": "Controls how pointy Hi's nose is", - "aggressive.t": "Aggressive", - "aggressive.d": "Give Hi pointy teeth, or not", - "size.t": "Size", - "size.d": "Sharks come in all sizes, and so does Hi" + "hungry.t": "Hambre", + "hungry.d": "Cambios en la forma de la boca para expresar que Hi tiene hambre", + "nosePointiness.t": "Agudeza de la nariz", + "nosePointiness.d": "Controla cómo de puntiaguda es la nariz de Hi", + "aggressive.t": "Agresividad", + "aggressive.d": "Ponle o no dientes puntiagudos a Hi", + "size.t": "Tamaño", + "size.d": "Los tiburones vienen en todos los tamaños, y Hi también" } export default o_hi diff --git a/packages/i18n/src/next/es/o_octoplushy.mjs b/packages/i18n/src/next/es/o_octoplushy.mjs new file mode 100644 index 00000000000..97693f47727 --- /dev/null +++ b/packages/i18n/src/next/es/o_octoplushy.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_octoplushy = { + "size.t": "Size", + "size.d": "Controls the overall size", + "type.t": "Type", + "type.d": "Allows you to choose one of the variants of this design", + "armWidth.t": "Arm width", + "armWidth.d": "Controls the width of the arms", + "armLength.t": "Arm width", + "armLength.d": "Controls the length of the arms", + "neckWidth.t": "Neck width", + "neckWidth.d": "Determines the width at the neck", + "armTaper.t": "Arm tapering", + "armTaper.d": "Controls the amount by which the arms taper", + "bottomTopArmRatio.t": "Bottom/Top arm ratio", + "bottomTopArmRatio.d": "FIXME: No idea what this does", + "bottomArmReduction.t": "Bottom arm reduction", + "bottomArmReduction.d": "FIXME: No idea what this does", + "bottomArmReductionPlushy.t": "Bottom arm reduction (plushy)", + "bottomArmReductionPlushy.d": "FIXME: No idea what this does" +} + +export default o_octoplushy diff --git a/packages/i18n/src/next/es/o_simone.mjs b/packages/i18n/src/next/es/o_simone.mjs index b13eb485c5d..3ff7303c45c 100644 --- a/packages/i18n/src/next/es/o_simone.mjs +++ b/packages/i18n/src/next/es/o_simone.mjs @@ -3,6 +3,8 @@ * All edits will be overwritten on the next (pre)build */ const o_simone = { + "bustAlignedButtons.t": "Bust-aligned buttons", + "bustAlignedButtons.d": "Optional button spacing strategies to ensure a button at the bustline", "bustDartAngle.t": "Ángulo de dardos de polvo", "bustDartAngle.d": "Controla el ángulo por el cual el (lado) dardos de polvo tiene pendiente descendente", "bustDartLength.t": "Longitud del dart del polvo", diff --git a/packages/i18n/src/next/es/o_unice.mjs b/packages/i18n/src/next/es/o_unice.mjs index 91f86bdf4a8..21cab235ea5 100644 --- a/packages/i18n/src/next/es/o_unice.mjs +++ b/packages/i18n/src/next/es/o_unice.mjs @@ -3,14 +3,14 @@ * All edits will be overwritten on the next (pre)build */ const o_unice = { - "fabricStretchX.t": "Fabric stretch (horizontal)", - "fabricStretchX.d": "Adjust this for more or less stretchy fabrics", - "fabricStretchY.t": "Fabric stretch (vertical)", - "fabricStretchY.d": "Adjust this for more or less stretchy fabrics", - "adjustStretch.t": "Adjust stretch", - "adjustStretch.d": "This option you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is", - "useCrossSeam.t": "Use crossseam", - "useCrossSeam.d": "When enabled, the total height of the pattern pieces combined will match the cross seam length minus the front and back rise. When disabled, the total height depends on the gusset length option." + "fabricStretchX.t": "Elasticidad de la tela (horizontal)", + "fabricStretchX.d": "Ajusta esto para telas más o menos elásticas", + "fabricStretchY.t": "Elasticidad de la tela (vertical)", + "fabricStretchY.d": "Ajusta esto para telas más o menos elásticas", + "adjustStretch.t": "Ajuste por elasticidad", + "adjustStretch.d": "En esta opción puedes poner la elasticidad total del tejido tanto en horizontal como en vertical. Cuando se deshabilita, los valores de elasticidad se usan tal cual", + "useCrossSeam.t": "Usa el tiro completo", + "useCrossSeam.d": "Cuando se habilita, la altura total de las piezas del patrón combinadas será la misma que la medida del tiro completo menos las elevaciones frontales y traseras. Cuando se deshabilita, la altura total dependerá de la opción del molde medio o pieza de refuerzo." } export default o_unice diff --git a/packages/i18n/src/next/es/optiongroups.mjs b/packages/i18n/src/next/es/optiongroups.mjs index c010bf4298a..db441f1a1c1 100644 --- a/packages/i18n/src/next/es/optiongroups.mjs +++ b/packages/i18n/src/next/es/optiongroups.mjs @@ -24,7 +24,9 @@ const optiongroups = { "bellaDarts": "Pinzas de Bella", "bellaArmhole": "Sisa de Bella", "bellaAdvanced": "Bella advanced", - "clavi": "Clavi" + "clavi": "Clavi", + "type": "Tipo", + "size": "Talla" } export default optiongroups diff --git a/packages/i18n/src/next/es/parts.mjs b/packages/i18n/src/next/es/parts.mjs index 0364cc4e9a6..48680a3a10a 100644 --- a/packages/i18n/src/next/es/parts.mjs +++ b/packages/i18n/src/next/es/parts.mjs @@ -5,6 +5,7 @@ const parts = { "back": "Atrás", "backBase": "Base trasera", + "backPocketWelt": "Ribete del bolsillo trasero", "base": "Base", "bentBack": "Trasero Bent", "bentBase": "Base Bent", diff --git a/packages/i18n/src/next/es/patterns.mjs b/packages/i18n/src/next/es/patterns.mjs index 7d6507a5b31..01a0b0d2329 100644 --- a/packages/i18n/src/next/es/patterns.mjs +++ b/packages/i18n/src/next/es/patterns.mjs @@ -55,8 +55,8 @@ const patterns = { "lucy.d": "Lucy is a historical pocket that you can tie around your waist.", "lunetius.t": "Lunetius, lacerna", "lunetius.d": "Lunetius es una lacerna, una capa histórica romana", - "noble.t": "Noble body block", - "noble.d": "Noble is a body block with prince(ess) seams", + "noble.t": "Noble, patrón base de torso", + "noble.d": "Noble es un patrón base de torso con corte de príncipe o princesa", "paco.t": "Paco, pantalones largos", "paco.d": "Paco son pantalones de verano casual pero con estilo.", "penelope.t": "Penelope, falda de tubo", diff --git a/packages/i18n/src/next/es/settings.mjs b/packages/i18n/src/next/es/settings.mjs index 7ed04155375..e5f4643c0bb 100644 --- a/packages/i18n/src/next/es/settings.mjs +++ b/packages/i18n/src/next/es/settings.mjs @@ -7,7 +7,9 @@ const settings = { "advanced.d": "Controla si mostrar o no la configuración avanzada y las opciones de patrón", "paperless.t": "Sin papel", "paperless.d": "Dibuja un patrón con todas las dimensiones incluidas para que puedas transferirlo sobre tela u otro medio sin la necesidad de imprimir", - "sa.t": "Margen de costura", + "sabool.t": "Include seam allowance", + "sabool.d": "Controls whether or not to include seam allowance in your pattern", + "sa.t": "Seam allowance size", "sa.d": "Controla la cantidad de margen de costura incluido en tu patrón", "locale.t": "Idioma", "locale.d": "Determina el lenguaje utilizado en tu patrón", diff --git a/packages/i18n/src/next/es/workbench.mjs b/packages/i18n/src/next/es/workbench.mjs index 8c4b7ec2bcd..19b5e14f5ba 100644 --- a/packages/i18n/src/next/es/workbench.mjs +++ b/packages/i18n/src/next/es/workbench.mjs @@ -3,7 +3,7 @@ * All edits will be overwritten on the next (pre)build */ const workbench = { - "designOptions": "Design options", + "designOptions": "Opciones de diseño", "forPrinting": "For printing", "forCutting": "For cutting", "layoutThing": "Layout {thing}", diff --git a/packages/i18n/src/next/fr/.gitkeep b/packages/i18n/src/next/fr/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/i18n/src/next/fr/index.mjs b/packages/i18n/src/next/fr/index.mjs index 75b2c125528..0e477a1cb2a 100644 --- a/packages/i18n/src/next/fr/index.mjs +++ b/packages/i18n/src/next/fr/index.mjs @@ -51,6 +51,7 @@ import o_jaeger from "./o_jaeger.mjs" import o_lucy from "./o_lucy.mjs" import o_lunetius from "./o_lunetius.mjs" import o_noble from "./o_noble.mjs" +import o_octoplushy from "./o_octoplushy.mjs" import o_paco from "./o_paco.mjs" import o_penelope from "./o_penelope.mjs" import o_sandy from "./o_sandy.mjs" @@ -125,6 +126,7 @@ const allNamespaces = { o_lucy, o_lunetius, o_noble, + o_octoplushy, o_paco, o_penelope, o_sandy, diff --git a/packages/i18n/src/next/fr/o_bee.mjs b/packages/i18n/src/next/fr/o_bee.mjs index fc19a016f43..9f7986ba961 100644 --- a/packages/i18n/src/next/fr/o_bee.mjs +++ b/packages/i18n/src/next/fr/o_bee.mjs @@ -54,7 +54,9 @@ const o_bee = { "fullChestEaseReduction.t": "Full chest reduction (Bella)", "fullChestEaseReduction.d": "Controls the full chest reduction in the underlying Bella block Bee is based on", "highBustWidth.t": "Largeur du tour de buste supérieur (Bella)", - "highBustWidth.d": "Contrôle la largeur du buste supérieur dans le bloc de Bella sur lequel est basé Bee" + "highBustWidth.d": "Contrôle la largeur du buste supérieur dans le bloc de Bella sur lequel est basé Bee", + "shoulderToShoulderEase.t": "Shoulder to Shoulder ease (Bella)", + "shoulderToShoulderEase.d": "Controls the shoulder to shoulder ease in the underlying Bella block Bee is based on" } export default o_bee diff --git a/packages/i18n/src/next/fr/o_hi.mjs b/packages/i18n/src/next/fr/o_hi.mjs index aa29f46045f..4c2e9292890 100644 --- a/packages/i18n/src/next/fr/o_hi.mjs +++ b/packages/i18n/src/next/fr/o_hi.mjs @@ -5,7 +5,7 @@ const o_hi = { "hungry.t": "Hungry", "hungry.d": "Changes the mouth shape to convey Hi is hungry", - "nosePointiness.t": "node pointiness", + "nosePointiness.t": "Nose pointiness", "nosePointiness.d": "Controls how pointy Hi's nose is", "aggressive.t": "Aggressive", "aggressive.d": "Give Hi pointy teeth, or not", diff --git a/packages/i18n/src/next/fr/o_octoplushy.mjs b/packages/i18n/src/next/fr/o_octoplushy.mjs new file mode 100644 index 00000000000..97693f47727 --- /dev/null +++ b/packages/i18n/src/next/fr/o_octoplushy.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_octoplushy = { + "size.t": "Size", + "size.d": "Controls the overall size", + "type.t": "Type", + "type.d": "Allows you to choose one of the variants of this design", + "armWidth.t": "Arm width", + "armWidth.d": "Controls the width of the arms", + "armLength.t": "Arm width", + "armLength.d": "Controls the length of the arms", + "neckWidth.t": "Neck width", + "neckWidth.d": "Determines the width at the neck", + "armTaper.t": "Arm tapering", + "armTaper.d": "Controls the amount by which the arms taper", + "bottomTopArmRatio.t": "Bottom/Top arm ratio", + "bottomTopArmRatio.d": "FIXME: No idea what this does", + "bottomArmReduction.t": "Bottom arm reduction", + "bottomArmReduction.d": "FIXME: No idea what this does", + "bottomArmReductionPlushy.t": "Bottom arm reduction (plushy)", + "bottomArmReductionPlushy.d": "FIXME: No idea what this does" +} + +export default o_octoplushy diff --git a/packages/i18n/src/next/fr/o_simone.mjs b/packages/i18n/src/next/fr/o_simone.mjs index 8392fe37e7d..b947b13c1d3 100644 --- a/packages/i18n/src/next/fr/o_simone.mjs +++ b/packages/i18n/src/next/fr/o_simone.mjs @@ -3,6 +3,8 @@ * All edits will be overwritten on the next (pre)build */ const o_simone = { + "bustAlignedButtons.t": "Bust-aligned buttons", + "bustAlignedButtons.d": "Optional button spacing strategies to ensure a button at the bustline", "bustDartAngle.t": "Angle des pinces poitrine", "bustDartAngle.d": "Contrôle l'angle par lequel la pince poitrine (sur le côté) s'incline vers le bas", "bustDartLength.t": "Longueur des pinces poitrine", diff --git a/packages/i18n/src/next/fr/optiongroups.mjs b/packages/i18n/src/next/fr/optiongroups.mjs index 173c6e202cf..aedc9b2d1ab 100644 --- a/packages/i18n/src/next/fr/optiongroups.mjs +++ b/packages/i18n/src/next/fr/optiongroups.mjs @@ -24,7 +24,9 @@ const optiongroups = { "bellaDarts": "Pinces de Bella", "bellaArmhole": "Emmanchure de Bella", "bellaAdvanced": "Bella avancé", - "clavi": "Bande de pourpre" + "clavi": "Bande de pourpre", + "type": "Type", + "size": "Size" } export default optiongroups diff --git a/packages/i18n/src/next/fr/parts.mjs b/packages/i18n/src/next/fr/parts.mjs index 6b82256919b..7696d1e2234 100644 --- a/packages/i18n/src/next/fr/parts.mjs +++ b/packages/i18n/src/next/fr/parts.mjs @@ -5,6 +5,7 @@ const parts = { "back": "Retour", "backBase": "Base dos", + "backPocketWelt": "Back pocket welt", "base": "Base", "bentBack": "Dos de Bent", "bentBase": "Base de Bent", diff --git a/packages/i18n/src/next/fr/settings.mjs b/packages/i18n/src/next/fr/settings.mjs index 598bc554577..a135fe0da72 100644 --- a/packages/i18n/src/next/fr/settings.mjs +++ b/packages/i18n/src/next/fr/settings.mjs @@ -7,7 +7,9 @@ const settings = { "advanced.d": "Permet d'afficher ou non les paramètres avancés et les options de patron", "paperless.t": "Sans papier", "paperless.d": "Dessine un patron avec toutes les dimensions incluses afin que vous puissiez le transférer sur du tissu ou un autre support sans avoir à imprimer", - "sa.t": "Marge de couture", + "sabool.t": "Include seam allowance", + "sabool.d": "Controls whether or not to include seam allowance in your pattern", + "sa.t": "Seam allowance size", "sa.d": "Contrôle la valeur de la marge de couture incluse dans votre patron", "locale.t": "Langue", "locale.d": "Détermine la langue utilisée sur votre patron", diff --git a/packages/i18n/src/next/nl/.gitkeep b/packages/i18n/src/next/nl/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/i18n/src/next/nl/index.mjs b/packages/i18n/src/next/nl/index.mjs index 75b2c125528..0e477a1cb2a 100644 --- a/packages/i18n/src/next/nl/index.mjs +++ b/packages/i18n/src/next/nl/index.mjs @@ -51,6 +51,7 @@ import o_jaeger from "./o_jaeger.mjs" import o_lucy from "./o_lucy.mjs" import o_lunetius from "./o_lunetius.mjs" import o_noble from "./o_noble.mjs" +import o_octoplushy from "./o_octoplushy.mjs" import o_paco from "./o_paco.mjs" import o_penelope from "./o_penelope.mjs" import o_sandy from "./o_sandy.mjs" @@ -125,6 +126,7 @@ const allNamespaces = { o_lucy, o_lunetius, o_noble, + o_octoplushy, o_paco, o_penelope, o_sandy, diff --git a/packages/i18n/src/next/nl/o_bee.mjs b/packages/i18n/src/next/nl/o_bee.mjs index 5a4e16f2d59..77eed2d11af 100644 --- a/packages/i18n/src/next/nl/o_bee.mjs +++ b/packages/i18n/src/next/nl/o_bee.mjs @@ -54,7 +54,9 @@ const o_bee = { "fullChestEaseReduction.t": "Full chest reduction (Bella)", "fullChestEaseReduction.d": "Controls the full chest reduction in the underlying Bella block Bee is based on", "highBustWidth.t": "High bust width (Bella)", - "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on" + "highBustWidth.d": "Controls the high bust width in the underlying Bella block Bee is based on", + "shoulderToShoulderEase.t": "Shoulder to Shoulder ease (Bella)", + "shoulderToShoulderEase.d": "Controls the shoulder to shoulder ease in the underlying Bella block Bee is based on" } export default o_bee diff --git a/packages/i18n/src/next/nl/o_hi.mjs b/packages/i18n/src/next/nl/o_hi.mjs index aa29f46045f..4c2e9292890 100644 --- a/packages/i18n/src/next/nl/o_hi.mjs +++ b/packages/i18n/src/next/nl/o_hi.mjs @@ -5,7 +5,7 @@ const o_hi = { "hungry.t": "Hungry", "hungry.d": "Changes the mouth shape to convey Hi is hungry", - "nosePointiness.t": "node pointiness", + "nosePointiness.t": "Nose pointiness", "nosePointiness.d": "Controls how pointy Hi's nose is", "aggressive.t": "Aggressive", "aggressive.d": "Give Hi pointy teeth, or not", diff --git a/packages/i18n/src/next/nl/o_octoplushy.mjs b/packages/i18n/src/next/nl/o_octoplushy.mjs new file mode 100644 index 00000000000..97693f47727 --- /dev/null +++ b/packages/i18n/src/next/nl/o_octoplushy.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_octoplushy = { + "size.t": "Size", + "size.d": "Controls the overall size", + "type.t": "Type", + "type.d": "Allows you to choose one of the variants of this design", + "armWidth.t": "Arm width", + "armWidth.d": "Controls the width of the arms", + "armLength.t": "Arm width", + "armLength.d": "Controls the length of the arms", + "neckWidth.t": "Neck width", + "neckWidth.d": "Determines the width at the neck", + "armTaper.t": "Arm tapering", + "armTaper.d": "Controls the amount by which the arms taper", + "bottomTopArmRatio.t": "Bottom/Top arm ratio", + "bottomTopArmRatio.d": "FIXME: No idea what this does", + "bottomArmReduction.t": "Bottom arm reduction", + "bottomArmReduction.d": "FIXME: No idea what this does", + "bottomArmReductionPlushy.t": "Bottom arm reduction (plushy)", + "bottomArmReductionPlushy.d": "FIXME: No idea what this does" +} + +export default o_octoplushy diff --git a/packages/i18n/src/next/nl/o_simone.mjs b/packages/i18n/src/next/nl/o_simone.mjs index ccb9bfb183f..c7fe5f068ae 100644 --- a/packages/i18n/src/next/nl/o_simone.mjs +++ b/packages/i18n/src/next/nl/o_simone.mjs @@ -3,6 +3,8 @@ * All edits will be overwritten on the next (pre)build */ const o_simone = { + "bustAlignedButtons.t": "Bust-aligned buttons", + "bustAlignedButtons.d": "Optional button spacing strategies to ensure a button at the bustline", "bustDartAngle.t": "Hoek busteneep", "bustDartAngle.d": "Bepaalt de hoek waarin de busteneep vanuit de zijnaad naar beneden wijst", "bustDartLength.t": "Lengte busteneep", diff --git a/packages/i18n/src/next/nl/optiongroups.mjs b/packages/i18n/src/next/nl/optiongroups.mjs index 448cd3f75fc..67a73f2108a 100644 --- a/packages/i18n/src/next/nl/optiongroups.mjs +++ b/packages/i18n/src/next/nl/optiongroups.mjs @@ -24,7 +24,9 @@ const optiongroups = { "bellaDarts": "Bella figuurnaden", "bellaArmhole": "Bella armsgat", "bellaAdvanced": "Bella geavanceerd", - "clavi": "Clavi" + "clavi": "Clavi", + "type": "Type", + "size": "Size" } export default optiongroups diff --git a/packages/i18n/src/next/nl/parts.mjs b/packages/i18n/src/next/nl/parts.mjs index 8c5fb34b32d..042cd72b227 100644 --- a/packages/i18n/src/next/nl/parts.mjs +++ b/packages/i18n/src/next/nl/parts.mjs @@ -5,6 +5,7 @@ const parts = { "back": "Achterzijde", "backBase": "Basis rug", + "backPocketWelt": "Back pocket welt", "base": "Basis", "bentBack": "Achterzijde Bent", "bentBase": "Basis Bent", diff --git a/packages/i18n/src/next/nl/settings.mjs b/packages/i18n/src/next/nl/settings.mjs index ac49d73aaa8..739257112a6 100644 --- a/packages/i18n/src/next/nl/settings.mjs +++ b/packages/i18n/src/next/nl/settings.mjs @@ -7,7 +7,9 @@ const settings = { "advanced.d": "Bepaalt of de geavanceerde patroonopties wel of niet getoond worden", "paperless.t": "Papierloos", "paperless.d": "Hiermee tekent u een patroon met alle afmetingen zodat u het op stof of een ander medium kunt overbrengen zonder dat u het hoeft af te drukken", - "sa.t": "Naadtoeslag", + "sabool.t": "Include seam allowance", + "sabool.d": "Controls whether or not to include seam allowance in your pattern", + "sa.t": "Seam allowance size", "sa.d": "Bepaalt de hoeveelheid naadtoeslag die is inbegrepen in uw patroon", "locale.t": "Taal", "locale.d": "Bepaalt de taal die op uw patroon wordt gebruikt", diff --git a/packages/i18n/src/next/uk/account.mjs b/packages/i18n/src/next/uk/account.mjs new file mode 100644 index 00000000000..0947ff4c5fe --- /dev/null +++ b/packages/i18n/src/next/uk/account.mjs @@ -0,0 +1,67 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const account = { + "accountRemoved": "Обліковий запис видалено", + "accountRestricted": "Обліковий запис обмежено", + "avatar": "Аватар", + "avatarInfo": "Ваш аватар або фото профілю буде показано на сторінці Вашого профілю.", + "avatarTitle": "Встановіть своє зображення профілю", + "bio": "Про мене", + "bioInfo": "Це місце, де Ви можете розповісти іншим користувачам Freesewing трішки про себе. Дане поле підтримує MarkDown - це робить можливим додавання посилань. Для прикладу, Ви можете додати посилання на свій блог, щоб інші могли його відвідати.", + "bioTitle": "Напишіть коротку біографію", + "currentPassword": "Поточний пароль", + "email": "Адреса електронної пошти", + "emailInfo": "Адреса електронної пошти, прив'язана до вашого облікового запису, є важливою, оскільки вона буде використовуватися для відновлення доступу до вашого облікового запису, якщо ви забудете пароль. Через це зміна електронної адреси потребує підтвердження.", + "emailTitle": "Введіть адресу електронної пошти, яку Ви хочете прив'язати до цього облікового запису", + "exportYourData": "Експортуйте Ваші дані", + "exportYourDataInfo": "Загальний регламент про захист даних ЄС (GDPR) забезпечує Ваше так зване право на мобільність даних — право отримувати та повторно використовувати свої особисті дані для власних цілей, в тому числі на різних платформах.", + "exportYourDataTitle": "Натисніть нижче, щоб завантажити персональні дані", + "github": "GitHub", + "githubInfo": "Якщо ви надасте своє ім'я користувача GitHub, сторінка вашого профілю буде містити посилання на ваш обліковий запис в GitHub. Інші відвідувачі зможуть переглянути Ваші внески в код, дати Вам зірочку або підписатися на Вас.", + "githubTitle": "Заповніть своє ім'я користувача GitHub", + "instagramInfo": "Якщо ви надасте ім'я користувача Instagram, сторінка профілю буде містити посилання на Ваш обліковий запис в Instagram. Таким чином, відвідувачі зможуть переглянути Ваші фотографії та слідкувати за Вами.", + "instagram": "Instagram", + "instagramTitle": "Заповніть своє ім'я користувача Instagram", + "languageInfo": "Даний вибір мови визначає, якою мовою ви будете отримувати електронні листи від FreeSewing. Він не визначає мову сайту, яку можна вибрати на кожній сторінці.", + "language": "Мова", + "languageTitle": "Оберіть бажану мову користування", + "newPassword": "Новий пароль", + "newsletter": "Розсилка новин", + "newsletterTitle": "Чи хочете Ви отримувати розсилку новин від FreeSewing?", + "newsletterInfo": "Раз на 3 місяці, ми надсилаємо нашу інформаційну розсилку з корисним та чесним контентом. Без відстеження, без реклами, без нісенітниць.", + "passwordInfo": "Зміна пароля вимагає Вашого поточного пароля. Заповніть його, потім введіть новий пароль.", + "password": "Пароль", + "passwordTitle": "Введіть поточний пароль та новий пароль", + "patronInfo": "Патрони фінансово підтримують FreeSewing. Вони є лояльними прихильниками, які забезпечують стійке майбутнє для freesewing.org, нашого коду, викрійок та нашої спільноти.", + "patron": "Патрон", + "removeYourAccountInfo": "Загальний регламент про захист даних ЄС (GDPR) забезпечує Ваше так зване право на усунення даних — право видалити Ваші персональні дані.", + "removeYourAccount": "Видалення облікового запису", + "removeYourAccountWarning": "Ця дія вилучить Ваш обліковий запис, Ваші чернетки, Ваші моделі, та всю збережену нами інформацію про Ваш обліковий запис. Жодних шляхів назад.", + "resetPasswordInfo": "Введіть Ваш новий пароль.", + "resetPassword": "Змінити пароль", + "resetPasswordTitle": "Введіть Ваш новий пароль", + "restrictProcessingOfYourDataInfo": "Загальний регламент про захист даних ЄС (GDPR) гарантує Ваші так звані права на обмеження опрацювання - право припиняти обробку Ваших даних.", + "restrictProcessingOfYourData": "Обмежити обробку ваших даних", + "restrictProcessingWarning": "Ваші дані не будуть видалені, проте Ви вийдете зі свого облікового запису та заморозите його. Також, Ви не можете відмінити цю дію самостійно – Вам доведеться зв'язатися з нами, якщо Ви захочете відновити доступ до свого облікового запису.", + "reviewYourConsent": "Переглянути вашу згоду", + "socialInfo": "Якщо Ви надасте своє ім'я користувача GitHub, Twitter або Instagram, сторінка вашого профілю буде містити посилання на Ваші облікові записи на цих сайтах. Це дозволяє користувачам FreeSewing підписатися на Вас.
Ми не контактуємо з жодним з цих сайтів від Вашого імені. Це тільки для того, щоб люди могли розуміти, що, наприклад, користувач @joost на FreeSewing є тією самою людиною, що і користувач @j__st в Twitter.", + "social": "Соціальні мережі", + "socialTitle": "Дозволити людям слідкувати за Вами на інших платформах", + "twitterInfo": "Якщо ви надасте своє ім'я користувача Twitter, сторінка вашого профілю буде містити посилання на Ваш обліковий запис у Twitter. Таким чином, відвідувачі можуть переглянути ваші твіти і слідкувати за Вами.", + "twitterTitle": "Заповніть своє ім'я користувача у Twitter", + "twitter": "Twitter", + "unitsInfo": "FreeSewing підтримує як метричну систему, так і імперську систему вимірювань.", + "unitsTitle": "Будь ласка, оберіть систему вимірювань, з якою Ви найбільш знайомі", + "units": "Одиниці вимірювання", + "usernameInfo": "Кожен користувач отримує випадково згенероване ім'я користувача. Це не дуже особисте, тому Ви можете змінити Ваше ім'я користувача на щось більш відповідне Вашій особистості. До прикладу, власне ім'я, або або будь-що інше.", + "usernameTitle": "Будь ласка, oберіть ім'я користувача", + "username": "Ім’я користувача", + "accountIsInactive": "Ваш обліковий запис неактивний", + "accountNeedsActivation": "Перш ніж Ви зможете увійти, потрібно активувати свій обліковий запис. Будь ласка, перевірте Вашу поштову скриньку для реєстрації і натисніть на посилання у листі.", + "reloadAccount": "Перезавантажити обліковий запис", + "reloadAccountDescription": "Це перезавантажить дані Вашого облікового запису із backend. Буквально те саме, що й вийти та знову увійти." +} + +export default account diff --git a/packages/i18n/src/next/uk/app.mjs b/packages/i18n/src/next/uk/app.mjs new file mode 100644 index 00000000000..c4feebac556 --- /dev/null +++ b/packages/i18n/src/next/uk/app.mjs @@ -0,0 +1,351 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const app = { + "100PercentCommunity": "100% спільноти", + "100PercentFree": "100% безкоштовно", + "100PercentOpenSource": "100% відкритий код", + "aboutFreesewing": "Про Freesewing", + "accessoryPatterns": "Викрійки аксесуарів", + "account": "Обліковий запис", + "accountCreated": "Обліковий запис створено", + "actions": "Дії", + "allDocumentation": "Вся документація", + "andThatIsAwesome": "І це чудово", + "applyThisLayout": "Застосувати макет", + "areYouSureYouWantToContinue": "Ви впевнені, що хочете продовжити?", + "askForHelp": "Попросити про допомогу", + "automatic": "Автоматично", + "averagePeopleDoNotExist": "Середньостатистичних людей не існує", + "awesome": "Чудово", + "back": "Назад", + "becauseThatWouldBeReallyHelpful": "Тому що це було б дуже корисно.", + "becomeAPatron": "Стати патроном", + "blockPatterns": "Викрійки-основи", + "blog": "Блог", + "browseBlogposts": "Перегляд блог-постів", + "browsePatterns": "Перегляд викрійок", + "browseShowcases": "Перегляд показів", + "butThatCouldChange": "Але це може змінитися", + "cancel": "Скасувати", + "changePerson": "Змінити людину", + "changePattern": "Змінити викрійку", + "chatOnDiscord": "Чат в Discord", + "checkInboxClickLinkInConfirmationEmail": "Тепер перевірте поштову скриньку та перейдіть за посиланням у листі, що ми надіслали вам.", + "chest": "Груди", + "chestInfo": "Молочні залози потребують додаткових замірів. Якщо людина не має молочних залоз, ці заміри будуть приховані. Це не впливає на створення викрійок.", + "chooseASize": "Обрати розмір", + "chooseAPerson": "Обрати людину", + "chooseADesign": "Обрати дизайн", + "chooseAPattern": "Обрати викрійку", + "chooseYourOptions": "Обрати Ваші налаштування", + "close": "Закрити", + "community": "Спільнота", + "configureLayout": "Налаштування макета", + "configureYourDraft": "Налаштуйте свою чернетку", + "contactUs": "Контакти", + "contentLocaleFallback": "Тому замість цього ми показуємо Вам англійську версію.", + "contents": "Зміст", + "continue": "Продовжити", + "copiedToClipboard": "Скопійовано в буфер обміну", + "copy": "Копіювати", + "couldYouTranslateThis": "Можете це перекласти?", + "countModelsLackingForPattern": "{count} Ваших людей не мають достатньо замірів для створення {pattern}", + "created": "Створено", + "custom": "Налаштувати", + "customSeamAllowance": "Налаштувати припуски на шви", + "lightMode": "Світлий режим", + "data": "Дані", + "darkMode": "Темний режим", + "default": "За замовчуванням", + "demo": "Демо", + "designOptions": "Налаштування дизайну", + "designs": "Дизайни", + "docs": "Документація", + "docsFooterMsg": "Документація ніколи не завершена. Сподіваємося, ми змогли відповісти на всі Ваші запитання, але якщо це не так - можна звернутися за допомогою.", + "docsNotFoundMsg": "Не вдалося знайти цю документацію. Це зазвичай значить, що вона ще не була написана.", + "docsNotFoundTitle": "Ця документація відсутня", + "documentationForDevelopers": "Документація для розробників", + "documentationForEditors": "Документація для коригувачів", + "documentationForTranslators": "Документація для перекладачів", + "documentationOverview": "Перегляд документації", + "dolls": "Ляльки", + "download": "Завантажити", + "draft": "Чернетка", + "draftPattern": "Створити {pattern}", + "testPattern": "Протестувати {pattern}", + "draftPatternForModel": "Створити {pattern} для {model}", + "drafts": "Чернетки", + "draftSettings": "Налаштування чернетки", + "dragAndDropImageHere": "Перетягніть зображення сюди або виберіть власноруч, тицьнувши на кнопку знизу", + "emailAddress": "Електронна адреса", + "emailWorksToo": "Якщо Ви не знаєте своє ім'я користувача, можна також використати свою електронну адресу для входу", + "enterEmailPickPassword": "Введіть свою електронну адресу та оберіть пароль", + "export": "Експортувати", + "exportTiledPDF": "Експортувати посторінковий PDF", + "faq": "Поширені запитання", + "fieldRemoved": "{field} видалено", + "fieldSaved": "{field} збережено", + "filterByPattern": "Фільтрувати за викрійками", + "filterPatterns": "Фільтрувати викрійки", + "forgotLoginInstructions": "Якщо Ви не пам'ятаєте свій пароль, напишіть знизу своє ім'я користувача чи електронну адресу та тицьніть кнопку Змінити пароль", + "freesewing": "Freesewing", + "freesewingOnGithub": "Freesewing на GitHub", + "garmentPatterns": "Викрійки одягу", + "giants": "Велетні", + "github": "GitHub", + "goAheadWeWillWait": "Продовжуйте, ми зачекаємо.", + "goodJob": "Молодець", + "goodToSeeYouAgain": "Раді бачити Вас знову, {user}", + "handle": "Handle", + "helpUsTranslate": "Допоможіть нам з перекладом", + "home": "Головна", + "howCanWeHelpYou": "Як ми можемо Вам допомогти?", + "howToTakeMeasurements": "Як робити заміри", + "i18n": "Інтернаціоналізація", + "imperialUnits": "Імперські одиниці (дюйм)", + "instagram": "Інстаграм", + "invalidTldMessage": ".{tld} is not a valid TLD", + "joinTheChatMsg": "Ми маємо спільноту в Discord, де Ви можете поспілкуватися з привітними людьми.", + "justAMoment": "Зачекайте хвилинку", + "layout": "Макет", + "logIn": "Увійти", + "loginWithProvider": "Увійти через {provider}", + "logOut": "Вийти", + "manual": "Manual", + "markdownHelp": "MarkDown help", + "measurements": "Заміри", + "menu": "Меню", + "metadata": "Метадані", + "metricUnits": "Метричні одиниці (см)", + "person": "Людина", + "people": "Люди", + "nameInfo": "Назва допомагає відрізняти речі. Ви можете обрати назву, яку душа забажає.", + "name": "Назва", + "addThing": "Додати {thing}", + "newThing": "Створити {thing}", + "newPatternForModel": "Створити {pattern} для {model}", + "noChanges": "Без змін", + "no": "Ні", + "noPasswordPolicy": "Ми не застосовуємо політику правил введення пароля", + "noSeamAllowance": "Без припусків на шви", + "notAllOfThisContentIsAvailableInLanguage": "Не весь цей контент доступний англійською мовою", + "notesInfo": "Це Ваші нотатки. Ви можете писати тут все, що забажаєте", + "notes": "Нотатки", + "ohNo": "О ні!", + "oneMoreThing": "І ще одна річ", + "optionalMeasurements": "Додаткові заміри", + "options": "Налаштування", + "orPayPerYear": "Чи оплачувати щороку", + "other": "Інше", + "otherThing": "Ще {thing}", + "ourPatrons": "Наші патрони", + "ourRevenuePledge": "Куди йде наш прибуток", + "patron-2": "Порохова мавпочка", + "patron-4": "First mate", + "patron-8": "Капітан", + "patronHelp": "Якщо Ви маєте будь-які запитання чи бажаєте внести зміни до свого статусу патрона — зв'яжіться з нами, будь ласка", + "patron": "Патрон", + "patronPitch": "Якщо Ви вважаєте, що ми робимо цінну роботу, та можете без труднощів відшкодувати кілька копійок щомісяця, будь ласка, підтримайте нашу працю", + "patronsKeepUsAfloat": "Freesewing існує завдяки фінансовій підтримці наших патронів. Вони тримають цей корабель на плаву.", + "patternInstructions": "Інструкції до викрійок", + "patternOptions": "Налаштування викрійок", + "pattern": "викрійка", + "sewingPatterns": "Викрійка для шиття", + "patterns": "Викрійки", + "pendingConfirmation": "Підтвердження очікується", + "perMonth": "Щомісячно", + "pleaseEnterAValidEmailAddress": "Будь ласка, вкажіть чинну електронну адресу", + "pleaseIncludeTheInformationBelow": "Будь ласка, додайте відомості нижче", + "preview": "Попередній перегляд", + "privacyNotice": "Можливе порушення приватності", + "proceedWithCaution": "Продовжуйте з обережністю", + "profile": "Обліковий запис", + "relatedLinks": "Споріднені посилання", + "remove": "Видалити", + "removeThing": "Видалити {thing}", + "reportThisOnGithub": "Повідомте про проблему на GitHub", + "requiredMeasurements": "Необхідні заміри", + "resendActivationEmailMessage": "Напишіть електронну адресу, за допомогою якої Ви зареєструвалися - ми надішлемо Вам нове повідомлення для підтвердження.", + "resendActivationEmail": "Повторно надіслати лист для активації", + "resetPassword": "Змінити пароль", + "reset": "Змінити", + "restoreDefaults": "Скидання налаштувань", + "restoreDesignDefaults": "Скинути налаштування дизайну", + "restorePatternDefaults": "Скинути налаштування викрійки", + "saveDraftToYourAccount": "Зберегти чернетку до облікового запису", + "save": "Зберегти", + "searchLanguageMsg": "Кожна мова має власний індекс пошуку. Оскільки не весь наш контент перекладений, Ви, скоріш за все, отримаєте більше результатів англійською.", + "searchLanguageTitle": "Не знайшли, що шукали?", + "search": "Пошук", + "selectAPartToMoveMirrorOrRotate": "Обрати частину для переміщення, віддзеркалення або обертання", + "selectImage": "Вибрати зображення", + "sendAnEmail": "Надіслати e-mail", + "settings": "Налаштування", + "sewingHelp": "Допомога з шиттям", + "sewingPatternsForNonAveragePeople": "Швейні викрійки для справжніх людей", + "share": "Поширити", + "shareFreesewing": "Поширити FreeSewing", + "showcase": "Готові проєкти", + "signUpForAFreeAccount": "Реєстрація безкоштовного облікового запису", + "signUp": "Реєстрація", + "signupWithProvider": "Реєстрація через {provider}", + "sortByField": "Сортувати за {field}", + "standardSeamAllowance": "Стандартні припуски на шви", + "startOver": "Почати знову", + "startTranslatingNowOrRead": "{startTranslatingNow}, або спочатку прочитайте {documentationForTranslators}.", + "startTranslatingNow": "Почни перекладати зараз", + "subscribe": "Підписатися", + "support": "Підтримати", + "supportFreesewing": "Підтримати freesewing", + "tellMeMore": "Хочу дізнатися більше", + "thanksForYourSupport": "Дякуємо за Вашу підтримку", + "thisContentIsNotAvailableInLanguage": "Цього контенту немає англійською", + "thisFieldSupportsMarkdown": "Це поле підтримує Markdown", + "thisPageRequiresAuthentication": "Ця сторінка потребує автентифікації", + "troubleLoggingIn": "Не вдається увійти?", + "twitter": "Twitter", + "txt-footer": "Freesewing працює завдяки спільноті учасників
з фінансовою підтримкою наших патронів", + "txt-tier2": "Рівень з найбільш демократичною ціною. Він дешевший за філіжанку кави, але ми дуже цінуємо Вашу підтримку.", + "txt-tier4": "Підпишіться на цей рівень та ми доставимо наші смачнющі \"булочки\" до Вашого ґанку (будь-де на мапі).", + "txt-tier8": "Якщо Ви хочете не лише підтримувати нас, а й бажаєте freesewing процвітання, цей рівень для Вас. Також: додаткові \"булочки\". ;)", + "txt-tiers": "FreeSewing існує завдяки добровільній моделі підписки", + "unitsInfo": "Freesewing підтримує як метричні, так й імперські одиниці вимірювання. Просто оберіть ті, яким надаєте перевагу. (Зазвичай використовуються одиниці, зазначені в Вашому обліковому записі.)", + "updated": "Оновлено", + "update": "Оновити", + "userHasBeenWithUsSince": "{user} тут з {since}", + "users": "Користувачі", + "utilityPatterns": "Utility Patterns", + "weAreValidatingYourConfirmationCode": "Ми перевіряємо Ваш код підтвердження", + "weCouldNotValidateYourConfirmationCode": "Нам не вдалося підтвердити Ваш код", + "weEncounteredAProblem": "У нас виникла проблема", + "weEncourageYouToReportThis": "Ми будемо вдячні, якщо Ви повідомите нам про це", + "welcomeAboard": "Ласкаво просимо", + "welcome": "Вітаємо", + "weNeverShareYourEmail": "Ми ніколи не передамо Вашу електронну адресу третім обличчям", + "whatIsThis": "Що це таке?", + "withBreasts": "З молочними залозами", + "withoutBreasts": "Без молочних залоз", + "yay": "Ура!", + "yes": "\"Так\"", + "youAreAPatron": "Ви патрон", + "youAreNotAPatron": "Ви не є патроном", + "youAreNotLoggedIn": "Ви не ввійшли в свій обліковий запис", + "yourRights": "Ваші права", + "makerDocs": "Ремісницька документація", + "devDocs": "Розробницька документація", + "slogan": "Бібліотека JavaScript для створення швейних викрійок на базі замірів", + "getStarted": "Розпочати", + "apiReference": "API Reference", + "tutorial": "Урок", + "editThisPage": "Редагувати сторінку", + "loginRequiredRedirect": "Вас було перенаправлено на сторінку входу, оскільки {page} потребує автентифікації", + "various": "Різне", + "sewing": "Шиття", + "examples": "Приклади", + "by": "від", + "years": "Роки", + "pricing": "Ціни", + "createFirst": "Розпочніть зі створення нової викрійки", + "noPattern": "Ви не маєте жодних викрійок (поки що). Створіть нову викрійку, потім збережіть її до свого облікового запису.", + "modelFirst": "Розпочніть з додавання замірів", + "noModel": "Ви не додали жодних замірів (поки що). FreeSewing може створювати швейні викрійки на базі замірів. Однак для цього нам потрібні власне заміри.", + "noModel2": "Розпочніть зі створення людини, після чого діставайте свою сантиметрову стрічку.", + "noUserBrowsingTitle": "Ви не можете просто переглядати всіх користувачів", + "noUserBrowsingText": "У нас їх тисячі. Ви дійсно хочете витрачати свій час на це?", + "usePatternMeasurements": "Використати заміри вихідної викрійки", + "createReplica": "Створити копію", + "showDetails": "Показати подробиці", + "hideDetails": "Приховати подробиці", + "clickBelowToLogOut": "Тицьніть знизу для виходу", + "compare": "Порівняти", + "savePattern": "Зберегти викрійку", + "recreate": "Відтворити", + "recreateThing": "Відтворити {thing}", + "recreateThingForPerson": "Відтворити {thing} для {person}", + "seeYouLaterUser": "До зустрічі, {user}", + "exportForPrinting": "Експортувати для друку", + "exportForEditing": "Експортувати для коригування", + "startWithNeckTitle": "Розпочніть з обхвату шиї", + "startWithNeckDescription": "Спираючись на Ваш обхват шиї, ми можемо зловити помилки в Ваших замірах.", + "whatYouNeed": "Що Вам потрібно", + "fabricOptions": "Варіанти тканини", + "cutting": "Вирізання", + "instructions": "Інструкція", + "hide": "Приховати", + "show": "Показати", + "oneMomentPlease": "Будь ласка, зачекайте", + "loadingMagic": "Ми завантажуємо магію", + "estimate": "Прикидка", + "actual": "Насправді", + "weEstimateYM2B": "Ми прикидаємо, що {measurement} дорівнює:", + "exportAsData": "Експорт даних", + "availablePatterns": "Доступні викрійки", + "browseCollection": "Огляд колекції", + "browseYourPatterns": "Переглянути викрійки", + "yourPatterns": "Ваші викрійки", + "loginNeededToSavePatternsMsg": "Ви маєте увійти, аби зберігати викрійки", + "docsForContributors": "Документація для учасників", + "patternDocs": "Документація викрійок", + "socialMedia": "Соціальні мережі", + "create": "Створити", + "browse": "Огляд", + "patrons": "Патрони", + "scrollToTop": "Повернутися нагору", + "sitemap": "Мапа сайту", + "contributeToThing": "Долучитися до {thing}", + "mtmIsOurJam": "Ми спеціалізуємося в швейних викрійках на базі замірів", + "fitYouDeserve": "Ви обділяєте себе, обираючи стандартизовані розміри.
Зареєструйтеся сьогодні та отримайте крій, що личить Вам.", + "supportNag": "FreeSeewing є безкоштовною платформою, але ми будемо вдячні, якщо Ви підтримаєте нас.", + "madeToMeasure": "На базі замірів", + "sizes": "Розміри", + "standardSizes": "Стандартні розміри", + "accountRequired": "Ця функція вимагає обліковий запис FreeSewing", + "size": "Розмір", + "switchToThing": "Перейти до {thing}", + "saveThing": "Зберегти {thing}", + "shareThing": "Поширити {thing}", + "link": "Посилання", + "cloneThing": "Копіювати {thing}", + "cloneDescription": "Відтворити точну копію, використовуючи заміри вихідної викрійки.", + "furtherReading": "Подальше вивчення", + "saveAsNewPattern": "Зберегти як нову викрійку", + "saveAsNewPattern-txt": "Збережіть цю викрійку/копію в своєму обліковому записі FreeSewing", + "exportPattern": "Експортувати викрійку", + "printPattern": "Роздрукувати викрійку", + "exportPattern-txt": "Експортувати PDF для Вашого принтера, або завантажити цю викрійку в інших форматах", + "editThing": "Коригувати {thing}", + "editPattern-txt": "Відкрити цю викрійку в швейному редакторі", + "featureRequiresAccount": "Ця функція вимагає обліковий запис FreeSewing", + "zoom": "Масштаб", + "zoomIn": "Збільшити", + "zoomOut": "Зменшити", + "zoom-txt": "Перемикає між ужиманням висоти чи ширини викрійки для розміщення на Вашому екрані", + "savePattern-txt": "Збережіть цю викрійку в своєму обліковому записі FreeSewing", + "comparePattern": "Порівняти викрійку", + "showPattern": "Показати викрійку", + "comparePattern-txt": "Порівняйте свою викрійку зі стандартизованими розмірами для того, щоб побачити можливі проблеми моделювання", + "recreatePattern": "Відтворити викрійку", + "recreatePattern-txt": "Оберіть іншу людину та відтворіть цю викрійку для неї", + "editOwnPatternsOnly": "Ви можете коригувати лише свої викрійки", + "editOwnPatternsOnly-txt": "Ви не можете скоригувати цю викрійку, бо вона не Ваша. Але Ви можете використувати її як базу для створення власної викрійки.", + "updateNotes-txt": "Оновлюйте нотатки до Ваших викрійок", + "franceWarning": "До уваги користувачів з Франції", + "franceWarning-txt": "Декілька французьких провайдерів електронної пошти — включаючи free.fr, laposte.net, orange.fr та sfr.fr — відомі регулярним блокуванням наших електронних листів.", + "emailNotReceived": "Якщо Ви не отримаєте лист для активації, будь ласка, зв'яжіться з нами, щоб ми могли Вам допомогти.", + "error": "Помилка", + "info": "Інформація", + "warning": "Увага", + "debug": "Налагодження", + "unsubscribe": "Відписатися", + "slogan-come": "Приходьте за викрійками", + "slogan-stay": "Залишайтеся заради спільноти", + "lightTheme": "Світла тема", + "darkTheme": "Темна тема", + "hax0rTheme": "Тема Hax0r", + "lgbtqTheme": "Тема ЛГБТК", + "transTheme": "Транс тема" +} + +export default app diff --git a/packages/i18n/src/next/uk/cfp.mjs b/packages/i18n/src/next/uk/cfp.mjs new file mode 100644 index 00000000000..850254f411c --- /dev/null +++ b/packages/i18n/src/next/uk/cfp.mjs @@ -0,0 +1,40 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const cfp = { + "author": "Автор", + "githubRepo": "Репозиторій GitHub", + "packageManager": "Менеджер пакунків", + "patternName": "Назва викрійки", + "patternType": "Тип викрійки", + "patternCreated": "Ваш каркас викрійки створено у", + "runTheseCommands": "Щоб розпочати, запустіть цю команду", + "startRollup": "У одному терміналі запустіть ролап у режимі перегляду", + "startWebpack": "Це відкриє папку \"приклад\" та запустить девелопмент.", + "devDocsAvailableAt": "Документація для розробників доступна за адресою", + "talkToUs": "Для запитань, відгуків чи пропозицій, приєднуйтесь до нашого серверу в Discord", + "draftYourPattern": "Створіть Вашу викрійку", + "testYourPattern": "Протестувати Вашу викрійку", + "draftThing": "Створити {thing}", + "testThing": "Протестувати {thing}", + "renderInBrowser": "Натисніть нижче, щоб відобразити Вашу викрійку у браузері.", + "weWillReRender": "Коли Ви виконаєте зміни, ми перезавантажимо зображення для Вас.", + "youCan": "Ви можете", + "enterMeasurements": "Ввести вимірювання вручну", + "preloadMeasurements": "Завантажити набір мірок", + "size": "Розмір", + "noRequiredMeasurements": "Ця викрійка не потребує замірів", + "howtoAddMeasurements": "Щоб додати бажані мірки, додайте їх у секцію заміри у файлі конфігурації викрійки.", + "seeDocsAt": "Документація по цій темі доступна за адресою", + "clearDesignMode": "Очистити режим дизайну", + "designMode": "Режим дизайну", + "exportMode": "Режим експорту", + "thingIsEnabled": "{thing} увімкнено", + "thingIsDisabled": "{thing} вимкнено", + "turnOn": "Увімкнути", + "turnOff": "Вимкнути", + "validNameWarning": "Будь ласка, оберіть іншу назву, бо дана назва може призвести до проблем.\nМи (повторно) використовуємо назву викрійки як NPM назву пакету.\nІмена пакунків повинні бути в нижньому регістрі та не можуть містити спеціальних символів.\nБудь ласка, назвіть викрійку згідно правил, наприклад:" +} + +export default cfp diff --git a/packages/i18n/src/next/uk/common.mjs b/packages/i18n/src/next/uk/common.mjs new file mode 100644 index 00000000000..06ec1b05d4a --- /dev/null +++ b/packages/i18n/src/next/uk/common.mjs @@ -0,0 +1,20 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const common = { + "account": "Обліковий запис", + "blog": "Блог", + "commumity": "Спільнота", + "designs": "Дизайни", + "docs": "Документація", + "patternInstructions": "Інструкції до викрійок", + "patternOptions": "Налаштування викрійок", + "requiredMeasurements": "Необхідні вимірювання", + "showcase": "Готові проєкти", + "sloganCome": "Приходьте за викрійками", + "sloganStay": "Залишайтеся заради спільноти", + "support": "Підтримка" +} + +export default common diff --git a/packages/i18n/src/next/uk/cty.mjs b/packages/i18n/src/next/uk/cty.mjs new file mode 100644 index 00000000000..0f7ae1a4eeb --- /dev/null +++ b/packages/i18n/src/next/uk/cty.mjs @@ -0,0 +1,27 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const cty = { + "wafsHashtag": "WeAreFreeSewing", + "weAreACommunityOfMakers": "Ми - спільнота ремісників", + "weProvideMtmSewingPatterns": "Ми надаємо викрійки, адаптовані під надані Вами заміри", + "isAPatron": "є патроном", + "contributesWith": "співпрацює з", + "communityBuilding": "Створення спільноти", + "development": "Розробка", + "patternTesting": "Тестування викрійок", + "patternDesign": "Дизайн викрійок", + "support": "Підтримка", + "translation": "Переклад", + "writing": "Письмо", + "whereToFindUs": "Де нас знайти", + "whoWeAre": "Про нас", + "community": "Спільнота", + "team": "Команда", + "teams": "Команди", + "contributors": "Помічники", + "calls": "Дзвінки помічників" +} + +export default cty diff --git a/packages/i18n/src/next/uk/docs.mjs b/packages/i18n/src/next/uk/docs.mjs new file mode 100644 index 00000000000..2474178544c --- /dev/null +++ b/packages/i18n/src/next/uk/docs.mjs @@ -0,0 +1,10 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const docs = { + "thingIsDeprecated": "{thing} є застарілим", + "weRecommendThingInstead": "Ми рекомендуємо {thing} замість цього" +} + +export default docs diff --git a/packages/i18n/src/next/uk/email.mjs b/packages/i18n/src/next/uk/email.mjs new file mode 100644 index 00000000000..19e58ec98da --- /dev/null +++ b/packages/i18n/src/next/uk/email.mjs @@ -0,0 +1,41 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const email = { + "chatWithUs": "Напишіть нам", + "emailchangeActionText": "Підтвердіть нову адресу електронної пошти", + "emailchangeCopy1": "Ви запросили зміну адреси електронної пошти, прив'язану до вашого облікового запису на freesewing.org.

Перед тим як це зробити, необхідно підтвердити нову адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:", + "emailchangeHeaderOpeningLine": "Просто перевіряємо, що ми зможемо зв'язатися з Вами, коли це буде необхідно", + "emailchangeHiddenIntro": "Час підтвердити нову адресу електронної пошти", + "emailchangeSubject": "Будь ласка, підтвердіть нову адресу електронної пошти", + "emailchangeTitle": "Будь ласка, підтвердіть нову адресу електронної пошти", + "emailchangeWhy": "Ви отримали цей лист, оскільки змінили адресу електронної пошти, прив'язану до вашого облікового запису на freesewing.org", + "footerCredits": "Зроблено Йостом та учасниками проєкту завдяки фінансовій допомозі наших патронів ❤️ ", + "footerSlogan": "FreeSewing є платформою з відкритим кодом для створення швейних викрійок, які адаптуються під виміри користувача", + "goodbyeCopy1": "Якщо Ви хочете поділитися, чому Ви йдете, можете відповісти на це повідомлення.
З нашого боку, ми більше не турбуватимемо Вас.", + "goodbyeHeaderOpeningLine": "Просто щоб Ви знали – Ви завжди можете повернутися", + "goodbyeHiddenIntro": "Дякуємо за ще один шанс для FreeSewing", + "goodbyeSubject": "До побачення 👋", + "goodbyeTitle": "Дякуємо за ще один шанс для FreeSewing", + "goodbyeWhy": "Ви отримали цей лист, як останнє прощання після видалення вашого облікового запису на freesewing.org", + "joostFromFreesewing": "Йост з FreeSewing", + "passwordresetActionText": "Повторно отримати доступ до вашого облікового запису", + "passwordresetCopy1": "Ви забули пароль для облікового запису на freesewing.org.

Натисніть на посилання нижче, щоб змінити пароль:", + "passwordresetHeaderOpeningLine": "Не хвилюйтеся, це стається з нами усіма", + "passwordresetHiddenIntro": "Повторно отримати доступ до вашого облікового запису", + "passwordresetSubject": "Повторно отримати доступ до вашого облікового запису на freesewing.org", + "passwordresetTitle": "Змінити пароль і повторно отримати доступ до вашого облікового запису", + "passwordresetWhy": "Ви отримали цей електронний лист, тому що ви запросили зміну паролю на сайті freesewing.org", + "questionsJustReply": "Якщо у вас є запитання, просто надішліть відповідь на цей E-mail. Ми завжди раді допомогти 🙂", + "signature": "З любов'ю,", + "signupActionText": "Підтвердіть адресу електронної пошти", + "signupCopy1": "Дякуємо за реєстрацію на freesewing.org.

Перед початком роботи потрібно підтвердити Вашу адресу електронної пошти. Будь ласка, натисніть на посилання нижче, щоб зробити це:", + "signupHeaderOpeningLine": "Ми дуже раді, що Ви приєдналися до спільноти FreeSewing.", + "signupHiddenIntro": "Час підтвердити нову адресу електронної пошти", + "signupSubject": "Ласкаво просимо на freesewing.org", + "signupTitle": "Ласкаво просимо", + "signupWhy": "Ви отримали цей електронний лист, тому що ви щойно зареєструвалися на сайті freesewing.org" +} + +export default email diff --git a/packages/i18n/src/next/uk/errors.mjs b/packages/i18n/src/next/uk/errors.mjs new file mode 100644 index 00000000000..5c710791cb4 --- /dev/null +++ b/packages/i18n/src/next/uk/errors.mjs @@ -0,0 +1,18 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const errors = { + "404": "Сторінку не знайдено", + "confirmationNotFound": "Якщо Ви перейшли на дану сторінку через посилання в електронному листі, ми будемо вдячні, якщо Ви повідомите нам про цю проблему.", + "emailExists": "У нас вже є користувач з цією адресою електронної пошти. Можливо, Ви хочете авторизуватися?", + "networkError": "Помилка сервера або мережі", + "notAValidImageFormat": "Неприпустимий формат зображення", + "requestFailedWithStatusCode400": "Не вдалося виконати запит", + "requestFailedWithStatusCode401": "Помилка аутентифікації", + "requestFailedWithStatusCode403": "Заборонено", + "requestFailedWithStatusCode500": "Виникла неочікувана проблема. Будь ласка, повідомте про це.", + "something": "Щось пішло не так" +} + +export default errors diff --git a/packages/i18n/src/next/uk/filter.mjs b/packages/i18n/src/next/uk/filter.mjs new file mode 100644 index 00000000000..47c2296495a --- /dev/null +++ b/packages/i18n/src/next/uk/filter.mjs @@ -0,0 +1,7 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const filter = {} + +export default filter diff --git a/packages/i18n/src/next/uk/gdpr.mjs b/packages/i18n/src/next/uk/gdpr.mjs new file mode 100644 index 00000000000..a1adfbd58dd --- /dev/null +++ b/packages/i18n/src/next/uk/gdpr.mjs @@ -0,0 +1,46 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const gdpr = { + "compliant": "Freesewing.org поважає вашу конфіденційність і ваші права. Ми застосовуємо Загальний регламент про захист даних (GDPR) Європейського Союзу (ЄС).", + "consent": "Згода", + "consentForModelData": "Дозвіл на дані моделі", + "consentForProfileData": "Дозвіл на дані облікового запису", + "consentGiven": "Згода отримана", + "consentNotGiven": "Згода не отримана", + "consentWhyAnswer": "Згідно з GDPR, обробка ваших персональних даних вимагає Вашої згоди - іншими словами, Ваш дозвіл.", + "createMyAccount": "Створити обліковий запис", + "furtherReading": "Подальше вивчення", + "modelQuestion": "Чи даєте Ви згоду на обробку даних моделі?", + "modelWarning": "Анулювання даної згоди зробить неможливим використання даних замірів моделі. Це також анулює функціонал вебсайту, який залежить від даної інформації.", + "modelWhatAnswer": "Заміри та налаштування молочних залоз кожної моделі.", + "modelWhatAnswerOptional": "За навності: Зображення моделі та ім'я моделі.", + "modelWhatQuestion": "Що таке дані моделі?", + "modelWhyAnswer": "Для розробки викрійок, адаптованих під заміри спеціально вимірунам необхідні виміри тіла.", + "noConsentNoAccount": "Без цієї згоди ми не можемо створити Ваш обліковий запис", + "noConsentNoPatterns": "Без цієї згоди, Ви не можете створити будь-які викрійки", + "noIDoNot": "Ні, не даю", + "openDataInfo": "Ці дані використовуються для вивчення і розуміння людського тіла в усіх його формах. Це дозволяє нам покращити наші викрійки та створювати більш підходящий до тіла одяг. Незважаючи на те, що ці дані є анонімними, Ви маєте право не давати згоду на їх обробку.", + "openDataQuestion": "Поділитися замірами анонімно як відкритими даними", + "profileQuestion": "Чи даєте Ви згоду на обробку даних Вашого облікового запису?", + "profileShareAnswer": "Ні, ніколи.", + "profileTimingAnswer": "12 місяців після останнього входу в систему, або до тих пір, поки Ви не видалите Ваш обліковий запис або скасуєте дану згоду.", + "profileWarning": "Відкликання згоди видалить усі Ваші данні. Це має той же ефект, що і видалення облікового запису.", + "profileWhatAnswerOptional": "За наявності: зображення облікового запису, біоі соціальні мережі", + "profileWhatAnswer": "Ваша електронна адреса, ім'я користувачаі пароль.", + "profileWhatQuestion": "Що таке дані облікового запису?", + "profileWhyAnswer": "Щоб автентифікувати Вас, зв'язатися з Вами коли це потрібно та задля покращення нашої спільноти.", + "readMore": "Для отримання додаткової інформації, будь ласка, прочитайте наше повідомлення про конфіденційність.", + "readRights": "Для отримання додаткової інформації, будь ласка, прочитайте про Ваші права.", + "revokeConsent": "Відкликати згоду", + "shareQuestion": "Чи передаємо ми її іншим?", + "timingQuestion": "Скільки ми її зберігаємо?", + "whatYouNeedToKnow": "Що вам потрібно знати", + "whyQuestion": "Чому нам це потрібно?", + "yesIDoObject": "Ні, я проти", + "yesIDo": "Так, я даю згоду", + "openData": "Примітка: FreeSewing публікує анонімні заміри тіла як відкриті дані для наукових досліджень. Ви маєте право відмовитися від цього" +} + +export default gdpr diff --git a/packages/i18n/src/next/uk/homepage.mjs b/packages/i18n/src/next/uk/homepage.mjs new file mode 100644 index 00000000000..354796ea099 --- /dev/null +++ b/packages/i18n/src/next/uk/homepage.mjs @@ -0,0 +1,9 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const homepage = { + "scrollDownToLearnMore": "Прокрутіть вниз, щоб дізнатися більше про FreeSewing і безкоштовно скористатися його функціями" +} + +export default homepage diff --git a/packages/i18n/src/next/uk/i18n.mjs b/packages/i18n/src/next/uk/i18n.mjs new file mode 100644 index 00000000000..e50cb5d05c5 --- /dev/null +++ b/packages/i18n/src/next/uk/i18n.mjs @@ -0,0 +1,13 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const i18n = { + "de": "Німецька", + "en": "Англійська", + "es": "Іспанська", + "fr": "Французька", + "nl": "Нідерландська" +} + +export default i18n diff --git a/packages/i18n/src/next/uk/index.mjs b/packages/i18n/src/next/uk/index.mjs new file mode 100644 index 00000000000..75b2c125528 --- /dev/null +++ b/packages/i18n/src/next/uk/index.mjs @@ -0,0 +1,153 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +import account from "./account.mjs" +import app from "./app.mjs" +import cfp from "./cfp.mjs" +import common from "./common.mjs" +import homepage from "./homepage.mjs" +import ograph from "./ograph.mjs" +import patrons from "./patrons.mjs" +import posts from "./posts.mjs" +import themes from "./themes.mjs" +import workbench from "./workbench.mjs" +import cty from "./cty.mjs" +import docs from "./docs.mjs" +import email from "./email.mjs" +import errors from "./errors.mjs" +import filter from "./filter.mjs" +import gdpr from "./gdpr.mjs" +import i18n from "./i18n.mjs" +import intro from "./intro.mjs" +import jargon from "./jargon.mjs" +import lab from "./lab.mjs" +import measurements from "./measurements.mjs" +import optiongroups from "./optiongroups.mjs" +import o_aaron from "./o_aaron.mjs" +import o_albert from "./o_albert.mjs" +import o_bee from "./o_bee.mjs" +import o_bella from "./o_bella.mjs" +import o_benjamin from "./o_benjamin.mjs" +import o_bent from "./o_bent.mjs" +import o_bob from "./o_bob.mjs" +import o_breanna from "./o_breanna.mjs" +import o_brian from "./o_brian.mjs" +import o_bruce from "./o_bruce.mjs" +import o_carlita from "./o_carlita.mjs" +import o_carlton from "./o_carlton.mjs" +import o_cathrin from "./o_cathrin.mjs" +import o_charlie from "./o_charlie.mjs" +import o_cornelius from "./o_cornelius.mjs" +import o_diana from "./o_diana.mjs" +import o_florence from "./o_florence.mjs" +import o_florent from "./o_florent.mjs" +import o_hi from "./o_hi.mjs" +import o_holmes from "./o_holmes.mjs" +import o_hortensia from "./o_hortensia.mjs" +import o_huey from "./o_huey.mjs" +import o_hugo from "./o_hugo.mjs" +import o_jaeger from "./o_jaeger.mjs" +import o_lucy from "./o_lucy.mjs" +import o_lunetius from "./o_lunetius.mjs" +import o_noble from "./o_noble.mjs" +import o_paco from "./o_paco.mjs" +import o_penelope from "./o_penelope.mjs" +import o_sandy from "./o_sandy.mjs" +import o_shin from "./o_shin.mjs" +import o_simon from "./o_simon.mjs" +import o_simone from "./o_simone.mjs" +import o_sven from "./o_sven.mjs" +import o_tamiko from "./o_tamiko.mjs" +import o_teagan from "./o_teagan.mjs" +import o_theo from "./o_theo.mjs" +import o_tiberius from "./o_tiberius.mjs" +import o_titan from "./o_titan.mjs" +import o_trayvon from "./o_trayvon.mjs" +import o_unice from "./o_unice.mjs" +import o_ursula from "./o_ursula.mjs" +import o_wahid from "./o_wahid.mjs" +import o_walburga from "./o_walburga.mjs" +import o_waralee from "./o_waralee.mjs" +import parts from "./parts.mjs" +import patterns from "./patterns.mjs" +import plugin from "./plugin.mjs" +import settings from "./settings.mjs" +import welcome from "./welcome.mjs" + +const allNamespaces = { + account, + app, + cfp, + common, + homepage, + ograph, + patrons, + posts, + themes, + workbench, + cty, + docs, + email, + errors, + filter, + gdpr, + i18n, + intro, + jargon, + lab, + measurements, + optiongroups, + o_aaron, + o_albert, + o_bee, + o_bella, + o_benjamin, + o_bent, + o_bob, + o_breanna, + o_brian, + o_bruce, + o_carlita, + o_carlton, + o_cathrin, + o_charlie, + o_cornelius, + o_diana, + o_florence, + o_florent, + o_hi, + o_holmes, + o_hortensia, + o_huey, + o_hugo, + o_jaeger, + o_lucy, + o_lunetius, + o_noble, + o_paco, + o_penelope, + o_sandy, + o_shin, + o_simon, + o_simone, + o_sven, + o_tamiko, + o_teagan, + o_theo, + o_tiberius, + o_titan, + o_trayvon, + o_unice, + o_ursula, + o_wahid, + o_walburga, + o_waralee, + parts, + patterns, + plugin, + settings, + welcome +} + +export default allNamespaces diff --git a/packages/i18n/src/next/uk/intro.mjs b/packages/i18n/src/next/uk/intro.mjs new file mode 100644 index 00000000000..187565949ba --- /dev/null +++ b/packages/i18n/src/next/uk/intro.mjs @@ -0,0 +1,19 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const intro = { + "txt-blog": "Новини, оновлення та анонси від команди FreeSewing", + "txt-community": "Проєкт існує на добровільних засадах. FreeSewing не прив'язаний до жодних комерційних засад та компаній.", + "txt-different": "Чому ми особливі", + "txt-draft": "Оберіть одну з викрійок, модель та налаштування. Ми зробимо решту.", + "txt-how": "Як це працює", + "txt-join": "Приєднайтеся до тисяч інших користувачів та створіть безкоштовний акаунт на freesewing.org.", + "txt-model": "Всі наші викрійки адаптуються під задані виміри. Тому перше, що варто зробити – піти взяти сантиметрову стрічку.", + "txt-newHere": "Якщо ви тут вперше – найкраще місце для початку є наше демо:", + "txt-opensource": "Наша платформа, наші викрійки і навіть наш вебсайт. Весь наш код доступний на GitHub. Пулл реквести вітаються!", + "txt-patrons": "FreeSewing існує завдяки фінансовій підтримці наших Патронів. Прокрутіть вниз, щоб дізнатися про нашу модель підписки.", + "txt-showcase": "Завершені проекти від спільноти FreeSewing" +} + +export default intro diff --git a/packages/i18n/src/next/uk/jargon.mjs b/packages/i18n/src/next/uk/jargon.mjs new file mode 100644 index 00000000000..2206c1d8781 --- /dev/null +++ b/packages/i18n/src/next/uk/jargon.mjs @@ -0,0 +1,36 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const jargon = { + "basting.d": "Дивіться Зметування у документація до шиття", + "coverlock.d": "Дивіться Каверлок у Документація до шиття", + "cutting.d": "Дивіться Вирізання у Документація до шиття", + "darts.d": "Дивіться Виточки уДокументація до шиття", + "doubleWeltPockets.d": "Дивіться Кишеня з подвійною листочкою уДокументація до шиття", + "ease.d": "Дивіться Свобода облягання у Документація до шиття", + "edgestitch.d": "Дивіться Шов по краю у Документація до шиття", + "fabricGrain.d": "Дивіться Нитка основа тканини у Документація до шиття", + "goodSidesTogether.d": "Дивіться Лицьові сторони одна до одної у Документація до шиття", + "onTheFold.d": "Дивіться На згині у Документація до шиття", + "hemming.d": "Дивіться Підшивання краю у Документація до шиття", + "jersey.d": "Дивіться Джерсі у Документація до шиття", + "knitBinding.d": "Дивіться Трикотажна бейка у Документація до шиття", + "knitFabric.d": "Дивіться Трикотаж у Документація до шиття", + "pinning.d": "Дивіться Зметування булавками у Документація до шиття", + "rayon.d": "Дивіться Віскоза уДокументація до шиття", + "sa.d": "Дивіться Припуск на шов у Документація до шиття", + "serger.d": "Дивіться Оверлок у Документація до шиття", + "slipstitch.d": "Дивіться Потайний шов у Документація до шиття", + "topstitching.d": "Дивіться Оздоблювальний шов у Документація до шиття", + "trimming.d": "Дивіться Підрізання припусків на шов у Документація до шиття", + "twinNeedle.d": "Дивіться Подвійна голка у Документація до шиття", + "zigZag.d": "Дивіться шов \"Зіг-заг\" уДокументація до пошиття", + "freesewing.d": "FreeSewing є платформою з відкритим кодом для створення швейних викрійок, які адаптуються під виміри користувача", + "patternOptions.d": "Налаштування викрійки дозволяє Вам змінити дизайн викрійки за Вашими побажаннями", + "draftSettings.d": "налаштування чернетки надає Вам контроль над генерацією викрійки", + "patrons.d": "Патрони фінансово підтримують FreeSewing. Вони є лояльними прихильниками, які забезпечують стійке майбутнє для freesewing.org, нашого коду, викрійок та нашої спільноти.", + "msf.d": "Médecins Sans Frontières/Лікарі без кордонів – Більше на msf.org" +} + +export default jargon diff --git a/packages/i18n/src/next/uk/lab.mjs b/packages/i18n/src/next/uk/lab.mjs new file mode 100644 index 00000000000..e65df29e00c --- /dev/null +++ b/packages/i18n/src/next/uk/lab.mjs @@ -0,0 +1,13 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const lab = { + "slogan": "Лабораторія FreeSewing забезпечує", + "slogan1": "Всі наші дизайни викрійок", + "slogan2": "Нова & стара версія", + "slogan3": "Bleeding edge code", + "slogan4": "Не запущені дизайни" +} + +export default lab diff --git a/packages/i18n/src/next/uk/measurements.mjs b/packages/i18n/src/next/uk/measurements.mjs new file mode 100644 index 00000000000..cd39e720d26 --- /dev/null +++ b/packages/i18n/src/next/uk/measurements.mjs @@ -0,0 +1,46 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const measurements = { + "ankle": "Обхват щиколотки", + "biceps": "Обхват біцепсів", + "bustFront": "Передній напівобхват грудей", + "bustPointToUnderbust": "Центр грудей до підгруддя", + "bustSpan": "Центр грудей", + "chest": "Обхват грудей", + "crossSeam": "Посадка", + "crossSeamFront": "Посадка спереду", + "head": "Обхват голови", + "heel": "Обхват підйому", + "highBustFront": "Напівобхват над грудьми", + "highBust": "Обхват над грудьми", + "hips": "Обхват тазу", + "hpsToBust": "Від плеча до грудей", + "hpsToWaistBack": "Від плеча до талії ззаду", + "hpsToWaistFront": "Від плеча до талії спереду", + "inseam": "Внутрішній шов", + "knee": "Обхват коліна", + "neck": "Обхват шиї", + "seat": "Обхват стегон", + "seatBack": "Напівобхват стегон", + "crotchDepth": "Висота сидіння", + "shoulderSlope": "Нахил плеча", + "shoulderToElbow": "Від плеча до ліктя", + "shoulderToShoulder": "Ширина плечей", + "shoulderToWrist": "Від плеча до зап'ястя", + "underbust": "Підгруддя", + "upperLeg": "Обхват верху ноги", + "waist": "Обхват талії", + "waistBack": "Ширина талії ззаду", + "waistToArmhole": "Від талії до пройми", + "waistToFloor": "Від талії до підлоги", + "waistToHips": "Талія до кісточки таза", + "waistToKnee": "Талія до коліна", + "waistToSeat": "Від талії до стегон", + "waistToUnderbust": "Від талії до підгруддя", + "waistToUpperLeg": "Від талії до початку ноги", + "wrist": "Обхват зап'ясть" +} + +export default measurements diff --git a/packages/i18n/src/next/uk/o_aaron.mjs b/packages/i18n/src/next/uk/o_aaron.mjs new file mode 100644 index 00000000000..6c973d73cdc --- /dev/null +++ b/packages/i18n/src/next/uk/o_aaron.mjs @@ -0,0 +1,24 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_aaron = { + "armholeDrop.t": "Спуск пройми", + "armholeDrop.d": "Опускає пройму на обрану відстань. Негативний показик підіймає пройму.", + "backlineBend.t": "Задня частина пройми", + "backlineBend.d": "Визначає форму/криву задньої частини пройми.", + "hipsEase.t": "Свобода облягяння на животі", + "hipsEase.d": "Відсоток свободи облягання на животі.", + "necklineBend.t": "Форма горловини", + "necklineBend.d": "Визначає форму/криву горловини спереду.", + "necklineDrop.t": "Спуск горловини", + "necklineDrop.d": "Процент відкриття шиї спереду.", + "shoulderStrapPlacement.t": "Розташування лямки", + "shoulderStrapPlacement.d": "Визначає розташування лямки ближче до шиї (нижчі номери) або ближче до плеча (вищі номери).", + "shoulderStrapWidth.t": "Ширина лямки", + "shoulderStrapWidth.d": "Визначає ширину лямок.", + "stretchFactor.t": "Розтяжність", + "stretchFactor.d": "Визначає горизонтальне зменшення свободи облягання." +} + +export default o_aaron diff --git a/packages/i18n/src/next/uk/o_albert.mjs b/packages/i18n/src/next/uk/o_albert.mjs new file mode 100644 index 00000000000..5898cd43084 --- /dev/null +++ b/packages/i18n/src/next/uk/o_albert.mjs @@ -0,0 +1,20 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_albert = { + "backOpening.t": "Відкриття спини", + "backOpening.d": "Контролює відкриття на задній частині фартука", + "chestDepth.t": "Довжина лямки", + "chestDepth.d": "Контролює довжину лямки", + "lengthBonus.t": "Додаткова довжина", + "lengthBonus.d": "Контролює довжину фартука", + "bibLength.t": "Довжина нагрудної пройми", + "bibLength.d": "Контролює довжину нагрудної пройми", + "bibWidth.t": "Ширина нагрудної пройми", + "bibWidth.d": "Контролює ширину нагрудної пройми", + "strapWidth.t": "Ширина лямки", + "strapWidth.d": "Контролює ширину лямки" +} + +export default o_albert diff --git a/packages/i18n/src/next/uk/o_bee.mjs b/packages/i18n/src/next/uk/o_bee.mjs new file mode 100644 index 00000000000..f4545f1d4cf --- /dev/null +++ b/packages/i18n/src/next/uk/o_bee.mjs @@ -0,0 +1,62 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_bee = { + "chestEase.t": "Свобода облягання на грудях", + "chestEase.d": "Контролює свободу облягання грудей у викрійці-основі Белла, на якій основана Бі", + "waistEase.t": "Свобода облягання на талії", + "waistEase.d": "Контролює свободу облягання талії у викрійці-основі Белла, на якій основана Бі", + "bustSpanEase.t": "Свобода облягання центру грудей", + "bustSpanEase.d": "Контролює свободу облягання центру грудей у викрійці-основі Белла, на якій основана Бі", + "topDepth.t": "Глибина верху", + "topDepth.d": "Контролює, як високо чашка піднімається наверх", + "bottomCupDepth.t": "Глибина низу", + "bottomCupDepth.d": "Контролює, як низько чашка опускається вниз", + "sideDepth.t": "Глибина боку", + "sideDepth.d": "Контролює, як далеко чашка збільшується у сторону", + "sideCurve.t": "Дуга лінії боку", + "sideCurve.d": "Контролює дугу сторони чашки", + "frontCurve.t": "Дуга внутрішньої лінії", + "frontCurve.d": "Контролює дугу внутрішньої сторони чашки", + "bellaGuide.t": "Показати Беллу", + "bellaGuide.d": "Показує контур викрійки-основи Белла, на якій основана Бі", + "ties.t": "Зав'язки", + "ties.d": "Чи включати до викрійки зав'язки, так чи ні", + "bandTieWidth.t": "Ширина зав'язок на спині", + "bandTieWidth.d": "Контролює ширину зав'язок на спині", + "bandTieLength.t": "Довжина зав'язок на спині", + "bandTieLength.d": "Контролює довжину зав'язок на спині", + "bandTieEnds.t": "Кінчики зав'язок на спині", + "bandTieEnds.d": "Створює прямі або загострені кінчики на зав'язках", + "bandTieColours.t": "Кольори зав'язок на спині", + "bandTieColours.d": "Створює монохромні або двоколірні зав'язки на спині", + "neckTieWidth.t": "Ширина зав'язок на шиї", + "neckTieWidth.d": "Контролює ширину зав'язок навколо шиї", + "neckTieLength.t": "Довжина зав'язок навколо шиї", + "neckTieLength.d": "Контролює довжину зав'язок навколо шиї", + "neckTieEnds.t": "Кінчики зав'язок навколо шиї", + "neckTieEnds.d": "Створює прямі або гострі кінчики на зав'язках навколо шиї", + "neckTieColours.t": "Колір зав'язок навколо шиї", + "neckTieColours.d": "Створює монохромні або двоколірні зав'язки навколо шиї", + "crossBackTies.t": "Перехресні зав'язки", + "crossBackTies.d": "Чи включати до викрійки перехресні зав'язки на спині", + "bandLength.t": "Довжина резинки (перехресні зав'язки)", + "bandLength.d": "Контролює довжину резинки навколо спини для версії Бі з перехресними зав'язками", + "backDartHeight.t": "Висота виточки на спині (Белла)", + "backDartHeight.d": "Контролює висоту виточки на спині у викрійці-основі Белла, на якій основана Бі", + "armholeDepth.t": "Глибина пройми (Белла)", + "armholeDepth.d": "Контролює глибину пройми у викрійці-основі Белла, на якій основана Бі", + "frontArmholePitchDepth.t": "Передній виступ пройми (Белла)", + "frontArmholePitchDepth.d": "Контролює передній виступ пройми у викрійці-основі Белла, на якій основана Бі", + "frontShoulderWidth.t": "Передня ширина плеча (Белла)", + "frontShoulderWidth.d": "Контролює передню ширину плеча у викрійці-основі Белла, на якій основана Бі", + "fullChestEaseReduction.t": "Зменшення грудної частини (Белла)", + "fullChestEaseReduction.d": "Контролює зменшення грудної частини у викрійці-основі Белла, на якій основана Бі", + "highBustWidth.t": "Ширина над грудьми (Белла)", + "highBustWidth.d": "Контролює ширину над грудьми у викрійці-основі Белла, на якій основана Бі", + "shoulderToShoulderEase.t": "Свобода облягання ширини плечей (Белла)", + "shoulderToShoulderEase.d": "Контролює свободу облягання ширини плечей у викрійці-основі Белла, на якій основана Бі" +} + +export default o_bee diff --git a/packages/i18n/src/next/uk/o_bella.mjs b/packages/i18n/src/next/uk/o_bella.mjs new file mode 100644 index 00000000000..c21add1ccce --- /dev/null +++ b/packages/i18n/src/next/uk/o_bella.mjs @@ -0,0 +1,46 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_bella = { + "chestEase.t": "Свобода облягання на грудях", + "chestEase.d": "Контролює свободу облягання на найбільшій частині грудей", + "waistEase.t": "Свобода облягання на талії", + "waistEase.d": "Контролює свободу облягання на талії", + "bustSpanEase.t": "Свобода облягання центру грудей", + "bustSpanEase.d": "Контролює горизонтальну свободу облягання на центрі грудей.", + "shoulderToShoulderEase.t": "Свобода облягання ширини плечей", + "shoulderToShoulderEase.d": "Контролює свободу облягання ширини плечей. Початково налаштовано на -5%, бо Белла розроблена як викрійка-основа, що застосовується у швейній індустрії.", + "fullChestEaseReduction.t": "Full chest ease reduction", + "fullChestEaseReduction.d": "Allows you to independently reduce the ease around the chest to make it fit tight(er) in that area", + "backDartHeight.t": "Back dart height", + "backDartHeight.d": "Controls the height of the back dart", + "bustDartLength.t": "Bust dart length", + "bustDartLength.d": "Controls the length of the bust dart", + "waistDartLength.t": "Waist dart length", + "waistDartLength.d": "Controls the length of the waist dart", + "bustDartCurve.t": "Bust dart curve", + "bustDartCurve.d": "Controls the curvature of the bust dart", + "armholeDepth.t": "Armhole depth", + "armholeDepth.d": "Controls the depth of the armhole", + "backArmholeSlant.t": "Back armhole slant", + "backArmholeSlant.d": "Slightly rotates the armhole around its pitch point", + "frontArmholeCurvature.t": "Front armhole curvature", + "frontArmholeCurvature.d": "Controls how deep the armhole is scooped out at the front bottom", + "backArmholeCurvature.t": "Back armhole curvature", + "backArmholeCurvature.d": "Controls how deep the armhole is scooped out at the back bottom", + "frontArmholePitchDepth.t": "Front armhole pitch depth", + "frontArmholePitchDepth.d": "Tweaks the horizontal placement of the front armhole pitch point", + "backArmholePitchDepth.t": "Back armhole pitch depth", + "backArmholePitchDepth.d": "Tweaks the horizontal placement of the back armhole pitch point", + "backNeckCutout.t": "Back neck cutout", + "backNeckCutout.d": "Controls how deep the neck opening is scooped out at at the back", + "backHemSlope.t": "Back hem slope", + "backHemSlope.d": "Controls the slope of the hem at the back", + "frontShoulderWidth.t": "Front shoulder width", + "frontShoulderWidth.d": "Controls the narrowness of the front shoulders relative to the back", + "highBustWidth.t": "High bust width", + "highBustWidth.d": "Allows you to tweak the hight bust width at the front" +} + +export default o_bella diff --git a/packages/i18n/src/next/uk/o_benjamin.mjs b/packages/i18n/src/next/uk/o_benjamin.mjs new file mode 100644 index 00000000000..9e22ef79a1d --- /dev/null +++ b/packages/i18n/src/next/uk/o_benjamin.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_benjamin = { + "adjustmentRibbon.t": "Рихтувальна тасьма", + "adjustmentRibbon.d": "Додавати чи не додавати рихтувальну тасьму в елементи викрійки", + "bandLength.t": "Band length", + "bandLength.d": "Length of the band", + "tipWidth.t": "Ширина країв", + "tipWidth.d": "Ширина чи висота країв бантика", + "knotWidth.t": "Ширина вузлика", + "knotWidth.d": "Ширина перемички (місця зав'язування краватки)", + "bowLength.t": "Довжина бантика", + "bowLength.d": "Довжина бантика (у зав'язаному стані)", + "bowStyle.t": "Форма бантика", + "bowStyle.d": "Загальна форма бантика", + "endStyle.t": "Форма стрічок", + "endStyle.d": "Форма стрічок під бантиком", + "collarEase.t": "Свобода коміра", + "collarEase.d": "Свобода облягання коміра навколо шиї", + "ribbonWidth.t": "Ширина тасьми", + "ribbonWidth.d": "Ширина тасьми (стрічки)" +} + +export default o_benjamin diff --git a/packages/i18n/src/next/uk/o_bent.mjs b/packages/i18n/src/next/uk/o_bent.mjs new file mode 100644 index 00000000000..7fe4def5a46 --- /dev/null +++ b/packages/i18n/src/next/uk/o_bent.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_bent = { + "sleeveBend.t": "Згин рукава", + "sleeveBend.d": "Керує кутом згину рукава в лікті.", + "sleevecapHeight.t": "Висота окату", + "sleevecapHeight.d": "Керує висотою окату рукава." +} + +export default o_bent diff --git a/packages/i18n/src/next/uk/o_bob.mjs b/packages/i18n/src/next/uk/o_bob.mjs new file mode 100644 index 00000000000..1e934f26fcc --- /dev/null +++ b/packages/i18n/src/next/uk/o_bob.mjs @@ -0,0 +1,16 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_bob = { + "neckRatio.t": "Шийний зріз", + "neckRatio.d": "Керує діаметром шийного зрізу відповідно до розміру слинявчика", + "widthRatio.t": "Ширина", + "widthRatio.d": "Керує загальною шириною слинявчика", + "lengthRatio.t": "Довжина", + "lengthRatio.d": "Керує загальною довжиною слинявчика", + "headSize.t": "Розмір голови", + "headSize.d": "Обхват голови, на який має налізати слинявчик" +} + +export default o_bob diff --git a/packages/i18n/src/next/uk/o_breanna.mjs b/packages/i18n/src/next/uk/o_breanna.mjs new file mode 100644 index 00000000000..48cc7209f31 --- /dev/null +++ b/packages/i18n/src/next/uk/o_breanna.mjs @@ -0,0 +1,34 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_breanna = { + "shoulderDart.t": "Плечова виточка", + "shoulderDart.d": "Додавати чи не додавати виточку на плечі для заокруглення спини", + "shoulderDartSize.t": "Розмір плечової виточки", + "shoulderDartSize.d": "Ширина (розмір) плечової виточки", + "shoulderDartLength.t": "Довжина плечової виточки", + "shoulderDartLength.d": "Загальна довжина плечової виточки", + "waistDart.t": "Поясна виточка", + "waistDart.d": "Додавати чи не додавати виточки на талії для заокруглення спини", + "waistDartSize.t": "Розмір поясної виточки", + "waistDartSize.d": "Ширина (розмір) виточки на талії", + "waistDartLength.t": "Довжина поясної виточки", + "waistDartLength.d": "Загальна довжина виточки на талії", + "verticalEase.t": "Вертикальна свобода облягання", + "verticalEase.d": "Керує свободою облягання, що розподіляється по довжині виробу", + "waistEase.t": "Свобода облягання на талії", + "waistEase.d": "Відсоток свободи облягання на талії", + "primaryBustDart.t": "Грудна виточка", + "primaryBustDart.d": "Керує розташуванням виточки для формування ліфу", + "primaryBustDartLength.t": "Довжина грудної виточки", + "primaryBustDartLength.d": "Загальна довжина виточки на грудях", + "secondaryBustDart.t": "Вторинна грудна виточка", + "secondaryBustDart.d": "За бажанням можна додати вторинну виточку на грудях для подальшого формування ліфу", + "secondaryBustDartLength.t": "Довжина вторинної грудної виточки", + "secondaryBustDartLength.d": "Загальна довжина вторинної виточки на грудях", + "primaryBustDartShaping.t": "Формування грудних виточок", + "primaryBustDartShaping.d": "Керує співвідношенням між головними та вторинними виточками на грудях" +} + +export default o_breanna diff --git a/packages/i18n/src/next/uk/o_brian.mjs b/packages/i18n/src/next/uk/o_brian.mjs new file mode 100644 index 00000000000..26034fbdea3 --- /dev/null +++ b/packages/i18n/src/next/uk/o_brian.mjs @@ -0,0 +1,76 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_brian = { + "acrossBackFactor.t": "Across back factor", + "acrossBackFactor.d": "Controls your across back width as a factor of your shoulder to shoulder measurement.", + "armholeDepthFactor.t": "Armhole depth factor", + "armholeDepthFactor.d": "Controls the depth of the armhole. Higher values make a deeper armhole.", + "backNeckCutout.t": "Back neck cutout", + "backNeckCutout.d": "How deep the neck is cut out at the back", + "bicepsEase.t": "Biceps ease", + "bicepsEase.d": "The amount of ease at your upper arm. Note that while we try to respect this, fitting the sleeve to the armhole takes precedence over respecting the exact amount of ease.", + "collarEase.t": "Collar ease", + "collarEase.d": "The amount of ease around your neck", + "chestEase.t": "Chest ease", + "chestEase.d": "The amount of ease at your chest.", + "cuffEase.t": "Cuff ease", + "cuffEase.d": "The amount of ease at your wrist.", + "frontArmholeDeeper.t": "Front armhole extra cutout", + "frontArmholeDeeper.d": "How much do you want the front armhole to be cut out deeper than the back.", + "lengthBonus.t": "Length bonus", + "lengthBonus.d": "The amount to lengthen the garment. A negative value will shorten it.", + "s3Collar.t": "Shoulder seam shift: collar side", + "s3Collar.d": "Increase this option to shift the shoulder seam forward on the collar side. Decreasing it shifts it backwards.", + "s3Armhole.t": "Shoulder seam shift: armhole side", + "s3Armhole.d": "Increase this option to shift the shoulder seam forward on the armhole side. Decreasing it shifts it backwards.", + "shoulderEase.t": "Shoulder ease", + "shoulderEase.d": "The amount of ease at your shoulder. This increases the shoulder to shoulder distance to accommodate additional layers or thickness.", + "shoulderSlopeReduction.t": "Shoulder slope reduction", + "shoulderSlopeReduction.d": "The amount by which the shoulder slope is reduced to allow for shoulder padding.", + "sleeveLengthBonus.t": "Sleeve length bonus", + "sleeveLengthBonus.d": "The amount to lengthen the sleeve. A negative value will shorten it.", + "sleevecapEase.t": "Sleevecap ease", + "sleevecapEase.d": "The amount by which the sleevecap seam is longer than the armhole seam.", + "sleevecapTopFactorX.t": "Sleevecap top X", + "sleevecapTopFactorX.d": "Controls the horizontal location of the sleevecap top.", + "sleevecapTopFactorY.t": "Sleevecap top Y", + "sleevecapTopFactorY.d": "Controls the height of the sleevecap. A higher value results in a higher and more narrow sleevecap.", + "sleevecapBackFactorX.t": "Sleevecap back X", + "sleevecapBackFactorX.d": "Controls the placement of the sleevecap back pitchpoint on the X-axis (horizontal)", + "sleevecapBackFactorY.t": "Sleevecap back Y", + "sleevecapBackFactorY.d": "Controls the placement of the sleevecap back pitchpoint on the Y-axis (vertical)", + "sleevecapFrontFactorX.t": "Sleevecap front X", + "sleevecapFrontFactorX.d": "Controls the placement of the sleevecap front pitchpoint on the X-axis (horizontal)", + "sleevecapFrontFactorY.t": "Sleevecap front Y", + "sleevecapFrontFactorY.d": "Controls the placement of the sleevecap front pitchpoint on the Y-axis (vertical)", + "sleevecapQ1Offset.t": "Sleevecap Q1 offset", + "sleevecapQ1Offset.d": "Controls the curvature of the sleevecap in the first quadrant (front armhole)", + "sleevecapQ2Offset.t": "Sleevecap Q2 offset", + "sleevecapQ2Offset.d": "Controls the curvature of the sleevecap in the second quadrant (front shoulder)", + "sleevecapQ3Offset.t": "Sleevecap Q3 offset", + "sleevecapQ3Offset.d": "Controls the curvature of the sleevecap in the third quadrant (back shoulder)", + "sleevecapQ4Offset.t": "Sleevecap Q4 offset", + "sleevecapQ4Offset.d": "Controls the curvature of the sleevecap in the fourth quadrant (back armhole)", + "sleevecapQ1Spread1.t": "Sleevecap Q1 downward spread", + "sleevecapQ1Spread1.d": "Controls the spread of the sleevecap first quadrant curvature towards the armhole", + "sleevecapQ1Spread2.t": "Sleevecap Q1 upward spread", + "sleevecapQ1Spread2.d": "Controls the spread of the sleevecap first quadrant curvature towards the shoulder", + "sleevecapQ2Spread1.t": "Sleevecap Q2 downward spread", + "sleevecapQ2Spread1.d": "Controls the spread of the sleevecap second quadrant curvature towards the armhole", + "sleevecapQ2Spread2.t": "Sleevecap Q2 upward spread", + "sleevecapQ2Spread2.d": "Controls the spread of the sleevecap second quadrant curvature towards the shoulder", + "sleevecapQ3Spread1.t": "Sleevecap Q3 upward spread", + "sleevecapQ3Spread1.d": "Controls the spread of the sleevecap third quadrant curvature towards the shoulder", + "sleevecapQ3Spread2.t": "Sleevecap Q3 downward spread", + "sleevecapQ3Spread2.d": "Controls the spread of the sleevecap third quadrant curvature towards the armhole", + "sleevecapQ4Spread1.t": "Sleevecap Q4 upward spread", + "sleevecapQ4Spread1.d": "Controls the spread of the sleevecap fourth quadrant curvature towards the shoulder", + "sleevecapQ4Spread2.t": "Sleevecap Q4 downward spread", + "sleevecapQ4Spread2.d": "Controls the spread of the sleevecap fourth quadrant curvature towards the armhole", + "sleeveWidthGuarantee.t": "Sleeve width guarantee", + "sleeveWidthGuarantee.d": "Controls how much of the sleeve width will be guaranteed. This determines how much we can alter the sleeve width to fit the sleeve in the armhole." +} + +export default o_brian diff --git a/packages/i18n/src/next/uk/o_bruce.mjs b/packages/i18n/src/next/uk/o_bruce.mjs new file mode 100644 index 00000000000..ef46b9393b0 --- /dev/null +++ b/packages/i18n/src/next/uk/o_bruce.mjs @@ -0,0 +1,20 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_bruce = { + "bulge.t": "Пахова вставка", + "bulge.d": "Керує кутом пахової вставки для регулювання простору в передній мішковині.", + "legBonus.t": "Додаткова довжина", + "legBonus.d": "Збільшує загальну довжину по нозі.", + "rise.t": "Посадка", + "rise.d": "Керує висотою посадки на талії. Негативний показник зробить посадку нижчою.", + "stretch.t": "Еластичність", + "stretch.d": "Керує негативною свободою облягання.", + "legStretch.t": "Обхват ноги", + "legStretch.d": "Для найкращого результату рекомендується дещо туга посадка на нозі — ніяких пройм.", + "backRise.t": "Посадка ззаду", + "backRise.d": "Керує відсотком висоти посадки ззаду." +} + +export default o_bruce diff --git a/packages/i18n/src/next/uk/o_carlita.mjs b/packages/i18n/src/next/uk/o_carlita.mjs new file mode 100644 index 00000000000..04c8f39751f --- /dev/null +++ b/packages/i18n/src/next/uk/o_carlita.mjs @@ -0,0 +1,10 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_carlita = { + "contour.t": "Contour", + "contour.d": "Controls how sharply the princess seam is contoured." +} + +export default o_carlita diff --git a/packages/i18n/src/next/uk/o_carlton.mjs b/packages/i18n/src/next/uk/o_carlton.mjs new file mode 100644 index 00000000000..2b4638ebf2a --- /dev/null +++ b/packages/i18n/src/next/uk/o_carlton.mjs @@ -0,0 +1,28 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_carlton = { + "seatEase.t": "Seat ease", + "seatEase.d": "Amount of ease around your bum", + "pocketPlacementHorizontal.t": "Horizontal pocket placement", + "pocketPlacementHorizontal.d": "The (horizontal) location of the pockets", + "pocketPlacementVertical.t": "Vertical pocket placement", + "pocketPlacementVertical.d": "The (vertical) location of the pockets", + "collarHeight.t": "Collar height", + "collarHeight.d": "Height of the collar", + "length.t": "Length", + "length.d": "Total length", + "pocketFlapRadius.t": "Pocket flap radius", + "pocketFlapRadius.d": "The amount by which the pocket flap is rounded", + "pocketRadius.t": "Pocket radius", + "pocketRadius.d": "The amount by which the pocket is rounded", + "chestPocketHeight.t": "Chest pocket height", + "chestPocketHeight.d": "Height of the chest pocket", + "beltWidth.t": "Belt width", + "beltWidth.d": "Width of the belt", + "buttonSpacingHorizontal.t": "Horizontal button spacing", + "buttonSpacingHorizontal.d": "Horizontal spacing of the buttons, also determines the front closure overlap" +} + +export default o_carlton diff --git a/packages/i18n/src/next/uk/o_cathrin.mjs b/packages/i18n/src/next/uk/o_cathrin.mjs new file mode 100644 index 00000000000..dd5009c895d --- /dev/null +++ b/packages/i18n/src/next/uk/o_cathrin.mjs @@ -0,0 +1,24 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_cathrin = { + "panels.t": "Number of panels", + "panels.d": "The number of panels to draft. More panels are better to fit a curvier model.", + "waistReduction.t": "Waist reduction", + "waistReduction.d": "The amount by which you want the corset to pinch your waist.", + "backOpening.t": "Back opening", + "backOpening.d": "Opening at the center back closure.", + "backRise.t": "Back rise", + "backRise.d": "How much the back panels rise from your arms to your center back.", + "backDrop.t": "Back drop", + "backDrop.d": "How much the back panels lower from your hips towards your center back. Negative values will raise the back.", + "frontRise.t": "Front rise", + "frontRise.d": "Rise of the front panels at center front, between your breasts. Negative values will lower them.", + "frontDrop.t": "Front drop", + "frontDrop.d": "How much the front panels lower from your hips towards your center front.", + "hipRise.t": "Hip rise", + "hipRise.d": "How much the side panels rise on your hips." +} + +export default o_cathrin diff --git a/packages/i18n/src/next/uk/o_charlie.mjs b/packages/i18n/src/next/uk/o_charlie.mjs new file mode 100644 index 00000000000..28a3743001b --- /dev/null +++ b/packages/i18n/src/next/uk/o_charlie.mjs @@ -0,0 +1,42 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_charlie = { + "backPocketHorizontalPlacement.t": "Back pocket horizontal placement", + "backPocketHorizontalPlacement.d": "Controls the horizontal placement of the back pocket", + "backPocketVerticalPlacement.t": "Back pocket vertical placement", + "backPocketVerticalPlacement.d": "Controls the vertical placement of the back pocket", + "backPocketWidth.t": "Back pocket width", + "backPocketWidth.d": "Controls the width of the back pocket", + "backPocketDepth.t": "Back pocket depth", + "backPocketDepth.d": "Controls the depth of the back pocket", + "backPocketFacing.t": "Back pocket facing", + "backPocketFacing.d": "Controls whether or not to include facing on the back pockets", + "frontPocketSlantDepth.t": "Front pocket slant depth", + "frontPocketSlantDepth.d": "Controls the depth of the (front) pocket slant", + "frontPocketSlantWidth.t": "Front pocket slant width", + "frontPocketSlantWidth.d": "Controls the width of the (front) pocket slant", + "frontPocketSlantRound.t": "Front pocket slant round", + "frontPocketSlantRound.d": "Controls how far from the end of the slant we start rounding into the outseam", + "frontPocketSlantBend.t": "Front pocket slant bend", + "frontPocketSlantBend.d": "Controls the radius by which we round the pocket slant into the outseam", + "frontPocketWidth.t": "Front pocket width", + "frontPocketWidth.d": "Controls the width of the front pocket bag", + "frontPocketDepth.t": "Front pocket depth", + "frontPocketDepth.d": "Controls the depth of the front pocket bag", + "frontPocketFacing.t": "Front pocket facing", + "frontPocketFacing.d": "Controls how far the pocket facing extends into the pocket bag", + "beltLoops.t": "Belt loops", + "beltLoops.d": "Controls the amount of belt loops", + "flyCurve.t": "Fly curve", + "flyCurve.d": "Controls the curvature of the fly J-seam", + "flyLength.t": "Fly length", + "flyLength.d": "Controls the length of the fly", + "flyWidth.t": "Fly width", + "flyWidth.d": "Controls how far the J-seam of offset from the fly edge", + "waistbandCurve.t": "Waistband Curve", + "waistbandCurve.d": "Controls how curved the waistband is." +} + +export default o_charlie diff --git a/packages/i18n/src/next/uk/o_cornelius.mjs b/packages/i18n/src/next/uk/o_cornelius.mjs new file mode 100644 index 00000000000..2a7729cc9a3 --- /dev/null +++ b/packages/i18n/src/next/uk/o_cornelius.mjs @@ -0,0 +1,24 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_cornelius = { + "fullness.t": "Fullness", + "fullness.d": "Controls the fullness of the breeches", + "waistbandBelowWaist.t": "Lower waistband", + "waistbandBelowWaist.d": "Percentage to move the waistband below the actual waist", + "waistReduction.t": "Waist reduction", + "waistReduction.d": "Percentage to reduce the waistband", + "cuffWidth.t": "Cuff width", + "cuffWidth.d": "Width of the leg cuff", + "cuffStyle.t": "Cuff style", + "cuffStyle.d": "Style of the leg cuff", + "bandBelowKnee.t": "Cuff below knee", + "bandBelowKnee.d": "Controls the cuff distance from the knee", + "kneeToBelow.t": "Cuff length", + "kneeToBelow.d": "Controls the tightness of the cuff as compared to the knee", + "ventLength.t": "Vent length", + "ventLength.d": "Controls the length of the vent between knee and cuff" +} + +export default o_cornelius diff --git a/packages/i18n/src/next/uk/o_diana.mjs b/packages/i18n/src/next/uk/o_diana.mjs new file mode 100644 index 00000000000..77a767689ee --- /dev/null +++ b/packages/i18n/src/next/uk/o_diana.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_diana = { + "shoulderSeamLength.t": "Shoulder seam length", + "shoulderSeamLength.d": "Controls the length of the shoulder seam", + "drapeAngle.t": "Drape angle", + "drapeAngle.d": "Controls the amount of drape" +} + +export default o_diana diff --git a/packages/i18n/src/next/uk/o_florence.mjs b/packages/i18n/src/next/uk/o_florence.mjs new file mode 100644 index 00000000000..8eeef0b7bae --- /dev/null +++ b/packages/i18n/src/next/uk/o_florence.mjs @@ -0,0 +1,14 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_florence = { + "height.t": "Height", + "height.d": "Controls the height of the face mask", + "length.t": "Length", + "length.d": "Controls the length of the face mask", + "curve.t": "Curve", + "curve.d": "Controls the curvature of the upper edge of the face mask" +} + +export default o_florence diff --git a/packages/i18n/src/next/uk/o_florent.mjs b/packages/i18n/src/next/uk/o_florent.mjs new file mode 100644 index 00000000000..a6862b8ca69 --- /dev/null +++ b/packages/i18n/src/next/uk/o_florent.mjs @@ -0,0 +1,10 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_florent = { + "headEase.t": "Head ease", + "headEase.d": "The amound of ease around your head" +} + +export default o_florent diff --git a/packages/i18n/src/next/uk/o_hi.mjs b/packages/i18n/src/next/uk/o_hi.mjs new file mode 100644 index 00000000000..4c2e9292890 --- /dev/null +++ b/packages/i18n/src/next/uk/o_hi.mjs @@ -0,0 +1,16 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_hi = { + "hungry.t": "Hungry", + "hungry.d": "Changes the mouth shape to convey Hi is hungry", + "nosePointiness.t": "Nose pointiness", + "nosePointiness.d": "Controls how pointy Hi's nose is", + "aggressive.t": "Aggressive", + "aggressive.d": "Give Hi pointy teeth, or not", + "size.t": "Size", + "size.d": "Sharks come in all sizes, and so does Hi" +} + +export default o_hi diff --git a/packages/i18n/src/next/uk/o_holmes.mjs b/packages/i18n/src/next/uk/o_holmes.mjs new file mode 100644 index 00000000000..b8c232024fb --- /dev/null +++ b/packages/i18n/src/next/uk/o_holmes.mjs @@ -0,0 +1,26 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_holmes = { + "headEase.t": "Head ease", + "headEase.d": "The amount of ease around your head.", + "lengthRatio.t": "Length ratio", + "lengthRatio.d": "Controls the length of the crown and ear flaps", + "gores.t": "Number of gores", + "gores.d": "The number of gores used to construct the crown", + "visorAngle.t": "Visor angle", + "visorAngle.d": "The arc angle used to draft the inner curve of the visor", + "visorWidth.t": "Visor width", + "visorWidth.d": "Controls the width of the visor", + "earLength.t": "Ear flap length", + "earLength.d": "Controls the length of the ear flaps independently from the crown pieces", + "earWidth.t": "Ear flap width", + "earWidth.d": "Controls the width of the ear flaps", + "buttonhole.t": "Buttonhole guide", + "buttonhole.d": "Adds a buttonhole to the ear flap to help you draft the buttonhole ear flap variant", + "visorLength.t": "Visor length", + "visorLength.d": "Controls the length of the visor" +} + +export default o_holmes diff --git a/packages/i18n/src/next/uk/o_hortensia.mjs b/packages/i18n/src/next/uk/o_hortensia.mjs new file mode 100644 index 00000000000..9f0a3796c18 --- /dev/null +++ b/packages/i18n/src/next/uk/o_hortensia.mjs @@ -0,0 +1,16 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_hortensia = { + "size.t": "Size", + "size.d": "Controls the overall size of the handbag", + "zipperSize.t": "Zipper size", + "zipperSize.d": "Which size of zipper to use", + "strapLength.t": "Strap length", + "strapLength.d": "Controls the length of the strap", + "handleWidth.t": "Handle width", + "handleWidth.d": "Controls the width of the handle" +} + +export default o_hortensia diff --git a/packages/i18n/src/next/uk/o_huey.mjs b/packages/i18n/src/next/uk/o_huey.mjs new file mode 100644 index 00000000000..d053c97b88c --- /dev/null +++ b/packages/i18n/src/next/uk/o_huey.mjs @@ -0,0 +1,22 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_huey = { + "pocket.t": "Pocket", + "pocket.d": "Whether to include a front pocket or not", + "pocketHeight.t": "Pocket height", + "pocketHeight.d": "Controls the height of the pocket", + "hoodHeight.t": "Hood height", + "hoodHeight.d": "Controls the height of the hood", + "hoodCutback.t": "Hood cutback", + "hoodCutback.d": "Controls how far the hood opening is cut back", + "hoodClosure.t": "Hood closure", + "hoodClosure.d": "Controls how much of the hood is part of the front closure", + "hoodDepth.t": "Hood depth", + "hoodDepth.d": "Controls the depth of the hood", + "hoodAngle.t": "Hood angle", + "hoodAngle.d": "Controls the angle at which the hood is attached" +} + +export default o_huey diff --git a/packages/i18n/src/next/uk/o_hugo.mjs b/packages/i18n/src/next/uk/o_hugo.mjs new file mode 100644 index 00000000000..f4068c9f7e2 --- /dev/null +++ b/packages/i18n/src/next/uk/o_hugo.mjs @@ -0,0 +1,10 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_hugo = { + "hipsEase.t": "Hips ease", + "hipsEase.d": "The amount of ease at your hips." +} + +export default o_hugo diff --git a/packages/i18n/src/next/uk/o_jaeger.mjs b/packages/i18n/src/next/uk/o_jaeger.mjs new file mode 100644 index 00000000000..90a767db89b --- /dev/null +++ b/packages/i18n/src/next/uk/o_jaeger.mjs @@ -0,0 +1,82 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_jaeger = { + "centerBackDart.t": "Center back dart", + "centerBackDart.d": "Dart at the center back of your neck to accommodate a rounded back", + "sleeveVentLength.t": "Sleeve vent length", + "sleeveVentLength.d": "Length of the sleeve vent", + "sleeveVentWidth.t": "Sleeve vent width", + "sleeveVentWidth.d": "Width of the sleeve vent", + "chestShaping.t": "Chest shaping", + "chestShaping.d": "Amount of shaping to accommodate for the chest curve", + "frontDartPlacement.t": "Front dart placement", + "frontDartPlacement.d": "Location of the front darts", + "frontOverlap.t": "Front overlap", + "frontOverlap.d": "How far the fabric extends beyond the closing buttons", + "sideFrontPlacement.t": "Side/Front placement", + "sideFrontPlacement.d": "The location of the side/front boundary", + "chestPocketDepth.t": "Chest pocket depth", + "chestPocketDepth.d": "The depth of the chest pocket", + "chestPocketWidth.t": "Chest pocket width", + "chestPocketWidth.d": "The width of the chest pocket", + "chestPocketPlacement.t": "Chest pocket placement", + "chestPocketPlacement.d": "The location of the chest pocket", + "chestPocketAngle.t": "Chest pocket angle", + "chestPocketAngle.d": "The angle under which the chest pocket is placed", + "chestPocketWeltSize.t": "Chest pocket welt size", + "chestPocketWeltSize.d": "The size of the chest pocket welt", + "frontPocketPlacement.t": "Front pocket placement", + "frontPocketPlacement.d": "Location of the front pocket", + "frontPocketWidth.t": "Front pocket width", + "frontPocketWidth.d": "The width of the front pocket", + "frontPocketDepth.t": "Front pocket depth", + "frontPocketDepth.d": "The depth of the front pocket", + "frontPocketRadius.t": "Front pocket radius", + "frontPocketRadius.d": "The radius by which the front pocket is rounded", + "innerPocketPlacement.t": "Inner pocket placement", + "innerPocketPlacement.d": "The location of the inner pocket", + "innerPocketWidth.t": "Inner pocket width", + "innerPocketWidth.d": "The width of the inner pocket", + "innerPocketDepth.t": "Inner pocket depth", + "innerPocketDepth.d": "The depth of the inner pocket", + "innerPocketWeltHeight.t": "Inner pocket welt height", + "innerPocketWeltHeight.d": "The height of the inner pocket welt", + "pocketFoldover.t": "Pocket fold-over", + "pocketFoldover.d": "The amount by which the main fabric is folder over into the pocket", + "centerFrontHemDrop.t": "Center front hem drop", + "centerFrontHemDrop.d": "The amount by which the hem is lowered towards the center front", + "backVent.t": "Back vent", + "backVent.d": "The amount of back vents", + "backVentLength.t": "Back vent length", + "backVentLength.d": "The length of the back vent(s)", + "buttonLength.t": "Button length", + "buttonLength.d": "The distance over which buttons are spread", + "frontCutawayAngle.t": "Front cutaway angle", + "frontCutawayAngle.d": "The angle under which the front is cut away towards the hem", + "frontCutawayStart.t": "Front cutaway start", + "frontCutawayStart.d": "The location at which the front starts opening up towards the hem", + "frontCutawayEnd.t": "Front cutaway end", + "frontCutawayEnd.d": "Increasing this will make the front cutaway stay closer to the center front", + "collarSpread.t": "Collar spread", + "collarSpread.d": "The collar spread controls how the collar drapes over the shoulders", + "lapelStart.t": "Lapel start", + "lapelStart.d": "Location where the center front goes over into the lapels", + "lapelReduction.t": "Lapel reduction", + "lapelReduction.d": "How much the tip of the lapels turns inwards", + "collarHeight.t": "Collar height", + "collarHeight.d": "Height of the collar", + "collarNotchDepth.t": "Collar notch depth", + "collarNotchDepth.d": "Depth of the collar notch", + "collarNotchAngle.t": "Collar notch angle", + "collarNotchAngle.d": "Angle of the collar notch", + "collarNotchReturn.t": "Collar notch return", + "collarNotchReturn.d": "How much the collar returns from the notch, in comparison to the lapel", + "rollLineCollarHeight.t": "Roll-line collar height", + "rollLineCollarHeight.d": "How much the roll-line hugs the neck", + "hemRadius.t": "Hem radius", + "hemRadius.d": "The amount by which the hem is rounded" +} + +export default o_jaeger diff --git a/packages/i18n/src/next/uk/o_lucy.mjs b/packages/i18n/src/next/uk/o_lucy.mjs new file mode 100644 index 00000000000..2a36dcac6d1 --- /dev/null +++ b/packages/i18n/src/next/uk/o_lucy.mjs @@ -0,0 +1,14 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_lucy = { + "width.t": "Width", + "width.d": "Width of the pocket", + "length.t": "Length", + "length.d": "Length (depth) of the pocket", + "edge.t": "Taper", + "edge.d": "Controls how much the pocket opening tapers inwards" +} + +export default o_lucy diff --git a/packages/i18n/src/next/uk/o_lunetius.mjs b/packages/i18n/src/next/uk/o_lunetius.mjs new file mode 100644 index 00000000000..5641a647e43 --- /dev/null +++ b/packages/i18n/src/next/uk/o_lunetius.mjs @@ -0,0 +1,14 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_lunetius = { + "lengthRatio.t": "Length ratio", + "lengthRatio.d": "Controls the length of the garment", + "widthRatio.t": "Width ratio", + "widthRatio.d": "Controls the width of the garment", + "length.t": "Length", + "length.d": "Choose from the different length styles" +} + +export default o_lunetius diff --git a/packages/i18n/src/next/uk/o_noble.mjs b/packages/i18n/src/next/uk/o_noble.mjs new file mode 100644 index 00000000000..c786079ead1 --- /dev/null +++ b/packages/i18n/src/next/uk/o_noble.mjs @@ -0,0 +1,46 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_noble = { + "dartPosition.t": "Dart position", + "dartPosition.d": "Controls whether to split at the shoulder or armhole", + "chestEase.t": "Chest ease", + "chestEase.d": "Controls the amount of ease at the chest", + "waistEase.t": "Waist ease", + "waistEase.d": "Controls the amount of ease at the waist", + "bustSpanEase.t": "Bust span ease", + "bustSpanEase.d": "Controls the amount of ease along the bust span", + "backDartHeight.t": "Controls the height of the back dart", + "backDartHeight.d": "Back dart height", + "waistDartLength.t": "Waist dart length", + "waistDartLength.d": "Controls the length of the waist dart", + "shoulderDartPosition.t": "Shoulder dart position", + "shoulderDartPosition.d": "Controls the position of the shoulder dart", + "upperDartLength.t": "Upper dart length", + "upperDartLength.d": "Controls the length of the upper dart", + "armholeDartPosition.t": "Armhole dart position", + "armholeDartPosition.d": "Controls the position of the armhole dart", + "armholeDepth.t": "Armhole depth", + "armholeDepth.d": "Controls the depth of the armhole", + "backArmholeSlant.t": "Back armhole slant", + "backArmholeSlant.d": "Controls the slant of the armhole at the back", + "backArmholeCurvature.t": "Back armhole curvature", + "backArmholeCurvature.d": "Controls how deep the armhole is scooped out at the back", + "frontArmholePitchDepth.t": "Front armhole pitch depth", + "frontArmholePitchDepth.d": "Controls how deep the armhole curts into the front", + "backArmholePitchDepth.t": "Back armhole pitch depth", + "backArmholePitchDepth.d": "Controls how deep the armhole curts into the back", + "backNeckCutout.t": "Back neck cutout", + "backNeckCutout.d": "Controls how deep the neck is cutout in the back", + "backHemSlope.t": "Back hem slope", + "backHemSlope.d": "Constrols the slope of the back hem", + "frontShoulderWidth.t": "Front shoulder width", + "frontShoulderWidth.d": "Controls how much width is added to the shoulder in the front", + "highBustWidth.t": "Hight bust width", + "highBustWidth.d": "Controls the widht of the high bust", + "shoulderToShoulderEase.t": "Shoulder to shoulder ease", + "shoulderToShoulderEase.d": "Controls the amount of ease long the shoulder to shoulder measurement" +} + +export default o_noble diff --git a/packages/i18n/src/next/uk/o_paco.mjs b/packages/i18n/src/next/uk/o_paco.mjs new file mode 100644 index 00000000000..2d0b8605211 --- /dev/null +++ b/packages/i18n/src/next/uk/o_paco.mjs @@ -0,0 +1,18 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_paco = { + "heelEase.t": "Heel ease", + "heelEase.d": "The amount of ease at your heel (when stepping into the leg)", + "frontPockets.t": "Front pockets", + "frontPockets.d": "Whether or not to add front pockets on the side seam", + "backPockets.t": "Back pockets", + "backPockets.d": "Whether or not to add welt pockets to the back", + "elasticatedHem.t": "Elasticated hem", + "elasticatedHem.d": "Whether or not you want an elasticated hem", + "ankleElastic.t": "Ankle/Hem elastic width", + "ankleElastic.d": "Width of the (optional) elastic at the ankle/hem" +} + +export default o_paco diff --git a/packages/i18n/src/next/uk/o_penelope.mjs b/packages/i18n/src/next/uk/o_penelope.mjs new file mode 100644 index 00000000000..32cdd6967d8 --- /dev/null +++ b/packages/i18n/src/next/uk/o_penelope.mjs @@ -0,0 +1,36 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_penelope = { + "backDartDepthFactor.t": "Back dart depth factor", + "backDartDepthFactor.d": "How far down does the back dart go from the waistband. This is a factor of the Natural Waist To Seat measurement.", + "backVent.t": "Back vent", + "backVent.d": "Add a vent in the back of the skirt.", + "backVentLength.t": "Back vent length", + "backVentLength.d": "Length of the Back Vent as a percentage of the skirt length.", + "dartToSideSeamFactor.t": "Dart to side seam factor", + "dartToSideSeamFactor.d": "Percentage of how much of the hip to waist reduction has to be taken in by the darts versus the side seam.", + "frontDartDepthFactor.t": "Front dart depth factor", + "frontDartDepthFactor.d": "How far down does the front dart go from the waistband. This is a factor of the Natural Waist To Seat measurement.", + "hem.t": "Size of the hem", + "hem.d": "The size of the hem. Measurement in absolute values.", + "hemBonus.t": "Hem bonus", + "hemBonus.d": "This option will reduce the circumference of the skirt at the hem. Percentage of the Seat measurement.", + "lengthBonus.t": "Length bonus", + "lengthBonus.d": "This sets the length of the skirt. Percentage of the Natural Waist to Knee measurement.", + "nrOfDarts.t": "Number of darts", + "nrOfDarts.d": "The number of darts used in the pattern. Maximum is 2. This option can be reduced by the pattern if the calculations create darts that are too small.", + "seatEase.t": "Seat ease", + "seatEase.d": "Amount of ease at the seat level.", + "waistBand.t": "Waist band", + "waistBand.d": "Add a waistband to the pattern.", + "waistBandWidth.t": "Waist band width", + "waistBandWidth.d": "The width of the waist band.", + "waistEase.t": "Waist ease", + "waistEase.d": "Amount of ease at the waist level.", + "zipperLocation.t": "Zipper location", + "zipperLocation.d": "The location of the zipper." +} + +export default o_penelope diff --git a/packages/i18n/src/next/uk/o_sandy.mjs b/packages/i18n/src/next/uk/o_sandy.mjs new file mode 100644 index 00000000000..11f193fed8b --- /dev/null +++ b/packages/i18n/src/next/uk/o_sandy.mjs @@ -0,0 +1,24 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_sandy = { + "waistbandWidth.t": "Waistband width", + "waistbandWidth.d": "Controls the width of the waistband.", + "waistbandPosition.t": "Waistband position", + "waistbandPosition.d": "Controls the position of the waistband.", + "waistbandShape.t": "Waistband shape", + "waistbandShape.d": "Whether you want a straight or shaped waistband.", + "circleRatio.t": "Circle ratio", + "circleRatio.d": "The percentage of a circle you want the skirt to be.", + "waistbandOverlap.t": "Waistband overlap", + "waistbandOverlap.d": "The amount by which the waistband overlaps.", + "gathering.t": "Gathering", + "gathering.d": "The percent by which the top of the skirt is longer than the bottom of the waistband.", + "seamlessFullCircle.t": "Seamless full circle", + "seamlessFullCircle.d": "Enables a seamless full circle skirt.", + "hemWidth.t": "Hem width", + "hemWidth.d": "Width of the hem" +} + +export default o_sandy diff --git a/packages/i18n/src/next/uk/o_shin.mjs b/packages/i18n/src/next/uk/o_shin.mjs new file mode 100644 index 00000000000..9f65073ff89 --- /dev/null +++ b/packages/i18n/src/next/uk/o_shin.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_shin = { + "legReduction.t": "Leg reduction", + "legReduction.d": "Reduces the leg opening to prevent gaping", + "elasticWidth.t": "Elastic width", + "elasticWidth.d": "Width of the elastic at the waist" +} + +export default o_shin diff --git a/packages/i18n/src/next/uk/o_simon.mjs b/packages/i18n/src/next/uk/o_simon.mjs new file mode 100644 index 00000000000..e2efd76d3ab --- /dev/null +++ b/packages/i18n/src/next/uk/o_simon.mjs @@ -0,0 +1,82 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_simon = { + "backDarts.t": "Back darts", + "backDarts.d": "Whether or not to include back darts", + "backDartShaping.t": "Back dart shaping", + "backDartShaping.d": "The amount of shaping that is done by the back darts", + "barrelCuffNarrowButton.t": "Cuff narrow button", + "barrelCuffNarrowButton.d": "Whether to include a button to tie the cuffs more narrow. This option is only relevant for barrel cuffs.", + "boxPleat.t": "Box pleat", + "boxPleat.d": "Whether to include a box pleat at the back or not", + "boxPleatWidth.t": "Box pleat width", + "boxPleatWidth.d": "The total widh of the box pleat", + "boxPleatFold.t": "Box pleat fold", + "boxPleatFold.d": "The amount by with the box pleat folds inwards", + "buttonPlacketStyle.t": "Button placket style", + "buttonPlacketStyle.d": "Style of the button placket.", + "buttonPlacketWidth.t": "Button placket width", + "buttonPlacketWidth.d": "Width of the button placket.", + "buttonFreeLength.t": "Button free length", + "buttonFreeLength.d": "How much of the bottom of the front closure to keep button-free.", + "buttonholePlacketFoldWidth.t": "Buttonhole placket fold width", + "buttonholePlacketFoldWidth.d": "Width of the buttonhole placket fold.", + "buttonholePlacketStyle.t": "Buttonhole placket style", + "buttonholePlacketStyle.d": "Style of the buttonhole placket.", + "buttonholePlacketWidth.t": "Buttonhole placket width", + "buttonholePlacketWidth.d": "Width of the buttonhole placket.", + "buttons.t": "Number of buttons", + "buttons.d": "The number of buttons on the front closure.", + "collarAngle.t": "Collar angle", + "collarAngle.d": "The angle of the collar tips.", + "collarBend.t": "Collar bend", + "collarBend.d": "The bend of the collar.", + "collarFlare.t": "Collar flare", + "collarFlare.d": "The flare of the collar tips.", + "collarGap.t": "Collar gap", + "collarGap.d": "The gap between the the two collar ends.", + "collarRoll.t": "Collar roll", + "collarRoll.d": "The amount by which the top collar is larger than the undercollar.", + "collarStandBend.t": "Collar stand bend", + "collarStandBend.d": "The bend of the collar stand.", + "collarStandCurve.t": "Collar stand curve", + "collarStandCurve.d": "The curve of the collar stand.", + "collarStandWidth.t": "Collar stand width", + "collarStandWidth.d": "Width of the collar stand.", + "cuffButtonRows.t": "Cuff button rows", + "cuffButtonRows.d": "Whether to draft a single or double row of cuff buttons. This option is only relevant for barrel cuffs.", + "cuffDrape.t": "Cuff drape", + "cuffDrape.d": "The amount by which the sleeve is wider than the cuff where the are joined.", + "cuffLength.t": "Cuff length", + "cuffLength.d": "The length of the cuffs.", + "cuffStyle.t": "Cuff style", + "cuffStyle.d": "The style of the cuffs.", + "extraTopButton.t": "Extra top button", + "extraTopButton.d": "Whether or not to include an extra top button on the front closure.", + "ffsa.t": "Flat-felled seam allowace", + "ffsa.d": "The amount of seam allowance on flet-felled seams as a proportion of the regular seam allowance", + "hemCurve.t": "Hem curve", + "hemCurve.d": "The height of the curve on a curved hem.", + "hemStyle.t": "Hem style", + "hemStyle.d": "The style of the shirt hem.", + "roundBack.t": "Round back", + "roundBack.d": "To fit a round(er) back, this adds length to the center back (at the yoke) that tapers of towards the sides.", + "seperateButtonholePlacket.t": "Seperate buttonhole placket", + "seperateButtonholePlacket.d": "Draft a separate buttonhole placket.", + "seperateButtonPlacket.t": "Seperate button placket", + "seperateButtonPlacket.d": "Draft a separate button placket", + "sleevePlacketLength.t": "Sleeve placket length", + "sleevePlacketLength.d": "The length of the sleeve placket.", + "sleevePlacketWidth.t": "Sleeve placket width", + "sleevePlacketWidth.d": "The width of the sleeve placket.", + "splitYoke.t": "Split yoke", + "splitYoke.d": "Whether to draft a split or regular yoke.", + "waistEase.t": "Waist ease", + "waistEase.d": "The amount of ease at your (natural) waist.", + "yokeHeight.t": "Yoke height", + "yokeHeight.d": "Controls the height of the yoke" +} + +export default o_simon diff --git a/packages/i18n/src/next/uk/o_simone.mjs b/packages/i18n/src/next/uk/o_simone.mjs new file mode 100644 index 00000000000..c23a665a9bf --- /dev/null +++ b/packages/i18n/src/next/uk/o_simone.mjs @@ -0,0 +1,18 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_simone = { + "bustDartAngle.t": "Bust dart angle", + "bustDartAngle.d": "Controls the angle by which the (side) bust dart slopes downward", + "bustDartLength.t": "Bust dart length", + "bustDartLength.d": "Controls how close the bust dart approaches the bust point", + "contour.t": "Contour", + "contour.d": "Controls how sharply the extra room for breasts is removed again below the chest", + "frontDarts.t": "Front darts", + "frontDarts.d": "Whether to include front darts or not", + "frontDartLength.t": "Front dart length", + "frontDartLength.d": "Controls how close the front dart approaches the bust point" +} + +export default o_simone diff --git a/packages/i18n/src/next/uk/o_sven.mjs b/packages/i18n/src/next/uk/o_sven.mjs new file mode 100644 index 00000000000..9deed8bf7be --- /dev/null +++ b/packages/i18n/src/next/uk/o_sven.mjs @@ -0,0 +1,16 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_sven = { + "hipsEase.t": "Hips ease", + "hipsEase.d": "Controls the amount of ease at your hips (the bottom of the sweater)", + "ribbing.t": "Ribbing", + "ribbing.d": "Whether to finish the hem and cuffs with ribbing or not.", + "ribbingHeight.t": "Ribbing height", + "ribbingHeight.d": "The height of the ribbing on cuffs and hem.", + "ribbingStretch.t": "Ribbing stretch", + "ribbingStretch.d": "The amount of negative ease to apply to the ribbing used for cuffs and hem." +} + +export default o_sven diff --git a/packages/i18n/src/next/uk/o_tamiko.mjs b/packages/i18n/src/next/uk/o_tamiko.mjs new file mode 100644 index 00000000000..a31aaa9e588 --- /dev/null +++ b/packages/i18n/src/next/uk/o_tamiko.mjs @@ -0,0 +1,14 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_tamiko = { + "flare.t": "Flare", + "flare.d": "The amount by which the garment flares from your chest downwards", + "shoulderseamLength.t": "Shoulder seam length", + "shoulderseamLength.d": "The length of the shoulder seam, as a factor of your shoulder to shoulder measurement", + "shoulderSlope.t": "Shoulder slope", + "shoulderSlope.d": "Controls the angle of the shoulder seams" +} + +export default o_tamiko diff --git a/packages/i18n/src/next/uk/o_teagan.mjs b/packages/i18n/src/next/uk/o_teagan.mjs new file mode 100644 index 00000000000..7daf618fe35 --- /dev/null +++ b/packages/i18n/src/next/uk/o_teagan.mjs @@ -0,0 +1,20 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_teagan = { + "draftForHighBust.t": "Draft for high bust", + "draftForHighBust.d": "Draft the pattern for the high bust measurement (if available) rather than the (full) chest. This will result in a more fitted garment for people with breasts.", + "sleeveEase.t": "Свобода прилягання рукава", + "sleeveEase.d": "Змінити свободу прилягання рукавів", + "sleeveLength.t": "Довжина рукава", + "sleeveLength.d": "Змінити довжину рукавів", + "necklineBend.t": "Вигін горловини", + "necklineBend.d": "Змінити лінію вигину горловини.", + "necklineDepth.t": "Глибина горловини", + "necklineDepth.d": "Змінити параметр того, як низько знаходиться горловина.", + "necklineWidth.t": "Ширина горловини", + "necklineWidth.d": "Змінити ширину горловини." +} + +export default o_teagan diff --git a/packages/i18n/src/next/uk/o_theo.mjs b/packages/i18n/src/next/uk/o_theo.mjs new file mode 100644 index 00000000000..ad4bfc62f5e --- /dev/null +++ b/packages/i18n/src/next/uk/o_theo.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_theo = { + "wedge.t": "Wedge", + "wedge.d": "Controls the length of the cross seam", + "legWidth.t": "Leg width", + "legWidth.d": "Controls the width of the legs" +} + +export default o_theo diff --git a/packages/i18n/src/next/uk/o_tiberius.mjs b/packages/i18n/src/next/uk/o_tiberius.mjs new file mode 100644 index 00000000000..0faf069afb1 --- /dev/null +++ b/packages/i18n/src/next/uk/o_tiberius.mjs @@ -0,0 +1,28 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_tiberius = { + "headRatio.t": "Head ratio", + "headRatio.d": "Controls the size of the head opening", + "armholeDrop.t": "Armhole drop", + "armholeDrop.d": "Controls the depth of the armhole", + "lengthBonus.t": "Length bonus", + "lengthBonus.d": "Allows variation of the length of the garment", + "widthBonus.t": "Width bonus", + "widthBonus.d": "Allows variation of the width of the garment", + "clavi.t": "Clavi", + "clavi.d": "Whether or not to include guides for clavi", + "clavusLocation.t": "Clavus location", + "clavusLocation.d": "Controls the location of the clavi", + "clavusWidth.t": "Clavus width", + "clavusWidth.d": "Controls the width of the clavi", + "length.t": "Length", + "length.d": "Controls the length of the garment", + "width.t": "Width", + "width.d": "Controls the width of the garment", + "forceWidth.t": "Force width", + "forceWidth.d": "Apply width settings regardless of constraints" +} + +export default o_tiberius diff --git a/packages/i18n/src/next/uk/o_titan.mjs b/packages/i18n/src/next/uk/o_titan.mjs new file mode 100644 index 00000000000..02b102082a5 --- /dev/null +++ b/packages/i18n/src/next/uk/o_titan.mjs @@ -0,0 +1,38 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_titan = { + "kneeEase.t": "Knee ease", + "kneeEase.d": "Controls the amout of ease at the knee", + "waistHeight.t": "Waist height", + "waistHeight.d": "Controls the height of the waist, 100% = waist height, 0% = hip height", + "lengthBonus.t": "Length bonus", + "lengthBonus.d": "Controls the length of the trousers", + "crotchDrop.t": "Crotch drop", + "crotchDrop.d": "Lowers the crotch for a more relaxed fit", + "fitKnee.t": "Fit the knee", + "fitKnee.d": "Fits the legs from based on the knee circumference, rather than seat circumference", + "legBalance.t": "Leg balance", + "legBalance.d": "Controls the ratio between front and back panel of the leg", + "crossSeamCurveStart.t": "Start of the cross seam curve", + "crossSeamCurveStart.d": "Controls how far into the cross seam we start to curve", + "crossSeamCurveBend.t": "Cross seam bend", + "crossSeamCurveBend.d": "Controls the curvature of the cross seam", + "crossSeamCurveAngle.t": "Cross seam angle", + "crossSeamCurveAngle.d": "Controls the angle of the cross seam", + "crotchSeamCurveStart.t": "Start of the crotch seam curve", + "crotchSeamCurveStart.d": "Controls how far into the crotch seam we start to curve", + "crotchSeamCurveBend.t": "Crotch seam bend", + "crotchSeamCurveBend.d": "Controls the curvature of the crotch seam", + "crotchSeamCurveAngle.t": "Crotch seam angle", + "crotchSeamCurveAngle.d": "Controls the angle of the crotch seam", + "waistBalance.t": "Waist balance", + "waistBalance.d": "Controls the horizontal position of the waist relative to the seat", + "waistbandWidth.t": "Waistband width", + "waistbandWidth.d": "The width of the waistband", + "grainlinePosition.t": "Grainline position", + "grainlinePosition.d": "Controls the horizontal position of the leg relative to the seat" +} + +export default o_titan diff --git a/packages/i18n/src/next/uk/o_trayvon.mjs b/packages/i18n/src/next/uk/o_trayvon.mjs new file mode 100644 index 00000000000..c5bd73f2013 --- /dev/null +++ b/packages/i18n/src/next/uk/o_trayvon.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_trayvon = { + "tipWidth.t": "Tip width", + "tipWidth.d": "The width of your tie at the tip", + "knotWidth.t": "Knot width", + "knotWidth.d": "The width of your tie at the knot" +} + +export default o_trayvon diff --git a/packages/i18n/src/next/uk/o_unice.mjs b/packages/i18n/src/next/uk/o_unice.mjs new file mode 100644 index 00000000000..ebf2967acd5 --- /dev/null +++ b/packages/i18n/src/next/uk/o_unice.mjs @@ -0,0 +1,16 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_unice = { + "fabricStretchX.t": "Fabric stretch (horizontal)", + "fabricStretchX.d": "Adjust this for more or less stretchy fabrics", + "fabricStretchY.t": "Fabric stretch (vertical)", + "fabricStretchY.d": "Adjust this for more or less stretchy fabrics", + "adjustStretch.t": "Adjust stretch", + "adjustStretch.d": "This option allows you to put in the maximum stretch that the fabric will allow in both horizontal and vertical directions; When disabled, the stretch values are used as-is", + "useCrossSeam.t": "Use crossseam", + "useCrossSeam.d": "When enabled, the total height of the pattern pieces combined will match the cross seam length minus the front and back rise. When disabled, the total height depends on the gusset length option." +} + +export default o_unice diff --git a/packages/i18n/src/next/uk/o_ursula.mjs b/packages/i18n/src/next/uk/o_ursula.mjs new file mode 100644 index 00000000000..9495f237de1 --- /dev/null +++ b/packages/i18n/src/next/uk/o_ursula.mjs @@ -0,0 +1,28 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_ursula = { + "fabricStretch.t": "Fabric stretch", + "fabricStretch.d": "Adjust this for more or less stretchy fabrics", + "gussetWidth.t": "Gusset width", + "gussetWidth.d": "Controls the width of the gusset", + "gussetLength.t": "Gusset length", + "gussetLength.d": "Controls the length of the gusset", + "elasticStretch.t": "Elastic stretch", + "elasticStretch.d": "Adjust this for more or less stretchy elastic", + "rise.t": "Rise", + "rise.d": "Controls the height of the waist", + "legOpening.t": "Leg opening", + "legOpening.d": "Controls how high the leg is cut out", + "frontDip.t": "Front waist dip", + "frontDip.d": "Controls how much the front waist curves (revealing more or less skin)", + "backDip.t": "Back waist dip", + "backDip.d": "Controls how much the back waist curves (revealing more or less skin)", + "taperToGusset.t": "Front exposure", + "taperToGusset.d": "Controls the amount of exposed skin on the front", + "backExposure.t": "Back exposure", + "backExposure.d": "Controls the amount of exposed skin on the back" +} + +export default o_ursula diff --git a/packages/i18n/src/next/uk/o_wahid.mjs b/packages/i18n/src/next/uk/o_wahid.mjs new file mode 100644 index 00000000000..6a10a639dd4 --- /dev/null +++ b/packages/i18n/src/next/uk/o_wahid.mjs @@ -0,0 +1,36 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_wahid = { + "backScyeDart.t": "Back scye dart", + "backScyeDart.d": "The amount to take out in a dart at the back of the armhole.", + "frontScyeDart.t": "Front scye dart", + "frontScyeDart.d": "The amount to take out in a dart at the front of the armhole.", + "pocketLocation.t": "Pocket location", + "pocketLocation.d": "Determines the placement of the pocket", + "pocketWidth.t": "Pocket width", + "pocketWidth.d": "Determines the width of the pocket", + "weltHeight.t": "Welt height", + "weltHeight.d": "Determines the height of the welt", + "necklineDrop.t": "Neckline drop", + "necklineDrop.d": "Determines how low the neckline drops at the front", + "frontStyle.t": "Neck opening style", + "frontStyle.d": "Style of the neck opening", + "hemStyle.t": "Hem style", + "hemStyle.d": "Style of the front hem", + "hemRadius.t": "Hem radius", + "hemRadius.d": "Radius by which the hem is rounded", + "backInset.t": "Back inset", + "backInset.d": "How much the back of the armhole is cut inwards", + "frontInset.t": "Front inset", + "frontInset.d": "How much the front of the armhole is cut inwards", + "shoulderInset.t": "Shoulder inset", + "shoulderInset.d": "How much the shoulder seam is cut inwards at the shoulder", + "neckInset.t": "Neck inset", + "neckInset.d": "How much the shoulder seam is cut inwards at the neck", + "pocketAngle.t": "Pocket angle", + "pocketAngle.d": "Angle of the pocket slant" +} + +export default o_wahid diff --git a/packages/i18n/src/next/uk/o_walburga.mjs b/packages/i18n/src/next/uk/o_walburga.mjs new file mode 100644 index 00000000000..e033f36b0b4 --- /dev/null +++ b/packages/i18n/src/next/uk/o_walburga.mjs @@ -0,0 +1,20 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_walburga = { + "headRatio.t": "Head ratio", + "headRatio.d": "Controls the size of the head opening", + "lengthBonus.t": "Length bonus", + "lengthBonus.d": "Allows variation of the length of the garment", + "widthBonus.t": "Width bonus", + "widthBonus.d": "Allows variation of the width of the garment", + "length.t": "Length", + "length.d": "Controls the length of the garment", + "neckoRatio.t": "Neck opening shape", + "neckoRatio.d": "controls the shape of the neck opening", + "neckline.t": "Neckline", + "neckline.d": "Controls whether or not to draft a neck opening" +} + +export default o_walburga diff --git a/packages/i18n/src/next/uk/o_waralee.mjs b/packages/i18n/src/next/uk/o_waralee.mjs new file mode 100644 index 00000000000..d25f7564705 --- /dev/null +++ b/packages/i18n/src/next/uk/o_waralee.mjs @@ -0,0 +1,36 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const o_waralee = { + "backPocket.t": "Back pocket", + "backPocket.d": "Whether to include a back pocket or not", + "frontPocket.t": "Front pocket", + "frontPocket.d": "Whether to include a front pocket or not", + "hemWidth.t": "Hem size", + "hemWidth.d": "Size of the hem at the bottom of the pants", + "waistbandWidth.t": "Waist Band", + "waistbandWidth.d": "Size of the waist band", + "waistRaise.t": "Waist Raise", + "waistRaise.d": "How much to raise the waist from the seat depth measurement. This influences the depth of the crotch cut-out.", + "crotchBack.t": "Crotch Back", + "crotchBack.d": "The percentage of the seat circumference that the back crotch needs to occupy. This creates more or less space between the side seam and the back.", + "crotchFront.t": "Crotch Front", + "crotchFront.d": "The percentage of the seat circumference that the front crotch needs to occupy. This creates more or less space between the side seam and the front.", + "crotchFactorBackHor.t": "Back Crotch Factor Horizontal", + "crotchFactorBackHor.d": "Used to move the curve of the crotch in the back horizontally", + "crotchFactorBackVer.t": "Back Crotch Factor Vertical", + "crotchFactorBackVer.d": "Used to move the curve of the crotch in the back vertically", + "crotchFactorFrontHor.t": "Front Crotch Factor Horizontal", + "crotchFactorFrontHor.d": "Used to move the curve of the crotch in the front horizontally", + "crotchFactorFrontVer.t": "Front Crotch Factor Vertical", + "crotchFactorFrontVer.d": "Used to move the curve of the crotch in the front vertically", + "waistOverlap.t": "Waist Overlap", + "waistOverlap.d": "This dicates how much you want the leg flaps to overlap at the waist. A setting of 0 would have them meet at the side seam, and a setting of 100 makes them meet at the front/back.", + "legShortening.t": "Leg Shortening", + "legShortening.d": "This dictates how long the pants will be. It is a factor of the inseam measurement. The larger the value, the more that will be taken off the length.", + "backRaise.t": "Back Raise", + "backRaise.d": "This setting raises the waist in the back. Our waist does not sit horizontally, but is angled up at the back. This seting allows you to raise this in the back if you need it for a good fit." +} + +export default o_waralee diff --git a/packages/i18n/src/next/uk/ograph.mjs b/packages/i18n/src/next/uk/ograph.mjs new file mode 100644 index 00000000000..306cf6a8a31 --- /dev/null +++ b/packages/i18n/src/next/uk/ograph.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const ograph = { + "orgTitle": "Ласкаво просимо до FreeSewing.org", + "devTitle": "Ласкаво просимо до FreeSewing.dev", + "labTitle": "Ласкаво просимо до lab.FreeSewing.lab", + "devDescription": "Документація та навчальні матеріали для розробників FreeSewing та учасників. А також наш блог розробників" +} + +export default ograph diff --git a/packages/i18n/src/next/uk/optiongroups.mjs b/packages/i18n/src/next/uk/optiongroups.mjs new file mode 100644 index 00000000000..ad5a1b86da7 --- /dev/null +++ b/packages/i18n/src/next/uk/optiongroups.mjs @@ -0,0 +1,32 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const optiongroups = { + "advanced": "Додатково", + "armhole": "Пройма", + "closure": "Закриття", + "collar": "Комір", + "construction": "Конструкція", + "cuffs": "Манжети", + "darts": "Виточки", + "elastic": "Резинка", + "fit": "За розміром", + "pockets": "Кишені", + "preferences": "Уподобання", + "sleevecap": "Окат рукава", + "sleeves": "Рукава", + "style": "Стиль", + "backPockets": "Задні кишені", + "frontPockets": "Передні кишені", + "waistband": "Резинка на талії", + "fly": "Гульфик", + "bellaDarts": "Виточки Белла", + "bellaArmhole": "Пройма Белла", + "bellaAdvanced": "Додатково Белла", + "clavi": "Клав", + "type": "Тип", + "size": "Розмір" +} + +export default optiongroups diff --git a/packages/i18n/src/next/uk/parts.mjs b/packages/i18n/src/next/uk/parts.mjs new file mode 100644 index 00000000000..6aa1d1352e1 --- /dev/null +++ b/packages/i18n/src/next/uk/parts.mjs @@ -0,0 +1,65 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const parts = { + "back": "Спина", + "backBase": "Основа спинки", + "backPocketWelt": "Листочка задньої кишені", + "base": "База", + "bentBack": "Спина Бент", + "bentBase": "Основа Бент", + "bentFront": "Перед Бент", + "bentSleeve": "Рукав Бент", + "bentTopSleeve": "Верх рукава Бент", + "bentUnderSleeve": "Низ рукава Бент", + "buttonholePlacket": "Деталь під отвір для ґудзика", + "buttonPlacket": "Деталь під ґудзик", + "collar": "Комір", + "collarStand": "Стійка під комір", + "cuff": "Манжет", + "fabricTail": "Fabric tail", + "fabricTip": "Fabric tip", + "frontBase": "Низ переду", + "frontFacing": "Лицьовий бік", + "front": "Переднє полотнище", + "frontLeft": "Лівий бік переду", + "frontLining": "Перед підкладки", + "frontRight": "Правий бік переду", + "gusset": "Ластовиця", + "hoodCenter": "Центр капюшону", + "hood": "Капюшон", + "hoodSide": "Сторона капюшону", + "inset": "Вставка", + "interfacingTail": "Interfacing tail", + "interfacingTip": "Interfacing tip", + "liningTail": "Lining tail", + "liningTip": "Lining tip", + "loop": "Петелька", + "panel1": "Панель 1", + "panel2": "Панель 2", + "panel3": "Панель 3", + "panel4": "Панель 4", + "panel5": "Панель 5", + "panel6": "Панель 6", + "panels": "Панелі", + "pocketBag": "Pocket bag", + "pocketFacing": "Зовнішня частина кишені", + "pocketInterfacing": "Pocket interfacing", + "pocket": "Кишеня", + "pocketWelt": "Кишенькова листочка", + "side": "Бік", + "sleeveBase": "Sleeve base", + "sleevecap": "Окат рукава", + "sleevePlacketOverlap": "Верх шліца", + "sleevePlacketUnderlap": "Низ шліца", + "sleeve": "Рукав", + "topSleeve": "Верх рукава", + "top": "Верх", + "underCollar": "Підборт", + "underSleeve": "Низ рукава", + "waistband": "Резинка на талії", + "yoke": "Кокетка" +} + +export default parts diff --git a/packages/i18n/src/next/uk/patrons.mjs b/packages/i18n/src/next/uk/patrons.mjs new file mode 100644 index 00000000000..247d82c1988 --- /dev/null +++ b/packages/i18n/src/next/uk/patrons.mjs @@ -0,0 +1,12 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const patrons = { + "becomeAPatron": "Стати патроном", + "supportFreesewing": "Підтримати FreeSewing", + "patronLead": "FreeSewing існує завдяки добровільній моделі підписки", + "patronPitch": "Якщо Ви думаєте, що ми робимо цінну роботу, і якщо Ви можете відшкодувати кілька монет щомісяця без труднощів, будь ласка, підтримайте нашу роботу" +} + +export default patrons diff --git a/packages/i18n/src/next/uk/patterns.mjs b/packages/i18n/src/next/uk/patterns.mjs new file mode 100644 index 00000000000..8b1664148e5 --- /dev/null +++ b/packages/i18n/src/next/uk/patterns.mjs @@ -0,0 +1,100 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const patterns = { + "aaron.t": "Майка Аарон", + "aaron.d": "Аарон є спортивною майкою.", + "albert.t": "Фартук Альберт", + "albert.d": "Альберт – це фартук.", + "bee.t": "Ліф купальника Бі", + "bee.d": "Бі – це ліф купальника", + "bella.t": "Викрійка-основа Белла", + "bella.d": "Белла є викрійкою-основою з виточками.", + "benjamin.t": "Галстук-метелик Бенджамін", + "benjamin.d": "Бенджамін – це викрійка краватки-метелика з чотирьма різними формами.", + "bent.t": "Викрійка-основа Бент", + "bent.d": "Ця двочастинна викрійка є основою для викрійок пальто та піджаків.", + "bob.t": "Нагрудник Боб", + "bob.d": "Це нагрудник, викрійку якого ви можете самостійно створити, пройшовши нашу інструкцію з дизайну викрійок", + "breanna.t": "Викрійка-основа Бреанна", + "breanna.d": "Бреанна – це викрійка-основа з виточками.", + "brian.t": "Викрійка-основа Брайан", + "brian.d": "Брайан – це викрійка-основа без виточок.", + "bruce.t": "Труси-боксери Брюс", + "bruce.d": "Брюс – комфортні та стильні боксери.", + "carlita.t": "Пальто Карліта", + "carlita.d": "Версія пальто Карлтон, ака пальто Шерлока Холмса, тільки зі швом Принц(есса).", + "carlton.t": "Пальто Карлтон", + "carlton.d": "Підходить для косплею Шерлока Холмса, або просто як гарне і практичне пальто.", + "cathrin.t": "Корсет Катрін", + "cathrin.d": "Катрін – це підгрудний корсет або тренувач талії.", + "charlie.t": "Брюки-чіноси Чарлі", + "charlie.d": "Чарлі – це викрійка для брюк-чіносів.", + "cornelius.t": "Бріджі для катання Корнеліус", + "cornelius.d": "Корнеліус – це бріджі для катання на велосипеді, основані на методі крою Кістон.", + "diana.t": "Топ з горловиною-хомутом Діана", + "diana.d": "Діана – це топ з горловиною-хомутом.", + "florent.t": "Пласка кепка Флорент", + "florent.d": "Флорент – це пласка кепка, заокруглена кепка з невеликим твердим козирцем спереду.", + "florence.t": "Маска Флоренс", + "florence.d": "Флоренс – це маска для обличчя.", + "hi.t": "Акула Куку", + "hi.d": "Найдружелюбніша акула у світі.", + "holmes.t": "Шапка Холмс", + "holmes.d": "Для косплею Шерлока Холмса, або просто як мила шапочка.", + "hortensia.t": "Ручна сумка Гортензія", + "hortensia.d": "Гортензія – це ручна сумка.", + "huey.t": "Худі Хьюї", + "huey.d": "Хьюі – це худі на блискавці з кишенями спереду (на ваш вибір).", + "hugo.t": "Худі Хьюго", + "hugo.d": "Хьюго – це джампер з капюшоном та рукавами реглан.", + "jaeger.t": "Піджак Джагер", + "jaeger.d": "Джагер – це спортивний піджак з двома ґудзиками та накладними кишенями.", + "lucy.t": "Кишеня на зав'язках Люсі", + "lucy.d": "Люсі – це кишеня з минулого, яку можна зав'язати на талії.", + "lunetius.t": "Ласерна Лютінус", + "lunetius.d": "Лютінус – це ласерна, або історична накидка з Древнього Риму.", + "noble.t": "Викрійка-основа Нобл", + "noble.d": "Нобл – це викрійка-основа з швом принц(есса).", + "paco.t": "Штани Пако", + "paco.d": "Пако – це базові та стильні літні штани.", + "penelope.t": "Юбка-олівець Пенелопа", + "penelope.d": "Пенелопа – це спідниця-олівець з розрізом ззаду (за бажанням).", + "sandy.t": "Юбка-сонце Сенді", + "sandy.d": "Сенді – викрійка спідниці-сонце на будь-яку довжину та пишність.", + "shin.t": "Плавки Шін", + "shin.d": "Шін – це спортивні плавки.", + "simon.t": "Сорочка Саймон", + "simon.d": "Саймон – це викрійка сорочки без передніх виточок. Легко адаптується під Ваші швейні плани.", + "simone.t": "Сорочка Сімон", + "simone.d": "Сімон – це як Саймон, але з передніми виточками.", + "sven.t": "Светр Свен", + "sven.d": "Свен – це простий і прямий светр.", + "tamiko.t": "Блузка Таміко", + "tamiko.d": "Таміко – це топ \"Нуль відходів\".", + "teagan.t": "Футболка Тіган", + "teagan.d": "Тіган – це викрійка футболки по розміру.", + "theo.t": "Штани Тео", + "theo.d": "Тео – це викрійка класичних штанів.", + "tiberius.t": "Туніка Тіберіус", + "tiberius.d": "Тіберіус – це Древньоримська туніка.", + "titan.t": "Викрійка-основа штанів Титан", + "titan.d": "Титан – це викрійка-основа штанів без виточок.", + "trayvon.t": "Краватка Трейвон", + "trayvon.d": "Трейвон – це краватка, яка робиться без відрізання кутів для професіонального вигляду.", + "unice.t": "Труси Юніс", + "unice.d": "Юніс – це варіант Урсули. Базова, багатофункціональна викрійка трусів.", + "ursula.t": "Труси Урсула", + "ursula.d": "Урсула – це викрійка базових трусів з великою кількістю налаштувань дизайну.", + "wahid.t": "Жилет Вахід", + "wahid.d": "Вахід – це класичний облягаючий жилет.", + "walburga.t": "Туніка Валбурга", + "walburga.d": "Валбурга – це гербова накидка; елемент одягу середньовічної Європи.", + "waralee.t": "Штани з запахом Варалі", + "waralee.d": "Варалі – це штани з запахом.", + "yuri.t": "Худі Юрі", + "yuri.d": "Юрі – це екстравагантний кардиган без блискавки, оснований на худі Хьюі та Хьюго." +} + +export default patterns diff --git a/packages/i18n/src/next/uk/plugin.mjs b/packages/i18n/src/next/uk/plugin.mjs new file mode 100644 index 00000000000..caf30f945f3 --- /dev/null +++ b/packages/i18n/src/next/uk/plugin.mjs @@ -0,0 +1,58 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const plugin = { + "cutOneStripToFinishTheNeckOpening": "Виріжте одну смугу для обробки горловини", + "cutTwoStripsToFinishTheArmholes": "Виріжте дві смуги для обробки пройми", + "length": "Довжина", + "width": "Ширина", + "back": "Зад", + "front": "Перед", + "sleeve": "Рукав", + "inset": "Вставка", + "side": "Бік", + "hello": "Привіт", + "Vent": "Виріз", + "PocketFacing": "Зовнішня частина кишені", + "SidePanel": "Бокова панель", + "FrontBackPanel": "Передня та задня панель", + "BottomPanel": "Нижня панель", + "ZipperPanel": "Панель під блискавку", + "Strap": "Ручка", + "strapLength": "Довжина ручок", + "handleWidth": "Ширина ручок", + "zipperSize": "Стандартний розмір блискавки", + "SidePanelReinforcement": "Бокова підкріплююча панель", + "cuff": "Манжет", + "hoodCenter": "Центр капюшону", + "hoodSide": "Бік капюшону", + "pocketFacing": "Зовнішня частина кишені", + "pocket": "Кишеня", + "waistband": "Резинка на талії", + "buttonholePlacket": "Деталь під отвір для ґудзика", + "buttonPlacket": "Деталь під ґудзик", + "collarAndUndercollar": "Комір та Внутрішній комір", + "collarStand": "Стійка під комір", + "cutUndercollarSlightlySmaller": "Виріжте внутрішню частину коміру трошки меншою", + "frontLeft": "Перед зліва", + "frontRight": "Перед справа", + "sideOfTheCollarStand": "Бік стійки під комір", + "sleevePlacketOverlap": "Sleeve placket overlap", + "sleevePlacketUnderlap": "Sleeve placket underlap", + "yoke": "Кокетка", + "matchHere": "З'єднайте візерунок тканини по цій лінії", + "fullLengthFromHps": "Повна довжина (від ВТП)", + "cutTwoPiecesOfElasticToFinishTheLegOpenings": "Виріжте два шматочка гумки (резинки) щоб завершити зріз низу", + "cutOnePieceOfElasticToFinishTheWaistBand": "Виріжте один шматок гумки (резинки) щоб завершити пояс", + "cutOnFoldAndGrainline": "Розрізати у зігнутому вигляді / Нитка основи", + "cutOnFold": "Розрізати у зігнутому вигляді", + "grainline": "Нитка основи", + "theBlackOutsideOfThisBoxShouldMeasure": "Зовнішня сторона цієї коробки має бути", + "theWhiteInsideOfThisBoxShouldMeasure": "Внутрішня сторона цієї коробки має бути", + "supportFreesewingBecomeAPatron": "Підтримайте FreeSewing, станьте Патроном", + "cut": "Вирізати", + "onFold": "У зігнутому вигляді" +} + +export default plugin diff --git a/packages/i18n/src/next/uk/posts.mjs b/packages/i18n/src/next/uk/posts.mjs new file mode 100644 index 00000000000..1722708dd81 --- /dev/null +++ b/packages/i18n/src/next/uk/posts.mjs @@ -0,0 +1,10 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const posts = { + "xMadeThis": "{x} є автором цієї роботи", + "xWroteThis": "{x} є автором цього тексту" +} + +export default posts diff --git a/packages/i18n/src/next/uk/settings.mjs b/packages/i18n/src/next/uk/settings.mjs new file mode 100644 index 00000000000..9b3f864541a --- /dev/null +++ b/packages/i18n/src/next/uk/settings.mjs @@ -0,0 +1,34 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const settings = { + "advanced.t": "Режим фахівця", + "advanced.d": "Визначає показ додаткових налаштувань та налаштувань викрійки", + "paperless.t": "Без паперу", + "paperless.d": "Створює викрійку з урахуванням масштабу для перенесення на тканину чи інший матеріал без потреби друку", + "sa.t": "Припуск на шов", + "sa.d": "Визначає розмір припусків на шви в Вашій викрійці", + "locale.t": "Мова", + "locale.d": "Визначає мову на викрійці", + "only.t": "Зміст", + "only.d": "Дозволяє керувати тим, які елементи викрійки відображуватимуться на Вашій викрійці", + "units.t": "Одиниці виміру", + "units.d": "Керує одиницями вимірювання на викрійці", + "margin.t": "Відступ", + "margin.d": "Контролює відступ навколо елементів викрійки", + "complete.t": "Докладність", + "complete.d": "Керує докладність викрійки: відображувати повноцінну викрійку з усіма подробицями чи лише основний контур елементів викрійки", + "layout.t": "Макет", + "layout.d": "Керує подальше розташування окремих елементів викрійки на матеріалі", + "debug.t": "Налагодження", + "debug.d": "Увімкнути налагодження для отримання додаткової інформації щодо способу створення викрійки", + "scale.t": "Масштаб", + "scale.d": "Керує ширину контуру, кегль шрифту та інші елементи, які не масштабуються відповідно до замірів викрійки", + "renderer.t": "Двигун відтворювання", + "renderer.d": "Керує відтворення викрійки на екрані", + "xray.t": "Рентген", + "xray.d": "Зазирніть за лаштунки з рентгенівським режимом FreeSewing" +} + +export default settings diff --git a/packages/i18n/src/next/uk/themes.mjs b/packages/i18n/src/next/uk/themes.mjs new file mode 100644 index 00000000000..d99b1b88fa3 --- /dev/null +++ b/packages/i18n/src/next/uk/themes.mjs @@ -0,0 +1,13 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const themes = { + "lightTheme": "Світла тема", + "darkTheme": "Темна тема", + "hax0rTheme": "Тема Hax0r", + "lgbtqTheme": "Тема ЛГБТК", + "transTheme": "Тема Транс" +} + +export default themes diff --git a/packages/i18n/src/next/uk/welcome.mjs b/packages/i18n/src/next/uk/welcome.mjs new file mode 100644 index 00000000000..9c842512830 --- /dev/null +++ b/packages/i18n/src/next/uk/welcome.mjs @@ -0,0 +1,17 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const welcome = { + "units": "Оберіть одиниці, які Ви хочете використовувати", + "username": "Оберіть ім'я користувача", + "avatar": "Додайте зображення профілю", + "bio": "Розкажіть нам трохи про себе", + "social": "Дайте нам знати, де ми можемо слідкувати за Вами", + "newsletter": "Надайте нам свої налаштування для розсилки", + "letUsSetupYourAccount": "Давайте налаштуємо Ваш обліковий запис.", + "walkYouThrough": "Ми допоможемо Вам пройти наступні етапи:", + "someOptional": "Хоча всі ці етапи необов'язкові, ми рекомендуємо Вам пройти їх, щоб отримати максимум користі від FreeSewing." +} + +export default welcome diff --git a/packages/i18n/src/next/uk/workbench.mjs b/packages/i18n/src/next/uk/workbench.mjs new file mode 100644 index 00000000000..00fe1965627 --- /dev/null +++ b/packages/i18n/src/next/uk/workbench.mjs @@ -0,0 +1,15 @@ +/* + * This file is auto-generated by the prebuild script + * All edits will be overwritten on the next (pre)build + */ +const workbench = { + "designOptions": "Варіанти дизайну", + "forPrinting": "Для друку", + "forCutting": "Для вирізання", + "layoutThing": "Розташувати {thing}", + "pageSize": "Розмір сторінки", + "startBySelectingAThing": "Почніть з вибору {thing}", + "testThing": "Протестувати {thing}" +} + +export default workbench diff --git a/packages/i18n/src/prebuild.mjs b/packages/i18n/src/prebuild.mjs index c01e4ab44f4..65224923ae9 100644 --- a/packages/i18n/src/prebuild.mjs +++ b/packages/i18n/src/prebuild.mjs @@ -1,7 +1,7 @@ import yaml from 'js-yaml' import path from 'path' import rdir from 'recursive-readdir' -import { readFile, writeFile } from 'fs/promises' +import { readFile, writeFile, mkdir } from 'fs/promises' import { fileURLToPath } from 'url' import { dirname } from 'path' @@ -34,14 +34,19 @@ const getTranslationFileList = async () => { return files.sort() } +/** extracts the locale from the file name */ +const localeFromFileName = (fileName) => { + const split1 = fileName.split(`${path.sep}locales${path.sep}`).pop() + return split1.split(`${path.sep}`).shift() +} + /* * Figures out the list of locales from the list of files * (by checking how many version of aaron.yaml exist) */ const getLocalesFromFileList = files => files .filter(file => (file.slice(-10) === 'aaron.yaml')) - .map(file => file.split(`${path.sep}locales${path.sep}`).pop()) - .map(file => file.split(`${path.sep}plugin${path.sep}`).shift()) + .map(localeFromFileName) // Helper method to see if a dir occurs in a full path const pathContains = (fullPath, dir) => fullPath @@ -97,25 +102,28 @@ const loadTranslationFile = async (file) => { * Creates an object with namespaces and the YAML/YML files * that go with them */ -const getNamespacesFromFileList = async (files, locales) => { +const getNamespacesFromFileList = async (files, locales, only=false) => { const namespaces = {} - for (const locale of locales) { - namespaces[locale] = {} - const locFiles = files.filter(file => ( - file.split(`${path.sep}locales${path.sep}${locale}${path.sep}`).length > 1) - ) - for (const file of locFiles) { - const namespace = namespaceFromFile(file) - if (typeof namespaces[locale][namespace] === 'undefined') { - namespaces[locale][namespace] = {} - } - // Spread in the result of yaml.load since - //console.log((await loadTranslationFile(file))) - // some namespaces are made up of multiple files - namespaces[locale][namespace] = { - ...namespaces[locale][namespace], - ...(await loadTranslationFile(file)) - } + for (var i = 0; i < files.length; i++) { + let file = files[i] + + let loc = localeFromFileName(file); + if (locales.indexOf(loc) === -1) continue + + let namespace = namespaceFromFile(file); + if (only === true && only.indexOf(namespace) === -1) continue + + if (typeof namespaces[loc] === 'undefined') { + namespaces[loc] = {} + } + + if (typeof namespaces[loc][namespace] === 'undefined') { + namespaces[loc][namespace] = {} + } + + namespaces[loc][namespace] = { + ...namespaces[loc][namespace], + ...(await loadTranslationFile(file)) } } @@ -166,10 +174,14 @@ ${locales * Writes out files */ const writeFiles = async allNamespaces => { - const promises = [] + const filePromises = [] + for (const [locale, namespaces] of Object.entries(allNamespaces)) { + // make sure there's a folder for the locale + await mkdir(path.resolve(__dirname, 'next', locale), {recursive: true}) + for (const [namespace, data] of Object.entries(namespaces)) { - promises.push( + filePromises.push( writeFile( path.resolve(__dirname, 'next', locale, namespace+'.mjs', ), namespaceFile(namespace, data) @@ -177,7 +189,7 @@ const writeFiles = async allNamespaces => { ) } // Locale index files - promises.push( + filePromises.push( writeFile( path.resolve(__dirname, 'next', locale, 'index.mjs', ), localeFile(Object.keys(namespaces)) @@ -185,13 +197,15 @@ const writeFiles = async allNamespaces => { ) } // Locale index files - promises.push( + filePromises.push( writeFile( path.resolve(__dirname, 'next.mjs', ), indexFile(Object.keys(allNamespaces), allNamespaces) ) ) - await Promise.all(promises) + + // write the files + await Promise.all(filePromises) return } @@ -199,19 +213,15 @@ const writeFiles = async allNamespaces => { /* * Turns YAML translation files into JS */ -const build = async () => { +export const build = async (localeFilter = () => true, only=false) => { const files = await getTranslationFileList() - const locales = getLocalesFromFileList(files) - const namespaces = await getNamespacesFromFileList(files, locales) + const locales = getLocalesFromFileList(files).filter(localeFilter) + console.log('building i18n for', locales) + const namespaces = await getNamespacesFromFileList(files, locales, only) + await writeFiles(namespaces) + return namespaces } -build() - - - - - - - //export default strings + diff --git a/packages/i18n/src/shared-options.yml b/packages/i18n/src/shared-options.yml index 1337414a580..4558ecfe8d1 100644 --- a/packages/i18n/src/shared-options.yml +++ b/packages/i18n/src/shared-options.yml @@ -1,9 +1,13 @@ aaron: dflt: brian + other: + draftForHighBust: teagan benjamin: dflt: brian bent: dflt: brian + other: + draftForHighBust: teagan breanna: dflt: brian other: @@ -28,6 +32,7 @@ carlton: innerPocketWidth: jaeger innerPocketDepth: jaeger innerPocketWeltHeight: jaeger + draftForHighBust: teagan carlita: dflt: brian other: @@ -58,6 +63,7 @@ carlita: chestPocketHeight: carlton beltWidth: carlton buttonSpacingHorizontal: carlton + draftForHighBust: teagan charlie: dflt: titan other: @@ -68,6 +74,7 @@ diana: other: waistEase: breanna hipsEase: aaron + draftForHighBust: teagan huey: dflt: brian other: @@ -77,11 +84,13 @@ huey: waistEase: simon hipsEase: aaron pocketWidth: wahid + draftForHighBust: teagan hugo: dflt: brian other: ribbingHeight: sven ribbingStretch: sven + draftForHighBust: teagan jaeger: dflt: brian other: @@ -91,6 +100,7 @@ jaeger: sleevecapHeight: bent buttons: simon collarRoll: simon + draftForHighBust: teagan paco: dflt: titan other: @@ -107,6 +117,7 @@ simon: dflt: brian other: hipsEase: aaron + draftForHighBust: teagan simone: dflt: simon other: @@ -145,10 +156,15 @@ simone: sleevecapQ4Spread1: brian sleevecapQ4Spread2: brian sleeveWidthGuarantee: brian + draftForHighBust: teagan sven: dflt: brian + other: + draftForHighBust: teagan tamiko: dflt: brian + other: + draftForHighBust: teagan teagan: dflt: brian other: @@ -171,8 +187,10 @@ wahid: waistEase: simon centerBackDart: jaeger buttons: simon + draftForHighBust: teagan yuri: dflt: brian other: hipsEase: hugo + draftForHighBust: teagan diff --git a/packages/models/README.md b/packages/models/README.md index da0b0de9d40..a24a3adbb40 100644 --- a/packages/models/README.md +++ b/packages/models/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/models/package.json b/packages/models/package.json index 1406b148cc0..ca017d2aa20 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/models", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "Body measurements data for a range of default sizes", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -35,7 +35,7 @@ "cibuild_step6": "node build.js" }, "peerDependencies": { - "@freesewing/utils": "^2.21.3" + "@freesewing/utils": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": {}, @@ -45,7 +45,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/mui-theme/README.md b/packages/mui-theme/README.md index d59a5dc65ec..b7d4217b3af 100644 --- a/packages/mui-theme/README.md +++ b/packages/mui-theme/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/mui-theme/package.json b/packages/mui-theme/package.json index bf622f27ff7..c172f062c74 100644 --- a/packages/mui-theme/package.json +++ b/packages/mui-theme/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/mui-theme", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A Material-UI theme for FreeSewing web UIs", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -45,7 +45,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/new-design/CHANGELOG.md b/packages/new-design/CHANGELOG.md index bb191858d55..3009c549c75 100644 --- a/packages/new-design/CHANGELOG.md +++ b/packages/new-design/CHANGELOG.md @@ -1,7 +1,7 @@ # Change log for: @freesewing/new-design -## 2.21.3 (2022-07-03) +## 2.21.3 (2022-07-02) ### Changed diff --git a/packages/new-design/README.md b/packages/new-design/README.md index abe5d7071bc..ccd0ad253c0 100644 --- a/packages/new-design/README.md +++ b/packages/new-design/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/new-design/lib/cli.mjs b/packages/new-design/lib/cli.mjs index 9f5e99e747f..1920e09c4a4 100644 --- a/packages/new-design/lib/cli.mjs +++ b/packages/new-design/lib/cli.mjs @@ -1,5 +1,3 @@ -import path from 'path' -import chalk from 'chalk' import { banner } from './banner.mjs' import { checkNodeVersion, @@ -20,34 +18,6 @@ export const cli = async () => { const choices = await getChoices() // Create environment from template - const result = createEnvironment(choices) + createEnvironment(choices) } -/* - - - const dest = await createLibrary(params) - - console.log(` -🎉 ${strings[params.language]['cfp.patternCreated']} ${chalk.bold(dest)} - -${strings[params.language]['cfp.runTheseCommands']}: - - 👉 ${chalk.cyan(`cd ${path.join(params.shortName, 'example')} && ${params.manager} start`)} - -${strings[params.language]['cfp.startWebpack']} - -${strings[params.language]['cfp.devDocsAvailableAt']} - ${chalk.bold('https://freesewing.dev/')} - -${strings[params.language]['cfp.talkToUs']} - ${chalk.bold('https://discord.freesewing.org/')} - -` - ) - - return dest -} - - -*/ diff --git a/packages/new-design/lib/config.mjs b/packages/new-design/lib/config.mjs index 55f2cc8eaa0..ffe7d17deee 100644 --- a/packages/new-design/lib/config.mjs +++ b/packages/new-design/lib/config.mjs @@ -59,50 +59,53 @@ export const config = { "shared/components/web-link.js", "shared/components/yaml.js", "shared/components/layouts/default.js", - "shared/components/icons/box.js", - "shared/components/icons/camera.js", - "shared/components/icons/clear.js", - "shared/components/icons/close.js", - "shared/components/icons/cog.js", - "shared/components/icons/community.js", - "shared/components/icons/copy.js", - "shared/components/icons/design.js", - "shared/components/icons/discord.js", - "shared/components/icons/docs.js", - "shared/components/icons/down.js", - "shared/components/icons/edit.js", - "shared/components/icons/export.js", - "shared/components/icons/facebook.js", - "shared/components/icons/filter.js", - "shared/components/icons/freesewing.js", - "shared/components/icons/github.js", - "shared/components/icons/google.js", - "shared/components/icons/guide.js", - "shared/components/icons/heart.js", - "shared/components/icons/help.js", - "shared/components/icons/i18n.js", - "shared/components/icons/instagram.js", - "shared/components/icons/left.js", - "shared/components/icons/menu.js", - "shared/components/icons/note.js", - "shared/components/icons/options.js", - "shared/components/icons/page-size.js", - "shared/components/icons/page.js", - "shared/components/icons/print.js", - "shared/components/icons/reddit.js", - "shared/components/icons/right.js", - "shared/components/icons/rss.js", - "shared/components/icons/search.js", - "shared/components/icons/settings.js", - "shared/components/icons/theme.js", - "shared/components/icons/tip.js", - "shared/components/icons/tutorial.js", - "shared/components/icons/twitter.js", - "shared/components/icons/user.js", - "shared/components/icons/versions.js", - "shared/components/icons/with-breasts.js", - "shared/components/icons/without-breasts.js", - "shared/components/icons/xray.js", + "shared/components/icons/box.js", + "shared/components/icons/camera.js", + "shared/components/icons/clear.js", + "shared/components/icons/close.js", + "shared/components/icons/cog.js", + "shared/components/icons/community.js", + "shared/components/icons/copy.js", + "shared/components/icons/design.js", + "shared/components/icons/discord.js", + "shared/components/icons/docs.js", + "shared/components/icons/down.js", + "shared/components/icons/edit.js", + "shared/components/icons/export.js", + "shared/components/icons/facebook.js", + "shared/components/icons/filter.js", + "shared/components/icons/flip.js", + "shared/components/icons/freesewing.js", + "shared/components/icons/github.js", + "shared/components/icons/google.js", + "shared/components/icons/guide.js", + "shared/components/icons/heart.js", + "shared/components/icons/help.js", + "shared/components/icons/i18n.js", + "shared/components/icons/instagram.js", + "shared/components/icons/left.js", + "shared/components/icons/menu.js", + "shared/components/icons/note.js", + "shared/components/icons/options.js", + "shared/components/icons/page.js", + "shared/components/icons/page-size.js", + "shared/components/icons/print.js", + "shared/components/icons/reddit.js", + "shared/components/icons/right.js", + "shared/components/icons/rotate.js", + "shared/components/icons/rss.js", + "shared/components/icons/search.js", + "shared/components/icons/settings.js", + "shared/components/icons/sheet.js", + "shared/components/icons/theme.js", + "shared/components/icons/tip.js", + "shared/components/icons/tutorial.js", + "shared/components/icons/twitter.js", + "shared/components/icons/user.js", + "shared/components/icons/versions.js", + "shared/components/icons/with-breasts.js", + "shared/components/icons/without-breasts.js", + "shared/components/icons/xray.js", "shared/components/logos/cc-by.js", "shared/components/logos/cc.js", "shared/components/logos/freesewing.js", @@ -119,31 +122,75 @@ export const config = { "shared/components/wrappers/workbench.js", "shared/components/mdx/index.js", "shared/components/workbench/default-settings.js", - "shared/components/workbench/events.js", - "shared/components/workbench/export.js", - "shared/components/workbench/json.js", - "shared/components/workbench/preload.js", - "shared/components/workbench/sample.js", - "shared/components/workbench/yaml.js", - "shared/components/workbench/inputs/design-option-count.js", - "shared/components/workbench/inputs/design-option-list.js", - "shared/components/workbench/inputs/design-option-pct-deg.js", - "shared/components/workbench/inputs/measurement.js", - "shared/components/workbench/measurements/index.js", - "shared/components/workbench/measurements/non-human.js", - "shared/components/workbench/draft/error.js", - "shared/components/workbench/draft/index.js", - "shared/components/workbench/draft/svg-wrapper.js", - "shared/components/workbench/draft/utils.js", "shared/components/workbench/draft/circle/index.js", "shared/components/workbench/draft/defs/index.js", + "shared/components/workbench/draft/error.js", + "shared/components/workbench/draft/index.js", "shared/components/workbench/draft/part/index.js", "shared/components/workbench/draft/path/index.js", "shared/components/workbench/draft/point/index.js", "shared/components/workbench/draft/snippet/index.js", "shared/components/workbench/draft/svg/index.js", + "shared/components/workbench/draft/svg-wrapper.js", "shared/components/workbench/draft/text/index.js", "shared/components/workbench/draft/text-on-path/index.js", + "shared/components/workbench/draft/utils.js", + "shared/components/workbench/events.js", + "shared/components/workbench/exporting/index.js", + "shared/components/workbench/exporting/pdfExporter.js", + "shared/components/workbench/inputs/design-option-count.js", + "shared/components/workbench/inputs/design-option-list.js", + "shared/components/workbench/inputs/design-option-pct-deg.js", + "shared/components/workbench/inputs/measurement.js", + "shared/components/workbench/json.js", + "shared/components/workbench/layout/cut/index.js", + "shared/components/workbench/layout/cut/settings.js", + "shared/components/workbench/layout/draft/buttons.js", + "shared/components/workbench/layout/draft/index.js", + "shared/components/workbench/layout/draft/part.js", + "shared/components/workbench/layout/print/index.js", + "shared/components/workbench/layout/print/orientation-picker.js", + "shared/components/workbench/layout/print/pagesize-picker.js", + "shared/components/workbench/layout/print/plugin.js", + "shared/components/workbench/layout/print/settings.js", + "shared/components/workbench/measurements/index.js", + "shared/components/workbench/measurements/non-human.js", + "shared/components/workbench/menu/core-settings/core-setting-bool.js", + "shared/components/workbench/menu/core-settings/core-setting-list.js", + "shared/components/workbench/menu/core-settings/core-setting-mm.js", + "shared/components/workbench/menu/core-settings/core-setting-nr.js", + "shared/components/workbench/menu/core-settings/core-setting-only.js", + "shared/components/workbench/menu/core-settings/core-setting-sa-bool.js", + "shared/components/workbench/menu/core-settings/core-setting-sa-mm.js", + "shared/components/workbench/menu/core-settings/index.js", + "shared/components/workbench/menu/core-settings/setting.js", + "shared/components/workbench/menu/design-options/index.js", + "shared/components/workbench/menu/design-options/option-group.js", + "shared/components/workbench/menu/design-options/option-input.js", + "shared/components/workbench/menu/design-options/option.js", + "shared/components/workbench/menu/design-options/option-value.js", + "shared/components/workbench/menu/index.js", + "shared/components/workbench/menu/test-design-options/index.js", + "shared/components/workbench/menu/test-design-options/option-group.js", + "shared/components/workbench/menu/test-design-options/option.js", + "shared/components/workbench/menu/test-design-options/option-sub-group.js", + "shared/components/workbench/menu/view.js", + "shared/components/workbench/menu/xray/attributes.js", + "shared/components/workbench/menu/xray/disable.js", + "shared/components/workbench/menu/xray/index.js", + "shared/components/workbench/menu/xray/list.js", + "shared/components/workbench/menu/xray/log.js", + "shared/components/workbench/menu/xray/path.js", + "shared/components/workbench/menu/xray/path-ops.js", + "shared/components/workbench/menu/xray/point.js", + "shared/components/workbench/menu/xray/reset.js", + "shared/components/workbench/preload.js", + "shared/components/workbench/sample.js", + "shared/components/workbench/yaml.js", + "shared/components/error/error-boundary.js", + "shared/components/error/error-boundary.js", + "shared/components/error/reset-buttons.js", + "shared/components/error/view.js", "shared/components/workbench/layout/draft/index.js", "shared/components/workbench/layout/draft/part.js", "shared/components/workbench/layout/cut/index.js", @@ -216,3 +263,4 @@ yarn-debug.log* yarn-error.log* `, } + diff --git a/packages/new-design/lib/utils.mjs b/packages/new-design/lib/utils.mjs index 2b9ed474b46..146654a9aa8 100644 --- a/packages/new-design/lib/utils.mjs +++ b/packages/new-design/lib/utils.mjs @@ -1,6 +1,6 @@ import { config } from './config.mjs' import { mkdir, readFile, writeFile, copyFile } from 'node:fs/promises' -import { join, resolve, dirname, extname } from 'path' +import { join, dirname } from 'path' import mustache from 'mustache' import rdir from 'recursive-readdir' import chalk from 'chalk' @@ -11,9 +11,7 @@ import axios from 'axios' import { fileURLToPath } from 'url'; // Current working directory -const cwd = __dirname - ? __dirname - : dirname(fileURLToPath(import.meta.url)) +const cwd = dirname(fileURLToPath(import.meta.url)) const nl = "\n" const tab = " " diff --git a/packages/new-design/package.json b/packages/new-design/package.json index 0fc631ea390..8103b765efb 100644 --- a/packages/new-design/package.json +++ b/packages/new-design/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/new-design", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "Initializer package for a new FreeSewing design: npx @freesewing/new-design", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -49,7 +49,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/new-design/shared/lab/components/header.js b/packages/new-design/shared/lab/components/header.js index 9730bd9b8b9..f69f304ff6f 100644 --- a/packages/new-design/shared/lab/components/header.js +++ b/packages/new-design/shared/lab/components/header.js @@ -1,12 +1,10 @@ import { useState, useEffect } from 'react' -import Logo from 'shared/components/logos/freesewing.js' import Link from 'next/link' import ThemePicker from 'shared/components/theme-picker.js' import LocalePicker from 'shared/components/locale-picker.js' import CloseIcon from 'shared/components/icons/close.js' import MenuIcon from 'shared/components/icons/menu.js' import DocsIcon from 'shared/components/icons/docs.js' -import HelpIcon from 'shared/components/icons/help.js' import { useTranslation } from 'next-i18next' const Right = props => ( diff --git a/packages/new-design/shared/lab/components/layouts/bare.js b/packages/new-design/shared/lab/components/layouts/bare.js index f7a390a90eb..b21c698c6cc 100644 --- a/packages/new-design/shared/lab/components/layouts/bare.js +++ b/packages/new-design/shared/lab/components/layouts/bare.js @@ -1,59 +1,7 @@ -import React from 'react' import { useRouter } from 'next/router' -import Link from 'next/link' -// Shared components -import Logo from 'shared/components/logos/freesewing.js' import Aside from 'shared/components/navigation/aside' -import get from 'lodash.get' import { BeforeNav } from './lab' -const PageTitle = ({ app, slug, title }) => { - if (title) return

{title}

- if (slug) return

{get(app.navigation, slug.split('/')).__title}

- - return

FIXME: This page has no title

-} - -const Breadcrumbs = ({ app, slug=false, title }) => { - if (!slug) return null - const crumbs = [] - const chunks = slug.split('/') - for (const i in chunks) { - const j = parseInt(i)+parseInt(1) - const page = get(app.navigation, chunks.slice(0,j)) - if (page) crumbs.push([page.__linktitle, '/'+chunks.slice(0,j).join('/'), (j < chunks.length)]) - } - - return ( -
    -
  • - - - - - -
  • - {crumbs.map(crumb => ( - -
  • »
  • -
  • - {crumb[2] - ? ( - - - {crumb[0]} - - - ) - : {crumb[0]} - } -
  • -
    - ))} -
- ) -} - const DefaultLayout = ({ app, title=false, children=[] }) => { const router = useRouter() const slug = router.asPath.slice(1) diff --git a/packages/new-design/shared/lab/components/layouts/docs.js b/packages/new-design/shared/lab/components/layouts/docs.js index 3c239c4d118..ef923b1bb4b 100644 --- a/packages/new-design/shared/lab/components/layouts/docs.js +++ b/packages/new-design/shared/lab/components/layouts/docs.js @@ -1,6 +1,4 @@ import React from 'react' -import { useRouter } from 'next/router' -import Link from 'next/link' import Aside from 'shared/components/navigation/aside' const DocsLayout = ({ app, title=false, children=[] }) => ( diff --git a/packages/new-design/shared/lab/hooks/useApp.js b/packages/new-design/shared/lab/hooks/useApp.js index d46f09c9c04..64be9796987 100644 --- a/packages/new-design/shared/lab/hooks/useApp.js +++ b/packages/new-design/shared/lab/hooks/useApp.js @@ -3,15 +3,12 @@ import { useState } from 'react' import useLocalStorage from 'shared/hooks/useLocalStorage.js' // Locale and translation import { useRouter } from 'next/router' -import { useTranslation } from 'next-i18next' -import { capitalize } from 'shared/utils.mjs' import useTheme from 'shared/hooks/useTheme' function useApp(full = true) { // Load translation method const locale = useRouter().locale - const { t } = useTranslation(['app']) // Persistent state const [account, setAccount] = useLocalStorage('account', { username: false }) diff --git a/packages/new-design/shared/pages/index.js b/packages/new-design/shared/pages/index.js index 688eea976ee..381e8dfb887 100644 --- a/packages/new-design/shared/pages/index.js +++ b/packages/new-design/shared/pages/index.js @@ -3,21 +3,12 @@ import useApp from 'site/hooks/useApp.js' import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import Layout from 'site/components/layouts/docs' import { useTranslation } from 'next-i18next' -import ConfigIcon from 'shared/components/icons/settings' -import CogIcon from 'shared/components/icons/cog' -import HeartIcon from 'shared/components/icons/heart' import FsIcon from 'shared/components/icons/freesewing' import Link from 'next/link' import Popout from 'shared/components/popout' -import LocaleIcon from 'shared/components/icons/i18n.js' import { useRouter } from 'next/router' import themes from 'shared/themes/index.js' -const gh = `freesewing/freesewing` -const fsd = `freesewing.dev` - const translations = { sade: { en: `Stand-alone development environment`, @@ -83,8 +74,8 @@ const HomePage = (props) => {

{t('patrons:supportFreesewing')}

-

{t('patrons:patronLead')}

-

{t('patrons:patronPitch')}

+

{t('patrons:patronLead')}

+

{t('patrons:patronPitch')}

🥰 diff --git a/packages/new-design/shared/pages/support.js b/packages/new-design/shared/pages/support.js index 160fe7e85c7..45a0d2ca68c 100644 --- a/packages/new-design/shared/pages/support.js +++ b/packages/new-design/shared/pages/support.js @@ -4,15 +4,14 @@ import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import Layout from 'site/components/layouts/docs' import { useTranslation } from 'next-i18next' import DiscordIcon from 'shared/components/icons/discord' -import Popout from 'shared/components/popout' import GithubIcon from 'shared/components/icons/github' import CcIcon from 'shared/components/icons/community' import HeartIcon from 'shared/components/icons/heart' import DocsIcon from 'shared/components/icons/docs' -const gh = `freesewing/freesewing` -const fsd = `freesewing.dev` const translations = { @@ -23,9 +22,9 @@ const translations = { of gewoon een leuke tijd te spenderen met andere leden van de FreeSewing gemeenschap.`, }, github: { - en: `For bug reports, please create an issue in the ${gh} repository on Github. + en: `For bug reports, please create an issue in the ${gh} repository on Github. This is also where you'll find all our source code.`, - nl: `Een bug gevonden? Maak dan een issue aan in de ${gh} repository op Github. + nl: `Een bug gevonden? Maak dan een issue aan in de ${gh} repository op Github. Dit is ook waar je al de FreeSewing broncode kan vinden.`, }, cc: { @@ -35,16 +34,9 @@ const translations = { vrijwilligers de lopende zaken bespreken. Ook de plannen voor de toekomst en groot en klein nieuws over FreeSewing en de gemeenschap komen aan bod.` }, - cc: { - en: `Every two weeks, there's the FreeSewing contributor call, which is when we discuss - ongoing issues, future plans, and news big and small about FreeSewing and its community.`, - nl: `Elke twee weken is er de FreeSewing contributor call (Engelstalig), waar de FreeSewing - vrijwilligers de lopende zaken bespreken. Ook de plannen voor de toekomst en groot en klein - nieuws over FreeSewing en de gemeenschap komen aan bod.` - }, docs: { - en: `Our documentation for developers hosted on ${fsd}. You can find guides and how-to's - there, as well as reference documantation for FreeSewing's core API. + en: `Our documentation for developers hosted on ${fsd}. You can find guides and how-to's + there, as well as reference documantation for FreeSewing's core API.

We stive to provide excellent documentation. So if something is not clear please, let us know.`, nl: `Onze documentatie voor ontwikkelaars is beschikbaar op ${fsd}. Je vindt er guides en how-to's, @@ -75,7 +67,7 @@ const SupportPage = (props) => {

Github

-

@@ -86,7 +78,7 @@ const SupportPage = (props) => {

{t('docs')}

-

@@ -97,7 +89,7 @@ const SupportPage = (props) => {

Contributor Calls

-

@@ -111,8 +103,8 @@ const SupportPage = (props) => {

{t('patrons:supportFreesewing')}

-

{t('patrons:patronLead')}

-

{t('patrons:patronPitch')}

+

{t('patrons:patronLead')}

+

{t('patrons:patronPitch')}

diff --git a/packages/new-design/templates/from-bella/_package.json b/packages/new-design/templates/from-bella/_package.json index 688a42d7f96..95c4f9ae480 100644 --- a/packages/new-design/templates/from-bella/_package.json +++ b/packages/new-design/templates/from-bella/_package.json @@ -63,6 +63,7 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", "react-copy-to-clipboard": "^5.0.4", @@ -75,6 +76,8 @@ "eslint-config-next": "12.1.6", "highlight.js": "^11.5.1", "js-yaml": "^4.1.0", + "pdfkit": "^0.13.0", + "svg-to-pdfkit": "^0.1.8", "postcss": "^8.4.14", "tailwindcss": "^3.1.3", "tailwindcss-open-variant": "^1.0.0" diff --git a/packages/new-design/templates/from-bent/_package.json b/packages/new-design/templates/from-bent/_package.json index a8066395666..62c7c79a836 100644 --- a/packages/new-design/templates/from-bent/_package.json +++ b/packages/new-design/templates/from-bent/_package.json @@ -50,6 +50,8 @@ "js-yaml": "^4.1.0", "file-saver": "^2.0.5", "axios": "^0.27.2", + "pdfkit": "^0.13.0", + "svg-to-pdfkit": "^0.1.8", "react": "^17.0.2", "react-dom": "^17.0.2", "react-sizeme": "^3.0.2", @@ -65,6 +67,7 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", "react-copy-to-clipboard": "^5.0.4", diff --git a/packages/new-design/templates/from-breanna/_package.json b/packages/new-design/templates/from-breanna/_package.json index 89d744af3b0..4de53497f86 100644 --- a/packages/new-design/templates/from-breanna/_package.json +++ b/packages/new-design/templates/from-breanna/_package.json @@ -48,6 +48,8 @@ "js-yaml": "^4.1.0", "file-saver": "^2.0.5", "axios": "^0.27.2", + "pdfkit": "^0.13.0", + "svg-to-pdfkit": "^0.1.8", "react": "^17.0.2", "react-dom": "^17.0.2", "react-sizeme": "^3.0.2", @@ -63,6 +65,7 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", "react-copy-to-clipboard": "^5.0.4", diff --git a/packages/new-design/templates/from-brian/_package.json b/packages/new-design/templates/from-brian/_package.json index 612810ebff0..8a0467225f2 100644 --- a/packages/new-design/templates/from-brian/_package.json +++ b/packages/new-design/templates/from-brian/_package.json @@ -63,6 +63,7 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", "react-copy-to-clipboard": "^5.0.4", @@ -75,6 +76,8 @@ "eslint-config-next": "12.1.6", "highlight.js": "^11.5.1", "js-yaml": "^4.1.0", + "pdfkit": "^0.13.0", + "svg-to-pdfkit": "^0.1.8", "postcss": "^8.4.14", "tailwindcss": "^3.1.3", "tailwindcss-open-variant": "^1.0.0" diff --git a/packages/new-design/templates/from-scratch/_package.json b/packages/new-design/templates/from-scratch/_package.json index 64b2fb4ccf8..6c958d708c6 100644 --- a/packages/new-design/templates/from-scratch/_package.json +++ b/packages/new-design/templates/from-scratch/_package.json @@ -62,8 +62,10 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", + "pdfkit": "^0.13.0", "react-copy-to-clipboard": "^5.0.4", "react-hotkeys-hook": "^3.4.4", "react-swipeable": "^6.2.0", @@ -75,6 +77,7 @@ "highlight.js": "^11.5.1", "js-yaml": "^4.1.0", "postcss": "^8.4.14", + "svg-to-pdfkit": "^0.1.8", "tailwindcss": "^3.1.3", "tailwindcss-open-variant": "^1.0.0" }, diff --git a/packages/new-design/templates/from-titan/_package.json b/packages/new-design/templates/from-titan/_package.json index f81cd855c88..eee1b64a5cc 100644 --- a/packages/new-design/templates/from-titan/_package.json +++ b/packages/new-design/templates/from-titan/_package.json @@ -49,7 +49,9 @@ "file-saver": "^2.0.5", "axios": "^0.27.2", "react": "^17.0.2", + "svg-to-pdfkit": "^0.1.8", "react-dom": "^17.0.2", + "pdfkit": "^0.13.0", "react-sizeme": "^3.0.2", "react-zoom-pan-pinch": "^2.1.3", "react-markdown": "^8.0.3", @@ -63,6 +65,7 @@ "lodash.orderby": "^4.6.0", "lodash.set": "^4.3.2", "lodash.unset": "^4.5.2", + "lodash.clonedeep": "^4.5.0", "next": "latest", "next-i18next": "^11.0.0", "react-copy-to-clipboard": "^5.0.4", diff --git a/packages/pattern-info/README.md b/packages/pattern-info/README.md index 4b789b172b4..b1f3605387e 100644 --- a/packages/pattern-info/README.md +++ b/packages/pattern-info/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/pattern-info/package.json b/packages/pattern-info/package.json index 41f8d3a793c..86dbef155a9 100644 --- a/packages/pattern-info/package.json +++ b/packages/pattern-info/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/pattern-info", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "Information about available freesewing patterns", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -20,7 +20,7 @@ "main": "dist/index.js", "module": "dist/index.mjs", "scripts": { - "build": "node src/prebuild.js && node build.js", + "build": "node build.js", "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", @@ -29,7 +29,8 @@ "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prebuild": "node src/prebuild.js", - "cibuild_step6": "node src/prebuild.js && node build.js" + "precibuild_step6": "node src/prebuild.js", + "cibuild_step6": "node build.js" }, "peerDependencies": {}, "dependencies": {}, @@ -40,7 +41,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/pattern-info/src/index.js b/packages/pattern-info/src/index.js index f1d52228c3e..4692303bf6a 100644 --- a/packages/pattern-info/src/index.js +++ b/packages/pattern-info/src/index.js @@ -34,6 +34,7 @@ export const list = [ 'lucy', 'lunetius', 'noble', + 'octoplushy', 'paco', 'penelope', 'sandy', @@ -76,6 +77,7 @@ export const withoutBreasts = [ 'jaeger', 'lucy', 'lunetius', + 'octoplushy', 'paco', 'penelope', 'sandy', diff --git a/packages/pattern-info/src/prebuild.js b/packages/pattern-info/src/prebuild.js index 17e23b55984..b015715483d 100644 --- a/packages/pattern-info/src/prebuild.js +++ b/packages/pattern-info/src/prebuild.js @@ -27,6 +27,7 @@ const jaeger = require('@freesewing/jaeger').config const lucy = require('@freesewing/lucy').config const lunetius = require('@freesewing/lunetius').config const noble = require('@freesewing/noble').config +const octoplushy = require('@freesewing/octoplushy').config const paco = require('@freesewing/paco').config const penelope = require('@freesewing/penelope').config const sandy = require('@freesewing/sandy').config @@ -75,6 +76,7 @@ const patterns = { lucy, lunetius, noble, + octoplushy, paco, penelope, sandy, diff --git a/packages/prettier-config/README.md b/packages/prettier-config/README.md index b01244ff0aa..bdf6e5583b7 100644 --- a/packages/prettier-config/README.md +++ b/packages/prettier-config/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index 0fa16dca265..5379d5b2d79 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/prettier-config", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "FreeSewing's shared configuration for prettier", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -29,7 +29,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/rehype-jargon/CHANGELOG.md b/packages/rehype-jargon/CHANGELOG.md new file mode 100644 index 00000000000..941da039fd7 --- /dev/null +++ b/packages/rehype-jargon/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: rehype-jargon + + + +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. + diff --git a/packages/rehype-jargon/README.md b/packages/rehype-jargon/README.md new file mode 100644 index 00000000000..f2a03c4dd6d --- /dev/null +++ b/packages/rehype-jargon/README.md @@ -0,0 +1,403 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

rehype-jargon on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:rehype-jargon + All Contributors +

Follow @freesewing_org on Twitter + Chat with us on Discord + Become a FreeSewing Patron + Follow @freesewing_org on Twitter +

+ +# rehype-jargon + +A Rehype plugin for jargon terms + +## About + +This [Rehype](https://github.com/rehypejs/rehype) plugin allows you to use _jargon_ in your +markdown/mdx/html content and use a centrally managed file of jargon terms and their definitions. + +![An example of this plugin being used on freesewing.org](example.png) + +## Install + +To install this plugin, run: + +``` +npm install --save rehype-jargon +``` + +## Getting started + +> **Tip**: See https://github.com/joostdecock/rehype-jargon-example for a minimal repository that uses this plugin + +### Create your jargon file + +This plugin requires a _jargon file_ with terms defenitions. For example: + +```js +export const jargon = { + rehype: "rehype is a tool that transforms HTML with plugins. These plugins can inspect and change the HTML. You can use rehype on the server, the client, CLIs, deno, etc.", + freesewing: "FreeSewing is an open source platform for made-to-measure sewing patterns. See freesewing.org" +} +``` + +### Import the plugin + +Now import the plugin, and pass it your jargon: + +```js +var remark = require('remark') +var html = require('remark-html') +var plugin = require('remark-jargon') +var jargon = require('./jargon.js') + +remark() + .use(html) + .use(plugin, { jargon: jargon }) + .process('This is a plugin for _remark_ originally written for _freesewing_.', function (err, file) { + console.log(String(file)) + }) +``` + +> **Note** +> +> This plugin will only add markup to your jargon if you _emphasize_ it. + + +### Style your jargon + +You will need to add CSS to style your jargon properly, and hide the definition by default. +Below is an example to get you started: + +```css +// Add a dashed line under jargon terms +.jargon-term { + text-decoration: underline dotted #228be6 +} +// Add a question mark behind/above jargon terms +.jargon-term::after { + content: "?"; + font-weight: bold; + display: inline-block; + transform: translate(0, -0.5em); + font-size: 75%; + color: #228be6; + margin-left: 3px; +} +// Hover behavior for the therm itself +.jargon-term:hover { + position: relative; + text-decoration: none; + cursor: help; +} +// Hide info by default +.jargon-term .jargon-info { + display: none +} +// Show info on hover +.jargon-term:hover .jargon-info { + display: block; + position: absolute; + top: 1.5em; + left: 0; + background: #F8F8F8; + border: 1px solid #DCDCDC; + padding: 1rem; + border-radius: 4px; + font-size: 90%; + min-width: 250px; + max-width: 450px; + z-index: 1; +} +``` + +## Tips for using jargon + +### Lowercase your terms in the jargon file + +When looking for terms to match, we lowercase the term your emphazised. +So in the jargon file, you should use `msf`, but in your text, you can use `MSF`, `Msf`, or `msf`. + +### If you use HTML, only use inline elements + +Your jargon term definition can contain HTML, but only inline elements. +Typically, you will want to stick to: + + - Making things **bold** + - Inserting [links](#) + +## Getting help + +This plugin is written by/for [FreeSewing](https://github.com/freesewing). +For help or feedback, please stop by [the FreeSewing chat room](https://gitter.im/freesewing/development) or +[create an issue](https://github.com/freesewing/freesewing/issues/new). + + +## Use with Gatsby + +Please see [gatsby-remark-jargon](https://github.com/freesewing/freesewing/tree/develop/packages/gatsby-remark-jargon) for +info and instructions on how to use this plugin with [Gatsby](https://www.gatsbyjs.org/). + + +## 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: rehype-jargon + +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: +> +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freesewing/freesewing) +> +> We recommend that you fork our repository and then +> put `gitpod.io/# 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)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Adam Tomkins

📖

Alexandre Ignjatovic

💻

AlfaLyr

💻 🔌 🎨

Andrew James

📖

Anneke

📖 🌍

Annie Kao

📖

Anternative

📖

Anthony

💬

Ari Grayzel-student

💻

BenJamesBen

💻 📖

Cameron Dubas

📖

Carsten Biebricher

📖

Cathy Zoller

📖

Chantal Lapointe

🌍

Damien PIQUET

💻

Darigov Research

📖 🤔

Elena FdR

📖 📝

Emmanuel Nyachoke

💻 📖

Enoch Riese

💻

EvEkSwed

🌍

Fantastik-Maman

🌍

Forrest O.

📖

Frédéric

🌍

Glenn Matthews

📖

Greg Sadetsky

📖

Igor Couto

🐛

Ikko Ashimine

📖

Irapeke

🌍

Jacek Sawoszczuk

📖

Jason Williams

📖

Jeremy Jackson

💻

Joe Schofield

📖

Joebidido

🌍

Joost De Cock

🚧

Josh Essman

📖

Kake

📖

Kapunahele Wong

📖

Karen

📖 📋

Katie McGinley

📖

Kieran Klaassen

💻

Kittycatou

🌍

Kris

📖

Kristin Ruben

💻

Loudepeuter

🌍

Lucian

📋

Marcus

🌍

Martin Tribo

📖

Nadege Michel

⚠️ 📖

Natalia

💻 🎨 📝

Nathan Yergler

📖

Nick Dower

📖 💻 🐛

Nikhil Chelliah

📖

OysteinHoiby

💻

Patrick Forringer

🔌

Paul

📖 📝 🌍

Phillip Thelen

💻

Pixieish

📖

Prof. dr. Sorcha Ní Dhubhghaill

📖

Quentin FELIX

💻 🎨

Rik Hekker

🐛

Sam Livingston-Gray

📖

Sanne

💻 📖

Sara Latorre

🌍

SeaZeeZee

📖 💻

SimonbJohnson

🐛

Slylele

📖 🌍

Soazillon

🌍

SoneaTheBest

🌍

Stefan Sydow

🌍 📖 💻

Tríona

📖

Unmutual

📖

Wouter van Wageningen

💻 🎨 🔧

amysews

📖

anna-puk

💻

beautifulsummermoon

🌍

berce

📖

biou

💻

bobgeorgethe3rd

💻 📖 🎨

brmlyklr

📖

chri5b

💻 ⚠️

dingcycle

🌍

drowned-in-books

💬

econo202

📖

ericamattos

🌍

fightingrabbit

💻

gaylyndie

📖

grimlokason

💻

hellgy

🎨

jackseye

📖

marckiesel

🌍

mesil

🐛

starfetch

💻 📖 🌍 🎨

ttimearl

🖋

tuesgloomsday

📖

valadaptive

💻

viocky

🌍

woolishboy

💻

yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/packages/rehype-jargon/build.js b/packages/rehype-jargon/build.js new file mode 100644 index 00000000000..8db8ea0e5e8 --- /dev/null +++ b/packages/rehype-jargon/build.js @@ -0,0 +1,57 @@ +/* This script will build the package with esbuild */ +const esbuild = require('esbuild') +const pkg = require('./package.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.js'], + external: [ 'unist-util-visit', 'hast-util-from-html' ], + metafile: process.env.VERBOSE ? true : false, + minify: process.env.NO_MINIFY ? false : true, + sourcemap: true, +} + +// Different formats +const formats = { + cjs: "dist/index.js", + esm: "dist/index.mjs", +} + +// Let esbuild generate different formats +let result +(async () => { + for (const [format, outfile] of Object.entries(formats)) { + result = await esbuild + .build({ ...options, outfile, format }) + .catch(() => process.exit(1)) + } + + if (process.env.VERBOSE) { + const info = await esbuild.analyzeMetafile(result.metafile) + console.log(info) + } + + // Also build a version that has all dependencies bundled + // This makes it easy to run tests + await esbuild + .build({ + ...options, + minify: false, + sourcemap: false, + outfile: 'tests/dist/index.mjs', + format: 'esm', + external: [], + }) + .catch(() => process.exit(1)) + +})() diff --git a/packages/rehype-jargon/example.png b/packages/rehype-jargon/example.png new file mode 100644 index 00000000000..f4c8c76162a Binary files /dev/null and b/packages/rehype-jargon/example.png differ diff --git a/packages/rehype-jargon/info.md b/packages/rehype-jargon/info.md new file mode 100644 index 00000000000..e5f6d04d1ce --- /dev/null +++ b/packages/rehype-jargon/info.md @@ -0,0 +1,126 @@ +## About + +This [Rehype](https://github.com/rehypejs/rehype) plugin allows you to use _jargon_ in your +markdown/mdx/html content and use a centrally managed file of jargon terms and their definitions. + +![An example of this plugin being used on freesewing.org](example.png) + +## Install + +To install this plugin, run: + +``` +npm install --save rehype-jargon +``` + +## Getting started + +> **Tip**: See https://github.com/joostdecock/rehype-jargon-example for a minimal repository that uses this plugin + +### Create your jargon file + +This plugin requires a _jargon file_ with terms defenitions. For example: + +```js +export const jargon = { + rehype: "rehype is a tool that transforms HTML with plugins. These plugins can inspect and change the HTML. You can use rehype on the server, the client, CLIs, deno, etc.", + freesewing: "FreeSewing is an open source platform for made-to-measure sewing patterns. See freesewing.org" +} +``` + +### Import the plugin + +Now import the plugin, and pass it your jargon: + +```js +var remark = require('remark') +var html = require('remark-html') +var plugin = require('remark-jargon') +var jargon = require('./jargon.js') + +remark() + .use(html) + .use(plugin, { jargon: jargon }) + .process('This is a plugin for _remark_ originally written for _freesewing_.', function (err, file) { + console.log(String(file)) + }) +``` + +> **Note** +> +> This plugin will only add markup to your jargon if you _emphasize_ it. + + +### Style your jargon + +You will need to add CSS to style your jargon properly, and hide the definition by default. +Below is an example to get you started: + +```css +// Add a dashed line under jargon terms +.jargon-term { + text-decoration: underline dotted #228be6 +} +// Add a question mark behind/above jargon terms +.jargon-term::after { + content: "?"; + font-weight: bold; + display: inline-block; + transform: translate(0, -0.5em); + font-size: 75%; + color: #228be6; + margin-left: 3px; +} +// Hover behavior for the therm itself +.jargon-term:hover { + position: relative; + text-decoration: none; + cursor: help; +} +// Hide info by default +.jargon-term .jargon-info { + display: none +} +// Show info on hover +.jargon-term:hover .jargon-info { + display: block; + position: absolute; + top: 1.5em; + left: 0; + background: #F8F8F8; + border: 1px solid #DCDCDC; + padding: 1rem; + border-radius: 4px; + font-size: 90%; + min-width: 250px; + max-width: 450px; + z-index: 1; +} +``` + +## Tips for using jargon + +### Lowercase your terms in the jargon file + +When looking for terms to match, we lowercase the term your emphazised. +So in the jargon file, you should use `msf`, but in your text, you can use `MSF`, `Msf`, or `msf`. + +### If you use HTML, only use inline elements + +Your jargon term definition can contain HTML, but only inline elements. +Typically, you will want to stick to: + + - Making things **bold** + - Inserting [links](#) + +## Getting help + +This plugin is written by/for [FreeSewing](https://github.com/freesewing). +For help or feedback, please stop by [the FreeSewing chat room](https://gitter.im/freesewing/development) or +[create an issue](https://github.com/freesewing/freesewing/issues/new). + + +## Use with Gatsby + +Please see [gatsby-remark-jargon](https://github.com/freesewing/freesewing/tree/develop/packages/gatsby-remark-jargon) for +info and instructions on how to use this plugin with [Gatsby](https://www.gatsbyjs.org/). diff --git a/packages/rehype-jargon/package.json b/packages/rehype-jargon/package.json new file mode 100644 index 00000000000..7cc038806bb --- /dev/null +++ b/packages/rehype-jargon/package.json @@ -0,0 +1,51 @@ +{ + "name": "rehype-jargon", + "version": "2.22.0-rc.0", + "description": "A Rehype plugin for jargon terms", + "author": "Joost De Cock (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", + "freesewing" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "build": "node build.js", + "clean": "rimraf dist", + "mbuild": "NO_MINIFY=1 node build.js", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "test": "echo \"rehype-jargon: No tests configured. Perhaps you'd like to do this?\" && exit 0", + "vbuild": "VERBOSE=1 node build.js", + "lab": "cd ../../sites/lab && yarn start", + "tips": "node ../../scripts/help.mjs", + "cibuild_step6": "node build.js" + }, + "peerDependencies": {}, + "dependencies": { + "unist-util-visit": "^4.1.0", + "hast-util-from-html": "^1.0.0" + }, + "devDependencies": {}, + "files": [ + "dist/*", + "README.md" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6" + } +} diff --git a/packages/rehype-jargon/src/index.js b/packages/rehype-jargon/src/index.js new file mode 100644 index 00000000000..004249f7d80 --- /dev/null +++ b/packages/rehype-jargon/src/index.js @@ -0,0 +1,43 @@ +import { visit } from 'unist-util-visit' +import { fromHtml } from 'hast-util-from-html' + +const jargonTransform = (term, html) => `${term}${html}` + +export default (options) => { + // Don't bother if we don't have any jargon + if (!options || !options.jargon) { + throw Error('Required "jargon" option is missing in remark-jargon configuration') + } + + // Allow passing in a custom transform method + if (!options.transform) options.transform = jargonTransform + + // Detect jargon nodes + const isJargon = (node) => { + if ( + node.tagName === 'em' && + Object.keys(options.jargon).indexOf(node.children[0].value.toLowerCase()) !== -1 + ) return true + return false + } + + // Visitor method + const visitor = (node) => { + if (isJargon(node)) { + const termTree = fromHtml( + options.transform( + node.children[0].value, + options.jargon[node.children[0].value.toLowerCase()] + ), + { fragment: true } + ) + node.children = termTree.children + } + } + + const transform = (tree) => { + visit(tree, 'element', visitor) + } + + return transform +} diff --git a/packages/remark-jargon/README.md b/packages/remark-jargon/README.md index 815e4aa848e..a1015f87361 100644 --- a/packages/remark-jargon/README.md +++ b/packages/remark-jargon/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/remark-jargon/package.json b/packages/remark-jargon/package.json index 64f9741b4eb..34bce20e7bc 100644 --- a/packages/remark-jargon/package.json +++ b/packages/remark-jargon/package.json @@ -1,6 +1,6 @@ { "name": "remark-jargon", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A Remark plugin for jargon terms", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -35,7 +35,7 @@ "remark-html": "^13.0.1" }, "dependencies": { - "unist-util-visit": "^2.0.3" + "unist-util-visit": "^4.1.0" }, "devDependencies": {}, "files": [ @@ -44,7 +44,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/packages/remark-jargon/src/index.js b/packages/remark-jargon/src/index.js index e89bb13fa95..d0da579e6a3 100644 --- a/packages/remark-jargon/src/index.js +++ b/packages/remark-jargon/src/index.js @@ -1,4 +1,4 @@ -import visit from 'unist-util-visit' +import {visit} from 'unist-util-visit' export default (options) => { if (!options || !options.jargon) { diff --git a/packages/utils/README.md b/packages/utils/README.md index 93d224110ba..01d9e8f3e7d 100644 --- a/packages/utils/README.md +++ b/packages/utils/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/packages/utils/package.json b/packages/utils/package.json index e742a18da8d..8ab4323da6c 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/utils", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A collection of utilities shared across freesewing projects", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -63,7 +63,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-banner/README.md b/plugins/plugin-banner/README.md index 5a4cee6273a..7a9b0a83dd9 100644 --- a/plugins/plugin-banner/README.md +++ b/plugins/plugin-banner/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-banner/package.json b/plugins/plugin-banner/package.json index e77d19d96c6..7673dfd4a6b 100644 --- a/plugins/plugin-banner/package.json +++ b/plugins/plugin-banner/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-banner", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to repeat text on a path", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-bartack/README.md b/plugins/plugin-bartack/README.md index 3c916d1ce87..ae56976245b 100644 --- a/plugins/plugin-bartack/README.md +++ b/plugins/plugin-bartack/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-bartack/package.json b/plugins/plugin-bartack/package.json index ac2507006e2..1e40c311a68 100644 --- a/plugins/plugin-bartack/package.json +++ b/plugins/plugin-bartack/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-bartack", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add bartacks to your pattern", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-bundle/README.md b/plugins/plugin-bundle/README.md index e3031a0f47f..ad242a3855c 100644 --- a/plugins/plugin-bundle/README.md +++ b/plugins/plugin-bundle/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-bundle/package.json b/plugins/plugin-bundle/package.json index 826599cec97..0a1c696c320 100644 --- a/plugins/plugin-bundle/package.json +++ b/plugins/plugin-bundle/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-bundle", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "An umbrella package of 8 essential FreeSewing build-time plugins", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -32,32 +32,32 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step2": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { "mocha": "^10.0.0", "chai": "^4.2.0", - "@freesewing/plugin-banner": "^2.21.3", - "@freesewing/plugin-buttons": "^2.21.3", - "@freesewing/plugin-cutonfold": "^2.21.3", - "@freesewing/plugin-dimension": "^2.21.3", - "@freesewing/plugin-grainline": "^2.21.3", - "@freesewing/plugin-logo": "^2.21.3", - "@freesewing/plugin-mirror": "^2.21.3", - "@freesewing/plugin-title": "^2.21.3", - "@freesewing/plugin-scalebox": "^2.21.3", - "@freesewing/plugin-round": "^2.21.3", - "@freesewing/plugin-sprinkle": "^2.21.3" + "@freesewing/plugin-banner": "^2.22.0-rc.0", + "@freesewing/plugin-buttons": "^2.22.0-rc.0", + "@freesewing/plugin-cutonfold": "^2.22.0-rc.0", + "@freesewing/plugin-dimension": "^2.22.0-rc.0", + "@freesewing/plugin-grainline": "^2.22.0-rc.0", + "@freesewing/plugin-logo": "^2.22.0-rc.0", + "@freesewing/plugin-mirror": "^2.22.0-rc.0", + "@freesewing/plugin-title": "^2.22.0-rc.0", + "@freesewing/plugin-scalebox": "^2.22.0-rc.0", + "@freesewing/plugin-round": "^2.22.0-rc.0", + "@freesewing/plugin-sprinkle": "^2.22.0-rc.0" }, "files": [ "dist/*", @@ -65,7 +65,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-bust/README.md b/plugins/plugin-bust/README.md index e9959dbfeaa..4c9e794a21f 100644 --- a/plugins/plugin-bust/README.md +++ b/plugins/plugin-bust/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-bust/package.json b/plugins/plugin-bust/package.json index 078f5f7d8c8..7d7af545b18 100644 --- a/plugins/plugin-bust/package.json +++ b/plugins/plugin-bust/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-bust", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that helps with bust-adjusting menswear patterns", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-buttons/README.md b/plugins/plugin-buttons/README.md index 4057b2dce91..e3aab2c1619 100644 --- a/plugins/plugin-buttons/README.md +++ b/plugins/plugin-buttons/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-buttons/package.json b/plugins/plugin-buttons/package.json index 8831b89b6f3..1b08c3cae9c 100644 --- a/plugins/plugin-buttons/package.json +++ b/plugins/plugin-buttons/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-buttons", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that provides button, buttonhole, and snap snippets", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-buttons/src/button.js b/plugins/plugin-buttons/src/button.js index 20adc762cf9..5170f7fd583 100644 --- a/plugins/plugin-buttons/src/button.js +++ b/plugins/plugin-buttons/src/button.js @@ -2,10 +2,10 @@ export default ` - - - - + + + + ` diff --git a/plugins/plugin-buttons/src/buttonhole.js b/plugins/plugin-buttons/src/buttonhole.js index c141dd9e0ee..221214df981 100644 --- a/plugins/plugin-buttons/src/buttonhole.js +++ b/plugins/plugin-buttons/src/buttonhole.js @@ -1,19 +1,19 @@ export default ` ` diff --git a/plugins/plugin-cutonfold/README.md b/plugins/plugin-cutonfold/README.md index 85f70118658..b6117bb2253 100644 --- a/plugins/plugin-cutonfold/README.md +++ b/plugins/plugin-cutonfold/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-cutonfold/package.json b/plugins/plugin-cutonfold/package.json index 7661d025a9e..86465b0a532 100644 --- a/plugins/plugin-cutonfold/package.json +++ b/plugins/plugin-cutonfold/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-cutonfold", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add cut-on-fold indicators on your patterns", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-cutonfold/src/index.js b/plugins/plugin-cutonfold/src/index.js index a239794dee2..0ad5cead348 100644 --- a/plugins/plugin-cutonfold/src/index.js +++ b/plugins/plugin-cutonfold/src/index.js @@ -14,40 +14,45 @@ export default { }, macros: { cutonfold: function (so) { + const { points, complete } = this.shorthand() if (so === false) { delete this.points.cutonfoldFrom delete this.points.cutonfoldTo delete this.points.cutonfoldVia1 delete this.points.cutonfoldVia2 delete this.paths.cutonfold + this.setCutOnFold(false) // Restore default return true } - const points = this.points so = { offset: 15, margin: 5, prefix: '', ...so, } - points['cutonfoldFrom' + so.prefix] = so.from.shiftFractionTowards(so.to, so.margin / 100) - points['cutonfoldTo' + so.prefix] = so.to.shiftFractionTowards(so.from, so.margin / 100) - points['cutonfoldVia1' + so.prefix] = points['cutonfoldFrom' + so.prefix] - .shiftTowards(so.from, so.offset * this.context.settings.scale) - .rotate(-90, points['cutonfoldFrom' + so.prefix]) - points['cutonfoldVia2' + so.prefix] = points['cutonfoldTo' + so.prefix] - .shiftTowards(so.to, so.offset * this.context.settings.scale) - .rotate(90, points['cutonfoldTo' + so.prefix]) - const text = so.grainline ? 'cutOnFoldAndGrainline' : 'cutOnFold' - this.paths['cutonfold' + so.prefix] = new this.Path() - .move(points['cutonfoldFrom' + so.prefix]) - .line(points['cutonfoldVia1' + so.prefix]) - .line(points['cutonfoldVia2' + so.prefix]) - .line(points['cutonfoldTo' + so.prefix]) - .attr('class', 'note') - .attr('marker-start', 'url(#cutonfoldFrom)') - .attr('marker-end', 'url(#cutonfoldTo)') - .attr('data-text', text) - .attr('data-text-class', 'center fill-note') + this.setCutOnFold(so.from, so.to) + if (so.grainline) this.setGrain(so.from.angle(so.to)) + if (complete) { + points['cutonfoldFrom' + so.prefix] = so.from.shiftFractionTowards(so.to, so.margin / 100) + points['cutonfoldTo' + so.prefix] = so.to.shiftFractionTowards(so.from, so.margin / 100) + points['cutonfoldVia1' + so.prefix] = points['cutonfoldFrom' + so.prefix] + .shiftTowards(so.from, so.offset * this.context.settings.scale) + .rotate(-90, points['cutonfoldFrom' + so.prefix]) + points['cutonfoldVia2' + so.prefix] = points['cutonfoldTo' + so.prefix] + .shiftTowards(so.to, so.offset * this.context.settings.scale) + .rotate(90, points['cutonfoldTo' + so.prefix]) + const text = so.grainline ? 'cutOnFoldAndGrainline' : 'cutOnFold' + this.paths['cutonfold' + so.prefix] = new this.Path() + .move(points['cutonfoldFrom' + so.prefix]) + .line(points['cutonfoldVia1' + so.prefix]) + .line(points['cutonfoldVia2' + so.prefix]) + .line(points['cutonfoldTo' + so.prefix]) + .attr('class', 'note') + .attr('marker-start', 'url(#cutonfoldFrom)') + .attr('marker-end', 'url(#cutonfoldTo)') + .attr('data-text', text) + .attr('data-text-class', 'center fill-note') + } }, }, } diff --git a/plugins/plugin-cutonfold/src/lib/markers.js b/plugins/plugin-cutonfold/src/lib/markers.js index 2cda96a8676..b60f1aed59f 100644 --- a/plugins/plugin-cutonfold/src/lib/markers.js +++ b/plugins/plugin-cutonfold/src/lib/markers.js @@ -1,8 +1,9 @@ +// FIXME identical arrow paths for dimensions, cutonfold, and grainline export default ` - - + + - - + + `; diff --git a/plugins/plugin-dimension/README.md b/plugins/plugin-dimension/README.md index 19d71470117..1fb8e37c60c 100644 --- a/plugins/plugin-dimension/README.md +++ b/plugins/plugin-dimension/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-dimension/package.json b/plugins/plugin-dimension/package.json index 57ca4123d67..285b823ee0b 100644 --- a/plugins/plugin-dimension/package.json +++ b/plugins/plugin-dimension/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-dimension", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add dimensions to your (paperless) pattern", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-dimension/src/lib/markers.js b/plugins/plugin-dimension/src/lib/markers.js index c445f7f085f..d04ddc42dd9 100644 --- a/plugins/plugin-dimension/src/lib/markers.js +++ b/plugins/plugin-dimension/src/lib/markers.js @@ -1,4 +1,9 @@ +// FIXME identical arrow paths for dimensions, cutonfold, and grainline export default ` - - + + + + + + `; diff --git a/plugins/plugin-export-dxf/README.md b/plugins/plugin-export-dxf/README.md index 5416e977a63..d76a65f1f9d 100644 --- a/plugins/plugin-export-dxf/README.md +++ b/plugins/plugin-export-dxf/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-export-dxf/package.json b/plugins/plugin-export-dxf/package.json index c096d7f0a25..07a116e1928 100644 --- a/plugins/plugin-export-dxf/package.json +++ b/plugins/plugin-export-dxf/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-export-dxf", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to export your pattern as DXF-ASTM", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-flip/README.md b/plugins/plugin-flip/README.md index d58fa36dcb9..ab863e47e38 100644 --- a/plugins/plugin-flip/README.md +++ b/plugins/plugin-flip/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-flip/package.json b/plugins/plugin-flip/package.json index 2dc8434da8f..e9392c3c557 100644 --- a/plugins/plugin-flip/package.json +++ b/plugins/plugin-flip/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-flip", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to flip parts horizontally", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-gore/README.md b/plugins/plugin-gore/README.md index f70b8a74495..548c82216e5 100644 --- a/plugins/plugin-gore/README.md +++ b/plugins/plugin-gore/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-gore/package.json b/plugins/plugin-gore/package.json index 7f0531c635f..f2ec2123336 100644 --- a/plugins/plugin-gore/package.json +++ b/plugins/plugin-gore/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-gore", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to generate gores for a semi-sphere or dome", "author": "AlfaLyr (https://github.com/alfalyr)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-grainline/README.md b/plugins/plugin-grainline/README.md index 5dfd70eb65a..23d9ad7437d 100644 --- a/plugins/plugin-grainline/README.md +++ b/plugins/plugin-grainline/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-grainline/package.json b/plugins/plugin-grainline/package.json index 289c017477f..b111134ff5a 100644 --- a/plugins/plugin-grainline/package.json +++ b/plugins/plugin-grainline/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-grainline", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add grainline indicators on your patterns", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-grainline/src/index.js b/plugins/plugin-grainline/src/index.js index da00e67b1af..422019bfdc9 100644 --- a/plugins/plugin-grainline/src/index.js +++ b/plugins/plugin-grainline/src/index.js @@ -22,23 +22,27 @@ export default { delete this.points.grainlineFrom delete this.points.grainlineTo delete this.paths.grainline + this.setGrain(90) // Restoring default return true } so = { ...dflts, ...so, } - let points = this.points - points.grainlineFrom = so.from.shiftFractionTowards(so.to, 0.05) - points.grainlineTo = so.to.shiftFractionTowards(so.from, 0.05) - this.paths.grainline = new this.Path() - .move(points.grainlineFrom) - .line(points.grainlineTo) - .attr('class', 'note') - .attr('marker-start', 'url(#grainlineFrom)') - .attr('marker-end', 'url(#grainlineTo)') - .attr('data-text', so.text) - .attr('data-text-class', 'center fill-note') + const { points, complete } = this.shorthand() + this.setGrain(so.from.angle(so.to)) + if (complete) { + points.grainlineFrom = so.from.shiftFractionTowards(so.to, 0.05) + points.grainlineTo = so.to.shiftFractionTowards(so.from, 0.05) + this.paths.grainline = new this.Path() + .move(points.grainlineFrom) + .line(points.grainlineTo) + .attr('class', 'note') + .attr('marker-start', 'url(#grainlineFrom)') + .attr('marker-end', 'url(#grainlineTo)') + .attr('data-text', so.text) + .attr('data-text-class', 'center fill-note') + } }, }, } diff --git a/plugins/plugin-grainline/src/markers.js b/plugins/plugin-grainline/src/markers.js index 28b09edb603..2dc576b2e84 100644 --- a/plugins/plugin-grainline/src/markers.js +++ b/plugins/plugin-grainline/src/markers.js @@ -1,8 +1,9 @@ +// FIXME identical arrow paths for dimensions, cutonfold, and grainline export default ` - - + + - - + + ` diff --git a/plugins/plugin-i18n/README.md b/plugins/plugin-i18n/README.md index 9dcced5fede..9f127719107 100644 --- a/plugins/plugin-i18n/README.md +++ b/plugins/plugin-i18n/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-i18n/package.json b/plugins/plugin-i18n/package.json index c27d70f976b..fe966bff10b 100644 --- a/plugins/plugin-i18n/package.json +++ b/plugins/plugin-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-i18n", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin for pattern translation", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-logo/README.md b/plugins/plugin-logo/README.md index 4c8176b83bd..7ef1bddf723 100644 --- a/plugins/plugin-logo/README.md +++ b/plugins/plugin-logo/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-logo/package.json b/plugins/plugin-logo/package.json index a5e94e17e02..c362c52689c 100644 --- a/plugins/plugin-logo/package.json +++ b/plugins/plugin-logo/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-logo", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add our logo to your patterns", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-measurements/README.md b/plugins/plugin-measurements/README.md index b62a5913399..49b3e865894 100644 --- a/plugins/plugin-measurements/README.md +++ b/plugins/plugin-measurements/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-measurements/package.json b/plugins/plugin-measurements/package.json index 255b29812f8..ffea8d58f8d 100644 --- a/plugins/plugin-measurements/package.json +++ b/plugins/plugin-measurements/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-measurements", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that adds additional measurements that can be calculated from existing ones", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-mirror/README.md b/plugins/plugin-mirror/README.md index 4783af92c53..e8ac4a4f687 100644 --- a/plugins/plugin-mirror/README.md +++ b/plugins/plugin-mirror/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-mirror/package.json b/plugins/plugin-mirror/package.json index 3ce22ee766a..cc3798fa263 100644 --- a/plugins/plugin-mirror/package.json +++ b/plugins/plugin-mirror/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-mirror", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to mirror points or paths", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-notches/README.md b/plugins/plugin-notches/README.md index 7f26f068f13..80d91fc892f 100644 --- a/plugins/plugin-notches/README.md +++ b/plugins/plugin-notches/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-notches/package.json b/plugins/plugin-notches/package.json index ca5889cb16e..3eb1885f19a 100644 --- a/plugins/plugin-notches/package.json +++ b/plugins/plugin-notches/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-notches", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that provides front and back notch snippets", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-round/README.md b/plugins/plugin-round/README.md index 48c54928d34..475afd36cdd 100644 --- a/plugins/plugin-round/README.md +++ b/plugins/plugin-round/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-round/package.json b/plugins/plugin-round/package.json index ad62353cd42..1199f5ba1fe 100644 --- a/plugins/plugin-round/package.json +++ b/plugins/plugin-round/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-round", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to round corners", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-scalebox/README.md b/plugins/plugin-scalebox/README.md index 9312f27b6b4..6ce9abf40c7 100644 --- a/plugins/plugin-scalebox/README.md +++ b/plugins/plugin-scalebox/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-scalebox/package.json b/plugins/plugin-scalebox/package.json index a17366689b9..9e5d8947dc8 100644 --- a/plugins/plugin-scalebox/package.json +++ b/plugins/plugin-scalebox/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-scalebox", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add a scalebox to your pattern", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-sprinkle/README.md b/plugins/plugin-sprinkle/README.md index 170e0243371..b6c3fbac49a 100644 --- a/plugins/plugin-sprinkle/README.md +++ b/plugins/plugin-sprinkle/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-sprinkle/package.json b/plugins/plugin-sprinkle/package.json index d8a27b7027d..41b9c56b801 100644 --- a/plugins/plugin-sprinkle/package.json +++ b/plugins/plugin-sprinkle/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-sprinkle", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to bulk-add snippets to your pattern", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-svgattr/README.md b/plugins/plugin-svgattr/README.md index d11c4b64072..4c76a9f65b1 100644 --- a/plugins/plugin-svgattr/README.md +++ b/plugins/plugin-svgattr/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-svgattr/package.json b/plugins/plugin-svgattr/package.json index 67b4de4f84b..9f7e7bfd84b 100644 --- a/plugins/plugin-svgattr/package.json +++ b/plugins/plugin-svgattr/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-svgattr", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to set SVG attributes", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-theme/README.md b/plugins/plugin-theme/README.md index b49c38715b3..b04f1a1397b 100644 --- a/plugins/plugin-theme/README.md +++ b/plugins/plugin-theme/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-theme/package.json b/plugins/plugin-theme/package.json index ec697d8e400..8201e6b146f 100644 --- a/plugins/plugin-theme/package.json +++ b/plugins/plugin-theme/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-theme", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that provides a default theme", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-theme/src/index.js b/plugins/plugin-theme/src/index.js index 36a7a534048..00be62a346a 100644 --- a/plugins/plugin-theme/src/index.js +++ b/plugins/plugin-theme/src/index.js @@ -9,12 +9,12 @@ export default { name: pkg.name, version: pkg.version, hooks: { - preRender: function (svg) { + preRender: function (svg, data = {}) { if (svg.attributes.get('freesewing:plugin-theme') === false) { svg.attributes.set('class', 'freesewing') svg.style += sample svg.style += paperless - svg.style += draft(svg.pattern.settings.scale) + svg.style += draft(svg.pattern.settings.scale, data.stripped) if (svg.pattern.settings.paperless) { svg.pattern.settings.units === 'imperial' ? (svg.defs += gridImperial) diff --git a/plugins/plugin-theme/src/lib/draft.js b/plugins/plugin-theme/src/lib/draft.js index b96d7b6d8c4..18e2baadac1 100644 --- a/plugins/plugin-theme/src/lib/draft.js +++ b/plugins/plugin-theme/src/lib/draft.js @@ -1,17 +1,35 @@ +// FIXME surely this can be extracted from the theme in some way so as to keep things consistent? + const round = value => Math.round(value * 1e2) / 1e2 -export default (scale) => ` - /* Reset */ - svg.freesewing path, - svg.freesewing circle, - svg.freesewing rect { +const colors = { + fabric: '#212121', + lining: '#10b981', + interfacing: '#a3a3a3', + canvas: '#d97706', + various: '#ef4444', + note: '#8b5cf6', + mark: '#3b82f6', + contrast: '#ec4899' +} + +/** + * generate a stylesheet + * scale: the scale of the markings + * stripped: should nested declarations be stripped out? Necessary for svgToPdfkit + * */ +export default (scale, stripped) => ` + ${!stripped ? '/* Reset */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}path, + ${!stripped ? 'svg.freesewing ' : ''}circle, + ${!stripped ? 'svg.freesewing ' : ''}rect { fill: none; stroke: none; } - /* Defaults */ - svg.freesewing path, - svg.freesewing circle { + ${!stripped ? '/* Defaults */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}path, + ${!stripped ? 'svg.freesewing ' : ''}circle { stroke: #000; stroke-opacity: 1; stroke-width: ${round(0.3*scale)}; @@ -19,111 +37,118 @@ export default (scale) => ` stroke-linejoin: round; } - /* Stroke classes */ - svg.freesewing .fabric { + ${!stripped ? '/* Stroke classes */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}.fabric { stroke-width: ${round(0.6*scale)}; - stroke: #212121; + stroke: ${colors.fabric}; } - svg.freesewing .lining { + ${!stripped ? 'svg.freesewing ' : ''}.lining { stroke-width: ${round(0.6*scale)}; - stroke: #ff5b77; + stroke: ${colors.lining}; } - svg.freesewing .interfacing { + ${!stripped ? 'svg.freesewing ' : ''}.interfacing { stroke-width: ${round(0.6*scale)}; - stroke: #64b5f6; + stroke: ${colors.interfacing}; } - svg.freesewing .canvas { + ${!stripped ? 'svg.freesewing ' : ''}.canvas { stroke-width: ${round(0.6*scale)}; - stroke: #ff9000; + stroke: ${colors.canvas}; } - svg.freesewing .various { + ${!stripped ? 'svg.freesewing ' : ''}.various { stroke-width: ${round(0.6*scale)}; - stroke: #4caf50; + stroke: ${colors.various}; } - svg.freesewing .note { + ${!stripped ? 'svg.freesewing ' : ''}.note { stroke-width: ${round(0.4*scale)}; - stroke: #dd60dd; + stroke: ${colors.note}; } - svg.freesewing .mark { + ${!stripped ? 'svg.freesewing ' : ''}.mark { stroke-width: ${round(0.4*scale)}; - stroke: blue; + stroke: ${colors.mark}; } - svg.freesewing .contrast { + ${!stripped ? 'svg.freesewing ' : ''}.contrast { stroke-width: ${round(0.8*scale)}; - stroke: red; + stroke: ${colors.contrast}; } - svg.freesewing .stroke-xs { + + ${!stripped ? 'svg.freesewing ' : ''}.stroke-xs { stroke-width: ${round(0.1*scale)}; } - svg.freesewing .stroke-sm { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-sm { stroke-width: ${round(0.2*scale)}; } - svg.freesewing .stroke-lg { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-lg { stroke-width: ${round(0.6*scale)}; } - svg.freesewing .stroke-xl { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-xl { stroke-width: ${round(1*scale)}; } - svg.freesewing .stroke-xxl, - svg.freesewing .stroke-2xl { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-xxl, + ${!stripped ? 'svg.freesewing ' : ''}.stroke-2xl { stroke-width: ${round(2*scale)}; } - svg.freesewing .stroke-3xl { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-3xl { stroke-width: ${round(3*scale)}; } - svg.freesewing .stroke-4xl { + ${!stripped ? 'svg.freesewing ' : ''}.stroke-4xl { stroke-width: ${round(4*scale)}; } - svg.freesewing .sa { + ${!stripped ? 'svg.freesewing ' : ''}.sa { stroke-dasharray: 0.4, 0.8; } - svg.freesewing .help { + ${!stripped ? 'svg.freesewing ' : ''}.help { stroke-width: ${round(0.2*scale)}; stroke-dasharray: 15, 1.5, 1, 1.5; } - svg.freesewing .dotted { + ${!stripped ? 'svg.freesewing ' : ''}.dotted { stroke-dasharray: 0.4, 0.8; } - svg.freesewing .dashed { + ${!stripped ? 'svg.freesewing ' : ''}.dashed { stroke-dasharray: 1, 1.5; } - svg.freesewing .lashed { + ${!stripped ? 'svg.freesewing ' : ''}.lashed { stroke-dasharray: 6, 6; } - svg.freesewing .hidden { + ${!stripped ? 'svg.freesewing ' : ''}.hidden { stroke: none; fill: none; } - - /* Fill classes */ - svg.freesewing .fill-fabric { - fill: #212121; - } - svg.freesewing .fill-lining { - fill: #ff5b77; - } - svg.freesewing .fill-interfacing { - fill: #64b5f6; - } - svg.freesewing .fill-canvas { - fill: #ff9000; - } - svg.freesewing .fill-various { - fill: #4caf50; - } - svg.freesewing .fill-note { - fill: #dd69dd; - } - svg.freesewing .fill-mark { - fill: blue; - } - svg.freesewing .fill-contrast { - fill: red; + ${!stripped ? 'svg.freesewing ' : ''}.no-stroke { stroke: none !important; } + ${!stripped ? 'svg.freesewing ' : ''}.no-fill { fill: none !important; } + ${!stripped ? 'svg.freesewing ' : ''}.muted { + stroke-opacity: 0.15; + fill-opacity: 0.15; } - /* Text */ - svg.freesewing text { + ${!stripped ? '/* Fill classes */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}.fill-fabric { + fill: ${colors.fabric}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-lining { + fill: ${colors.lining}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-interfacing { + fill: ${colors.interfacing}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-canvas { + fill: ${colors.canvas}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-various { + fill: ${colors.various}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-note { + fill: ${colors.note}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-mark { + fill: ${colors.mark}; + } + ${!stripped ? 'svg.freesewing ' : ''}.fill-contrast { + fill: ${colors.contrast}; + } + + ${!stripped ? '/* Text */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}text { font-size: ${round(5*scale)}px; font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; @@ -132,31 +157,39 @@ export default (scale) => ` font-weight: 200; dominant-baseline: ideographic; } - svg.freesewing .text-xs { + ${!stripped ? 'svg.freesewing ' : ''}.text-xs { font-size: ${round(3*scale)}px; } - svg.freesewing .text-sm { + ${!stripped ? 'svg.freesewing ' : ''}.text-sm { font-size: ${round(4*scale)}px; } - svg.freesewing .text-lg { + ${!stripped ? 'svg.freesewing ' : ''}.text-lg { font-size: ${round(7*scale)}px; } - svg.freesewing .text-xl { + ${!stripped ? 'svg.freesewing ' : ''}.text-xl { font-size: ${round(9*scale)}px; } - svg.freesewing .text-xxl { + ${!stripped ? 'svg.freesewing ' : ''}.text-xxl { font-size: ${round(12*scale)}px; } + ${!stripped ? 'svg.freesewing ' : ''}.text-4xl { + font-size: ${round(36*scale)}px; + } - svg.freesewing .center { + ${!stripped ? 'svg.freesewing ' : ''}.center { text-anchor: middle; } - svg.freesewing .right { + ${!stripped ? 'svg.freesewing ' : ''}.baseline-center { + alignment-baseline: central; + dominant-baseline: central; + } + + ${!stripped ? 'svg.freesewing ' : ''}.right { text-anchor: end; } - /* Bartack */ - svg.freesewing path.bartack { + ${!stripped ? '/* Bartack */' : ''} + ${!stripped ? 'svg.freesewing ' : ''}path.bartack { stroke-width: ${round(2*scale)}; stroke: #fd7e14; stroke-linecap: butt; diff --git a/plugins/plugin-title/README.md b/plugins/plugin-title/README.md index 2000bd770b1..6290ea551b3 100644 --- a/plugins/plugin-title/README.md +++ b/plugins/plugin-title/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-title/package.json b/plugins/plugin-title/package.json index ec49b3c0f53..35f2b30afe4 100644 --- a/plugins/plugin-title/package.json +++ b/plugins/plugin-title/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-title", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to add a title to your pattern parts", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-title/src/index.js b/plugins/plugin-title/src/index.js index 329caeab320..0c73810edea 100644 --- a/plugins/plugin-title/src/index.js +++ b/plugins/plugin-title/src/index.js @@ -1,6 +1,27 @@ -import style from './lib/style' import pkg from '../package.json' +const style = ` +text.title-nr { + font-size: 24pt; + font-weight: 700; + text-anchor: middle; + dominant-baseline: reset-size; +} +text.title-name { + font-size: 7pt; + font-weight: 500; + text-anchor: middle; + dominant-baseline: reset-size; +} +text.title-pattern { + font-size: 4pt; + font-weight: 500; + dominant-baseline: reset-size; + text-anchor: middle; + font-style: italic; +} +` + export default { name: pkg.name, version: pkg.version, @@ -14,6 +35,21 @@ export default { }, macros: { title: function (so) { + let prefix = '' + if (so.prefix) prefix = so.prefix + + // Passing `false` will remove the title + if (so === false) { + for (const id of [ + `_${prefix}_titleNr`, + `_${prefix}_titleName`, + `_${prefix}_titlePattern`, + `_${prefix}_titleFor`, + ]) + delete this.points[id] + return true + } + const transform = function (anchor) { const cx = anchor.x - so.scale * anchor.x const cy = anchor.y - so.scale * anchor.y @@ -28,8 +64,6 @@ export default { so.scale = so.scale * this.context.settings.scale let overwrite = true if (so.append) overwrite = false - let prefix = '' - if (so.prefix) prefix = so.prefix this.points[`_${prefix}_titleNr`] = so.at .clone() .attr('data-text', so.nr, overwrite) @@ -58,6 +92,14 @@ export default { .attr('data-text-class', 'fill-current font-bold') .attr('data-text-transform', transform(so.at.shift(-90 - so.rotation, shift * so.scale))) } + shift += 6 + const dateformat = require('dateformat') + const now = new Date() + this.points[`_${prefix}_exportDate`] = so.at + .shift(-90 - so.rotation, shift * so.scale) + .attr('data-text', dateformat(now, 'yyyymmdd"T"HHMMo')) + .attr('data-text-class', 'text-sm') + .attr('data-text-transform', transform(so.at.shift(-90 - so.rotation, shift * so.scale))) }, }, } diff --git a/plugins/plugin-title/src/lib/style.css b/plugins/plugin-title/src/lib/style.css deleted file mode 100644 index 7a9bebfe9d5..00000000000 --- a/plugins/plugin-title/src/lib/style.css +++ /dev/null @@ -1,19 +0,0 @@ -text.title-nr { - font-size: 24pt; - font-weight: 700; - text-anchor: middle; - dominant-baseline: reset-size; -} -text.title-name { - font-size: 7pt; - font-weight: 500; - text-anchor: middle; - dominant-baseline: reset-size; -} -text.title-pattern { - font-size: 4pt; - font-weight: 500; - dominant-baseline: reset-size; - text-anchor: middle; - font-style: italic; -} diff --git a/plugins/plugin-title/src/lib/style.js b/plugins/plugin-title/src/lib/style.js deleted file mode 100644 index dfc2c94d310..00000000000 --- a/plugins/plugin-title/src/lib/style.js +++ /dev/null @@ -1 +0,0 @@ -export default `text.title-nr{font-size:24pt;font-weight:700;text-anchor:middle;dominant-baseline:reset-size}text.title-name{font-size:7pt;font-weight:500;text-anchor:middle;dominant-baseline:reset-size}text.title-pattern{font-size:4pt;font-weight:500;dominant-baseline:reset-size;text-anchor:middle;font-style:italic}`; diff --git a/plugins/plugin-title/src/lib/style.min.css b/plugins/plugin-title/src/lib/style.min.css deleted file mode 100644 index 3e1c4e85f89..00000000000 --- a/plugins/plugin-title/src/lib/style.min.css +++ /dev/null @@ -1 +0,0 @@ -text.title-nr{font-size:24pt;font-weight:700;text-anchor:middle;dominant-baseline:reset-size}text.title-name{font-size:7pt;font-weight:500;text-anchor:middle;dominant-baseline:reset-size}text.title-pattern{font-size:4pt;font-weight:500;dominant-baseline:reset-size;text-anchor:middle;font-style:italic} diff --git a/plugins/plugin-title/tests/plugin.test.mjs b/plugins/plugin-title/tests/plugin.test.mjs index eb24743036f..84948682f71 100644 --- a/plugins/plugin-title/tests/plugin.test.mjs +++ b/plugins/plugin-title/tests/plugin.test.mjs @@ -1,7 +1,6 @@ import chai from 'chai' import freesewing from '@freesewing/core' import plugin from '../dist/index.mjs' -import style from '../src/lib/style.js' const expect = chai.expect @@ -9,12 +8,6 @@ describe('Title Plugin Tests', () => { const pattern = new freesewing.Pattern().use(plugin) pattern.draft().render() - it("Should import the style", () => { - const patternStyle = pattern.svg.style.toString(); - const pluginStyle = style.default; - expect(patternStyle).to.equal(pluginStyle); - }); - it("Should run the title macro", () => { let pattern = new freesewing.Pattern({ name: "testPattern", version: 99 }); pattern.draft = function() {}; diff --git a/plugins/plugin-validate/README.md b/plugins/plugin-validate/README.md index 7ebc7aa51f8..db7b13a6a29 100644 --- a/plugins/plugin-validate/README.md +++ b/plugins/plugin-validate/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-validate/package.json b/plugins/plugin-validate/package.json index 7738cf08daa..a6df63b24b8 100644 --- a/plugins/plugin-validate/package.json +++ b/plugins/plugin-validate/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-validate", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin that validates aspects of your code", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/plugins/plugin-versionfree-svg/README.md b/plugins/plugin-versionfree-svg/README.md index 4bf4d024d98..9ad8388dd4f 100644 --- a/plugins/plugin-versionfree-svg/README.md +++ b/plugins/plugin-versionfree-svg/README.md @@ -22,7 +22,7 @@ All Contributors


Anthony

💬
Ari Grayzel-student

💻 +
BenJamesBen

💻 📖
Cameron Dubas

📖
Carsten Biebricher

📖
Cathy Zoller

📖
Chantal Lapointe

🌍 -
Damien PIQUET

💻 +
Damien PIQUET

💻
Darigov Research

📖 🤔
Elena FdR

📖 📝
Emmanuel Nyachoke

💻 📖
Enoch Riese

💻
EvEkSwed

🌍
Fantastik-Maman

🌍 -
Forrest O.

📖 +
Forrest O.

📖
Frédéric

🌍
Glenn Matthews

📖 +
Greg Sadetsky

📖
Igor Couto

🐛
Ikko Ashimine

📖
Irapeke

🌍 -
Jacek Sawoszczuk

📖 -
Jason Williams

📖 +
Jacek Sawoszczuk

📖 +
Jason Williams

📖
Jeremy Jackson

💻 +
Joe Schofield

📖
Joebidido

🌍
Joost De Cock

🚧
Josh Essman

📖 + +
Kake

📖
Kapunahele Wong

📖
Karen

📖 📋 - -
Katie McGinley

📖
Kieran Klaassen

💻
Kittycatou

🌍
Kris

📖 + +
Kristin Ruben

💻
Loudepeuter

🌍
Lucian

📋 - -
Marcus

🌍
Martin Tribo

📖
Nadege Michel

⚠️ 📖
Natalia

💻 🎨 📝 -
Nathan Yergler

📖 -
Nick Dower

📖 💻 🐛 -
Patrick Forringer

🔌 +
Nathan Yergler

📖 +
Nick Dower

📖 💻 🐛 +
Nikhil Chelliah

📖 +
OysteinHoiby

💻 +
Patrick Forringer

🔌
Paul

📖 📝 🌍
Phillip Thelen

💻 + +
Pixieish

📖
Prof. dr. Sorcha Ní Dhubhghaill

📖
Quentin FELIX

💻 🎨
Rik Hekker

🐛
Sam Livingston-Gray

📖 - -
Sanne

💻 📖
Sara Latorre

🌍 + +
SeaZeeZee

📖 💻 +
SimonbJohnson

🐛
Slylele

📖 🌍
Soazillon

🌍
SoneaTheBest

🌍
Stefan Sydow

🌍 📖 💻 +
Tríona

📖 -
Tríona

📖
Unmutual

📖
Wouter van Wageningen

💻 🎨 🔧
amysews

📖
anna-puk

💻
beautifulsummermoon

🌍
berce

📖 +
biou

💻 -
biou

💻
bobgeorgethe3rd

💻 📖 🎨
brmlyklr

📖
chri5b

💻 ⚠️
dingcycle

🌍
drowned-in-books

💬
econo202

📖 +
ericamattos

🌍 -
ericamattos

🌍
fightingrabbit

💻
gaylyndie

📖
grimlokason

💻
hellgy

🎨
jackseye

📖
marckiesel

🌍 +
mesil

🐛 -
mesil

🐛
starfetch

💻 📖 🌍 🎨
ttimearl

🖋
tuesgloomsday

📖
valadaptive

💻
viocky

🌍
woolishboy

💻 - -
yc

🌍 diff --git a/plugins/plugin-versionfree-svg/package.json b/plugins/plugin-versionfree-svg/package.json index 7923ae29e30..79916a2657d 100644 --- a/plugins/plugin-versionfree-svg/package.json +++ b/plugins/plugin-versionfree-svg/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/plugin-versionfree-svg", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "A FreeSewing plugin to keep version info out of your SVG to allow easy diffs across versions", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", @@ -31,16 +31,16 @@ "clean": "rimraf dist", "mbuild": "NO_MINIFY=1 node build.js", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register", + "test": "npx mocha tests/*.test.mjs", "vbuild": "VERBOSE=1 node build.js", "lab": "cd ../../sites/lab && yarn start", "tips": "node ../../scripts/help.mjs", "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'", - "testci": "BABEL_ENV=production npx mocha tests/*.test.mjs --require @babel/register --reporter ../../tests/reporters/terse.js", + "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", "cibuild_step1": "node build.js" }, "peerDependencies": { - "@freesewing/core": "^2.21.3" + "@freesewing/core": "^2.22.0-rc.0" }, "dependencies": {}, "devDependencies": { @@ -53,7 +53,7 @@ ], "publishConfig": { "access": "public", - "tag": "latest" + "tag": "next" }, "engines": { "node": ">=14.0.0", diff --git a/scripts/add-software.mjs b/scripts/add-software.mjs index fd9881fa1d9..aecb2d8b832 100644 --- a/scripts/add-software.mjs +++ b/scripts/add-software.mjs @@ -7,9 +7,6 @@ import mustache from 'mustache' import { execSync } from 'child_process' // Software import designs from '../config/software/designs.json' -import packages from '../config/software//packages.json' -import plugins from '../config/software//plugins.json' -import sites from '../config/software//sites.json' const type = process.argv[2] diff --git a/scripts/optiondocsimages.js b/scripts/optiondocsimages.js index 435c301aaec..e2d5cc46a78 100644 --- a/scripts/optiondocsimages.js +++ b/scripts/optiondocsimages.js @@ -25,7 +25,8 @@ theme = theme.default const image = (pattern, option) => ` ## Effect of this option on the pattern -![This image shows the effect of this option by superimposing several variants that have a different value for this option](${pattern}_${option.toLowerCase()}_sample.svg "Effect of this option on the pattern")` +![This image shows the effect of this option by superimposing several variants that have a different value for this option](${pattern}_${option.toLowerCase()}_sample.svg "Effect of this option on the pattern") +` const insertImage = (file, pattern, option) => { diff --git a/scripts/reconfigure.mjs b/scripts/reconfigure.mjs index 3d2cfdc1605..dbb6ae24aa1 100644 --- a/scripts/reconfigure.mjs +++ b/scripts/reconfigure.mjs @@ -4,14 +4,16 @@ import glob from 'glob' import yaml from 'js-yaml' import chalk from 'chalk' import mustache from 'mustache' -import { capitalize } from '../sites/shared/utils.mjs' import conf from '../lerna.json' const { version } = conf import { publishedSoftware as software, - publishedTypes as types + publishedTypes as types, + designs, + plugins } from '../config/software/index.mjs' import { buildOrder } from '../config/build-order.mjs' +import rootPackageJson from '../package.json' // Working directory const cwd = process.cwd() @@ -34,6 +36,8 @@ const repo = { changelog: readTemplateFile('changelog.dflt.md'), readme: readTemplateFile('readme.dflt.md'), build: readTemplateFile('build.dflt.js'), + designTests: readTemplateFile('design.test.mjs'), + pluginTests: readTemplateFile('plugin.test.mjs') }, dirs: foldersByType(), contributors: fs.readFileSync(path.join(cwd, 'CONTRIBUTORS.md'), 'utf-8'), @@ -80,26 +84,47 @@ for (const pkg of Object.values(software)) { } fs.writeFileSync( path.join(cwd, pkg.folder, pkg.name, 'CHANGELOG.md'), - changelog(pkg, repo) + changelog(pkg) ) } -log.write(chalk.green(" All done\n")) +log.write(chalk.green(" Done\n")) -// Step 3: Generate overall CHANGELOG.md +// Step 4: Generate overall CHANGELOG.md fs.writeFileSync( path.join(repo.path, 'CHANGELOG.md'), - changelog('global', repo) + changelog('global') ) +// Step 5: Generate build script for published software +log.write(chalk.blueBright('Generating buildall node script...')) +const buildSteps = buildOrder.map((step, i) => `lerna run cibuild_step${i}`); +const buildAllCommand = buildSteps.join(' && '); +const newRootPkgJson = {...rootPackageJson}; +newRootPkgJson.scripts.buildall = buildAllCommand; +fs.writeFileSync( + path.join(repo.path, 'package.json'), + JSON.stringify(newRootPkgJson, null, 2) + '\n' +) +log.write(chalk.green(" Done\n")) - -// Step 6: Generate build script for published software - -// Step 7: Generate tests for designs and plugins +// Step 6: Generate tests for designs and plugins +for (const design in designs) { + fs.writeFileSync( + path.join(repo.path, 'designs', design, 'tests', 'shared.test.mjs'), + mustache.render(repo.templates.designTests, { name: design }) + ) +} +for (const plugin in plugins) { + fs.writeFileSync( + path.join(repo.path, 'plugins', plugin, 'tests', 'shared.test.mjs'), + repo.templates.pluginTests, + ) +} // All done +log.write(chalk.green(" All done\n")) process.exit() /* @@ -190,9 +215,9 @@ function scripts(pkg) { } // Enforce build order by generating the cibuild_stepX scrips - let i = 0 - for (const step in buildOrder) { + for (let step=0; step < buildOrder.length; step++) { if (buildOrder[step].indexOf(pkg.name) !== -1) { + if (runScripts.prebuild) runScripts[`precibuild_step${step}`] = runScripts.prebuild if (runScripts.build) runScripts[`cibuild_step${step}`] = runScripts.build } } @@ -238,6 +263,10 @@ function packageJson(pkg) { } pkgConf.keywords = pkgConf.keywords.concat(keywords(pkg)) pkgConf.scripts = scripts(pkg) + if (repo.exceptions.skipTests.indexOf(pkg.name) !== -1) { + pkgConf.scripts.test = `echo "skipping tests for ${pkg.name}"` + pkgConf.scripts.testci = `echo "skipping tests for ${pkg.name}"` + } pkgConf.dependencies = dependencies('_', pkg) pkgConf.devDependencies = dependencies('dev', pkg) pkgConf.peerDependencies = dependencies('peer', pkg) @@ -393,9 +422,9 @@ function packageChangelog(pkgName) { function formatDate(date) { let d = new Date(date), - month = '' + (d.getMonth() + 1), - day = '' + d.getDate(), - year = d.getFullYear() + month = '' + (d.getUTCMonth() + 1), + day = '' + d.getUTCDate(), + year = d.getUTCFullYear() if (month.length < 2) month = '0' + month if (day.length < 2) day = '0' + day @@ -421,38 +450,3 @@ function validate() { return true } -/** - * Puts a package.json, build.js, README.md, and CHANGELOG.md - * into every subdirectory under the packages directory. - * Also adds unit tests for patterns, and writes the global CHANGELOG.md. - */ -function reconfigure(pkgs, repo) { - for (const pkg of pkgs) { - console.log(chalk.blueBright(`Reconfiguring ${pkg}`)) - //if (repo.exceptions.customPackageJson.indexOf(pkg) === -1) { - // const pkgConfig = packageConfig(pkg, repo) - // fs.writeFileSync( - // path.join(repo.path, 'packages', pkg, 'package.json'), - // JSON.stringify(pkgConfig, null, 2) + '\n' - // ) - //} - //if (repo.exceptions.customBuild.indexOf(pkg) === -1) { - // fs.writeFileSync( - // path.join(repo.path, 'packages', pkg, 'build.js'), - // repo.templates.build - // ) - //} - //if (repo.exceptions.customReadme.indexOf(pkg) === -1) { - // fs.writeFileSync(path.join(repo.path, 'packages', pkg, 'README.md'), readme(pkg, repo)) - //} - if (repo.exceptions.customChangelog.indexOf(pkg) === -1) { - fs.writeFileSync( - path.join(repo.path, 'packages', pkg, 'CHANGELOG.md'), - changelog(pkg, repo) - ) - } - const type = packageType(pkg, repo) - } - fs.writeFileSync(path.join(repo.path, 'CHANGELOG.md'), changelog('global', repo)) - console.log(chalk.yellowBright.bold('All done.')) -} diff --git a/scripts/strapi-assign-authors.mjs b/scripts/strapi-assign-authors.mjs index 3fa7c0896d6..957ee196f09 100644 --- a/scripts/strapi-assign-authors.mjs +++ b/scripts/strapi-assign-authors.mjs @@ -66,7 +66,6 @@ const bearer = token => ({ * Exported because it's re-used by the Algolia indexing script */ const getContent = async (lang, type) => { - const items = {} let res try { res = await axios.get(`${uris[type]}&_locale=${lang}`) @@ -82,7 +81,7 @@ const getContent = async (lang, type) => { /* * Adds maker to showcase post */ -const addMaker = (content, lang, token, makers) => { +const addMaker = (content, token, makers) => { const promises = [] for (const item of content) { promises.push(axios.put( @@ -112,7 +111,7 @@ const addAuthors = async (type, token) => { for (const lang of languages) { const content = await getContent(lang, type) - if (type === 'showcaseposts') await addMaker(content, lang, token, makers) + if (type === 'showcaseposts') await addMaker(content, token, makers) } return false @@ -133,7 +132,6 @@ const getToWork = async () => { console.log('Failed to login to strapi') process.exit() } - const translations = languages.length - 1 for (const type of Object.keys(uris)) { console.log(`Loading ${type} from Strapi`) await addAuthors(type, token) diff --git a/scripts/strapi-en-to-other.mjs b/scripts/strapi-en-to-other.mjs index 66076ec9650..3e4c8b119ec 100644 --- a/scripts/strapi-en-to-other.mjs +++ b/scripts/strapi-en-to-other.mjs @@ -246,7 +246,6 @@ const getToWork = async () => { process.exit() } const content = {} - const translations = languages.length - 1 for (const type of Object.keys(uris)) { console.log(`Loading ${type} from Strapi`) content[type] = await getContent(type) diff --git a/sites/backend/package.json b/sites/backend/package.json index 23f493721a0..1b23683b24f 100644 --- a/sites/backend/package.json +++ b/sites/backend/package.json @@ -1,6 +1,6 @@ { "name": "@freesewing/backend", - "version": "2.21.3", + "version": "2.22.0-rc.0", "description": "The freesewing.org backend", "private": true, "main": "build/main.js", @@ -19,7 +19,7 @@ "major": "npm version major -m ':bookmark: v%s' && npm run build", "test": "SEND_TEST_EMAILS=0 ./node_modules/.bin/mocha tests/index.js", "testall": "SEND_TEST_EMAILS=1 ./node_modules/.bin/mocha tests/index.js", - "testci": "babel-node --presets '@babel/preset-env' scripts/testci.js", + "testci_IGNORE": "babel-node --presets '@babel/preset-env' scripts/testci.js", "clean": "rimraf dist", "prettier": "npx prettier --write 'src/**' 'tests/**'", "lint": "eslint --fix \"src/*.js\"", @@ -53,7 +53,7 @@ ] }, "dependencies": { - "@freesewing/i18n": "^2.21.3", + "@freesewing/i18n": "^2.22.0-rc.0", "axios": "0.18.0", "body-parser": "1.20.0", "chai": "^4.3.4", @@ -68,14 +68,14 @@ "form-data": "^4.0.0", "formidable": "2.0.1", "jsonwebtoken": "8.5.1", - "jszip": "3.10.0", + "jszip": "3.10.1", "mdast-util-to-string": "2", "mocha": "^8.3.2", "mongodb-memory-server": "^8.3.0", "mongoose": "^6.1.8", "mongoose-bcrypt": "^1.8.1", "mongoose-encryption": "^2.1.0", - "nodemailer": "6.7.5", + "nodemailer": "6.7.8", "passport": "0.6.0", "passport-jwt": "4.0.0", "query-string": "7.1.1", diff --git a/sites/backend/src/utils/email/index.js b/sites/backend/src/utils/email/index.js index a1de50da5b8..2468ab37ed3 100644 --- a/sites/backend/src/utils/email/index.js +++ b/sites/backend/src/utils/email/index.js @@ -22,7 +22,7 @@ const loadTemplate = (type, format, language='en') => { } const replace = (text, from, to) => { - for (const id in from) text = text.split(from[id]).join(to[id] || from[id]) + for (let id=0; id < from.length; id++) text = text.split(from[id]).join(to[id] || from[id]) return text } diff --git a/sites/dev/components/footer.js b/sites/dev/components/footer.js index 8a5f9f8698b..441478f573f 100644 --- a/sites/dev/components/footer.js +++ b/sites/dev/components/footer.js @@ -3,10 +3,7 @@ import OsiLogo from 'shared/components/logos/osi.js' import CreativeCommonsLogo from 'shared/components/logos/cc.js' import CcByLogo from 'shared/components/logos/cc-by.js' import { useTranslation } from 'next-i18next' -import PageLink from 'shared/components/page-link' -import DocsLink from 'shared/components/docs-link' import PinkedRibbon from 'shared/components/pinked-ribbon.js' -import Worm from 'shared/components/worm.js' import Link from 'next/link' import DiscordIcon from 'shared/components/icons/discord.js' diff --git a/sites/dev/components/layouts/bare.js b/sites/dev/components/layouts/bare.js index 22a17e2be89..6a23f84dcc0 100644 --- a/sites/dev/components/layouts/bare.js +++ b/sites/dev/components/layouts/bare.js @@ -1,59 +1,7 @@ -import React from 'react' import { useRouter } from 'next/router' -import Link from 'next/link' -// Shared components -import Logo from 'shared/components/logos/freesewing.js' import Aside from 'shared/components/navigation/aside' -import get from 'lodash.get' import ThemePicker from 'shared/components/theme-picker' -const PageTitle = ({ app, slug, title }) => { - if (title) return

{title}

- if (slug) return

{get(app.navigation, slug.split('/')).__title}

- - return

FIXME: This page has no title

-} - -const Breadcrumbs = ({ app, slug=false, title }) => { - if (!slug) return null - const crumbs = [] - const chunks = slug.split('/') - for (const i in chunks) { - const j = parseInt(i)+parseInt(1) - const page = get(app.navigation, chunks.slice(0,j)) - if (page) crumbs.push([page.__linktitle, '/'+chunks.slice(0,j).join('/'), (j < chunks.length)]) - } - - return ( -
    -
  • - - - - - -
  • - {crumbs.map(crumb => ( - -
  • »
  • -
  • - {crumb[2] - ? ( - - - {crumb[0]} - - - ) - : {crumb[0]} - } -
  • -
    - ))} -
- ) -} - const DefaultLayout = ({ app, title=false, children=[] }) => { const router = useRouter() const slug = router.asPath.slice(1) diff --git a/sites/dev/components/layouts/docs.js b/sites/dev/components/layouts/docs.js index 1401d1f2985..f1a2d7c0516 100644 --- a/sites/dev/components/layouts/docs.js +++ b/sites/dev/components/layouts/docs.js @@ -1,8 +1,6 @@ import { useRouter } from 'next/router' -import Link from 'next/link' // Shared components import Aside from 'shared/components/navigation/aside' -import ThemePicker from 'shared/components/theme-picker' import Breadcrumbs from 'shared/components/breadcrumbs.js' import { getCrumbs } from 'shared/utils' @@ -15,16 +13,13 @@ const DefaultLayout = ({ app, title=false, crumbs=false, children=[] }) => { return (
-