diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 00000000000..c41df147510 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,161 @@ +":package: aaron": + - packages/aaron/* +":package: albert": + - packages/albert/* +":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/* +":package: components": + - packages/components/* +":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/* +"examples": + - packages/examples/* +":package: florence": + - packages/florence/* +":package: florent": + - packages/florent/* +"freesewing.dev": + - packages/freesewing.dev/* +"freesewing.org": + - packages/freesewing.org/* +"freesewing.shared": + - packages/freesewing.shared/* +":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/* +"i18n": + - packages/i18n/src/locales/* +":package: jaeger": + - packages/jaeger/* +"legend": + - packages/legend/* +":package: models": + - packages/models/* +":package: mui-theme": + - packages/mui-theme/* +":package: paco": + - packages/paco/* +":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-measurments/* +":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: prettier-config": + - packages/prettier-config/* +":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/* +"strapi": + - packages/strapi/* +":package: sven": + - packages/sven/* +":package: tamiko": + - packages/tamiko/* +":package: teagan": + - packages/teagan/* +":package: theo": + - packages/theo/* +":package: titan": + - packages/titan/* +":package: trayvon": + - packages/trayvon/* +"tutorial": + - packages/tutorial/* +":package: ursula": + - packages/ursula/* +":package: utils": + - packages/utils/* +":package: wahid": + - packages/wahid/* +":package: waralee": + - packages/waralee/* + diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 00000000000..dc36aa4ac9a --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,37 @@ +name: Greetings + +on: [pull_request, issues] + +jobs: + greeting: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-message: | + Hi there 😃 + + Since this is your first issue here, please take a moment to read how we use issues. + + If there's something not working, wrong, broken, or confusing, you came to the right place. + + If it's help or support you're looking for, + please join our Discord server at https://discord.freesewing.org/ + rather than creating an issue. + + Also, you can support FreeSewing via https://freesewing.org/patrons/join/ + + ♥ + + pr-message: | + Hi there 👋 + + Thank you for submitting a pull request. + + Please note that our code of conduct lives at + https://freesewing.dev/contributors/code-of-conduct/ + diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 00000000000..ab46d2e553b --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,19 @@ +# This workflow will triage pull requests and apply a label based on the +# paths that are modified in the pull request. + +name: PR Labeler +on: [pull_request] + +jobs: + label: + + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - uses: actions/labeler@v2 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + diff --git a/.github/workflows/tests.aaron.yml b/.github/workflows/tests.aaron.yml index f30a154cc82..36a4b5b9d42 100644 --- a/.github/workflows/tests.aaron.yml +++ b/.github/workflows/tests.aaron.yml @@ -1,6 +1,14 @@ name: Unit tests - Aaron -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.albert.yml b/.github/workflows/tests.albert.yml index ffb9ce1c458..e4d2613e308 100644 --- a/.github/workflows/tests.albert.yml +++ b/.github/workflows/tests.albert.yml @@ -1,6 +1,14 @@ name: Unit tests - Albert -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.bella.yml b/.github/workflows/tests.bella.yml index aeef0ec4dfb..6f7380bba91 100644 --- a/.github/workflows/tests.bella.yml +++ b/.github/workflows/tests.bella.yml @@ -1,6 +1,14 @@ name: Unit tests - Bella -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.benjamin.yml b/.github/workflows/tests.benjamin.yml index a455cf88fb4..6405c204801 100644 --- a/.github/workflows/tests.benjamin.yml +++ b/.github/workflows/tests.benjamin.yml @@ -1,6 +1,14 @@ name: Unit tests - Benjamin -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.bent.yml b/.github/workflows/tests.bent.yml index 505dbe9cc17..273790b7904 100644 --- a/.github/workflows/tests.bent.yml +++ b/.github/workflows/tests.bent.yml @@ -1,6 +1,14 @@ name: Unit tests - Bent -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.breanna.yml b/.github/workflows/tests.breanna.yml index 1ee3f253aaf..bc425bade6f 100644 --- a/.github/workflows/tests.breanna.yml +++ b/.github/workflows/tests.breanna.yml @@ -1,6 +1,14 @@ name: Unit tests - Breanna -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.brian.yml b/.github/workflows/tests.brian.yml index 14c127df8e7..d019706bfdf 100644 --- a/.github/workflows/tests.brian.yml +++ b/.github/workflows/tests.brian.yml @@ -1,6 +1,14 @@ name: Unit tests - Brian -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.bruce.yml b/.github/workflows/tests.bruce.yml index 40b6e522d26..9fb8bfe9d5e 100644 --- a/.github/workflows/tests.bruce.yml +++ b/.github/workflows/tests.bruce.yml @@ -1,6 +1,14 @@ name: Unit tests - Bruce -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.carlita.yml b/.github/workflows/tests.carlita.yml index ae11c9d764f..2a527a8bda9 100644 --- a/.github/workflows/tests.carlita.yml +++ b/.github/workflows/tests.carlita.yml @@ -1,6 +1,14 @@ name: Unit tests - Carlita -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository @@ -23,7 +31,7 @@ jobs: env: CI: true - name: Install peer & test dependencies - run: "cd packages/carlita && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/carlton@^2.17.4 @freesewing/plugin-bust@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" + run: "cd packages/carlita && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/carlton@^2.17.4 @freesewing/plugin-bust@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" env: CI: true - name: Build pattern diff --git a/.github/workflows/tests.carlton.yml b/.github/workflows/tests.carlton.yml index 3c7f9816815..33bd6c98efd 100644 --- a/.github/workflows/tests.carlton.yml +++ b/.github/workflows/tests.carlton.yml @@ -1,6 +1,14 @@ name: Unit tests - Carlton -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository @@ -23,7 +31,7 @@ jobs: env: CI: true - name: Install peer & test dependencies - run: "cd packages/carlton && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" + run: "cd packages/carlton && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" env: CI: true - name: Build pattern diff --git a/.github/workflows/tests.cathrin.yml b/.github/workflows/tests.cathrin.yml index f1f36ca176d..60dc2fb5afd 100644 --- a/.github/workflows/tests.cathrin.yml +++ b/.github/workflows/tests.cathrin.yml @@ -1,6 +1,14 @@ name: Unit tests - Cathrin -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.charlie.yml b/.github/workflows/tests.charlie.yml index f656186e959..4222d1428b9 100644 --- a/.github/workflows/tests.charlie.yml +++ b/.github/workflows/tests.charlie.yml @@ -1,6 +1,14 @@ name: Unit tests - Charlie -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository @@ -23,7 +31,7 @@ jobs: env: CI: true - name: Install peer & test dependencies - run: "cd packages/charlie && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/titan@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" + run: "cd packages/charlie && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/plugin-bartack@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/titan@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" env: CI: true - name: Build pattern diff --git a/.github/workflows/tests.cornelius.yml b/.github/workflows/tests.cornelius.yml index 59f12d6bba8..9a08a0e5c79 100644 --- a/.github/workflows/tests.cornelius.yml +++ b/.github/workflows/tests.cornelius.yml @@ -1,6 +1,14 @@ name: Unit tests - Cornelius -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.diana.yml b/.github/workflows/tests.diana.yml index ba87e9a5567..e265472fef4 100644 --- a/.github/workflows/tests.diana.yml +++ b/.github/workflows/tests.diana.yml @@ -1,6 +1,14 @@ name: Unit tests - Diana -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.examples.yml b/.github/workflows/tests.examples.yml index 7baa2245f9e..3ef7caa029d 100644 --- a/.github/workflows/tests.examples.yml +++ b/.github/workflows/tests.examples.yml @@ -1,6 +1,14 @@ name: Unit tests - Examples -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository @@ -23,7 +31,7 @@ jobs: env: CI: true - name: Install peer & test dependencies - run: "cd packages/examples && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" + run: "cd packages/examples && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/plugin-bartack@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" env: CI: true - name: Build pattern diff --git a/.github/workflows/tests.florence.yml b/.github/workflows/tests.florence.yml index cf541ad767f..852b4ceaea7 100644 --- a/.github/workflows/tests.florence.yml +++ b/.github/workflows/tests.florence.yml @@ -1,6 +1,14 @@ name: Unit tests - Florence -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.florent.yml b/.github/workflows/tests.florent.yml index 64c8d1b391f..7b02ca086f7 100644 --- a/.github/workflows/tests.florent.yml +++ b/.github/workflows/tests.florent.yml @@ -1,6 +1,14 @@ name: Unit tests - Florent -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.holmes.yml b/.github/workflows/tests.holmes.yml index b1519c2d66d..f55f24e1345 100644 --- a/.github/workflows/tests.holmes.yml +++ b/.github/workflows/tests.holmes.yml @@ -1,6 +1,14 @@ name: Unit tests - Holmes -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.hortensia.yml b/.github/workflows/tests.hortensia.yml index dd849ab16a9..947ff55efcf 100644 --- a/.github/workflows/tests.hortensia.yml +++ b/.github/workflows/tests.hortensia.yml @@ -1,6 +1,14 @@ name: Unit tests - Hortensia -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.huey.yml b/.github/workflows/tests.huey.yml index 8348d99f12d..08ecf4e0785 100644 --- a/.github/workflows/tests.huey.yml +++ b/.github/workflows/tests.huey.yml @@ -1,6 +1,14 @@ name: Unit tests - Huey -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.hugo.yml b/.github/workflows/tests.hugo.yml index 1af252376b7..e86d0edbfa3 100644 --- a/.github/workflows/tests.hugo.yml +++ b/.github/workflows/tests.hugo.yml @@ -1,6 +1,14 @@ name: Unit tests - Hugo -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.jaeger.yml b/.github/workflows/tests.jaeger.yml index ad15d3d7a86..815fa4a23ce 100644 --- a/.github/workflows/tests.jaeger.yml +++ b/.github/workflows/tests.jaeger.yml @@ -1,6 +1,14 @@ name: Unit tests - Jaeger -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository @@ -23,7 +31,7 @@ jobs: env: CI: true - name: Install peer & test dependencies - run: "cd packages/jaeger && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" + run: "cd packages/jaeger && npm install @freesewing/core@^2.17.4 @freesewing/plugin-bundle@^2.17.4 @freesewing/brian@^2.17.4 @freesewing/bent@^2.17.4 @freesewing/plugin-buttons@^2.17.4 @freesewing/plugin-mirror@^2.17.4 @freesewing/models@2.17.4 @freesewing/pattern-info@2.17.4 mocha chai" env: CI: true - name: Build pattern diff --git a/.github/workflows/tests.legend.yml b/.github/workflows/tests.legend.yml index 5c00555482c..7091b2f56d9 100644 --- a/.github/workflows/tests.legend.yml +++ b/.github/workflows/tests.legend.yml @@ -1,6 +1,14 @@ name: Unit tests - Legend -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.paco.yml b/.github/workflows/tests.paco.yml index 486f29f69d2..cf074c7fdc2 100644 --- a/.github/workflows/tests.paco.yml +++ b/.github/workflows/tests.paco.yml @@ -1,6 +1,14 @@ name: Unit tests - Paco -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.penelope.yml b/.github/workflows/tests.penelope.yml index 882025ecfcd..de6dcabdc23 100644 --- a/.github/workflows/tests.penelope.yml +++ b/.github/workflows/tests.penelope.yml @@ -1,6 +1,14 @@ name: Unit tests - Penelope -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.rendertest.yml b/.github/workflows/tests.rendertest.yml index 92c97c3719c..7fd94e60392 100644 --- a/.github/workflows/tests.rendertest.yml +++ b/.github/workflows/tests.rendertest.yml @@ -1,6 +1,14 @@ name: Unit tests - Rendertest -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.sandy.yml b/.github/workflows/tests.sandy.yml index b6a6e8b278d..8c3d589c1fd 100644 --- a/.github/workflows/tests.sandy.yml +++ b/.github/workflows/tests.sandy.yml @@ -1,6 +1,14 @@ name: Unit tests - Sandy -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.shin.yml b/.github/workflows/tests.shin.yml index 69721014fc8..8bd82e63260 100644 --- a/.github/workflows/tests.shin.yml +++ b/.github/workflows/tests.shin.yml @@ -1,6 +1,14 @@ name: Unit tests - Shin -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.simon.yml b/.github/workflows/tests.simon.yml index 3d7aa2b7d19..a4612cd055d 100644 --- a/.github/workflows/tests.simon.yml +++ b/.github/workflows/tests.simon.yml @@ -1,6 +1,14 @@ name: Unit tests - Simon -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.simone.yml b/.github/workflows/tests.simone.yml index 33957ae35aa..c658be9a2ed 100644 --- a/.github/workflows/tests.simone.yml +++ b/.github/workflows/tests.simone.yml @@ -1,6 +1,14 @@ name: Unit tests - Simone -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.sven.yml b/.github/workflows/tests.sven.yml index 4e71fa795aa..f91db92a786 100644 --- a/.github/workflows/tests.sven.yml +++ b/.github/workflows/tests.sven.yml @@ -1,6 +1,14 @@ name: Unit tests - Sven -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.tamiko.yml b/.github/workflows/tests.tamiko.yml index d9b39e46313..3e9c52fd0ff 100644 --- a/.github/workflows/tests.tamiko.yml +++ b/.github/workflows/tests.tamiko.yml @@ -1,6 +1,14 @@ name: Unit tests - Tamiko -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.teagan.yml b/.github/workflows/tests.teagan.yml index e95924397ca..a5f820a4c98 100644 --- a/.github/workflows/tests.teagan.yml +++ b/.github/workflows/tests.teagan.yml @@ -1,6 +1,14 @@ name: Unit tests - Teagan -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.theo.yml b/.github/workflows/tests.theo.yml index be8d5d8b08f..0265c86e9bf 100644 --- a/.github/workflows/tests.theo.yml +++ b/.github/workflows/tests.theo.yml @@ -1,6 +1,14 @@ name: Unit tests - Theo -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.titan.yml b/.github/workflows/tests.titan.yml index 885c0fbeb82..954a56b7642 100644 --- a/.github/workflows/tests.titan.yml +++ b/.github/workflows/tests.titan.yml @@ -1,6 +1,14 @@ name: Unit tests - Titan -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.trayvon.yml b/.github/workflows/tests.trayvon.yml index bc97d0e7880..be43f2222ab 100644 --- a/.github/workflows/tests.trayvon.yml +++ b/.github/workflows/tests.trayvon.yml @@ -1,6 +1,14 @@ name: Unit tests - Trayvon -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.tutorial.yml b/.github/workflows/tests.tutorial.yml index 441b3c4f94c..00be89a135b 100644 --- a/.github/workflows/tests.tutorial.yml +++ b/.github/workflows/tests.tutorial.yml @@ -1,6 +1,14 @@ name: Unit tests - Tutorial -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.ursula.yml b/.github/workflows/tests.ursula.yml index 1bf914327f0..f2e6cec15ac 100644 --- a/.github/workflows/tests.ursula.yml +++ b/.github/workflows/tests.ursula.yml @@ -1,6 +1,14 @@ name: Unit tests - Ursula -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.wahid.yml b/.github/workflows/tests.wahid.yml index 79c5af5f1b1..27335f9d12f 100644 --- a/.github/workflows/tests.wahid.yml +++ b/.github/workflows/tests.wahid.yml @@ -1,6 +1,14 @@ name: Unit tests - Wahid -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/.github/workflows/tests.waralee.yml b/.github/workflows/tests.waralee.yml index 1cdcbff507f..cbbb9b37b1f 100644 --- a/.github/workflows/tests.waralee.yml +++ b/.github/workflows/tests.waralee.yml @@ -1,6 +1,14 @@ name: Unit tests - Waralee -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] steps: - name: Checkout repository diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 188049801b9..c415c8480d8 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -65,13 +65,16 @@ carlita: '@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 charlie: peer: + '@freesewing/plugin-bartack': *freesewing '@freesewing/plugin-mirror': *freesewing '@freesewing/titan': *freesewing css-theme: @@ -137,7 +140,7 @@ create-freesewing-pattern: diana: peer: '@freesewing/brian': *freesewing -example: +examples: peer: '@freesewing/plugin-mirror': *freesewing '@freesewing/plugin-bartack': *freesewing @@ -164,6 +167,7 @@ jaeger: '@freesewing/brian': *freesewing '@freesewing/bent': *freesewing '@freesewing/plugin-buttons': *freesewing + '@freesewing/plugin-mirror': *freesewing models: peer: '@freesewing/utils': *freesewing @@ -208,6 +212,18 @@ simone: '@freesewing/plugin-buttons': *freesewing '@freesewing/plugin-flip': *freesewing '@freesewing/plugin-bust': *freesewing +strapi: + _: + strapi: &strapi '3.6.5' + strapi-admin: *strapi + strapi-utils: *strapi + strapi-plugin-content-type-builder: *strapi + strapi-plugin-content-manager: *strapi + strapi-plugin-users-permissions: *strapi + strapi-plugin-email: *strapi + strapi-plugin-upload: *strapi + strapi-plugin-i18n: *strapi + strapi-connector-mongoose: *strapi sven: peer: '@freesewing/brian': *freesewing diff --git a/config/descriptions.yaml b/config/descriptions.yaml index 074d8db53e5..fe59986ea9f 100644 --- a/config/descriptions.yaml +++ b/config/descriptions.yaml @@ -19,6 +19,9 @@ diana: 'A FreeSewing pattern for a top with a draped neck' examples: 'A FreeSewing pattern holding examples for our documentation' florent: 'A FreeSewing pattern for a flat cap' florence: 'A FreeSewing pattern for a face mask' +freesewing.org: 'fixme' +freesewing.dev: 'fixme' +freesewing.shared: 'fixme' gatsby-remark-jargon: 'A gatsby-transformer-remark sub-plugin for jargon terms' holmes: 'A FreeSewing pattern for a Sherlock Holmes hat' hortensia: 'A FreeSewing pattern for a handbag' @@ -62,6 +65,7 @@ sandy: 'A FreeSewing pattern for a circle skirt' shin: 'A FreeSewing pattern for swim trunks' simon: 'A FreeSewing pattern for a button down shirt' simone: 'A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)' +strapi: "Freesewing's Strapi instance" sven: 'A FreeSewing pattern for a straightforward sweater' tamiko: 'A FreeSewing pattern for a zero-waste top' theo: 'A FreeSewing pattern for classic trousers' @@ -73,6 +77,3 @@ ursula: 'A FreeSewing pattern for a basic, highly-customizable underwear pattern utils: 'A collection of utilities shared across freesewing projects' wahid: 'A FreeSewing pattern for a classic fitted waistcoat' waralee: 'A FreeSewing pattern for wrap pants' -freesewing.org: 'fixme' -freesewing.dev: 'fixme' -freesewing.shared: 'fixme' diff --git a/config/exceptions.yaml b/config/exceptions.yaml index 45e0621acd9..b605ad64f2a 100644 --- a/config/exceptions.yaml +++ b/config/exceptions.yaml @@ -11,6 +11,9 @@ customRollup: - remark-jargon - utils - prettier-config + - strapi + - freesewing.dev + - freesewing.org namedExports: - css-theme - models @@ -57,6 +60,10 @@ packageJson: css-theme: main: dist/theme.css module: '!' + freesewing.dev: + private: true + freesewing.org: + private: true holmes: author: AlfaLyr (https://github.com/alfalyr) i18n: @@ -82,6 +89,17 @@ packageJson: - package.json sandy: author: AlfaLyr (https://github.com/alfalyr) + strapi: + private: true + scripts: + develop: strapi develop + start: strapi start + build: strapi build + strapi: strapi + homepage: "https://posts.freesewing.org/" + files: [] + publishConfig: {} + rollup: {} utils: # react-scripts doesn't handle .mjs files correctly module: '!' diff --git a/config/templates/workflows/tests.pattern.yml b/config/templates/workflows/tests.pattern.yml index 1c36196c468..f2bc3cf612d 100644 --- a/config/templates/workflows/tests.pattern.yml +++ b/config/templates/workflows/tests.pattern.yml @@ -1,6 +1,14 @@ name: Unit tests - {{ Pattern }} -on: [pull_request] +on: + push: + branches: + - develop + - main + pull_request: + branches: + - develop + - main jobs: test: @@ -9,7 +17,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [14.x] {{=<% %>=}} steps: diff --git a/markdown/newsletter/2021q2/en.md b/markdown/newsletter/2021q2/en.md deleted file mode 100644 index 337a34e7831..00000000000 --- a/markdown/newsletter/2021q2/en.md +++ /dev/null @@ -1,408 +0,0 @@ -Welcome to the 2021 Spring edition of the FreeSewing newsletter. -Here's what we have included for you: - -- 👕 Pattern releases winter 2021 (1-minute read - by Joost) -- 🕵️ Behind the seams: Wouter van Wageningen (9-minute read - by An & Wouter) -- 🔍 Spotlight on some lesser-know FreeSewing features (3-minute read - by Joost) -- 🤯 Some of the more crazy ideas on our drawing board (3-minute read - by Joost) -- ❤️ FreeSewing is brought to you by the kindness of strangers (5-minute read by Joost) - -We hope you enjoy it. -If not, mash that reply button and tell us what you'd like to read instead ¯\\\_(ツ)\_/¯ - -  - -  - - - -# 👕 Pattern releases winter 2021 - -Here's a quick recap of the new patterns we released in the first quarter of this year: - - - [The Bella bodice block for womenswear](https://freesewing.org/blog/bella-bodice-block/): A collaboration with somebody from the industry to replicate the kind of bodice block that's used in fashion today. Currently it has a bust dart towards the side-seam. A variation with a shoulder dart is on our todo list. - - [The Hortensia handbag](https://freesewing.org/blog/announcing-hortensia/): Another collaboration, this time between Stofsuchti and long-time contributor Wouter Van Wageningen brought the first handbag pattern to FreeSewing. - - [The Cornelius cycling breeches](https://freesewing.org/blog/cornelius-cycling-breeches/): More from Wouter still, these cycling breeches or knickerbockers are based on the Keystone drafting method. - -Click through any of the links for the blog posts announcing these patterns. - - -  - ---- - -  - -# 🕵️ Behind the seams: Wouter van Wageningen - -> *With two pattern releases to his name in the last 3 months,* -> *who better to shine a spotlight on than long time contributor Wouter.* -> -> *An — one of our newer contributors — interviewed him for this newsletter:* - -## Bio - -Born in the Netherlands and lived there for 30 years before moving to “the States”. -He accompanied his American wife when she wanted to return and has been living there for -over 20 years. He now considers it his home, while recognizing all the emotional ties to -The Netherlands when he goes back to visit. - -While a busy IT manager, he likes to create new patterns for FreeSewing from time to time. - -## How did you learn about freesewing? - -When I started sewing many years ago, I was continuously looking for patterns for men. -The site of Joost, Makemypattern (since late 2012), came up in one of my searches, and -I thought it was an interesting concept. - -## How did you become a contributor? - -In the beginning, there were no contributors other than Joost, that I remember. He had -made this framework that allowed other people to make patterns that could be incorporated. -Being a programmer, as a professional and hobbyist, this intrigued me. The originally site -was created in the PHP programming language, one I had not worked with before. I thought -this made for an interesting challenge to contribute to the work of Joost. - -As this was my first experience with the toolset, the language, and making patterns, -I picked something as easy as [a bow tie](https://freesewing.org/designs/benjamin/). -It is a simple object, as it is flat with a width and a height, but no real depth. -Therefore, I didn’t have to try to shape a piece of fabric around a 3D shape. The result passed the muster of Joost, and became an official pattern on the site. - -Before finding FreeSewing, I had drawn a pencil skirt for my partner by just using -her measurements. I realized while working on the bow tie that I could try to combine -the experience of making this skirt with that of making the pattern for the bow tie, and -make another pattern for FreeSewing. -Thus, [the Penelope pencil skirt](https://freesewing.org/designs/penelope/) was born. - -## What has been your contributor work so far? - -I have created [the Waralee wrap pants](https://freesewing.org/designs/waralee/), -[Albert apron](https://freesewing.org/designs/albert/), and [Cornelius cycling breeches](https://freesewing.org/designs/cornelius/). -I also did the implementation of [the Hortensia handbag](https://freesewing.org/designs/hortensia/), but that is not my design. I got the drawings and measurements from the designer (Stoffsuchti), and translated those -into a FreeSewing pattern. - -The Benjamin bow tie was totally my own creation, exactly as I imagined what it should look. -The Penelope and Waralee designs were built from the knowledge I gathered by reading about those types of garments, and implementing my interpretation of them. -The Cornelius is actually an implementation of a pattern in an existing drafting system (The "Keystone" System). - -## When and why did you start sewing? - -Seven or eight years ago, I wanted to know what it would be like to wear a kilt. But -kilts are insanely expensive. They are made of very nice wool and it takes an enormous amount of time to make a real Scottish kilt. There are these “utility kilts”, which are basically cargo pants made into a kilt. More -practical with pockets, and made out of cotton, but they still cost around $200. - -Because I was still figuring out whether I would enjoy wearing a kilt, it didn't make much sense to me to invest that much. While researching this I found [a website dedicated to people wearing kilts](http://www.xmarksthescot.com/), and it had a documented process on how to create your own utility kilt. -I did have a sewing machine, it seemed within my abilities, so I bought some fabric and started sewing. -One kilt became two, and then I figured I needed a shirt to go along with it. It should be somewhat -contemporary to old kilts. With a little searching I found a pattern to make such a shirt. And that led to making more and more shirts, and then pants and... - -At one point I decided that I wasn't going to buy any more clothes, I was just going to make them. -One exception to that are underwear and socks, as these don’t give me much pleasure in making them, and are usually ridiculously cheap. I have knitted a pair of socks, and I like knitting a lot. I just don't seem to be able to knit fast enough to keep up with the wear and tear. -The other exception is athletic or technical clothing, as I just cannot buy the fabrics (e.g. eVent) you need for it. -These are exclusively sold to vendors of this type of clothing. I have recently made some yoga pants and biking shorts for myself, so this may change. - -## What is your daily job, outside of freesewing? - -IT manager. I take care of the IT needs for a union of homecare workers. - -## What are you currently working on? - -Nothing for FreeSewing at the moment, but I am looking into the possibility to make a pattern based -on the trouser block. That way, I don't have to start from scratch as I usually do, and just extend -Joost's work. I'm looking forward to trying this approach, but I first have to complete my doublet. - -## Which project did you just finish? - -The [Cornelius cycling breeches](https://freesewing.org/designs/cornelius/) and the implementation of [the Hortensia handbag](https://freesewing.org/designs/hortensia/). - -## What sewing project are you most proud of? - -I'm proud of a lot of projects; my first shirt (even though it has a lot of faults), my first tailored coat, all of my art shirts, … -But if I had to pick one, it would probably be [my Mondrian shirt](https://shirtartistry.blog/2019/01/23/mondrian-shirt-the-beginning/). It was the one where I went all the way from a concept in my mind, though creating it on paper, to turning it into a garment. - -## What in your life are you most proud of? - -Everybody will answer that with something like 'my children'. And I am proud of the persons they've become. -But I think that is more something they have done, than what I have done. I was just there to help -them when needed. One of the things I've done that I'm proud of is having been a volunteer firefighter for 10 years. -And, for the last 20 years or so, I've worked for nonprofits trying to make the world a better place. - -## What do you love the most about sewing? - -The creativity. I like to make things. I discovered that with sewing, in contrast to things like wood or metal working, I can be really precise. And I can find the patience in myself to create that precision. -What’s more, if I make a mistake, I can usually undo it (e.g. take the seam out). It's a lot harder to take things apart once you've glued them together. -I also like that I can make something that is a flat drawing on a piece of paper into something that is a -real three dimensional thing, by turning those patterns into pieces of fabric and sewing them together. -Even the trail and error process to adapt a pattern to my needs, or to create a new pattern from scratch, is interesting to me. It's a discovery journey with practical outcomes. -And, although I'm not good at all of the required skills, I can do most of them well enough that I can go from something in my head to something that I can wear, and that is very satisfying. - -## What do you hate the most about sewing? - -I am a bit too impatient to do large parts of sewing by hand, and that is my least favorable part of sewing. The occasional basting is fine, it is the sewing of a full seam by hand that is beyond me. -I have made buttonholes by hand on my tailored jacket, and that was satisfying by itself. Yet it takes too much time -and it doesn't fascinate me enough to allow me to become good at it. It'll most likely take a long time before I’ll do it again. For some reason I don't mind doing the pad stitching for lapels and such on tailored jackets. - -## What’s the hardest part of sewing to you? - -It is nearly impossible for me to draw the mental picture that is in my head on a piece of paper. I'm really -bad at drawing free form. Because of this, I cannot, not even temporarily, put the end result of a certain clothing design on a piece of paper to look at it. And therefore I cannot get someone else’s opinion or input on it -before I create it. It is frustrating. - -## What would be your advice for starting sewists/sewistas? - -First of all, go for it and concentrate on the parts of the sewing process you enjoy. Look at the big -picture of creating a garment for yourself, and let that motivate you to get through the parts you -don't like so much. - -Secondly, just keep going and don’t look at things that didn't work out so well too much. Everything -takes practice, and you will get better at it. Break up things into smaller parts and think about -what you can do to improve that one part. Maybe there's a different way to do this step that works -better for you. - -Lastly, don’t be intimidated by patterns. Try different patterns, designers, and techniques. Pick out what works for you. All designers have their own way of doing certain things, and they may not always align with your strengths and weeknesses. I always -do a zipper fly the same way, regardless of what the designer suggested. My way works for me and -gives me good results. Others may prefer other techniques, so find your own by trying a lot of different ways. - -And most of all; enjoy the process of creating. The end product is an additinal benefit. Through the enjoyment of the process, you will gain the experience to get good at it. And with that, you will get the garments you like. - -## Are you married? - -Not anymore, after 25 years we amicably split up. I have a new partner now. - -## Do you have children? - -Five in total, two adult children of myself and three almost adults of my partner. - -## Are you a dog person or a cat person? - -I am a dog person, but I don’t have a dog anymore. - -## Do you have pets? - -I have had three dogs. I would enjoy having a dog, but my current life style and freedom to travel does not match up with having one. - -## If there was one thing you could take with you to an uninhibited island what would it be? Why? - -A knife, because it seems to be the most useful item to help me survive. - -## If there was one person you could take with you to an uninhibited island, who would it be? Why? - -Nobody, since I could not forgive myself for putting someone else through the same ordeal. -I love what thousands of years of society has brought us, and I don't want to be without its fruits. So it would be cruel for me to subject someone else to this punishment. - - -  - ---- - -  - - -# 🔍 Spotlight on some lesser-know FreeSewing features - -Regardless of whether you've only recently discovered FreeSewing, or have been a user for many years, here are some things you might not have discovered on your own: - -## Multilingualism - -FreeSewing is available in 5 languages, each with their own website. In addition to [English at freesewing.org](https://freesewing.org/), we have websites in [French](https://fr.freesewing.org/), [German](https://de.freesewing.org/), [Dutch](https://nl.freesewing.org/), and [Spanish](https://es.freesewing.org/). - -If you'd like to help us add more languages, [get in touch](https://discord.freesewing.org/). -## Paperless patterns - -Not a fan of printing and sticking pages together? Or perhaps you don't have a printer? Don't despair, because FreeSewing provides **paperless patterns**. - -You'll find the **paperless** option under the **Pattern options**. Flick it on and now you'll have dimensions as well as a grid in either metric or imperial so you can transfer your pattern directly to fabric or another medium like pattern paper. - -## Custom layout/tiler - -Laying out the different pattern parts on your pattern happens automatically. But alas, it's one of those things that computers are far worse at that humans. Often you can save a bunch of pages by squishing things together yourself. If only you could, right? - -Turns out you can. Simply **Export** your pattern as **SVG** and fire up **Inkscape** (which you can [download for free](https://inkscape.org/)). - -When you open the pattern in Inkscape, the entire pattern will be in a *group*, so first thing to do is to **select** it and **right-click** and choose **ungroup**. Now you can rotate and flip each part around and arrange them just as you like. When you're happy, click **File** -> **Document properties** and choose **Resize page to content**. - -When you're done, save the SVG and upload it to our custom tiler: https://tiler.freesewing.org/ -There you can upload the SVG and pick your page size, and you'll get a PDF just like on the website. Only this time, with your own layout 👍 - -## Remove details from a pattern - -This option was originally intended for laser cutters, but has other uses too. - -For this, you'll have to enable so-called **Expert mode**. Under **Pattern options**, click **Expert mode** and set it to **Show**. -Now, you'll have the **Advanced** option under which you'll find **Detail**. If you set it to **Hide**, your pattern will not only show the outline of the different pattern parts. - -This is also handy for when you are making doll clothes as the titles, logo, and size box end up being taking up more space than the pattern itself. - -## Include only certain pattern parts - -Since we've unlocked **Expert mode**, here's another tip you mightn't be aware of: the **Contents** option. This option allows you to not draft the entire pattern, but only those parts that you want. - -This can be handy if you want to make a change to a pattern and only print those parts that are affected. But also if you want to combine different styles. For example you can generate a complete Simon pattern, and then additional collar or cuff styles where only the collar/cuffs are included in the pattern. - -Got an idea for some other cool feature you'd like to see? Make sure to [let us know](https://discord.freesewing.org/). - - -  - ---- - -  - - -# 🤯 Some of the more crazy ideas on our drawing board - -We're rarely stuck for things to do, because some work is never finished: adding more patterns, writing more or better documentation, improving user experience, and so on. - -But sometimes, we also like to shoot the breeze and come up with some ideas that are a bit off the beaten path. Here's a selection of them that we've been mulling over. Don't consider it a sneak preview though, some of these are bona fide moonshots: - -## Allowing users to create their own pattern layouts on the site - -The pattern layout — the way the individual pattern pieces are laid out on the page — seems like the low-hanging fruit of improvements. Almost without exception, your pattern will not be the most optimal layout. - -Thing is, computers are not very good at this sort of spacial problem that's called *packing*. We could try to tweak the algorithm, but human beings are just intuitively better at it than computers are. - -**The goal** -To make it possible (and ideally easy) for people to do their own layout. So that before you export your pattern, you have the option to arrange it just as you like it. - -**What it would take** -This is something that's been on the drawing board for quite some time. FreeSewing core already has support for custom layouts, so it's really *just* a matter of creating the frontend interface to handle the layouting. - -**Roadblocks** -Doing the SVG layout on mobile is a minefield. - -**Chances of this happening** -High. We're almost certainly going to do this at some point. - -## Using 3D renders to showcase patterns or options - -3D in general is something we have our eye on, but in this case it's really about presenting the patterns to the user. People want to know what they're going to get, and line drawings and showcases can only go so far to show that. - -The idea would be to be able to show patterns on a 3D avatar. However, a big caveat is that we would have to be able to somehow automate this process since we can't go manually creating a 3D render of every pattern & option. - -**The goal** -Create 3D renders of different patterns and the effect of pattern options. Integrating this with our build pipeline so those renders can be auto-generated. - -**What it would take** -Some work has been done already. Last year we wrote a DXF-exporter plugin that can export patterns as DXF, a popular format in 3D tools. We did some initial tests with CLO3D but the lack of automation options not to mention the fact that it's a closed-source commercial product made us abandon that path. - -The right thing to do would be using Blender so that this work would benefit the open source community. - -**Roadblocks** -Blender is not that easy to learn. Automation and plugins in Blender need to be written in Python, and we're a JavaScript project. Basically, we have nobody who knows how to even start on this today. - -**Chances of this happening** -Medium. Could really use some help on this. - -## Frankenstein patterns - -The name *Frankenstein pattern* is something that came up during one of our contributor calls, and the name sort of stuck. The idea is that you could mix and match parts from different patterns to create your own combinations. Like, pick a top and combine it with the sleeves from another top and perhaps the collar from yet another top. - -**The goal** -Allow patterns to be created by combining different building blocks. - -**Roadblocks** -This would require some sort of inter-pattern API or interface specification. - -**Chances of this happening** -Low. For pattern developers, combining parts from different patterns is already possible via inheritance. Exposing this sort of functionality to the user level would already be a significant challenge. But doing it in a way that requires no code and merely some clicking around is pretty far out there. - - -  - ---- - -  - - -# ❤️ FreeSewing is brought to you by the kindness of strangers - -On April 5th 2011, a Tuesday of all days, I published a sewing pattern on my blog. -BXR-M01A was a pattern for boxer briefs that came in one size only, and was free to download under a Creative Commons license. - -It was also the very first pattern I ever published. - -The event as such doesn’t deserve much attention, but it just happens to have occurred 10 years ago — almost to the day. -So it seemed a good starting point for a brief history of how we got from there to here. - -## The Early Days - -I started drafting my own sewing patterns because I had fitting issues with store-bought ones. -Drafting my own patterns held the promise of flawless fit with just a bit of effort (Oh, how naive I was!). -The fiddling about with paper had me bored in no time, so I set out to try to automate that part of the process. -I came up with a way to reduce the pattern to a number of steps, and abstract away the measurements. -Now, you could feed it whatever measurements you wanted, and it would re-draft the pattern for you. - -I launched the beta version of my little pattern machine in February of 2012. -It wasn’t an immediate success. -As a matter of fact, to the best of my knowledge, only one person ever tested it. -That person was Nico in Copenhagen (who I've sadly lost track of) who wrote: - -> *That is sooo cool.* -> *I will enter my thoughts about your project using your feed back thingy on the pattern web site.* -> *But you should know that the overall fit is amazing! I think I have a new favourite pattern :-)* - -## makemypattern.com - -One good review is perhaps not much to go on, but I found it rather encouraging and set out to walk this path a bit further. -Fast-forward six months and I’d rewritten the thing from scratch, and with four patterns available officially launched makemypattern.com in September of 2012. - -Things sort of trickled along as I added a pattern every now and then. -Then, in January 2014 I got an email from Tin Doan in Canada asking how they could donate to the site. -I sort of expected this to be some sort of scam, but I still answered the email asking “Are you for real?”. Tin answered: - -> *Yes Joost, I'm serious. Please kindly accept $200.00 from me.* - -Sure enough, I soon found myself at the receiving end of a $200 donation. -To this day, it remains the highest amount I've ever received in a single donation. - -This unexpected yet very tangible token of support felt like a fork in the road. -I'd been happy building this thing mostly as a learning experience. -Now it felt like perhaps it needed a bit more devotion and care. - -In retrospect, this point probably marks the end of my social life 😂 good thing I had found a partner by now (phew). - -## Pivot to Open Source and freesewing.org - -So of course I rewrote the whole thing — again — into what would turn out to be the last version of makemypattern.com. -By the summer of 2016, five years after my first pattern release, and four years after launching makemypattern.com, -my little hobby project had made a lot of headway, and I found myself at another turning point: -Keep doing what I'm doing, or try to break through the next barrier. - -Up until this point, I had been doing makemypattern.com on my own. -The code wasn’t even available. I wanted to make it into an open source project that people could contribute to. -But I had never started it with that ambition, and it was going to take some serious refactoring -to make it into something that people would be able to wrap their heads around. - -So I did exactly that, and in March 2017 I launched v1.0.0 of freesewing.org. -A new name (and logo) to mark the transition to an open source project. -This was a much more mature release, with a documented API and it led to the first patterns contributed by others. -It also came with a hat I hadn't worn before, open source maintainer. - -## FreeSewing v2.0.0: It's JavaScript Now - -During all this time, the world of frontend development had changed and we could do so much more in a browser. -Rather than picking a bunch of options and getting a pattern in the end, the idea of seeing -the pattern update in your browser as you changed options was — at least in theory — attainable now. - -With that goal in mind, I started over again, this time in JavaScript. -And in August of 2019 v2.0.0 landed on freesewing.org. -A complete rewrite in JavaScript with a new website to boot. - -Since then, I've been able to keep myself from rewriting the entire thing again 🤞 - -## The Family You Choose - -We're getting closer to present time, but there's one more moment that stands out for me, -and that's a blog post from August 2020 where — maybe for the first time — I explicitly asked for help to grow the project. -Since then, a community has developed around FreeSewing that feels more valuable to me than any code I could ever write. - -Motivation is a powerful thing, and I wonder whether FreeSewing would exist today if it wasn't for the full-on enthusiasm of Nico in the early days. -Or whether it would have fizzled out without Tin injecting some rocket fuel in the form of a donation. -Or whether perhaps I would have succumbed to burnout by now if I hadn't found such a great group of people to walk this road with me. - -Speaking of which: There are countless individuals who have contributed to get to where we are today. -I couldn't possible mention them all. But what they have in common is that at one point, they were complete strangers to me, as I was to them. - -It’s the kindness of strangers that brought us here. - -Thank you strangers. diff --git a/markdown/newsletter/2021q3/en.md b/markdown/newsletter/2021q3/en.md deleted file mode 100644 index fe739142be2..00000000000 --- a/markdown/newsletter/2021q3/en.md +++ /dev/null @@ -1,291 +0,0 @@ -Welcome to the 2021 Summer edition of the FreeSewing newsletter. -Here's what we've included for you: - -- 🩲 Pattern releases spring 2021 (1-minute read - by Natalia) -- 👀 Help Sanne test her new bodice block (1-minute read - by Joost) -- 😢 Farewell David: Remembering David Page Coffin (2-minute read - by Joost) -- 🕵️ Behind the seams: An Gargouri (8-minute read - by Eleonore) -- 🤓 Git good: Let’s walk through a simple FreeSewing contribution together (2-minute read - by Natalia) -- ⚡ FreeSewing v2.16: This one's for the developers (1-minute read - by Joost) -- 🤷 Gender inclusivity (3-minute read - by Karen) - -We hope you enjoy it. -If not, mash that reply button and tell us what you'd like to read instead ¯\\\_(ツ)\_/¯ - - -  - -  - -# 🩲 Pattern releases spring 2021 - -Here's a quick recap of the new patterns we released in the second quarter of this year: - - - [The Ursula undies](https://freesewing.org/blog/announcing-ursula/): A highly-customizable underwear pattern with plenty of options to achieve different styles. This is my first pattern design. My hope is that Ursula will help you customize undies with the perfect look and fit for your own body. Interested in making a test pair and helping to refine the pattern? I'd love to chat with you over in the [FreeSewing Discord](https://discord.freesewing.org/). - - [The Charlie Chinos trousers](https://freesewing.org/blog/announcing-charlie/): Joost designed a new trouser pattern that will adapt better to differently shaped bodies. Charlie has 31 options that allow you to configure your trousers so you get them just as you like. - -Click through either of the links for the blog posts announcing these patterns. - -  - ---- - -  - -# 👀 Help Sanne test her new bodice block - -Sanne is working on a bodice block that is based on her own drafting experience and the -techniques she learned. She's hoping to get some feedback from a couple of more testers, -particularly people with larger cup sizes. - -If you'd like to help out, you can [generate your own version of the block online](https://bodice-block-sannek.netlify.app/). - -  - ---- - -  - - -# 😢 Farewell David: Remembering David Page Coffin - -In early May, I received news of the passing of David Page Coffin. David was editor of Threads -Magazine back when animals could talk, and his books on making trousers and shirts adorns my -bookshelves, as I'm sure they do many others. -David was also a friend of FreeSewing, and he reached out to me a couple of years ago to discuss plans -he had for a new book. He wanted to make another book about shirts. Not so much about the basic grunt -work of making a shirt that fits. But more about all the little style variations and creative -embellishments one could add to a shirt to make it into something really special. - -Still, he also felt that somebody who would pick up a book about making shirts would also expect -to, you know, make a shirt from it. So he was wondering whether he could point them to FreeSewing's -Simon pattern instead of having to dedicate a section of the book to the basics. - -I really enjoyed talking to David at length about what he was working on, and his tacit endorsement -felt like a big deal from someone who would have no trouble getting his foot in the door of a -household-brand pattern company. - -Like so many other ideas and good intentions, this one too ended up in the time-deprived *maybe -one day* pile. - -Still, for a brief moment I was allowed to bask in the David's enthusiasm. It is a conversation I will -continue to cherish. And also one that made one thing painfully clear to me: He will be sorely missed. - - -  - ---- - -  - - -# 🕵️ Behind the seams: An Gargouri - -> *When we were discussing what kind of content we would like to create for* -> *the very newsletter you’re reading now, An didn’t have to think long.* -> *She wanted to interview as many contributors as she could, and share* -> *what she found out with you. Why? “I’m just a curious person”, she says.* -> *Which made us curious about her.* - -## How did you learn about FreeSewing? - -I only started sewing last year, so I’m still very much a beginner. -I started out with face masks and when those worked out okay, -I got excited and started on the most complicated dress pattern I could find. -Needless to say, that didn’t turn out great. So I backtracked and started looking for -sewing patterns with accompanying instruction videos. I mean, those are basically -free sewing lessons. Awesome, right? - -That’s how I found the pattern for -the [Bruce boxer briefs](https://freesewing.org/designs/bruce/) with Joost’s -video instructions. And honestly, once you understand how FreeSewing works, -how could you not get hooked? I started entering measurements and watching the magic happen. -I was so impressed that all of this was available for free, that I became a Patron. -Joost sent me an e-mail with a link to [FreeSewing’s Discord](https://discord.freesewing.org/) — -an online platform for community building — and that’s where -I found out about the contributor calls. Being a curious person, the rest is history! - -## How did you become a contributor? - -That happened sort of by accident. Like I said, I’m curious. -I wanted to know all about FreeSewing’s contributor team, so these interviews -were a great way to ask all my nosy questions. Maybe I got a bit carried away. -That [first interview with Wouter](https://freesewing.org/newsletter/2021q2/#%EF%B8%8F-behind-the-seams-wouter-van-wageningen) took -so much time! But I’m also not one to quit when I’ve started something, -so you’ll see more of these interviews in the next editions of the newsletter. -By the way, if anyone would like to be interviewed, I’m here and I can’t wait to hear everything you have to say! - -## What do you enjoy the most about your interviews with contributors? - -I especially love people’s answers to the question what they would take with them to an -uninhabited island. But I’m not giving anything away. You’ll have to wait to read the interviews yourself. - -## What would YOU take with you to an uninhabited island? - -Why didn’t I see this question coming?! I would take one of the books that I never get around to reading. -Let’s see … ‘Making History’ by Stephen Fry. Or wait, is there food on this island? I’m not going to -fish or anything, and I don’t think I’d be good at starting a fire. Maybe I should just take some canned food. -And I’ll need my meds. - -## And if you could take one person? - - -That’s easy. I’d take my husband, Bart. That would solve all my problems, anyway. -Bart will fish and hunt and light a fire. He can do anything. - -## Are you a sewist? A coder? Both? Neither? - -Right now, I’m mostly a sewist. I did try to learn coding 15 years ago. -That’s actually how I met my husband. And then, well, other priorities took over. -I can feel the itch to pick it up again now. FreeSewing has me excited about pattern drafting and coding. -I’d love to find out what I can do if I set my mind to it. - -## What are you working on right now? - -I’m proud to say I’ve just started using patterns without videos again and feeling good about it! -I just made a muslin for a pretty blouse with a cut-out and little buttons, and it’s looking good. -I’m going to have a go at it in my fashion fabric. You know, I’m a princess at heart. -I love girly dresses and blouses, especially those vintage styles with cinched waists. -Those aren’t the best silhouettes for me, though. That’s why I want to learn how to draft my own patterns. -I love the idea of turning 2D pieces into a 3D garment and making it fit my body. -I think that’s a really cool thing about sewing, by the way. -The pattern pieces can look like such a puzzle, but once you start putting it together, it suddenly turns into a garment. - -## Anything you dislike about sewing? - -Honestly? I dislike most of the process other than actually sewing the pieces together. -I also really hate cutting patterns out of fabric. That’s where Bart comes in, usually. -I tend to buy less fabric than I’ll actually need, but Bart is so good at pattern -tetris that he can make almost anything fit onto the fabric. - -## Any advice for fellow sewists? - -Just keep going. It can be so frustrating when things don’t work out the way you’d envisioned. -But you just have to wait for things to ‘click’. And they will, eventually. -I think, Haha! I’m still a beginner myself! - -## Do you sew more for yourself or for others? - -Bart dislikes new things, so if I make him anything, he’ll wait five years before he decides to wear it. -And our son Luc has more clothes than he can wear already. He doesn’t need any more. -So I sew for me. I’m the only one who’s actually grateful for handmade clothes! - -## What do you do outside of FreeSewing? - -Professionally, I’m a management assistant, although I’m not working at the moment. -I’m really proud that I got my bachelor’s degree, even though people said I couldn’t do it. -Clearly I could, and I’m so glad that I pushed through! I’m not sure where I’m headed right -now in my career, but I’m taking this time to organize our home. Nothing Marie Kondo-style, mind you. -I’d be terrible at that. I love having stuff around. But it sure would be nice if all that stuff was a bit more organized. - -## What else do we need to know about you? - -I can be a bit of a bull in a china shop. Forgive me! -I’m impulsive, I’m honest and sometimes I should think twice before I say something. -But it all comes from a good place! - - -  - ---- - -  - - -# 🤓 Git(Hub) Good: Let’s walk through a simple FreeSewing contribution together - -You — yes, you — can contribute to FreeSewing. On the way, you can -learn a little bit about GitHub. Don’t panic. You’ll love it. - -I think the easiest way to get your feet wet is cruising around the documentation -at [FreeSewing.org](https://freesewing.org/) or [FreeSewing.dev](https://freesewing.dev). -Occasionally you’ll find a typo or a broken link, or just an opportunity to phrase something more clearly. - -On [FreeSewing.dev](https://freesewing.dev), you can click on [For Editors](https://freesewing.dev/editors/) -for a friendly reference guide. At time of writing, I did that and tried clicking -the [Common tasks for editors](https://freesewing.dev/howtos/editors/) link at the bottom. -It took me to a *Page not found* message with a sad robot. Yippee!! Let’s fix it. - -First, let’s find the correct link. I know I’m looking for a page called *Common tasks for editors*, -so I click the magnifying glass icon, put “Common tasks for editors” in the search bar and -get this: https://freesewing.dev/editors/howtos. Looks good. - -Then, let’s go back to the *For editors* page. Click the pencil icon next to the page title. - -Hey, now we’re in GitHub. Let’s create an account. - -After creating our account, we'll fork the FreeSewing markdown repository, or repo. -The repo contains a bunch of FreeSewing’s files and the history of changes to those files. - -At this point, we're editing the *For editors* file. We’ll swap out the old link with the -new link we identified, and then propose changes. Let’s give the proposal a nice title and description. - -Time to submit a pull request! Now we’re cooking with fire. A pull request, or PR, is a way to -tell FreeSewing that we are proposing a change. In this case we’re saying: "Hi, I found a broken link and I fixed it". - -Finally, someone at FreeSewing will review the PR and say: "Cool, this looks great, -so I’ll accept the change; I’ll *merge* it". That will send you, the author, a brief email, -it’ll be updated in GitHub, and when Joost next deploys the site, typically within a week or so, -you’ll see your contributions live on FreeSewing.org or FreeSewing.dev. Crushed it. - - -  - ---- - -  - - -# ⚡ FreeSewing v2.16: This one's for the developers - -We rolled out FreeSewing 2.16 in May, and a minor version bump typically means a new pattern. -Not this time though, because we've been working hard on updating our development environment -to React 17, CRA 4, and Webpack 5. - -That's great news for (aspiring) developers and pattern designers, as React's new *FAST_REFRESH* -makes everything just so much better. - -There's a lot of work that went into this release, but I also know it's all kinda technical and -under-the-hood stuff. So rather than ramble on about it here, -I will just [point you to the blog post on the matter](https://freesewing.org/blog/react-17/). - - -  - ---- - -  - - -# 🤷 Gender Inclusivity - -A month or two back, some FreeSewing users asked a really great question -on the [Discord](https://chat.freesewing.org/). -What is the goal of having a "womenswear" and "menswear" tag on FreeSewing patterns, -and is it really necessary? While some of our users found the tags helpful for sorting, -others felt alienated by the terminology, or didn't feel like either term represented -them. We thought we could do better, so we've made a few changes. - -**Tags are gone!** 🎉 - -Instead, we now have departments. For the moment, these departments include -Accessories, Bottoms, Tops, Coats & Jackets, Underwear, and Swimwear. -The departments are listed at the top of the [Designs](https://freesewing.org/designs/) page, -along with difficulty ratings and types of patterns (pattern or block). -If you are looking for something in particular, you can use the departments to filter -patterns, then decide what's right for you! - -**Why is this an improvement?** 🤔 - -The old categories on FreeSewing's Designs page, including menswear and womenswear, -were developed based on the types of categories you might find at a clothing shop. -However, we're not a clothing shop. And that's kind of the point. -FreeSewing patterns are made-to-measure because they're meant for everyone. -We think these new departments are a better representation of that. - -These categories were also not visible on the Designs page - you had to do a little more -work to filter patterns. As we add more patterns to FreeSewing, it made sense to add some filters, -so you can more easily find just what you're looking for. - -Thanks to the users who started this discussion and helped make FreeSewing a little better! ♥ - diff --git a/markdown/org/docs/patterns/wahid/cutting/en.md b/markdown/org/docs/patterns/wahid/cutting/en.md index 854d59e0495..01618d2b2dc 100644 --- a/markdown/org/docs/patterns/wahid/cutting/en.md +++ b/markdown/org/docs/patterns/wahid/cutting/en.md @@ -1,15 +1,15 @@ - **Main fabric** - - Cut **2 front(s)** with good sides together - - Cut **2 back(s)** with good sides together - - Cut **2 front facing(s)** with good sides together - - Cut **2 pocket welt(s)** with good sides together - - Cut **2 pocket facing(s)** with good sides together + - Cut **2 front(s)** with _good sides together_ + - Cut **2 back(s)** with _good sides together_ + - Cut **2 front facing(s)** with _good sides together_ + - Cut **2 pocket welt(s)** with _good sides together_ + - Cut **2 pocket facing(s)** with _good sides together_ - **Lining fabric** - - Cut **2 front lining(s)** with good sides together - - Cut **2 back(s)** with good sides together - - Cut **2 pocket bag(s)** with good sides together + - Cut **2 front lining(s)** with _good sides together_ + - Cut **2 back(s)** with _good sides together_ + - Cut **2 pocket bag(s)** with _good sides together_ - **Interfacing** - - Cut **2 front(s)** with good sides together + - Cut **2 front(s)** with _good sides together_ - Cut **2 pocket interfacing(s)** diff --git a/markdown/org/docs/sewing/good-sides-together/en.md b/markdown/org/docs/sewing/good-sides-together/en.md index a946aafba9b..b0f718ce8bc 100644 --- a/markdown/org/docs/sewing/good-sides-together/en.md +++ b/markdown/org/docs/sewing/good-sides-together/en.md @@ -15,7 +15,14 @@ Now mark the pattern piece on the bad side of the fabric, and cut both layers in This gives you two pieces that are mirror images of each other. -> When cutting good sides together, make sure both sides are on grain. + + +##### What if there is not obvious good side? + +When cutting out something without an obvious *good* side (like interfacing), +what matters is that you cut two mirrored pieces, rather than two identical ones. + + ## Sewing with good sides together diff --git a/packages/aaron/rollup.config.js b/packages/aaron/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/aaron/rollup.config.js +++ b/packages/aaron/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/albert/rollup.config.js b/packages/albert/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/albert/rollup.config.js +++ b/packages/albert/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/bella/rollup.config.js b/packages/bella/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/bella/rollup.config.js +++ b/packages/bella/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/benjamin/rollup.config.js b/packages/benjamin/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/benjamin/rollup.config.js +++ b/packages/benjamin/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/benjamin/src/bow2.js b/packages/benjamin/src/bow2.js index d5a2e690343..a76760a5789 100644 --- a/packages/benjamin/src/bow2.js +++ b/packages/benjamin/src/bow2.js @@ -1,16 +1,6 @@ export default function (part) { - let { - options, - Point, - points, - Path, - paths, - complete, - macro, - sa, - store, - paperless, - } = part.shorthand() + let { options, Point, points, Path, paths, complete, macro, sa, store, paperless } = + part.shorthand() if (!options.adjustmentRibbon) { part.render = false diff --git a/packages/benjamin/src/bow3.js b/packages/benjamin/src/bow3.js index 8bc09f4ffa0..a6120d67224 100644 --- a/packages/benjamin/src/bow3.js +++ b/packages/benjamin/src/bow3.js @@ -1,16 +1,6 @@ export default function (part) { - let { - options, - Point, - points, - Path, - paths, - complete, - macro, - sa, - store, - paperless, - } = part.shorthand() + let { options, Point, points, Path, paths, complete, macro, sa, store, paperless } = + part.shorthand() if (!options.adjustmentRibbon) { part.render = false diff --git a/packages/benjamin/src/ribbon.js b/packages/benjamin/src/ribbon.js index 40a8b59064e..7b005ef5a37 100644 --- a/packages/benjamin/src/ribbon.js +++ b/packages/benjamin/src/ribbon.js @@ -1,17 +1,6 @@ export default function (part) { - let { - Point, - Path, - measurements, - store, - options, - complete, - macro, - points, - paths, - sa, - paperless, - } = part.shorthand() + let { Point, Path, measurements, store, options, complete, macro, points, paths, sa, paperless } = + part.shorthand() if (options.adjustmentRibbon) { part.render = false diff --git a/packages/bent/config/index.js b/packages/bent/config/index.js index dc915ae5f6a..b484127d523 100644 --- a/packages/bent/config/index.js +++ b/packages/bent/config/index.js @@ -19,7 +19,7 @@ export default { 'sleeveLengthBonus', 'sleeveBend', ], - style: [ 's3Collar', 's3Armhole' ], + style: ['s3Collar', 's3Armhole'], advanced: [ 'acrossBackFactor', 'armholeDepthFactor', diff --git a/packages/bent/rollup.config.js b/packages/bent/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/bent/rollup.config.js +++ b/packages/bent/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/breanna/rollup.config.js b/packages/breanna/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/breanna/rollup.config.js +++ b/packages/breanna/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/brian/config/index.js b/packages/brian/config/index.js index 72e73f4ed97..8bbf04abd22 100644 --- a/packages/brian/config/index.js +++ b/packages/brian/config/index.js @@ -18,7 +18,7 @@ export default { 'lengthBonus', 'sleeveLengthBonus', ], - style: [ 's3Collar', 's3Armhole' ], + style: ['s3Collar', 's3Armhole'], advanced: [ 'acrossBackFactor', 'armholeDepthFactor', diff --git a/packages/brian/rollup.config.js b/packages/brian/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/brian/rollup.config.js +++ b/packages/brian/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/brian/src/back.js b/packages/brian/src/back.js index eb938ba6eac..32723b0e199 100644 --- a/packages/brian/src/back.js +++ b/packages/brian/src/back.js @@ -14,7 +14,7 @@ export default (part) => { macro, options, Point, - utils + utils, } = part.shorthand() points.anchor = points.hps.clone() @@ -27,8 +27,7 @@ export default (part) => { .move(points.hps) .curve_(points.neckCp2, points.cbNeck) .setRender(false) - } - else if (options.s3Collar > 0) { + } else if (options.s3Collar > 0) { // Shift shoulder seam forward on the collar side points.s3CollarSplit = utils.curveIntersectsY( points.hps, @@ -42,16 +41,15 @@ export default (part) => { ._curve(points.mirroredNeckCp2Front, points.mirroredCfNeckCp1, points.mirroredCfNeck) .split(points.s3CollarSplit)[0] .reverse() - .join(new Path() - .move(points.hps) - .curve_(points.neckCp2, points.cbNeck) - ) + .join(new Path().move(points.hps).curve_(points.neckCp2, points.cbNeck)) .setRender(false) - } - else if (options.s3Collar < 0) { + } else if (options.s3Collar < 0) { // Shift shoulder seam backward on the collar side points.s3CollarSplit = utils.curveIntersectsY( - points.hps, points.neckCp2, points.cbNeck, points.cbNeck, + points.hps, + points.neckCp2, + points.cbNeck, + points.cbNeck, store.get('s3CollarMaxBack') * -1 * options.s3Collar ) paths.backCollar = new Path() @@ -67,8 +65,7 @@ export default (part) => { .move(points.armholePitch) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .setRender(false) - } - else if (options.s3Armhole > 0) { + } else if (options.s3Armhole > 0) { // Shift shoulder seam forward on the armhole side points.s3ArmholeSplit = utils.curveIntersectsY( points.shoulder, @@ -80,14 +77,18 @@ export default (part) => { paths.backArmhole = new Path() .move(points.armholePitch) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) - .join(new Path() - .move(points.shoulder) - .curve(points.mirroredShoulderCp1, points.mirroredFrontArmholePitchCp2, points.mirroredFrontArmholePitch) - .split(points.s3ArmholeSplit)[0] + .join( + new Path() + .move(points.shoulder) + .curve( + points.mirroredShoulderCp1, + points.mirroredFrontArmholePitchCp2, + points.mirroredFrontArmholePitch + ) + .split(points.s3ArmholeSplit)[0] ) .setRender(false) - } - else if (options.s3Armhole < 0) { + } else if (options.s3Armhole < 0) { // Shift shoulder seam backward on the armhole side points.s3ArmholeSplit = utils.curveIntersectsY( points.shoulder, diff --git a/packages/brian/src/base.js b/packages/brian/src/base.js index 94f2bbb38c7..87a70a52c5a 100644 --- a/packages/brian/src/base.js +++ b/packages/brian/src/base.js @@ -13,7 +13,7 @@ export default (part) => { paths, utils, complete, - macro + macro, } = part.shorthand() store.set('shoulderEase', (measurements.shoulderToShoulder * options.shoulderEase) / 2) @@ -129,7 +129,7 @@ export default (part) => { */ // Front armhole is a bit deeper, add those points let deeper = measurements.chest * options.frontArmholeDeeper - for (const p of ['','Cp1','Cp2']) { + for (const p of ['', 'Cp1', 'Cp2']) { points[`frontArmholePitch${p}`] = points[`armholePitch${p}`].shift(180, deeper) } // Add points needed for the mirrored front&back neck/armhole path @@ -145,14 +145,14 @@ export default (part) => { points.frontArmholePitchCp2, points.shoulderCp1, ], - clone: true + clone: true, }) // How much space do we have to work with here? // s3 = ShoulderSeamShift - store.set('s3CollarMaxFront', points.hps.dy(points.cfNeck)/2) - store.set('s3CollarMaxBack', points.hps.dy(points.cbNeck)/2) - store.set('s3ArmholeMax', points.shoulder.dy(points.frontArmholePitch)/4) + store.set('s3CollarMaxFront', points.hps.dy(points.cfNeck) / 2) + store.set('s3CollarMaxBack', points.hps.dy(points.cbNeck) / 2) + store.set('s3ArmholeMax', points.shoulder.dy(points.frontArmholePitch) / 4) // Let's leave the actual splitting the curves for the front/back parts // Complete pattern? diff --git a/packages/brian/src/front.js b/packages/brian/src/front.js index a771ad1e5f1..cb57818967f 100644 --- a/packages/brian/src/front.js +++ b/packages/brian/src/front.js @@ -15,7 +15,7 @@ export default (part) => { complete, paperless, macro, - utils + utils, } = part.shorthand() // Re-use points for deeper armhole at the front @@ -31,11 +31,13 @@ export default (part) => { .move(points.hps) .curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck) .setRender(false) - } - else if (options.s3Collar > 0) { + } else if (options.s3Collar > 0) { // Shift shoulder seam forward on the collar side points.s3CollarSplit = utils.curveIntersectsY( - points.hps, points.neckCp2Front, points.cfNeckCp1, points.cfNeck, + points.hps, + points.neckCp2Front, + points.cfNeckCp1, + points.cfNeck, store.get('s3CollarMaxFront') * options.s3Collar ) paths.frontCollar = new Path() @@ -43,11 +45,13 @@ export default (part) => { .curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck) .split(points.s3CollarSplit)[1] .setRender(false) - } - else if (options.s3Collar < 0) { + } else if (options.s3Collar < 0) { // Shift shoulder seam backward on the collar side points.s3CollarSplit = utils.curveIntersectsY( - points.mirroredCbNeck, points.mirroredCbNeck, points.mirroredNeckCp2, points.hps, + points.mirroredCbNeck, + points.mirroredCbNeck, + points.mirroredNeckCp2, + points.hps, store.get('s3CollarMaxBack') * options.s3Collar ) paths.frontCollar = new Path() @@ -55,10 +59,7 @@ export default (part) => { .curve_(points.mirroredNeckCp2, points.mirroredCbNeck) .split(points.s3CollarSplit)[0] .reverse() - .join(new Path() - .move(points.hps) - .curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck) - ) + .join(new Path().move(points.hps).curve(points.neckCp2Front, points.cfNeckCp1, points.cfNeck)) .setRender(false) } if (options.s3Armhole === 0) { @@ -67,8 +68,7 @@ export default (part) => { .move(points.armholePitch) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .setRender(false) - } - else if (options.s3Armhole > 0) { + } else if (options.s3Armhole > 0) { // Shift shoulder seam forward on the armhole side points.s3ArmholeSplit = utils.curveIntersectsY( points.shoulder, @@ -82,8 +82,7 @@ export default (part) => { .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) .split(points.s3ArmholeSplit)[0] .setRender(false) - } - else if (options.s3Armhole < 0) { + } else if (options.s3Armhole < 0) { // Shift shoulder seam forward on the armhole side points.s3ArmholeSplit = utils.curveIntersectsY( points.shoulder, @@ -95,10 +94,15 @@ export default (part) => { paths.frontArmhole = new Path() .move(points.armholePitch) .curve(points.armholePitchCp2, points.shoulderCp1, points.shoulder) - .join(new Path() - .move(points.shoulder) - .curve(points.mirroredShoulderCp1, points.mirroredFrontArmholePitchCp2, points.mirroredFrontArmholePitch) - .split(points.s3ArmholeSplit)[0] + .join( + new Path() + .move(points.shoulder) + .curve( + points.mirroredShoulderCp1, + points.mirroredFrontArmholePitchCp2, + points.mirroredFrontArmholePitch + ) + .split(points.s3ArmholeSplit)[0] ) .setRender(false) } diff --git a/packages/bruce/rollup.config.js b/packages/bruce/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/bruce/rollup.config.js +++ b/packages/bruce/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/bruce/src/inset.js b/packages/bruce/src/inset.js index cd62594eec5..7d13a6a6c03 100644 --- a/packages/bruce/src/inset.js +++ b/packages/bruce/src/inset.js @@ -1,19 +1,8 @@ import init from './init' export default function (part) { - let { - store, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - Snippet, - snippets, - } = part.shorthand() + let { store, sa, Point, points, Path, paths, complete, paperless, macro, Snippet, snippets } = + part.shorthand() // Initialize init(part) diff --git a/packages/carlita/config/index.js b/packages/carlita/config/index.js index bf7cb5192fb..8c509961d5c 100644 --- a/packages/carlita/config/index.js +++ b/packages/carlita/config/index.js @@ -47,7 +47,14 @@ export default { 'innerPocketDepth', 'innerPocketWeltHeight', ], - style: ['beltWidth', 'buttonSpacingHorizontal', 'cuffLength', 'length', 's3Collar', 's3Armhole'], + style: [ + 'beltWidth', + 'buttonSpacingHorizontal', + 'cuffLength', + 'length', + 's3Collar', + 's3Armhole', + ], collar: ['collarHeight', 'collarSpread', 'collarFlare'], }, measurements: [ diff --git a/packages/carlita/package.json b/packages/carlita/package.json index b16fb4a89ab..2a282a5a0a5 100644 --- a/packages/carlita/package.json +++ b/packages/carlita/package.json @@ -40,7 +40,8 @@ "@freesewing/bent": "^2.17.4", "@freesewing/carlton": "^2.17.4", "@freesewing/plugin-bust": "^2.17.4", - "@freesewing/plugin-buttons": "^2.17.4" + "@freesewing/plugin-buttons": "^2.17.4", + "@freesewing/plugin-mirror": "^2.17.4" }, "dependencies": {}, "devDependencies": { diff --git a/packages/carlita/rollup.config.js b/packages/carlita/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/carlita/rollup.config.js +++ b/packages/carlita/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/carlita/src/front.js b/packages/carlita/src/front.js index e15c98dd373..01bd1416589 100644 --- a/packages/carlita/src/front.js +++ b/packages/carlita/src/front.js @@ -241,7 +241,7 @@ export default function (part) { // Clean up for (let i in paths) { - if (['frontArmhole','frontCollar'].indexOf(i) === -1) delete paths[i] + if (['frontArmhole', 'frontCollar'].indexOf(i) === -1) delete paths[i] } for (let i in snippets) delete snippets[i] diff --git a/packages/carlita/src/side.js b/packages/carlita/src/side.js index c7809bfba34..7e3bd0ddea6 100644 --- a/packages/carlita/src/side.js +++ b/packages/carlita/src/side.js @@ -1,24 +1,13 @@ export default function (part) { - let { - paperless, - sa, - snippets, - Snippet, - store, - complete, - points, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, snippets, Snippet, store, complete, points, macro, Point, paths, Path } = + part.shorthand() // Give points their original names for (let i of store.get('side')) points[i] = points[i + 'Rot2'].clone() // Clean up for (let i in paths) { - if (['frontArmhole','frontCollar'].indexOf(i) === -1) delete paths[i] + if (['frontArmhole', 'frontCollar'].indexOf(i) === -1) delete paths[i] } for (let i in snippets) delete snippets[i] diff --git a/packages/carlton/config/index.js b/packages/carlton/config/index.js index a930a8f6858..7c1feea5310 100644 --- a/packages/carlton/config/index.js +++ b/packages/carlton/config/index.js @@ -46,7 +46,14 @@ export default { 'innerPocketDepth', 'innerPocketWeltHeight', ], - style: ['beltWidth', 'buttonSpacingHorizontal', 'cuffLength', 'length', 's3Collar', 's3Armhole'], + style: [ + 'beltWidth', + 'buttonSpacingHorizontal', + 'cuffLength', + 'length', + 's3Collar', + 's3Armhole', + ], collar: ['collarHeight', 'collarSpread', 'collarFlare'], }, measurements: [ diff --git a/packages/carlton/package.json b/packages/carlton/package.json index d5d8b8ad747..ede1f9433cf 100644 --- a/packages/carlton/package.json +++ b/packages/carlton/package.json @@ -38,7 +38,8 @@ "@freesewing/plugin-bundle": "^2.17.4", "@freesewing/brian": "^2.17.4", "@freesewing/bent": "^2.17.4", - "@freesewing/plugin-buttons": "^2.17.4" + "@freesewing/plugin-buttons": "^2.17.4", + "@freesewing/plugin-mirror": "^2.17.4" }, "dependencies": {}, "devDependencies": { diff --git a/packages/carlton/rollup.config.js b/packages/carlton/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/carlton/rollup.config.js +++ b/packages/carlton/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/carlton/src/back.js b/packages/carlton/src/back.js index 2470af3b3b9..c563c885c89 100644 --- a/packages/carlton/src/back.js +++ b/packages/carlton/src/back.js @@ -60,7 +60,7 @@ export default function (part) { // Clean up for (let i in paths) { - if (['backArmhole','backCollar'].indexOf(i) === -1) delete paths[i] + if (['backArmhole', 'backCollar'].indexOf(i) === -1) delete paths[i] } for (let i in snippets) delete snippets[i] diff --git a/packages/carlton/src/belt.js b/packages/carlton/src/belt.js index bf749a87618..03ed67dd62b 100644 --- a/packages/carlton/src/belt.js +++ b/packages/carlton/src/belt.js @@ -1,17 +1,6 @@ export default function (part) { - let { - paperless, - sa, - snippets, - Snippet, - store, - complete, - points, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, snippets, Snippet, store, complete, points, macro, Point, paths, Path } = + part.shorthand() let length = 1.6 * (store.get('cbToDart') + store.get('dartToSide')) let width = store.get('beltWidth') diff --git a/packages/carlton/src/chestpocketbag.js b/packages/carlton/src/chestpocketbag.js index 5b3a6660100..bc6554a925d 100644 --- a/packages/carlton/src/chestpocketbag.js +++ b/packages/carlton/src/chestpocketbag.js @@ -1,16 +1,6 @@ export default function (part) { - let { - units, - paperless, - sa, - store, - complete, - points, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { units, paperless, sa, store, complete, points, macro, Point, paths, Path } = + part.shorthand() points.topLeft = new Point(0, 0) points.bottomRight = new Point( diff --git a/packages/carlton/src/collarstand.js b/packages/carlton/src/collarstand.js index 326cc128c59..d0c56a30ae2 100644 --- a/packages/carlton/src/collarstand.js +++ b/packages/carlton/src/collarstand.js @@ -1,17 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - measurements, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, measurements, options, macro, Point, paths, Path } = + part.shorthand() let height = measurements.chest * options.collarHeight let length = store.get('frontCollarLength') + store.get('backCollarLength') diff --git a/packages/carlton/src/front.js b/packages/carlton/src/front.js index 0a44d73c7dc..24dce76e215 100644 --- a/packages/carlton/src/front.js +++ b/packages/carlton/src/front.js @@ -202,7 +202,7 @@ export default function (part) { // Clean up for (let i in paths) { - if (['frontArmhole','frontCollar'].indexOf(i) === -1) delete paths[i] + if (['frontArmhole', 'frontCollar'].indexOf(i) === -1) delete paths[i] } for (let i in snippets) delete snippets[i] diff --git a/packages/carlton/src/innerpocketbag.js b/packages/carlton/src/innerpocketbag.js index aacfa3ceec5..45ac361c134 100644 --- a/packages/carlton/src/innerpocketbag.js +++ b/packages/carlton/src/innerpocketbag.js @@ -1,17 +1,6 @@ export default function (part) { - let { - units, - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { units, paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() points.topLeft = new Point(0, 0) points.bottomRight = new Point( diff --git a/packages/carlton/src/pocket.js b/packages/carlton/src/pocket.js index 9baa8b71170..3d07e42a149 100644 --- a/packages/carlton/src/pocket.js +++ b/packages/carlton/src/pocket.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() points.topLeft = new Point(0, 0) points.bottomRight = new Point(store.get('pocketWidth'), store.get('pocketHeight')) diff --git a/packages/carlton/src/pocketflap.js b/packages/carlton/src/pocketflap.js index 406af8cdf8e..4977c5f360c 100644 --- a/packages/carlton/src/pocketflap.js +++ b/packages/carlton/src/pocketflap.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() points.topLeft = new Point(0, 0) points.bottomRight = new Point(store.get('pocketWidth'), store.get('pocketFlapHeight')) diff --git a/packages/carlton/src/pocketlining.js b/packages/carlton/src/pocketlining.js index f531506e04e..d54809f2c3d 100644 --- a/packages/carlton/src/pocketlining.js +++ b/packages/carlton/src/pocketlining.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() points.topLeft = points.bottomLeft.shiftFractionTowards(points.topLeft, 0.75) points.topRight = new Point(points.bottomRight.x, points.topLeft.y) diff --git a/packages/carlton/src/tail.js b/packages/carlton/src/tail.js index cd845792c8b..86bd8125919 100644 --- a/packages/carlton/src/tail.js +++ b/packages/carlton/src/tail.js @@ -1,16 +1,6 @@ export default function (part) { - let { - units, - paperless, - sa, - store, - complete, - points, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { units, paperless, sa, store, complete, points, macro, Point, paths, Path } = + part.shorthand() let length = store.get('waistToHem') - store.get('beltWidth') / 2 diff --git a/packages/carlton/src/undersleeve.js b/packages/carlton/src/undersleeve.js index 097928c17cc..bae16e7607b 100644 --- a/packages/carlton/src/undersleeve.js +++ b/packages/carlton/src/undersleeve.js @@ -1,17 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - measurements, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, measurements, options, macro, Point, paths, Path } = + part.shorthand() // Add cuff let length = measurements.shoulderToWrist * options.cuffLength diff --git a/packages/cathrin/rollup.config.js b/packages/cathrin/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/cathrin/rollup.config.js +++ b/packages/cathrin/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/cathrin/src/panels.js b/packages/cathrin/src/panels.js index 00f8dfed32e..71d8103189e 100644 --- a/packages/cathrin/src/panels.js +++ b/packages/cathrin/src/panels.js @@ -111,9 +111,7 @@ export default function (part) { .curve(points.underbustGap3RightCp, points.waistGap3RightCp1, points.waistGap3Right) .curve(points.waistGap3RightCp2, points.hipsGap3Cp, points.hipsGap3) if (options.panels === '11') paths.panel4.line(points.hipRise) - paths.panel4 - .close() - .attr('class', 'fabric') + paths.panel4.close().attr('class', 'fabric') points.underbustGap4Right = topBack.intersectsX(points.underbustGap4Right.x).pop() points.underbustGap5Left = topBack.intersectsX(points.underbustGap5Left.x).pop() let top5 = topBack.split(points.underbustGap5Left)[1].split(points.underbustGap4Right)[0] diff --git a/packages/charlie/package.json b/packages/charlie/package.json index 97df20c4102..e90a53b3a18 100644 --- a/packages/charlie/package.json +++ b/packages/charlie/package.json @@ -36,6 +36,7 @@ "peerDependencies": { "@freesewing/core": "^2.17.4", "@freesewing/plugin-bundle": "^2.17.4", + "@freesewing/plugin-bartack": "^2.17.4", "@freesewing/plugin-mirror": "^2.17.4", "@freesewing/titan": "^2.17.4" }, diff --git a/packages/charlie/rollup.config.js b/packages/charlie/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/charlie/rollup.config.js +++ b/packages/charlie/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/charlie/src/back-pocket.js b/packages/charlie/src/back-pocket.js index b0871999a17..9beb6ce11fc 100644 --- a/packages/charlie/src/back-pocket.js +++ b/packages/charlie/src/back-pocket.js @@ -1,18 +1,7 @@ export default (part) => { // Shorthand - let { - points, - Point, - paths, - Path, - complete, - paperless, - store, - macro, - snippets, - Snippet, - sa, - } = part.shorthand() + let { points, Point, paths, Path, complete, paperless, store, macro, snippets, Snippet, sa } = + part.shorthand() points.leftNotch = new Point(store.get('backPocketWidth') / -2, 0) points.rightNotch = points.leftNotch.flipX() diff --git a/packages/core/src/path.js b/packages/core/src/path.js index 0dc71650bd4..02e237c32da 100644 --- a/packages/core/src/path.js +++ b/packages/core/src/path.js @@ -429,7 +429,7 @@ Path.prototype.shiftAlong = function (distance, stepsPerMm = 25) { let op = this.ops[i] if (op.type === 'line') { let thisLen = op.to.dist(current) - if (Math.abs((len + thisLen) - distance) < 0.1) return op.to + if (Math.abs(len + thisLen - distance) < 0.1) return op.to if (len + thisLen > distance) return current.shiftTowards(op.to, distance - len) len += thisLen } else if (op.type === 'curve') { @@ -440,8 +440,9 @@ Path.prototype.shiftAlong = function (distance, stepsPerMm = 25) { { x: op.to.x, y: op.to.y } ) let thisLen = bezier.length() - if (Math.abs((len + thisLen) - distance) < 0.1) return op.to - if (len + thisLen > distance) return shiftAlongBezier(distance - len, bezier, thisLen * stepsPerMm) + if (Math.abs(len + thisLen - distance) < 0.1) return op.to + if (len + thisLen > distance) + return shiftAlongBezier(distance - len, bezier, thisLen * stepsPerMm) len += thisLen } current = op.to diff --git a/packages/core/src/utils.js b/packages/core/src/utils.js index 35698c039dd..514b3e5efc0 100644 --- a/packages/core/src/utils.js +++ b/packages/core/src/utils.js @@ -25,10 +25,10 @@ export function beamsIntersect(a1, a2, b1, b2) { if (slopeA === slopeB) return false // Parallel lines // Check for vertical line A - if (Math.round(a1.x*10000) === Math.round(a2.x*10000)) + if (Math.round(a1.x * 10000) === Math.round(a2.x * 10000)) return new Point(a1.x, slopeB * a1.x + (b1.y - slopeB * b1.x)) // Check for vertical line B - else if (Math.round(b1.x*10000) === Math.round(b2.x*10000)) + else if (Math.round(b1.x * 10000) === Math.round(b2.x * 10000)) return new Point(b1.x, slopeA * b1.x + (a1.y - slopeA * a1.x)) else { // Swap points if line A or B goes from right to left diff --git a/packages/cornelius/rollup.config.js b/packages/cornelius/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/cornelius/rollup.config.js +++ b/packages/cornelius/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/cornelius/src/back.js b/packages/cornelius/src/back.js index c38bf404b35..e92a6763a73 100644 --- a/packages/cornelius/src/back.js +++ b/packages/cornelius/src/back.js @@ -173,19 +173,8 @@ function rotateDistanceForP4(part, point, distance, center, origin) { } export default function (part) { - let { - options, - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - store, - paperless, - macro, - } = part.shorthand() + let { options, Path, points, paths, Snippet, snippets, complete, sa, store, paperless, macro } = + part.shorthand() let tempP = null diff --git a/packages/cornelius/src/front.js b/packages/cornelius/src/front.js index bf5fa3e7542..cbbcbdf35c1 100644 --- a/packages/cornelius/src/front.js +++ b/packages/cornelius/src/front.js @@ -1,17 +1,6 @@ export default function (part) { - let { - options, - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - store, - paperless, - macro, - } = part.shorthand() + let { options, Path, points, paths, Snippet, snippets, complete, sa, store, paperless, macro } = + part.shorthand() const cc = 0.551915024494 // circle constant diff --git a/packages/cornelius/src/pocket.js b/packages/cornelius/src/pocket.js index affe9f12894..c48b849f3e0 100644 --- a/packages/cornelius/src/pocket.js +++ b/packages/cornelius/src/pocket.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - store, - paperless, - macro, - } = part.shorthand() + let { Path, points, paths, Snippet, snippets, complete, sa, store, paperless, macro } = + part.shorthand() let halfInch = store.get('halfInch') diff --git a/packages/cornelius/src/pocketfacing.js b/packages/cornelius/src/pocketfacing.js index 842da126d20..9de3916ae79 100644 --- a/packages/cornelius/src/pocketfacing.js +++ b/packages/cornelius/src/pocketfacing.js @@ -1,17 +1,6 @@ export default function (part) { - let { - Path, - Point, - points, - paths, - Snippet, - snippets, - complete, - sa, - store, - paperless, - macro, - } = part.shorthand() + let { Path, Point, points, paths, Snippet, snippets, complete, sa, store, paperless, macro } = + part.shorthand() let halfInch = store.get('halfInch') let waist = store.get('waist') diff --git a/packages/cornelius/src/waistband.js b/packages/cornelius/src/waistband.js index 6bce03b9b11..cf0a9cc9319 100644 --- a/packages/cornelius/src/waistband.js +++ b/packages/cornelius/src/waistband.js @@ -1,17 +1,6 @@ export default function (part) { - let { - Point, - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - store, - paperless, - macro, - } = part.shorthand() + let { Point, Path, points, paths, Snippet, snippets, complete, sa, store, paperless, macro } = + part.shorthand() let halfInch = store.get('halfInch') let waistLength = store.get('frontWaistLength') + store.get('backWaistLength') diff --git a/packages/create-freesewing-pattern/rollup.config.js b/packages/create-freesewing-pattern/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/create-freesewing-pattern/rollup.config.js +++ b/packages/create-freesewing-pattern/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/create-freesewing-pattern/template/freesewing/config/index.js b/packages/create-freesewing-pattern/template/freesewing/config/index.js index 644dc51cbbb..04cf93b401a 100644 --- a/packages/create-freesewing-pattern/template/freesewing/config/index.js +++ b/packages/create-freesewing-pattern/template/freesewing/config/index.js @@ -19,10 +19,10 @@ export default { 'parametric design', '{{type}}', 'sewing', - 'sewing pattern' + 'sewing pattern', ], optionGroups: { - fit: ['size'] + fit: ['size'], }, measurements: [], dependencies: {}, @@ -30,6 +30,6 @@ export default { hide: [], parts: ['box'], options: { - size: { pct: 50, min: 10, max: 100 } - } + size: { pct: 50, min: 10, max: 100 }, + }, } diff --git a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css b/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css index 208bbea881e..a4963e16e55 100644 --- a/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css +++ b/packages/create-freesewing-pattern/template/freesewing/example/src/layout.css @@ -9,81 +9,104 @@ div.layout-wrapper { 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; } + 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; } + 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; } + 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%; } } + width: 63%; + } +} /* slate */ @media (max-width: 1199px) and (min-width: 960px) { div.layout > aside { - width: 298px; } + width: 298px; + } div.layout > section { width: calc(100% - 300px - 4rem); max-width: none; - margin: 0 1rem 0 3rem; } } + margin: 0 1rem 0 3rem; + } +} /* tablet */ @media (max-width: 959px) { div.layout > aside { - width: 218px; } + 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; } } + padding: 0 2rem; + } + div.layout > section div.content { + min-width: inherit; + } +} /* mobile */ @media (max-width: 599px) { div.layout > aside { - display: none; } + display: none; + } div.layout > section { width: calc(100%); margin: 0 auto; padding: 0 1.5rem; - max-width: none; } } + max-width: none; + } +} div.gatsby-highlight { - margin-bottom: 1rem; } + margin-bottom: 1rem; +} @media (max-width: 599px) { #mobile-menu { @@ -97,117 +120,154 @@ div.gatsby-highlight { 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; } + 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); } } + 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; } + background: #f1f3f5; +} .theme-wrapper.dark div.draft-ui-menu, .theme-wrapper.dark div.menu { - background: #343a40; } + background: #343a40; +} .theme-wrapper.show-menu div.menu { opacity: 1; - z-index: 10; } - .theme-wrapper.show-menu div.menu > div { - transform: translate(0px, 0px); } + 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; } + margin: 0 0.5rem 0.5rem 0; +} div.spaced > * { - margin: 0 0.5rem 0.5rem 0; } + margin: 0 0.5rem 0.5rem 0; +} ul#pre-main-menu { margin: 0; - padding: 0; } + padding: 0; +} .boldish { - font-weight: 500; } + font-weight: 500; +} .freesewing.draft { - padding: 1rem; } + padding: 1rem; +} li.action { - clear: both; } + clear: both; +} li.action span.MuiSwitch-root { - float: right; } + 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; } + 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; } + 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; } } + 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; } } + 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; } } + 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/src/box.js b/packages/create-freesewing-pattern/template/freesewing/src/box.js index c8c6f4b07d8..18b3ab1e23b 100644 --- a/packages/create-freesewing-pattern/template/freesewing/src/box.js +++ b/packages/create-freesewing-pattern/template/freesewing/src/box.js @@ -1,17 +1,6 @@ export default function (part) { - const { - options, - Point, - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - paperless, - macro - } = part.shorthand() + 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) @@ -47,12 +36,12 @@ export default function (part) { macro('hd', { from: points.bottomLeft, to: points.bottomRight, - y: points.bottomLeft.y + sa + 15 + y: points.bottomLeft.y + sa + 15, }) macro('vd', { from: points.bottomRight, to: points.topRight, - x: points.topRight.x + sa + 15 + x: points.topRight.x + sa + 15, }) } diff --git a/packages/diana/rollup.config.js b/packages/diana/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/diana/rollup.config.js +++ b/packages/diana/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/examples/package.json b/packages/examples/package.json index 52f5a20a2b6..d3d20fb7b45 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -30,7 +30,10 @@ }, "peerDependencies": { "@freesewing/core": "^2.17.4", - "@freesewing/plugin-bundle": "^2.17.4" + "@freesewing/plugin-bundle": "^2.17.4", + "@freesewing/plugin-mirror": "^2.17.4", + "@freesewing/plugin-bartack": "^2.17.4", + "@freesewing/plugin-buttons": "^2.17.4" }, "dependencies": {}, "devDependencies": { diff --git a/packages/examples/rollup.config.js b/packages/examples/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/examples/rollup.config.js +++ b/packages/examples/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/examples/src/point_dist.js b/packages/examples/src/point_dist.js index 606e6afdd18..0df2430e443 100644 --- a/packages/examples/src/point_dist.js +++ b/packages/examples/src/point_dist.js @@ -1,19 +1,15 @@ export default (part) => { + let { Point, points, Path, paths } = part.shorthand() -let { Point, points, Path, paths } = part.shorthand() + points.from = new Point(10, 10) + points.to = new Point(80, 70) -points.from = new Point(10, 10) -points.to = new Point(80, 70) + points.text = points.from + .shiftFractionTowards(points.to, 0.6) + .attr('data-text', points.from.dist(points.to) + 'mm') + .attr('data-text-class', 'text-sm fill-note center') -points.text = points.from - .shiftFractionTowards(points.to, 0.6) - .attr("data-text", points.from.dist(points.to)+"mm") - .attr("data-text-class", "text-sm fill-note center") - -paths.line = new Path() - .move(points.from) - .line(points.to) - .attr("class", "dashed") + paths.line = new Path().move(points.from).line(points.to).attr('class', 'dashed') -return part + return part } diff --git a/packages/examples/src/point_dx.js b/packages/examples/src/point_dx.js index 9a9cb5d3a06..0b639ce8f63 100644 --- a/packages/examples/src/point_dx.js +++ b/packages/examples/src/point_dx.js @@ -1,32 +1,22 @@ export default (part) => { + let { Point, points, Path, paths } = part.shorthand() -let { Point, points, Path, paths } = part.shorthand() + points.from = new Point(10, 10) + points.to = new Point(80, 70) -points.from = new Point(10, 10) -points.to = new Point(80, 70) - -paths.line = new Path() - .move(points.from) - .line(points.to) - .attr("class", "dashed") + paths.line = new Path().move(points.from).line(points.to).attr('class', 'dashed') -points.totop = points.from.shift(0,points.from.dx(points.to)) + points.totop = points.from.shift(0, points.from.dx(points.to)) -points.text_dx = points.from - .shiftFractionTowards(points.totop, 0.6) - .shiftFractionTowards(points.to,0.1) - .attr("data-text", points.from.dx(points.to)+"mm") - .attr("data-text-class", "text-sm fill-note center") + points.text_dx = points.from + .shiftFractionTowards(points.totop, 0.6) + .shiftFractionTowards(points.to, 0.1) + .attr('data-text', points.from.dx(points.to) + 'mm') + .attr('data-text-class', 'text-sm fill-note center') -paths.line_dx = new Path() - .move(points.from) - .line(points.totop) - .attr("class", "dashed") - -paths.line_dy = new Path() - .move(points.to) - .line(points.totop) - .attr("class", "dashed") - -return part + paths.line_dx = new Path().move(points.from).line(points.totop).attr('class', 'dashed') + + paths.line_dy = new Path().move(points.to).line(points.totop).attr('class', 'dashed') + + return part } diff --git a/packages/examples/src/point_dy.js b/packages/examples/src/point_dy.js index 7f62d3727d5..a9ce9abe939 100644 --- a/packages/examples/src/point_dy.js +++ b/packages/examples/src/point_dy.js @@ -1,31 +1,21 @@ export default (part) => { + let { Point, points, Path, paths } = part.shorthand() -let { Point, points, Path, paths } = part.shorthand() + points.from = new Point(10, 10) + points.to = new Point(80, 70) -points.from = new Point(10, 10) -points.to = new Point(80, 70) - -paths.line = new Path() - .move(points.from) - .line(points.to) - .attr("class", "dashed") + paths.line = new Path().move(points.from).line(points.to).attr('class', 'dashed') -points.totop = points.from.shift(0,points.from.dx(points.to)) + points.totop = points.from.shift(0, points.from.dx(points.to)) -paths.line_dx = new Path() - .move(points.from) - .line(points.totop) - .attr("class", "dashed") + paths.line_dx = new Path().move(points.from).line(points.totop).attr('class', 'dashed') -points.text_dy = points.totop - .shiftFractionTowards(points.to, 0.4) - .attr("data-text", points.from.dy(points.to)+"mm") - .attr("data-text-class", "text-sm fill-note right") - -paths.line_dy = new Path() - .move(points.to) - .line(points.totop) - .attr("class", "dashed") - -return part + points.text_dy = points.totop + .shiftFractionTowards(points.to, 0.4) + .attr('data-text', points.from.dy(points.to) + 'mm') + .attr('data-text-class', 'text-sm fill-note right') + + paths.line_dy = new Path().move(points.to).line(points.totop).attr('class', 'dashed') + + return part } diff --git a/packages/florence/rollup.config.js b/packages/florence/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/florence/rollup.config.js +++ b/packages/florence/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/florent/rollup.config.js b/packages/florent/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/florent/rollup.config.js +++ b/packages/florent/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/florent/src/brimbottom.js b/packages/florent/src/brimbottom.js index 981e936660b..12e7780beb5 100644 --- a/packages/florent/src/brimbottom.js +++ b/packages/florent/src/brimbottom.js @@ -1,17 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - measurements, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path, measurements } = + part.shorthand() let scale = 1 let base = scale * measurements.head * (1 + options.headEase) @@ -60,7 +49,7 @@ export default function (part) { }) macro('sprinkle', { snippet: 'notch', - on: [ 'innerMid', 'outerMid' ] + on: ['innerMid', 'outerMid'], }) if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') diff --git a/packages/florent/src/side.js b/packages/florent/src/side.js index 201aba6a579..ce3e02a2a9a 100644 --- a/packages/florent/src/side.js +++ b/packages/florent/src/side.js @@ -1,5 +1,6 @@ export default function (part) { - let { store, paperless, sa, complete, points, macro, paths, Path, snippets, Snippet } = part.shorthand() + let { store, paperless, sa, complete, points, macro, paths, Path, snippets, Snippet } = + part.shorthand() // Clean up for (let i of Object.keys(paths)) { @@ -38,7 +39,7 @@ export default function (part) { .shiftAlong(store.get('topDistanceToSecondNotch')) macro('sprinkle', { snippet: 'notch', - on: [ 'notch1', 'notch2' ] + on: ['notch1', 'notch2'], }) if (sa) { diff --git a/packages/florent/src/top.js b/packages/florent/src/top.js index 5734c8a56df..0e956f0824f 100644 --- a/packages/florent/src/top.js +++ b/packages/florent/src/top.js @@ -1,17 +1,6 @@ export default function (part) { - let { - paperless, - sa, - points, - macro, - Point, - Path, - paths, - snippets, - Snippet, - complete, - store - } = part.shorthand() + let { paperless, sa, points, macro, Point, Path, paths, snippets, Snippet, complete, store } = + part.shorthand() const fitCap = (part, scale) => { let { points, options, Point, Path, measurements } = part.shorthand() @@ -154,21 +143,24 @@ export default function (part) { macro('miniscale', { at: new Point(points.title.x * 0.75, points.title.y) }) macro('sprinkle', { snippet: 'notch', - on: [ 'midMid', 'backHollow', 'midSide' ] + on: ['midMid', 'backHollow', 'midSide'], }) - store.set('topDistanceToFirstNotch', new Path() - .move(points.backEdge) - .line(points.backSide) - .curve(points.backSideCp1, points.backHollowCp2, points.backHollow) - .length() + store.set( + 'topDistanceToFirstNotch', + new Path() + .move(points.backEdge) + .line(points.backSide) + .curve(points.backSideCp1, points.backHollowCp2, points.backHollow) + .length() ) - store.set('topDistanceToSecondNotch', new Path() - .move(points.backHollow) - .curve(points.backHollowCp1, points.midSideCp2, points.midSide) - .length() + store.get('topDistanceToFirstNotch') + store.set( + 'topDistanceToSecondNotch', + new Path() + .move(points.backHollow) + .curve(points.backHollowCp1, points.midSideCp2, points.midSide) + .length() + store.get('topDistanceToFirstNotch') ) - if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') if (paperless) { diff --git a/packages/holmes/rollup.config.js b/packages/holmes/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/holmes/rollup.config.js +++ b/packages/holmes/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/holmes/src/brim.js b/packages/holmes/src/brim.js index 52dcff0ccb1..ecf3ddf69be 100644 --- a/packages/holmes/src/brim.js +++ b/packages/holmes/src/brim.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - points, - Path, - paths, - measurements, - options, - complete, - sa, - paperless, - macro, - } = part.shorthand() + let { Point, points, Path, paths, measurements, options, complete, sa, paperless, macro } = + part.shorthand() let headRadius = measurements.head / 2 / Math.PI let brimRadius = headRadius / Math.sin((options.brimAngle * Math.PI) / 180) diff --git a/packages/holmes/src/gore.js b/packages/holmes/src/gore.js index ce5592340aa..7dd120e6be1 100644 --- a/packages/holmes/src/gore.js +++ b/packages/holmes/src/gore.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - points, - Path, - paths, - measurements, - options, - macro, - complete, - sa, - paperless, - } = part.shorthand() + let { Point, points, Path, paths, measurements, options, macro, complete, sa, paperless } = + part.shorthand() // Design pattern here diff --git a/packages/hortensia/rollup.config.js b/packages/hortensia/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/hortensia/rollup.config.js +++ b/packages/hortensia/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/hortensia/src/strap.js b/packages/hortensia/src/strap.js index ea3bfc03043..a475ca20668 100644 --- a/packages/hortensia/src/strap.js +++ b/packages/hortensia/src/strap.js @@ -1,16 +1,6 @@ export default function (part) { - let { - store, - options, - Point, - Path, - points, - paths, - complete, - sa, - paperless, - macro, - } = part.shorthand() + let { store, options, Point, Path, points, paths, complete, sa, paperless, macro } = + part.shorthand() let w = options.handleWidth let h = store.get('depth') * options.strapLength diff --git a/packages/huey/rollup.config.js b/packages/huey/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/huey/rollup.config.js +++ b/packages/huey/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/huey/src/back.js b/packages/huey/src/back.js index 58cb8ecbf37..7d5203bd204 100644 --- a/packages/huey/src/back.js +++ b/packages/huey/src/back.js @@ -1,23 +1,12 @@ import { sharedDimensions } from './shared' export default function (part) { - let { - store, - macro, - Path, - Point, - points, - paths, - complete, - paperless, - sa, - options, - measurements, - } = part.shorthand() + let { store, macro, Path, Point, points, paths, complete, paperless, sa, options, measurements } = + part.shorthand() // Clear paths from Brian for (let i in paths) { - if (['backArmhole','backCollar'].indexOf(i) === -1) delete paths[i] + if (['backArmhole', 'backCollar'].indexOf(i) === -1) delete paths[i] } // Shorten body to take ribbing into account diff --git a/packages/huey/src/front.js b/packages/huey/src/front.js index 420ad1a925f..fc6af1a1dbf 100644 --- a/packages/huey/src/front.js +++ b/packages/huey/src/front.js @@ -1,23 +1,12 @@ import { sharedDimensions } from './shared' export default function (part) { - let { - utils, - store, - Point, - Path, - points, - paths, - complete, - paperless, - sa, - options, - measurements, - } = part.shorthand() + let { utils, store, Point, Path, points, paths, complete, paperless, sa, options, measurements } = + part.shorthand() // Clear paths from Brian for (let i in paths) { - if (['frontArmhole','frontCollar'].indexOf(i) === -1) delete paths[i] + if (['frontArmhole', 'frontCollar'].indexOf(i) === -1) delete paths[i] } // Shorten body to take ribbing into account diff --git a/packages/huey/src/pocket.js b/packages/huey/src/pocket.js index 01844cc841e..39b4968a6d3 100644 --- a/packages/huey/src/pocket.js +++ b/packages/huey/src/pocket.js @@ -1,16 +1,6 @@ export default function (part) { - let { - macro, - Path, - points, - paths, - complete, - paperless, - snippets, - Snippet, - sa, - options, - } = part.shorthand() + let { macro, Path, points, paths, complete, paperless, snippets, Snippet, sa, options } = + part.shorthand() if (!options.pocket) return part diff --git a/packages/huey/src/sleeve.js b/packages/huey/src/sleeve.js index f37cad97c1d..5ba55ea92a2 100644 --- a/packages/huey/src/sleeve.js +++ b/packages/huey/src/sleeve.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - Path, - points, - paths, - store, - options, - complete, - sa, - paperless, - macro, - } = part.shorthand() + let { Point, Path, points, paths, store, options, complete, sa, paperless, macro } = + part.shorthand() // Clear paths from Brian, but keep sleevecap for (let p of Object.keys(paths)) { diff --git a/packages/hugo/rollup.config.js b/packages/hugo/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/hugo/rollup.config.js +++ b/packages/hugo/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/hugo/src/cuff.js b/packages/hugo/src/cuff.js index 2e02669730d..0e8afa4660d 100644 --- a/packages/hugo/src/cuff.js +++ b/packages/hugo/src/cuff.js @@ -1,16 +1,6 @@ export default function (part) { - let { - measurements, - options, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - } = part.shorthand() + let { measurements, options, sa, Point, points, Path, paths, complete, paperless, macro } = + part.shorthand() let width = (measurements.hpsToWaistBack + measurements.waistToHips) * options.ribbingHeight * 2 let length = measurements.wrist * (1 + options.cuffEase) * (1 - options.ribbingStretch) diff --git a/packages/hugo/src/hoodcenter.js b/packages/hugo/src/hoodcenter.js index cb05d16fa1f..07fe6ce6be1 100644 --- a/packages/hugo/src/hoodcenter.js +++ b/packages/hugo/src/hoodcenter.js @@ -1,16 +1,6 @@ export default function (part) { - let { - store, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - units, - } = part.shorthand() + let { store, sa, Point, points, Path, paths, complete, paperless, macro, units } = + part.shorthand() let width = store.get('hoodCenterWidth') let length = complete ? width * 2.5 : store.get('hoodCenterLength') diff --git a/packages/hugo/src/waistband.js b/packages/hugo/src/waistband.js index 71106447cd2..b0bc3f269a4 100644 --- a/packages/hugo/src/waistband.js +++ b/packages/hugo/src/waistband.js @@ -1,17 +1,6 @@ export default function (part) { - let { - measurements, - options, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - units, - } = part.shorthand() + let { measurements, options, sa, Point, points, Path, paths, complete, paperless, macro, units } = + part.shorthand() let width = (measurements.hpsToWaistBack + measurements.waistToHips) * options.ribbingHeight * 2 let length = complete diff --git a/packages/i18n/src/locales/de/app.yaml b/packages/i18n/src/locales/de/app.yaml index 4a6651a71f6..524ad25bd00 100644 --- a/packages/i18n/src/locales/de/app.yaml +++ b/packages/i18n/src/locales/de/app.yaml @@ -12,7 +12,7 @@ applyThisLayout: Dieses Layout anwenden areYouSureYouWantToContinue: Bist du sicher, dass du fortfahren möchtest? askForHelp: Nach Hilfe fragen automatic: Automatisch -averagePeopleDoNotExist: "Durchschnittliche Menschen existieren nicht" +averagePeopleDoNotExist: 'Durchschnittliche Menschen existieren nicht' awesome: Großartig back: Rückseite becauseThatWouldBeReallyHelpful: Weil das wirklich hilfreich wäre. @@ -72,7 +72,7 @@ drafts: Entwürfe draftSettings: Entwurfseinstellungen dragAndDropImageHere: Du kannst das Bild hier per Drag-and-Drop ablegen oder es unten manuell auswählen emailAddress: E-Mail-Adresse -emailWorksToo: "Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch" +emailWorksToo: 'Falls du deinen Benutzername nicht weißt: deine E-Mail-Adresse funktioniert auch' enterEmailPickPassword: Gib deine E-Mail Adresse ein und wähle ein Passwort export: Exportieren exportTiledPDF: Exportieren als paginiertes PDF @@ -81,7 +81,7 @@ fieldRemoved: '{field} entfernt' fieldSaved: '{field} gespeichert' filterByPattern: Filtern nach Schnittmuster filterPatterns: Schnittmuster filtern -forgotLoginInstructions: "Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken" +forgotLoginInstructions: 'Wenn du dein Passwort nicht mehr weißt: Benutzername oder E-Mail-Adresse eingeben und den Passwort zurücksetzen Knopf drücken' freesewing: Freesewing freesewingOnGithub: Freesewing auf GitHub github: GitHub @@ -156,7 +156,7 @@ remove: Entfernen removeThing: '{thing} entfernen' reportThisOnGithub: Melde dies auf GitHub requiredMeasurements: Erforderliche Maße -resendActivationEmailMessage: "Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht." +resendActivationEmailMessage: 'Trage die E-Mail-Adresse ein, mit der du dich angemeldet hast, und wir senden dir eine neue Bestätigungsnachricht.' resendActivationEmail: Aktivierungs-E-Mail erneut senden resetPassword: Passwort zurücksetzen reset: Zurücksetzen @@ -198,7 +198,7 @@ twitter: Twitter txt-footer: Freesewing wird erstellt von einer Gemeinschaft von Mitwirkenden
mit der finanziellen Unterstützung unserer Förderer txt-tier2: Unsere Kategorie mit dem demokratischsten Preis. Es ist vielleicht weniger als der Preis eines Lattes, aber deine Unterstützung bedeutet uns sehr viel. txt-tier4: Wähle diese Stufe, und wir senden dir etwas von unserem heiß begehrten Freesewing-Swag nach Hause. Egal, wo in der Welt das auch sein mag. -txt-tier8: "Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!" +txt-tier8: 'Wenn du uns nicht nur unterstützen möchtest, sondern Freesewing zum Gedeihen bringen willst, ist das die Stufe für dich. Außerdem: extra Swag!' txt-tiers: 'FreeSewing wird durch ein freiwilliges Abonnement-Modell unterstützt' unitsInfo: Freesewing unterstützt sowohl das metrische System als auch imperiale Einheiten. Wähle einfach aus, was von beiden du hier verwenden möchtest. (Standardmäßig werden die in deinem Account konfigurierten Einheiten verwendet). updated: Aktualisiert @@ -240,8 +240,8 @@ noPattern: Du hast (noch) keine Schnittmuster. Erstelle ein neues Schnittmuster modelFirst: Beginne damit, Maße hinzuzufügen noModel: Du hast (noch) keine Maße hinzugefügt. FreeSewing kann maßgeschneiderte Schnittmuster erzeugen. Dafür benötigen wir jedoch Maße. noModel2: Das erste, was du tun solltest, ist, eine Person hinzuzufügen und das Maßband auszupacken. -noUserBrowsingTitle: "Du kannst nicht einfach alle Benutzer durchsuchen" -noUserBrowsingText: "Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?" +noUserBrowsingTitle: 'Du kannst nicht einfach alle Benutzer durchsuchen' +noUserBrowsingText: 'Wir haben Tausende von ihnen. Sicher gibt es Interessanteres auf unserer Seite zu tun?' usePatternMeasurements: 'Verwende die Maße des Originalschnittmusters' createReplica: Duplikat erstellen showDetails: Details anzeigen diff --git a/packages/i18n/src/locales/de/email.yaml b/packages/i18n/src/locales/de/email.yaml index e45a2b99161..d5d3bb8d290 100644 --- a/packages/i18n/src/locales/de/email.yaml +++ b/packages/i18n/src/locales/de/email.yaml @@ -3,32 +3,32 @@ chatWithUs: 'Chatte mit uns' emailchangeActionText: 'Bestätige deine neue E-Mail-Adresse' emailchangeCopy1: 'Du hast um die Änderung der E-Mail-Adresse gebeten, die mit deinem Account unter freesewing.org verknüpft ist.

