@pixerate/editor 0.254.1 → 0.256.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 (81) hide show
  1. package/dist/agent/index.cjs +2 -2
  2. package/dist/agent/index.js +1 -1
  3. package/dist/animation-editor/index.cjs +59 -59
  4. package/dist/animation-editor/index.js +3 -3
  5. package/dist/brushes/index.cjs +31 -29
  6. package/dist/brushes/index.d.cts +1 -1
  7. package/dist/brushes/index.d.ts +1 -1
  8. package/dist/brushes/index.js +27 -25
  9. package/dist/brushes/library.d.cts +17 -0
  10. package/dist/brushes/library.d.ts +17 -0
  11. package/dist/{brushstrokeRender-5PYSKZIJ.js → brushstrokeRender-HCOQUSWW.js} +53 -18
  12. package/dist/{brushstrokeRender-7FLLSQEC.cjs → brushstrokeRender-ZZOXI5O5.cjs} +55 -20
  13. package/dist/canvas/brushTypes.d.cts +22 -3
  14. package/dist/canvas/brushTypes.d.ts +22 -3
  15. package/dist/canvas/brushstroke.d.cts +34 -12
  16. package/dist/canvas/brushstroke.d.ts +34 -12
  17. package/dist/canvas/brushstrokeRender.d.cts +14 -8
  18. package/dist/canvas/brushstrokeRender.d.ts +14 -8
  19. package/dist/canvas/drawController.d.cts +11 -3
  20. package/dist/canvas/drawController.d.ts +11 -3
  21. package/dist/canvas/freehand.d.cts +6 -1
  22. package/dist/canvas/freehand.d.ts +6 -1
  23. package/dist/canvas/index.cjs +114 -102
  24. package/dist/canvas/index.js +16 -4
  25. package/dist/{chunk-XVIK73LS.js → chunk-5P4JEOIV.js} +4 -4
  26. package/dist/{chunk-JPEHXIB5.cjs → chunk-5YWWQ36H.cjs} +66 -21
  27. package/dist/{chunk-CHAWTXBE.cjs → chunk-6WCQ35GI.cjs} +4 -4
  28. package/dist/{chunk-GYMMNCFT.js → chunk-AF23QK5F.js} +56 -11
  29. package/dist/{chunk-JFHBXNR2.cjs → chunk-B7V34GIH.cjs} +86 -86
  30. package/dist/{chunk-QC3OXRE4.js → chunk-DMTEQ6SH.js} +1 -1
  31. package/dist/{chunk-TLOGFIIV.cjs → chunk-GCTUOTCW.cjs} +35 -35
  32. package/dist/{chunk-34KLWUH4.cjs → chunk-HIMGBZAM.cjs} +1133 -597
  33. package/dist/{chunk-7P6VF3FG.js → chunk-HYWRU5VX.js} +1 -1
  34. package/dist/{chunk-QPHNVZHO.js → chunk-JVRLGV3C.js} +1118 -582
  35. package/dist/{chunk-LFMKWGFL.cjs → chunk-LRNUZKWV.cjs} +22 -8
  36. package/dist/chunk-PGPFWC35.cjs +517 -0
  37. package/dist/{chunk-QLSGTCYT.cjs → chunk-TBAVCLEQ.cjs} +23 -23
  38. package/dist/{chunk-2ZJ4DT3M.js → chunk-VUKUTT2W.js} +1 -1
  39. package/dist/{chunk-5JNA6LLY.js → chunk-WYGSR3IJ.js} +22 -8
  40. package/dist/chunk-YHUMGBZD.js +517 -0
  41. package/dist/commands/builtins.d.cts +1 -1
  42. package/dist/commands/builtins.d.ts +1 -1
  43. package/dist/commands/index.cjs +2 -2
  44. package/dist/commands/index.js +1 -1
  45. package/dist/image-editor/brush-presets.d.cts +32 -0
  46. package/dist/image-editor/brush-presets.d.ts +32 -0
  47. package/dist/image-editor/controller.d.cts +15 -0
  48. package/dist/image-editor/controller.d.ts +15 -0
  49. package/dist/image-editor/index.cjs +848 -775
  50. package/dist/image-editor/index.d.cts +1 -0
  51. package/dist/image-editor/index.d.ts +1 -0
  52. package/dist/image-editor/index.js +81 -8
  53. package/dist/image-editor/types.d.cts +7 -0
  54. package/dist/image-editor/types.d.ts +7 -0
  55. package/dist/paint-editor/collaboration-tools.d.cts +19 -0
  56. package/dist/paint-editor/collaboration-tools.d.ts +19 -0
  57. package/dist/paint-editor/collaboration.d.cts +180 -0
  58. package/dist/paint-editor/collaboration.d.ts +180 -0
  59. package/dist/paint-editor/controller.d.cts +54 -0
  60. package/dist/paint-editor/controller.d.ts +54 -0
  61. package/dist/paint-editor/index.cjs +816 -283
  62. package/dist/paint-editor/index.d.cts +2 -0
  63. package/dist/paint-editor/index.d.ts +2 -0
  64. package/dist/paint-editor/index.js +567 -34
  65. package/dist/vector/brushstroke.d.cts +21 -5
  66. package/dist/vector/brushstroke.d.ts +21 -5
  67. package/dist/vector/controller.d.cts +14 -1
  68. package/dist/vector/controller.d.ts +14 -1
  69. package/dist/vector/index.cjs +1220 -1199
  70. package/dist/vector/index.js +34 -13
  71. package/dist/vector/types.d.cts +7 -0
  72. package/dist/vector/types.d.ts +7 -0
  73. package/package.json +1 -1
  74. package/skills/pixerate-brushes/SKILL.md +9 -3
  75. package/skills/pixerate-canvas/SKILL.md +10 -5
  76. package/skills/pixerate-image-editor/SKILL.md +2 -1
  77. package/skills/pixerate-paint-editor/SKILL.md +31 -46
  78. package/skills/pixerate-paint-editor/references/painting-alongside.md +19 -0
  79. package/skills/pixerate-vector/SKILL.md +1 -1
  80. package/dist/chunk-HS6QDWDF.cjs +0 -1029
  81. package/dist/chunk-MTKY6K3Q.js +0 -1029
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6;
2
2
 
3
3
 
4
4
 
@@ -44,7 +44,9 @@ var _chunk3FSUJIXNcjs = require('../chunk-3FSUJIXN.cjs');
44
44
 
45
45
 
46
46
 
47
- var _chunkLFMKWGFLcjs = require('../chunk-LFMKWGFL.cjs');
47
+
48
+
49
+ var _chunkLRNUZKWVcjs = require('../chunk-LRNUZKWV.cjs');
48
50
 
49
51
 
50
52
 
@@ -7976,12 +7978,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
7976
7978
  if (!samples || samples.length !== points.length) return out;
7977
7979
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
7978
7980
  if (samples.some((s) => finite2(s.pressure))) {
7979
- const pressure = _chunkLFMKWGFLcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7981
+ const pressure = _chunkLRNUZKWVcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7980
7982
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
7981
7983
  }
7982
7984
  for (const key of ["tiltX", "tiltY"]) {
7983
7985
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
7984
- out[key] = _chunkLFMKWGFLcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7986
+ out[key] = _chunkLRNUZKWVcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7985
7987
  }
7986
7988
  return out;
7987
7989
  }
@@ -8025,8 +8027,9 @@ function strokeToShapeNode(stroke, options = {}) {
8025
8027
  brush: {
8026
8028
  ...freehandBrushstroke(stroke.style.brush, localPoints, stroke.samples, options.profileLength),
8027
8029
  ...stroke.style.paint !== void 0 ? { paint: stroke.style.paint } : {},
8030
+ ...stroke.style.brushSpec && typeof stroke.style.brush === "string" && stroke.style.brushSpec.id === stroke.style.brush ? { spec: stroke.style.brushSpec } : {},
8028
8031
  // New strokes carry a character seed (jitter and grain) and their size, if chosen.
8029
- seed: _chunkLFMKWGFLcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8032
+ seed: _chunkLRNUZKWVcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8030
8033
  ...stroke.style.brushSize !== void 0 && stroke.style.brushSize > 0 ? { size: stroke.style.brushSize } : {}
8031
8034
  }
8032
8035
  } : {},
