diff --git a/config/dependencies.yaml b/config/dependencies.yaml index 8e944b06f6b..0399c6d3b86 100644 --- a/config/dependencies.yaml +++ b/config/dependencies.yaml @@ -115,9 +115,10 @@ paco: '@freesewing/snapseries': *freesewing plugin-bundle: dev: + '@freesewing/plugin-annotations': *freesewing '@freesewing/plugin-banner': *freesewing '@freesewing/plugin-buttons': *freesewing - '@freesewing/plugin-cutonfold': *freesewing + # '@freesewing/plugin-cutonfold': *freesewing '@freesewing/plugin-dimension': *freesewing '@freesewing/plugin-grainline': *freesewing '@freesewing/plugin-logo': *freesewing @@ -128,11 +129,12 @@ plugin-bundle: '@freesewing/plugin-sprinkle': *freesewing plugintest: peer: + '@freesewing/plugin-annotations': *freesewing '@freesewing/plugin-banner': *freesewing - '@freesewing/plugin-bartack': *freesewing + # '@freesewing/plugin-bartack': *freesewing '@freesewing/plugin-bust': *freesewing '@freesewing/plugin-buttons': *freesewing - '@freesewing/plugin-cutonfold': *freesewing + # '@freesewing/plugin-cutonfold': *freesewing '@freesewing/plugin-dimension': *freesewing '@freesewing/plugin-flip': *freesewing '@freesewing/plugin-gore': *freesewing diff --git a/config/software/plugins.json b/config/software/plugins.json index af0f9ce27b1..a034308b04f 100644 --- a/config/software/plugins.json +++ b/config/software/plugins.json @@ -1,11 +1,10 @@ { + "plugin-annotations": "A bundle of FreeSewing plugins that provide annotations", "plugin-banner": "A FreeSewing plugin to repeat text on a path", - "plugin-bartack": "A FreeSewing plugin to add bartacks to your pattern", "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-buttons": "A FreeSewing plugin that provides button, buttonhole, and snap snippets", "plugin-cutlist": "A FreeSewing plugin to store data regarding a pattern's cutlist", - "plugin-cutonfold": "A FreeSewing plugin to add cut-on-fold indicators on your patterns", "plugin-dimension": "A FreeSewing plugin to add dimensions to your (paperless) pattern", "plugin-flip": "A FreeSewing plugin to flip parts horizontally", "plugin-gore": "A FreeSewing plugin to generate gores for a semi-sphere or dome", diff --git a/designs/albert/src/front.mjs b/designs/albert/src/front.mjs index 9f2ff6558fe..4be8cede453 100644 --- a/designs/albert/src/front.mjs +++ b/designs/albert/src/front.mjs @@ -2,62 +2,62 @@ import { pluginBundle } from '@freesewing/plugin-bundle' import { version } from '../data.mjs' // crossBox macro -const crossBox = { - name: 'crossbox', - version, - macros: { - crossBox: function (so, { points, Point, paths, Path, getId }) { - let id = getId() - let shiftFraction = 0.1 - points[id + '_boxTopLeft'] = so.from.copy() - points[id + '_boxBottomRight'] = so.to.copy() - points[id + '_boxTopRight'] = new Point(so.to.x, so.from.y) - points[id + '_boxBottomLeft'] = new Point(so.from.x, so.to.y) +// const crossBox = { +// name: 'crossbox', +// version, +// macros: { +// crossBox: function (so, { points, Point, paths, Path, getId }) { +// let id = getId() +// let shiftFraction = 0.1 +// points[id + '_boxTopLeft'] = so.from.copy() +// points[id + '_boxBottomRight'] = so.to.copy() +// points[id + '_boxTopRight'] = new Point(so.to.x, so.from.y) +// points[id + '_boxBottomLeft'] = new Point(so.from.x, so.to.y) - points[id + '_topCrossTL'] = points[id + '_boxTopLeft'].shiftFractionTowards( - points[id + '_boxBottomRight'], - shiftFraction - ) - points[id + '_topCrossTR'] = points[id + '_boxTopRight'].shiftFractionTowards( - points[id + '_boxBottomLeft'], - shiftFraction - ) - points[id + '_topCrossBL'] = points[id + '_boxBottomLeft'].shiftFractionTowards( - points[id + '_boxTopRight'], - shiftFraction - ) - points[id + '_topCrossBR'] = points[id + '_boxBottomRight'].shiftFractionTowards( - points[id + '_boxTopLeft'], - shiftFraction - ) +// points[id + '_topCrossTL'] = points[id + '_boxTopLeft'].shiftFractionTowards( +// points[id + '_boxBottomRight'], +// shiftFraction +// ) +// points[id + '_topCrossTR'] = points[id + '_boxTopRight'].shiftFractionTowards( +// points[id + '_boxBottomLeft'], +// shiftFraction +// ) +// points[id + '_topCrossBL'] = points[id + '_boxBottomLeft'].shiftFractionTowards( +// points[id + '_boxTopRight'], +// shiftFraction +// ) +// points[id + '_topCrossBR'] = points[id + '_boxBottomRight'].shiftFractionTowards( +// points[id + '_boxTopLeft'], +// shiftFraction +// ) - paths[id + 'crossBox'] = new Path() - .move(points[id + '_boxTopLeft']) - .line(points[id + '_boxTopRight']) - .line(points[id + '_boxBottomRight']) - .line(points[id + '_boxBottomLeft']) - .line(points[id + '_boxTopLeft']) - .close() - .attr('class', 'lining dotted stroke-sm') - paths[id + '_topCross'] = new Path() - .move(points[id + '_topCrossTL']) - .line(points[id + '_topCrossBR']) - .line(points[id + '_topCrossTR']) - .line(points[id + '_topCrossBL']) - .line(points[id + '_topCrossTL']) - .line(points[id + '_topCrossTR']) - .move(points[id + '_topCrossBR']) - .line(points[id + '_topCrossBL']) - .attr('class', 'lining dotted stroke-sm') - if (typeof so.text === 'string') { - points.textAnchor = points[id + '_boxTopLeft'] - .shiftFractionTowards(points[id + '_boxBottomRight'], 0.5) - .attr('data-text', so.text) - .attr('data-text-class', 'center') - } - }, - }, -} +// paths[id + 'crossBox'] = new Path() +// .move(points[id + '_boxTopLeft']) +// .line(points[id + '_boxTopRight']) +// .line(points[id + '_boxBottomRight']) +// .line(points[id + '_boxBottomLeft']) +// .line(points[id + '_boxTopLeft']) +// .close() +// .attr('class', 'lining dotted stroke-sm') +// paths[id + '_topCross'] = new Path() +// .move(points[id + '_topCrossTL']) +// .line(points[id + '_topCrossBR']) +// .line(points[id + '_topCrossTR']) +// .line(points[id + '_topCrossBL']) +// .line(points[id + '_topCrossTL']) +// .line(points[id + '_topCrossTR']) +// .move(points[id + '_topCrossBR']) +// .line(points[id + '_topCrossBL']) +// .attr('class', 'lining dotted stroke-sm') +// if (typeof so.text === 'string') { +// points.textAnchor = points[id + '_boxTopLeft'] +// .shiftFractionTowards(points[id + '_boxBottomRight'], 0.5) +// .attr('data-text', so.text) +// .attr('data-text-class', 'center') +// } +// }, +// }, +// } export const front = { name: 'albert.front', diff --git a/designs/plugintest/package.json b/designs/plugintest/package.json index 3b076af46f3..b08e7cf2bd5 100644 --- a/designs/plugintest/package.json +++ b/designs/plugintest/package.json @@ -48,11 +48,10 @@ "peerDependencies": { "@freesewing/core": "3.0.0-alpha.4", "@freesewing/plugin-bundle": "3.0.0-alpha.4", + "@freesewing/plugin-annotations": "3.0.0-alpha.4", "@freesewing/plugin-banner": "3.0.0-alpha.4", - "@freesewing/plugin-bartack": "3.0.0-alpha.4", "@freesewing/plugin-bust": "3.0.0-alpha.4", "@freesewing/plugin-buttons": "3.0.0-alpha.4", - "@freesewing/plugin-cutonfold": "3.0.0-alpha.4", "@freesewing/plugin-dimension": "3.0.0-alpha.4", "@freesewing/plugin-flip": "3.0.0-alpha.4", "@freesewing/plugin-gore": "3.0.0-alpha.4", diff --git a/plugins/plugin-cutonfold/.travis.yml b/plugins/plugin-annotations/.travis.yml similarity index 100% rename from plugins/plugin-cutonfold/.travis.yml rename to plugins/plugin-annotations/.travis.yml diff --git a/plugins/plugin-bartack/README.md b/plugins/plugin-annotations/BarTack.md similarity index 100% rename from plugins/plugin-bartack/README.md rename to plugins/plugin-annotations/BarTack.md diff --git a/plugins/plugin-annotations/CHANGELOG.md b/plugins/plugin-annotations/CHANGELOG.md new file mode 100644 index 00000000000..44601391009 --- /dev/null +++ b/plugins/plugin-annotations/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change log for: @freesewing/plugin-annotations + + + +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/plugins/plugin-cutonfold/README.md b/plugins/plugin-annotations/CutOnFold.md similarity index 100% rename from plugins/plugin-cutonfold/README.md rename to plugins/plugin-annotations/CutOnFold.md diff --git a/plugins/plugin-annotations/README.md b/plugins/plugin-annotations/README.md new file mode 100644 index 00000000000..0fb1c6a8632 --- /dev/null +++ b/plugins/plugin-annotations/README.md @@ -0,0 +1,294 @@ +![FreeSewing](https://static.freesewing.org/banner.png) +

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

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

