{
  "version": 3,
  "sources": ["../../../../../src/lib/shapes/geo/components/GeoShapeBody.tsx"],
  "sourcesContent": ["import {\n\tGroup2d,\n\tTLGeoShape,\n\tVec,\n\tcanonicalizeRotation,\n\tgetPerfectDashProps,\n\tuseEditor,\n} from '@tldraw/editor'\nimport { ShapeFill } from '../../shared/ShapeFill'\nimport { STROKE_SIZES } from '../../shared/default-shape-constants'\nimport { useDefaultColorTheme } from '../../shared/useDefaultColorTheme'\nimport {\n\tgetCloudArcs,\n\tgetCloudPath,\n\tgetDrawHeartPath,\n\tgetHeartParts,\n\tgetHeartPath,\n\tgetRoundedInkyPolygonPath,\n\tgetRoundedPolygonPoints,\n\tinkyCloudSvgPath,\n} from '../geo-shape-helpers'\nimport { getLines } from '../getLines'\n\nexport function GeoShapeBody({\n\tshape,\n\tshouldScale,\n\tforceSolid,\n}: {\n\tshape: TLGeoShape\n\tshouldScale: boolean\n\tforceSolid: boolean\n}) {\n\tconst scaleToUse = shouldScale ? shape.props.scale : 1\n\tconst editor = useEditor()\n\tconst theme = useDefaultColorTheme()\n\tconst { id, props } = shape\n\tconst { w, color, fill, dash, growY, size, scale } = props\n\tconst strokeWidth = STROKE_SIZES[size] * scaleToUse\n\tconst h = props.h + growY\n\n\tswitch (props.geo) {\n\t\tcase 'cloud': {\n\t\t\tif (dash === 'solid') {\n\t\t\t\tconst d = getCloudPath(w, h, id, size, scale)\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else if (dash === 'draw') {\n\t\t\t\tconst d = inkyCloudSvgPath(w, h, id, size, scale)\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tconst d = getCloudPath(w, h, id, size, scale)\n\t\t\t\tconst arcs = getCloudArcs(w, h, id, size, scale)\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<g\n\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tpointerEvents=\"all\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{arcs.map(({ leftPoint, rightPoint, center, radius }, i) => {\n\t\t\t\t\t\t\t\tconst arcLength = center\n\t\t\t\t\t\t\t\t\t? radius *\n\t\t\t\t\t\t\t\t\t\tcanonicalizeRotation(\n\t\t\t\t\t\t\t\t\t\t\tcanonicalizeRotation(Vec.Angle(center, rightPoint)) -\n\t\t\t\t\t\t\t\t\t\t\t\tcanonicalizeRotation(Vec.Angle(center, leftPoint))\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: Vec.Dist(leftPoint, rightPoint)\n\n\t\t\t\t\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\t\t\t\t\tarcLength,\n\t\t\t\t\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\t\t\t\t\tstart: 'outset',\n\t\t\t\t\t\t\t\t\t\tend: 'outset',\n\t\t\t\t\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t\t\td={\n\t\t\t\t\t\t\t\t\t\t\tcenter\n\t\t\t\t\t\t\t\t\t\t\t\t? `M${leftPoint.x},${leftPoint.y}A${radius},${radius},0,0,1,${rightPoint.x},${rightPoint.y}`\n\t\t\t\t\t\t\t\t\t\t\t\t: `M${leftPoint.x},${leftPoint.y}L${rightPoint.x},${rightPoint.y}`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tcase 'ellipse': {\n\t\t\tconst geometry = shouldScale\n\t\t\t\t? // cached\n\t\t\t\t\teditor.getShapeGeometry(shape)\n\t\t\t\t: // not cached\n\t\t\t\t\teditor.getShapeUtil(shape).getGeometry(shape)\n\t\t\tconst d = geometry.getSvgPathData(true)\n\n\t\t\tif (dash === 'dashed' || dash === 'dotted') {\n\t\t\t\tconst perimeter = geometry.length\n\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\tperimeter < 64 ? perimeter * 2 : perimeter,\n\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\tsnap: 4,\n\t\t\t\t\t\tclosed: true,\n\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td={d}\n\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tconst geometry = shouldScale\n\t\t\t\t\t? // cached\n\t\t\t\t\t\teditor.getShapeGeometry(shape)\n\t\t\t\t\t: // not cached\n\t\t\t\t\t\teditor.getShapeUtil(shape).getGeometry(shape)\n\t\t\t\tconst d = geometry.getSvgPathData(true)\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tcase 'oval': {\n\t\t\tconst geometry = shouldScale\n\t\t\t\t? // cached\n\t\t\t\t\teditor.getShapeGeometry(shape)\n\t\t\t\t: // not cached\n\t\t\t\t\teditor.getShapeUtil(shape).getGeometry(shape)\n\t\t\tconst d = geometry.getSvgPathData(true)\n\t\t\tif (dash === 'dashed' || dash === 'dotted') {\n\t\t\t\tconst perimeter = geometry.getLength()\n\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\tperimeter < 64 ? perimeter * 2 : perimeter,\n\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\tsnap: 4,\n\t\t\t\t\t\tstart: 'outset',\n\t\t\t\t\t\tend: 'outset',\n\t\t\t\t\t\tclosed: true,\n\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td={d}\n\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tcase 'heart': {\n\t\t\tif (dash === 'dashed' || dash === 'dotted' || dash === 'solid') {\n\t\t\t\tconst d = getHeartPath(w, h)\n\t\t\t\tconst curves = getHeartParts(w, h)\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t{curves.map((c, i) => {\n\t\t\t\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\t\t\t\tc.length,\n\t\t\t\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\t\t\t\tsnap: 1,\n\t\t\t\t\t\t\t\t\tstart: 'outset',\n\t\t\t\t\t\t\t\t\tend: 'outset',\n\t\t\t\t\t\t\t\t\tclosed: true,\n\t\t\t\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tkey={`curve_${i}`}\n\t\t\t\t\t\t\t\t\td={c.getSvgPathData()}\n\t\t\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\t\t\tpointerEvents=\"all\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tconst d = getDrawHeartPath(w, h, strokeWidth, shape.id)\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tdefault: {\n\t\t\tconst geometry = shouldScale\n\t\t\t\t? // cached\n\t\t\t\t\teditor.getShapeGeometry(shape)\n\t\t\t\t: // not cached\n\t\t\t\t\teditor.getShapeUtil(shape).getGeometry(shape)\n\n\t\t\tconst outline =\n\t\t\t\tgeometry instanceof Group2d ? geometry.children[0].vertices : geometry.vertices\n\t\t\tconst lines = getLines(shape.props, strokeWidth)\n\n\t\t\tif (dash === 'solid') {\n\t\t\t\tlet d = 'M' + outline[0] + 'L' + outline.slice(1) + 'Z'\n\n\t\t\t\tif (lines) {\n\t\t\t\t\tfor (const [A, B] of lines) {\n\t\t\t\t\t\td += `M${A.x},${A.y}L${B.x},${B.y}`\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else if (dash === 'dashed' || dash === 'dotted') {\n\t\t\t\tconst d = 'M' + outline[0] + 'L' + outline.slice(1) + 'Z'\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill theme={theme} d={d} color={color} fill={fill} scale={scaleToUse} />\n\t\t\t\t\t\t<g\n\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tpointerEvents=\"all\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{Array.from(Array(outline.length)).map((_, i) => {\n\t\t\t\t\t\t\t\tconst A = Vec.ToFixed(outline[i])\n\t\t\t\t\t\t\t\tconst B = Vec.ToFixed(outline[(i + 1) % outline.length])\n\t\t\t\t\t\t\t\tconst dist = Vec.Dist(A, B)\n\t\t\t\t\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\t\t\t\t\tdist,\n\t\t\t\t\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\t\t\t\t\tstart: 'outset',\n\t\t\t\t\t\t\t\t\t\tend: 'outset',\n\t\t\t\t\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<line\n\t\t\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\t\t\tx1={A.x}\n\t\t\t\t\t\t\t\t\t\ty1={A.y}\n\t\t\t\t\t\t\t\t\t\tx2={B.x}\n\t\t\t\t\t\t\t\t\t\ty2={B.y}\n\t\t\t\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{lines &&\n\t\t\t\t\t\t\t\tlines.map(([A, B], i) => {\n\t\t\t\t\t\t\t\t\tconst dist = Vec.Dist(A, B)\n\n\t\t\t\t\t\t\t\t\tconst { strokeDasharray, strokeDashoffset } = getPerfectDashProps(\n\t\t\t\t\t\t\t\t\t\tdist,\n\t\t\t\t\t\t\t\t\t\tstrokeWidth,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tstyle: dash,\n\t\t\t\t\t\t\t\t\t\t\tstart: 'skip',\n\t\t\t\t\t\t\t\t\t\t\tend: 'skip',\n\t\t\t\t\t\t\t\t\t\t\tsnap: dash === 'dotted' ? 4 : undefined,\n\t\t\t\t\t\t\t\t\t\t\tforceSolid,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\tkey={`line_fg_${i}`}\n\t\t\t\t\t\t\t\t\t\t\td={`M${A.x},${A.y}L${B.x},${B.y}`}\n\t\t\t\t\t\t\t\t\t\t\tstroke={theme[color].solid}\n\t\t\t\t\t\t\t\t\t\t\tstrokeWidth={strokeWidth}\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\tstrokeDasharray={strokeDasharray}\n\t\t\t\t\t\t\t\t\t\t\tstrokeDashoffset={strokeDashoffset}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t} else if (dash === 'draw') {\n\t\t\t\tlet d = getRoundedInkyPolygonPath(\n\t\t\t\t\tgetRoundedPolygonPoints(id, outline, strokeWidth / 3, strokeWidth * 2, 2)\n\t\t\t\t)\n\n\t\t\t\tif (lines) {\n\t\t\t\t\tfor (const [A, B] of lines) {\n\t\t\t\t\t\td += `M${A.toFixed()}L${B.toFixed()}`\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst innerPathData = getRoundedInkyPolygonPath(\n\t\t\t\t\tgetRoundedPolygonPoints(id, outline, 0, strokeWidth * 2, 1)\n\t\t\t\t)\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ShapeFill\n\t\t\t\t\t\t\ttheme={theme}\n\t\t\t\t\t\t\td={innerPathData}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\tfill={fill}\n\t\t\t\t\t\t\tscale={scaleToUse}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<path d={d} stroke={theme[color].solid} strokeWidth={strokeWidth} fill=\"none\" />\n\t\t\t\t\t</>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],
  "mappings": "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",
  "names": ["geometry", "d"]
}