@@ -8201,20 +8204,25 @@ function createCanvasDrawController(options) {
8201
8204
  if (style.paint !== void 0 && style.brush === void 0) {
8202
8205
  throw new Error("paint (gradient paint) only colours brushed strokes: pass a brush too (see canvas.listBrushes), or use color for a plain stroke.");
8203
8206
  }
8204
- if (style.brush !== void 0) await _chunkLFMKWGFLcjs.validateCanvasBrush.call(void 0, style.brush);
8205
- if (style.paint !== void 0) style.paint = (await _chunkLFMKWGFLcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8206
- const id = _nullishCoalesce(_optionalChain([options, 'access', _312 => _312.generateNodeId, 'optionalCall', _313 => _313()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8207
- const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _314 => _314.drawOptions, 'optionalAccess', _315 => _315.streamline]), () => ( 0.35))) : [...points];
8207
+ if (style.brush !== void 0) {
8208
+ const spec = await _asyncNullishCoalesce((_optionalChain([style, 'access', _312 => _312.brushSpec, 'optionalAccess', _313 => _313.id]) === style.brush ? style.brushSpec : void 0), async () => ( await _chunkLRNUZKWVcjs.resolveCanvasBrushSpec.call(void 0, style.brush, options.brushLibrary)));
8209
+ await _chunkLRNUZKWVcjs.validateCanvasBrush.call(void 0, style.brush, spec);
8210
+ if (spec) style.brushSpec = spec;
8211
+ else delete style.brushSpec;
8212
+ }
8213
+ if (style.paint !== void 0) style.paint = (await _chunkLRNUZKWVcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8214
+ const id = _nullishCoalesce(_optionalChain([options, 'access', _314 => _314.generateNodeId, 'optionalCall', _315 => _315()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8215
+ const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _316 => _316.drawOptions, 'optionalAccess', _317 => _317.streamline]), () => ( 0.35))) : [...points];
8208
8216
  const node = strokeToShapeNode(
8209
8217
  { id, tool, points: smoothed, style },
8210
- { tolerance: _nullishCoalesce(_optionalChain([options, 'access', _316 => _316.drawOptions, 'optionalAccess', _317 => _317.tolerance]), () => ( 1)), cornerAngleDeg: _nullishCoalesce(_optionalChain([options, 'access', _318 => _318.drawOptions, 'optionalAccess', _319 => _319.cornerAngleDeg]), () => ( 40)) }
8218
+ { tolerance: _nullishCoalesce(_optionalChain([options, 'access', _318 => _318.drawOptions, 'optionalAccess', _319 => _319.tolerance]), () => ( 1)), cornerAngleDeg: _nullishCoalesce(_optionalChain([options, 'access', _320 => _320.drawOptions, 'optionalAccess', _321 => _321.cornerAngleDeg]), () => ( 40)) }
8211
8219
  );
8212
8220
  const shape = node.data.shape;
8213
8221
  if (shape.brush) {
8214
8222
  for (const [key, values] of Object.entries(profiles)) if (values) shape.brush[key] = [...values];
8215
8223
  }
8216
8224
  addStrokeNode(node, `Draw ${tool}`);
8217
- _optionalChain([options, 'access', _320 => _320.onStrokeComplete, 'optionalCall', _321 => _321(node)]);
8225
+ _optionalChain([options, 'access', _322 => _322.onStrokeComplete, 'optionalCall', _323 => _323(node)]);
8218
8226
  const pos = _nullishCoalesce(node.position, () => ( { x: 0, y: 0 }));
8219
8227
  return {
8220
8228
  id: node.id,
@@ -8231,7 +8239,7 @@ function createCanvasDrawController(options) {
8231
8239
  function cancelStroke() {
8232
8240
  if (activeStroke) {
8233
8241
  activeStroke = null;
8234
- _optionalChain([options, 'access', _322 => _322.onActiveStrokeChange, 'optionalCall', _323 => _323(null)]);
8242
+ _optionalChain([options, 'access', _324 => _324.onActiveStrokeChange, 'optionalCall', _325 => _325(null)]);
8235
8243
  }
8236
8244
  if (erasedInDrag.size > 0) {
8237
8245
  const entries = Array.from(erasedInDrag.values());
@@ -8261,7 +8269,7 @@ function createCanvasDrawController(options) {
8261
8269
  const erasedSet = new Set(newlyErased.map((n3) => n3.id));
8262
8270
  const nextNodes = nodes.filter((n3) => !erasedSet.has(n3.id));
8263
8271
  options.setNodes(nextNodes);
8264
- _optionalChain([options, 'access', _324 => _324.onNodesErase, 'optionalCall', _325 => _325(newlyErased)]);
8272
+ _optionalChain([options, 'access', _326 => _326.onNodesErase, 'optionalCall', _327 => _327(newlyErased)]);
8265
8273
  }
8266
8274
  return newlyErased;
8267
8275
  }
@@ -8287,8 +8295,10 @@ function createCanvasDrawController(options) {
8287
8295
  eraseAt,
8288
8296
  drawStroke,
8289
8297
  nodeBounds,
8290
- /** The dry paint presets a stroke can be brushed with (loads the paint engine). */
8291
- listBrushes: _chunkLFMKWGFLcjs.listCanvasBrushes
8298
+ /** The presets and saved brushes (of `brushLibrary`) a stroke can be brushed with (loads the paint engine). */
8299
+ listBrushes: () => _chunkLRNUZKWVcjs.listCanvasBrushes.call(void 0, options.brushLibrary),
8300
+ /** The saved brush to embed for a brush id (undefined for presets and tip settings); for a brush picker. */
8301
+ brushSpec: (brush) => _chunkLRNUZKWVcjs.resolveCanvasBrushSpec.call(void 0, brush, options.brushLibrary)
8292
8302
  };
8293
8303
  }
8294
8304
  function computeDragBounds(start, current, modifiers = {}) {
@@ -8402,8 +8412,8 @@ function estimateDiagramNodeSize(node) {
8402
8412
  var IMAGE_LABEL_HEIGHT = 24;
8403
8413
  function diagramImageSize(node) {
8404
8414
  const num4 = (v) => typeof v === "number" && v > 0 ? v : void 0;
8405
- const w = num4(_optionalChain([node, 'access', _326 => _326.data, 'optionalAccess', _327 => _327.w]));
8406
- const h = num4(_optionalChain([node, 'access', _328 => _328.data, 'optionalAccess', _329 => _329.h]));
8415
+ const w = num4(_optionalChain([node, 'access', _328 => _328.data, 'optionalAccess', _329 => _329.w]));
8416
+ const h = num4(_optionalChain([node, 'access', _330 => _330.data, 'optionalAccess', _331 => _331.h]));
8407
8417
  return { width: _nullishCoalesce(_nullishCoalesce(w, () => ( h)), () => ( 96)), height: _nullishCoalesce(_nullishCoalesce(h, () => ( w)), () => ( 96)) };
8408
8418
  }
8409
8419
  function extraLines(node) {
@@ -8465,7 +8475,7 @@ function autoLayoutDiagram(graph, options = {}) {
8465
8475
  while (cur && !seen.has(cur)) {
8466
8476
  if (ids.has(cur)) return cur;
8467
8477
  seen.add(cur);
8468
- cur = _nullishCoalesce(_optionalChain([nodeById, 'access', _330 => _330.get, 'call', _331 => _331(cur), 'optionalAccess', _332 => _332.parentId]), () => ( _optionalChain([groupById, 'access', _333 => _333.get, 'call', _334 => _334(cur), 'optionalAccess', _335 => _335.parentId])));
8478
+ cur = _nullishCoalesce(_optionalChain([nodeById, 'access', _332 => _332.get, 'call', _333 => _333(cur), 'optionalAccess', _334 => _334.parentId]), () => ( _optionalChain([groupById, 'access', _335 => _335.get, 'call', _336 => _336(cur), 'optionalAccess', _337 => _337.parentId])));
8469
8479
  }
8470
8480
  return null;
8471
8481
  };
@@ -8501,7 +8511,7 @@ function autoLayoutDiagram(graph, options = {}) {
8501
8511
  const positions = {};
8502
8512
  const absolute = (id) => {
8503
8513
  if (positions[id]) return positions[id];
8504
- const parentId = _nullishCoalesce(_optionalChain([nodeById, 'access', _336 => _336.get, 'call', _337 => _337(id), 'optionalAccess', _338 => _338.parentId]), () => ( _optionalChain([groupById, 'access', _339 => _339.get, 'call', _340 => _340(id), 'optionalAccess', _341 => _341.parentId])));
8514
+ const parentId = _nullishCoalesce(_optionalChain([nodeById, 'access', _338 => _338.get, 'call', _339 => _339(id), 'optionalAccess', _340 => _340.parentId]), () => ( _optionalChain([groupById, 'access', _341 => _341.get, 'call', _342 => _342(id), 'optionalAccess', _343 => _343.parentId])));
8505
8515
  const [rx, ry] = _nullishCoalesce(relative[id], () => ( [0, 0]));
8506
8516
  if (!parentId) {
8507
8517
  positions[id] = [rx, ry];
@@ -8521,15 +8531,15 @@ function push(map, key, value) {
8521
8531
  else map.set(key, [value]);
8522
8532
  }
8523
8533
  function ensureDiagramLayout(graph, meta, options) {
8524
- const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _342 => _342.measure]), () => ( estimateDiagramNodeSize));
8525
- const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _343 => _343.family]));
8534
+ const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _344 => _344.measure]), () => ( estimateDiagramNodeSize));
8535
+ const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _345 => _345.family]));
8526
8536
  if (custom) return custom(graph, meta, { ..._nullishCoalesce(options, () => ( {})), measure });
8527
8537
  const stored = _nullishCoalesce(meta.layout, () => ( {}));
8528
8538
  const allIds = [...graph.nodes.map((n3) => n3.id), ...graph.groups.map((g) => g.id)];
8529
8539
  const missing = allIds.filter((id) => !stored[id]);
8530
8540
  const sizes = {};
8531
8541
  for (const n3 of graph.nodes)
8532
- sizes[n3.id] = _optionalChain([meta, 'access', _344 => _344.sizes, 'optionalAccess', _345 => _345[n3.id]]) ? { width: meta.sizes[n3.id][0], height: meta.sizes[n3.id][1] } : measure(n3);
8542
+ sizes[n3.id] = _optionalChain([meta, 'access', _346 => _346.sizes, 'optionalAccess', _347 => _347[n3.id]]) ? { width: meta.sizes[n3.id][0], height: meta.sizes[n3.id][1] } : measure(n3);
8533
8543
  if (!missing.length) {
8534
8544
  const positions2 = {};
8535
8545
  for (const id of allIds) positions2[id] = stored[id];
@@ -8557,7 +8567,7 @@ function ensureDiagramLayout(graph, meta, options) {
8557
8567
  return { positions, sizes };
8558
8568
  }
8559
8569
  function diagramGroupSize(groupId, graph, positions, sizes, meta, pad = 24, titleH = 32) {
8560
- if (_optionalChain([meta, 'access', _346 => _346.sizes, 'optionalAccess', _347 => _347[groupId]]))
8570
+ if (_optionalChain([meta, 'access', _348 => _348.sizes, 'optionalAccess', _349 => _349[groupId]]))
8561
8571
  return { width: meta.sizes[groupId][0], height: meta.sizes[groupId][1] };
8562
8572
  const members = [
8563
8573
  ...graph.nodes.filter((n3) => n3.parentId === groupId).map((n3) => n3.id),
@@ -8634,9 +8644,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8634
8644
  width: size2.width,
8635
8645
  height: size2.height,
8636
8646
  style: { width: size2.width, height: size2.height },
8637
- draggable: editable && !_optionalChain([g, 'access', _348 => _348.data, 'optionalAccess', _349 => _349.locked]),
8647
+ draggable: editable && !_optionalChain([g, 'access', _350 => _350.data, 'optionalAccess', _351 => _351.locked]),
8638
8648
  selectable: editable,
8639
- connectable: editable && !_optionalChain([g, 'access', _350 => _350.data, 'optionalAccess', _351 => _351.locked]),
8649
+ connectable: editable && !_optionalChain([g, 'access', _352 => _352.data, 'optionalAccess', _353 => _353.locked]),
8640
8650
  zIndex: depth(g.id, parents)
8641
8651
  };
8642
8652
  });
