@pixerate/editor 0.266.2 → 0.267.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 (111) hide show
  1. package/dist/agent/index.cjs +2 -2
  2. package/dist/agent/index.js +1 -1
  3. package/dist/animation-editor/controller.d.cts +8 -0
  4. package/dist/animation-editor/controller.d.ts +8 -0
  5. package/dist/animation-editor/effect-tools.d.cts +1 -1
  6. package/dist/animation-editor/effect-tools.d.ts +1 -1
  7. package/dist/animation-editor/index.cjs +172 -105
  8. package/dist/animation-editor/index.js +91 -24
  9. package/dist/brushes/index.cjs +59 -59
  10. package/dist/brushes/index.js +5 -5
  11. package/dist/brushes/profiles.d.cts +6 -1
  12. package/dist/brushes/profiles.d.ts +6 -1
  13. package/dist/{brushstrokeRender-FSUWXUZY.cjs → brushstrokeRender-L7JYRR2R.cjs} +16 -16
  14. package/dist/{brushstrokeRender-KD453OBX.js → brushstrokeRender-NLFPEBGI.js} +4 -4
  15. package/dist/canvas/brushTypes.d.cts +12 -0
  16. package/dist/canvas/brushTypes.d.ts +12 -0
  17. package/dist/canvas/brushstroke.d.cts +1 -1
  18. package/dist/canvas/brushstroke.d.ts +1 -1
  19. package/dist/canvas/drawController.d.cts +19 -4
  20. package/dist/canvas/drawController.d.ts +19 -4
  21. package/dist/canvas/index.cjs +144 -105
  22. package/dist/canvas/index.js +46 -7
  23. package/dist/{chunk-XORJ7UZO.cjs → chunk-3VHH6V67.cjs} +13 -12
  24. package/dist/{chunk-T2LDTEXK.js → chunk-4IDUYB45.js} +2217 -56
  25. package/dist/chunk-7UKFXXWL.js +802 -0
  26. package/dist/chunk-ADMRNWR7.js +340 -0
  27. package/dist/{chunk-CIJBSUM5.js → chunk-AGNUD5BI.js} +2 -2
  28. package/dist/{chunk-WLUVZKVD.cjs → chunk-DT4YQUGT.cjs} +32 -32
  29. package/dist/{chunk-DXYHQ2VN.js → chunk-EF7LZAXQ.js} +1 -1
  30. package/dist/chunk-EXB2EGBE.cjs +802 -0
  31. package/dist/{chunk-4ODRXQRW.js → chunk-EYSHTYLG.js} +1 -1
  32. package/dist/{chunk-R44Y3EFS.js → chunk-FGJHJIMN.js} +8 -336
  33. package/dist/{chunk-AQZQWXEU.cjs → chunk-G7NHE2VD.cjs} +35 -35
  34. package/dist/{chunk-XC6DPRYI.js → chunk-GSTSZPSR.js} +154 -949
  35. package/dist/{chunk-VRK322ZC.cjs → chunk-HIO6E7LC.cjs} +2 -2
  36. package/dist/{chunk-TOID45I2.cjs → chunk-J2TNIZ55.cjs} +1 -1
  37. package/dist/{chunk-YHDHFJUC.cjs → chunk-J5VQYK7T.cjs} +217 -1012
  38. package/dist/{chunk-3C33YTNN.js → chunk-JGWVZPT6.js} +2 -2
  39. package/dist/{chunk-ACFSFUQH.js → chunk-JL6YH5WD.js} +4 -0
  40. package/dist/{chunk-3SBLVGOM.cjs → chunk-LA5Y4ETA.cjs} +23 -23
  41. package/dist/{chunk-MVUQSK5J.cjs → chunk-LHPEG5AU.cjs} +107 -435
  42. package/dist/{chunk-DOZ6F2K2.js → chunk-NSETJI74.js} +3 -2
  43. package/dist/{chunk-XRXFVRGY.cjs → chunk-OKHKA43L.cjs} +2364 -203
  44. package/dist/{chunk-LK4SXL3V.js → chunk-OSEXT7JL.js} +1 -1
  45. package/dist/{chunk-PE6YJMQT.cjs → chunk-PFHJS4HE.cjs} +20 -19
  46. package/dist/{chunk-7KNW3WXZ.cjs → chunk-QEVLRLUN.cjs} +63 -0
  47. package/dist/{chunk-OTN6VB5S.cjs → chunk-RDFHWAHL.cjs} +5 -1
  48. package/dist/{chunk-6JL2D5SG.js → chunk-VE6UKYQ2.js} +3 -2
  49. package/dist/{chunk-RFJZGTHA.cjs → chunk-XVOP3CGQ.cjs} +9 -9
  50. package/dist/{chunk-EZOJBP4D.js → chunk-YIC6MAJ2.js} +1 -1
  51. package/dist/chunk-YZWM6ZIP.cjs +340 -0
  52. package/dist/{chunk-472INMWH.js → chunk-ZA7L5YJB.js} +63 -0
  53. package/dist/commands/builtins.d.cts +12 -1
  54. package/dist/commands/builtins.d.ts +12 -1
  55. package/dist/commands/index.cjs +2 -2
  56. package/dist/commands/index.js +1 -1
  57. package/dist/image-editor/controller.d.cts +1 -1
  58. package/dist/image-editor/controller.d.ts +1 -1
  59. package/dist/image-editor/index.cjs +837 -833
  60. package/dist/image-editor/index.js +105 -101
  61. package/dist/paint/index.cjs +5 -3
  62. package/dist/paint/index.js +46 -44
  63. package/dist/paint-editor/controller.d.cts +5 -3
  64. package/dist/paint-editor/controller.d.ts +5 -3
  65. package/dist/paint-editor/index.cjs +832 -2295
  66. package/dist/paint-editor/index.js +285 -1748
  67. package/dist/paint-editor/path-samples.d.cts +2 -0
  68. package/dist/paint-editor/path-samples.d.ts +2 -0
  69. package/dist/paint-editor/presence.d.cts +20 -1
  70. package/dist/paint-editor/presence.d.ts +20 -1
  71. package/dist/stickers/helpers.d.cts +2 -0
  72. package/dist/stickers/helpers.d.ts +2 -0
  73. package/dist/stickers/index.cjs +41 -35
  74. package/dist/stickers/index.js +22 -16
  75. package/dist/stickers/types.d.cts +4 -2
  76. package/dist/stickers/types.d.ts +4 -2
  77. package/dist/vector/backdrop.d.cts +13 -0
  78. package/dist/vector/backdrop.d.ts +13 -0
  79. package/dist/vector/brushstroke.d.cts +54 -7
  80. package/dist/vector/brushstroke.d.ts +54 -7
  81. package/dist/vector/brushstrokeMedia.d.cts +96 -0
  82. package/dist/vector/brushstrokeMedia.d.ts +96 -0
  83. package/dist/vector/controller.d.cts +17 -3
  84. package/dist/vector/controller.d.ts +17 -3
  85. package/dist/vector/index.cjs +1846 -1386
  86. package/dist/vector/index.d.cts +2 -0
  87. package/dist/vector/index.d.ts +2 -0
  88. package/dist/vector/index.js +517 -57
  89. package/dist/vector/render.d.cts +6 -0
  90. package/dist/vector/render.d.ts +6 -0
  91. package/dist/vector/types.d.cts +14 -0
  92. package/dist/vector/types.d.ts +14 -0
  93. package/package.json +1 -1
  94. package/skills/pixerate-animation-editor/SKILL.md +1 -0
  95. package/skills/pixerate-brushes/SKILL.md +2 -2
  96. package/skills/pixerate-brushes-design/SKILL.md +7 -4
  97. package/skills/pixerate-brushes-design/evals/port-to-vector.json +8 -8
  98. package/skills/pixerate-canvas/SKILL.md +11 -1
  99. package/skills/pixerate-image-editor/SKILL.md +19 -64
  100. package/skills/pixerate-image-editor/references/color-management.md +2 -1
  101. package/skills/pixerate-image-editor/references/free-transform.md +12 -0
  102. package/skills/pixerate-image-editor/references/layer-effects.md +10 -0
  103. package/skills/pixerate-image-editor/references/painting.md +17 -0
  104. package/skills/pixerate-image-editor/references/photoshop-files.md +1 -1
  105. package/skills/pixerate-image-editor/references/shapes-and-type.md +14 -0
  106. package/skills/pixerate-image-editor/references/smart-objects.md +10 -0
  107. package/skills/pixerate-paint-editor/SKILL.md +8 -4
  108. package/skills/pixerate-paint-editor/references/wet-media.md +9 -0
  109. package/skills/pixerate-vector/SKILL.md +16 -6
  110. package/skills/pixerate-vector/references/best-practices.md +1 -0
  111. package/skills/pixerate-vector/references/commands.md +19 -0
@@ -46,7 +46,7 @@ var _chunk3FSUJIXNcjs = require('../chunk-3FSUJIXN.cjs');
46
46
 
47
47
 
48
48
 
49
- var _chunkTOID45I2cjs = require('../chunk-TOID45I2.cjs');
49
+ var _chunkJ2TNIZ55cjs = require('../chunk-J2TNIZ55.cjs');
50
50
 
51
51
 
52
52
 
@@ -7984,12 +7984,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
7984
7984
  if (!samples || samples.length !== points.length) return out;
