@pixerate/editor 0.136.0 → 0.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/animation-editor/index.cjs +60 -55
  2. package/dist/animation-editor/index.cjs.map +1 -1
  3. package/dist/animation-editor/index.d.cts +4 -4
  4. package/dist/animation-editor/index.d.ts +4 -4
  5. package/dist/animation-editor/index.js +7 -2
  6. package/dist/animation-editor/index.js.map +1 -1
  7. package/dist/{bezier-CdccFsF8.d.cts → bezier-CZ2AhjID.d.cts} +1 -1
  8. package/dist/{bezier-DG9qNZQV.d.ts → bezier-Dywv3Bw8.d.ts} +1 -1
  9. package/dist/blending-D7jCmjO6.d.cts +1026 -0
  10. package/dist/blending-NgF3qo3d.d.ts +1026 -0
  11. package/dist/brushes-CnvZSYYU.d.cts +744 -0
  12. package/dist/brushes-DJmUbIgz.d.ts +744 -0
  13. package/dist/{brushstrokeRender-SII6MG4R.js → brushstrokeRender-2FAXA3XC.js} +13 -16
  14. package/dist/{brushstrokeRender-SII6MG4R.js.map → brushstrokeRender-2FAXA3XC.js.map} +1 -1
  15. package/dist/{brushstrokeRender-JNHVEUFG.cjs → brushstrokeRender-IMFY3FF6.cjs} +16 -19
  16. package/dist/brushstrokeRender-IMFY3FF6.cjs.map +1 -0
  17. package/dist/canvas/index.cjs +10 -10
  18. package/dist/canvas/index.cjs.map +1 -1
  19. package/dist/canvas/index.d.cts +7 -7
  20. package/dist/canvas/index.d.ts +7 -7
  21. package/dist/canvas/index.js +4 -4
  22. package/dist/{chunk-W4LNKTHT.cjs → chunk-2XS6LTUP.cjs} +63 -63
  23. package/dist/{chunk-W4LNKTHT.cjs.map → chunk-2XS6LTUP.cjs.map} +1 -1
  24. package/dist/{chunk-MAHQC3SK.js → chunk-3D77LOBM.js} +222 -135
  25. package/dist/chunk-3D77LOBM.js.map +1 -0
  26. package/dist/{chunk-BR7EKQUP.js → chunk-3G6J7UFV.js} +322 -2
  27. package/dist/chunk-3G6J7UFV.js.map +1 -0
  28. package/dist/{chunk-62XUO5LB.js → chunk-3X6IAJUQ.js} +2 -2
  29. package/dist/{chunk-EM3FMJWE.js → chunk-5FSRTP6E.js} +320 -3
  30. package/dist/chunk-5FSRTP6E.js.map +1 -0
  31. package/dist/{chunk-2R3UW57U.cjs → chunk-5OOIUXNJ.cjs} +333 -246
  32. package/dist/chunk-5OOIUXNJ.cjs.map +1 -0
  33. package/dist/{chunk-KZXLZCQ7.js → chunk-6S6362D2.js} +2 -2
  34. package/dist/{chunk-24ATT2PE.cjs → chunk-AEAAN4AD.cjs} +120 -120
  35. package/dist/{chunk-24ATT2PE.cjs.map → chunk-AEAAN4AD.cjs.map} +1 -1
  36. package/dist/{chunk-SVYE5HIM.js → chunk-EQQMGO42.js} +2 -2
  37. package/dist/{chunk-FHPVDTI2.cjs → chunk-F2Y4E4GU.cjs} +22 -22
  38. package/dist/{chunk-FHPVDTI2.cjs.map → chunk-F2Y4E4GU.cjs.map} +1 -1
  39. package/dist/{chunk-UYQUPUR6.js → chunk-HUO3TI4C.js} +3 -3
  40. package/dist/{chunk-DDSO4HS7.cjs → chunk-KEENUAFN.cjs} +2 -2
  41. package/dist/{chunk-DDSO4HS7.cjs.map → chunk-KEENUAFN.cjs.map} +1 -1
  42. package/dist/{chunk-2HC4DRF4.js → chunk-LLFHCSU2.js} +2 -2
  43. package/dist/{chunk-J5BA3BQ6.cjs → chunk-O7LUD7MH.cjs} +323 -3
  44. package/dist/chunk-O7LUD7MH.cjs.map +1 -0
  45. package/dist/{chunk-ILYFOJUN.js → chunk-OIBIRXRG.js} +3 -3
  46. package/dist/{chunk-B2CUCM7Y.cjs → chunk-PRSRYHQD.cjs} +36 -36
  47. package/dist/{chunk-B2CUCM7Y.cjs.map → chunk-PRSRYHQD.cjs.map} +1 -1
  48. package/dist/{chunk-6GFRKLLS.cjs → chunk-QBWEH3IM.cjs} +429 -112
  49. package/dist/chunk-QBWEH3IM.cjs.map +1 -0
  50. package/dist/{chunk-6QQR4LKE.js → chunk-SYT2TLQF.js} +35 -37
  51. package/dist/{chunk-6QQR4LKE.js.map → chunk-SYT2TLQF.js.map} +1 -1
  52. package/dist/{chunk-YT3JL7YM.cjs → chunk-TLCTTQFF.cjs} +53 -53
  53. package/dist/{chunk-YT3JL7YM.cjs.map → chunk-TLCTTQFF.cjs.map} +1 -1
  54. package/dist/{chunk-JLGNZMUV.cjs → chunk-XN2NBLV5.cjs} +313 -315
  55. package/dist/chunk-XN2NBLV5.cjs.map +1 -0
  56. package/dist/effects/index.d.cts +4 -4
  57. package/dist/effects/index.d.ts +4 -4
  58. package/dist/{export-Ds7zgGD8.d.ts → export-41rL6Cne.d.ts} +1 -1
  59. package/dist/{export-BOheWw2R.d.cts → export-CyJdfP_Z.d.cts} +5 -4
  60. package/dist/{export-CEYeRQXH.d.cts → export-D9mXp05Q.d.cts} +1 -1
  61. package/dist/{export-ByKKIA2S.d.ts → export-DwnZ_hvQ.d.ts} +5 -4
  62. package/dist/{helpers--ns3W2D7.d.ts → helpers-C-RgeyvH.d.ts} +18 -7
  63. package/dist/{helpers-BVkU4oUi.d.cts → helpers-v6GMazzg.d.cts} +18 -7
  64. package/dist/image-editor/index.cjs +984 -987
  65. package/dist/image-editor/index.cjs.map +1 -1
  66. package/dist/image-editor/index.d.cts +12 -11
  67. package/dist/image-editor/index.d.ts +12 -11
  68. package/dist/image-editor/index.js +92 -95
  69. package/dist/image-editor/index.js.map +1 -1
  70. package/dist/{opentype-yi-Kz4ND.d.cts → opentype-KR_jj6b_.d.cts} +1 -1
  71. package/dist/{opentype-DfoVYgmG.d.ts → opentype-a1KAW-qs.d.ts} +1 -1
  72. package/dist/paint/index.cjs +5 -8
  73. package/dist/paint/index.cjs.map +1 -1
  74. package/dist/paint/index.d.cts +4 -2
  75. package/dist/paint/index.d.ts +4 -2
  76. package/dist/paint/index.js +15 -18
  77. package/dist/paint-editor/index.cjs +403 -404
  78. package/dist/paint-editor/index.cjs.map +1 -1
  79. package/dist/paint-editor/index.d.cts +12 -748
  80. package/dist/paint-editor/index.d.ts +12 -748
  81. package/dist/paint-editor/index.js +77 -78
  82. package/dist/paint-editor/index.js.map +1 -1
  83. package/dist/{pathfinder-7JkMwYvC.d.cts → pathfinder-BHS4vQNm.d.cts} +1 -1
  84. package/dist/{pathfinder-GM3UWdBZ.d.ts → pathfinder-BVvTIBMo.d.ts} +1 -1
  85. package/dist/{pool-CkTxlLMC.d.ts → pool-CZQOrSXZ.d.ts} +1 -1
  86. package/dist/{pool-04qp8iW4.d.cts → pool-FjZZmZ80.d.cts} +1 -1
  87. package/dist/rand-8xbUb6ur.d.ts +1118 -0
  88. package/dist/rand-Cw9VLrVC.d.cts +1118 -0
  89. package/dist/raster/index.cjs +17 -19
  90. package/dist/raster/index.cjs.map +1 -1
  91. package/dist/raster/index.js +9 -11
  92. package/dist/raster/index.js.map +1 -1
  93. package/dist/{svg-rV6_HPmn.d.ts → svg-CSz3mzkw.d.ts} +2 -2
  94. package/dist/{svg-BDDKvWWY.d.cts → svg-DTb40ICU.d.cts} +2 -2
  95. package/dist/{tools-DPYerqeR.d.ts → tools-B0wXP5cF.d.ts} +1 -1
  96. package/dist/{tools-BAjSbTdY.d.cts → tools-Ca0kI1qo.d.cts} +1 -1
  97. package/dist/vector/index.cjs +1459 -1259
  98. package/dist/vector/index.cjs.map +1 -1
  99. package/dist/vector/index.d.cts +87 -11
  100. package/dist/vector/index.d.ts +87 -11
  101. package/dist/vector/index.js +213 -13
  102. package/dist/vector/index.js.map +1 -1
  103. package/dist/video-editor/index.d.cts +4 -4
  104. package/dist/video-editor/index.d.ts +4 -4
  105. package/dist/{warp-DQh9R7Ie.d.cts → warp-DTOp0lON.d.cts} +1 -1
  106. package/dist/{warp-XVL6SpSh.d.ts → warp-pd7hrH4T.d.ts} +1 -1
  107. package/package.json +1 -1
  108. package/skills/pixerate-vector/SKILL.md +8 -0
  109. package/dist/brushstrokeRender-JNHVEUFG.cjs.map +0 -1
  110. package/dist/chunk-2R3UW57U.cjs.map +0 -1
  111. package/dist/chunk-64PYNEHJ.js +0 -340
  112. package/dist/chunk-64PYNEHJ.js.map +0 -1
  113. package/dist/chunk-6GFRKLLS.cjs.map +0 -1
  114. package/dist/chunk-7QN76ESJ.js +0 -323
  115. package/dist/chunk-7QN76ESJ.js.map +0 -1
  116. package/dist/chunk-BR7EKQUP.js.map +0 -1
  117. package/dist/chunk-DCLJNVZS.cjs +0 -323
  118. package/dist/chunk-DCLJNVZS.cjs.map +0 -1
  119. package/dist/chunk-EM3FMJWE.js.map +0 -1
  120. package/dist/chunk-J5BA3BQ6.cjs.map +0 -1
  121. package/dist/chunk-JLGNZMUV.cjs.map +0 -1
  122. package/dist/chunk-MAHQC3SK.js.map +0 -1
  123. package/dist/chunk-Z6OUCS2K.cjs +0 -340
  124. package/dist/chunk-Z6OUCS2K.cjs.map +0 -1
  125. package/dist/rand-BszBST4s.d.ts +0 -2140
  126. package/dist/rand-DOH_aMvm.d.cts +0 -2140
  127. /package/dist/{chunk-62XUO5LB.js.map → chunk-3X6IAJUQ.js.map} +0 -0
  128. /package/dist/{chunk-KZXLZCQ7.js.map → chunk-6S6362D2.js.map} +0 -0
  129. /package/dist/{chunk-SVYE5HIM.js.map → chunk-EQQMGO42.js.map} +0 -0
  130. /package/dist/{chunk-UYQUPUR6.js.map → chunk-HUO3TI4C.js.map} +0 -0
  131. /package/dist/{chunk-2HC4DRF4.js.map → chunk-LLFHCSU2.js.map} +0 -0
  132. /package/dist/{chunk-ILYFOJUN.js.map → chunk-OIBIRXRG.js.map} +0 -0
@@ -1,29 +1,26 @@
1
- import {
2
- BUILTIN_BRUSHES
3
- } from "./chunk-UYQUPUR6.js";
4
1
  import {
5
2
  pathDataToPolyline
6
- } from "./chunk-SVYE5HIM.js";
3
+ } from "./chunk-EQQMGO42.js";
7
4
  import {
8
5
  parseCssColor
9
6
  } from "./chunk-CTTF4KYV.js";
