@pixerate/editor 0.259.0 → 0.261.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 (80) 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 +61 -59
  4. package/dist/animation-editor/index.js +5 -3
  5. package/dist/brushes/index.cjs +52 -52
  6. package/dist/brushes/index.js +6 -6
  7. package/dist/{brushstrokeRender-JI4W6F2G.js → brushstrokeRender-25Q5BEY6.js} +17 -7
  8. package/dist/{brushstrokeRender-MQ6PSDM5.cjs → brushstrokeRender-N6UPZSQS.cjs} +31 -21
  9. package/dist/canvas/brushTypes.d.cts +5 -0
  10. package/dist/canvas/brushTypes.d.ts +5 -0
  11. package/dist/canvas/drawController.d.cts +15 -1
  12. package/dist/canvas/drawController.d.ts +15 -1
  13. package/dist/canvas/index.cjs +136 -102
  14. package/dist/canvas/index.js +35 -1
  15. package/dist/{chunk-3PPJRMIG.js → chunk-3O47TPGX.js} +197 -18
  16. package/dist/{chunk-5Q5MLXAD.cjs → chunk-3TQW5MPW.cjs} +23 -23
  17. package/dist/{chunk-JBBJE76O.cjs → chunk-3ZRNK3RO.cjs} +1138 -85
  18. package/dist/{chunk-YSGW7VV4.cjs → chunk-43NT242D.cjs} +1401 -228
  19. package/dist/{chunk-SMTUQWGY.js → chunk-5IW65VQ6.js} +1 -1
  20. package/dist/{chunk-YQ4PQTBB.js → chunk-6NZL24W4.js} +9 -1
  21. package/dist/{chunk-O3ZVZSNJ.cjs → chunk-7AUQ2UJ3.cjs} +137 -129
  22. package/dist/{chunk-4M4E3N6X.js → chunk-CQVTGBQI.js} +1 -1
  23. package/dist/{chunk-SSFMWJDK.js → chunk-D4TE5JNW.js} +1192 -19
  24. package/dist/{chunk-AORZ5M5C.js → chunk-EHALWBBD.js} +1 -1
  25. package/dist/{chunk-6WCQ35GI.cjs → chunk-NHA26O5X.cjs} +2 -2
  26. package/dist/{chunk-DPYAO5U6.cjs → chunk-PVJMTLPJ.cjs} +197 -18
  27. package/dist/{chunk-MQGQTKVW.cjs → chunk-PYTJBVW5.cjs} +29 -29
  28. package/dist/{chunk-IXQZHCOF.js → chunk-QAR2N7HZ.js} +1 -1
  29. package/dist/{chunk-5P4JEOIV.js → chunk-TMDDMJCR.js} +2 -2
  30. package/dist/{chunk-RSIKDWOP.cjs → chunk-TZOX7KWV.cjs} +15 -15
  31. package/dist/{chunk-IPUTIUGQ.cjs → chunk-UVZ7RQOE.cjs} +1 -1
  32. package/dist/{chunk-A7GJ6BXI.js → chunk-WJ4WQJCC.js} +1062 -9
  33. package/dist/{chunk-ICTPLVSR.js → chunk-X2EXYY4J.js} +1 -1
  34. package/dist/{chunk-WQCNC4DK.js → chunk-XC6DPRYI.js} +695 -4
  35. package/dist/{chunk-KBYB7OWB.cjs → chunk-YHDHFJUC.cjs} +776 -85
  36. package/dist/{chunk-P3PZ63M3.cjs → chunk-YLUIFXSL.cjs} +35 -35
  37. package/dist/commands/index.cjs +2 -2
  38. package/dist/commands/index.js +1 -1
  39. package/dist/image-editor/index.cjs +1385 -2484
  40. package/dist/image-editor/index.js +139 -1238
  41. package/dist/image-editor/selection-worker.cjs +3 -4
  42. package/dist/image-editor/selection-worker.js +1 -2
  43. package/dist/paint/index.cjs +3 -5
  44. package/dist/paint/index.js +40 -42
  45. package/dist/paint-editor/contract.d.cts +29 -0
  46. package/dist/paint-editor/contract.d.ts +29 -0
  47. package/dist/paint-editor/controller.d.cts +17 -0
  48. package/dist/paint-editor/controller.d.ts +17 -0
  49. package/dist/paint-editor/dab-stroke.d.cts +5 -0
  50. package/dist/paint-editor/dab-stroke.d.ts +5 -0
  51. package/dist/paint-editor/index.cjs +610 -327
  52. package/dist/paint-editor/index.d.cts +2 -0
  53. package/dist/paint-editor/index.d.ts +2 -0
  54. package/dist/paint-editor/index.js +337 -54
  55. package/dist/paint-editor/path-samples.d.cts +19 -0
  56. package/dist/paint-editor/path-samples.d.ts +19 -0
  57. package/dist/paint-editor/stamp-tip.d.cts +17 -0
  58. package/dist/paint-editor/stamp-tip.d.ts +17 -0
  59. package/dist/paint-editor/ui.d.cts +27 -1
  60. package/dist/paint-editor/ui.d.ts +27 -1
  61. package/dist/raster/index.cjs +2 -4
  62. package/dist/raster/index.js +6 -8
  63. package/dist/vector/brushstroke.d.cts +6 -0
  64. package/dist/vector/brushstroke.d.ts +6 -0
  65. package/dist/vector/controller.d.cts +11 -2
  66. package/dist/vector/controller.d.ts +11 -2
  67. package/dist/vector/index.cjs +990 -973
  68. package/dist/vector/index.js +28 -11
  69. package/package.json +1 -1
  70. package/skills/pixerate-brushes/SKILL.md +1 -1
  71. package/skills/pixerate-canvas/SKILL.md +3 -1
  72. package/skills/pixerate-paint-editor/SKILL.md +2 -0
  73. package/skills/pixerate-paint-sketch-to-finish/SKILL.md +5 -1
  74. package/skills/pixerate-vector/SKILL.md +2 -2
  75. package/dist/chunk-2VJAVXLI.js +0 -192
  76. package/dist/chunk-62Z5WLRA.js +0 -700
  77. package/dist/chunk-BOHDJJ2O.cjs +0 -192
  78. package/dist/chunk-NKGB64CW.cjs +0 -700
  79. package/dist/chunk-SS53NNZO.cjs +0 -1066
  80. package/dist/chunk-ZNA3IQZF.js +0 -1066
@@ -46,7 +46,7 @@ var _chunk3FSUJIXNcjs = require('../chunk-3FSUJIXN.cjs');
46
46
 
47
47
 
48
48
 
49
- var _chunkIPUTIUGQcjs = require('../chunk-IPUTIUGQ.cjs');
49
+ var _chunkUVZ7RQOEcjs = require('../chunk-UVZ7RQOE.cjs');
50
50
 
51
51
 
52
52
 
@@ -216,6 +216,10 @@ var _chunkGF2RBSDMcjs = require('../chunk-GF2RBSDM.cjs');
216
216
  var _chunkNM3G4VQTcjs = require('../chunk-NM3G4VQT.cjs');
217
217
 
218
218
 
219
+ var _chunkLRTR4ASZcjs = require('../chunk-LRTR4ASZ.cjs');
220
+ require('../chunk-A2IS7EHE.cjs');
221
+
222
+
219
223
  var _chunkU67EN7GGcjs = require('../chunk-U67EN7GG.cjs');
220
224
 
221
225
 
@@ -7980,12 +7984,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
7980
7984
  if (!samples || samples.length !== points.length) return out;
7981
7985
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
7982
7986
  if (samples.some((s) => finite2(s.pressure))) {
7983
- const pressure = _chunkIPUTIUGQcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7987
+ const pressure = _chunkUVZ7RQOEcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7984
7988
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
7985
7989
  }
7986
7990
  for (const key of ["tiltX", "tiltY"]) {
7987
7991
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
7988
- out[key] = _chunkIPUTIUGQcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7992
+ out[key] = _chunkUVZ7RQOEcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7989
7993
  }
7990
7994
  return out;
7991
7995
  }
@@ -8031,7 +8035,7 @@ function strokeToShapeNode(stroke, options = {}) {
8031
8035
  ...stroke.style.paint !== void 0 ? { paint: stroke.style.paint } : {},
8032
8036
  ...stroke.style.brushSpec && typeof stroke.style.brush === "string" && stroke.style.brushSpec.id === stroke.style.brush ? { spec: stroke.style.brushSpec } : {},
8033
8037
  // New strokes carry a character seed (jitter and grain) and their size, if chosen.
8034
- seed: _chunkIPUTIUGQcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8038
+ seed: _chunkUVZ7RQOEcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8035
8039
  ...stroke.style.brushSize !== void 0 && stroke.style.brushSize > 0 ? { size: stroke.style.brushSize } : {}
8036
8040
  }
8037
8041
  } : {},
@@ -8075,6 +8079,7 @@ function createCanvasDrawController(options) {
8075
8079
  ...options.style
8076
8080
  };
8077
8081
  let activeStroke = null;
