@pixerate/editor 0.126.0 → 0.128.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 (125) hide show
  1. package/dist/agent/index.cjs +2 -2
  2. package/dist/agent/index.d.cts +3 -3
  3. package/dist/agent/index.d.ts +3 -3
  4. package/dist/agent/index.js +1 -1
  5. package/dist/animation/index.d.cts +2 -3
  6. package/dist/animation/index.d.ts +2 -3
  7. package/dist/animation-editor/index.cjs +63 -63
  8. package/dist/animation-editor/index.cjs.map +1 -1
  9. package/dist/animation-editor/index.d.cts +7 -9
  10. package/dist/animation-editor/index.d.ts +7 -9
  11. package/dist/animation-editor/index.js +10 -10
  12. package/dist/{arrange-BlfgJ_wt.d.ts → arrange-BUREmgD9.d.ts} +1 -1
  13. package/dist/{arrange-CD6Gh-pd.d.cts → arrange-CKXK_hf7.d.cts} +1 -1
  14. package/dist/{bezier-CWv6LQal.d.ts → bezier-CvgQiYRg.d.cts} +23 -3
  15. package/dist/{bezier-CBzKKDjl.d.cts → bezier-DP4NnJp3.d.ts} +23 -3
  16. package/dist/{brushTypes-IG7ZZjIN.d.cts → brushTypes-C7N3EBK7.d.cts} +56 -1
  17. package/dist/{brushTypes-IG7ZZjIN.d.ts → brushTypes-C7N3EBK7.d.ts} +56 -1
  18. package/dist/{brushstrokeRender-EELTV7U4.cjs → brushstrokeRender-JNHVEUFG.cjs} +29 -10
  19. package/dist/brushstrokeRender-JNHVEUFG.cjs.map +1 -0
  20. package/dist/{brushstrokeRender-LRV7GXGD.js → brushstrokeRender-SII6MG4R.js} +25 -6
  21. package/dist/brushstrokeRender-SII6MG4R.js.map +1 -0
  22. package/dist/{builtins-DMIsnNst.d.cts → builtins-Cc-bH-3U.d.cts} +3 -2
  23. package/dist/{builtins-B5-ipm5u.d.ts → builtins-ZU1GJnUA.d.ts} +3 -2
  24. package/dist/canvas/index.cjs +435 -38
  25. package/dist/canvas/index.cjs.map +1 -1
  26. package/dist/canvas/index.d.cts +206 -16
  27. package/dist/canvas/index.d.ts +206 -16
  28. package/dist/canvas/index.js +408 -11
  29. package/dist/canvas/index.js.map +1 -1
  30. package/dist/{chunk-MPQAO33O.js → chunk-A6KHMKI4.js} +3 -3
  31. package/dist/{chunk-V5YGPRCZ.cjs → chunk-BEGEWQHD.cjs} +41 -41
  32. package/dist/{chunk-V5YGPRCZ.cjs.map → chunk-BEGEWQHD.cjs.map} +1 -1
  33. package/dist/{chunk-N3FVUOZD.cjs → chunk-BJTCSLF6.cjs} +7 -7
  34. package/dist/{chunk-N3FVUOZD.cjs.map → chunk-BJTCSLF6.cjs.map} +1 -1
  35. package/dist/{chunk-7LQO6OHH.cjs → chunk-DDSO4HS7.cjs} +9 -5
  36. package/dist/chunk-DDSO4HS7.cjs.map +1 -0
  37. package/dist/{chunk-AKU2KQ47.cjs → chunk-DFSZO2B5.cjs} +70 -3
  38. package/dist/chunk-DFSZO2B5.cjs.map +1 -0
  39. package/dist/{chunk-WUDPFWAN.js → chunk-F7Q2NE2Y.js} +3 -3
  40. package/dist/{chunk-GUZ47CJM.cjs → chunk-IZ4WRXZA.cjs} +1 -1
  41. package/dist/{chunk-GUZ47CJM.cjs.map → chunk-IZ4WRXZA.cjs.map} +1 -1
  42. package/dist/{chunk-GLWZXQ4Q.js → chunk-KHNZ6MOU.js} +1 -1
  43. package/dist/chunk-KHNZ6MOU.js.map +1 -0
  44. package/dist/{chunk-GCJWMEYW.cjs → chunk-KSJLDRHK.cjs} +46 -46
  45. package/dist/{chunk-GCJWMEYW.cjs.map → chunk-KSJLDRHK.cjs.map} +1 -1
  46. package/dist/{chunk-2SDGZAJR.js → chunk-LSXXAJG3.js} +70 -3
  47. package/dist/chunk-LSXXAJG3.js.map +1 -0
  48. package/dist/{chunk-QQKTOA4U.cjs → chunk-ORE334I6.cjs} +132 -132
  49. package/dist/{chunk-QQKTOA4U.cjs.map → chunk-ORE334I6.cjs.map} +1 -1
  50. package/dist/{chunk-X6KTSFAE.js → chunk-Q4NBEVV5.js} +2 -2
  51. package/dist/{chunk-FPRIUR4T.js → chunk-ROZFX4QI.js} +3 -3
  52. package/dist/{chunk-J67OLQUQ.js → chunk-SVYE5HIM.js} +7 -3
  53. package/dist/chunk-SVYE5HIM.js.map +1 -0
  54. package/dist/{chunk-O5RVCDEC.cjs → chunk-XLUYXUBD.cjs} +88 -88
  55. package/dist/{chunk-O5RVCDEC.cjs.map → chunk-XLUYXUBD.cjs.map} +1 -1
  56. package/dist/{chunk-FG274FYT.js → chunk-YGJIER2R.js} +2 -2
  57. package/dist/commands/index.cjs +2 -2
  58. package/dist/commands/index.d.cts +3 -3
  59. package/dist/commands/index.d.ts +3 -3
  60. package/dist/commands/index.js +1 -1
  61. package/dist/effects/index.d.cts +6 -38
  62. package/dist/effects/index.d.ts +6 -38
  63. package/dist/evaluate-BbCeF6pt.d.ts +114 -0
  64. package/dist/evaluate-BsxYieLN.d.cts +114 -0
  65. package/dist/{export-Bp7ji2r4.d.cts → export-BkYQvV56.d.cts} +4 -4
  66. package/dist/{export-DVl4fWy5.d.cts → export-Cbr9IqpJ.d.cts} +1 -1
  67. package/dist/{export-C1s4eolZ.d.ts → export-ClPKUB-v.d.ts} +1 -1
  68. package/dist/{export-DAyPY94f.d.ts → export-DHrFJ8r_.d.ts} +4 -4
  69. package/dist/{helpers-i95Ob6Vi.d.cts → helpers-C5aAd44p.d.cts} +67 -4
  70. package/dist/{helpers-BBLlekuM.d.ts → helpers-CPWcK504.d.ts} +67 -4
  71. package/dist/image-editor/index.cjs +606 -606
  72. package/dist/image-editor/index.cjs.map +1 -1
  73. package/dist/image-editor/index.d.cts +12 -14
  74. package/dist/image-editor/index.d.ts +12 -14
  75. package/dist/image-editor/index.js +4 -4
  76. package/dist/{opentype-D80AVmMu.d.cts → opentype-BOewaGQx.d.cts} +1 -1
  77. package/dist/{opentype-14PDI5D2.d.ts → opentype-sQrF3Ry1.d.ts} +1 -1
  78. package/dist/paint/index.d.cts +2 -2
  79. package/dist/paint/index.d.ts +2 -2
  80. package/dist/paint-editor/index.cjs +9 -9
  81. package/dist/paint-editor/index.cjs.map +1 -1
  82. package/dist/paint-editor/index.d.cts +9 -11
  83. package/dist/paint-editor/index.d.ts +9 -11
  84. package/dist/paint-editor/index.js +4 -4
  85. package/dist/{pathfinder-DjISxkUv.d.ts → pathfinder-BwJx0_zM.d.ts} +2 -2
  86. package/dist/{pathfinder-C0UoFypx.d.cts → pathfinder-CnkW7zLI.d.cts} +2 -2
  87. package/dist/{player-cGLrngL_.d.ts → player-BK2kKbfd.d.ts} +1 -1
  88. package/dist/{player-CBtEoU2x.d.cts → player-CmbY3218.d.cts} +1 -1
  89. package/dist/pool-C7GtrL34.d.cts +34 -0
  90. package/dist/pool-CTrtciaN.d.ts +34 -0
  91. package/dist/{rand-CfinE-1c.d.cts → rand-DTXAssW1.d.cts} +4 -4
  92. package/dist/{rand-DtazXGOB.d.ts → rand-pQQ2sJTk.d.ts} +4 -4
  93. package/dist/{svg-DJKriJ4A.d.ts → svg-C4LlFnEw.d.cts} +2 -3
  94. package/dist/{svg-BkRL-fZJ.d.cts → svg-CUzZa0EO.d.ts} +2 -3
  95. package/dist/{tools-CM8Oe8F3.d.ts → tools-AugT22z3.d.ts} +1 -1
  96. package/dist/{tools-DZCv2kX1.d.cts → tools-BpCmUNxb.d.cts} +1 -1
  97. package/dist/vector/index.cjs +918 -918
  98. package/dist/vector/index.cjs.map +1 -1
  99. package/dist/vector/index.d.cts +11 -13
  100. package/dist/vector/index.d.ts +11 -13
  101. package/dist/vector/index.js +11 -11
  102. package/dist/video-editor/index.d.cts +6 -8
  103. package/dist/video-editor/index.d.ts +6 -8
  104. package/dist/{warp-k_PdtXOG.d.ts → warp-CIsO617e.d.ts} +1 -1
  105. package/dist/{warp-CH9MM435.d.cts → warp-D62N_5VK.d.cts} +1 -1
  106. package/package.json +1 -1
  107. package/skills/pixerate-canvas/SKILL.md +30 -2
  108. package/dist/behavior-Ymbld6jL.d.cts +0 -60
  109. package/dist/behavior-Ymbld6jL.d.ts +0 -60
  110. package/dist/brushstrokeRender-EELTV7U4.cjs.map +0 -1
  111. package/dist/brushstrokeRender-LRV7GXGD.js.map +0 -1
  112. package/dist/chunk-2SDGZAJR.js.map +0 -1
  113. package/dist/chunk-7LQO6OHH.cjs.map +0 -1
  114. package/dist/chunk-AKU2KQ47.cjs.map +0 -1
  115. package/dist/chunk-GLWZXQ4Q.js.map +0 -1
  116. package/dist/chunk-J67OLQUQ.js.map +0 -1
  117. package/dist/evaluate-2S3vSPLy.d.cts +0 -55
  118. package/dist/evaluate-CfmT6xA3.d.ts +0 -55
  119. package/dist/gradient-KDfCvhuj.d.cts +0 -66
  120. package/dist/gradient-KDfCvhuj.d.ts +0 -66
  121. /package/dist/{chunk-MPQAO33O.js.map → chunk-A6KHMKI4.js.map} +0 -0
  122. /package/dist/{chunk-WUDPFWAN.js.map → chunk-F7Q2NE2Y.js.map} +0 -0
  123. /package/dist/{chunk-X6KTSFAE.js.map → chunk-Q4NBEVV5.js.map} +0 -0
  124. /package/dist/{chunk-FPRIUR4T.js.map → chunk-ROZFX4QI.js.map} +0 -0
  125. /package/dist/{chunk-FG274FYT.js.map → chunk-YGJIER2R.js.map} +0 -0
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkGCJWMEYWcjs = require('../chunk-GCJWMEYW.cjs');
9
+ var _chunkKSJLDRHKcjs = require('../chunk-KSJLDRHK.cjs');
10
10
 