7985
7985
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
7986
7986
  if (samples.some((s) => finite2(s.pressure))) {
7987
- const pressure = _chunkTOID45I2cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7987
+ const pressure = _chunkJ2TNIZ55cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7988
7988
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
7989
7989
  }
7990
7990
  for (const key of ["tiltX", "tiltY"]) {
7991
7991
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
7992
- out[key] = _chunkTOID45I2cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7992
+ out[key] = _chunkJ2TNIZ55cjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7993
7993
  }
7994
7994
  return out;
7995
7995
  }
@@ -8035,7 +8035,7 @@ function strokeToShapeNode(stroke, options = {}) {
8035
8035
  ...stroke.style.paint !== void 0 ? { paint: stroke.style.paint } : {},
8036
8036
  ...stroke.style.brushSpec && typeof stroke.style.brush === "string" && stroke.style.brushSpec.id === stroke.style.brush ? { spec: stroke.style.brushSpec } : {},
8037
8037
  // New strokes carry a character seed (jitter and grain) and their size, if chosen.
8038
- seed: _chunkTOID45I2cjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8038
+ seed: _chunkJ2TNIZ55cjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8039
8039
  ...stroke.style.brushSize !== void 0 && stroke.style.brushSize > 0 ? { size: stroke.style.brushSize } : {}
8040
8040
  }
8041
8041
  } : {},
@@ -8080,6 +8080,8 @@ function createCanvasDrawController(options) {
8080
8080
  };
8081
8081
  let activeStroke = null;
8082
8082
  let colorScheme = options.colorScheme === "dark" ? "dark" : "light";
8083
+ let colorLocked = !!options.colorLocked;
8084
+ let brushColour = null;
8083
8085
  const erasedInDrag = /* @__PURE__ */ new Map();
8084
8086
  let dragStartNodes = null;
8085
8087
  function setTool(tool) {
@@ -8091,11 +8093,16 @@ function createCanvasDrawController(options) {
8091
8093
  ...createDefaultStrokeStyle(tool),
8092
8094
  ...options.style
8093
8095
  };
8096
+ brushColour = null;
8094
8097
  _optionalChain([options, 'access', _293 => _293.onStyleChange, 'optionalCall', _294 => _294(currentStyle)]);
8095
8098
  }
8096
8099
  _optionalChain([options, 'access', _295 => _295.onToolChange, 'optionalCall', _296 => _296(tool)]);
8097
8100
  }
8098
8101
  function setStyle(style) {
8102
+ if (style.color !== void 0) brushColour = null;
8103
+ applyStyle(style);
8104
+ }
8105
+ function applyStyle(style) {
8099
8106
  currentStyle = { ...currentStyle, ...style };
8100
8107
  _optionalChain([options, 'access', _297 => _297.onStyleChange, 'optionalCall', _298 => _298(currentStyle)]);
8101
8108
  }
@@ -8197,7 +8204,7 @@ function createCanvasDrawController(options) {
8197
8204
  if (tool !== "pen" && tool !== "highlighter") throw new Error(`Unknown tool '${String(tool)}': use 'pen' or 'highlighter'.`);
8198
8205
  const style = { ...createDefaultStrokeStyle(tool), ...input.style };
8199
8206
  if (_optionalChain([input, 'access', _312 => _312.style, 'optionalAccess', _313 => _313.color]) === void 0 && typeof style.brush === "string") {
8200
- const preset = (await _chunkTOID45I2cjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === style.brush);
8207
+ const preset = (await _chunkJ2TNIZ55cjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === style.brush);
8201
8208
  const hex = _optionalChain([preset, 'optionalAccess', _314 => _314.defaultColor]) !== void 0 ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, preset.defaultColor, colorScheme) : null;
8202
8209
  if (hex) style.color = hex;
8203
8210
  }
@@ -8217,12 +8224,12 @@ function createCanvasDrawController(options) {
8217
8224
  throw new Error("paint (gradient paint) only colours brushed strokes: pass a brush too (see canvas.listBrushes), or use color for a plain stroke.");
8218
8225
  }
8219
8226
  if (style.brush !== void 0) {
8220
- const spec = await _asyncNullishCoalesce((_optionalChain([style, 'access', _315 => _315.brushSpec, 'optionalAccess', _316 => _316.id]) === style.brush ? style.brushSpec : void 0), async () => ( await _chunkTOID45I2cjs.resolveCanvasBrushSpec.call(void 0, style.brush, options.brushLibrary)));
8221
- await _chunkTOID45I2cjs.validateCanvasBrush.call(void 0, style.brush, spec);
8227
+ const spec = await _asyncNullishCoalesce((_optionalChain([style, 'access', _315 => _315.brushSpec, 'optionalAccess', _316 => _316.id]) === style.brush ? style.brushSpec : void 0), async () => ( await _chunkJ2TNIZ55cjs.resolveCanvasBrushSpec.call(void 0, style.brush, options.brushLibrary)));
8228
+ await _chunkJ2TNIZ55cjs.validateCanvasBrush.call(void 0, style.brush, spec);
8222
8229
  if (spec) style.brushSpec = spec;
8223
8230
  else delete style.brushSpec;
8224
8231
  }
8225
- if (style.paint !== void 0) style.paint = (await _chunkTOID45I2cjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8232
+ if (style.paint !== void 0) style.paint = (await _chunkJ2TNIZ55cjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8226
8233
  const id = _nullishCoalesce(_optionalChain([options, 'access', _317 => _317.generateNodeId, 'optionalCall', _318 => _318()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8227
8234
  const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _319 => _319.drawOptions, 'optionalAccess', _320 => _320.streamline]), () => ( 0.35))) : [...points];
8228
8235
  const node = strokeToShapeNode(
@@ -8308,33 +8315,65 @@ function createCanvasDrawController(options) {
8308
8315
  drawStroke,
8309
8316
  nodeBounds,
8310
8317
  /** The presets and saved brushes (of `brushLibrary`) a stroke can be brushed with (loads the paint engine). */
8311
- listBrushes: () => _chunkTOID45I2cjs.listCanvasBrushes.call(void 0, options.brushLibrary),
8318
+ listBrushes: () => _chunkJ2TNIZ55cjs.listCanvasBrushes.call(void 0, options.brushLibrary),
8312
8319
  /**
8313
8320
  * A brush picker's choice: brushes the pen and highlighter with `id` (`null`: a plain vector
8314
8321
  * 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.
8322
+ * (resolved for the colour scheme) the stroke colour unless `keepColour` or the colour is
8323
+ * locked (`setColorLocked`). A light / dark default resolves again when the scheme changes,
8324
+ * until another colour is set. Throws for a brush the canvas can't paint. Resolves with the
8325
+ * brush chosen.
8317
8326
  */
8318
8327
  async selectBrush(id, choice = {}) {
8319
8328
  if (id === null) {
8320
8329
  setStyle({ brush: void 0, brushSize: void 0, brushSpec: void 0, paint: void 0 });
8321
8330
  return null;
8322
8331
  }
8323
- const preset = (await _chunkTOID45I2cjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === id);
8332
+ const preset = (await _chunkJ2TNIZ55cjs.listCanvasBrushes.call(void 0, options.brushLibrary)).find((b) => b.id === id);
8324
8333
  if (!preset) {
8325
- await _chunkTOID45I2cjs.validateCanvasBrush.call(void 0, id);
8334
+ await _chunkJ2TNIZ55cjs.validateCanvasBrush.call(void 0, id);
8326
8335
  throw new Error(`Brush '${id}' is not one the canvas can paint; listBrushes lists them.`);
8327
8336
  }
8328
- const hex = !choice.keepColour && preset.defaultColor !== void 0 ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, preset.defaultColor, colorScheme) : null;
8329
- setStyle({ brush: id, brushSize: preset.size, brushSpec: preset.spec, ...hex ? { color: hex } : {} });
8337
+ const hex = !choice.keepColour && !colorLocked && preset.defaultColor !== void 0 ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, preset.defaultColor, colorScheme) : null;
8338
+ if (hex) brushColour = _nullishCoalesce(preset.defaultColor, () => ( null));
8339
+ applyStyle({ brush: id, brushSize: preset.size, brushSpec: preset.spec, ...hex ? { color: hex } : {} });
8330
8340
  return preset;
8331
8341
  },
8332
- /** The host's colour scheme, for brushes' light / dark default colours. */
8342
+ get colorScheme() {
8343
+ return colorScheme;
8344
+ },
8345
+ /**
8346
+ * The host's colour scheme, for brushes' light / dark default colours: a stroke colour that
8347
+ * came from one (`selectBrush`) resolves to the new side. Strokes already drawn keep theirs.
8348
+ */
8333
8349
  setColorScheme(scheme) {
8334
- colorScheme = scheme === "dark" ? "dark" : "light";
8350
+ const next = scheme === "dark" ? "dark" : "light";
8351
+ if (next === colorScheme) return;
8352
+ colorScheme = next;
8353
+ const hex = brushColour ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, brushColour, next) : null;
8354
+ if (hex && hex !== currentStyle.color) applyStyle({ color: hex });
8355
+ },
8356
+ get colorLocked() {
8357
+ return colorLocked;
8358
+ },
8359
+ /** Locks the stroke colour ("Keep my colour"): choosing a brush with a default colour keeps it. */
8360
+ setColorLocked(locked) {
8361
+ if (colorLocked === !!locked) return;
8362
+ colorLocked = !!locked;
8363
+ _optionalChain([options, 'access', _331 => _331.onColorLockChange, 'optionalCall', _332 => _332(colorLocked)]);
8364
+ },
8365
+ /** What the brush picker is set to: the brush, colour, scheme and lock (a snapshot). */
8366
+ brushSettings() {
8367
+ return {
8368
+ brush: typeof currentStyle.brush === "string" ? currentStyle.brush : null,
8369
+ color: typeof currentStyle.color === "string" ? currentStyle.color : null,
8370
+ colorScheme,
8371
+ colorLocked,
8372
+ colorFollowsScheme: brushColour !== null && typeof brushColour === "object"
8373
+ };
8335
8374
  },