8082
+ let colorScheme = options.colorScheme === "dark" ? "dark" : "light";
8078
8083
  const erasedInDrag = /* @__PURE__ */ new Map();
8079
8084
  let dragStartNodes = null;
8080
8085
  function setTool(tool) {
@@ -8191,6 +8196,11 @@ function createCanvasDrawController(options) {
8191
8196
  const tool = _nullishCoalesce(input.tool, () => ( "pen"));
8192
8197
  if (tool !== "pen" && tool !== "highlighter") throw new Error(`Unknown tool '${String(tool)}': use 'pen' or 'highlighter'.`);
8193
8198
  const style = { ...createDefaultStrokeStyle(tool), ...input.style };
8199
+ if (_optionalChain([input, 'access', _312 => _312.style, 'optionalAccess', _313 => _313.color]) === void 0 && typeof style.brush === "string") {
8200
+ const preset = (await _chunkUVZ7RQOEcjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === style.brush);
8201
+ const hex = _optionalChain([preset, 'optionalAccess', _314 => _314.defaultColor]) !== void 0 ? _chunkLRTR4ASZcjs.brushColourHex.call(void 0, preset.defaultColor, colorScheme) : null;
8202
+ if (hex) style.color = hex;
8203
+ }
8194
8204
  if (!(style.width > 0)) throw new Error("width must be a positive number of canvas units.");
8195
8205
  const profiles = { pressure: input.pressure, tiltX: input.tiltX, tiltY: input.tiltY };
8196
8206
  for (const [key, values] of Object.entries(profiles)) {
@@ -8207,24 +8217,24 @@ function createCanvasDrawController(options) {
8207
8217
  throw new Error("paint (gradient paint) only colours brushed strokes: pass a brush too (see canvas.listBrushes), or use color for a plain stroke.");
8208
8218
  }
8209
8219
  if (style.brush !== void 0) {
8210
- const spec = await _asyncNullishCoalesce((_optionalChain([style, 'access', _312 => _312.brushSpec, 'optionalAccess', _313 => _313.id]) === style.brush ? style.brushSpec : void 0), async () => ( await _chunkIPUTIUGQcjs.resolveCanvasBrushSpec.call(void 0, style.brush, options.brushLibrary)));
8211
- await _chunkIPUTIUGQcjs.validateCanvasBrush.call(void 0, style.brush, spec);
8220
+ const spec = await _asyncNullishCoalesce((_optionalChain([style, 'access', _315 => _315.brushSpec, 'optionalAccess', _316 => _316.id]) === style.brush ? style.brushSpec : void 0), async () => ( await _chunkUVZ7RQOEcjs.resolveCanvasBrushSpec.call(void 0, style.brush, options.brushLibrary)));
8221
+ await _chunkUVZ7RQOEcjs.validateCanvasBrush.call(void 0, style.brush, spec);
8212
8222
  if (spec) style.brushSpec = spec;
8213
8223
  else delete style.brushSpec;
8214
8224
  }
8215
- if (style.paint !== void 0) style.paint = (await _chunkIPUTIUGQcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8216
- const id = _nullishCoalesce(_optionalChain([options, 'access', _314 => _314.generateNodeId, 'optionalCall', _315 => _315()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8217
- const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _316 => _316.drawOptions, 'optionalAccess', _317 => _317.streamline]), () => ( 0.35))) : [...points];
8225
+ if (style.paint !== void 0) style.paint = (await _chunkUVZ7RQOEcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8226
+ const id = _nullishCoalesce(_optionalChain([options, 'access', _317 => _317.generateNodeId, 'optionalCall', _318 => _318()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8227
+ const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _319 => _319.drawOptions, 'optionalAccess', _320 => _320.streamline]), () => ( 0.35))) : [...points];
8218
8228
  const node = strokeToShapeNode(
8219
8229
  { id, tool, points: smoothed, style },
8220
- { 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)) }
8230
+ { tolerance: _nullishCoalesce(_optionalChain([options, 'access', _321 => _321.drawOptions, 'optionalAccess', _322 => _322.tolerance]), () => ( 1)), cornerAngleDeg: _nullishCoalesce(_optionalChain([options, 'access', _323 => _323.drawOptions, 'optionalAccess', _324 => _324.cornerAngleDeg]), () => ( 40)) }
8221
8231
  );
8222
8232
  const shape = node.data.shape;
8223
8233
  if (shape.brush) {
8224
8234
  for (const [key, values] of Object.entries(profiles)) if (values) shape.brush[key] = [...values];
8225
8235
  }
8226
8236
  addStrokeNode(node, `Draw ${tool}`);
8227
- _optionalChain([options, 'access', _322 => _322.onStrokeComplete, 'optionalCall', _323 => _323(node)]);
8237
+ _optionalChain([options, 'access', _325 => _325.onStrokeComplete, 'optionalCall', _326 => _326(node)]);
8228
8238
  const pos = _nullishCoalesce(node.position, () => ( { x: 0, y: 0 }));
8229
8239
  return {
8230
8240
  id: node.id,
@@ -8241,7 +8251,7 @@ function createCanvasDrawController(options) {
8241
8251
  function cancelStroke() {
8242
8252
  if (activeStroke) {
8243
8253
  activeStroke = null;
8244
- _optionalChain([options, 'access', _324 => _324.onActiveStrokeChange, 'optionalCall', _325 => _325(null)]);
8254
+ _optionalChain([options, 'access', _327 => _327.onActiveStrokeChange, 'optionalCall', _328 => _328(null)]);
8245
8255
  }
8246
8256
  if (erasedInDrag.size > 0) {
8247
8257
  const entries = Array.from(erasedInDrag.values());
@@ -8271,7 +8281,7 @@ function createCanvasDrawController(options) {
8271
8281
  const erasedSet = new Set(newlyErased.map((n3) => n3.id));
8272
8282
  const nextNodes = nodes.filter((n3) => !erasedSet.has(n3.id));
8273
8283
  options.setNodes(nextNodes);
8274
- _optionalChain([options, 'access', _326 => _326.onNodesErase, 'optionalCall', _327 => _327(newlyErased)]);
8284
+ _optionalChain([options, 'access', _329 => _329.onNodesErase, 'optionalCall', _330 => _330(newlyErased)]);
8275
8285
  }
8276
8286
  return newlyErased;
8277
8287
  }
@@ -8298,9 +8308,33 @@ function createCanvasDrawController(options) {
8298
8308
  drawStroke,
8299
8309
  nodeBounds,
8300
8310
  /** The presets and saved brushes (of `brushLibrary`) a stroke can be brushed with (loads the paint engine). */
8301
- listBrushes: () => _chunkIPUTIUGQcjs.listCanvasBrushes.call(void 0, options.brushLibrary),
8311
+ listBrushes: () => _chunkUVZ7RQOEcjs.listCanvasBrushes.call(void 0, options.brushLibrary),
8312
+ /**
8313
+ * A brush picker's choice: brushes the pen and highlighter with `id` (`null`: a plain vector
8314
+ * stroke) at the brush's own size, embedding a saved brush, and makes its default colour
8315
+ * (resolved for the colour scheme) the stroke colour unless `keepColour`. Throws for a brush
8316
+ * the canvas can't paint. Resolves with the brush chosen.
8317
+ */
8318
+ async selectBrush(id, choice = {}) {
8319
+ if (id === null) {
8320
+ setStyle({ brush: void 0, brushSize: void 0, brushSpec: void 0, paint: void 0 });
8321
+ return null;
8322
+ }
8323
+ const preset = (await _chunkUVZ7RQOEcjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === id);
8324
+ if (!preset) {
8325
+ await _chunkUVZ7RQOEcjs.validateCanvasBrush.call(void 0, id);
8326
+ throw new Error(`Brush '${id}' is not one the canvas can paint; listBrushes lists them.`);
8327
+ }
8328
+ const hex = !choice.keepColour && preset.defaultColor !== void 0 ? _chunkLRTR4ASZcjs.brushColourHex.call(void 0, preset.defaultColor, colorScheme) : null;
8329
+ setStyle({ brush: id, brushSize: preset.size, brushSpec: preset.spec, ...hex ? { color: hex } : {} });
8330
+ return preset;
8331
+ },
8332
+ /** The host's colour scheme, for brushes' light / dark default colours. */
8333
+ setColorScheme(scheme) {
8334
+ colorScheme = scheme === "dark" ? "dark" : "light";
8335
+ },
8302
8336
  /** The saved brush to embed for a brush id (undefined for presets and tip settings); for a brush picker. */
8303
- brushSpec: (brush) => _chunkIPUTIUGQcjs.resolveCanvasBrushSpec.call(void 0, brush, options.brushLibrary)
8337
+ brushSpec: (brush) => _chunkUVZ7RQOEcjs.resolveCanvasBrushSpec.call(void 0, brush, options.brushLibrary)
8304
8338
  };
8305
8339
  }
8306
8340
  function computeDragBounds(start, current, modifiers = {}) {
@@ -8414,8 +8448,8 @@ function estimateDiagramNodeSize(node) {
8414
8448
  var IMAGE_LABEL_HEIGHT = 24;
8415
8449
  function diagramImageSize(node) {
8416
8450
  const num4 = (v) => typeof v === "number" && v > 0 ? v : void 0;
8417
- const w = num4(_optionalChain([node, 'access', _328 => _328.data, 'optionalAccess', _329 => _329.w]));
8418
- const h = num4(_optionalChain([node, 'access', _330 => _330.data, 'optionalAccess', _331 => _331.h]));
8451
+ const w = num4(_optionalChain([node, 'access', _331 => _331.data, 'optionalAccess', _332 => _332.w]));
8452
+ const h = num4(_optionalChain([node, 'access', _333 => _333.data, 'optionalAccess', _334 => _334.h]));
8419
8453
  return { width: _nullishCoalesce(_nullishCoalesce(w, () => ( h)), () => ( 96)), height: _nullishCoalesce(_nullishCoalesce(h, () => ( w)), () => ( 96)) };
8420
8454
  }
8421
8455
  function extraLines(node) {
@@ -8477,7 +8511,7 @@ function autoLayoutDiagram(graph, options = {}) {
8477
8511
  while (cur && !seen.has(cur)) {
8478
8512
  if (ids.has(cur)) return cur;
8479
8513
  seen.add(cur);
8480
- 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])));
8514
+ cur = _nullishCoalesce(_optionalChain([nodeById, 'access', _335 => _335.get, 'call', _336 => _336(cur), 'optionalAccess', _337 => _337.parentId]), () => ( _optionalChain([groupById, 'access', _338 => _338.get, 'call', _339 => _339(cur), 'optionalAccess', _340 => _340.parentId])));
8481
8515
  }
8482
8516
  return null;
8483
8517
  };
@@ -8513,7 +8547,7 @@ function autoLayoutDiagram(graph, options = {}) {
8513
8547
  const positions = {};
8514
8548
  const absolute = (id) => {
8515
8549
  if (positions[id]) return positions[id];
8516
- 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])));
8550
+ const parentId = _nullishCoalesce(_optionalChain([nodeById, 'access', _341 => _341.get, 'call', _342 => _342(id), 'optionalAccess', _343 => _343.parentId]), () => ( _optionalChain([groupById, 'access', _344 => _344.get, 'call', _345 => _345(id), 'optionalAccess', _346 => _346.parentId])));
8517
8551
  const [rx, ry] = _nullishCoalesce(relative[id], () => ( [0, 0]));