11
11
 
12
12
 
@@ -50,7 +50,8 @@ var _chunkII77MLHNcjs = require('../chunk-II77MLHN.cjs');
50
50
 
51
51
 
52
52
 
53
- var _chunk7LQO6OHHcjs = require('../chunk-7LQO6OHH.cjs');
53
+
54
+ var _chunkDDSO4HS7cjs = require('../chunk-DDSO4HS7.cjs');
54
55
 
55
56
 
56
57
 
@@ -84,6 +85,9 @@ var _chunk26BVFKHUcjs = require('../chunk-26BVFKHU.cjs');
84
85
  var _chunkEI2MOVQ3cjs = require('../chunk-EI2MOVQ3.cjs');
85
86
 
86
87
 
88
+ var _chunkW6QTLHZ3cjs = require('../chunk-W6QTLHZ3.cjs');
89
+
90
+
87
91
 
88
92
  var _chunkVJUVNERTcjs = require('../chunk-VJUVNERT.cjs');
89
93
 
@@ -153,7 +157,11 @@ require('../chunk-XP5IUZUO.cjs');
153
157
 
154
158
 
155
159
 
156
- var _chunkN3FVUOZDcjs = require('../chunk-N3FVUOZD.cjs');
160
+ var _chunkBJTCSLF6cjs = require('../chunk-BJTCSLF6.cjs');
161
+
162
+
163
+
164
+
157
165
 
158
166
 
159
167
 
@@ -176,11 +184,14 @@ var _chunkN3FVUOZDcjs = require('../chunk-N3FVUOZD.cjs');
176
184
 
177
185
 
178
186
 
187
+ var _chunkIZ4WRXZAcjs = require('../chunk-IZ4WRXZA.cjs');
179
188
 
180
189
 
181
190
 
182
191
 
183
- var _chunkGUZ47CJMcjs = require('../chunk-GUZ47CJM.cjs');
192
+
193
+ var _chunkJODTP4DPcjs = require('../chunk-JODTP4DP.cjs');
194
+ require('../chunk-RIWPYSKU.cjs');
184
195
 
185
196
 
186
197
 
@@ -1599,6 +1610,8 @@ function cloneScene(scene) {
1599
1610
  viewport: { x: scene.viewport.x, y: scene.viewport.y, zoom: scene.viewport.zoom }
1600
1611
  };
1601
1612
  if (scene.nodeIds) copy.nodeIds = [...scene.nodeIds];
1613
+ const t = scene.transition;
1614
+ if (t && typeof t.effect === "string" && t.effect) copy.transition = JSON.parse(JSON.stringify(t));
1602
1615
  return copy;
1603
1616
  }