@@ -8656,9 +8666,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8656
8666
  width: size2.width,
8657
8667
  height: size2.height,
8658
8668
  style: { width: size2.width, height: size2.height },
8659
- draggable: editable && !_optionalChain([n3, 'access', _352 => _352.data, 'optionalAccess', _353 => _353.locked]),
8669
+ draggable: editable && !_optionalChain([n3, 'access', _354 => _354.data, 'optionalAccess', _355 => _355.locked]),
8660
8670
  selectable: editable,
8661
- connectable: editable && !_optionalChain([n3, 'access', _354 => _354.data, 'optionalAccess', _355 => _355.locked]) && !_optionalChain([n3, 'access', _356 => _356.data, 'optionalAccess', _357 => _357.synthetic]),
8671
+ connectable: editable && !_optionalChain([n3, 'access', _356 => _356.data, 'optionalAccess', _357 => _357.locked]) && !_optionalChain([n3, 'access', _358 => _358.data, 'optionalAccess', _359 => _359.synthetic]),
8662
8672
  zIndex: depth(n3.id, parents) + 100
8663
8673
  };
8664
8674
  });
@@ -8723,7 +8733,7 @@ function clampHeight2(content, options = {}) {
8723
8733
  return Math.round(Math.min(max, Math.max(min, content + padding)));
8724
8734
  }
8725
8735
  function diagramCanvasHeight(layout2, options) {
8726
- return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _358 => _358(layout2), 'optionalAccess', _359 => _359.height]), () => ( 0)), options);
8736
+ return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _360 => _360(layout2), 'optionalAccess', _361 => _361.height]), () => ( 0)), options);
8727
8737
  }
8728
8738
  var RANK_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT + 72;
8729
8739
  var NODES_PER_RANK2 = 2;
@@ -8935,7 +8945,7 @@ function chartTheme(theme) {
8935
8945
  }
8936
8946
  function xyChartSpec(graph, palette) {
8937
8947
  const data = _nullishCoalesce(graph.data, () => ( {}));
8938
- const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _360 => _360.data, 'optionalAccess', _361 => _361.values])).length));
8948
+ const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _362 => _362.data, 'optionalAccess', _363 => _363.values])).length));
8939
8949
  let categories = Array.isArray(data.categories) ? data.categories.map(String) : [];
8940
8950
  const xMin = num2(data.xMin);
8941
8951
  const xMax = num2(data.xMax);
@@ -8950,11 +8960,11 @@ function xyChartSpec(graph, palette) {
8950
8960
  type: bars ? "bar" : "line",
8951
8961
  title: _nullishCoalesce(graph.title, () => ( "")),
8952
8962
  categories,
8953
- series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _362 => _362.data, 'optionalAccess', _363 => _363.values])), type: n3.shape === "line" ? "line" : "bar" })),
8963
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _364 => _364.data, 'optionalAccess', _365 => _365.values])), type: n3.shape === "line" ? "line" : "bar" })),
8954
8964
  orientation: data.horizontal ? "horizontal" : "vertical",
8955
8965
  xAxis: { show: true, title: text(data.xTitle), min: null, max: null, step: null, gridlines: false, format: {} },
8956
8966
  yAxis: { show: true, title: text(data.yTitle), min: num2(data.yMin), max: num2(data.yMax), step: null, gridlines: true, format: {} },
8957
- legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _364 => _364.data, 'optionalAccess', _365 => _365.titled])), position: "top" },
8967
+ legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _366 => _366.data, 'optionalAccess', _367 => _367.titled])), position: "top" },
8958
8968
  ...palette ? { palette: [...palette] } : {}
8959
8969
  });
8960
8970
  }
@@ -8964,7 +8974,7 @@ function radarChartSpec(graph, palette) {
8964
8974
  type: "radar",
8965
8975
  title: _nullishCoalesce(graph.title, () => ( "")),
8966
8976
  categories: Array.isArray(data.axes) ? data.axes.map(String) : [],
8967
- series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _366 => _366.data, 'optionalAccess', _367 => _367.values])) })),
8977
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _368 => _368.data, 'optionalAccess', _369 => _369.values])) })),
8968
8978
  yAxis: { show: true, title: "", min: num2(data.min), max: num2(data.max), step: null, gridlines: true, format: {} },
8969
8979
  legend: { show: data.showLegend !== false, position: "top" },
8970
8980
  ...palette ? { palette: [...palette] } : {}