8518
8552
  if (!parentId) {
8519
8553
  positions[id] = [rx, ry];
@@ -8533,15 +8567,15 @@ function push(map, key, value) {
8533
8567
  else map.set(key, [value]);
8534
8568
  }
8535
8569
  function ensureDiagramLayout(graph, meta, options) {
8536
- const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _344 => _344.measure]), () => ( estimateDiagramNodeSize));
8537
- const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _345 => _345.family]));
8570
+ const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _347 => _347.measure]), () => ( estimateDiagramNodeSize));
8571
+ const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _348 => _348.family]));
8538
8572
  if (custom) return custom(graph, meta, { ..._nullishCoalesce(options, () => ( {})), measure });
8539
8573
  const stored = _nullishCoalesce(meta.layout, () => ( {}));
8540
8574
  const allIds = [...graph.nodes.map((n3) => n3.id), ...graph.groups.map((g) => g.id)];
8541
8575
  const missing = allIds.filter((id) => !stored[id]);
8542
8576
  const sizes = {};
8543
8577
  for (const n3 of graph.nodes)
8544
- 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);
8578
+ sizes[n3.id] = _optionalChain([meta, 'access', _349 => _349.sizes, 'optionalAccess', _350 => _350[n3.id]]) ? { width: meta.sizes[n3.id][0], height: meta.sizes[n3.id][1] } : measure(n3);
8545
8579
  if (!missing.length) {
8546
8580
  const positions2 = {};
8547
8581
  for (const id of allIds) positions2[id] = stored[id];
@@ -8569,7 +8603,7 @@ function ensureDiagramLayout(graph, meta, options) {
8569
8603
  return { positions, sizes };
8570
8604
  }
8571
8605
  function diagramGroupSize(groupId, graph, positions, sizes, meta, pad = 24, titleH = 32) {
8572
- if (_optionalChain([meta, 'access', _348 => _348.sizes, 'optionalAccess', _349 => _349[groupId]]))
8606
+ if (_optionalChain([meta, 'access', _351 => _351.sizes, 'optionalAccess', _352 => _352[groupId]]))
8573
8607
  return { width: meta.sizes[groupId][0], height: meta.sizes[groupId][1] };
8574
8608
  const members = [
8575
8609
  ...graph.nodes.filter((n3) => n3.parentId === groupId).map((n3) => n3.id),
@@ -8646,9 +8680,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8646
8680
  width: size2.width,
8647
8681
  height: size2.height,
8648
8682
  style: { width: size2.width, height: size2.height },
8649
- draggable: editable && !_optionalChain([g, 'access', _350 => _350.data, 'optionalAccess', _351 => _351.locked]),
8683
+ draggable: editable && !_optionalChain([g, 'access', _353 => _353.data, 'optionalAccess', _354 => _354.locked]),
8650
8684
  selectable: editable,
8651
- connectable: editable && !_optionalChain([g, 'access', _352 => _352.data, 'optionalAccess', _353 => _353.locked]),
8685
+ connectable: editable && !_optionalChain([g, 'access', _355 => _355.data, 'optionalAccess', _356 => _356.locked]),
8652
8686
  zIndex: depth(g.id, parents)
8653
8687
  };
8654
8688
  });
@@ -8668,9 +8702,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8668
8702
  width: size2.width,
8669
8703
  height: size2.height,
8670
8704
  style: { width: size2.width, height: size2.height },
8671
- draggable: editable && !_optionalChain([n3, 'access', _354 => _354.data, 'optionalAccess', _355 => _355.locked]),
8705
+ draggable: editable && !_optionalChain([n3, 'access', _357 => _357.data, 'optionalAccess', _358 => _358.locked]),
8672
8706
  selectable: editable,
8673
- connectable: editable && !_optionalChain([n3, 'access', _356 => _356.data, 'optionalAccess', _357 => _357.locked]) && !_optionalChain([n3, 'access', _358 => _358.data, 'optionalAccess', _359 => _359.synthetic]),
8707
+ connectable: editable && !_optionalChain([n3, 'access', _359 => _359.data, 'optionalAccess', _360 => _360.locked]) && !_optionalChain([n3, 'access', _361 => _361.data, 'optionalAccess', _362 => _362.synthetic]),
8674
8708
  zIndex: depth(n3.id, parents) + 100
8675
8709
  };
8676
8710
  });
@@ -8735,7 +8769,7 @@ function clampHeight2(content, options = {}) {
8735
8769
  return Math.round(Math.min(max, Math.max(min, content + padding)));
8736
8770
  }
8737
8771
  function diagramCanvasHeight(layout2, options) {
8738
- return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _360 => _360(layout2), 'optionalAccess', _361 => _361.height]), () => ( 0)), options);
8772
+ return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _363 => _363(layout2), 'optionalAccess', _364 => _364.height]), () => ( 0)), options);
8739
8773
  }
8740
8774
  var RANK_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT + 72;
8741
8775
  var NODES_PER_RANK2 = 2;
@@ -8947,7 +8981,7 @@ function chartTheme(theme) {
8947
8981
  }
8948
8982
  function xyChartSpec(graph, palette) {
8949
8983
  const data = _nullishCoalesce(graph.data, () => ( {}));
8950
- const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _362 => _362.data, 'optionalAccess', _363 => _363.values])).length));
8984
+ const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _365 => _365.data, 'optionalAccess', _366 => _366.values])).length));
8951
8985
  let categories = Array.isArray(data.categories) ? data.categories.map(String) : [];
8952
8986
  const xMin = num2(data.xMin);
8953
8987
  const xMax = num2(data.xMax);
@@ -8962,11 +8996,11 @@ function xyChartSpec(graph, palette) {
8962
8996
  type: bars ? "bar" : "line",
8963
8997
  title: _nullishCoalesce(graph.title, () => ( "")),
8964
8998
  categories,
8965
- 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" })),
8999
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _367 => _367.data, 'optionalAccess', _368 => _368.values])), type: n3.shape === "line" ? "line" : "bar" })),
8966
9000
  orientation: data.horizontal ? "horizontal" : "vertical",
8967
9001
  xAxis: { show: true, title: text(data.xTitle), min: null, max: null, step: null, gridlines: false, format: {} },
8968
9002
  yAxis: { show: true, title: text(data.yTitle), min: num2(data.yMin), max: num2(data.yMax), step: null, gridlines: true, format: {} },
8969
- legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _366 => _366.data, 'optionalAccess', _367 => _367.titled])), position: "top" },
9003
+ legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _369 => _369.data, 'optionalAccess', _370 => _370.titled])), position: "top" },
8970
9004
  ...palette ? { palette: [...palette] } : {}
8971
9005
  });
8972
9006
  }