8336
8375
  /** The saved brush to embed for a brush id (undefined for presets and tip settings); for a brush picker. */
8337
- brushSpec: (brush) => _chunkTOID45I2cjs.resolveCanvasBrushSpec.call(void 0, brush, options.brushLibrary)
8376
+ brushSpec: (brush) => _chunkJ2TNIZ55cjs.resolveCanvasBrushSpec.call(void 0, brush, options.brushLibrary)
8338
8377
  };
8339
8378
  }
8340
8379
  function computeDragBounds(start, current, modifiers = {}) {
@@ -8448,8 +8487,8 @@ function estimateDiagramNodeSize(node) {
8448
8487
  var IMAGE_LABEL_HEIGHT = 24;
8449
8488
  function diagramImageSize(node) {
8450
8489
  const num4 = (v) => typeof v === "number" && v > 0 ? v : void 0;
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]));
8490
+ const w = num4(_optionalChain([node, 'access', _333 => _333.data, 'optionalAccess', _334 => _334.w]));
8491
+ const h = num4(_optionalChain([node, 'access', _335 => _335.data, 'optionalAccess', _336 => _336.h]));
8453
8492
  return { width: _nullishCoalesce(_nullishCoalesce(w, () => ( h)), () => ( 96)), height: _nullishCoalesce(_nullishCoalesce(h, () => ( w)), () => ( 96)) };
8454
8493
  }
8455
8494
  function extraLines(node) {
@@ -8511,7 +8550,7 @@ function autoLayoutDiagram(graph, options = {}) {
8511
8550
  while (cur && !seen.has(cur)) {
8512
8551
  if (ids.has(cur)) return cur;
8513
8552
  seen.add(cur);
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])));
8553
+ cur = _nullishCoalesce(_optionalChain([nodeById, 'access', _337 => _337.get, 'call', _338 => _338(cur), 'optionalAccess', _339 => _339.parentId]), () => ( _optionalChain([groupById, 'access', _340 => _340.get, 'call', _341 => _341(cur), 'optionalAccess', _342 => _342.parentId])));
8515
8554
  }
8516
8555
  return null;
8517
8556
  };
@@ -8547,7 +8586,7 @@ function autoLayoutDiagram(graph, options = {}) {
8547
8586
  const positions = {};
8548
8587
  const absolute = (id) => {
8549
8588
  if (positions[id]) return positions[id];
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])));
8589
+ const parentId = _nullishCoalesce(_optionalChain([nodeById, 'access', _343 => _343.get, 'call', _344 => _344(id), 'optionalAccess', _345 => _345.parentId]), () => ( _optionalChain([groupById, 'access', _346 => _346.get, 'call', _347 => _347(id), 'optionalAccess', _348 => _348.parentId])));
8551
8590
  const [rx, ry] = _nullishCoalesce(relative[id], () => ( [0, 0]));
8552
8591
  if (!parentId) {
8553
8592
  positions[id] = [rx, ry];
@@ -8567,15 +8606,15 @@ function push(map, key, value) {
8567
8606
  else map.set(key, [value]);
8568
8607
  }
8569
8608
  function ensureDiagramLayout(graph, meta, options) {
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]));
8609
+ const measure = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _349 => _349.measure]), () => ( estimateDiagramNodeSize));
8610
+ const custom = _chunk3FSUJIXNcjs.getFamilyLayout.call(void 0, _optionalChain([options, 'optionalAccess', _350 => _350.family]));
8572
8611
  if (custom) return custom(graph, meta, { ..._nullishCoalesce(options, () => ( {})), measure });
8573
8612
  const stored = _nullishCoalesce(meta.layout, () => ( {}));
8574
8613
  const allIds = [...graph.nodes.map((n3) => n3.id), ...graph.groups.map((g) => g.id)];
8575
8614
  const missing = allIds.filter((id) => !stored[id]);
8576
8615
  const sizes = {};
8577
8616
  for (const n3 of graph.nodes)
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);
8617
+ sizes[n3.id] = _optionalChain([meta, 'access', _351 => _351.sizes, 'optionalAccess', _352 => _352[n3.id]]) ? { width: meta.sizes[n3.id][0], height: meta.sizes[n3.id][1] } : measure(n3);
8579
8618
  if (!missing.length) {
8580
8619
  const positions2 = {};
8581
8620
  for (const id of allIds) positions2[id] = stored[id];
@@ -8603,7 +8642,7 @@ function ensureDiagramLayout(graph, meta, options) {
8603
8642
  return { positions, sizes };
8604
8643
  }
8605
8644
  function diagramGroupSize(groupId, graph, positions, sizes, meta, pad = 24, titleH = 32) {
8606
- if (_optionalChain([meta, 'access', _351 => _351.sizes, 'optionalAccess', _352 => _352[groupId]]))
8645
+ if (_optionalChain([meta, 'access', _353 => _353.sizes, 'optionalAccess', _354 => _354[groupId]]))
8607
8646
  return { width: meta.sizes[groupId][0], height: meta.sizes[groupId][1] };
8608
8647
  const members = [
8609
8648
  ...graph.nodes.filter((n3) => n3.parentId === groupId).map((n3) => n3.id),
@@ -8680,9 +8719,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8680
8719
  width: size2.width,
8681
8720
  height: size2.height,
8682
8721
  style: { width: size2.width, height: size2.height },
8683
- draggable: editable && !_optionalChain([g, 'access', _353 => _353.data, 'optionalAccess', _354 => _354.locked]),
8722
+ draggable: editable && !_optionalChain([g, 'access', _355 => _355.data, 'optionalAccess', _356 => _356.locked]),
8684
8723
  selectable: editable,
8685
- connectable: editable && !_optionalChain([g, 'access', _355 => _355.data, 'optionalAccess', _356 => _356.locked]),
8724
+ connectable: editable && !_optionalChain([g, 'access', _357 => _357.data, 'optionalAccess', _358 => _358.locked]),
8686
8725
  zIndex: depth(g.id, parents)
8687
8726
  };
8688
8727
  });
@@ -8702,9 +8741,9 @@ function mermaidFlowNodes(graph, layout2, options = {}) {
8702
8741
  width: size2.width,
8703
8742
  height: size2.height,
8704
8743
  style: { width: size2.width, height: size2.height },
8705
- draggable: editable && !_optionalChain([n3, 'access', _357 => _357.data, 'optionalAccess', _358 => _358.locked]),
8744
+ draggable: editable && !_optionalChain([n3, 'access', _359 => _359.data, 'optionalAccess', _360 => _360.locked]),
8706
8745
  selectable: editable,
8707
- connectable: editable && !_optionalChain([n3, 'access', _359 => _359.data, 'optionalAccess', _360 => _360.locked]) && !_optionalChain([n3, 'access', _361 => _361.data, 'optionalAccess', _362 => _362.synthetic]),
8746
+ connectable: editable && !_optionalChain([n3, 'access', _361 => _361.data, 'optionalAccess', _362 => _362.locked]) && !_optionalChain([n3, 'access', _363 => _363.data, 'optionalAccess', _364 => _364.synthetic]),
8708
8747
  zIndex: depth(n3.id, parents) + 100
8709
8748
  };
8710
8749
  });
@@ -8769,7 +8808,7 @@ function clampHeight2(content, options = {}) {
8769
8808
  return Math.round(Math.min(max, Math.max(min, content + padding)));
8770
8809
  }
8771
8810
  function diagramCanvasHeight(layout2, options) {
8772
- return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _363 => _363(layout2), 'optionalAccess', _364 => _364.height]), () => ( 0)), options);
8811
+ return clampHeight2(_nullishCoalesce(_optionalChain([diagramLayoutBounds, 'call', _365 => _365(layout2), 'optionalAccess', _366 => _366.height]), () => ( 0)), options);
8773
8812
  }
8774
8813
  var RANK_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT + 72;
8775
8814
  var NODES_PER_RANK2 = 2;
@@ -8981,7 +9020,7 @@ function chartTheme(theme) {
8981
9020
  }
8982
9021
  function xyChartSpec(graph, palette) {
8983
9022
  const data = _nullishCoalesce(graph.data, () => ( {}));
8984
- const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _365 => _365.data, 'optionalAccess', _366 => _366.values])).length));
9023
+ const longest = Math.max(0, ...graph.nodes.map((n3) => numbers(_optionalChain([n3, 'access', _367 => _367.data, 'optionalAccess', _368 => _368.values])).length));
8985
9024
  let categories = Array.isArray(data.categories) ? data.categories.map(String) : [];
8986
9025
  const xMin = num2(data.xMin);
8987
9026
  const xMax = num2(data.xMax);