Bevor du dies tust, musst du deine neue E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um dies zu tun:' emailchangeHeaderOpeningLine: 'Wir stellen nur sicher, dass wir dich bei Bedarf erreichen können' -emailchangeHiddenIntro: "Lass uns deine neue E-Mail-Adresse bestätigen" +emailchangeHiddenIntro: 'Lass uns deine neue E-Mail-Adresse bestätigen' emailchangeSubject: 'Bitte bestätige deine neue E-Mail-Adresse' emailchangeTitle: 'Bitte bestätige deine neue E-Mail-Adresse' emailchangeWhy: 'Du hast diese E-Mail erhalten, weil du die mit deinem Konto auf freesewing.org verknüpfte E-Mail-Adresse geändert hast' footerCredits: 'Kreiert von Joost & Mitwirkenden, mit der finanziellen Unterstützung unserer Förderer ❤️ ' footerSlogan: 'Freesewing ist eine Open-Source Plattform für Schnittmuster nach Maß' -goodbyeCopy1: "Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören." +goodbyeCopy1: 'Wenn du uns mitteilen möchtest, warum du uns verlässt, kannst du gerne auf diese Nachricht antworten.
Von unserer Seite aus werden wir dich nicht weiter stören.' goodbyeHeaderOpeningLine: 'Sei dir nur bewusst, dass du jederzeit wiederkommen kannst' goodbyeHiddenIntro: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast' -goodbyeSubject: 'Mach''s gut! 👋' +goodbyeSubject: "Mach's gut! 👋" goodbyeTitle: 'Vielen Dank, dass du Freesewing eine Chance gegeben hast' goodbyeWhy: 'Du hast diese E-Mail als endgültiges Lebewohl erhalten, nachdem du deinen Account auf freesewing.org entfernt hast' joostFromFreesewing: 'Joost von Freesewing' passwordresetActionText: 'Erhalte erneut Zugang zu deinem Account' passwordresetCopy1: 'Du hast dein Passwort für deinen Account bei freesewing.org vergessen.