@@ -8976,7 +9010,7 @@ function radarChartSpec(graph, palette) {
8976
9010
  type: "radar",
8977
9011
  title: _nullishCoalesce(graph.title, () => ( "")),
8978
9012
  categories: Array.isArray(data.axes) ? data.axes.map(String) : [],
8979
- series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _368 => _368.data, 'optionalAccess', _369 => _369.values])) })),
9013
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _371 => _371.data, 'optionalAccess', _372 => _372.values])) })),
8980
9014
  yAxis: { show: true, title: "", min: num2(data.min), max: num2(data.max), step: null, gridlines: true, format: {} },
8981
9015
  legend: { show: data.showLegend !== false, position: "top" },
8982
9016
  ...palette ? { palette: [...palette] } : {}
@@ -9127,7 +9161,7 @@ var sequenceScene = ({ graph, theme }) => {
9127
9161
  for (const group of graph.groups) {
9128
9162
  const box = geo.boxes.get(group.id);
9129
9163
  if (!box) continue;
9130
- const color = typeof _optionalChain([group, 'access', _370 => _370.data, 'optionalAccess', _371 => _371.color]) === "string" ? group.data.color : void 0;
9164
+ const color = typeof _optionalChain([group, 'access', _373 => _373.data, 'optionalAccess', _374 => _374.color]) === "string" ? group.data.color : void 0;
9131
9165
  marks.push(
9132
9166
  { kind: "rect", key: `box:${group.id}`, role: "box", target: group.id, ...box, fill: _nullishCoalesce(color, () => ( "none")), stroke: theme.groupStroke, strokeWidth: 1 },
9133
9167
  ...textLines(displayLines(group.label), {
@@ -9196,12 +9230,12 @@ var sequenceScene = ({ graph, theme }) => {
9196
9230
  );
9197
9231
  });
9198
9232
  const edges = new Map(graph.edges.map((e) => [e.id, e]));
9199
- const autonumber = !!_optionalChain([graph, 'access', _372 => _372.data, 'optionalAccess', _373 => _373.autonumber]);
9233
+ const autonumber = !!_optionalChain([graph, 'access', _375 => _375.data, 'optionalAccess', _376 => _376.autonumber]);
9200
9234
  geo.messages.forEach((row, index) => {
9201
9235
  const edge = edges.get(row.edgeId);
9202
9236
  if (!edge) return;
9203
- const x1 = _nullishCoalesce(_optionalChain([geo, 'access', _374 => _374.columns, 'access', _375 => _375.get, 'call', _376 => _376(edge.source), 'optionalAccess', _377 => _377.center]), () => ( 0));
9204
- const x2 = _nullishCoalesce(_optionalChain([geo, 'access', _378 => _378.columns, 'access', _379 => _379.get, 'call', _380 => _380(edge.target), 'optionalAccess', _381 => _381.center]), () => ( 0));
9237
+ const x1 = _nullishCoalesce(_optionalChain([geo, 'access', _377 => _377.columns, 'access', _378 => _378.get, 'call', _379 => _379(edge.source), 'optionalAccess', _380 => _380.center]), () => ( 0));
9238
+ const x2 = _nullishCoalesce(_optionalChain([geo, 'access', _381 => _381.columns, 'access', _382 => _382.get, 'call', _383 => _383(edge.target), 'optionalAccess', _384 => _384.center]), () => ( 0));
9205
9239
  const y = row.y;
9206
9240
  const stroke = theme.edge;
9207
9241
  const strokeWidth = edge.pattern === "thick" ? 3.5 : 1.5;
@@ -9422,7 +9456,7 @@ var quadrantScene = ({ graph, theme }) => {
9422
9456
  }
9423
9457
  for (const q of geo.quadrants) {
9424
9458
  const group = groups.get(q.id);
9425
- if (!group || _optionalChain([group, 'access', _382 => _382.data, 'optionalAccess', _383 => _383.placeholder]) || !group.label) continue;
9459
+ if (!group || _optionalChain([group, 'access', _385 => _385.data, 'optionalAccess', _386 => _386.placeholder]) || !group.label) continue;
9426
9460
  marks.push({
9427
9461
  kind: "text",
9428
9462
  key: `quadrant-label:${q.id}`,
@@ -9869,7 +9903,7 @@ var mindmapScene = ({ graph, theme }) => {
9869
9903
  fill: colors.label
9870
9904
  });
9871
9905
  });
9872
- const icon = typeof _optionalChain([node, 'access', _384 => _384.data, 'optionalAccess', _385 => _385.icon]) === "string" ? node.data.icon : void 0;
9906
+ const icon = typeof _optionalChain([node, 'access', _387 => _387.data, 'optionalAccess', _388 => _388.icon]) === "string" ? node.data.icon : void 0;
9873
9907
  if (icon) {
9874
9908
  marks.push(
9875
9909
  { 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 },
@@ -9903,7 +9937,7 @@ var REL_GAP = 3;
9903
9937
  function colorsOf(type) {
9904
9938
  return _nullishCoalesce(C4_COLORS[`${type.external ? "external_" : ""}${type.base}`], () => ( C4_COLORS.container));
9905
9939
  }
9906
- var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _386 => _386.c4Style]), () => ( {}));
9940
+ var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _389 => _389.c4Style]), () => ( {}));
9907
9941
  function titleMark(graph, layout2, theme) {
9908
9942
  if (!graph.title) return null;
9909
9943
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -9924,11 +9958,11 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9924
9958
  const depth2 = (id) => {
9925
9959
  let d = 0;
9926
9960
  const seen = /* @__PURE__ */ new Set();
9927
- let p = _optionalChain([graph, 'access', _387 => _387.groups, 'access', _388 => _388.find, 'call', _389 => _389((g) => g.id === id), 'optionalAccess', _390 => _390.parentId]);
9961
+ let p = _optionalChain([graph, 'access', _390 => _390.groups, 'access', _391 => _391.find, 'call', _392 => _392((g) => g.id === id), 'optionalAccess', _393 => _393.parentId]);
9928
9962
  while (p && groupIds.has(p) && !seen.has(p)) {
9929
9963
  seen.add(p);
9930
9964
  d++;
9931
- p = _optionalChain([graph, 'access', _391 => _391.groups, 'access', _392 => _392.find, 'call', _393 => _393((g) => g.id === p), 'optionalAccess', _394 => _394.parentId]);
9965
+ p = _optionalChain([graph, 'access', _394 => _394.groups, 'access', _395 => _395.find, 'call', _396 => _396((g) => g.id === p), 'optionalAccess', _397 => _397.parentId]);
9932
9966
  }
9933
9967
  return d;
9934
9968
  };
@@ -9944,7 +9978,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9944
9978
  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 });
9945
9979
  }
9946
9980
  const labels = [];
9947
- const dynamic = _optionalChain([graph, 'access', _395 => _395.data, 'optionalAccess', _396 => _396.c4Type]) === "C4Dynamic";
9981
+ const dynamic = _optionalChain([graph, 'access', _398 => _398.data, 'optionalAccess', _399 => _399.c4Type]) === "C4Dynamic";
9948
9982
  graph.edges.forEach((edge, index) => {
9949
9983
  const from = box(edge.source);
9950
9984
  const to = box(edge.target);
@@ -9972,7 +10006,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9972
10006
  const top = geo.label.y + offsetY - 7;
9973
10007
  const textFill = style.textColor || theme.text;
9974
10008
  const label = `${dynamic ? `${index + 1}: ` : ""}${_nullishCoalesce(edge.label, () => ( ""))}`;
9975
- const tech = typeof _optionalChain([edge, 'access', _397 => _397.data, 'optionalAccess', _398 => _398.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
10009
+ const tech = typeof _optionalChain([edge, 'access', _400 => _400.data, 'optionalAccess', _401 => _401.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
9976
10010
  const gridWidth = Math.max(label ? estimateTextWidth2(label, REL_FONT) : 0, tech ? estimateTextWidth2(tech, REL_FONT) : 0);
9977
10011
  if (label)
9978
10012
  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 });
@@ -10248,8 +10282,8 @@ function iconMarks(key, target, icon, x, y, size2, theme) {
10248
10282
  );
10249
10283
  return marks;
10250
10284
  }
10251
- var isJunction = (n3) => n3.shape === "sm-circ" || !!_optionalChain([n3, 'access', _399 => _399.data, 'optionalAccess', _400 => _400.junction]);
10252
- var iconOf = (data) => typeof _optionalChain([data, 'optionalAccess', _401 => _401.icon]) === "string" && data.icon ? data.icon : void 0;
10285
+ var isJunction = (n3) => n3.shape === "sm-circ" || !!_optionalChain([n3, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.junction]);
10286
+ var iconOf = (data) => typeof _optionalChain([data, 'optionalAccess', _404 => _404.icon]) === "string" && data.icon ? data.icon : void 0;
10253
10287
  function titleMark2(graph, layout2, theme) {
10254
10288
  if (!graph.title) return null;
10255
10289
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -10285,7 +10319,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10285
10319
  const icon = iconOf(group.data);
10286
10320
  marks.push({ kind: "rect", key: `group:${group.id}`, role: "group", target: group.id, ...b, fill: "none", stroke: theme.groupStroke, strokeWidth: 2, dash: "8" });
10287
10321
  if (icon) marks.push(...iconMarks(`group:${group.id}`, group.id, icon, b.x + 1, b.y + 1, A.groupIconSize, theme));
10288
- const label = _optionalChain([group, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.untitled]) ? "" : group.label;
10322
+ const label = _optionalChain([group, 'access', _405 => _405.data, 'optionalAccess', _406 => _406.untitled]) ? "" : group.label;
10289
10323
  if (label)
10290
10324
  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 });
10291
10325
  }
@@ -10322,7 +10356,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10322
10356
  continue;
10323
10357
  }
