From f98730a250422ccada6ab52bd445d54dc0b0faff Mon Sep 17 00:00:00 2001 From: Benjamin F Date: Sat, 3 Sep 2022 20:06:18 -0700 Subject: [PATCH] Port Benjamin to v3. --- designs/benjamin/config/index.js | 69 -------------------------------- designs/benjamin/src/base.mjs | 37 ++++++++++++++++- designs/benjamin/src/bow1.mjs | 10 ++++- designs/benjamin/src/bow2.mjs | 10 ++++- designs/benjamin/src/bow3.mjs | 10 ++++- designs/benjamin/src/index.mjs | 33 ++++++--------- designs/benjamin/src/ribbon.mjs | 7 +++- 7 files changed, 81 insertions(+), 95 deletions(-) delete mode 100644 designs/benjamin/config/index.js diff --git a/designs/benjamin/config/index.js b/designs/benjamin/config/index.js deleted file mode 100644 index 7d03a8b4156..00000000000 --- a/designs/benjamin/config/index.js +++ /dev/null @@ -1,69 +0,0 @@ -import pkg from '../package.json' assert { type: 'json' } - -const { version } = pkg - -export default { - version, - name: 'benjamin', - design: 'Wouter Van Wageningen', - code: 'Wouter Van Wageningen', - department: 'accessories', - type: 'pattern', - difficulty: 3, - optionGroups: { - fit: ['collarEase', 'adjustmentRibbon'], - style: ['tipWidth', 'knotWidth', 'bowLength', 'bowStyle', 'endStyle', 'ribbonWidth'], - }, - measurements: ['neck'], - dependencies: { - ribbon: 'base', - }, - inject: { - bow1: 'base', - bow2: 'base', - bow3: 'base', - }, - hide: ['base'], - parts: ['ribbon'], - options: { - transitionLength: 2, //Twice the knot - bandLength: 0.17, - ribbonWidth: { - pct: 6, - min: 5, - max: 8, - }, - tipWidth: { - pct: 15, - min: 0, - max: 20, - }, - knotWidth: { - pct: 7, - min: 5, - max: 10, - }, - bowLength: { - pct: 28, - min: 23, - max: 33, - }, - collarEase: { - pct: 3, - min: 0, - max: 6, - }, - bowStyle: { - dflt: 'butterfly', - list: ['diamond', 'butterfly', 'square', 'widesquare'], - }, - endStyle: { - dflt: 'straight', - list: ['straight', 'pointed', 'rounded'], - }, - adjustmentRibbon: { - bool: false, - }, - adjustmentRibbonWidth: 20, - }, -} diff --git a/designs/benjamin/src/base.mjs b/designs/benjamin/src/base.mjs index c7ce94d6921..d4847e4f14f 100644 --- a/designs/benjamin/src/base.mjs +++ b/designs/benjamin/src/base.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { pluginBundle } from '@freesewing/plugin-bundle' + +function draftBenjaminBase (part) { let { store, sa, @@ -200,3 +202,36 @@ export default function (part) { return part } + +export const base = { + name: 'benjamin.base', + hide: true, + measurements: [ + 'neck', + ], + options: { + // Static options + transitionLength: 2, //Twice the knot + bandLength: 0.17, + adjustmentRibbonWidth: 20, + // Fit options + collarEase: { pct: 3, min: 0, max: 6, menu: 'fit' }, + adjustmentRibbon: { bool: false, menu: 'fit' }, + // Style options + tipWidth: { pct: 15, min: 0, max: 20, menu: 'style' }, + knotWidth: { pct: 7, min: 5, max: 10, menu: 'style' }, + bowLength: { pct: 28, min: 23, max: 33, menu: 'style' }, + bowStyle: { dflt: 'butterfly', + list: ['diamond', 'butterfly', 'square', 'widesquare'], + menu: 'style' + }, + endStyle: { + dflt: 'straight', + list: ['straight', 'pointed', 'rounded'], + menu: 'style' + }, + ribbonWidth: { pct: 6, min: 5, max: 8, menu: 'style' }, + }, + plugins: [ pluginBundle ], + draft: draftBenjaminBase, +} diff --git a/designs/benjamin/src/bow1.mjs b/designs/benjamin/src/bow1.mjs index 8fe9fdf858a..bc6cbd6cf22 100644 --- a/designs/benjamin/src/bow1.mjs +++ b/designs/benjamin/src/bow1.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { base } from './base.mjs' + +function draftBenjaminBow1 (part) { let { Point, points, Path, paths, complete, macro, sa, store, paperless } = part.shorthand() points.bandBottomLeft = points.bandBottomLeft.shift(0, 0) @@ -44,3 +46,9 @@ export default function (part) { return part } + +export const bow1 = { + name: 'benjamin.bow1', + from: base, + draft: draftBenjaminBow1, +} diff --git a/designs/benjamin/src/bow2.mjs b/designs/benjamin/src/bow2.mjs index a76760a5789..55cfa21dc47 100644 --- a/designs/benjamin/src/bow2.mjs +++ b/designs/benjamin/src/bow2.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { base } from './base.mjs' + +function draftBenjaminBow2 (part) { let { options, Point, points, Path, paths, complete, macro, sa, store, paperless } = part.shorthand() @@ -48,3 +50,9 @@ export default function (part) { return part } + +export const bow2 = { + name: 'benjamin.bow2', + from: base, + draft: draftBenjaminBow2, +} diff --git a/designs/benjamin/src/bow3.mjs b/designs/benjamin/src/bow3.mjs index a6120d67224..69f17f1bfe3 100644 --- a/designs/benjamin/src/bow3.mjs +++ b/designs/benjamin/src/bow3.mjs @@ -1,4 +1,6 @@ -export default function (part) { +import { base } from './base.mjs' + +function draftBenjaminBow3 (part) { let { options, Point, points, Path, paths, complete, macro, sa, store, paperless } = part.shorthand() @@ -48,3 +50,9 @@ export default function (part) { return part } + +export const bow3 = { + name: 'benjamin.bow3', + from: base, + draft: draftBenjaminBow3, +} diff --git a/designs/benjamin/src/index.mjs b/designs/benjamin/src/index.mjs index c6f50f7a3d8..80ad056c148 100644 --- a/designs/benjamin/src/index.mjs +++ b/designs/benjamin/src/index.mjs @@ -1,25 +1,16 @@ -import freesewing from '@freesewing/core' -import plugins from '@freesewing/plugin-bundle' -import config from '../config' -// Parts -import draftBase from './base' -import draftBow1 from './bow1' -import draftBow2 from './bow2' -import draftBow3 from './bow3' -import draftRibbon from './ribbon' +import { Design } from '@freesewing/core' +import { data } from '../data.mjs' +import { bow1 } from './bow1.mjs' +import { bow2 } from './bow2.mjs' +import { bow3 } from './bow3.mjs' +import { ribbon } from './ribbon.mjs' -// Create new design -const Benjamin = new freesewing.Design(config, plugins) - -// Attach draft methods to prototype -Benjamin.prototype.draftBase = draftBase -Benjamin.prototype.draftBow1 = draftBow1 -Benjamin.prototype.draftBow2 = draftBow2 -Benjamin.prototype.draftBow3 = draftBow3 -Benjamin.prototype.draftRibbon = draftRibbon +// Setup our new design +const Benjamin = new Design({ + data, + parts: [ bow1, bow2, bow3, ribbon ], +}) // Named exports -export { config, Benjamin } +export { bow1, bow2, bow3, ribbon, Benjamin } -// Default export -export default Benjamin diff --git a/designs/benjamin/src/ribbon.mjs b/designs/benjamin/src/ribbon.mjs index 7b005ef5a37..1fe00e4ccac 100644 --- a/designs/benjamin/src/ribbon.mjs +++ b/designs/benjamin/src/ribbon.mjs @@ -1,4 +1,4 @@ -export default function (part) { +function draftBenjaminRibbon (part) { let { Point, Path, measurements, store, options, complete, macro, points, paths, sa, paperless } = part.shorthand() @@ -52,3 +52,8 @@ export default function (part) { return part } + +export const ribbon = { + name: 'benjamin.ribbon', + draft: draftBenjaminRibbon, +}