Klicke auf den folgenden Link, um dein Passwort zurückzusetzen:' -passwordresetHeaderOpeningLine: "Keine Sorge, solche Dinge passieren uns allen" +passwordresetHeaderOpeningLine: 'Keine Sorge, solche Dinge passieren uns allen' passwordresetHiddenIntro: 'Erhalte erneut Zugang zu deinem Account' passwordresetSubject: 'Erhalte erneut Zugang zu deinem Account auf freesewing.org' passwordresetTitle: 'Setze dein Passwort zurück und erhalte erneut Zugang zu deinem Account' passwordresetWhy: 'Du hast diese E-Mail erhalten, weil du die Anfrage gestellt hast, dein Passwort von freesewing.org zurückzusetzen' -questionsJustReply: "Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂" +questionsJustReply: 'Wenn du Fragen hast, antworte einfach auf diese E-Mail. Ich bin immer gerne bereit zu helfen. 🙂' signature: 'Liebe Grüße' signupActionText: 'Bestätige deine E-Mail-Adresse' signupCopy1: 'Danke, dass du dich bei freesewing.org angemeldet hast.

Bevor wir beginnen, musst du deine E-Mail-Adresse bestätigen. Bitte klicke auf den folgenden Link, um das zu tun:' -signupHeaderOpeningLine: "Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst." -signupHiddenIntro: "Lass uns deine E-Mail-Adresse bestätigen" +signupHeaderOpeningLine: 'Wir freuen uns sehr darüber, dass du ein Teil der Freesewing-Community wirst.' +signupHiddenIntro: 'Lass uns deine E-Mail-Adresse bestätigen' signupSubject: 'Willkommen bei freesewing.org' signupTitle: 'Willkommen an Bord' signupWhy: 'Du hast diese E-Mail erhalten, weil du dich gerade auf freesewing.org angemeldet hast' diff --git a/packages/i18n/src/locales/de/intro.yaml b/packages/i18n/src/locales/de/intro.yaml index f06ccb539e8..df396c728b3 100644 --- a/packages/i18n/src/locales/de/intro.yaml +++ b/packages/i18n/src/locales/de/intro.yaml @@ -2,11 +2,11 @@ txt-blog: Neuigkeiten, Updates und Ankündigungen des Freesewing-Teams txt-community: 'Alles wird von freiwilligen Mitwirkenden am Leben erhalten. Es existieren keine kommerziellen Absichten im Zusammenhang mit diesem Projekt.' txt-different: Was uns von anderen unterscheidet -txt-draft: "Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir." +txt-draft: 'Wähle eines deiner Schnittmuster, wähle ein Modell und lege die Optionen fest. Den Rest erledigen wir.' txt-how: So funktioniert es txt-join: Schließe dich Tausenden anderer an und erstelle einen kostenlosen Account auf freesewing.org. txt-model: Alle unsere Schnittmuster werden nach individuellen Maßen gefertigt. Nimm daher zuallererst das Maßband zur Hand. -txt-newHere: "Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:" +txt-newHere: 'Wenn du hier neu bist, ist unsere Demo der beste Startpunkt:' txt-opensource: 'Unsere Plattform, unsere Schnittmuster und sogar diese Website: Unser gesamter Code ist auf GitHub zugänglich. Pull-Requests sind jederzeit herzlich willkommen!' txt-patrons: Freesewing wird durch die finanzielle Unterstützung unserer Förderer überhaupt erst ermöglicht. Scrolle nach unten, um mehr über unser Abonnementmodell zu erfahren. txt-showcase: Abgeschlossene Projekte aus der Freesewing-Community diff --git a/packages/i18n/src/locales/de/welcome.yaml b/packages/i18n/src/locales/de/welcome.yaml index bc5e829937e..871bfac59bd 100644 --- a/packages/i18n/src/locales/de/welcome.yaml +++ b/packages/i18n/src/locales/de/welcome.yaml @@ -6,5 +6,5 @@ bio: Erzähle uns ein wenig über dich social: Lass uns wissen, wo wir dir folgen können newsletter: Teile uns deine Newsletter-Präferenz mit letUsSetupYourAccount: Lassen Sie uns Ihr Konto einrichten. -walkYouThrough: "Wir führen dich durch die folgenden Schritte:" +walkYouThrough: 'Wir führen dich durch die folgenden Schritte:' someOptional: Obwohl alle diese Schritte optional sind, empfehlen wir dir sie durchzugehen, um das Beste aus FreeSewing herauszuholen. diff --git a/packages/i18n/src/locales/es/app.yaml b/packages/i18n/src/locales/es/app.yaml index 7b4ba846823..58786f955b7 100644 --- a/packages/i18n/src/locales/es/app.yaml +++ b/packages/i18n/src/locales/es/app.yaml @@ -12,7 +12,7 @@ applyThisLayout: Aplicar este diseño areYouSureYouWantToContinue: Estás seguro de que quieres continuar? askForHelp: Pide ayuda automatic: Automático -averagePeopleDoNotExist: "La gente promedio no existe" +averagePeopleDoNotExist: 'La gente promedio no existe' awesome: Genial back: Atrás becauseThatWouldBeReallyHelpful: Porque eso sería realmente útil. @@ -72,7 +72,7 @@ drafts: Bocetos draftSettings: Ajustes del boceto dragAndDropImageHere: Arrastra y suelta una imagen aquí, o selecciona una manualmente con el botón de abajo emailAddress: Dirección de correo electrónico -emailWorksToo: "Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará" +emailWorksToo: 'Si no conoces tu nombre de usuario, tu dirección de correo electrónico también funcionará' enterEmailPickPassword: Introduce tu dirección de email y elige una contraseña export: Exportar exportTiledPDF: Exportar PDF paginado @@ -81,7 +81,7 @@ fieldRemoved: '{field} eliminado' fieldSaved: '{field} guardado' filterByPattern: Filtrar por patrón filterPatterns: Filtrar los patrones -forgotLoginInstructions: "Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña" +forgotLoginInstructions: 'Entra tu nombre de usuario o correo electrónico debajo y pulsa el botón de Restablecer contraseña' freesewing: Freesewing freesewingOnGithub: Freesewing en GitHub github: GitHub @@ -117,7 +117,7 @@ addThing: Añadir {thing} newThing: Nuevo {thing} newPatternForModel: 'Nuevo {pattern} para {model}' noChanges: No hay cambios -no: false +no: "no" noPasswordPolicy: No aplicamos una política de contraseña noSeamAllowance: Sin margen de costura notAllOfThisContentIsAvailableInLanguage: No todo este contenido está disponible en español. @@ -216,7 +216,7 @@ whatIsThis: Que es esto withBreasts: Con pechos withoutBreasts: Sin pechos yay: '¡Hurra!' -yes: true +yes: si youAreAPatron: Eres un mecenas youAreNotAPatron: Tu no eres un mecenas youAreNotLoggedIn: No has iniciado sesión diff --git a/packages/i18n/src/locales/es/email.yaml b/packages/i18n/src/locales/es/email.yaml index a4398c50ffc..5d55673244d 100644 --- a/packages/i18n/src/locales/es/email.yaml +++ b/packages/i18n/src/locales/es/email.yaml @@ -3,13 +3,13 @@ chatWithUs: 'Habla con nosotros' emailchangeActionText: 'Confirme su nueva dirección de correo electrónico' emailchangeCopy1: 'Solicitó cambiar la dirección de correo electrónico vinculada a su cuenta en freesewing.org .