10324
10358
  marks.push(...iconMarks(`service:${node.id}`, node.id, iconOf(node.data), b.x, b.y, b.width, theme));
10325
- if (_optionalChain([node, 'access', _404 => _404.data, 'optionalAccess', _405 => _405.untitled])) continue;
10359
+ if (_optionalChain([node, 'access', _407 => _407.data, 'optionalAccess', _408 => _408.untitled])) continue;
10326
10360
  _chunk3FSUJIXNcjs.serviceLabelLines.call(void 0, _nullishCoalesce(node.label, () => ( ""))).forEach(
10327
10361
  (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 })
10328
10362
  );
@@ -10337,7 +10371,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10337
10371
  var M7 = _chunk3FSUJIXNcjs.GANTT_METRICS;
10338
10372
  var CRIT = 3;
10339
10373
  function statusOf(node) {
10340
- const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _406 => _406.data, 'optionalAccess', _407 => _407.tags])) ? node.data.tags.map(String) : [];
10374
+ const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _409 => _409.data, 'optionalAccess', _410 => _410.tags])) ? node.data.tags.map(String) : [];
10341
10375
  const done2 = tags.includes("done");
10342
10376
  const active = tags.includes("active");
10343
10377
  const crit = tags.includes("crit");
@@ -10427,7 +10461,7 @@ var ganttScene = ({ graph, selection, theme }) => {
10427
10461
  const node = nodes.get(row.id);
10428
10462
  const status = statusOf(node);
10429
10463
  const colours2 = barColours(theme, status);
10430
- const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _408 => _408.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10464
+ const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _411 => _411.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10431
10465
  if (row.milestone) {
10432
10466
  const cx = row.x + row.width / 2;
10433
10467
  const cy = row.y + row.height / 2;
@@ -10532,10 +10566,10 @@ var timelineScene = ({ graph, theme }) => {
10532
10566
  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));
10533
10567
  marks.push(...arrowLine("axis", geo.axis.x1, geo.axis.y, geo.axis.x2, geo.axis.y, M8.axisWidth, false, line4));
10534
10568
  for (const e of geo.events) box(`event:${e.periodId}:${e.index}`, "event", e.periodId, e, e.colour, e.text, void 0, true);
10535
- 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);
10569
+ for (const s of geo.sections.values()) box(`section:${s.id}`, "section", s.id, s, s.colour, _nullishCoalesce(_optionalChain([groups, 'access', _412 => _412.get, 'call', _413 => _413(s.id), 'optionalAccess', _414 => _414.label]), () => ( s.id)), s.empty ? 0.6 : void 0);
10536
10570
  for (const p of geo.periods.values()) {
10537
10571
  const node = nodes.get(p.id);
10538
- box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _412 => _412.label]), () => ( p.id)));
10572
+ box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _415 => _415.label]), () => ( p.id)));
10539
10573
  }
10540
10574
  if (graph.title)
10541
10575
  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 });
@@ -10589,7 +10623,7 @@ function markBounds(mark) {
10589
10623
  }
10590
10624
  case "path": {
10591
10625
  if (mark.box) return [mark.box.x, mark.box.y, mark.box.x + mark.box.width, mark.box.y + mark.box.height];
10592
- 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)]), () => ( []));
10626
+ const nums = _nullishCoalesce(_optionalChain([mark, 'access', _416 => _416.d, 'access', _417 => _417.match, 'call', _418 => _418(/-?\d*\.?\d+(?:e-?\d+)?/gi), 'optionalAccess', _419 => _419.map, 'call', _420 => _420(Number)]), () => ( []));
10593
10627
  if (nums.length < 2) return null;
10594
10628
  let x0 = Infinity, y0 = Infinity, x1 = -Infinity, y1 = -Infinity;
10595
10629
  for (let i = 0; i + 1 < nums.length; i += 2) {
@@ -10698,7 +10732,7 @@ function diagramRenameOp(doc, target, label) {
10698
10732
  function diagramTargetLabel(doc, target) {
10699
10733
  const { graph } = doc;
10700
10734
  if (target === DIAGRAM_TITLE_TARGET) return _nullishCoalesce(graph.title, () => ( ""));
10701
- 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));
10735
+ return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([graph, 'access', _421 => _421.groups, 'access', _422 => _422.find, 'call', _423 => _423((g) => g.id === target), 'optionalAccess', _424 => _424.label]), () => ( _optionalChain([graph, 'access', _425 => _425.edges, 'access', _426 => _426.find, 'call', _427 => _427((e) => e.id === target), 'optionalAccess', _428 => _428.label]))), () => ( _optionalChain([graph, 'access', _429 => _429.nodes, 'access', _430 => _430.find, 'call', _431 => _431((n3) => n3.id === target), 'optionalAccess', _432 => _432.label]))), () => ( null));
10702
10736
  }
10703
10737
 
10704
10738
  // src/canvas/mermaid/shapes.ts
@@ -10916,7 +10950,7 @@ function mermaidLabelLines(label) {
10916
10950
  return String(label).replace(/^"`?|`?"$/g, "").split(/<br\s*\/?>|\n/i).map((line4) => line4.replace(/<[^>]+>/g, ""));
10917
10951
  }
10918
10952
  function mermaidNodeMembers(data) {
10919
- const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _430 => _430.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _431 => _431.attributes]), () => ( []))];
10953
+ const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _433 => _433.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _434 => _434.attributes]), () => ( []))];
10920
10954
  return list.map((m) => _nullishCoalesce(m.raw, () => ( "")));
10921
10955
  }
10922
10956
 
@@ -10989,10 +11023,10 @@ function mermaidToSvg(doc, options = {}) {
10989
11023
  }
10990
11024
  const depth2 = (id) => {
10991
11025
  let d = 0;
10992
- let cur = _optionalChain([graph, 'access', _432 => _432.groups, 'access', _433 => _433.find, 'call', _434 => _434((g) => g.id === id), 'optionalAccess', _435 => _435.parentId]);
11026
+ let cur = _optionalChain([graph, 'access', _435 => _435.groups, 'access', _436 => _436.find, 'call', _437 => _437((g) => g.id === id), 'optionalAccess', _438 => _438.parentId]);
10993
11027
  while (cur && d < 50) {
10994
11028
  d++;
10995
- cur = _optionalChain([graph, 'access', _436 => _436.groups, 'access', _437 => _437.find, 'call', _438 => _438((g) => g.id === cur), 'optionalAccess', _439 => _439.parentId]);
11029
+ cur = _optionalChain([graph, 'access', _439 => _439.groups, 'access', _440 => _440.find, 'call', _441 => _441((g) => g.id === cur), 'optionalAccess', _442 => _442.parentId]);
10996
11030
  }
10997
11031
  return d;
10998
11032
  };
@@ -11039,7 +11073,7 @@ function mermaidToSvg(doc, options = {}) {
11039
11073
  const fill = _nullishCoalesce(st.fill, () => ( theme.nodeFill));
11040
11074
  const stroke = _nullishCoalesce(st.stroke, () => ( theme.nodeStroke));
11041
11075
  const color = _nullishCoalesce(st.color, () => ( theme.text));
11042
- const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _440 => _440["stroke-width"], 'optionalAccess', _441 => _441.replace, 'call', _442 => _442("px", "")]), () => ( "1.25"));
11076
+ const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _443 => _443["stroke-width"], 'optionalAccess', _444 => _444.replace, 'call', _445 => _445("px", "")]), () => ( "1.25"));
11043
11077
  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"';
11044
11078
  out.push(`<g data-node="${esc2(node.id)}" transform="translate(${n2(b.x)} ${n2(b.y)})">`);
11045
11079
  for (const path of mermaidShapePaths(node.shape, b.width, b.height)) out.push(`<path d="${path.d}" ${paint(path.paint)}/>`);
@@ -11072,7 +11106,7 @@ function rasterSize(width, height, scale = 2, maxSize = DIAGRAM_RASTER_MAX_SIZE)
11072
11106
  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.';
11073
11107
  async function rasterizeSvg(svg, options) {
11074
11108
  const doc = _nullishCoalesce(options.document, () => ( globalThis.document));
11075
- const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _443 => _443.defaultView, 'optionalAccess', _444 => _444.Image]), () => ( globalThis.Image));
11109
+ const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _446 => _446.defaultView, 'optionalAccess', _447 => _447.Image]), () => ( globalThis.Image));
11076
11110
  if (!doc || typeof doc.createElement !== "function" || !ImageCtor) throw new Error(NO_DOM);