@@ -9115,7 +9125,7 @@ var sequenceScene = ({ graph, theme }) => {
9115
9125
  for (const group of graph.groups) {
9116
9126
  const box = geo.boxes.get(group.id);
9117
9127
  if (!box) continue;
9118
- const color = typeof _optionalChain([group, 'access', _368 => _368.data, 'optionalAccess', _369 => _369.color]) === "string" ? group.data.color : void 0;
9128
+ const color = typeof _optionalChain([group, 'access', _370 => _370.data, 'optionalAccess', _371 => _371.color]) === "string" ? group.data.color : void 0;
9119
9129
  marks.push(
9120
9130
  { kind: "rect", key: `box:${group.id}`, role: "box", target: group.id, ...box, fill: _nullishCoalesce(color, () => ( "none")), stroke: theme.groupStroke, strokeWidth: 1 },
9121
9131
  ...textLines(displayLines(group.label), {
@@ -9184,12 +9194,12 @@ var sequenceScene = ({ graph, theme }) => {
9184
9194
  );
9185
9195
  });
9186
9196
  const edges = new Map(graph.edges.map((e) => [e.id, e]));
9187
- const autonumber = !!_optionalChain([graph, 'access', _370 => _370.data, 'optionalAccess', _371 => _371.autonumber]);
9197
+ const autonumber = !!_optionalChain([graph, 'access', _372 => _372.data, 'optionalAccess', _373 => _373.autonumber]);
9188
9198
  geo.messages.forEach((row, index) => {
9189
9199
  const edge = edges.get(row.edgeId);
9190
9200
  if (!edge) return;
9191
- const x1 = _nullishCoalesce(_optionalChain([geo, 'access', _372 => _372.columns, 'access', _373 => _373.get, 'call', _374 => _374(edge.source), 'optionalAccess', _375 => _375.center]), () => ( 0));
9192
- const x2 = _nullishCoalesce(_optionalChain([geo, 'access', _376 => _376.columns, 'access', _377 => _377.get, 'call', _378 => _378(edge.target), 'optionalAccess', _379 => _379.center]), () => ( 0));
9201
+ const x1 = _nullishCoalesce(_optionalChain([geo, 'access', _374 => _374.columns, 'access', _375 => _375.get, 'call', _376 => _376(edge.source), 'optionalAccess', _377 => _377.center]), () => ( 0));
9202
+ const x2 = _nullishCoalesce(_optionalChain([geo, 'access', _378 => _378.columns, 'access', _379 => _379.get, 'call', _380 => _380(edge.target), 'optionalAccess', _381 => _381.center]), () => ( 0));
9193
9203
  const y = row.y;
9194
9204
  const stroke = theme.edge;
9195
9205
  const strokeWidth = edge.pattern === "thick" ? 3.5 : 1.5;
@@ -9410,7 +9420,7 @@ var quadrantScene = ({ graph, theme }) => {
9410
9420
  }
9411
9421
  for (const q of geo.quadrants) {
9412
9422
  const group = groups.get(q.id);
9413
- if (!group || _optionalChain([group, 'access', _380 => _380.data, 'optionalAccess', _381 => _381.placeholder]) || !group.label) continue;
9423
+ if (!group || _optionalChain([group, 'access', _382 => _382.data, 'optionalAccess', _383 => _383.placeholder]) || !group.label) continue;
9414
9424
  marks.push({
9415
9425
  kind: "text",
9416
9426
  key: `quadrant-label:${q.id}`,
@@ -9857,7 +9867,7 @@ var mindmapScene = ({ graph, theme }) => {
9857
9867
  fill: colors.label
9858
9868
  });
9859
9869
  });
9860
- const icon = typeof _optionalChain([node, 'access', _382 => _382.data, 'optionalAccess', _383 => _383.icon]) === "string" ? node.data.icon : void 0;
9870
+ const icon = typeof _optionalChain([node, 'access', _384 => _384.data, 'optionalAccess', _385 => _385.icon]) === "string" ? node.data.icon : void 0;
9861
9871
  if (icon) {
9862
9872
  marks.push(
9863
9873
  { kind: "circle", key: `icon:${t.id}`, role: "icon", target: t.id, cx: x0, cy: y0, r: 11, fill: colors.fill, stroke: theme.background, strokeWidth: 2 },
@@ -9891,7 +9901,7 @@ var REL_GAP = 3;
9891
9901
  function colorsOf(type) {
9892
9902
  return _nullishCoalesce(C4_COLORS[`${type.external ? "external_" : ""}${type.base}`], () => ( C4_COLORS.container));
9893
9903
  }
9894
- var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _384 => _384.c4Style]), () => ( {}));
9904
+ var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _386 => _386.c4Style]), () => ( {}));
9895
9905
  function titleMark(graph, layout2, theme) {
9896
9906
  if (!graph.title) return null;
9897
9907
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -9912,11 +9922,11 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9912
9922
  const depth2 = (id) => {
9913
9923
  let d = 0;
9914
9924
  const seen = /* @__PURE__ */ new Set();
9915
- let p = _optionalChain([graph, 'access', _385 => _385.groups, 'access', _386 => _386.find, 'call', _387 => _387((g) => g.id === id), 'optionalAccess', _388 => _388.parentId]);
9925
+ let p = _optionalChain([graph, 'access', _387 => _387.groups, 'access', _388 => _388.find, 'call', _389 => _389((g) => g.id === id), 'optionalAccess', _390 => _390.parentId]);
9916
9926
  while (p && groupIds.has(p) && !seen.has(p)) {
9917
9927
  seen.add(p);
9918
9928
  d++;
9919
- p = _optionalChain([graph, 'access', _389 => _389.groups, 'access', _390 => _390.find, 'call', _391 => _391((g) => g.id === p), 'optionalAccess', _392 => _392.parentId]);
9929
+ p = _optionalChain([graph, 'access', _391 => _391.groups, 'access', _392 => _392.find, 'call', _393 => _393((g) => g.id === p), 'optionalAccess', _394 => _394.parentId]);
9920
9930
  }
9921
9931
  return d;
9922
9932
  };
@@ -9932,7 +9942,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9932
9942
  marks.push({ kind: "text", key: `boundary-descr:${group.id}`, role: "boundary-descr", target: group.id, x: cx, y: b.y + text2.descrY, text: text2.descr, anchor: "middle", baseline: "middle", size: 12, fill: theme.groupText });
9933
9943
  }
9934
9944
  const labels = [];
9935
- const dynamic = _optionalChain([graph, 'access', _393 => _393.data, 'optionalAccess', _394 => _394.c4Type]) === "C4Dynamic";
9945
+ const dynamic = _optionalChain([graph, 'access', _395 => _395.data, 'optionalAccess', _396 => _396.c4Type]) === "C4Dynamic";
9936
9946
  graph.edges.forEach((edge, index) => {
9937
9947
  const from = box(edge.source);
9938
9948
  const to = box(edge.target);
@@ -9960,7 +9970,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9960
9970
  const top = geo.label.y + offsetY - 7;
9961
9971
  const textFill = style.textColor || theme.text;
9962
9972
  const label = `${dynamic ? `${index + 1}: ` : ""}${_nullishCoalesce(edge.label, () => ( ""))}`;
9963
- const tech = typeof _optionalChain([edge, 'access', _395 => _395.data, 'optionalAccess', _396 => _396.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
9973
+ const tech = typeof _optionalChain([edge, 'access', _397 => _397.data, 'optionalAccess', _398 => _398.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
9964
9974
  const gridWidth = Math.max(label ? estimateTextWidth2(label, REL_FONT) : 0, tech ? estimateTextWidth2(tech, REL_FONT) : 0);
9965
9975
  if (label)
9966
9976
  labels.push({ kind: "text", key: `relation-label:${edge.id}`, role: "relation-label", target: edge.id, x: left, y: top + REL_LINE / 2, text: label, anchor: "start", baseline: "middle", size: REL_FONT, fill: textFill });
@@ -10236,8 +10246,8 @@ function iconMarks(key, target, icon, x, y, size2, theme) {
10236
10246
  );
10237
10247
  return marks;
10238
10248
  }
10239
- var isJunction = (n3) => n3.shape === "sm-circ" || !!_optionalChain([n3, 'access', _397 => _397.data, 'optionalAccess', _398 => _398.junction]);
10240
- var iconOf = (data) => typeof _optionalChain([data, 'optionalAccess', _399 => _399.icon]) === "string" && data.icon ? data.icon : void 0;
10249
+ var isJunction = (n3) => n3.shape === "sm-circ" || !!_optionalChain([n3, 'access', _399 => _399.data, 'optionalAccess', _400 => _400.junction]);
10250
+ var iconOf = (data) => typeof _optionalChain([data, 'optionalAccess', _401 => _401.icon]) === "string" && data.icon ? data.icon : void 0;
10241
10251
  function titleMark2(graph, layout2, theme) {
10242
10252
  if (!graph.title) return null;
10243
10253
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -10273,7 +10283,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10273
10283
  const icon = iconOf(group.data);
10274
10284
  marks.push({ kind: "rect", key: `group:${group.id}`, role: "group", target: group.id, ...b, fill: "none", stroke: theme.groupStroke, strokeWidth: 2, dash: "8" });
10275
10285
  if (icon) marks.push(...iconMarks(`group:${group.id}`, group.id, icon, b.x + 1, b.y + 1, A.groupIconSize, theme));
10276
- const label = _optionalChain([group, 'access', _400 => _400.data, 'optionalAccess', _401 => _401.untitled]) ? "" : group.label;
10286
+ const label = _optionalChain([group, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.untitled]) ? "" : group.label;
10277
10287
  if (label)
10278
10288
  marks.push({ kind: "text", key: `group-label:${group.id}`, role: "group-label", target: group.id, x: b.x + (icon ? A.groupIconSize + 4 : 4), y: b.y + 7 + 19 / 2, text: label, anchor: "start", baseline: "middle", size: A.fontSize, fill: theme.groupText });
10279
10289
  }
@@ -10310,7 +10320,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10310
10320
  continue;
10311
10321
  }
10312
10322
  marks.push(...iconMarks(`service:${node.id}`, node.id, iconOf(node.data), b.x, b.y, b.width, theme));
10313
- if (_optionalChain([node, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.untitled])) continue;
10323
+ if (_optionalChain([node, 'access', _404 => _404.data, 'optionalAccess', _405 => _405.untitled])) continue;
10314
10324
  _chunk3FSUJIXNcjs.serviceLabelLines.call(void 0, _nullishCoalesce(node.label, () => ( ""))).forEach(
10315
10325
  (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 })
10316
10326
  );
@@ -10325,7 +10335,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10325
10335
  var M7 = _chunk3FSUJIXNcjs.GANTT_METRICS;
10326
10336
  var CRIT = 3;
10327
10337
  function statusOf(node) {
10328
- const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _404 => _404.data, 'optionalAccess', _405 => _405.tags])) ? node.data.tags.map(String) : [];
10338
+ const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _406 => _406.data, 'optionalAccess', _407 => _407.tags])) ? node.data.tags.map(String) : [];
10329
10339
  const done2 = tags.includes("done");
10330
10340
  const active = tags.includes("active");
10331
10341
  const crit = tags.includes("crit");
@@ -10415,7 +10425,7 @@ var ganttScene = ({ graph, selection, theme }) => {
10415
10425
  const node = nodes.get(row.id);
10416
10426
  const status = statusOf(node);
10417
10427
  const colours2 = barColours(theme, status);
10418
- const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _406 => _406.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10428
+ const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _408 => _408.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10419
10429
  if (row.milestone) {
10420
10430
  const cx = row.x + row.width / 2;
10421
10431
  const cy = row.y + row.height / 2;
@@ -10520,10 +10530,10 @@ var timelineScene = ({ graph, theme }) => {
10520
10530
  for (const l of geo.eventLines) marks.push(...arrowLine(`event-line:${l.periodId}`, l.x, l.y1, l.x, l.y2, M8.eventLineWidth, true, line4));
10521
10531
  marks.push(...arrowLine("axis", geo.axis.x1, geo.axis.y, geo.axis.x2, geo.axis.y, M8.axisWidth, false, line4));
10522
10532
  for (const e of geo.events) box(`event:${e.periodId}:${e.index}`, "event", e.periodId, e, e.colour, e.text, void 0, true);
10523
- for (const s of geo.sections.values()) box(`section:${s.id}`, "section", s.id, s, s.colour, _nullishCoalesce(_optionalChain([groups, 'access', _407 => _407.get, 'call', _408 => _408(s.id), 'optionalAccess', _409 => _409.label]), () => ( s.id)), s.empty ? 0.6 : void 0);
10533
+ for (const s of geo.sections.values()) box(`section:${s.id}`, "section", s.id, s, s.colour, _nullishCoalesce(_optionalChain([groups, 'access', _409 => _409.get, 'call', _410 => _410(s.id), 'optionalAccess', _411 => _411.label]), () => ( s.id)), s.empty ? 0.6 : void 0);
10524
10534
  for (const p of geo.periods.values()) {
10525
10535
  const node = nodes.get(p.id);
10526
- box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _410 => _410.label]), () => ( p.id)));
10536
+ box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _412 => _412.label]), () => ( p.id)));
10527
10537
  }
10528
10538
  if (graph.title)
10529
10539
  marks.push({ kind: "text", key: "title", role: "title", target: DIAGRAM_TITLE_TARGET, x: geo.title.x, y: geo.title.baseline, text: graph.title, anchor: "start", baseline: "bottom", size: 32, weight: 700, fill: theme.text });
@@ -10577,7 +10587,7 @@ function markBounds(mark) {
10577
10587
  }