10
7
  import {
11
- BrushstrokeCache,
12
- brushstrokeDataUrl,
13
- isBrushstrokeBrush
14
- } from "./chunk-64PYNEHJ.js";
15
- import {
16
- parsePaintSource
17
- } from "./chunk-EM3FMJWE.js";
18
- import "./chunk-63AZAUSN.js";
19
- import "./chunk-BR7EKQUP.js";
20
- import "./chunk-7QN76ESJ.js";
21
- import "./chunk-6FCKOS2B.js";
8
+ BUILTIN_BRUSHES
9
+ } from "./chunk-HUO3TI4C.js";
22
10
  import {
23
11
  formatNumber,
24
12
  getShapeSvg,
25
13
  resolveCanvasGradient
26
14
  } from "./chunk-KHNZ6MOU.js";
15
+ import {
16
+ BrushstrokeCache,
17
+ brushstrokeDataUrl,
18
+ isBrushstrokeBrush,
19
+ parsePaintSource
20
+ } from "./chunk-5FSRTP6E.js";
21
+ import "./chunk-63AZAUSN.js";
22
+ import "./chunk-3G6J7UFV.js";
23
+ import "./chunk-6FCKOS2B.js";
27
24
 
28
25
  // src/canvas/brushstrokeRender.ts
29
26
  var DRY = BUILTIN_BRUSHES.filter((b) => isBrushstrokeBrush(b));
@@ -107,4 +104,4 @@ export {
107
104
  resolveCanvasBrush,
108
105
  resolveCanvasPaint
109
106
  };
110
- //# sourceMappingURL=brushstrokeRender-SII6MG4R.js.map
107
+ //# sourceMappingURL=brushstrokeRender-2FAXA3XC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/canvas/brushstrokeRender.ts"],"sourcesContent":["/**\n * The lazily loaded half of brushed freehand strokes (`./brushstroke.ts` imports it on first use):\n * the paint engine's dry brushstroke renderer, the paint presets and a CSS colour parser. Keep\n * every import of the paint engine in this file, so the canvas entry never reaches it statically.\n */\nimport { BrushstrokeCache, brushstrokeDataUrl, isBrushstrokeBrush, type BrushstrokeBrush, type BrushstrokeImage } from '../paint/brushstroke.js';\nimport { parsePaintSource, type PaintSource } from '../paint/gradient-paint.js';\nimport { BUILTIN_BRUSHES } from '../paint-editor/brushes.js';\nimport { parseCssColor } from '../image-editor/layers/css-color.js';\nimport { resolveCanvasGradient } from './gradient.js';\nimport { formatNumber, getShapeSvg, type ShapeSize } from './shapeGeometry.js';\nimport { pathDataToPolyline, type BrushedPathShape, type CanvasBrush, type CanvasBrushPaint, type CanvasBrushPreset, type CanvasBrushstrokeImage } from './brushstroke.js';\n\nconst DRY = BUILTIN_BRUSHES.filter((b) => isBrushstrokeBrush(b));\n\nexport function listCanvasBrushes(): CanvasBrushPreset[] {\n\treturn DRY.map((b) => ({ id: b.id, name: b.name, category: b.category, size: b.tip.size }));\n}\n\n/** The paint engine brush for a canvas brush at stroke width `width`; throws with the usable ids. */\nexport function resolveCanvasBrush(brush: CanvasBrush, width: number): BrushstrokeBrush {\n\tconst size = Math.max(1, Number.isFinite(width) ? width : 1);\n\tif (typeof brush === 'string') {\n\t\tconst preset = BUILTIN_BRUSHES.find((b) => b.id === brush);\n\t\tconst ids = DRY.map((b) => b.id).join(', ');\n\t\tif (!preset) throw new Error(`Unknown brush '${brush}'. Use one of the dry paint presets (${ids}) or tip settings ({ hardness, spacing, flow, … }).`);\n\t\tif (!isBrushstrokeBrush(preset)) {\n\t\t\tthrow new Error(`Brush '${brush}' (${preset.name}) is not a dry brush: brushed canvas strokes use dry media only (wet paint needs an area to flow in; mixer, blender, smudge and eraser brushes need paint under them). Use one of: ${ids}.`);\n\t\t}\n\t\treturn { ...preset, tip: { ...preset.tip, size } };\n\t}\n\tif (!brush || typeof brush !== 'object' || Array.isArray(brush)) {\n\t\tthrow new Error('A brush is a dry paint preset id (see listCanvasBrushes / canvas.listBrushes) or an object of tip settings.');\n\t}\n\treturn { size, ...brush };\n}\n\n/**\n * The paint engine's `PaintSource` for a brushed stroke's `paint`; throws with what is wrong.\n * Mappings that need timed samples (`velocity`, `time`) are refused: canvas strokes carry no timing.\n */\nexport function resolveCanvasPaint(paint: CanvasBrushPaint | unknown): PaintSource {\n\tconst source = parsePaintSource(paint, 'paint');\n\tif (source.type === 'gradient' && (source.map.by === 'velocity' || source.map.by === 'time')) {\n\t\tthrow new Error(`paint.map.by \"${source.map.by}\" needs timed samples, which canvas strokes do not record; use distance, pressure, tilt, direction, across-tip or random.`);\n\t}\n\treturn source;\n}\n\n/** A stored stroke's paint, or null when it has none or it is not valid paint (the stroke colour is used then). */\nfunction shapePaint(shape: BrushedPathShape): PaintSource | null {\n\tif (shape.brush.paint === undefined || shape.brush.paint === null) return null;\n\ttry {\n\t\treturn resolveCanvasPaint(shape.brush.paint);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * RGBA of a shape's stroke paint: with `brush.paint` its alpha and the colour of `paint` stops.\n * A canvas gradient stroke without `brush.paint` uses its first stop.\n */\nfunction strokeColor(shape: BrushedPathShape): [number, number, number, number] {\n\tconst gradient = resolveCanvasGradient(shape.strokeGradient ?? shape.stroke);\n\tconst css = gradient ? (gradient.stops[0]?.color ?? '#000') : typeof shape.stroke === 'string' && shape.stroke !== 'none' ? shape.stroke : '#000';\n\tconst parsed = parseCssColor(css) ?? { hex: '#000000', alpha: 1 };\n\tconst n = parseInt(parsed.hex.slice(1), 16);\n\treturn [(n >> 16) & 255, (n >> 8) & 255, n & 255, Math.round(parsed.alpha * 255)];\n}\n\nconst cache = new BrushstrokeCache(128);\nconst urls = new WeakMap<BrushstrokeImage, string>();\n\nexport function renderShapeBrushstrokeNow(shape: BrushedPathShape, scale: number): CanvasBrushstrokeImage | null {\n\tconst brush = resolveCanvasBrush(shape.brush.brush, shape.strokeWidth ?? 3);\n\tconst points = pathDataToPolyline(shape.d);\n\tif (!points.length) return null;\n\tconst { pressure, tiltX, tiltY } = shape.brush;\n\tconst input = {\n\t\tpoints: points.map(([x, y]) => ({ x, y })),\n\t\t...(pressure?.length ? { pressure } : {}),\n\t\t...(tiltX?.length ? { tiltX } : {}),\n\t\t...(tiltY?.length ? { tiltY } : {})\n\t};\n\tconst paint = shapePaint(shape);\n\tconst stroke = cache.render(input, brush, { scale, color: strokeColor(shape), ...(paint ? { paint } : {}) });\n\tif (!stroke.bounds) return null;\n\tlet href = urls.get(stroke);\n\tif (href === undefined) {\n\t\thref = brushstrokeDataUrl(stroke);\n\t\turls.set(stroke, href);\n\t}\n\treturn { href, ...stroke.bounds, scale: stroke.scale };\n}\n\nconst escapeAttr = (s: string) => s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n\nexport function brushedShapeSvgNow(shape: BrushedPathShape, size: ShapeSize, scale: number): string {\n\tconst f = (n: number) => formatNumber(n, 3);\n\tconst image = renderShapeBrushstrokeNow(shape, scale);\n\tconst svg = getShapeSvg(shape, size);\n\tconst body = image\n\t\t? `<image href=\"${escapeAttr(image.href)}\" x=\"${f(image.x)}\" y=\"${f(image.y)}\" width=\"${f(image.width)}\" height=\"${f(image.height)}\" preserveAspectRatio=\"none\"${shape.opacity !== undefined ? ` opacity=\"${f(shape.opacity)}\"` : ''}/>`\n\t\t: '';\n\tconst content = svg.transform && body ? `<g transform=\"${svg.transform}\">${body}</g>` : body;\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${f(size.width)}\" height=\"${f(size.height)}\" viewBox=\"0 0 ${f(size.width)} ${f(size.height)}\">${content}</svg>`;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/canvas/brushstrokeRender.ts"],"sourcesContent":["/**\n * The lazily loaded half of brushed freehand strokes (`./brushstroke.ts` imports it on first use):\n * the paint engine's dry brushstroke renderer, the paint presets and a CSS colour parser. Keep\n * every import of the paint engine in this file, so the canvas entry never reaches it statically.\n */\nimport { BrushstrokeCache, brushstrokeDataUrl, isBrushstrokeBrush, type BrushstrokeBrush, type BrushstrokeImage } from '../paint/brushstroke.js';\nimport { parsePaintSource, type PaintSource } from '../paint/gradient-paint.js';\nimport { BUILTIN_BRUSHES } from '../paint-editor/brushes.js';\nimport { parseCssColor } from '../image-editor/layers/css-color.js';\nimport { resolveCanvasGradient } from './gradient.js';\nimport { formatNumber, getShapeSvg, type ShapeSize } from './shapeGeometry.js';\nimport { pathDataToPolyline, type BrushedPathShape, type CanvasBrush, type CanvasBrushPaint, type CanvasBrushPreset, type CanvasBrushstrokeImage } from './brushstroke.js';\n\nconst DRY = BUILTIN_BRUSHES.filter((b) => isBrushstrokeBrush(b));\n\nexport function listCanvasBrushes(): CanvasBrushPreset[] {\n\treturn DRY.map((b) => ({ id: b.id, name: b.name, category: b.category, size: b.tip.size }));\n}\n\n/** The paint engine brush for a canvas brush at stroke width `width`; throws with the usable ids. */\nexport function resolveCanvasBrush(brush: CanvasBrush, width: number): BrushstrokeBrush {\n\tconst size = Math.max(1, Number.isFinite(width) ? width : 1);\n\tif (typeof brush === 'string') {\n\t\tconst preset = BUILTIN_BRUSHES.find((b) => b.id === brush);\n\t\tconst ids = DRY.map((b) => b.id).join(', ');\n\t\tif (!preset) throw new Error(`Unknown brush '${brush}'. Use one of the dry paint presets (${ids}) or tip settings ({ hardness, spacing, flow, … }).`);\n\t\tif (!isBrushstrokeBrush(preset)) {\n\t\t\tthrow new Error(`Brush '${brush}' (${preset.name}) is not a dry brush: brushed canvas strokes use dry media only (wet paint needs an area to flow in; mixer, blender, smudge and eraser brushes need paint under them). Use one of: ${ids}.`);\n\t\t}\n\t\treturn { ...preset, tip: { ...preset.tip, size } };\n\t}\n\tif (!brush || typeof brush !== 'object' || Array.isArray(brush)) {\n\t\tthrow new Error('A brush is a dry paint preset id (see listCanvasBrushes / canvas.listBrushes) or an object of tip settings.');\n\t}\n\treturn { size, ...brush };\n}\n\n/**\n * The paint engine's `PaintSource` for a brushed stroke's `paint`; throws with what is wrong.\n * Mappings that need timed samples (`velocity`, `time`) are refused: canvas strokes carry no timing.\n */\nexport function resolveCanvasPaint(paint: CanvasBrushPaint | unknown): PaintSource {\n\tconst source = parsePaintSource(paint, 'paint');\n\tif (source.type === 'gradient' && (source.map.by === 'velocity' || source.map.by === 'time')) {\n\t\tthrow new Error(`paint.map.by \"${source.map.by}\" needs timed samples, which canvas strokes do not record; use distance, pressure, tilt, direction, across-tip or random.`);\n\t}\n\treturn source;\n}\n\n/** A stored stroke's paint, or null when it has none or it is not valid paint (the stroke colour is used then). */\nfunction shapePaint(shape: BrushedPathShape): PaintSource | null {\n\tif (shape.brush.paint === undefined || shape.brush.paint === null) return null;\n\ttry {\n\t\treturn resolveCanvasPaint(shape.brush.paint);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * RGBA of a shape's stroke paint: with `brush.paint` its alpha and the colour of `paint` stops.\n * A canvas gradient stroke without `brush.paint` uses its first stop.\n */\nfunction strokeColor(shape: BrushedPathShape): [number, number, number, number] {\n\tconst gradient = resolveCanvasGradient(shape.strokeGradient ?? shape.stroke);\n\tconst css = gradient ? (gradient.stops[0]?.color ?? '#000') : typeof shape.stroke === 'string' && shape.stroke !== 'none' ? shape.stroke : '#000';\n\tconst parsed = parseCssColor(css) ?? { hex: '#000000', alpha: 1 };\n\tconst n = parseInt(parsed.hex.slice(1), 16);\n\treturn [(n >> 16) & 255, (n >> 8) & 255, n & 255, Math.round(parsed.alpha * 255)];\n}\n\nconst cache = new BrushstrokeCache(128);\nconst urls = new WeakMap<BrushstrokeImage, string>();\n\nexport function renderShapeBrushstrokeNow(shape: BrushedPathShape, scale: number): CanvasBrushstrokeImage | null {\n\tconst brush = resolveCanvasBrush(shape.brush.brush, shape.strokeWidth ?? 3);\n\tconst points = pathDataToPolyline(shape.d);\n\tif (!points.length) return null;\n\tconst { pressure, tiltX, tiltY } = shape.brush;\n\tconst input = {\n\t\tpoints: points.map(([x, y]) => ({ x, y })),\n\t\t...(pressure?.length ? { pressure } : {}),\n\t\t...(tiltX?.length ? { tiltX } : {}),\n\t\t...(tiltY?.length ? { tiltY } : {})\n\t};\n\tconst paint = shapePaint(shape);\n\tconst stroke = cache.render(input, brush, { scale, color: strokeColor(shape), ...(paint ? { paint } : {}) });\n\tif (!stroke.bounds) return null;\n\tlet href = urls.get(stroke);\n\tif (href === undefined) {\n\t\thref = brushstrokeDataUrl(stroke);\n\t\turls.set(stroke, href);\n\t}\n\treturn { href, ...stroke.bounds, scale: stroke.scale };\n}\n\nconst escapeAttr = (s: string) => s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n\nexport function brushedShapeSvgNow(shape: BrushedPathShape, size: ShapeSize, scale: number): string {\n\tconst f = (n: number) => formatNumber(n, 3);\n\tconst image = renderShapeBrushstrokeNow(shape, scale);\n\tconst svg = getShapeSvg(shape, size);\n\tconst body = image\n\t\t? `<image href=\"${escapeAttr(image.href)}\" x=\"${f(image.x)}\" y=\"${f(image.y)}\" width=\"${f(image.width)}\" height=\"${f(image.height)}\" preserveAspectRatio=\"none\"${shape.opacity !== undefined ? ` opacity=\"${f(shape.opacity)}\"` : ''}/>`\n\t\t: '';\n\tconst content = svg.transform && body ? `<g transform=\"${svg.transform}\">${body}</g>` : body;\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${f(size.width)}\" height=\"${f(size.height)}\" viewBox=\"0 0 ${f(size.width)} ${f(size.height)}\">${content}</svg>`;\n}\n"],"mappings":"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","names":[]}
@@ -1,42 +1,39 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkW4LNKTHTcjs = require('./chunk-W4LNKTHT.cjs');
4
-
5
-
6
- var _chunkDDSO4HS7cjs = require('./chunk-DDSO4HS7.cjs');
3
+ var _chunkKEENUAFNcjs = require('./chunk-KEENUAFN.cjs');
7
4
 