11077
11111
  const size2 = rasterSize(options.width, options.height, options.scale, options.maxSize);
11078
11112
  const canvas = doc.createElement("canvas");
@@ -11107,7 +11141,7 @@ function diagramFileName(doc, extension2) {
11107
11141
  }
11108
11142
  async function downloadDiagramPng(doc, options = {}) {
11109
11143
  const drawn = mermaidToSvg(doc, options);
11110
- const background = _nullishCoalesce(options.background, () => ( (options.transparent ? "transparent" : _nullishCoalesce(_optionalChain([options, 'access', _445 => _445.theme, 'optionalAccess', _446 => _446.background]), () => ( DIAGRAM_SVG_LIGHT_THEME.background)))));
11144
+ const background = _nullishCoalesce(options.background, () => ( (options.transparent ? "transparent" : _nullishCoalesce(_optionalChain([options, 'access', _448 => _448.theme, 'optionalAccess', _449 => _449.background]), () => ( DIAGRAM_SVG_LIGHT_THEME.background)))));
11111
11145
  const image = await rasterizeSvg(drawn.svg, { ...options, width: drawn.width, height: drawn.height, background });
11112
11146
  const filename = _nullishCoalesce(options.filename, () => ( diagramFileName(doc, "png")));
11113
11147
  const page = _nullishCoalesce(options.document, () => ( document));
@@ -11147,7 +11181,7 @@ function mermaidMovesFromCanvas(layout2, moved, all = moved, options = {}) {
11147
11181
  for (const n3 of all) {
11148
11182
  if (movedIds.has(n3.id)) continue;
11149
11183
  let parent = n3.parentId;
11150
- while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _447 => _447.get, 'call', _448 => _448(parent), 'optionalAccess', _449 => _449.parentId]);
11184
+ while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _450 => _450.get, 'call', _451 => _451(parent), 'optionalAccess', _452 => _452.parentId]);
11151
11185
  if (parent) moves.push({ id: n3.id, position: absolute(n3.id) });
11152
11186
  }
11153
11187
  if (!moves.length) return null;
@@ -11183,10 +11217,10 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11183
11217
  const seed = hashString(`${agentId}:${nodeId}:${zoneName}`);
11184
11218
  const offsetX = seed % 17 - 8;
11185
11219
  const offsetY = (seed >> 4) % 9 - 4;
11186
- const jitterX = _optionalChain([options, 'optionalAccess', _450 => _450.randomJitter]) ? (Math.random() - 0.5) * 24 : 0;
11187
- const jitterY = _optionalChain([options, 'optionalAccess', _451 => _451.randomJitter]) ? (Math.random() - 0.5) * 16 : 0;
11188
- const maxX = _optionalChain([options, 'optionalAccess', _452 => _452.width]) ? Math.max(24, options.width - 20) : 230;
11189
- const maxY = _optionalChain([options, 'optionalAccess', _453 => _453.height]) ? Math.max(20, options.height - 15) : 145;
11220
+ const jitterX = _optionalChain([options, 'optionalAccess', _453 => _453.randomJitter]) ? (Math.random() - 0.5) * 24 : 0;
11221
+ const jitterY = _optionalChain([options, 'optionalAccess', _454 => _454.randomJitter]) ? (Math.random() - 0.5) * 16 : 0;
11222
+ const maxX = _optionalChain([options, 'optionalAccess', _455 => _455.width]) ? Math.max(24, options.width - 20) : 230;
11223
+ const maxY = _optionalChain([options, 'optionalAccess', _456 => _456.height]) ? Math.max(20, options.height - 15) : 145;
11190
11224
  return {
11191
11225
  x: Math.max(16, Math.min(maxX, Math.round(base.x + offsetX + jitterX))),
11192
11226
  y: Math.max(14, Math.min(maxY, Math.round(base.y + offsetY + jitterY))),
@@ -11195,8 +11229,8 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11195
11229
  }
11196
11230
  function calculateCurvedPath(fromX, fromY, toX, toY, progress, options) {
11197
11231
  const p = Math.max(0, Math.min(1, progress));
11198
- const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _454 => _454.arcHeight]), () => ( -30));
11199
- const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _455 => _455.wobble]), () => ( 0));
11232
+ const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _457 => _457.arcHeight]), () => ( -30));
11233
+ const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _458 => _458.wobble]), () => ( 0));
11200
11234
  const arc2 = Math.sin(p * Math.PI) * arcHeight;
11201
11235
  const sway = Math.sin(p * Math.PI * 2) * wobble;
11202
11236
  const currentX = fromX + (toX - fromX) * p + sway;
@@ -11223,7 +11257,7 @@ function getNaturalMovementTiming(distance, seedStr = "drag") {
11223
11257
  function getCursorTransitionDuration(distance, seedStr = "cursor", options) {
11224
11258
  const seed = hashString(seedStr);
11225
11259
  const jitter = seed % 60 - 30;
11226
- const variance = _optionalChain([options, 'optionalAccess', _456 => _456.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11260
+ const variance = _optionalChain([options, 'optionalAccess', _459 => _459.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11227
11261
  let baseDuration = 560;
11228
11262
  if (distance < 60) {
11229
11263
  baseDuration = 340;
@@ -11260,10 +11294,10 @@ function formatAgentCursorName(nameOrUsername) {
11260
11294
  }
11261
11295
  function isAgentCursor(cursor) {
11262
11296
  if (cursor.isAgent) return true;
11263
- 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;
11264
- 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;
11265
- 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;
11266
- const roleLower = _optionalChain([cursor, 'access', _475 => _475.role, 'optionalAccess', _476 => _476.toLowerCase, 'call', _477 => _477()]) || "";
11297
+ if (_optionalChain([cursor, 'access', _460 => _460.userId, 'optionalAccess', _461 => _461.startsWith, 'call', _462 => _462("agent_")]) || _optionalChain([cursor, 'access', _463 => _463.userId, 'optionalAccess', _464 => _464.startsWith, 'call', _465 => _465("agent-")])) return true;
11298
+ if (_optionalChain([cursor, 'access', _466 => _466.id, 'optionalAccess', _467 => _467.startsWith, 'call', _468 => _468("agent-")]) || _optionalChain([cursor, 'access', _469 => _469.id, 'optionalAccess', _470 => _470.startsWith, 'call', _471 => _471("agent_")])) return true;
11299
+ if (_optionalChain([cursor, 'access', _472 => _472.username, 'optionalAccess', _473 => _473.startsWith, 'call', _474 => _474("@agent_")]) || _optionalChain([cursor, 'access', _475 => _475.username, 'optionalAccess', _476 => _476.startsWith, 'call', _477 => _477("agent_")])) return true;
11300
+ const roleLower = _optionalChain([cursor, 'access', _478 => _478.role, 'optionalAccess', _479 => _479.toLowerCase, 'call', _480 => _480()]) || "";
11267
11301
  if (roleLower.includes("agent") || roleLower.includes("specialist") || roleLower === "planner" || roleLower === "coordinator" || roleLower === "executor" || roleLower === "validator" || roleLower === "supervisor") {
11268
11302
  return true;
11269
11303
  }
@@ -11285,7 +11319,7 @@ function createCanvasPlaybackLocator(options) {
11285
11319
  };
11286
11320
  if (ref.kind === "node" || ref.kind === "item") return rectOf(ref.id);
11287
11321
  if (ref.kind === "edge") {
11288
- const edge = _optionalChain([options, 'access', _478 => _478.getEdges, 'optionalCall', _479 => _479(), 'access', _480 => _480.find, 'call', _481 => _481((e) => e.id === ref.id)]);
11322
+ const edge = _optionalChain([options, 'access', _481 => _481.getEdges, 'optionalCall', _482 => _482(), 'access', _483 => _483.find, 'call', _484 => _484((e) => e.id === ref.id)]);
11289
11323
  const a = edge && rectOf(edge.source);
11290
11324
  const b = edge && rectOf(edge.target);
11291
11325
  if (!a || !b) return null;
@@ -11320,8 +11354,8 @@ var CANVAS_CAPTURE_OVERLAY_SELECTORS = [
11320
11354
  ".svelte-flow__resize-control"
11321
11355
  ];
11322
11356
  var size = (node) => ({
11323
- width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _482 => _482.measured, 'optionalAccess', _483 => _483.width]), () => ( node.width)), () => ( 0)),
11324
- height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _484 => _484.measured, 'optionalAccess', _485 => _485.height]), () => ( node.height)), () => ( 0))
11357
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _485 => _485.measured, 'optionalAccess', _486 => _486.width]), () => ( node.width)), () => ( 0)),
11358
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _487 => _487.measured, 'optionalAccess', _488 => _488.height]), () => ( node.height)), () => ( 0))
11325
11359
  });