Antes de hacerlo, debe confirmar su nueva dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:' emailchangeHeaderOpeningLine: 'Solo asegurándonos de que podamos contactarlo cuando sea necesario' -emailchangeHiddenIntro: "Confirmemos tu nueva dirección de correo electrónico" +emailchangeHiddenIntro: 'Confirmemos tu nueva dirección de correo electrónico' emailchangeSubject: 'Por favor confirme su nueva dirección de correo electrónico' emailchangeTitle: 'Por favor confirme su nueva dirección de correo electrónico' emailchangeWhy: 'Ha recibido este correo electrónico porque ha cambiado la dirección de correo electrónico vinculada a su cuenta en freesewing.org' footerCredits: 'Hecho por joost & contributors con el apoyo financiero de nuestros clientes ❤️ ' footerSlogan: 'Freesewing es una plataforma open source para patrones de costura a medida' -goodbyeCopy1: "Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo." +goodbyeCopy1: 'Si desea compartir por qué se va, puede responder a este mensaje.
Por nuestra parte, no volveremos a molestarlo.' goodbyeHeaderOpeningLine: 'Solo se sabe que siempre se puede volver.' goodbyeHiddenIntro: 'Gracias por darle una oportunidad a freesewing' goodbyeSubject: 'Despedida 👋' @@ -18,17 +18,17 @@ goodbyeWhy: 'Recibió este correo electrónico como último adiós después de e joostFromFreesewing: 'Joost de Freesewing' passwordresetActionText: 'Recupere el acceso a su cuenta' passwordresetCopy1: 'Olvidó su contraseña para su cuenta en freesewing.org .