8
5
 
9
6
  var _chunk2YQONY6Gcjs = require('./chunk-2YQONY6G.cjs');
10
7
 
11
8
 
9
+ var _chunk2XS6LTUPcjs = require('./chunk-2XS6LTUP.cjs');
12
10
 
13
11
 
14
- var _chunkZ6OUCS2Kcjs = require('./chunk-Z6OUCS2K.cjs');
15
12
 
16
13
 
17
- var _chunk6GFRKLLScjs = require('./chunk-6GFRKLLS.cjs');
18
- require('./chunk-SYPFUL5B.cjs');
19
- require('./chunk-J5BA3BQ6.cjs');
20
- require('./chunk-DCLJNVZS.cjs');
21
- require('./chunk-643B2HKC.cjs');
14
+ var _chunkIZ4WRXZAcjs = require('./chunk-IZ4WRXZA.cjs');
22
15
 
23
16
 
24
17
 
25
18
 
26
- var _chunkIZ4WRXZAcjs = require('./chunk-IZ4WRXZA.cjs');
19
+
20
+ var _chunkQBWEH3IMcjs = require('./chunk-QBWEH3IM.cjs');
21
+ require('./chunk-SYPFUL5B.cjs');
22
+ require('./chunk-O7LUD7MH.cjs');
23
+ require('./chunk-643B2HKC.cjs');
27
24
 
28
25
  // src/canvas/brushstrokeRender.ts
29
- var DRY = _chunkW4LNKTHTcjs.BUILTIN_BRUSHES.filter((b) => _chunkZ6OUCS2Kcjs.isBrushstrokeBrush.call(void 0, b));
26
+ var DRY = _chunk2XS6LTUPcjs.BUILTIN_BRUSHES.filter((b) => _chunkQBWEH3IMcjs.isBrushstrokeBrush.call(void 0, b));
30
27
  function listCanvasBrushes() {
31
28
  return DRY.map((b) => ({ id: b.id, name: b.name, category: b.category, size: b.tip.size }));
32
29
  }