+ +# @freesewing/plugin-annotations + +A bundle of FreeSewing plugins that provide annotations + + + + +> #### Note: Version 3 is a work in progress +> +> We are working on a new major version (v3) but it is not ready for prime-time. +> For production use, please refer to our v2 packages (the `latest` on NPM) +> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2). +> +> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now. + +## What am I looking at? πŸ€” + +This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites. + +This folder holds: @freesewing/plugin-annotations + +If you're not entirely sure what to do or how to start, type this command: + +``` +npm run tips +``` + +> If you don't want to set up a dev environment, you can run it in your browser: +> +> [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freesewing/freesewing) +> +> We recommend that you fork our repository and then +> put `gitpod.io/# to start up a browser-based dev environment of your own. + +## About FreeSewing πŸ’€ + +Where the world of makers and developers collide, that's where you'll find FreeSewing. + +If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate +our sewing patterns adapted to your measurements. + +If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/). +Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox +for parametric design of sewing patterns. But we also provide a range +of [plugins](https://freesewing.dev/reference/plugins/) that further extend the +functionality of the platform. + +If you have NodeJS installed, you can try it right now by running: + +```bash +npx create-freesewing-pattern +``` + +Or, consult our getting started guides +for [Linux](https://freesewing.dev/tutorials/getting-started-linux/), +[MacOS](https://freesewing.dev/tutorials/getting-started-mac/), +or [Windows](https://freesewing.dev/tutorials/getting-started-windows/). + +We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that +walks you through your first parametric design, +and [a friendly community](https://freesewing.org/community/where/) with +people who can help you when you get stuck. + +## Support FreeSewing: Become a patron πŸ₯° + +FreeSewing is an open source project run by a community, +and financially supported by our patrons. + +If you feel what we do is worthwhile, and you can spend a few coind without +hardship, then you should [join us and become a patron](https://freesewing.org/community/join). + +## Links πŸ‘©β€πŸ’» + + - πŸ’» Makers website: [freesewing.org](https://freesewing.org) + - πŸ’» Developers website: [freesewing.dev](https://freesewing.dev) + - πŸ’¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/) + - βœ… Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/) + - 🐦 Twitter: [@freesewing_org](https://twitter.com/freesewing_org) + - πŸ“· Instagram: [@freesewing_org](https://instagram.com/freesewing_org) + +## License: MIT πŸ€“ + +Β© [Joost De Cock](https://github.com/joostdecock). +See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details. + +## Where to get help 🀯 + +Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions, +share your feedback, or just hang out. + +If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new). + + + +## Contributors ✨ + +Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Adam Tomkins
Adam Tomkins