10578
10588
  case "path": {
10579
10589
  if (mark.box) return [mark.box.x, mark.box.y, mark.box.x + mark.box.width, mark.box.y + mark.box.height];
10580
- const nums = _nullishCoalesce(_optionalChain([mark, 'access', _411 => _411.d, 'access', _412 => _412.match, 'call', _413 => _413(/-?\d*\.?\d+(?:e-?\d+)?/gi), 'optionalAccess', _414 => _414.map, 'call', _415 => _415(Number)]), () => ( []));
10590
+ const nums = _nullishCoalesce(_optionalChain([mark, 'access', _413 => _413.d, 'access', _414 => _414.match, 'call', _415 => _415(/-?\d*\.?\d+(?:e-?\d+)?/gi), 'optionalAccess', _416 => _416.map, 'call', _417 => _417(Number)]), () => ( []));
10581
10591
  if (nums.length < 2) return null;
10582
10592
  let x0 = Infinity, y0 = Infinity, x1 = -Infinity, y1 = -Infinity;
10583
10593
  for (let i = 0; i + 1 < nums.length; i += 2) {
@@ -10686,7 +10696,7 @@ function diagramRenameOp(doc, target, label) {
10686
10696
  function diagramTargetLabel(doc, target) {
10687
10697
  const { graph } = doc;
10688
10698
  if (target === DIAGRAM_TITLE_TARGET) return _nullishCoalesce(graph.title, () => ( ""));
10689
- return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([graph, 'access', _416 => _416.groups, 'access', _417 => _417.find, 'call', _418 => _418((g) => g.id === target), 'optionalAccess', _419 => _419.label]), () => ( _optionalChain([graph, 'access', _420 => _420.edges, 'access', _421 => _421.find, 'call', _422 => _422((e) => e.id === target), 'optionalAccess', _423 => _423.label]))), () => ( _optionalChain([graph, 'access', _424 => _424.nodes, 'access', _425 => _425.find, 'call', _426 => _426((n3) => n3.id === target), 'optionalAccess', _427 => _427.label]))), () => ( null));
10699
+ return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([graph, 'access', _418 => _418.groups, 'access', _419 => _419.find, 'call', _420 => _420((g) => g.id === target), 'optionalAccess', _421 => _421.label]), () => ( _optionalChain([graph, 'access', _422 => _422.edges, 'access', _423 => _423.find, 'call', _424 => _424((e) => e.id === target), 'optionalAccess', _425 => _425.label]))), () => ( _optionalChain([graph, 'access', _426 => _426.nodes, 'access', _427 => _427.find, 'call', _428 => _428((n3) => n3.id === target), 'optionalAccess', _429 => _429.label]))), () => ( null));
10690
10700
  }
10691
10701
 
10692
10702
  // src/canvas/mermaid/shapes.ts
@@ -10904,7 +10914,7 @@ function mermaidLabelLines(label) {
10904
10914
  return String(label).replace(/^"`?|`?"$/g, "").split(/<br\s*\/?>|\n/i).map((line4) => line4.replace(/<[^>]+>/g, ""));
10905
10915
  }
10906
10916
  function mermaidNodeMembers(data) {
10907
- const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _428 => _428.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _429 => _429.attributes]), () => ( []))];
10917
+ const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _430 => _430.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _431 => _431.attributes]), () => ( []))];
10908
10918
  return list.map((m) => _nullishCoalesce(m.raw, () => ( "")));
10909
10919
  }
10910
10920
 
@@ -10977,10 +10987,10 @@ function mermaidToSvg(doc, options = {}) {
10977
10987
  }
10978
10988
  const depth2 = (id) => {
10979
10989
  let d = 0;
10980
- let cur = _optionalChain([graph, 'access', _430 => _430.groups, 'access', _431 => _431.find, 'call', _432 => _432((g) => g.id === id), 'optionalAccess', _433 => _433.parentId]);
10990
+ let cur = _optionalChain([graph, 'access', _432 => _432.groups, 'access', _433 => _433.find, 'call', _434 => _434((g) => g.id === id), 'optionalAccess', _435 => _435.parentId]);
10981
10991
  while (cur && d < 50) {
10982
10992
  d++;
10983
- cur = _optionalChain([graph, 'access', _434 => _434.groups, 'access', _435 => _435.find, 'call', _436 => _436((g) => g.id === cur), 'optionalAccess', _437 => _437.parentId]);
10993
+ cur = _optionalChain([graph, 'access', _436 => _436.groups, 'access', _437 => _437.find, 'call', _438 => _438((g) => g.id === cur), 'optionalAccess', _439 => _439.parentId]);
10984
10994
  }
10985
10995
  return d;
10986
10996
  };
@@ -11027,7 +11037,7 @@ function mermaidToSvg(doc, options = {}) {
11027
11037
  const fill = _nullishCoalesce(st.fill, () => ( theme.nodeFill));
11028
11038
  const stroke = _nullishCoalesce(st.stroke, () => ( theme.nodeStroke));
11029
11039
  const color = _nullishCoalesce(st.color, () => ( theme.text));
11030
- const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _438 => _438["stroke-width"], 'optionalAccess', _439 => _439.replace, 'call', _440 => _440("px", "")]), () => ( "1.25"));
11040
+ const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _440 => _440["stroke-width"], 'optionalAccess', _441 => _441.replace, 'call', _442 => _442("px", "")]), () => ( "1.25"));
11031
11041
  const paint = (kind) => kind === "shape" ? `fill="${esc2(fill)}" stroke="${esc2(stroke)}" stroke-width="${esc2(strokeWidth)}"` : kind === "line" ? `fill="none" stroke="${esc2(stroke)}" stroke-width="${esc2(strokeWidth)}"` : kind === "filled" ? `fill="${esc2(stroke)}" stroke="${esc2(stroke)}"` : 'fill="none" stroke="none"';
11032
11042
  out.push(`<g data-node="${esc2(node.id)}" transform="translate(${n2(b.x)} ${n2(b.y)})">`);
11033
11043
  for (const path of mermaidShapePaths(node.shape, b.width, b.height)) out.push(`<path d="${path.d}" ${paint(path.paint)}/>`);
@@ -11060,7 +11070,7 @@ function rasterSize(width, height, scale = 2, maxSize = DIAGRAM_RASTER_MAX_SIZE)
11060
11070
  var NO_DOM = 'Rasterizing needs a browser DOM (document, Image and a 2D canvas). Outside a browser, use the SVG (mermaidToSvg, or render_diagram with format "svg") with an SVG renderer.';
11061
11071
  async function rasterizeSvg(svg, options) {
11062
11072
  const doc = _nullishCoalesce(options.document, () => ( globalThis.document));
11063
- const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _441 => _441.defaultView, 'optionalAccess', _442 => _442.Image]), () => ( globalThis.Image));
11073
+ const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _443 => _443.defaultView, 'optionalAccess', _444 => _444.Image]), () => ( globalThis.Image));
11064
11074
  if (!doc || typeof doc.createElement !== "function" || !ImageCtor) throw new Error(NO_DOM);
11065
11075
  const size2 = rasterSize(options.width, options.height, options.scale, options.maxSize);
11066
11076
  const canvas = doc.createElement("canvas");
@@ -11095,7 +11105,7 @@ function diagramFileName(doc, extension2) {
11095
11105
  }
11096
11106
  async function downloadDiagramPng(doc, options = {}) {
11097
11107
  const drawn = mermaidToSvg(doc, options);
11098
- const background = _nullishCoalesce(options.background, () => ( (options.transparent ? "transparent" : _nullishCoalesce(_optionalChain([options, 'access', _443 => _443.theme, 'optionalAccess', _444 => _444.background]), () => ( DIAGRAM_SVG_LIGHT_THEME.background)))));
11108
+ const background = _nullishCoalesce(options.background, () => ( (options.transparent ? "transparent" : _nullishCoalesce(_optionalChain([options, 'access', _445 => _445.theme, 'optionalAccess', _446 => _446.background]), () => ( DIAGRAM_SVG_LIGHT_THEME.background)))));
11099
11109
  const image = await rasterizeSvg(drawn.svg, { ...options, width: drawn.width, height: drawn.height, background });
11100
11110
  const filename = _nullishCoalesce(options.filename, () => ( diagramFileName(doc, "png")));
11101
11111
  const page = _nullishCoalesce(options.document, () => ( document));
@@ -11135,7 +11145,7 @@ function mermaidMovesFromCanvas(layout2, moved, all = moved, options = {}) {
11135
11145
  for (const n3 of all) {
11136
11146
  if (movedIds.has(n3.id)) continue;
11137
11147
  let parent = n3.parentId;
11138
- while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _445 => _445.get, 'call', _446 => _446(parent), 'optionalAccess', _447 => _447.parentId]);
11148
+ while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _447 => _447.get, 'call', _448 => _448(parent), 'optionalAccess', _449 => _449.parentId]);
11139
11149
  if (parent) moves.push({ id: n3.id, position: absolute(n3.id) });
11140
11150
  }
11141
11151
  if (!moves.length) return null;
@@ -11171,10 +11181,10 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11171
11181
  const seed = hashString(`${agentId}:${nodeId}:${zoneName}`);
11172
11182
  const offsetX = seed % 17 - 8;
11173
11183
  const offsetY = (seed >> 4) % 9 - 4;
11174
- const jitterX = _optionalChain([options, 'optionalAccess', _448 => _448.randomJitter]) ? (Math.random() - 0.5) * 24 : 0;
11175
- const jitterY = _optionalChain([options, 'optionalAccess', _449 => _449.randomJitter]) ? (Math.random() - 0.5) * 16 : 0;
11176
- const maxX = _optionalChain([options, 'optionalAccess', _450 => _450.width]) ? Math.max(24, options.width - 20) : 230;
11177
- const maxY = _optionalChain([options, 'optionalAccess', _451 => _451.height]) ? Math.max(20, options.height - 15) : 145;
11184
+ const jitterX = _optionalChain([options, 'optionalAccess', _450 => _450.randomJitter]) ? (Math.random() - 0.5) * 24 : 0;
11185
+ const jitterY = _optionalChain([options, 'optionalAccess', _451 => _451.randomJitter]) ? (Math.random() - 0.5) * 16 : 0;
11186
+ const maxX = _optionalChain([options, 'optionalAccess', _452 => _452.width]) ? Math.max(24, options.width - 20) : 230;
11187
+ const maxY = _optionalChain([options, 'optionalAccess', _453 => _453.height]) ? Math.max(20, options.height - 15) : 145;
11178
11188
  return {
11179
11189
  x: Math.max(16, Math.min(maxX, Math.round(base.x + offsetX + jitterX))),
11180
11190
  y: Math.max(14, Math.min(maxY, Math.round(base.y + offsetY + jitterY))),
@@ -11183,8 +11193,8 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11183
11193
  }
