{ "version": 3, "sources": ["../../../../../src/lib/shapes/geo/components/DashStyleEllipse.tsx"], "sourcesContent": ["import {\n\tTLDefaultColorTheme,\n\tTLGeoShape,\n\tTLShapeId,\n\tperimeterOfEllipse,\n\ttoDomPrecision,\n} from '@tldraw/editor'\nimport * as React from 'react'\nimport {\n\tShapeFill,\n\tgetShapeFillSvg,\n\tgetSvgWithShapeFill,\n\tuseDefaultColorTheme,\n} from '../../shared/ShapeFill'\nimport { getPerfectDashProps } from '../../shared/getPerfectDashProps'\n\nexport const DashStyleEllipse = React.memo(function DashStyleEllipse({\n\tw,\n\th,\n\tstrokeWidth: sw,\n\tdash,\n\tcolor,\n\tfill,\n}: Pick & {\n\tstrokeWidth: number\n\tid: TLShapeId\n}) {\n\tconst theme = useDefaultColorTheme()\n\tconst cx = w / 2\n\tconst cy = h / 2\n\tconst rx = Math.max(0, cx)\n\tconst ry = Math.max(0, cy)\n\n\tconst perimeter = perimeterOfEllipse(rx, ry)\n\n\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\tperimeter < 64 ? perimeter * 2 : perimeter,\n\t\tsw,\n\t\t{\n\t\t\tstyle: dash,\n\t\t\tsnap: 4,\n\t\t\tclosed: true,\n\t\t}\n\t)\n\n\tconst d = `M${cx - rx},${cy}a${rx},${ry},0,1,1,${rx * 2},0a${rx},${ry},0,1,1,-${rx * 2},0`\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\n\t)\n})\n\nexport function DashStyleEllipseSvg({\n\tw,\n\th,\n\tstrokeWidth: sw,\n\tdash,\n\tcolor,\n\ttheme,\n\tfill,\n}: Pick & {\n\tstrokeWidth: number\n\tid: TLShapeId\n\ttheme: TLDefaultColorTheme\n}) {\n\tconst cx = w / 2\n\tconst cy = h / 2\n\tconst rx = Math.max(0, cx - sw / 2)\n\tconst ry = Math.max(0, cy - sw / 2)\n\n\tconst perimeter = perimeterOfEllipse(rx, ry)\n\n\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\tperimeter < 64 ? perimeter * 2 : perimeter,\n\t\tsw,\n\t\t{\n\t\t\tstyle: dash,\n\t\t\tsnap: 4,\n\t\t\tclosed: true,\n\t\t}\n\t)\n\n\tconst d = `M${cx - rx},${cy}a${rx},${ry},0,1,1,${rx * 2},0a${rx},${ry},0,1,1,-${rx * 2},0`\n\n\tconst strokeElement = document.createElementNS('http://www.w3.org/2000/svg', 'path')\n\tstrokeElement.setAttribute('d', d)\n\tstrokeElement.setAttribute('stroke-width', sw.toString())\n\tstrokeElement.setAttribute('width', w.toString())\n\tstrokeElement.setAttribute('height', h.toString())\n\tstrokeElement.setAttribute('fill', 'none')\n\tstrokeElement.setAttribute('stroke', theme[color].solid)\n\tstrokeElement.setAttribute('stroke-dasharray', strokeDasharray)\n\tstrokeElement.setAttribute('stroke-dashoffset', strokeDashoffset)\n\n\t// Get the fill element, if any\n\tconst fillElement = getShapeFillSvg({\n\t\td,\n\t\tfill,\n\t\tcolor,\n\t\ttheme,\n\t})\n\n\treturn getSvgWithShapeFill(strokeElement, fillElement)\n}\n"], "mappings": "AAgDE,mBACC,KADD;AAhDF;AAAA,EAIC;AAAA,EACA;AAAA,OACM;AACP,YAAY,WAAW;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,2BAA2B;AAE7B,MAAM,mBAAmB,MAAM,KAAK,SAASA,kBAAiB;AAAA,EACpE;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACD,GAGG;AACF,QAAM,QAAQ,qBAAqB;AACnC,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,KAAK,IAAI,GAAG,EAAE;AACzB,QAAM,KAAK,KAAK,IAAI,GAAG,EAAE;AAEzB,QAAM,YAAY,mBAAmB,IAAI,EAAE;AAE3C,QAAM,EAAE,iBAAiB,iBAAiB,IAAI;AAAA,IAC7C,YAAY,KAAK,YAAY,IAAI;AAAA,IACjC;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,QAAM,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAEtF,SACC,iCACC;AAAA,wBAAC,aAAU,OAAc,GAAM,OAAc,MAAY;AAAA,IACzD;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,aAAa;AAAA,QACb,OAAO,eAAe,CAAC;AAAA,QACvB,QAAQ,eAAe,CAAC;AAAA,QACxB,MAAK;AAAA,QACL,QAAQ,MAAM,KAAK,EAAE;AAAA,QACrB;AAAA,QACA;AAAA,QACA,eAAc;AAAA;AAAA,IACf;AAAA,KACD;AAEF,CAAC;AAEM,SAAS,oBAAoB;AAAA,EACnC;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,IAAI;AACf,QAAM,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAClC,QAAM,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAElC,QAAM,YAAY,mBAAmB,IAAI,EAAE;AAE3C,QAAM,EAAE,iBAAiB,iBAAiB,IAAI;AAAA,IAC7C,YAAY,KAAK,YAAY,IAAI;AAAA,IACjC;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,QAAM,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAEtF,QAAM,gBAAgB,SAAS,gBAAgB,8BAA8B,MAAM;AACnF,gBAAc,aAAa,KAAK,CAAC;AACjC,gBAAc,aAAa,gBAAgB,GAAG,SAAS,CAAC;AACxD,gBAAc,aAAa,SAAS,EAAE,SAAS,CAAC;AAChD,gBAAc,aAAa,UAAU,EAAE,SAAS,CAAC;AACjD,gBAAc,aAAa,QAAQ,MAAM;AACzC,gBAAc,aAAa,UAAU,MAAM,KAAK,EAAE,KAAK;AACvD,gBAAc,aAAa,oBAAoB,eAAe;AAC9D,gBAAc,aAAa,qBAAqB,gBAAgB;AAGhE,QAAM,cAAc,gBAAgB;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAED,SAAO,oBAAoB,eAAe,WAAW;AACtD;", "names": ["DashStyleEllipse"] }