@@ -8996,11 +9035,11 @@ function xyChartSpec(graph, palette) {
8996
9035
  type: bars ? "bar" : "line",
8997
9036
  title: _nullishCoalesce(graph.title, () => ( "")),
8998
9037
  categories,
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" })),
9038
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _369 => _369.data, 'optionalAccess', _370 => _370.values])), type: n3.shape === "line" ? "line" : "bar" })),
9000
9039
  orientation: data.horizontal ? "horizontal" : "vertical",
9001
9040
  xAxis: { show: true, title: text(data.xTitle), min: null, max: null, step: null, gridlines: false, format: {} },
9002
9041
  yAxis: { show: true, title: text(data.yTitle), min: num2(data.yMin), max: num2(data.yMax), step: null, gridlines: true, format: {} },
9003
- legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _369 => _369.data, 'optionalAccess', _370 => _370.titled])), position: "top" },
9042
+ legend: { show: graph.nodes.some((n3) => _optionalChain([n3, 'access', _371 => _371.data, 'optionalAccess', _372 => _372.titled])), position: "top" },
9004
9043
  ...palette ? { palette: [...palette] } : {}
9005
9044
  });
9006
9045
  }
@@ -9010,7 +9049,7 @@ function radarChartSpec(graph, palette) {
9010
9049
  type: "radar",
9011
9050
  title: _nullishCoalesce(graph.title, () => ( "")),
9012
9051
  categories: Array.isArray(data.axes) ? data.axes.map(String) : [],
9013
- series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _371 => _371.data, 'optionalAccess', _372 => _372.values])) })),
9052
+ series: graph.nodes.map((n3) => ({ id: n3.id, name: n3.label, values: numbers(_optionalChain([n3, 'access', _373 => _373.data, 'optionalAccess', _374 => _374.values])) })),
9014
9053
  yAxis: { show: true, title: "", min: num2(data.min), max: num2(data.max), step: null, gridlines: true, format: {} },
9015
9054
  legend: { show: data.showLegend !== false, position: "top" },
9016
9055
  ...palette ? { palette: [...palette] } : {}
@@ -9161,7 +9200,7 @@ var sequenceScene = ({ graph, theme }) => {
9161
9200
  for (const group of graph.groups) {
9162
9201
  const box = geo.boxes.get(group.id);
9163
9202
  if (!box) continue;
9164
- const color = typeof _optionalChain([group, 'access', _373 => _373.data, 'optionalAccess', _374 => _374.color]) === "string" ? group.data.color : void 0;
9203
+ const color = typeof _optionalChain([group, 'access', _375 => _375.data, 'optionalAccess', _376 => _376.color]) === "string" ? group.data.color : void 0;
9165
9204
  marks.push(
9166
9205
  { kind: "rect", key: `box:${group.id}`, role: "box", target: group.id, ...box, fill: _nullishCoalesce(color, () => ( "none")), stroke: theme.groupStroke, strokeWidth: 1 },
9167
9206
  ...textLines(displayLines(group.label), {
@@ -9230,12 +9269,12 @@ var sequenceScene = ({ graph, theme }) => {
9230
9269
  );
9231
9270
  });
9232
9271
  const edges = new Map(graph.edges.map((e) => [e.id, e]));
9233
- const autonumber = !!_optionalChain([graph, 'access', _375 => _375.data, 'optionalAccess', _376 => _376.autonumber]);
9272
+ const autonumber = !!_optionalChain([graph, 'access', _377 => _377.data, 'optionalAccess', _378 => _378.autonumber]);
9234
9273
  geo.messages.forEach((row, index) => {
9235
9274
  const edge = edges.get(row.edgeId);
9236
9275
  if (!edge) return;
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));
9276
+ const x1 = _nullishCoalesce(_optionalChain([geo, 'access', _379 => _379.columns, 'access', _380 => _380.get, 'call', _381 => _381(edge.source), 'optionalAccess', _382 => _382.center]), () => ( 0));
9277
+ const x2 = _nullishCoalesce(_optionalChain([geo, 'access', _383 => _383.columns, 'access', _384 => _384.get, 'call', _385 => _385(edge.target), 'optionalAccess', _386 => _386.center]), () => ( 0));
9239
9278
  const y = row.y;
9240
9279
  const stroke = theme.edge;
9241
9280
  const strokeWidth = edge.pattern === "thick" ? 3.5 : 1.5;
@@ -9456,7 +9495,7 @@ var quadrantScene = ({ graph, theme }) => {
9456
9495
  }
9457
9496
  for (const q of geo.quadrants) {
9458
9497
  const group = groups.get(q.id);
9459
- if (!group || _optionalChain([group, 'access', _385 => _385.data, 'optionalAccess', _386 => _386.placeholder]) || !group.label) continue;
9498
+ if (!group || _optionalChain([group, 'access', _387 => _387.data, 'optionalAccess', _388 => _388.placeholder]) || !group.label) continue;
9460
9499
  marks.push({
9461
9500
  kind: "text",
9462
9501
  key: `quadrant-label:${q.id}`,
@@ -9903,7 +9942,7 @@ var mindmapScene = ({ graph, theme }) => {
9903
9942
  fill: colors.label
9904
9943
  });
9905
9944
  });
9906
- const icon = typeof _optionalChain([node, 'access', _387 => _387.data, 'optionalAccess', _388 => _388.icon]) === "string" ? node.data.icon : void 0;
9945
+ const icon = typeof _optionalChain([node, 'access', _389 => _389.data, 'optionalAccess', _390 => _390.icon]) === "string" ? node.data.icon : void 0;
9907
9946
  if (icon) {
9908
9947
  marks.push(
9909
9948
  { 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 },
@@ -9937,7 +9976,7 @@ var REL_GAP = 3;
9937
9976
  function colorsOf(type) {
9938
9977
  return _nullishCoalesce(C4_COLORS[`${type.external ? "external_" : ""}${type.base}`], () => ( C4_COLORS.container));
9939
9978
  }
9940
- var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _389 => _389.c4Style]), () => ( {}));
9979
+ var styleOf = (data) => _nullishCoalesce(_optionalChain([data, 'optionalAccess', _391 => _391.c4Style]), () => ( {}));
9941
9980
  function titleMark(graph, layout2, theme) {
9942
9981
  if (!graph.title) return null;
9943
9982
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -9958,11 +9997,11 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9958
9997
  const depth2 = (id) => {
9959
9998
  let d = 0;
9960
9999
  const seen = /* @__PURE__ */ new Set();
9961
- let p = _optionalChain([graph, 'access', _390 => _390.groups, 'access', _391 => _391.find, 'call', _392 => _392((g) => g.id === id), 'optionalAccess', _393 => _393.parentId]);
10000
+ let p = _optionalChain([graph, 'access', _392 => _392.groups, 'access', _393 => _393.find, 'call', _394 => _394((g) => g.id === id), 'optionalAccess', _395 => _395.parentId]);
9962
10001
  while (p && groupIds.has(p) && !seen.has(p)) {
9963
10002
  seen.add(p);
9964
10003
  d++;
9965
- p = _optionalChain([graph, 'access', _394 => _394.groups, 'access', _395 => _395.find, 'call', _396 => _396((g) => g.id === p), 'optionalAccess', _397 => _397.parentId]);
10004
+ p = _optionalChain([graph, 'access', _396 => _396.groups, 'access', _397 => _397.find, 'call', _398 => _398((g) => g.id === p), 'optionalAccess', _399 => _399.parentId]);
9966
10005
  }
9967
10006
  return d;
9968
10007
  };
@@ -9978,7 +10017,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
9978
10017
  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 });
9979
10018
  }
9980
10019
  const labels = [];
9981
- const dynamic = _optionalChain([graph, 'access', _398 => _398.data, 'optionalAccess', _399 => _399.c4Type]) === "C4Dynamic";
10020
+ const dynamic = _optionalChain([graph, 'access', _400 => _400.data, 'optionalAccess', _401 => _401.c4Type]) === "C4Dynamic";
9982
10021
  graph.edges.forEach((edge, index) => {
9983
10022
  const from = box(edge.source);
9984
10023
  const to = box(edge.target);
@@ -10006,7 +10045,7 @@ var c4Scene = ({ graph, layout: layout2, theme }) => {
10006
10045
  const top = geo.label.y + offsetY - 7;
10007
10046
  const textFill = style.textColor || theme.text;
10008
10047
  const label = `${dynamic ? `${index + 1}: ` : ""}${_nullishCoalesce(edge.label, () => ( ""))}`;
10009
- const tech = typeof _optionalChain([edge, 'access', _400 => _400.data, 'optionalAccess', _401 => _401.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
10048
+ const tech = typeof _optionalChain([edge, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.tech]) === "string" && edge.data.tech ? `[${edge.data.tech}]` : "";
10010
10049
  const gridWidth = Math.max(label ? estimateTextWidth2(label, REL_FONT) : 0, tech ? estimateTextWidth2(tech, REL_FONT) : 0);
10011
10050
  if (label)
10012
10051
  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 });
@@ -10282,8 +10321,8 @@ function iconMarks(key, target, icon, x, y, size2, theme) {
10282
10321
  );
10283
10322
  return marks;
10284
10323
  }
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;
10324
+ var isJunction = (n3) => n3.shape === "sm-circ" || !!_optionalChain([n3, 'access', _404 => _404.data, 'optionalAccess', _405 => _405.junction]);
10325
+ var iconOf = (data) => typeof _optionalChain([data, 'optionalAccess', _406 => _406.icon]) === "string" && data.icon ? data.icon : void 0;
10287
10326
  function titleMark2(graph, layout2, theme) {
10288
10327
  if (!graph.title) return null;
10289
10328
  const groupIds = new Set(graph.groups.map((g) => g.id));
@@ -10319,7 +10358,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10319
10358
  const icon = iconOf(group.data);
10320
10359
  marks.push({ kind: "rect", key: `group:${group.id}`, role: "group", target: group.id, ...b, fill: "none", stroke: theme.groupStroke, strokeWidth: 2, dash: "8" });
10321
10360
  if (icon) marks.push(...iconMarks(`group:${group.id}`, group.id, icon, b.x + 1, b.y + 1, A.groupIconSize, theme));
10322
- const label = _optionalChain([group, 'access', _405 => _405.data, 'optionalAccess', _406 => _406.untitled]) ? "" : group.label;
10361
+ const label = _optionalChain([group, 'access', _407 => _407.data, 'optionalAccess', _408 => _408.untitled]) ? "" : group.label;
10323
10362
  if (label)
10324
10363
  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 });
10325
10364
  }
