tldraw
Version:
A tiny little drawing editor.
8 lines (7 loc) • 3.66 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../src/lib/shapes/geo/getLines.tsx"],
"sourcesContent": ["import { TLDefaultDashStyle, TLGeoShape, Vec } from '@tldraw/editor'\n\nexport function getLines(props: TLGeoShape['props'], sw: number) {\n\tswitch (props.geo) {\n\t\tcase 'x-box': {\n\t\t\treturn getXBoxLines(props.w, props.h, sw, props.dash)\n\t\t}\n\t\tcase 'check-box': {\n\t\t\treturn getCheckBoxLines(props.w, props.h)\n\t\t}\n\t\tdefault: {\n\t\t\treturn undefined\n\t\t}\n\t}\n}\nfunction getXBoxLines(w: number, h: number, sw: number, dash: TLDefaultDashStyle) {\n\tconst inset = dash === 'draw' ? 0.62 : 0\n\n\tif (dash === 'dashed') {\n\t\treturn [\n\t\t\t[new Vec(0, 0), new Vec(w / 2, h / 2)],\n\t\t\t[new Vec(w, h), new Vec(w / 2, h / 2)],\n\t\t\t[new Vec(0, h), new Vec(w / 2, h / 2)],\n\t\t\t[new Vec(w, 0), new Vec(w / 2, h / 2)],\n\t\t]\n\t}\n\n\tconst clampX = (x: number) => Math.max(0, Math.min(w, x))\n\tconst clampY = (y: number) => Math.max(0, Math.min(h, y))\n\n\treturn [\n\t\t[\n\t\t\tnew Vec(clampX(sw * inset), clampY(sw * inset)),\n\t\t\tnew Vec(clampX(w - sw * inset), clampY(h - sw * inset)),\n\t\t],\n\t\t[\n\t\t\tnew Vec(clampX(sw * inset), clampY(h - sw * inset)),\n\t\t\tnew Vec(clampX(w - sw * inset), clampY(sw * inset)),\n\t\t],\n\t]\n}\nfunction getCheckBoxLines(w: number, h: number) {\n\tconst size = Math.min(w, h) * 0.82\n\tconst ox = (w - size) / 2\n\tconst oy = (h - size) / 2\n\n\tconst clampX = (x: number) => Math.max(0, Math.min(w, x))\n\tconst clampY = (y: number) => Math.max(0, Math.min(h, y))\n\n\treturn [\n\t\t[\n\t\t\tnew Vec(clampX(ox + size * 0.25), clampY(oy + size * 0.52)),\n\t\t\tnew Vec(clampX(ox + size * 0.45), clampY(oy + size * 0.82)),\n\t\t],\n\t\t[\n\t\t\tnew Vec(clampX(ox + size * 0.45), clampY(oy + size * 0.82)),\n\t\t\tnew Vec(clampX(ox + size * 0.82), clampY(oy + size * 0.22)),\n\t\t],\n\t]\n}\n"],
"mappings": "AAAA,SAAyC,WAAW;AAE7C,SAAS,SAAS,OAA4B,IAAY;AAChE,UAAQ,MAAM,KAAK;AAAA,IAClB,KAAK,SAAS;AACb,aAAO,aAAa,MAAM,GAAG,MAAM,GAAG,IAAI,MAAM,IAAI;AAAA,IACrD;AAAA,IACA,KAAK,aAAa;AACjB,aAAO,iBAAiB,MAAM,GAAG,MAAM,CAAC;AAAA,IACzC;AAAA,IACA,SAAS;AACR,aAAO;AAAA,IACR;AAAA,EACD;AACD;AACA,SAAS,aAAa,GAAW,GAAW,IAAY,MAA0B;AACjF,QAAM,QAAQ,SAAS,SAAS,OAAO;AAEvC,MAAI,SAAS,UAAU;AACtB,WAAO;AAAA,MACN,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,MACrC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,MACrC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,MACrC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC;AAAA,IACtC;AAAA,EACD;AAEA,QAAM,SAAS,CAAC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACxD,QAAM,SAAS,CAAC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAExD,SAAO;AAAA,IACN;AAAA,MACC,IAAI,IAAI,OAAO,KAAK,KAAK,GAAG,OAAO,KAAK,KAAK,CAAC;AAAA,MAC9C,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,OAAO,IAAI,KAAK,KAAK,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,MACC,IAAI,IAAI,OAAO,KAAK,KAAK,GAAG,OAAO,IAAI,KAAK,KAAK,CAAC;AAAA,MAClD,IAAI,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,OAAO,KAAK,KAAK,CAAC;AAAA,IACnD;AAAA,EACD;AACD;AACA,SAAS,iBAAiB,GAAW,GAAW;AAC/C,QAAM,OAAO,KAAK,IAAI,GAAG,CAAC,IAAI;AAC9B,QAAM,MAAM,IAAI,QAAQ;AACxB,QAAM,MAAM,IAAI,QAAQ;AAExB,QAAM,SAAS,CAAC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACxD,QAAM,SAAS,CAAC,MAAc,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAExD,SAAO;AAAA,IACN;AAAA,MACC,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,MAC1D,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,IAC3D;AAAA,IACA;AAAA,MACC,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,MAC1D,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,GAAG,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,IAC3D;AAAA,EACD;AACD;",
"names": []
}