@pixerate/editor 0.163.0 → 0.165.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 (159) hide show
  1. package/dist/agent/index.cjs +54 -39
  2. package/dist/agent/index.js +24 -9
  3. package/dist/animation/index.cjs +6 -5
  4. package/dist/animation/index.js +5 -4
  5. package/dist/animation-editor/index.cjs +65 -64
  6. package/dist/animation-editor/index.js +8 -7
  7. package/dist/bridge/cli.cjs +3 -3
  8. package/dist/bridge/cli.js +2 -2
  9. package/dist/bridge/index.cjs +3 -3
  10. package/dist/bridge/index.js +2 -2
  11. package/dist/canvas/displacement.d.cts +34 -2
  12. package/dist/canvas/displacement.d.ts +34 -2
  13. package/dist/canvas/explosion-tools.d.cts +43 -0
  14. package/dist/canvas/explosion-tools.d.ts +43 -0
  15. package/dist/canvas/explosionLayout.d.cts +50 -0
  16. package/dist/canvas/explosionLayout.d.ts +50 -0
  17. package/dist/canvas/explosionState.d.cts +52 -0
  18. package/dist/canvas/explosionState.d.ts +52 -0
  19. package/dist/canvas/index.cjs +512 -168
  20. package/dist/canvas/index.d.cts +3 -0
  21. package/dist/canvas/index.d.ts +3 -0
  22. package/dist/canvas/index.js +434 -90
  23. package/dist/canvas/types.d.cts +27 -2
  24. package/dist/canvas/types.d.ts +27 -2
  25. package/dist/chart/controller.d.cts +31 -2
  26. package/dist/chart/controller.d.ts +31 -2
  27. package/dist/chart/index.cjs +504 -132
  28. package/dist/chart/index.d.cts +2 -0
  29. package/dist/chart/index.d.ts +2 -0
  30. package/dist/chart/index.js +386 -14
  31. package/dist/chart/layout-families.d.cts +7 -0
  32. package/dist/chart/layout-families.d.ts +7 -0
  33. package/dist/chart/links.d.cts +34 -0
  34. package/dist/chart/links.d.ts +34 -0
  35. package/dist/chart/mermaid.d.cts +9 -6
  36. package/dist/chart/mermaid.d.ts +9 -6
  37. package/dist/chart/schemas.d.cts +3 -0
  38. package/dist/chart/schemas.d.ts +3 -0
  39. package/dist/chart/spec.d.cts +3 -2
  40. package/dist/chart/spec.d.ts +3 -2
  41. package/dist/chart/style.d.cts +33 -0
  42. package/dist/chart/style.d.ts +33 -0
  43. package/dist/chart/types.d.cts +24 -2
  44. package/dist/chart/types.d.ts +24 -2
  45. package/dist/{chunk-TALQONZ5.js → chunk-2J5VLJHC.js} +3 -3
  46. package/dist/{chunk-3NEZJCBY.js → chunk-2ZRN43IN.js} +340 -201
  47. package/dist/{chunk-ZVNAMTFO.cjs → chunk-3FSUJIXN.cjs} +18 -174
  48. package/dist/{chunk-RQCMSEM5.cjs → chunk-4QUUHTGJ.cjs} +2 -2
  49. package/dist/{chunk-CIPIESX4.cjs → chunk-4ZC5QJE2.cjs} +3 -3
  50. package/dist/{chunk-S6X2QRVU.cjs → chunk-5UEFBM2M.cjs} +1 -138
  51. package/dist/{chunk-YSAGBIRW.cjs → chunk-64VWWR5U.cjs} +16 -16
  52. package/dist/{chunk-QYZGBVNC.js → chunk-7272D3K2.js} +10 -8
  53. package/dist/{chunk-462WGGXX.cjs → chunk-AMX23CSN.cjs} +27 -16
  54. package/dist/{chunk-3VLOOO3G.js → chunk-BDIM6NVW.js} +1 -1
  55. package/dist/{chunk-POR54B55.js → chunk-CRFSQWKQ.js} +4 -1
  56. package/dist/{chunk-GZ2FM3ZB.js → chunk-DKNEQX7T.js} +6 -162
  57. package/dist/{chunk-JCXMJUQO.cjs → chunk-EGZM52EO.cjs} +3 -3
  58. package/dist/{chunk-ES3UEVUT.cjs → chunk-EUIDTZNQ.cjs} +112 -110
  59. package/dist/{chunk-H3OEM3Q2.js → chunk-F6R67I3A.js} +1 -1
  60. package/dist/{chunk-5FNGLV2D.js → chunk-FEU2XVQH.js} +15 -3
  61. package/dist/{chunk-SZA42R4N.js → chunk-FRBRLKNQ.js} +154 -16
  62. package/dist/chunk-HIDFL5LQ.js +484 -0
  63. package/dist/{chunk-MKTDELCD.js → chunk-I5MRJW7B.js} +1 -1
  64. package/dist/{chunk-SDHZG5TF.js → chunk-ILP77UD6.js} +160 -2
  65. package/dist/{chunk-GKNEJ6EN.cjs → chunk-IMRXC7OA.cjs} +241 -103
  66. package/dist/chunk-KGRZMHZB.js +204 -0
  67. package/dist/{chunk-SET6KJOP.js → chunk-LPIKXPBM.js} +1 -1
  68. package/dist/{chunk-BQWGN5WH.js → chunk-M2TPMYJE.js} +1 -1
  69. package/dist/{chunk-GTELFJRE.cjs → chunk-M5GLQQWG.cjs} +2 -2
  70. package/dist/{chunk-4VU4CP7R.js → chunk-MHLU6GRJ.js} +1 -138
  71. package/dist/{chunk-D54JHQK2.cjs → chunk-MKXK6E4O.cjs} +51 -51
  72. package/dist/{chunk-DAPQGA55.js → chunk-N7NBGT2Y.js} +2 -2
  73. package/dist/chunk-O6OGNDND.js +164 -0
  74. package/dist/{chunk-22KLZZGH.cjs → chunk-ODFCS7HF.cjs} +8 -8
  75. package/dist/{chunk-PA3IMPPS.cjs → chunk-OVYQAYGH.cjs} +81 -81
  76. package/dist/{chunk-YXOW456B.js → chunk-PPEDZ5WR.js} +1 -1
  77. package/dist/{chunk-YGG7WDWT.cjs → chunk-Q25WAFTD.cjs} +21 -18
  78. package/dist/{chunk-SBQVEBSU.cjs → chunk-QO2T6KA5.cjs} +165 -67
  79. package/dist/{chunk-24M7VD6M.cjs → chunk-S4EIAIEW.cjs} +7 -7
  80. package/dist/{chunk-M4MIZPQI.cjs → chunk-SJ2CPTQC.cjs} +189 -15
  81. package/dist/chunk-TFF2GTGN.cjs +153 -0
  82. package/dist/chunk-TTCJPX4U.cjs +204 -0
  83. package/dist/{chunk-NZD2MZJC.cjs → chunk-TVQW26AV.cjs} +35 -23
  84. package/dist/{chunk-R3P2M7HU.cjs → chunk-UVXTOZ2B.cjs} +346 -207
  85. package/dist/{chunk-WI7QJA7A.cjs → chunk-UXETV2NC.cjs} +161 -3
  86. package/dist/{chunk-Z4P2RBMJ.js → chunk-V5GSY3NC.js} +101 -3
  87. package/dist/{chunk-QY4KUDMY.js → chunk-VRXXAXUT.js} +2 -2
  88. package/dist/chunk-VU6WQSMB.cjs +164 -0
  89. package/dist/{chunk-OXERWBKE.js → chunk-X5W645RI.js} +3 -3
  90. package/dist/{chunk-NHLYK3AX.js → chunk-XBQX76CT.js} +182 -8
  91. package/dist/{chunk-5AARIS3R.cjs → chunk-XCDGM7TD.cjs} +37 -37
  92. package/dist/{chunk-EVXQNQND.js → chunk-XZB3TJ6K.js} +16 -5
  93. package/dist/chunk-YBAPT7NL.js +153 -0
  94. package/dist/chunk-Z2UQYMPS.cjs +484 -0
  95. package/dist/color/index.cjs +5 -3
  96. package/dist/color/index.js +12 -10
  97. package/dist/diagram/index.cjs +55 -243
  98. package/dist/diagram/index.js +12 -200
  99. package/dist/export/index.cjs +7 -6
  100. package/dist/export/index.js +6 -5
  101. package/dist/extensions/index.cjs +12 -9
  102. package/dist/extensions/index.js +11 -8
  103. package/dist/gradient/index.cjs +29 -27
  104. package/dist/gradient/index.js +6 -4
  105. package/dist/image-editor/index.cjs +644 -643
  106. package/dist/image-editor/index.js +7 -6
  107. package/dist/index.cjs +21 -18
  108. package/dist/index.js +14 -11
  109. package/dist/paint-editor/index.cjs +19 -18
  110. package/dist/paint-editor/index.js +7 -6
  111. package/dist/parameters/index.cjs +2 -2
  112. package/dist/parameters/index.js +1 -1
  113. package/dist/persistence/assetWrites.d.cts +22 -0
  114. package/dist/persistence/assetWrites.d.ts +22 -0
  115. package/dist/persistence/assets.d.cts +71 -0
  116. package/dist/persistence/assets.d.ts +71 -0
  117. package/dist/persistence/documentStore.d.cts +17 -1
  118. package/dist/persistence/documentStore.d.ts +17 -1
  119. package/dist/persistence/documentTools.d.cts +5 -1
  120. package/dist/persistence/documentTools.d.ts +5 -1
  121. package/dist/persistence/editorAutosave.d.cts +7 -0
  122. package/dist/persistence/editorAutosave.d.ts +7 -0
  123. package/dist/persistence/index.cjs +141 -21
  124. package/dist/persistence/index.js +130 -10
  125. package/dist/persistence/storage.d.cts +13 -1
  126. package/dist/persistence/storage.d.ts +13 -1
  127. package/dist/spreadsheet/index.cjs +3 -3
  128. package/dist/spreadsheet/index.js +2 -2
  129. package/dist/tokens/index.cjs +11 -3
  130. package/dist/tokens/index.d.cts +1 -0
  131. package/dist/tokens/index.d.ts +1 -0
  132. package/dist/tokens/index.js +10 -2
  133. package/dist/tokens/style.d.cts +36 -0
  134. package/dist/tokens/style.d.ts +36 -0
  135. package/dist/tools/index.cjs +15 -3
  136. package/dist/tools/index.d.cts +2 -0
  137. package/dist/tools/index.d.ts +2 -0
  138. package/dist/tools/index.js +14 -2
  139. package/dist/tools/style-tools.d.cts +19 -0
  140. package/dist/tools/style-tools.d.ts +19 -0
  141. package/dist/tools/style.d.cts +212 -0
  142. package/dist/tools/style.d.ts +212 -0
  143. package/dist/tools/view.d.cts +6 -0
  144. package/dist/tools/view.d.ts +6 -0
  145. package/dist/typography/index.cjs +8 -6
  146. package/dist/typography/index.js +5 -3
  147. package/dist/vector/index.cjs +953 -952
  148. package/dist/vector/index.js +7 -6
  149. package/dist/video-editor/index.cjs +8 -7
  150. package/dist/video-editor/index.js +6 -5
  151. package/package.json +1 -1
  152. package/skills/README.md +12 -0
  153. package/skills/pixerate-agent-tools/SKILL.md +34 -1
  154. package/skills/pixerate-chart/SKILL.md +41 -9
  155. package/skills/pixerate-image-editor/SKILL.md +2 -0
  156. package/skills/pixerate-paint-editor/SKILL.md +2 -0
  157. package/skills/pixerate-tokens/SKILL.md +5 -0
  158. package/dist/chunk-ERAGQL2N.cjs +0 -68
  159. package/dist/chunk-KMU6QJB7.js +0 -68
@@ -53,14 +53,14 @@ var _chunkYAWLMF3Ocjs = require('../chunk-YAWLMF3O.cjs');
53
53
 
54
54
 
55
55
 
56
- var _chunkZVNAMTFOcjs = require('../chunk-ZVNAMTFO.cjs');
56
+ var _chunk3FSUJIXNcjs = require('../chunk-3FSUJIXN.cjs');
57
57
 
58
58
 
59
59
 
60
60
 
61
61
 
62
62
 
63
- var _chunkWI7QJA7Acjs = require('../chunk-WI7QJA7A.cjs');
63
+ var _chunkUXETV2NCcjs = require('../chunk-UXETV2NC.cjs');
64
64
 
65
65
 
66
66
 
@@ -113,10 +113,11 @@ var _chunkPY4GWSE2cjs = require('../chunk-PY4GWSE2.cjs');
113
113
  var _chunkN2FGYZ4Qcjs = require('../chunk-N2FGYZ4Q.cjs');
114
114
 
115
115
 
116
- var _chunkSBQVEBSUcjs = require('../chunk-SBQVEBSU.cjs');
116
+ var _chunkQO2T6KA5cjs = require('../chunk-QO2T6KA5.cjs');
117
117
 
118
118
 
119
- var _chunkR3P2M7HUcjs = require('../chunk-R3P2M7HU.cjs');
119
+ var _chunkUVXTOZ2Bcjs = require('../chunk-UVXTOZ2B.cjs');
120
+ require('../chunk-VU6WQSMB.cjs');
120
121
  require('../chunk-55AKPTLM.cjs');
121
122
 
122
123
 
@@ -215,7 +216,7 @@ require('../chunk-WOFXZ3XU.cjs');
215
216
  var _chunkYQGCPL5Xcjs = require('../chunk-YQGCPL5X.cjs');
216
217
 
217
218
 
218
- var _chunkM4MIZPQIcjs = require('../chunk-M4MIZPQI.cjs');
219
+ var _chunkSJ2CPTQCcjs = require('../chunk-SJ2CPTQC.cjs');
219
220
  require('../chunk-2BSBFBOA.cjs');
220
221
 
221
222
 
@@ -229,7 +230,7 @@ require('../chunk-2BSBFBOA.cjs');
229
230
 
230
231
 
231
232
 
232
- var _chunkGTELFJREcjs = require('../chunk-GTELFJRE.cjs');
233
+ var _chunkM5GLQQWGcjs = require('../chunk-M5GLQQWG.cjs');
233
234
 
234
235
 
235
236
 
@@ -254,12 +255,13 @@ var _chunkDWJJI6RTcjs = require('../chunk-DWJJI6RT.cjs');
254
255
 
255
256
 
256
257
 
257
- var _chunkCIPIESX4cjs = require('../chunk-CIPIESX4.cjs');
258
+ var _chunk4ZC5QJE2cjs = require('../chunk-4ZC5QJE2.cjs');
258
259
 
259
260
 
260
261
  var _chunkA6QWKBJPcjs = require('../chunk-A6QWKBJP.cjs');