11184
11194
  function calculateCurvedPath(fromX, fromY, toX, toY, progress, options) {
11185
11195
  const p = Math.max(0, Math.min(1, progress));
11186
- const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _452 => _452.arcHeight]), () => ( -30));
11187
- const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _453 => _453.wobble]), () => ( 0));
11196
+ const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _454 => _454.arcHeight]), () => ( -30));
11197
+ const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _455 => _455.wobble]), () => ( 0));
11188
11198
  const arc2 = Math.sin(p * Math.PI) * arcHeight;
11189
11199
  const sway = Math.sin(p * Math.PI * 2) * wobble;
11190
11200
  const currentX = fromX + (toX - fromX) * p + sway;
@@ -11211,7 +11221,7 @@ function getNaturalMovementTiming(distance, seedStr = "drag") {
11211
11221
  function getCursorTransitionDuration(distance, seedStr = "cursor", options) {
11212
11222
  const seed = hashString(seedStr);
11213
11223
  const jitter = seed % 60 - 30;
11214
- const variance = _optionalChain([options, 'optionalAccess', _454 => _454.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11224
+ const variance = _optionalChain([options, 'optionalAccess', _456 => _456.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11215
11225
  let baseDuration = 560;
11216
11226
  if (distance < 60) {
11217
11227
  baseDuration = 340;
@@ -11248,10 +11258,10 @@ function formatAgentCursorName(nameOrUsername) {
11248
11258
  }
11249
11259
  function isAgentCursor(cursor) {
11250
11260
  if (cursor.isAgent) return true;
11251
- if (_optionalChain([cursor, 'access', _455 => _455.userId, 'optionalAccess', _456 => _456.startsWith, 'call', _457 => _457("agent_")]) || _optionalChain([cursor, 'access', _458 => _458.userId, 'optionalAccess', _459 => _459.startsWith, 'call', _460 => _460("agent-")])) return true;
11252
- if (_optionalChain([cursor, 'access', _461 => _461.id, 'optionalAccess', _462 => _462.startsWith, 'call', _463 => _463("agent-")]) || _optionalChain([cursor, 'access', _464 => _464.id, 'optionalAccess', _465 => _465.startsWith, 'call', _466 => _466("agent_")])) return true;
11253
- if (_optionalChain([cursor, 'access', _467 => _467.username, 'optionalAccess', _468 => _468.startsWith, 'call', _469 => _469("@agent_")]) || _optionalChain([cursor, 'access', _470 => _470.username, 'optionalAccess', _471 => _471.startsWith, 'call', _472 => _472("agent_")])) return true;
11254
- const roleLower = _optionalChain([cursor, 'access', _473 => _473.role, 'optionalAccess', _474 => _474.toLowerCase, 'call', _475 => _475()]) || "";
11261
+ if (_optionalChain([cursor, 'access', _457 => _457.userId, 'optionalAccess', _458 => _458.startsWith, 'call', _459 => _459("agent_")]) || _optionalChain([cursor, 'access', _460 => _460.userId, 'optionalAccess', _461 => _461.startsWith, 'call', _462 => _462("agent-")])) return true;
11262
+ if (_optionalChain([cursor, 'access', _463 => _463.id, 'optionalAccess', _464 => _464.startsWith, 'call', _465 => _465("agent-")]) || _optionalChain([cursor, 'access', _466 => _466.id, 'optionalAccess', _467 => _467.startsWith, 'call', _468 => _468("agent_")])) return true;
11263
+ if (_optionalChain([cursor, 'access', _469 => _469.username, 'optionalAccess', _470 => _470.startsWith, 'call', _471 => _471("@agent_")]) || _optionalChain([cursor, 'access', _472 => _472.username, 'optionalAccess', _473 => _473.startsWith, 'call', _474 => _474("agent_")])) return true;
11264
+ const roleLower = _optionalChain([cursor, 'access', _475 => _475.role, 'optionalAccess', _476 => _476.toLowerCase, 'call', _477 => _477()]) || "";
11255
11265
  if (roleLower.includes("agent") || roleLower.includes("specialist") || roleLower === "planner" || roleLower === "coordinator" || roleLower === "executor" || roleLower === "validator" || roleLower === "supervisor") {
11256
11266
  return true;
11257
11267
  }
@@ -11273,7 +11283,7 @@ function createCanvasPlaybackLocator(options) {
11273
11283
  };
11274
11284
  if (ref.kind === "node" || ref.kind === "item") return rectOf(ref.id);
11275
11285
  if (ref.kind === "edge") {
11276
- const edge = _optionalChain([options, 'access', _476 => _476.getEdges, 'optionalCall', _477 => _477(), 'access', _478 => _478.find, 'call', _479 => _479((e) => e.id === ref.id)]);
11286
+ const edge = _optionalChain([options, 'access', _478 => _478.getEdges, 'optionalCall', _479 => _479(), 'access', _480 => _480.find, 'call', _481 => _481((e) => e.id === ref.id)]);
11277
11287
  const a = edge && rectOf(edge.source);
11278
11288
  const b = edge && rectOf(edge.target);
11279
11289
  if (!a || !b) return null;
@@ -11308,8 +11318,8 @@ var CANVAS_CAPTURE_OVERLAY_SELECTORS = [
11308
11318
  ".svelte-flow__resize-control"
11309
11319
  ];
11310
11320
  var size = (node) => ({
11311
- width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _480 => _480.measured, 'optionalAccess', _481 => _481.width]), () => ( node.width)), () => ( 0)),
11312
- height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _482 => _482.measured, 'optionalAccess', _483 => _483.height]), () => ( node.height)), () => ( 0))
11321
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _482 => _482.measured, 'optionalAccess', _483 => _483.width]), () => ( node.width)), () => ( 0)),
11322
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _484 => _484.measured, 'optionalAccess', _485 => _485.height]), () => ( node.height)), () => ( 0))
11313
11323
  });
11314
11324
  function canvasNodeCaptureRect(node, nodes) {
11315
11325
  if (node.hidden) return null;
@@ -11384,7 +11394,7 @@ function createCanvasCaptureSurface(options) {
11384
11394
  vpEl.style.transform = `translate(${-request.rect.x * zoom}px, ${-request.rect.y * zoom}px) scale(${zoom})`;
11385
11395
  vpEl.style.transformOrigin = "0 0";
11386
11396
  for (let node = vpEl; node && node !== clone; node = node.parentElement) {
11387
- for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _484 => _484.parentElement, 'optionalAccess', _485 => _485.children]), () => ( [])))) {
11397
+ for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _486 => _486.parentElement, 'optionalAccess', _487 => _487.children]), () => ( [])))) {
11388
11398
  if (sibling !== node) sibling.remove();
11389
11399
  }
11390
11400
  }
@@ -11412,7 +11422,7 @@ var CANVAS_EFFECT_PLACES = {
11412
11422
  transition: ["transition"]
11413
11423
  };
11414
11424
  function canvasNodeEffect(node) {
11415
- const shape = _optionalChain([node, 'access', _486 => _486.data, 'optionalAccess', _487 => _487.shape]);
11425
+ const shape = _optionalChain([node, 'access', _488 => _488.data, 'optionalAccess', _489 => _489.shape]);
11416
11426
  return _chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape) ? shape.effect : void 0;
11417
11427
  }
