@pixerate/editor 0.244.0 → 0.246.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 (77) hide show
  1. package/dist/agent/index.cjs +34 -32
  2. package/dist/agent/index.js +6 -4
  3. package/dist/animation-editor/index.cjs +61 -61
  4. package/dist/animation-editor/index.js +4 -4
  5. package/dist/{brushstrokeRender-4542T5HP.js → brushstrokeRender-AKUI3SEJ.js} +2 -2
  6. package/dist/{brushstrokeRender-QA5WVIDT.cjs → brushstrokeRender-ZDHMXJAE.cjs} +5 -5
  7. package/dist/canvas/changeFeed.d.cts +71 -0
  8. package/dist/canvas/changeFeed.d.ts +71 -0
  9. package/dist/canvas/index.cjs +490 -34
  10. package/dist/canvas/index.d.cts +3 -0
  11. package/dist/canvas/index.d.ts +3 -0
  12. package/dist/canvas/index.js +483 -27
  13. package/dist/canvas/proposal-tools.d.cts +21 -0
  14. package/dist/canvas/proposal-tools.d.ts +21 -0
  15. package/dist/canvas/proposals.d.cts +112 -0
  16. package/dist/canvas/proposals.d.ts +112 -0
  17. package/dist/chart/index.cjs +21 -21
  18. package/dist/chart/index.js +2 -2
  19. package/dist/{chunk-7YQNKSQ7.js → chunk-4PMCMWQS.js} +1 -1
  20. package/dist/{chunk-4I76OCVD.cjs → chunk-5DLCOQOQ.cjs} +16 -1
  21. package/dist/{chunk-HZ547SGQ.cjs → chunk-5MFDD7SP.cjs} +1 -1
  22. package/dist/{chunk-WGN7AUKB.js → chunk-7YW7T5TJ.js} +1 -1
  23. package/dist/{chunk-5RFENYO5.js → chunk-A23PSOBB.js} +1 -1
  24. package/dist/{chunk-X3ZINLIP.js → chunk-AU6MWQKZ.js} +1 -1
  25. package/dist/{chunk-AIS56JOO.js → chunk-BVRRIW7F.js} +1 -1
  26. package/dist/{chunk-BDIH4DYR.cjs → chunk-CEPKXLBS.cjs} +23 -23
  27. package/dist/{chunk-OSTKS3YN.js → chunk-DQWPMGH2.js} +1 -1
  28. package/dist/{chunk-IZL5V5RK.cjs → chunk-FK5LTDOO.cjs} +2 -2
  29. package/dist/{chunk-L5PB7EG3.js → chunk-LDPLEZ5T.js} +1 -1
  30. package/dist/{chunk-4EQY4TZJ.js → chunk-N6WUB3Y5.js} +1 -1
  31. package/dist/{chunk-RNSANXPT.js → chunk-NS62CQ2B.js} +112 -14
  32. package/dist/{chunk-UZU6DIZA.cjs → chunk-NUTMINJZ.cjs} +45 -45
  33. package/dist/{chunk-4T47Z4J3.cjs → chunk-Q2UYUWAZ.cjs} +10 -0
  34. package/dist/{chunk-7V7QMFTI.cjs → chunk-QOBCBGGI.cjs} +2 -2
  35. package/dist/{chunk-FQVVO5YA.js → chunk-SGPIVHJB.js} +1 -1
  36. package/dist/{chunk-QTMQ5TGA.js → chunk-UCYW4M66.js} +16 -1
  37. package/dist/{chunk-SD23XMVJ.cjs → chunk-UVPD55UZ.cjs} +35 -35
  38. package/dist/{chunk-TBJEMELS.js → chunk-VDAWA546.js} +10 -0
  39. package/dist/{chunk-W7GRGGBH.cjs → chunk-W7L4HUT2.cjs} +8 -8
  40. package/dist/{chunk-FJ2MSI43.cjs → chunk-WKPXOGZZ.cjs} +124 -26
  41. package/dist/{chunk-M6JORA5Z.cjs → chunk-XTWXBQD4.cjs} +86 -86
  42. package/dist/{chunk-D2SGV525.cjs → chunk-XZNU4DUX.cjs} +2 -2
  43. package/dist/diagram/index.cjs +2 -2
  44. package/dist/diagram/index.js +1 -1
  45. package/dist/effects/index.cjs +4 -4
  46. package/dist/effects/index.js +2 -2
  47. package/dist/extensions/index.cjs +5 -5
  48. package/dist/extensions/index.js +4 -4
  49. package/dist/gradient/index.cjs +2 -2
  50. package/dist/gradient/index.js +1 -1
  51. package/dist/history/HistoryManager.d.cts +20 -1
  52. package/dist/history/HistoryManager.d.ts +20 -1
  53. package/dist/history/index.cjs +8 -2
  54. package/dist/history/index.js +8 -2
  55. package/dist/history/types.d.cts +31 -0
  56. package/dist/history/types.d.ts +31 -0
  57. package/dist/image-editor/index.cjs +775 -775
  58. package/dist/image-editor/index.js +4 -4
  59. package/dist/index.cjs +16 -10
  60. package/dist/index.js +11 -5
  61. package/dist/paint-editor/index.cjs +136 -136
  62. package/dist/paint-editor/index.js +4 -4
  63. package/dist/parameters/index.cjs +2 -2
  64. package/dist/parameters/index.js +1 -1
  65. package/dist/tools/index.cjs +4 -2
  66. package/dist/tools/index.d.cts +1 -0
  67. package/dist/tools/index.d.ts +1 -0
  68. package/dist/tools/index.js +3 -1
  69. package/dist/tools/origin.d.cts +22 -0
  70. package/dist/tools/origin.d.ts +22 -0
  71. package/dist/vector/index.cjs +964 -964
  72. package/dist/vector/index.js +5 -5
  73. package/dist/video-editor/index.cjs +4 -4
  74. package/dist/video-editor/index.js +2 -2
  75. package/package.json +1 -1
  76. package/skills/pixerate-canvas/SKILL.md +25 -0
  77. package/skills/pixerate-paint-editor/references/light-paint.md +7 -1
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkHZ547SGQcjs = require('../chunk-HZ547SGQ.cjs');
13
+ var _chunk5MFDD7SPcjs = require('../chunk-5MFDD7SP.cjs');
14
14
 
15
15
 
16
16
 