11326
11360
  function canvasNodeCaptureRect(node, nodes) {
11327
11361
  if (node.hidden) return null;
@@ -11396,7 +11430,7 @@ function createCanvasCaptureSurface(options) {
11396
11430
  vpEl.style.transform = `translate(${-request.rect.x * zoom}px, ${-request.rect.y * zoom}px) scale(${zoom})`;
11397
11431
  vpEl.style.transformOrigin = "0 0";
11398
11432
  for (let node = vpEl; node && node !== clone; node = node.parentElement) {
11399
- for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _486 => _486.parentElement, 'optionalAccess', _487 => _487.children]), () => ( [])))) {
11433
+ for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _489 => _489.parentElement, 'optionalAccess', _490 => _490.children]), () => ( [])))) {
11400
11434
  if (sibling !== node) sibling.remove();
11401
11435
  }
11402
11436
  }
@@ -11424,7 +11458,7 @@ var CANVAS_EFFECT_PLACES = {
11424
11458
  transition: ["transition"]
11425
11459
  };
11426
11460
  function canvasNodeEffect(node) {
11427
- const shape = _optionalChain([node, 'access', _488 => _488.data, 'optionalAccess', _489 => _489.shape]);
11461
+ const shape = _optionalChain([node, 'access', _491 => _491.data, 'optionalAccess', _492 => _492.shape]);
11428
11462
  return _chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape) ? shape.effect : void 0;
11429
11463
  }