1604
1617
  function parseCanvasScenes(input) {
@@ -1815,18 +1828,18 @@ var BOOLEAN_FOR = {
1815
1828
  exclude: "xor"
1816
1829
  };
1817
1830
  function isShapeNode(node) {
1818
- return !!node && _chunkGUZ47CJMcjs.isShapeDescription.call(void 0, _optionalChain([node, 'access', _55 => _55.data, 'optionalAccess', _56 => _56[SHAPE_DATA_KEY]]));
1831
+ return !!node && _chunkIZ4WRXZAcjs.isShapeDescription.call(void 0, _optionalChain([node, 'access', _55 => _55.data, 'optionalAccess', _56 => _56[SHAPE_DATA_KEY]]));
1819
1832
  }
1820
1833
  function getNodeShape(node) {
1821
1834
  const shape = _optionalChain([node, 'optionalAccess', _57 => _57.data, 'optionalAccess', _58 => _58[SHAPE_DATA_KEY]]);
1822
- return _chunkGUZ47CJMcjs.isShapeDescription.call(void 0, shape) ? shape : null;
1835
+ return _chunkIZ4WRXZAcjs.isShapeDescription.call(void 0, shape) ? shape : null;
1823
1836
  }
1824
1837
  function shapeNodeToPolygon(node, lookup, options = {}) {
1825
1838
  const shape = getNodeShape(node);
1826
1839
  if (!shape) return null;
1827
1840
  const size2 = getNodeSize(node, options);
1828
1841
  const origin = node.parentId && lookup ? getAbsolutePosition(node, lookup) : node.position;
1829
- const { rings, fillRule } = _chunkGUZ47CJMcjs.shapeToPolygon.call(void 0, shape, size2, { tolerance: options.tolerance });
1842
+ const { rings, fillRule } = _chunkIZ4WRXZAcjs.shapeToPolygon.call(void 0, shape, size2, { tolerance: options.tolerance });
1830
1843
  return {
1831
1844
  rings: rings.map((ring) => ring.map(([x, y]) => [x + origin.x, y + origin.y])),
1832
1845
  fillRule
@@ -1835,14 +1848,14 @@ function shapeNodeToPolygon(node, lookup, options = {}) {
1835
1848
  function shapeToBezierPath(shape, size2) {
1836
1849
  const { width: w, height: h } = size2;
1837
1850
  if (!(w > 0) || !(h > 0)) return { path: [], fillRule: "nonzero" };
1838
- const svg = _chunkGUZ47CJMcjs.getShapeSvg.call(void 0, { ...shape, rotation: 0 }, size2);
1839
- let path = _chunkN3FVUOZDcjs.toBezierPath.call(void 0, svg.d);
1851
+ const svg = _chunkIZ4WRXZAcjs.getShapeSvg.call(void 0, { ...shape, rotation: 0 }, size2);
1852
+ let path = _chunkBJTCSLF6cjs.toBezierPath.call(void 0, svg.d);
1840
1853
  if (shape.kind === "path" && shape.viewBox) {
1841
1854
  const vb = shape.viewBox;
1842
1855
  if (vb.length === 4 && vb.every(Number.isFinite) && vb[2] > 0 && vb[3] > 0) {
1843
1856
  const sx = w / vb[2];
1844
1857
  const sy = h / vb[3];
1845
- path = _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, [sx, 0, 0, sy, -vb[0] * sx, -vb[1] * sy]);
1858
+ path = _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [sx, 0, 0, sy, -vb[0] * sx, -vb[1] * sy]);
1846
1859
  }
1847
1860
  }
1848
1861
  const deg = _nullishCoalesce(shape.rotation, () => ( 0));
@@ -1853,7 +1866,7 @@ function shapeToBezierPath(shape, size2) {
1853
1866
  const cx = w / 2;
1854
1867
  const cy = h / 2;
1855
1868
  const m = [cos, sin, -sin, cos, cx - cx * cos + cy * sin, cy - cx * sin - cy * cos];
1856
- path = _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, m);
1869
+ path = _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, m);
1857
1870
  }
1858
1871
  return { path, fillRule: svg.fillRule };
1859
1872
  }
@@ -1863,7 +1876,7 @@ function shapeNodeToBezierPath(node, lookup, options = {}) {
1863
1876
  const size2 = getNodeSize(node, options);
1864
1877
  const origin = node.parentId && lookup ? getAbsolutePosition(node, lookup) : node.position;
1865
1878
  const { path, fillRule } = shapeToBezierPath(shape, size2);
1866
- return { path: _chunkN3FVUOZDcjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, origin.x, origin.y]), fillRule };
1879
+ return { path: _chunkBJTCSLF6cjs.transformBezierPath.call(void 0, path, [1, 0, 0, 1, origin.x, origin.y]), fillRule };
1867
1880
  }
1868
1881
  var idCounter = 0;