Haga clic en el enlace de abajo para restablecer su contraseña:' -passwordresetHeaderOpeningLine: "No te preocupes, estas cosas nos pasan a todos." +passwordresetHeaderOpeningLine: 'No te preocupes, estas cosas nos pasan a todos.' passwordresetHiddenIntro: 'Recupere el acceso a su cuenta' passwordresetSubject: 'Recupere el acceso a su cuenta en freesewing.org' passwordresetTitle: 'Restablece tu contraseña y vuelve a obtener acceso a tu cuenta' passwordresetWhy: 'Recibió este correo electrónico porque solicitó restablecer su contraseña en freesewing.org' -questionsJustReply: "Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂" +questionsJustReply: 'Si tiene alguna pregunta, simplemente responda a este correo electrónico. Siempre feliz de ayudar. 🙂' signature: 'Con amor,' signupActionText: 'Confirme su dirección de correo electrónico' signupCopy1: 'Gracias por registrarse en freesewing.org.

Antes de comenzar, debe confirmar su dirección de correo electrónico. Por favor haga clic en el enlace de abajo para hacer eso:' -signupHeaderOpeningLine: "Estamos muy contentos de que te unas a la comunidad de freesewing." -signupHiddenIntro: "Confirmemos tu dirección de correo electrónico" +signupHeaderOpeningLine: 'Estamos muy contentos de que te unas a la comunidad de freesewing.' +signupHiddenIntro: 'Confirmemos tu dirección de correo electrónico' signupSubject: 'Bienvenido a freesewing.org' signupTitle: 'Bienvenido a bordo' signupWhy: 'Recibió este correo electrónico porque acaba de registrarse para una cuenta en freesewing.org' diff --git a/packages/i18n/src/locales/es/intro.yaml b/packages/i18n/src/locales/es/intro.yaml index 603835f3a3a..d5b7d2bb7d9 100644 --- a/packages/i18n/src/locales/es/intro.yaml +++ b/packages/i18n/src/locales/es/intro.yaml @@ -2,11 +2,11 @@ txt-blog: Noticias, actualizaciones y anuncios del equipo de freesewing. txt-community: 'Todo es llevado por colaboradores voluntarios. TNo hay ninguna entidad comercial detrás de, o vinculada a, este proyecto.' txt-different: En qué somos diferentes -txt-draft: "Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto" +txt-draft: 'Elige uno de los patrones, elige un model y elige tus opciones. Nosotros hacemos el resto' txt-how: Cómo funciona txt-join: Únete a miles de personas y regístrate en freesewing.org. txt-model: Todos nuestros patrones son a medida. Así que lo primero que necesitas es un metro. -txt-newHere: "Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:" +txt-newHere: 'Si eres nuevo aquí, el mejor lugar para comenzar es nuestra demostración:' txt-opensource: 'Nuestra plataforma, nuestros patrones e incluso este sitio web. Todo nuestro código está disponible en GitHub. Modificaciones son bienvenidas!' txt-patrons: Freesewing es posible por el apoyo económico de nuestros patrocinadores. Desplácese hacia abajo para conocer nuestro modelo de suscripción. txt-showcase: Proyectos terminados de la comunidad de freesewing diff --git a/packages/i18n/src/locales/es/welcome.yaml b/packages/i18n/src/locales/es/welcome.yaml index dc9cc32c31d..d92b0847bdd 100644 --- a/packages/i18n/src/locales/es/welcome.yaml +++ b/packages/i18n/src/locales/es/welcome.yaml @@ -6,5 +6,5 @@ bio: Cuéntanos un poco acerca de ti social: Háganos saber dónde podemos seguirle newsletter: Danos tu preferencia al boletín de noticias letUsSetupYourAccount: Permítanos configurar su cuenta. -walkYouThrough: "Te guiaremos a través de los siguientes pasos:" +walkYouThrough: 'Te guiaremos a través de los siguientes pasos:' someOptional: Aunque todos estos pasos son opcionales, te recomendamos que los recorras para sacar el máximo provecho de FreeSewing. diff --git a/packages/i18n/src/locales/fr/app.yaml b/packages/i18n/src/locales/fr/app.yaml index 4c375e5e4b1..35329967db6 100644 --- a/packages/i18n/src/locales/fr/app.yaml +++ b/packages/i18n/src/locales/fr/app.yaml @@ -96,7 +96,7 @@ howToTakeMeasurements: Comment prendre les mesures i18n: Internationalisation imperialUnits: Unités impériales (pouces) instagram: Instagram -invalidTldMessage: '.{tld} n''est pas un TLD valide' +invalidTldMessage: ".{tld} n'est pas un TLD valide" joinTheChatMsg: Nous avons une communauté sur Discord avec des amis avec lesquels vous pouvez discuter. justAMoment: Juste un instant layout: Mis en page @@ -179,11 +179,11 @@ shareFreesewing: Partager FreeSewing showcase: Galerie signUpForAFreeAccount: Créer un compte gratuit signUp: S'inscrire -signupWithProvider: 'S''inscrire avec {provider}' +signupWithProvider: "S'inscrire avec {provider}" sortByField: Trier par {field} standardSeamAllowance: Marge de couture standard startOver: Recommencer -startTranslatingNowOrRead: '{startTranslatingNow}, ou lisez d''abord la {documentationForTranslators}.' +startTranslatingNowOrRead: "{startTranslatingNow}, ou lisez d'abord la {documentationForTranslators}." startTranslatingNow: Commencez à traduire maintenant subscribe: Souscrire support: Support @@ -240,9 +240,9 @@ noPattern: Vous n'avez pas (encore) de patrons. Créez un nouveau patron, puis s modelFirst: Commencez par ajouter des mensurations noModel: Vous n'avez pas (encore) ajouté de mesure. FreeSewing peut générer des patrons de couture sur mesure. Mais pour cela, nous avons besoin de mensurations. noModel2: La première chose à faire est donc d'ajouter une personne et de sortir votre mètre-ruban. -noUserBrowsingTitle: "Vous ne pouvez pas simplement parcourir tous les utilisateurs" -noUserBrowsingText: "Nous en avons des milliers. Vous avez certainement autre chose à faire ?" -usePatternMeasurements: 'Utiliser les mesures du patron d''origine' +noUserBrowsingTitle: 'Vous ne pouvez pas simplement parcourir tous les utilisateurs' +noUserBrowsingText: 'Nous en avons des milliers. Vous avez certainement autre chose à faire ?' +usePatternMeasurements: "Utiliser les mesures du patron d'origine" createReplica: Créer une réplique showDetails: Voir les détails hideDetails: Masquer les détails diff --git a/packages/i18n/src/locales/fr/email.yaml b/packages/i18n/src/locales/fr/email.yaml index 8c24d3d8f05..9516a0e51d5 100644 --- a/packages/i18n/src/locales/fr/email.yaml +++ b/packages/i18n/src/locales/fr/email.yaml @@ -1,24 +1,24 @@ --- chatWithUs: 'Discutez avec nous' emailchangeActionText: 'Confirmez votre nouvelle adresse mail' -emailchangeCopy1: 'Vous avez demandé de modifier l''adresse e-mail associée à votre compte sur freesewing.org.

Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S''il vous plaît cliquez sur le lien ci-dessous pour le faire :' +emailchangeCopy1: "Vous avez demandé de modifier l'adresse e-mail associée à votre compte sur freesewing.org.

Avant de procéder, vous devez confirmer votre nouvelle adresse e-mail. S'il vous plaît cliquez sur le lien ci-dessous pour le faire :" emailchangeHeaderOpeningLine: 'Assurez-vous simplement que nous pouvons vous joindre en cas de besoin' -emailchangeHiddenIntro: "Confirmons votre nouvelle adresse e-mail" +emailchangeHiddenIntro: 'Confirmons votre nouvelle adresse e-mail' emailchangeSubject: 'Merci de confirmer votre nouvelle adresse e-mail' emailchangeTitle: 'Merci de confirmer votre nouvelle adresse e-mail' emailchangeWhy: 'Vous avez reçu cet e-mail parce que vous avez changé l''adresse e-mail liée à votre compte sur freesewing.org' footerCredits: 'Réalisé par Joost De Cock et ses contributeurs avec le soutien financier de mécènes ❤️ ' footerSlogan: 'Freesewing est une plate-forme open source pour des patrons de couture sur mesure' -goodbyeCopy1: "Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus." +goodbyeCopy1: 'Si vous souhaitez expliquer pourquoi vous partez, vous pouvez répondre à ce message.
De notre côté, nous ne vous dérangerons plus.' goodbyeHeaderOpeningLine: 'Sachez simplement que vous pouvez toujours revenir' -goodbyeHiddenIntro: 'Merci d''avoir donné une chance à freesewing' +goodbyeHiddenIntro: "Merci d'avoir donné une chance à freesewing" goodbyeSubject: 'Adieu 👋' -goodbyeTitle: 'Merci d''avoir donné une chance à freesewing' -goodbyeWhy: 'Vous avez reçu cet e-mail en guise d''adieu final après la suppression de votre compte sur freesewing.org' +goodbyeTitle: "Merci d'avoir donné une chance à freesewing" +goodbyeWhy: "Vous avez reçu cet e-mail en guise d'adieu final après la suppression de votre compte sur freesewing.org" joostFromFreesewing: 'Joost de Freesewing' passwordresetActionText: 'Re-accéder à votre compte' passwordresetCopy1: 'Vous avez oublié votre mot de passe pour votre compte sur freesewing.org.

Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe:' -passwordresetHeaderOpeningLine: "Ne vous inquiétez pas, ce genre de choses nous arrive à tous" +passwordresetHeaderOpeningLine: 'Ne vous inquiétez pas, ce genre de choses nous arrive à tous' passwordresetHiddenIntro: 'Re-accéder à votre compte' passwordresetSubject: 'Re-accéder à votre compte sur freesewing.org' passwordresetTitle: 'Réinitialisez votre mot de passe et accédez à nouveau à votre compte.' @@ -27,8 +27,8 @@ questionsJustReply: "Si vous avez des questions, répondez simplement à cet e-m signature: 'Bise,' signupActionText: 'Confirmez votre adresse mail' signupCopy1: 'Merci de votre inscription sur freesewing.org.