11430
11464
  function canvasEffectStatus(effect, provider) {
@@ -11454,7 +11488,7 @@ function createCanvasEffectsController(options) {
11454
11488
  const shapeNode = (id) => {
11455
11489
  const node = options.getNodes().find((n3) => n3.id === id);
11456
11490
  if (!node) throw new Error(`There is no node "${id}"; the nodes are ${options.getNodes().map((n3) => `"${n3.id}"`).slice(0, 20).join(", ") || "none"}.`);
11457
- const shape = _optionalChain([node, 'access', _490 => _490.data, 'optionalAccess', _491 => _491.shape]);
11491
+ const shape = _optionalChain([node, 'access', _493 => _493.data, 'optionalAccess', _494 => _494.shape]);
11458
11492
  if (!_chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape)) throw new Error(`Node "${id}" is not a shape; effects draw on shape nodes (data.shape).`);
11459
11493
  return { node, shape };
11460
11494
  };
@@ -11548,11 +11582,11 @@ function createCanvasEffectsController(options) {
11548
11582
  },
11549
11583
  /** The scenes, in order (empty without a Scenes store). */
11550
11584
  scenes() {
11551
- return _nullishCoalesce(_optionalChain([options, 'access', _492 => _492.scenes, 'optionalAccess', _493 => _493.getState, 'call', _494 => _494(), 'access', _495 => _495.scenes]), () => ( []));
11585
+ return _nullishCoalesce(_optionalChain([options, 'access', _495 => _495.scenes, 'optionalAccess', _496 => _496.getState, 'call', _497 => _497(), 'access', _498 => _498.scenes]), () => ( []));
11552
11586
  },
11553
11587
  /** The transition into a scene, if it has one. */
11554
11588
  sceneTransition(sceneId) {
11555
- return _optionalChain([options, 'access', _496 => _496.scenes, 'optionalAccess', _497 => _497.getScene, 'call', _498 => _498(sceneId), 'optionalAccess', _499 => _499.transition]);
11589
+ return _optionalChain([options, 'access', _499 => _499.scenes, 'optionalAccess', _500 => _500.getScene, 'call', _501 => _501(sceneId), 'optionalAccess', _502 => _502.transition]);
11556
11590
  },
11557
11591
  /**
11558
11592
  * Sets (or with `effect` null removes) the provider transition played when the canvas moves to
@@ -11613,7 +11647,7 @@ function runCanvasNodeEffect(options) {
11613
11647
  if (options.animate !== false && effect.playing !== false) cancel = clock.frame(tick);
11614
11648
  },
11615
11649
  (e) => {
11616
- if (!stopped) _optionalChain([options, 'access', _500 => _500.onError, 'optionalCall', _501 => _501(e)]);
11650
+ if (!stopped) _optionalChain([options, 'access', _503 => _503.onError, 'optionalCall', _504 => _504(e)]);
11617
11651
  }
11618
11652
  );
11619
11653
  };
@@ -11676,7 +11710,7 @@ async function transitionCanvasView(options) {
11676
11710
  overlay.setAttribute("data-capture", "overlay");
11677
11711
  overlay.setAttribute("data-canvas-transition", options.transition.effect);
11678
11712
  Object.assign(overlay.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none", zIndex: "1000" });
11679
- _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)]);
11713
+ _optionalChain([overlay, 'access', _505 => _505.getContext, 'call', _506 => _506("2d"), 'optionalAccess', _507 => _507.putImageData, 'call', _508 => _508(new ImageData(new Uint8ClampedArray(from.data), size2.width, size2.height), 0, 0)]);
11680
11714
  if (getComputedStyle(element).position === "static") element.style.position = "relative";
11681
11715
  element.appendChild(overlay);
11682
11716
  try {
@@ -11707,7 +11741,7 @@ function createCanvasEffectsToolProvider(controller, options = {}) {
11707
11741
  return ro ? typeof ro === "string" ? ro : "The canvas is read-only." : null;
11708
11742
  };
11709
11743
  const result = (nodeId, effect) => {
11710
- const now = _optionalChain([controller, 'access', _506 => _506.list, 'call', _507 => _507(nodeId), 'access', _508 => _508[0], 'optionalAccess', _509 => _509.effect]);
11744
+ const now = _optionalChain([controller, 'access', _509 => _509.list, 'call', _510 => _510(nodeId), 'access', _511 => _511[0], 'optionalAccess', _512 => _512.effect]);
11711
11745
  return { target: nodeId, effect: info(_nullishCoalesce(effect, () => ( now))), effects: now ? [info(now)] : [] };
11712
11746
  };
11713
11747
  const once = (instance) => {
@@ -11858,7 +11892,7 @@ function createCanvasEditorDocument(options) {
11858
11892
  options.setNodes(doc.nodes.map((n3) => ({ ...n3 })));
11859
11893
  options.setEdges(doc.edges.map((e) => ({ ...e })));
11860
11894
  if (scenes2) scenes2.load(_nullishCoalesce(doc.scenes, () => ( [])));
11861
- if (doc.viewport) _optionalChain([options, 'access', _510 => _510.setViewport, 'optionalCall', _511 => _511({ ...doc.viewport })]);
11895
+ if (doc.viewport) _optionalChain([options, 'access', _513 => _513.setViewport, 'optionalCall', _514 => _514({ ...doc.viewport })]);
11862
11896
  };
11863
11897
  const check = (document2) => {
11864
11898
  checkCanvasDocument(document2);
@@ -11903,7 +11937,7 @@ function createCanvasEditorDocument(options) {
11903
11937
  }
11904
11938
  function createCanvasGestureRecorder(options) {
11905
11939
  let before = null;
11906
- const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _512 => _512.getEdges, 'optionalCall', _513 => _513()]) });
11940
+ const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _515 => _515.getEdges, 'optionalCall', _516 => _516()]) });
11907
11941
  const key = (s) => canvasDocumentContentKey(s.nodes, _nullishCoalesce(s.edges, () => ( [])));
11908
11942
  const restore = (s) => {
11909
11943
  options.setNodes(s.nodes);
@@ -12036,8 +12070,8 @@ function createCanvasExplosionStateController(options = {}) {
12036
12070
  clearTimer();
12037
12071
  const previous = snapshot.activeId;
12038
12072
  set({ activeId: nodeId, collapsingId: null });
12039
- if (previous !== null) _optionalChain([options, 'access', _514 => _514.onCollapse, 'optionalCall', _515 => _515(previous)]);
12040
- _optionalChain([options, 'access', _516 => _516.onExplode, 'optionalCall', _517 => _517(nodeId)]);
12073
+ if (previous !== null) _optionalChain([options, 'access', _517 => _517.onCollapse, 'optionalCall', _518 => _518(previous)]);
12074
+ _optionalChain([options, 'access', _519 => _519.onExplode, 'optionalCall', _520 => _520(nodeId)]);
12041
12075
  return true;
12042
12076
  };
12043
12077
  const collapse = (nodeId) => {
@@ -12046,7 +12080,7 @@ function createCanvasExplosionStateController(options = {}) {
12046
12080
  if (active === null || nodeId !== void 0 && nodeId !== active) return false;
12047
12081
  clearTimer();
12048
12082
  set({ activeId: null, collapsingId: active });
12049
- _optionalChain([options, 'access', _518 => _518.onCollapse, 'optionalCall', _519 => _519(active)]);
12083
+ _optionalChain([options, 'access', _521 => _521.onCollapse, 'optionalCall', _522 => _522(active)]);
12050
12084
  if (duration === 0) finishCollapse();
12051
12085
  else timer = setTimeout(() => {
12052
12086
  timer = null;
@@ -12107,7 +12141,7 @@ function canvasExplosionToolTarget(state, options) {
12107
12141
  var READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12108
12142
  var WRITE_IDEMPOTENT = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12109
12143
  var labelOf = (node) => {
12110
- const label = _nullishCoalesce(_optionalChain([node, 'access', _520 => _520.data, 'optionalAccess', _521 => _521.label]), () => ( _optionalChain([node, 'access', _522 => _522.data, 'optionalAccess', _523 => _523.name])));
12144
+ const label = _nullishCoalesce(_optionalChain([node, 'access', _523 => _523.data, 'optionalAccess', _524 => _524.label]), () => ( _optionalChain([node, 'access', _525 => _525.data, 'optionalAccess', _526 => _526.name])));
12111
12145
  return typeof label === "string" && label !== "" ? label : void 0;
12112
12146
  };
12113
12147
  function createCanvasExplosionToolProvider(target, options = {}) {
@@ -12120,7 +12154,7 @@ function createCanvasExplosionToolProvider(target, options = {}) {
12120
12154
  if (ok === true) return null;
12121
12155
  return typeof ok === "string" && ok ? ok : `Node "${node.id}" has nothing to explode into.`;
12122
12156
  };
12123
- const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _524 => _524.collapsing, 'optionalCall', _525 => _525()]), () => ( []))] });
12157
+ const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _527 => _527.collapsing, 'optionalCall', _528 => _528()]), () => ( []))] });
12124
12158
  const findNode = (id) => {
12125
12159
  const node = target.getNodes().find((n3) => n3.id === id);
12126
12160
  if (!node) throw new Error(`No node "${id}" on the canvas. Call list_explodable_nodes for node ids.`);
@@ -12239,8 +12273,8 @@ function createCanvasProposals(options) {
12239
12273
  const rectOf = (node) => ({
12240
12274
  x: node.position.x,
12241
12275
  y: node.position.y,
12242
- width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _526 => _526.measured, 'optionalAccess', _527 => _527.width]), () => ( node.width)), () => ( size2.width)),
12243
- height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _528 => _528.measured, 'optionalAccess', _529 => _529.height]), () => ( node.height)), () => ( size2.height))
12276
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _529 => _529.measured, 'optionalAccess', _530 => _530.width]), () => ( node.width)), () => ( size2.width)),
12277
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _531 => _531.measured, 'optionalAccess', _532 => _532.height]), () => ( node.height)), () => ( size2.height))
12244
12278
  });
12245
12279
  const missing = (proposal) => {
12246
12280
  const present = new Set(options.getNodes().map((n3) => n3.id));
@@ -12290,7 +12324,7 @@ function createCanvasProposals(options) {
12290
12324
  throw new Error(`nodes[${i}].position needs finite x and y.`);
12291
12325
  }
12292
12326
  if (!position) {
12293
- const view = _optionalChain([options, 'access', _530 => _530.visibleRect, 'optionalCall', _531 => _531()]);
12327
+ const view = _optionalChain([options, 'access', _533 => _533.visibleRect, 'optionalCall', _534 => _534()]);
12294
12328
  if (input2.nearNodeId) position = _chunkEL4PSKFTcjs.placeBeside.call(void 0, rects, nodeSize, toSide(input2.side), input2.nearNodeId);
12295
12329
  else if (view) position = _chunkEL4PSKFTcjs.placeInView.call(void 0, rects, nodeSize, view);
12296
12330
  else if (canvasNodes.length || nodes.length) {
@@ -12342,7 +12376,7 @@ function createCanvasProposals(options) {
12342
12376
  };
12343
12377
  const accept = (id) => {
12344
12378
  const proposal = find(id);
12345
- const reason = _optionalChain([options, 'access', _532 => _532.readOnly, 'optionalCall', _533 => _533()]);
12379
+ const reason = _optionalChain([options, 'access', _535 => _535.readOnly, 'optionalCall', _536 => _536()]);
12346
12380
  if (reason) throw new Error(reason);
12347
12381
  const gone = missing(proposal);
12348
12382
  if (gone.length) {
@@ -12494,7 +12528,7 @@ function createCanvasChangeFeed(options) {
12494
12528
  if (edited) pending = void 0;
12495
12529
  const change = {
12496
12530
  seq: ++seq,
12497
- origin: _optionalChain([commit, 'optionalAccess', _534 => _534.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _535 => _535.kind]) === "merge" ? commit.origin : "user",
12531
+ origin: _optionalChain([commit, 'optionalAccess', _537 => _537.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _538 => _538.kind]) === "merge" ? commit.origin : "user",
12498
12532
  ...commit ? { commit } : {},
12499
12533
  addedNodes,
12500
12534
  removedNodes,
@@ -12513,8 +12547,8 @@ function createCanvasChangeFeed(options) {
12513
12547
  const noteCommit = (event) => {
12514
12548
  pending = event;
12515
12549
  };
12516
- const offHistory = _optionalChain([options, 'access', _536 => _536.history, 'optionalAccess', _537 => _537.onCommit, 'call', _538 => _538(noteCommit)]);
12517
- const offCanvas = _optionalChain([options, 'access', _539 => _539.subscribe, 'optionalCall', _540 => _540(() => {
12550
+ const offHistory = _optionalChain([options, 'access', _539 => _539.history, 'optionalAccess', _540 => _540.onCommit, 'call', _541 => _541(noteCommit)]);
12551
+ const offCanvas = _optionalChain([options, 'access', _542 => _542.subscribe, 'optionalCall', _543 => _543(() => {
12518
12552
  check();
12519
12553
  })]);
12520
12554
  return {
@@ -12533,8 +12567,8 @@ function createCanvasChangeFeed(options) {
12533
12567
  },
12534
12568
  noteCommit,
12535
12569
  dispose: () => {
12536
- _optionalChain([offHistory, 'optionalCall', _541 => _541()]);
12537
- _optionalChain([offCanvas, 'optionalCall', _542 => _542()]);
12570
+ _optionalChain([offHistory, 'optionalCall', _544 => _544()]);
12571
+ _optionalChain([offCanvas, 'optionalCall', _545 => _545()]);
12538
12572
  listeners.clear();
12539
12573
  }
12540
12574
  };
@@ -12544,7 +12578,7 @@ function createCanvasChangeFeed(options) {
12544
12578
  var READ2 = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12545
12579
  var WRITE = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
12546
12580
  var labelOf2 = (node) => {
12547
- 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])));
12581
+ const label = _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _546 => _546.data, 'optionalAccess', _547 => _547.label]), () => ( _optionalChain([node, 'access', _548 => _548.data, 'optionalAccess', _549 => _549.name]))), () => ( _optionalChain([node, 'access', _550 => _550.data, 'optionalAccess', _551 => _551.title])));
12548
12582
  return typeof label === "string" && label !== "" ? label : void 0;
12549
12583
  };
12550
12584
  var proposalIdArg = {
@@ -12625,7 +12659,7 @@ function createCanvasProposalToolProvider(proposals, options = {}) {
12625
12659
  },
12626
12660
  annotations: { title: "Propose nodes", ...WRITE },
12627
12661
  handler: (args, context) => {
12628
- const origin = _optionalChain([context, 'access', _549 => _549.actor, 'optionalAccess', _550 => _550.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12662
+ const origin = _optionalChain([context, 'access', _552 => _552.actor, 'optionalAccess', _553 => _553.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12629
12663
  const proposal = proposals.propose({ title: args.title, rationale: args.rationale, nodes: args.nodes, edges: args.edges, ...origin ? { origin } : {} });
12630
12664
  const { id: _id, missing: _missing, createdAt: _createdAt, ...rest } = describe(proposal);
12631
12665
  return { proposalId: proposal.id, ...rest };
@@ -12677,7 +12711,7 @@ function stickerCanvasNode(placement, id) {
12677
12711
  const { description, asset } = placement;
12678
12712
  const silhouette = _nullishCoalesce((asset.kind === "svg" ? asset.silhouette : void 0), () => ( description.silhouette));
12679
12713
  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.`);
12680
- const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _551 => _551.colours, 'optionalAccess', _552 => _552[0]]))), () => ( "#1f2937"));
12714
+ const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _554 => _554.colours, 'optionalAccess', _555 => _555[0]]))), () => ( "#1f2937"));
12681
12715
  const shape = { kind: "path", d: silhouette, viewBox: [0, 0, description.width, description.height], fillRule: "evenodd", fill };
12682
12716
  const sticker = { ref: placement.ref, licence: description.licence };
12683
12717
  return {
@@ -13252,4 +13286,4 @@ function createCanvasStickerHost(options) {
13252
13286
 
13253
13287
 
13254
13288
 
13255
- 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 = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.renderCanvasBrushPreview; exports.renderCanvasBrushSwatch = _chunkIPUTIUGQcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkIPUTIUGQcjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasBrushSpec = _chunkIPUTIUGQcjs.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 = _chunkIPUTIUGQcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkIPUTIUGQcjs.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;
13289
+ 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 = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.renderCanvasBrushPreview; exports.renderCanvasBrushSwatch = _chunkUVZ7RQOEcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkUVZ7RQOEcjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasBrushSpec = _chunkUVZ7RQOEcjs.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 = _chunkUVZ7RQOEcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkUVZ7RQOEcjs.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;