@@ -10356,7 +10395,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10356
10395
  continue;
10357
10396
  }
10358
10397
  marks.push(...iconMarks(`service:${node.id}`, node.id, iconOf(node.data), b.x, b.y, b.width, theme));
10359
- if (_optionalChain([node, 'access', _407 => _407.data, 'optionalAccess', _408 => _408.untitled])) continue;
10398
+ if (_optionalChain([node, 'access', _409 => _409.data, 'optionalAccess', _410 => _410.untitled])) continue;
10360
10399
  _chunk3FSUJIXNcjs.serviceLabelLines.call(void 0, _nullishCoalesce(node.label, () => ( ""))).forEach(
10361
10400
  (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 })
10362
10401
  );
@@ -10371,7 +10410,7 @@ var architectureScene = ({ graph, layout: layout2, theme }) => {
10371
10410
  var M7 = _chunk3FSUJIXNcjs.GANTT_METRICS;
10372
10411
  var CRIT = 3;
10373
10412
  function statusOf(node) {
10374
- const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _409 => _409.data, 'optionalAccess', _410 => _410.tags])) ? node.data.tags.map(String) : [];
10413
+ const tags = Array.isArray(_optionalChain([node, 'optionalAccess', _411 => _411.data, 'optionalAccess', _412 => _412.tags])) ? node.data.tags.map(String) : [];
10375
10414
  const done2 = tags.includes("done");
10376
10415
  const active = tags.includes("active");
10377
10416
  const crit = tags.includes("crit");
@@ -10461,7 +10500,7 @@ var ganttScene = ({ graph, selection, theme }) => {
10461
10500
  const node = nodes.get(row.id);
10462
10501
  const status = statusOf(node);
10463
10502
  const colours2 = barColours(theme, status);
10464
- const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _411 => _411.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10503
+ const label = (_nullishCoalesce(_optionalChain([node, 'optionalAccess', _413 => _413.label]), () => ( row.id))).replace(/<br\s*\/?>/gi, " ");
10465
10504
  if (row.milestone) {
10466
10505
  const cx = row.x + row.width / 2;
10467
10506
  const cy = row.y + row.height / 2;
@@ -10566,10 +10605,10 @@ var timelineScene = ({ graph, theme }) => {
10566
10605
  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));
10567
10606
  marks.push(...arrowLine("axis", geo.axis.x1, geo.axis.y, geo.axis.x2, geo.axis.y, M8.axisWidth, false, line4));
10568
10607
  for (const e of geo.events) box(`event:${e.periodId}:${e.index}`, "event", e.periodId, e, e.colour, e.text, void 0, true);
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);
10608
+ for (const s of geo.sections.values()) box(`section:${s.id}`, "section", s.id, s, s.colour, _nullishCoalesce(_optionalChain([groups, 'access', _414 => _414.get, 'call', _415 => _415(s.id), 'optionalAccess', _416 => _416.label]), () => ( s.id)), s.empty ? 0.6 : void 0);
10570
10609
  for (const p of geo.periods.values()) {
10571
10610
  const node = nodes.get(p.id);
10572
- box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _415 => _415.label]), () => ( p.id)));
10611
+ box(`period:${p.id}`, "period", p.id, p, p.colour, _nullishCoalesce(_optionalChain([node, 'optionalAccess', _417 => _417.label]), () => ( p.id)));
10573
10612
  }
10574
10613
  if (graph.title)
10575
10614
  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 });
@@ -10623,7 +10662,7 @@ function markBounds(mark) {
10623
10662
  }
10624
10663
  case "path": {
10625
10664
  if (mark.box) return [mark.box.x, mark.box.y, mark.box.x + mark.box.width, mark.box.y + mark.box.height];
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)]), () => ( []));
10665
+ const nums = _nullishCoalesce(_optionalChain([mark, 'access', _418 => _418.d, 'access', _419 => _419.match, 'call', _420 => _420(/-?\d*\.?\d+(?:e-?\d+)?/gi), 'optionalAccess', _421 => _421.map, 'call', _422 => _422(Number)]), () => ( []));
10627
10666
  if (nums.length < 2) return null;
10628
10667
  let x0 = Infinity, y0 = Infinity, x1 = -Infinity, y1 = -Infinity;
10629
10668
  for (let i = 0; i + 1 < nums.length; i += 2) {
@@ -10732,7 +10771,7 @@ function diagramRenameOp(doc, target, label) {
10732
10771
  function diagramTargetLabel(doc, target) {
10733
10772
  const { graph } = doc;
10734
10773
  if (target === DIAGRAM_TITLE_TARGET) return _nullishCoalesce(graph.title, () => ( ""));
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));
10774
+ return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([graph, 'access', _423 => _423.groups, 'access', _424 => _424.find, 'call', _425 => _425((g) => g.id === target), 'optionalAccess', _426 => _426.label]), () => ( _optionalChain([graph, 'access', _427 => _427.edges, 'access', _428 => _428.find, 'call', _429 => _429((e) => e.id === target), 'optionalAccess', _430 => _430.label]))), () => ( _optionalChain([graph, 'access', _431 => _431.nodes, 'access', _432 => _432.find, 'call', _433 => _433((n3) => n3.id === target), 'optionalAccess', _434 => _434.label]))), () => ( null));
10736
10775
  }
10737
10776
 
10738
10777
  // src/canvas/mermaid/shapes.ts
@@ -10950,7 +10989,7 @@ function mermaidLabelLines(label) {
10950
10989
  return String(label).replace(/^"`?|`?"$/g, "").split(/<br\s*\/?>|\n/i).map((line4) => line4.replace(/<[^>]+>/g, ""));
10951
10990
  }
10952
10991
  function mermaidNodeMembers(data) {
10953
- const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _433 => _433.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _434 => _434.attributes]), () => ( []))];
10992
+ const list = [..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _435 => _435.members]), () => ( [])), ..._nullishCoalesce(_optionalChain([data, 'optionalAccess', _436 => _436.attributes]), () => ( []))];
10954
10993
  return list.map((m) => _nullishCoalesce(m.raw, () => ( "")));
10955
10994
  }
10956
10995
 
@@ -11023,10 +11062,10 @@ function mermaidToSvg(doc, options = {}) {
11023
11062
  }
11024
11063
  const depth2 = (id) => {
11025
11064
  let d = 0;
11026
- let cur = _optionalChain([graph, 'access', _435 => _435.groups, 'access', _436 => _436.find, 'call', _437 => _437((g) => g.id === id), 'optionalAccess', _438 => _438.parentId]);
11065
+ let cur = _optionalChain([graph, 'access', _437 => _437.groups, 'access', _438 => _438.find, 'call', _439 => _439((g) => g.id === id), 'optionalAccess', _440 => _440.parentId]);
11027
11066
  while (cur && d < 50) {
11028
11067
  d++;
11029
- cur = _optionalChain([graph, 'access', _439 => _439.groups, 'access', _440 => _440.find, 'call', _441 => _441((g) => g.id === cur), 'optionalAccess', _442 => _442.parentId]);
11068
+ cur = _optionalChain([graph, 'access', _441 => _441.groups, 'access', _442 => _442.find, 'call', _443 => _443((g) => g.id === cur), 'optionalAccess', _444 => _444.parentId]);
11030
11069
  }
11031
11070
  return d;
11032
11071
  };
@@ -11073,7 +11112,7 @@ function mermaidToSvg(doc, options = {}) {
11073
11112
  const fill = _nullishCoalesce(st.fill, () => ( theme.nodeFill));
11074
11113
  const stroke = _nullishCoalesce(st.stroke, () => ( theme.nodeStroke));
11075
11114
  const color = _nullishCoalesce(st.color, () => ( theme.text));
11076
- const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _443 => _443["stroke-width"], 'optionalAccess', _444 => _444.replace, 'call', _445 => _445("px", "")]), () => ( "1.25"));
11115
+ const strokeWidth = _nullishCoalesce(_optionalChain([st, 'access', _445 => _445["stroke-width"], 'optionalAccess', _446 => _446.replace, 'call', _447 => _447("px", "")]), () => ( "1.25"));
11077
11116
  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"';
11078
11117
  out.push(`<g data-node="${esc2(node.id)}" transform="translate(${n2(b.x)} ${n2(b.y)})">`);