Avant de commencer, vous devez confirmer votre adresse e-mail. Pour cela veuillez cliquer sur le lien ci-dessous :' -signupHeaderOpeningLine: "Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing." -signupHiddenIntro: "Confirmons votre adresse mail" +signupHeaderOpeningLine: 'Nous sommes vraiment heureux que vous rejoigniez la communauté freesewing.' +signupHiddenIntro: 'Confirmons votre adresse mail' signupSubject: 'Bienvenue sur freesewing.org' signupTitle: 'Bienvenue à bord' signupWhy: 'Vous avez reçu cet e-mail parce que vous venez de créer un compte sur freesewing.org' diff --git a/packages/i18n/src/locales/fr/gdpr.yaml b/packages/i18n/src/locales/fr/gdpr.yaml index 30d54e89559..981ca2af8a8 100644 --- a/packages/i18n/src/locales/fr/gdpr.yaml +++ b/packages/i18n/src/locales/fr/gdpr.yaml @@ -21,10 +21,10 @@ openDataInfo: Ces données sont utilisées pour étudier et comprendre la forme openDataQuestion: Partager des mesures anonymisées sous forme de données ouvertes profileQuestion: Donnez-vous votre consentement pour traiter vos données de profil ? profileShareAnswer: 'Non, jamais.' -profileTimingAnswer: '12 mois après votre dernière connexion ou jusqu''à ce que vous supprimiez votre compte ou révoquiez ce consentement.' +profileTimingAnswer: "12 mois après votre dernière connexion ou jusqu'à ce que vous supprimiez votre compte ou révoquiez ce consentement." profileWarning: Révoquer ce consentement entraînera la suppression de toutes vos données. Cela a exactement le même effet que de supprimer votre compte. profileWhatAnswerOptional: 'Optionnel : une photo de profil, biographie, et comptes de réseaux sociaux' -profileWhatAnswer: 'Votre adresse e-mail, nom d''utilisateuret mot de passe.' +profileWhatAnswer: "Votre adresse e-mail, nom d'utilisateuret mot de passe." profileWhatQuestion: Que sont les données de profil ? profileWhyAnswer: 'Pour vous authentifier , vous contacter lorsque nécessaire, et construire une communauté.' readMore: Pour plus d'informations, veuillez lire notre politique de confidentialité. @@ -34,6 +34,6 @@ shareQuestion: La partageons-nous avec les autres ? timingQuestion: Combien de temps les gardons-nous ? whatYouNeedToKnow: Ce que vous devez savoir whyQuestion: Pourquoi en avons-nous besoin ? -yesIDoObject: 'Oui, je m''y oppose' +yesIDoObject: "Oui, je m'y oppose" yesIDo: 'Oui, je le veux' openData: 'Note : Freesewing publie des mesures rendues anonymes en tant que données libres pour la recherche scientifique. Vous avez le droit de vous y opposer' diff --git a/packages/i18n/src/locales/fr/intro.yaml b/packages/i18n/src/locales/fr/intro.yaml index 8f9c5184199..cddd80f710d 100644 --- a/packages/i18n/src/locales/fr/intro.yaml +++ b/packages/i18n/src/locales/fr/intro.yaml @@ -1,12 +1,12 @@ --- txt-blog: Nouvelles, mises à jour et annonces de l'équipe freesewing -txt-community: 'Tout est géré par des contributeurs bénévoles. Il n''y a pas d''entité commerciale, ou assimilée, derrière ce projet.' +txt-community: "Tout est géré par des contributeurs bénévoles. Il n'y a pas d'entité commerciale, ou assimilée, derrière ce projet." txt-different: Ce en quoi nous sommes différents txt-draft: "Choisissez parmi l'un de vos patrons, choisissez un modèle, et sélectionnez vos options. Nous ferons le reste." txt-how: Comment ça marche txt-join: Rejoignez des milliers d'autres personnes en vous inscrivant gratuitement sur freesewing.org. txt-model: Tous nos patrons sont faits sur mesure, donc la première chose à faire est de vous munir de votre mètre-ruban. -txt-newHere: "Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :" +txt-newHere: 'Si vous êtes nouveau ici, le meilleur endroit pour commencer est notre démo :' txt-opensource: 'Notre plateforme, nos patrons, et même ce site web. Tout notre code est disponible sur GitHub. Les "Pull requests" sont les bienvenues !' txt-patrons: Freesewing existe grâce au soutien financier de nos Mécènes. Faites défiler vers le bas pour en savoir plus sur nos modes de souscription. txt-showcase: Projets terminés de la communauté freesewing diff --git a/packages/i18n/src/locales/fr/welcome.yaml b/packages/i18n/src/locales/fr/welcome.yaml index e1188b57b0f..dac9eae8e3e 100644 --- a/packages/i18n/src/locales/fr/welcome.yaml +++ b/packages/i18n/src/locales/fr/welcome.yaml @@ -6,5 +6,5 @@ bio: Parlez-nous un peu de vous social: Dites-nous où nous pouvons vous suivre newsletter: Donnez-nous votre préférence pour la newsletter letUsSetupYourAccount: Laissez-nous configurer votre compte. -walkYouThrough: "Nous vous guiderons à travers les étapes suivantes :" +walkYouThrough: 'Nous vous guiderons à travers les étapes suivantes :' someOptional: Bien que toutes ces étapes soient facultatives, nous vous recommandons de les passer en revue pour tirer le meilleur parti de FreeSewing. diff --git a/packages/i18n/src/locales/nl/app.yaml b/packages/i18n/src/locales/nl/app.yaml index 0e53f9bbe48..f3e8397972f 100644 --- a/packages/i18n/src/locales/nl/app.yaml +++ b/packages/i18n/src/locales/nl/app.yaml @@ -12,7 +12,7 @@ applyThisLayout: Pas deze layout toe areYouSureYouWantToContinue: Weet je zeker dat je door wilt gaan? askForHelp: Vraag om hulp automatic: Automatisch -averagePeopleDoNotExist: "Gemiddelde mensen bestaan niet" +averagePeopleDoNotExist: 'Gemiddelde mensen bestaan niet' awesome: Super back: Achterzijde becauseThatWouldBeReallyHelpful: Want dat zou ons echt vooruit helpen. @@ -72,7 +72,7 @@ drafts: Patroontekeningen draftSettings: Instellingen patroontekening dragAndDropImageHere: Sleep een afbeelding hierheen of selecteer er handmatig een met de knop hieronder emailAddress: Email adres -emailWorksToo: "Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook" +emailWorksToo: 'Als je je gebruikersnaam niet meer weet, vul dan je email adres in, dat werkt ook' enterEmailPickPassword: Voer je email adres in, en kies een wachtwoord export: Exporteren exportTiledPDF: Gepagineerde PDF exporteren @@ -81,7 +81,7 @@ fieldRemoved: '{field} verwijderd' fieldSaved: '{field} opgeslagen' filterByPattern: Filter op patroon filterPatterns: Patronen filteren -forgotLoginInstructions: "Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop" +forgotLoginInstructions: 'Als je je wachtwoord niet meer weet, vul dan hieronder je gebruikersnaam of email adres in, en klik op de Herstel wachtwoord knop' freesewing: Freesewing freesewingOnGithub: FreeSewing op GitHub github: GitHub @@ -156,7 +156,7 @@ remove: Verwijderen removeThing: '{thing} verwijderen' reportThisOnGithub: Melden via GitHub requiredMeasurements: Vereiste maten -resendActivationEmailMessage: "Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen." +resendActivationEmailMessage: 'Vul het e-mailadres waarmee je je account aangemaakt hebt in en we zullen je een nieuwe bevestigingsmail sturen.' resendActivationEmail: Stuur een nieuwe activatie email resetPassword: Wachtwoord opnieuw instellen reset: Reset @@ -198,7 +198,7 @@ twitter: Twitter txt-footer: FreeSewing is gemaakt door een gemeenschap van bijdragers
met de financiële steun van onze mecenassen txt-tier2: Onze meest democratisch geprijsde optie. Het is minder dan de prijs van een latte, maar jouw steun betekent alles voor ons. txt-tier4: Abonneer je op deze optie en we sturen wat van onze erg gegeerde FreeSewing swag naar je thuis. Waar ook ter wereld dat mag zijn. -txt-tier8: "Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!" +txt-tier8: 'Als je ons niet louter wil steunen, maar FreeSewing wil zien groeien, dan is dit de optie voor jou. Ook: extra swag!' txt-tiers: 'FreeSewing draait op een vrijwillig subscriptiemodel' unitsInfo: FreeSewing ondersteunt zowel het metrieke stelsel als de imperiale eenheden. Kies eenvoudig welke u hier wilt gebruiken. (de standaard is om de eenheden te gebruiken die in uw account zijn geconfigureerd). updated: Bijgewerkt @@ -240,8 +240,8 @@ noPattern: Je hebt (nog) geen patronen. Maak een nieuw patroon, en sla het op in modelFirst: Begin met maten toe te voegen noModel: Je hebt (nog) geen maten toegevoegd. FreeSewing can naaipatronen op maat genereren. Maar daarvoor hebben we maten nodig. noModel2: Dus het eerste dat je zou moeten doen is een persoon toevoegen, en je lintmeter bovenhalen. -noUserBrowsingTitle: "Je kan niet zomaar door alle gebruikers grasduinen" -noUserBrowsingText: "We hebben er duizenden. Je hebt toch wel wat beters te doen?" +noUserBrowsingTitle: 'Je kan niet zomaar door alle gebruikers grasduinen' +noUserBrowsingText: 'We hebben er duizenden. Je hebt toch wel wat beters te doen?' usePatternMeasurements: 'Gebruik de maten van het originele patroon' createReplica: Creëer een replica showDetails: Toon details diff --git a/packages/i18n/src/locales/nl/email.yaml b/packages/i18n/src/locales/nl/email.yaml index d0ea192ffa1..e32dc5fbb8a 100644 --- a/packages/i18n/src/locales/nl/email.yaml +++ b/packages/i18n/src/locales/nl/email.yaml @@ -3,13 +3,13 @@ chatWithUs: 'Chat met ons' emailchangeActionText: 'Bevestig uw nieuwe e-mailadres' emailchangeCopy1: 'U heeft verzocht het e-mailadres dat aan uw account is gekoppeld te wijzigen op freesewing.org .

Voordat we dat doen, moet u uw nieuwe e-mailadres bevestigen. Klik op de onderstaande link om dat te doen:' emailchangeHeaderOpeningLine: 'We zorgen ervoor dat we u kunnen bereiken wanneer dat nodig is' -emailchangeHiddenIntro: "Laten we uw nieuwe e-mailadres bevestigen" +emailchangeHiddenIntro: 'Laten we uw nieuwe e-mailadres bevestigen' emailchangeSubject: 'Bevestig uw nieuwe e-mailadres' emailchangeTitle: 'Bevestig uw nieuwe e-mailadres' emailchangeWhy: 'Je ontving deze e-mail omdat je het e-mailadres hebt gewijzigd dat gekoppeld is aan je account op freesewing.org' footerCredits: 'Gemaakt door joost & vrijwilligers met de financiële steun van onze Patrons ❤️ ' footerSlogan: 'FreeSewing is een open source platform voor naaipatronen op maat' -goodbyeCopy1: "Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen." +goodbyeCopy1: 'Als je wilt delen waarom je vertrekt, kun je dit bericht beantwoorden.
Van onze kant zullen we je niet opnieuw lastig vallen.' goodbyeHeaderOpeningLine: 'Weet gewoon dat je altijd terug kunt komen' goodbyeHiddenIntro: 'Bedankt dat je freesewing.org een kans hebt gegeven' goodbyeSubject: 'Vaarwel 👋' @@ -18,17 +18,17 @@ goodbyeWhy: 'U ontving deze e-mail als een laatste adieu na het verwijderen van joostFromFreesewing: 'Joost van FreeSewing' passwordresetActionText: 'Krijg toegang tot uw account' passwordresetCopy1: 'U bent uw wachtwoord voor uw account vergeten op freesewing.org.

Klik op de onderstaande link om uw wachtwoord opnieuw in te stellen:' -passwordresetHeaderOpeningLine: "Maak je geen zorgen, deze dingen gebeuren met ons allemaal" +passwordresetHeaderOpeningLine: 'Maak je geen zorgen, deze dingen gebeuren met ons allemaal' passwordresetHiddenIntro: 'Krijg toegang tot uw account' passwordresetSubject: 'Krijg toegang tot uw account op freesewing.org' passwordresetTitle: 'Stel uw wachtwoord opnieuw in en verkrijg opnieuw toegang tot uw account' passwordresetWhy: 'U hebt deze e-mail ontvangen omdat u heeft gevraagd om uw wachtwoord opnieuw in te stellen op freesewing.org' -questionsJustReply: "Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂" +questionsJustReply: 'Zit je met vragen? Stuur ze dan als antwoord op deze E-mail. Ik ben steeds bereid om een handje te helpen. 🙂' signature: 'Liefs,' signupActionText: 'Bevestig je E-mail adres' signupCopy1: 'Leuk dat je je hebt ingeschreven op freesewing.org.

