diff --git a/packages/plugin-measurements/CHANGELOG.md b/packages/plugin-measurements/CHANGELOG.md new file mode 100644 index 00000000000..d74bccee6fc --- /dev/null +++ b/packages/plugin-measurements/CHANGELOG.md @@ -0,0 +1,6 @@ +# Change log for: @freesewing/plugin-measurements + +This is the **initial release**, and the start of this change log. + +> Prior to version 2, FreeSewing was not a JavaScript project. +> As such, that history is out of scope for this change log. diff --git a/packages/plugin-measurements/README.md b/packages/plugin-measurements/README.md new file mode 100644 index 00000000000..a5f1c56e4a1 --- /dev/null +++ b/packages/plugin-measurements/README.md @@ -0,0 +1,99 @@ +![FreeSewing](https://freesewing.org/banner.jpg) + +

@freesewing/plugin-measurements on NPM + License: MIT + Code quality on DeepScan + Open issues tagged pkg:plugin-measurements +

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

+ +## What am I looking at? 🤔 + +This repository is our _monorepo_ holding [all our NPM packages](https://www.npmjs.com/search?q=keywords:freesewing). +This folder holds **@freesewing/plugin-measurements** + +A FreeSewing plugin that adds additional measurements that can be calculated from existing ones + +## About FreeSewing 💀 + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +Our [core library](https://freesewing.dev/reference/api/) is a _batteries-included_ toolbox +for parametric design of sewing patterns. It's a modular system (check our list +of [plugins](https://freesewing.dev/reference/plugins/) and getting started is as simple as: + +```bash +npm init freesewing-pattern +``` + +The [getting started](https://freesewing.dev/guides/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 reference](https://freesewing.dev/reference/api/), +as well as [our turorial](https://freesewing.dev/tutorials/pattern-design/), +and [howtos](https://freesewing.dev/howtos/). + +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.dev) +- 💬 Chat: [gitter.im/freesewing](https://gitter.im/freesewing/chat) +- 🐦 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/freesewing/chat) is the best place to ask questions, +share your feedback, or just hang out. + +If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). diff --git a/packages/plugin-measurements/package.json b/packages/plugin-measurements/package.json new file mode 100644 index 00000000000..b2186f8dfb1 --- /dev/null +++ b/packages/plugin-measurements/package.json @@ -0,0 +1,52 @@ +{ + "name": "@freesewing/plugin-measurements", + "version": "2.7.0-alpha.1", + "description": "A FreeSewing plugin that adds additional measurements that can be calculated from existing ones", + "author": "Joost De Cock (https://github.com/joostdecock)", + "homepage": "https://freesewing.org/", + "repository": "github:freesewing/freesewing", + "license": "MIT", + "bugs": { + "url": "https://github.com/freesewing/freesewing/issues" + }, + "keywords": [ + "freesewing", + "plugin", + "sewing pattern", + "sewing", + "design", + "parametric design", + "made to measure", + "diy", + "fashion" + ], + "main": "dist/index.js", + "module": "dist/index.mjs", + "scripts": { + "clean": "rimraf dist", + "build": "npm run clean && rollup -c", + "test": "echo \"plugin-measurements: No tests configured. Perhaps you'd like to do this?\" && exit 0", + "pubtest": "npm publish --registry http://localhost:6662", + "pubforce": "npm publish", + "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", + "start": "rollup -c -w" + }, + "peerDependencies": { + "@freesewing/core": "^2.7.0-alpha.1" + }, + "dependencies": {}, + "devDependencies": {}, + "files": [ + "dist/*", + "README.md", + "package.json" + ], + "publishConfig": { + "access": "public", + "tag": "next" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5" + } +} diff --git a/packages/plugin-measurements/rollup.config.js b/packages/plugin-measurements/rollup.config.js new file mode 100644 index 00000000000..142439a7f29 --- /dev/null +++ b/packages/plugin-measurements/rollup.config.js @@ -0,0 +1,41 @@ +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 peerDepsExternal from 'rollup-plugin-peer-deps-external' +import { name, version, description, author, license, main, module } from './package.json' + +const output = [ + { + file: main, + format: 'cjs', + sourcemap: true + } +] +if (typeof module !== 'undefined') + output.push({ + file: module, + format: 'es', + sourcemap: true + }) + +export default { + input: 'src/index.js', + output, + plugins: [ + peerDepsExternal(), + resolve({ modulesOnly: true }), + commonjs(), + json(), + 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 */` + }) + ] +} diff --git a/packages/plugin-measurements/src/index.js b/packages/plugin-measurements/src/index.js new file mode 100644 index 00000000000..97fe1f960b0 --- /dev/null +++ b/packages/plugin-measurements/src/index.js @@ -0,0 +1,34 @@ +import { version, name } from '../package.json' + +export default { + name: name, + version: version, + hooks: { + preDraft: function ({ settings }) { + if ( + typeof settings.measurements.backSeat !== 'undefined' && + typeof settings.measurements.seatCircumference !== 'undefined' + ) { + settings.measurements.frontSeat = + settings.measurements.seatCircumference - settings.measurements.backSeat + settings.measurements.backSeatArc = settings.measurements.backSeat / 2 + settings.measurements.frontSeatArc = settings.measurements.frontSeat / 2 + } + if ( + typeof settings.measurements.waistCircumference !== 'undefined' && + typeof settings.measurements.backWaist !== 'undefined' + ) { + settings.measurements.backWaistArc = settings.measurements.backWaist / 2 + settings.measurements.frontWaistArc = + (settings.measurements.waistCircumference - settings.measurements.backWaist) / 2 + } + if ( + typeof settings.measurements.crossSeam !== 'undefined' && + typeof settings.measurements.frontCrossSeam !== 'undefined' + ) { + settings.measurements.backCrossSeam = + settings.measurements.crossSeam - settings.measurements.frontCrossSeam + } + } + } +}