1
0
Fork 0

🔥 Removed workbench package, it's now in components

This commit is contained in:
Joost De Cock 2019-05-02 14:33:11 +02:00
parent 2008aed4d1
commit 1c127410b5
42 changed files with 3 additions and 23617 deletions

View file

@ -33,6 +33,9 @@ components:
"@freesewing/i18n": "^{{version}}"
"@freesewing/utils": "^{{version}}"
"react-intl": "^2.8.0"
"@material-ui/core": "^3.9.3"
"@material-ui/icons": "^3.0.2"
"@material-ui/lab": "^3.0.0-alpha.30"
core:
_:
"bezier-js": "^2.2.13"
@ -96,16 +99,3 @@ wahid:
"@freesewing/brian": "^{{version}}"
"@freesewing/plugin-buttons": "^{{version}}"
"@freesewing/plugin-round": "^{{version}}"
workbench:
_:
"@freesewing/components": "^{{version}}"
"@freesewing/css-theme": "^{{version}}"
"@freesewing/utils": "^{{version}}"
"@freesewing/mui-theme": "^{{version}}"
peer:
"@freesewing/core": "^{{version}}"
"@freesewing/i18n": "^{{version}}"
"@freesewing/utils": "^{{version}}"
"@freesewing/plugin-theme": "^{{version}}"
"react-intl": "^2.8.0"
"typeface-roboto-condensed": "^0.0.54"

View file

@ -45,4 +45,3 @@ tamiko: "A FreeSewing pattern for a zero-waste top"
trayvon: "A FreeSewing pattern for a tie"
utils: "A collection of utilities shared across freesewing frontend projects"
wahid: "A FreeSewing pattern for a classic fitted waistcoat"
workbench: "A React component to facilitate FreeSewing pattern design"

View file

@ -83,8 +83,5 @@ plugin-bundle:
- made to measure
- diy
- fashion
workbench:
- react
- development

View file

@ -27,8 +27,4 @@ core:
coverage: "BABEL_ENV=production nyc npm test && nyc report --reporter=text-lcov > coverage.lcov && ./node_modules/.bin/codecov"
pattern-info:
prebuild: "node src/prebuild.js"
workbench:
test: "cross-env CI=1 react-scripts test --env=jsdom"
test:watch: "react-scripts test --env=jsdom"
start: "rollup -c -w"

View file

@ -1,6 +0,0 @@
{
"presets": [
["@babel/preset-env", { "modules": false }],
"@babel/preset-react"
],
}

View file

@ -1,23 +0,0 @@
{
"parser": "babel-eslint",
"extends": [
"standard",
"standard-react"
],
"env": {
"es6": true
},
"plugins": [
"react"
],
"parserOptions": {
"sourceType": "module"
},
"rules": {
// don't force es6 functions to include space before paren
"space-before-function-paren": 0,
// allow specifying true explicitly for boolean props
"react/jsx-boolean-value": 0
}
}

View file

@ -1,4 +0,0 @@
language: node_js
node_js:
- 9
- 8

View file

