export default function (part) { let { paperless, sa, store, complete, points, macro, Point, paths, Path } = part.shorthand() points.topLeft = new Point(0, 0) points.bottomRight = new Point( store.get('topCuffWidth') + store.get('underCuffWidth'), store.get('cuffLength') * 1.5 ) points.bottomLeft = new Point(points.topLeft.x, points.bottomRight.y) points.topRight = new Point(points.bottomRight.x, points.topLeft.y) macro('round', { from: points.topLeft, to: points.bottomRight, via: points.bottomLeft, radius: store.get('cuffRadius'), prefix: 'roundLeft' }) macro('round', { from: points.bottomLeft, to: points.topRight, via: points.bottomRight, radius: store.get('cuffRadius'), prefix: 'roundRight' }) paths.seam = new Path() .move(points.topLeft) .line(points.roundLeftStart) .curve(points.roundLeftCp1, points.roundLeftCp2, points.roundLeftEnd) .line(points.roundRightStart) .curve(points.roundRightCp1, points.roundRightCp2, points.roundRightEnd) .line(points.topRight) .line(points.topLeft) .close() .attr('class', 'fabric') if (complete) { points.title = points.topLeft.shiftFractionTowards(points.bottomRight, 0.5) macro('title', { at: points.title, nr: 9, title: 'cuffFacing' }) macro('grainline', { from: points.bottomLeft.shift(0, 10 + store.get('cuffRadius')), to: points.topLeft.shift(0, 10 + store.get('cuffRadius')) }) if (sa) paths.sa = paths.seam.offset(sa).attr('class', 'fabric sa') if (paperless) { macro('vd', { from: points.roundRightStart, to: points.roundRightEnd, x: points.topRight.x + sa + 15 }) macro('vd', { from: points.roundRightStart, to: points.topRight, x: points.topRight.x + sa + 30 }) macro('hd', { from: points.roundRightStart, to: points.roundRightEnd, y: points.bottomRight.y + sa + 15 }) macro('hd', { from: points.roundLeftStart, to: points.roundRightEnd, y: points.bottomRight.y + sa + 30 }) } } return part }