UNPKG

tldraw

Version:

A tiny little drawing editor.

8 lines (7 loc) 4.45 kB
{ "version": 3, "sources": ["../../../../src/lib/shapes/arrow/ArrowPath.tsx"], "sourcesContent": ["import { exhaustiveSwitchError, TLArrowShape } from '@tldraw/editor'\nimport { PathBuilder, PathBuilderOpts } from '../shared/PathBuilder'\nimport { TLArrowInfo } from './arrow-types'\nimport { getRouteHandlePath } from './elbow/getElbowArrowInfo'\n\nexport function getArrowBodyPathBuilder(info: TLArrowInfo): PathBuilder {\n\tswitch (info.type) {\n\t\tcase 'straight':\n\t\t\treturn new PathBuilder()\n\t\t\t\t.moveTo(info.start.point.x, info.start.point.y, { offset: 0, roundness: 0 })\n\t\t\t\t.lineTo(info.end.point.x, info.end.point.y, { offset: 0, roundness: 0 })\n\t\tcase 'arc':\n\t\t\treturn new PathBuilder()\n\t\t\t\t.moveTo(info.start.point.x, info.start.point.y, { offset: 0, roundness: 0 })\n\t\t\t\t.circularArcTo(\n\t\t\t\t\tinfo.bodyArc.radius,\n\t\t\t\t\t!!info.bodyArc.largeArcFlag,\n\t\t\t\t\t!!info.bodyArc.sweepFlag,\n\t\t\t\t\tinfo.end.point.x,\n\t\t\t\t\tinfo.end.point.y,\n\t\t\t\t\t{ offset: 0, roundness: 0 }\n\t\t\t\t)\n\t\tcase 'elbow': {\n\t\t\tconst path = new PathBuilder()\n\t\t\tpath.moveTo(info.start.point.x, info.start.point.y, {\n\t\t\t\toffset: 0,\n\t\t\t})\n\t\t\tfor (let i = 1; i < info.route.points.length; i++) {\n\t\t\t\tconst point = info.route.points[i]\n\t\t\t\tif (info.route.skipPointsWhenDrawing.has(point)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tpath.lineTo(point.x, point.y, {\n\t\t\t\t\toffset: i === info.route.points.length - 1 ? 0 : undefined,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn path\n\t\t}\n\t\tdefault:\n\t\t\texhaustiveSwitchError(info, 'type')\n\t}\n}\n\nexport function getArrowBodyPath(shape: TLArrowShape, info: TLArrowInfo, opts: PathBuilderOpts) {\n\treturn getArrowBodyPathBuilder(info).toSvg(opts)\n}\n\nexport function getArrowHandlePath(info: TLArrowInfo, opts: PathBuilderOpts) {\n\tswitch (info.type) {\n\t\tcase 'straight':\n\t\t\treturn new PathBuilder()\n\t\t\t\t.moveTo(info.start.handle.x, info.start.handle.y)\n\t\t\t\t.lineTo(info.end.handle.x, info.end.handle.y)\n\t\t\t\t.toSvg(opts)\n\t\tcase 'arc':\n\t\t\treturn new PathBuilder()\n\t\t\t\t.moveTo(info.start.handle.x, info.start.handle.y)\n\t\t\t\t.circularArcTo(\n\t\t\t\t\tinfo.handleArc.radius,\n\t\t\t\t\t!!info.handleArc.largeArcFlag,\n\t\t\t\t\t!!info.handleArc.sweepFlag,\n\t\t\t\t\tinfo.end.handle.x,\n\t\t\t\t\tinfo.end.handle.y\n\t\t\t\t)\n\t\t\t\t.toSvg(opts)\n\t\tcase 'elbow': {\n\t\t\tconst handleRoute = getRouteHandlePath(info.elbow, info.route)\n\t\t\treturn PathBuilder.lineThroughPoints(handleRoute.points).toSvg(opts)\n\t\t}\n\t\tdefault:\n\t\t\texhaustiveSwitchError(info, 'type')\n\t}\n}\n"], "mappings": "AAAA,SAAS,6BAA2C;AACpD,SAAS,mBAAoC;AAE7C,SAAS,0BAA0B;AAE5B,SAAS,wBAAwB,MAAgC;AACvE,UAAQ,KAAK,MAAM;AAAA,IAClB,KAAK;AACJ,aAAO,IAAI,YAAY,EACrB,OAAO,KAAK,MAAM,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE,CAAC,EAC1E,OAAO,KAAK,IAAI,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE,CAAC;AAAA,IACzE,KAAK;AACJ,aAAO,IAAI,YAAY,EACrB,OAAO,KAAK,MAAM,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE,CAAC,EAC1E;AAAA,QACA,KAAK,QAAQ;AAAA,QACb,CAAC,CAAC,KAAK,QAAQ;AAAA,QACf,CAAC,CAAC,KAAK,QAAQ;AAAA,QACf,KAAK,IAAI,MAAM;AAAA,QACf,KAAK,IAAI,MAAM;AAAA,QACf,EAAE,QAAQ,GAAG,WAAW,EAAE;AAAA,MAC3B;AAAA,IACF,KAAK,SAAS;AACb,YAAM,OAAO,IAAI,YAAY;AAC7B,WAAK,OAAO,KAAK,MAAM,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG;AAAA,QACnD,QAAQ;AAAA,MACT,CAAC;AACD,eAAS,IAAI,GAAG,IAAI,KAAK,MAAM,OAAO,QAAQ,KAAK;AAClD,cAAM,QAAQ,KAAK,MAAM,OAAO,CAAC;AACjC,YAAI,KAAK,MAAM,sBAAsB,IAAI,KAAK,GAAG;AAChD;AAAA,QACD;AACA,aAAK,OAAO,MAAM,GAAG,MAAM,GAAG;AAAA,UAC7B,QAAQ,MAAM,KAAK,MAAM,OAAO,SAAS,IAAI,IAAI;AAAA,QAClD,CAAC;AAAA,MACF;AACA,aAAO;AAAA,IACR;AAAA,IACA;AACC,4BAAsB,MAAM,MAAM;AAAA,EACpC;AACD;AAEO,SAAS,iBAAiB,OAAqB,MAAmB,MAAuB;AAC/F,SAAO,wBAAwB,IAAI,EAAE,MAAM,IAAI;AAChD;AAEO,SAAS,mBAAmB,MAAmB,MAAuB;AAC5E,UAAQ,KAAK,MAAM;AAAA,IAClB,KAAK;AACJ,aAAO,IAAI,YAAY,EACrB,OAAO,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,OAAO,CAAC,EAC/C,OAAO,KAAK,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,EAC3C,MAAM,IAAI;AAAA,IACb,KAAK;AACJ,aAAO,IAAI,YAAY,EACrB,OAAO,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,OAAO,CAAC,EAC/C;AAAA,QACA,KAAK,UAAU;AAAA,QACf,CAAC,CAAC,KAAK,UAAU;AAAA,QACjB,CAAC,CAAC,KAAK,UAAU;AAAA,QACjB,KAAK,IAAI,OAAO;AAAA,QAChB,KAAK,IAAI,OAAO;AAAA,MACjB,EACC,MAAM,IAAI;AAAA,IACb,KAAK,SAAS;AACb,YAAM,cAAc,mBAAmB,KAAK,OAAO,KAAK,KAAK;AAC7D,aAAO,YAAY,kBAAkB,YAAY,MAAM,EAAE,MAAM,IAAI;AAAA,IACpE;AAAA,IACA;AACC,4BAAsB,MAAM,MAAM;AAAA,EACpC;AACD;", "names": [] }