11079
11118
  for (const path of mermaidShapePaths(node.shape, b.width, b.height)) out.push(`<path d="${path.d}" ${paint(path.paint)}/>`);
@@ -11106,7 +11145,7 @@ function rasterSize(width, height, scale = 2, maxSize = DIAGRAM_RASTER_MAX_SIZE)
11106
11145
  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.';
11107
11146
  async function rasterizeSvg(svg, options) {
11108
11147
  const doc = _nullishCoalesce(options.document, () => ( globalThis.document));
11109
- const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _446 => _446.defaultView, 'optionalAccess', _447 => _447.Image]), () => ( globalThis.Image));
11148
+ const ImageCtor = _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _448 => _448.defaultView, 'optionalAccess', _449 => _449.Image]), () => ( globalThis.Image));
11110
11149
  if (!doc || typeof doc.createElement !== "function" || !ImageCtor) throw new Error(NO_DOM);
11111
11150
  const size2 = rasterSize(options.width, options.height, options.scale, options.maxSize);
11112
11151
  const canvas = doc.createElement("canvas");
@@ -11141,7 +11180,7 @@ function diagramFileName(doc, extension2) {
11141
11180
  }
11142
11181
  async function downloadDiagramPng(doc, options = {}) {
11143
11182
  const drawn = mermaidToSvg(doc, options);
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)))));
11183
+ const background = _nullishCoalesce(options.background, () => ( (options.transparent ? "transparent" : _nullishCoalesce(_optionalChain([options, 'access', _450 => _450.theme, 'optionalAccess', _451 => _451.background]), () => ( DIAGRAM_SVG_LIGHT_THEME.background)))));
11145
11184
  const image = await rasterizeSvg(drawn.svg, { ...options, width: drawn.width, height: drawn.height, background });
11146
11185
  const filename = _nullishCoalesce(options.filename, () => ( diagramFileName(doc, "png")));
11147
11186
  const page = _nullishCoalesce(options.document, () => ( document));
@@ -11181,7 +11220,7 @@ function mermaidMovesFromCanvas(layout2, moved, all = moved, options = {}) {
11181
11220
  for (const n3 of all) {
11182
11221
  if (movedIds.has(n3.id)) continue;
11183
11222
  let parent = n3.parentId;
11184
- while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _450 => _450.get, 'call', _451 => _451(parent), 'optionalAccess', _452 => _452.parentId]);
11223
+ while (parent && !movedIds.has(parent)) parent = _optionalChain([byId, 'access', _452 => _452.get, 'call', _453 => _453(parent), 'optionalAccess', _454 => _454.parentId]);
11185
11224
  if (parent) moves.push({ id: n3.id, position: absolute(n3.id) });
11186
11225
  }
11187
11226
  if (!moves.length) return null;
@@ -11217,10 +11256,10 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11217
11256
  const seed = hashString(`${agentId}:${nodeId}:${zoneName}`);
11218
11257
  const offsetX = seed % 17 - 8;
11219
11258
  const offsetY = (seed >> 4) % 9 - 4;
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;
11259
+ const jitterX = _optionalChain([options, 'optionalAccess', _455 => _455.randomJitter]) ? (Math.random() - 0.5) * 24 : 0;
11260
+ const jitterY = _optionalChain([options, 'optionalAccess', _456 => _456.randomJitter]) ? (Math.random() - 0.5) * 16 : 0;
11261
+ const maxX = _optionalChain([options, 'optionalAccess', _457 => _457.width]) ? Math.max(24, options.width - 20) : 230;
11262
+ const maxY = _optionalChain([options, 'optionalAccess', _458 => _458.height]) ? Math.max(20, options.height - 15) : 145;
11224
11263
  return {
11225
11264
  x: Math.max(16, Math.min(maxX, Math.round(base.x + offsetX + jitterX))),
11226
11265
  y: Math.max(14, Math.min(maxY, Math.round(base.y + offsetY + jitterY))),
@@ -11229,8 +11268,8 @@ function getAgentCardAnchor(agentId = "agent", nodeId = "node", zone = 0, option
11229
11268
  }
11230
11269
  function calculateCurvedPath(fromX, fromY, toX, toY, progress, options) {
11231
11270
  const p = Math.max(0, Math.min(1, progress));
11232
- const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _457 => _457.arcHeight]), () => ( -30));
11233
- const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _458 => _458.wobble]), () => ( 0));
11271
+ const arcHeight = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _459 => _459.arcHeight]), () => ( -30));
11272
+ const wobble = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _460 => _460.wobble]), () => ( 0));
11234
11273
  const arc2 = Math.sin(p * Math.PI) * arcHeight;
11235
11274
  const sway = Math.sin(p * Math.PI * 2) * wobble;
11236
11275
  const currentX = fromX + (toX - fromX) * p + sway;
@@ -11257,7 +11296,7 @@ function getNaturalMovementTiming(distance, seedStr = "drag") {
11257
11296
  function getCursorTransitionDuration(distance, seedStr = "cursor", options) {
11258
11297
  const seed = hashString(seedStr);
11259
11298
  const jitter = seed % 60 - 30;
11260
- const variance = _optionalChain([options, 'optionalAccess', _459 => _459.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11299
+ const variance = _optionalChain([options, 'optionalAccess', _461 => _461.naturalVariance]) ? 0.85 + Math.random() * 0.3 : 1;
11261
11300
  let baseDuration = 560;
11262
11301
  if (distance < 60) {
11263
11302
  baseDuration = 340;
@@ -11294,10 +11333,10 @@ function formatAgentCursorName(nameOrUsername) {
11294
11333
  }
11295
11334
  function isAgentCursor(cursor) {
11296
11335
  if (cursor.isAgent) return true;
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()]) || "";
11336
+ if (_optionalChain([cursor, 'access', _462 => _462.userId, 'optionalAccess', _463 => _463.startsWith, 'call', _464 => _464("agent_")]) || _optionalChain([cursor, 'access', _465 => _465.userId, 'optionalAccess', _466 => _466.startsWith, 'call', _467 => _467("agent-")])) return true;
11337
+ if (_optionalChain([cursor, 'access', _468 => _468.id, 'optionalAccess', _469 => _469.startsWith, 'call', _470 => _470("agent-")]) || _optionalChain([cursor, 'access', _471 => _471.id, 'optionalAccess', _472 => _472.startsWith, 'call', _473 => _473("agent_")])) return true;
11338
+ if (_optionalChain([cursor, 'access', _474 => _474.username, 'optionalAccess', _475 => _475.startsWith, 'call', _476 => _476("@agent_")]) || _optionalChain([cursor, 'access', _477 => _477.username, 'optionalAccess', _478 => _478.startsWith, 'call', _479 => _479("agent_")])) return true;
11339
+ const roleLower = _optionalChain([cursor, 'access', _480 => _480.role, 'optionalAccess', _481 => _481.toLowerCase, 'call', _482 => _482()]) || "";
11301
11340
  if (roleLower.includes("agent") || roleLower.includes("specialist") || roleLower === "planner" || roleLower === "coordinator" || roleLower === "executor" || roleLower === "validator" || roleLower === "supervisor") {
11302
11341
  return true;
11303
11342
  }
@@ -11319,7 +11358,7 @@ function createCanvasPlaybackLocator(options) {
11319
11358
  };
11320
11359
  if (ref.kind === "node" || ref.kind === "item") return rectOf(ref.id);
11321
11360
  if (ref.kind === "edge") {
11322
- const edge = _optionalChain([options, 'access', _481 => _481.getEdges, 'optionalCall', _482 => _482(), 'access', _483 => _483.find, 'call', _484 => _484((e) => e.id === ref.id)]);
11361
+ const edge = _optionalChain([options, 'access', _483 => _483.getEdges, 'optionalCall', _484 => _484(), 'access', _485 => _485.find, 'call', _486 => _486((e) => e.id === ref.id)]);
11323
11362
  const a = edge && rectOf(edge.source);
11324
11363
  const b = edge && rectOf(edge.target);
11325
11364
  if (!a || !b) return null;
@@ -11354,8 +11393,8 @@ var CANVAS_CAPTURE_OVERLAY_SELECTORS = [
11354
11393
  ".svelte-flow__resize-control"
11355
11394
  ];
11356
11395
  var size = (node) => ({
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))
11396
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _487 => _487.measured, 'optionalAccess', _488 => _488.width]), () => ( node.width)), () => ( 0)),
11397
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _489 => _489.measured, 'optionalAccess', _490 => _490.height]), () => ( node.height)), () => ( 0))
11359
11398
  });
11360
11399
  function canvasNodeCaptureRect(node, nodes) {
11361
11400
  if (node.hidden) return null;
@@ -11430,7 +11469,7 @@ function createCanvasCaptureSurface(options) {
11430
11469
  vpEl.style.transform = `translate(${-request.rect.x * zoom}px, ${-request.rect.y * zoom}px) scale(${zoom})`;
11431
11470
  vpEl.style.transformOrigin = "0 0";
11432
11471
  for (let node = vpEl; node && node !== clone; node = node.parentElement) {
11433
- for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _489 => _489.parentElement, 'optionalAccess', _490 => _490.children]), () => ( [])))) {
11472
+ for (const sibling of Array.from(_nullishCoalesce(_optionalChain([node, 'access', _491 => _491.parentElement, 'optionalAccess', _492 => _492.children]), () => ( [])))) {
11434
11473
  if (sibling !== node) sibling.remove();
11435
11474
  }
11436
11475
  }