11418
11428
  function canvasEffectStatus(effect, provider) {
@@ -11442,7 +11452,7 @@ function createCanvasEffectsController(options) {
11442
11452
  const shapeNode = (id) => {
11443
11453
  const node = options.getNodes().find((n3) => n3.id === id);
11444
11454
  if (!node) throw new Error(`There is no node "${id}"; the nodes are ${options.getNodes().map((n3) => `"${n3.id}"`).slice(0, 20).join(", ") || "none"}.`);
11445
- const shape = _optionalChain([node, 'access', _488 => _488.data, 'optionalAccess', _489 => _489.shape]);
11455
+ const shape = _optionalChain([node, 'access', _490 => _490.data, 'optionalAccess', _491 => _491.shape]);
11446
11456
  if (!_chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape)) throw new Error(`Node "${id}" is not a shape; effects draw on shape nodes (data.shape).`);
11447
11457
  return { node, shape };
11448
11458
  };
@@ -11536,11 +11546,11 @@ function createCanvasEffectsController(options) {
11536
11546
  },
11537
11547
  /** The scenes, in order (empty without a Scenes store). */
11538
11548
  scenes() {
11539
- return _nullishCoalesce(_optionalChain([options, 'access', _490 => _490.scenes, 'optionalAccess', _491 => _491.getState, 'call', _492 => _492(), 'access', _493 => _493.scenes]), () => ( []));
11549
+ return _nullishCoalesce(_optionalChain([options, 'access', _492 => _492.scenes, 'optionalAccess', _493 => _493.getState, 'call', _494 => _494(), 'access', _495 => _495.scenes]), () => ( []));
11540
11550
  },
11541
11551
  /** The transition into a scene, if it has one. */
11542
11552
  sceneTransition(sceneId) {
11543
- return _optionalChain([options, 'access', _494 => _494.scenes, 'optionalAccess', _495 => _495.getScene, 'call', _496 => _496(sceneId), 'optionalAccess', _497 => _497.transition]);
11553
+ return _optionalChain([options, 'access', _496 => _496.scenes, 'optionalAccess', _497 => _497.getScene, 'call', _498 => _498(sceneId), 'optionalAccess', _499 => _499.transition]);
11544
11554
  },
11545
11555
  /**
11546
11556
  * Sets (or with `effect` null removes) the provider transition played when the canvas moves to
@@ -11601,7 +11611,7 @@ function runCanvasNodeEffect(options) {
11601
11611
  if (options.animate !== false && effect.playing !== false) cancel = clock.frame(tick);
11602
11612
  },
11603
11613
  (e) => {
11604
- if (!stopped) _optionalChain([options, 'access', _498 => _498.onError, 'optionalCall', _499 => _499(e)]);
11614
+ if (!stopped) _optionalChain([options, 'access', _500 => _500.onError, 'optionalCall', _501 => _501(e)]);
11605
11615
  }
11606
11616
  );
11607
11617
  };
@@ -11664,7 +11674,7 @@ async function transitionCanvasView(options) {
11664
11674
  overlay.setAttribute("data-capture", "overlay");
11665
11675
  overlay.setAttribute("data-canvas-transition", options.transition.effect);
11666
11676
  Object.assign(overlay.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none", zIndex: "1000" });
11667
- _optionalChain([overlay, 'access', _500 => _500.getContext, 'call', _501 => _501("2d"), 'optionalAccess', _502 => _502.putImageData, 'call', _503 => _503(new ImageData(new Uint8ClampedArray(from.data), size2.width, size2.height), 0, 0)]);
11677
+ _optionalChain([overlay, 'access', _502 => _502.getContext, 'call', _503 => _503("2d"), 'optionalAccess', _504 => _504.putImageData, 'call', _505 => _505(new ImageData(new Uint8ClampedArray(from.data), size2.width, size2.height), 0, 0)]);
11668
11678
  if (getComputedStyle(element).position === "static") element.style.position = "relative";
11669
11679
  element.appendChild(overlay);
11670
11680
  try {
@@ -11695,7 +11705,7 @@ function createCanvasEffectsToolProvider(controller, options = {}) {
11695
11705
  return ro ? typeof ro === "string" ? ro : "The canvas is read-only." : null;
11696
11706
  };
11697
11707
  const result = (nodeId, effect) => {
11698
- const now = _optionalChain([controller, 'access', _504 => _504.list, 'call', _505 => _505(nodeId), 'access', _506 => _506[0], 'optionalAccess', _507 => _507.effect]);
11708
+ const now = _optionalChain([controller, 'access', _506 => _506.list, 'call', _507 => _507(nodeId), 'access', _508 => _508[0], 'optionalAccess', _509 => _509.effect]);
11699
11709
  return { target: nodeId, effect: info(_nullishCoalesce(effect, () => ( now))), effects: now ? [info(now)] : [] };
11700
11710
  };
11701
11711
  const once = (instance) => {
@@ -11846,7 +11856,7 @@ function createCanvasEditorDocument(options) {
11846
11856
  options.setNodes(doc.nodes.map((n3) => ({ ...n3 })));
11847
11857
  options.setEdges(doc.edges.map((e) => ({ ...e })));
11848
11858
  if (scenes2) scenes2.load(_nullishCoalesce(doc.scenes, () => ( [])));
11849
- if (doc.viewport) _optionalChain([options, 'access', _508 => _508.setViewport, 'optionalCall', _509 => _509({ ...doc.viewport })]);
11859
+ if (doc.viewport) _optionalChain([options, 'access', _510 => _510.setViewport, 'optionalCall', _511 => _511({ ...doc.viewport })]);
11850
11860
  };
11851
11861
  const check = (document2) => {
11852
11862
  checkCanvasDocument(document2);
@@ -11891,7 +11901,7 @@ function createCanvasEditorDocument(options) {
11891
11901
  }
11892
11902
  function createCanvasGestureRecorder(options) {
11893
11903
  let before = null;
11894
- const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _510 => _510.getEdges, 'optionalCall', _511 => _511()]) });
11904
+ const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _512 => _512.getEdges, 'optionalCall', _513 => _513()]) });
11895
11905
  const key = (s) => canvasDocumentContentKey(s.nodes, _nullishCoalesce(s.edges, () => ( [])));
11896
11906
  const restore = (s) => {
11897
11907
  options.setNodes(s.nodes);
@@ -12024,8 +12034,8 @@ function createCanvasExplosionStateController(options = {}) {
12024
12034
  clearTimer();
12025
12035
  const previous = snapshot.activeId;
12026
12036
  set({ activeId: nodeId, collapsingId: null });
12027
- if (previous !== null) _optionalChain([options, 'access', _512 => _512.onCollapse, 'optionalCall', _513 => _513(previous)]);
12028
- _optionalChain([options, 'access', _514 => _514.onExplode, 'optionalCall', _515 => _515(nodeId)]);
12037
+ if (previous !== null) _optionalChain([options, 'access', _514 => _514.onCollapse, 'optionalCall', _515 => _515(previous)]);
12038
+ _optionalChain([options, 'access', _516 => _516.onExplode, 'optionalCall', _517 => _517(nodeId)]);
12029
12039
  return true;
12030
12040
  };
12031
12041
  const collapse = (nodeId) => {
@@ -12034,7 +12044,7 @@ function createCanvasExplosionStateController(options = {}) {
12034
12044
  if (active === null || nodeId !== void 0 && nodeId !== active) return false;
12035
12045
  clearTimer();
12036
12046
  set({ activeId: null, collapsingId: active });
12037
- _optionalChain([options, 'access', _516 => _516.onCollapse, 'optionalCall', _517 => _517(active)]);
12047
+ _optionalChain([options, 'access', _518 => _518.onCollapse, 'optionalCall', _519 => _519(active)]);
12038
12048
  if (duration === 0) finishCollapse();
12039
12049
  else timer = setTimeout(() => {
12040
12050
  timer = null;
@@ -12095,7 +12105,7 @@ function canvasExplosionToolTarget(state, options) {
12095
12105
  var READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12096
12106
  var WRITE_IDEMPOTENT = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12097
12107
  var labelOf = (node) => {
12098
- const label = _nullishCoalesce(_optionalChain([node, 'access', _518 => _518.data, 'optionalAccess', _519 => _519.label]), () => ( _optionalChain([node, 'access', _520 => _520.data, 'optionalAccess', _521 => _521.name])));
12108
+ const label = _nullishCoalesce(_optionalChain([node, 'access', _520 => _520.data, 'optionalAccess', _521 => _521.label]), () => ( _optionalChain([node, 'access', _522 => _522.data, 'optionalAccess', _523 => _523.name])));
12099
12109
  return typeof label === "string" && label !== "" ? label : void 0;
12100
12110
  };
12101
12111
  function createCanvasExplosionToolProvider(target, options = {}) {
@@ -12108,7 +12118,7 @@ function createCanvasExplosionToolProvider(target, options = {}) {
12108
12118
  if (ok === true) return null;
12109
12119
  return typeof ok === "string" && ok ? ok : `Node "${node.id}" has nothing to explode into.`;
12110
12120
  };
12111
- const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _522 => _522.collapsing, 'optionalCall', _523 => _523()]), () => ( []))] });
12121
+ const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _524 => _524.collapsing, 'optionalCall', _525 => _525()]), () => ( []))] });
12112
12122
  const findNode = (id) => {
12113
12123
  const node = target.getNodes().find((n3) => n3.id === id);
12114
12124
  if (!node) throw new Error(`No node "${id}" on the canvas. Call list_explodable_nodes for node ids.`);
@@ -12227,8 +12237,8 @@ function createCanvasProposals(options) {
12227
12237
  const rectOf = (node) => ({
12228
12238
  x: node.position.x,
12229
12239
  y: node.position.y,
12230
- width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _524 => _524.measured, 'optionalAccess', _525 => _525.width]), () => ( node.width)), () => ( size2.width)),
12231
- height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _526 => _526.measured, 'optionalAccess', _527 => _527.height]), () => ( node.height)), () => ( size2.height))
12240
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _526 => _526.measured, 'optionalAccess', _527 => _527.width]), () => ( node.width)), () => ( size2.width)),
12241
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _528 => _528.measured, 'optionalAccess', _529 => _529.height]), () => ( node.height)), () => ( size2.height))
12232
12242
  });
12233
12243
  const missing = (proposal) => {
12234
12244
  const present = new Set(options.getNodes().map((n3) => n3.id));
@@ -12278,7 +12288,7 @@ function createCanvasProposals(options) {
12278
12288
  throw new Error(`nodes[${i}].position needs finite x and y.`);
12279
12289
  }
12280
12290
  if (!position) {
12281
- const view = _optionalChain([options, 'access', _528 => _528.visibleRect, 'optionalCall', _529 => _529()]);
12291
+ const view = _optionalChain([options, 'access', _530 => _530.visibleRect, 'optionalCall', _531 => _531()]);
12282
12292
  if (input2.nearNodeId) position = _chunkEL4PSKFTcjs.placeBeside.call(void 0, rects, nodeSize, toSide(input2.side), input2.nearNodeId);
12283
12293
  else if (view) position = _chunkEL4PSKFTcjs.placeInView.call(void 0, rects, nodeSize, view);
12284
12294
  else if (canvasNodes.length || nodes.length) {
@@ -12330,7 +12340,7 @@ function createCanvasProposals(options) {
12330
12340
  };
12331
12341
  const accept = (id) => {
12332
12342
  const proposal = find(id);
12333
- const reason = _optionalChain([options, 'access', _530 => _530.readOnly, 'optionalCall', _531 => _531()]);
12343
+ const reason = _optionalChain([options, 'access', _532 => _532.readOnly, 'optionalCall', _533 => _533()]);
12334
12344
  if (reason) throw new Error(reason);
12335
12345
  const gone = missing(proposal);
12336
12346
  if (gone.length) {
@@ -12482,7 +12492,7 @@ function createCanvasChangeFeed(options) {
12482
12492
  if (edited) pending = void 0;
12483
12493
  const change = {
12484
12494
  seq: ++seq,
12485
- origin: _optionalChain([commit, 'optionalAccess', _532 => _532.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _533 => _533.kind]) === "merge" ? commit.origin : "user",
12495
+ origin: _optionalChain([commit, 'optionalAccess', _534 => _534.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _535 => _535.kind]) === "merge" ? commit.origin : "user",
12486
12496
  ...commit ? { commit } : {},
12487
12497
  addedNodes,
12488
12498
  removedNodes,
@@ -12501,8 +12511,8 @@ function createCanvasChangeFeed(options) {
12501
12511
  const noteCommit = (event) => {
12502
12512
  pending = event;
12503
12513
  };
12504
- const offHistory = _optionalChain([options, 'access', _534 => _534.history, 'optionalAccess', _535 => _535.onCommit, 'call', _536 => _536(noteCommit)]);
12505
- const offCanvas = _optionalChain([options, 'access', _537 => _537.subscribe, 'optionalCall', _538 => _538(() => {
12514
+ const offHistory = _optionalChain([options, 'access', _536 => _536.history, 'optionalAccess', _537 => _537.onCommit, 'call', _538 => _538(noteCommit)]);
12515
+ const offCanvas = _optionalChain([options, 'access', _539 => _539.subscribe, 'optionalCall', _540 => _540(() => {
12506
12516
  check();
12507
12517
  })]);
12508
12518
  return {
@@ -12521,8 +12531,8 @@ function createCanvasChangeFeed(options) {
12521
12531
  },
12522
12532
  noteCommit,
12523
12533
  dispose: () => {
12524
- _optionalChain([offHistory, 'optionalCall', _539 => _539()]);
12525
- _optionalChain([offCanvas, 'optionalCall', _540 => _540()]);
12534
+ _optionalChain([offHistory, 'optionalCall', _541 => _541()]);
12535
+ _optionalChain([offCanvas, 'optionalCall', _542 => _542()]);
12526
12536
  listeners.clear();
12527
12537
  }
12528
12538
  };
@@ -12532,7 +12542,7 @@ function createCanvasChangeFeed(options) {
12532
12542
  var READ2 = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12533
12543
  var WRITE = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
12534
12544
  var labelOf2 = (node) => {
12535
- const label = _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _541 => _541.data, 'optionalAccess', _542 => _542.label]), () => ( _optionalChain([node, 'access', _543 => _543.data, 'optionalAccess', _544 => _544.name]))), () => ( _optionalChain([node, 'access', _545 => _545.data, 'optionalAccess', _546 => _546.title])));
12545
+ const label = _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _543 => _543.data, 'optionalAccess', _544 => _544.label]), () => ( _optionalChain([node, 'access', _545 => _545.data, 'optionalAccess', _546 => _546.name]))), () => ( _optionalChain([node, 'access', _547 => _547.data, 'optionalAccess', _548 => _548.title])));
12536
12546
  return typeof label === "string" && label !== "" ? label : void 0;
12537
12547
  };
12538
12548
  var proposalIdArg = {
@@ -12613,7 +12623,7 @@ function createCanvasProposalToolProvider(proposals, options = {}) {
12613
12623
  },
12614
12624
  annotations: { title: "Propose nodes", ...WRITE },
12615
12625
  handler: (args, context) => {
12616
- const origin = _optionalChain([context, 'access', _547 => _547.actor, 'optionalAccess', _548 => _548.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12626
+ const origin = _optionalChain([context, 'access', _549 => _549.actor, 'optionalAccess', _550 => _550.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12617
12627
  const proposal = proposals.propose({ title: args.title, rationale: args.rationale, nodes: args.nodes, edges: args.edges, ...origin ? { origin } : {} });
12618
12628
  const { id: _id, missing: _missing, createdAt: _createdAt, ...rest } = describe(proposal);
12619
12629
  return { proposalId: proposal.id, ...rest };
@@ -12665,7 +12675,7 @@ function stickerCanvasNode(placement, id) {
12665
12675
  const { description, asset } = placement;
12666
12676
  const silhouette = _nullishCoalesce((asset.kind === "svg" ? asset.silhouette : void 0), () => ( description.silhouette));
12667
12677
  if (!silhouette) throw new (0, _chunkU67EN7GGcjs.StickerError)("unsupported_format", `"${placement.ref}" has no outline (silhouette); the canvas places stickers by their outline. Pick one whose describe_sticker lists a silhouette.`);
12668
- const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _549 => _549.colours, 'optionalAccess', _550 => _550[0]]))), () => ( "#1f2937"));
12678
+ const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _551 => _551.colours, 'optionalAccess', _552 => _552[0]]))), () => ( "#1f2937"));
12669
12679
  const shape = { kind: "path", d: silhouette, viewBox: [0, 0, description.width, description.height], fillRule: "evenodd", fill };
12670
12680
  const sticker = { ref: placement.ref, licence: description.licence };
12671
12681
  return {
@@ -13238,4 +13248,6 @@ function createCanvasStickerHost(options) {
13238
13248
 
13239
13249
 
13240
13250
 
13241
- 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_MISSING_PATTERN = CANVAS_EFFECT_MISSING_PATTERN; exports.CANVAS_EFFECT_PLACES = CANVAS_EFFECT_PLACES; exports.CANVAS_GRADIENT_PRESETS = _chunkNM3G4VQTcjs.CANVAS_GRADIENT_PRESETS; exports.CANVAS_PROPOSAL_CLASS = CANVAS_PROPOSAL_CLASS; 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 = _chunkT7QSEKDYcjs.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.arrowGesture = _chunkT7QSEKDYcjs.arrowGesture; 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.bracketGesture = _chunkT7QSEKDYcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkLFMKWGFLcjs.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.canvasDocumentContentKey = canvasDocumentContentKey; exports.canvasEffectErrorReason = canvasEffectErrorReason; exports.canvasEffectStatus = canvasEffectStatus; 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.checkGesture = _chunkT7QSEKDYcjs.checkGesture; exports.circleGesture = _chunkT7QSEKDYcjs.circleGesture; 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.createCanvasChangeFeed = createCanvasChangeFeed; 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.createCanvasProposalToolProvider = createCanvasProposalToolProvider; exports.createCanvasProposals = createCanvasProposals; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createCanvasStickerHost = createCanvasStickerHost; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.crossGesture = _chunkT7QSEKDYcjs.crossGesture; 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.gestureEdgePoint = _chunkT7QSEKDYcjs.gestureEdgePoint; exports.gestureRandom = _chunkT7QSEKDYcjs.gestureRandom; exports.gestureSeed = _chunkT7QSEKDYcjs.gestureSeed; exports.gestureUnion = _chunkT7QSEKDYcjs.gestureUnion; 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 = _chunkLFMKWGFLcjs.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 = _chunkLFMKWGFLcjs.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 = _chunkLFMKWGFLcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkLFMKWGFLcjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkT7QSEKDYcjs.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 = _chunkLFMKWGFLcjs.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 = _chunkLFMKWGFLcjs.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 = _chunkLFMKWGFLcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkLFMKWGFLcjs.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.stickerCanvasNode = stickerCanvasNode; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strikeGesture = _chunkT7QSEKDYcjs.strikeGesture; 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.underlineGesture = _chunkT7QSEKDYcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkLFMKWGFLcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkLFMKWGFLcjs.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;
13251
+
13252
+
13253
+ 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_MISSING_PATTERN = CANVAS_EFFECT_MISSING_PATTERN; exports.CANVAS_EFFECT_PLACES = CANVAS_EFFECT_PLACES; exports.CANVAS_GRADIENT_PRESETS = _chunkNM3G4VQTcjs.CANVAS_GRADIENT_PRESETS; exports.CANVAS_PROPOSAL_CLASS = CANVAS_PROPOSAL_CLASS; 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 = _chunkT7QSEKDYcjs.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.arrowGesture = _chunkT7QSEKDYcjs.arrowGesture; 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.bracketGesture = _chunkT7QSEKDYcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkLRNUZKWVcjs.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.canvasDocumentContentKey = canvasDocumentContentKey; exports.canvasEffectErrorReason = canvasEffectErrorReason; exports.canvasEffectStatus = canvasEffectStatus; 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.checkGesture = _chunkT7QSEKDYcjs.checkGesture; exports.circleGesture = _chunkT7QSEKDYcjs.circleGesture; 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.createCanvasChangeFeed = createCanvasChangeFeed; 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.createCanvasProposalToolProvider = createCanvasProposalToolProvider; exports.createCanvasProposals = createCanvasProposals; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createCanvasStickerHost = createCanvasStickerHost; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.crossGesture = _chunkT7QSEKDYcjs.crossGesture; 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.gestureEdgePoint = _chunkT7QSEKDYcjs.gestureEdgePoint; exports.gestureRandom = _chunkT7QSEKDYcjs.gestureRandom; exports.gestureSeed = _chunkT7QSEKDYcjs.gestureSeed; exports.gestureUnion = _chunkT7QSEKDYcjs.gestureUnion; 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 = _chunkLRNUZKWVcjs.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 = _chunkLRNUZKWVcjs.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 = _chunkLRNUZKWVcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkLRNUZKWVcjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkT7QSEKDYcjs.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 = _chunkLRNUZKWVcjs.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 = _chunkLRNUZKWVcjs.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.renderCanvasBrushPreview = _chunkLRNUZKWVcjs.renderCanvasBrushPreview; exports.renderCanvasBrushSwatch = _chunkLRNUZKWVcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkLRNUZKWVcjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasBrushSpec = _chunkLRNUZKWVcjs.resolveCanvasBrushSpec; 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.stickerCanvasNode = stickerCanvasNode; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strikeGesture = _chunkT7QSEKDYcjs.strikeGesture; 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.underlineGesture = _chunkT7QSEKDYcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkLRNUZKWVcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkLRNUZKWVcjs.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;