πŸ“–
Alexandre Ignjatovic
Alexandre Ignjatovic

πŸ’»
AlfaLyr
AlfaLyr

πŸ’» πŸ”Œ 🎨
Andrew James
Andrew James

πŸ“–
Anneke
Anneke

πŸ“– 🌍
Annie Kao
Annie Kao

πŸ“–
Anternative
Anternative

πŸ“–
Anthony
Anthony

πŸ’¬
Ari Grayzel-student
Ari Grayzel-student

πŸ’»
Bart
Bart

πŸ“–
BenJamesBen
BenJamesBen

πŸ’» πŸ“– πŸ›
Cameron Dubas
Cameron Dubas

πŸ“–
Carsten Biebricher
Carsten Biebricher

πŸ“–
Cathy Zoller
Cathy Zoller

πŸ“–
Chantal Lapointe
Chantal Lapointe

🌍
Damien PIQUET
Damien PIQUET

πŸ’»
Darigov Research
Darigov Research

πŸ“– πŸ€”
Elena FdR
Elena FdR

πŸ“– πŸ“
Emmanuel Nyachoke
Emmanuel Nyachoke

πŸ’» πŸ“–
Enoch Riese
Enoch Riese

πŸ’»
EvEkSwed
EvEkSwed

🌍
Fantastik-Maman
Fantastik-Maman

🌍
Forrest O.
Forrest O.

πŸ“–
FrΓ©dΓ©ric
FrΓ©dΓ©ric

🌍
Glenn Matthews
Glenn Matthews

πŸ“–
Greg Sadetsky
Greg Sadetsky

πŸ“–
Igor Couto
Igor Couto

πŸ›
Ikko Ashimine
Ikko Ashimine

πŸ“–
Irapeke
Irapeke

🌍
Jacek Sawoszczuk
Jacek Sawoszczuk

πŸ“–
Jason Williams
Jason Williams

πŸ“–
Jeremy Jackson
Jeremy Jackson

πŸ’»
Jeroen Hoek
Jeroen Hoek

πŸ“–
Joe Schofield
Joe Schofield

πŸ“–
Joebidido
Joebidido

🌍
Joost De Cock
Joost De Cock

🚧
Josh Essman
Josh Essman

πŸ“–
Kake
Kake

πŸ“–
Kapunahele Wong
Kapunahele Wong

πŸ“–
Karen
Karen

πŸ“– πŸ“‹
Katie McGinley
Katie McGinley

πŸ“–
Kieran Klaassen
Kieran Klaassen

πŸ’»
Kittycatou
Kittycatou

🌍
Kris
Kris

πŸ“–
Kristin Ruben
Kristin Ruben

πŸ’»
Loudepeuter
Loudepeuter

🌍
Lucian
Lucian

πŸ“‹
Marcus
Marcus

🌍
Martin Tribo
Martin Tribo

πŸ“–
Nadege Michel
Nadege Michel

⚠️ πŸ“–
Natalia
Natalia

πŸ’» 🎨 πŸ“
Nathan Yergler
Nathan Yergler

πŸ“–
Nick Dower
Nick Dower

πŸ“– πŸ’» πŸ›
Nikhil Chelliah
Nikhil Chelliah

πŸ“–
OysteinHoiby
OysteinHoiby

πŸ’»
Patrick Forringer
Patrick Forringer

πŸ”Œ
Paul
Paul

πŸ“– πŸ“ 🌍
Phillip Thelen
Phillip Thelen

πŸ’»
Pixieish
Pixieish

πŸ“–
Prof. dr. Sorcha NΓ­ Dhubhghaill
Prof. dr. Sorcha NΓ­ Dhubhghaill

πŸ“–
Quentin FELIX
Quentin FELIX

πŸ’» 🎨
Rik Hekker
Rik Hekker

πŸ›
Sam Livingston-Gray
Sam Livingston-Gray

πŸ“–
Sanne
Sanne

πŸ’» πŸ“–
Sara Latorre
Sara Latorre

🌍
SeaZeeZee
SeaZeeZee

πŸ“– πŸ’»
SimonbJohnson
SimonbJohnson

πŸ›
SirCharlotte
SirCharlotte

🌍
Slylele
Slylele

πŸ“– 🌍
Soazillon
Soazillon

🌍
SoneaTheBest
SoneaTheBest

🌍
Stefan Sydow
Stefan Sydow

🌍 πŸ“– πŸ’»
TrΓ­ona
TrΓ­ona

πŸ“–
Unmutual
Unmutual

πŸ“–
Wouter van Wageningen
Wouter van Wageningen

πŸ’» 🎨 πŸ”§
amysews
amysews

πŸ“–
anna-puk
anna-puk

πŸ’»
beautifulsummermoon
beautifulsummermoon

🌍
berce
berce

πŸ“–
biou
biou

πŸ’»
bobgeorgethe3rd
bobgeorgethe3rd

πŸ’» πŸ“– 🎨
brmlyklr
brmlyklr

πŸ“–
chri5b
chri5b

πŸ’» ⚠️
dingcycle
dingcycle

🌍
drowned-in-books
drowned-in-books

πŸ’¬
econo202
econo202

πŸ“–
ericamattos
ericamattos

🌍
fightingrabbit
fightingrabbit

πŸ’»
gaylyndie
gaylyndie

πŸ“–
grimlokason
grimlokason

πŸ’»
hellgy
hellgy

🎨
jackseye
jackseye

πŸ“–
marckiesel
marckiesel

🌍
mesil
mesil

πŸ›
starfetch
starfetch

πŸ’» πŸ“– 🌍 🎨
timorl
timorl

πŸ’»
ttimearl
ttimearl

πŸ–‹
tuesgloomsday
tuesgloomsday

πŸ“–
valadaptive
valadaptive

πŸ’»
viocky
viocky

🌍
woolishboy
woolishboy

πŸ’»
yc
yc