@@ -11458,7 +11497,7 @@ var CANVAS_EFFECT_PLACES = {
11458
11497
  transition: ["transition"]
11459
11498
  };
11460
11499
  function canvasNodeEffect(node) {
11461
- const shape = _optionalChain([node, 'access', _491 => _491.data, 'optionalAccess', _492 => _492.shape]);
11500
+ const shape = _optionalChain([node, 'access', _493 => _493.data, 'optionalAccess', _494 => _494.shape]);
11462
11501
  return _chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape) ? shape.effect : void 0;
11463
11502
  }
11464
11503
  function canvasEffectStatus(effect, provider) {
@@ -11488,7 +11527,7 @@ function createCanvasEffectsController(options) {
11488
11527
  const shapeNode = (id) => {
11489
11528
  const node = options.getNodes().find((n3) => n3.id === id);
11490
11529
  if (!node) throw new Error(`There is no node "${id}"; the nodes are ${options.getNodes().map((n3) => `"${n3.id}"`).slice(0, 20).join(", ") || "none"}.`);
11491
- const shape = _optionalChain([node, 'access', _493 => _493.data, 'optionalAccess', _494 => _494.shape]);
11530
+ const shape = _optionalChain([node, 'access', _495 => _495.data, 'optionalAccess', _496 => _496.shape]);
11492
11531
  if (!_chunkNM3G4VQTcjs.isShapeDescription.call(void 0, shape)) throw new Error(`Node "${id}" is not a shape; effects draw on shape nodes (data.shape).`);
11493
11532
  return { node, shape };
11494
11533
  };
@@ -11582,11 +11621,11 @@ function createCanvasEffectsController(options) {
11582
11621
  },
11583
11622
  /** The scenes, in order (empty without a Scenes store). */
11584
11623
  scenes() {
11585
- return _nullishCoalesce(_optionalChain([options, 'access', _495 => _495.scenes, 'optionalAccess', _496 => _496.getState, 'call', _497 => _497(), 'access', _498 => _498.scenes]), () => ( []));
11624
+ return _nullishCoalesce(_optionalChain([options, 'access', _497 => _497.scenes, 'optionalAccess', _498 => _498.getState, 'call', _499 => _499(), 'access', _500 => _500.scenes]), () => ( []));
11586
11625
  },
11587
11626
  /** The transition into a scene, if it has one. */
11588
11627
  sceneTransition(sceneId) {
11589
- return _optionalChain([options, 'access', _499 => _499.scenes, 'optionalAccess', _500 => _500.getScene, 'call', _501 => _501(sceneId), 'optionalAccess', _502 => _502.transition]);
11628
+ return _optionalChain([options, 'access', _501 => _501.scenes, 'optionalAccess', _502 => _502.getScene, 'call', _503 => _503(sceneId), 'optionalAccess', _504 => _504.transition]);
11590
11629
  },
11591
11630
  /**
11592
11631
  * Sets (or with `effect` null removes) the provider transition played when the canvas moves to
@@ -11647,7 +11686,7 @@ function runCanvasNodeEffect(options) {
11647
11686
  if (options.animate !== false && effect.playing !== false) cancel = clock.frame(tick);
11648
11687
  },
11649
11688
  (e) => {
11650
- if (!stopped) _optionalChain([options, 'access', _503 => _503.onError, 'optionalCall', _504 => _504(e)]);
11689
+ if (!stopped) _optionalChain([options, 'access', _505 => _505.onError, 'optionalCall', _506 => _506(e)]);
11651
11690
  }
11652
11691
  );
11653
11692
  };
@@ -11710,7 +11749,7 @@ async function transitionCanvasView(options) {
11710
11749
  overlay.setAttribute("data-capture", "overlay");
11711
11750
  overlay.setAttribute("data-canvas-transition", options.transition.effect);
11712
11751
  Object.assign(overlay.style, { position: "absolute", inset: "0", width: "100%", height: "100%", pointerEvents: "none", zIndex: "1000" });
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)]);
11752
+ _optionalChain([overlay, 'access', _507 => _507.getContext, 'call', _508 => _508("2d"), 'optionalAccess', _509 => _509.putImageData, 'call', _510 => _510(new ImageData(new Uint8ClampedArray(from.data), size2.width, size2.height), 0, 0)]);
11714
11753
  if (getComputedStyle(element).position === "static") element.style.position = "relative";
11715
11754
  element.appendChild(overlay);
11716
11755
  try {
@@ -11741,7 +11780,7 @@ function createCanvasEffectsToolProvider(controller, options = {}) {
11741
11780
  return ro ? typeof ro === "string" ? ro : "The canvas is read-only." : null;
11742
11781
  };
11743
11782
  const result = (nodeId, effect) => {
11744
- const now = _optionalChain([controller, 'access', _509 => _509.list, 'call', _510 => _510(nodeId), 'access', _511 => _511[0], 'optionalAccess', _512 => _512.effect]);
11783
+ const now = _optionalChain([controller, 'access', _511 => _511.list, 'call', _512 => _512(nodeId), 'access', _513 => _513[0], 'optionalAccess', _514 => _514.effect]);
11745
11784
  return { target: nodeId, effect: info(_nullishCoalesce(effect, () => ( now))), effects: now ? [info(now)] : [] };
11746
11785
  };
11747
11786
  const once = (instance) => {
@@ -11892,7 +11931,7 @@ function createCanvasEditorDocument(options) {
11892
11931
  options.setNodes(doc.nodes.map((n3) => ({ ...n3 })));
11893
11932
  options.setEdges(doc.edges.map((e) => ({ ...e })));
11894
11933
  if (scenes2) scenes2.load(_nullishCoalesce(doc.scenes, () => ( [])));
11895
- if (doc.viewport) _optionalChain([options, 'access', _513 => _513.setViewport, 'optionalCall', _514 => _514({ ...doc.viewport })]);
11934
+ if (doc.viewport) _optionalChain([options, 'access', _515 => _515.setViewport, 'optionalCall', _516 => _516({ ...doc.viewport })]);
11896
11935
  };
11897
11936
  const check = (document2) => {
11898
11937
  checkCanvasDocument(document2);
@@ -11937,7 +11976,7 @@ function createCanvasEditorDocument(options) {
11937
11976
  }
11938
11977
  function createCanvasGestureRecorder(options) {
11939
11978
  let before = null;
11940
- const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _515 => _515.getEdges, 'optionalCall', _516 => _516()]) });
11979
+ const take = () => ({ nodes: options.getNodes(), edges: _optionalChain([options, 'access', _517 => _517.getEdges, 'optionalCall', _518 => _518()]) });
11941
11980
  const key = (s) => canvasDocumentContentKey(s.nodes, _nullishCoalesce(s.edges, () => ( [])));
11942
11981
  const restore = (s) => {
11943
11982
  options.setNodes(s.nodes);
@@ -12070,8 +12109,8 @@ function createCanvasExplosionStateController(options = {}) {
12070
12109
  clearTimer();
12071
12110
  const previous = snapshot.activeId;
12072
12111
  set({ activeId: nodeId, collapsingId: null });
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)]);
12112
+ if (previous !== null) _optionalChain([options, 'access', _519 => _519.onCollapse, 'optionalCall', _520 => _520(previous)]);
12113
+ _optionalChain([options, 'access', _521 => _521.onExplode, 'optionalCall', _522 => _522(nodeId)]);
12075
12114
  return true;
12076
12115
  };
12077
12116
  const collapse = (nodeId) => {
@@ -12080,7 +12119,7 @@ function createCanvasExplosionStateController(options = {}) {
12080
12119
  if (active === null || nodeId !== void 0 && nodeId !== active) return false;
12081
12120
  clearTimer();
12082
12121
  set({ activeId: null, collapsingId: active });
12083
- _optionalChain([options, 'access', _521 => _521.onCollapse, 'optionalCall', _522 => _522(active)]);
12122
+ _optionalChain([options, 'access', _523 => _523.onCollapse, 'optionalCall', _524 => _524(active)]);
12084
12123
  if (duration === 0) finishCollapse();
12085
12124
  else timer = setTimeout(() => {
12086
12125
  timer = null;
@@ -12141,7 +12180,7 @@ function canvasExplosionToolTarget(state, options) {
12141
12180
  var READ = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12142
12181
  var WRITE_IDEMPOTENT = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12143
12182
  var labelOf = (node) => {
12144
- const label = _nullishCoalesce(_optionalChain([node, 'access', _523 => _523.data, 'optionalAccess', _524 => _524.label]), () => ( _optionalChain([node, 'access', _525 => _525.data, 'optionalAccess', _526 => _526.name])));
12183
+ const label = _nullishCoalesce(_optionalChain([node, 'access', _525 => _525.data, 'optionalAccess', _526 => _526.label]), () => ( _optionalChain([node, 'access', _527 => _527.data, 'optionalAccess', _528 => _528.name])));
12145
12184
  return typeof label === "string" && label !== "" ? label : void 0;
12146
12185
  };
12147
12186
  function createCanvasExplosionToolProvider(target, options = {}) {
@@ -12154,7 +12193,7 @@ function createCanvasExplosionToolProvider(target, options = {}) {
12154
12193
  if (ok === true) return null;
12155
12194
  return typeof ok === "string" && ok ? ok : `Node "${node.id}" has nothing to explode into.`;
12156
12195
  };
12157
- const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _527 => _527.collapsing, 'optionalCall', _528 => _528()]), () => ( []))] });
12196
+ const state = () => ({ exploded: [...target.exploded()], collapsing: [..._nullishCoalesce(_optionalChain([target, 'access', _529 => _529.collapsing, 'optionalCall', _530 => _530()]), () => ( []))] });
12158
12197
  const findNode = (id) => {
12159
12198
  const node = target.getNodes().find((n3) => n3.id === id);
12160
12199
  if (!node) throw new Error(`No node "${id}" on the canvas. Call list_explodable_nodes for node ids.`);
@@ -12273,8 +12312,8 @@ function createCanvasProposals(options) {
12273
12312
  const rectOf = (node) => ({
12274
12313
  x: node.position.x,
12275
12314
  y: node.position.y,
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))
12315
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _531 => _531.measured, 'optionalAccess', _532 => _532.width]), () => ( node.width)), () => ( size2.width)),
12316
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _533 => _533.measured, 'optionalAccess', _534 => _534.height]), () => ( node.height)), () => ( size2.height))
12278
12317
  });
12279
12318
  const missing = (proposal) => {
12280
12319
  const present = new Set(options.getNodes().map((n3) => n3.id));
@@ -12324,7 +12363,7 @@ function createCanvasProposals(options) {
12324
12363
  throw new Error(`nodes[${i}].position needs finite x and y.`);
12325
12364
  }
12326
12365
  if (!position) {
12327
- const view = _optionalChain([options, 'access', _533 => _533.visibleRect, 'optionalCall', _534 => _534()]);
12366
+ const view = _optionalChain([options, 'access', _535 => _535.visibleRect, 'optionalCall', _536 => _536()]);
12328
12367
  if (input2.nearNodeId) position = _chunkEL4PSKFTcjs.placeBeside.call(void 0, rects, nodeSize, toSide(input2.side), input2.nearNodeId);
12329
12368
  else if (view) position = _chunkEL4PSKFTcjs.placeInView.call(void 0, rects, nodeSize, view);
12330
12369
  else if (canvasNodes.length || nodes.length) {
@@ -12376,7 +12415,7 @@ function createCanvasProposals(options) {
12376
12415
  };
12377
12416
  const accept = (id) => {
12378
12417
  const proposal = find(id);
12379
- const reason = _optionalChain([options, 'access', _535 => _535.readOnly, 'optionalCall', _536 => _536()]);
12418
+ const reason = _optionalChain([options, 'access', _537 => _537.readOnly, 'optionalCall', _538 => _538()]);
12380
12419
  if (reason) throw new Error(reason);
12381
12420
  const gone = missing(proposal);
12382
12421
  if (gone.length) {
@@ -12528,7 +12567,7 @@ function createCanvasChangeFeed(options) {
12528
12567
  if (edited) pending = void 0;
12529
12568
  const change = {
12530
12569
  seq: ++seq,
12531
- origin: _optionalChain([commit, 'optionalAccess', _537 => _537.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _538 => _538.kind]) === "merge" ? commit.origin : "user",
12570
+ origin: _optionalChain([commit, 'optionalAccess', _539 => _539.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _540 => _540.kind]) === "merge" ? commit.origin : "user",
12532
12571
  ...commit ? { commit } : {},
12533
12572
  addedNodes,
12534
12573
  removedNodes,
@@ -12547,8 +12586,8 @@ function createCanvasChangeFeed(options) {
12547
12586
  const noteCommit = (event) => {
12548
12587
  pending = event;
12549
12588
  };
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(() => {
12589
+ const offHistory = _optionalChain([options, 'access', _541 => _541.history, 'optionalAccess', _542 => _542.onCommit, 'call', _543 => _543(noteCommit)]);
12590
+ const offCanvas = _optionalChain([options, 'access', _544 => _544.subscribe, 'optionalCall', _545 => _545(() => {
12552
12591
  check();
12553
12592
  })]);
12554
12593
  return {
@@ -12567,8 +12606,8 @@ function createCanvasChangeFeed(options) {
12567
12606
  },
12568
12607
  noteCommit,
12569
12608
  dispose: () => {
12570
- _optionalChain([offHistory, 'optionalCall', _544 => _544()]);
12571
- _optionalChain([offCanvas, 'optionalCall', _545 => _545()]);
12609
+ _optionalChain([offHistory, 'optionalCall', _546 => _546()]);
12610
+ _optionalChain([offCanvas, 'optionalCall', _547 => _547()]);
12572
12611
  listeners.clear();
12573
12612
  }
12574
12613
  };
@@ -12578,7 +12617,7 @@ function createCanvasChangeFeed(options) {
12578
12617
  var READ2 = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12579
12618
  var WRITE = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
12580
12619
  var labelOf2 = (node) => {
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])));
12620
+ const label = _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _548 => _548.data, 'optionalAccess', _549 => _549.label]), () => ( _optionalChain([node, 'access', _550 => _550.data, 'optionalAccess', _551 => _551.name]))), () => ( _optionalChain([node, 'access', _552 => _552.data, 'optionalAccess', _553 => _553.title])));
12582
12621
  return typeof label === "string" && label !== "" ? label : void 0;
12583
12622
  };
12584
12623
  var proposalIdArg = {
@@ -12659,7 +12698,7 @@ function createCanvasProposalToolProvider(proposals, options = {}) {
12659
12698
  },
12660
12699
  annotations: { title: "Propose nodes", ...WRITE },
12661
12700
  handler: (args, context) => {
12662
- const origin = _optionalChain([context, 'access', _552 => _552.actor, 'optionalAccess', _553 => _553.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12701
+ const origin = _optionalChain([context, 'access', _554 => _554.actor, 'optionalAccess', _555 => _555.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12663
12702
  const proposal = proposals.propose({ title: args.title, rationale: args.rationale, nodes: args.nodes, edges: args.edges, ...origin ? { origin } : {} });
12664
12703
  const { id: _id, missing: _missing, createdAt: _createdAt, ...rest } = describe(proposal);
12665
12704
  return { proposalId: proposal.id, ...rest };
@@ -12711,7 +12750,7 @@ function stickerCanvasNode(placement, id) {
12711
12750
  const { description, asset } = placement;
12712
12751
  const silhouette = _nullishCoalesce((asset.kind === "svg" ? asset.silhouette : void 0), () => ( description.silhouette));
12713
12752
  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.`);
12714
- const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _554 => _554.colours, 'optionalAccess', _555 => _555[0]]))), () => ( "#1f2937"));
12753
+ const fill = _nullishCoalesce(_nullishCoalesce(placement.colour, () => ( _optionalChain([description, 'access', _556 => _556.colours, 'optionalAccess', _557 => _557[0]]))), () => ( "#1f2937"));
12715
12754
  const shape = { kind: "path", d: silhouette, viewBox: [0, 0, description.width, description.height], fillRule: "evenodd", fill };
12716
12755
  const sticker = { ref: placement.ref, licence: description.licence, ...placement.variant === "dark" ? { variant: "dark" } : {} };
12717
12756
  return {
@@ -13287,4 +13326,4 @@ function createCanvasStickerHost(options) {
13287
13326
 
13288
13327
 
13289
13328
 
13290
- 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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkTOID45I2cjs.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 = _chunkE2Z4UARJcjs.checkGesture; exports.circleGesture = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.gestureEdgePoint; exports.gestureRandom = _chunkE2Z4UARJcjs.gestureRandom; exports.gestureSeed = _chunkE2Z4UARJcjs.gestureSeed; exports.gestureUnion = _chunkE2Z4UARJcjs.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 = _chunkTOID45I2cjs.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 = _chunkTOID45I2cjs.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 = _chunkTOID45I2cjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkTOID45I2cjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkE2Z4UARJcjs.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 = _chunkTOID45I2cjs.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 = _chunkTOID45I2cjs.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 = _chunkTOID45I2cjs.renderCanvasBrushPreview; exports.renderCanvasBrushSwatch = _chunkTOID45I2cjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkTOID45I2cjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasBrushSpec = _chunkTOID45I2cjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkTOID45I2cjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkTOID45I2cjs.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;
13329
+ 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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkJ2TNIZ55cjs.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 = _chunkE2Z4UARJcjs.checkGesture; exports.circleGesture = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.gestureEdgePoint; exports.gestureRandom = _chunkE2Z4UARJcjs.gestureRandom; exports.gestureSeed = _chunkE2Z4UARJcjs.gestureSeed; exports.gestureUnion = _chunkE2Z4UARJcjs.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 = _chunkJ2TNIZ55cjs.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 = _chunkJ2TNIZ55cjs.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 = _chunkJ2TNIZ55cjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkJ2TNIZ55cjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkE2Z4UARJcjs.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 = _chunkJ2TNIZ55cjs.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 = _chunkJ2TNIZ55cjs.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 = _chunkJ2TNIZ55cjs.renderCanvasBrushPreview; exports.renderCanvasBrushSwatch = _chunkJ2TNIZ55cjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkJ2TNIZ55cjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasBrushSpec = _chunkJ2TNIZ55cjs.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 = _chunkE2Z4UARJcjs.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 = _chunkE2Z4UARJcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkJ2TNIZ55cjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkJ2TNIZ55cjs.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;