@freesewing/tutorial
Version:
A FreeSewing pattern for a baby bib that's used in our tutorial
1 lines • 36.1 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../config/index.js","../src/index.js","../src/bib.js","../src/step1.js","../src/step2.js","../src/step3.js","../src/step4.js","../src/step5.js","../src/step6.js","../src/step7.js","../src/step8.js","../src/step9.js","../src/step10.js","../src/step11.js"],"sourcesContent":["import { version } from '../package.json'\n\n// ?? 🤔 ?? --> https://en.freesewing.dev/packages/core/config\n\nexport default {\n name: 'tutorial',\n version,\n design: 'joostdecock',\n code: 'joostdecock',\n department: 'womenswear',\n type: 'pattern',\n difficulty: 1,\n tags: ['example'],\n optionGroups: {\n fit: ['neckRatio', 'widthRatio', 'lengthRatio'],\n box: ['size']\n },\n measurements: ['head'],\n inject: {\n step4: 'step3',\n step5: 'step4',\n step6: 'step5',\n step7: 'step6',\n step8: 'step7',\n step9: 'step8',\n step10: 'step9',\n step11: 'step10'\n },\n parts: ['step1', 'step2', 'bib'],\n options: {\n size: { pct: 50, min: 10, max: 100 },\n neckRatio: { pct: 80, min: 70, max: 90 },\n widthRatio: { pct: 45, min: 35, max: 55 },\n lengthRatio: { pct: 75, min: 55, max: 85 }\n }\n}\n","import freesewing from '@freesewing/core'\nimport plugins from '@freesewing/plugin-bundle'\nimport config from '../config'\nimport draftBib from './bib'\n// Intermediate steps for tutorial\nimport draftStep1 from './step1'\nimport draftStep2 from './step2'\nimport draftStep3 from './step3'\nimport draftStep4 from './step4'\nimport draftStep5 from './step5'\nimport draftStep6 from './step6'\nimport draftStep7 from './step7'\nimport draftStep8 from './step8'\nimport draftStep9 from './step9'\nimport draftStep10 from './step10'\nimport draftStep11 from './step11'\n\n// Create new design\nconst Pattern = new freesewing.Design(config, plugins)\n\n// Attach the draft methods to the prototype\nPattern.prototype.draftBib = draftBib\nPattern.prototype.draftStep1 = draftStep1\nPattern.prototype.draftStep2 = draftStep2\nPattern.prototype.draftStep3 = draftStep3\nPattern.prototype.draftStep4 = draftStep4\nPattern.prototype.draftStep5 = draftStep5\nPattern.prototype.draftStep6 = draftStep6\nPattern.prototype.draftStep7 = draftStep7\nPattern.prototype.draftStep8 = draftStep8\nPattern.prototype.draftStep9 = draftStep9\nPattern.prototype.draftStep10 = draftStep10\nPattern.prototype.draftStep11 = draftStep11\n\nexport default Pattern\n","export default function (part) {\n let {\n Point,\n points,\n Path,\n paths,\n measurements,\n options,\n macro,\n complete,\n snippets,\n Snippet,\n paperless\n } = part.shorthand()\n\n // Construct the neck opening\n let tweak = 1\n let target = (measurements.head * options.neckRatio) / 4\n let delta\n do {\n points.right = new Point((tweak * measurements.head) / 10, 0)\n points.bottom = new Point(0, (tweak * measurements.head) / 12)\n\n points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)\n points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)\n\n paths.neck = new Path()\n .move(points.right)\n .curve(points.rightCp1, points.bottomCp2, points.bottom)\n\n delta = paths.neck.length() - target\n if (delta > 0) tweak = tweak * 0.99\n else tweak = tweak * 1.02\n } while (Math.abs(delta) > 1)\n\n points.rightCp2 = points.rightCp1.flipY()\n points.bottomCp1 = points.bottomCp2.flipX()\n\n points.left = points.right.flipX()\n points.leftCp1 = points.rightCp2.flipX()\n points.leftCp2 = points.rightCp1.flipX()\n\n points.top = points.bottom.flipY()\n points.topCp1 = points.bottomCp2.flipY()\n points.topCp2 = points.bottomCp1.flipY()\n\n // Construct the outline\n let width = measurements.head * options.widthRatio\n let length = measurements.head * options.lengthRatio\n\n points.topLeft = new Point(width / -2, points.top.y - (width / 2 - points.right.x))\n points.topRight = points.topLeft.shift(0, width)\n points.bottomLeft = points.topLeft.shift(-90, length)\n points.bottomRight = points.topRight.shift(-90, length)\n\n points.edgeLeft = new Point(points.topLeft.x, points.left.y)\n points.edgeRight = new Point(points.topRight.x, points.right.y)\n points.edgeTop = new Point(0, points.topLeft.y)\n\n points.edgeLeftCp = points.edgeLeft.shiftFractionTowards(points.topLeft, 0.5)\n points.edgeRightCp = points.edgeLeftCp.flipX()\n points.edgeTopLeftCp = points.edgeTop.shiftFractionTowards(points.topLeft, 0.5)\n points.edgeTopRightCp = points.edgeTopLeftCp.flipX()\n\n // Round the end of the straps\n let strap = points.edgeTop.dy(points.top)\n\n points.tipRight = points.edgeTop.translate(strap / 2, strap / 2)\n points.tipRightTop = new Point(points.tipRight.x, points.edgeTop.y)\n points.tipRightBottom = new Point(points.tipRight.x, points.top.y)\n\n macro('round', {\n from: points.edgeTop,\n to: points.tipRight,\n via: points.tipRightTop,\n prefix: 'tipRightTop'\n })\n macro('round', {\n from: points.tipRight,\n to: points.top,\n via: points.tipRightBottom,\n prefix: 'tipRightBottom'\n })\n\n // Rotate straps so they don't overlap\n let rotateThese = [\n 'edgeTopLeftCp',\n 'edgeTop',\n 'tipRight',\n 'tipRightTop',\n 'tipRightTopStart',\n 'tipRightTopCp1',\n 'tipRightTopCp2',\n 'tipRightTopEnd',\n 'tipRightBottomStart',\n 'tipRightBottomCp1',\n 'tipRightBottomCp2',\n 'tipRightBottomEnd',\n 'tipRightBottom',\n 'top',\n 'topCp2'\n ]\n\n while (points.tipRightBottomStart.x > -1) {\n for (let p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft)\n }\n\n // Add points to anchor snaps on\n points.snapLeft = points.top.shiftFractionTowards(points.edgeTop, 0.5)\n\n // Mirror points to the other side\n points.edgeTopRightCp = points.edgeTopLeftCp.flipX()\n points.topCp1 = points.topCp2.flipX()\n points.tipLeftTopStart = points.tipRightTopStart.flipX()\n points.tipLeftTopCp1 = points.tipRightTopCp1.flipX()\n points.tipLeftTopCp2 = points.tipRightTopCp2.flipX()\n points.tipLeftTopEnd = points.tipRightTopEnd.flipX()\n points.tipLeftBottomStart = points.tipRightBottomStart.flipX()\n points.tipLeftBottomCp1 = points.tipRightBottomCp1.flipX()\n points.tipLeftBottomCp2 = points.tipRightBottomCp2.flipX()\n points.tipLeftBottomEnd = points.tipRightBottomEnd.flipX()\n points.snapRight = points.snapLeft.flipX()\n\n // Round the bottom of the bib\n // Radius is fixed, but you could use an option for it)\n macro('round', {\n from: points.topLeft,\n to: points.bottomRight,\n via: points.bottomLeft,\n radius: points.bottomRight.x / 4,\n prefix: 'bottomLeft'\n })\n macro('round', {\n from: points.bottomLeft,\n to: points.topRight,\n via: points.bottomRight,\n radius: points.bottomRight.x / 4,\n prefix: 'bottomRight'\n })\n\n // Construct the path\n paths.seam = new Path()\n .move(points.edgeLeft)\n .line(points.bottomLeftStart)\n .curve(points.bottomLeftCp1, points.bottomLeftCp2, points.bottomLeftEnd)\n .line(points.bottomRightStart)\n .curve(points.bottomRightCp1, points.bottomRightCp2, points.bottomRightEnd)\n .line(points.edgeRight)\n .curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)\n .curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)\n .curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)\n .curve(points.topCp1, points.rightCp2, points.right)\n .curve(points.rightCp1, points.bottomCp2, points.bottom)\n .curve(points.bottomCp1, points.leftCp2, points.left)\n .curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)\n .curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)\n .curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)\n .curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)\n .close()\n .attr('class', 'fabric')\n\n // Complete?\n if (complete) {\n // Add the snaps\n snippets.snapMale = new Snippet('snap-male', points.snapLeft)\n snippets.snapFemale = new Snippet('snap-female', points.snapRight).attr('opacity', 0.5)\n\n // Add the bias tape\n paths.bias = paths.seam\n .offset(-5)\n .attr('class', 'various dashed')\n .attr('data-text', 'finishWithBiasTape')\n .attr('data-text-class', 'center fill-various')\n\n // Add the title\n points.title = points.bottom.shift(-90, 45)\n macro('title', {\n at: points.title,\n nr: 1,\n title: 'bib'\n })\n\n // Add the scalebox\n points.scalebox = points.title.shift(-90, 55)\n macro('scalebox', { at: points.scalebox })\n\n // Add the logo\n points.logo = new Point(0, 0)\n snippets.logo = new Snippet('logo', points.logo)\n\n // Paperless?\n if (paperless) {\n // Add dimensions\n macro('hd', {\n from: points.bottomLeftStart,\n to: points.bottomRightEnd,\n y: points.bottomLeft.y + 15\n })\n macro('vd', {\n from: points.bottomRightStart,\n to: points.bottom,\n x: points.bottomRight.x + 15\n })\n macro('vd', {\n from: points.bottomRightStart,\n to: points.right,\n x: points.bottomRight.x + 30\n })\n macro('vd', {\n from: points.bottomRightStart,\n to: points.tipLeftTopStart,\n x: points.bottomRight.x + 45\n })\n macro('hd', {\n from: points.left,\n to: points.right,\n y: points.left.y + 25\n })\n macro('ld', {\n from: points.tipLeftBottomEnd,\n to: points.tipLeftTopStart,\n d: -15\n })\n }\n }\n\n return part\n}\n","export default function(part) {\n let {\n options,\n Point,\n Path,\n points,\n paths,\n Snippet,\n snippets,\n complete,\n sa,\n paperless,\n macro\n } = part.shorthand()\n\n let w = 500 * options.size\n points.topLeft = new Point(0, 0)\n points.topRight = new Point(w, 0)\n points.bottomLeft = new Point(0, w / 2)\n points.bottomRight = new Point(w, w / 2)\n\n paths.seam = new Path()\n .move(points.topLeft)\n .line(points.bottomLeft)\n .line(points.bottomRight)\n .line(points.topRight)\n .line(points.topLeft)\n .close()\n .attr('class', 'fabric')\n\n // Complete?\n if (complete) {\n points.logo = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5)\n snippets.logo = new Snippet('logo', points.logo)\n points.text = points.logo\n .shift(-90, w / 8)\n .attr('data-text', 'hello')\n .attr('data-text-class', 'center')\n\n if (sa) {\n paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa')\n }\n }\n\n // Paperless?\n if (paperless) {\n macro('hd', {\n from: points.bottomLeft,\n to: points.bottomRight,\n y: points.bottomLeft.y + sa + 15\n })\n macro('vd', {\n from: points.bottomRight,\n to: points.topRight,\n x: points.topRight.x + sa + 15\n })\n }\n\n return part\n}\n","export default function (part) {\n let { Point, points, Path, paths, measurements } = part.shorthand()\n\n points.right = new Point(measurements.head / 10, 0)\n points.bottom = new Point(0, measurements.head / 12)\n\n points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)\n points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)\n\n paths.neck = new Path().move(points.right).curve(points.rightCp1, points.bottomCp2, points.bottom)\n\n return part\n}\n","export default function (part) {\n let { Point, points, Path, paths, measurements, options } = part.shorthand()\n\n let tweak = 1\n let target = (measurements.head * options.neckRatio) / 4\n let delta\n do {\n points.right = new Point((tweak * measurements.head) / 10, 0)\n points.bottom = new Point(0, (tweak * measurements.head) / 12)\n\n points.rightCp1 = points.right.shift(90, points.bottom.dy(points.right) / 2)\n points.bottomCp2 = points.bottom.shift(0, points.bottom.dx(points.right) / 2)\n\n paths.neck = new Path()\n .move(points.right)\n .curve(points.rightCp1, points.bottomCp2, points.bottom)\n\n delta = paths.neck.length() - target\n if (delta > 0) tweak = tweak * 0.99\n else tweak = tweak * 1.02\n } while (Math.abs(delta) > 1)\n\n return part\n}\n","export default function(part) {\n let { points, Path, paths } = part.shorthand()\n\n points.rightCp2 = points.rightCp1.flipY()\n points.bottomCp1 = points.bottomCp2.flipX()\n\n points.left = points.right.flipX()\n points.leftCp1 = points.rightCp2.flipX()\n points.leftCp2 = points.rightCp1.flipX()\n\n points.top = points.bottom.flipY()\n points.topCp1 = points.bottomCp2.flipY()\n points.topCp2 = points.bottomCp1.flipY()\n\n paths.neck = new Path()\n .move(points.top)\n .curve(points.topCp2, points.leftCp1, points.left)\n .curve(points.leftCp2, points.bottomCp1, points.bottom)\n .curve(points.bottomCp2, points.rightCp1, points.right)\n .curve(points.rightCp2, points.topCp1, points.top)\n .close()\n\n return part\n}\n","export default function (part) {\n let { Point, points, Path, paths, measurements, options } = part.shorthand()\n\n let width = measurements.head * options.widthRatio\n let length = measurements.head * options.lengthRatio\n\n points.topLeft = new Point(width / -2, points.top.y - (width / 2 - points.right.x))\n points.topRight = points.topLeft.shift(0, width)\n points.bottomLeft = points.topLeft.shift(-90, length)\n points.bottomRight = points.topRight.shift(-90, length)\n\n paths.rect = new Path()\n .move(points.topLeft)\n .line(points.bottomLeft)\n .line(points.bottomRight)\n .line(points.topRight)\n .line(points.topLeft)\n .close()\n\n return part\n}\n","export default function(part) {\n let { Point, points, Path, paths } = part.shorthand()\n\n points.edgeLeft = new Point(points.topLeft.x, points.left.y)\n points.edgeRight = new Point(points.topRight.x, points.right.y)\n points.edgeTop = new Point(0, points.topLeft.y)\n\n points.edgeLeftCp = points.edgeLeft.shiftFractionTowards(points.topLeft, 0.5)\n points.edgeRightCp = points.edgeLeftCp.flipX()\n points.edgeTopLeftCp = points.edgeTop.shiftFractionTowards(points.topLeft, 0.5)\n points.edgeTopRightCp = points.edgeTopLeftCp.flipX()\n\n paths.rect = new Path()\n .move(points.edgeTop)\n .curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)\n .line(points.bottomLeft)\n .line(points.bottomRight)\n .line(points.edgeRight)\n .curve(points.edgeRightCp, points.edgeTopRightCp, points.edgeTop)\n .close()\n\n return part\n}\n","export default function(part) {\n let { Point, points, macro } = part.shorthand()\n\n let strap = points.edgeTop.dy(points.top)\n\n points.tipRight = points.edgeTop.translate(strap / 2, strap / 2)\n points.tipRightTop = new Point(points.tipRight.x, points.edgeTop.y)\n points.tipRightBottom = new Point(points.tipRight.x, points.top.y)\n\n macro('round', {\n from: points.edgeTop,\n to: points.tipRight,\n via: points.tipRightTop,\n prefix: 'tipRightTop',\n render: true\n })\n macro('round', {\n from: points.tipRight,\n to: points.top,\n via: points.tipRightBottom,\n prefix: 'tipRightBottom',\n render: true\n })\n\n return part\n}\n","export default function(part) {\n let { points, Path, paths, macro } = part.shorthand()\n\n let rotateThese = [\n 'edgeTopLeftCp',\n 'edgeTop',\n 'tipRight',\n 'tipRightTop',\n 'tipRightTopStart',\n 'tipRightTopCp1',\n 'tipRightTopCp2',\n 'tipRightTopEnd',\n 'tipRightBottomStart',\n 'tipRightBottomCp1',\n 'tipRightBottomCp2',\n 'tipRightBottomEnd',\n 'tipRightBottom',\n 'top',\n 'topCp2'\n ]\n\n while (points.tipRightBottomStart.x > -1) {\n for (let p of rotateThese) points[p] = points[p].rotate(1, points.edgeLeft)\n }\n\n points.snapLeft = points.top.shiftFractionTowards(points.edgeTop, 0.5)\n\n macro('round', {\n from: points.edgeTop,\n to: points.tipRight,\n via: points.tipRightTop,\n prefix: 'tipRightTop',\n render: true\n })\n macro('round', {\n from: points.tipRight,\n to: points.top,\n via: points.tipRightBottom,\n prefix: 'tipRightBottom',\n render: true\n })\n\n paths.rect = new Path()\n .move(points.edgeTop)\n .curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)\n .line(points.bottomLeft)\n .line(points.bottomRight)\n .line(points.edgeRight)\n .curve(points.edgeRightCp, points.edgeTopRightCp, points.edgeTop)\n .close()\n\n return part\n}\n","export default function(part) {\n let { points, Path, paths } = part.shorthand()\n\n points.edgeTopRightCp = points.edgeTopLeftCp.flipX()\n points.topCp1 = points.topCp2.flipX()\n points.tipLeftTopStart = points.tipRightTopStart.flipX()\n points.tipLeftTopCp1 = points.tipRightTopCp1.flipX()\n points.tipLeftTopCp2 = points.tipRightTopCp2.flipX()\n points.tipLeftTopEnd = points.tipRightTopEnd.flipX()\n points.tipLeftBottomStart = points.tipRightBottomStart.flipX()\n points.tipLeftBottomCp1 = points.tipRightBottomCp1.flipX()\n points.tipLeftBottomCp2 = points.tipRightBottomCp2.flipX()\n points.tipLeftBottomEnd = points.tipRightBottomEnd.flipX()\n points.snapRight = points.snapLeft.flipX()\n\n paths.seam = new Path()\n .move(points.edgeLeft)\n .line(points.bottomLeft)\n .line(points.bottomRight)\n .line(points.edgeRight)\n .curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)\n .curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)\n .curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)\n .curve(points.topCp1, points.rightCp2, points.right)\n .curve(points.rightCp1, points.bottomCp2, points.bottom)\n .curve(points.bottomCp1, points.leftCp2, points.left)\n .curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)\n .curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)\n .curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)\n .curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)\n .close()\n .attr('class', 'fabric')\n\n delete paths.neck\n delete paths.rect\n\n return part\n}\n","export default function(part) {\n let { points, Path, paths, macro } = part.shorthand()\n\n macro('round', {\n from: points.topLeft,\n to: points.bottomRight,\n via: points.bottomLeft,\n radius: points.bottomRight.x / 4,\n render: true,\n prefix: 'bottomLeft'\n })\n macro('round', {\n from: points.bottomLeft,\n to: points.topRight,\n via: points.bottomRight,\n radius: points.bottomRight.x / 4,\n render: true,\n prefix: 'bottomRight'\n })\n\n paths.seam = new Path()\n .move(points.edgeLeft)\n .line(points.bottomLeftStart)\n .curve(points.bottomLeftCp1, points.bottomLeftCp2, points.bottomLeftEnd)\n .line(points.bottomRightStart)\n .curve(points.bottomRightCp1, points.bottomRightCp2, points.bottomRightEnd)\n .line(points.edgeRight)\n .curve(points.edgeRightCp, points.edgeTopRightCp, points.tipLeftTopStart)\n .curve(points.tipLeftTopCp1, points.tipLeftTopCp2, points.tipLeftTopEnd)\n .curve(points.tipLeftBottomCp1, points.tipLeftBottomCp2, points.tipLeftBottomEnd)\n .curve(points.topCp1, points.rightCp2, points.right)\n .curve(points.rightCp1, points.bottomCp2, points.bottom)\n .curve(points.bottomCp1, points.leftCp2, points.left)\n .curve(points.leftCp1, points.topCp2, points.tipRightBottomEnd)\n .curve(points.tipRightBottomCp2, points.tipRightBottomCp1, points.tipRightBottomStart)\n .curve(points.tipRightTopCp2, points.tipRightTopCp1, points.tipRightTopStart)\n .curve(points.edgeTopLeftCp, points.edgeLeftCp, points.edgeLeft)\n .close()\n\n return part\n}\n","export default function(part) {\n let { Point, points, paths, macro, complete, snippets, Snippet } = part.shorthand()\n\n // Complete?\n if (complete) {\n snippets.snapMale = new Snippet('snap-male', points.snapLeft)\n snippets.snapFemale = new Snippet('snap-female', points.snapRight).attr('opacity', 0.5)\n\n paths.bias = paths.seam\n .offset(-5)\n .attr('class', 'various dashed')\n .attr('data-text', 'finishWithBiasTape')\n .attr('data-text-class', 'center fill-various')\n\n points.title = points.bottom.shift(-90, 45)\n macro('title', {\n at: points.title,\n nr: 1,\n title: 'bib'\n })\n\n points.scalebox = points.title.shift(-90, 55)\n macro('scalebox', { at: points.scalebox })\n\n points.logo = new Point(0, 0)\n snippets.logo = new Snippet('logo', points.logo)\n }\n\n return part\n}\n"],"names":["name","version","design","code","department","type","difficulty","tags","optionGroups","fit","box","measurements","inject","step4","step5","step6","step7","step8","step9","step10","step11","parts","options","size","pct","min","max","neckRatio","widthRatio","lengthRatio","Pattern","freesewing","Design","config","plugins","prototype","draftBib","part","delta","Point","points","Path","paths","macro","complete","snippets","Snippet","paperless","shorthand","tweak","target","head","right","bottom","rightCp1","shift","dy","bottomCp2","dx","neck","move","curve","length","Math","abs","rightCp2","flipY","bottomCp1","flipX","left","leftCp1","leftCp2","top","topCp1","topCp2","width","topLeft","y","x","topRight","bottomLeft","bottomRight","edgeLeft","edgeRight","edgeTop","edgeLeftCp","shiftFractionTowards","edgeRightCp","edgeTopLeftCp","edgeTopRightCp","strap","tipRight","translate","tipRightTop","tipRightBottom","from","to","via","prefix","rotateThese","tipRightBottomStart","p","rotate","snapLeft","tipLeftTopStart","tipRightTopStart","tipLeftTopCp1","tipRightTopCp1","tipLeftTopCp2","tipRightTopCp2","tipLeftTopEnd","tipRightTopEnd","tipLeftBottomStart","tipLeftBottomCp1","tipRightBottomCp1","tipLeftBottomCp2","tipRightBottomCp2","tipLeftBottomEnd","tipRightBottomEnd","snapRight","radius","seam","line","bottomLeftStart","bottomLeftCp1","bottomLeftCp2","bottomLeftEnd","bottomRightStart","bottomRightCp1","bottomRightCp2","bottomRightEnd","close","attr","snapMale","snapFemale","bias","offset","title","at","nr","scalebox","logo","d","draftStep1","sa","w","text","draftStep2","draftStep3","draftStep4","draftStep5","rect","draftStep6","draftStep7","render","draftStep8","draftStep9","draftStep10","draftStep11"],"mappings":"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"}