🌍
+ + + + + + +This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! + diff --git a/plugins/plugin-bartack/build.mjs b/plugins/plugin-annotations/build.mjs similarity index 100% rename from plugins/plugin-bartack/build.mjs rename to plugins/plugin-annotations/build.mjs diff --git a/plugins/plugin-bartack/data.mjs b/plugins/plugin-annotations/data.mjs similarity index 74% rename from plugins/plugin-bartack/data.mjs rename to plugins/plugin-annotations/data.mjs index 0d050eaa056..0a34bd57b03 100644 --- a/plugins/plugin-bartack/data.mjs +++ b/plugins/plugin-annotations/data.mjs @@ -1,4 +1,4 @@ // This file is auto-generated | All changes you make will be overwritten. -export const name = '@freesewing/plugin-bartack' +export const name = '@freesewing/plugin-annotations' export const version = '3.0.0-alpha.4' export const data = { name, version } diff --git a/plugins/plugin-cutonfold/img/example.png b/plugins/plugin-annotations/img/cutonfold.png similarity index 100% rename from plugins/plugin-cutonfold/img/example.png rename to plugins/plugin-annotations/img/cutonfold.png diff --git a/plugins/plugin-bartack/img/example.png b/plugins/plugin-annotations/img/logo.png similarity index 100% rename from plugins/plugin-bartack/img/example.png rename to plugins/plugin-annotations/img/logo.png diff --git a/plugins/plugin-bartack/package.json b/plugins/plugin-annotations/package.json similarity index 93% rename from plugins/plugin-bartack/package.json rename to plugins/plugin-annotations/package.json index cbc7441e9bd..3ddc1928509 100644 --- a/plugins/plugin-bartack/package.json +++ b/plugins/plugin-annotations/package.json @@ -1,7 +1,7 @@ { - "name": "@freesewing/plugin-bartack", + "name": "@freesewing/plugin-annotations", "version": "3.0.0-alpha.4", - "description": "A FreeSewing plugin to add bartacks to your pattern", + "description": "A bundle of FreeSewing plugins that provide annotations", "author": "Joost De Cock (https://github.com/joostdecock)", "homepage": "https://freesewing.org/", "repository": "github:freesewing/freesewing", diff --git a/plugins/plugin-bartack/src/index.mjs b/plugins/plugin-annotations/src/bartack.mjs similarity index 92% rename from plugins/plugin-bartack/src/index.mjs rename to plugins/plugin-annotations/src/bartack.mjs index 847199c40ab..b0c9a865fdd 100644 --- a/plugins/plugin-bartack/src/index.mjs +++ b/plugins/plugin-annotations/src/bartack.mjs @@ -41,7 +41,7 @@ const getPoints = (path, so) => { const bartackPath = (path, so, props) => (path ? drawBartack(getPoints(path, so), props) : null) -function bartack(so, props) { +function createBartack(so, props) { const defaults = { width: 3, length: 15, @@ -103,12 +103,12 @@ function bartack(so, props) { } // The actual plugin -export const plugin = { +export const bartack = { name, version, macros: { bartack: function (so, props) { - return bartack(so, props) + return createBartack(so, props) }, bartackAlong: function (so, props) { so.bartackFractionAlong = false @@ -116,7 +116,7 @@ export const plugin = { so.anchor = false so.from = false so.to = false - return bartack(so, props) + return createBartack(so, props) }, bartackFractionAlong: function (so, props) { so.bartackFractionAlong = true @@ -124,11 +124,11 @@ export const plugin = { so.anchor = false so.from = false so.to = false - return bartack(so, props) + return createBartack(so, props) }, }, } // More specifically named exports -export const bartackPlugin = plugin -export const pluginBartack = plugin +// export const bartackPlugin = bartack +// export const pluginBartack = bartack diff --git a/plugins/plugin-annotations/src/crossbox.mjs b/plugins/plugin-annotations/src/crossbox.mjs new file mode 100644 index 00000000000..ddbc7a7e897 --- /dev/null +++ b/plugins/plugin-annotations/src/crossbox.mjs @@ -0,0 +1,62 @@ +import { name, version } from '../data.mjs' + +export const crossbox = { + name: 'crossbox', + version, + macros: { + crossBox: function (so, { points, Point, paths, Path, getId }) { + let id = getId() + let shiftFraction = 0.1 + points[id + '_boxTopLeft'] = so.from.copy() + points[id + '_boxBottomRight'] = so.to.copy() + points[id + '_boxTopRight'] = new Point(so.to.x, so.from.y) + points[id + '_boxBottomLeft'] = new Point(so.from.x, so.to.y) + + points[id + '_topCrossTL'] = points[id + '_boxTopLeft'].shiftFractionTowards( + points[id + '_boxBottomRight'], + shiftFraction + ) + points[id + '_topCrossTR'] = points[id + '_boxTopRight'].shiftFractionTowards( + points[id + '_boxBottomLeft'], + shiftFraction + ) + points[id + '_topCrossBL'] = points[id + '_boxBottomLeft'].shiftFractionTowards( + points[id + '_boxTopRight'], + shiftFraction + ) + points[id + '_topCrossBR'] = points[id + '_boxBottomRight'].shiftFractionTowards( + points[id + '_boxTopLeft'], + shiftFraction + ) + + paths[id + 'crossBox'] = new Path() + .move(points[id + '_boxTopLeft']) + .line(points[id + '_boxTopRight']) + .line(points[id + '_boxBottomRight']) + .line(points[id + '_boxBottomLeft']) + .line(points[id + '_boxTopLeft']) + .close() + .attr('class', 'lining dotted stroke-sm') + paths[id + '_topCross'] = new Path() + .move(points[id + '_topCrossTL']) + .line(points[id + '_topCrossBR']) + .line(points[id + '_topCrossTR']) + .line(points[id + '_topCrossBL']) + .line(points[id + '_topCrossTL']) + .line(points[id + '_topCrossTR']) + .move(points[id + '_topCrossBR']) + .line(points[id + '_topCrossBL']) + .attr('class', 'lining dotted stroke-sm') + if (typeof so.text === 'string') { + points.textAnchor = points[id + '_boxTopLeft'] + .shiftFractionTowards(points[id + '_boxBottomRight'], 0.5) + .attr('data-text', so.text) + .attr('data-text-class', 'center') + } + }, + }, +} + +// More specifically named exports +// export const cutonfoldPlugin = cutonfold +// export const pluginCutonfold = cutonfold diff --git a/plugins/plugin-cutonfold/src/index.mjs b/plugins/plugin-annotations/src/cutonfold.mjs similarity index 95% rename from plugins/plugin-cutonfold/src/index.mjs rename to plugins/plugin-annotations/src/cutonfold.mjs index 7b932995e14..cf7b289b90f 100644 --- a/plugins/plugin-cutonfold/src/index.mjs +++ b/plugins/plugin-annotations/src/cutonfold.mjs @@ -9,7 +9,7 @@ const markers = ` ` -export const plugin = { +export const cutonfold = { name, version, hooks: { @@ -67,5 +67,5 @@ export const plugin = { } // More specifically named exports -export const cutonfoldPlugin = plugin -export const pluginCutonfold = plugin +// export const cutonfoldPlugin = cutonfold +// export const pluginCutonfold = cutonfold diff --git a/plugins/plugin-annotations/src/index.mjs b/plugins/plugin-annotations/src/index.mjs new file mode 100644 index 00000000000..abf290e09c6 --- /dev/null +++ b/plugins/plugin-annotations/src/index.mjs @@ -0,0 +1,22 @@ +import { bartack } from './bartack.mjs' +import { crossbox } from './crossbox.mjs' +import { cutonfold } from './cutonfold.mjs' +import { pleat } from './pleat.mjs' +import { sewtogether } from './sewtogether.mjs' + +// Named exports +// export bartack +export const bartackPlugin = bartack +export const pluginBartack = bartack + +export const crossboxPlugin = crossbox +export const pluginCrossbox = crossbox + +export const cutonfoldPlugin = cutonfold +export const pluginCutonfold = cutonfold + +export const pleatPlugin = pleat +export const pluginPleat = pleat + +export const sewtogetherPlugin = sewtogether +export const pluginSewtogether = sewtogether diff --git a/plugins/plugin-annotations/src/pleat.mjs b/plugins/plugin-annotations/src/pleat.mjs new file mode 100644 index 00000000000..b96662fbd15 --- /dev/null +++ b/plugins/plugin-annotations/src/pleat.mjs @@ -0,0 +1,76 @@ +import { name, version } from '../data.mjs' + +const markers = ` + + + +` + +export const plugin = { + name, + version, + hooks: { + preRender: (svg) => { + if (svg.defs.indexOf(markers) === -1) svg.defs += markers + }, + }, + macros: { + pleat: function (so, { points, paths, Path, complete, scale }) { + if (so === false) { + delete points.pleatFrom + delete points.pleatFromIn + delete points.pleatTo + delete points.pleatToIn + delete paths.pleatTo + delete paths.pleatFrom + delete paths.pleatArrow + return true + } + so = { + margin: 35, + prefix: 'pleat', + reverse: false, + ...so, + } + if (complete) { + points[so.prefix + 'From'] = so.from + points[so.prefix + 'To'] = so.to + points[so.prefix + 'FromIn'] = points[so.prefix + 'From'].shift( + so.from.shiftTowards(so.to, 0.1).angle(so.from) + 270, + so.margin * scale + ) + points[so.prefix + 'ToIn'] = points[so.prefix + 'To'].shift( + so.from.shiftTowards(so.to, 0.1).angle(so.to) + 90, + so.margin * scale + ) + paths[so.prefix + 'PleatFrom'] = new Path() + .move(points[so.prefix + 'From']) + .line(points[so.prefix + 'FromIn']) + .attr('class', 'note ' + (so.reverse ? 'dashed' : '')) + paths[so.prefix + 'PleatTo'] = new Path() + .move(points[so.prefix + 'To']) + .line(points[so.prefix + 'ToIn']) + .attr('class', 'note ' + (so.reverse ? '' : 'dashed')) + paths[so.prefix + 'PleatArrow'] = new Path() + .move( + points[so.prefix + (so.reverse ? 'To' : 'From')].shiftFractionTowards( + points[so.prefix + (so.reverse ? 'ToIn' : 'FromIn')], + 0.25 + ) + ) + .line( + points[so.prefix + (so.reverse ? 'From' : 'To')].shiftFractionTowards( + points[so.prefix + (so.reverse ? 'FromIn' : 'ToIn')], + 0.25 + ) + ) + .attr('class', 'note') + .attr('marker-end', 'url(#pleatTo)') + } + }, + }, +} + +// More specifically named exports +// export const pleatPlugin = plugin +// export const pluginPleat = plugin diff --git a/plugins/plugin-annotations/src/sewtogether.mjs b/plugins/plugin-annotations/src/sewtogether.mjs new file mode 100644 index 00000000000..21c618e5580 --- /dev/null +++ b/plugins/plugin-annotations/src/sewtogether.mjs @@ -0,0 +1,94 @@ +import { name, version } from '../data.mjs' + +const markers = ` + + + + + + + + + +` + +export const plugin = { + name, + version, + hooks: { + preRender: (svg) => { + if (svg.defs.indexOf(markers) === -1) svg.defs += markers + }, + }, + macros: { + sewtogether: function (so, { points, paths, Path, complete, scale, sa }) { + if (so === false) { + delete points.sewtogetherFrom + delete points.sewtogetherFromCp + delete points.sewtogetherMiddle + delete points.sewtogetherTo + delete points.sewtogetherHinge + delete points.sewtogetherToCp + delete paths.sewtogetherSewTogetherHinge + delete paths.sewtogetherSewTogether + return true + } + so = { + prefix: 'sewtogether', + ...so, + } + if (complete) { + if (null == so.middle) { + so.middle = so.from.shiftFractionTowards(so.to, 0.5) + } + points[so.prefix + 'From'] = so.from + points[so.prefix + 'Middle'] = so.middle + points[so.prefix + 'To'] = so.to + + points[so.prefix + 'FromCp'] = points[so.prefix + 'From'].shift( + points[so.prefix + 'From'].angle(points[so.prefix + 'Middle']) + 90, + points[so.prefix + 'From'].dist(points[so.prefix + 'Middle']) / 1.5 + ) + points[so.prefix + 'ToCp'] = points[so.prefix + 'To'].shift( + points[so.prefix + 'To'].angle(points[so.prefix + 'Middle']) - 90, + points[so.prefix + 'To'].dist(points[so.prefix + 'Middle']) / 1.5 + ) + + if (so.hinge) { + points[so.prefix + 'Hinge'] = points[so.prefix + 'Middle'].shift( + points[so.prefix + 'Middle'].angle(points[so.prefix + 'To']) + + Math.abs( + points[so.prefix + 'Middle'].angle(points[so.prefix + 'From']) - + points[so.prefix + 'Middle'].angle(points[so.prefix + 'To']) + ) / + 2 + + (sa ? 180 : 0), + sa + ? sa + : Math.min( + points[so.prefix + 'From'].dist(points[so.prefix + 'Middle']), + points[so.prefix + 'From'].dist(points[so.prefix + 'Middle']) + ) / 4 + ) + paths[so.prefix + 'SewTogetherHinge'] = new Path() + .move(points[so.prefix + 'Middle']) + .line(points[so.prefix + 'Hinge']) + .attr('marker-start', 'url(#sewTogetherCross)') + .attr('class', 'dotted note stroke-sm') + } + paths[so.prefix + 'SewTogether'] = new Path() + .move(points[so.prefix + 'From']) + .curve(points[so.prefix + 'FromCp'], points[so.prefix + 'ToCp'], points[so.prefix + 'To']) + .attr('class', 'dotted note stroke-sm') + .attr('marker-start', 'url(#sewTogetherStart)') + .attr('marker-end', 'url(#sewTogetherEnd)') + .attr('data-text', 'sewTogether') + .attr('data-text-class', 'center fill-note text-xs') + } + }, + }, +} + +// More specifically named exports +// export const sewtogetherPlugin = plugin +// export const pluginSewtogether = plugin diff --git a/plugins/plugin-cutonfold/tests/plugin.test.mjs b/plugins/plugin-annotations/tests/plugin.test.mjs similarity index 100% rename from plugins/plugin-cutonfold/tests/plugin.test.mjs rename to plugins/plugin-annotations/tests/plugin.test.mjs diff --git a/plugins/plugin-bartack/CHANGELOG.md b/plugins/plugin-bartack/CHANGELOG.md deleted file mode 100644 index ce45626fead..00000000000 --- a/plugins/plugin-bartack/CHANGELOG.md +++ /dev/null @@ -1,37 +0,0 @@ -# Change log for: @freesewing/plugin-bartack - - -## 2.21.0 (2022-06-27) - -### Changed - - - Migrated from Rollup to Esbuild for all builds - -## 2.20.0 (2022-01-24) - -### Changed - - - Now part of `@freesewing/plugin-bundle` - -### Fixed - - - Fixed issue with `bartackFractionAlong` macro - - Handle start and endpoints being the same in `bartackFractionAlong` - - Support start and endpoints being reversed in `bartackFractionAlong` - -## 2.19.6 (2021-12-29) - -### Added - - - Added (esm) unit tests - -### Changed - - - Add utility classes and CSS variables for better styling support - - -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/plugins/plugin-bartack/tests/plugin.test.mjs b/plugins/plugin-bartack/tests/plugin.test.mjs deleted file mode 100644 index 6e3d569f48a..00000000000 --- a/plugins/plugin-bartack/tests/plugin.test.mjs +++ /dev/null @@ -1,291 +0,0 @@ -import chai from 'chai' -import { round, Design } from '@freesewing/core' -import { plugin } from '../src/index.mjs' - -const expect = chai.expect - -describe('Bartack plugin Tests', () => { - it('draws a default bartack from a point', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(21.5) - expect(c.ops[1].type).to.equal('line') - expect(c.ops[1].to.x).to.equal(10) - expect(c.ops[1].to.y).to.equal(21.5) - expect(c.ops[2].to.x).to.equal(10) - expect(c.ops[2].to.y).to.equal(18.5) - expect(c.ops[3].to.x).to.equal(11) - expect(c.ops[3].to.y).to.equal(21.5) - expect(c.ops[4].to.x).to.equal(11) - expect(c.ops[4].to.y).to.equal(18.5) - expect(c.ops).to.have.lengthOf(31) - }) - - it('draws a bartack along a path', function () { - const part = { - name: 'test', - draft: ({ Point, points, Path, macro, part }) => { - points.from = new Point(10, 20) - points.to = new Point(10, 30) - macro('bartackAlong', { - path: new Path().move(points.from).line(points.to), - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[0].to.x).to.equal(8.5) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].type).to.equal('line') - expect(c.ops[1].to.x).to.equal(8.5) - expect(c.ops[1].to.y).to.equal(20) - expect(c.ops[2].to.x).to.equal(11.5) - expect(c.ops[2].to.y).to.equal(20) - expect(c.ops[3].to.x).to.equal(8.5) - expect(c.ops[3].to.y).to.equal(21) - expect(c.ops[4].to.x).to.equal(11.5) - expect(c.ops[4].to.y).to.equal(21) - expect(c.ops).to.have.lengthOf(21) - }) - - it('can be called using the bartackFractionAlong syntax', function () { - const part = { - name: 'test', - draft: ({ Point, points, Path, macro, part }) => { - points.from = new Point(10, 20) - points.to = new Point(10, 100) - macro('bartackAlong', { - path: new Path().move(points.from).line(points.to), - start: 0.2, - end: 0.8, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(round(c.ops[0].to.x)).to.equal(8.5) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[1].to.x)).to.equal(8.5) - expect(c.ops[1].to.y).to.equal(20) - expect(round(c.ops[2].to.x)).to.equal(11.5) - expect(c.ops[2].to.y).to.equal(20) - expect(round(c.ops[3].to.x)).to.equal(8.5) - expect(c.ops[3].to.y).to.equal(21) - expect(round(c.ops[4].to.x)).to.equal(11.5) - expect(c.ops[4].to.y).to.equal(21) - expect(c.ops).to.have.lengthOf(161) - }) - - it('can be called using the bartackFractionAlong syntax', function () { - const part = { - name: 'test', - draft: ({ Point, points, Path, macro, part }) => { - points.from = new Point(10, 20) - points.to = new Point(10, 100) - macro('bartackFractionAlong', { - path: new Path().move(points.from).line(points.to), - start: 0.2, - end: 0.8, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(round(c.ops[0].to.x)).to.equal(8.5) - expect(c.ops[0].to.y).to.equal(36) - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[1].to.x)).to.equal(8.5) - expect(c.ops[1].to.y).to.equal(36) - expect(round(c.ops[2].to.x)).to.equal(11.5) - expect(c.ops[2].to.y).to.equal(36) - expect(round(c.ops[3].to.x)).to.equal(8.5) - expect(c.ops[3].to.y).to.equal(37) - expect(round(c.ops[4].to.x)).to.equal(11.5) - expect(c.ops[4].to.y).to.equal(37) - expect(c.ops).to.have.lengthOf(97) - }) - - it('has configurable length', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - length: 20, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(21.5) - expect(c.ops[1].type).to.equal('line') - expect(c.ops[1].to.x).to.equal(10) - expect(c.ops[1].to.y).to.equal(21.5) - expect(c.ops[2].to.x).to.equal(10) - expect(c.ops[2].to.y).to.equal(18.5) - expect(c.ops[3].to.x).to.equal(11) - expect(c.ops[3].to.y).to.equal(21.5) - expect(c.ops[4].to.x).to.equal(11) - expect(c.ops[4].to.y).to.equal(18.5) - expect(c.ops).to.have.lengthOf(41) - }) - - it('has configurable width', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - width: 5, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(22.5) - expect(c.ops[1].type).to.equal('line') - expect(c.ops[1].to.x).to.equal(10) - expect(c.ops[1].to.y).to.equal(22.5) - expect(c.ops[2].to.x).to.equal(10) - expect(c.ops[2].to.y).to.equal(17.5) - expect(round(c.ops[3].to.x)).to.equal(11.67) - expect(c.ops[3].to.y).to.equal(22.5) - expect(round(c.ops[4].to.x)).to.equal(11.67) - expect(c.ops[4].to.y).to.equal(17.5) - expect(c.ops).to.have.lengthOf(19) - }) - - it('has configurable angle', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - angle: 45, - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - expect(c.ops[0].type).to.equal('move') - expect(round(c.ops[0].to.x)).to.equal(11.06) - expect(round(c.ops[0].to.y)).to.equal(21.06) - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[1].to.x)).to.equal(11.06) - expect(round(c.ops[1].to.y)).to.equal(21.06) - expect(round(c.ops[2].to.x)).to.equal(8.94) - expect(round(c.ops[2].to.y)).to.equal(18.94) - expect(round(c.ops[3].to.x)).to.equal(11.72) - expect(round(c.ops[3].to.y)).to.equal(20.4) - expect(round(c.ops[4].to.x)).to.equal(9.6) - expect(round(c.ops[4].to.y)).to.equal(18.28) - expect(c.ops).to.have.lengthOf(33) - }) - - it('has configurable suffix', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - suffix: 'foo', - }) - - part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.bartackfoo - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - }) - - it('has configurable prefix', function () { - const part = { - name: 'test', - draft: ({ Point, points, macro, part }) => { - points.from = new Point(10, 20) - macro('bartack', { - anchor: points.from, - prefix: 'foo', - }) - - return part - }, - plugins: [plugin], - } - const design = new Design({ parts: [part] }) - const pattern = new design() - pattern.draft() - const c = pattern.parts[0].test.paths.foobartack - expect(c.attributes.get('class')).to.equal('stroke-sm stroke-mark') - }) -}) diff --git a/plugins/plugin-bartack/tests/shared.test.mjs b/plugins/plugin-bartack/tests/shared.test.mjs deleted file mode 100644 index 7bf4f668398..00000000000 --- a/plugins/plugin-bartack/tests/shared.test.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// This file is auto-generated | Any changes you make will be overwritten. -import { plugin } from '../src/index.mjs' -import { sharedPluginTests } from '../../../tests/plugins/shared.mjs' - -// Run shared tests -sharedPluginTests(plugin) diff --git a/plugins/plugin-bundle/package.json b/plugins/plugin-bundle/package.json index 9159ea74ff2..d6b88c3eec1 100644 --- a/plugins/plugin-bundle/package.json +++ b/plugins/plugin-bundle/package.json @@ -53,9 +53,9 @@ "devDependencies": { "mocha": "10.0.0", "chai": "4.2.0", + "@freesewing/plugin-annotations": "3.0.0-alpha.4", "@freesewing/plugin-banner": "3.0.0-alpha.4", "@freesewing/plugin-buttons": "3.0.0-alpha.4", - "@freesewing/plugin-cutonfold": "3.0.0-alpha.4", "@freesewing/plugin-dimension": "3.0.0-alpha.4", "@freesewing/plugin-grainline": "3.0.0-alpha.4", "@freesewing/plugin-logo": "3.0.0-alpha.4", diff --git a/plugins/plugin-bundle/src/index.mjs b/plugins/plugin-bundle/src/index.mjs index d72b9f954fe..e2524a659ea 100644 --- a/plugins/plugin-bundle/src/index.mjs +++ b/plugins/plugin-bundle/src/index.mjs @@ -1,7 +1,11 @@ +import { bartackPlugin } from '../../plugin-annotations/src/index.mjs' +import { crossboxPlugin } from '../../plugin-annotations/src/index.mjs' +import { cutonfoldPlugin } from '../../plugin-annotations/src/index.mjs' +import { pleatPlugin } from '../../plugin-annotations/src/index.mjs' +import { sewtogetherPlugin } from '../../plugin-annotations/src/index.mjs' + import { bannerPlugin } from '../../plugin-banner/src/index.mjs' -import { bartackPlugin } from '../../plugin-bartack/src/index.mjs' import { buttonsPlugin } from '../../plugin-buttons/src/index.mjs' -import { cutonfoldPlugin } from '../../plugin-cutonfold/src/index.mjs' import { dimensionPlugin } from '../../plugin-dimension/src/index.mjs' import { grainlinePlugin } from '../../plugin-grainline/src/index.mjs' import { logoPlugin } from '../../plugin-logo/src/index.mjs' @@ -18,6 +22,7 @@ const bundledPlugins = [ bannerPlugin, bartackPlugin, buttonsPlugin, + crossboxPlugin, cutonfoldPlugin, dimensionPlugin, grainlinePlugin, @@ -25,8 +30,10 @@ const bundledPlugins = [ measurementsPlugin, mirrorPlugin, notchesPlugin, + pleatPlugin, roundPlugin, scaleboxPlugin, + sewtogetherPlugin, sprinklePlugin, titlePlugin, ] diff --git a/plugins/plugin-cutonfold/CHANGELOG.md b/plugins/plugin-cutonfold/CHANGELOG.md deleted file mode 100644 index 27b7b278169..00000000000 --- a/plugins/plugin-cutonfold/CHANGELOG.md +++ /dev/null @@ -1,33 +0,0 @@ -# Change log for: @freesewing/plugin-cutonfold - - -## 2.21.0 (2022-06-27) - -### Changed - - - Migrated from Rollup to Esbuild for all builds - -## 2.20.0 (2022-01-24) - -### Added - - - Support for scale setting - -## 2.19.6 (2021-12-29) - -### Added - - - Added (esm) unit tests - -## 2.0.0 (2019-08-25) - -### Added - - - Initial release - - -This is the **initial release**, and the start of this change log. - -> Prior to version 2, FreeSewing was not a JavaScript project. -> As such, that history is out of scope for this change log. - diff --git a/plugins/plugin-cutonfold/build.mjs b/plugins/plugin-cutonfold/build.mjs deleted file mode 100644 index 99ace216bc8..00000000000 --- a/plugins/plugin-cutonfold/build.mjs +++ /dev/null @@ -1,35 +0,0 @@ -/* This script will build the package with esbuild */ -import esbuild from 'esbuild' -import pkg from './package.json' assert { type: 'json' } - -// Create banner based on package info -const banner = `/** - * ${pkg.name} | v${pkg.version} - * ${pkg.description} - * (c) ${new Date().getFullYear()} ${pkg.author} - * @license ${pkg.license} - */` - -// Shared esbuild options -const options = { - banner: { js: banner }, - bundle: true, - entryPoints: ['src/index.mjs'], - format: 'esm', - outfile: 'dist/index.mjs', - external: ['@freesewing'], - metafile: process.env.VERBOSE ? true : false, - minify: process.env.NO_MINIFY ? false : true, - sourcemap: true, -} - -// Let esbuild generate the build -const build = async () => { - const result = await esbuild.build(options).catch(() => process.exit(1)) - - if (process.env.VERBOSE) { - const info = await esbuild.analyzeMetafile(result.metafile) - console.log(info) - } -} -build() diff --git a/plugins/plugin-cutonfold/data.mjs b/plugins/plugin-cutonfold/data.mjs deleted file mode 100644 index 0c74bc30573..00000000000 --- a/plugins/plugin-cutonfold/data.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// This file is auto-generated | All changes you make will be overwritten. -export const name = '@freesewing/plugin-cutonfold' -export const version = '3.0.0-alpha.4' -export const data = { name, version } diff --git a/plugins/plugin-cutonfold/package.json b/plugins/plugin-cutonfold/package.json deleted file mode 100644 index 4c5108a0be6..00000000000 --- a/plugins/plugin-cutonfold/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "@freesewing/plugin-cutonfold", - "version": "3.0.0-alpha.4", - "description": "A FreeSewing plugin to add cut-on-fold indicators on your patterns", - "author": "Joost De Cock (https://github.com/joostdecock)", - "homepage": "https://freesewing.org/", - "repository": "github:freesewing/freesewing", - "license": "MIT", - "bugs": { - "url": "https://github.com/freesewing/freesewing/issues" - }, - "funding": { - "type": "individual", - "url": "https://freesewing.org/patrons/join" - }, - "keywords": [ - "freesewing", - "plugin", - "sewing pattern", - "sewing", - "design", - "parametric design", - "made to measure", - "diy", - "fashion" - ], - "type": "module", - "module": "dist/index.mjs", - "exports": { - ".": "./dist/index.mjs" - }, - "scripts": { - "build": "node build.mjs", - "clean": "rimraf dist", - "mbuild": "NO_MINIFY=1 node build.mjs", - "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", - "test": "npx mocha tests/*.test.mjs", - "vbuild": "VERBOSE=1 node build.mjs", - "lab": "cd ../../sites/lab && yarn start", - "tips": "node ../../scripts/help.mjs", - "lint": "npx eslint 'src/**' 'tests/*.mjs'", - "prettier": "npx prettier --write 'src/*.mjs' 'tests/*.mjs'", - "testci": "npx mocha tests/*.test.mjs --reporter ../../tests/reporters/terse.js", - "cibuild_step1": "node build.mjs", - "wbuild": "node build.mjs", - "wcibuild_step1": "node build.mjs" - }, - "peerDependencies": { - "@freesewing/core": "3.0.0-alpha.4" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "10.0.0", - "chai": "4.2.0" - }, - "files": [ - "dist/*", - "README.md" - ], - "publishConfig": { - "access": "public", - "tag": "next" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=8" - } -} diff --git a/plugins/plugin-cutonfold/src/lib/markers.js b/plugins/plugin-cutonfold/src/lib/markers.js deleted file mode 100644 index b60f1aed59f..00000000000 --- a/plugins/plugin-cutonfold/src/lib/markers.js +++ /dev/null @@ -1,9 +0,0 @@ -// FIXME identical arrow paths for dimensions, cutonfold, and grainline -export default ` - - - - - - -`; diff --git a/plugins/plugin-cutonfold/tests/shared.test.mjs b/plugins/plugin-cutonfold/tests/shared.test.mjs deleted file mode 100644 index 7bf4f668398..00000000000 --- a/plugins/plugin-cutonfold/tests/shared.test.mjs +++ /dev/null @@ -1,6 +0,0 @@ -// This file is auto-generated | Any changes you make will be overwritten. -import { plugin } from '../src/index.mjs' -import { sharedPluginTests } from '../../../tests/plugins/shared.mjs' - -// Run shared tests -sharedPluginTests(plugin)