33
30
  function resolveCanvasBrush(brush, width) {
34
31
  const size = Math.max(1, Number.isFinite(width) ? width : 1);
35
32
  if (typeof brush === "string") {
36
- const preset = _chunkW4LNKTHTcjs.BUILTIN_BRUSHES.find((b) => b.id === brush);
33
+ const preset = _chunk2XS6LTUPcjs.BUILTIN_BRUSHES.find((b) => b.id === brush);
37
34
  const ids = DRY.map((b) => b.id).join(", ");
38
35
  if (!preset) throw new Error(`Unknown brush '${brush}'. Use one of the dry paint presets (${ids}) or tip settings ({ hardness, spacing, flow, \u2026 }).`);
39
- if (!_chunkZ6OUCS2Kcjs.isBrushstrokeBrush.call(void 0, preset)) {
36
+ if (!_chunkQBWEH3IMcjs.isBrushstrokeBrush.call(void 0, preset)) {
40
37
  throw new Error(`Brush '${brush}' (${preset.name}) is not a dry brush: brushed canvas strokes use dry media only (wet paint needs an area to flow in; mixer, blender, smudge and eraser brushes need paint under them). Use one of: ${ids}.`);
41
38
  }
42
39
  return { ...preset, tip: { ...preset.tip, size } };
@@ -47,7 +44,7 @@ function resolveCanvasBrush(brush, width) {
47
44
  return { size, ...brush };
48
45
  }
49
46
  function resolveCanvasPaint(paint) {
50
- const source = _chunk6GFRKLLScjs.parsePaintSource.call(void 0, paint, "paint");
47
+ const source = _chunkQBWEH3IMcjs.parsePaintSource.call(void 0, paint, "paint");
51
48
  if (source.type === "gradient" && (source.map.by === "velocity" || source.map.by === "time")) {
52
49
  throw new Error(`paint.map.by "${source.map.by}" needs timed samples, which canvas strokes do not record; use distance, pressure, tilt, direction, across-tip or random.`);
53
50
  }
@@ -68,11 +65,11 @@ function strokeColor(shape) {
68
65
  const n = parseInt(parsed.hex.slice(1), 16);
69
66
  return [n >> 16 & 255, n >> 8 & 255, n & 255, Math.round(parsed.alpha * 255)];
70
67
  }
71
- var cache = new (0, _chunkZ6OUCS2Kcjs.BrushstrokeCache)(128);
68
+ var cache = new (0, _chunkQBWEH3IMcjs.BrushstrokeCache)(128);
72
69
  var urls = /* @__PURE__ */ new WeakMap();
73
70
  function renderShapeBrushstrokeNow(shape, scale) {
74
71
  const brush = resolveCanvasBrush(shape.brush.brush, _nullishCoalesce(shape.strokeWidth, () => ( 3)));
75
- const points = _chunkDDSO4HS7cjs.pathDataToPolyline.call(void 0, shape.d);
72
+ const points = _chunkKEENUAFNcjs.pathDataToPolyline.call(void 0, shape.d);
76
73
  if (!points.length) return null;
77
74
  const { pressure, tiltX, tiltY } = shape.brush;
78
75
  const input = {
@@ -86,7 +83,7 @@ function renderShapeBrushstrokeNow(shape, scale) {
86
83
  if (!stroke.bounds) return null;
87
84
  let href = urls.get(stroke);
88
85
  if (href === void 0) {
89
- href = _chunkZ6OUCS2Kcjs.brushstrokeDataUrl.call(void 0, stroke);
86
+ href = _chunkQBWEH3IMcjs.brushstrokeDataUrl.call(void 0, stroke);
90
87
  urls.set(stroke, href);
91
88
  }
92
89
  return { href, ...stroke.bounds, scale: stroke.scale };
@@ -107,4 +104,4 @@ function brushedShapeSvgNow(shape, size, scale) {
107
104
 
108
105
 
109
106
  exports.brushedShapeSvgNow = brushedShapeSvgNow; exports.listCanvasBrushes = listCanvasBrushes; exports.renderShapeBrushstrokeNow = renderShapeBrushstrokeNow; exports.resolveCanvasBrush = resolveCanvasBrush; exports.resolveCanvasPaint = resolveCanvasPaint;
110
- //# sourceMappingURL=brushstrokeRender-JNHVEUFG.cjs.map
107
+ //# sourceMappingURL=brushstrokeRender-IMFY3FF6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/editor/editor/packages/core/dist/brushstrokeRender-IMFY3FF6.cjs","../src/canvas/brushstrokeRender.ts"],"names":[],"mappings":"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","file":"/home/runner/work/editor/editor/packages/core/dist/brushstrokeRender-IMFY3FF6.cjs","sourcesContent":[null,"/**\n * The lazily loaded half of brushed freehand strokes (`./brushstroke.ts` imports it on first use):\n * the paint engine's dry brushstroke renderer, the paint presets and a CSS colour parser. Keep\n * every import of the paint engine in this file, so the canvas entry never reaches it statically.\n */\nimport { BrushstrokeCache, brushstrokeDataUrl, isBrushstrokeBrush, type BrushstrokeBrush, type BrushstrokeImage } from '../paint/brushstroke.js';\nimport { parsePaintSource, type PaintSource } from '../paint/gradient-paint.js';\nimport { BUILTIN_BRUSHES } from '../paint-editor/brushes.js';\nimport { parseCssColor } from '../image-editor/layers/css-color.js';\nimport { resolveCanvasGradient } from './gradient.js';\nimport { formatNumber, getShapeSvg, type ShapeSize } from './shapeGeometry.js';\nimport { pathDataToPolyline, type BrushedPathShape, type CanvasBrush, type CanvasBrushPaint, type CanvasBrushPreset, type CanvasBrushstrokeImage } from './brushstroke.js';\n\nconst DRY = BUILTIN_BRUSHES.filter((b) => isBrushstrokeBrush(b));\n\nexport function listCanvasBrushes(): CanvasBrushPreset[] {\n\treturn DRY.map((b) => ({ id: b.id, name: b.name, category: b.category, size: b.tip.size }));\n}\n\n/** The paint engine brush for a canvas brush at stroke width `width`; throws with the usable ids. */\nexport function resolveCanvasBrush(brush: CanvasBrush, width: number): BrushstrokeBrush {\n\tconst size = Math.max(1, Number.isFinite(width) ? width : 1);\n\tif (typeof brush === 'string') {\n\t\tconst preset = BUILTIN_BRUSHES.find((b) => b.id === brush);\n\t\tconst ids = DRY.map((b) => b.id).join(', ');\n\t\tif (!preset) throw new Error(`Unknown brush '${brush}'. Use one of the dry paint presets (${ids}) or tip settings ({ hardness, spacing, flow, … }).`);\n\t\tif (!isBrushstrokeBrush(preset)) {\n\t\t\tthrow new Error(`Brush '${brush}' (${preset.name}) is not a dry brush: brushed canvas strokes use dry media only (wet paint needs an area to flow in; mixer, blender, smudge and eraser brushes need paint under them). Use one of: ${ids}.`);\n\t\t}\n\t\treturn { ...preset, tip: { ...preset.tip, size } };\n\t}\n\tif (!brush || typeof brush !== 'object' || Array.isArray(brush)) {\n\t\tthrow new Error('A brush is a dry paint preset id (see listCanvasBrushes / canvas.listBrushes) or an object of tip settings.');\n\t}\n\treturn { size, ...brush };\n}\n\n/**\n * The paint engine's `PaintSource` for a brushed stroke's `paint`; throws with what is wrong.\n * Mappings that need timed samples (`velocity`, `time`) are refused: canvas strokes carry no timing.\n */\nexport function resolveCanvasPaint(paint: CanvasBrushPaint | unknown): PaintSource {\n\tconst source = parsePaintSource(paint, 'paint');\n\tif (source.type === 'gradient' && (source.map.by === 'velocity' || source.map.by === 'time')) {\n\t\tthrow new Error(`paint.map.by \"${source.map.by}\" needs timed samples, which canvas strokes do not record; use distance, pressure, tilt, direction, across-tip or random.`);\n\t}\n\treturn source;\n}\n\n/** A stored stroke's paint, or null when it has none or it is not valid paint (the stroke colour is used then). */\nfunction shapePaint(shape: BrushedPathShape): PaintSource | null {\n\tif (shape.brush.paint === undefined || shape.brush.paint === null) return null;\n\ttry {\n\t\treturn resolveCanvasPaint(shape.brush.paint);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * RGBA of a shape's stroke paint: with `brush.paint` its alpha and the colour of `paint` stops.\n * A canvas gradient stroke without `brush.paint` uses its first stop.\n */\nfunction strokeColor(shape: BrushedPathShape): [number, number, number, number] {\n\tconst gradient = resolveCanvasGradient(shape.strokeGradient ?? shape.stroke);\n\tconst css = gradient ? (gradient.stops[0]?.color ?? '#000') : typeof shape.stroke === 'string' && shape.stroke !== 'none' ? shape.stroke : '#000';\n\tconst parsed = parseCssColor(css) ?? { hex: '#000000', alpha: 1 };\n\tconst n = parseInt(parsed.hex.slice(1), 16);\n\treturn [(n >> 16) & 255, (n >> 8) & 255, n & 255, Math.round(parsed.alpha * 255)];\n}\n\nconst cache = new BrushstrokeCache(128);\nconst urls = new WeakMap<BrushstrokeImage, string>();\n\nexport function renderShapeBrushstrokeNow(shape: BrushedPathShape, scale: number): CanvasBrushstrokeImage | null {\n\tconst brush = resolveCanvasBrush(shape.brush.brush, shape.strokeWidth ?? 3);\n\tconst points = pathDataToPolyline(shape.d);\n\tif (!points.length) return null;\n\tconst { pressure, tiltX, tiltY } = shape.brush;\n\tconst input = {\n\t\tpoints: points.map(([x, y]) => ({ x, y })),\n\t\t...(pressure?.length ? { pressure } : {}),\n\t\t...(tiltX?.length ? { tiltX } : {}),\n\t\t...(tiltY?.length ? { tiltY } : {})\n\t};\n\tconst paint = shapePaint(shape);\n\tconst stroke = cache.render(input, brush, { scale, color: strokeColor(shape), ...(paint ? { paint } : {}) });\n\tif (!stroke.bounds) return null;\n\tlet href = urls.get(stroke);\n\tif (href === undefined) {\n\t\thref = brushstrokeDataUrl(stroke);\n\t\turls.set(stroke, href);\n\t}\n\treturn { href, ...stroke.bounds, scale: stroke.scale };\n}\n\nconst escapeAttr = (s: string) => s.replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;');\n\nexport function brushedShapeSvgNow(shape: BrushedPathShape, size: ShapeSize, scale: number): string {\n\tconst f = (n: number) => formatNumber(n, 3);\n\tconst image = renderShapeBrushstrokeNow(shape, scale);\n\tconst svg = getShapeSvg(shape, size);\n\tconst body = image\n\t\t? `<image href=\"${escapeAttr(image.href)}\" x=\"${f(image.x)}\" y=\"${f(image.y)}\" width=\"${f(image.width)}\" height=\"${f(image.height)}\" preserveAspectRatio=\"none\"${shape.opacity !== undefined ? ` opacity=\"${f(shape.opacity)}\"` : ''}/>`\n\t\t: '';\n\tconst content = svg.transform && body ? `<g transform=\"${svg.transform}\">${body}</g>` : body;\n\treturn `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${f(size.width)}\" height=\"${f(size.height)}\" viewBox=\"0 0 ${f(size.width)} ${f(size.height)}\">${content}</svg>`;\n}\n"]}
@@ -51,7 +51,7 @@ var _chunkII77MLHNcjs = require('../chunk-II77MLHN.cjs');
51
51
 
52
52
 
53
53
 
54
- var _chunkDDSO4HS7cjs = require('../chunk-DDSO4HS7.cjs');
54
+ var _chunkKEENUAFNcjs = require('../chunk-KEENUAFN.cjs');
55
55
 
56
56
 
57
57
 
@@ -92,9 +92,6 @@ var _chunkW6QTLHZ3cjs = require('../chunk-W6QTLHZ3.cjs');
92
92
  var _chunkVJUVNERTcjs = require('../chunk-VJUVNERT.cjs');
93
93
 
94
94
 
95
- var _chunkSYPFUL5Bcjs = require('../chunk-SYPFUL5B.cjs');
96
-
97
-
98
95
  var _chunkP2CTDJNFcjs = require('../chunk-P2CTDJNF.cjs');
99
96
 
100
97
 
@@ -194,6 +191,9 @@ var _chunkJODTP4DPcjs = require('../chunk-JODTP4DP.cjs');
194
191
  require('../chunk-RIWPYSKU.cjs');
195
192
 
196
193
 
194
+ var _chunkSYPFUL5Bcjs = require('../chunk-SYPFUL5B.cjs');
195
+
196
+
197
197
 
198
198
 
199
199
 
@@ -8231,12 +8231,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
8231
8231
  if (!samples || samples.length !== points.length) return out;
8232
8232
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
8233
8233
  if (samples.some((s) => finite2(s.pressure))) {
8234
- const pressure = _chunkDDSO4HS7cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
8234
+ const pressure = _chunkKEENUAFNcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
8235
8235
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
8236
8236
  }
8237
8237
  for (const key of ["tiltX", "tiltY"]) {
8238
8238
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
8239
- out[key] = _chunkDDSO4HS7cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
8239
+ out[key] = _chunkKEENUAFNcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
8240
8240
  }
8241
8241
  return out;
8242
8242
  }
@@ -8453,8 +8453,8 @@ function createCanvasDrawController(options) {
8453
8453
  if (style.paint !== void 0 && style.brush === void 0) {
8454
8454
  throw new Error("paint (gradient paint) only colours brushed strokes: pass a brush too (see canvas.listBrushes), or use color for a plain stroke.");
8455
8455
  }
8456
- if (style.brush !== void 0) await _chunkDDSO4HS7cjs.validateCanvasBrush.call(void 0, style.brush);
8457
- if (style.paint !== void 0) style.paint = (await _chunkDDSO4HS7cjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8456
+ if (style.brush !== void 0) await _chunkKEENUAFNcjs.validateCanvasBrush.call(void 0, style.brush);
8457
+ if (style.paint !== void 0) style.paint = (await _chunkKEENUAFNcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8458
8458
  const id = _nullishCoalesce(_optionalChain([options, 'access', _318 => _318.generateNodeId, 'optionalCall', _319 => _319()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8459
8459
  const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _320 => _320.drawOptions, 'optionalAccess', _321 => _321.streamline]), () => ( 0.35))) : [...points];
8460
8460
  const node = strokeToShapeNode(
@@ -8534,7 +8534,7 @@ function createCanvasDrawController(options) {
8534
8534
  eraseAt,
8535
8535
  drawStroke,
8536
8536
  /** The dry paint presets a stroke can be brushed with (loads the paint engine). */
8537
- listBrushes: _chunkDDSO4HS7cjs.listCanvasBrushes
8537
+ listBrushes: _chunkKEENUAFNcjs.listCanvasBrushes
8538
8538
  };
8539
8539
  }
8540
8540
  function computeDragBounds(start, current, modifiers = {}) {
@@ -12482,5 +12482,5 @@ function createCanvasEffectsToolProvider(controller, options = {}) {
12482
12482
 
12483
12483
 
12484
12484
 
12485
- exports.ANIMATABLE_PROPERTIES = ANIMATABLE_PROPERTIES; exports.ANIMATION_DATA_KEY = ANIMATION_DATA_KEY; exports.ANIMATION_EASING_LABELS = _chunk2FHLHZALcjs.ANIMATION_EASING_LABELS; exports.ANIMATION_EASING_PRESETS = _chunk2FHLHZALcjs.ANIMATION_EASING_PRESETS; exports.ANIMATION_TIME_EPSILON = _chunk477UVMNRcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunk477UVMNRcjs.AnimationPlayer; exports.BUILTIN_FAMILY_SCENES = BUILTIN_FAMILY_SCENES; exports.CANVAS_CAPTURE_CHROME_SELECTORS = CANVAS_CAPTURE_CHROME_SELECTORS; exports.CANVAS_CAPTURE_OVERLAY_SELECTORS = CANVAS_CAPTURE_OVERLAY_SELECTORS; exports.CANVAS_CAPTURE_VIEWPORT_SELECTOR = CANVAS_CAPTURE_VIEWPORT_SELECTOR; exports.CANVAS_COMPONENT_DRAG_TYPE = CANVAS_COMPONENT_DRAG_TYPE; exports.CANVAS_EFFECT_PLACES = CANVAS_EFFECT_PLACES; exports.CANVAS_GRADIENT_PRESETS = _chunkIZ4WRXZAcjs.CANVAS_GRADIENT_PRESETS; exports.CANVAS_TOKEN_PROPERTIES = CANVAS_TOKEN_PROPERTIES; exports.CARD_INSPECTION_ZONES = CARD_INSPECTION_ZONES; exports.CHILD_LAYOUT_DATA_KEY = CHILD_LAYOUT_DATA_KEY; exports.COMPONENT_DATA_KEY = COMPONENT_DATA_KEY; exports.COMPONENT_OVERRIDES_DATA_KEY = COMPONENT_OVERRIDES_DATA_KEY; exports.COMPONENT_PROPERTY_REFS_DATA_KEY = COMPONENT_PROPERTY_REFS_DATA_KEY; exports.COMPONENT_SET_DATA_KEY = COMPONENT_SET_DATA_KEY; exports.COMPONENT_SOURCE_DATA_KEY = COMPONENT_SOURCE_DATA_KEY; exports.CONNECTION_LINE_TYPES = CONNECTION_LINE_TYPES; exports.CSS_ANIMATION_PROPERTIES = CSS_ANIMATION_PROPERTIES; exports.CSS_VARIABLE_DIAGRAM_SCENE_THEME = CSS_VARIABLE_DIAGRAM_SCENE_THEME; exports.CUBIC_BEZIER_PRESETS = _chunk2FHLHZALcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunk26BVFKHUcjs.DEFAULT_ARRANGE_SHORTCUTS; exports.DEFAULT_CURSOR_INACTIVITY_MS = DEFAULT_CURSOR_INACTIVITY_MS; exports.DEFAULT_DIAGRAM_NODE_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT; exports.DEFAULT_DIAGRAM_NODE_WIDTH = DEFAULT_DIAGRAM_NODE_WIDTH; exports.DEFAULT_NODE_HEIGHT = _chunkWADCJ7A7cjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkWADCJ7A7cjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkWADCJ7A7cjs.DEFAULT_PLACEMENT_GAP; exports.DIAGRAM_MARKER_IDS = DIAGRAM_MARKER_IDS; exports.DIAGRAM_RASTER_MAX_SIZE = DIAGRAM_RASTER_MAX_SIZE; exports.DIAGRAM_SCENE_DARK_THEME = DIAGRAM_SCENE_DARK_THEME; exports.DIAGRAM_SCENE_LIGHT_THEME = DIAGRAM_SCENE_LIGHT_THEME; exports.DIAGRAM_SVG_DARK_THEME = DIAGRAM_SVG_DARK_THEME; exports.DIAGRAM_SVG_LIGHT_THEME = DIAGRAM_SVG_LIGHT_THEME; exports.DIAGRAM_TITLE_TARGET = DIAGRAM_TITLE_TARGET; exports.DiagramStream = DiagramStream; exports.INSTANCE_DATA_KEY = INSTANCE_DATA_KEY; exports.LOCKED_DATA_KEY = LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunk477UVMNRcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkKSJLDRHKcjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkIZ4WRXZAcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkBJTCSLF6cjs.PathOpsError; exports.PlanarMap = _chunkKSJLDRHKcjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkIZ4WRXZAcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunk2FHLHZALcjs.SPRING_PRESETS; exports.StreamingLayoutManager = StreamingLayoutManager; exports.TOKEN_BINDINGS_DATA_KEY = TOKEN_BINDINGS_DATA_KEY; exports.TOKEN_MODES_DATA_KEY = TOKEN_MODES_DATA_KEY; exports.addCanvasVariant = addCanvasVariant; exports.addKeyframesAtTime = addKeyframesAtTime; exports.alignNodes = alignNodes; exports.angleToSvgLinearCoords = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkBJTCSLF6cjs.arcToCubics; exports.architectureScene = architectureScene; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkBJTCSLF6cjs.bezierPathArea; exports.bezierPathBounds = _chunkBJTCSLF6cjs.bezierPathBounds; exports.bezierPathLength = _chunkBJTCSLF6cjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkBJTCSLF6cjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkBJTCSLF6cjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkBJTCSLF6cjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkWADCJ7A7cjs.boundsOf; exports.brushstrokeScaleBucket = _chunkSYPFUL5Bcjs.brushstrokeScaleBucket; exports.c4Scene = c4Scene; exports.calculateCursorArrowRotation = calculateCursorArrowRotation; exports.calculateCurvedPath = calculateCurvedPath; exports.calculateDagreReflowDisplacement = calculateDagreReflowDisplacement; exports.calculateDirectionalDisplacement = calculateDirectionalDisplacement; exports.canCombineShapeNodes = canCombineShapeNodes; exports.canOffsetShapeNodes = canOffsetShapeNodes; exports.canOutlineShapeNodeStrokes = canOutlineShapeNodeStrokes; exports.canvasEffectsPool = canvasEffectsPool; exports.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.canvasNodeEffect = canvasNodeEffect; exports.captureCanvasView = captureCanvasView; exports.centerNodes = _chunkWADCJ7A7cjs.centerNodes; exports.centre = _chunkWADCJ7A7cjs.centre; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkBJTCSLF6cjs.closeContour; exports.collectDescendantIds = collectDescendantIds; exports.combineCanvasComponentsAsVariants = combineCanvasComponentsAsVariants; exports.combineShapeNodes = combineShapeNodes; exports.computeDragBounds = computeDragBounds; exports.computeDragBoundsFromPoints = computeDragBoundsFromPoints; exports.computeNodesBoundingBox = computeNodesBoundingBox; exports.computeSnapGuides = computeSnapGuides; exports.connectedDiagramOnly = connectedDiagramOnly; exports.connectedOnly = connectedOnly; exports.contourEnclosesArea = _chunkKSJLDRHKcjs.contourEnclosesArea; exports.contourSignedArea = _chunkBJTCSLF6cjs.contourSignedArea; exports.contoursToPath = _chunkBJTCSLF6cjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkBJTCSLF6cjs.countPathSegments; exports.createAnimationPlayer = _chunk477UVMNRcjs.createAnimationPlayer; exports.createBezierTrajectory = createBezierTrajectory; exports.createCanvasAnimationController = createCanvasAnimationController; exports.createCanvasArrangeController = createCanvasArrangeController; exports.createCanvasAutoLayoutController = createCanvasAutoLayoutController; exports.createCanvasCaptureSurface = createCanvasCaptureSurface; exports.createCanvasCaptureToolProvider = createCanvasCaptureToolProvider; exports.createCanvasComponent = createCanvasComponent; exports.createCanvasComponentsController = createCanvasComponentsController; exports.createCanvasDrawController = createCanvasDrawController; exports.createCanvasEffectsController = createCanvasEffectsController; exports.createCanvasEffectsToolProvider = createCanvasEffectsToolProvider; exports.createCanvasInstance = createCanvasInstance; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = createNodeLookup; exports.cubicBezierAt = _chunk2FHLHZALcjs.cubicBezierAt; exports.cubicPointAt = _chunkIZ4WRXZAcjs.cubicPointAt; exports.cubicsToPathData = _chunkIZ4WRXZAcjs.cubicsToPathData; exports.cutOutPiece = _chunkKSJLDRHKcjs.cutOutPiece; exports.dashContours = _chunkBJTCSLF6cjs.dashContours; exports.defaultEasing = defaultEasing; exports.deleteKeyframes = deleteKeyframes; exports.detachCanvasInstance = detachCanvasInstance; exports.detachTokenBindings = detachTokenBindings; exports.diagramCanvasHeight = diagramCanvasHeight; exports.diagramFileName = diagramFileName; exports.diagramGroupSize = diagramGroupSize; exports.diagramImageSize = diagramImageSize; exports.diagramLayoutBounds = diagramLayoutBounds; exports.diagramMarksBounds = diagramMarksBounds; exports.diagramMarksToSvg = diagramMarksToSvg; exports.diagramRenameOp = diagramRenameOp; exports.diagramTargetLabel = diagramTargetLabel; exports.diagramTextBaseline = diagramTextBaseline; exports.diffOverrideGroups = diffOverrideGroups; exports.distanceToBezierPath = _chunkBJTCSLF6cjs.distanceToBezierPath; exports.distributeNodes = distributeNodes; exports.dividePaths = _chunkBJTCSLF6cjs.dividePaths; exports.dividePolygons = _chunkBJTCSLF6cjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunk2FHLHZALcjs.easingFromInfluence; exports.easingLabel = _chunk2FHLHZALcjs.easingLabel; exports.easingToCss = _chunk2FHLHZALcjs.easingToCss; exports.elasticAt = _chunk2FHLHZALcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkWADCJ7A7cjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkWADCJ7A7cjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunk2FHLHZALcjs.evaluateEasing; exports.evaluateTrack = _chunk477UVMNRcjs.evaluateTrack; exports.excludePaths = _chunkBJTCSLF6cjs.excludePaths; exports.exportCssAnimation = exportCssAnimation; exports.familySceneFromLayout = familySceneFromLayout; exports.findConnectorSnap = findConnectorSnap; exports.findStrokesAtPoint = findStrokesAtPoint; exports.findVariant = findVariant; exports.fitCubicRun = _chunkIZ4WRXZAcjs.fitCubicRun; exports.fitCubicWithTangents = _chunkIZ4WRXZAcjs.fitCubicWithTangents; exports.fitCubics = _chunkIZ4WRXZAcjs.fitCubics; exports.fitFreehandPath = _chunkIZ4WRXZAcjs.fitFreehandPath; exports.fitPathData = _chunkIZ4WRXZAcjs.fitPathData; exports.fitViewportToNodes = fitViewportToNodes; exports.fitViewportToRect = fitViewportToRect; exports.flattenSvgPath = _chunkIZ4WRXZAcjs.flattenSvgPath; exports.flowSide = _chunkWADCJ7A7cjs.flowSide; exports.formatAgentCursorName = formatAgentCursorName; exports.formatAnimationTime = formatAnimationTime; exports.formatNumber = _chunkIZ4WRXZAcjs.formatNumber; exports.formatOklab = _chunkMR3Z4OQIcjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.getAbsolutePosition = getAbsolutePosition; exports.getAgentCardAnchor = getAgentCardAnchor; exports.getAnimatableProperty = getAnimatableProperty; exports.getAnimatedProperties = getAnimatedProperties; exports.getAnimatedValue = getAnimatedValue; exports.getAnimationDuration = getAnimationDuration; exports.getAnimationTrack = getAnimationTrack; exports.getAutoLayout = getAutoLayout; exports.getAutoLayoutGrid = getAutoLayoutGrid; exports.getAutoLayoutInsertTarget = getAutoLayoutInsertTarget; exports.getBindableTokenProperties = getBindableTokenProperties; exports.getBrushedShapeSvg = _chunkDDSO4HS7cjs.getBrushedShapeSvg; exports.getCanvasComponentDragId = getCanvasComponentDragId; exports.getCanvasTokenProperty = getCanvasTokenProperty; exports.getCenteredNodePosition = _chunkWADCJ7A7cjs.getCenteredNodePosition; exports.getChildLayout = getChildLayout; exports.getComponentData = getComponentData; exports.getComponentInstances = getComponentInstances; exports.getComponentPropertyDefs = getComponentPropertyDefs; exports.getComponentPropertyRefs = getComponentPropertyRefs; exports.getComponentSourceId = getComponentSourceId; exports.getCssPropertyAnimations = getCssPropertyAnimations; exports.getCursorTransitionDuration = getCursorTransitionDuration; exports.getDefaultVariant = getDefaultVariant; exports.getEffectiveTokenModes = getEffectiveTokenModes; exports.getFamilyScene = getFamilyScene; exports.getFlowChildren = getFlowChildren; exports.getInstanceData = getInstanceData; exports.getInstanceProperties = getInstanceProperties; exports.getInstanceStatus = getInstanceStatus; exports.getKeyframeTimes = getKeyframeTimes; exports.getLayerName = getLayerName; exports.getLayoutParent = getLayoutParent; exports.getLayoutSizing = getLayoutSizing; exports.getLayoutedNodes = _chunkWADCJ7A7cjs.getLayoutedNodes; exports.getNaturalMovementTiming = getNaturalMovementTiming; exports.getNextVariantValues = getNextVariantValues; exports.getNodeAnimation = getNodeAnimation; exports.getNodeOverrides = getNodeOverrides; exports.getNodeRect = getNodeRect; exports.getNodeShape = getNodeShape; exports.getNodeSize = getNodeSize; exports.getNodeTokenBindings = getNodeTokenBindings; exports.getNodeTokenModes = getNodeTokenModes; exports.getOwningComponent = getOwningComponent; exports.getOwningInstance = getOwningInstance; exports.getResizingNodeRect = getResizingNodeRect; exports.getRootInstance = getRootInstance; exports.getShapeRenderData = _chunkIZ4WRXZAcjs.getShapeRenderData; exports.getShapeSvg = _chunkIZ4WRXZAcjs.getShapeSvg; exports.getTimelineRows = getTimelineRows; exports.getTimelineTicks = getTimelineTicks; exports.getTokenPropertyScope = getTokenPropertyScope; exports.getTokensForProperty = getTokensForProperty; exports.getVariantConflicts = getVariantConflicts; exports.getVariantOptions = getVariantOptions; exports.getVariantSet = getVariantSet; exports.getVariantValues = getVariantValues; exports.gitGraphScene = gitGraphScene; exports.gradientToSvgDef = _chunkIZ4WRXZAcjs.gradientToSvgDef; exports.handlePoint = handlePoint; exports.hasFamilyScene = hasFamilyScene; exports.hasVisibleStroke = hasVisibleStroke; exports.hashString = hashString; exports.hatchPath = _chunkKSJLDRHKcjs.hatchPath; exports.inferResizeHandle = inferResizeHandle; exports.inspectCanvasInstance = inspectCanvasInstance; exports.inspectNodeTokens = inspectNodeTokens; exports.interiorPoint = _chunkKSJLDRHKcjs.interiorPoint; exports.interpolateAnimationValue = _chunk477UVMNRcjs.interpolateAnimationValue; exports.intersectPaths = _chunkBJTCSLF6cjs.intersectPaths; exports.intersectPolygons = _chunkBJTCSLF6cjs.intersectPolygons; exports.invertNodeUpdates = invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunk2FHLHZALcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunk477UVMNRcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunkDDSO4HS7cjs.isBrushedShape; exports.isCanvasComponent = isCanvasComponent; exports.isCanvasComponentSet = isCanvasComponentSet; exports.isCanvasGradient = _chunkIZ4WRXZAcjs.isCanvasGradient; exports.isCanvasInstance = isCanvasInstance; exports.isCssExportExact = isCssExportExact; exports.isEventFromTextInput = isEventFromTextInput; exports.isInsideInstance = isInsideInstance; exports.isKeyframeSelected = isKeyframeSelected; exports.isLocked = isLocked; exports.isMeasureModifierHeld = isMeasureModifierHeld; exports.isNodeAnimated = isNodeAnimated; exports.isShapeDescription = _chunkIZ4WRXZAcjs.isShapeDescription; exports.isShapeNode = isShapeNode; exports.isStraightCubic = _chunkIZ4WRXZAcjs.isStraightCubic; exports.isValidCanvasEdge = isValidCanvasEdge; exports.isValidCanvasNode = isValidCanvasNode; exports.isValidCanvasScene = isValidCanvasScene; exports.isValidUrl = isValidUrl; exports.journeyScene = journeyScene; exports.layoutAll = layoutAll; exports.layoutBounds = layoutBounds; exports.layoutFrame = layoutFrame; exports.layoutUp = layoutUp; exports.layoutUpMany = layoutUpMany; exports.linearPositionTrajectory = linearPositionTrajectory; exports.linearTrajectory = linearTrajectory; exports.listCanvasBrushes = _chunkDDSO4HS7cjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkDDSO4HS7cjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunk26BVFKHUcjs.matchArrangeShortcut; exports.matchSize = matchSize; exports.measureBetween = measureBetween; exports.measureLabel = measureLabel; exports.measureSelection = measureSelection; exports.measureToLine = measureToLine; exports.mergeNodeUpdates = mergeNodeUpdates; exports.mermaidEdgeDash = mermaidEdgeDash; exports.mermaidEdgeMarker = mermaidEdgeMarker; exports.mermaidEdgeWidth = mermaidEdgeWidth; exports.mermaidFlowEdges = mermaidFlowEdges; exports.mermaidFlowNodes = mermaidFlowNodes; exports.mermaidLabelLines = mermaidLabelLines; exports.mermaidMarkerId = mermaidMarkerId; exports.mermaidMovesFromCanvas = mermaidMovesFromCanvas; exports.mermaidNodeMembers = mermaidNodeMembers; exports.mermaidNodePaint = mermaidNodePaint; exports.mermaidShapePaths = mermaidShapePaths; exports.mermaidThumbnailSvg = mermaidThumbnailSvg; exports.mermaidToCanvas = mermaidToCanvas; exports.mermaidToScene = mermaidToScene; exports.mermaidToSvg = mermaidToSvg; exports.mindmapScene = mindmapScene; exports.mixColorsOklab = _chunkMR3Z4OQIcjs.mixColorsOklab; exports.moveKeyframes = moveKeyframes; exports.moveLayoutChild = moveLayoutChild; exports.multiPolygonArea = _chunkBJTCSLF6cjs.multiPolygonArea; exports.multiPolygonBounds = _chunkBJTCSLF6cjs.multiPolygonBounds; exports.nearestHandlePositions = nearestHandlePositions; exports.normalizeBezierPath = _chunkBJTCSLF6cjs.normalizeBezierPath; exports.normalizeKeyframes = _chunk477UVMNRcjs.normalizeKeyframes; exports.offsetPath = _chunkBJTCSLF6cjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkMR3Z4OQIcjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkBJTCSLF6cjs.outlineStroke; exports.overlaps = _chunkWADCJ7A7cjs.overlaps; exports.pageHidden = _chunk477UVMNRcjs.pageHidden; exports.parseCanvasClipboardData = parseCanvasClipboardData; exports.parseCanvasScenes = parseCanvasScenes; exports.parseCssEasing = _chunk2FHLHZALcjs.parseCssEasing; exports.parseCssGradient = _chunkIZ4WRXZAcjs.parseCssGradient; exports.parseKeyframeClipboard = parseKeyframeClipboard; exports.parseMermaidStyles = parseMermaidStyles; exports.parseNodeStyleDeclarations = parseNodeStyleDeclarations; exports.parseOklab = _chunkMR3Z4OQIcjs.parseOklab; exports.parseSvgPath = _chunkIZ4WRXZAcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkBJTCSLF6cjs.pathBoolean; exports.pathBooleanSelect = _chunkBJTCSLF6cjs.pathBooleanSelect; exports.pathDataToPolyline = _chunkDDSO4HS7cjs.pathDataToPolyline; exports.pathToContours = _chunkBJTCSLF6cjs.pathToContours; exports.pathfinder = _chunkKSJLDRHKcjs.pathfinder; exports.pieScene = pieScene; exports.placeBeside = _chunkWADCJ7A7cjs.placeBeside; exports.planarSplit = _chunkBJTCSLF6cjs.planarSplit; exports.playCanvasSceneTransition = playCanvasSceneTransition; exports.playWebAnimations = playWebAnimations; exports.pointInBezierPath = _chunkBJTCSLF6cjs.pointInBezierPath; exports.pointInMultiPolygon = _chunkBJTCSLF6cjs.pointInMultiPolygon; exports.pointInRings = _chunkBJTCSLF6cjs.pointInRings; exports.pointerPenSample = pointerPenSample; exports.polygonArea = _chunkBJTCSLF6cjs.polygonArea; exports.polygonBoolean = _chunkBJTCSLF6cjs.polygonBoolean; exports.polygonToSvgPath = _chunkIZ4WRXZAcjs.polygonToSvgPath; exports.positionToSide = positionToSide; exports.profileAlongPolyline = _chunkDDSO4HS7cjs.profileAlongPolyline; exports.pruneCanvasTokenModes = pruneCanvasTokenModes; exports.pushCanvasInstanceOverrides = pushCanvasInstanceOverrides; exports.quadrantScene = quadrantScene; exports.radarChartSpec = radarChartSpec; exports.radarScene = radarScene; exports.rasterSize = rasterSize; exports.rasterizeSvg = rasterizeSvg; exports.readAnimatableValue = readAnimatableValue; exports.readNodeStyleProperty = readNodeStyleProperty; exports.readOverrideGroup = readOverrideGroup; exports.readStyleSize = readStyleSize; exports.realClock = _chunk477UVMNRcjs.realClock; exports.recordAnimationChanges = recordAnimationChanges; exports.registerFamilyScene = registerFamilyScene; exports.relayoutUpdates = relayoutUpdates; exports.remapPastedNodes = remapPastedNodes; exports.removeCanvasVariant = removeCanvasVariant; exports.removeTrack = removeTrack; exports.renameCanvasVariantProperty = renameCanvasVariantProperty; exports.renameCanvasVariantValue = renameCanvasVariantValue; exports.renderShapeBrushstroke = _chunkDDSO4HS7cjs.renderShapeBrushstroke; exports.reorderNodes = reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkIZ4WRXZAcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunk2FHLHZALcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunk2FHLHZALcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunkMR3Z4OQIcjs.rgbToOklab; exports.ringSignedArea = _chunkBJTCSLF6cjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkBJTCSLF6cjs.segmentBounds; exports.segmentCurvature = _chunkBJTCSLF6cjs.segmentCurvature; exports.segmentDerivative = _chunkBJTCSLF6cjs.segmentDerivative; exports.segmentExtrema = _chunkBJTCSLF6cjs.segmentExtrema; exports.segmentIntersections = _chunkBJTCSLF6cjs.segmentIntersections; exports.segmentLength = _chunkBJTCSLF6cjs.segmentLength; exports.segmentNearest = _chunkBJTCSLF6cjs.segmentNearest; exports.segmentParamAtLength = _chunkBJTCSLF6cjs.segmentParamAtLength; exports.segmentPoint = _chunkBJTCSLF6cjs.segmentPoint; exports.segmentTangent = _chunkBJTCSLF6cjs.segmentTangent; exports.sequenceScene = sequenceScene; exports.serializeCanvasNodes = serializeCanvasNodes; exports.setCanvasComponentProperty = setCanvasComponentProperty; exports.setCanvasInstanceProperties = setCanvasInstanceProperties; exports.setCanvasTokenMode = setCanvasTokenMode; exports.setCanvasVariantProperties = setCanvasVariantProperties; exports.setKeyframe = setKeyframe; exports.setKeyframeEasing = setKeyframeEasing; exports.setMotionPath = setMotionPath; exports.setTrackEnabled = setTrackEnabled; exports.shapeNodeToBezierPath = shapeNodeToBezierPath; exports.shapeNodeToPolygon = shapeNodeToPolygon; exports.shapeToBezierPath = shapeToBezierPath; exports.shapeToPolygon = _chunkIZ4WRXZAcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkIZ4WRXZAcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkBJTCSLF6cjs.splitSegment; exports.springAt = _chunk2FHLHZALcjs.springAt; exports.springSettleMs = _chunk2FHLHZALcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkBJTCSLF6cjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkBJTCSLF6cjs.subSegment; exports.subtractPaths = _chunkBJTCSLF6cjs.subtractPaths; exports.subtractPolygons = _chunkBJTCSLF6cjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkBJTCSLF6cjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = toggleLockNodes; exports.transformBezierPath = _chunkBJTCSLF6cjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkBJTCSLF6cjs.trimSegments; exports.unionPolygons = _chunkBJTCSLF6cjs.unionPolygons; exports.unitePaths = _chunkBJTCSLF6cjs.unitePaths; exports.unlockNodes = unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkDDSO4HS7cjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkDDSO4HS7cjs.validateCanvasBrushPaint; exports.windingNumber = _chunkBJTCSLF6cjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunk477UVMNRcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkBJTCSLF6cjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;
12485
+ exports.ANIMATABLE_PROPERTIES = ANIMATABLE_PROPERTIES; exports.ANIMATION_DATA_KEY = ANIMATION_DATA_KEY; exports.ANIMATION_EASING_LABELS = _chunk2FHLHZALcjs.ANIMATION_EASING_LABELS; exports.ANIMATION_EASING_PRESETS = _chunk2FHLHZALcjs.ANIMATION_EASING_PRESETS; exports.ANIMATION_TIME_EPSILON = _chunk477UVMNRcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunk477UVMNRcjs.AnimationPlayer; exports.BUILTIN_FAMILY_SCENES = BUILTIN_FAMILY_SCENES; exports.CANVAS_CAPTURE_CHROME_SELECTORS = CANVAS_CAPTURE_CHROME_SELECTORS; exports.CANVAS_CAPTURE_OVERLAY_SELECTORS = CANVAS_CAPTURE_OVERLAY_SELECTORS; exports.CANVAS_CAPTURE_VIEWPORT_SELECTOR = CANVAS_CAPTURE_VIEWPORT_SELECTOR; exports.CANVAS_COMPONENT_DRAG_TYPE = CANVAS_COMPONENT_DRAG_TYPE; exports.CANVAS_EFFECT_PLACES = CANVAS_EFFECT_PLACES; exports.CANVAS_GRADIENT_PRESETS = _chunkIZ4WRXZAcjs.CANVAS_GRADIENT_PRESETS; exports.CANVAS_TOKEN_PROPERTIES = CANVAS_TOKEN_PROPERTIES; exports.CARD_INSPECTION_ZONES = CARD_INSPECTION_ZONES; exports.CHILD_LAYOUT_DATA_KEY = CHILD_LAYOUT_DATA_KEY; exports.COMPONENT_DATA_KEY = COMPONENT_DATA_KEY; exports.COMPONENT_OVERRIDES_DATA_KEY = COMPONENT_OVERRIDES_DATA_KEY; exports.COMPONENT_PROPERTY_REFS_DATA_KEY = COMPONENT_PROPERTY_REFS_DATA_KEY; exports.COMPONENT_SET_DATA_KEY = COMPONENT_SET_DATA_KEY; exports.COMPONENT_SOURCE_DATA_KEY = COMPONENT_SOURCE_DATA_KEY; exports.CONNECTION_LINE_TYPES = CONNECTION_LINE_TYPES; exports.CSS_ANIMATION_PROPERTIES = CSS_ANIMATION_PROPERTIES; exports.CSS_VARIABLE_DIAGRAM_SCENE_THEME = CSS_VARIABLE_DIAGRAM_SCENE_THEME; exports.CUBIC_BEZIER_PRESETS = _chunk2FHLHZALcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunk26BVFKHUcjs.DEFAULT_ARRANGE_SHORTCUTS; exports.DEFAULT_CURSOR_INACTIVITY_MS = DEFAULT_CURSOR_INACTIVITY_MS; exports.DEFAULT_DIAGRAM_NODE_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT; exports.DEFAULT_DIAGRAM_NODE_WIDTH = DEFAULT_DIAGRAM_NODE_WIDTH; exports.DEFAULT_NODE_HEIGHT = _chunkWADCJ7A7cjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkWADCJ7A7cjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkWADCJ7A7cjs.DEFAULT_PLACEMENT_GAP; exports.DIAGRAM_MARKER_IDS = DIAGRAM_MARKER_IDS; exports.DIAGRAM_RASTER_MAX_SIZE = DIAGRAM_RASTER_MAX_SIZE; exports.DIAGRAM_SCENE_DARK_THEME = DIAGRAM_SCENE_DARK_THEME; exports.DIAGRAM_SCENE_LIGHT_THEME = DIAGRAM_SCENE_LIGHT_THEME; exports.DIAGRAM_SVG_DARK_THEME = DIAGRAM_SVG_DARK_THEME; exports.DIAGRAM_SVG_LIGHT_THEME = DIAGRAM_SVG_LIGHT_THEME; exports.DIAGRAM_TITLE_TARGET = DIAGRAM_TITLE_TARGET; exports.DiagramStream = DiagramStream; exports.INSTANCE_DATA_KEY = INSTANCE_DATA_KEY; exports.LOCKED_DATA_KEY = LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunk477UVMNRcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkKSJLDRHKcjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkIZ4WRXZAcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkBJTCSLF6cjs.PathOpsError; exports.PlanarMap = _chunkKSJLDRHKcjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkIZ4WRXZAcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunk2FHLHZALcjs.SPRING_PRESETS; exports.StreamingLayoutManager = StreamingLayoutManager; exports.TOKEN_BINDINGS_DATA_KEY = TOKEN_BINDINGS_DATA_KEY; exports.TOKEN_MODES_DATA_KEY = TOKEN_MODES_DATA_KEY; exports.addCanvasVariant = addCanvasVariant; exports.addKeyframesAtTime = addKeyframesAtTime; exports.alignNodes = alignNodes; exports.angleToSvgLinearCoords = _chunkIZ4WRXZAcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkBJTCSLF6cjs.arcToCubics; exports.architectureScene = architectureScene; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkBJTCSLF6cjs.bezierPathArea; exports.bezierPathBounds = _chunkBJTCSLF6cjs.bezierPathBounds; exports.bezierPathLength = _chunkBJTCSLF6cjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkBJTCSLF6cjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkBJTCSLF6cjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkBJTCSLF6cjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkWADCJ7A7cjs.boundsOf; exports.brushstrokeScaleBucket = _chunkSYPFUL5Bcjs.brushstrokeScaleBucket; exports.c4Scene = c4Scene; exports.calculateCursorArrowRotation = calculateCursorArrowRotation; exports.calculateCurvedPath = calculateCurvedPath; exports.calculateDagreReflowDisplacement = calculateDagreReflowDisplacement; exports.calculateDirectionalDisplacement = calculateDirectionalDisplacement; exports.canCombineShapeNodes = canCombineShapeNodes; exports.canOffsetShapeNodes = canOffsetShapeNodes; exports.canOutlineShapeNodeStrokes = canOutlineShapeNodeStrokes; exports.canvasEffectsPool = canvasEffectsPool; exports.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.canvasNodeEffect = canvasNodeEffect; exports.captureCanvasView = captureCanvasView; exports.centerNodes = _chunkWADCJ7A7cjs.centerNodes; exports.centre = _chunkWADCJ7A7cjs.centre; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkBJTCSLF6cjs.closeContour; exports.collectDescendantIds = collectDescendantIds; exports.combineCanvasComponentsAsVariants = combineCanvasComponentsAsVariants; exports.combineShapeNodes = combineShapeNodes; exports.computeDragBounds = computeDragBounds; exports.computeDragBoundsFromPoints = computeDragBoundsFromPoints; exports.computeNodesBoundingBox = computeNodesBoundingBox; exports.computeSnapGuides = computeSnapGuides; exports.connectedDiagramOnly = connectedDiagramOnly; exports.connectedOnly = connectedOnly; exports.contourEnclosesArea = _chunkKSJLDRHKcjs.contourEnclosesArea; exports.contourSignedArea = _chunkBJTCSLF6cjs.contourSignedArea; exports.contoursToPath = _chunkBJTCSLF6cjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkBJTCSLF6cjs.countPathSegments; exports.createAnimationPlayer = _chunk477UVMNRcjs.createAnimationPlayer; exports.createBezierTrajectory = createBezierTrajectory; exports.createCanvasAnimationController = createCanvasAnimationController; exports.createCanvasArrangeController = createCanvasArrangeController; exports.createCanvasAutoLayoutController = createCanvasAutoLayoutController; exports.createCanvasCaptureSurface = createCanvasCaptureSurface; exports.createCanvasCaptureToolProvider = createCanvasCaptureToolProvider; exports.createCanvasComponent = createCanvasComponent; exports.createCanvasComponentsController = createCanvasComponentsController; exports.createCanvasDrawController = createCanvasDrawController; exports.createCanvasEffectsController = createCanvasEffectsController; exports.createCanvasEffectsToolProvider = createCanvasEffectsToolProvider; exports.createCanvasInstance = createCanvasInstance; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = createNodeLookup; exports.cubicBezierAt = _chunk2FHLHZALcjs.cubicBezierAt; exports.cubicPointAt = _chunkIZ4WRXZAcjs.cubicPointAt; exports.cubicsToPathData = _chunkIZ4WRXZAcjs.cubicsToPathData; exports.cutOutPiece = _chunkKSJLDRHKcjs.cutOutPiece; exports.dashContours = _chunkBJTCSLF6cjs.dashContours; exports.defaultEasing = defaultEasing; exports.deleteKeyframes = deleteKeyframes; exports.detachCanvasInstance = detachCanvasInstance; exports.detachTokenBindings = detachTokenBindings; exports.diagramCanvasHeight = diagramCanvasHeight; exports.diagramFileName = diagramFileName; exports.diagramGroupSize = diagramGroupSize; exports.diagramImageSize = diagramImageSize; exports.diagramLayoutBounds = diagramLayoutBounds; exports.diagramMarksBounds = diagramMarksBounds; exports.diagramMarksToSvg = diagramMarksToSvg; exports.diagramRenameOp = diagramRenameOp; exports.diagramTargetLabel = diagramTargetLabel; exports.diagramTextBaseline = diagramTextBaseline; exports.diffOverrideGroups = diffOverrideGroups; exports.distanceToBezierPath = _chunkBJTCSLF6cjs.distanceToBezierPath; exports.distributeNodes = distributeNodes; exports.dividePaths = _chunkBJTCSLF6cjs.dividePaths; exports.dividePolygons = _chunkBJTCSLF6cjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunk2FHLHZALcjs.easingFromInfluence; exports.easingLabel = _chunk2FHLHZALcjs.easingLabel; exports.easingToCss = _chunk2FHLHZALcjs.easingToCss; exports.elasticAt = _chunk2FHLHZALcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkWADCJ7A7cjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkWADCJ7A7cjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunk2FHLHZALcjs.evaluateEasing; exports.evaluateTrack = _chunk477UVMNRcjs.evaluateTrack; exports.excludePaths = _chunkBJTCSLF6cjs.excludePaths; exports.exportCssAnimation = exportCssAnimation; exports.familySceneFromLayout = familySceneFromLayout; exports.findConnectorSnap = findConnectorSnap; exports.findStrokesAtPoint = findStrokesAtPoint; exports.findVariant = findVariant; exports.fitCubicRun = _chunkIZ4WRXZAcjs.fitCubicRun; exports.fitCubicWithTangents = _chunkIZ4WRXZAcjs.fitCubicWithTangents; exports.fitCubics = _chunkIZ4WRXZAcjs.fitCubics; exports.fitFreehandPath = _chunkIZ4WRXZAcjs.fitFreehandPath; exports.fitPathData = _chunkIZ4WRXZAcjs.fitPathData; exports.fitViewportToNodes = fitViewportToNodes; exports.fitViewportToRect = fitViewportToRect; exports.flattenSvgPath = _chunkIZ4WRXZAcjs.flattenSvgPath; exports.flowSide = _chunkWADCJ7A7cjs.flowSide; exports.formatAgentCursorName = formatAgentCursorName; exports.formatAnimationTime = formatAnimationTime; exports.formatNumber = _chunkIZ4WRXZAcjs.formatNumber; exports.formatOklab = _chunkMR3Z4OQIcjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.getAbsolutePosition = getAbsolutePosition; exports.getAgentCardAnchor = getAgentCardAnchor; exports.getAnimatableProperty = getAnimatableProperty; exports.getAnimatedProperties = getAnimatedProperties; exports.getAnimatedValue = getAnimatedValue; exports.getAnimationDuration = getAnimationDuration; exports.getAnimationTrack = getAnimationTrack; exports.getAutoLayout = getAutoLayout; exports.getAutoLayoutGrid = getAutoLayoutGrid; exports.getAutoLayoutInsertTarget = getAutoLayoutInsertTarget; exports.getBindableTokenProperties = getBindableTokenProperties; exports.getBrushedShapeSvg = _chunkKEENUAFNcjs.getBrushedShapeSvg; exports.getCanvasComponentDragId = getCanvasComponentDragId; exports.getCanvasTokenProperty = getCanvasTokenProperty; exports.getCenteredNodePosition = _chunkWADCJ7A7cjs.getCenteredNodePosition; exports.getChildLayout = getChildLayout; exports.getComponentData = getComponentData; exports.getComponentInstances = getComponentInstances; exports.getComponentPropertyDefs = getComponentPropertyDefs; exports.getComponentPropertyRefs = getComponentPropertyRefs; exports.getComponentSourceId = getComponentSourceId; exports.getCssPropertyAnimations = getCssPropertyAnimations; exports.getCursorTransitionDuration = getCursorTransitionDuration; exports.getDefaultVariant = getDefaultVariant; exports.getEffectiveTokenModes = getEffectiveTokenModes; exports.getFamilyScene = getFamilyScene; exports.getFlowChildren = getFlowChildren; exports.getInstanceData = getInstanceData; exports.getInstanceProperties = getInstanceProperties; exports.getInstanceStatus = getInstanceStatus; exports.getKeyframeTimes = getKeyframeTimes; exports.getLayerName = getLayerName; exports.getLayoutParent = getLayoutParent; exports.getLayoutSizing = getLayoutSizing; exports.getLayoutedNodes = _chunkWADCJ7A7cjs.getLayoutedNodes; exports.getNaturalMovementTiming = getNaturalMovementTiming; exports.getNextVariantValues = getNextVariantValues; exports.getNodeAnimation = getNodeAnimation; exports.getNodeOverrides = getNodeOverrides; exports.getNodeRect = getNodeRect; exports.getNodeShape = getNodeShape; exports.getNodeSize = getNodeSize; exports.getNodeTokenBindings = getNodeTokenBindings; exports.getNodeTokenModes = getNodeTokenModes; exports.getOwningComponent = getOwningComponent; exports.getOwningInstance = getOwningInstance; exports.getResizingNodeRect = getResizingNodeRect; exports.getRootInstance = getRootInstance; exports.getShapeRenderData = _chunkIZ4WRXZAcjs.getShapeRenderData; exports.getShapeSvg = _chunkIZ4WRXZAcjs.getShapeSvg; exports.getTimelineRows = getTimelineRows; exports.getTimelineTicks = getTimelineTicks; exports.getTokenPropertyScope = getTokenPropertyScope; exports.getTokensForProperty = getTokensForProperty; exports.getVariantConflicts = getVariantConflicts; exports.getVariantOptions = getVariantOptions; exports.getVariantSet = getVariantSet; exports.getVariantValues = getVariantValues; exports.gitGraphScene = gitGraphScene; exports.gradientToSvgDef = _chunkIZ4WRXZAcjs.gradientToSvgDef; exports.handlePoint = handlePoint; exports.hasFamilyScene = hasFamilyScene; exports.hasVisibleStroke = hasVisibleStroke; exports.hashString = hashString; exports.hatchPath = _chunkKSJLDRHKcjs.hatchPath; exports.inferResizeHandle = inferResizeHandle; exports.inspectCanvasInstance = inspectCanvasInstance; exports.inspectNodeTokens = inspectNodeTokens; exports.interiorPoint = _chunkKSJLDRHKcjs.interiorPoint; exports.interpolateAnimationValue = _chunk477UVMNRcjs.interpolateAnimationValue; exports.intersectPaths = _chunkBJTCSLF6cjs.intersectPaths; exports.intersectPolygons = _chunkBJTCSLF6cjs.intersectPolygons; exports.invertNodeUpdates = invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunk2FHLHZALcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunk477UVMNRcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunkKEENUAFNcjs.isBrushedShape; exports.isCanvasComponent = isCanvasComponent; exports.isCanvasComponentSet = isCanvasComponentSet; exports.isCanvasGradient = _chunkIZ4WRXZAcjs.isCanvasGradient; exports.isCanvasInstance = isCanvasInstance; exports.isCssExportExact = isCssExportExact; exports.isEventFromTextInput = isEventFromTextInput; exports.isInsideInstance = isInsideInstance; exports.isKeyframeSelected = isKeyframeSelected; exports.isLocked = isLocked; exports.isMeasureModifierHeld = isMeasureModifierHeld; exports.isNodeAnimated = isNodeAnimated; exports.isShapeDescription = _chunkIZ4WRXZAcjs.isShapeDescription; exports.isShapeNode = isShapeNode; exports.isStraightCubic = _chunkIZ4WRXZAcjs.isStraightCubic; exports.isValidCanvasEdge = isValidCanvasEdge; exports.isValidCanvasNode = isValidCanvasNode; exports.isValidCanvasScene = isValidCanvasScene; exports.isValidUrl = isValidUrl; exports.journeyScene = journeyScene; exports.layoutAll = layoutAll; exports.layoutBounds = layoutBounds; exports.layoutFrame = layoutFrame; exports.layoutUp = layoutUp; exports.layoutUpMany = layoutUpMany; exports.linearPositionTrajectory = linearPositionTrajectory; exports.linearTrajectory = linearTrajectory; exports.listCanvasBrushes = _chunkKEENUAFNcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkKEENUAFNcjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunk26BVFKHUcjs.matchArrangeShortcut; exports.matchSize = matchSize; exports.measureBetween = measureBetween; exports.measureLabel = measureLabel; exports.measureSelection = measureSelection; exports.measureToLine = measureToLine; exports.mergeNodeUpdates = mergeNodeUpdates; exports.mermaidEdgeDash = mermaidEdgeDash; exports.mermaidEdgeMarker = mermaidEdgeMarker; exports.mermaidEdgeWidth = mermaidEdgeWidth; exports.mermaidFlowEdges = mermaidFlowEdges; exports.mermaidFlowNodes = mermaidFlowNodes; exports.mermaidLabelLines = mermaidLabelLines; exports.mermaidMarkerId = mermaidMarkerId; exports.mermaidMovesFromCanvas = mermaidMovesFromCanvas; exports.mermaidNodeMembers = mermaidNodeMembers; exports.mermaidNodePaint = mermaidNodePaint; exports.mermaidShapePaths = mermaidShapePaths; exports.mermaidThumbnailSvg = mermaidThumbnailSvg; exports.mermaidToCanvas = mermaidToCanvas; exports.mermaidToScene = mermaidToScene; exports.mermaidToSvg = mermaidToSvg; exports.mindmapScene = mindmapScene; exports.mixColorsOklab = _chunkMR3Z4OQIcjs.mixColorsOklab; exports.moveKeyframes = moveKeyframes; exports.moveLayoutChild = moveLayoutChild; exports.multiPolygonArea = _chunkBJTCSLF6cjs.multiPolygonArea; exports.multiPolygonBounds = _chunkBJTCSLF6cjs.multiPolygonBounds; exports.nearestHandlePositions = nearestHandlePositions; exports.normalizeBezierPath = _chunkBJTCSLF6cjs.normalizeBezierPath; exports.normalizeKeyframes = _chunk477UVMNRcjs.normalizeKeyframes; exports.offsetPath = _chunkBJTCSLF6cjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkMR3Z4OQIcjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkBJTCSLF6cjs.outlineStroke; exports.overlaps = _chunkWADCJ7A7cjs.overlaps; exports.pageHidden = _chunk477UVMNRcjs.pageHidden; exports.parseCanvasClipboardData = parseCanvasClipboardData; exports.parseCanvasScenes = parseCanvasScenes; exports.parseCssEasing = _chunk2FHLHZALcjs.parseCssEasing; exports.parseCssGradient = _chunkIZ4WRXZAcjs.parseCssGradient; exports.parseKeyframeClipboard = parseKeyframeClipboard; exports.parseMermaidStyles = parseMermaidStyles; exports.parseNodeStyleDeclarations = parseNodeStyleDeclarations; exports.parseOklab = _chunkMR3Z4OQIcjs.parseOklab; exports.parseSvgPath = _chunkIZ4WRXZAcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkBJTCSLF6cjs.pathBoolean; exports.pathBooleanSelect = _chunkBJTCSLF6cjs.pathBooleanSelect; exports.pathDataToPolyline = _chunkKEENUAFNcjs.pathDataToPolyline; exports.pathToContours = _chunkBJTCSLF6cjs.pathToContours; exports.pathfinder = _chunkKSJLDRHKcjs.pathfinder; exports.pieScene = pieScene; exports.placeBeside = _chunkWADCJ7A7cjs.placeBeside; exports.planarSplit = _chunkBJTCSLF6cjs.planarSplit; exports.playCanvasSceneTransition = playCanvasSceneTransition; exports.playWebAnimations = playWebAnimations; exports.pointInBezierPath = _chunkBJTCSLF6cjs.pointInBezierPath; exports.pointInMultiPolygon = _chunkBJTCSLF6cjs.pointInMultiPolygon; exports.pointInRings = _chunkBJTCSLF6cjs.pointInRings; exports.pointerPenSample = pointerPenSample; exports.polygonArea = _chunkBJTCSLF6cjs.polygonArea; exports.polygonBoolean = _chunkBJTCSLF6cjs.polygonBoolean; exports.polygonToSvgPath = _chunkIZ4WRXZAcjs.polygonToSvgPath; exports.positionToSide = positionToSide; exports.profileAlongPolyline = _chunkKEENUAFNcjs.profileAlongPolyline; exports.pruneCanvasTokenModes = pruneCanvasTokenModes; exports.pushCanvasInstanceOverrides = pushCanvasInstanceOverrides; exports.quadrantScene = quadrantScene; exports.radarChartSpec = radarChartSpec; exports.radarScene = radarScene; exports.rasterSize = rasterSize; exports.rasterizeSvg = rasterizeSvg; exports.readAnimatableValue = readAnimatableValue; exports.readNodeStyleProperty = readNodeStyleProperty; exports.readOverrideGroup = readOverrideGroup; exports.readStyleSize = readStyleSize; exports.realClock = _chunk477UVMNRcjs.realClock; exports.recordAnimationChanges = recordAnimationChanges; exports.registerFamilyScene = registerFamilyScene; exports.relayoutUpdates = relayoutUpdates; exports.remapPastedNodes = remapPastedNodes; exports.removeCanvasVariant = removeCanvasVariant; exports.removeTrack = removeTrack; exports.renameCanvasVariantProperty = renameCanvasVariantProperty; exports.renameCanvasVariantValue = renameCanvasVariantValue; exports.renderShapeBrushstroke = _chunkKEENUAFNcjs.renderShapeBrushstroke; exports.reorderNodes = reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkIZ4WRXZAcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunk2FHLHZALcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunk2FHLHZALcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunkMR3Z4OQIcjs.rgbToOklab; exports.ringSignedArea = _chunkBJTCSLF6cjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkBJTCSLF6cjs.segmentBounds; exports.segmentCurvature = _chunkBJTCSLF6cjs.segmentCurvature; exports.segmentDerivative = _chunkBJTCSLF6cjs.segmentDerivative; exports.segmentExtrema = _chunkBJTCSLF6cjs.segmentExtrema; exports.segmentIntersections = _chunkBJTCSLF6cjs.segmentIntersections; exports.segmentLength = _chunkBJTCSLF6cjs.segmentLength; exports.segmentNearest = _chunkBJTCSLF6cjs.segmentNearest; exports.segmentParamAtLength = _chunkBJTCSLF6cjs.segmentParamAtLength; exports.segmentPoint = _chunkBJTCSLF6cjs.segmentPoint; exports.segmentTangent = _chunkBJTCSLF6cjs.segmentTangent; exports.sequenceScene = sequenceScene; exports.serializeCanvasNodes = serializeCanvasNodes; exports.setCanvasComponentProperty = setCanvasComponentProperty; exports.setCanvasInstanceProperties = setCanvasInstanceProperties; exports.setCanvasTokenMode = setCanvasTokenMode; exports.setCanvasVariantProperties = setCanvasVariantProperties; exports.setKeyframe = setKeyframe; exports.setKeyframeEasing = setKeyframeEasing; exports.setMotionPath = setMotionPath; exports.setTrackEnabled = setTrackEnabled; exports.shapeNodeToBezierPath = shapeNodeToBezierPath; exports.shapeNodeToPolygon = shapeNodeToPolygon; exports.shapeToBezierPath = shapeToBezierPath; exports.shapeToPolygon = _chunkIZ4WRXZAcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkIZ4WRXZAcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkBJTCSLF6cjs.splitSegment; exports.springAt = _chunk2FHLHZALcjs.springAt; exports.springSettleMs = _chunk2FHLHZALcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkBJTCSLF6cjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkBJTCSLF6cjs.subSegment; exports.subtractPaths = _chunkBJTCSLF6cjs.subtractPaths; exports.subtractPolygons = _chunkBJTCSLF6cjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkBJTCSLF6cjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = toggleLockNodes; exports.transformBezierPath = _chunkBJTCSLF6cjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkBJTCSLF6cjs.trimSegments; exports.unionPolygons = _chunkBJTCSLF6cjs.unionPolygons; exports.unitePaths = _chunkBJTCSLF6cjs.unitePaths; exports.unlockNodes = unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkKEENUAFNcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkKEENUAFNcjs.validateCanvasBrushPaint; exports.windingNumber = _chunkBJTCSLF6cjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunk477UVMNRcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkBJTCSLF6cjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;
12486
12486
  //# sourceMappingURL=index.cjs.map