261
- require('../chunk-ES3UEVUT.cjs');
262
- require('../chunk-S6X2QRVU.cjs');
262
+ require('../chunk-EUIDTZNQ.cjs');
263
+ require('../chunk-TFF2GTGN.cjs');
264
+ require('../chunk-5UEFBM2M.cjs');
263
265
  require('../chunk-IPJ3TEYR.cjs');
264
266
 
265
267
  // src/canvas/trajectory.ts
@@ -342,7 +344,7 @@ function runMultiNodeTransition(transitions, options = {}) {
342
344
  const {
343
345
  defaultDuration = 400,
344
346
  defaultEasing: easingFunc = defaultEasing,
345
- clock = _chunkGTELFJREcjs.realClock,
347
+ clock = _chunkM5GLQQWGcjs.realClock,
346
348
  styleFormat = "string",
347
349
  onUpdate,
348
350
  onComplete
@@ -428,109 +430,162 @@ function computeNodesBoundingBox(nodes, defaultWidth = 200, defaultHeight = 60)
428
430
  height: maxY - minY
429
431
  };
430
432
  }
433
+ function nodeSizeOf(node, defaultWidth = 200, defaultHeight = 60) {
434
+ return {
435
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _10 => _10.measured, 'optionalAccess', _11 => _11.width]), () => ( node.width)), () => ( defaultWidth)),
436
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _12 => _12.measured, 'optionalAccess', _13 => _13.height]), () => ( node.height)), () => ( defaultHeight))
437
+ };
438
+ }
431
439
  function calculateDirectionalDisplacement(params) {
432
- const {
433
- existingNodes,
434
- originNode,
435
- childNodes,
436
- getNodesBounds,
437
- options = {}
438
- } = params;
440
+ const { existingNodes, originNode, childNodes, getNodesBounds, options = {} } = params;
439
441
  const {
440
442
  direction = "right",
441
443
  gap = 40,
442
444
  spreadSiblingLanes = false,
443
445
  siblingTolerance = 50,
444
- minY
446
+ minY,
447
+ maxY,
448
+ layoutMode = "freeform",
449
+ rowSpacing
445
450
  } = options;
451
+ const finite2 = (name, value) => {
452
+ if (value !== void 0 && !Number.isFinite(value)) {
453
+ throw new RangeError(`${name} must be a finite number (got ${value}).`);
454
+ }
455
+ };
456
+ finite2("gap", gap);
457
+ finite2("minY", minY);
458
+ finite2("maxY", maxY);
459
+ finite2("rowSpacing", rowSpacing);
460
+ if (rowSpacing !== void 0 && rowSpacing <= 0) {
461
+ throw new RangeError(`rowSpacing must be greater than 0 (got ${rowSpacing}).`);
462
+ }
463
+ if (minY !== void 0 && maxY !== void 0 && minY > maxY) {
464
+ throw new RangeError(`minY (${minY}) must not be greater than maxY (${maxY}).`);
465
+ }
446
466
  const displacedMap = /* @__PURE__ */ new Map();
447
467
  if (childNodes.length === 0 || existingNodes.length === 0) {
448
468
  return displacedMap;
449
469
  }
450
470
  const childBounds = getNodesBounds ? getNodesBounds(childNodes) : computeNodesBoundingBox(childNodes);
451
- const originWidth = _nullishCoalesce(_nullishCoalesce(_optionalChain([originNode, 'access', _10 => _10.measured, 'optionalAccess', _11 => _11.width]), () => ( originNode.width)), () => ( 200));
452
- const originHeight = _nullishCoalesce(_nullishCoalesce(_optionalChain([originNode, 'access', _12 => _12.measured, 'optionalAccess', _13 => _13.height]), () => ( originNode.height)), () => ( 60));
453
- const deltaPrimary = direction === "right" || direction === "left" ? childBounds.width + gap : childBounds.height + gap;
471
+ const { width: originWidth, height: originHeight } = nodeSizeOf(originNode);
472
+ const rowLane = layoutMode === "row-lane";
473
+ const lane = _nullishCoalesce(rowSpacing, () => ( originHeight));
474
+ const quantize = (delta) => rowLane && delta > 0 && lane > 0 ? Math.ceil(delta / lane) * lane : delta;
475
+ const laneOf = (node) => lane > 0 ? Math.round((node.position.y - originNode.position.y) / lane) : 0;
476
+ const isAbove = (node) => rowLane ? laneOf(node) < 0 : node.position.y < originNode.position.y;
477
+ const isBelow = (node) => rowLane ? laneOf(node) > 0 : node.position.y >= originNode.position.y + originHeight * 0.5;
478
+ const horizontal = direction === "right" || direction === "left";
479
+ const deltaPrimary = horizontal ? childBounds.width + gap : quantize(childBounds.height + gap);
454
480
  const deltaUp = Math.max(0, originNode.position.y - childBounds.y + gap);
455
- const deltaDown = Math.max(
456
- 0,
457
- childBounds.y + childBounds.height - (originNode.position.y + originHeight) + gap
458
- );
459
- const equalDelta = Math.max(deltaUp, deltaDown);
481
+ const deltaDown = Math.max(0, childBounds.y + childBounds.height - (originNode.position.y + originHeight) + gap);
482
+ const equalDelta = quantize(Math.max(deltaUp, deltaDown));
460
483
  for (const node of existingNodes) {
461
484
  if (node.id === originNode.id) continue;
462
- const isSiblingRow = Math.abs(node.position.y - originNode.position.y) < siblingTolerance;
463
- switch (direction) {
464
- case "right": {
465
- if (node.position.x > originNode.position.x) {
466
- displacedMap.set(node.id, {
467
- x: node.position.x + deltaPrimary,
468
- y: node.position.y
469
- });
470
- }
471
- break;
472
- }
473
- case "left": {
474
- if (node.position.x < originNode.position.x) {
475
- displacedMap.set(node.id, {
476
- x: node.position.x - deltaPrimary,
477
- y: node.position.y
478
- });
479
- }
480
- break;
481
- }
482
- case "down": {
483
- if (node.position.y > originNode.position.y) {
484
- displacedMap.set(node.id, {
485
- x: node.position.x,
486
- y: node.position.y + deltaPrimary
487
- });
485
+ let newX = node.position.x;
486
+ let newY = node.position.y;
487
+ if (direction === "right") {
488
+ if (node.position.x >= originNode.position.x + originWidth * 0.5) {
489
+ newX += deltaPrimary;
490
+ } else if (spreadSiblingLanes) {
491
+ const { height } = nodeSizeOf(node);
492
+ const overlapsCluster = node.position.y + height >= childBounds.y - gap && node.position.y <= childBounds.y + childBounds.height + gap;
493
+ if (overlapsCluster && Math.abs(node.position.x - originNode.position.x) <= siblingTolerance) {
494
+ const push2 = node.position.y >= originNode.position.y ? 1 : -1;
495
+ newY += push2 * (childBounds.height * 0.5 + gap);
488
496
  }
489
- break;
490
497
  }
491
- case "up": {
492
- if (node.position.y < originNode.position.y) {
493
- displacedMap.set(node.id, {
494
- x: node.position.x,
495
- y: node.position.y - deltaPrimary
496
- });
497
- }
498
- break;
498
+ } else if (direction === "left") {
499
+ if (node.position.x < originNode.position.x) newX -= deltaPrimary;
500
+ } else if (direction === "down") {
501
+ if (isBelow(node)) newY += deltaPrimary;
502
+ } else if (direction === "up") {
503
+ if (isAbove(node)) newY -= deltaPrimary;
504
+ } else if (direction === "vertical") {
505
+ if (isAbove(node)) newY -= equalDelta;
506
+ else if (isBelow(node)) newY += equalDelta;
507
+ }
508
+ if (newX !== node.position.x || newY !== node.position.y) {
509
+ displacedMap.set(node.id, { x: newX, y: newY });
510
+ }
511
+ }
512
+ if (minY !== void 0 || maxY !== void 0) {
513
+ const byId = new Map(existingNodes.map((n3) => [n3.id, n3]));
514
+ const rowsOf = (moved2) => {
515
+ const rows = /* @__PURE__ */ new Map();
516
+ for (const node of moved2) {
517
+ const key = rowLane ? laneOf(node) : node.position.y;
518
+ rows.set(key, [..._nullishCoalesce(rows.get(key), () => ( [])), node]);
499
519
  }
500
- case "vertical": {
501
- if (isSiblingRow) break;
502
- if (node.position.y < originNode.position.y) {
503
- displacedMap.set(node.id, {
504
- x: node.position.x,
505
- y: node.position.y - equalDelta
506
- });
507
- } else if (node.position.y > originNode.position.y) {
508
- displacedMap.set(node.id, {
509
- x: node.position.x,
510
- y: node.position.y + equalDelta
511
- });
512
- }
513
- break;
520
+ return [...rows.entries()].sort((a, b) => a[0] - b[0]).map(([, nodes]) => nodes);
521
+ };
522
+ const spacingFor = (nodes) => _nullishCoalesce(rowSpacing, () => ( Math.max(...nodes.map((n3) => nodeSizeOf(n3).height))));
523
+ const moved = (sign) => [...displacedMap.entries()].filter(([id, pos]) => Math.sign(pos.y - byId.get(id).position.y) === sign).map(([id]) => byId.get(id));
524
+ if (minY !== void 0) {
525
+ const up = moved(-1);
526
+ if (up.length > 0) {
527
+ const spacing = spacingFor(up);
528
+ rowsOf(up).forEach((row, index) => {
529
+ const floor = minY + index * spacing;
530
+ for (const node of row) {
531
+ const pos = displacedMap.get(node.id);
532
+ displacedMap.set(node.id, { x: pos.x, y: Math.min(node.position.y, Math.max(floor, pos.y)) });
533
+ }
534
+ });
514
535
  }
515
536
  }
516
- }
517
- if (spreadSiblingLanes && (direction === "right" || direction === "left")) {
518
- for (const [nodeId, pos] of displacedMap.entries()) {
519
- const node = existingNodes.find((n3) => n3.id === nodeId);
520
- if (node && Math.abs(node.position.y - originNode.position.y) < siblingTolerance) {
521
- const isAbove = node.position.y < originNode.position.y;
522
- displacedMap.set(nodeId, {
523
- x: pos.x,
524
- y: pos.y + (isAbove ? -deltaUp : deltaDown)
537
+ if (maxY !== void 0) {
538
+ const down = moved(1);
539
+ if (down.length > 0) {
540
+ const spacing = spacingFor(down);
541
+ rowsOf(down).reverse().forEach((row, index) => {
542
+ for (const node of row) {
543
+ const pos = displacedMap.get(node.id);
544
+ const ceiling = maxY - index * spacing - nodeSizeOf(node).height;
545
+ displacedMap.set(node.id, { x: pos.x, y: Math.max(node.position.y, Math.min(ceiling, pos.y)) });
546
+ }
525
547
  });
526
548
  }
527
549
  }
550
+ for (const [id, pos] of [...displacedMap.entries()]) {
551
+ const node = byId.get(id);
552
+ if (pos.x === node.position.x && pos.y === node.position.y) displacedMap.delete(id);
553
+ }
528
554
  }
529
- if (minY !== void 0) {
530
- for (const [nodeId, pos] of displacedMap.entries()) {
531
- if (pos.y < minY) {
532
- displacedMap.set(nodeId, { x: pos.x, y: minY });
533
- }
555
+ return displacedMap;
556
+ }
557
+ function calculateReflowDisplacement(params) {
558
+ const { existingNodes, existingEdges, originNode, childNodes, childEdges = [], options = {} } = params;
559
+ const { direction = "LR", ranksep = 80, nodesep = 30, defaultNodeWidth = 200, defaultNodeHeight = 60 } = options;
560
+ const displacedMap = /* @__PURE__ */ new Map();
561
+ if (existingNodes.length === 0) return displacedMap;
562
+ const allNodes = [...existingNodes, ...childNodes];
563
+ const allEdges = [...existingEdges, ...childEdges];
564
+ const g = new _dagre2.default.graphlib.Graph();
565
+ g.setDefaultEdgeLabel(() => ({}));
566
+ g.setGraph({ rankdir: direction, ranksep, nodesep });
567
+ const allNodeIds = new Set(allNodes.map((n3) => n3.id));
568
+ for (const node of allNodes) {
569
+ g.setNode(node.id, nodeSizeOf(node, defaultNodeWidth, defaultNodeHeight));
570
+ }
571
+ for (const edge of allEdges) {
572
+ if (allNodeIds.has(edge.source) && allNodeIds.has(edge.target)) g.setEdge(edge.source, edge.target);
573
+ }
574
+ _dagre2.default.layout(g);
575
+ const dagreOrigin = g.node(originNode.id);
576
+ if (!dagreOrigin) return displacedMap;
577
+ const origin = nodeSizeOf(originNode, defaultNodeWidth, defaultNodeHeight);
578
+ const anchorOffsetX = originNode.position.x - (dagreOrigin.x - origin.width / 2);
579
+ const anchorOffsetY = originNode.position.y - (dagreOrigin.y - origin.height / 2);
580
+ for (const node of existingNodes) {
581
+ if (node.id === originNode.id) continue;
582
+ const laidOut = g.node(node.id);
583
+ if (!laidOut) continue;
584
+ const { width, height } = nodeSizeOf(node, defaultNodeWidth, defaultNodeHeight);
585
+ const targetX = laidOut.x - width / 2 + anchorOffsetX;
586
+ const targetY = laidOut.y - height / 2 + anchorOffsetY;
587
+ if (Math.abs(targetX - node.position.x) > 0.5 || Math.abs(targetY - node.position.y) > 0.5) {
588
+ displacedMap.set(node.id, { x: targetX, y: targetY });
534
589
  }
535
590
  }
536
591
  return displacedMap;
@@ -778,7 +833,7 @@ var StreamingLayoutManager = (_class = class {
778
833
  this.throttleMs = _nullishCoalesce(options.throttleMs, () => ( 200));
779
834
  this.glideDurationMs = _nullishCoalesce(options.glideDurationMs, () => ( 300));
780
835
  this.connectedOnly = _nullishCoalesce(options.connectedOnly, () => ( false));
781
- this.clock = _nullishCoalesce(options.clock, () => ( _chunkGTELFJREcjs.realClock));
836
+ this.clock = _nullishCoalesce(options.clock, () => ( _chunkM5GLQQWGcjs.realClock));
782
837
  this.layoutOptions = _nullishCoalesce(options.layoutOptions, () => ( { direction: "LR" }));
783
838
  this.onLayoutUpdated = options.onLayoutUpdated;
784
839
  }
@@ -4050,7 +4105,7 @@ function getTokenPropertyScope(property, node) {
4050
4105
  }
4051
4106
  function getTokensForProperty(state, property, node) {
4052
4107
  const scope = getTokenPropertyScope(property, node);
4053
- return state.variables.filter((v) => v.type === property.type && _chunkWI7QJA7Acjs.isTokenInScope.call(void 0, v, scope));
4108
+ return state.variables.filter((v) => v.type === property.type && _chunkUXETV2NCcjs.isTokenInScope.call(void 0, v, scope));
4054
4109
  }
4055
4110
  function lookupOf(nodes) {
4056
4111
  return new Map(nodes.map((n3) => [n3.id, n3]));
@@ -4058,7 +4113,7 @@ function lookupOf(nodes) {
4058
4113
  function validModes(state, modes, into) {
4059
4114
  for (const [collectionId, modeId] of Object.entries(modes)) {
4060
4115
  if (state) {
4061
- const collection = _chunkWI7QJA7Acjs.getTokenCollection.call(void 0, state, collectionId);
4116
+ const collection = _chunkUXETV2NCcjs.getTokenCollection.call(void 0, state, collectionId);
4062
4117
  if (!collection || !collection.modes.some((m) => m.id === modeId)) continue;
4063
4118
  }
4064
4119
  into[collectionId] = modeId;
@@ -4113,7 +4168,7 @@ function applyBindings(node, state, modes, options, only) {
4113
4168
  if (only && !only.has(variableId)) continue;
4114
4169
  const property = getCanvasTokenProperty(key, options);
4115
4170
  if (!property || !property.appliesTo(next)) continue;
4116
- const resolved = _chunkWI7QJA7Acjs.resolveToken.call(void 0, state, variableId, modes);
4171
+ const resolved = _chunkUXETV2NCcjs.resolveToken.call(void 0, state, variableId, modes);
4117
4172
  if (!resolved.ok || resolved.type !== property.type) continue;
4118
4173
  next = property.write(next, resolved.value);
4119
4174
  }
@@ -4136,7 +4191,7 @@ function inspectNodeTokens(node, nodes, state, options = {}) {
4136
4191
  for (const [key, variableId] of Object.entries(getNodeTokenBindings(node))) {
4137
4192
  const property = getCanvasTokenProperty(key, options);
4138
4193
  if (!property) continue;
4139
- out.push({ property, variableId, variable: _chunkWI7QJA7Acjs.getTokenVariable.call(void 0, state, variableId), resolution: _chunkWI7QJA7Acjs.resolveToken.call(void 0, state, variableId, modes) });
4194
+ out.push({ property, variableId, variable: _chunkUXETV2NCcjs.getTokenVariable.call(void 0, state, variableId), resolution: _chunkUXETV2NCcjs.resolveToken.call(void 0, state, variableId, modes) });
4140
4195
  }
4141
4196
  return out;
4142
4197
  }
@@ -4148,12 +4203,12 @@ function setDataRecord(node, key, record) {
4148
4203
  }
4149
4204
  function bindCanvasToken(nodes, ids, propertyKey, variableId, state, options = {}) {
4150
4205
  const property = getCanvasTokenProperty(propertyKey, options);
4151
- if (!property) throw new (0, _chunkWI7QJA7Acjs.TokenError)("not-found", `No bindable property \`${propertyKey}\``);
4206
+ if (!property) throw new (0, _chunkUXETV2NCcjs.TokenError)("not-found", `No bindable property \`${propertyKey}\``);
4152
4207
  if (variableId !== null) {
4153
- const variable = _chunkWI7QJA7Acjs.getTokenVariable.call(void 0, state, variableId);
4154
- if (!variable) throw new (0, _chunkWI7QJA7Acjs.TokenError)("not-found", `No variable \`${variableId}\``);
4208
+ const variable = _chunkUXETV2NCcjs.getTokenVariable.call(void 0, state, variableId);
4209
+ if (!variable) throw new (0, _chunkUXETV2NCcjs.TokenError)("not-found", `No variable \`${variableId}\``);
4155
4210
  if (variable.type !== property.type) {
4156
- throw new (0, _chunkWI7QJA7Acjs.TokenError)("type-mismatch", `${property.label} takes a ${property.type} variable; \`${variable.name}\` is a ${variable.type}`);
4211
+ throw new (0, _chunkUXETV2NCcjs.TokenError)("type-mismatch", `${property.label} takes a ${property.type} variable; \`${variable.name}\` is a ${variable.type}`);
4157
4212
  }
4158
4213
  }
4159
4214
  const targets = new Set(ids);
@@ -4175,9 +4230,9 @@ function bindCanvasToken(nodes, ids, propertyKey, variableId, state, options = {
4175
4230
  }
4176
4231
  function setCanvasTokenMode(nodes, ids, collectionId, modeId, state, options = {}) {
4177
4232
  if (modeId !== null) {
4178
- const collection = _chunkWI7QJA7Acjs.getTokenCollection.call(void 0, state, collectionId);
4179
- if (!collection) throw new (0, _chunkWI7QJA7Acjs.TokenError)("not-found", `No collection \`${collectionId}\``);
4180
- if (!collection.modes.some((m) => m.id === modeId)) throw new (0, _chunkWI7QJA7Acjs.TokenError)("not-found", `No mode \`${modeId}\` in \`${collection.name}\``);
4233
+ const collection = _chunkUXETV2NCcjs.getTokenCollection.call(void 0, state, collectionId);
4234
+ if (!collection) throw new (0, _chunkUXETV2NCcjs.TokenError)("not-found", `No collection \`${collectionId}\``);
4235
+ if (!collection.modes.some((m) => m.id === modeId)) throw new (0, _chunkUXETV2NCcjs.TokenError)("not-found", `No mode \`${modeId}\` in \`${collection.name}\``);
4181
4236
  }
4182
4237
  const targets = new Set(ids);
4183
4238
  let changed = false;
@@ -4198,7 +4253,7 @@ function setCanvasTokenMode(nodes, ids, collectionId, modeId, state, options = {
4198
4253
  }
4199
4254
  function detachTokenBindings(nodes, state, variableIds, options = {}) {
4200
4255
  const only = variableIds ? new Set(variableIds) : null;
4201
- const isDetached = (id) => only ? only.has(id) : !_chunkWI7QJA7Acjs.getTokenVariable.call(void 0, state, id);
4256
+ const isDetached = (id) => only ? only.has(id) : !_chunkUXETV2NCcjs.getTokenVariable.call(void 0, state, id);
4202
4257
  const { modesOf } = modesResolver(nodes, state, options);
4203
4258
  let changed = false;
4204
4259
  const out = nodes.map((node) => {
@@ -4376,7 +4431,7 @@ function getNodeAnimation(node) {
4376
4431
  }
4377
4432
  function getAnimationTrack(node, property) {
4378
4433
  const track = _optionalChain([getNodeAnimation, 'call', _178 => _178(node), 'optionalAccess', _179 => _179.tracks, 'access', _180 => _180[property]]);
4379
- return track && Array.isArray(track.keyframes) && _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes).length > 0 ? track : void 0;
4434
+ return track && Array.isArray(track.keyframes) && _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes).length > 0 ? track : void 0;
4380
4435
  }
4381
4436
  function isNodeAnimated(node) {
4382
4437
  const animation = getNodeAnimation(node);
@@ -4413,7 +4468,7 @@ function getAnimationDuration(doc) {
4413
4468
  if (!animation) continue;
4414
4469
  for (const track of Object.values(animation.tracks)) {
4415
4470
  if (!track || track.enabled === false) continue;
4416
- const keys = _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes);
4471
+ const keys = _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes);
4417
4472
  if (keys.length > 0) end = Math.max(end, keys[keys.length - 1].time);
4418
4473
  }
4419
4474
  }
@@ -4430,7 +4485,7 @@ function evaluateAnimation(doc, time, options = {}) {
4430
4485
  for (const [key, track] of Object.entries(animation.tracks)) {
4431
4486
  if (!track || track.enabled === false) continue;
4432
4487
  const property = (_nullishCoalesce(options.properties, () => ( ANIMATABLE_PROPERTIES))).find((p) => p.key === key);
4433
- const value = _chunkGTELFJREcjs.evaluateTrack.call(void 0, track, time, _nullishCoalesce(_optionalChain([property, 'optionalAccess', _182 => _182.type]), () => ( "number")));
4488
+ const value = _chunkM5GLQQWGcjs.evaluateTrack.call(void 0, track, time, _nullishCoalesce(_optionalChain([property, 'optionalAccess', _182 => _182.type]), () => ( "number")));
4434
4489
  if (value === void 0) continue;
4435
4490
  (values ??= {})[key] = clampAnimationValue(property, value);
4436
4491
  }
@@ -4468,7 +4523,7 @@ var AnimationEditError = class extends Error {
4468
4523
  }
4469
4524
  };
4470
4525
  var MAX_KEYFRAME_REFS = 4096;
4471
- var sameTime = (a, b) => Math.abs(a - b) <= _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON;
4526
+ var sameTime = (a, b) => Math.abs(a - b) <= _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON;
4472
4527
  var refKey = (r) => `${r.nodeId}\0${r.property}`;
4473
4528
  function snapTimeToFrame(time, fps) {
4474
4529
  if (!(fps > 0)) return time;
@@ -4522,7 +4577,7 @@ var Draft = (_class4 = class {
4522
4577
  const current = getNodeAnimation(this.node(id));
4523
4578
  const tracks = {};
4524
4579
  for (const [key, track] of Object.entries(_nullishCoalesce(_optionalChain([current, 'optionalAccess', _184 => _184.tracks]), () => ( {})))) {
4525
- if (track) tracks[key] = { ...track, keyframes: _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes) };
4580
+ if (track) tracks[key] = { ...track, keyframes: _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes) };
4526
4581
  }
4527
4582
  animation = { ..._nullishCoalesce(current, () => ( {})), tracks };
4528
4583
  this.animations.set(id, animation);
@@ -4592,7 +4647,7 @@ function readAnimatableValue(node, property) {
4592
4647
  function getAnimatedValue(node, propertyKey, time, options = {}) {
4593
4648
  const property = getAnimatableProperty(propertyKey, options);
4594
4649
  const track = getAnimationTrack(node, propertyKey);
4595
- if (track && track.enabled !== false) return _chunkGTELFJREcjs.evaluateTrack.call(void 0, track, time, _nullishCoalesce(_optionalChain([property, 'optionalAccess', _190 => _190.type]), () => ( "number")));
4650
+ if (track && track.enabled !== false) return _chunkM5GLQQWGcjs.evaluateTrack.call(void 0, track, time, _nullishCoalesce(_optionalChain([property, 'optionalAccess', _190 => _190.type]), () => ( "number")));
4596
4651
  return property ? readAnimatableValue(node, property) : void 0;
4597
4652
  }
4598
4653
  function putKey(draft, nodeId, property, time, value, easing, inherit = true) {
@@ -4694,7 +4749,7 @@ function removeTrack(nodes, nodeId, property, options = {}) {
4694
4749
  if (!track) return nodes;
4695
4750
  const p = draft.property(property);
4696
4751
  if (options.keepValueAt !== void 0 && p && property !== "motionPath") {
4697
- const value = _chunkGTELFJREcjs.evaluateTrack.call(void 0, track, options.keepValueAt, p.type);
4752
+ const value = _chunkM5GLQQWGcjs.evaluateTrack.call(void 0, track, options.keepValueAt, p.type);
4698
4753
  if (value !== void 0) draft.writeNode(nodeId, (n3) => p.write(n3, value));
4699
4754
  }
4700
4755
  draft.setKeys(nodeId, property, []);
@@ -4723,10 +4778,10 @@ function moveKeyframes(nodes, refs, delta, options = {}) {
4723
4778
  low = Math.max(low, min - time);
4724
4779
  high = Math.min(high, max - time);
4725
4780
  }
4726
- if (low > high + _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON) throw new AnimationEditError("no_movement_range", "The keyframes have no common movement range.");
4781
+ if (low > high + _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON) throw new AnimationEditError("no_movement_range", "The keyframes have no common movement range.");
4727
4782
  const applied = Math.min(high, Math.max(low, delta));
4728
4783
  const moved = refs.map((ref) => ({ ...ref, time: draft.keys(ref.nodeId, ref.property)[draft.find(ref)].time + applied }));
4729
- if (Math.abs(applied) <= _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON) return { nodes, delta: 0, refs: refs.map((r) => ({ ...r })) };
4784
+ if (Math.abs(applied) <= _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON) return { nodes, delta: 0, refs: refs.map((r) => ({ ...r })) };
4730
4785
  retime(draft, refs, (time) => time + applied);
4731
4786
  return { nodes: draft.commit(), delta: applied, refs: moved };
4732
4787
  }
@@ -4772,7 +4827,7 @@ function getKeyframeTimes(nodes, options = {}) {
4772
4827
  if (!animation) continue;
4773
4828
  for (const [property, track] of Object.entries(animation.tracks)) {
4774
4829
  const skip = _nullishCoalesce(excluded.get(refKey({ nodeId: node.id, property })), () => ( []));
4775
- for (const k of _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, _optionalChain([track, 'optionalAccess', _192 => _192.keyframes]))) if (!skip.some((t) => sameTime(t, k.time))) times.push(k.time);
4830
+ for (const k of _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, _optionalChain([track, 'optionalAccess', _192 => _192.keyframes]))) if (!skip.some((t) => sameTime(t, k.time))) times.push(k.time);
4776
4831
  }
4777
4832
  }
4778
4833
  times.sort((a, b) => a - b);
@@ -4891,7 +4946,7 @@ function recordAnimationChanges(base, before, after, time, options = {}) {
4891
4946
  };
4892
4947
  if (animated) {
4893
4948
  if (changed) {
4894
- const keys = _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes).filter((k) => !sameTime(k.time, t));
4949
+ const keys = _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes).filter((k) => !sameTime(k.time, t));
4895
4950
  const before2 = [...keys].reverse().find((k) => k.time < t);
4896
4951
  keys.push({ time: t, value: now, ..._optionalChain([before2, 'optionalAccess', _194 => _194.easing]) !== void 0 ? { easing: before2.easing } : {} });
4897
4952
  tracksOf()[p.key] = { ...track, keyframes: keys.sort((a, b) => a.time - b.time) };
@@ -4900,7 +4955,7 @@ function recordAnimationChanges(base, before, after, time, options = {}) {
4900
4955
  restore();
4901
4956
  } else if (changed && options.recording && !track) {
4902
4957
  const keys = [];
4903
- if (t > _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON && was !== void 0) keys.push({ time: 0, value: was });
4958
+ if (t > _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON && was !== void 0) keys.push({ time: 0, value: was });
4904
4959
  keys.push({ time: t, value: now });
4905
4960
  tracksOf()[p.key] = { keyframes: keys };
4906
4961
  keyed.push({ nodeId: next.id, property: p.key, time: t });
@@ -5027,7 +5082,7 @@ function getCssPropertyAnimations(nodes, nodeId, options = {}) {
5027
5082
  const tracks = /* @__PURE__ */ new Map();
5028
5083
  for (const [key, track] of Object.entries(animation.tracks)) {
5029
5084
  if (!track || track.enabled === false || !map[key]) continue;
5030
- const keys = _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes);
5085
+ const keys = _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes);
5031
5086
  if (keys.length > 0) tracks.set(key, keys);
5032
5087
  }
5033
5088
  const typeOf = (key) => _nullishCoalesce(_optionalChain([ANIMATABLE_PROPERTIES, 'access', _199 => _199.find, 'call', _200 => _200((p) => p.key === key), 'optionalAccess', _201 => _201.type]), () => ( "number"));
@@ -5040,7 +5095,7 @@ function getCssPropertyAnimations(nodes, nodeId, options = {}) {
5040
5095
  for (const [css, sources] of groups) {
5041
5096
  const camel2 = map[sources[0]].camel;
5042
5097
  const keysOf = (k) => tracks.get(k);
5043
- const evalAt = (k, t) => _chunkGTELFJREcjs.evaluateTrack.call(void 0, keysOf(k), t, typeOf(k));
5098
+ const evalAt = (k, t) => _chunkM5GLQQWGcjs.evaluateTrack.call(void 0, keysOf(k), t, typeOf(k));
5044
5099
  const allTimes = sources.flatMap((k) => keysOf(k).map((x) => x.time));
5045
5100
  if (sources.includes("motionPath")) {
5046
5101
  const position = (t) => {
@@ -5136,13 +5191,13 @@ function isCssExportExact(nodes, nodeId) {
5136
5191
 
5137
5192
  // src/canvas/animation/timeline.ts
5138
5193
  function isKeyframeSelected(selection, ref) {
5139
- return selection.some((s) => s.nodeId === ref.nodeId && s.property === ref.property && Math.abs(s.time - ref.time) <= _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON);
5194
+ return selection.some((s) => s.nodeId === ref.nodeId && s.property === ref.property && Math.abs(s.time - ref.time) <= _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON);
5140
5195
  }
5141
5196
  var defaultLabel = (node) => typeof _optionalChain([node, 'access', _202 => _202.data, 'optionalAccess', _203 => _203.label]) === "string" && node.data.label.trim() ? node.data.label : node.id;
5142
5197
  function getTimelineRows(nodes, ids, options = {}) {
5143
5198
  const byId = new Map(nodes.map((n3) => [n3.id, n3]));
5144
5199
  const selection = _nullishCoalesce(options.selection, () => ( []));
5145
- const labelOf = _nullishCoalesce(options.labelOf, () => ( defaultLabel));
5200
+ const labelOf2 = _nullishCoalesce(options.labelOf, () => ( defaultLabel));
5146
5201
  const rows = [];
5147
5202
  for (const id of new Set(ids)) {
5148
5203
  const node = byId.get(id);
@@ -5153,11 +5208,11 @@ function getTimelineRows(nodes, ids, options = {}) {
5153
5208
  rows.push({
5154
5209
  id: `${id}:${property}`,
5155
5210
  nodeId: id,
5156
- nodeLabel: labelOf(node),
5211
+ nodeLabel: labelOf2(node),
5157
5212
  property,
5158
5213
  label,
5159
5214
  enabled: track.enabled !== false,
5160
- keyframes: _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes).map((k) => {
5215
+ keyframes: _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes).map((k) => {
5161
5216
  const ref = { nodeId: id, property, time: k.time };
5162
5217
  const selected = isKeyframeSelected(selection, ref);
5163
5218
  return {
@@ -5217,7 +5272,7 @@ function createCanvasAnimationController(options) {
5217
5272
  }
5218
5273
  return _nullishCoalesce(fixedDuration, () => ( durationValue));
5219
5274
  };
5220
- const player = new (0, _chunkGTELFJREcjs.AnimationPlayer)({
5275
+ const player = new (0, _chunkM5GLQQWGcjs.AnimationPlayer)({
5221
5276
  clock: options.clock,
5222
5277
  duration,
5223
5278
  loop: options.loop,
@@ -5296,7 +5351,7 @@ function createCanvasAnimationController(options) {
5296
5351
  const byId = new Map(options.getNodes().map((n3) => [n3.id, n3]));
5297
5352
  const kept = selection.filter((ref) => {
5298
5353
  const track = _optionalChain([getNodeAnimation, 'call', _216 => _216(byId.get(ref.nodeId)), 'optionalAccess', _217 => _217.tracks, 'access', _218 => _218[ref.property]]);
5299
- return !!track && _chunkGTELFJREcjs.normalizeKeyframes.call(void 0, track.keyframes).some((k) => Math.abs(k.time - ref.time) <= _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON);
5354
+ return !!track && _chunkM5GLQQWGcjs.normalizeKeyframes.call(void 0, track.keyframes).some((k) => Math.abs(k.time - ref.time) <= _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON);
5300
5355
  });
5301
5356
  if (kept.length !== selection.length) selection = kept;
5302
5357
  }
@@ -5368,7 +5423,7 @@ function createCanvasAnimationController(options) {
5368
5423
  nextKeyframe(ids = selectedIds()) {
5369
5424
  const list = [...ids];
5370
5425
  const times = getKeyframeTimes(options.getNodes(), list.length ? { ids: list } : {});
5371
- const next = times.find((t) => t > player.currentTime + _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON);
5426
+ const next = times.find((t) => t > player.currentTime + _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON);
5372
5427
  if (next === void 0) return null;
5373
5428
  player.seek(next);
5374
5429
  return next;
@@ -5376,7 +5431,7 @@ function createCanvasAnimationController(options) {
5376
5431
  previousKeyframe(ids = selectedIds()) {
5377
5432
  const list = [...ids];
5378
5433
  const times = getKeyframeTimes(options.getNodes(), list.length ? { ids: list } : {});
5379
- const prev = [...times].reverse().find((t) => t < player.currentTime - _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON);
5434
+ const prev = [...times].reverse().find((t) => t < player.currentTime - _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON);
5380
5435
  if (prev === void 0) return null;
5381
5436
  player.seek(prev);
5382
5437
  return prev;
@@ -8347,7 +8402,7 @@ function rankdir(direction) {
8347
8402
  }
8348
8403
  function autoLayoutDiagram(graph, options = {}) {
8349
8404
  const measure = _nullishCoalesce(options.measure, () => ( estimateDiagramNodeSize));
8350
- const custom = _chunkZVNAMTFOcjs.getFamilyLayout.call(void 0, options.family);
8405
+ const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, options.family);
8351
8406
  if (custom) return custom(graph, { v: 1 }, { ...options, measure });
8352
8407
  const nodeSep = _nullishCoalesce(options.nodeSep, () => ( 48));
8353
8408
  const rankSep = _nullishCoalesce(options.rankSep, () => ( 72));
@@ -8447,7 +8502,7 @@ function push(map, key, value) {
8447
8502
  }
8448
8503
  function ensureDiagramLayout(graph, meta, options) {
8449
8504
  const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _342 => _342.measure]), () => ( estimateDiagramNodeSize));
8450
- const custom = _chunkZVNAMTFOcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _343 => _343.family]));
8505
+ const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _343 => _343.family]));
8451
8506
  if (custom) return custom(graph, meta, { ..._nullishCoalesce(options, () => ( {})), measure });
8452
8507
  const stored = _nullishCoalesce(meta.layout, () => ( {}));
8453
8508
  const allIds = [...graph.nodes.map((n3) => n3.id), ...graph.groups.map((g) => g.id)];
@@ -8714,7 +8769,7 @@ var DiagramStream = (_class6 = class {
8714
8769
  /** Reads the source so far. `complete` when nothing more will arrive. */
8715
8770
  update(source, complete = false) {
8716
8771
  const text2 = streamedDiagramText(source);
8717
- const parsed = _chunkZVNAMTFOcjs.parseMermaid.call(void 0, text2);
8772
+ const parsed = _chunk3FSUJIXNcjs.parseMermaid.call(void 0, text2);
8718
8773
  const document2 = !complete ? { ...parsed, graph: connectedDiagramOnly(parsed.graph) } : parsed;
8719
8774
  if (document2.tier !== "editable" || !document2.graph.nodes.length) return { document: document2, layout: this.layout && complete ? null : this.layout, relaid: false };
8720
8775
  const key = fingerprint(document2.graph);
@@ -8795,9 +8850,9 @@ function estimateTextWidth2(text2, size2) {
8795
8850
  }
8796
8851
 
8797
8852
  // src/canvas/mermaid/families/pie.ts
8798
- var M = _chunkZVNAMTFOcjs.PIE_METRICS;
8853
+ var M = _chunk3FSUJIXNcjs.PIE_METRICS;
8799
8854
  var pieScene = ({ graph, theme }) => {
8800
- const geo = _chunkZVNAMTFOcjs.pieGeometry.call(void 0, graph);
8855
+ const geo = _chunk3FSUJIXNcjs.pieGeometry.call(void 0, graph);
8801
8856
  const marks = [];
8802
8857
  for (const slice of geo.slices) {
8803
8858
  if (!slice.drawn) continue;
@@ -8871,7 +8926,7 @@ function xyChartSpec(graph, palette) {
8871
8926
  );
8872
8927
  }
8873
8928
  const bars = graph.nodes.some((n3) => n3.shape === "bar");
8874
- return _chunkR3P2M7HUcjs.createChartSpec.call(void 0, {
8929
+ return _chunkUVXTOZ2Bcjs.createChartSpec.call(void 0, {
8875
8930
  type: bars ? "bar" : "line",
8876
8931
  title: _nullishCoalesce(graph.title, () => ( "")),
8877
8932
  categories,
@@ -8885,7 +8940,7 @@ function xyChartSpec(graph, palette) {
8885
8940
  }
8886
8941
  function radarChartSpec(graph, palette) {
8887
8942
  const data = _nullishCoalesce(graph.data, () => ( {}));
8888
- return _chunkR3P2M7HUcjs.createChartSpec.call(void 0, {
8943
+ return _chunkUVXTOZ2Bcjs.createChartSpec.call(void 0, {
8889
8944
  type: "radar",
8890
8945
  title: _nullishCoalesce(graph.title, () => ( "")),
8891
8946
  categories: Array.isArray(data.axes) ? data.axes.map(String) : [],
@@ -8932,18 +8987,18 @@ function translatePath(d, dx, dy) {
8932
8987
  return d.replace(/-?\d*\.?\d+(?:e-?\d+)?/gi, (v) => String(Math.round((Number(v) + (i++ % 2 === 0 ? dx : dy)) * 100) / 100));
8933
8988
  }
8934
8989
  var xyChartScene = ({ graph, theme }) => {
8935
- const box = _chunkZVNAMTFOcjs.XY_CHART_BOX;
8936
- const scene = _chunkSBQVEBSUcjs.layoutChart.call(void 0, xyChartSpec(graph, theme.palette), { width: box.width, height: box.height, theme: chartTheme(theme) });
8990
+ const box = _chunk3FSUJIXNcjs.XY_CHART_BOX;
8991
+ const scene = _chunkQO2T6KA5cjs.layoutChart.call(void 0, xyChartSpec(graph, theme.palette), { width: box.width, height: box.height, theme: chartTheme(theme) });
8937
8992
  return toDiagramMarks(scene.marks, box.x, box.y);
8938
8993
  };
8939
8994
  var radarScene = ({ graph, theme }) => {
8940
- const box = _chunkZVNAMTFOcjs.RADAR_CHART_BOX;
8941
- const scene = _chunkSBQVEBSUcjs.layoutChart.call(void 0, radarChartSpec(graph, theme.palette), { width: box.width, height: box.height, theme: chartTheme(theme) });
8995
+ const box = _chunk3FSUJIXNcjs.RADAR_CHART_BOX;
8996
+ const scene = _chunkQO2T6KA5cjs.layoutChart.call(void 0, radarChartSpec(graph, theme.palette), { width: box.width, height: box.height, theme: chartTheme(theme) });
8942
8997
  return toDiagramMarks(scene.marks, box.x, box.y);
8943
8998
  };
8944
8999
 
8945
9000
  // src/canvas/mermaid/families/sequence.ts
8946
- var M2 = _chunkZVNAMTFOcjs.SEQUENCE_METRICS;
9001
+ var M2 = _chunk3FSUJIXNcjs.SEQUENCE_METRICS;
8947
9002
  var LABEL_SIZE = 14;
8948
9003
  var LINE_HEIGHT = 1.25;
8949
9004
  var SMALL_SIZE = 13;
@@ -9035,7 +9090,7 @@ function crossMark(key, target, x, y, dir, stroke) {
9035
9090
  };
9036
9091
  }
9037
9092
  var sequenceScene = ({ graph, theme }) => {
9038
- const geo = _chunkZVNAMTFOcjs.sequenceGeometry.call(void 0, graph);
9093
+ const geo = _chunk3FSUJIXNcjs.sequenceGeometry.call(void 0, graph);
9039
9094
  const marks = [];
9040
9095
  for (const group of graph.groups) {
9041
9096
  const box = geo.boxes.get(group.id);
@@ -9179,7 +9234,7 @@ var sequenceScene = ({ graph, theme }) => {
9179
9234
  };
9180
9235
 
9181
9236
  // src/canvas/mermaid/families/journey.ts
9182
- var M3 = _chunkZVNAMTFOcjs.JOURNEY_METRICS;
9237
+ var M3 = _chunk3FSUJIXNcjs.JOURNEY_METRICS;
9183
9238
  var TITLE_SIZE2 = 32;
9184
9239
  function actorColor(theme, slot) {
9185
9240
  return sceneColor(theme, M3.sectionColours + slot);
@@ -9225,7 +9280,7 @@ function boxLabel(key, role, target, text2, box, fill) {
9225
9280
  }));
9226
9281
  }
9227
9282
  var journeyScene = ({ graph, theme }) => {
9228
- const geo = _chunkZVNAMTFOcjs.journeyGeometry.call(void 0, graph);
9283
+ const geo = _chunk3FSUJIXNcjs.journeyGeometry.call(void 0, graph);
9229
9284
  const marks = [];
9230
9285
  const ink = theme.mutedText;
9231
9286
  if (graph.title)
@@ -9322,10 +9377,10 @@ var journeyScene = ({ graph, theme }) => {
9322
9377
  };
9323
9378
 
9324
9379
  // src/canvas/mermaid/families/quadrant.ts
9325
- var M4 = _chunkZVNAMTFOcjs.QUADRANT_METRICS;
9380
+ var M4 = _chunk3FSUJIXNcjs.QUADRANT_METRICS;
9326
9381
  var QUADRANT_TINT = 0.18;
9327
9382
  var quadrantScene = ({ graph, theme }) => {
9328
- const geo = _chunkZVNAMTFOcjs.quadrantGeometry.call(void 0, graph);
9383
+ const geo = _chunk3FSUJIXNcjs.quadrantGeometry.call(void 0, graph);
9329
9384
  const marks = [];
9330
9385
  const groups = new Map(graph.groups.map((g) => [g.id, g]));
9331
9386
  for (const q of geo.quadrants) {
@@ -9411,7 +9466,7 @@ var quadrantScene = ({ graph, theme }) => {
9411
9466
  };
9412
9467
 
9413
9468
  // src/canvas/mermaid/families/gitgraph.ts
9414
- var M5 = _chunkZVNAMTFOcjs.GIT_METRICS;
9469
+ var M5 = _chunk3FSUJIXNcjs.GIT_METRICS;
9415
9470
  function rot([dx, dy], deg) {
9416
9471
  const a = deg * Math.PI / 180;
9417
9472
  const c = Math.cos(a);
@@ -9481,7 +9536,7 @@ function commitSymbol(c, theme) {
9481
9536
  }
9482
9537
  }
9483
9538
  function commitLabel(c, text2, direction, theme) {
9484
- const w = _chunkZVNAMTFOcjs.estimateTextWidth.call(void 0, text2, M5.labelFontSize);
9539
+ const w = _chunk3FSUJIXNcjs.estimateTextWidth.call(void 0, text2, M5.labelFontSize);
9485
9540
  const anchor = direction === "LR" ? [1 - 0.026 * w, 18.1 - 0.0136 * w] : [-14.9, 9.2];
9486
9541
  const ax = c.x + anchor[0];
9487
9542
  const ay = c.y + anchor[1];
@@ -9496,7 +9551,7 @@ function commitLabel(c, text2, direction, theme) {
9496
9551
  ];
9497
9552
  }
9498
9553
  function commitTag(c, text2, index, direction, theme) {
9499
- const w = _chunkZVNAMTFOcjs.estimateTextWidth.call(void 0, text2, M5.labelFontSize);
9554
+ const w = _chunk3FSUJIXNcjs.estimateTextWidth.call(void 0, text2, M5.labelFontSize);
9500
9555
  const h2 = M5.labelTextHeight / 2;
9501
9556
  const key = `${c.id}:${index}`;
9502
9557
  let points;
@@ -9548,7 +9603,7 @@ function commitTag(c, text2, index, direction, theme) {
9548
9603
  ];
9549
9604
  }
9550
9605
  var gitGraphScene = ({ graph, theme }) => {
9551
- const geo = _chunkZVNAMTFOcjs.gitGraphGeometry.call(void 0, graph);
9606
+ const geo = _chunk3FSUJIXNcjs.gitGraphGeometry.call(void 0, graph);
9552
9607
  const marks = [];
9553
9608
  for (const lane of geo.lanes) {
9554
9609
  const { x1, y1, x2, y2 } = lane.line;
@@ -9603,7 +9658,7 @@ var gitGraphScene = ({ graph, theme }) => {
9603
9658
  };
9604
9659
 
9605
9660
  // src/canvas/mermaid/families/mindmap.ts
9606
- var M6 = _chunkZVNAMTFOcjs.MINDMAP_METRICS;
9661
+ var M6 = _chunk3FSUJIXNcjs.MINDMAP_METRICS;
9607
9662
  var round3 = (v) => Math.round(v * 100) / 100;
9608
9663
  function displayLabel(label) {
9609
9664
  let text2 = label;
@@ -9749,7 +9804,7 @@ function iconGlyph(icon) {
9749
9804
  return (_nullishCoalesce(word[0], () => ( "?"))).toUpperCase();
9750
9805
  }
9751
9806
  var mindmapScene = ({ graph, theme }) => {
9752
- const geo = _chunkZVNAMTFOcjs.mindmapGeometry.call(void 0, graph);
9807
+ const geo = _chunk3FSUJIXNcjs.mindmapGeometry.call(void 0, graph);
9753
9808
  const marks = [];
9754
9809
  for (const e of geo.edges) {
9755
9810
  const a = geo.topics.get(e.source);
@@ -9848,7 +9903,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9848
9903
  for (const group of [...graph.groups].sort((a, b) => depth2(a.id) - depth2(b.id))) {
9849
9904
  const b = box(group.id);
9850
9905
  if (!b) continue;
9851
- const text2 = _chunkZVNAMTFOcjs.c4BoundaryText.call(void 0, group);
9906
+ const text2 = _chunk3FSUJIXNcjs.c4BoundaryText.call(void 0, group);
9852
9907
  const cx = b.x + b.width / 2;
9853
9908
  marks.push({ kind: "rect", key: `boundary:${group.id}`, role: "boundary", target: group.id, ...b, radius: 2.5, fill: "none", stroke: theme.groupStroke, strokeWidth: 1, dash: text2.solid ? void 0 : "7 7" });
9854
9909
  marks.push({ kind: "text", key: `boundary-label:${group.id}`, role: "boundary-label", target: group.id, x: cx, y: b.y + text2.labelY, text: text2.label, anchor: "middle", baseline: "middle", size: 16, weight: 700, fill: theme.groupText });
@@ -9862,7 +9917,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9862
9917
  const from = box(edge.source);
9863
9918
  const to = box(edge.target);
9864
9919
  if (!from || !to) return;
9865
- const geo = _chunkZVNAMTFOcjs.c4RelGeometry.call(void 0, from, to, index);
9920
+ const geo = _chunk3FSUJIXNcjs.c4RelGeometry.call(void 0, from, to, index);
9866
9921
  const { start, end, control } = geo;
9867
9922
  const style = styleOf(edge.data);
9868
9923
  const line4 = style.lineColor || theme.edge;
@@ -9877,8 +9932,8 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9877
9932
  strokeWidth: 1
9878
9933
  });
9879
9934
  const head = (key, points) => marks.push({ kind: "path", key, role: "arrow", target: edge.id, d: `M${points.split(" ").join(" L")} Z`, fill: line4 });
9880
- if (edge.arrowEnd !== "none") head(`arrow-end:${edge.id}`, _chunkZVNAMTFOcjs.c4ArrowHead.call(void 0, end, _nullishCoalesce(control, () => ( start))));
9881
- if (edge.arrowStart !== "none") head(`arrow-start:${edge.id}`, _chunkZVNAMTFOcjs.c4ArrowHead.call(void 0, start, _nullishCoalesce(control, () => ( end))));
9935
+ if (edge.arrowEnd !== "none") head(`arrow-end:${edge.id}`, _chunk3FSUJIXNcjs.c4ArrowHead.call(void 0, end, _nullishCoalesce(control, () => ( start))));
9936
+ if (edge.arrowStart !== "none") head(`arrow-start:${edge.id}`, _chunk3FSUJIXNcjs.c4ArrowHead.call(void 0, start, _nullishCoalesce(control, () => ( end))));
9882
9937
  const offsetX = parseInt(_nullishCoalesce(style.offsetX, () => ( "0")), 10) || 0;
9883
9938
  const offsetY = parseInt(_nullishCoalesce(style.offsetY, () => ( "0")), 10) || 0;
9884
9939
  const left = geo.label.x + offsetX;
@@ -9908,7 +9963,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9908
9963
  for (const node of graph.nodes) {
9909
9964
  const b = box(node.id);
9910
9965
  if (!b) continue;
9911
- const geo = _chunkZVNAMTFOcjs.c4ElementGeometry.call(void 0, node);
9966
+ const geo = _chunk3FSUJIXNcjs.c4ElementGeometry.call(void 0, node);
9912
9967
  const style = styleOf(node.data);
9913
9968
  const colors = colorsOf(geo.type);
9914
9969
  const fill = style.bgColor || colors.bg;
@@ -9978,7 +10033,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9978
10033
  };
9979
10034
 
9980
10035
  // src/canvas/mermaid/families/architecture.ts
9981
- var A = _chunkZVNAMTFOcjs.ARCH_METRICS;
10036
+ var A = _chunk3FSUJIXNcjs.ARCH_METRICS;
9982
10037
  var ICON_BG = "#087ebf";
9983
10038
  var ICON_FG = "#ffffff";
9984
10039
  var r2 = (n3) => Math.round(n3 * 100) / 100;
@@ -10210,15 +10265,15 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10210
10265
  const to = box(edge.target);
10211
10266
  if (!from || !to) continue;
10212
10267
  const d = _nullishCoalesce(edge.data, () => ( {}));
10213
- const sourceSide = _chunkZVNAMTFOcjs.isSide.call(void 0, d.sourceSide) ? d.sourceSide : "R";
10214
- const targetSide = _chunkZVNAMTFOcjs.isSide.call(void 0, d.targetSide) ? d.targetSide : "L";
10215
- const s = _chunkZVNAMTFOcjs.shiftEndpoint.call(void 0, port(from, sourceSide), sourceSide, { group: !!d.sourceGroup, junction: junctions.has(edge.source) });
10216
- const t = _chunkZVNAMTFOcjs.shiftEndpoint.call(void 0, port(to, targetSide), targetSide, { group: !!d.targetGroup, junction: junctions.has(edge.target) });
10217
- const route = _chunkZVNAMTFOcjs.architectureEdgeRoute.call(void 0, s, sourceSide, t, targetSide);
10268
+ const sourceSide = _chunk3FSUJIXNcjs.isSide.call(void 0, d.sourceSide) ? d.sourceSide : "R";
10269
+ const targetSide = _chunk3FSUJIXNcjs.isSide.call(void 0, d.targetSide) ? d.targetSide : "L";
10270
+ const s = _chunk3FSUJIXNcjs.shiftEndpoint.call(void 0, port(from, sourceSide), sourceSide, { group: !!d.sourceGroup, junction: junctions.has(edge.source) });
10271
+ const t = _chunk3FSUJIXNcjs.shiftEndpoint.call(void 0, port(to, targetSide), targetSide, { group: !!d.targetGroup, junction: junctions.has(edge.target) });
10272
+ const route = _chunk3FSUJIXNcjs.architectureEdgeRoute.call(void 0, s, sourceSide, t, targetSide);
10218
10273
  marks.push({ kind: "path", key: `edge:${edge.id}`, role: "edge", target: edge.id, d: route.points.map((p, i) => `${i ? "L" : "M"}${p.x},${p.y}`).join(" "), fill: "none", stroke: theme.edge, strokeWidth: 3 });
10219
10274
  const head = (key, points) => marks.push({ kind: "path", key, role: "arrow", target: edge.id, d: `M${points.split(" ").join(" L")} Z`, fill: theme.edge });
10220
- if (edge.arrowStart !== "none") head(`arrow-start:${edge.id}`, _chunkZVNAMTFOcjs.architectureArrow.call(void 0, s, sourceSide));
10221
- if (edge.arrowEnd !== "none") head(`arrow-end:${edge.id}`, _chunkZVNAMTFOcjs.architectureArrow.call(void 0, t, targetSide));
10275
+ if (edge.arrowStart !== "none") head(`arrow-start:${edge.id}`, _chunk3FSUJIXNcjs.architectureArrow.call(void 0, s, sourceSide));
10276
+ if (edge.arrowEnd !== "none") head(`arrow-end:${edge.id}`, _chunk3FSUJIXNcjs.architectureArrow.call(void 0, t, targetSide));
10222
10277
  if (edge.label)
10223
10278
  labels.push({ kind: "text", key: `edge-label:${edge.id}`, role: "edge-label", target: edge.id, x: route.label.x, y: route.label.y, text: edge.label, anchor: "middle", baseline: "middle", size: A.fontSize, rotate: route.rotate || void 0, fill: theme.text });
10224
10279
  }
@@ -10236,7 +10291,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10236
10291
  }
10237
10292
  marks.push(...iconMarks(`service:${node.id}`, node.id, iconOf(node.data), b.x, b.y, b.width, theme));
10238
10293
  if (_optionalChain([node, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.untitled])) continue;
10239
- _chunkZVNAMTFOcjs.serviceLabelLines.call(void 0, _nullishCoalesce(node.label, () => ( ""))).forEach(
10294
+ _chunk3FSUJIXNcjs.serviceLabelLines.call(void 0, _nullishCoalesce(node.label, () => ( ""))).forEach(
10240
10295
  (text2, i) => marks.push({ kind: "text", key: `service-label:${node.id}:${i}`, role: "service-label", target: node.id, x: b.x + b.width / 2, y: b.y + b.height + (i + 0.5) * A.lineHeight, text: text2, anchor: "middle", baseline: "middle", size: A.fontSize, fill: theme.text })
10241
10296
  );
10242
10297
  }
@@ -10247,7 +10302,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10247
10302
  };
10248
10303
 
10249
10304
  // src/canvas/mermaid/families/gantt.ts
10250
- var M7 = _chunkZVNAMTFOcjs.GANTT_METRICS;
10305
+ var M7 = _chunk3FSUJIXNcjs.GANTT_METRICS;
10251
10306
  var CRIT = 3;
10252
10307
  function statusOf(node) {
10253
10308
  const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _404 => _404.data, 'optionalAccess', _405 => _405.tags])) ? node.data.tags.map(String) : [];
@@ -10299,7 +10354,7 @@ function stepPath(from, to) {
10299
10354
  return `M ${sx} ${sy} L ${sx + offset} ${sy} L ${sx + offset} ${my} L ${tx - offset} ${my} L ${tx - offset} ${ty} L ${tx} ${ty}`;
10300
10355
  }
10301
10356
  var ganttScene = ({ graph, selection, theme }) => {
10302
- const geo = _chunkZVNAMTFOcjs.ganttGeometry.call(void 0, graph);
10357
+ const geo = _chunk3FSUJIXNcjs.ganttGeometry.call(void 0, graph);
10303
10358
  const nodes = new Map(graph.nodes.map((n3) => [n3.id, n3]));
10304
10359
  const marks = [];
10305
10360
  const left = geo.chartX - M7.labelWidth;
@@ -10381,7 +10436,7 @@ var ganttScene = ({ graph, selection, theme }) => {
10381
10436
  };
10382
10437
 
10383
10438
  // src/canvas/mermaid/families/timeline.ts
10384
- var M8 = _chunkZVNAMTFOcjs.TIMELINE_METRICS;
10439
+ var M8 = _chunk3FSUJIXNcjs.TIMELINE_METRICS;
10385
10440
  var RADIUS = 5;
10386
10441
  var TEXT_TOP = 17;
10387
10442
  var TEXT_LINE = M8.fontSize * 1.1;
@@ -10399,7 +10454,7 @@ function wrap(text2, width) {
10399
10454
  let line4 = "";
10400
10455
  for (const word of part.split(/\s+/).filter(Boolean)) {
10401
10456
  const next = line4 ? `${line4} ${word}` : word;
10402
- if (line4 && _chunkZVNAMTFOcjs.textWidth.call(void 0, next) > width) {
10457
+ if (line4 && _chunk3FSUJIXNcjs.textWidth.call(void 0, next) > width) {
10403
10458
  out.push(line4);
10404
10459
  line4 = word;
10405
10460
  } else line4 = next;
@@ -10428,7 +10483,7 @@ function arrowLine(key, x1, y1, x2, y2, width, dashed, colour) {
10428
10483
  ];
10429
10484
  }
10430
10485
  var timelineScene = ({ graph, theme }) => {
10431
- const geo = _chunkZVNAMTFOcjs.timelineGeometry.call(void 0, graph);
10486
+ const geo = _chunk3FSUJIXNcjs.timelineGeometry.call(void 0, graph);
10432
10487
  const marks = [];
10433
10488
  const nodes = new Map(graph.nodes.map((n3) => [n3.id, n3]));
10434
10489
  const groups = new Map(graph.groups.map((g) => [g.id, g]));
@@ -11744,7 +11799,7 @@ function createCanvasEditorDocument(options) {
11744
11799
  options.setEdges(doc.edges.map((e) => ({ ...e })));
11745
11800
  if (scenes2) scenes2.load(_nullishCoalesce(doc.scenes, () => ( [])));
11746
11801
  };
11747
- return _chunkM4MIZPQIcjs.defineEditorDocument.call(void 0, {
11802
+ return _chunkSJ2CPTQCcjs.defineEditorDocument.call(void 0, {
11748
11803
  kind: "canvas",
11749
11804
  get: snapshot,
11750
11805
  load: (document2, { history: mode }) => {
@@ -11802,6 +11857,295 @@ function createCanvasGestureRecorder(options) {
11802
11857
  };
11803
11858
  }
11804
11859
 
11860
+ // src/canvas/explosionLayout.ts
11861
+ var explosionEdgeId = (sourceId, targetId) => `explode:${sourceId}:${targetId}`;
11862
+ function computeCanvasExplosionLayout(params) {
11863
+ const {
11864
+ existingNodes,
11865
+ existingEdges = [],
11866
+ originNode,
11867
+ childNodes,
11868
+ childEdges = [],
11869
+ strategy = "directional",
11870
+ options,
11871
+ reflowOptions,
11872
+ connectParentToChildren = false,
11873
+ createEdge,
11874
+ getNodesBounds
11875
+ } = params;
11876
+ const existingIds = new Set(existingNodes.map((n3) => n3.id));
11877
+ if (!existingIds.has(originNode.id)) {
11878
+ throw new Error(`The origin node "${originNode.id}" is not in existingNodes; pass the canvas nodes including the origin.`);
11879
+ }
11880
+ const childIds = /* @__PURE__ */ new Set();
11881
+ for (const child of childNodes) {
11882
+ if (existingIds.has(child.id)) {
11883
+ throw new Error(`Child node id "${child.id}" is already on the canvas; give exploded children unique ids.`);
11884
+ }
11885
+ if (childIds.has(child.id)) throw new Error(`Child node id "${child.id}" is repeated; give exploded children unique ids.`);
11886
+ childIds.add(child.id);
11887
+ }
11888
+ const children = childNodes.map((child) => ({ ...child, position: { ...child.position } }));
11889
+ const edges = [...childEdges];
11890
+ const makeEdge = _nullishCoalesce(createEdge, () => ( ((source, target) => ({ id: explosionEdgeId(source, target), type: "default", source, target }))));
11891
+ const connect = (child) => {
11892
+ if (!edges.some((e) => e.source === originNode.id && e.target === child.id)) edges.push(makeEdge(originNode.id, child.id));
11893
+ };
11894
+ if (connectParentToChildren === true || connectParentToChildren === "all") children.forEach(connect);
11895
+ else if (connectParentToChildren === "first" && children.length > 0) connect(children[0]);
11896
+ let displacedPositions;
11897
+ if (children.length === 0 || strategy === "none") {
11898
+ displacedPositions = /* @__PURE__ */ new Map();
11899
+ } else if (strategy === "dagre") {
11900
+ displacedPositions = calculateReflowDisplacement({
11901
+ existingNodes,
11902
+ existingEdges,
11903
+ originNode,
11904
+ childNodes: children,
11905
+ childEdges: edges,
11906
+ options: reflowOptions
11907
+ });
11908
+ } else {
11909
+ displacedPositions = calculateDirectionalDisplacement({
11910
+ existingNodes,
11911
+ originNode,
11912
+ childNodes: children,
11913
+ getNodesBounds,
11914
+ options
11915
+ });
11916
+ }
11917
+ const byId = new Map(existingNodes.map((n3) => [n3.id, n3]));
11918
+ const originalPositions = /* @__PURE__ */ new Map();
11919
+ let totalDisplacementDelta = 0;
11920
+ for (const [id, to] of displacedPositions) {
11921
+ const from = byId.get(id).position;
11922
+ originalPositions.set(id, { ...from });
11923
+ totalDisplacementDelta = Math.max(totalDisplacementDelta, Math.abs(to.x - from.x), Math.abs(to.y - from.y));
11924
+ }
11925
+ return {
11926
+ displacedPositions,
11927
+ originalPositions,
11928
+ childNodes: children,
11929
+ childEdges: edges,
11930
+ childBounds: getNodesBounds ? getNodesBounds(children) : computeNodesBoundingBox(children),
11931
+ totalDisplacementDelta
11932
+ };
11933
+ }
11934
+
11935
+ // src/canvas/explosionState.ts
11936
+ function createCanvasExplosionStateController(options = {}) {
11937
+ const duration = _nullishCoalesce(options.collapseDurationMs, () => ( 380));
11938
+ if (!Number.isFinite(duration) || duration < 0) {
11939
+ throw new RangeError(`collapseDurationMs must be a finite number >= 0 (got ${duration}).`);
11940
+ }
11941
+ let snapshot = { activeId: _nullishCoalesce(options.initialActiveId, () => ( null)), collapsingId: null };
11942
+ let timer = null;
11943
+ let destroyed = false;
11944
+ const listeners = /* @__PURE__ */ new Set();
11945
+ const clearTimer = () => {
11946
+ if (timer !== null) clearTimeout(timer);
11947
+ timer = null;
11948
+ };
11949
+ const set = (next) => {
11950
+ if (next.activeId === snapshot.activeId && next.collapsingId === snapshot.collapsingId) return;
11951
+ snapshot = next;
11952
+ for (const listener of [...listeners]) listener();
11953
+ };
11954
+ const finishCollapse = () => {
11955
+ clearTimer();
11956
+ if (snapshot.collapsingId !== null) set({ activeId: snapshot.activeId, collapsingId: null });
11957
+ };
11958
+ const explode = (nodeId) => {
11959
+ if (destroyed) return false;
11960
+ if (typeof nodeId !== "string" || nodeId === "") throw new TypeError("explode needs a node id.");
11961
+ if (snapshot.activeId === nodeId) return false;
11962
+ clearTimer();
11963
+ const previous = snapshot.activeId;
11964
+ set({ activeId: nodeId, collapsingId: null });
11965
+ if (previous !== null) _optionalChain([options, 'access', _513 => _513.onCollapse, 'optionalCall', _514 => _514(previous)]);
11966
+ _optionalChain([options, 'access', _515 => _515.onExplode, 'optionalCall', _516 => _516(nodeId)]);
11967
+ return true;
11968
+ };
11969
+ const collapse = (nodeId) => {
11970
+ if (destroyed) return false;
11971
+ const active = snapshot.activeId;
11972
+ if (active === null || nodeId !== void 0 && nodeId !== active) return false;
11973
+ clearTimer();
11974
+ set({ activeId: null, collapsingId: active });
11975
+ _optionalChain([options, 'access', _517 => _517.onCollapse, 'optionalCall', _518 => _518(active)]);
11976
+ if (duration === 0) finishCollapse();
11977
+ else timer = setTimeout(() => {
11978
+ timer = null;
11979
+ finishCollapse();
11980
+ }, duration);
11981
+ return true;
11982
+ };
11983
+ return {
11984
+ get activeId() {
11985
+ return snapshot.activeId;
11986
+ },
11987
+ get collapsingId() {
11988
+ return snapshot.collapsingId;
11989
+ },
11990
+ get isExplodingOrCollapsing() {
11991
+ return snapshot.activeId !== null || snapshot.collapsingId !== null;
11992
+ },
11993
+ get destroyed() {
11994
+ return destroyed;
11995
+ },
11996
+ getSnapshot: () => snapshot,
11997
+ subscribe(listener) {
11998
+ if (destroyed) return () => {
11999
+ };
12000
+ listeners.add(listener);
12001
+ return () => listeners.delete(listener);
12002
+ },
12003
+ isExploded: (nodeId) => snapshot.activeId === nodeId,
12004
+ isCollapsing: (nodeId) => snapshot.collapsingId === nodeId,
12005
+ shouldRenderChildren: (nodeId) => snapshot.activeId === nodeId || snapshot.collapsingId === nodeId,
12006
+ explode,
12007
+ collapse,
12008
+ toggle: (nodeId) => snapshot.activeId === nodeId ? (collapse(nodeId), false) : explode(nodeId),
12009
+ finishCollapse: () => {
12010
+ if (!destroyed) finishCollapse();
12011
+ },
12012
+ destroy() {
12013
+ clearTimer();
12014
+ destroyed = true;
12015
+ listeners.clear();
12016
+ }
12017
+ };
12018
+ }
12019
+
12020
+ // src/canvas/explosion-tools.ts
12021
+ function canvasExplosionToolTarget(state, options) {
12022
+ return {
12023
+ getNodes: options.getNodes,
12024
+ canExplode: options.canExplode,
12025
+ exploded: () => state.activeId ? [state.activeId] : [],
12026
+ collapsing: () => state.collapsingId ? [state.collapsingId] : [],
12027
+ explode: (id) => {
12028
+ state.explode(id);
12029
+ },
12030
+ collapse: (id) => state.collapse(id)
12031
+ };
12032
+ }
12033
+ var READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12034
+ var WRITE_IDEMPOTENT = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12035
+ var labelOf = (node) => {
12036
+ const label = _nullishCoalesce(_optionalChain([node, 'access', _519 => _519.data, 'optionalAccess', _520 => _520.label]), () => ( _optionalChain([node, 'access', _521 => _521.data, 'optionalAccess', _522 => _522.name])));
12037
+ return typeof label === "string" && label !== "" ? label : void 0;
12038
+ };
12039
+ function createCanvasExplosionToolProvider(target, options = {}) {
12040
+ const readOnlyReason = () => {
12041
+ const ro = typeof options.readOnly === "function" ? options.readOnly() : options.readOnly;
12042
+ return ro ? typeof ro === "string" ? ro : "Exploding nodes is disabled on this canvas." : null;
12043
+ };
12044
+ const reasonNotExplodable = (node) => {
12045
+ const ok = target.canExplode ? target.canExplode(node) : true;
12046
+ if (ok === true) return null;
12047
+ return typeof ok === "string" && ok ? ok : `Node "${node.id}" has nothing to explode into.`;
12048
+ };
12049
+ const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _523 => _523.collapsing, 'optionalCall', _524 => _524()]), () => ( []))] });
12050
+ const findNode = (id) => {
12051
+ const node = target.getNodes().find((n3) => n3.id === id);
12052
+ if (!node) throw new Error(`No node "${id}" on the canvas. Call list_explodable_nodes for node ids.`);
12053
+ return node;
12054
+ };
12055
+ const refuseIfReadOnly = () => {
12056
+ const reason = readOnlyReason();
12057
+ if (reason) throw new Error(reason);
12058
+ };
12059
+ const listTool = {
12060
+ name: "list_explodable_nodes",
12061
+ title: "List explodable nodes",
12062
+ description: "Lists the canvas nodes that can explode into child nodes (id, label, exploded, collapsing), plus the ids currently exploded and collapsing, and whether exploding is read-only. Call before explode_node or collapse_node.",
12063
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
12064
+ annotations: { title: "List explodable nodes", ...READ },
12065
+ handler: () => {
12066
+ const { exploded, collapsing } = state();
12067
+ const nodes = target.getNodes().filter((n3) => exploded.includes(n3.id) || reasonNotExplodable(n3) === null).map((n3) => ({
12068
+ id: n3.id,
12069
+ ...labelOf(n3) ? { label: labelOf(n3) } : {},
12070
+ exploded: exploded.includes(n3.id),
12071
+ collapsing: collapsing.includes(n3.id)
12072
+ }));
12073
+ return { nodes, exploded, collapsing, multiple: target.multiple === true, readOnly: readOnlyReason() };
12074
+ }
12075
+ };
12076
+ const explodeTool = {
12077
+ name: "explode_node",
12078
+ title: "Explode a node",
12079
+ description: "Expands a node into its child nodes (subtasks, steps, details), moving surrounding nodes to make room. Unless several can be open at once, the node exploded before collapses. Exploding an exploded node changes nothing. Returns the node, the ids now exploded, and the ids that collapsed.",
12080
+ inputSchema: {
12081
+ type: "object",
12082
+ properties: {
12083
+ node: { type: "string", minLength: 1, description: "Id of the node to explode, from list_explodable_nodes." }
12084
+ },
12085
+ required: ["node"],
12086
+ additionalProperties: false
12087
+ },
12088
+ annotations: { title: "Explode a node", ...WRITE_IDEMPOTENT },
12089
+ handler: async (args) => {
12090
+ refuseIfReadOnly();
12091
+ const node = findNode(args.node);
12092
+ const before = state().exploded;
12093
+ if (before.includes(node.id)) return { node: node.id, changed: false, exploded: before, collapsed: [] };
12094
+ const reason = reasonNotExplodable(node);
12095
+ if (reason) throw new Error(reason);
12096
+ if (await target.explode(node.id) === false) {
12097
+ throw new Error(`Node "${node.id}" could not explode (the canvas refused, e.g. an animation is running). Try again or call list_explodable_nodes.`);
12098
+ }
12099
+ const after = state().exploded;
12100
+ return { node: node.id, changed: true, exploded: after, collapsed: before.filter((id) => !after.includes(id)) };
12101
+ }
12102
+ };
12103
+ const collapseTool = {
12104
+ name: "collapse_node",
12105
+ title: "Collapse a node",
12106
+ description: "Collapses an exploded node: its child nodes are removed (after the collapse animation) and moved nodes return to where they were. Returns the node and the ids still exploded.",
12107
+ inputSchema: {
12108
+ type: "object",
12109
+ properties: {
12110
+ node: { type: "string", minLength: 1, description: "Id of an exploded node, from list_explodable_nodes (exploded: true)." }
12111
+ },
12112
+ required: ["node"],
12113
+ additionalProperties: false
12114
+ },
12115
+ annotations: { title: "Collapse a node", ...WRITE_IDEMPOTENT },
12116
+ handler: async (args) => {
12117
+ refuseIfReadOnly();
12118
+ const before = state().exploded;
12119
+ if (!before.includes(args.node)) {
12120
+ findNode(args.node);
12121
+ throw new Error(
12122
+ `Node "${args.node}" is not exploded${before.length ? ` (exploded: ${before.join(", ")})` : " (nothing is exploded)"}. Call list_explodable_nodes.`
12123
+ );
12124
+ }
12125
+ if (await target.collapse(args.node) === false) {
12126
+ throw new Error(`Node "${args.node}" could not collapse (the canvas refused). Try again or call list_explodable_nodes.`);
12127
+ }
12128
+ return { node: args.node, exploded: state().exploded, collapsing: state().collapsing };
12129
+ }
12130
+ };
12131
+ return {
12132
+ id: _nullishCoalesce(options.id, () => ( "canvas-explosion")),
12133
+ namespace: options.namespace,
12134
+ title: "Canvas explosion",
12135
+ description: "Explode canvas nodes into their child nodes and collapse them again.",
12136
+ skill: "pixerate-canvas",
12137
+ tools: () => readOnlyReason() ? [listTool] : [listTool, explodeTool, collapseTool],
12138
+ subscribe: options.subscribe
12139
+ };
12140
+ }
12141
+
12142
+
12143
+
12144
+
12145
+
12146
+
12147
+
12148
+
11805
12149
 
11806
12150
 
11807
12151
 
@@ -12301,4 +12645,4 @@ function createCanvasGestureRecorder(options) {
12301
12645
 
12302
12646
 
12303
12647
 
12304
- exports.ANIMATABLE_PROPERTIES = ANIMATABLE_PROPERTIES; exports.ANIMATION_DATA_KEY = ANIMATION_DATA_KEY; exports.ANIMATION_EASING_LABELS = _chunkDWJJI6RTcjs.ANIMATION_EASING_LABELS; exports.ANIMATION_EASING_PRESETS = _chunkDWJJI6RTcjs.ANIMATION_EASING_PRESETS; exports.ANIMATION_TIME_EPSILON = _chunkGTELFJREcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunkGTELFJREcjs.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 = _chunkNM3G4VQTcjs.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 = _chunkDWJJI6RTcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunk4EFNS2HVcjs.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 = _chunkEL4PSKFTcjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkEL4PSKFTcjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkEL4PSKFTcjs.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 = _chunkEL4PSKFTcjs.LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = _chunkEL4PSKFTcjs.LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunkGTELFJREcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkYAWLMF3Ocjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkNM3G4VQTcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkGF2RBSDMcjs.PathOpsError; exports.PlanarMap = _chunkYAWLMF3Ocjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkNM3G4VQTcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunkDWJJI6RTcjs.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 = _chunkEL4PSKFTcjs.alignNodes; exports.angleToSvgLinearCoords = _chunkNM3G4VQTcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = _chunkEL4PSKFTcjs.applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkGF2RBSDMcjs.arcToCubics; exports.architectureScene = architectureScene; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkGF2RBSDMcjs.bezierPathArea; exports.bezierPathBounds = _chunkGF2RBSDMcjs.bezierPathBounds; exports.bezierPathLength = _chunkGF2RBSDMcjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkGF2RBSDMcjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkGF2RBSDMcjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkGF2RBSDMcjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkEL4PSKFTcjs.boundsOf; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkWTW7QRTScjs.brushstrokeSeed; 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 = _chunkEL4PSKFTcjs.centerNodes; exports.centre = _chunkEL4PSKFTcjs.centre; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkGF2RBSDMcjs.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 = _chunkYAWLMF3Ocjs.contourEnclosesArea; exports.contourSignedArea = _chunkGF2RBSDMcjs.contourSignedArea; exports.contoursToPath = _chunkGF2RBSDMcjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkGF2RBSDMcjs.countPathSegments; exports.createAnimationPlayer = _chunkGTELFJREcjs.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.createCanvasEditorDocument = createCanvasEditorDocument; exports.createCanvasEffectsController = createCanvasEffectsController; exports.createCanvasEffectsToolProvider = createCanvasEffectsToolProvider; exports.createCanvasGestureRecorder = createCanvasGestureRecorder; exports.createCanvasInstance = createCanvasInstance; exports.createCanvasPlaybackLocator = createCanvasPlaybackLocator; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.cubicBezierAt = _chunkDWJJI6RTcjs.cubicBezierAt; exports.cubicPointAt = _chunkNM3G4VQTcjs.cubicPointAt; exports.cubicsToPathData = _chunkNM3G4VQTcjs.cubicsToPathData; exports.cutOutPiece = _chunkYAWLMF3Ocjs.cutOutPiece; exports.dashContours = _chunkGF2RBSDMcjs.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 = _chunkGF2RBSDMcjs.distanceToBezierPath; exports.distributeNodes = _chunkEL4PSKFTcjs.distributeNodes; exports.dividePaths = _chunkGF2RBSDMcjs.dividePaths; exports.dividePolygons = _chunkGF2RBSDMcjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunkDWJJI6RTcjs.easingFromInfluence; exports.easingLabel = _chunkDWJJI6RTcjs.easingLabel; exports.easingToCss = _chunkDWJJI6RTcjs.easingToCss; exports.elasticAt = _chunkDWJJI6RTcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkEL4PSKFTcjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkEL4PSKFTcjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunkDWJJI6RTcjs.evaluateEasing; exports.evaluateTrack = _chunkGTELFJREcjs.evaluateTrack; exports.excludePaths = _chunkGF2RBSDMcjs.excludePaths; exports.exportCssAnimation = exportCssAnimation; exports.familySceneFromLayout = familySceneFromLayout; exports.findConnectorSnap = findConnectorSnap; exports.findStrokesAtPoint = findStrokesAtPoint; exports.findVariant = findVariant; exports.fitCubicRun = _chunkNM3G4VQTcjs.fitCubicRun; exports.fitCubicWithTangents = _chunkNM3G4VQTcjs.fitCubicWithTangents; exports.fitCubics = _chunkNM3G4VQTcjs.fitCubics; exports.fitFreehandPath = _chunkNM3G4VQTcjs.fitFreehandPath; exports.fitPathData = _chunkNM3G4VQTcjs.fitPathData; exports.fitViewportToNodes = fitViewportToNodes; exports.fitViewportToRect = fitViewportToRect; exports.flattenSvgPath = _chunkNM3G4VQTcjs.flattenSvgPath; exports.flowSide = _chunkEL4PSKFTcjs.flowSide; exports.formatAgentCursorName = formatAgentCursorName; exports.formatAnimationTime = formatAnimationTime; exports.formatNumber = _chunkNM3G4VQTcjs.formatNumber; exports.formatOklab = _chunkCIPIESX4cjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.getAbsolutePosition = _chunkEL4PSKFTcjs.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 = _chunkWTW7QRTScjs.getBrushedShapeSvg; exports.getCanvasComponentDragId = getCanvasComponentDragId; exports.getCanvasTokenProperty = getCanvasTokenProperty; exports.getCenteredNodePosition = _chunkEL4PSKFTcjs.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 = _chunkEL4PSKFTcjs.getLayoutedNodes; exports.getNaturalMovementTiming = getNaturalMovementTiming; exports.getNextVariantValues = getNextVariantValues; exports.getNodeAnimation = getNodeAnimation; exports.getNodeOverrides = getNodeOverrides; exports.getNodeRect = _chunkEL4PSKFTcjs.getNodeRect; exports.getNodeShape = getNodeShape; exports.getNodeSize = _chunkEL4PSKFTcjs.getNodeSize; exports.getNodeTokenBindings = getNodeTokenBindings; exports.getNodeTokenModes = getNodeTokenModes; exports.getOwningComponent = getOwningComponent; exports.getOwningInstance = getOwningInstance; exports.getResizingNodeRect = getResizingNodeRect; exports.getRootInstance = getRootInstance; exports.getShapeRenderData = _chunkNM3G4VQTcjs.getShapeRenderData; exports.getShapeSvg = _chunkNM3G4VQTcjs.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 = _chunkNM3G4VQTcjs.gradientToSvgDef; exports.handlePoint = handlePoint; exports.hasFamilyScene = hasFamilyScene; exports.hasVisibleStroke = hasVisibleStroke; exports.hashString = hashString; exports.hatchPath = _chunkYAWLMF3Ocjs.hatchPath; exports.inferResizeHandle = inferResizeHandle; exports.inspectCanvasInstance = inspectCanvasInstance; exports.inspectNodeTokens = inspectNodeTokens; exports.interiorPoint = _chunkYAWLMF3Ocjs.interiorPoint; exports.interpolateAnimationValue = _chunkGTELFJREcjs.interpolateAnimationValue; exports.intersectPaths = _chunkGF2RBSDMcjs.intersectPaths; exports.intersectPolygons = _chunkGF2RBSDMcjs.intersectPolygons; exports.invertNodeUpdates = _chunkEL4PSKFTcjs.invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunkDWJJI6RTcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunkGTELFJREcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunkWTW7QRTScjs.isBrushedShape; exports.isCanvasComponent = isCanvasComponent; exports.isCanvasComponentSet = isCanvasComponentSet; exports.isCanvasGradient = _chunkNM3G4VQTcjs.isCanvasGradient; exports.isCanvasInstance = isCanvasInstance; exports.isCssExportExact = isCssExportExact; exports.isEventFromTextInput = isEventFromTextInput; exports.isInsideInstance = isInsideInstance; exports.isKeyframeSelected = isKeyframeSelected; exports.isLocked = _chunkEL4PSKFTcjs.isLocked; exports.isMeasureModifierHeld = isMeasureModifierHeld; exports.isNodeAnimated = isNodeAnimated; exports.isShapeDescription = _chunkNM3G4VQTcjs.isShapeDescription; exports.isShapeNode = isShapeNode; exports.isStraightCubic = _chunkNM3G4VQTcjs.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 = _chunkWTW7QRTScjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkWTW7QRTScjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunk4EFNS2HVcjs.matchArrangeShortcut; exports.matchSize = _chunkEL4PSKFTcjs.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 = _chunkCIPIESX4cjs.mixColorsOklab; exports.moveKeyframes = moveKeyframes; exports.moveLayoutChild = moveLayoutChild; exports.multiPolygonArea = _chunkGF2RBSDMcjs.multiPolygonArea; exports.multiPolygonBounds = _chunkGF2RBSDMcjs.multiPolygonBounds; exports.nearestHandlePositions = nearestHandlePositions; exports.normalizeBezierPath = _chunkGF2RBSDMcjs.normalizeBezierPath; exports.normalizeKeyframes = _chunkGTELFJREcjs.normalizeKeyframes; exports.offsetPath = _chunkGF2RBSDMcjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkCIPIESX4cjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkGF2RBSDMcjs.outlineStroke; exports.overlaps = _chunkEL4PSKFTcjs.overlaps; exports.pageHidden = _chunkGTELFJREcjs.pageHidden; exports.parseCanvasClipboardData = parseCanvasClipboardData; exports.parseCanvasScenes = parseCanvasScenes; exports.parseCssEasing = _chunkDWJJI6RTcjs.parseCssEasing; exports.parseCssGradient = _chunkNM3G4VQTcjs.parseCssGradient; exports.parseKeyframeClipboard = parseKeyframeClipboard; exports.parseMermaidStyles = parseMermaidStyles; exports.parseNodeStyleDeclarations = parseNodeStyleDeclarations; exports.parseOklab = _chunkCIPIESX4cjs.parseOklab; exports.parseSvgPath = _chunkNM3G4VQTcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkGF2RBSDMcjs.pathBoolean; exports.pathBooleanSelect = _chunkGF2RBSDMcjs.pathBooleanSelect; exports.pathDataToPolyline = _chunkWTW7QRTScjs.pathDataToPolyline; exports.pathToContours = _chunkGF2RBSDMcjs.pathToContours; exports.pathfinder = _chunkYAWLMF3Ocjs.pathfinder; exports.pieScene = pieScene; exports.placeBeside = _chunkEL4PSKFTcjs.placeBeside; exports.placeInView = _chunkEL4PSKFTcjs.placeInView; exports.planarSplit = _chunkGF2RBSDMcjs.planarSplit; exports.playCanvasSceneTransition = playCanvasSceneTransition; exports.playWebAnimations = playWebAnimations; exports.pointInBezierPath = _chunkGF2RBSDMcjs.pointInBezierPath; exports.pointInMultiPolygon = _chunkGF2RBSDMcjs.pointInMultiPolygon; exports.pointInRings = _chunkGF2RBSDMcjs.pointInRings; exports.pointerPenSample = pointerPenSample; exports.polygonArea = _chunkGF2RBSDMcjs.polygonArea; exports.polygonBoolean = _chunkGF2RBSDMcjs.polygonBoolean; exports.polygonToSvgPath = _chunkNM3G4VQTcjs.polygonToSvgPath; exports.positionToSide = positionToSide; exports.profileAlongPolyline = _chunkWTW7QRTScjs.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 = _chunkEL4PSKFTcjs.readStyleSize; exports.realClock = _chunkGTELFJREcjs.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.renderCanvasBrushSwatch = _chunkWTW7QRTScjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkWTW7QRTScjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkNM3G4VQTcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunkDWJJI6RTcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunkDWJJI6RTcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunkCIPIESX4cjs.rgbToOklab; exports.ringSignedArea = _chunkGF2RBSDMcjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkGF2RBSDMcjs.segmentBounds; exports.segmentCurvature = _chunkGF2RBSDMcjs.segmentCurvature; exports.segmentDerivative = _chunkGF2RBSDMcjs.segmentDerivative; exports.segmentExtrema = _chunkGF2RBSDMcjs.segmentExtrema; exports.segmentIntersections = _chunkGF2RBSDMcjs.segmentIntersections; exports.segmentLength = _chunkGF2RBSDMcjs.segmentLength; exports.segmentNearest = _chunkGF2RBSDMcjs.segmentNearest; exports.segmentParamAtLength = _chunkGF2RBSDMcjs.segmentParamAtLength; exports.segmentPoint = _chunkGF2RBSDMcjs.segmentPoint; exports.segmentTangent = _chunkGF2RBSDMcjs.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 = _chunkNM3G4VQTcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkNM3G4VQTcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkGF2RBSDMcjs.splitSegment; exports.springAt = _chunkDWJJI6RTcjs.springAt; exports.springSettleMs = _chunkDWJJI6RTcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkGF2RBSDMcjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkGF2RBSDMcjs.subSegment; exports.subtractPaths = _chunkGF2RBSDMcjs.subtractPaths; exports.subtractPolygons = _chunkGF2RBSDMcjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkGF2RBSDMcjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = _chunkEL4PSKFTcjs.toggleLockNodes; exports.transformBezierPath = _chunkGF2RBSDMcjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkGF2RBSDMcjs.trimSegments; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkWTW7QRTScjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkWTW7QRTScjs.validateCanvasBrushPaint; exports.windingNumber = _chunkGF2RBSDMcjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = _chunkEL4PSKFTcjs.withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunkGTELFJREcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkGF2RBSDMcjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;
12648
+ exports.ANIMATABLE_PROPERTIES = ANIMATABLE_PROPERTIES; exports.ANIMATION_DATA_KEY = ANIMATION_DATA_KEY; exports.ANIMATION_EASING_LABELS = _chunkDWJJI6RTcjs.ANIMATION_EASING_LABELS; exports.ANIMATION_EASING_PRESETS = _chunkDWJJI6RTcjs.ANIMATION_EASING_PRESETS; exports.ANIMATION_TIME_EPSILON = _chunkM5GLQQWGcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunkM5GLQQWGcjs.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 = _chunkNM3G4VQTcjs.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 = _chunkDWJJI6RTcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunk4EFNS2HVcjs.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 = _chunkEL4PSKFTcjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkEL4PSKFTcjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkEL4PSKFTcjs.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 = _chunkEL4PSKFTcjs.LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = _chunkEL4PSKFTcjs.LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunkM5GLQQWGcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkYAWLMF3Ocjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkNM3G4VQTcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkGF2RBSDMcjs.PathOpsError; exports.PlanarMap = _chunkYAWLMF3Ocjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkNM3G4VQTcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunkDWJJI6RTcjs.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 = _chunkEL4PSKFTcjs.alignNodes; exports.angleToSvgLinearCoords = _chunkNM3G4VQTcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = _chunkEL4PSKFTcjs.applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkGF2RBSDMcjs.arcToCubics; exports.architectureScene = architectureScene; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkGF2RBSDMcjs.bezierPathArea; exports.bezierPathBounds = _chunkGF2RBSDMcjs.bezierPathBounds; exports.bezierPathLength = _chunkGF2RBSDMcjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkGF2RBSDMcjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkGF2RBSDMcjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkGF2RBSDMcjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkEL4PSKFTcjs.boundsOf; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkWTW7QRTScjs.brushstrokeSeed; exports.c4Scene = c4Scene; exports.calculateCursorArrowRotation = calculateCursorArrowRotation; exports.calculateCurvedPath = calculateCurvedPath; exports.calculateDagreReflowDisplacement = calculateDagreReflowDisplacement; exports.calculateDirectionalDisplacement = calculateDirectionalDisplacement; exports.calculateReflowDisplacement = calculateReflowDisplacement; exports.canCombineShapeNodes = canCombineShapeNodes; exports.canOffsetShapeNodes = canOffsetShapeNodes; exports.canOutlineShapeNodeStrokes = canOutlineShapeNodeStrokes; exports.canvasEffectsPool = canvasEffectsPool; exports.canvasExplosionToolTarget = canvasExplosionToolTarget; exports.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.canvasNodeEffect = canvasNodeEffect; exports.captureCanvasView = captureCanvasView; exports.centerNodes = _chunkEL4PSKFTcjs.centerNodes; exports.centre = _chunkEL4PSKFTcjs.centre; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkGF2RBSDMcjs.closeContour; exports.collectDescendantIds = collectDescendantIds; exports.combineCanvasComponentsAsVariants = combineCanvasComponentsAsVariants; exports.combineShapeNodes = combineShapeNodes; exports.computeCanvasExplosionLayout = computeCanvasExplosionLayout; exports.computeDragBounds = computeDragBounds; exports.computeDragBoundsFromPoints = computeDragBoundsFromPoints; exports.computeNodesBoundingBox = computeNodesBoundingBox; exports.computeSnapGuides = computeSnapGuides; exports.connectedDiagramOnly = connectedDiagramOnly; exports.connectedOnly = connectedOnly; exports.contourEnclosesArea = _chunkYAWLMF3Ocjs.contourEnclosesArea; exports.contourSignedArea = _chunkGF2RBSDMcjs.contourSignedArea; exports.contoursToPath = _chunkGF2RBSDMcjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkGF2RBSDMcjs.countPathSegments; exports.createAnimationPlayer = _chunkM5GLQQWGcjs.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.createCanvasEditorDocument = createCanvasEditorDocument; exports.createCanvasEffectsController = createCanvasEffectsController; exports.createCanvasEffectsToolProvider = createCanvasEffectsToolProvider; exports.createCanvasExplosionStateController = createCanvasExplosionStateController; exports.createCanvasExplosionToolProvider = createCanvasExplosionToolProvider; exports.createCanvasGestureRecorder = createCanvasGestureRecorder; exports.createCanvasInstance = createCanvasInstance; exports.createCanvasPlaybackLocator = createCanvasPlaybackLocator; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.cubicBezierAt = _chunkDWJJI6RTcjs.cubicBezierAt; exports.cubicPointAt = _chunkNM3G4VQTcjs.cubicPointAt; exports.cubicsToPathData = _chunkNM3G4VQTcjs.cubicsToPathData; exports.cutOutPiece = _chunkYAWLMF3Ocjs.cutOutPiece; exports.dashContours = _chunkGF2RBSDMcjs.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 = _chunkGF2RBSDMcjs.distanceToBezierPath; exports.distributeNodes = _chunkEL4PSKFTcjs.distributeNodes; exports.dividePaths = _chunkGF2RBSDMcjs.dividePaths; exports.dividePolygons = _chunkGF2RBSDMcjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunkDWJJI6RTcjs.easingFromInfluence; exports.easingLabel = _chunkDWJJI6RTcjs.easingLabel; exports.easingToCss = _chunkDWJJI6RTcjs.easingToCss; exports.elasticAt = _chunkDWJJI6RTcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkEL4PSKFTcjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkEL4PSKFTcjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunkDWJJI6RTcjs.evaluateEasing; exports.evaluateTrack = _chunkM5GLQQWGcjs.evaluateTrack; exports.excludePaths = _chunkGF2RBSDMcjs.excludePaths; exports.explosionEdgeId = explosionEdgeId; exports.exportCssAnimation = exportCssAnimation; exports.familySceneFromLayout = familySceneFromLayout; exports.findConnectorSnap = findConnectorSnap; exports.findStrokesAtPoint = findStrokesAtPoint; exports.findVariant = findVariant; exports.fitCubicRun = _chunkNM3G4VQTcjs.fitCubicRun; exports.fitCubicWithTangents = _chunkNM3G4VQTcjs.fitCubicWithTangents; exports.fitCubics = _chunkNM3G4VQTcjs.fitCubics; exports.fitFreehandPath = _chunkNM3G4VQTcjs.fitFreehandPath; exports.fitPathData = _chunkNM3G4VQTcjs.fitPathData; exports.fitViewportToNodes = fitViewportToNodes; exports.fitViewportToRect = fitViewportToRect; exports.flattenSvgPath = _chunkNM3G4VQTcjs.flattenSvgPath; exports.flowSide = _chunkEL4PSKFTcjs.flowSide; exports.formatAgentCursorName = formatAgentCursorName; exports.formatAnimationTime = formatAnimationTime; exports.formatNumber = _chunkNM3G4VQTcjs.formatNumber; exports.formatOklab = _chunk4ZC5QJE2cjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.getAbsolutePosition = _chunkEL4PSKFTcjs.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 = _chunkWTW7QRTScjs.getBrushedShapeSvg; exports.getCanvasComponentDragId = getCanvasComponentDragId; exports.getCanvasTokenProperty = getCanvasTokenProperty; exports.getCenteredNodePosition = _chunkEL4PSKFTcjs.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 = _chunkEL4PSKFTcjs.getLayoutedNodes; exports.getNaturalMovementTiming = getNaturalMovementTiming; exports.getNextVariantValues = getNextVariantValues; exports.getNodeAnimation = getNodeAnimation; exports.getNodeOverrides = getNodeOverrides; exports.getNodeRect = _chunkEL4PSKFTcjs.getNodeRect; exports.getNodeShape = getNodeShape; exports.getNodeSize = _chunkEL4PSKFTcjs.getNodeSize; exports.getNodeTokenBindings = getNodeTokenBindings; exports.getNodeTokenModes = getNodeTokenModes; exports.getOwningComponent = getOwningComponent; exports.getOwningInstance = getOwningInstance; exports.getResizingNodeRect = getResizingNodeRect; exports.getRootInstance = getRootInstance; exports.getShapeRenderData = _chunkNM3G4VQTcjs.getShapeRenderData; exports.getShapeSvg = _chunkNM3G4VQTcjs.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 = _chunkNM3G4VQTcjs.gradientToSvgDef; exports.handlePoint = handlePoint; exports.hasFamilyScene = hasFamilyScene; exports.hasVisibleStroke = hasVisibleStroke; exports.hashString = hashString; exports.hatchPath = _chunkYAWLMF3Ocjs.hatchPath; exports.inferResizeHandle = inferResizeHandle; exports.inspectCanvasInstance = inspectCanvasInstance; exports.inspectNodeTokens = inspectNodeTokens; exports.interiorPoint = _chunkYAWLMF3Ocjs.interiorPoint; exports.interpolateAnimationValue = _chunkM5GLQQWGcjs.interpolateAnimationValue; exports.intersectPaths = _chunkGF2RBSDMcjs.intersectPaths; exports.intersectPolygons = _chunkGF2RBSDMcjs.intersectPolygons; exports.invertNodeUpdates = _chunkEL4PSKFTcjs.invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunkDWJJI6RTcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunkM5GLQQWGcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunkWTW7QRTScjs.isBrushedShape; exports.isCanvasComponent = isCanvasComponent; exports.isCanvasComponentSet = isCanvasComponentSet; exports.isCanvasGradient = _chunkNM3G4VQTcjs.isCanvasGradient; exports.isCanvasInstance = isCanvasInstance; exports.isCssExportExact = isCssExportExact; exports.isEventFromTextInput = isEventFromTextInput; exports.isInsideInstance = isInsideInstance; exports.isKeyframeSelected = isKeyframeSelected; exports.isLocked = _chunkEL4PSKFTcjs.isLocked; exports.isMeasureModifierHeld = isMeasureModifierHeld; exports.isNodeAnimated = isNodeAnimated; exports.isShapeDescription = _chunkNM3G4VQTcjs.isShapeDescription; exports.isShapeNode = isShapeNode; exports.isStraightCubic = _chunkNM3G4VQTcjs.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 = _chunkWTW7QRTScjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkWTW7QRTScjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunk4EFNS2HVcjs.matchArrangeShortcut; exports.matchSize = _chunkEL4PSKFTcjs.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 = _chunk4ZC5QJE2cjs.mixColorsOklab; exports.moveKeyframes = moveKeyframes; exports.moveLayoutChild = moveLayoutChild; exports.multiPolygonArea = _chunkGF2RBSDMcjs.multiPolygonArea; exports.multiPolygonBounds = _chunkGF2RBSDMcjs.multiPolygonBounds; exports.nearestHandlePositions = nearestHandlePositions; exports.nodeSizeOf = nodeSizeOf; exports.normalizeBezierPath = _chunkGF2RBSDMcjs.normalizeBezierPath; exports.normalizeKeyframes = _chunkM5GLQQWGcjs.normalizeKeyframes; exports.offsetPath = _chunkGF2RBSDMcjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunk4ZC5QJE2cjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkGF2RBSDMcjs.outlineStroke; exports.overlaps = _chunkEL4PSKFTcjs.overlaps; exports.pageHidden = _chunkM5GLQQWGcjs.pageHidden; exports.parseCanvasClipboardData = parseCanvasClipboardData; exports.parseCanvasScenes = parseCanvasScenes; exports.parseCssEasing = _chunkDWJJI6RTcjs.parseCssEasing; exports.parseCssGradient = _chunkNM3G4VQTcjs.parseCssGradient; exports.parseKeyframeClipboard = parseKeyframeClipboard; exports.parseMermaidStyles = parseMermaidStyles; exports.parseNodeStyleDeclarations = parseNodeStyleDeclarations; exports.parseOklab = _chunk4ZC5QJE2cjs.parseOklab; exports.parseSvgPath = _chunkNM3G4VQTcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkGF2RBSDMcjs.pathBoolean; exports.pathBooleanSelect = _chunkGF2RBSDMcjs.pathBooleanSelect; exports.pathDataToPolyline = _chunkWTW7QRTScjs.pathDataToPolyline; exports.pathToContours = _chunkGF2RBSDMcjs.pathToContours; exports.pathfinder = _chunkYAWLMF3Ocjs.pathfinder; exports.pieScene = pieScene; exports.placeBeside = _chunkEL4PSKFTcjs.placeBeside; exports.placeInView = _chunkEL4PSKFTcjs.placeInView; exports.planarSplit = _chunkGF2RBSDMcjs.planarSplit; exports.playCanvasSceneTransition = playCanvasSceneTransition; exports.playWebAnimations = playWebAnimations; exports.pointInBezierPath = _chunkGF2RBSDMcjs.pointInBezierPath; exports.pointInMultiPolygon = _chunkGF2RBSDMcjs.pointInMultiPolygon; exports.pointInRings = _chunkGF2RBSDMcjs.pointInRings; exports.pointerPenSample = pointerPenSample; exports.polygonArea = _chunkGF2RBSDMcjs.polygonArea; exports.polygonBoolean = _chunkGF2RBSDMcjs.polygonBoolean; exports.polygonToSvgPath = _chunkNM3G4VQTcjs.polygonToSvgPath; exports.positionToSide = positionToSide; exports.profileAlongPolyline = _chunkWTW7QRTScjs.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 = _chunkEL4PSKFTcjs.readStyleSize; exports.realClock = _chunkM5GLQQWGcjs.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.renderCanvasBrushSwatch = _chunkWTW7QRTScjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkWTW7QRTScjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkNM3G4VQTcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunkDWJJI6RTcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunkDWJJI6RTcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunk4ZC5QJE2cjs.rgbToOklab; exports.ringSignedArea = _chunkGF2RBSDMcjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkGF2RBSDMcjs.segmentBounds; exports.segmentCurvature = _chunkGF2RBSDMcjs.segmentCurvature; exports.segmentDerivative = _chunkGF2RBSDMcjs.segmentDerivative; exports.segmentExtrema = _chunkGF2RBSDMcjs.segmentExtrema; exports.segmentIntersections = _chunkGF2RBSDMcjs.segmentIntersections; exports.segmentLength = _chunkGF2RBSDMcjs.segmentLength; exports.segmentNearest = _chunkGF2RBSDMcjs.segmentNearest; exports.segmentParamAtLength = _chunkGF2RBSDMcjs.segmentParamAtLength; exports.segmentPoint = _chunkGF2RBSDMcjs.segmentPoint; exports.segmentTangent = _chunkGF2RBSDMcjs.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 = _chunkNM3G4VQTcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkNM3G4VQTcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkGF2RBSDMcjs.splitSegment; exports.springAt = _chunkDWJJI6RTcjs.springAt; exports.springSettleMs = _chunkDWJJI6RTcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkGF2RBSDMcjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkGF2RBSDMcjs.subSegment; exports.subtractPaths = _chunkGF2RBSDMcjs.subtractPaths; exports.subtractPolygons = _chunkGF2RBSDMcjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkGF2RBSDMcjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = _chunkEL4PSKFTcjs.toggleLockNodes; exports.transformBezierPath = _chunkGF2RBSDMcjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkGF2RBSDMcjs.trimSegments; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkWTW7QRTScjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkWTW7QRTScjs.validateCanvasBrushPaint; exports.windingNumber = _chunkGF2RBSDMcjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = _chunkEL4PSKFTcjs.withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunkM5GLQQWGcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkGF2RBSDMcjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;