Vooraleer we aan de slag kunnen, moeten we eerst je E-mail adres bevestigen. Klik op onderstaande link om dat te doen:' -signupHeaderOpeningLine: "We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap." -signupHiddenIntro: "Nu gewoon nog even je E-mail adres bevestigen" +signupHeaderOpeningLine: 'We zijn verheugd dat je deel wil uitmaken van de freesewing gemeenschap.' +signupHiddenIntro: 'Nu gewoon nog even je E-mail adres bevestigen' signupSubject: 'Welkom bij freesewing.org' signupTitle: 'Welkom aan boord' signupWhy: 'Je ontving deze E-mail omdat je je zonet ingeschreven hebt op freesewing.org' diff --git a/packages/i18n/src/locales/nl/intro.yaml b/packages/i18n/src/locales/nl/intro.yaml index ae0e72839f2..369f1fb82f7 100644 --- a/packages/i18n/src/locales/nl/intro.yaml +++ b/packages/i18n/src/locales/nl/intro.yaml @@ -2,11 +2,11 @@ txt-blog: Nieuws, updates, and mededelingen door het freesewing team txt-community: 'Al het werk word gedaan door vrijwillige medewerkers. Er zijn geen commerciële belangen verbonden aan het project.' txt-different: Hoe we anders zijn -txt-draft: "Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest." +txt-draft: 'Kies één van onze patronen, één van jouw modellen, en kies je opties. Wij doen de rest.' txt-how: Hoe het werkt txt-join: Sluit je aan bij duizenden anderen, en schrijf je gratis in op freesewing.org. txt-model: Al onze patronen zijn op maat gemaakt. Het eerste wat je dus moet doen is je lintmeter bij de hand nemen. -txt-newHere: "Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:" +txt-newHere: 'Ben je hier nieuw? Dan is onze demo de beste plaats om van start te gaan:' txt-opensource: 'Ons platform, al onze patronen, en zelfs deze website. Al onze broncode is beschikbaar op GitHub. Pull requests welkom!' txt-patrons: Freesewing wordt mogelijk gemaakt door de financiële steun van onze mecenassen. Onderaan deze pagina kan je meer lezen over hoe we dit schip drijvende houden. txt-showcase: Bekijk de projecten gemaakt door de freesewing gemeenschap diff --git a/packages/i18n/src/locales/nl/welcome.yaml b/packages/i18n/src/locales/nl/welcome.yaml index 8ac2022dc0f..d89d0b78701 100644 --- a/packages/i18n/src/locales/nl/welcome.yaml +++ b/packages/i18n/src/locales/nl/welcome.yaml @@ -6,5 +6,5 @@ bio: Vertel ons een beetje over jezelf social: Laat ons weten waar we je kunnen volgen newsletter: Geef ons je voorkeur met betrekking tot de nieuwsbrief letUsSetupYourAccount: Laten we je account instellen. -walkYouThrough: "We zullen je door de volgende stappen begeleiden:" +walkYouThrough: 'We zullen je door de volgende stappen begeleiden:' someOptional: Hoewel al deze stappen optioneel zijn, raden we je toch aan alles te doen om het meeste uit FreeSewing te halen. diff --git a/packages/jaeger/package.json b/packages/jaeger/package.json index 73d84f75ed3..03d70b90259 100644 --- a/packages/jaeger/package.json +++ b/packages/jaeger/package.json @@ -38,7 +38,8 @@ "@freesewing/plugin-bundle": "^2.17.4", "@freesewing/brian": "^2.17.4", "@freesewing/bent": "^2.17.4", - "@freesewing/plugin-buttons": "^2.17.4" + "@freesewing/plugin-buttons": "^2.17.4", + "@freesewing/plugin-mirror": "^2.17.4" }, "dependencies": {}, "devDependencies": { diff --git a/packages/jaeger/rollup.config.js b/packages/jaeger/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/jaeger/rollup.config.js +++ b/packages/jaeger/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/jaeger/src/chestpocketbag.js b/packages/jaeger/src/chestpocketbag.js index b9d05faffa8..fbd844318fb 100644 --- a/packages/jaeger/src/chestpocketbag.js +++ b/packages/jaeger/src/chestpocketbag.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() let width = store.get('chestPocketWidth') let welt = store.get('chestPocketWeltHeight') diff --git a/packages/jaeger/src/chestpocketwelt.js b/packages/jaeger/src/chestpocketwelt.js index 1a09fe9188c..92c789f3d00 100644 --- a/packages/jaeger/src/chestpocketwelt.js +++ b/packages/jaeger/src/chestpocketwelt.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() let width = store.get('chestPocketWidth') let height = store.get('chestPocketWeltHeight') diff --git a/packages/jaeger/src/innerpocketbag.js b/packages/jaeger/src/innerpocketbag.js index 668fb8d8f2c..99ea74d23e4 100644 --- a/packages/jaeger/src/innerpocketbag.js +++ b/packages/jaeger/src/innerpocketbag.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() let width = store.get('innerPocketWidth') let welt = store.get('innerPocketWeltHeight') diff --git a/packages/jaeger/src/pocket.js b/packages/jaeger/src/pocket.js index 41d81aa08c6..072706e95df 100644 --- a/packages/jaeger/src/pocket.js +++ b/packages/jaeger/src/pocket.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - store, - complete, - points, - options, - macro, - Point, - paths, - Path, - } = part.shorthand() + let { paperless, sa, store, complete, points, options, macro, Point, paths, Path } = + part.shorthand() let width = store.get('pocketWidth') let depth = store.get('pocketDepth') diff --git a/packages/jaeger/src/topsleeve.js b/packages/jaeger/src/topsleeve.js index 5aa2efe7b30..5066dcb560c 100644 --- a/packages/jaeger/src/topsleeve.js +++ b/packages/jaeger/src/topsleeve.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - utils, - complete, - points, - measurements, - options, - macro, - paths, - Path, - } = part.shorthand() + let { paperless, sa, utils, complete, points, measurements, options, macro, paths, Path } = + part.shorthand() // Vent let slope = 15 diff --git a/packages/jaeger/src/undersleeve.js b/packages/jaeger/src/undersleeve.js index 9b8ec1a1ac3..0f9f64c1b40 100644 --- a/packages/jaeger/src/undersleeve.js +++ b/packages/jaeger/src/undersleeve.js @@ -1,16 +1,6 @@ export default function (part) { - let { - paperless, - sa, - utils, - complete, - points, - measurements, - options, - macro, - paths, - Path, - } = part.shorthand() + let { paperless, sa, utils, complete, points, measurements, options, macro, paths, Path } = + part.shorthand() // Vent let slope = 15 diff --git a/packages/legend/rollup.config.js b/packages/legend/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/legend/rollup.config.js +++ b/packages/legend/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/models/rollup.config.js b/packages/models/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/models/rollup.config.js +++ b/packages/models/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/mui-theme/rollup.config.js b/packages/mui-theme/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/mui-theme/rollup.config.js +++ b/packages/mui-theme/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/paco/rollup.config.js b/packages/paco/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/paco/rollup.config.js +++ b/packages/paco/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/paco/src/back.js b/packages/paco/src/back.js index 1b4f4d67983..909319efde3 100644 --- a/packages/paco/src/back.js +++ b/packages/paco/src/back.js @@ -42,18 +42,8 @@ export default function (part) { } // Shorthand call - let { - store, - sa, - points, - Path, - paths, - options, - measurements, - complete, - paperless, - macro, - } = part.shorthand() + let { store, sa, points, Path, paths, options, measurements, complete, paperless, macro } = + part.shorthand() // Adapt bottom leg width based on heel & heel ease let quarterHeel = (measurements.heel * (1 + options.heelEase) * options.legBalance) / 2 diff --git a/packages/paco/src/cuff.js b/packages/paco/src/cuff.js index d802978b1a0..79e653de26e 100644 --- a/packages/paco/src/cuff.js +++ b/packages/paco/src/cuff.js @@ -1,16 +1,6 @@ export default function (part) { - let { - store, - sa, - Point, - points, - Path, - paths, - options, - complete, - paperless, - macro, - } = part.shorthand() + let { store, sa, Point, points, Path, paths, options, complete, paperless, macro } = + part.shorthand() if (!options.elasticatedHem) { part.render = false return part diff --git a/packages/paco/src/pocketwelt.js b/packages/paco/src/pocketwelt.js index 5fb1e170bfc..daa28288751 100644 --- a/packages/paco/src/pocketwelt.js +++ b/packages/paco/src/pocketwelt.js @@ -1,16 +1,6 @@ export default function (part) { - let { - sa, - Point, - points, - Path, - paths, - snippets, - options, - complete, - paperless, - macro, - } = part.shorthand() + let { sa, Point, points, Path, paths, snippets, options, complete, paperless, macro } = + part.shorthand() // Don't bother of we're not drafting back pockets if (!options.backPockets) { diff --git a/packages/paco/src/waistband.js b/packages/paco/src/waistband.js index 31da4389798..abf2197aa76 100644 --- a/packages/paco/src/waistband.js +++ b/packages/paco/src/waistband.js @@ -1,17 +1,6 @@ export default function (part) { - let { - utils, - store, - sa, - Point, - points, - Path, - paths, - options, - complete, - paperless, - macro, - } = part.shorthand() + let { utils, store, sa, Point, points, Path, paths, options, complete, paperless, macro } = + part.shorthand() points.topLeft = new Point(0, 0) points.midLeft = new Point(0, options.waistbandWidth) diff --git a/packages/pattern-info/rollup.config.js b/packages/pattern-info/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/pattern-info/rollup.config.js +++ b/packages/pattern-info/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/penelope/rollup.config.js b/packages/penelope/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/penelope/rollup.config.js +++ b/packages/penelope/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/penelope/src/shape.js b/packages/penelope/src/shape.js index 803e2c90bb4..dbadddb7e64 100644 --- a/packages/penelope/src/shape.js +++ b/packages/penelope/src/shape.js @@ -1,18 +1,8 @@ import { addDartToCurve, dartCalc } from './utils' function BuildMainShape(part, frontPart) { - let { - sa, - options, - measurements, - Point, - Path, - points, - paths, - store, - paperless, - macro, - } = part.shorthand() + let { sa, options, measurements, Point, Path, points, paths, store, paperless, macro } = + part.shorthand() let skirtLength = measurements.waistToKnee * (1 + options.lengthBonus) // + options.hem; diff --git a/packages/plugin-banner/rollup.config.js b/packages/plugin-banner/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-banner/rollup.config.js +++ b/packages/plugin-banner/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-bartack/rollup.config.js b/packages/plugin-bartack/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-bartack/rollup.config.js +++ b/packages/plugin-bartack/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-bundle/rollup.config.js b/packages/plugin-bundle/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-bundle/rollup.config.js +++ b/packages/plugin-bundle/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-bust/rollup.config.js b/packages/plugin-bust/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-bust/rollup.config.js +++ b/packages/plugin-bust/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-buttons/rollup.config.js b/packages/plugin-buttons/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-buttons/rollup.config.js +++ b/packages/plugin-buttons/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-cutonfold/rollup.config.js b/packages/plugin-cutonfold/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-cutonfold/rollup.config.js +++ b/packages/plugin-cutonfold/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-dimension/rollup.config.js b/packages/plugin-dimension/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-dimension/rollup.config.js +++ b/packages/plugin-dimension/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-export-dxf/rollup.config.js b/packages/plugin-export-dxf/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-export-dxf/rollup.config.js +++ b/packages/plugin-export-dxf/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-flip/rollup.config.js b/packages/plugin-flip/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-flip/rollup.config.js +++ b/packages/plugin-flip/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-gore/rollup.config.js b/packages/plugin-gore/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-gore/rollup.config.js +++ b/packages/plugin-gore/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-grainline/rollup.config.js b/packages/plugin-grainline/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-grainline/rollup.config.js +++ b/packages/plugin-grainline/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-i18n/rollup.config.js b/packages/plugin-i18n/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-i18n/rollup.config.js +++ b/packages/plugin-i18n/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-logo/rollup.config.js b/packages/plugin-logo/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-logo/rollup.config.js +++ b/packages/plugin-logo/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-measurements/rollup.config.js b/packages/plugin-measurements/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-measurements/rollup.config.js +++ b/packages/plugin-measurements/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-mirror/rollup.config.js b/packages/plugin-mirror/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-mirror/rollup.config.js +++ b/packages/plugin-mirror/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-notches/rollup.config.js b/packages/plugin-notches/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-notches/rollup.config.js +++ b/packages/plugin-notches/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-round/rollup.config.js b/packages/plugin-round/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-round/rollup.config.js +++ b/packages/plugin-round/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-scalebox/rollup.config.js b/packages/plugin-scalebox/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-scalebox/rollup.config.js +++ b/packages/plugin-scalebox/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-sprinkle/rollup.config.js b/packages/plugin-sprinkle/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-sprinkle/rollup.config.js +++ b/packages/plugin-sprinkle/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-svgattr/rollup.config.js b/packages/plugin-svgattr/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-svgattr/rollup.config.js +++ b/packages/plugin-svgattr/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-theme/rollup.config.js b/packages/plugin-theme/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-theme/rollup.config.js +++ b/packages/plugin-theme/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-title/rollup.config.js b/packages/plugin-title/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-title/rollup.config.js +++ b/packages/plugin-title/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-validate/rollup.config.js b/packages/plugin-validate/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/plugin-validate/rollup.config.js +++ b/packages/plugin-validate/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/plugin-validate/src/index.js b/packages/plugin-validate/src/index.js index 5d397c0c616..c4009a5b724 100644 --- a/packages/plugin-validate/src/index.js +++ b/packages/plugin-validate/src/index.js @@ -10,8 +10,7 @@ export default { return pattern.debug({ type: 'error', label: '👕 No measurements provided', - msg: - 'You did not provide any measurements. Most, if not all, patterns require measurements, so this is most likely an issue.', + msg: 'You did not provide any measurements. Most, if not all, patterns require measurements, so this is most likely an issue.', }) for (let measurement of pattern.config.measurements) { if (!pattern.settings.measurements[measurement]) { diff --git a/packages/rendertest/rollup.config.js b/packages/rendertest/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/rendertest/rollup.config.js +++ b/packages/rendertest/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/sandy/rollup.config.js b/packages/sandy/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/sandy/rollup.config.js +++ b/packages/sandy/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/shin/rollup.config.js b/packages/shin/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/shin/rollup.config.js +++ b/packages/shin/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/shin/src/waistband.js b/packages/shin/src/waistband.js index 0eaa4b5c59e..9d94ab13a24 100644 --- a/packages/shin/src/waistband.js +++ b/packages/shin/src/waistband.js @@ -1,17 +1,6 @@ export default function (part) { - let { - store, - macro, - Point, - Path, - points, - paths, - complete, - paperless, - sa, - options, - utils, - } = part.shorthand() + let { store, macro, Point, Path, points, paths, complete, paperless, sa, options, utils } = + part.shorthand() let height = options.elasticWidth * 2 points.topLeft = new Point(0, 0) diff --git a/packages/simon/config/index.js b/packages/simon/config/index.js index 127ccce6cd2..4baec799cbc 100644 --- a/packages/simon/config/index.js +++ b/packages/simon/config/index.js @@ -226,7 +226,7 @@ export default { // s3 is short for Shoulder Seam Shift s3Collar: { pct: 0, min: -100, max: 100 }, s3Armhole: { pct: 0, min: -100, max: 100 }, - ffsa: {pct: 150, min: 100, max:200 }, + ffsa: { pct: 150, min: 100, max: 200 }, sleevecapEase: { pct: 0, min: 0, max: 3 }, sleevecapTopFactorX: { pct: 50, min: 25, max: 75 }, sleevecapTopFactorY: { pct: 100, min: 35, max: 165 }, diff --git a/packages/simon/rollup.config.js b/packages/simon/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/simon/rollup.config.js +++ b/packages/simon/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/simon/src/back.js b/packages/simon/src/back.js index bf14c1259a1..a4b3d79f05c 100644 --- a/packages/simon/src/back.js +++ b/packages/simon/src/back.js @@ -77,23 +77,26 @@ export default (part) => { points.hipsCp2 = points.hips.shift(90, points.waist.dy(points.hips) / 4) // Cut off at yoke - const neverAboveCbNeck = () => (points.cbNeck.dy(points.cbYoke) < 10) ? (points.cbYoke.y = points.cbNeck.y + 10) : null + const neverAboveCbNeck = () => + points.cbNeck.dy(points.cbYoke) < 10 ? (points.cbYoke.y = points.cbNeck.y + 10) : null if (options.yokeHeight === 1) { points.cbYoke = new Point(0, points.armholePitch.y) neverAboveCbNeck() points.armholeYokeSplit = points.armholePitch.clone() paths.backArmholeYoke = paths.backArmhole - } - else if (options.yokeHeight === 0) { + } else if (options.yokeHeight === 0) { points.cbYoke = new Point(0, points.s3ArmholeSplit.y) neverAboveCbNeck() points.armholeYokeSplit = points.s3ArmholeSplit.clone() paths.backArmholeBack = paths.backArmhole } else { - points.cbYoke = new Point(0, points.s3ArmholeSplit.y + (points.s3ArmholeSplit.dy(points.armholePitch) * options.yokeHeight)) + points.cbYoke = new Point( + 0, + points.s3ArmholeSplit.y + points.s3ArmholeSplit.dy(points.armholePitch) * options.yokeHeight + ) neverAboveCbNeck() points.armholeYokeSplit = paths.backArmhole.intersectsY(points.cbYoke.y).pop() - const [back,yoke] = paths.backArmhole.split(points.armholeYokeSplit) + const [back, yoke] = paths.backArmhole.split(points.armholeYokeSplit) paths.backArmholeYoke = yoke.setRender(false) paths.backArmholeBack = back.setRender(false) } @@ -103,14 +106,18 @@ export default (part) => { .move(points.armhole) .curve(points.armholeCp2, points.armholeHollowCp1, points.armholeHollow) .curve(points.armholeHollowCp2, points.armholePitchCp1, points.armholePitch) - if (options.yokeHeight < 1 && options.yokeHeight > 0) paths.armhole = paths.armhole.join(paths.backArmholeBack) + if (options.yokeHeight < 1 && options.yokeHeight > 0) + paths.armhole = paths.armhole.join(paths.backArmholeBack) else if (options.yokeHeight === 0) paths.armhole = paths.armhole.join(paths.backArmhole) paths.armhole.render = false if (options.roundBack > 0) { points.cbTop = points.cbYoke.shift(90, points.armholePitch.x * options.roundBack) points.cbTopCp1 = points.cbTop.shift(0, points.armholePitch.x * 0.5) - paths.roundedBack = new Path().move(points.armholeYokeSplit)._curve(points.cbTopCp1, points.cbTop).line(points.cbYoke) + paths.roundedBack = new Path() + .move(points.armholeYokeSplit) + ._curve(points.cbTopCp1, points.cbTop) + .line(points.cbYoke) } // Box pleat @@ -133,12 +140,11 @@ export default (part) => { 'armholeHollowCp1', 'armholeCp2', 'armhole', - 'armholeYokeSplit' + 'armholeYokeSplit', ]) points[p] = points[p].shift(0, options.boxPleatFold * 2) } - // Draft hem switch (options.hemStyle) { case 'baseball': diff --git a/packages/simon/src/collar.js b/packages/simon/src/collar.js index da6b7d3a82a..21524834332 100644 --- a/packages/simon/src/collar.js +++ b/packages/simon/src/collar.js @@ -1,17 +1,6 @@ export default (part) => { - let { - measurements, - utils, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { measurements, utils, sa, Point, points, Path, paths, complete, paperless, macro, options } = + part.shorthand() const draft = function (tweak = 1) { let length = measurements.neck * (1 + options.collarEase - options.collarGap) * tweak diff --git a/packages/simon/src/front.js b/packages/simon/src/front.js index d851a7a59eb..f5861e890db 100644 --- a/packages/simon/src/front.js +++ b/packages/simon/src/front.js @@ -1,19 +1,8 @@ import { calculateReduction } from './shared' export default (part) => { - let { - store, - measurements, - sa, - Point, - points, - Path, - paths, - complete, - macro, - snippets, - options, - } = part.shorthand() + let { store, measurements, sa, Point, points, Path, paths, complete, macro, snippets, options } = + part.shorthand() // Clean up for (let i in paths) { diff --git a/packages/simon/src/frontleft-classic-cuton.js b/packages/simon/src/frontleft-classic-cuton.js index 3a1be7b60d5..0e0625d726d 100644 --- a/packages/simon/src/frontleft-classic-cuton.js +++ b/packages/simon/src/frontleft-classic-cuton.js @@ -1,18 +1,8 @@ import { addButtonHoles } from './shared' export default (part) => { - let { - sa, - Point, - points, - Path, - paths, - snippets, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { sa, Point, points, Path, paths, snippets, complete, paperless, macro, options } = + part.shorthand() let fold = options.buttonholePlacketFoldWidth let width = options.buttonholePlacketWidth diff --git a/packages/simon/src/frontleft-classic-seperate.js b/packages/simon/src/frontleft-classic-seperate.js index 64336b64c86..2b41eb3f258 100644 --- a/packages/simon/src/frontleft-classic-seperate.js +++ b/packages/simon/src/frontleft-classic-seperate.js @@ -1,17 +1,6 @@ export default (part) => { - let { - utils, - sa, - Point, - points, - Path, - paths, - snippets, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { utils, sa, Point, points, Path, paths, snippets, complete, paperless, macro, options } = + part.shorthand() let fold = options.buttonholePlacketFoldWidth points.neckEdge = utils.lineIntersectsCurve( diff --git a/packages/simon/src/frontright-classic-cuton.js b/packages/simon/src/frontright-classic-cuton.js index 9e8ce29f3b8..3d917c1b6ab 100644 --- a/packages/simon/src/frontright-classic-cuton.js +++ b/packages/simon/src/frontright-classic-cuton.js @@ -1,18 +1,8 @@ import { addButtons } from './shared' export default (part) => { - let { - utils, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { utils, sa, Point, points, Path, paths, complete, paperless, macro, options } = + part.shorthand() let width = options.buttonPlacketWidth points.placketTopIn = utils.lineIntersectsCurve( diff --git a/packages/simon/src/frontright-classic-seperate.js b/packages/simon/src/frontright-classic-seperate.js index 6642b5153ce..06abef56f02 100644 --- a/packages/simon/src/frontright-classic-seperate.js +++ b/packages/simon/src/frontright-classic-seperate.js @@ -1,16 +1,6 @@ export default (part) => { - let { - snippets, - utils, - sa, - Point, - points, - paths, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { snippets, utils, sa, Point, points, paths, complete, paperless, macro, options } = + part.shorthand() let width = options.buttonPlacketWidth points.placketTopIn = utils.lineIntersectsCurve( diff --git a/packages/simon/src/yoke.js b/packages/simon/src/yoke.js index 0153eafa155..9cef91d29ed 100644 --- a/packages/simon/src/yoke.js +++ b/packages/simon/src/yoke.js @@ -1,36 +1,21 @@ export default (part) => { - let { - sa, - Point, - points, - Path, - paths, - Snippet, - snippets, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { sa, Point, points, Path, paths, Snippet, snippets, complete, paperless, macro, options } = + part.shorthand() for (let id in paths) { if (['backCollar', 'backArmhole', 'backArmholeYoke'].indexOf(id) === -1) delete part.paths[id] } // Paths - paths.saBase = new Path() - .move(points.cbYoke) - .line(points.armholeYokeSplit) + paths.saBase = new Path().move(points.cbYoke).line(points.armholeYokeSplit) if (options.yokeHeight > 0) paths.saBase = paths.saBase.join(paths.backArmholeYoke) - paths.saBase = paths.saBase - .line(points.s3CollarSplit) - .join(paths.backCollar) + paths.saBase = paths.saBase.line(points.s3CollarSplit).join(paths.backCollar) if (options.splitYoke) paths.saBase = paths.saBase.line(points.cbYoke).close() else { macro('mirror', { - mirror: [points.cbNeck,points.cbYoke], + mirror: [points.cbNeck, points.cbYoke], paths: [paths.saBase], - clone: true + clone: true, }) paths.saBase = paths.saBase.join(paths.mirroredSaBase.reverse()) paths.mirroredSaBase.setRender(false) diff --git a/packages/simone/config/index.js b/packages/simone/config/index.js index 07d65c7e70c..600527972a2 100644 --- a/packages/simone/config/index.js +++ b/packages/simone/config/index.js @@ -235,7 +235,7 @@ export default { shoulderEase: { pct: 2, min: 0, max: 15 }, shoulderSlopeReduction: { pct: 0, min: 0, max: 8 }, yokeHeight: { pct: 55, min: 10, max: 90 }, - ffsa: {pct: 150, min: 100, max:200 }, + ffsa: { pct: 150, min: 100, max: 200 }, // s3 is short for Shoulder Seam Shift s3Collar: { pct: 0, min: -100, max: 100 }, s3Armhole: { pct: 0, min: -100, max: 100 }, diff --git a/packages/simone/rollup.config.js b/packages/simone/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/simone/rollup.config.js +++ b/packages/simone/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/strapi/.editorconfig b/packages/strapi/.editorconfig new file mode 100644 index 00000000000..473e45184be --- /dev/null +++ b/packages/strapi/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[{package.json,*.yml}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/strapi/.env.example b/packages/strapi/.env.example new file mode 100644 index 00000000000..b667b6c4a16 --- /dev/null +++ b/packages/strapi/.env.example @@ -0,0 +1,2 @@ +HOST=0.0.0.0 +PORT=1337 diff --git a/packages/strapi/.eslintignore b/packages/strapi/.eslintignore new file mode 100644 index 00000000000..90759a584c5 --- /dev/null +++ b/packages/strapi/.eslintignore @@ -0,0 +1,3 @@ +.cache +build +**/node_modules/** diff --git a/packages/strapi/.eslintrc b/packages/strapi/.eslintrc new file mode 100644 index 00000000000..b2ca93b1a58 --- /dev/null +++ b/packages/strapi/.eslintrc @@ -0,0 +1,27 @@ +{ + "parser": "babel-eslint", + "extends": "eslint:recommended", + "env": { + "commonjs": true, + "es6": true, + "node": true, + "browser": false + }, + "parserOptions": { + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "jsx": false + }, + "sourceType": "module" + }, + "globals": { + "strapi": true + }, + "rules": { + "indent": ["error", 2, { "SwitchCase": 1 }], + "linebreak-style": ["error", "unix"], + "no-console": 0, + "quotes": ["error", "single"], + "semi": ["error", "always"] + } +} diff --git a/packages/strapi/CHANGELOG.md b/packages/strapi/CHANGELOG.md new file mode 100644 index 00000000000..32feeff7e83 --- /dev/null +++ b/packages/strapi/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: @freesewing/strapi + + + +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/strapi/README.md b/packages/strapi/README.md new file mode 100644 index 00000000000..ffcead5436e --- /dev/null +++ b/packages/strapi/README.md @@ -0,0 +1,118 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

@freesewing/strapi on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:strapi + Project board +

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

