diff --git a/designs/titan/config/index.js b/designs/titan/config/index.js deleted file mode 100644 index faa6001e42f..00000000000 --- a/designs/titan/config/index.js +++ /dev/null @@ -1,79 +0,0 @@ -import configHelpers from '@freesewing/config-helpers' -import pkg from '../package.json' assert { type: 'json' } - -const { version } = pkg -const { elastics, pctBasedOn } = configHelpers - -export default { - version, - name: 'titan', - design: ['Debra Bean', 'Joost De Cock'], - code: 'Joost De Cock', - department: 'bottoms', - type: 'block', - difficulty: 3, - optionGroups: { - fit: ['seatEase', 'kneeEase', 'waistEase'], - style: ['waistHeight', 'fitKnee', 'lengthBonus', 'crotchDrop'], - advanced: [ - 'crossSeamCurveStart', - 'crossSeamCurveBend', - 'crossSeamCurveAngle', - 'crotchSeamCurveStart', - 'crotchSeamCurveBend', - 'crotchSeamCurveAngle', - 'grainlinePosition', - 'legBalance', - 'waistBalance', - 'waistbandWidth', - ], - }, - measurements: [ - 'crossSeam', - 'crossSeamFront', - 'knee', - 'seat', - 'seatBack', - 'waist', - 'waistBack', - 'waistToFloor', - 'waistToKnee', - 'waistToHips', - 'waistToSeat', - 'waistToUpperLeg', - ], - dependencies: { - front: 'back', - }, - options: { - // Constants - titanPaperless: true, - fitCrossSeam: true, - fitCrossSeamFront: true, - fitCrossSeamBack: true, - fitGuides: true, - - // Fit - waistEase: { pct: 2, min: 0, max: 10 }, - seatEase: { pct: 2, min: 0, max: 10 }, - kneeEase: { pct: 6, min: 1, max: 25 }, - - // Style - waistHeight: { pct: 100, min: 0, max: 100 }, - lengthBonus: { pct: 2, min: -20, max: 10 }, - crotchDrop: { pct: 2, min: 0, max: 15 }, - fitKnee: { bool: false }, - - // Advanced - legBalance: { pct: 57.5, min: 52.5, max: 62.5 }, - crossSeamCurveStart: { pct: 85, min: 60, max: 100 }, - crossSeamCurveBend: { pct: 65, min: 45, max: 85 }, - crossSeamCurveAngle: { deg: 12, min: 0, max: 20 }, - crotchSeamCurveStart: { pct: 80, min: 60, max: 95 }, - crotchSeamCurveBend: { pct: 80, min: 45, max: 100 }, - crotchSeamCurveAngle: { deg: 25, min: 0, max: 35 }, - waistBalance: { pct: 60, min: 30, max: 90 }, - grainlinePosition: { pct: 45, min: 30, max: 60 }, - waistbandWidth: { pct: 3, min: 1, max: 6, snap: elastics, ...pctBasedOn('waistToFloor') }, - }, -} diff --git a/designs/titan/src/back.mjs b/designs/titan/src/back.mjs index 1bff01db2f5..571e0fc5cc9 100644 --- a/designs/titan/src/back.mjs +++ b/designs/titan/src/back.mjs @@ -1,4 +1,8 @@ -export default (part) => { +import { pctBasedOn } from '@freesewing/core' +import { elastics } from '@freesewing/snapseries' +import { pluginBundle } from '@freesewing/plugin-bundle' + +function titanBack(part) { /* * Helper method to draw the inseam path */ @@ -492,3 +496,58 @@ export default (part) => { return part } + +export const back = { + name: 'titan.back', + plugins: [pluginBundle], + measurements: [ + 'crossSeam', + 'crossSeamFront', + 'knee', + 'seat', + 'seatBack', + 'waist', + 'waistBack', + 'waistToFloor', + 'waistToKnee', + 'waistToHips', + 'waistToSeat', + 'waistToUpperLeg', + ], + options: { + // Constants + titanPaperless: true, + fitCrossSeam: true, + fitCrossSeamFront: true, + fitCrossSeamBack: true, + fitGuides: true, + // Fit + waistEase: { pct: 2, min: 0, max: 10, menu: 'fit' }, + seatEase: { pct: 2, min: 0, max: 10, menu: 'fit' }, + kneeEase: { pct: 6, min: 1, max: 25, menu: 'fit' }, + // Style + waistHeight: { pct: 100, min: 0, max: 100, menu: 'style' }, + lengthBonus: { pct: 2, min: -20, max: 10, menu: 'style' }, + crotchDrop: { pct: 2, min: 0, max: 15, menu: 'style' }, + fitKnee: { bool: false, menu: 'style' }, + // Advanced + legBalance: { pct: 57.5, min: 52.5, max: 62.5, menu: 'advanced' }, + crossSeamCurveStart: { pct: 85, min: 60, max: 100, menu: 'advanced' }, + crossSeamCurveBend: { pct: 65, min: 45, max: 85, menu: 'advanced' }, + crossSeamCurveAngle: { deg: 12, min: 0, max: 20, menu: 'advanced' }, + crotchSeamCurveStart: { pct: 80, min: 60, max: 95, menu: 'advanced' }, + crotchSeamCurveBend: { pct: 80, min: 45, max: 100, menu: 'advanced' }, + crotchSeamCurveAngle: { deg: 25, min: 0, max: 35, menu: 'advanced' }, + waistBalance: { pct: 60, min: 30, max: 90, menu: 'advanced' }, + grainlinePosition: { pct: 45, min: 30, max: 60, menu: 'advanced' }, + waistbandWidth: { + pct: 3, + min: 1, + max: 6, + snap: elastics, + ...pctBasedOn('waistToFloor'), + menu: 'advanced', + }, + }, + draft: titanBack, +} diff --git a/designs/titan/src/front.mjs b/designs/titan/src/front.mjs index ba80a877803..ec597fd2865 100644 --- a/designs/titan/src/front.mjs +++ b/designs/titan/src/front.mjs @@ -1,4 +1,6 @@ -export default (part) => { +import { back } from './back.mjs' + +function titanFront(part) { /* * Helper method to draw the inseam path */ @@ -563,3 +565,9 @@ export default (part) => { return part } + +export const front = { + name: 'titan.front', + after: back, + draft: titanFront, +} diff --git a/designs/titan/src/index.mjs b/designs/titan/src/index.mjs index 571d39f17c7..78b681c9f44 100644 --- a/designs/titan/src/index.mjs +++ b/designs/titan/src/index.mjs @@ -1,19 +1,13 @@ -import freesewing from '@freesewing/core' -import plugins from '@freesewing/plugin-bundle' -import config from '../config' -// Parts -import draftBack from './back' -import draftFront from './front' +import { Design } from '@freesewing/core' +import { data } from '../data.mjs' +import { back } from './back.mjs' +import { front } from './front.mjs' -// Create design -const Titan = new freesewing.Design(config, plugins) - -// Attach draft methods to prototype -Titan.prototype.draftBack = (part) => draftBack(part) -Titan.prototype.draftFront = (part) => draftFront(part) +// Setup our new design +const Titan = new Design({ + data, + parts: [back, front], +}) // Named exports -export { config, Titan } - -// Default export -export default Titan +export { back, front, Titan }