1
0
Fork 0

Merge pull request #3 from freesewing/develop

catchup
This commit is contained in:
Wouter van Wageningen 2019-09-30 07:59:38 -07:00 committed by GitHub
commit 9fcdbe9398
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
426 changed files with 16269 additions and 9690 deletions

14
.gitignore vendored
View file

@ -9,7 +9,7 @@ packages/components/Emblem
packages/components/Example packages/components/Example
packages/components/Footer packages/components/Footer
packages/components/Icon packages/components/Icon
packages/components/Linedrawing packages/components/LineDrawing
packages/components/Logo packages/components/Logo
packages/components/Navbar packages/components/Navbar
packages/components/Ogol packages/components/Ogol
@ -31,6 +31,9 @@ packages/utils/defaultGist
packages/utils/defaultSa packages/utils/defaultSa
packages/utils/formatImperial packages/utils/formatImperial
packages/utils/formatMm packages/utils/formatMm
packages/utils/measurementAsMm
packages/utils/measurementDiffers
packages/utils/neckstimate
packages/utils/optionDefault packages/utils/optionDefault
packages/utils/optionType packages/utils/optionType
packages/utils/roundMm packages/utils/roundMm
@ -40,10 +43,11 @@ packages/utils/sliderStep
packages/utils/smallestImperialStep packages/utils/smallestImperialStep
packages/utils/storage packages/utils/storage
packages/utils/tiler packages/utils/tiler
packages/utils/measurementAsMm
packages/utils/validateEmail packages/utils/validateEmail
packages/utils/validateTld packages/utils/validateTld
packages/*/example/yarn.lock
# dependencies # dependencies
node_modules node_modules
@ -67,3 +71,9 @@ yarn-debug.log*
yarn-error.log* yarn-error.log*
lerna-debug.log* lerna-debug.log*
packages/core/.nyc_output packages/core/.nyc_output
packages/i18n/sort.sh
packages/create-freesewing-pattern/index.js
packages/create-freesewing-pattern/lib/cli.js
.gitignore
scripts/taskrunner.sh
scripts/verdaccio.sh

212
CHANGELOG.md Normal file
View file

@ -0,0 +1,212 @@
# Change log for: FreeSewing (global)
## Unreleased
### components
#### Changed
- Added Penelope and Waralee linedrawings
#### Fixed
- Fixed display of nested option in SampleConfigurator
- Fixed conflicting key values in React components
### core
#### Changed
- The pattern super constructor now sets a `config` property that holds the pattern configuration. This means that unlike before, there is no need to instantiate a pattern to access its config. You can just import the pattern, and it's config property will contain the pattern config.
### i18n
#### Added
- Added translations for Penelope, Waralee, and Simone
### penelope
#### Added
- Added the Penelope Pencil Skirt pattern by @woutervdub
### simon
#### Changed
- [#123](https://github.com/freesewing/freesewing/issues/123): Added a box pleat option to Simon
- Added the `backDarts` option to control the inclusion of back darts
- Added the `backDartsShaping` option to control the amount of shaping by the back darts
- Changed the defaults to slightly reduce the ease and adapt the sleevecap
#### Fixed
- Fixed an issue where the store wasn't properly initialized causing hips and waist ease to be set incorrectly
- Added a missing paperless dimension for the waist
- Fixed an issue where the split yoke option was not taken into account correctly
### simone
#### Added
- Added the Simone shirt pattern
### utils
#### Added
- Added backend methods for administration
### waralee
#### Added
- Added the Waralee wrap Pants pattern by @woutervdub
## 2.0.4 (2019-09-27)
### carlton
#### Fixed
- [#108](https://github.com/freesewing/freesewing/issues/108): Fixed incorrect width of the Carlton tail
### components
#### Added
- Advanced options and settings are now hidden by default in DraftConfigurator
#### Fixed
- [#104](https://github.com/freesewing/freesewing/issues/104): Fixed incorrect embed setting on Workbench pattern export
## 2.0.3 (2019-09-15)
### bruce
#### Fixed
- [#106](https://github.com/freesewing/freesewing/issues/106): Fix incorrect hem allowance
### components
#### Changed
- Tweaked DraftConfigurator tags to match CSS rules after frontend upgrade to react-intl v3
### create-freesewing-pattern
#### Fixed
- Updated example package.json to use latest tag rather than beta
### utils
#### Fixed
- Fix measurementDiffers to pass breasts parameter to necstimate
## 2.0.2 (2019-09-06)
### benjamin
#### Fixed
- Added bandLength option to fit optiongroup (it was missing)
### components
#### Fixed
- [#104](https://github.com/freesewing/freesewing.org/issues/104): Changed `onDragEnd` to `onChangeCommitted` in slider element (change in material-ui API when slider came out of beta)
- Workbench now also lets you preload a `withBreasts` set of measurements
- DraftConfigurator now properly styles pattern options 3 levels deep
- [#105](https://github.com/freesewing/freesewing.org/issues/105): Moved state change in render loop to useEffect
### create-freesewing-pattern
#### Changed
- Updated dependencies
#### Fixed
- Added missing `file-saver` dependency
### css-theme
#### Fixed
- Updated styles for DraftConfigurator component for pattern options 3 levels deep
### i18n
#### Added
- [#90](https://github.com/freesewing/freesewing/issues/90): Added missing option translations for Benjamin, Florent, Sandy, Shin, and Theo
### jaeger
#### Fixed
- [#76](https://github.com/freesewing/freesewing.org/issues/76): Fixed a typo in Jaeger that was causing the side vent length to be wrong
### simon
#### Fixed
- [#100](https://github.com/freesewing/freesewing.org/issues/100): Updated simon with more sensible defaults for ease options
- [#102](https://github.com/freesewing/freesewing.org/issues/102): Fixed 'Snippets not defined' error when drafting a seperate button placket
- [#103](https://github.com/freesewing/freesewing.org/issues/103): Fixed 'hemSa not defined' when drafting paperless Simon without seam allowance
### utils
#### Fixed
- Removed lingering debug statement in formatImperial
## 2.0.1 (2019-09-01)
### models
#### Added
- Expanded the size ranges available.
- Added the `withBreasts` models which were missing in earlier releases.
#### Changed
- The models data is now based on the data from the `neckstimate` method in the utils package.
#### Fixed
- [#86](https://github.com/freesewing/freesewing/issues/86): The `seatCircumference` measurement was missing, thus making it unavailable on the website
### theo
#### Fixed
- [#78](https://github.com/freesewing/freesewing/issues/78): Removed inherited notches from fly shield and side piece.
### utils
#### Added
- The `measurementDiffers` method is new.
## 2.0.0 (2019-08-25)
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.

View file

@ -1,8 +1,3 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/).
<p align="center"> <p align="center">
<a title="Visit freesewing.org" href="https://freesewing.org/"> <a title="Visit freesewing.org" href="https://freesewing.org/">
<img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/> <img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/>
@ -38,7 +33,7 @@
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15" ><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
alt="Follow @freesewing_org on Twitter"/> alt="Follow @freesewing_org on Twitter"/>
</a><a </a><a
href="https://gitter.im/freesewing/freesewing" href="https://gitter.im/freesewing/chat"
title="Chat with us on Gitter" title="Chat with us on Gitter"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Chat%20with%20us-CA0547.svg?logo=gitter&logoColor=white&logoWidth=15" ><img src="https://img.shields.io/badge/%F3%A0%80%A0-Chat%20with%20us-CA0547.svg?logo=gitter&logoColor=white&logoWidth=15"
alt="Chat with us on Gitter"/> alt="Chat with us on Gitter"/>
@ -56,7 +51,7 @@
## About freesewing ## About freesewing
FreeSewing is JavaScript library for made-to-measure sewing patterns. FreeSewing is on open source platform for made-to-measure sewing patterns.
## Links ## Links
@ -76,8 +71,6 @@ FreeSewing is JavaScript library for made-to-measure sewing patterns.
- Renders to SVG - Renders to SVG
- Run in the browser as well as on the server with Node.js - Run in the browser as well as on the server with Node.js
## Getting started ## Documentation
This repository is a rewrite of [freesewing/core](https://github.com/freesewing/core) in JavaScript. Please go to [freesewing.dev](https://freesewing.dev) for our developer documentation.
It is an ongoing project, and not ready for prime-time yet. Watch this space.

127
config/changelog.yaml Normal file
View file

@ -0,0 +1,127 @@
Unreleased:
date:
Added:
i18n:
- Added translations for Penelope, Waralee, and Simone
simone:
- Added the Simone shirt pattern
penelope:
- Added the Penelope Pencil Skirt pattern by @woutervdub
utils:
- Added backend methods for administration
waralee:
- Added the Waralee wrap Pants pattern by @woutervdub
Changed:
core:
- The pattern super constructor now sets a `config` property that
holds the pattern configuration. This means that unlike before, there
is no need to instantiate a pattern to access its config. You can just
import the pattern, and it's config property will contain the pattern config.
components:
- Added Penelope and Waralee linedrawings
simon:
- "[#123](https://github.com/freesewing/freesewing/issues/123):
Added a box pleat option to Simon"
- Added the `backDarts` option to control the inclusion of back darts
- Added the `backDartsShaping` option to control the amount of shaping by the back darts
- Changed the defaults to slightly reduce the ease and adapt the sleevecap
Deprecated:
patterns:
- The [@freesewing/patterns](https://www.npmjs.com/package/@freesewing/patterns)
package has been deprecated. Please import our patterns individually.
Removed:
Fixed:
components:
- Fixed display of nested option in SampleConfigurator
- Fixed conflicting key values in React components
simon:
- Fixed an issue where the store wasn't properly initialized causing hips and waist ease
to be set incorrectly
- Added a missing paperless dimension for the waist
- Fixed an issue where the split yoke option was not taken into account correctly
Security:
2.0.4:
date: 2019-09-27
Added:
components:
- Advanced options and settings are now hidden by default in DraftConfigurator
Fixed:
carlton:
- "[#108](https://github.com/freesewing/freesewing/issues/108):
Fixed incorrect width of the Carlton tail"
components:
- "[#104](https://github.com/freesewing/freesewing/issues/104):
Fixed incorrect embed setting on Workbench pattern export"
2.0.3:
date: 2019-09-15
Changed:
components:
- Tweaked DraftConfigurator tags to match CSS rules after frontend upgrade to react-intl v3
Fixed:
bruce:
- "[#106](https://github.com/freesewing/freesewing/issues/106):
Fix incorrect hem allowance"
create-freesewing-pattern:
- Updated example package.json to use latest tag rather than beta
utils:
- Fix measurementDiffers to pass breasts parameter to necstimate
2.0.2:
date: 2019-09-06
Added:
i18n:
- "[#90](https://github.com/freesewing/freesewing/issues/90):
Added missing option translations for Benjamin, Florent, Sandy, Shin, and Theo"
Changed:
create-freesewing-pattern:
- Updated dependencies
Fixed:
benjamin:
- Added bandLength option to fit optiongroup (it was missing)
css-theme:
- Updated styles for DraftConfigurator component for pattern options 3 levels deep
components:
- "[#104](https://github.com/freesewing/freesewing.org/issues/104):
Changed `onDragEnd` to `onChangeCommitted` in slider element
(change in material-ui API when slider came out of beta)"
- Workbench now also lets you preload a `withBreasts` set of measurements
- DraftConfigurator now properly styles pattern options 3 levels deep
- "[#105](https://github.com/freesewing/freesewing.org/issues/105):
Moved state change in render loop to useEffect"
create-freesewing-pattern:
- Added missing `file-saver` dependency
jaeger:
- "[#76](https://github.com/freesewing/freesewing.org/issues/76):
Fixed a typo in Jaeger that was causing the side vent length to be wrong"
simon:
- "[#100](https://github.com/freesewing/freesewing.org/issues/100):
Updated simon with more sensible defaults for ease options"
- "[#102](https://github.com/freesewing/freesewing.org/issues/102):
Fixed 'Snippets not defined' error when drafting a seperate button placket"
- "[#103](https://github.com/freesewing/freesewing.org/issues/103):
Fixed 'hemSa not defined' when drafting paperless Simon without seam allowance"
utils:
- Removed lingering debug statement in formatImperial
2.0.1:
date: 2019-09-01
Added:
utils:
- The `measurementDiffers` method is new.
models:
- Expanded the size ranges available.
- Added the `withBreasts` models which were missing in earlier releases.
Changed:
models:
- The models data is now based on the data from the `neckstimate` method in the utils package.
Fixed:
theo:
- "[#78](https://github.com/freesewing/freesewing/issues/78):
Removed inherited notches from fly shield and side piece."
models:
- "[#86](https://github.com/freesewing/freesewing/issues/86):
The `seatCircumference` measurement was missing, thus making it unavailable on the website"

View file

@ -117,39 +117,14 @@ jaeger:
peer: peer:
"@freesewing/bent": "^{{version}}" "@freesewing/bent": "^{{version}}"
"@freesewing/plugin-buttons": "^{{version}}" "@freesewing/plugin-buttons": "^{{version}}"
models:
peer:
"@freesewing/utils": "^{{version}}"
mui-theme: mui-theme:
peer: peer:
"@material-ui/core": "^4.0.1" "@material-ui/core": "^4.0.1"
"react": "^16.8" "react": "^16.8"
"react-dom": "^16.8" "react-dom": "^16.8"
pattern-info:
peer:
"@freesewing/core": "^{{version}}"
"@freesewing/plugin-bundle": "^{{version}}"
patterns:
_:
"@freesewing/aaron": "^{{version}}"
"@freesewing/benjamin": "^{{version}}"
"@freesewing/bent": "^{{version}}"
"@freesewing/brian": "^{{version}}"
"@freesewing/bruce": "^{{version}}"
"@freesewing/carlita": "^{{version}}"
"@freesewing/carlton": "^{{version}}"
"@freesewing/cathrin": "^{{version}}"
"@freesewing/florent": "^{{version}}"
"@freesewing/huey": "^{{version}}"
"@freesewing/hugo": "^{{version}}"
"@freesewing/jaeger": "^{{version}}"
"@freesewing/shin": "^{{version}}"
"@freesewing/simon": "^{{version}}"
"@freesewing/sven": "^{{version}}"
"@freesewing/tamiko": "^{{version}}"
"@freesewing/trayvon": "^{{version}}"
"@freesewing/wahid": "^{{version}}"
peer:
"@freesewing/core": "^{{version}}"
"@freesewing/plugin-bundle": "^{{version}}"
"@freesewing/plugin-buttons": "^{{version}}"
plugin-bundle: plugin-bundle:
_: _:
"@freesewing/plugin-cutonfold": "^{{version}}" "@freesewing/plugin-cutonfold": "^{{version}}"
@ -165,6 +140,13 @@ simon:
"@freesewing/brian": "^{{version}}" "@freesewing/brian": "^{{version}}"
"@freesewing/plugin-buttons": "^{{version}}" "@freesewing/plugin-buttons": "^{{version}}"
"@freesewing/plugin-flip": "^{{version}}" "@freesewing/plugin-flip": "^{{version}}"
simone:
peer:
"@freesewing/brian": "^{{version}}"
"@freesewing/simon": "^{{version}}"
"@freesewing/plugin-buttons": "^{{version}}"
"@freesewing/plugin-flip": "^{{version}}"
"@freesewing/plugin-bust": "^{{version}}"
utils: utils:
peer: peer:
"tlds": "^0.203.1" "tlds": "^0.203.1"

View file

@ -18,8 +18,8 @@ i18n: "Translations for the FreeSewing project"
jaeger: "A FreeSewing pattern for a sport coat style jacket" jaeger: "A FreeSewing pattern for a sport coat style jacket"
models: "Body measurements data for a range of default sizes" models: "Body measurements data for a range of default sizes"
mui-theme: "A Material-UI theme for FreeSewing web UIs" mui-theme: "A Material-UI theme for FreeSewing web UIs"
patterns: "An umbrella package for all FreeSewing patterns"
pattern-info: "Information about available freesewing patterns" pattern-info: "Information about available freesewing patterns"
penelope: "A FreeSewing pattern for a pencil skirt"
plugin-banner: "A FreeSewing plugin to repeat text on a path" plugin-banner: "A FreeSewing plugin to repeat text on a path"
plugin-bundle: "An umbrella package of 8 essential FreeSewing build-time plugins" plugin-bundle: "An umbrella package of 8 essential FreeSewing build-time plugins"
plugin-bust: "A FreeSewing plugin that helps with bust-adjusting menswear patterns" plugin-bust: "A FreeSewing plugin that helps with bust-adjusting menswear patterns"
@ -44,6 +44,7 @@ rendertest: "A FreeSewing pattern to test (y)our render engine our CSS"
sandy: "A FreeSewing pattern for a circle skirt" sandy: "A FreeSewing pattern for a circle skirt"
shin: "A FreeSewing pattern for swim trunks" shin: "A FreeSewing pattern for swim trunks"
simon: "A FreeSewing pattern for a button down shirt" simon: "A FreeSewing pattern for a button down shirt"
simone: "A FreeSewing pattern for a button down shirt (Simone = Simon for people with breasts)"
sven: "A FreeSewing pattern for a straightforward sweater" sven: "A FreeSewing pattern for a straightforward sweater"
tamiko: "A FreeSewing pattern for a zero-waste top" tamiko: "A FreeSewing pattern for a zero-waste top"
theo: "A FreeSewing pattern for classic trousers" theo: "A FreeSewing pattern for classic trousers"
@ -51,3 +52,4 @@ trayvon: "A FreeSewing pattern for a tie"
tutorial: "A FreeSewing pattern for a baby bib that's used in our tutorial" tutorial: "A FreeSewing pattern for a baby bib that's used in our tutorial"
utils: "A collection of utilities shared across freesewing frontend projects" utils: "A collection of utilities shared across freesewing frontend projects"
wahid: "A FreeSewing pattern for a classic fitted waistcoat" wahid: "A FreeSewing pattern for a classic fitted waistcoat"
waralee: "A FreeSewing pattern for wrap pants"

View file

@ -70,6 +70,9 @@ packageJson:
- "defaultSa/*" - "defaultSa/*"
- "formatImperial/*" - "formatImperial/*"
- "formatMm/*" - "formatMm/*"
- "measurementAsMm/*"
- "measurementDiffers/*"
- "neckstimate/*"
- "optionDefault/*" - "optionDefault/*"
- "optionType/*" - "optionType/*"
- "roundMm/*" - "roundMm/*"
@ -79,7 +82,6 @@ packageJson:
- "smallestImperialStep/*" - "smallestImperialStep/*"
- "storage/*" - "storage/*"
- "tiler/*" - "tiler/*"
- "measurementAsMm/*"
- "validateEmail/*" - "validateEmail/*"
- "validateTld/*" - "validateTld/*"

View file

@ -0,0 +1,11 @@
# Change log for: {{{fullname}}}
{{{changelog}}}
## 2.0.0 (2019-08-25)
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.

View file

@ -21,7 +21,7 @@
"files": ["dist/*", "README.md", "package.json"], "files": ["dist/*", "README.md", "package.json"],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
{{{badges}}} {{{badges}}}
# {{{fullname}}} # {{{fullname}}}

View file

@ -1,5 +1,5 @@
{ {
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"npmClient": "yarn", "npmClient": "yarn",
"command": { "command": {
"publish": { "publish": {

View file

@ -63,26 +63,26 @@
"@storybook/addon-notes": "^5.0.10", "@storybook/addon-notes": "^5.0.10",
"@storybook/react": "^5.0.10", "@storybook/react": "^5.0.10",
"@svgr/rollup": "^4.3.2", "@svgr/rollup": "^4.3.2",
"ava": "^1.2.1", "ava": "^2.3.0",
"babel-loader": "^8.0.5", "babel-loader": "^8.0.5",
"chai": "^4.1.2", "chai": "^4.1.2",
"chai-string": "^1.4.0", "chai-string": "^1.4.0",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"codecov": "^3.1.0", "codecov": "^3.1.0",
"cross-env": "^5.1.4", "cross-env": "^6.0.0",
"eslint": "^5.0.1", "eslint": "^6.3.0",
"eslint-config-prettier": "^6.1.0", "eslint-config-prettier": "^6.1.0",
"eslint-config-standard": "^11.0.0", "eslint-config-standard": "^14.1.0",
"eslint-config-standard-react": "^6.0.0", "eslint-config-standard-react": "^6.0.0",
"eslint-plugin-import": "^2.13.0", "eslint-plugin-import": "^2.13.0",
"eslint-plugin-node": "^7.0.1", "eslint-plugin-node": "^10.0.0",
"eslint-plugin-prettier": "^2.7.0", "eslint-plugin-prettier": "^3.1.0",
"eslint-plugin-promise": "^4.0.0", "eslint-plugin-promise": "^4.0.0",
"eslint-plugin-react": "^7.10.0", "eslint-plugin-react": "^7.10.0",
"eslint-plugin-standard": "^3.1.0", "eslint-plugin-standard": "^4.0.1",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
"husky": "^1.3.1", "husky": "^3.0.5",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"jsonlint": "^1.6.3", "jsonlint": "^1.6.3",
"lerna": "^3.13.3", "lerna": "^3.13.3",
@ -98,13 +98,13 @@
"react-dom": "^16.4.1", "react-dom": "^16.4.1",
"react-intl": "^2.8.0", "react-intl": "^2.8.0",
"react-scripts": "^3.0.0", "react-scripts": "^3.0.0",
"rimraf": "^2.6.3", "rimraf": "^3.0.0",
"rmfr": "^2.0.0", "rmfr": "^2.0.0",
"rollup": "1.17.0", "rollup": "1.17.0",
"rollup-plugin-babel": "^4.3.2", "rollup-plugin-babel": "^4.3.2",
"rollup-plugin-babel-minify": "^8.0.0", "rollup-plugin-babel-minify": "^8.0.0",
"rollup-plugin-commonjs": "10.0.1", "rollup-plugin-commonjs": "10.0.1",
"rollup-plugin-filesize": "^4.0.1", "rollup-plugin-filesize": "^6.2.0",
"rollup-plugin-json": "^4.0.0", "rollup-plugin-json": "^4.0.0",
"rollup-plugin-node-resolve": "5.2.0", "rollup-plugin-node-resolve": "5.2.0",
"rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-peer-deps-external": "^2.2.0",
@ -113,7 +113,7 @@
"rollup-plugin-terser": "^4.0.4", "rollup-plugin-terser": "^4.0.4",
"rollup-plugin-url": "^2.2.1", "rollup-plugin-url": "^2.2.1",
"rollup-plugin-yaml": "^1.1.0", "rollup-plugin-yaml": "^1.1.0",
"standard": "^12.0.1", "standard": "^14.0.2",
"storybook-addon-material-ui": "^0.9.0-alpha.18", "storybook-addon-material-ui": "^0.9.0-alpha.18",
"uglifycss": "^0.0.29", "uglifycss": "^0.0.29",
"verdaccio": ">=3.12.0" "verdaccio": ">=3.12.0"
@ -137,7 +137,6 @@
"@freesewing/jaeger": "file:packages/jaeger", "@freesewing/jaeger": "file:packages/jaeger",
"@freesewing/models": "file:packages/models", "@freesewing/models": "file:packages/models",
"@freesewing/mui-theme": "file:packages/mui-theme", "@freesewing/mui-theme": "file:packages/mui-theme",
"@freesewing/patterns": "file:packages/patterns",
"@freesewing/plugin-banner": "file:packages/plugin-banner", "@freesewing/plugin-banner": "file:packages/plugin-banner",
"@freesewing/plugin-bundle": "file:packages/plugin-bundle", "@freesewing/plugin-bundle": "file:packages/plugin-bundle",
"@freesewing/plugin-bust": "file:packages/plugin-bust", "@freesewing/plugin-bust": "file:packages/plugin-bust",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/aaron
## Unreleased
**Note:** Version bump only for package aaron
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package aaron
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package aaron
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package aaron
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package aaron
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/aaron" href="https://www.npmjs.com/package/@freesewing/aaron"
title="@freesewing/aaron on NPM" title="@freesewing/aaron on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1015,6 +1015,11 @@
resolved "https://registry.yarnpkg.com/@freesewing/plugin-svgattr/-/plugin-svgattr-2.0.0-beta.12.tgz#b6fa094bc2189dd4492e52e3a70b63c2eacccbf6" resolved "https://registry.yarnpkg.com/@freesewing/plugin-svgattr/-/plugin-svgattr-2.0.0-beta.12.tgz#b6fa094bc2189dd4492e52e3a70b63c2eacccbf6"
integrity sha512-5AD6yj1oGKTO/xW43CtT9h0Wt9wtg1uI6YB1JsAm4IvnpAlqeHTye/NrbQg22GV+6ERrgNEZ5F3lUh97By5Csw== integrity sha512-5AD6yj1oGKTO/xW43CtT9h0Wt9wtg1uI6YB1JsAm4IvnpAlqeHTye/NrbQg22GV+6ERrgNEZ5F3lUh97By5Csw==
"@freesewing/plugin-theme@beta":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@freesewing/plugin-theme/-/plugin-theme-2.0.0.tgz#2186cd5a995b4e64953f1a979f138f5b2c5ed76f"
integrity sha512-dKxJi8sz6/fs9Cx3qeOMECEwkqtsH0r4yKVxtZGCnq1jt54VlegwV7QaB1nxxGgmJuzjOKw6Fxj94ymkcZkkPg==
"@freesewing/plugin-title@^2.0.0-beta.12": "@freesewing/plugin-title@^2.0.0-beta.12":
version "2.0.0-beta.12" version "2.0.0-beta.12"
resolved "https://registry.yarnpkg.com/@freesewing/plugin-title/-/plugin-title-2.0.0-beta.12.tgz#2d6190914fb01cf3b3e2a05d37d1ebfc0440ac8b" resolved "https://registry.yarnpkg.com/@freesewing/plugin-title/-/plugin-title-2.0.0-beta.12.tgz#2d6190914fb01cf3b3e2a05d37d1ebfc0440ac8b"
@ -3875,14 +3880,16 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3:
estraverse "^4.1.1" estraverse "^4.1.1"
eslint-utils@^1.3.1: eslint-utils@^1.3.1:
version "1.3.1" version "1.4.2"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab"
integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==
dependencies:
eslint-visitor-keys "^1.0.0"
eslint-visitor-keys@^1.0.0: eslint-visitor-keys@^1.0.0:
version "1.0.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
eslint@^5.16.0: eslint@^5.16.0:
version "5.16.0" version "5.16.0"
@ -7257,7 +7264,7 @@ path-type@^3.0.0:
pify "^3.0.0" pify "^3.0.0"
"pattern@link:..": "pattern@link:..":
version "2.0.0-beta.29" version "2.0.0"
pbkdf2@^3.0.3: pbkdf2@^3.0.3:
version "3.0.17" version "3.0.17"

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/aaron", "name": "@freesewing/aaron",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a A-shirt or tank top", "description": "A FreeSewing pattern for a A-shirt or tank top",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,9 +33,9 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43", "@freesewing/plugin-bundle": "^2.1.0-alpha.0",
"@freesewing/brian": "^2.0.0-beta.43" "@freesewing/brian": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -46,14 +46,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -81,7 +81,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/benjamin
## Unreleased
**Note:** Version bump only for package benjamin
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package benjamin
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package benjamin
## 2.0.2 (2019-09-06)
### Fixed
- Added bandLength option to fit optiongroup (it was missing)
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package benjamin
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/benjamin" href="https://www.npmjs.com/package/@freesewing/benjamin"
title="@freesewing/benjamin on NPM" title="@freesewing/benjamin on NPM"

View file

@ -1,27 +1,27 @@
import { version } from "../package.json"; import { version } from '../package.json'
export default { export default {
name: "benjamin", name: 'benjamin',
version: version, version: version,
design: "Wouter Van Wageningen", design: 'Wouter Van Wageningen',
code: "Wouter Van Wageningen", code: 'Wouter Van Wageningen',
department: "accessories", department: 'accessories',
type: "pattern", type: 'pattern',
difficulty: 3, difficulty: 3,
tags: ["top", "basics"], tags: ['top', 'basics'],
optionGroups: { optionGroups: {
fit: ["collarEase", "adjustmentRibbon"], fit: ['collarEase', 'adjustmentRibbon', 'bandLength'],
style: ["tipWidth", "knotWidth", "bowLength", "bowStyle", "endStyle"] style: ['tipWidth', 'knotWidth', 'bowLength', 'bowStyle', 'endStyle']
}, },
measurements: ["neckCircumference"], measurements: ['neckCircumference'],
dependencies: {}, dependencies: {},
inject: { inject: {
bow1: "base", bow1: 'base',
bow2: "base", bow2: 'base',
bow3: "base" bow3: 'base'
}, },
hide: ["base"], hide: ['base'],
parts: ["ribbon"], parts: ['ribbon'],
options: { options: {
transitionLength: 0.7, // 70% of bandLength transitionLength: 0.7, // 70% of bandLength
bandLength: { bandLength: {
@ -55,13 +55,13 @@ export default {
max: 6 max: 6
}, },
bowStyle: { bowStyle: {
dflt: "butterfly", dflt: 'butterfly',
list: ["diamond", "butterfly", "square", "widesquare"] list: ['diamond', 'butterfly', 'square', 'widesquare']
}, },
endStyle: { endStyle: {
dflt: "straight", dflt: 'straight',
list: ["straight", "pointed", "rounded"] list: ['straight', 'pointed', 'rounded']
}, },
adjustmentRibbon: { bool: false } adjustmentRibbon: { bool: false }
} }
}; }

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/benjamin", "name": "@freesewing/benjamin",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a bow tie", "description": "A FreeSewing pattern for a bow tie",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,8 +33,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -45,14 +45,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -80,7 +80,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/bent
## Unreleased
**Note:** Version bump only for package bent
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package bent
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package bent
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package bent
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package bent
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/bent" href="https://www.npmjs.com/package/@freesewing/bent"
title="@freesewing/bent on NPM" title="@freesewing/bent on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/bent", "name": "@freesewing/bent",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a menswear body block with a two-part sleeve", "description": "A FreeSewing pattern for a menswear body block with a two-part sleeve",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,9 +33,9 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43", "@freesewing/plugin-bundle": "^2.1.0-alpha.0",
"@freesewing/brian": "^2.0.0-beta.43" "@freesewing/brian": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -46,14 +46,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -81,7 +81,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/brian
## Unreleased
**Note:** Version bump only for package brian
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package brian
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package brian
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package brian
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package brian
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/brian" href="https://www.npmjs.com/package/@freesewing/brian"
title="@freesewing/brian on NPM" title="@freesewing/brian on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/brian", "name": "@freesewing/brian",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a basic body block for menswear", "description": "A FreeSewing pattern for a basic body block for menswear",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,8 +33,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -45,14 +45,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -80,7 +80,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/bruce
## Unreleased
**Note:** Version bump only for package bruce
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package bruce
## 2.0.3 (2019-09-15)
### Fixed
- [#106](https://github.com/freesewing/freesewing/issues/106): Fix incorrect hem allowance
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package bruce
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package bruce
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/bruce" href="https://www.npmjs.com/package/@freesewing/bruce"
title="@freesewing/bruce on NPM" title="@freesewing/bruce on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/bruce", "name": "@freesewing/bruce",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for boxer briefs", "description": "A FreeSewing pattern for boxer briefs",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,8 +33,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -45,14 +45,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -80,7 +80,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -31,18 +31,28 @@ export default function(part) {
) )
// Path // Path
paths.seam = new Path() paths.saBase = new Path()
.move(points.topLeft) .move(points.bottomRight)
.line(points.bottomLeft)
.line(points.bottomRight)
.line(points.tip) .line(points.tip)
.curve(points.tipCpBottom, points.tipCpTop, points.topLeft) .curve(points.tipCpBottom, points.tipCpTop, points.topLeft)
.line(points.bottomLeft)
paths.hemBase = new Path().move(points.bottomLeft).line(points.bottomRight)
paths.saBase.render = false
paths.hemBase.render = false
paths.seam = paths.saBase
.join(paths.hemBase)
.close() .close()
.attr('class', 'fabric') .attr('class', 'fabric')
// Complete pattern? // Complete pattern?
if (complete) { if (complete) {
if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') if (sa) {
paths.sa = paths.saBase
.offset(sa)
.join(paths.hemBase.offset(sa * 2))
.close()
.attr('class', 'fabric sa')
}
points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)
macro('title', { macro('title', {
at: points.title.shift(-90, 15), at: points.title.shift(-90, 15),

View file

@ -44,12 +44,16 @@ export default function(part) {
points.topRight = points.topRight.shift(90, store.get('frontRise')) points.topRight = points.topRight.shift(90, store.get('frontRise'))
// Path // Path
paths.seam = new Path() paths.saBase = new Path()
.move(points.topLeft) .move(points.bottomLeft)
.line(points.topLeft)
.line(points.topRight) .line(points.topRight)
.line(points.bottomRight) .line(points.bottomRight)
.line(points.bottomLeft) paths.hemBase = new Path().move(points.bottomRight).line(points.bottomLeft)
.line(points.topLeft) paths.saBase.render = false
paths.hemBase.render = false
paths.seam = paths.saBase
.join(paths.hemBase)
.close() .close()
.attr('class', 'fabric') .attr('class', 'fabric')
@ -65,7 +69,11 @@ export default function(part) {
title: 'side' title: 'side'
}) })
if (sa) { if (sa) {
paths.sa = paths.seam.offset(sa * -1).attr('class', 'fabric sa') paths.sa = paths.saBase
.offset(sa * -1)
.join(paths.hemBase.offset(sa * -2))
.close()
.attr('class', 'fabric sa')
} }
macro('grainline', { macro('grainline', {
from: new Point(points.bottomRight.x / 2, points.bottomRight.y), from: new Point(points.bottomRight.x / 2, points.bottomRight.y),

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/carlita
## Unreleased
**Note:** Version bump only for package carlita
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package carlita
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package carlita
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package carlita
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package carlita
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/carlita" href="https://www.npmjs.com/package/@freesewing/carlita"
title="@freesewing/carlita on NPM" title="@freesewing/carlita on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/carlita", "name": "@freesewing/carlita",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,12 +33,12 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43", "@freesewing/plugin-bundle": "^2.1.0-alpha.0",
"@freesewing/bent": "^2.0.0-beta.43", "@freesewing/bent": "^2.1.0-alpha.0",
"@freesewing/carlton": "^2.0.0-beta.43", "@freesewing/carlton": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43" "@freesewing/plugin-buttons": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -49,14 +49,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -84,7 +84,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/carlton
## Unreleased
**Note:** Version bump only for package carlton
## 2.0.4 (2019-09-27)
### Fixed
- [#108](https://github.com/freesewing/freesewing/issues/108): Fixed incorrect width of the Carlton tail
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package carlton
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package carlton
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package carlton
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/carlton" href="https://www.npmjs.com/package/@freesewing/carlton"
title="@freesewing/carlton on NPM" title="@freesewing/carlton on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/carlton", "name": "@freesewing/carlton",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat", "description": "A FreeSewing pattern for Sherlock Holmes cosplay; Or just a nice long coat",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,10 +33,10 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43", "@freesewing/plugin-bundle": "^2.1.0-alpha.0",
"@freesewing/bent": "^2.0.0-beta.43", "@freesewing/bent": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43" "@freesewing/plugin-buttons": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -47,14 +47,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -82,7 +82,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -19,13 +19,14 @@ export default function(part) {
points.fold2Top = points.cbTop.shift(0, store.get('cbToDart')) points.fold2Top = points.cbTop.shift(0, store.get('cbToDart'))
points.fold3Top = points.cbTop.shift(0, store.get('cbToDart') * 2) points.fold3Top = points.cbTop.shift(0, store.get('cbToDart') * 2)
points.fold4Top = points.fold3Top.shift(0, store.get('cbToDart') / 2) points.fold4Top = points.fold3Top.shift(0, store.get('cbToDart') / 2)
points.waistTop = points.fold4Top.shift(0, store.get('dartToSide')) points.fold5Top = points.fold4Top.shift(0, store.get('cbToDart') / 2)
points.waistTop = points.fold5Top.shift(0, store.get('dartToSide'))
// 12cm will do as we're just drawing a rectangle. // 12cm will do as we're just drawing a rectangle.
// But check that lenght > 12cm because doll clothes. // But check that lenght > 12cm because doll clothes.
let drawnLength = length < 120 ? length : 120 let drawnLength = length < 120 ? length : 120
for (let i of ['cb', 'fold1', 'fold2', 'fold3', 'fold4', 'waist']) { for (let i of ['cb', 'fold1', 'fold2', 'fold3', 'fold4', 'fold5', 'waist']) {
points[i + 'Bottom'] = points[i + 'Top'].shift(-90, drawnLength) points[i + 'Bottom'] = points[i + 'Top'].shift(-90, drawnLength)
if (i === 'cb' || i === 'waist') { if (i === 'cb' || i === 'waist') {
points[i + 'MidTop'] = points[i + 'Top'].shift(-90, drawnLength * 0.4) points[i + 'MidTop'] = points[i + 'Top'].shift(-90, drawnLength * 0.4)
@ -61,6 +62,8 @@ export default function(part) {
.line(points.cbMidBottom) .line(points.cbMidBottom)
.move(points.waistMidBottom) .move(points.waistMidBottom)
.line(points.waistMidTop) .line(points.waistMidTop)
.move(points.fold5Top)
.line(points.fold5Bottom)
.attr('class', 'fabric dashed') .attr('class', 'fabric dashed')
if (complete) { if (complete) {
@ -110,6 +113,11 @@ export default function(part) {
}) })
macro('hd', { macro('hd', {
from: points.fold4Bottom, from: points.fold4Bottom,
to: points.fold5Bottom,
y: points.cbBottom.y + sa + 15
})
macro('hd', {
from: points.fold5Bottom,
to: points.waistBottom, to: points.waistBottom,
y: points.cbBottom.y + sa + 15 y: points.cbBottom.y + sa + 15
}) })

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/cathrin
## Unreleased
**Note:** Version bump only for package cathrin
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package cathrin
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package cathrin
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package cathrin
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package cathrin
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/cathrin" href="https://www.npmjs.com/package/@freesewing/cathrin"
title="@freesewing/cathrin on NPM" title="@freesewing/cathrin on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/cathrin", "name": "@freesewing/cathrin",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a underbust corset / waist trainer", "description": "A FreeSewing pattern for a underbust corset / waist trainer",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,8 +33,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -45,14 +45,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -80,7 +80,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,48 @@
# Change log for: @freesewing/components
## Unreleased
### Changed
- Added Penelope and Waralee linedrawings
### Fixed
- Fixed display of nested option in SampleConfigurator
- Fixed conflicting key values in React components
## 2.0.4 (2019-09-27)
### Added
- Advanced options and settings are now hidden by default in DraftConfigurator
### Fixed
- [#104](https://github.com/freesewing/freesewing/issues/104): Fixed incorrect embed setting on Workbench pattern export
## 2.0.3 (2019-09-15)
### Changed
- Tweaked DraftConfigurator tags to match CSS rules after frontend upgrade to react-intl v3
## 2.0.2 (2019-09-06)
### Fixed
- [#104](https://github.com/freesewing/freesewing.org/issues/104): Changed `onDragEnd` to `onChangeCommitted` in slider element (change in material-ui API when slider came out of beta)
- Workbench now also lets you preload a `withBreasts` set of measurements
- DraftConfigurator now properly styles pattern options 3 levels deep
- [#105](https://github.com/freesewing/freesewing.org/issues/105): Moved state change in render loop to useEffect
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package components
## 2.0.0 (2019-08-25)
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.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/components" href="https://www.npmjs.com/package/@freesewing/components"
title="@freesewing/components on NPM" title="@freesewing/components on NPM"

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/components", "name": "@freesewing/components",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A collection of React components for FreeSewing web UIs", "description": "A collection of React components for FreeSewing web UIs",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -28,18 +28,18 @@
"peerDependencies": { "peerDependencies": {
"react": "^16.8", "react": "^16.8",
"prop-types": "15.7.2", "prop-types": "15.7.2",
"@freesewing/pattern-info": "^2.0.0-beta.43", "@freesewing/pattern-info": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-theme": "^2.0.0-beta.43", "@freesewing/plugin-theme": "^2.1.0-alpha.0",
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/models": "^2.0.0-beta.43", "@freesewing/models": "^2.1.0-alpha.0",
"@freesewing/examples": "^2.0.0-beta.43", "@freesewing/examples": "^2.1.0-alpha.0",
"@freesewing/rendertest": "^2.0.0-beta.43", "@freesewing/rendertest": "^2.1.0-alpha.0",
"@freesewing/tutorial": "^2.0.0-beta.43", "@freesewing/tutorial": "^2.1.0-alpha.0",
"typeface-roboto-condensed": "latest", "typeface-roboto-condensed": "latest",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"react-intl": "^2.8.0", "react-intl": "^2.8.0",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.0.1",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.0.1",
@ -71,7 +71,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -1,48 +1,49 @@
import React, { useState } from "react"; import React, { useState, useEffect } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import Radio from "@material-ui/core/Radio"; import Radio from '@material-ui/core/Radio'
import RadioGroup from "@material-ui/core/RadioGroup"; import RadioGroup from '@material-ui/core/RadioGroup'
import FormControlLabel from "@material-ui/core/FormControlLabel"; import FormControlLabel from '@material-ui/core/FormControlLabel'
const Bool = props => { const Bool = props => {
const [value, setValue] = useState(props.dflt); const [value, setValue] = useState(props.dflt)
useEffect(() => {
if (props.value !== value) setValue(props.value)
}, [props.value])
const toggle = () => { const toggle = () => {
props.updateValue(props.name, !value); props.updateValue(props.name, !value)
setValue(!value); setValue(!value)
}; }
// Force state update when rerendering due to props change
if (props.value !== value) setValue(props.value);
return ( return (
<RadioGroup onChange={toggle} value={JSON.stringify(value)}> <RadioGroup onChange={toggle} value={JSON.stringify(value)}>
<FormControlLabel <FormControlLabel
control={<Radio color="primary" />} control={<Radio color="primary" />}
value="false" value="false"
checked={value === "false" || value === false ? true : false} checked={value === 'false' || value === false ? true : false}
label={props.labels[0]} label={props.labels[0]}
className="po-list-item" className="po-list-item"
/> />
<FormControlLabel <FormControlLabel
control={<Radio color="primary" />} control={<Radio color="primary" />}
value="true" value="true"
checked={value === "true" || value === true ? true : false} checked={value === 'true' || value === true ? true : false}
label={props.labels[1]} label={props.labels[1]}
className="po-list-item" className="po-list-item"
/> />
</RadioGroup> </RadioGroup>
); )
}; }
Bool.propTypes = { Bool.propTypes = {
dflt: PropTypes.bool, dflt: PropTypes.bool,
labels: PropTypes.array, labels: PropTypes.array,
updateValue: PropTypes.func.isRequired, updateValue: PropTypes.func.isRequired,
name: PropTypes.string.isRequired name: PropTypes.string.isRequired
}; }
Bool.defaultProps = { Bool.defaultProps = {
dflt: false, dflt: false,
labels: ["false", "true"] labels: ['false', 'true']
}; }
export default Bool; export default Bool

View file

@ -1,17 +1,18 @@
import React, { useState } from "react"; import React, { useState, useEffect } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import Radio from "@material-ui/core/Radio"; import Radio from '@material-ui/core/Radio'
import RadioGroup from "@material-ui/core/RadioGroup"; import RadioGroup from '@material-ui/core/RadioGroup'
import FormControlLabel from "@material-ui/core/FormControlLabel"; import FormControlLabel from '@material-ui/core/FormControlLabel'
const FormFieldList = props => { const FormFieldList = props => {
const [value, setValue] = useState(props.dflt); const [value, setValue] = useState(props.dflt)
useEffect(() => {
if (props.value !== value) setValue(props.value)
}, [props.value])
const update = evt => { const update = evt => {
props.updateValue(props.name, evt.target.value); props.updateValue(props.name, evt.target.value)
setValue(evt.target.value); setValue(evt.target.value)
}; }
// Force state update when rerendering due to props change
if (props.value !== value) setValue(props.value);
return ( return (
<RadioGroup onChange={update} value={value}> <RadioGroup onChange={update} value={value}>
@ -26,8 +27,8 @@ const FormFieldList = props => {
/> />
))} ))}
</RadioGroup> </RadioGroup>
); )
}; }
FormFieldList.propTypes = { FormFieldList.propTypes = {
dflt: PropTypes.oneOfType([ dflt: PropTypes.oneOfType([
@ -38,6 +39,6 @@ FormFieldList.propTypes = {
list: PropTypes.object, list: PropTypes.object,
updateValue: PropTypes.func.isRequired, updateValue: PropTypes.func.isRequired,
name: PropTypes.string.isRequired name: PropTypes.string.isRequired
}; }
export default FormFieldList; export default FormFieldList

View file

@ -1,26 +1,26 @@
import React, { useState } from "react"; import React, { useState, useEffect } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import Slider from "@material-ui/core/Slider"; import Slider from '@material-ui/core/Slider'
import { withStyles } from "@material-ui/core/styles"; import { withStyles } from '@material-ui/core/styles'
const PaddedSlider = withStyles({ const PaddedSlider = withStyles({
container: { container: {
padding: "25px 0" padding: '25px 0'
}, },
track: { height: "4px" }, track: { height: '4px' },
thumb: { width: "16px", height: "16px" } thumb: { width: '16px', height: '16px' }
})(Slider); })(Slider)
const FormFieldSlider = props => { const FormFieldSlider = props => {
const [value, setValue] = useState(props.value); const [value, setValue] = useState(props.value)
useEffect(() => {
if (props.value !== value) setValue(props.value)
}, [props.value])
const update = (evt, newValue) => { const update = (evt, newValue) => {
props.updateValue(props.name, newValue, evt); props.updateValue(props.name, newValue, evt)
setValue(newValue); setValue(newValue)
}; }
// Force state update when rerendering due to props change
if (props.value !== value) setValue(props.value);
return ( return (
<PaddedSlider <PaddedSlider
@ -29,15 +29,15 @@ const FormFieldSlider = props => {
max={props.max} max={props.max}
step={props.step} step={props.step}
onChange={update} onChange={update}
onDragEnd={update} onChangeCommitted={update}
classes={{ classes={{
track: "slider-track", track: 'slider-track',
thumb: "slider-thumb" thumb: 'slider-thumb'
}} }}
aria-labelledby={props.label} aria-labelledby={props.label}
/> />
); )
}; }
FormFieldSlider.propTypes = { FormFieldSlider.propTypes = {
min: PropTypes.number, min: PropTypes.number,
@ -46,13 +46,13 @@ FormFieldSlider.propTypes = {
updateValue: PropTypes.func.isRequired, updateValue: PropTypes.func.isRequired,
name: PropTypes.string.isRequired, name: PropTypes.string.isRequired,
label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])]) label: PropTypes.oneOfType([PropTypes.string, PropTypes.oneOf([false])])
}; }
FormFieldSlider.defaultProps = { FormFieldSlider.defaultProps = {
min: 0, min: 0,
max: 100, max: 100,
step: 0.1, step: 0.1,
label: false label: false
}; }
export default FormFieldSlider; export default FormFieldSlider

View file

@ -1,9 +1,9 @@
import React from "react"; import React from 'react'
import logoPathString from "./logo-path"; import logoPathString from './logo-path'
const Snippets = props => { const Snippets = props => {
const fill = { fill: "currentColor", stroke: "none" }; const fill = { fill: 'currentColor', stroke: 'none' }
const stroke = { fill: "none", stroke: "currentColor" }; const stroke = { fill: 'none', stroke: 'currentColor' }
return [ return [
<g id="notch" className="snippet notch" key="notch"> <g id="notch" className="snippet notch" key="notch">
<circle cy="0" cx="0" r="1.4" {...fill} /> <circle cy="0" cx="0" r="1.4" {...fill} />
@ -22,73 +22,32 @@ const Snippets = props => {
</g>, </g>,
<g id="buttonhole" className="snippet buttonhole" key="buttonhole"> <g id="buttonhole" className="snippet buttonhole" key="buttonhole">
<path d="M -1,-5 L 1,-5 L 1,5 L -1,5 z" {...stroke} /> <path d="M -1,-5 L 1,-5 L 1,5 L -1,5 z" {...stroke} />
<path <path d="M -1,-5 L 1,-5 L 1,-4 L -1,-4 z M -1,5 L 1,5 L 1,4 L -1,4 z" {...fill} />
d="M -1,-5 L 1,-5 L 1,-4 L -1,-4 z M -1,5 L 1,5 L 1,4 L -1,4 z"
{...fill}
/>
</g>, </g>,
<radialGradient <radialGradient key="grad" id="snap-male-grad" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
id="snap-male-grad" <stop offset="30%" style={{ stopColor: 'rgb(235,235,235)', stopOpacity: 1 }} />
cx="50%" <stop offset="80%" style={{ stopColor: 'rgb(100,100,100)', stopOpacity: 1 }} />
cy="50%"
r="50%"
fx="50%"
fy="50%"
>
<stop
offset="30%"
style={{ stopColor: "rgb(235,235,235)", stopOpacity: 1 }}
/>
<stop
offset="80%"
style={{ stopColor: "rgb(100,100,100)", stopOpacity: 1 }}
/>
</radialGradient>, </radialGradient>,
<g id="snap-male"> <g id="snap-male" key="snapmale">
<circle <circle cx="0" cy="0" r="3.4" style={{ stroke: '#666', fill: '#dddddd', strokeWidth: 0.3 }} />
cx="0" <circle cx="0" cy="0" r="1.8" style={{ stroke: 'none', fill: 'url(#snap-male-grad)' }} />
cy="0"
r="3.4"
style={{ stroke: "#666", fill: "#dddddd", strokeWidth: 0.3 }}
/>
<circle
cx="0"
cy="0"
r="1.8"
style={{ stroke: "none", fill: "url(#snap-male-grad)" }}
/>
<path <path
style={{ fill: "none", stroke: "#666", strokeWidth: 0.2 }} style={{ fill: 'none', stroke: '#666', strokeWidth: 0.2 }}
d="M -2,0 L -3,0 M 2,0 L 3,0 M 0,2 L 0,3 M 0,-2 L 0,-3 M 1.5,1.5 L 2.1,2.1 M -1.5,1.5 L -2.1,2.1 M -1.5,-1.5 L -2.1,-2.1 M 1.5,-1.5 L 2.1,-2.1" d="M -2,0 L -3,0 M 2,0 L 3,0 M 0,2 L 0,3 M 0,-2 L 0,-3 M 1.5,1.5 L 2.1,2.1 M -1.5,1.5 L -2.1,2.1 M -1.5,-1.5 L -2.1,-2.1 M 1.5,-1.5 L 2.1,-2.1"
/> />
</g>, </g>,
<g id="snap-female"> <g id="snap-female" key="snapfemale">
<circle <circle cx="0" cy="0" r="3.4" style={{ stroke: '#666', fill: '#bbbbbb', strokeWidth: 0.3 }} />
cx="0" <circle cx="0" cy="0" r="2" style={{ stroke: '#666', fill: '#dddddd', strokeWidth: 0.4 }} />
cy="0"
r="3.4"
style={{ stroke: "#666", fill: "#bbbbbb", strokeWidth: 0.3 }}
/>
<circle
cx="0"
cy="0"
r="2"
style={{ stroke: "#666", fill: "#dddddd", strokeWidth: 0.4 }}
/>
<path <path
style={{ fill: "none", stroke: "#666", strokeWidth: 0.5 }} style={{ fill: 'none', stroke: '#666', strokeWidth: 0.5 }}
d="M -1.7,-1 L -1.7,1 M 1.7,-1 L 1.7,1" d="M -1.7,-1 L -1.7,1 M 1.7,-1 L 1.7,1"
/> />
</g>, </g>,
<g <g id="logo" className="snippet logo" transform="translate(-23 -36)" key="logo">
id="logo"
className="snippet logo"
transform="translate(-23 -36)"
key="logo"
>
<path d={logoPathString} {...fill} /> <path d={logoPathString} {...fill} />
</g> </g>
]; ]
}; }
export default Snippets; export default Snippets

View file

@ -1,55 +1,56 @@
import React from "react"; import React from 'react'
const DesignPath = props => { const DesignPath = props => {
let output = []; let output = []
let i = 0; let i = 0
let from = null; let from = null
for (let op of props.path.ops) { for (let op of props.path.ops) {
if (op.type === "curve") { let key = props.part + props.name + i
if (op.type === 'curve') {
output.push( output.push(
<path <path
key={i} key={key + 'cp1'}
d={`M ${from.x},${from.y} L ${op.cp1.x},${op.cp1.y}`} d={`M ${from.x},${from.y} L ${op.cp1.x},${op.cp1.y}`}
className="design path cp" className="design path cp"
/> />
); )
i++; i++
output.push( output.push(
<path <path
key={i} key={key + 'cp2'}
d={`M ${op.to.x},${op.to.y} L ${op.cp2.x},${op.cp2.y}`} d={`M ${op.to.x},${op.to.y} L ${op.cp2.x},${op.cp2.y}`}
className="design path cp" className="design path cp"
/> />
); )
i++; i++
output.push( output.push(
<circle <circle
key={i} key={key + 'cpcirc1'}
cx={op.cp1.x} cx={op.cp1.x}
cy={op.cp1.y} cy={op.cp1.y}
r={3.5} r={3.5}
className="design path cp" className="design path cp"
/> />
); )
i++; i++
output.push( output.push(
<circle <circle
key={i} key={key + 'cpcirc2'}
cx={op.cp2.x} cx={op.cp2.x}
cy={op.cp2.y} cy={op.cp2.y}
r={3.5} r={3.5}
className="design path cp" className="design path cp"
/> />
); )
from = op.to; from = op.to
} else if (op.type !== "close") from = op.to; } else if (op.type !== 'close') from = op.to
} }
output.push( output.push(
<path <path
key={"dpath-" + props.name} key={props.part + props.name + 'dpath'}
d={props.path.asPathstring()} d={props.path.asPathstring()}
onClick={() => onClick={() =>
props.raiseEvent("path", { props.raiseEvent('path', {
path: props.path, path: props.path,
name: props.name, name: props.name,
part: props.part part: props.part
@ -57,8 +58,8 @@ const DesignPath = props => {
} }
className="design hovertrap" className="design hovertrap"
/> />
); )
return output; return output
}; }
export default DesignPath; export default DesignPath

View file

@ -0,0 +1,4 @@
import React from 'react'
import PatternOptionBool from '../PatternOptionBool'
export default props => <PatternOptionBool {...props} name="advanced" />

View file

@ -0,0 +1,22 @@
import React from 'react'
import { storiesOf } from '@storybook/react'
import Sa from '.'
const props = {
raiseEvent: (type, data) => console.log(`Action of type ${type} triggered, data passed is`, data),
updateValue: (name, value) => console.log(`Updated setting ${name}, value is now: ${value}`),
name: 'sa',
dflt: 'dflt',
title: 'Seam allowance',
desc:
"This is the seam allowance description. I'm wrapped in a p tag. This component only sets the CSS class on a non-default value. It's up to you to supply the CSS to style it.",
labels: {
none: 'No seam allowance',
dflt: 'Standard seam allowance',
custom: 'Custom seam allowance'
}
}
storiesOf('Low level/DraftSettingSa', module)
.add('Metric', () => <Sa {...props} units="metric" />)
.add('Imperial', () => <Sa {...props} units="imperial" />)

View file

@ -1,51 +1,50 @@
import React, { useState } from "react"; import React, { useState } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import DraftSettingSa from "../DraftSettingSa"; import DraftSettingSa from '../DraftSettingSa'
import DraftSettingMargin from "../DraftSettingMargin"; import DraftSettingMargin from '../DraftSettingMargin'
import DraftSettingComplete from "../DraftSettingComplete"; import DraftSettingComplete from '../DraftSettingComplete'
import DraftSettingPaperless from "../DraftSettingPaperless"; import DraftSettingPaperless from '../DraftSettingPaperless'
import DraftSettingUnits from "../DraftSettingUnits"; import DraftSettingAdvanced from '../DraftSettingAdvanced'
import DraftSettingLanguage from "../DraftSettingLanguage"; import DraftSettingUnits from '../DraftSettingUnits'
import DraftSettingOnly from "../DraftSettingOnly"; import DraftSettingLanguage from '../DraftSettingLanguage'
import RightIcon from "@material-ui/icons/KeyboardArrowRight"; import DraftSettingOnly from '../DraftSettingOnly'
import RightIcon from '@material-ui/icons/KeyboardArrowRight'
const DraftSettings = props => { const DraftSettings = props => {
const [expanded, setExpanded] = useState([]); const [expanded, setExpanded] = useState([])
const toggleGroup = group => { const toggleGroup = group => {
let shown = expanded.slice(0); let shown = expanded.slice(0)
let index = shown.indexOf(group); let index = shown.indexOf(group)
if (index === -1) shown.push(group); if (index === -1) shown.push(group)
else shown.splice(index, 1); else shown.splice(index, 1)
setExpanded(shown); setExpanded(shown)
}; }
const getDefault = setting => { const getDefault = setting => {
if (props.recipe && typeof props.recipe.settings[setting] !== "undefined") if (props.recipe && typeof props.recipe.settings[setting] !== 'undefined')
return props.recipe.settings[setting]; return props.recipe.settings[setting]
switch (setting) { switch (setting) {
case "sa": case 'sa':
return 10; return 10
case "only": case 'only':
return "dflt"; return 'dflt'
case "complete": case 'complete':
return true; return true
case "margin": case 'margin':
return 2; return 2
case "units": case 'units':
return props.units; return props.units
default: default:
return false; return false
}
} }
};
let noyes = [ let noyes = [<FormattedMessage id="app.no" />, <FormattedMessage id="app.yes" />]
<FormattedMessage id="app.no" />, let hideshow = [<FormattedMessage id="app.hide" />, <FormattedMessage id="app.show" />]
<FormattedMessage id="app.yes" />
];
let units = { let units = {
metric: <FormattedMessage id="app.metricUnits" />, metric: <FormattedMessage id="app.metricUnits" />,
imperial: <FormattedMessage id="app.imperialUnits" /> imperial: <FormattedMessage id="app.imperialUnits" />
}; }
const addProps = setting => { const addProps = setting => {
const labels = { const labels = {
sa: { sa: {
@ -58,8 +57,9 @@ const DraftSettings = props => {
custom: <FormattedMessage id="app.custom" /> custom: <FormattedMessage id="app.custom" />
}, },
paperless: noyes, paperless: noyes,
complete: noyes advanced: hideshow,
}; complete: hideshow
}
let childProps = { let childProps = {
raiseEvent: props.raiseEvent, raiseEvent: props.raiseEvent,
updateValue: props.updateValue, updateValue: props.updateValue,
@ -69,80 +69,74 @@ const DraftSettings = props => {
labels: labels[setting], labels: labels[setting],
noDocs: props.noDocs, noDocs: props.noDocs,
dflt: getDefault(setting) dflt: getDefault(setting)
}; }
childProps.title = ( childProps.title = <FormattedMessage id={'settings.' + setting + '.title'} />
<FormattedMessage id={"settings." + setting + ".title"} /> childProps.desc = <FormattedMessage id={'settings.' + setting + '.description'} />
); if (setting === 'only') {
childProps.desc = ( childProps.customDflt = []
<FormattedMessage id={"settings." + setting + ".description"} /> childProps.parts = {}
);
if (setting === "only") {
childProps.customDflt = [];
childProps.parts = {};
if (props.config.draftOrder) { if (props.config.draftOrder) {
for (let part of props.config.draftOrder) for (let part of props.config.draftOrder)
childProps.parts[part] = <FormattedMessage id={"parts." + part} />; childProps.parts[part] = <FormattedMessage id={'parts.' + part} />
} }
} }
if ( if (
typeof props.gist !== "undefined" && typeof props.gist !== 'undefined' &&
typeof props.gist.settings !== "undefined" && typeof props.gist.settings !== 'undefined' &&
typeof props.gist.settings[setting] !== "undefined" typeof props.gist.settings[setting] !== 'undefined'
) )
childProps.value = props.gist.settings[setting]; childProps.value = props.gist.settings[setting]
else childProps.value = null; else childProps.value = null
return childProps; return childProps
}; }
let groups = { let groups = {
preferences: [
<DraftSettingSa {...addProps("sa")} />,
<DraftSettingPaperless {...addProps("paperless")} />,
<DraftSettingComplete {...addProps("complete")} />
],
advanced: [ advanced: [
<DraftSettingOnly {...addProps("only")} />, <DraftSettingLanguage {...addProps('locale')} />,
<DraftSettingMargin {...addProps("margin")} />, <DraftSettingUnits {...addProps('units')} list={units} />,
<DraftSettingUnits {...addProps("units")} list={units} />, <DraftSettingComplete {...addProps('complete')} />,
<DraftSettingLanguage {...addProps("locale")} /> <DraftSettingMargin {...addProps('margin')} />,
<DraftSettingOnly {...addProps('only')} />
] ]
}; }
return ( return (
<React.Fragment>
<ul className="config l2 nogroups">
<DraftSettingSa {...addProps('sa')} />
<DraftSettingPaperless {...addProps('paperless')} />
<DraftSettingAdvanced {...addProps('advanced')} />
</ul>
{props.gist.settings.advanced ? (
<ul className="config l2"> <ul className="config l2">
{Object.keys(groups).map(group => { {Object.keys(groups).map(group => {
let open = true; let open = true
if (expanded.indexOf(group) === -1) open = false; if (expanded.indexOf(group) === -1) open = false
let children = null; let children = null
if (open) children = groups[group].map(component => component); if (open) children = groups[group].map(component => component)
return ( return (
<React.Fragment key={group}> <React.Fragment key={group}>
<li <li className={open ? 'expanded' : 'collapsed'} key={group + '-ghead'}>
className={open ? "expanded" : "collapsed"}
key={group + "-ghead"}
>
<span onClick={() => toggleGroup(group)}> <span onClick={() => toggleGroup(group)}>
<RightIcon <RightIcon className={'icon-col-exp ' + (open ? 'expanded' : 'collapsed')} />
className={ <FormattedMessage id={'optiongroups.' + group} />
"icon-col-exp " + (open ? "expanded" : "collapsed")
}
/>
<FormattedMessage id={"optiongroups." + group} />
</span> </span>
</li> </li>
{children} {children}
</React.Fragment> </React.Fragment>
); )
})} })}
</ul> </ul>
); ) : null}
}; </React.Fragment>
)
}
DraftSettings.propTypes = { DraftSettings.propTypes = {
config: PropTypes.object.isRequired config: PropTypes.object.isRequired
}; }
DraftSettings.defaultProps = {}; DraftSettings.defaultProps = {}
export default DraftSettings; export default DraftSettings

View file

@ -1,104 +1,104 @@
import React from "react"; import React from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import Pct from "../PatternOptionPercentage"; import Pct from '../PatternOptionPercentage'
import Deg from "../PatternOptionDegree"; import Deg from '../PatternOptionDegree'
import Mm from "../PatternOptionMillimeter"; import Mm from '../PatternOptionMillimeter'
import Bool from "../PatternOptionBool"; import Bool from '../PatternOptionBool'
import List from "../PatternOptionList"; import List from '../PatternOptionList'
import Count from "../PatternOptionCount"; import Count from '../PatternOptionCount'
import optionType from "@freesewing/utils/optionType"; import optionType from '@freesewing/utils/optionType'
import optionDefault from "@freesewing/utils/optionDefault"; import optionDefault from '@freesewing/utils/optionDefault'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import { injectIntl } from "react-intl"; import { injectIntl } from 'react-intl'
import RightIcon from '@material-ui/icons/KeyboardArrowRight'
const OptionGroup = props => { const OptionGroup = props => {
const renderOption = (name, sub = false) => { const renderOption = (name, sub = false) => {
let option = props.config.options[name]; let option = props.config.options[name]
let type = optionType(option); let type = optionType(option)
let stringKey = `options.${props.config.name}.${name}.`; let stringKey = `options.${props.config.name}.${name}.`
let extraProps = { let extraProps = {
name, name,
dflt: optionDefault(name, props.config.options[name], props.recipe), dflt: optionDefault(name, props.config.options[name], props.recipe),
units: props.units, units: props.units,
updateValue: props.updateValue, updateValue: props.updateValue,
raiseEvent: props.raiseEvent, raiseEvent: props.raiseEvent,
title: <FormattedMessage id={stringKey + "title"} />, title: <FormattedMessage id={stringKey + 'title'} />,
desc: <FormattedMessage id={stringKey + "description"} />, desc: <FormattedMessage id={stringKey + 'description'} />,
intl: props.intl, intl: props.intl,
pattern: props.config.name, pattern: props.config.name,
key: name, key: name,
noDocs: props.noDocs noDocs: props.noDocs
};
if (
typeof props.gist !== "undefined" &&
typeof props.gist.settings !== "undefined" &&
typeof props.gist.settings.options !== "undefined" &&
typeof props.gist.settings.options[name] !== "undefined"
)
extraProps.value = props.gist.settings.options[name];
else extraProps.value = null;
let noyes = [
<FormattedMessage id="app.no" />,
<FormattedMessage id="app.yes" />
];
switch (type) {
case "pct":
return <Pct {...option} {...extraProps} />;
break;
case "deg":
return <Deg {...option} {...extraProps} />;
break;
case "mm":
return <Mm {...option} {...extraProps} units={props.units} />;
break;
case "bool":
return <Bool {...option} {...extraProps} labels={noyes} />;
break;
case "list":
return <List {...option} {...extraProps} />;
break;
case "count":
return <Count {...option} {...extraProps} />;
break;
default:
throw new Error("Unsupported option type: " + type);
} }
}; if (
typeof props.gist !== 'undefined' &&
typeof props.gist.settings !== 'undefined' &&
typeof props.gist.settings.options !== 'undefined' &&
typeof props.gist.settings.options[name] !== 'undefined'
)
extraProps.value = props.gist.settings.options[name]
else extraProps.value = null
let noyes = [<FormattedMessage id="app.no" />, <FormattedMessage id="app.yes" />]
switch (type) {
case 'pct':
return <Pct {...option} {...extraProps} />
break
case 'deg':
return <Deg {...option} {...extraProps} />
break
case 'mm':
return <Mm {...option} {...extraProps} units={props.units} />
break
case 'bool':
return <Bool {...option} {...extraProps} labels={noyes} />
break
case 'list':
return <List {...option} {...extraProps} />
break
case 'count':
return <Count {...option} {...extraProps} />
break
default:
throw new Error('Unsupported option type: ' + type)
}
}
return ( return (
<React.Fragment> <React.Fragment>
{props.options.map(name => { {props.options.map(name => {
//let key = name; //let key = name;
let output = []; let output = []
if (typeof name === "object") { if (typeof name === 'object') {
//key = Object.keys(name).pop(); //key = Object.keys(name).pop();
// Subgroup // Subgroup
for (let subGroup of Object.keys(name)) { for (let subGroup of Object.keys(name)) {
let children = []
for (let option of name[subGroup]) children.push(renderOption(option, true))
output.push( output.push(
<span key={subGroup + "-title"} className="subheading"> <li>
<FormattedMessage id={"optiongroups." + subGroup} /> <span key={subGroup + '-title'} className="subheading">
<RightIcon className="icon-col-exp expanded" />
<FormattedMessage id={'optiongroups.' + subGroup} />
</span> </span>
); <ul className="config l4">{children}</ul>
let children = []; </li>
for (let option of name[subGroup]) )
children.push(renderOption(option, true));
output.push(<ul className="config l4">{children}</ul>);
} }
} else output.push(renderOption(name)); } else output.push(renderOption(name))
return output; return output
})} })}
</React.Fragment> </React.Fragment>
); )
}; }
OptionGroup.propTypes = { OptionGroup.propTypes = {
config: PropTypes.object.isRequired, config: PropTypes.object.isRequired,
options: PropTypes.array.isRequired, options: PropTypes.array.isRequired,
units: PropTypes.oneOf(["metric", "imperial"]).isRequired units: PropTypes.oneOf(['metric', 'imperial']).isRequired
}; }
OptionGroup.defaultProps = {}; OptionGroup.defaultProps = {}
export default injectIntl(OptionGroup); export default injectIntl(OptionGroup)

View file

@ -1,30 +1,30 @@
import React, { useState } from "react"; import React, { useState } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import OptionGroup from "../OptionGroup"; import OptionGroup from '../OptionGroup'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import RightIcon from "@material-ui/icons/KeyboardArrowRight"; import RightIcon from '@material-ui/icons/KeyboardArrowRight'
const PatternOptions = props => { const PatternOptions = props => {
const [expanded, setExpanded] = useState([]); const [expanded, setExpanded] = useState([])
const toggleGroup = group => { const toggleGroup = group => {
let shown = expanded.slice(0); let shown = expanded.slice(0)
let index = shown.indexOf(group); let index = shown.indexOf(group)
if (index === -1) shown.push(group); if (index === -1) shown.push(group)
else shown.splice(index, 1); else shown.splice(index, 1)
setExpanded(shown); setExpanded(shown)
}; }
const renderGroup = group => { const renderGroup = group => {
let open = true; let open = true
if (expanded.indexOf(group) === -1) open = false; if (expanded.indexOf(group) === -1) open = false
let output = []; let output = []
let children = null; let children = null
if (expanded.indexOf(group) !== -1) if (expanded.indexOf(group) !== -1)
children = ( children = (
<ul className="config l3"> <ul className="config l3">
<OptionGroup <OptionGroup
noDocs={props.noDocs} noDocs={props.noDocs}
key={group + "-group"} key={group + '-group'}
units={props.units} units={props.units}
config={props.config} config={props.config}
gist={props.gist} gist={props.gist}
@ -34,34 +34,35 @@ const PatternOptions = props => {
raiseEvent={props.raiseEvent} raiseEvent={props.raiseEvent}
/> />
</ul> </ul>
); )
output.push( output.push(
<li className={open ? "expanded" : "collapsed"} key={group + "-ghead"}> <li className={open ? 'expanded' : 'collapsed'} key={group + '-ghead'}>
<span onClick={() => toggleGroup(group)}> <span onClick={() => toggleGroup(group)}>
<RightIcon <RightIcon className={'icon-col-exp ' + (open ? 'expanded' : 'collapsed')} />
className={"icon-col-exp " + (open ? "expanded" : "collapsed")} <FormattedMessage id={'optiongroups.' + group} />
/>
<FormattedMessage id={"optiongroups." + group} />
</span> </span>
{children} {children}
</li> </li>
); )
return output; return output
}; }
return ( const children = []
<ul className="config l2"> for (let group in props.config.optionGroups) {
{Object.keys(props.config.optionGroups).map(group => renderGroup(group))} if (props.gist.settings.advanced || group !== 'advanced') {
</ul> children.push(renderGroup(group))
); }
}; }
return <ul className="config l2">{children}</ul>
}
PatternOptions.propTypes = { PatternOptions.propTypes = {
config: PropTypes.object.isRequired, config: PropTypes.object.isRequired,
raiseEvent: PropTypes.func raiseEvent: PropTypes.func
}; }
PatternOptions.defaultProps = {}; PatternOptions.defaultProps = {}
export default PatternOptions; export default PatternOptions

View file

@ -1,52 +1,52 @@
import React, { useState } from "react"; import React, { useState } from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import PatternOptions from "./PatternOptions"; import PatternOptions from './PatternOptions'
import DraftSettings from "./DraftSettings"; import DraftSettings from './DraftSettings'
const DraftConfigurator = props => { const DraftConfigurator = props => {
const [expanded, setExpanded] = useState([]); const [expanded, setExpanded] = useState([])
return ( return (
<ul className="config l1"> <ul className="config l1">
<li> <li>
<span>
<FormattedMessage id="app.patternOptions" /> <FormattedMessage id="app.patternOptions" />
</span>
<PatternOptions <PatternOptions
noDocs={props.noDocs} noDocs={props.noDocs}
config={props.config} config={props.config}
gist={props.gist} gist={props.gist}
recipe={props.recipe} recipe={props.recipe}
updateValue={(name, value) => updateValue={(name, value) => props.updateGist(value, 'settings', 'options', name)}
props.updateGist(value, "settings", "options", name)
}
raiseEvent={props.raiseEvent} raiseEvent={props.raiseEvent}
units={props.units} units={props.units}
/> />
</li> </li>
<li> <li>
<FormattedMessage id="app.draftSettings" /> <span>
<FormattedMessage id="app.settings" />
</span>
<DraftSettings <DraftSettings
noDocs={props.noDocs} noDocs={props.noDocs}
config={props.config} config={props.config}
gist={props.gist} gist={props.gist}
recipe={props.recipe} recipe={props.recipe}
updateValue={(name, value) => updateValue={(name, value) => props.updateGist(value, 'settings', name)}
props.updateGist(value, "settings", name)
}
raiseEvent={props.raiseEvent} raiseEvent={props.raiseEvent}
units={props.units} units={props.units}
/> />
</li> </li>
</ul> </ul>
); )
}; }
DraftConfigurator.propTypes = { DraftConfigurator.propTypes = {
units: PropTypes.oneOf(["metric", "imperial"]).isRequired units: PropTypes.oneOf(['metric', 'imperial']).isRequired
}; }
DraftConfigurator.defaultProps = { DraftConfigurator.defaultProps = {
noDocs: false noDocs: false
}; }
export default DraftConfigurator; export default DraftConfigurator

View file

@ -18,7 +18,7 @@ const Footer = props => {
left: { left: {
blog: 'https://' + props.language + '.freesewing.org/blog', blog: 'https://' + props.language + '.freesewing.org/blog',
aboutFreesewing: 'https://' + props.language + '.freesewing.org/docs/about', aboutFreesewing: 'https://' + props.language + '.freesewing.org/docs/about',
faq: 'https://' + props.language + '.freesewing.org/docs/faq' faq: 'https://' + props.language + '.freesewing.org/faq'
}, },
right: { right: {
becomeAPatron: 'https://' + props.language + '.freesewing.org/patrons/join', becomeAPatron: 'https://' + props.language + '.freesewing.org/patrons/join',

View file

@ -3,32 +3,29 @@ import PropTypes from 'prop-types'
import patterns from './patterns' import patterns from './patterns'
const LineDrawing = props => { const LineDrawing = props => {
return ( const attr = {
<svg style: props.style,
style={props.style} className: 'fs linedrawing ' + props.className,
className={'fs linedrawing ' + props.className} xmlns: 'http://www.w3.org/2000/svg',
xmlns="http://www.w3.org/2000/svg" viewBox: '0 0 270 270'
width={props.size} }
height={props.size} if (props.size) {
viewBox="0 0 270 270" attr.width = props.size
> attr.height = props.size
{patterns[props.pattern].map(el => el)} }
</svg> return <svg {...attr}>{patterns[props.pattern].map(el => el)}</svg>
)
} }
LineDrawing.propTypes = { LineDrawing.propTypes = {
size: PropTypes.number, size: PropTypes.number,
viewBox: PropTypes.string,
pattern: PropTypes.string, pattern: PropTypes.string,
style: PropTypes.object style: PropTypes.object
} }
LineDrawing.defaultProps = { LineDrawing.defaultProps = {
size: 64, size: false,
className: '', className: '',
pattern: 'aaron', pattern: 'aaron',
color: false,
style: {} style: {}
} }

View file

@ -76,7 +76,7 @@ const svg = {
/> />
], ],
carlita: [ carlita: [
<rect class="inside" width="36.455551" height="234.44821" x="46.884758" y="23.763041" />, <rect className="inside" width="36.455551" height="234.44821" x="46.884758" y="23.763041" />,
<path <path
className="primary" className="primary"
d="m 191.24517,25.745198 c 0,0.05771 5.3e-4,0.110241 0,0.167949 l -14.06322,0.377237 -18.26297,5.2002 c 2.14918,15.066533 1.41082,27.431452 -0.87592,38.353732 1.55852,17.188315 2.32116,35.218314 2.08153,54.038564 -0.25083,19.66574 -2.51608,39.79971 -3.22874,60.14051 -0.87138,24.86753 -0.1886,49.98843 -0.19482,74.1903 h 32.67655 5.69888 42.73279 c -0.006,-24.20187 0.6961,-49.32277 -0.17466,-74.1903 -0.71266,-20.3408 -2.99755,-40.47477 -3.24838,-60.14051 -0.23963,-18.82025 0.54212,-36.850249 2.10064,-54.038564 -2.28674,-10.92228 -3.04421,-23.287199 -0.89503,-38.353732 l -17.75809,-5.053438 -19.89801,-0.523999 c 0,-0.05637 5.3e-4,-0.111583 0,-0.167949 l -3.3259,0.08372 z m -142.955611,0.0036 -20.142441,5.751071 c 2.149189,15.066531 1.397392,27.422149 -0.889352,38.34443 1.55852,17.188312 2.32994,35.221411 2.090314,54.041661 -0.250833,19.66574 -2.522799,39.80127 -3.235462,60.14206 -0.871377,24.86753 -0.182395,49.98187 -0.188619,74.18307 H 64.294784 V 101.71782 C 58.908428,76.429557 48.445785,54.598209 48.289559,25.748815 Z m 36.384859,0 C 84.518192,54.598209 74.055549,76.429557 68.669193,101.71782 v 156.49329 h 38.370787 c -0.006,-24.2012 0.68276,-49.31554 -0.18862,-74.18307 -0.71266,-20.34079 -2.98515,-40.47632 -3.23598,-60.14206 -0.23963,-18.82025 0.53231,-36.853352 2.09083,-54.041664 -2.28674,-10.92228 -3.03854,-23.277899 -0.88935,-38.34443 z" d="m 191.24517,25.745198 c 0,0.05771 5.3e-4,0.110241 0,0.167949 l -14.06322,0.377237 -18.26297,5.2002 c 2.14918,15.066533 1.41082,27.431452 -0.87592,38.353732 1.55852,17.188315 2.32116,35.218314 2.08153,54.038564 -0.25083,19.66574 -2.51608,39.79971 -3.22874,60.14051 -0.87138,24.86753 -0.1886,49.98843 -0.19482,74.1903 h 32.67655 5.69888 42.73279 c -0.006,-24.20187 0.6961,-49.32277 -0.17466,-74.1903 -0.71266,-20.3408 -2.99755,-40.47477 -3.24838,-60.14051 -0.23963,-18.82025 0.54212,-36.850249 2.10064,-54.038564 -2.28674,-10.92228 -3.04421,-23.287199 -0.89503,-38.353732 l -17.75809,-5.053438 -19.89801,-0.523999 c 0,-0.05637 5.3e-4,-0.111583 0,-0.167949 l -3.3259,0.08372 z m -142.955611,0.0036 -20.142441,5.751071 c 2.149189,15.066531 1.397392,27.422149 -0.889352,38.34443 1.55852,17.188312 2.32994,35.221411 2.090314,54.041661 -0.250833,19.66574 -2.522799,39.80127 -3.235462,60.14206 -0.871377,24.86753 -0.182395,49.98187 -0.188619,74.18307 H 64.294784 V 101.71782 C 58.908428,76.429557 48.445785,54.598209 48.289559,25.748815 Z m 36.384859,0 C 84.518192,54.598209 74.055549,76.429557 68.669193,101.71782 v 156.49329 h 38.370787 c -0.006,-24.2012 0.68276,-49.31554 -0.18862,-74.18307 -0.71266,-20.34079 -2.98515,-40.47632 -3.23598,-60.14206 -0.23963,-18.82025 0.53231,-36.853352 2.09083,-54.041664 -2.28674,-10.92228 -3.03854,-23.277899 -0.88935,-38.34443 z"
@ -233,6 +233,16 @@ const svg = {
d="M 55.660883,61.69981 41.816658,72.032238 C 50.94618,91.608351 56.060714,125.39448 66.132389,139.08288 62.710885,127.8475 62.418098,105.38728 59.952128,92.055499 58.122131,82.162347 55.957618,72.250301 55.660883,61.69981 Z m 24.451914,0 13.844225,10.332428 C 84.8275,91.608351 76.012816,125.30584 65.941141,138.99424 c 3.421505,-11.23538 7.414441,-33.60696 9.880411,-46.938741 1.829997,-9.893152 3.99451,-19.805198 4.291245,-30.355689 z M 196.18798,44.925968 c -5.61536,0 -9.48696,0.897064 -11.97937,2.200604 l -6.57602,6.014984 c 2.6739,0.873199 5.28444,1.303383 7.823,1.467069 0.008,5.48e-4 0.0164,-5.48e-4 0.0243,0 7.6775,-0.605919 15.33074,0.26376 23.00433,0 0.009,-5.48e-4 0.0164,5.48e-4 0.025,0 2.54091,-0.163295 5.14597,-0.592852 7.823,-1.467069 l -6.55177,-6.014984 c -2.49241,-1.30354 -6.36401,-2.200604 -11.97937,-2.200604 -0.26676,0 -0.539,0.01893 -0.80655,0.02441 -0.26755,-0.0055 -0.53979,-0.02441 -0.80655,-0.02441 z" d="M 55.660883,61.69981 41.816658,72.032238 C 50.94618,91.608351 56.060714,125.39448 66.132389,139.08288 62.710885,127.8475 62.418098,105.38728 59.952128,92.055499 58.122131,82.162347 55.957618,72.250301 55.660883,61.69981 Z m 24.451914,0 13.844225,10.332428 C 84.8275,91.608351 76.012816,125.30584 65.941141,138.99424 c 3.421505,-11.23538 7.414441,-33.60696 9.880411,-46.938741 1.829997,-9.893152 3.99451,-19.805198 4.291245,-30.355689 z M 196.18798,44.925968 c -5.61536,0 -9.48696,0.897064 -11.97937,2.200604 l -6.57602,6.014984 c 2.6739,0.873199 5.28444,1.303383 7.823,1.467069 0.008,5.48e-4 0.0164,-5.48e-4 0.0243,0 7.6775,-0.605919 15.33074,0.26376 23.00433,0 0.009,-5.48e-4 0.0164,5.48e-4 0.025,0 2.54091,-0.163295 5.14597,-0.592852 7.823,-1.467069 l -6.55177,-6.014984 c -2.49241,-1.30354 -6.36401,-2.200604 -11.97937,-2.200604 -0.26676,0 -0.539,0.01893 -0.80655,0.02441 -0.26755,-0.0055 -0.53979,-0.02441 -0.80655,-0.02441 z"
/> />
], ],
penelope: [
<path
className="primary"
d="M 19.594116,33.914795 C 3.8686903,102.95337 23.42891,170.82044 25.345459,239.27399 h 92.359311 c 1.91655,-68.45355 21.47677,-136.32062 5.75135,-205.359195 z m 125.689084,0 c -15.72542,69.038575 3.8348,136.905645 5.75134,205.359195 h 92.35932 c 1.91655,-68.45355 21.47677,-136.32062 5.75134,-205.359195 z"
/>,
<path
className="secondary"
d="M 18.267517,41.643677 H 124.89807 Z m 125.804443,0 h 106.63055 z m 53.31116,144.533383 v 53.09693 z"
/>
],
sandy: [ sandy: [
<path <path
className="primary" className="primary"
@ -280,6 +290,33 @@ const svg = {
d="M 3.1756236,193.95004 H 16.903804 Z m 112.3124864,0 h 13.73619 z m 19.36418,0 h 13.72823 z m 112.31274,0 h 13.73619 z M 158.17531,85.431303 h 79.59289 m -15.05256,24.574867 v 59.78632 m -49.51627,-59.78632 v 59.78632 m -106.261495,8.66723 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.2276 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74971 m -0.749713,0 0.749713,-0.74971 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37512 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.37512 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20912 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.22761 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.209127 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374858 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.374858 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924798 0.92479867,0.92479867 0 0 1 -0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z m -0.18496,-15.389672 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739838 0.7398389,0.7398389 0 0 1 0.739839,0.739838 z m -1.114694,-0.375112 0.749713,0.749971 m -0.749713,0 0.749713,-0.749971 m 0.549941,0.375112 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924799,0.924798 z m -0.18496,-15.389976 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374907 0.749713,0.749816 m -0.749713,0 0.749713,-0.749816 m 0.549941,0.374907 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z M 65.448324,61.4141 h 1.687112" d="M 3.1756236,193.95004 H 16.903804 Z m 112.3124864,0 h 13.73619 z m 19.36418,0 h 13.72823 z m 112.31274,0 h 13.73619 z M 158.17531,85.431303 h 79.59289 m -15.05256,24.574867 v 59.78632 m -49.51627,-59.78632 v 59.78632 m -106.261495,8.66723 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.2276 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74971 m -0.749713,0 0.749713,-0.74971 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37512 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.37512 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20912 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.22761 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.209127 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374858 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.374858 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924798 0.92479867,0.92479867 0 0 1 -0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z m -0.18496,-15.389672 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739838 0.7398389,0.7398389 0 0 1 0.739839,0.739838 z m -1.114694,-0.375112 0.749713,0.749971 m -0.749713,0 0.749713,-0.749971 m 0.549941,0.375112 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924799,0.924798 z m -0.18496,-15.389976 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374907 0.749713,0.749816 m -0.749713,0 0.749713,-0.749816 m 0.549941,0.374907 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z M 65.448324,61.4141 h 1.687112"
/> />
], ],
simone: [
<rect className="inside" y="51.853992" x="54.388508" height="14.533224" width="23.769028" />,
<path
className="primary"
d="m 184.56241,54.646523 -27.17558,4.140113 c 0.18743,1.818287 -0.19256,12.804107 -0.19256,20.22717 0,7.385706 -0.55587,13.723097 -2.99269,17.659607 -1.31226,1.949512 3.37191,6.539197 1.6848,6.539197 0,5.69089 2.06222,21.79998 2.06222,44.56226 0,16.17764 -3.00322,29.31816 -3.37807,33.32964 -0.74972,6.636 0,19.6253 0,19.6253 h 8.44069 33.17714 10.87187 25.68309 8.80965 c 0,0 0.75022,-12.93307 0,-19.56907 -0.56203,-4.01148 -3.56217,-20.13725 -3.56217,-36.31438 0,-22.76253 1.87736,-34.94512 1.87736,-40.68685 1.312,0.31272 2.80938,-5.536585 1.68481,-7.486097 -2.43709,-3.93651 -3.18526,-10.273901 -3.18526,-17.659607 0,-7.423063 -0.37486,-18.408883 0,-20.22717 l -27.36814,-4.140113 c -10.09186,-3.699246 -14.3832,-3.196604 -26.43716,0 z M 66.198037,63.363612 h 3.749082 c 0.562285,0 1.312255,-0.05625 1.874541,-0.168711 0.562285,0.112457 1.124827,0.168711 1.87454,0.168711 h 1.687113 V 200.72904 H 31.331734 c -1.311999,0 -8.435151,0 -8.435151,0 0,0 -0.749816,-12.99033 0,-19.62632 0.374882,-4.01148 3.374045,-17.15176 3.374045,-33.32914 0,-22.76228 -2.061969,-38.86648 -2.061969,-44.55738 1.687061,0 -2.999265,-4.592762 -1.687087,-6.542274 2.436877,-3.93651 2.99924,-10.27236 2.99924,-17.658066 0,-7.423063 0.374908,-18.407805 0.187454,-20.226117 l 27.180558,-4.142707 c 0,3.692828 2.624511,8.716576 13.309213,8.716576 z"
/>,
<path
className="primary"
d="m 211.76803,48.873751 c -1.21135,-2.371258 -28.04853,-2.056094 -27.62079,0 v 5.826613 c 10.80666,1.151375 19.67408,-0.05382 27.62079,0 z M 64.510925,62.182659 V 200.72904 h 36.553415 c 1.31226,0 8.81016,0 8.81016,0 0,0 0.74997,-12.9341 0,-19.57009 -0.56228,-4.01149 -3.56139,-20.13238 -3.56139,-36.30951 0,-22.76253 1.87454,-34.95051 1.87454,-40.69224 1.312,0.31298 2.81168,-5.533762 1.68711,-7.483274 -2.43708,-3.93651 -3.1868,-10.27236 -3.1868,-17.658066 0,-7.423063 -0.37485,-18.407805 0,-20.226117 L 79.319822,54.647036 c 0,3.599113 -4.686223,6.560867 -14.621212,6.823293 -0.375113,0 0.187429,0.71233 -0.187685,0.71233 z"
/>,
<path
className="primary"
d="m 78.757537,49.885739 c 0,-4.480129 -25.681028,-3.20545 -25.681028,0 v 5.417399 c 11.059559,-4.798808 18.557722,-2.755582 25.681028,0 z"
/>,
<path
className="primary"
d="m 52.326539,55.659278 1.124827,-6.110962 c 0,3.917767 2.436826,7.666823 11.996958,11.865784 l -4.498795,7.3294 c -4.499052,-4.498872 -8.060705,-9.503852 -8.62299,-13.084222 z m 27.36814,0 -0.937142,-5.661082 c 0,2.305677 -2.249397,7.216943 -11.622101,11.415904 l 3.93651,7.3294 c 4.498795,-4.498872 8.060448,-9.503852 8.622733,-13.084222 z"
/>,
<path
className="primary"
d="m 157.61326,58.539359 c -3.60219,0 -8.87496,7.204363 -11.74626,17.41577 -7.98748,28.566911 -13.88672,112.983381 -11.01541,117.838541 0,3.75884 0.10441,8.71851 0.15662,12.16411 h 13.62567 c 0,-3.49798 0,-8.24865 0,-12.00749 2.14043,-5.11602 2.7669,-27.56455 5.95144,-61.44596 0.36546,-9.03148 0.62647,-28.13891 2.50589,-35.541559 1.83593,-7.934383 1.06978,-31.996235 0.52205,-38.423412 z m 80.52312,0 c 3.60222,0 8.87486,7.204363 11.74611,17.41577 7.98753,28.566911 13.83453,110.425371 11.0154,117.838541 0,3.75884 -0.10424,8.71851 -0.15662,12.16411 h -13.62553 c 0,-3.49798 0,-8.24865 0,-12.00749 -1.87942,-9.55345 -2.03604,-27.35556 -5.2729,-61.44596 -0.36536,-9.03148 -1.30507,-28.13891 -3.18448,-35.541559 -1.85529,-8.955739 -0.40978,-32.373582 -0.52198,-38.423412 z m -212.199785,0 c -3.602195,0 -8.874966,7.204363 -11.746267,17.41577 C 6.202849,104.52204 0.30361466,188.93851 3.1749253,193.79367 c 0,3.75884 0.1044104,8.71851 0.1566157,12.16411 h 13.625667 c 0,-3.49798 0,-8.24865 0,-12.00749 2.140432,-5.11602 2.766905,-27.56455 5.951442,-61.44596 0.36546,-9.03148 0.626473,-28.13891 2.505892,-35.541559 5.01163,-8.640192 2.036012,-32.210956 0.522053,-38.423412 z m 80.523115,0 c 3.60222,0 8.87486,7.204363 11.74611,17.41577 7.98753,28.566911 13.83453,110.425371 11.0154,117.838541 0,3.75884 -0.10424,8.71851 -0.15662,12.16411 h -13.62553 c 0,-3.49798 0,-8.24865 0,-12.00749 -1.87942,-9.55345 -2.03604,-27.35556 -5.2729,-61.44596 -0.36536,-9.03148 -1.30506,-28.13891 -3.18448,-35.541559 -5.01179,-8.640192 -2.03604,-32.210956 -0.52198,-38.423412 z"
/>,
<path
className="secondary"
d="M 3.1756236,193.95004 H 16.903804 Z m 112.3124864,0 h 13.73619 z m 19.36418,0 h 13.72823 z m 112.31274,0 h 13.73619 z M 158.17531,85.431303 h 79.59289 m -15.05256,24.574867 v 59.78632 m -49.51627,-59.78632 v 59.78632 m -106.261495,8.66723 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.2276 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74971 m -0.749713,0 0.749713,-0.74971 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37512 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.37512 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20912 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37487 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37487 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.20888 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.22761 a 0.7398389,0.7398389 0 0 1 -0.739839,0.73984 0.7398389,0.7398389 0 0 1 -0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,-0.73984 0.7398389,0.7398389 0 0 1 0.739839,0.73984 z m -1.114694,-0.37486 0.749713,0.74972 m -0.749713,0 0.749713,-0.74972 m 0.549941,0.37486 a 0.92479867,0.92479867 0 0 1 -0.924799,0.9248 0.92479867,0.92479867 0 0 1 -0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924798,-0.9248 0.92479867,0.92479867 0 0 1 0.924799,0.9248 z m -0.18496,-14.209127 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374858 0.749713,0.74997 m -0.749713,0 0.749713,-0.74997 m 0.549941,0.374858 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924798 0.92479867,0.92479867 0 0 1 -0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z m -0.18496,-15.389672 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739838 0.7398389,0.7398389 0 0 1 0.739839,0.739838 z m -1.114694,-0.375112 0.749713,0.749971 m -0.749713,0 0.749713,-0.749971 m 0.549941,0.375112 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924798 0.92479867,0.92479867 0 0 1 0.924799,0.924798 z m -0.18496,-15.389976 a 0.7398389,0.7398389 0 0 1 -0.739839,0.739839 0.7398389,0.7398389 0 0 1 -0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,-0.739839 0.7398389,0.7398389 0 0 1 0.739839,0.739839 z m -1.114694,-0.374907 0.749713,0.749816 m -0.749713,0 0.749713,-0.749816 m 0.549941,0.374907 a 0.92479867,0.92479867 0 0 1 -0.924799,0.924799 0.92479867,0.92479867 0 0 1 -0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924798,-0.924799 0.92479867,0.92479867 0 0 1 0.924799,0.924799 z M 65.448324,61.4141 h 1.687112 M 25,120 l 20,-5 M 88,115 l 20,5"
/>
],
sven: [ sven: [
<path <path
className="inside" className="inside"
@ -354,6 +391,16 @@ const svg = {
className="secondary" className="secondary"
d="m 70.206477,127.701 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57588 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57507 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57588 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.5756 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,-97.87831 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 17.184553,84.38069 23.64837,-1.95367 v 5.72541 l -23.64837,1.95367 z m -42.086103,0.006 -23.648373,-1.95368 v 5.7254 l 23.648373,1.95368 z M 198.62382,45.153672 V 221.35978 m -94.91487,-1.69743 c -0.81538,-7.48435 -1.61817,-14.98053 -2.34688,-22.55033 m -0.56709,-6.08481 C 98.745824,168.24245 97.507276,144.6505 98.727355,118.5954 m -69.696613,99.57247 c 0.762472,-6.99869 1.513933,-14.00773 2.204104,-21.07765 m 0.541219,-5.70369 c 2.148744,-23.35952 3.489469,-47.52322 2.236271,-74.28561" d="m 70.206477,127.701 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57588 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57507 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.57588 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,19.5756 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 0,-97.87831 a 1.6550701,1.6550701 0 1 1 -3.31014,0 1.6550701,1.6550701 0 1 1 3.31014,0 z m 17.184553,84.38069 23.64837,-1.95367 v 5.72541 l -23.64837,1.95367 z m -42.086103,0.006 -23.648373,-1.95368 v 5.7254 l 23.648373,1.95368 z M 198.62382,45.153672 V 221.35978 m -94.91487,-1.69743 c -0.81538,-7.48435 -1.61817,-14.98053 -2.34688,-22.55033 m -0.56709,-6.08481 C 98.745824,168.24245 97.507276,144.6505 98.727355,118.5954 m -69.696613,99.57247 c 0.762472,-6.99869 1.513933,-14.00773 2.204104,-21.07765 m 0.541219,-5.70369 c 2.148744,-23.35952 3.489469,-47.52322 2.236271,-74.28561"
/> />
],
waralee: [
<path
className="primary"
d="M 189.14319,15.92567 H 150.9759 c -15.35189,60.51048 -13.76807,99.45391 -6.55908,135.54192 -2.49913,10.63694 -6.79601,38.57398 -6.70034,88.25724 4.65671,1.82459 9.33068,4.58768 14.4113,4.42764 8.98081,-0.2829 11.26884,3.47105 15.68925,2.68764 8.30995,-1.47274 9.83846,-2.11839 17.4606,-2.07415 -9.01112,-45.00259 -14.65367,-86.41202 1.13933,-153.992732 l 15.86174,151.677832 46.60389,-0.6196 c 0.84887,-18.22662 3.45404,-59.88162 -18.50535,-139.08709 -3.19487,-22.161187 0.23804,-43.095486 -2.73762,-56.356616 -2.33301,-10.39719 -5.88524,-20.225178 -9.49919,-30.462087 z m -112.655763,0 h 38.167293 c 15.35189,60.51048 13.76807,99.45391 6.55908,135.54192 2.49913,10.63694 6.79602,38.57398 6.70035,88.25724 -4.65671,1.82459 -9.33068,4.58768 -14.4113,4.42764 -8.98082,-0.2829 -11.26885,3.47105 -15.689255,2.68764 -8.309954,-1.47274 -16.430258,-1.45921 -24.052402,-1.41497 9.011123,-45.00259 21.245473,-87.0712 5.452469,-154.651912 L 63.351925,242.45106 6.5966601,241.83146 C 5.747789,223.60484 5.3838279,203.04359 35.253381,102.74437 38.448249,80.583183 35.015339,59.648884 37.990998,46.387754 c 2.333019,-10.39719 5.885239,-20.225178 9.49919,-30.462087 z"
/>,
<path
className="secondary"
d="m 45.129091,21.275025 h 71.018369 z m 104.348149,0 h 71.01837 z m 72.86407,220.578005 c 5.67948,-63.11796 13.07418,-70.24444 6.75659,-155.475773 M 165.56946,247.27478 c -2.85661,-46.48346 -11.23986,-64.23609 -20.94544,-95.93536 m -30.59667,92.91326 c 1.66081,-16.35626 4.4237,-18.83776 5.47261,-42.77267 M 100.05784,247.277 c 3.45938,-22.94648 10.82316,-42.87161 10.2251,-71.71981 M 14.155773,241.4597 C 40.595414,180.38672 42.25708,137.20982 56.37527,61.346422 58.727379,48.707464 63.822954,35.733181 68.308726,21.378141 M 96.86783,21.266677 c 17.64375,77.898164 10.93326,127.658633 -0.0576,155.878653 M 124.89263,68.305836 C 132.64187,134.59842 96.61132,160.76652 79.213663,221.01295 M 81.22777,16.167802 63.693865,86.447469 l 7.23678,5.79663 12.205338,-75.64425 -14.581591,80.108734 9.865075,4.896537 6.120668,-85.041275 m -0.389222,-0.630634 c 1.941443,10.78744 6.304453,13.441807 2.265333,14.949029 -4.039132,1.507222 -2.651999,-8.70505 -3.805211,-12.212135 -5.034816,5.143371 -7.002302,13.409618 -10.017797,9.590766 -3.015512,-3.818852 0.831958,-2.408976 8.634532,-12.093069 z"
/>
] ]
} }

View file

@ -1,47 +1,54 @@
import React from "react"; import React from 'react'
import PropTypes from "prop-types"; import PropTypes from 'prop-types'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import { injectIntl } from "react-intl"; import { injectIntl } from 'react-intl'
const OptionGroup = props => { const OptionGroup = props => {
return ( return (
<React.Fragment> <React.Fragment>
{props.options.map(name => { {props.options.map(name => {
let output = []; let output = []
if (typeof name === "object") { if (typeof name === 'object') {
// Subgroup // Subgroup
for (let subGroup of Object.keys(name)) { for (let subGroup of Object.keys(name)) {
output.push( output.push(
<h5 key={subGroup + "-title"} className="subheading"> <h5 key={subGroup + '-title'} className="subheading">
<FormattedMessage id={"optiongroups." + subGroup} /> <FormattedMessage id={'optiongroups.' + subGroup} />
</h5> </h5>
); )
let children = []; let children = []
for (let option of name[subGroup]) children.push(<p>{option}</p>); for (let option of name[subGroup])
output.push(<ul style={{ paddingLeft: "1rem" }}>{children}</ul>); children.push(
<li>
<a href="#logo" onClick={() => props.sampleOption(option)}>
<FormattedMessage
id={'options.' + props.config.name + '.' + option + '.title'}
/>
</a>
</li>
)
output.push(<ul style={{ paddingLeft: '1rem' }}>{children}</ul>)
} }
} else } else
output.push( output.push(
<li> <li>
<a href="#logo" onClick={() => props.sampleOption(name)}> <a href="#logo" onClick={() => props.sampleOption(name)}>
<FormattedMessage <FormattedMessage id={'options.' + props.config.name + '.' + name + '.title'} />
id={"options." + props.config.name + "." + name + ".title"}
/>
</a> </a>
</li> </li>
); )
return output; return output
})} })}
</React.Fragment> </React.Fragment>
); )
}; }
OptionGroup.propTypes = { OptionGroup.propTypes = {
config: PropTypes.object.isRequired, config: PropTypes.object.isRequired,
options: PropTypes.array.isRequired options: PropTypes.array.isRequired
}; }
OptionGroup.defaultProps = {}; OptionGroup.defaultProps = {}
export default injectIntl(OptionGroup); export default injectIntl(OptionGroup)

View file

@ -1,48 +1,48 @@
import React, { useState } from "react"; import React, { useState } from 'react'
import { FormattedMessage } from "react-intl"; import { FormattedMessage } from 'react-intl'
import PatternOptions from "./PatternOptions"; import PatternOptions from './PatternOptions'
import { withoutBreasts } from "@freesewing/models"; import { withBreasts, withoutBreasts } from '@freesewing/models'
const SampleConfigurator = props => { const SampleConfigurator = props => {
const [expanded, setExpanded] = useState([]); const [expanded, setExpanded] = useState([])
const sampleOption = option => { const sampleOption = option => {
props.updateGist( props.updateGist(
{ {
type: "option", type: 'option',
option option
}, },
"settings", 'settings',
"sample" 'sample'
); )
}; }
const sampleMeasurement = measurement => { const sampleMeasurement = measurement => {
props.updateGist( props.updateGist(
{ {
type: "measurement", type: 'measurement',
measurement measurement
}, },
"settings", 'settings',
"sample" 'sample'
); )
}; }
const sampleModels = models => { const sampleModels = models => {
props.updateGist( props.updateGist(
{ {
type: "models", type: 'models',
models models
}, },
"settings", 'settings',
"sample" 'sample'
); )
}; }
let antMan = { let antMan = {
ant: {}, ant: {},
man: withoutBreasts.manSize42 man: withoutBreasts.manSize42
}; }
for (let m in withoutBreasts.manSize42) antMan.ant[m] = antMan.man[m] / 10; for (let m in withoutBreasts.manSize42) antMan.ant[m] = antMan.man[m] / 10
return ( return (
<ul className="links"> <ul className="links">
@ -50,21 +50,17 @@ const SampleConfigurator = props => {
<h4> <h4>
<FormattedMessage id="app.patternOptions" /> <FormattedMessage id="app.patternOptions" />
</h4> </h4>
<PatternOptions <PatternOptions config={props.config} gist={props.gist} sampleOption={sampleOption} />
config={props.config}
gist={props.gist}
sampleOption={sampleOption}
/>
</li> </li>
<li className="nodot"> <li className="nodot">
<h4> <h4>
<FormattedMessage id="app.measurements" /> <FormattedMessage id="app.measurements" />
</h4> </h4>
<ul style={{ paddingLeft: "1rem" }}> <ul style={{ paddingLeft: '1rem' }}>
{props.config.measurements.map(m => ( {props.config.measurements.map(m => (
<li key={m}> <li key={m}>
<a href="#logo" onClick={() => sampleMeasurement(m)}> <a href="#logo" onClick={() => sampleMeasurement(m)}>
<FormattedMessage id={"measurements." + m} /> <FormattedMessage id={'measurements.' + m} />
</a> </a>
</li> </li>
))} ))}
@ -74,7 +70,12 @@ const SampleConfigurator = props => {
<h4> <h4>
<FormattedMessage id="app.models" /> <FormattedMessage id="app.models" />
</h4> </h4>
<ul style={{ paddingLeft: "1rem" }}> <ul style={{ paddingLeft: '1rem' }}>
<li>
<a href="#logo" onClick={() => sampleModels(withBreasts)}>
<FormattedMessage id="app.withBreasts" />
</a>
</li>
<li> <li>
<a href="#logo" onClick={() => sampleModels(withoutBreasts)}> <a href="#logo" onClick={() => sampleModels(withoutBreasts)}>
<FormattedMessage id="app.withoutBreasts" /> <FormattedMessage id="app.withoutBreasts" />
@ -88,7 +89,7 @@ const SampleConfigurator = props => {
</ul> </ul>
</li> </li>
</ul> </ul>
); )
}; }
export default SampleConfigurator; export default SampleConfigurator

View file

@ -41,7 +41,10 @@ const DraftPattern = props => {
if (props.svgExport) { if (props.svgExport) {
svgToFile( svgToFile(
new props.Pattern(props.gist.settings) new props.Pattern({
...props.gist.settings,
embed: false
})
.use(theme) .use(theme)
.draft() .draft()
.render() .render()

View file

@ -3,7 +3,7 @@ import PropTypes from "prop-types";
import Button from "@material-ui/core/Button"; import Button from "@material-ui/core/Button";
import { FormattedMessage, FormattedHTMLMessage } from "react-intl"; import { FormattedMessage, FormattedHTMLMessage } from "react-intl";
import FormFieldMeasurement from "../../.form/FormFieldMeasurement"; import FormFieldMeasurement from "../../.form/FormFieldMeasurement";
import { withoutBreasts } from "@freesewing/models"; import { withBreasts, withoutBreasts } from "@freesewing/models";
const Measurements = props => { const Measurements = props => {
const styles = { const styles = {
@ -111,7 +111,17 @@ const Measurements = props => {
<h4> <h4>
<FormattedMessage id="app.withBreasts" /> <FormattedMessage id="app.withBreasts" />
</h4> </h4>
<p>FIXME</p> <ul>
{Object.keys(withBreasts).map(m => (
<li key={m}>
<Button onClick={() => props.preloadMeasurements(withBreasts[m])}>
<FormattedMessage id="cfp.size" />
&nbsp;
{m.slice(-2)}
</Button>
</li>
))}
</ul>
</div> </div>
</div> </div>
); );

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/core
## Unreleased
### Changed
- The pattern super constructor now sets a `config` property that holds the pattern configuration. This means that unlike before, there is no need to instantiate a pattern to access its config. You can just import the pattern, and it's config property will contain the pattern config.
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package core
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package core
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package core
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package core
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/core" href="https://www.npmjs.com/package/@freesewing/core"
title="@freesewing/core on NPM" title="@freesewing/core on NPM"

View file

@ -1,13 +1,13 @@
{ {
"name": "@freesewing/core", "name": "@freesewing/core",
"version": "2.0.0-beta.33", "version": "2.1.0-alpha.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"bezier-js": { "bezier-js": {
"version": "2.4.0", "version": "2.4.4",
"resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.4.0.tgz", "resolved": "https://registry.npmjs.org/bezier-js/-/bezier-js-2.4.4.tgz",
"integrity": "sha512-ttwqGL47RtYOoZy10oFJZ1VlEC6w1eJW1xMPBAvEx57cTWgmaJNr/c2ZLMr/O2RD50saR0OaLBIpgyZ7rkHLSw==" "integrity": "sha512-qYC9FBubdTK4VZe0m+lS7lEpf87w1fnm6g2m1FKsnlz+wfNnJy3gjQt4Y5nnI1NrjJrnQqnZt3S6Z5qjhloDNA=="
}, },
"bin-pack": { "bin-pack": {
"version": "1.0.2", "version": "1.0.2",

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/core", "name": "@freesewing/core",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A library for creating made-to-measure sewing patterns", "description": "A library for creating made-to-measure sewing patterns",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -49,7 +49,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -14,5 +14,8 @@ export default function Design(config, plugins = false) {
pattern.prototype = Object.create(Pattern.prototype) pattern.prototype = Object.create(Pattern.prototype)
pattern.prototype.constructor = pattern pattern.prototype.constructor = pattern
// Make config available without need to instantiate pattern
pattern.config = config
return pattern return pattern
} }

View file

@ -0,0 +1,40 @@
# Change log for: create-freesewing-pattern
## Unreleased
**Note:** Version bump only for package create-freesewing-pattern
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package create-freesewing-pattern
## 2.0.3 (2019-09-15)
### Fixed
- Updated example package.json to use latest tag rather than beta
## 2.0.2 (2019-09-06)
### Changed
- Updated dependencies
### Fixed
- Added missing `file-saver` dependency
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package create-freesewing-pattern
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/create-freesewing-pattern" href="https://www.npmjs.com/package/create-freesewing-pattern"
title="create-freesewing-pattern on NPM" title="create-freesewing-pattern on NPM"

0
packages/create-freesewing-pattern/index.js Executable file → Normal file
View file

0
packages/create-freesewing-pattern/lib/cli.js Executable file → Normal file
View file

View file

@ -1,6 +1,6 @@
{ {
"name": "create-freesewing-pattern", "name": "create-freesewing-pattern",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern", "description": "Initializer package for FreeSewing patterns: npm init FreeSewing-pattern",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -31,7 +31,7 @@
"cp-file": "^6.0.0", "cp-file": "^6.0.0",
"execa": "^1.0.0", "execa": "^1.0.0",
"git-config-path": "^2.0.0", "git-config-path": "^2.0.0",
"github-username": "^5.0.1", "github-username": "^4.1.0",
"globby": "^9.0.0", "globby": "^9.0.0",
"handlebars": "^4.1.0", "handlebars": "^4.1.0",
"inquirer": "^6.2.2", "inquirer": "^6.2.2",
@ -41,8 +41,8 @@
"parse-git-config": "^3.0.0", "parse-git-config": "^3.0.0",
"validate-npm-package-name": "^3.0.0", "validate-npm-package-name": "^3.0.0",
"which": "^1.3.1", "which": "^1.3.1",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/pattern-info": "^2.0.0-beta.43" "@freesewing/pattern-info": "^2.1.0-alpha.0"
}, },
"devDependencies": {}, "devDependencies": {},
"files": [ "files": [
@ -55,7 +55,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "{{#if yarn}}link:..{{else}}file:..{{/if}}", "pattern": "{{#if yarn}}link:..{{else}}file:..{{/if}}",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -29,19 +29,19 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/patterns": "beta", "@freesewing/patterns": "latest",
"@freesewing/plugin-bust": "beta", "@freesewing/plugin-bust": "latest",
"@freesewing/plugin-buttons": "beta", "@freesewing/plugin-buttons": "latest",
"@freesewing/plugin-debug": "beta", "@freesewing/plugin-debug": "latest",
"@freesewing/plugin-designer": "beta", "@freesewing/plugin-designer": "latest",
"@freesewing/plugin-flip": "beta", "@freesewing/plugin-flip": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/css-theme
## Unreleased
**Note:** Version bump only for package css-theme
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package css-theme
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package css-theme
## 2.0.2 (2019-09-06)
### Fixed
- Updated styles for DraftConfigurator component for pattern options 3 levels deep
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package css-theme
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/css-theme" href="https://www.npmjs.com/package/@freesewing/css-theme"
title="@freesewing/css-theme on NPM" title="@freesewing/css-theme on NPM"

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/css-theme", "name": "@freesewing/css-theme",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A CSS theme for FreeSewing web UIs", "description": "A CSS theme for FreeSewing web UIs",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -39,7 +39,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -10,3 +10,4 @@
@import "components/spinner"; @import "components/spinner";
@import "components/box"; @import "components/box";
@import "components/linedrawing"; @import "components/linedrawing";
@import "components/modelgraph";

View file

@ -40,15 +40,18 @@ div.collapsed {
display: none; display: none;
} }
ul.config.l2 > li > div, ul.config.l2 > li > div,
ul.config.l3 > li > div { ul.config.l3 > li > div,
ul.config.l4 > li > div {
padding: 0.25rem 1.5rem 0.25rem 1.5rem; padding: 0.25rem 1.5rem 0.25rem 1.5rem;
} }
ul.config.l3 > li > div.expanded { ul.config.l3 > li > div.expanded,
ul.config.l4 > li > div.expanded {
margin: 0 0 2rem 0; margin: 0 0 2rem 0;
padding: 0.75 0.5rem 1.5rem; padding: 0.75 0.5rem 1.5rem;
} }
ul.config.l2 > li > div:hover, ul.config.l2 > li > div:hover,
ul.config.l3 > li > div:hover { ul.config.l3 > li > div:hover,
ul.config.l4 > li > div:hover {
cursor: pointer; cursor: pointer;
background: $oc-gray-4; background: $oc-gray-4;
} }
@ -63,7 +66,15 @@ div.expanded div.MuiSlider-container {
overflow: initial; overflow: initial;
} }
ul.config p { @include body-font;} ul.config p { @include body-font;}
ul.config.l4 li { padding-left: 0.75rem; }
/* level 4 */
ul.config.l3 li span.subheading {
padding-left: 2rem;
font-weight: bold;
}
ul.config.l4 > li > div { padding-left: 2.5rem; }
span.dflt, span.dflt,
span.custom { span.custom {
padding: 2px 4px; padding: 2px 4px;

View file

@ -0,0 +1,134 @@
svg.fs-model-graph {
circle.size {
fill: none;
stroke-width: 2;
stroke-dasharray: 10 10;
}
circle.sizebg {
stroke: none;
}
rect {
stroke-width: 5;
}
circle.shape,
path.shape {
stroke: none;
stroke-width: 5;
}
circle.shape.center {
stroke: none!important;
}
path.own {
stroke-width: 3;
stroke-dasharray: 20 30;
fill: none;
}
path.estimate {
stroke: none;
}
path.highlight {
stroke-width: 15;
stroke-linecap: round;
stroke-dasharray: 20 30;
}
path.hide {
stroke: none;
}
path.vdefault {
fill: none;
stroke-width: 5;
stroke-dasharray: 20 30;
}
div.text {
@include title-font;
font-size: 80px;
}
path.hovertrap {
fill: none;
stroke: #fff0;
stroke-width: 50;
}
text.size {
@include title-font;
font-size: 50px;
text-anchor: middle;
}
}
.theme-wrapper.light svg.fs-model-graph {
circle.size {
stroke: $oc-gray-5;
}
circle.sizebg {
fill: #fff3;
}
rect {
stroke: $oc-blue-6;
fill: $oc-blue-5;
}
rect.estimate {
stroke: $oc-blue-6;
fill: #fff0;
}
rect.highlight {
fill: $oc-lime-7;
stroke: $oc-lime-8;
}
circle.shape,
path.shape {
stroke: $oc-blue-8;
fill: $oc-blue-7;
}
path.own {
stroke: #fffb;
}
path.highlight {
stroke: $oc-lime-7;
troke: none;
}
path.vdefault {
stroke: $oc-lime-7;
}
text.size {
fill: $oc-lime-7;
}
}
.theme-wrapper.dark svg.fs-model-graph {
circle.size {
stroke: $oc-gray-5;
}
circle.sizebg {
fill: #21252933;
}
rect {
stroke: $oc-yellow-6;
fill: $oc-yellow-5;
}
rect.estimate {
stroke: $oc-yellow-6;
fill: #fff0;
}
rect.highlight {
fill: $oc-orange-7;
stroke: $oc-orange-8;
}
circle.shape,
path.shape {
stroke: $oc-yellow-8;
fill: $oc-yellow-7;
}
path.own {
stroke: #fffb;
}
path.highlight {
stroke: $oc-orange-7;
troke: none;
}
path.vdefault {
stroke: $oc-orange-7;
}
text.size {
fill: $oc-orange-7;
}
}

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/examples
## Unreleased
**Note:** Version bump only for package examples
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package examples
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package examples
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package examples
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package examples
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/examples" href="https://www.npmjs.com/package/@freesewing/examples"
title="@freesewing/examples on NPM" title="@freesewing/examples on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1022,6 +1022,11 @@
resolved "https://registry.yarnpkg.com/@freesewing/plugin-svgattr/-/plugin-svgattr-2.0.0-beta.3.tgz#64a1d279957985f57976a673c5063924ec0a1851" resolved "https://registry.yarnpkg.com/@freesewing/plugin-svgattr/-/plugin-svgattr-2.0.0-beta.3.tgz#64a1d279957985f57976a673c5063924ec0a1851"
integrity sha512-UpZMTp2BSX6zDgTqSASy16coJk1mQXcvqLUqb9en/bTCGf6P0JU4hg+/9SktPrYlstkaLCexGwTvUvO95XkomQ== integrity sha512-UpZMTp2BSX6zDgTqSASy16coJk1mQXcvqLUqb9en/bTCGf6P0JU4hg+/9SktPrYlstkaLCexGwTvUvO95XkomQ==
"@freesewing/plugin-theme@beta":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@freesewing/plugin-theme/-/plugin-theme-2.0.1.tgz#3b9266a57bf440c2621ab4bfa232a01b0a17e6ef"
integrity sha512-poC3tIzNlg6ZIKYx7Xh0FTJ6rCX76qzPnmJ4uwJXPKI7t91K7qTXD/GHPHRzoF0zhejWBsDSTJPqE6ZIcP6U9A==
"@freesewing/plugin-title@^2.0.0-beta.29": "@freesewing/plugin-title@^2.0.0-beta.29":
version "2.0.0-beta.29" version "2.0.0-beta.29"
resolved "https://registry.yarnpkg.com/@freesewing/plugin-title/-/plugin-title-2.0.0-beta.29.tgz#9f0bbc68bb7aaa2cd007ce744485230aabf4b369" resolved "https://registry.yarnpkg.com/@freesewing/plugin-title/-/plugin-title-2.0.0-beta.29.tgz#9f0bbc68bb7aaa2cd007ce744485230aabf4b369"
@ -3871,14 +3876,16 @@ eslint-scope@^4.0.0, eslint-scope@^4.0.3:
estraverse "^4.1.1" estraverse "^4.1.1"
eslint-utils@^1.3.1: eslint-utils@^1.3.1:
version "1.3.1" version "1.4.2"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab"
integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==
dependencies:
eslint-visitor-keys "^1.0.0"
eslint-visitor-keys@^1.0.0: eslint-visitor-keys@^1.0.0:
version "1.0.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
eslint@^5.16.0: eslint@^5.16.0:
version "5.16.0" version "5.16.0"
@ -7260,7 +7267,7 @@ path-type@^3.0.0:
pify "^3.0.0" pify "^3.0.0"
"pattern@link:..": "pattern@link:..":
version "2.0.0-beta.29" version "2.0.1"
pbkdf2@^3.0.3: pbkdf2@^3.0.3:
version "3.0.17" version "3.0.17"

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/examples", "name": "@freesewing/examples",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern holding examples for our documentation", "description": "A FreeSewing pattern holding examples for our documentation",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -28,8 +28,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -40,14 +40,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -75,7 +75,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/florent
## Unreleased
**Note:** Version bump only for package florent
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package florent
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package florent
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package florent
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package florent
## 2.0.0 (2019-08-25)
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.

View file

@ -1,14 +1,9 @@
> **Note**: This is part of version 2 of FreeSewing.
> It is a work in progress, and not ready for prime-time yet
>
> For all questions, please come say hello in [our chatroom on Gitter](https://gitter.im/freesewing/chat).
<p align="center"> <p align="center">
<a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a> <a title="Go to freesewing.org" href="https://freesewing.org/"><img src="https://freesewing.org/img/logo/black.svg" align="center" width="150px" alt="Freesewing logo"/></a>
<br> <br>
<a href="https://freesewing.org/">FreeSewing v2</a> <a href="https://freesewing.org/">FreeSewing v2</a>
</p> </p>
<p align="center">A JavaScript library for made-to-measure sewing patterns</p> <p align="center">An open source platform for made-to-measure sewing patterns</p>
<p align='center'><a <p align='center'><a
href="https://www.npmjs.com/package/@freesewing/florent" href="https://www.npmjs.com/package/@freesewing/florent"
title="@freesewing/florent on NPM" title="@freesewing/florent on NPM"

View file

@ -4,26 +4,27 @@
"version": "0.0.0", "version": "0.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@freesewing/components": "beta", "@freesewing/components": "latest",
"@freesewing/core": "beta", "@freesewing/core": "latest",
"@freesewing/css-theme": "beta", "@freesewing/css-theme": "latest",
"@freesewing/i18n": "beta", "@freesewing/i18n": "latest",
"@freesewing/models": "beta", "@freesewing/models": "latest",
"@freesewing/mui-theme": "beta", "@freesewing/mui-theme": "latest",
"@freesewing/pattern-info": "beta", "@freesewing/pattern-info": "latest",
"@freesewing/plugin-bundle": "beta", "@freesewing/plugin-bundle": "latest",
"@freesewing/plugin-theme": "beta", "@freesewing/plugin-theme": "latest",
"@freesewing/plugin-i18n": "beta", "@freesewing/plugin-i18n": "latest",
"@freesewing/plugin-svgattr": "beta", "@freesewing/plugin-svgattr": "latest",
"@freesewing/utils": "beta", "@freesewing/utils": "latest",
"@material-ui/core": "^4.0.1", "@material-ui/core": "^4.4.0",
"@material-ui/icons": "^4.0.1", "@material-ui/icons": "^4.2.1",
"@material-ui/lab": "^v4.0.0-alpha.14", "@material-ui/lab": "^v4.0.0-alpha.25",
"pattern": "link:..", "pattern": "link:..",
"prismjs": "1.16.0", "prismjs": "1.17.1",
"react": "^16.8", "react": "^16.9",
"react-dom": "^16.8", "react-dom": "^16.9",
"react-scripts": "^3.0.0", "react-scripts": "^3.1.1",
"file-saver": "^2.0.2",
"typeface-roboto-condensed": "latest" "typeface-roboto-condensed": "latest"
}, },
"scripts": { "scripts": {
@ -42,6 +43,6 @@
"not op_mini all" "not op_mini all"
], ],
"devDependencies": { "devDependencies": {
"babel-plugin-prismjs": "1.0.2" "babel-plugin-prismjs": "1.1.1"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@freesewing/florent", "name": "@freesewing/florent",
"version": "2.0.0-beta.43", "version": "2.1.0-alpha.0",
"description": "A FreeSewing pattern for a flat cap", "description": "A FreeSewing pattern for a flat cap",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)", "author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/", "homepage": "https://freesewing.org/",
@ -33,8 +33,8 @@
"netlify": "echo \"Not configured yet\"" "netlify": "echo \"Not configured yet\""
}, },
"peerDependencies": { "peerDependencies": {
"@freesewing/core": "^2.0.0-beta.43", "@freesewing/core": "^2.1.0-alpha.0",
"@freesewing/plugin-bundle": "^2.0.0-beta.43" "@freesewing/plugin-bundle": "^2.1.0-alpha.0"
}, },
"dependencies": {}, "dependencies": {},
"devDependencies": { "devDependencies": {
@ -45,14 +45,14 @@
"eslint": "^5.16.0", "eslint": "^5.16.0",
"babel-jest": "24.7.1", "babel-jest": "24.7.1",
"jest": "24.7.1", "jest": "24.7.1",
"@freesewing/components": "^2.0.0-beta.43", "@freesewing/components": "^2.1.0-alpha.0",
"@freesewing/css-theme": "^2.0.0-beta.43", "@freesewing/css-theme": "^2.1.0-alpha.0",
"@freesewing/i18n": "^2.0.0-beta.43", "@freesewing/i18n": "^2.1.0-alpha.0",
"@freesewing/mui-theme": "^2.0.0-beta.43", "@freesewing/mui-theme": "^2.1.0-alpha.0",
"@freesewing/plugin-bust": "^2.0.0-beta.43", "@freesewing/plugin-bust": "^2.1.0-alpha.0",
"@freesewing/plugin-buttons": "^2.0.0-beta.43", "@freesewing/plugin-buttons": "^2.1.0-alpha.0",
"@freesewing/plugin-flip": "^2.0.0-beta.43", "@freesewing/plugin-flip": "^2.1.0-alpha.0",
"@freesewing/utils": "^2.0.0-beta.43", "@freesewing/utils": "^2.1.0-alpha.0",
"@svgr/rollup": "^2.4.1", "@svgr/rollup": "^2.4.1",
"cross-env": "^5.1.4", "cross-env": "^5.1.4",
"gh-pages": "^1.2.0", "gh-pages": "^1.2.0",
@ -80,7 +80,7 @@
], ],
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
"tag": "beta" "tag": "next"
}, },
"engines": { "engines": {
"node": ">=8.0.0", "node": ">=8.0.0",

View file

@ -0,0 +1,36 @@
# Change log for: @freesewing/huey
## Unreleased
**Note:** Version bump only for package huey
## 2.0.4 (2019-09-27)
**Note:** Version bump only for package huey
## 2.0.3 (2019-09-15)
**Note:** Version bump only for package huey
## 2.0.2 (2019-09-06)
**Note:** Version bump only for package huey
## 2.0.1 (2019-09-01)
**Note:** Version bump only for package huey
## 2.0.0 (2019-08-25)
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.

Some files were not shown because too many files have changed in this diff Show more