@ -1,98 +0,0 @@
> **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"><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></p>
<p align="center">FreeSewing is a free and open source library for made-to-measure sewing patterns</p>
<p align='center'><a
href="https://www.npmjs.com/package/@freesewing/workbench"
title="@freesewing/workbench on NPM"
><img src="https://img.shields.io/npm/v/freesewing.svg"
alt="@freesewing/workbench on NPM"/>
</a><a
href="https://opensource.org/licenses/MIT"
title="License: MIT"
><img src="https://img.shields.io/npm/l/freesewing.svg?label=License"
alt="License: MIT"/>
</a><a
href="https://github.com/freesewing/freesewing/issues?q=is%3Aissue+is%3Aopen+label%3Apkg%3Aworkbench"
title="Open issues tagged pkg:workbench"
><img src="https://img.shields.io/github/issues/freesewing/freesewing/pkg:workbench.svg?label=Issues"
alt="Open issues tagged pkg:workbench"/>
</a></p><p align='center'><a
href="https://twitter.com/freesewing_org"
title="Follow @freesewing_org on Twitter"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-blue.svg?logo=twitter&logoColor=white&logoWidth=15"
alt="Follow @freesewing_org on Twitter"/>
</a><a
href="https://gitter.im/freesewing/freesewing"
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"
alt="Chat with us on Gitter"/>
</a><a
href="https://freesewing.org/patrons/join"
title="Become a FreeSewing Patron"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Support%20us-blueviolet.svg?logo=cash-app&logoColor=white&logoWidth=15"
alt="Become a FreeSewing Patron"/>
</a><a
href="https://instagram.com/freesewing_org"
title="Follow @freesewing_org on Twitter"
><img src="https://img.shields.io/badge/%F3%A0%80%A0-Follow%20us-E4405F.svg?logo=instagram&logoColor=white&logoWidth=15"
alt="Follow @freesewing_org on Twitter"/>
</a></p>
# @freesewing/workbench
A React component to facilitate FreeSewing pattern design
## About FreeSewing 🤔
Where the world of makers and developers collide, that's where you'll find FreeSewing.
Our [core library](https://freesewing.dev/en/freesewing) is a *batteries-included* toolbox
for parametric design of sewing patterns. It's a modular system (check our list
of [plugins](https://freesewing.dev/en/plugins) and getting started is as simple as:
```bash
npm init freesewing-pattern
```
The [getting started] section on [freesewing.dev](https://freesewing.dev/) is a good
entrypoint to our documentation, but you'll find a lot more there, including
our [API documentation](https://freesewing.dev/en/freesewing/api),
as well as [examples](https://freesewing.dev/en/freesewing/examples),
and [best practices](https://freesewing.dev/en/do).
If you're a maker, checkout [freesewing.org](https://freesewing/) where you can generate
our sewing patterns adapted to your measurements.
## Support FreeSewing: Become a patron 🥰
FreeSewing is an open source project run by a community,
and financially supported by our patrons.
If you feel what we do is worthwhile, you too
should [become a patron](https://freesewing.org/patrons/join).
## Links 👩‍💻
- 💻 Makers website: [freesewing.org](https://freesewing.org)
- 💻 Developers website: [freesewing.dev](https://freesewing.org)
- 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/freesewing)
- 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
- 📷 Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
## License: MIT 🤓
© [Joost De Cock](https://github.com/joostdecock).
See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
## Where to get help 🤯
Our [chatroom on Gitter](https://gitter.im) is the best place to ask questions,
share your feedback, or just hang out.
If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).

View file

@ -1,51 +0,0 @@
import babel from "rollup-plugin-babel";
import resolve from "rollup-plugin-node-resolve";
import commonjs from "rollup-plugin-commonjs";
import json from "rollup-plugin-json";
import minify from "rollup-plugin-babel-minify";
import yaml from "rollup-plugin-yaml";
import url from "rollup-plugin-url";
import postcss from "rollup-plugin-postcss";
import svgr from "@svgr/rollup";
import peerDepsExternal from "rollup-plugin-peer-deps-external";
import { name, version, description, author, license } from "./package.json";
export default {
input: "src/index.js",
output: [
{
file: "dist/index.js",
format: "cjs",
sourcemap: true
},
{
file: "dist/index.mjs",
format: "es",
sourcemap: true
}
],
plugins: [
peerDepsExternal(),
resolve({ modulesOnly: true }),
url(),
commonjs(),
json(),
yaml(),
svgr(),
postcss({
modules: true
}),
babel({
exclude: "node_modules/**",
plugins: [
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-react-jsx"
]
}),
minify({
comments: false,
sourceMap: true,
banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */`
})
]
};

View file

@ -1,5 +0,0 @@
{
"plugins": [
["transform-object-rest-spread", { "useBuiltIns": true }]
]
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,30 +0,0 @@
{
"name": "workbench-example",
"homepage": "https://freesewing.github.io/workbench",
"version": "0.0.0",
"license": "MIT",
"private": true,
"dependencies": {
"@freesewing/aaron": "file:../../aaron",
"@freesewing/brian": "file:../../brian",
"@freesewing/core": "file:../../core",
"@freesewing/components": "file:../../components",
"@freesewing/utils": "file:../../core",
"@freesewing/i18n": "file:../../i18n",
"@freesewing/plugin-bundle": "file:../../plugin-bundle",
"@freesewing/plugin-theme": "file:../../plugin-theme",
"prop-types": "^15.6.2",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"react-intl": "2.8.0",
"react-scripts": "^1.1.4",
"@freesewing/workbench": "file:.."
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"devDependencies": {}
}

View file

@ -1,20 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<title>workbench</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root"></div>
</body>
</html>

View file

@ -1,8 +0,0 @@
{
"short_name": "workbench",
"name": "workbench",
"start_url": "./index.html",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

View file

@ -1,11 +0,0 @@
import React from "react";
import Workbench from "@freesewing/workbench";
import freesewing from "@freesewing/core";
//import Aaron from "@freesewing/aaron";
//import Brian from "@freesewing/brian";
//import plugins from "@freesewing/plugin-bundle";
export default props => {
console.log(freesewing);
return <Workbench freesewing={freesewing} patterns={{}} plugins={{}} />;
};

View file

@ -1,5 +0,0 @@
import React from 'react'
import ReactDOM from 'react-dom'
import App from './App'
ReactDOM.render(<App />, document.getElementById('root'))

File diff suppressed because it is too large Load diff

View file

@ -1,684 +0,0 @@
{
"name": "@freesewing/workbench",
"version": "0.32.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/helper-builder-react-jsx": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz",
"integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==",
"dev": true,
"requires": {
"@babel/types": "^7.3.0",
"esutils": "^2.0.0"
}
},
"@babel/helper-plugin-utils": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
"integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
"dev": true
},
"@babel/plugin-external-helpers": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz",
"integrity": "sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-syntax-jsx": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
"integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-transform-react-jsx": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
"integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
"dev": true,
"requires": {
"@babel/helper-builder-react-jsx": "^7.3.0",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-syntax-jsx": "^7.2.0"
}
},
"@babel/runtime": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.4.tgz",
"integrity": "sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==",
"requires": {
"regenerator-runtime": "^0.13.2"
}
},
"@babel/types": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz",
"integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
"lodash": "^4.17.11",
"to-fast-properties": "^2.0.0"
}
},
"@emotion/hash": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.7.1.tgz",
"integrity": "sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA=="
},
"@freesewing/components": {
"version": "file:../components"
},
"@freesewing/css-theme": {
"version": "file:../css-theme",
"requires": {
"open-color": "1.6.3"
}
},
"@freesewing/i18n": {
"version": "file:../i18n"
},
"@freesewing/utils": {
"version": "file:../utils"
},
"@material-ui/core": {
"version": "3.9.3",
"resolved": "https://registry.npmjs.org/@material-ui/core/-/core-3.9.3.tgz",
"integrity": "sha512-REIj62+zEvTgI/C//YL4fZxrCVIySygmpZglsu/Nl5jPqy3CDjZv1F9ubBYorHqmRgeVPh64EghMMWqk4egmfg==",
"requires": {
"@babel/runtime": "^7.2.0",
"@material-ui/system": "^3.0.0-alpha.0",
"@material-ui/utils": "^3.0.0-alpha.2",
"@types/jss": "^9.5.6",
"@types/react-transition-group": "^2.0.8",
"brcast": "^3.0.1",
"classnames": "^2.2.5",
"csstype": "^2.5.2",
"debounce": "^1.1.0",
"deepmerge": "^3.0.0",
"dom-helpers": "^3.2.1",
"hoist-non-react-statics": "^3.2.1",
"is-plain-object": "^2.0.4",
"jss": "^9.8.7",
"jss-camel-case": "^6.0.0",
"jss-default-unit": "^8.0.2",
"jss-global": "^3.0.0",
"jss-nested": "^6.0.1",
"jss-props-sort": "^6.0.0",
"jss-vendor-prefixer": "^7.0.0",
"normalize-scroll-left": "^0.1.2",
"popper.js": "^1.14.1",
"prop-types": "^15.6.0",
"react-event-listener": "^0.6.2",
"react-transition-group": "^2.2.1",
"recompose": "0.28.0 - 0.30.0",
"warning": "^4.0.1"
}
},
"@material-ui/icons": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-3.0.2.tgz",
"integrity": "sha512-QY/3gJnObZQ3O/e6WjH+0ah2M3MOgLOzCy8HTUoUx9B6dDrS18vP7Ycw3qrDEKlB6q1KNxy6CZHm5FCauWGy2g==",
"requires": {
"@babel/runtime": "^7.2.0",
"recompose": "0.28.0 - 0.30.0"
}
},
"@material-ui/lab": {
"version": "3.0.0-alpha.30",
"resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-3.0.0-alpha.30.tgz",
"integrity": "sha512-d8IXbkQO92Ln7f/Tzy8Q5cLi/sMWH/Uz1xrOO5NKUgg42whwyCuoT9ErddDPFNQmPi9d1C7A5AG8ONjEAbAIyQ==",
"requires": {
"@babel/runtime": "^7.2.0",
"@material-ui/utils": "^3.0.0-alpha.2",
"classnames": "^2.2.5",
"keycode": "^2.1.9",
"prop-types": "^15.6.0"
}
},
"@material-ui/styles": {
"version": "3.0.0-alpha.10",
"resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-3.0.0-alpha.10.tgz",
"integrity": "sha512-qJ5eiupBPRCNlMCDZ2G5h8auBtBtm8uT/oCUAJ/FqhO5oC7POLmmvDN1Cq1cgAmqQnaL6uN5mAM1Gc90GpKr9A==",
"requires": {
"@babel/runtime": "^7.2.0",
"@emotion/hash": "^0.7.1",
"@material-ui/utils": "^3.0.0-alpha.2",
"classnames": "^2.2.5",
"deepmerge": "^3.0.0",
"hoist-non-react-statics": "^3.2.1",
"jss": "^10.0.0-alpha.7",
"jss-plugin-camel-case": "^10.0.0-alpha.7",
"jss-plugin-default-unit": "^10.0.0-alpha.7",
"jss-plugin-global": "^10.0.0-alpha.7",
"jss-plugin-nested": "^10.0.0-alpha.7",
"jss-plugin-props-sort": "^10.0.0-alpha.7",
"jss-plugin-rule-value-function": "^10.0.0-alpha.7",
"jss-plugin-vendor-prefixer": "^10.0.0-alpha.7",
"prop-types": "^15.6.0",
"warning": "^4.0.1"
},
"dependencies": {
"jss": {
"version": "10.0.0-alpha.16",
"resolved": "https://registry.npmjs.org/jss/-/jss-10.0.0-alpha.16.tgz",
"integrity": "sha512-HmKNNnr82TR5jkWjBcbrx/uim2ief588pWp7zsf4GQpL125zRkEaWYL1SXv5bR6bBvAoTtvJsTAOxDIlLxUNZg==",
"requires": {
"@babel/runtime": "^7.3.1",
"is-in-browser": "^1.1.3",
"tiny-warning": "^1.0.2"
}
}
}
},
"@material-ui/system": {
"version": "3.0.0-alpha.2",
"resolved": "https://registry.npmjs.org/@material-ui/system/-/system-3.0.0-alpha.2.tgz",
"integrity": "sha512-odmxQ0peKpP7RQBQ8koly06YhsPzcoVib1vByVPBH4QhwqBXuYoqlCjt02846fYspAqkrWzjxnWUD311EBbxOA==",
"requires": {
"@babel/runtime": "^7.2.0",
"deepmerge": "^3.0.0",
"prop-types": "^15.6.0",
"warning": "^4.0.1"
}
},
"@material-ui/utils": {
"version": "3.0.0-alpha.3",
"resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-3.0.0-alpha.3.tgz",
"integrity": "sha512-rwMdMZptX0DivkqBuC+Jdq7BYTXwqKai5G5ejPpuEDKpWzi1Oxp+LygGw329FrKpuKeiqpcymlqJTjmy+quWng==",
"requires": {
"@babel/runtime": "^7.2.0",
"prop-types": "^15.6.0",
"react-is": "^16.6.3"
}
},
"@types/jss": {
"version": "9.5.8",
"resolved": "https://registry.npmjs.org/@types/jss/-/jss-9.5.8.tgz",
"integrity": "sha512-bBbHvjhm42UKki+wZpR89j73ykSXg99/bhuKuYYePtpma3ZAnmeGnl0WxXiZhPGsIfzKwCUkpPC0jlrVMBfRxA==",
"requires": {
"csstype": "^2.0.0",
"indefinite-observable": "^1.0.1"
}
},
"@types/prop-types": {
"version": "15.7.1",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz",
"integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg=="
},
"@types/react": {
"version": "16.8.14",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.14.tgz",
"integrity": "sha512-26tFVJ1omGmzIdFTFmnC5zhz1GTaqCjxgUxV4KzWvsybF42P7/j4RBn6UeO3KbHPXqKWZszMXMoI65xIWm954A==",
"requires": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"@types/react-transition-group": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.0.tgz",
"integrity": "sha512-hP7vUaZMVSWKxo133P8U51U6UZ7+pbY+eAQb8+p6SZ2rB1rj3mOTDgTzhhi+R2SCB4S+sWekAAGoxdiZPG0ReQ==",
"requires": {
"@types/react": "*"
}
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"brcast": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.1.tgz",
"integrity": "sha512-eI3yqf9YEqyGl9PCNTR46MGvDylGtaHjalcz6Q3fAPnP/PhpKkkve52vFdfGpwp4VUvK6LUr4TQN+2stCrEwTg=="
},
"change-emitter": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz",
"integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU="
},
"classnames": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
"core-js": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
},
"css-vendor": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz",
"integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=",
"requires": {
"is-in-browser": "^1.0.2"
}
},
"csstype": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.4.tgz",
"integrity": "sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg=="
},
"debounce": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
"integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg=="
},
"deepmerge": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz",
"integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow=="
},
"dom-helpers": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz",
"integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==",
"requires": {
"@babel/runtime": "^7.1.2"
}
},
"encoding": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
"iconv-lite": "~0.4.13"
}
},
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"fbjs": {
"version": "0.8.17",
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
"integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
"requires": {
"core-js": "^1.0.0",
"isomorphic-fetch": "^2.1.1",
"loose-envify": "^1.0.0",
"object-assign": "^4.1.0",
"promise": "^7.1.1",
"setimmediate": "^1.0.5",
"ua-parser-js": "^0.7.18"
}
},
"hoist-non-react-statics": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
"integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
"requires": {
"react-is": "^16.7.0"
}
},
"hyphenate-style-name": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
"integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"indefinite-observable": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-1.0.2.tgz",
"integrity": "sha512-Mps0898zEduHyPhb7UCgNmfzlqNZknVmaFz5qzr0mm04YQ5FGLhAyK/dJ+NaRxGyR6juQXIxh5Ev0xx+qq0nYA==",
"requires": {
"symbol-observable": "1.2.0"
}
},
"is-in-browser": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
"integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU="
},
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"requires": {
"isobject": "^3.0.1"
}
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
},
"isomorphic-fetch": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
"requires": {
"node-fetch": "^1.0.1",
"whatwg-fetch": ">=0.10.0"
}
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"jss": {
"version": "9.8.7",
"resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz",
"integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==",
"requires": {
"is-in-browser": "^1.1.3",
"symbol-observable": "^1.1.0",
"warning": "^3.0.0"
},
"dependencies": {
"warning": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
},
"jss-camel-case": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz",
"integrity": "sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ==",
"requires": {
"hyphenate-style-name": "^1.0.2"
}
},
"jss-default-unit": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-8.0.2.tgz",
"integrity": "sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg=="
},
"jss-global": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/jss-global/-/jss-global-3.0.0.tgz",
"integrity": "sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q=="
},
"jss-nested": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/jss-nested/-/jss-nested-6.0.1.tgz",
"integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==",
"requires": {
"warning": "^3.0.0"
},
"dependencies": {
"warning": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
},
"jss-plugin-camel-case": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.7.tgz",
"integrity": "sha512-Bwrav1ZB0XywdJW6TaEuFhKe1ZpZvUlESh3jsFOvebA9aFTYNCkmHMEqjA5+u9VMxksl3u77nnZHtukpxkzrBA==",
"requires": {
"@babel/runtime": "^7.0.0",
"hyphenate-style-name": "^1.0.2"
}
},
"jss-plugin-default-unit": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.7.tgz",
"integrity": "sha512-auuJUbQaWMxoHOVFPrfZNZpZm9ab8PZeDyvey8nMt2lbokkmZ53UyAnM/1kNsg5BdAXTItcLDxDB3I4gwNU84g==",
"requires": {
"@babel/runtime": "^7.0.0"
}
},
"jss-plugin-global": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.7.tgz",
"integrity": "sha512-OWeoW4szLDgRUKviST+xfilqa8O5uXJCW+O3YonheCRTRJg6rRzlE/b5pfYPoU9UtwvY9n7JvwBX5r3c1lMsEQ==",
"requires": {
"@babel/runtime": "^7.0.0"
}
},
"jss-plugin-nested": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.7.tgz",
"integrity": "sha512-wsRzuIZXAc6WMjc61mREW9cUrDxgSI7dK/fx5c7a06IDUfSn+83NJ30J/RB4oBnbQW9SijV/muujz7IJqpn9Gw==",
"requires": {
"@babel/runtime": "^7.0.0",
"tiny-warning": "^1.0.2"
}
},
"jss-plugin-props-sort": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.7.tgz",
"integrity": "sha512-KXOCaHUk1+KXqE0z3q66/w1fDoy+VsZvI77gLxOqTsTrvIKFLX0jarwXogW3CDlaPQQFTZ6JykJJXtPRTBlstA==",
"requires": {
"@babel/runtime": "^7.0.0"
}
},
"jss-plugin-rule-value-function": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.7.tgz",
"integrity": "sha512-ett83hvIM69/LknmrWndrrdiDlfLfP+rneU5qP7gTOWJ7g1P9GuEL1Tc4CWdZUWBX+T58tgIBP0V1pzWCkP0QA==",
"requires": {
"@babel/runtime": "^7.0.0"
}
},
"jss-plugin-vendor-prefixer": {
"version": "10.0.0-alpha.7",
"resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.7.tgz",
"integrity": "sha512-YbIVgqq+dLimOBOEYggho1Iuc0roz4PJSZYyaok9n8JnXVIqPnxYJbr8+bMbvzJ5CL3eeJij/e7L2IPCceRKrA==",
"requires": {
"@babel/runtime": "^7.0.0",
"css-vendor": "^1.1.0"
},
"dependencies": {
"css-vendor": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-1.2.1.tgz",
"integrity": "sha512-ZpwiWxn5jWNJ7NF3DAb/Dc/+c2lRu+fnovej/adCv3VJsULJSjdXEpUwRcq4fnpAAh98Hi7b0GDnlyoNFcdv1g==",
"requires": {
"@babel/runtime": "^7.3.1",
"is-in-browser": "^1.0.2"
}
}
}
},
"jss-props-sort": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/jss-props-sort/-/jss-props-sort-6.0.0.tgz",
"integrity": "sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g=="
},
"jss-vendor-prefixer": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz",
"integrity": "sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA==",
"requires": {
"css-vendor": "^0.3.8"
}
},
"keycode": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz",
"integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ="
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"normalize-scroll-left": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/normalize-scroll-left/-/normalize-scroll-left-0.1.2.tgz",
"integrity": "sha512-F9YMRls0zCF6BFIE2YnXDRpHPpfd91nOIaNdDgrx5YMoPLo8Wqj+6jNXHQsYBavJeXP4ww8HCt0xQAKc5qk2Fg=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"popper.js": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz",
"integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA=="
},
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": {
"asap": "~2.0.3"
}
},
"prop-types": {
"version": "15.7.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"requires": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.8.1"
}
},
"react-event-listener": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.6.tgz",
"integrity": "sha512-+hCNqfy7o9wvO6UgjqFmBzARJS7qrNoda0VqzvOuioEpoEXKutiKuv92dSz6kP7rYLmyHPyYNLesi5t/aH1gfw==",
"requires": {
"@babel/runtime": "^7.2.0",
"prop-types": "^15.6.0",
"warning": "^4.0.1"
}
},
"react-is": {
"version": "16.8.6",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
"integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA=="
},
"react-lifecycles-compat": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
"react-transition-group": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz",
"integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==",
"requires": {
"dom-helpers": "^3.4.0",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2",
"react-lifecycles-compat": "^3.0.4"
}
},
"recompose": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz",
"integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==",
"requires": {
"@babel/runtime": "^7.0.0",
"change-emitter": "^0.1.2",
"fbjs": "^0.8.1",
"hoist-non-react-statics": "^2.3.1",
"react-lifecycles-compat": "^3.0.2",
"symbol-observable": "^1.0.4"
},
"dependencies": {
"hoist-non-react-statics": {
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
"integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
}
}
},
"regenerator-runtime": {
"version": "0.13.2",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
"integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
},
"tiny-warning": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.2.tgz",
"integrity": "sha512-rru86D9CpQRLvsFG5XFdy0KdLAvjdQDyZCsRcuu60WtzFylDM3eAWSxEVz5kzL2Gp544XiUvPbVKtOA/txLi9Q=="
},
"to-fast-properties": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
},
"ua-parser-js": {
"version": "0.7.19",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz",
"integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ=="
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"whatwg-fetch": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
}
}
}

View file

@ -1,57 +0,0 @@
{
"name": "@freesewing/workbench",
"version": "2.0.0-alpha.4",
"description": "A React component to facilitate FreeSewing pattern design",
"author": "Joost De Cock <joost@decock.org> (https://github.com/joostdecock)",
"homepage": "https://freesewing.org/",
"repository": "github:freesewing/freesewing",
"license": "MIT",
"bugs": {
"url": "https://github.com/freesewing/freesewing/issues"
},
"keywords": [
"freesewing",
"react",
"development"
],
"main": "dist/index.js",
"module": "dist/index.mjs",
"scripts": {
"clean": "rimraf dist",
"nodebuild": "BABEL_ENV=production rollup -c -o dist/index.js -f cjs",
"modulebuild": "BABEL_ENV=production rollup -c -o dist/index.mjs -f es",
"build": "npm run clean && npm run nodebuild && npm run modulebuild",
"test": "cross-env CI=1 react-scripts test --env=jsdom",
"pubtest": "npm publish --registry http://localhost:6662",
"pubforce": "npm publish",
"symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -",
"test:watch": "react-scripts test --env=jsdom",
"start": "rollup -c -w"
},
"peerDependencies": {
"@freesewing/core": "^2.0.0-alpha.3",
"@freesewing/i18n": "^2.0.0-alpha.3",
"@freesewing/plugin-theme": "^2.0.0-alpha.3",
"@freesewing/utils": "^2.0.0-alpha.3",
"react-intl": "^2.8.0"
},
"dependencies": {
"@freesewing/components": "^2.0.0-alpha.4",
"@freesewing/css-theme": "^2.0.0-alpha.4",
"@freesewing/mui-theme": "^2.0.0-alpha.4",
"@freesewing/utils": "^2.0.0-alpha.4"
},
"files": [
"dist/*",
"README.md",
"package.json"
],
"publishConfig": {
"access": "public",
"tag": "alpha"
},
"engines": {
"node": ">=8.0.0",
"npm": ">=5"
}
}

View file

@ -1,48 +0,0 @@
import babel from "rollup-plugin-babel";
import resolve from "rollup-plugin-node-resolve";
import commonjs from "rollup-plugin-commonjs";
import json from "rollup-plugin-json";
import minify from "rollup-plugin-babel-minify";
import yaml from "rollup-plugin-yaml";
import url from "rollup-plugin-url";
import postcss from "rollup-plugin-postcss";
import svgr from "@svgr/rollup";
import peerDepsExternal from "rollup-plugin-peer-deps-external";
import { name, version, description, author, license } from "./package.json";
export default {
input: "src/index.js",
output: [
{
file: "dist/index.js",
format: "cjs",
sourcemap: true
},
{
file: "dist/index.mjs",
format: "es",
sourcemap: true
}
],
plugins: [
peerDepsExternal(),
resolve({ modulesOnly: true }),
url(),
commonjs(),
json(),
yaml(),
svgr(),
postcss({
modules: true
}),
babel({
exclude: "node_modules/**",
plugins: ["@babel/plugin-proposal-object-rest-spread"]
}),
minify({
comments: false,
sourceMap: true,
banner: `/**\n * ${name} | v${version}\n * ${description}\n * (c) ${new Date().getFullYear()} ${author}\n * @license ${license}\n */`
})
]
};

View file

@ -1,5 +0,0 @@
{
"env": {
"jest": true
}
}

View file

@ -1,84 +0,0 @@
import React, { useState } from "react";
import PropTypes from "prop-types";
import { IntlProvider } from "react-intl";
import Button from "@material-ui/core/Button";
import MuiThemeProvider from "@material-ui/core/styles/MuiThemeProvider";
import { createMuiTheme } from "@material-ui/core/styles";
import { i18n, strings } from "@freesewing/i18n";
import { Navbar, withGist } from "@freesewing/components";
import { defaultGist, storage } from "@freesewing/utils";
import { dark, light } from "@freesewing/mui-theme";
import "./scss/style.scss";
//import ButtonPicker from "./components/ButtonPicker";
//import Settings from "./components/settings/";
require("typeface-roboto-condensed");
require("@freesewing/css-theme");
//addLocaleData([...en, ...de, ...es, ...fr, ...nl]);
const Workbench = props => {
const [language, setLanguage] = useState(props.language);
const [pattern, setPattern] = useState(false);
const [settings, setSettings] = useState(false);
const [theme, setTheme] = useState("light");
const themes = { dark, light };
const loadLanguage = () => {
let l = storage.get("language");
if (Object.keys(i18n).indexOf(l) === -1) l = "en";
setLanguage(l);
return l;
};
const updateLanguage = l => {
setLanguage(l);
storage.set("language", l);
};
const loadPattern = () => {
let p = storage.get("pattern");
if (Object.keys(props.freesewing.patterns).indexOf(p) === -1)
p = props.pattern;
setPattern(p);
return p;
};
const updatePattern = p => {
setPattern(p);
store.set("pattern", p);
};
const toggleSettings = () => setSettings(!settings);
const toggleDarkmode = () => {
if (theme === "light") setTheme("dark");
else setTheme("light");
};
return (
<IntlProvider locale={language} messages={strings[language]}>
<MuiThemeProvider theme={createMuiTheme(themes[theme])}>
<React.Fragment>
<Navbar />
<Button variant="contained" color="primary">
test
</Button>
</React.Fragment>
</MuiThemeProvider>
</IntlProvider>
);
};
Workbench.propTypes = {
freesewing: PropTypes.object,
language: PropType.string
};
Workbench.defaultProps = {
language: "en"
};
export default Workbench;

View file

@ -1,71 +0,0 @@
import React from "react";
import Logo from "./Logo";
import Emblem from "./Emblem";
import { i18n } from "@freesewing/i18n";
import { version } from "../../package.json";
import { FormattedMessage } from "react-intl";
import css from "./scss/ButtonPicker.scss";
const ButtonPicker = props => (
<section>
<div className={css.box}>
<Logo size={250} />
{props.msgKey ? (
<h1>
<FormattedMessage id={props.msgKey} />
</h1>
) : (
<div>
<Emblem
size={52}
color1="#61dafb"
color2="#ffffff"
text1="Free"
text2="Sewing"
/>
</div>
)}
<div className={css.buttons}>
{props.keys.map(key => (
<button
key={key}
className={css.picker}
onClick={() => props.setChoice(key)}
>
<Emblem
size={21}
color1="#ffffff"
text1={props.values[key]}
text2=""
/>
</button>
))}
</div>
</div>
<footer className={css.picker}>
Freesewing workbench v{version}
<br />
<a className={css.link} href="https://freesewing.org">
<Emblem
size={16}
color1="#61dafb"
color2="#ffffff"
text1="freesewing"
text2=".org"
/>
</a>
|
<a className={css.link} href="https://freesewing.dev">
<Emblem
size={16}
color1="#61dafb"
color2="#ffffff"
text1="freesewing"
text2=".dev"
/>
</a>
</footer>
</section>
);
export default ButtonPicker;

View file

@ -1,47 +0,0 @@
import React from "react";
import PropTypes from "prop-types";
const Emblem = props => {
const font = {
fontFamily: "'Roboto Condensed', sans-serif",
fontSize: props.size,
fontWeight: 900,
}
const styles = {
free: {
...font,
color: props.color1,
letterSpacing: props.size/-40+"px",
},
sewing: {
...font,
color: props.color2,
letterSpacing: props.size/-20+"px",
},
}
return (
<React.Fragment>
<span style={styles.free}>{props.text1}</span>
<span style={styles.sewing}>{props.text2}</span>
</React.Fragment>
);
};
Emblem.propTypes = {
size: PropTypes.number,
color1: PropTypes.string,
color2: PropTypes.string,
text1: PropTypes.string,
text2: PropTypes.string,
};
Emblem.defaultProps = {
size: 24,
color1: "#111111",
color2: "#111111",
text1: "",
text2: ""
};
export default Emblem;

File diff suppressed because one or more lines are too long

View file

@ -1,59 +0,0 @@
import React from "react";
import Logo from "./Logo";
import Emblem from "./Emblem";
import css from "./scss/NavBar.scss";
import { FormattedMessage } from "react-intl";
const NavBar = props => {
const goToHelp = () =>
(window.location.href =
"https://freesewing.dev/" + props.locale + "/workbench");
return (
<header className={css.navbar}>
{props.empty ? (
""
) : (
<React.Fragment>
<div className={css.logo}>
<Logo size={36} />
</div>
<a href="https://freesewing.org/" className={css.navbar}>
<Emblem
size={20}
color1="#61dafb"
color2="#ffffff"
text1="Free"
text2="Sewing"
/>
</a>
<div className={css.right}>
{props.pattern ? (
<React.Fragment>
<button className={css.navbar} onClick={props.toggleSettings}>
<Emblem
size={16}
text1={<FormattedMessage id="app.settings" />}
color1="#fff"
/>
</button>
<button className={css.navbar} onClick={props.clearPattern}>
<Emblem size={16} text1={props.pattern} color1="#fff" />
</button>
</React.Fragment>
) : (
""
)}
<button className={css.navbar} onClick={props.clearLanguage}>
<Emblem size={16} text1={props.language} color1="#fff" />
</button>
<button className={css.navbar} onClick={goToHelp}>
<Emblem size={16} text1="?" color1="#fff" />
</button>
</div>
</React.Fragment>
)}
</header>
);
};
export default NavBar;

View file

@ -1,21 +0,0 @@
import React from "react";
import PropTypes from "prop-types";
const Pattern = props => {
return (
<React.Fragment>
<span style={styles.free}>{props.text1}</span>
<span style={styles.sewing}>{props.text2}</span>
</React.Fragment>
);
};
Pattern.propTypes = {
pattern: PropTypes.string,
freesewing: PropTypes.object
};
Pattern.defaultProps = {
};
export default Pattern;

View file

@ -1,31 +0,0 @@
.box {
text-align: center;
width: 100%;
}
.buttons {
padding: 1rem 2rem;
margin-top: 2rem;
}
button.picker {
padding: 0.5rem 1rem;
margin: 0.5rem 1rem;
border: 1px solid transparent;
border-bottom: 4px solid #fff6;
background: transparent;
}
button.picker:hover {
border-bottom: 4px solid #61dafb;
}
footer.picker {
position: fixed;
bottom: 2rem;
left: 0;
width: 100%;
text-align: center;
font-weight: bold;
}
.link {
padding: 0.5rem;
font-weight: normal;
}

View file

@ -1,42 +0,0 @@
div.config {
border: 1px solid #fffa;
border-radius: 4px;
padding: 1rem;
margin: 0.5rem;
}
table.config {
width: 300px;
text-align: left;
}
table.config td {
padding: 0.1rem 0.5rem;
}
td.option {
padding-left: 1rem;
}
span.key,
span.subkey {
font-weight: bold;
padding-right: 0.5rem;
}
span.true,
span.false {
font-family: 'Roboto Condensed', sans-serif;
font-weight: bold;
}
span.true {
color: #58fc58;
}
span.false {
color: #f97070;
}
span.key {
color: #61dafb;
font-family: 'Roboto Condensed', sans-serif;
}
ul.config,
ol.config {
margin: 0.2rem 0;
padding-left: 1.5rem;
}

View file

@ -1,31 +0,0 @@
.box {
text-align: center;
width: 100%;
}
.buttons {
padding: 1rem 2rem;
margin-top: 2rem;
}
button.picker {
padding: 0.5rem 1rem;
margin: 0.5rem 1rem;
border: 1px solid transparent;
border-bottom: 4px solid #fff6;
background: transparent;
}
button.picker:hover {
border-bottom: 4px solid #61dafb;
}
footer.picker {
position: fixed;
bottom: 2rem;
left: 0;
width: 100%;
text-align: center;
font-weight: bold;
}
.link {
padding: 0.5rem;
font-weight: normal;
}

View file

@ -1,43 +0,0 @@
header.navbar {
height: 64px;
background: #222;
color: #fff;
padding: 0 2rem;
display: flex;
align-items: center;
}
div.right {
flex-grow: 1;
text-align: right;
}
div.logo {
line-height: 0
}
button.emblem {
margin: 0;
margin-left: 1rem;
padding: 0 0.5rem;
height: 64px;
background: transparent;
border: 0;
border-bottom: 4px solid transparent;
transition: border 0.2s ease-out;
}
a.navbar,
button.navbar {
margin: 0;
margin-left: 1rem;
padding: 0 0.5rem;
height: 64px;
background: transparent;
border: 0;
border-bottom: 4px solid transparent;
transition: border 0.2s ease-out;
}
button.navbar:hover {
border-bottom: 4px solid #61dafb;
}
a.navbar {
line-height: 64px
}

View file

@ -1,4 +0,0 @@
div.wrapper {
padding: 1rem;
display: flex;
}

View file

@ -1,107 +0,0 @@
import React from "react";
import Emblem from "../Emblem";
import { FormattedMessage } from "react-intl";
import css from "../scss/Config.scss";
const Config = props => {
console.log(props.pattern);
const emblem = (t1, t2) => (
<Emblem text1={t1} text2={t2} color1="#61dafb" color2="#fff" size={20} />
);
const renderConfig = () => {
let c = props.pattern.config;
let rows = [];
for (let key of ["name", "version"])
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
<span className={css.val}>{c[key]}</span>
</td>
</tr>
);
for (let key of ["measurements", "parts", "hide"]) {
let list = [];
if (typeof c[key] !== "undefined") {
for (let item of c[key])
list.push(
<li>
<span className={css.val}>{item}</span>
</li>
);
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
<ul className={css.config}>{list}</ul>
</td>
</tr>
);
} else
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
</td>
</tr>
);
}
for (let key of ["dependencies", "inject"]) {
if (typeof c[key] !== "undefined") {
let list = [];
for (let item of Object.keys(c[key])) {
let values = null;
if (typeof c[key][item] === "string") {
list.push(
<li>
<span className={css.subkey}>
{item}
{key === "inject" ? " «" : ":"}
</span>
<span className={css.val}>{c[key][item]}</span>
</li>
);
} else if (c[key][item].length > 0) {
list.push(
<li>
<span className={css.subkey}>{item}:</span>
<span className={css.val}>
{c[key][item].map(v => v + " ")}
</span>
</li>
);
}
}
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
<ul className={css.config}>{list}</ul>
</td>
</tr>
);
} else
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
</td>
</tr>
);
}
return (
<table className={css.config}>
<thead>
<tr>
<th>{emblem("config", ".js")}</th>
</tr>
</thead>
<tbody>{rows}</tbody>
</table>
);
};
return <div className={css.config}>{renderConfig()}</div>;
};
export default Config;

View file

@ -1,27 +0,0 @@
import React from "react";
import Emblem from "../Emblem";
import { FormattedMessage } from "react-intl";
import css from "../scss/Config.scss";
const Measurements = props => {
const emblem = (t1, t2) => (
<Emblem text1={t1} text2={t2} color1="#61dafb" color2="#fff" size={20} />
);
return (
<div className={css.config}>
<table className={css.config}>
<thead>
<tr>
<th>
<FormattedMessage id="app.measurements" />
</th>
</tr>
</thead>
<tbody />
</table>
<pre>{JSON.stringify(props, null, 2)}</pre>
</div>
);
};
export default Measurements;

View file

@ -1,158 +0,0 @@
import React from "react";
import Emblem from "../Emblem";
import { FormattedMessage } from "react-intl";
import css from "../scss/Config.scss";
const Options = props => {
const emblem = (t1, t2) => (
<Emblem text1={t1} text2={t2} color1="#61dafb" color2="#fff" size={20} />
);
const renderOptions = () => {
let c = props.pattern.config;
let rows = [];
if (typeof c.options !== "undefined") {
let list = [];
for (let item of Object.keys(c.options).sort()) {
let values = null;
if (typeof c.options[item] === "boolean") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.true}>
{c.options[item] ? "TRUE" : "FALSE"}
</span>
</td>
</tr>
);
} else if (typeof c.options[item] !== "object") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.val}>{c.options[item]}</span>
</td>
</tr>
);
} else {
if (typeof c.options[item].pct !== "undefined") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.val}>
{c.options[item].min}%{" / "}
<b>{c.options[item].pct}%</b>
{" / "}
{c.options[item].max}%
</span>
</td>
</tr>
);
} else if (typeof c.options[item].deg !== "undefined") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.val}>
{c.options[item].min}
&deg;
{" / "}
<b>
{c.options[item].deg}
&deg;
</b>
{" / "}
{c.options[item].max}
&deg;
</span>
</td>
</tr>
);
} else if (typeof c.options[item].mm !== "undefined") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.val}>
{c.options[item].min}
mm;
{" / "}
<b>
{c.options[item].mm}
mm
</b>
{" / "}
{c.options[item].max}
mm
</span>
</td>
</tr>
);
} else if (typeof c.options[item].bool !== "undefined") {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
{c.options[item].bool ? (
<React.Fragment>
<span className={css.true}>TRUE</span>
<span> / FALSE</span>
</React.Fragment>
) : (
<React.Fragment>
<span>TRUE / </span>
<span className={css.false}>FALSE</span>
</React.Fragment>
)}
</td>
</tr>
);
} else if (typeof c.options[item].list !== "undefined") {
let list = [];
for (let opt of c.options[item].list) {
if (opt === c.options[item].dflt)
list.push(
<li>
<b>{opt}</b> &laquo;
</li>
);
else list.push(<li>{opt}</li>);
}
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<ul className={css.config}>{list}</ul>
</td>
</tr>
);
} else {
rows.push(
<tr>
<td>
<span className={css.key}>{item}:</span>
<span className={css.val}>FIXME</span>
</td>
</tr>
);
}
}
}
} else return null;
return (
<table className={css.config}>
<thead>
<tr>
<th>{emblem(c.name + ".config", ".options")}</th>
</tr>
</thead>
<tbody>{rows}</tbody>
</table>
);
};
return <div className={css.config}>{renderOptions()}</div>;
};
export default Options;

View file

@ -1,95 +0,0 @@
import React from "react";
import Emblem from "../Emblem";
import { FormattedMessage } from "react-intl";
import css from "../scss/Config.scss";
const ResolvedConfig = props => {
const emblem = (t1, t2) => (
<Emblem text1={t1} text2={t2} color1="#61dafb" color2="#fff" size={20} />
);
const renderResolvedConfig = () => {
let c = props.pattern.config;
let rows = [];
let list = [];
if (typeof c.draftOrder !== "undefined") {
for (let item of c.draftOrder)
list.push(
<li>
<span className={css.val}>{item}</span>
</li>
);
rows.push(
<tr>
<td>
<span className={css.key}>draftOrder:</span>
<ol className={css.config}>{list}</ol>
</td>
</tr>
);
} else
rows.push(
<tr>
<td>
<span className={css.key}>draftOrder:</span>
</td>
</tr>
);
for (let key of ["resolvedDependencies"]) {
if (typeof c[key] !== "undefined") {
let list = [];
for (let item of Object.keys(c[key])) {
let values = null;
if (typeof c[key][item] === "string") {
list.push(
<li>
<span className={css.subkey}>
{item}
{key === "inject" ? " «" : ":"}
</span>
<span className={css.val}>{c[key][item]}</span>
</li>
);
} else if (c[key][item].length > 0) {
list.push(
<li>
<span className={css.subkey}>{item}:</span>
<span className={css.val}>
{c[key][item].map(v => v + " ")}
</span>
</li>
);
}
}
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
<ul className={css.config}>{list}</ul>
</td>
</tr>
);
} else
rows.push(
<tr>
<td>
<span className={css.key}>{key}:</span>
</td>
</tr>
);
}
return (
<table className={css.config}>
<thead>
<tr>
<th>{emblem(c.name, ".config")}</th>
</tr>
</thead>
<tbody>{rows}</tbody>
</table>
);
};
return <div className={css.config}>{renderResolvedConfig()}</div>;
};
export default ResolvedConfig;

View file

@ -1,35 +0,0 @@
import React from "react";
import Emblem from "../Emblem";
import { FormattedMessage } from "react-intl";
import css from "../scss/Settings.scss";
import Config from "./Config";
import ResolvedConfig from "./ResolvedConfig";
import Options from "./Options";
import Measurements from "./Measurements";
import Complete from "./options/draft-complete";
const Settings = props => {
let pattern = new props.freesewing.patterns[props.pattern]();
return (
<section>
<div className={css.wrapper}>
<Options pattern={pattern} />
<Measurements pattern={pattern} />
<div>
<Complete
pattern={props.pattern}
gist={{
complete: false
}}
updateGist={props.updateGist}
/>
</div>
</div>
</section>
);
};
//<Config pattern={pattern} />
//<ResolvedConfig pattern={pattern} />
export default Settings;

View file

@ -1,44 +0,0 @@
import React from "react";
import { FormattedMessage } from "react-intl";
import { strings } from "@freesewing/i18n";
const Complete = props => {
let complete, incomplete;
if (props.gist.complete) complete = "checked";
else incomplete = "checked";
return (
<div className="option draft">
<header>
<h5 className="do-title"><FormattedMessage id="settings.complete.title" /></h5>
<p className="do-description"><FormattedMessage id="settings.complete.description" /></p>
</header>
<ul className="radio">
<li>
<label>
<input
type="radio"
name="complete"
value={1}
onChange={evt => props.updateGist("complete", true)}
checked={props.gist.complete}
/>
<FormattedMessage id="app.yes" />
</label>
</li>
<li>
<label>
<input
type="radio"
name="complete"
value={0}
onChange={evt => props.updateGist("complete", false)}
checked={props.gist.complete}
/>
<FormattedMessage id="app.no" />
</label>
</li>
</ul>
</div>
);
}
export default Complete;

View file

@ -1,33 +0,0 @@
import React, { useState } from "react";
import PropTypes from "prop-types";
import { withGist } from "@freesewing/components";
const Workbench = props => {
const [gist, setGist] = useState(props.gist.get);
const [expanded, setExpanded] = useState([]);
const toggleGroup = group => {
let shown = expanded.slice(0);
let index = shown.indexOf(group);
if (index === -1) shown.push(group);
else shown.splice(index, 1);
setExpanded(shown);
};
return (
<ul className="nav l1">
<li>
<h2>hi</h2>
</li>
</ul>
);
};
Workbench.propTypes = {
pattern: PropTypes.oneOf(patternList),
units: PropTypes.oneOf(["metric", "imperial"]).isRequired
};
Workbench.defaultProps = {};
export default withGist(Workbench, { gist: {}, store: "yes" });

View file

@ -1,32 +0,0 @@
body {
margin: 0;
padding: 0;
background: #fff;
font-feature-settings: "kern", "liga", "clig", "calt";
word-wrap: break-word;
font-kerning: normal;
font-family: -apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;
line-height: 1.4;
}
a {
color: #61dafb;
transition: color 0.2s ease-out;
text-decoration: none;
}
a:hover {
color: #f58fff;
}
button:hover {
cursor: pointer;
}
section {
width: 100%;
min-height: calc(100vh - 64px);
display: flex;
background: #222;
color: #fff;
}

View file

@ -1,7 +0,0 @@
import ExampleComponent from './'
describe('ExampleComponent', () => {
it('is truthy', () => {
expect(ExampleComponent).toBeTruthy()
})
})