1869
1882
  function defaultId2(index) {
@@ -1916,7 +1929,7 @@ function combineShapeNodes(nodes, ids, operation, options = {}) {
1916
1929
  const operands = ordered.map((node) => shapeNodeToBezierPath(node, lookup, options));
1917
1930
  const pathOptions = { epsilon: options.epsilon, onFallback: options.onFallback, fallbackTolerance: options.tolerance };
1918
1931
  if (operation === "divide") {
1919
- const result = _chunkN3FVUOZDcjs.dividePaths.call(void 0, operands, pathOptions);
1932
+ const result = _chunkBJTCSLF6cjs.dividePaths.call(void 0, operands, pathOptions);
1920
1933
  report = result;
1921
1934
  for (const piece of result.pieces) {
1922
1935
  const source = ordered[piece.operands[piece.operands.length - 1]];
@@ -1924,7 +1937,7 @@ function combineShapeNodes(nodes, ids, operation, options = {}) {
1924
1937
  if (node) created.push(node);
1925
1938
  }
1926
1939
  } else {
1927
- const result = _chunkN3FVUOZDcjs.pathBoolean.call(void 0, BOOLEAN_FOR[operation], operands, pathOptions);
1940
+ const result = _chunkBJTCSLF6cjs.pathBoolean.call(void 0, BOOLEAN_FOR[operation], operands, pathOptions);
1928
1941
  report = result;
1929
1942
  const node = buildPathNode(result.path, pickSource(), createId(0), buildOptions);
1930
1943
  if (node) created.push(node);
@@ -1932,8 +1945,8 @@ function combineShapeNodes(nodes, ids, operation, options = {}) {
1932
1945
  } else {
1933
1946
  report = { engine: "polygon" };
1934
1947
  const operands = ordered.map((node) => shapeNodeToPolygon(node, lookup, options));
1935
- const write = (polygon2) => _chunkN3FVUOZDcjs.toBezierPath.call(void 0,
1936
- _chunkGUZ47CJMcjs.polygonToSvgPath.call(void 0, polygon2, {
1948
+ const write = (polygon2) => _chunkBJTCSLF6cjs.toBezierPath.call(void 0,
1949
+ _chunkIZ4WRXZAcjs.polygonToSvgPath.call(void 0, polygon2, {
1937
1950
  precision: 9,
1938
1951
  simplify: options.simplify,
1939
1952
  curves: _nullishCoalesce(options.curves, () => ( "fit")),
@@ -1942,13 +1955,13 @@ function combineShapeNodes(nodes, ids, operation, options = {}) {
1942
1955
  })
1943
1956
  );
1944
1957
  if (operation === "divide") {
1945
- for (const piece of _chunkN3FVUOZDcjs.dividePolygons.call(void 0, operands, { epsilon: options.epsilon })) {
1958
+ for (const piece of _chunkBJTCSLF6cjs.dividePolygons.call(void 0, operands, { epsilon: options.epsilon })) {
1946
1959
  const source = ordered[piece.operands[piece.operands.length - 1]];
1947
1960
  const node = buildPathNode(write([piece.polygon]), source, createId(created.length), buildOptions);
1948
1961
  if (node) created.push(node);
1949
1962
  }
1950
1963
  } else {
1951
- const result = _chunkN3FVUOZDcjs.polygonBoolean.call(void 0, BOOLEAN_FOR[operation], operands, { epsilon: options.epsilon });
1964
+ const result = _chunkBJTCSLF6cjs.polygonBoolean.call(void 0, BOOLEAN_FOR[operation], operands, { epsilon: options.epsilon });
1952
1965
  const node = buildPathNode(write(result), pickSource(), createId(0), buildOptions);
1953
1966
  if (node) created.push(node);
1954
1967
  }
@@ -1965,12 +1978,12 @@ function combineShapeNodes(nodes, ids, operation, options = {}) {
1965
1978
  return done2;
1966
1979
  }
1967
1980
  function buildPathNode(path, source, id, options) {
1968
- const bounds = _chunkN3FVUOZDcjs.bezierPathBounds.call(void 0, path);
1981
+ const bounds = _chunkBJTCSLF6cjs.bezierPathBounds.call(void 0, path);
1969
1982
  if (!bounds) return null;
1970
1983
  const width = bounds.maxX - bounds.minX;
1971
1984
  const height = bounds.maxY - bounds.minY;
1972
1985
  if (!(width > 0) || !(height > 0)) return null;
1973
- const d = _chunkN3FVUOZDcjs.bezierPathToSvg.call(void 0, path, { precision: _nullishCoalesce(options.precision, () => ( 3)), offset: { x: -bounds.minX, y: -bounds.minY } });
1986
+ const d = _chunkBJTCSLF6cjs.bezierPathToSvg.call(void 0, path, { precision: _nullishCoalesce(options.precision, () => ( 3)), offset: { x: -bounds.minX, y: -bounds.minY } });
1974
1987
  if (!d) return null;
1975
1988
  const sourceShape = getNodeShape(source);
1976
1989
  const shape = {
@@ -2102,7 +2115,7 @@ function offsetShapeNodes(nodes, ids, distance, options = {}) {
2102
2115
  for (const id of check.shapeIds) {
2103
2116
  const node = lookup.get(id);
2104
2117
  const outline = shapeNodeToBezierPath(node, lookup, options);
2105
- const path = _chunkN3FVUOZDcjs.offsetPath.call(void 0, outline.path, distance, {
2118
+ const path = _chunkBJTCSLF6cjs.offsetPath.call(void 0, outline.path, distance, {
2106
2119
  join: options.join,
2107
2120
  miterLimit: options.miterLimit,
2108
2121
  fillRule: outline.fillRule,
@@ -2138,7 +2151,7 @@ function outlineShapeNodeStrokes(nodes, ids, options = {}) {
2138
2151
  const node = lookup.get(id);
2139
2152
  const shape = getNodeShape(node);
2140
2153
  const outline = shapeNodeToBezierPath(node, lookup, options);
2141
- const path = _chunkN3FVUOZDcjs.outlineStroke.call(void 0, outline.path, {
2154
+ const path = _chunkBJTCSLF6cjs.outlineStroke.call(void 0, outline.path, {
2142
2155
  width: _nullishCoalesce(_nullishCoalesce(options.width, () => ( shape.strokeWidth)), () => ( 1)),
2143
2156
  join: options.join,
2144
2157
  cap: options.cap,
@@ -4177,7 +4190,7 @@ function withStyle(node, prop, value, unitless = false) {
4177
4190
  }
4178
4191
  function shapeOf(node) {
4179
4192
  const shape = _optionalChain([node, 'access', _161 => _161.data, 'optionalAccess', _162 => _162.shape]);
4180
- return _chunkGUZ47CJMcjs.isShapeDescription.call(void 0, shape) ? shape : null;
4193
+ return _chunkIZ4WRXZAcjs.isShapeDescription.call(void 0, shape) ? shape : null;
4181
4194
  }
4182
4195
  function withShape(node, key, value) {
4183
4196
  const shape = shapeOf(node);
@@ -4584,8 +4597,8 @@ function motionPathPoint(node, progress) {
4584
4597
  const path = _optionalChain([getNodeAnimation, 'call', _173 => _173(node), 'optionalAccess', _174 => _174.motionPath]);
4585
4598
  if (!path || typeof path.d !== "string") return null;
4586
4599
  try {
4587
- const length = _chunkN3FVUOZDcjs.bezierPathLength.call(void 0, path.d);
4588
- return _chunkN3FVUOZDcjs.bezierPathPointAtLength.call(void 0, path.d, Math.min(1, Math.max(0, progress)) * length);
4600
+ const length = _chunkBJTCSLF6cjs.bezierPathLength.call(void 0, path.d);
4601
+ return _chunkBJTCSLF6cjs.bezierPathPointAtLength.call(void 0, path.d, Math.min(1, Math.max(0, progress)) * length);
4589
4602
  } catch (e5) {
4590
4603
  return null;
4591
4604
  }
@@ -7975,11 +7988,11 @@ function createCanvasComponentsController(options) {
7975
7988
  },
7976
7989
  canResetOverrides(id) {
7977
7990
  const at = target(id);
7978
- const info = at ? inspectCanvasInstance(nodes(), at) : void 0;
7979
- if (!info) return "Select an instance or a layer inside one.";
7980
- const changedProps = !info.nested && info.properties.some((p) => p.value !== p.default);
7981
- const own = info.id === at ? info.overrides.length > 0 : getNodeOverrides(nodes().find((n3) => n3.id === at)).length > 0;
7982
- return own || info.id === at && changedProps ? true : "No overrides to reset.";
7991
+ const info2 = at ? inspectCanvasInstance(nodes(), at) : void 0;
7992
+ if (!info2) return "Select an instance or a layer inside one.";
7993
+ const changedProps = !info2.nested && info2.properties.some((p) => p.value !== p.default);
7994
+ const own = info2.id === at ? info2.overrides.length > 0 : getNodeOverrides(nodes().find((n3) => n3.id === at)).length > 0;
7995
+ return own || info2.id === at && changedProps ? true : "No overrides to reset.";
7983
7996
  },
7984
7997
  /** Push the (outermost) instance's overrides to its main component. */
7985
7998
  pushOverrides(id) {
@@ -8210,7 +8223,7 @@ function strokePointsToPathData(points, options = {}) {
8210
8223
  const [p0, p1] = points;
8211
8224
  return `M ${p0[0]} ${p0[1]} L ${p1[0]} ${p1[1]}`;
8212
8225
  }
8213
- const fitted = _chunkGUZ47CJMcjs.fitFreehandPath.call(void 0, points, options);
8226
+ const fitted = _chunkIZ4WRXZAcjs.fitFreehandPath.call(void 0, points, options);
8214
8227
  return fitted.length > 0 ? fitted : `M ${points[0][0]} ${points[0][1]}`;
8215
8228
  }
8216
8229
  function freehandBrushstroke(brush, points, samples, profileLength = 32) {
@@ -8218,12 +8231,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
8218
8231
  if (!samples || samples.length !== points.length) return out;
8219
8232
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
8220
8233
  if (samples.some((s) => finite2(s.pressure))) {
8221
- const pressure = _chunk7LQO6OHHcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
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);
8222
8235
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
8223
8236
  }
8224
8237
  for (const key of ["tiltX", "tiltY"]) {
8225
8238
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
8226
- out[key] = _chunk7LQO6OHHcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
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);
8227
8240
  }
8228
8241
  return out;
8229
8242
  }
@@ -8263,7 +8276,12 @@ function strokeToShapeNode(stroke, options = {}) {
8263
8276
  strokeLinecap: _nullishCoalesce(stroke.style.cap, () => ( "round")),
8264
8277
  strokeLinejoin: _nullishCoalesce(stroke.style.join, () => ( "round")),
8265
8278
  ...strokeGradient ? { strokeGradient } : {},
8266
- ...stroke.style.brush !== void 0 ? { brush: freehandBrushstroke(stroke.style.brush, localPoints, stroke.samples, options.profileLength) } : {},
8279
+ ...stroke.style.brush !== void 0 ? {
8280
+ brush: {
8281
+ ...freehandBrushstroke(stroke.style.brush, localPoints, stroke.samples, options.profileLength),
8282
+ ...stroke.style.paint !== void 0 ? { paint: stroke.style.paint } : {}
8283
+ }
8284
+ } : {},
8267
8285
  fill: "none"
8268
8286
  },
8269
8287
  tool: stroke.tool
@@ -8283,7 +8301,7 @@ function findStrokesAtPoint(point, nodes, radius = 12) {
8283
8301
  }
8284
8302
  const localPoint = [point[0] - rect2.x, point[1] - rect2.y];
8285
8303
  try {
8286
- const dist = _chunkN3FVUOZDcjs.distanceToBezierPath.call(void 0, shape.d, localPoint);
8304
+ const dist = _chunkBJTCSLF6cjs.distanceToBezierPath.call(void 0, shape.d, localPoint);
8287
8305
  if (dist <= effectiveRadius) {
8288
8306
  matches2.push(node);
8289
8307
  }
@@ -8432,7 +8450,11 @@ function createCanvasDrawController(options) {
8432
8450
  if ((input.pressure || input.tiltX || input.tiltY) && style.brush === void 0) {
8433
8451
  throw new Error("pressure and tilt profiles only shape brushed strokes: pass a brush too (see canvas.listBrushes).");
8434
8452
  }
8435
- if (style.brush !== void 0) await _chunk7LQO6OHHcjs.validateCanvasBrush.call(void 0, style.brush);
8453
+ if (style.paint !== void 0 && style.brush === void 0) {
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
+ }
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);
8436
8458
  const id = _nullishCoalesce(_optionalChain([options, 'access', _318 => _318.generateNodeId, 'optionalCall', _319 => _319()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8437
8459
  const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _320 => _320.drawOptions, 'optionalAccess', _321 => _321.streamline]), () => ( 0.35))) : [...points];
8438
8460
  const node = strokeToShapeNode(
@@ -8512,7 +8534,7 @@ function createCanvasDrawController(options) {
8512
8534
  eraseAt,
8513
8535
  drawStroke,
8514
8536
  /** The dry paint presets a stroke can be brushed with (loads the paint engine). */
8515
- listBrushes: _chunk7LQO6OHHcjs.listCanvasBrushes
8537
+ listBrushes: _chunkDDSO4HS7cjs.listCanvasBrushes
8516
8538
  };
8517
8539
  }
8518
8540
  function computeDragBounds(start, current, modifiers = {}) {
@@ -11602,6 +11624,381 @@ function createCanvasCaptureToolProvider(options) {
11602
11624
  });
11603
11625
  }
11604
11626
 
11627
+ // src/canvas/effects.ts
11628
+ var CANVAS_EFFECT_PLACES = {
11629
+ /** Paints a shape's inside. */
11630
+ fill: ["generator", "interactive"],
11631
+ /** Draws over a node's box. */
11632
+ overlay: ["overlay", "title", "interactive", "generator"],
11633
+ transition: ["transition"]
11634
+ };
11635
+ function canvasNodeEffect(node) {
11636
+ const shape = _optionalChain([node, 'access', _488 => _488.data, 'optionalAccess', _489 => _489.shape]);
11637
+ return _chunkIZ4WRXZAcjs.isShapeDescription.call(void 0, shape) ? shape.effect : void 0;
11638
+ }
11639
+ function createCanvasEffectsController(options) {
11640
+ const slot = new (0, _chunkJODTP4DPcjs.EffectsSlot)();
11641
+ if (options.effects) slot.set(options.effects);
11642
+ const describe = async (effect, place2) => {
11643
+ const d = await slot.require().describe(effect);
11644
+ const allowed = CANVAS_EFFECT_PLACES[place2];
11645
+ if (d.kind === "motion" || !d.uses.some((u) => allowed.includes(u))) {
11646
+ const where = place2 === "transition" ? "a scene transition" : place2 === "fill" ? "a fill" : "an overlay";
11647
+ throw new (0, _chunkJODTP4DPcjs.EffectUnsupportedError)(`"${d.id}" (${d.name}) is a ${d.uses.join(" / ")} effect and cannot be ${where}, which takes ${allowed.join(" or ")} effects; search_effects with use "${allowed[0]}" lists ones that fit.`, d.id);
11648
+ }
11649
+ return d;
11650
+ };
11651
+ const shapeNode = (id) => {
11652
+ const node = options.getNodes().find((n3) => n3.id === id);
11653
+ if (!node) throw new Error(`There is no node "${id}"; the nodes are ${options.getNodes().map((n3) => `"${n3.id}"`).slice(0, 20).join(", ") || "none"}.`);
11654
+ const shape = _optionalChain([node, 'access', _490 => _490.data, 'optionalAccess', _491 => _491.shape]);
11655
+ if (!_chunkIZ4WRXZAcjs.isShapeDescription.call(void 0, shape)) throw new Error(`Node "${id}" is not a shape; effects draw on shape nodes (data.shape).`);
11656
+ return { node, shape };
11657
+ };
11658
+ const commit = (label, next) => {
11659
+ const before = options.getNodes();
11660
+ if (options.history) options.history.execute({ name: label, execute: () => options.setNodes(next), undo: () => options.setNodes(before), redo: () => options.setNodes(next) });
11661
+ else options.setNodes(next);
11662
+ };
11663
+ const withEffect = (id, effect) => options.getNodes().map((n3) => {
11664
+ if (n3.id !== id) return n3;
11665
+ const shape = { ...n3.data.shape };
11666
+ if (effect) shape.effect = effect;
11667
+ else delete shape.effect;
11668
+ return { ...n3, data: { ...n3.data, shape } };
11669
+ });
11670
+ const mergeValues = (d, was, values) => {
11671
+ const base = { ...was };
11672
+ const given = {};
11673
+ for (const [k, v] of Object.entries(values)) {
11674
+ if (v !== null) given[k] = v;
11675
+ else if (k in d.controls.properties) base[k] = d.defaults[k];
11676
+ else throw new Error(`"${k}" is not a control of "${d.id}"; its controls are ${Object.keys(d.controls.properties).join(", ")}.`);
11677
+ }
11678
+ return { ...base, ..._chunkJODTP4DPcjs.resolveEffectValues.call(void 0, { ...d, defaults: base }, given) };
11679
+ };
11680
+ return {
11681
+ /** The provider slot. */
11682
+ effects: slot,
11683
+ get effectsProvider() {
11684
+ return slot.provider;
11685
+ },
11686
+ /** Registers (or with `null` removes) the effects provider. */
11687
+ setEffectsProvider(provider) {
11688
+ slot.set(provider);
11689
+ },
11690
+ /** Registers `provider` and returns a function that removes it again. */
11691
+ useEffects(provider) {
11692
+ return slot.use(provider);
11693
+ },
11694
+ /** The shape nodes that carry effects (or one node's). */
11695
+ list(nodeId) {
11696
+ return options.getNodes().filter((n3) => !nodeId || n3.id === nodeId).map((n3) => ({ nodeId: n3.id, effect: canvasNodeEffect(n3) })).filter((e) => !!e.effect);
11697
+ },
11698
+ /**
11699
+ * Draws a provider effect on a shape node: `fill` paints its inside (generators), `overlay`
11700
+ * draws over its box (overlays, titles, interactive effects). Replaces any effect it had. One
11701
+ * undoable step. Returns the effect.
11702
+ */
11703
+ async applyNodeEffect(nodeId, effect, opts = {}) {
11704
+ shapeNode(nodeId);
11705
+ const mode = _nullishCoalesce(opts.mode, () => ( "fill"));
11706
+ const d = await describe(effect, mode);
11707
+ if (opts.opacity !== void 0 && !(opts.opacity >= 0 && opts.opacity <= 1)) throw new Error("opacity must be from 0 to 1.");
11708
+ const next = { effect: d.id, provider: slot.require().id, name: d.name, values: _chunkJODTP4DPcjs.resolveEffectValues.call(void 0, d, opts.values), mode, ...opts.opacity !== void 0 && opts.opacity !== 1 ? { opacity: opts.opacity } : {} };
11709
+ commit(`Add effect ${d.name}`, withEffect(nodeId, next));
11710
+ return next;
11711
+ },
11712
+ /** Changes a node's effect: `values` merged (`null` resets), `mode`, `opacity`, `playing`. One undoable step. */
11713
+ async updateNodeEffect(nodeId, changes) {
11714
+ const { shape } = shapeNode(nodeId);
11715
+ const was = shape.effect;
11716
+ if (!was) throw new Error(`Node "${nodeId}" has no effect; add one with apply_effect.`);
11717
+ const next = { ...was };
11718
+ if (changes.values || changes.mode) {
11719
+ const d = await describe(was.effect, _nullishCoalesce(changes.mode, () => ( was.mode)));
11720
+ if (changes.values) next.values = mergeValues(d, was.values, changes.values);
11721
+ if (changes.mode) next.mode = changes.mode;
11722
+ } else slot.require();
11723
+ if (changes.opacity !== void 0) {
11724
+ if (!(changes.opacity >= 0 && changes.opacity <= 1)) throw new Error("opacity must be from 0 to 1.");
11725
+ if (changes.opacity === 1) delete next.opacity;
11726
+ else next.opacity = changes.opacity;
11727
+ }
11728
+ if (changes.playing !== void 0) {
11729
+ if (changes.playing) delete next.playing;
11730
+ else next.playing = false;
11731
+ }
11732
+ commit(`Change effect ${_nullishCoalesce(was.name, () => ( was.effect))}`, withEffect(nodeId, next));
11733
+ return next;
11734
+ },
11735
+ /** Removes a node's effect (works without a provider). One undoable step. */
11736
+ removeNodeEffect(nodeId) {
11737
+ const { shape } = shapeNode(nodeId);
11738
+ if (!shape.effect) throw new Error(`Node "${nodeId}" has no effect.`);
11739
+ commit(`Remove effect ${_nullishCoalesce(shape.effect.name, () => ( shape.effect.effect))}`, withEffect(nodeId, void 0));
11740
+ return shape.effect;
11741
+ },
11742
+ /** The scenes, in order (empty without a Scenes store). */
11743
+ scenes() {
11744
+ return _nullishCoalesce(_optionalChain([options, 'access', _492 => _492.scenes, 'optionalAccess', _493 => _493.getState, 'call', _494 => _494(), 'access', _495 => _495.scenes]), () => ( []));
11745
+ },
11746
+ /** The transition into a scene, if it has one. */
11747
+ sceneTransition(sceneId) {
11748
+ return _optionalChain([options, 'access', _496 => _496.scenes, 'optionalAccess', _497 => _497.getScene, 'call', _498 => _498(sceneId), 'optionalAccess', _499 => _499.transition]);
11749
+ },
11750
+ /**
11751
+ * Sets (or with `effect` null removes) the provider transition played when the canvas moves to
11752
+ * a scene. Returns the transition.
11753
+ */
11754
+ async setSceneTransition(sceneId, effect, opts = {}) {
11755
+ const scenes2 = options.scenes;
11756
+ if (!scenes2) throw new Error("This canvas has no Scenes store.");
11757
+ if (!scenes2.getScene(sceneId)) throw new Error(`There is no scene "${sceneId}"; the scenes are ${scenes2.getState().scenes.map((s) => `"${s.id}"`).join(", ") || "none"}.`);
11758
+ if (effect === null) {
11759
+ scenes2.update(sceneId, { transition: void 0 });
11760
+ return null;
11761
+ }
11762
+ const d = await describe(effect, "transition");
11763
+ const duration = _nullishCoalesce(_nullishCoalesce(opts.duration, () => ( d.duration)), () => ( 600));
11764
+ if (!(duration > 0)) throw new Error("duration must be a number of ms above 0.");
11765
+ const transition = { effect: d.id, provider: slot.require().id, name: d.name, values: _chunkJODTP4DPcjs.resolveEffectValues.call(void 0, d, opts.values), duration };
11766
+ scenes2.update(sceneId, { transition });
11767
+ return transition;
11768
+ }
11769
+ };
11770
+ }
11771
+
11772
+ // src/canvas/effect-player.ts
11773
+ var defaultClock = {
11774
+ now: () => typeof performance !== "undefined" ? performance.now() : Date.now(),
11775
+ frame: (cb) => {
11776
+ if (typeof requestAnimationFrame === "undefined") {
11777
+ const t = setTimeout(cb, 16);
11778
+ return () => clearTimeout(t);
11779
+ }
11780
+ const id = requestAnimationFrame(cb);
11781
+ return () => cancelAnimationFrame(id);
11782
+ }
11783
+ };
11784
+ var canvasEffectsPool = new (0, _chunkW6QTLHZ3cjs.EffectRendererPool)({ maxRenderers: 6 });
11785
+ function draw(target, p) {
11786
+ const ctx = target.getContext("2d");
11787
+ if (!ctx || typeof ImageData === "undefined") return;
11788
+ ctx.putImageData(new ImageData(new Uint8ClampedArray(p.data), p.width, p.height), 0, 0);
11789
+ }
11790
+ function runCanvasNodeEffect(options) {
11791
+ const { provider, effect, target } = options;
11792
+ const clock = _nullishCoalesce(options.clock, () => ( defaultClock));
11793
+ const pool = _nullishCoalesce(options.pool, () => ( canvasEffectsPool));
11794
+ const size2 = { width: Math.max(1, Math.round(target.width)), height: Math.max(1, Math.round(target.height)) };
11795
+ const start = clock.now();
11796
+ let stopped = false;
11797
+ let cancel = () => {
11798
+ };
11799
+ const tick = () => {
11800
+ if (stopped) return;
11801
+ const time = options.animate === false || effect.playing === false ? 0 : clock.now() - start;
11802
+ pool.render(provider, effect.effect, size2, { time, values: effect.values }).then(
11803
+ (p) => {
11804
+ if (stopped) return;
11805
+ draw(target, p);
11806
+ if (options.animate !== false && effect.playing !== false) cancel = clock.frame(tick);
11807
+ },
11808
+ (e) => {
11809
+ if (!stopped) _optionalChain([options, 'access', _500 => _500.onError, 'optionalCall', _501 => _501(e)]);
11810
+ }
11811
+ );
11812
+ };
11813
+ tick();
11814
+ return {
11815
+ stop() {
11816
+ stopped = true;
11817
+ cancel();
11818
+ }
11819
+ };
11820
+ }
11821
+ async function playCanvasSceneTransition(options) {
11822
+ const { provider, transition, from, to, target } = options;
11823
+ const clock = _nullishCoalesce(options.clock, () => ( defaultClock));
11824
+ const pool = _nullishCoalesce(options.pool, () => ( canvasEffectsPool));
11825
+ const duration = _nullishCoalesce(transition.duration, () => ( 600));
11826
+ const size2 = { width: from.width, height: from.height };
11827
+ const start = clock.now();
11828
+ for (; ; ) {
11829
+ const time = Math.min(duration, clock.now() - start);
11830
+ const p = await pool.render(provider, transition.effect, size2, { time, progress: time / duration, values: transition.values, inputs: { from, to } });
11831
+ draw(target, p);
11832
+ if (time >= duration) return;
11833
+ await new Promise((resolve) => clock.frame(resolve));
11834
+ }
11835
+ }
11836
+ async function captureCanvasView(element, size2) {
11837
+ const url = await _chunkEI2MOVQ3cjs.rasterizeElement.call(void 0, element, { pixelWidth: size2.width, pixelHeight: size2.height, exclude: _chunkEI2MOVQ3cjs.CAPTURE_OVERLAY_SELECTORS });
11838
+ const doc = element.ownerDocument;
11839
+ const image = new doc.defaultView.Image();
11840
+ await new Promise((resolve, reject) => {
11841
+ image.onload = () => resolve();
11842
+ image.onerror = () => reject(new Error("The canvas view could not be captured."));
11843
+ image.src = url;
11844
+ });
11845
+ const canvas = doc.createElement("canvas");
11846
+ canvas.width = size2.width;
11847
+ canvas.height = size2.height;
11848
+ const ctx = canvas.getContext("2d");
11849
+ if (!ctx) throw new Error("The canvas view could not be captured (no 2D canvas).");
11850
+ ctx.drawImage(image, 0, 0, size2.width, size2.height);
11851
+ const data = ctx.getImageData(0, 0, size2.width, size2.height).data;
11852
+ return { width: size2.width, height: size2.height, data };
11853
+ }
11854
+ async function transitionCanvasView(options) {
11855
+ const { element } = options;
11856
+ const clock = _nullishCoalesce(options.clock, () => ( defaultClock));
11857
+ const scale = _nullishCoalesce(options.scale, () => ( Math.min(1, typeof devicePixelRatio === "number" ? devicePixelRatio : 1)));
11858
+ const size2 = { width: Math.max(1, Math.round(element.clientWidth * scale)), height: Math.max(1, Math.round(element.clientHeight * scale)) };
11859
+ let from;
11860
+ try {
11861
+ from = await captureCanvasView(element, size2);
11862
+ } catch (e10) {
11863
+ options.jump();
11864
+ return;
11865
+ }
11866
+ const overlay = element.ownerDocument.createElement("canvas");
11867
+ overlay.width = size2.width;
11868
+ overlay.height = size2.height;
11869
+ overlay.setAttribute("data-capture", "overlay");
11870
+ overlay.setAttribute("data-canvas-transition", options.transition.effect);
11871
+ Object.assign(overlay.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none", zIndex: "1000" });
11872
+ _optionalChain([overlay, 'access', _502 => _502.getContext, 'call', _503 => _503("2d"), 'optionalAccess', _504 => _504.putImageData, 'call', _505 => _505(new ImageData(new Uint8ClampedArray(from.data), size2.width, size2.height), 0, 0)]);
11873
+ if (getComputedStyle(element).position === "static") element.style.position = "relative";
11874
+ element.appendChild(overlay);
11875
+ try {
11876
+ options.jump();
11877
+ await new Promise((r) => clock.frame(() => clock.frame(r)));
11878
+ const to = await captureCanvasView(element, size2);
11879
+ await playCanvasSceneTransition({ provider: options.provider, transition: options.transition, from, to, target: overlay, clock });
11880
+ } catch (e11) {
11881
+ } finally {
11882
+ overlay.remove();
11883
+ }
11884
+ }
11885
+
11886
+ // src/canvas/effect-tools.ts
11887
+ var info = (e) => ({
11888
+ id: "effect",
11889
+ effect: e.effect,
11890
+ ...e.name ? { name: e.name } : {},
11891
+ ...e.provider ? { provider: e.provider } : {},
11892
+ role: e.mode === "fill" ? "fill" : "overlay",
11893
+ enabled: e.playing !== false,
11894
+ opacity: _nullishCoalesce(e.opacity, () => ( 1)),
11895
+ values: { ...e.values }
11896
+ });
11897
+ function createCanvasEffectsToolProvider(controller, options = {}) {
11898
+ const readOnlyReason = () => {
11899
+ const ro = typeof options.readOnly === "function" ? options.readOnly() : options.readOnly;
11900
+ return ro ? typeof ro === "string" ? ro : "The canvas is read-only." : null;
11901
+ };
11902
+ const result = (nodeId, effect) => {
11903
+ const now = _optionalChain([controller, 'access', _506 => _506.list, 'call', _507 => _507(nodeId), 'access', _508 => _508[0], 'optionalAccess', _509 => _509.effect]);
11904
+ return { target: nodeId, effect: info(_nullishCoalesce(effect, () => ( now))), effects: now ? [info(now)] : [] };
11905
+ };
11906
+ const once = (instance) => {
11907
+ if (instance !== "effect") throw new Error('A shape node has one effect, "effect".');
11908
+ };
11909
+ return _chunkJODTP4DPcjs.createEffectToolProvider.call(void 0, {
11910
+ id: _nullishCoalesce(options.id, () => ( "canvas-effects")),
11911
+ namespace: options.namespace,
11912
+ target: { noun: "node", id: "A shape node id on the canvas (a node with data.shape)." },
11913
+ applyUses: ["generator", "overlay", "title", "interactive"],
11914
+ applyDetails: "Generators fill the shape (clipped to its outline); overlays, titles and interactive effects draw over the node's box (set_canvas_effect_mode switches). A node has one effect: this replaces it. enabled false holds the first frame; opacity mixes it. index does not apply.",
11915
+ provider: () => controller.effectsProvider,
11916
+ readOnlyReason,
11917
+ list: (target) => controller.list(target).map((e) => ({ target: e.nodeId, effects: [info(e.effect)] })),
11918
+ apply: async (target, effect, args) => {
11919
+ if (args.index !== void 0) throw new Error("index does not apply: a shape node has one effect.");
11920
+ const provider = controller.effectsProvider;
11921
+ const d = provider ? await provider.describe(effect) : null;
11922
+ const mode = d && !d.uses.includes("generator") ? "overlay" : "fill";
11923
+ const applied = await controller.applyNodeEffect(target, effect, { mode, values: args.values, opacity: args.opacity });
11924
+ if (args.enabled === false) await controller.updateNodeEffect(target, { playing: false });
11925
+ return result(target, args.enabled === false ? { ...applied, playing: false } : applied);
11926
+ },
11927
+ update: async (target, instance, changes) => {
11928
+ once(instance);
11929
+ if (changes.index !== void 0) throw new Error("index does not apply: a shape node has one effect.");
11930
+ const e = await controller.updateNodeEffect(target, { values: changes.values, opacity: changes.opacity, playing: changes.enabled });
11931
+ return result(target, e);
11932
+ },
11933
+ remove: async (target, instance) => {
11934
+ once(instance);
11935
+ const was = controller.removeNodeEffect(target);
11936
+ return { target, effect: info(was), effects: [] };
11937
+ },
11938
+ subscribe: options.subscribe ? (notify) => options.subscribe(notify) : (notify) => controller.effects.subscribe(() => notify()),
11939
+ extraTools: (ctx) => [
11940
+ {
11941
+ name: "set_canvas_effect_mode",
11942
+ title: "Set a node effect's mode",
11943
+ description: "Switches a shape node's effect between fill (paints the inside, clipped to the outline) and overlay (draws over the node's box). One undoable step. Returns the effect.",
11944
+ inputSchema: {
11945
+ type: "object",
11946
+ properties: {
11947
+ node: { type: "string", minLength: 1, description: "A shape node id from list_applied_effects." },
11948
+ mode: { type: "string", enum: ["fill", "overlay"], description: "fill or overlay." }
11949
+ },
11950
+ required: ["node", "mode"],
11951
+ additionalProperties: false
11952
+ },
11953
+ annotations: { title: "Set a node effect's mode", ...ctx.annotations.writeIdempotent },
11954
+ handler: async (args) => {
11955
+ ctx.requireProvider();
11956
+ return { node: args.node, effect: info(await controller.updateNodeEffect(args.node, { mode: args.mode })) };
11957
+ }
11958
+ },
11959
+ {
11960
+ name: "list_scene_transitions",
11961
+ title: "List scene transitions",
11962
+ description: "Lists the canvas Scenes in order with the transition effect played when moving to each (or null). Works without a provider.",
11963
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
11964
+ annotations: { title: "List scene transitions", ...ctx.annotations.read },
11965
+ handler: () => ({ scenes: controller.scenes().map((s) => ({ id: s.id, name: s.name, transition: _nullishCoalesce(s.transition, () => ( null)) })) })
11966
+ },
11967
+ {
11968
+ name: "set_scene_transition",
11969
+ title: "Set a scene transition",
11970
+ description: "Sets the provider transition effect (search_effects with use transition) played when the canvas moves to a scene: the view before and after are captured and the effect blends between them. effect null removes it. Returns the transition.",
11971
+ inputSchema: {
11972
+ type: "object",
11973
+ properties: {
11974
+ scene: { type: "string", minLength: 1, description: "A scene id from list_scene_transitions." },
11975
+ effect: { anyOf: [ctx.effectIdSchema(["transition"]), { type: "null" }], description: "A transition effect id from search_effects, or null to remove the transition." },
11976
+ values: ctx.valuesSchema("Control values over the effect's defaults"),
11977
+ duration: { type: "number", exclusiveMinimum: 0, description: "Length in ms (default: the effect's own, else 600)." }
11978
+ },
11979
+ required: ["scene", "effect"],
11980
+ additionalProperties: false
11981
+ },
11982
+ annotations: { title: "Set a scene transition", ...ctx.annotations.writeIdempotent },
11983
+ handler: async (args) => {
11984
+ if (args.effect !== null) ctx.requireProvider();
11985
+ return { scene: args.scene, transition: await controller.setSceneTransition(args.scene, args.effect, { values: args.values, duration: args.duration }) };
11986
+ }
11987
+ }
11988
+ ]
11989
+ });
11990
+ }
11991
+
11992
+
11993
+
11994
+
11995
+
11996
+
11997
+
11998
+
11999
+
12000
+
12001
+
11605
12002
 
11606
12003
 
11607
12004
 
@@ -12085,5 +12482,5 @@ function createCanvasCaptureToolProvider(options) {
12085
12482
 
12086
12483
 
12087
12484
 
12088
- 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_GRADIENT_PRESETS = _chunkGUZ47CJMcjs.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 = _chunkGCJWMEYWcjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkGUZ47CJMcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkN3FVUOZDcjs.PathOpsError; exports.PlanarMap = _chunkGCJWMEYWcjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkGUZ47CJMcjs.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 = _chunkGUZ47CJMcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkN3FVUOZDcjs.arcToCubics; exports.architectureScene = architectureScene; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkN3FVUOZDcjs.bezierPathArea; exports.bezierPathBounds = _chunkN3FVUOZDcjs.bezierPathBounds; exports.bezierPathLength = _chunkN3FVUOZDcjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkN3FVUOZDcjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkN3FVUOZDcjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkN3FVUOZDcjs.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.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.centerNodes = _chunkWADCJ7A7cjs.centerNodes; exports.centre = _chunkWADCJ7A7cjs.centre; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkN3FVUOZDcjs.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 = _chunkGCJWMEYWcjs.contourEnclosesArea; exports.contourSignedArea = _chunkN3FVUOZDcjs.contourSignedArea; exports.contoursToPath = _chunkN3FVUOZDcjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkN3FVUOZDcjs.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.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 = _chunkGUZ47CJMcjs.cubicPointAt; exports.cubicsToPathData = _chunkGUZ47CJMcjs.cubicsToPathData; exports.cutOutPiece = _chunkGCJWMEYWcjs.cutOutPiece; exports.dashContours = _chunkN3FVUOZDcjs.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 = _chunkN3FVUOZDcjs.distanceToBezierPath; exports.distributeNodes = distributeNodes; exports.dividePaths = _chunkN3FVUOZDcjs.dividePaths; exports.dividePolygons = _chunkN3FVUOZDcjs.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 = _chunkN3FVUOZDcjs.excludePaths; exports.exportCssAnimation = exportCssAnimation; exports.familySceneFromLayout = familySceneFromLayout; exports.findConnectorSnap = findConnectorSnap; exports.findStrokesAtPoint = findStrokesAtPoint; exports.findVariant = findVariant; exports.fitCubicRun = _chunkGUZ47CJMcjs.fitCubicRun; exports.fitCubicWithTangents = _chunkGUZ47CJMcjs.fitCubicWithTangents; exports.fitCubics = _chunkGUZ47CJMcjs.fitCubics; exports.fitFreehandPath = _chunkGUZ47CJMcjs.fitFreehandPath; exports.fitPathData = _chunkGUZ47CJMcjs.fitPathData; exports.fitViewportToNodes = fitViewportToNodes; exports.fitViewportToRect = fitViewportToRect; exports.flattenSvgPath = _chunkGUZ47CJMcjs.flattenSvgPath; exports.flowSide = _chunkWADCJ7A7cjs.flowSide; exports.formatAgentCursorName = formatAgentCursorName; exports.formatAnimationTime = formatAnimationTime; exports.formatNumber = _chunkGUZ47CJMcjs.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 = _chunk7LQO6OHHcjs.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 = _chunkGUZ47CJMcjs.getShapeRenderData; exports.getShapeSvg = _chunkGUZ47CJMcjs.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 = _chunkGUZ47CJMcjs.gradientToSvgDef; exports.handlePoint = handlePoint; exports.hasFamilyScene = hasFamilyScene; exports.hasVisibleStroke = hasVisibleStroke; exports.hashString = hashString; exports.hatchPath = _chunkGCJWMEYWcjs.hatchPath; exports.inferResizeHandle = inferResizeHandle; exports.inspectCanvasInstance = inspectCanvasInstance; exports.inspectNodeTokens = inspectNodeTokens; exports.interiorPoint = _chunkGCJWMEYWcjs.interiorPoint; exports.interpolateAnimationValue = _chunk477UVMNRcjs.interpolateAnimationValue; exports.intersectPaths = _chunkN3FVUOZDcjs.intersectPaths; exports.intersectPolygons = _chunkN3FVUOZDcjs.intersectPolygons; exports.invertNodeUpdates = invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunk2FHLHZALcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunk477UVMNRcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunk7LQO6OHHcjs.isBrushedShape; exports.isCanvasComponent = isCanvasComponent; exports.isCanvasComponentSet = isCanvasComponentSet; exports.isCanvasGradient = _chunkGUZ47CJMcjs.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 = _chunkGUZ47CJMcjs.isShapeDescription; exports.isShapeNode = isShapeNode; exports.isStraightCubic = _chunkGUZ47CJMcjs.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 = _chunk7LQO6OHHcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunk7LQO6OHHcjs.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 = _chunkN3FVUOZDcjs.multiPolygonArea; exports.multiPolygonBounds = _chunkN3FVUOZDcjs.multiPolygonBounds; exports.nearestHandlePositions = nearestHandlePositions; exports.normalizeBezierPath = _chunkN3FVUOZDcjs.normalizeBezierPath; exports.normalizeKeyframes = _chunk477UVMNRcjs.normalizeKeyframes; exports.offsetPath = _chunkN3FVUOZDcjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkMR3Z4OQIcjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkN3FVUOZDcjs.outlineStroke; exports.overlaps = _chunkWADCJ7A7cjs.overlaps; exports.pageHidden = _chunk477UVMNRcjs.pageHidden; exports.parseCanvasClipboardData = parseCanvasClipboardData; exports.parseCanvasScenes = parseCanvasScenes; exports.parseCssEasing = _chunk2FHLHZALcjs.parseCssEasing; exports.parseCssGradient = _chunkGUZ47CJMcjs.parseCssGradient; exports.parseKeyframeClipboard = parseKeyframeClipboard; exports.parseMermaidStyles = parseMermaidStyles; exports.parseNodeStyleDeclarations = parseNodeStyleDeclarations; exports.parseOklab = _chunkMR3Z4OQIcjs.parseOklab; exports.parseSvgPath = _chunkGUZ47CJMcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkN3FVUOZDcjs.pathBoolean; exports.pathBooleanSelect = _chunkN3FVUOZDcjs.pathBooleanSelect; exports.pathDataToPolyline = _chunk7LQO6OHHcjs.pathDataToPolyline; exports.pathToContours = _chunkN3FVUOZDcjs.pathToContours; exports.pathfinder = _chunkGCJWMEYWcjs.pathfinder; exports.pieScene = pieScene; exports.placeBeside = _chunkWADCJ7A7cjs.placeBeside; exports.planarSplit = _chunkN3FVUOZDcjs.planarSplit; exports.playWebAnimations = playWebAnimations; exports.pointInBezierPath = _chunkN3FVUOZDcjs.pointInBezierPath; exports.pointInMultiPolygon = _chunkN3FVUOZDcjs.pointInMultiPolygon; exports.pointInRings = _chunkN3FVUOZDcjs.pointInRings; exports.pointerPenSample = pointerPenSample; exports.polygonArea = _chunkN3FVUOZDcjs.polygonArea; exports.polygonBoolean = _chunkN3FVUOZDcjs.polygonBoolean; exports.polygonToSvgPath = _chunkGUZ47CJMcjs.polygonToSvgPath; exports.positionToSide = positionToSide; exports.profileAlongPolyline = _chunk7LQO6OHHcjs.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 = _chunk7LQO6OHHcjs.renderShapeBrushstroke; exports.reorderNodes = reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkGUZ47CJMcjs.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 = _chunkN3FVUOZDcjs.ringSignedArea; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkN3FVUOZDcjs.segmentBounds; exports.segmentCurvature = _chunkN3FVUOZDcjs.segmentCurvature; exports.segmentDerivative = _chunkN3FVUOZDcjs.segmentDerivative; exports.segmentExtrema = _chunkN3FVUOZDcjs.segmentExtrema; exports.segmentIntersections = _chunkN3FVUOZDcjs.segmentIntersections; exports.segmentLength = _chunkN3FVUOZDcjs.segmentLength; exports.segmentNearest = _chunkN3FVUOZDcjs.segmentNearest; exports.segmentParamAtLength = _chunkN3FVUOZDcjs.segmentParamAtLength; exports.segmentPoint = _chunkN3FVUOZDcjs.segmentPoint; exports.segmentTangent = _chunkN3FVUOZDcjs.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 = _chunkGUZ47CJMcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkGUZ47CJMcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkN3FVUOZDcjs.splitSegment; exports.springAt = _chunk2FHLHZALcjs.springAt; exports.springSettleMs = _chunk2FHLHZALcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkN3FVUOZDcjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkN3FVUOZDcjs.subSegment; exports.subtractPaths = _chunkN3FVUOZDcjs.subtractPaths; exports.subtractPolygons = _chunkN3FVUOZDcjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkN3FVUOZDcjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = toggleLockNodes; exports.transformBezierPath = _chunkN3FVUOZDcjs.transformBezierPath; exports.trimSegments = _chunkN3FVUOZDcjs.trimSegments; exports.unionPolygons = _chunkN3FVUOZDcjs.unionPolygons; exports.unitePaths = _chunkN3FVUOZDcjs.unitePaths; exports.unlockNodes = unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunk7LQO6OHHcjs.validateCanvasBrush; exports.windingNumber = _chunkN3FVUOZDcjs.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 = _chunkN3FVUOZDcjs.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 = _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;
12089
12486
  //# sourceMappingURL=index.cjs.map