+ +# @freesewing/strapi + +Freesewing's Strapi instance + + + +## What am I looking at? 🤔 + +This repository is our *monorepo* +holding [all our NPM packages](https://freesewing.dev/reference/packages/). + +This folder holds: @freesewing/strapi + +## 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). diff --git a/packages/strapi/api/.gitkeep b/packages/strapi/api/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/strapi/config/database.js b/packages/strapi/config/database.js new file mode 100644 index 00000000000..53c6434669b --- /dev/null +++ b/packages/strapi/config/database.js @@ -0,0 +1,20 @@ +module.exports = ({ env }) => ({ + defaultConnection: 'default', + connections: { + default: { + connector: 'mongoose', + settings: { + host: env('DATABASE_HOST', '127.0.0.1'), + srv: env.bool('DATABASE_SRV', false), + port: env.int('DATABASE_PORT', 27017), + database: env('DATABASE_NAME', 'strapi'), + username: env('DATABASE_USERNAME', null), + password: env('DATABASE_PASSWORD', null), + }, + options: { + authenticationDatabase: env('AUTHENTICATION_DATABASE', null), + ssl: env.bool('DATABASE_SSL', false), + }, + }, + }, +}) diff --git a/packages/strapi/config/functions/bootstrap.js b/packages/strapi/config/functions/bootstrap.js new file mode 100644 index 00000000000..3e3b9c94d39 --- /dev/null +++ b/packages/strapi/config/functions/bootstrap.js @@ -0,0 +1,13 @@ +'use strict'; + +/** + * An asynchronous bootstrap function that runs before + * your application gets started. + * + * This gives you an opportunity to set up your data model, + * run jobs, or perform some special logic. + * + * See more details here: https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/configurations.html#bootstrap + */ + +module.exports = () => {}; diff --git a/packages/strapi/config/functions/cron.js b/packages/strapi/config/functions/cron.js new file mode 100644 index 00000000000..fe26854cec6 --- /dev/null +++ b/packages/strapi/config/functions/cron.js @@ -0,0 +1,21 @@ +'use strict'; + +/** + * Cron config that gives you an opportunity + * to run scheduled jobs. + * + * The cron format consists of: + * [SECOND (optional)] [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK] + * + * See more details here: https://strapi.io/documentation/developer-docs/latest/setup-deployment-guides/configurations.html#cron-tasks + */ + +module.exports = { + /** + * Simple example. + * Every monday at 1am. + */ + // '0 1 * * 1': () => { + // + // } +}; diff --git a/packages/strapi/config/functions/responses/404.js b/packages/strapi/config/functions/responses/404.js new file mode 100644 index 00000000000..bcbfb078a8a --- /dev/null +++ b/packages/strapi/config/functions/responses/404.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = async (/* ctx */) => { + // return ctx.notFound('My custom message 404'); +}; diff --git a/packages/strapi/config/server.js b/packages/strapi/config/server.js new file mode 100644 index 00000000000..bb91d89d62d --- /dev/null +++ b/packages/strapi/config/server.js @@ -0,0 +1,9 @@ +module.exports = ({ env }) => ({ + host: env('HOST', '0.0.0.0'), + port: env.int('PORT', 1337), + admin: { + auth: { + secret: env('ADMIN_JWT_SECRET', 'you could hardcode a fallback here'), + }, + }, +}) diff --git a/packages/strapi/extensions/.gitkeep b/packages/strapi/extensions/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/strapi/favicon.ico b/packages/strapi/favicon.ico new file mode 100644 index 00000000000..03eec51b180 Binary files /dev/null and b/packages/strapi/favicon.ico differ diff --git a/packages/strapi/package.json b/packages/strapi/package.json new file mode 100644 index 00000000000..3f35b758a03 --- /dev/null +++ b/packages/strapi/package.json @@ -0,0 +1,51 @@ +{ + "name": "@freesewing/strapi", + "version": "2.17.4", + "description": "Freesewing's Strapi instance", + "author": "Joost De Cock (https://github.com/joostdecock)", + "homepage": "https://posts.freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "keywords": [ + "freesewing", + "design", + "diy", + "fashion", + "made to measure", + "parametric design", + "sewing" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "develop": "strapi develop", + "start": "strapi start", + "build": "strapi build", + "strapi": "strapi" + }, + "peerDependencies": {}, + "dependencies": { + "strapi": "3.6.5", + "strapi-admin": "3.6.5", + "strapi-utils": "3.6.5", + "strapi-plugin-content-type-builder": "3.6.5", + "strapi-plugin-content-manager": "3.6.5", + "strapi-plugin-users-permissions": "3.6.5", + "strapi-plugin-email": "3.6.5", + "strapi-plugin-upload": "3.6.5", + "strapi-plugin-i18n": "3.6.5", + "strapi-connector-mongoose": "3.6.5" + }, + "devDependencies": {}, + "files": [], + "publishConfig": {}, + "engines": { + "node": ">=12.0.0", + "npm": ">=6" + }, + "rollup": {}, + "private": true +} diff --git a/packages/strapi/public/robots.txt b/packages/strapi/public/robots.txt new file mode 100644 index 00000000000..c6742d8a8cb --- /dev/null +++ b/packages/strapi/public/robots.txt @@ -0,0 +1,2 @@ +User-Agent: * +Disallow: / diff --git a/packages/strapi/public/uploads/.gitkeep b/packages/strapi/public/uploads/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/sven/config/index.js b/packages/sven/config/index.js index c627bc49e80..09bf93f02b6 100644 --- a/packages/sven/config/index.js +++ b/packages/sven/config/index.js @@ -18,7 +18,7 @@ export default { 'lengthBonus', 'sleeveLengthBonus', ], - style: ['ribbing', 'ribbingHeight', 's3Collar', 's3Armhole' ], + style: ['ribbing', 'ribbingHeight', 's3Collar', 's3Armhole'], advanced: [ 'acrossBackFactor', 'armholeDepthFactor', diff --git a/packages/sven/rollup.config.js b/packages/sven/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/sven/rollup.config.js +++ b/packages/sven/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/sven/src/front.js b/packages/sven/src/front.js index 8dc7d3bd114..fff96a8b072 100644 --- a/packages/sven/src/front.js +++ b/packages/sven/src/front.js @@ -1,17 +1,6 @@ export default (part) => { - let { - store, - measurements, - sa, - Point, - points, - Path, - paths, - complete, - paperless, - macro, - options, - } = part.shorthand() + let { store, measurements, sa, Point, points, Path, paths, complete, paperless, macro, options } = + part.shorthand() let front = true if (typeof points.cfHem === 'undefined') front = false diff --git a/packages/tamiko/rollup.config.js b/packages/tamiko/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/tamiko/rollup.config.js +++ b/packages/tamiko/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/teagan/rollup.config.js b/packages/teagan/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/teagan/rollup.config.js +++ b/packages/teagan/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/teagan/src/sleeve.js b/packages/teagan/src/sleeve.js index f74993b2e63..b2ee72664ae 100644 --- a/packages/teagan/src/sleeve.js +++ b/packages/teagan/src/sleeve.js @@ -1,16 +1,6 @@ export default function (part) { - let { - sa, - Point, - points, - Path, - paths, - options, - complete, - paperless, - macro, - measurements, - } = part.shorthand() + let { sa, Point, points, Path, paths, options, complete, paperless, macro, measurements } = + part.shorthand() let height = points.bicepsRight.x * options.sleeveLength let width = measurements.biceps * (1 + options.bicepsEase) * (1 + options.sleeveEase) diff --git a/packages/theo/rollup.config.js b/packages/theo/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/theo/rollup.config.js +++ b/packages/theo/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/theo/src/back-inner-pocket-bag.js b/packages/theo/src/back-inner-pocket-bag.js index ffd3e953194..ca650dbba8d 100644 --- a/packages/theo/src/back-inner-pocket-bag.js +++ b/packages/theo/src/back-inner-pocket-bag.js @@ -1,15 +1,6 @@ export default function (part) { - let { - macro, - measurements, - Point, - points, - Path, - paths, - complete, - sa, - paperless, - } = part.shorthand() + let { macro, measurements, Point, points, Path, paths, complete, sa, paperless } = + part.shorthand() let width = measurements.hips * 0.16 let height = width * 1.43 diff --git a/packages/theo/src/front-pocket-bag.js b/packages/theo/src/front-pocket-bag.js index 242268f3f62..06486614cc7 100644 --- a/packages/theo/src/front-pocket-bag.js +++ b/packages/theo/src/front-pocket-bag.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - points, - Path, - paths, - complete, - sa, - paperless, - macro, - snippets, - Snippet, - } = part.shorthand() + let { Point, points, Path, paths, complete, sa, paperless, macro, snippets, Snippet } = + part.shorthand() // Clean up inherited paths & snippets for (let id in paths) delete paths[id] diff --git a/packages/theo/src/waistband-lining-left.js b/packages/theo/src/waistband-lining-left.js index 974593a50ff..cb0a1a19059 100644 --- a/packages/theo/src/waistband-lining-left.js +++ b/packages/theo/src/waistband-lining-left.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - snippets, - Snippet, - macro, - points, - paths, - Path, - complete, - sa, - paperless, - } = part.shorthand() + let { Point, snippets, Snippet, macro, points, paths, Path, complete, sa, paperless } = + part.shorthand() points[0] = points[0].shift(180, 80) points[3] = points[3].shift(180, 80) diff --git a/packages/theo/src/waistband-lining-right.js b/packages/theo/src/waistband-lining-right.js index 1dbd33d4158..d50c4b8ac03 100644 --- a/packages/theo/src/waistband-lining-right.js +++ b/packages/theo/src/waistband-lining-right.js @@ -1,16 +1,6 @@ export default function (part) { - let { - Point, - macro, - snippets, - Snippet, - points, - paths, - Path, - complete, - sa, - paperless, - } = part.shorthand() + let { Point, macro, snippets, Snippet, points, paths, Path, complete, sa, paperless } = + part.shorthand() points[0] = points[0].shift(180, 80) points[3] = points[3].shift(180, 80) diff --git a/packages/titan/rollup.config.js b/packages/titan/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/titan/rollup.config.js +++ b/packages/titan/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/trayvon/rollup.config.js b/packages/trayvon/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/trayvon/rollup.config.js +++ b/packages/trayvon/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/trayvon/src/fabrictip.js b/packages/trayvon/src/fabrictip.js index c351401885d..fa36f57757f 100644 --- a/packages/trayvon/src/fabrictip.js +++ b/packages/trayvon/src/fabrictip.js @@ -1,18 +1,8 @@ import { calculateHelpers, draftTieShape, seamAllowance, tieShapeDimensions } from './shared' export default (part) => { - let { - Path, - Snippet, - complete, - macro, - options, - paths, - paperless, - points, - sa, - snippets, - } = part.shorthand() + let { Path, Snippet, complete, macro, options, paths, paperless, points, sa, snippets } = + part.shorthand() calculateHelpers(part) draftTieShape(part, options.tipWidth * 2.5, options.knotWidth * 2.5, true) diff --git a/packages/trayvon/src/liningtail.js b/packages/trayvon/src/liningtail.js index 08f85415f66..d05e22c479f 100644 --- a/packages/trayvon/src/liningtail.js +++ b/packages/trayvon/src/liningtail.js @@ -1,19 +1,8 @@ import { calculateHelpers, draftTieShape, seamAllowance, tieShapeDimensions } from './shared' export default (part) => { - let { - Path, - Snippet, - complete, - macro, - options, - paths, - points, - paperless, - sa, - snippets, - store, - } = part.shorthand() + let { Path, Snippet, complete, macro, options, paths, points, paperless, sa, snippets, store } = + part.shorthand() calculateHelpers(part) draftTieShape(part, store.get('backTip') * 2.5, options.knotWidth * 2.5) diff --git a/packages/trayvon/src/liningtip.js b/packages/trayvon/src/liningtip.js index 1d23aac46e9..1b718991123 100644 --- a/packages/trayvon/src/liningtip.js +++ b/packages/trayvon/src/liningtip.js @@ -1,18 +1,8 @@ import { calculateHelpers, draftTieShape, tieShapeDimensions, seamAllowance } from './shared' export default (part) => { - let { - Path, - Snippet, - complete, - macro, - options, - paperless, - paths, - points, - sa, - snippets, - } = part.shorthand() + let { Path, Snippet, complete, macro, options, paperless, paths, points, sa, snippets } = + part.shorthand() calculateHelpers(part) draftTieShape(part, options.tipWidth * 2.5, options.knotWidth * 2.5) diff --git a/packages/tutorial/rollup.config.js b/packages/tutorial/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/tutorial/rollup.config.js +++ b/packages/tutorial/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/tutorial/src/step1.js b/packages/tutorial/src/step1.js index c125e539df4..cf9679619f0 100644 --- a/packages/tutorial/src/step1.js +++ b/packages/tutorial/src/step1.js @@ -1,17 +1,6 @@ export default function (part) { - let { - options, - Point, - Path, - points, - paths, - Snippet, - snippets, - complete, - sa, - paperless, - macro, - } = part.shorthand() + let { options, Point, Path, points, paths, Snippet, snippets, complete, sa, paperless, macro } = + part.shorthand() let w = 500 * options.size points.topLeft = new Point(0, 0) diff --git a/packages/ursula/config/index.js b/packages/ursula/config/index.js index 550ac78ec51..ad112ca49bf 100644 --- a/packages/ursula/config/index.js +++ b/packages/ursula/config/index.js @@ -22,30 +22,30 @@ export default { 'sewing pattern', ], optionGroups: { - fit: ['fabricStretch','gussetWidth','gussetLength','elasticStretch'], - style: ['rise','legOpening','frontDip','backDip','taperToGusset','backExposure'], + fit: ['fabricStretch', 'gussetWidth', 'gussetLength', 'elasticStretch'], + style: ['rise', 'legOpening', 'frontDip', 'backDip', 'taperToGusset', 'backExposure'], }, - measurements: ['waist','seat','waistToSeat','waistToUpperLeg'], // Potentially useful: 'hips', 'waistToHips' + measurements: ['waist', 'seat', 'waistToSeat', 'waistToUpperLeg'], // Potentially useful: 'hips', 'waistToHips' dependencies: {}, inject: {}, hide: [], - parts: ['front','back','gusset','elastic'], - //Constants - options: { + parts: ['front', 'back', 'gusset', 'elastic'], + //Constants + options: { backToFrontLength: 1.15, // Maybe include this in advanced options? backToFrontWidth: 1.1, // Maybe include this in advanced options? gussetRatio: 0.7, // Relationship between front and back gusset widths // Percentages - gussetWidth: { pct : 7.7, min: 4, max: 12 }, // Gusset width in relation to seat + gussetWidth: { pct: 7.7, min: 4, max: 12 }, // Gusset width in relation to seat gussetLength: { pct: 12.7, min: 10, max: 16 }, // Gusset length in relation to seat fabricStretch: { pct: 15, min: 5, max: 25 }, rise: { pct: 60, min: 30, max: 100 }, legOpening: { pct: 58, min: 5, max: 85 }, frontDip: { pct: 5.0, min: -5, max: 15 }, backDip: { pct: 2.5, min: -5, max: 15 }, - taperToGusset: { pct: 70, min: 5, max: 100}, - backExposure: { pct: 20, min: -30, max: 90}, - elasticStretch: { pct: 8, min: 5, max: 15 } + taperToGusset: { pct: 70, min: 5, max: 100 }, + backExposure: { pct: 20, min: -30, max: 90 }, + elasticStretch: { pct: 8, min: 5, max: 15 }, }, } diff --git a/packages/ursula/rollup.config.js b/packages/ursula/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/ursula/rollup.config.js +++ b/packages/ursula/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/ursula/src/back.js b/packages/ursula/src/back.js index dddcbcf833d..dab20d0cec6 100644 --- a/packages/ursula/src/back.js +++ b/packages/ursula/src/back.js @@ -6,8 +6,8 @@ export default function (part) { points, paths, measurements, -// Snippet, -// snippets, + // Snippet, + // snippets, store, utils, complete, @@ -21,29 +21,46 @@ export default function (part) { // Create points 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) + 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 + ) points.backGussetLeft = new Point( - (measurements.seat / 4) - (measurements.waist * options.gussetWidth) * store.get('xScale') / options.gussetRatio * options.backToFrontWidth, + measurements.seat / 4 - + ((measurements.waist * options.gussetWidth * store.get('xScale')) / options.gussetRatio) * + options.backToFrontWidth, + measurements.waistToUpperLeg * options.backToFrontLength + ) + points.backGussetMid = new Point( + measurements.seat / 4, measurements.waistToUpperLeg * options.backToFrontLength ) - points.backGussetMid = new Point(measurements.seat / 4, measurements.waistToUpperLeg * options.backToFrontLength) 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) + 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) - + points.backMidMid = points.backLegOpeningLeft.shiftFractionTowards( + points.backLegOpeningRight, + 0.5 + ) // Create control points /* Control point for waistband dip */ - points.backWaistBandLeftCp1 = new Point(points.backWaistBandRight.x / 3, points.backWaistBandMid.y) + points.backWaistBandLeftCp1 = new Point( + points.backWaistBandRight.x / 3, + points.backWaistBandMid.y + ) /* Flip points to right side */ points.backWaistBandRightCp1 = points.backWaistBandLeftCp1.flipX(points.backWaistMid) @@ -60,48 +77,45 @@ export default function (part) { if (options.backExposure >= 0) { /* If back exposure is high, like a thong style */ - /* This controls the hip bit */ + /* This controls the hip bit */ points.backLegOpeningLeftCp1 = points.backLegOpeningLeft.shiftFractionTowards( points.backLegOpeningCorner, options.backExposure ) - /* This controls the center bit */ + /* 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.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 */ - /* This controls the hip bit */ + /* This controls the hip bit */ points.backLegOpeningLeftCp1 = points.backLegOpeningLeft.shift( -45, points.backWaistBandMid.x / 8 ) /* This controls the taper to gusset */ - points.backGussetLeftCp1 = points.backGussetLeft.shift( - 115, - points.backWaistBandMid.x / 8 - ) + points.backGussetLeftCp1 = points.backGussetLeft.shift(115, points.backWaistBandMid.x / 8) /* This adds a new point in the middle of the back coverage */ - points.backFlare = points.backGussetLeft.shiftFractionTowards( - points.backLegOpeningLeft, - 0.5 - ) + points.backFlare = points.backGussetLeft.shiftFractionTowards(points.backLegOpeningLeft, 0.5) points.backFlareLeft = points.backFlare.shift( 215, - -points.backWaistBandMid.x / 2 * options.backExposure + (-points.backWaistBandMid.x / 2) * options.backExposure ) points.backFlareRight = points.backFlareLeft.flipX(points.backWaistBandMid) /* This controls the flare */ points.backFlareLeftCp1 = points.backFlareLeft.shift( 115, - points.backWaistBandMid.x / 5//-150*options.backExposure + points.backWaistBandMid.x / 5 //-150*options.backExposure ) points.backFlareLeftCp2 = points.backFlareLeft.shift( 295, - points.backWaistBandMid.x / 5//-150*options.backExposure + points.backWaistBandMid.x / 5 //-150*options.backExposure ) points.backFlareRightCp1 = points.backFlareLeftCp1.flipX(points.backWaistMid) points.backFlareRightCp2 = points.backFlareLeftCp2.flipX(points.backWaistMid) @@ -144,62 +158,61 @@ export default function (part) { .attr('class', 'fabric') } - // Store points for use in other parts + // Store points for use in other parts - /* Store gusset points for use in gusset */ + /* Store gusset points for use in gusset */ - store.set('backGussetLeft', points.backGussetLeft) - store.set('backGussetRight', points.backGussetRight) + 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), - ) - } + /* Store lengths for use in elastic */ + if (options.backExposure >= 0) { store.set( - 'backWaistBandLength', + 'backLegOpeningLength', new Path() - .move(points.backWaistBandRight) - .curve(points.backWaistBandRightCp1, points.backWaistBandLeftCp1, points.backWaistBandLeft) + .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) + ) + } + + 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('title', { + at: points.backMidMid, + nr: 2, + title: 'back', + }) - macro("grainline", { - from: points.backGussetMid, - to: points.backGussetMid.shiftFractionTowards(points.backWaistBandMid, 0.4), - }) + 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 }) + points.scaleboxAnchor = points.scalebox = points.backMidMid.shift(90, -50) + macro('miniscale', { at: points.scalebox }) // Paperless? if (paperless) { @@ -223,20 +236,28 @@ export default function (part) { to: points.backGussetMid, x: points.backWaistBandMid.x + sa + 15, }) - if (options.backExposure >= 0 ) { + if (options.backExposure >= 0) { macro('pd', { path: new Path() .move(points.backGussetRight) - .curve(points.backGussetRightCp1, points.backLegOpeningRightCp1, points.backLegOpeningRight), - d: 15 + .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 + .curve( + points.backFlareRightCp1, + points.backLegOpeningRightCp1, + points.backLegOpeningRight + ), + d: 15, }) } } diff --git a/packages/ursula/src/elastic.js b/packages/ursula/src/elastic.js index 9a1a5bf1505..17c2884e9f3 100644 --- a/packages/ursula/src/elastic.js +++ b/packages/ursula/src/elastic.js @@ -6,8 +6,8 @@ export default function (part) { points, paths, measurements, -// Snippet, -// snippets, + // Snippet, + // snippets, store, utils, units, @@ -23,10 +23,13 @@ export default function (part) { // Design pattern here - let legOpeningLength = store.get('frontLegOpeningLength') + store.get('backLegOpeningLength') + store.get('gussetSideLength') + let legOpeningLength = + store.get('frontLegOpeningLength') + + store.get('backLegOpeningLength') + + store.get('gussetSideLength') let waistBandLength = store.get('frontWaistBandLength') + store.get('backWaistBandLength') - points.elasticInfo = new Point(0,0) + points.elasticInfo = new Point(0, 0) .attr('data-text', 'cutTwoPiecesOfElasticToFinishTheLegOpenings') .attr('data-text', ':') .attr('data-text', units(legOpeningLength * store.get('elasticScale') + 2 * sa)) @@ -37,7 +40,6 @@ export default function (part) { // Complete? if (complete) { - // if (sa) { // paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') // } diff --git a/packages/ursula/src/front.js b/packages/ursula/src/front.js index ef5da0dd682..9c9e3177d2d 100644 --- a/packages/ursula/src/front.js +++ b/packages/ursula/src/front.js @@ -6,8 +6,8 @@ export default function (part) { points, paths, measurements, -// Snippet, -// snippets, + // Snippet, + // snippets, store, utils, complete, @@ -25,9 +25,18 @@ export default function (part) { // Create points points.frontWaistMid = new Point(measurements.seat / 4, 0) - points.frontWaistLeft = new Point(measurements.seat / 4 - measurements.waist / 4 * store.get('xScale'), 0) - points.frontHipLeft = new Point(measurements.seat / 4 - measurements.seat / 4 * store.get('xScale'), measurements.waistToSeat) // Consider renaming from "hip" to "seat" - points.frontGussetLeft = new Point((measurements.seat / 4) - (measurements.waist * options.gussetWidth) * store.get('xScale') / 1.2, measurements.waistToUpperLeg) + points.frontWaistLeft = new Point( + measurements.seat / 4 - (measurements.waist / 4) * store.get('xScale'), + 0 + ) + points.frontHipLeft = new Point( + measurements.seat / 4 - (measurements.seat / 4) * store.get('xScale'), + measurements.waistToSeat + ) // Consider renaming from "hip" to "seat" + points.frontGussetLeft = new Point( + measurements.seat / 4 - (measurements.waist * options.gussetWidth * store.get('xScale')) / 1.2, + measurements.waistToUpperLeg + ) points.frontGussetMid = new Point(measurements.seat / 4, measurements.waistToUpperLeg) /* Flip points to right side */ @@ -36,37 +45,52 @@ export default function (part) { points.frontWaistRight = points.frontWaistLeft.flipX(points.frontWaistMid) /* Waist band is based on waist at top, hip at bottom */ - points.frontWaistBandLeft = points.frontHipLeft.shiftFractionTowards(points.frontWaistLeft, options.rise) + points.frontWaistBandLeft = points.frontHipLeft.shiftFractionTowards( + points.frontWaistLeft, + options.rise + ) points.frontWaistBandRight = points.frontWaistBandLeft.flipX(points.frontWaistMid) - points.frontWaistBandMid = points.frontWaistBandLeft.shiftFractionTowards(points.frontWaistBandRight, 0.5) - .shift(270,measurements.waistToUpperLeg * options.frontDip) /* Waist band dip */ + points.frontWaistBandMid = points.frontWaistBandLeft + .shiftFractionTowards(points.frontWaistBandRight, 0.5) + .shift(270, measurements.waistToUpperLeg * options.frontDip) /* Waist band dip */ /* Leg opening is based on waist band and hip */ -// points.frontLegOpeningLeft = points.frontHipLeft.shiftFractionTowards(points.frontWaistBandLeft, options.legOpening) // Waist band side point -// points.frontLegOpeningRight = points.frontLegOpeningLeft.flipX(points.frontWaistMid) // Waist band side point + // points.frontLegOpeningLeft = points.frontHipLeft.shiftFractionTowards(points.frontWaistBandLeft, options.legOpening) // Waist band side point + // points.frontLegOpeningRight = points.frontLegOpeningLeft.flipX(points.frontWaistMid) // Waist band side point -///////////// Replace the point it's shifting towards with a beamsIntersect() of the -///////////// side (frontWaistLeft and frontHipLeft) and the lowest point of the waistband (backWaistBandMid -///////////// and backWaistBandLeftCp1 should work) -///////////// or maybe beamIntersectsY() of backWaistBandMid.y ?? + ///////////// Replace the point it's shifting towards with a beamsIntersect() of the + ///////////// side (frontWaistLeft and frontHipLeft) and the lowest point of the waistband (backWaistBandMid + ///////////// and backWaistBandLeftCp1 should work) + ///////////// or maybe beamIntersectsY() of backWaistBandMid.y ?? - points.frontLegOpeningLeft = points.frontHipLeft.shiftFractionTowards(points.frontWaistBandLeft, options.legOpening) // Waist band low point + points.frontLegOpeningLeft = points.frontHipLeft.shiftFractionTowards( + points.frontWaistBandLeft, + options.legOpening + ) // Waist band low point points.frontLegOpeningRight = points.frontLegOpeningLeft.flipX(points.frontWaistMid) // Waist band low point /* Middle point for label */ - points.frontMidMid = points.frontLegOpeningLeft.shiftFractionTowards(points.frontLegOpeningRight, 0.5) + points.frontMidMid = points.frontLegOpeningLeft.shiftFractionTowards( + points.frontLegOpeningRight, + 0.5 + ) // Create control points /* Control points for leg opening curves */ - points.frontLegOpeningLeftCp1 = points.frontLegOpeningLeft - .shift(180, points.frontGussetLeft.dy(points.frontLegOpeningLeft)/3); + points.frontLegOpeningLeftCp1 = points.frontLegOpeningLeft.shift( + 180, + points.frontGussetLeft.dy(points.frontLegOpeningLeft) / 3 + ) points.frontGussetLeftCp1 = points.frontGussetLeft -// .shift(270, points.frontGussetLeft.dy(points.frontHipLeft) * 4 * options.taperToGusset); // Consider changing this so it's relative - .shift(270, points.frontGussetLeft.dy(points.frontWaistBandMid) * options.taperToGusset); + // .shift(270, points.frontGussetLeft.dy(points.frontHipLeft) * 4 * options.taperToGusset); // Consider changing this so it's relative + .shift(270, points.frontGussetLeft.dy(points.frontWaistBandMid) * options.taperToGusset) /* Control point for waistband dip */ - points.frontWaistBandLeftCp1 = new Point(points.frontWaistBandRight.x / 3, points.frontWaistBandMid.y) + points.frontWaistBandLeftCp1 = new Point( + points.frontWaistBandRight.x / 3, + points.frontWaistBandMid.y + ) /* Flip control points to right side */ points.frontGussetRightCp1 = points.frontGussetLeftCp1.flipX(points.frontWaistMid) @@ -107,7 +131,11 @@ export default function (part) { 'frontLegOpeningLength', new Path() .move(points.frontGussetRight) - .curve(points.frontGussetRightCp1, points.frontLegOpeningRightCp1, points.frontLegOpeningRight) + .curve( + points.frontGussetRightCp1, + points.frontLegOpeningRightCp1, + points.frontLegOpeningRight + ) .length() ) store.set( @@ -120,7 +148,6 @@ export default function (part) { // Complete? if (complete) { - if (sa) { paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') } @@ -132,7 +159,7 @@ export default function (part) { title: 'front', }) - macro("grainline", { + macro('grainline', { from: points.frontGussetMid, to: points.frontGussetMid.shiftFractionTowards(points.frontWaistBandMid, 0.5), }) @@ -162,15 +189,19 @@ export default function (part) { macro('ld', { from: points.frontWaistBandLeft, to: points.frontLegOpeningLeft, - d: points.frontWaistBandLeft.y + sa - 15 + d: points.frontWaistBandLeft.y + sa - 15, }) macro('pd', { path: new Path() .move(points.frontGussetRight) - .curve(points.frontGussetRightCp1, points.frontLegOpeningRightCp1, points.frontLegOpeningRight), - d: 15 + .curve( + points.frontGussetRightCp1, + points.frontLegOpeningRightCp1, + points.frontLegOpeningRight + ), + d: 15, }) -/* macro('vd', { + /* macro('vd', { from: points.frontWaistBandLeft, to: points.frontWaistBandMid, x: points.frontWaistBandMid.x + sa + 15, diff --git a/packages/ursula/src/gusset.js b/packages/ursula/src/gusset.js index 849c318e57b..226069dc982 100644 --- a/packages/ursula/src/gusset.js +++ b/packages/ursula/src/gusset.js @@ -6,8 +6,8 @@ export default function (part) { points, paths, measurements, -// Snippet, -// snippets, + // Snippet, + // snippets, store, utils, complete, @@ -21,14 +21,21 @@ export default function (part) { // Create points points.frontGussetLeft = new Point(store.get('frontGussetLeft').x, 0) - points.backGussetLeft = new Point(store.get('backGussetLeft').x, measurements.seat * options.gussetLength) + points.backGussetLeft = new Point( + store.get('backGussetLeft').x, + measurements.seat * options.gussetLength + ) points.frontGussetRight = new Point(store.get('frontGussetRight').x, 0) - points.backGussetRight = new Point(store.get('backGussetRight').x, measurements.seat * options.gussetLength) + points.backGussetRight = new Point( + store.get('backGussetRight').x, + measurements.seat * options.gussetLength + ) // Create control points - points.gussetCp1 = points.frontGussetLeft.shiftFractionTowards(points.backGussetLeft, 0.5) - .shift(180,points.frontGussetRight.x / -15) + points.gussetCp1 = points.frontGussetLeft + .shiftFractionTowards(points.backGussetLeft, 0.5) + .shift(180, points.frontGussetRight.x / -15) // Flip points to right side @@ -61,7 +68,6 @@ export default function (part) { // Complete? if (complete) { - if (sa) { paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') } diff --git a/packages/wahid/rollup.config.js b/packages/wahid/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/wahid/rollup.config.js +++ b/packages/wahid/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/wahid/src/frontfacing.js b/packages/wahid/src/frontfacing.js index 9c497bff94e..fc16a38dc93 100644 --- a/packages/wahid/src/frontfacing.js +++ b/packages/wahid/src/frontfacing.js @@ -1,16 +1,6 @@ export default (part) => { - let { - points, - Point, - 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 front part for (let i of Object.keys(paths)) delete paths[i] diff --git a/packages/wahid/src/pocketbag.js b/packages/wahid/src/pocketbag.js index cd8ec1f66c7..ff53d01b0a5 100644 --- a/packages/wahid/src/pocketbag.js +++ b/packages/wahid/src/pocketbag.js @@ -1,16 +1,6 @@ export default (part) => { - let { - points, - Point, - paths, - Path, - measurements, - options, - macro, - complete, - paperless, - store, - } = part.shorthand() + 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 diff --git a/packages/wahid/src/pocketfacing.js b/packages/wahid/src/pocketfacing.js index 401f63580f5..b4c6138554c 100644 --- a/packages/wahid/src/pocketfacing.js +++ b/packages/wahid/src/pocketfacing.js @@ -1,16 +1,6 @@ export default (part) => { - let { - points, - Point, - paths, - Path, - measurements, - options, - macro, - complete, - paperless, - store, - } = part.shorthand() + 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 diff --git a/packages/wahid/src/pocketinterfacing.js b/packages/wahid/src/pocketinterfacing.js index 8e0f49dcfc8..22e5f14c9e3 100644 --- a/packages/wahid/src/pocketinterfacing.js +++ b/packages/wahid/src/pocketinterfacing.js @@ -1,15 +1,6 @@ export default (part) => { - let { - points, - Point, - paths, - Path, - measurements, - options, - macro, - complete, - paperless, - } = part.shorthand() + 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 diff --git a/packages/wahid/src/pocketwelt.js b/packages/wahid/src/pocketwelt.js index 9c22e98e55d..945fa07dfb6 100644 --- a/packages/wahid/src/pocketwelt.js +++ b/packages/wahid/src/pocketwelt.js @@ -1,15 +1,6 @@ export default (part) => { - let { - points, - Point, - paths, - Path, - measurements, - options, - macro, - complete, - paperless, - } = part.shorthand() + 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 diff --git a/packages/waralee/rollup.config.js b/packages/waralee/rollup.config.js index 3dc79b838c8..83bc5ef0eec 100644 --- a/packages/waralee/rollup.config.js +++ b/packages/waralee/rollup.config.js @@ -12,23 +12,18 @@ const output = [ format: 'cjs', sourcemap: true, exports: rollup.exports, - } + }, ] if (typeof module !== 'undefined') output.push({ banner, file: module, format: 'es', - sourcemap: true + sourcemap: true, }) export default { input: 'src/index.js', output, - plugins: [ - peerDepsExternal(), - resolve({ modulesOnly: true }), - commonjs(), - json(), - ] + plugins: [peerDepsExternal(), resolve({ modulesOnly: true }), commonjs(), json()], } diff --git a/packages/waralee/src/pants.js b/packages/waralee/src/pants.js index ef3c545a093..000140ddc38 100644 --- a/packages/waralee/src/pants.js +++ b/packages/waralee/src/pants.js @@ -1,15 +1,6 @@ export default function (part) { - let { - options, - points, - paths, - Snippet, - snippets, - complete, - sa, - paperless, - macro, - } = part.shorthand() + let { options, points, paths, Snippet, snippets, complete, sa, paperless, macro } = + part.shorthand() paths.waistFoldBack = paths.waistBack .offset(-1 * options.waistBand) diff --git a/tests/patterns/config.js b/tests/patterns/config.js index b3ce3cb9a47..361d0ff757f 100644 --- a/tests/patterns/config.js +++ b/tests/patterns/config.js @@ -1,3 +1,12 @@ +const notGarments = [ + 'rendertest', + 'tutorial', + 'examples', + 'legend', +] +const isGarment = design => (notGarments.indexOf(design) === -1) ? true : false + + /* * This runs unit tests for the pattern configuration * It expects the following: @@ -30,44 +39,45 @@ const testPatternConfig = (design, pattern, expect, models, patterns) => { } }) } - it(` - 'type' should be 'pattern' or 'block'`, () => { - expect(['pattern', 'block'].indexOf(pattern.config.type)).to.not.equal(-1) - }) - it(` - 'department' should be one of tops, bottoms, coats, swimwear, underwear, or accessories`, () => { - expect( - ['tops', 'bottoms', 'coats', 'swimwear', 'underwear', 'accessories'].indexOf(pattern.config.department) - ).to.not.equal(-1) - }) - it(` - 'difficulty' should be a number between 1 and 5`, () => { - expect(typeof pattern.config.difficulty).to.equal('number') - expect(pattern.config.difficulty > 0).to.be.true - expect(pattern.config.difficulty < 6).to.be.true - }) + // Config tests for garments only + if (isGarment(design)) { + it(` - 'type' should be 'pattern' or 'block'`, () => { + expect(['pattern', 'block'].indexOf(pattern.config.type)).to.not.equal(-1) + }) + it(` - 'department' should be one of tops, bottoms, coats, swimwear, underwear, or accessories`, () => { + expect( + ['tops', 'bottoms', 'coats', 'swimwear', 'underwear', 'accessories'].indexOf(pattern.config.department) + ).to.not.equal(-1) + }) + it(` - 'difficulty' should be a number between 1 and 5`, () => { + expect(typeof pattern.config.difficulty).to.equal('number') + expect(pattern.config.difficulty > 0).to.be.true + expect(pattern.config.difficulty < 6).to.be.true + }) - /* - * Ensure optiongroup structure and content - */ - it('Option groups:', () => true) - for (let group in pattern.config.optionGroups) { - for (let option of pattern.config.optionGroups[group]) { - if (typeof option === 'string') { - it(` - '${option}' should be a valid option`, () => { - expect(pattern.config.options[option]).to.exist - }) - } else { - for (let subgroup in option) { - it(` Subgroup: ${subgroup}`, () => true) - for (let suboption of option[subgroup]) { - it(` - '${suboption}' should be a valid option`, () => { - expect(pattern.config.options[suboption]).to.exist - }) + /* + * Ensure optiongroup structure and content + */ + it('Option groups:', () => true) + for (let group in pattern.config.optionGroups) { + for (let option of pattern.config.optionGroups[group]) { + if (typeof option === 'string') { + it(` - '${option}' should be a valid option`, () => { + expect(pattern.config.options[option]).to.exist + }) + } else { + for (let subgroup in option) { + it(` Subgroup: ${subgroup}`, () => true) + for (let suboption of option[subgroup]) { + it(` - '${suboption}' should be a valid option`, () => { + expect(pattern.config.options[suboption]).to.exist + }) + } } } } } - } - if (['rendertest', 'tutorial', 'examples', 'legend'].indexOf(design) === -1) { /* * Ensure pattern is listed as being for breasts or not */