@@ -3027,7 +3027,7 @@ function createCanvasArrangeController(options) {
3027
3027
  let resizeStart = null;
3028
3028
  let resizeIndex = null;
3029
3029
  let lastResized = null;
3030
- const selectedIds = (ids) => ids ? [...ids] : _nullishCoalesce(_optionalChain([options, 'access', _131 => _131.getSelectedIds, 'optionalCall', _132 => _132()]), () => ( options.getNodes().filter((n3) => n3.selected).map((n3) => n3.id)));
3030
+ const selectedIds2 = (ids) => ids ? [...ids] : _nullishCoalesce(_optionalChain([options, 'access', _131 => _131.getSelectedIds, 'optionalCall', _132 => _132()]), () => ( options.getNodes().filter((n3) => n3.selected).map((n3) => n3.id)));
3031
3031
  const setGuides = (next) => {
3032
3032
  if (next.length === 0 && guides.length === 0) return;
3033
3033
  guides = next;
@@ -3074,31 +3074,31 @@ function createCanvasArrangeController(options) {
3074
3074
  },
3075
3075
  apply,
3076
3076
  align(edge, ids, alignOptions = {}) {
3077
- return apply(`Align ${edge}`, _chunkEL4PSKFTcjs.alignNodes.call(void 0, options.getNodes(), selectedIds(ids), edge, { ...rect2(), ...alignOptions }));
3077
+ return apply(`Align ${edge}`, _chunkEL4PSKFTcjs.alignNodes.call(void 0, options.getNodes(), selectedIds2(ids), edge, { ...rect2(), ...alignOptions }));
3078
3078
  },
3079
3079
  distribute(axis, mode = "gaps", ids, distributeOptions = {}) {
3080
3080
  return apply(
3081
3081
  `Distribute ${axis}`,
3082
- _chunkEL4PSKFTcjs.distributeNodes.call(void 0, options.getNodes(), selectedIds(ids), axis, mode, { ...rect2(), ...distributeOptions })
3082
+ _chunkEL4PSKFTcjs.distributeNodes.call(void 0, options.getNodes(), selectedIds2(ids), axis, mode, { ...rect2(), ...distributeOptions })
3083
3083
  );
3084
3084
  },
3085
3085
  matchSize(dimension, ids, sizeOptions = {}) {
3086
3086
  return apply(
3087
3087
  "Make Same Size",
3088
- _chunkEL4PSKFTcjs.matchSize.call(void 0, options.getNodes(), selectedIds(ids), dimension, { ...rect2(), ...sizeOptions })
3088
+ _chunkEL4PSKFTcjs.matchSize.call(void 0, options.getNodes(), selectedIds2(ids), dimension, { ...rect2(), ...sizeOptions })
3089
3089
  );
3090
3090
  },
3091
3091
  reorder(operation, ids) {
3092
- return apply(operation, _chunkEL4PSKFTcjs.reorderNodes.call(void 0, options.getNodes(), selectedIds(ids), operation, rect2()));
3092
+ return apply(operation, _chunkEL4PSKFTcjs.reorderNodes.call(void 0, options.getNodes(), selectedIds2(ids), operation, rect2()));
3093
3093
  },
3094
3094
  bringForward: (ids) => controller.reorder("bringForward", ids),
3095
3095
  sendBackward: (ids) => controller.reorder("sendBackward", ids),
3096
3096
  bringToFront: (ids) => controller.reorder("bringToFront", ids),
3097
3097
  sendToBack: (ids) => controller.reorder("sendToBack", ids),
3098
- lock: (ids) => setLocked("Lock", selectedIds(ids), true),
3099
- unlock: (ids) => setLocked("Unlock", selectedIds(ids), false),
3098
+ lock: (ids) => setLocked("Lock", selectedIds2(ids), true),
3099
+ unlock: (ids) => setLocked("Unlock", selectedIds2(ids), false),
3100
3100
  toggleLock(ids) {
3101
- const list = selectedIds(ids);
3101
+ const list = selectedIds2(ids);
3102
3102
  const set = new Set(list);
3103
3103
  const anyUnlocked = options.getNodes().some((n3) => set.has(n3.id) && !_chunkEL4PSKFTcjs.isLocked.call(void 0, n3));
3104
3104
  return anyUnlocked ? controller.lock(list) : controller.unlock(list);
@@ -3112,7 +3112,7 @@ function createCanvasArrangeController(options) {
3112
3112
  */
3113
3113
  combineShapes(operation, ids, combineOptions = {}) {
3114
3114
  const before = options.getNodes();
3115
- const result = combineShapeNodes(before, selectedIds(ids), operation, { ...rect2(), ...combineOptions });
3115
+ const result = combineShapeNodes(before, selectedIds2(ids), operation, { ...rect2(), ...combineOptions });
3116
3116
  if (!result.ok) return result;
3117
3117
  const name = `${operation[0].toUpperCase()}${operation.slice(1)} Shapes`;
3118
3118
  const run = () => options.setNodes(applyShapeCombination(options.getNodes(), result));
@@ -3127,7 +3127,7 @@ function createCanvasArrangeController(options) {
3127
3127
  exclude: (ids, o) => controller.combineShapes("exclude", ids, o),
3128
3128
  divide: (ids, o) => controller.combineShapes("divide", ids, o),
3129
3129
  /** Whether the shape operations can run on `ids` (default: the selection). */
3130
- canCombineShapes: (ids) => canCombineShapeNodes(options.getNodes(), selectedIds(ids)).ok,
3130
+ canCombineShapes: (ids) => canCombineShapeNodes(options.getNodes(), selectedIds2(ids)).ok,
3131
3131
  /**
3132
3132
  * Offset Path: grows (`distance > 0`) or shrinks (`distance < 0`) every shape among
3133
3133
  * `ids` (default: the selection) by `distance` flow units, keeping curves, as one
@@ -3136,7 +3136,7 @@ function createCanvasArrangeController(options) {
3136
3136
  */
3137
3137
  offsetShapes(distance, ids, offsetOptions = {}) {
3138
3138
  const before = options.getNodes();
3139
- const result = offsetShapeNodes(before, selectedIds(ids), distance, { ...rect2(), ...offsetOptions });
3139
+ const result = offsetShapeNodes(before, selectedIds2(ids), distance, { ...rect2(), ...offsetOptions });
3140
3140
  if (!result.ok) return result;
3141
3141
  const run = () => options.setNodes(applyShapeReplacement(options.getNodes(), result));
3142
3142
  const undo = () => options.setNodes(revertShapeCombination(options.getNodes(), result, before));
@@ -3145,7 +3145,7 @@ function createCanvasArrangeController(options) {
3145
3145
  return result;
3146
3146
  },
3147
3147
  /** Whether `offsetShapes` can run on `ids` (default: the selection). */
3148
- canOffsetShapes: (ids) => canOffsetShapeNodes(options.getNodes(), selectedIds(ids)).ok,
3148
+ canOffsetShapes: (ids) => canOffsetShapeNodes(options.getNodes(), selectedIds2(ids)).ok,
3149
3149
  /**
3150
3150
  * Outline Stroke: converts the strokes of the shapes among `ids` (default: the
3151
3151
  * selection) to filled path shapes, as one undoable step. Refuses when a shape is
@@ -3153,7 +3153,7 @@ function createCanvasArrangeController(options) {
3153
3153
  */
3154
3154
  outlineStroke(ids, outlineOptions = {}) {
3155
3155
  const before = options.getNodes();
3156
- const result = outlineShapeNodeStrokes(before, selectedIds(ids), { ...rect2(), ...outlineOptions });
3156
+ const result = outlineShapeNodeStrokes(before, selectedIds2(ids), { ...rect2(), ...outlineOptions });
3157
3157
  if (!result.ok) return result;
3158
3158
  const run = () => options.setNodes(applyShapeReplacement(options.getNodes(), result));
3159
3159
  const undo = () => options.setNodes(revertShapeCombination(options.getNodes(), result, before));
@@ -3162,7 +3162,7 @@ function createCanvasArrangeController(options) {
3162
3162
  return result;
3163
3163
  },
3164
3164
  /** Whether `outlineStroke` can run on `ids` (default: the selection). */
3165
- canOutlineStroke: (ids) => canOutlineShapeNodeStrokes(options.getNodes(), selectedIds(ids)).ok,
3165
+ canOutlineStroke: (ids) => canOutlineShapeNodeStrokes(options.getNodes(), selectedIds2(ids)).ok,
3166
3166
  /**
3167
3167
  * Runs a shortcut action. Scene actions are not handled here (see the scenes store);
3168
3168
  * returns `false` for them and for unknown actions.
@@ -3217,7 +3217,7 @@ function createCanvasArrangeController(options) {
3217
3217
  },
3218
3218
  /** Caches the snap targets for a drag. Optional: `drag` builds them lazily. */
3219
3219
  beginDrag(ids) {
3220
- const list = selectedIds(ids);
3220
+ const list = selectedIds2(ids);
3221
3221
  dragKey = list.slice().sort().join("\0");
3222
3222
  dragIndex = createNodeGuideIndex(options.getNodes(), list, rect2());
3223
3223
  },
@@ -3228,7 +3228,7 @@ function createCanvasArrangeController(options) {
3228
3228
  */
3229
3229
  drag(ids) {
3230
3230
  if (options.snapping === false) return null;
3231
- const list = selectedIds(ids);
3231
+ const list = selectedIds2(ids);
3232
3232
  const key = list.slice().sort().join("\0");
3233
3233
  if (!dragIndex || key !== dragKey) controller.beginDrag(list);
3234
3234
  const result = snapNodeDrag(options.getNodes(), list, {
@@ -3549,10 +3549,10 @@ function measureToLine(a, orientation, at) {
3549
3549
  }
3550
3550
  return out;
3551
3551
  }
3552
- function measureSelection(nodes, selectedIds, hoveredId, options = {}) {
3552
+ function measureSelection(nodes, selectedIds2, hoveredId, options = {}) {
3553
3553
  const none = (selection2 = null) => ({ guides: [], target: null, selection: selection2 });
3554
3554
  const lookup = _chunkEL4PSKFTcjs.createNodeLookup.call(void 0, nodes);
3555
- const selected = [...new Set(selectedIds)].map((id) => lookup.get(id)).filter((n3) => !!n3 && n3.hidden !== true);
3555
+ const selected = [...new Set(selectedIds2)].map((id) => lookup.get(id)).filter((n3) => !!n3 && n3.hidden !== true);
3556
3556
  if (selected.length === 0) return none();
3557
3557
  const selection = _chunkEL4PSKFTcjs.boundsOf.call(void 0, selected.map((n3) => _chunkEL4PSKFTcjs.getNodeRect.call(void 0, n3, lookup, options)));
3558
3558
  if (!selection) return none();
@@ -5209,7 +5209,7 @@ var defaultLabel = (node) => typeof _optionalChain([node, 'access', _202 => _202
5209
5209
  function getTimelineRows(nodes, ids, options = {}) {
5210
5210
  const byId = new Map(nodes.map((n3) => [n3.id, n3]));
5211
5211
  const selection = _nullishCoalesce(options.selection, () => ( []));
5212
- const labelOf2 = _nullishCoalesce(options.labelOf, () => ( defaultLabel));
5212
+ const labelOf3 = _nullishCoalesce(options.labelOf, () => ( defaultLabel));
5213
5213
  const rows = [];
5214
5214
  for (const id of new Set(ids)) {
5215
5215
  const node = byId.get(id);
@@ -5220,7 +5220,7 @@ function getTimelineRows(nodes, ids, options = {}) {
5220
5220
  rows.push({
5221
5221
  id: `${id}:${property}`,
5222
5222
  nodeId: id,
5223
- nodeLabel: labelOf2(node),
5223
+ nodeLabel: labelOf3(node),
5224
5224
  property,
5225
5225
  label,
5226
5226
  enabled: track.enabled !== false,
@@ -5315,7 +5315,7 @@ function createCanvasAnimationController(options) {
5315
5315
  for (const listener of listeners) listener(state);
5316
5316
  };
5317
5317
  player.subscribe(notify);
5318
- const selectedIds = () => _nullishCoalesce(_optionalChain([options, 'access', _211 => _211.getSelectedIds, 'optionalCall', _212 => _212()]), () => ( options.getNodes().filter((n3) => n3.selected).map((n3) => n3.id)));
5318
+ const selectedIds2 = () => _nullishCoalesce(_optionalChain([options, 'access', _211 => _211.getSelectedIds, 'optionalCall', _212 => _212()]), () => ( options.getNodes().filter((n3) => n3.selected).map((n3) => n3.id)));
5319
5319
  const KEEP_FIELDS = ["selected", "dragging", "measured"];
5320
5320
  const replaceNodes = (nodes, replacements, animationOnly = false) => nodes.map((node) => {
5321
5321
  const replacement = replacements.get(node.id);
@@ -5432,7 +5432,7 @@ function createCanvasAnimationController(options) {
5432
5432
  controller.setRecording(!recording);
5433
5433
  },
5434
5434
  /** Seeks to the next keyframe (of the selected nodes, or all) after the playhead. */
5435
- nextKeyframe(ids = selectedIds()) {
5435
+ nextKeyframe(ids = selectedIds2()) {
5436
5436
  const list = [...ids];
5437
5437
  const times = getKeyframeTimes(options.getNodes(), list.length ? { ids: list } : {});
5438
5438
  const next = times.find((t) => t > player.currentTime + _chunkLJZRHVZVcjs.ANIMATION_TIME_EPSILON);
@@ -5440,7 +5440,7 @@ function createCanvasAnimationController(options) {
5440
5440
  player.seek(next);
5441
5441
  return next;
5442
5442
  },
5443
- previousKeyframe(ids = selectedIds()) {
5443
+ previousKeyframe(ids = selectedIds2()) {
5444
5444
  const list = [...ids];
5445
5445
  const times = getKeyframeTimes(options.getNodes(), list.length ? { ids: list } : {});
5446
5446
  const prev = [...times].reverse().find((t) => t < player.currentTime - _chunkLJZRHVZVcjs.ANIMATION_TIME_EPSILON);
@@ -5497,7 +5497,7 @@ function createCanvasAnimationController(options) {
5497
5497
  addKeyframe(ids, keys, time = player.currentTime) {
5498
5498
  let refs = [];
5499
5499
  commit("Add Keyframe", (nodes) => {
5500
- const result = addKeyframesAtTime(nodes, _nullishCoalesce(ids, () => ( selectedIds())), time, { ...propertyOptions(), ...keys ? { keys } : {} });
5500
+ const result = addKeyframesAtTime(nodes, _nullishCoalesce(ids, () => ( selectedIds2())), time, { ...propertyOptions(), ...keys ? { keys } : {} });
5501
5501
  refs = result.refs;
5502
5502
  return result.nodes;
5503
5503
  });
@@ -5584,7 +5584,7 @@ function createCanvasAnimationController(options) {
5584
5584
  return clipboard;
5585
5585
  },
5586
5586
  /** Pastes at the playhead onto the selected nodes (or the copied ones). */
5587
- pasteKeyframes(data = clipboard, nodeIds = selectedIds(), time = player.currentTime) {
5587
+ pasteKeyframes(data = clipboard, nodeIds = selectedIds2(), time = player.currentTime) {
5588
5588
  if (!data) return [];
5589
5589
  let refs = [];
5590
5590
  commit("Paste Keyframes", (nodes) => {
@@ -5676,7 +5676,7 @@ function createCanvasAnimationController(options) {
5676
5676
  },
5677
5677
  // ----- views & export ---------------------------------------------------------------
5678
5678
  /** Timeline rows for `ids` (default: selected nodes), including the drag preview. */
5679
- timelineRows(ids = selectedIds(), opts = {}) {
5679
+ timelineRows(ids = selectedIds2(), opts = {}) {
5680
5680
  return getTimelineRows(options.getNodes(), ids, { ...propertyOptions(), ...opts, selection, dragDelta: _nullishCoalesce(_optionalChain([drag, 'optionalAccess', _225 => _225.delta]), () => ( 0)) });
5681
5681
  },
5682
5682
  sampleFrames(opts = {}) {
@@ -7974,12 +7974,12 @@ function freehandBrushstroke(brush, points, samples, profileLength = 32) {
7974
7974
  if (!samples || samples.length !== points.length) return out;
7975
7975
  const finite2 = (v) => typeof v === "number" && Number.isFinite(v);
7976
7976
  if (samples.some((s) => finite2(s.pressure))) {
7977
- const pressure = _chunkHZ547SGQcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7977
+ const pressure = _chunk5MFDD7SPcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s.pressure) ? Math.min(1, Math.max(0, s.pressure)) : 1), profileLength);
7978
7978
  if (pressure.some((p) => p !== 1)) out.pressure = pressure;
7979
7979
  }
7980
7980
  for (const key of ["tiltX", "tiltY"]) {
7981
7981
  if (!samples.some((s) => finite2(s[key]) && s[key] !== 0)) continue;
7982
- out[key] = _chunkHZ547SGQcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7982
+ out[key] = _chunk5MFDD7SPcjs.profileAlongPolyline.call(void 0, points, samples.map((s) => finite2(s[key]) ? Math.min(90, Math.max(-90, s[key])) : 0), profileLength);
7983
7983
  }
7984
7984
  return out;
7985
7985
  }
@@ -8024,7 +8024,7 @@ function strokeToShapeNode(stroke, options = {}) {
8024
8024
  ...freehandBrushstroke(stroke.style.brush, localPoints, stroke.samples, options.profileLength),
8025
8025
  ...stroke.style.paint !== void 0 ? { paint: stroke.style.paint } : {},
8026
8026
  // New strokes carry a character seed (jitter and grain) and their size, if chosen.
8027
- seed: _chunkHZ547SGQcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8027
+ seed: _chunk5MFDD7SPcjs.brushstrokeSeed.call(void 0, _nullishCoalesce(options.id, () => ( stroke.id))),
8028
8028
  ...stroke.style.brushSize !== void 0 && stroke.style.brushSize > 0 ? { size: stroke.style.brushSize } : {}
8029
8029
  }
8030
8030
  } : {},
@@ -8199,8 +8199,8 @@ function createCanvasDrawController(options) {
8199
8199
  if (style.paint !== void 0 && style.brush === void 0) {
8200
8200
  throw new Error("paint (gradient paint) only colours brushed strokes: pass a brush too (see canvas.listBrushes), or use color for a plain stroke.");
8201
8201
  }
8202
- if (style.brush !== void 0) await _chunkHZ547SGQcjs.validateCanvasBrush.call(void 0, style.brush);
8203
- if (style.paint !== void 0) style.paint = (await _chunkHZ547SGQcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8202
+ if (style.brush !== void 0) await _chunk5MFDD7SPcjs.validateCanvasBrush.call(void 0, style.brush);
8203
+ if (style.paint !== void 0) style.paint = (await _chunk5MFDD7SPcjs.loadCanvasBrushstrokeRenderer.call(void 0, )).resolveCanvasPaint(style.paint);
8204
8204
  const id = _nullishCoalesce(_optionalChain([options, 'access', _312 => _312.generateNodeId, 'optionalCall', _313 => _313()]), () => ( `stroke-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`));
8205
8205
  const smoothed = input.streamline ? streamlinePoints(points, _nullishCoalesce(_optionalChain([options, 'access', _314 => _314.drawOptions, 'optionalAccess', _315 => _315.streamline]), () => ( 0.35))) : [...points];
8206
8206
  const node = strokeToShapeNode(
@@ -8286,7 +8286,7 @@ function createCanvasDrawController(options) {
8286
8286
  drawStroke,
8287
8287
  nodeBounds,
8288
8288
  /** The dry paint presets a stroke can be brushed with (loads the paint engine). */
8289
- listBrushes: _chunkHZ547SGQcjs.listCanvasBrushes
8289
+ listBrushes: _chunk5MFDD7SPcjs.listCanvasBrushes
8290
8290
  };
8291
8291
  }
8292
8292
  function computeDragBounds(start, current, modifiers = {}) {
@@ -12199,6 +12199,462 @@ function createCanvasExplosionToolProvider(target, options = {}) {
12199
12199
  };
12200
12200
  }
12201
12201
 
12202
+ // src/canvas/proposals.ts
12203
+ var CANVAS_PROPOSAL_CLASS = "pixerate-proposal";
12204
+ var toSide = (side) => side === "top" ? "above" : side === "bottom" ? "below" : _nullishCoalesce(side, () => ( "right"));
12205
+ var randomId = (kind) => `${kind}-${Math.random().toString(36).slice(2, 9)}`;
12206
+ var joinClass = (a, b) => typeof a === "string" && a ? `${a} ${b}` : b;
12207
+ function createCanvasProposals(options) {
12208
+ const size2 = _nullishCoalesce(options.defaultNodeSize, () => ( { width: 200, height: 60 }));
12209
+ const makeId = _nullishCoalesce(options.idGenerator, () => ( randomId));
12210
+ const now = _nullishCoalesce(options.now, () => ( Date.now));
12211
+ let state = { proposals: [] };
12212
+ const listeners = /* @__PURE__ */ new Set();
12213
+ const set = (proposals) => {
12214
+ state = { proposals };
12215
+ listeners.forEach((l) => l(state));
12216
+ };
12217
+ const find = (id) => {
12218
+ const proposal = state.proposals.find((p) => p.id === id);
12219
+ if (!proposal) {
12220
+ const ids = state.proposals.map((p) => p.id);
12221
+ throw new Error(`No proposal "${id}". ${ids.length ? `Pending proposals: ${ids.join(", ")}.` : "There are no pending proposals."} Call list_proposals for ids.`);
12222
+ }
12223
+ return proposal;
12224
+ };
12225
+ const rectOf = (node) => ({
12226
+ x: node.position.x,
12227
+ y: node.position.y,
12228
+ width: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _524 => _524.measured, 'optionalAccess', _525 => _525.width]), () => ( node.width)), () => ( size2.width)),
12229
+ height: _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _526 => _526.measured, 'optionalAccess', _527 => _527.height]), () => ( node.height)), () => ( size2.height))
12230
+ });
12231
+ const missing = (proposal) => {
12232
+ const present = new Set(options.getNodes().map((n3) => n3.id));
12233
+ return proposal.anchors.filter((id) => !present.has(id));
12234
+ };
12235
+ const propose = (input) => {
12236
+ const title = typeof input.title === "string" ? input.title.trim() : "";
12237
+ if (!title) throw new Error("A proposal needs a title: what it adds, in a few words.");
12238
+ const nodesIn = _nullishCoalesce(input.nodes, () => ( []));
12239
+ const edgesIn = _nullishCoalesce(input.edges, () => ( []));
12240
+ if (!nodesIn.length && !edgesIn.length) throw new Error("A proposal needs at least one node or edge.");
12241
+ const canvasNodes = options.getNodes();
12242
+ const canvasIds = new Set(canvasNodes.map((n3) => n3.id));
12243
+ const taken = /* @__PURE__ */ new Set([...canvasIds, ...options.getEdges().map((e) => e.id)]);
12244
+ for (const p of state.proposals) {
12245
+ p.nodes.forEach((n3) => taken.add(n3.id));
12246
+ p.edges.forEach((e) => taken.add(e.id));
12247
+ }
12248
+ const rects = {};
12249
+ for (const n3 of canvasNodes) rects[n3.id] = rectOf(n3);
12250
+ for (const p of state.proposals) for (const n3 of p.nodes) rects[n3.id] = rectOf(n3);
12251
+ const fresh = (kind, wanted) => {
12252
+ if (wanted !== void 0) {
12253
+ if (typeof wanted !== "string" || !wanted) throw new Error(`A ${kind} id must be a non-empty string.`);
12254
+ if (taken.has(wanted)) throw new Error(`Id "${wanted}" is already in use on the canvas or in a pending proposal. Pick another or leave it out.`);
12255
+ taken.add(wanted);
12256
+ return wanted;
12257
+ }
12258
+ let id = makeId(kind);
12259
+ while (taken.has(id)) id = makeId(kind);
12260
+ taken.add(id);
12261
+ return id;
12262
+ };
12263
+ const nodes = [];
12264
+ const edges = [];
12265
+ const anchors = /* @__PURE__ */ new Set();
12266
+ const ownIds = /* @__PURE__ */ new Set();
12267
+ const known = (id) => canvasIds.has(id) || ownIds.has(id);
12268
+ nodesIn.forEach((input2, i) => {
12269
+ if (input2.nearNodeId !== void 0 && !known(input2.nearNodeId)) {
12270
+ throw new Error(`nodes[${i}].nearNodeId "${input2.nearNodeId}" is not on the canvas or earlier in this proposal. Use an id from the canvas state.`);
12271
+ }
12272
+ const id = fresh("node", input2.id);
12273
+ const nodeSize = { width: _nullishCoalesce(input2.width, () => ( size2.width)), height: _nullishCoalesce(input2.height, () => ( size2.height)) };
12274
+ let position = input2.position;
12275
+ if (position && (!Number.isFinite(position.x) || !Number.isFinite(position.y))) {
12276
+ throw new Error(`nodes[${i}].position needs finite x and y.`);
12277
+ }
12278
+ if (!position) {
12279
+ const view = _optionalChain([options, 'access', _528 => _528.visibleRect, 'optionalCall', _529 => _529()]);
12280
+ if (input2.nearNodeId) position = _chunkEL4PSKFTcjs.placeBeside.call(void 0, rects, nodeSize, toSide(input2.side), input2.nearNodeId);
12281
+ else if (view) position = _chunkEL4PSKFTcjs.placeInView.call(void 0, rects, nodeSize, view);
12282
+ else if (canvasNodes.length || nodes.length) {
12283
+ const last = _nullishCoalesce(nodes[nodes.length - 1], () => ( canvasNodes[canvasNodes.length - 1]));
12284
+ position = _chunkEL4PSKFTcjs.placeBeside.call(void 0, rects, nodeSize, "right", last.id);
12285
+ } else position = { x: 100, y: 100 };
12286
+ }
12287
+ const type = _nullishCoalesce(input2.type, () => ( options.defaultNodeType));
12288
+ const node = {
12289
+ id,
12290
+ position,
12291
+ data: { ..._nullishCoalesce(input2.data, () => ( {})) },
12292
+ ...type !== void 0 ? { type } : {},
12293
+ ...input2.width !== void 0 ? { width: input2.width } : {},
12294
+ ...input2.height !== void 0 ? { height: input2.height } : {}
12295
+ };
12296
+ nodes.push(node);
12297
+ ownIds.add(id);
12298
+ rects[id] = { ...position, ...nodeSize };
12299
+ if (input2.nearNodeId) {
12300
+ if (canvasIds.has(input2.nearNodeId)) anchors.add(input2.nearNodeId);
12301
+ edges.push({ id: fresh("edge"), source: input2.nearNodeId, target: id });
12302
+ }
12303
+ });
12304
+ edgesIn.forEach((input2, i) => {
12305
+ for (const end of ["source", "target"]) {
12306
+ if (typeof input2[end] !== "string" || !known(input2[end])) {
12307
+ throw new Error(`edges[${i}].${end} "${String(input2[end])}" is not on the canvas or in this proposal.`);
12308
+ }
12309
+ }
12310
+ if (input2.source === input2.target) throw new Error(`edges[${i}] connects "${input2.source}" to itself.`);
12311
+ const id = fresh("edge", input2.id);
12312
+ edges.push({ id, source: input2.source, target: input2.target, ...input2.label ? { label: input2.label } : {} });
12313
+ for (const end of [input2.source, input2.target]) if (canvasIds.has(end)) anchors.add(end);
12314
+ });
12315
+ const proposal = {
12316
+ id: makeId("proposal"),
12317
+ title,
12318
+ ...input.rationale ? { rationale: input.rationale } : {},
12319
+ origin: _nullishCoalesce(_nullishCoalesce(input.origin, () => ( options.origin)), () => ( "agent:anonymous")),
12320
+ createdAt: now(),
12321
+ nodes,
12322
+ edges,
12323
+ anchors: [...anchors]
12324
+ };
12325
+ while (state.proposals.some((p) => p.id === proposal.id)) proposal.id = makeId("proposal");
12326
+ set([...state.proposals, proposal]);
12327
+ return proposal;
12328
+ };
12329
+ const accept = (id) => {
12330
+ const proposal = find(id);
12331
+ const reason = _optionalChain([options, 'access', _530 => _530.readOnly, 'optionalCall', _531 => _531()]);
12332
+ if (reason) throw new Error(reason);
12333
+ const gone = missing(proposal);
12334
+ if (gone.length) {
12335
+ throw new Error(`Proposal "${id}" connects to ${gone.map((g) => `"${g}"`).join(", ")}, which ${gone.length > 1 ? "are" : "is"} no longer on the canvas. Reject it and propose again.`);
12336
+ }
12337
+ const nodeIds = proposal.nodes.map((n3) => n3.id);
12338
+ const edgeIds = proposal.edges.map((e) => e.id);
12339
+ const clash = _nullishCoalesce(options.getNodes().find((n3) => nodeIds.includes(n3.id)), () => ( options.getEdges().find((e) => edgeIds.includes(e.id))));
12340
+ if (clash) throw new Error(`Id "${clash.id}" was taken on the canvas after proposal "${id}" was made. Reject it and propose again.`);
12341
+ const nodeSet = new Set(nodeIds);
12342
+ const edgeSet = new Set(edgeIds);
12343
+ const add = () => {
12344
+ options.setNodes([...options.getNodes().filter((n3) => !nodeSet.has(n3.id)), ...proposal.nodes.map((n3) => ({ ...n3 }))]);
12345
+ options.setEdges([...options.getEdges().filter((e) => !edgeSet.has(e.id)), ...proposal.edges.map((e) => ({ ...e }))]);
12346
+ };
12347
+ const remove = () => {
12348
+ options.setNodes(options.getNodes().filter((n3) => !nodeSet.has(n3.id)));
12349
+ options.setEdges(options.getEdges().filter((e) => !edgeSet.has(e.id)));
12350
+ };
12351
+ set(state.proposals.filter((p) => p.id !== id));
12352
+ if (options.history) options.history.execute({ name: proposal.title, origin: proposal.origin, execute: add, undo: remove });
12353
+ else add();
12354
+ return { proposalId: id, nodeIds, edgeIds, historyLabel: proposal.title };
12355
+ };
12356
+ const reject = (id) => {
12357
+ const proposal = find(id);
12358
+ set(state.proposals.filter((p) => p.id !== id));
12359
+ return proposal;
12360
+ };
12361
+ const clear = (origin) => {
12362
+ const dropped = state.proposals.filter((p) => origin === void 0 || p.origin === origin).map((p) => p.id);
12363
+ if (dropped.length) set(state.proposals.filter((p) => !dropped.includes(p.id)));
12364
+ return dropped;
12365
+ };
12366
+ const withGhosts = (nodes, edges) => {
12367
+ if (!state.proposals.length) return { nodes: [...nodes], edges: [...edges] };
12368
+ const present = new Set(nodes.map((n3) => n3.id));
12369
+ const ghostNodes = [];
12370
+ const ghostEdges = [];
12371
+ for (const p of state.proposals) {
12372
+ const meta = { id: p.id, title: p.title };
12373
+ for (const n3 of p.nodes) {
12374
+ if (present.has(n3.id)) continue;
12375
+ present.add(n3.id);
12376
+ ghostNodes.push({
12377
+ ...n3,
12378
+ // Flow libraries hide a node until it is measured, and only nodes in the host's state get
12379
+ // measured: give the ghost the size it was placed with.
12380
+ measured: _nullishCoalesce(n3.measured, () => ( { width: _nullishCoalesce(n3.width, () => ( size2.width)), height: _nullishCoalesce(n3.height, () => ( size2.height)) })),
12381
+ draggable: false,
12382
+ selectable: false,
12383
+ connectable: false,
12384
+ deletable: false,
12385
+ className: joinClass(n3.className, CANVAS_PROPOSAL_CLASS),
12386
+ data: { ...n3.data, proposal: meta }
12387
+ });
12388
+ }
12389
+ }
12390
+ for (const p of state.proposals) {
12391
+ for (const e of p.edges) {
12392
+ if (!present.has(e.source) || !present.has(e.target)) continue;
12393
+ ghostEdges.push({ ...e, selectable: false, deletable: false, animated: true, className: joinClass(e.className, CANVAS_PROPOSAL_CLASS) });
12394
+ }
12395
+ }
12396
+ return { nodes: [...nodes, ...ghostNodes], edges: [...edges, ...ghostEdges] };
12397
+ };
12398
+ return {
12399
+ getState: () => state,
12400
+ subscribe: (listener) => {
12401
+ listeners.add(listener);
12402
+ return () => {
12403
+ listeners.delete(listener);
12404
+ };
12405
+ },
12406
+ propose,
12407
+ accept,
12408
+ reject,
12409
+ clear,
12410
+ get: (id) => state.proposals.find((p) => p.id === id),
12411
+ missing: (id) => missing(find(id)),
12412
+ withGhosts
12413
+ };
12414
+ }
12415
+
12416
+ // src/canvas/changeFeed.ts
12417
+ var RUNTIME_NODE_KEYS2 = /* @__PURE__ */ new Set(["selected", "dragging", "measured", "resizing"]);
12418
+ var RUNTIME_EDGE_KEYS2 = /* @__PURE__ */ new Set(["selected"]);
12419
+ var selectedIds = (nodes) => nodes.filter((n3) => n3.selected).map((n3) => n3.id);
12420
+ function diffFields(before, after, ignore) {
12421
+ if (before === after) return [];
12422
+ const fields = [];
12423
+ for (const key of /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)])) {
12424
+ if (ignore.has(key)) continue;
12425
+ const a = before[key];
12426
+ const b = after[key];
12427
+ if (a === b) continue;
12428
+ if (a && b && typeof a === "object" && typeof b === "object" && JSON.stringify(a) === JSON.stringify(b)) continue;
12429
+ fields.push(key);
12430
+ }
12431
+ return fields;
12432
+ }
12433
+ function createCanvasChangeFeed(options) {
12434
+ const now = _nullishCoalesce(options.now, () => ( Date.now));
12435
+ const nodeIgnore = /* @__PURE__ */ new Set([...RUNTIME_NODE_KEYS2, ..._nullishCoalesce(options.ignoreNodeKeys, () => ( []))]);
12436
+ const listeners = /* @__PURE__ */ new Set();
12437
+ let nodes = options.getNodes();
12438
+ let edges = options.getEdges();
12439
+ let seq = 0;
12440
+ let pending;
12441
+ const check = () => {
12442
+ const nextNodes = options.getNodes();
12443
+ const nextEdges = options.getEdges();
12444
+ if (nextNodes === nodes && nextEdges === edges) return null;
12445
+ const beforeNodes = new Map(nodes.map((n3) => [n3.id, n3]));
12446
+ const afterNodes = new Map(nextNodes.map((n3) => [n3.id, n3]));
12447
+ const beforeEdges = new Map(edges.map((e) => [e.id, e]));
12448
+ const afterEdges = new Map(nextEdges.map((e) => [e.id, e]));
12449
+ const addedNodes = nextNodes.filter((n3) => !beforeNodes.has(n3.id));
12450
+ const removedNodes = nodes.filter((n3) => !afterNodes.has(n3.id));
12451
+ const changedNodes = [];
12452
+ for (const after of nextNodes) {
12453
+ const before = beforeNodes.get(after.id);
12454
+ if (!before) continue;
12455
+ const fields = diffFields(before, after, nodeIgnore);
12456
+ if (fields.length) changedNodes.push({ before, after, fields });
12457
+ }
12458
+ const addedEdges = nextEdges.filter((e) => !beforeEdges.has(e.id));
12459
+ const removedEdges = edges.filter((e) => !afterEdges.has(e.id));
12460
+ const changedEdges = [];
12461
+ for (const after of nextEdges) {
12462
+ const before = beforeEdges.get(after.id);
12463
+ if (!before) continue;
12464
+ const fields = diffFields(before, after, RUNTIME_EDGE_KEYS2);
12465
+ if (fields.length) changedEdges.push({ before, after, fields });
12466
+ }
12467
+ const selBefore = selectedIds(nodes);
12468
+ const selAfter = selectedIds(nextNodes);
12469
+ const selectionChanged = selBefore.length !== selAfter.length || selBefore.some((id, i) => id !== selAfter[i]);
12470
+ nodes = nextNodes;
12471
+ edges = nextEdges;
12472
+ const edited = addedNodes.length + removedNodes.length + changedNodes.length + addedEdges.length + removedEdges.length + changedEdges.length > 0;
12473
+ if (!edited && !selectionChanged) return null;
12474
+ const commit = edited ? pending : void 0;
12475
+ if (edited) pending = void 0;
12476
+ const change = {
12477
+ seq: ++seq,
12478
+ origin: _optionalChain([commit, 'optionalAccess', _532 => _532.kind]) === "execute" || _optionalChain([commit, 'optionalAccess', _533 => _533.kind]) === "merge" ? commit.origin : "user",
12479
+ ...commit ? { commit } : {},
12480
+ addedNodes,
12481
+ removedNodes,
12482
+ changedNodes,
12483
+ addedEdges,
12484
+ removedEdges,
12485
+ changedEdges,
12486
+ ...selectionChanged ? { selection: { before: selBefore, after: selAfter } } : {},
12487
+ inGesture: nextNodes.some((n3) => n3.dragging || n3.resizing),
12488
+ at: now()
12489
+ };
12490
+ listeners.forEach((l) => l(change));
12491
+ return change;
12492
+ };
12493
+ const noteCommit = (event) => {
12494
+ pending = event;
12495
+ };
12496
+ const offHistory = _optionalChain([options, 'access', _534 => _534.history, 'optionalAccess', _535 => _535.onCommit, 'call', _536 => _536(noteCommit)]);
12497
+ const offCanvas = _optionalChain([options, 'access', _537 => _537.subscribe, 'optionalCall', _538 => _538(() => {
12498
+ check();
12499
+ })]);
12500
+ return {
12501
+ check,
12502
+ subscribe: (listener) => {
12503
+ listeners.add(listener);
12504
+ return () => {
12505
+ listeners.delete(listener);
12506
+ };
12507
+ },
12508
+ reset: () => {
12509
+ nodes = options.getNodes();
12510
+ edges = options.getEdges();
12511
+ pending = void 0;
12512
+ },
12513
+ noteCommit,
12514
+ dispose: () => {
12515
+ _optionalChain([offHistory, 'optionalCall', _539 => _539()]);
12516
+ _optionalChain([offCanvas, 'optionalCall', _540 => _540()]);
12517
+ listeners.clear();
12518
+ }
12519
+ };
12520
+ }
12521
+
12522
+ // src/canvas/proposal-tools.ts
12523
+ var READ2 = { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
12524
+ var WRITE = { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
12525
+ var labelOf2 = (node) => {
12526
+ const label = _nullishCoalesce(_nullishCoalesce(_optionalChain([node, 'access', _541 => _541.data, 'optionalAccess', _542 => _542.label]), () => ( _optionalChain([node, 'access', _543 => _543.data, 'optionalAccess', _544 => _544.name]))), () => ( _optionalChain([node, 'access', _545 => _545.data, 'optionalAccess', _546 => _546.title])));
12527
+ return typeof label === "string" && label !== "" ? label : void 0;
12528
+ };
12529
+ var proposalIdArg = {
12530
+ type: "object",
12531
+ properties: {
12532
+ proposalId: { type: "string", minLength: 1, description: "Id of a pending proposal, from propose_nodes or list_proposals." }
12533
+ },
12534
+ required: ["proposalId"],
12535
+ additionalProperties: false
12536
+ };
12537
+ function createCanvasProposalToolProvider(proposals, options = {}) {
12538
+ const readOnlyReason = () => {
12539
+ const ro = typeof options.readOnly === "function" ? options.readOnly() : options.readOnly;
12540
+ return ro ? typeof ro === "string" ? ro : "The canvas is read-only: proposals can be made and rejected but not accepted." : null;
12541
+ };
12542
+ const describe = (p) => ({
12543
+ id: p.id,
12544
+ title: p.title,
12545
+ ...p.rationale ? { rationale: p.rationale } : {},
12546
+ origin: p.origin,
12547
+ nodes: p.nodes.map((n3) => ({ id: n3.id, ...labelOf2(n3) ? { label: labelOf2(n3) } : {}, position: n3.position })),
12548
+ edges: p.edges.map((e) => ({ id: e.id, source: e.source, target: e.target })),
12549
+ anchors: p.anchors,
12550
+ missing: proposals.missing(p.id),
12551
+ createdAt: new Date(p.createdAt).toISOString()
12552
+ });
12553
+ const proposeTool = {
12554
+ name: "propose_nodes",
12555
+ title: "Propose nodes",
12556
+ description: "Suggests nodes and edges to add to the canvas without adding them: they appear as ghosts that the user accepts or dismisses, so use it for contributions the user did not ask for. A node with nearNodeId is placed beside that node and connected from it; others go in free space. Returns the proposal id, the planned node ids and positions, the edge ids and the canvas nodes it builds on (anchors). Follow with accept_proposal only when the user asked for it; otherwise leave the choice to them.",
12557
+ inputSchema: {
12558
+ type: "object",
12559
+ properties: {
12560
+ title: { type: "string", minLength: 1, description: 'What the suggestion adds, in a few words, e.g. "Caption for the hero image". Becomes the undo step name when accepted.' },
12561
+ rationale: { type: "string", description: "Why it fits what the user is doing, in one sentence. Shown to the user beside the ghost." },
12562
+ nodes: {
12563
+ type: "array",
12564
+ description: "Nodes to suggest, in order; a later node may sit beside an earlier one. Default none.",
12565
+ items: {
12566
+ type: "object",
12567
+ properties: {
12568
+ id: { type: "string", description: "Id for the new node (default generated). Must not be in use." },
12569
+ type: { type: "string", description: "Node type as the canvas renders it (default the canvas default)." },
12570
+ data: { type: "object", description: 'Node data, e.g. { "label": "Caption" }. Default {}.' },
12571
+ position: {
12572
+ type: "object",
12573
+ description: "Top-left corner in canvas coordinates (pixels). Default: placed beside nearNodeId or in free space in view.",
12574
+ properties: { x: { type: "number", description: "Canvas x in pixels." }, y: { type: "number", description: "Canvas y in pixels." } },
12575
+ required: ["x", "y"],
12576
+ additionalProperties: false
12577
+ },
12578
+ width: { type: "number", exclusiveMinimum: 0, description: "Width in pixels, for placement (default 200)." },
12579
+ height: { type: "number", exclusiveMinimum: 0, description: "Height in pixels, for placement (default 60)." },
12580
+ nearNodeId: { type: "string", description: "Id of a canvas node, or an earlier node of this proposal, to place it beside and connect from." },
12581
+ side: { type: "string", enum: ["right", "below", "left", "above", "top", "bottom"], description: "Side of nearNodeId to place it on (default right)." }
12582
+ },
12583
+ additionalProperties: false
12584
+ }
12585
+ },
12586
+ edges: {
12587
+ type: "array",
12588
+ description: "Extra edges, between nodes of this proposal or canvas nodes. Default none.",
12589
+ items: {
12590
+ type: "object",
12591
+ properties: {
12592
+ id: { type: "string", description: "Id for the edge (default generated)." },
12593
+ source: { type: "string", description: "Id of the source node (canvas or this proposal)." },
12594
+ target: { type: "string", description: "Id of the target node (canvas or this proposal)." },
12595
+ label: { type: "string", description: "Edge label. Default none." }
12596
+ },
12597
+ required: ["source", "target"],
12598
+ additionalProperties: false
12599
+ }
12600
+ }
12601
+ },
12602
+ required: ["title"],
12603
+ additionalProperties: false
12604
+ },
12605
+ annotations: { title: "Propose nodes", ...WRITE },
12606
+ handler: (args, context) => {
12607
+ const origin = _optionalChain([context, 'access', _547 => _547.actor, 'optionalAccess', _548 => _548.id]) ? `agent:${context.actor.id}` : options.fallbackOrigin;
12608
+ const proposal = proposals.propose({ title: args.title, rationale: args.rationale, nodes: args.nodes, edges: args.edges, ...origin ? { origin } : {} });
12609
+ const { id: _id, missing: _missing, createdAt: _createdAt, ...rest } = describe(proposal);
12610
+ return { proposalId: proposal.id, ...rest };
12611
+ }
12612
+ };
12613
+ const listTool = {
12614
+ name: "list_proposals",
12615
+ title: "List proposals",
12616
+ description: "Lists the pending proposals (suggested nodes and edges not yet on the canvas): id, title, rationale, who proposed it, its nodes and edges, the canvas nodes it builds on, any of those since removed (missing: it can no longer be accepted), and whether accepting is allowed. Call before accept_proposal or reject_proposal.",
12617
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
12618
+ annotations: { title: "List proposals", ...READ2 },
12619
+ handler: () => ({ proposals: proposals.getState().proposals.map(describe), readOnly: readOnlyReason() })
12620
+ };
12621
+ const acceptTool = {
12622
+ name: "accept_proposal",
12623
+ title: "Accept a proposal",
12624
+ description: "Adds a pending proposal to the canvas as one undo step, recorded as made by whoever proposed it, and drops it from the pending list. Refuses, changing nothing, when the canvas is read-only or a node the proposal builds on was removed. Returns the added node and edge ids and the undo step name.",
12625
+ inputSchema: proposalIdArg,
12626
+ annotations: { title: "Accept a proposal", ...WRITE },
12627
+ handler: (args) => {
12628
+ const reason = readOnlyReason();
12629
+ if (reason) throw new Error(reason);
12630
+ return proposals.accept(args.proposalId);
12631
+ }
12632
+ };
12633
+ const rejectTool = {
12634
+ name: "reject_proposal",
12635
+ title: "Reject a proposal",
12636
+ description: "Dismisses a pending proposal: its ghosts disappear and the canvas and its history are unchanged. Use it to withdraw a suggestion that no longer fits. Returns the dismissed proposal id and title.",
12637
+ inputSchema: proposalIdArg,
12638
+ annotations: { title: "Reject a proposal", ...WRITE },
12639
+ handler: (args) => {
12640
+ const proposal = proposals.reject(args.proposalId);
12641
+ return { proposalId: proposal.id, title: proposal.title, rejected: true };
12642
+ }
12643
+ };
12644
+ return {
12645
+ id: _nullishCoalesce(options.id, () => ( "canvas-proposals")),
12646
+ ...options.namespace !== void 0 ? { namespace: options.namespace } : {},
12647
+ title: "Canvas proposals",
12648
+ description: "Suggest canvas additions as ghosts the user accepts or dismisses, and accept or reject pending suggestions.",
12649
+ skill: "pixerate-canvas",
12650
+ tools: [proposeTool, listTool, acceptTool, rejectTool]
12651
+ };
12652
+ }
12653
+
12654
+
12655
+
12656
+
12657
+
12202
12658
 
12203
12659
 
12204
12660
 
@@ -12720,4 +13176,4 @@ function createCanvasExplosionToolProvider(target, options = {}) {
12720
13176
 
12721
13177
 
12722
13178
 
12723
- 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 = _chunkLJZRHVZVcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunkLJZRHVZVcjs.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_TOKEN_PROPERTIES = CANVAS_TOKEN_PROPERTIES; exports.CARD_INSPECTION_ZONES = CARD_INSPECTION_ZONES; exports.CHILD_LAYOUT_DATA_KEY = CHILD_LAYOUT_DATA_KEY; exports.COMPONENT_DATA_KEY = COMPONENT_DATA_KEY; exports.COMPONENT_OVERRIDES_DATA_KEY = COMPONENT_OVERRIDES_DATA_KEY; exports.COMPONENT_PROPERTY_REFS_DATA_KEY = COMPONENT_PROPERTY_REFS_DATA_KEY; exports.COMPONENT_SET_DATA_KEY = COMPONENT_SET_DATA_KEY; exports.COMPONENT_SOURCE_DATA_KEY = COMPONENT_SOURCE_DATA_KEY; exports.CONNECTION_LINE_TYPES = CONNECTION_LINE_TYPES; exports.CSS_ANIMATION_PROPERTIES = CSS_ANIMATION_PROPERTIES; exports.CSS_VARIABLE_DIAGRAM_SCENE_THEME = CSS_VARIABLE_DIAGRAM_SCENE_THEME; exports.CUBIC_BEZIER_PRESETS = _chunkDWJJI6RTcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunkT7QSEKDYcjs.DEFAULT_ARRANGE_SHORTCUTS; exports.DEFAULT_CURSOR_INACTIVITY_MS = DEFAULT_CURSOR_INACTIVITY_MS; exports.DEFAULT_DIAGRAM_NODE_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT; exports.DEFAULT_DIAGRAM_NODE_WIDTH = DEFAULT_DIAGRAM_NODE_WIDTH; exports.DEFAULT_NODE_HEIGHT = _chunkEL4PSKFTcjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkEL4PSKFTcjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkEL4PSKFTcjs.DEFAULT_PLACEMENT_GAP; exports.DIAGRAM_MARKER_IDS = DIAGRAM_MARKER_IDS; exports.DIAGRAM_RASTER_MAX_SIZE = DIAGRAM_RASTER_MAX_SIZE; exports.DIAGRAM_SCENE_DARK_THEME = DIAGRAM_SCENE_DARK_THEME; exports.DIAGRAM_SCENE_LIGHT_THEME = DIAGRAM_SCENE_LIGHT_THEME; exports.DIAGRAM_SVG_DARK_THEME = DIAGRAM_SVG_DARK_THEME; exports.DIAGRAM_SVG_LIGHT_THEME = DIAGRAM_SVG_LIGHT_THEME; exports.DIAGRAM_TITLE_TARGET = DIAGRAM_TITLE_TARGET; exports.DiagramStream = DiagramStream; exports.INSTANCE_DATA_KEY = INSTANCE_DATA_KEY; exports.LOCKED_DATA_KEY = _chunkEL4PSKFTcjs.LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = _chunkEL4PSKFTcjs.LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunkLJZRHVZVcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkYAWLMF3Ocjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkNM3G4VQTcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkGF2RBSDMcjs.PathOpsError; exports.PlanarMap = _chunkYAWLMF3Ocjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkNM3G4VQTcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunkDWJJI6RTcjs.SPRING_PRESETS; exports.StreamingLayoutManager = StreamingLayoutManager; exports.TOKEN_BINDINGS_DATA_KEY = TOKEN_BINDINGS_DATA_KEY; exports.TOKEN_MODES_DATA_KEY = TOKEN_MODES_DATA_KEY; exports.addCanvasVariant = addCanvasVariant; exports.addKeyframesAtTime = addKeyframesAtTime; exports.alignNodes = _chunkEL4PSKFTcjs.alignNodes; exports.angleToSvgLinearCoords = _chunkNM3G4VQTcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = _chunkEL4PSKFTcjs.applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkGF2RBSDMcjs.arcToCubics; exports.architectureScene = architectureScene; exports.arrowGesture = _chunkT7QSEKDYcjs.arrowGesture; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkGF2RBSDMcjs.bezierPathArea; exports.bezierPathBounds = _chunkGF2RBSDMcjs.bezierPathBounds; exports.bezierPathLength = _chunkGF2RBSDMcjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkGF2RBSDMcjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkGF2RBSDMcjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkGF2RBSDMcjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkEL4PSKFTcjs.boundsOf; exports.bracketGesture = _chunkT7QSEKDYcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunkHZ547SGQcjs.brushstrokeSeed; exports.c4Scene = c4Scene; exports.calculateCursorArrowRotation = calculateCursorArrowRotation; exports.calculateCurvedPath = calculateCurvedPath; exports.calculateDagreReflowDisplacement = calculateDagreReflowDisplacement; exports.calculateDirectionalDisplacement = calculateDirectionalDisplacement; exports.calculateReflowDisplacement = calculateReflowDisplacement; exports.canCombineShapeNodes = canCombineShapeNodes; exports.canOffsetShapeNodes = canOffsetShapeNodes; exports.canOutlineShapeNodeStrokes = canOutlineShapeNodeStrokes; exports.canvasDocumentContentKey = canvasDocumentContentKey; exports.canvasEffectErrorReason = canvasEffectErrorReason; exports.canvasEffectStatus = canvasEffectStatus; exports.canvasEffectsPool = canvasEffectsPool; exports.canvasExplosionToolTarget = canvasExplosionToolTarget; exports.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.canvasNodeEffect = canvasNodeEffect; exports.captureCanvasView = captureCanvasView; exports.centerNodes = _chunkEL4PSKFTcjs.centerNodes; exports.centre = _chunkEL4PSKFTcjs.centre; exports.checkGesture = _chunkT7QSEKDYcjs.checkGesture; exports.circleGesture = _chunkT7QSEKDYcjs.circleGesture; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkGF2RBSDMcjs.closeContour; exports.collectDescendantIds = collectDescendantIds; exports.combineCanvasComponentsAsVariants = combineCanvasComponentsAsVariants; exports.combineShapeNodes = combineShapeNodes; exports.computeCanvasExplosionLayout = computeCanvasExplosionLayout; exports.computeDragBounds = computeDragBounds; exports.computeDragBoundsFromPoints = computeDragBoundsFromPoints; exports.computeNodesBoundingBox = computeNodesBoundingBox; exports.computeSnapGuides = computeSnapGuides; exports.connectedDiagramOnly = connectedDiagramOnly; exports.connectedOnly = connectedOnly; exports.contourEnclosesArea = _chunkYAWLMF3Ocjs.contourEnclosesArea; exports.contourSignedArea = _chunkGF2RBSDMcjs.contourSignedArea; exports.contoursToPath = _chunkGF2RBSDMcjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkGF2RBSDMcjs.countPathSegments; exports.createAnimationPlayer = _chunkLJZRHVZVcjs.createAnimationPlayer; exports.createBezierTrajectory = createBezierTrajectory; exports.createCanvasAnimationController = createCanvasAnimationController; exports.createCanvasArrangeController = createCanvasArrangeController; exports.createCanvasAutoLayoutController = createCanvasAutoLayoutController; exports.createCanvasCaptureSurface = createCanvasCaptureSurface; exports.createCanvasCaptureToolProvider = createCanvasCaptureToolProvider; exports.createCanvasComponent = createCanvasComponent; exports.createCanvasComponentsController = createCanvasComponentsController; exports.createCanvasDrawController = createCanvasDrawController; exports.createCanvasEditorDocument = createCanvasEditorDocument; exports.createCanvasEffectsController = createCanvasEffectsController; exports.createCanvasEffectsToolProvider = createCanvasEffectsToolProvider; exports.createCanvasExplosionStateController = createCanvasExplosionStateController; exports.createCanvasExplosionToolProvider = createCanvasExplosionToolProvider; exports.createCanvasGestureRecorder = createCanvasGestureRecorder; exports.createCanvasInstance = createCanvasInstance; exports.createCanvasPlaybackLocator = createCanvasPlaybackLocator; exports.createCanvasScenesStore = createCanvasScenesStore; exports.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.crossGesture = _chunkT7QSEKDYcjs.crossGesture; exports.cubicBezierAt = _chunkDWJJI6RTcjs.cubicBezierAt; exports.cubicPointAt = _chunkNM3G4VQTcjs.cubicPointAt; exports.cubicsToPathData = _chunkNM3G4VQTcjs.cubicsToPathData; exports.cutOutPiece = _chunkYAWLMF3Ocjs.cutOutPiece; exports.dashContours = _chunkGF2RBSDMcjs.dashContours; exports.defaultEasing = defaultEasing; exports.deleteKeyframes = deleteKeyframes; exports.detachCanvasInstance = detachCanvasInstance; exports.detachTokenBindings = detachTokenBindings; exports.diagramCanvasHeight = diagramCanvasHeight; exports.diagramFileName = diagramFileName; exports.diagramGroupSize = diagramGroupSize; exports.diagramImageSize = diagramImageSize; exports.diagramLayoutBounds = diagramLayoutBounds; exports.diagramMarksBounds = diagramMarksBounds; exports.diagramMarksToSvg = diagramMarksToSvg; exports.diagramRenameOp = diagramRenameOp; exports.diagramTargetLabel = diagramTargetLabel; exports.diagramTextBaseline = diagramTextBaseline; exports.diffOverrideGroups = diffOverrideGroups; exports.distanceToBezierPath = _chunkGF2RBSDMcjs.distanceToBezierPath; exports.distributeNodes = _chunkEL4PSKFTcjs.distributeNodes; exports.dividePaths = _chunkGF2RBSDMcjs.dividePaths; exports.dividePolygons = _chunkGF2RBSDMcjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunkDWJJI6RTcjs.easingFromInfluence; exports.easingLabel = _chunkDWJJI6RTcjs.easingLabel; exports.easingToCss = _chunkDWJJI6RTcjs.easingToCss; exports.elasticAt = _chunkDWJJI6RTcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkEL4PSKFTcjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkEL4PSKFTcjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunkDWJJI6RTcjs.evaluateEasing; exports.evaluateTrack = _chunkLJZRHVZVcjs.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 = _chunkUTI5IITZcjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.gestureEdgePoint = _chunkT7QSEKDYcjs.gestureEdgePoint; exports.gestureRandom = _chunkT7QSEKDYcjs.gestureRandom; exports.gestureSeed = _chunkT7QSEKDYcjs.gestureSeed; exports.gestureUnion = _chunkT7QSEKDYcjs.gestureUnion; exports.getAbsolutePosition = _chunkEL4PSKFTcjs.getAbsolutePosition; exports.getAgentCardAnchor = getAgentCardAnchor; exports.getAnimatableProperty = getAnimatableProperty; exports.getAnimatedProperties = getAnimatedProperties; exports.getAnimatedValue = getAnimatedValue; exports.getAnimationDuration = getAnimationDuration; exports.getAnimationTrack = getAnimationTrack; exports.getAutoLayout = getAutoLayout; exports.getAutoLayoutGrid = getAutoLayoutGrid; exports.getAutoLayoutInsertTarget = getAutoLayoutInsertTarget; exports.getBindableTokenProperties = getBindableTokenProperties; exports.getBrushedShapeSvg = _chunkHZ547SGQcjs.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 = _chunkLJZRHVZVcjs.interpolateAnimationValue; exports.intersectPaths = _chunkGF2RBSDMcjs.intersectPaths; exports.intersectPolygons = _chunkGF2RBSDMcjs.intersectPolygons; exports.invertNodeUpdates = _chunkEL4PSKFTcjs.invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunkDWJJI6RTcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunkLJZRHVZVcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunkHZ547SGQcjs.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 = _chunkHZ547SGQcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunkHZ547SGQcjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkT7QSEKDYcjs.matchArrangeShortcut; exports.matchSize = _chunkEL4PSKFTcjs.matchSize; exports.measureBetween = measureBetween; exports.measureLabel = measureLabel; exports.measureSelection = measureSelection; exports.measureToLine = measureToLine; exports.mergeNodeUpdates = mergeNodeUpdates; exports.mermaidEdgeDash = mermaidEdgeDash; exports.mermaidEdgeMarker = mermaidEdgeMarker; exports.mermaidEdgeWidth = mermaidEdgeWidth; exports.mermaidFlowEdges = mermaidFlowEdges; exports.mermaidFlowNodes = mermaidFlowNodes; exports.mermaidLabelLines = mermaidLabelLines; exports.mermaidMarkerId = mermaidMarkerId; exports.mermaidMovesFromCanvas = mermaidMovesFromCanvas; exports.mermaidNodeMembers = mermaidNodeMembers; exports.mermaidNodePaint = mermaidNodePaint; exports.mermaidShapePaths = mermaidShapePaths; exports.mermaidThumbnailSvg = mermaidThumbnailSvg; exports.mermaidToCanvas = mermaidToCanvas; exports.mermaidToScene = mermaidToScene; exports.mermaidToSvg = mermaidToSvg; exports.mindmapScene = mindmapScene; exports.mixColorsOklab = _chunkUTI5IITZcjs.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 = _chunkLJZRHVZVcjs.normalizeKeyframes; exports.offsetPath = _chunkGF2RBSDMcjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkUTI5IITZcjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkGF2RBSDMcjs.outlineStroke; exports.overlaps = _chunkEL4PSKFTcjs.overlaps; exports.pageHidden = _chunkLJZRHVZVcjs.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 = _chunkUTI5IITZcjs.parseOklab; exports.parseSvgPath = _chunkNM3G4VQTcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkGF2RBSDMcjs.pathBoolean; exports.pathBooleanSelect = _chunkGF2RBSDMcjs.pathBooleanSelect; exports.pathDataToPolyline = _chunkHZ547SGQcjs.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 = _chunkHZ547SGQcjs.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 = _chunkLJZRHVZVcjs.realClock; exports.recordAnimationChanges = recordAnimationChanges; exports.registerFamilyScene = registerFamilyScene; exports.relayoutUpdates = relayoutUpdates; exports.remapPastedNodes = remapPastedNodes; exports.removeCanvasVariant = removeCanvasVariant; exports.removeTrack = removeTrack; exports.renameCanvasVariantProperty = renameCanvasVariantProperty; exports.renameCanvasVariantValue = renameCanvasVariantValue; exports.renderCanvasBrushSwatch = _chunkHZ547SGQcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunkHZ547SGQcjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkNM3G4VQTcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunkDWJJI6RTcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunkDWJJI6RTcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunkUTI5IITZcjs.rgbToOklab; exports.ringSignedArea = _chunkGF2RBSDMcjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkGF2RBSDMcjs.segmentBounds; exports.segmentCurvature = _chunkGF2RBSDMcjs.segmentCurvature; exports.segmentDerivative = _chunkGF2RBSDMcjs.segmentDerivative; exports.segmentExtrema = _chunkGF2RBSDMcjs.segmentExtrema; exports.segmentIntersections = _chunkGF2RBSDMcjs.segmentIntersections; exports.segmentLength = _chunkGF2RBSDMcjs.segmentLength; exports.segmentNearest = _chunkGF2RBSDMcjs.segmentNearest; exports.segmentParamAtLength = _chunkGF2RBSDMcjs.segmentParamAtLength; exports.segmentPoint = _chunkGF2RBSDMcjs.segmentPoint; exports.segmentTangent = _chunkGF2RBSDMcjs.segmentTangent; exports.sequenceScene = sequenceScene; exports.serializeCanvasNodes = serializeCanvasNodes; exports.setCanvasComponentProperty = setCanvasComponentProperty; exports.setCanvasInstanceProperties = setCanvasInstanceProperties; exports.setCanvasTokenMode = setCanvasTokenMode; exports.setCanvasVariantProperties = setCanvasVariantProperties; exports.setKeyframe = setKeyframe; exports.setKeyframeEasing = setKeyframeEasing; exports.setMotionPath = setMotionPath; exports.setTrackEnabled = setTrackEnabled; exports.shapeNodeToBezierPath = shapeNodeToBezierPath; exports.shapeNodeToPolygon = shapeNodeToPolygon; exports.shapeToBezierPath = shapeToBezierPath; exports.shapeToPolygon = _chunkNM3G4VQTcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkNM3G4VQTcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkGF2RBSDMcjs.splitSegment; exports.springAt = _chunkDWJJI6RTcjs.springAt; exports.springSettleMs = _chunkDWJJI6RTcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strikeGesture = _chunkT7QSEKDYcjs.strikeGesture; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkGF2RBSDMcjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkGF2RBSDMcjs.subSegment; exports.subtractPaths = _chunkGF2RBSDMcjs.subtractPaths; exports.subtractPolygons = _chunkGF2RBSDMcjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkGF2RBSDMcjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = _chunkEL4PSKFTcjs.toggleLockNodes; exports.transformBezierPath = _chunkGF2RBSDMcjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkGF2RBSDMcjs.trimSegments; exports.underlineGesture = _chunkT7QSEKDYcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunkHZ547SGQcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunkHZ547SGQcjs.validateCanvasBrushPaint; exports.windingNumber = _chunkGF2RBSDMcjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = _chunkEL4PSKFTcjs.withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunkLJZRHVZVcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkGF2RBSDMcjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;
13179
+ 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 = _chunkLJZRHVZVcjs.ANIMATION_TIME_EPSILON; exports.AUTO_LAYOUT_DATA_KEY = AUTO_LAYOUT_DATA_KEY; exports.AnimationEditError = AnimationEditError; exports.AnimationPlayer = _chunkLJZRHVZVcjs.AnimationPlayer; exports.BUILTIN_FAMILY_SCENES = BUILTIN_FAMILY_SCENES; exports.CANVAS_CAPTURE_CHROME_SELECTORS = CANVAS_CAPTURE_CHROME_SELECTORS; exports.CANVAS_CAPTURE_OVERLAY_SELECTORS = CANVAS_CAPTURE_OVERLAY_SELECTORS; exports.CANVAS_CAPTURE_VIEWPORT_SELECTOR = CANVAS_CAPTURE_VIEWPORT_SELECTOR; exports.CANVAS_COMPONENT_DRAG_TYPE = CANVAS_COMPONENT_DRAG_TYPE; exports.CANVAS_EFFECT_MISSING_PATTERN = CANVAS_EFFECT_MISSING_PATTERN; exports.CANVAS_EFFECT_PLACES = CANVAS_EFFECT_PLACES; exports.CANVAS_GRADIENT_PRESETS = _chunkNM3G4VQTcjs.CANVAS_GRADIENT_PRESETS; exports.CANVAS_PROPOSAL_CLASS = CANVAS_PROPOSAL_CLASS; exports.CANVAS_TOKEN_PROPERTIES = CANVAS_TOKEN_PROPERTIES; exports.CARD_INSPECTION_ZONES = CARD_INSPECTION_ZONES; exports.CHILD_LAYOUT_DATA_KEY = CHILD_LAYOUT_DATA_KEY; exports.COMPONENT_DATA_KEY = COMPONENT_DATA_KEY; exports.COMPONENT_OVERRIDES_DATA_KEY = COMPONENT_OVERRIDES_DATA_KEY; exports.COMPONENT_PROPERTY_REFS_DATA_KEY = COMPONENT_PROPERTY_REFS_DATA_KEY; exports.COMPONENT_SET_DATA_KEY = COMPONENT_SET_DATA_KEY; exports.COMPONENT_SOURCE_DATA_KEY = COMPONENT_SOURCE_DATA_KEY; exports.CONNECTION_LINE_TYPES = CONNECTION_LINE_TYPES; exports.CSS_ANIMATION_PROPERTIES = CSS_ANIMATION_PROPERTIES; exports.CSS_VARIABLE_DIAGRAM_SCENE_THEME = CSS_VARIABLE_DIAGRAM_SCENE_THEME; exports.CUBIC_BEZIER_PRESETS = _chunkDWJJI6RTcjs.CUBIC_BEZIER_PRESETS; exports.CanvasScenesStore = CanvasScenesStore; exports.DEFAULT_ARRANGE_SHORTCUTS = _chunkT7QSEKDYcjs.DEFAULT_ARRANGE_SHORTCUTS; exports.DEFAULT_CURSOR_INACTIVITY_MS = DEFAULT_CURSOR_INACTIVITY_MS; exports.DEFAULT_DIAGRAM_NODE_HEIGHT = DEFAULT_DIAGRAM_NODE_HEIGHT; exports.DEFAULT_DIAGRAM_NODE_WIDTH = DEFAULT_DIAGRAM_NODE_WIDTH; exports.DEFAULT_NODE_HEIGHT = _chunkEL4PSKFTcjs.DEFAULT_NODE_HEIGHT; exports.DEFAULT_NODE_WIDTH = _chunkEL4PSKFTcjs.DEFAULT_NODE_WIDTH; exports.DEFAULT_PLACEMENT_GAP = _chunkEL4PSKFTcjs.DEFAULT_PLACEMENT_GAP; exports.DIAGRAM_MARKER_IDS = DIAGRAM_MARKER_IDS; exports.DIAGRAM_RASTER_MAX_SIZE = DIAGRAM_RASTER_MAX_SIZE; exports.DIAGRAM_SCENE_DARK_THEME = DIAGRAM_SCENE_DARK_THEME; exports.DIAGRAM_SCENE_LIGHT_THEME = DIAGRAM_SCENE_LIGHT_THEME; exports.DIAGRAM_SVG_DARK_THEME = DIAGRAM_SVG_DARK_THEME; exports.DIAGRAM_SVG_LIGHT_THEME = DIAGRAM_SVG_LIGHT_THEME; exports.DIAGRAM_TITLE_TARGET = DIAGRAM_TITLE_TARGET; exports.DiagramStream = DiagramStream; exports.INSTANCE_DATA_KEY = INSTANCE_DATA_KEY; exports.LOCKED_DATA_KEY = _chunkEL4PSKFTcjs.LOCKED_DATA_KEY; exports.LOCKED_PREVIOUS_FLAGS_KEY = _chunkEL4PSKFTcjs.LOCKED_PREVIOUS_FLAGS_KEY; exports.MAX_KEYFRAME_REFS = MAX_KEYFRAME_REFS; exports.MERMAID_SHAPE_PAINT = MERMAID_SHAPE_PAINT; exports.ManualClock = _chunkLJZRHVZVcjs.ManualClock; exports.PATHFINDER_OPERATIONS = _chunkYAWLMF3Ocjs.PATHFINDER_OPERATIONS; exports.PIXERATE_BRAND_GRADIENT = _chunkNM3G4VQTcjs.PIXERATE_BRAND_GRADIENT; exports.PathOpsError = _chunkGF2RBSDMcjs.PathOpsError; exports.PlanarMap = _chunkYAWLMF3Ocjs.PlanarMap; exports.RESIZE_HANDLES = RESIZE_HANDLES; exports.SHAPE_DATA_KEY = SHAPE_DATA_KEY; exports.SHAPE_KINDS = _chunkNM3G4VQTcjs.SHAPE_KINDS; exports.SHAPE_NODE_TYPE = SHAPE_NODE_TYPE; exports.SHAPE_OPERATIONS = SHAPE_OPERATIONS; exports.SPRING_PRESETS = _chunkDWJJI6RTcjs.SPRING_PRESETS; exports.StreamingLayoutManager = StreamingLayoutManager; exports.TOKEN_BINDINGS_DATA_KEY = TOKEN_BINDINGS_DATA_KEY; exports.TOKEN_MODES_DATA_KEY = TOKEN_MODES_DATA_KEY; exports.addCanvasVariant = addCanvasVariant; exports.addKeyframesAtTime = addKeyframesAtTime; exports.alignNodes = _chunkEL4PSKFTcjs.alignNodes; exports.angleToSvgLinearCoords = _chunkNM3G4VQTcjs.angleToSvgLinearCoords; exports.animateNode = animateNode; exports.applyAnimation = applyAnimation; exports.applyAnimationOverrides = applyAnimationOverrides; exports.applyConstraints = applyConstraints; exports.applyNodeUpdates = _chunkEL4PSKFTcjs.applyNodeUpdates; exports.applyShapeCombination = applyShapeCombination; exports.applyShapeReplacement = applyShapeReplacement; exports.arcToCubics = _chunkGF2RBSDMcjs.arcToCubics; exports.architectureScene = architectureScene; exports.arrowGesture = _chunkT7QSEKDYcjs.arrowGesture; exports.autoLayoutDiagram = autoLayoutDiagram; exports.bezierPathArea = _chunkGF2RBSDMcjs.bezierPathArea; exports.bezierPathBounds = _chunkGF2RBSDMcjs.bezierPathBounds; exports.bezierPathLength = _chunkGF2RBSDMcjs.bezierPathLength; exports.bezierPathPointAtLength = _chunkGF2RBSDMcjs.bezierPathPointAtLength; exports.bezierPathSignedArea = _chunkGF2RBSDMcjs.bezierPathSignedArea; exports.bezierPathToSvg = _chunkGF2RBSDMcjs.bezierPathToSvg; exports.bindCanvasComponentProperty = bindCanvasComponentProperty; exports.bindCanvasToken = bindCanvasToken; exports.blendDiagramLayout = blendDiagramLayout; exports.blendLayout = blendLayout; exports.boundsOf = _chunkEL4PSKFTcjs.boundsOf; exports.bracketGesture = _chunkT7QSEKDYcjs.bracketGesture; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeSeed = _chunk5MFDD7SPcjs.brushstrokeSeed; exports.c4Scene = c4Scene; exports.calculateCursorArrowRotation = calculateCursorArrowRotation; exports.calculateCurvedPath = calculateCurvedPath; exports.calculateDagreReflowDisplacement = calculateDagreReflowDisplacement; exports.calculateDirectionalDisplacement = calculateDirectionalDisplacement; exports.calculateReflowDisplacement = calculateReflowDisplacement; exports.canCombineShapeNodes = canCombineShapeNodes; exports.canOffsetShapeNodes = canOffsetShapeNodes; exports.canOutlineShapeNodeStrokes = canOutlineShapeNodeStrokes; exports.canvasDocumentContentKey = canvasDocumentContentKey; exports.canvasEffectErrorReason = canvasEffectErrorReason; exports.canvasEffectStatus = canvasEffectStatus; exports.canvasEffectsPool = canvasEffectsPool; exports.canvasExplosionToolTarget = canvasExplosionToolTarget; exports.canvasHeight = canvasHeight; exports.canvasNodeCaptureRect = canvasNodeCaptureRect; exports.canvasNodeEffect = canvasNodeEffect; exports.captureCanvasView = captureCanvasView; exports.centerNodes = _chunkEL4PSKFTcjs.centerNodes; exports.centre = _chunkEL4PSKFTcjs.centre; exports.checkGesture = _chunkT7QSEKDYcjs.checkGesture; exports.circleGesture = _chunkT7QSEKDYcjs.circleGesture; exports.clampAnimationValue = clampAnimationValue; exports.clampLayoutSize = clampLayoutSize; exports.closeContour = _chunkGF2RBSDMcjs.closeContour; exports.collectDescendantIds = collectDescendantIds; exports.combineCanvasComponentsAsVariants = combineCanvasComponentsAsVariants; exports.combineShapeNodes = combineShapeNodes; exports.computeCanvasExplosionLayout = computeCanvasExplosionLayout; exports.computeDragBounds = computeDragBounds; exports.computeDragBoundsFromPoints = computeDragBoundsFromPoints; exports.computeNodesBoundingBox = computeNodesBoundingBox; exports.computeSnapGuides = computeSnapGuides; exports.connectedDiagramOnly = connectedDiagramOnly; exports.connectedOnly = connectedOnly; exports.contourEnclosesArea = _chunkYAWLMF3Ocjs.contourEnclosesArea; exports.contourSignedArea = _chunkGF2RBSDMcjs.contourSignedArea; exports.contoursToPath = _chunkGF2RBSDMcjs.contoursToPath; exports.copyKeyframes = copyKeyframes; exports.countPathSegments = _chunkGF2RBSDMcjs.countPathSegments; exports.createAnimationPlayer = _chunkLJZRHVZVcjs.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.createDefaultStrokeStyle = createDefaultStrokeStyle; exports.createFanOutTrajectory = createFanOutTrajectory; exports.createGuideIndex = createGuideIndex; exports.createNodeGuideIndex = createNodeGuideIndex; exports.createNodeLookup = _chunkEL4PSKFTcjs.createNodeLookup; exports.crossGesture = _chunkT7QSEKDYcjs.crossGesture; exports.cubicBezierAt = _chunkDWJJI6RTcjs.cubicBezierAt; exports.cubicPointAt = _chunkNM3G4VQTcjs.cubicPointAt; exports.cubicsToPathData = _chunkNM3G4VQTcjs.cubicsToPathData; exports.cutOutPiece = _chunkYAWLMF3Ocjs.cutOutPiece; exports.dashContours = _chunkGF2RBSDMcjs.dashContours; exports.defaultEasing = defaultEasing; exports.deleteKeyframes = deleteKeyframes; exports.detachCanvasInstance = detachCanvasInstance; exports.detachTokenBindings = detachTokenBindings; exports.diagramCanvasHeight = diagramCanvasHeight; exports.diagramFileName = diagramFileName; exports.diagramGroupSize = diagramGroupSize; exports.diagramImageSize = diagramImageSize; exports.diagramLayoutBounds = diagramLayoutBounds; exports.diagramMarksBounds = diagramMarksBounds; exports.diagramMarksToSvg = diagramMarksToSvg; exports.diagramRenameOp = diagramRenameOp; exports.diagramTargetLabel = diagramTargetLabel; exports.diagramTextBaseline = diagramTextBaseline; exports.diffOverrideGroups = diffOverrideGroups; exports.distanceToBezierPath = _chunkGF2RBSDMcjs.distanceToBezierPath; exports.distributeNodes = _chunkEL4PSKFTcjs.distributeNodes; exports.dividePaths = _chunkGF2RBSDMcjs.dividePaths; exports.dividePolygons = _chunkGF2RBSDMcjs.dividePolygons; exports.downloadDiagramPng = downloadDiagramPng; exports.easeDiagramTween = easeDiagramTween; exports.easingFromInfluence = _chunkDWJJI6RTcjs.easingFromInfluence; exports.easingLabel = _chunkDWJJI6RTcjs.easingLabel; exports.easingToCss = _chunkDWJJI6RTcjs.easingToCss; exports.elasticAt = _chunkDWJJI6RTcjs.elasticAt; exports.ensureDiagramLayout = ensureDiagramLayout; exports.ensureLayout = _chunkEL4PSKFTcjs.ensureLayout; exports.estimateCanvasHeight = estimateCanvasHeight; exports.estimateDiagramCanvasHeight = estimateDiagramCanvasHeight; exports.estimateDiagramNodeSize = estimateDiagramNodeSize; exports.estimateNodeSize = _chunkEL4PSKFTcjs.estimateNodeSize; exports.estimateTextWidth = estimateTextWidth2; exports.evaluateAnimation = evaluateAnimation; exports.evaluateEasing = _chunkDWJJI6RTcjs.evaluateEasing; exports.evaluateTrack = _chunkLJZRHVZVcjs.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 = _chunkUTI5IITZcjs.formatOklab; exports.formatVariantName = formatVariantName; exports.freehandBrushstroke = freehandBrushstroke; exports.ganttScene = ganttScene; exports.gestureEdgePoint = _chunkT7QSEKDYcjs.gestureEdgePoint; exports.gestureRandom = _chunkT7QSEKDYcjs.gestureRandom; exports.gestureSeed = _chunkT7QSEKDYcjs.gestureSeed; exports.gestureUnion = _chunkT7QSEKDYcjs.gestureUnion; exports.getAbsolutePosition = _chunkEL4PSKFTcjs.getAbsolutePosition; exports.getAgentCardAnchor = getAgentCardAnchor; exports.getAnimatableProperty = getAnimatableProperty; exports.getAnimatedProperties = getAnimatedProperties; exports.getAnimatedValue = getAnimatedValue; exports.getAnimationDuration = getAnimationDuration; exports.getAnimationTrack = getAnimationTrack; exports.getAutoLayout = getAutoLayout; exports.getAutoLayoutGrid = getAutoLayoutGrid; exports.getAutoLayoutInsertTarget = getAutoLayoutInsertTarget; exports.getBindableTokenProperties = getBindableTokenProperties; exports.getBrushedShapeSvg = _chunk5MFDD7SPcjs.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 = _chunkLJZRHVZVcjs.interpolateAnimationValue; exports.intersectPaths = _chunkGF2RBSDMcjs.intersectPaths; exports.intersectPolygons = _chunkGF2RBSDMcjs.intersectPolygons; exports.invertNodeUpdates = _chunkEL4PSKFTcjs.invertNodeUpdates; exports.isAgentCursor = isAgentCursor; exports.isAnimationEasing = _chunkDWJJI6RTcjs.isAnimationEasing; exports.isAnimationKeyframe = _chunkLJZRHVZVcjs.isAnimationKeyframe; exports.isAutoLayoutFrame = isAutoLayoutFrame; exports.isBrushedShape = _chunk5MFDD7SPcjs.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 = _chunk5MFDD7SPcjs.listCanvasBrushes; exports.listCanvasComponents = listCanvasComponents; exports.loadCanvasBrushstrokeRenderer = _chunk5MFDD7SPcjs.loadCanvasBrushstrokeRenderer; exports.lockNodes = _chunkEL4PSKFTcjs.lockNodes; exports.makeSizingCoherent = makeSizingCoherent; exports.matchArrangeShortcut = _chunkT7QSEKDYcjs.matchArrangeShortcut; exports.matchSize = _chunkEL4PSKFTcjs.matchSize; exports.measureBetween = measureBetween; exports.measureLabel = measureLabel; exports.measureSelection = measureSelection; exports.measureToLine = measureToLine; exports.mergeNodeUpdates = mergeNodeUpdates; exports.mermaidEdgeDash = mermaidEdgeDash; exports.mermaidEdgeMarker = mermaidEdgeMarker; exports.mermaidEdgeWidth = mermaidEdgeWidth; exports.mermaidFlowEdges = mermaidFlowEdges; exports.mermaidFlowNodes = mermaidFlowNodes; exports.mermaidLabelLines = mermaidLabelLines; exports.mermaidMarkerId = mermaidMarkerId; exports.mermaidMovesFromCanvas = mermaidMovesFromCanvas; exports.mermaidNodeMembers = mermaidNodeMembers; exports.mermaidNodePaint = mermaidNodePaint; exports.mermaidShapePaths = mermaidShapePaths; exports.mermaidThumbnailSvg = mermaidThumbnailSvg; exports.mermaidToCanvas = mermaidToCanvas; exports.mermaidToScene = mermaidToScene; exports.mermaidToSvg = mermaidToSvg; exports.mindmapScene = mindmapScene; exports.mixColorsOklab = _chunkUTI5IITZcjs.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 = _chunkLJZRHVZVcjs.normalizeKeyframes; exports.offsetPath = _chunkGF2RBSDMcjs.offsetPath; exports.offsetShapeNodes = offsetShapeNodes; exports.oklabToRgb = _chunkUTI5IITZcjs.oklabToRgb; exports.oppositePosition = oppositePosition; exports.outlineShapeNodeStrokes = outlineShapeNodeStrokes; exports.outlineStroke = _chunkGF2RBSDMcjs.outlineStroke; exports.overlaps = _chunkEL4PSKFTcjs.overlaps; exports.pageHidden = _chunkLJZRHVZVcjs.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 = _chunkUTI5IITZcjs.parseOklab; exports.parseSvgPath = _chunkNM3G4VQTcjs.parseSvgPath; exports.parseVariantName = parseVariantName; exports.pasteKeyframes = pasteKeyframes; exports.pathBoolean = _chunkGF2RBSDMcjs.pathBoolean; exports.pathBooleanSelect = _chunkGF2RBSDMcjs.pathBooleanSelect; exports.pathDataToPolyline = _chunk5MFDD7SPcjs.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 = _chunk5MFDD7SPcjs.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 = _chunkLJZRHVZVcjs.realClock; exports.recordAnimationChanges = recordAnimationChanges; exports.registerFamilyScene = registerFamilyScene; exports.relayoutUpdates = relayoutUpdates; exports.remapPastedNodes = remapPastedNodes; exports.removeCanvasVariant = removeCanvasVariant; exports.removeTrack = removeTrack; exports.renameCanvasVariantProperty = renameCanvasVariantProperty; exports.renameCanvasVariantValue = renameCanvasVariantValue; exports.renderCanvasBrushSwatch = _chunk5MFDD7SPcjs.renderCanvasBrushSwatch; exports.renderShapeBrushstroke = _chunk5MFDD7SPcjs.renderShapeBrushstroke; exports.reorderNodes = _chunkEL4PSKFTcjs.reorderNodes; exports.repositionNodesTo = repositionNodesTo; exports.resetCanvasInstanceOverrides = resetCanvasInstanceOverrides; exports.resizeHandleAxes = resizeHandleAxes; exports.resolveCanvasGradient = _chunkNM3G4VQTcjs.resolveCanvasGradient; exports.resolveCanvasTokens = resolveCanvasTokens; exports.resolveEasing = _chunkDWJJI6RTcjs.resolveEasing; exports.resolveMermaidStyles = resolveMermaidStyles; exports.resolvePadding = resolvePadding; exports.restoreCanvasMainComponent = restoreCanvasMainComponent; exports.reverseCubicBezier = _chunkDWJJI6RTcjs.reverseCubicBezier; exports.revertShapeCombination = revertShapeCombination; exports.rgbToOklab = _chunkUTI5IITZcjs.rgbToOklab; exports.ringSignedArea = _chunkGF2RBSDMcjs.ringSignedArea; exports.runCanvasNodeEffect = runCanvasNodeEffect; exports.runMultiNodeTransition = runMultiNodeTransition; exports.sampleAnimationFrames = sampleAnimationFrames; exports.scaleKeyframes = scaleKeyframes; exports.sceneColor = sceneColor; exports.segmentBounds = _chunkGF2RBSDMcjs.segmentBounds; exports.segmentCurvature = _chunkGF2RBSDMcjs.segmentCurvature; exports.segmentDerivative = _chunkGF2RBSDMcjs.segmentDerivative; exports.segmentExtrema = _chunkGF2RBSDMcjs.segmentExtrema; exports.segmentIntersections = _chunkGF2RBSDMcjs.segmentIntersections; exports.segmentLength = _chunkGF2RBSDMcjs.segmentLength; exports.segmentNearest = _chunkGF2RBSDMcjs.segmentNearest; exports.segmentParamAtLength = _chunkGF2RBSDMcjs.segmentParamAtLength; exports.segmentPoint = _chunkGF2RBSDMcjs.segmentPoint; exports.segmentTangent = _chunkGF2RBSDMcjs.segmentTangent; exports.sequenceScene = sequenceScene; exports.serializeCanvasNodes = serializeCanvasNodes; exports.setCanvasComponentProperty = setCanvasComponentProperty; exports.setCanvasInstanceProperties = setCanvasInstanceProperties; exports.setCanvasTokenMode = setCanvasTokenMode; exports.setCanvasVariantProperties = setCanvasVariantProperties; exports.setKeyframe = setKeyframe; exports.setKeyframeEasing = setKeyframeEasing; exports.setMotionPath = setMotionPath; exports.setTrackEnabled = setTrackEnabled; exports.shapeNodeToBezierPath = shapeNodeToBezierPath; exports.shapeNodeToPolygon = shapeNodeToPolygon; exports.shapeToBezierPath = shapeToBezierPath; exports.shapeToPolygon = _chunkNM3G4VQTcjs.shapeToPolygon; exports.sideToPosition = sideToPosition; exports.simplifyRing = _chunkNM3G4VQTcjs.simplifyRing; exports.snapKeyframeDelta = snapKeyframeDelta; exports.snapNodeDrag = snapNodeDrag; exports.snapNodeResize = snapNodeResize; exports.snapResize = snapResize; exports.snapTimeToFrame = snapTimeToFrame; exports.snapToGrid = snapToGrid; exports.splitSegment = _chunkGF2RBSDMcjs.splitSegment; exports.springAt = _chunkDWJJI6RTcjs.springAt; exports.springSettleMs = _chunkDWJJI6RTcjs.springSettleMs; exports.streamedDiagramText = streamedDiagramText; exports.streamlinePoints = streamlinePoints; exports.strikeGesture = _chunkT7QSEKDYcjs.strikeGesture; exports.strokeBoundingBox = strokeBoundingBox; exports.strokeOutlineRings = _chunkGF2RBSDMcjs.strokeOutlineRings; exports.strokePointsToPathData = strokePointsToPathData; exports.strokeToShapeNode = strokeToShapeNode; exports.subSegment = _chunkGF2RBSDMcjs.subSegment; exports.subtractPaths = _chunkGF2RBSDMcjs.subtractPaths; exports.subtractPolygons = _chunkGF2RBSDMcjs.subtractPolygons; exports.swapCanvasInstance = swapCanvasInstance; exports.syncAllCanvasInstances = syncAllCanvasInstances; exports.syncCanvasComponents = syncCanvasComponents; exports.syncCanvasInstance = syncCanvasInstance; exports.timeToX = timeToX; exports.timelineScene = timelineScene; exports.toBezierPath = _chunkGF2RBSDMcjs.toBezierPath; exports.toWebAnimations = toWebAnimations; exports.toggleLockNodes = _chunkEL4PSKFTcjs.toggleLockNodes; exports.transformBezierPath = _chunkGF2RBSDMcjs.transformBezierPath; exports.transitionCanvasView = transitionCanvasView; exports.trimSegments = _chunkGF2RBSDMcjs.trimSegments; exports.underlineGesture = _chunkT7QSEKDYcjs.underlineGesture; exports.unionPolygons = _chunkGF2RBSDMcjs.unionPolygons; exports.unitePaths = _chunkGF2RBSDMcjs.unitePaths; exports.unlockNodes = _chunkEL4PSKFTcjs.unlockNodes; exports.updateKeyframe = updateKeyframe; exports.validateCanvasBrush = _chunk5MFDD7SPcjs.validateCanvasBrush; exports.validateCanvasBrushPaint = _chunk5MFDD7SPcjs.validateCanvasBrushPaint; exports.windingNumber = _chunkGF2RBSDMcjs.windingNumber; exports.withNodeAnimation = withNodeAnimation; exports.withStyleOpacity = withStyleOpacity; exports.withStyleSize = _chunkEL4PSKFTcjs.withStyleSize; exports.wouldCreateComponentCycle = wouldCreateComponentCycle; exports.wrapAnimationTime = _chunkLJZRHVZVcjs.wrapAnimationTime; exports.writeNodeStyleProperty = writeNodeStyleProperty; exports.writeOverrideGroup = writeOverrideGroup; exports.xToTime = xToTime; exports.xorPolygons = _chunkGF2RBSDMcjs.xorPolygons; exports.xyChartScene = xyChartScene; exports.xyChartSpec = xyChartSpec;