@pixerate/editor 0.145.0 → 0.147.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 (135) hide show
  1. package/README.md +4 -2
  2. package/THIRD_PARTY_NOTICES.md +1 -1
  3. package/dist/agent/index.cjs +36 -34
  4. package/dist/agent/index.js +7 -5
  5. package/dist/animation/index.cjs +5 -3
  6. package/dist/animation/index.js +4 -2
  7. package/dist/animation-editor/index.cjs +62 -60
  8. package/dist/animation-editor/index.js +6 -4
  9. package/dist/canvas/index.cjs +36 -34
  10. package/dist/canvas/index.js +19 -17
  11. package/dist/chart/index.cjs +88 -86
  12. package/dist/chart/index.js +7 -5
  13. package/dist/{chunk-WBJ6BG4R.js → chunk-2AQL4JHM.js} +6 -6
  14. package/dist/{chunk-HLMF3E53.cjs → chunk-2WDZI6QD.cjs} +15 -15
  15. package/dist/{chunk-ZNHB5RG6.js → chunk-37RLSNQ3.js} +2 -2
  16. package/dist/{chunk-5WOY52O6.cjs → chunk-4YQKRHMI.cjs} +8 -8
  17. package/dist/chunk-6ONMQ6WF.js +113 -0
  18. package/dist/{chunk-L434J57V.cjs → chunk-6QTON3VW.cjs} +16 -16
  19. package/dist/chunk-AA34BA7G.js +1913 -0
  20. package/dist/{chunk-QX25HWFL.js → chunk-AY65VQSU.js} +1 -1
  21. package/dist/{chunk-ONZJD2OD.cjs → chunk-BROJYMWU.cjs} +57 -153
  22. package/dist/{chunk-YM75DN54.js → chunk-DSZCDNTM.js} +1 -1
  23. package/dist/{chunk-PUR6BZFA.cjs → chunk-DVLMW3GB.cjs} +53 -53
  24. package/dist/{chunk-ALUWD3FG.js → chunk-EIUTJPEL.js} +1 -1
  25. package/dist/{chunk-X65C4DWV.js → chunk-EQ4SF4X4.js} +1 -1
  26. package/dist/{chunk-77SG47WT.js → chunk-FLOGD3QB.js} +1 -1
  27. package/dist/chunk-HRLT5BYO.js +133 -0
  28. package/dist/{chunk-AJSW5GMP.js → chunk-HVQVHUTV.js} +19 -115
  29. package/dist/{chunk-UR37VCIR.cjs → chunk-I4AHLP7F.cjs} +16 -35
  30. package/dist/chunk-IPJ3TEYR.cjs +113 -0
  31. package/dist/chunk-KC7HB5GF.cjs +133 -0
  32. package/dist/chunk-KY3FYKP3.js +52 -0
  33. package/dist/chunk-LEUZ4FRC.cjs +52 -0
  34. package/dist/{chunk-H6FX45CP.cjs → chunk-LIXLD433.cjs} +37 -37
  35. package/dist/{chunk-6GAYGQDC.js → chunk-O5ML2I6O.js} +3 -3
  36. package/dist/{chunk-KI2VBONS.js → chunk-OET45HIR.js} +2 -2
  37. package/dist/{chunk-XNZWATSB.cjs → chunk-QCEQIRJQ.cjs} +85 -85
  38. package/dist/{chunk-HRI3ZMDM.cjs → chunk-RHXW4TA5.cjs} +3 -3
  39. package/dist/{chunk-UUTTJK77.cjs → chunk-SUF6WRXR.cjs} +2 -2
  40. package/dist/{chunk-RN767PO6.js → chunk-SUVZJ2CP.js} +15 -34
  41. package/dist/{chunk-FLUTRPLY.cjs → chunk-TLMRGLQQ.cjs} +16 -16
  42. package/dist/{chunk-DAS7M4RY.js → chunk-UILRJQFD.js} +2 -2
  43. package/dist/chunk-UKCJ43YL.cjs +1913 -0
  44. package/dist/{chunk-XQ33O5BC.cjs → chunk-X35BV5YT.cjs} +44 -44
  45. package/dist/{chunk-6HMEHNWW.cjs → chunk-XTU6QO2W.cjs} +26 -26
  46. package/dist/{chunk-VM6JYWXQ.js → chunk-ZQUANEK4.js} +2 -2
  47. package/dist/cms/index.cjs +5 -3
  48. package/dist/cms/index.js +18 -16
  49. package/dist/color/contrast.d.cts +14 -0
  50. package/dist/color/contrast.d.ts +14 -0
  51. package/dist/color/convert.d.cts +30 -0
  52. package/dist/color/convert.d.ts +30 -0
  53. package/dist/color/dual.d.cts +98 -0
  54. package/dist/color/dual.d.ts +98 -0
  55. package/dist/color/format.d.cts +12 -0
  56. package/dist/color/format.d.ts +12 -0
  57. package/dist/color/gamut.d.cts +12 -0
  58. package/dist/color/gamut.d.ts +12 -0
  59. package/dist/color/harmony.d.cts +22 -0
  60. package/dist/color/harmony.d.ts +22 -0
  61. package/dist/color/index.cjs +115 -0
  62. package/dist/color/index.d.cts +18 -0
  63. package/dist/color/index.d.ts +18 -0
  64. package/dist/color/index.js +115 -0
  65. package/dist/color/mix.d.cts +11 -0
  66. package/dist/color/mix.d.ts +11 -0
  67. package/dist/color/named.d.cts +5 -0
  68. package/dist/color/named.d.ts +5 -0
  69. package/dist/color/parse.d.cts +11 -0
  70. package/dist/color/parse.d.ts +11 -0
  71. package/dist/color/picker.d.cts +52 -0
  72. package/dist/color/picker.d.ts +52 -0
  73. package/dist/color/recent.d.cts +8 -0
  74. package/dist/color/recent.d.ts +8 -0
  75. package/dist/color/tools.d.cts +15 -0
  76. package/dist/color/tools.d.ts +15 -0
  77. package/dist/color/types.d.cts +41 -0
  78. package/dist/color/types.d.ts +41 -0
  79. package/dist/color/vision.d.cts +36 -0
  80. package/dist/color/vision.d.ts +36 -0
  81. package/dist/diagram/editorDocument.d.cts +12 -0
  82. package/dist/diagram/editorDocument.d.ts +12 -0
  83. package/dist/diagram/index.cjs +35 -1
  84. package/dist/diagram/index.d.cts +1 -0
  85. package/dist/diagram/index.d.ts +1 -0
  86. package/dist/diagram/index.js +34 -0
  87. package/dist/export/index.cjs +6 -4
  88. package/dist/export/index.js +5 -3
  89. package/dist/extensions/index.cjs +10 -8
  90. package/dist/extensions/index.js +9 -7
  91. package/dist/gradient/controller.d.cts +109 -0
  92. package/dist/gradient/controller.d.ts +109 -0
  93. package/dist/gradient/editor.d.cts +38 -0
  94. package/dist/gradient/editor.d.ts +38 -0
  95. package/dist/gradient/index.cjs +1549 -0
  96. package/dist/gradient/index.d.cts +5 -0
  97. package/dist/gradient/index.d.ts +5 -0
  98. package/dist/gradient/index.js +1549 -0
  99. package/dist/gradient/model.d.cts +94 -0
  100. package/dist/gradient/model.d.ts +94 -0
  101. package/dist/gradient/tools.d.cts +11 -0
  102. package/dist/gradient/tools.d.ts +11 -0
  103. package/dist/gradient/types.d.cts +44 -0
  104. package/dist/gradient/types.d.ts +44 -0
  105. package/dist/image-editor/index.cjs +649 -647
  106. package/dist/image-editor/index.js +6 -4
  107. package/dist/index.cjs +19 -17
  108. package/dist/index.js +16 -14
  109. package/dist/paint-editor/color.d.cts +3 -13
  110. package/dist/paint-editor/color.d.ts +3 -13
  111. package/dist/paint-editor/index.cjs +23 -68
  112. package/dist/paint-editor/index.js +15 -60
  113. package/dist/persistence/documentStore.d.cts +51 -0
  114. package/dist/persistence/documentStore.d.ts +51 -0
  115. package/dist/persistence/documentTools.d.cts +35 -0
  116. package/dist/persistence/documentTools.d.ts +35 -0
  117. package/dist/persistence/editorAutosave.d.cts +33 -0
  118. package/dist/persistence/editorAutosave.d.ts +33 -0
  119. package/dist/persistence/editorDocument.d.cts +118 -0
  120. package/dist/persistence/editorDocument.d.ts +118 -0
  121. package/dist/persistence/index.cjs +294 -1
  122. package/dist/persistence/index.d.cts +4 -0
  123. package/dist/persistence/index.d.ts +4 -0
  124. package/dist/persistence/index.js +293 -0
  125. package/dist/vector/index.cjs +950 -948
  126. package/dist/vector/index.js +5 -3
  127. package/dist/video-editor/index.cjs +5 -3
  128. package/dist/video-editor/index.js +4 -2
  129. package/package.json +21 -1
  130. package/skills/README.md +1 -0
  131. package/skills/pixerate-agent-tools/SKILL.md +21 -0
  132. package/skills/pixerate-color/SKILL.md +69 -0
  133. package/skills/pixerate-diagram/SKILL.md +13 -0
  134. package/dist/chunk-45VRG4RB.js +0 -65
  135. package/dist/chunk-5FXOR7F2.cjs +0 -65
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
2
 
3
- var _chunkH6FX45CPcjs = require('../chunk-H6FX45CP.cjs');
3
+ var _chunkLIXLD433cjs = require('../chunk-LIXLD433.cjs');
4
4
 
5
5
 
6
6
 
@@ -31,7 +31,7 @@ var _chunkEBDZWIOPcjs = require('../chunk-EBDZWIOP.cjs');
31
31
 
32
32
 
33
33
 
34
- var _chunkHRI3ZMDMcjs = require('../chunk-HRI3ZMDM.cjs');
34
+ var _chunkRHXW4TA5cjs = require('../chunk-RHXW4TA5.cjs');
35
35
  require('../chunk-BXMIBMVG.cjs');
36
36
  require('../chunk-CVFAAZXE.cjs');
37
37
 
@@ -68,7 +68,7 @@ var _chunkFJ2MSI43cjs = require('../chunk-FJ2MSI43.cjs');
68
68
  var _chunk7B5GTJXBcjs = require('../chunk-7B5GTJXB.cjs');
69
69
 
70
70
 
71
- var _chunkUUTTJK77cjs = require('../chunk-UUTTJK77.cjs');
71
+ var _chunkSUF6WRXRcjs = require('../chunk-SUF6WRXR.cjs');
72
72
 
73
73
 
74
74
 
@@ -80,12 +80,14 @@ var _chunkUUTTJK77cjs = require('../chunk-UUTTJK77.cjs');
80
80
  var _chunkDWJJI6RTcjs = require('../chunk-DWJJI6RT.cjs');
81
81
 
82
82
 
83
- var _chunk5FXOR7F2cjs = require('../chunk-5FXOR7F2.cjs');
83
+ var _chunkLEUZ4FRCcjs = require('../chunk-LEUZ4FRC.cjs');
84
84
 
85
85
 
86
86
 
87
87
 
88
88
  var _chunkA6QWKBJPcjs = require('../chunk-A6QWKBJP.cjs');
89
+ require('../chunk-UKCJ43YL.cjs');
90
+ require('../chunk-IPJ3TEYR.cjs');
89
91
 
90
92
  // src/animation-editor/types.ts
91
93
  var MOTION_TRIGGERS = ["click", "hover", "press", "scroll"];
@@ -589,7 +591,7 @@ function smoothMotionTimes(points, start, duration, pacing = "even") {
589
591
  function motionTextLayout(nodes, id) {
590
592
  const group = _optionalChain([nodes, 'access', _5 => _5.get, 'call', _6 => _6(id), 'optionalAccess', _7 => _7.node]);
591
593
  if (!group || group.type !== "group") return null;
592
- const letters = _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, group).map((p) => ({ id: p.id, b: _optionalChain([nodes, 'access', _8 => _8.get, 'call', _9 => _9(p.id), 'optionalAccess', _10 => _10.bounds]) })).filter((l) => !!l.b && l.b.width + l.b.height > 0);
594
+ const letters = _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, group).map((p) => ({ id: p.id, b: _optionalChain([nodes, 'access', _8 => _8.get, 'call', _9 => _9(p.id), 'optionalAccess', _10 => _10.bounds]) })).filter((l) => !!l.b && l.b.width + l.b.height > 0);
593
595
  if (!letters.length) return null;
594
596
  const lines = [];
595
597
  for (const l of [...letters].sort((a, c) => a.b.y + a.b.height / 2 - (c.b.y + c.b.height / 2))) {
@@ -674,21 +676,21 @@ function indexMotionNodes(nodes) {
674
676
  const out = /* @__PURE__ */ new Map();
675
677
  const walk = (list, parentWorld, ancestors) => {
676
678
  for (const node of list) {
677
- const local = _chunkHRI3ZMDMcjs.vectorNodeBounds.call(void 0, node);
678
- const bounds = _chunkHRI3ZMDMcjs.vectorNodeBounds.call(void 0, node, parentWorld);
679
+ const local = _chunkRHXW4TA5cjs.vectorNodeBounds.call(void 0, node);
680
+ const bounds = _chunkRHXW4TA5cjs.vectorNodeBounds.call(void 0, node, parentWorld);
679
681
  const center = local ? { x: local.x + local.width / 2, y: local.y + local.height / 2 } : { x: 0, y: 0 };
680
682
  if (!out.has(node.id)) out.set(node.id, { node, ancestors, parentWorld, center, bounds, box: local });
681
- if (node.type === "group") walk(node.children, _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, node), parentWorld), [...ancestors, node.id]);
683
+ if (node.type === "group") walk(node.children, _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, node), parentWorld), [...ancestors, node.id]);
682
684
  }
683
685
  };
684
- walk(nodes, _chunkHRI3ZMDMcjs.IDENTITY_MATRIX, []);
686
+ walk(nodes, _chunkRHXW4TA5cjs.IDENTITY_MATRIX, []);
685
687
  indexCache.set(nodes, out);
686
688
  return out;
687
689
  }
688
690
  var solid = (paint) => typeof paint === "string" && paint !== "none" ? paint : void 0;
689
691
  function firstPaint(node, key) {
690
692
  if (node.type === "path") return solid(node[key]);
691
- for (const p of _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node)) {
693
+ for (const p of _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node)) {
692
694
  const s = solid(p[key]);
693
695
  if (s) return s;
694
696
  }
@@ -696,7 +698,7 @@ function firstPaint(node, key) {
696
698
  }
697
699
  function strokeReach(node) {
698
700
  let reach = 0;
699
- for (const p of node.type === "path" ? [node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node)) {
701
+ for (const p of node.type === "path" ? [node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node)) {
700
702
  if (p.stroke == null || p.stroke === "none") continue;
701
703
  const width = _nullishCoalesce(p.strokeWidth, () => ( 1));
702
704
  reach = Math.max(reach, p.strokeAlign === "outside" ? width : p.strokeAlign === "inside" ? 0 : width / 2);
@@ -766,7 +768,7 @@ function motionRestValue(entry, property, artwork) {
766
768
  case "stroke":
767
769
  return _nullishCoalesce((node && firstPaint(node, property)), () => ( "transparent"));
768
770
  case "strokeWidth": {
769
- const path = _optionalChain([node, 'optionalAccess', _13 => _13.type]) === "path" ? node : node ? _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node)[0] : void 0;
771
+ const path = _optionalChain([node, 'optionalAccess', _13 => _13.type]) === "path" ? node : node ? _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node)[0] : void 0;
770
772
  return _nullishCoalesce(_optionalChain([path, 'optionalAccess', _14 => _14.strokeWidth]), () => ( 1));
771
773
  }
772
774
  case "shape":
@@ -790,7 +792,7 @@ function interpolateMotionValue(from, to, u) {
790
792
  if (u <= 0) return from;
791
793
  if (u >= 1) return to;
792
794
  if (typeof from === "string" && typeof to === "string") {
793
- const mixed = _chunk5FXOR7F2cjs.mixColorsOklab.call(void 0, from, to, u);
795
+ const mixed = _chunkLEUZ4FRCcjs.mixColorsOklab.call(void 0, from, to, u);
794
796
  if (mixed !== null) return mixed;
795
797
  }
796
798
  return u < 1 ? from : to;
@@ -877,12 +879,12 @@ function resolveMotionCamera(camera, scene) {
877
879
  const r = camera;
878
880
  return { x: r.x, y: r.y, width: r.width, height: r.height };
879
881
  }
880
- function motionPathLength(node, parentWorld = _chunkHRI3ZMDMcjs.IDENTITY_MATRIX) {
882
+ function motionPathLength(node, parentWorld = _chunkRHXW4TA5cjs.IDENTITY_MATRIX) {
881
883
  let longest = 0;
882
- const paths = node.type === "path" ? [node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node);
884
+ const paths = node.type === "path" ? [node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node);
883
885
  for (const p of paths) {
884
886
  try {
885
- longest = Math.max(longest, _chunkGF2RBSDMcjs.bezierPathLength.call(void 0, _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, p, parentWorld, { effects: false })));
887
+ longest = Math.max(longest, _chunkGF2RBSDMcjs.bezierPathLength.call(void 0, _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, p, parentWorld, { effects: false })));
886
888
  } catch (e2) {
887
889
  }
888
890
  }
@@ -1135,12 +1137,12 @@ function compileMotionScene(scene) {
1135
1137
  const order2 = _nullishCoalesce(o.order, () => ( "together"));
1136
1138
  const pace = _nullishCoalesce(o.pace, () => ( "time"));
1137
1139
  if (order2 === "together" && pace === "time") return null;
1138
- const paths = entry.node.type === "path" ? [entry.node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, entry.node);
1140
+ const paths = entry.node.type === "path" ? [entry.node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, entry.node);
1139
1141
  let list = paths.map((p) => {
1140
1142
  const at = nodes.get(p.id);
1141
1143
  let first = { x: 0, y: 0 };
1142
1144
  try {
1143
- const m = _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, p, _nullishCoalesce(_optionalChain([at, 'optionalAccess', _41 => _41.parentWorld]), () => ( _chunkHRI3ZMDMcjs.IDENTITY_MATRIX)), { effects: false })[0];
1145
+ const m = _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, p, _nullishCoalesce(_optionalChain([at, 'optionalAccess', _41 => _41.parentWorld]), () => ( _chunkRHXW4TA5cjs.IDENTITY_MATRIX)), { effects: false })[0];
1144
1146
  if (m && m.type === "M") first = { x: m.x, y: m.y };
1145
1147
  } catch (e3) {
1146
1148
  }
@@ -1252,17 +1254,17 @@ function compileMotionScene(scene) {
1252
1254
  let dx = _nullishCoalesce(_optionalChain([command3, 'access', _44 => _44.by, 'optionalAccess', _45 => _45.x]), () => ( 0));
1253
1255
  let dy = _nullishCoalesce(_optionalChain([command3, 'access', _46 => _46.by, 'optionalAccess', _47 => _47.y]), () => ( 0));
1254
1256
  if (command3.to) {
1255
- const inv = _chunkHRI3ZMDMcjs.invertMatrix.call(void 0, entry.parentWorld);
1256
- const target = _chunkHRI3ZMDMcjs.applyMatrix.call(void 0, inv, command3.to);
1257
+ const inv = _chunkRHXW4TA5cjs.invertMatrix.call(void 0, entry.parentWorld);
1258
+ const target = _chunkRHXW4TA5cjs.applyMatrix.call(void 0, inv, command3.to);
1257
1259
  dx = target.x - (entry.center.x + num2("x"));
1258
1260
  dy = target.y - (entry.center.y + num2("y"));
1259
1261
  }
1260
1262
  if (_optionalChain([command3, 'access', _48 => _48.via, 'optionalAccess', _49 => _49.length])) {
1261
- const inv = _chunkHRI3ZMDMcjs.invertMatrix.call(void 0, entry.parentWorld);
1263
+ const inv = _chunkRHXW4TA5cjs.invertMatrix.call(void 0, entry.parentWorld);
1262
1264
  const x0 = num2("x");
1263
1265
  const y0 = num2("y");
1264
1266
  const add = command3.blend === "add";
1265
- const offsets = [{ x: 0, y: 0 }, ...command3.via.map((p) => _chunkHRI3ZMDMcjs.applyMatrix.call(void 0, inv, p)).map((p) => ({ x: p.x - entry.center.x - x0, y: p.y - entry.center.y - y0 })), { x: dx, y: dy }];
1267
+ const offsets = [{ x: 0, y: 0 }, ...command3.via.map((p) => _chunkRHXW4TA5cjs.applyMatrix.call(void 0, inv, p)).map((p) => ({ x: p.x - entry.center.x - x0, y: p.y - entry.center.y - y0 })), { x: dx, y: dy }];
1266
1268
  const times = _optionalChain([command3, 'access', _50 => _50.times, 'optionalAccess', _51 => _51.length]) === command3.via.length ? [start, ...command3.times.map((f) => start + f * (end - start)), end] : smoothMotionTimes(offsets, start, end - start, _nullishCoalesce(command3.pacing, () => ( "even")));
1267
1269
  for (const axis of ["x", "y"]) {
1268
1270
  const base = add ? 0 : axis === "x" ? x0 : y0;
@@ -1405,13 +1407,13 @@ function morphBetween(a, b) {
1405
1407
  let inner = morphCache.get(a);
1406
1408
  if (!inner) morphCache.set(a, inner = /* @__PURE__ */ new WeakMap());
1407
1409
  let morph = inner.get(b);
1408
- if (!morph) inner.set(b, morph = _chunkH6FX45CPcjs.createVectorMorph.call(void 0, a, b, { id: a.id }));
1410
+ if (!morph) inner.set(b, morph = _chunkLIXLD433cjs.createVectorMorph.call(void 0, a, b, { id: a.id }));
1409
1411
  return morph;
1410
1412
  }
1411
1413
  function shapeIn(entry, shape) {
1412
1414
  if (shape === entry) return entry.node;
1413
- const m = _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, shape.node), shape.parentWorld), _chunkHRI3ZMDMcjs.invertMatrix.call(void 0, entry.parentWorld));
1414
- return { ...shape.node, ..._chunkHRI3ZMDMcjs.isIdentityMatrix.call(void 0, m) ? { transform: void 0 } : { transform: m } };
1415
+ const m = _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, shape.node), shape.parentWorld), _chunkRHXW4TA5cjs.invertMatrix.call(void 0, entry.parentWorld));
1416
+ return { ...shape.node, ..._chunkRHXW4TA5cjs.isIdentityMatrix.call(void 0, m) ? { transform: void 0 } : { transform: m } };
1415
1417
  }
1416
1418
  function shapeAt(entry, timeline, nodes, time) {
1417
1419
  const track = timeline.tracks.get(motionTrackKey(entry.node.id, "shape"));
@@ -1431,7 +1433,7 @@ function shapeAt(entry, timeline, nodes, time) {
1431
1433
  function motionFollowRoute(entry, path) {
1432
1434
  if (!path || path.node.type !== "path") return null;
1433
1435
  try {
1434
- return _chunkGF2RBSDMcjs.transformBezierPath.call(void 0, _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, path.node, path.parentWorld, { effects: false }), _chunkHRI3ZMDMcjs.invertMatrix.call(void 0, entry.parentWorld));
1436
+ return _chunkGF2RBSDMcjs.transformBezierPath.call(void 0, _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, path.node, path.parentWorld, { effects: false }), _chunkRHXW4TA5cjs.invertMatrix.call(void 0, entry.parentWorld));
1435
1437
  } catch (e4) {
1436
1438
  return null;
1437
1439
  }
@@ -1465,9 +1467,9 @@ function motionNodeOffset(entry, timeline, time, nodes = indexMotionNodes([entry
1465
1467
  const scaleX = read("scaleX", 1);
1466
1468
  const scaleY = read("scaleY", 1);
1467
1469
  const c = entry.center;
1468
- let matrix = _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.scaleMatrix.call(void 0, scaleX, scaleY, c), _chunkHRI3ZMDMcjs.rotateMatrix.call(void 0, rotation, c)), _chunkHRI3ZMDMcjs.translateMatrix.call(void 0, dx, dy));
1470
+ let matrix = _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.scaleMatrix.call(void 0, scaleX, scaleY, c), _chunkRHXW4TA5cjs.rotateMatrix.call(void 0, rotation, c)), _chunkRHXW4TA5cjs.translateMatrix.call(void 0, dx, dy));
1469
1471
  const along = follow ? followAt(entry, timeline, nodes, time) : null;
1470
- if (along) matrix = _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, matrix, _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.translateMatrix.call(void 0, -c.x, -c.y), _chunkHRI3ZMDMcjs.rotateMatrix.call(void 0, along.angle)), _chunkHRI3ZMDMcjs.translateMatrix.call(void 0, along.x, along.y)));
1472
+ if (along) matrix = _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, matrix, _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.translateMatrix.call(void 0, -c.x, -c.y), _chunkRHXW4TA5cjs.rotateMatrix.call(void 0, along.angle)), _chunkRHXW4TA5cjs.translateMatrix.call(void 0, along.x, along.y)));
1471
1473
  return { matrix, dx, dy, rotation, scaleX, scaleY, follow: along };
1472
1474
  }
1473
1475
  function motionNodeClips(id, timeline, time) {
@@ -1534,7 +1536,7 @@ function motionFrameAt(scene, time, options = {}) {
1534
1536
  const start = Math.min(1, Math.max(0, typeof drawStart === "number" ? drawStart : 0));
1535
1537
  const end = Math.min(1, Math.max(0, typeof drawEnd === "number" ? drawEnd : 1));
1536
1538
  if (start > 0 || end < 1) {
1537
- const trim = _chunkHRI3ZMDMcjs.createVectorEffect.call(void 0, "trim", MOTION_DRAW_EFFECT_ID, { start: tidy(start * 100), end: tidy(end * 100) });
1539
+ const trim = _chunkRHXW4TA5cjs.createVectorEffect.call(void 0, "trim", MOTION_DRAW_EFFECT_ID, { start: tidy(start * 100), end: tidy(end * 100) });
1538
1540
  p = { ...p, effects: [trim, ...(_nullishCoalesce(p.effects, () => ( []))).filter((e) => e.id !== MOTION_DRAW_EFFECT_ID)] };
1539
1541
  }
1540
1542
  }
@@ -1548,8 +1550,8 @@ function motionFrameAt(scene, time, options = {}) {
1548
1550
  if (o >= 1) delete out.opacity;
1549
1551
  }
1550
1552
  const offset = options.offsets === false ? null : motionNodeOffset(entry, timeline, time, nodes);
1551
- if (offset && !_chunkHRI3ZMDMcjs.isIdentityMatrix.call(void 0, offset.matrix)) {
1552
- const m = _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, out), offset.matrix).map(tidy);
1553
+ if (offset && !_chunkRHXW4TA5cjs.isIdentityMatrix.call(void 0, offset.matrix)) {
1554
+ const m = _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, out), offset.matrix).map(tidy);
1553
1555
  out = { ...out, transform: m };
1554
1556
  }
1555
1557
  return out;
@@ -1569,7 +1571,7 @@ function motionFrameToSvg(scene, time, options = {}) {
1569
1571
  const wrap = { ...options.wrap };
1570
1572
  for (const [id, clips] of Object.entries(frame.clips))
1571
1573
  wrap[id] = [..._nullishCoalesce(wrap[id], () => ( [])), ...clips.map((clip, i) => ({ clip: { id: `${prefix}reveal-${id}-${i}`, shape: clip.shape, attrs: motionClipAttrs(clip) } }))];
1572
- return withViewBox(_chunkHRI3ZMDMcjs.vectorDocumentToSvg.call(void 0, frame.document, { ...options, wrap }), frame.camera);
1574
+ return withViewBox(_chunkRHXW4TA5cjs.vectorDocumentToSvg.call(void 0, frame.document, { ...options, wrap }), frame.camera);
1573
1575
  }
1574
1576
  function withViewBox(svg, box) {
1575
1577
  const f = (n) => String(Math.round(n * 1e3) / 1e3);
@@ -1752,8 +1754,8 @@ function visibleAt(timeline, id, time, node) {
1752
1754
  if (Array.isArray(rect) && (rect[2] <= 1e-4 || rect[3] <= 1e-4)) return false;
1753
1755
  const circle = clip("clipCircle");
1754
1756
  if (Array.isArray(circle) && circle[2] <= 1e-4) return false;
1755
- const hasFill = node.type === "path" ? !!node.fill && node.fill !== "none" : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node).some((p) => p.fill && p.fill !== "none");
1756
- const drawn = num2("drawEnd", 1) > 0.01 && (node.type === "path" || _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node).length === 0 || _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node).some((p) => {
1757
+ const hasFill = node.type === "path" ? !!node.fill && node.fill !== "none" : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node).some((p) => p.fill && p.fill !== "none");
1758
+ const drawn = num2("drawEnd", 1) > 0.01 && (node.type === "path" || _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node).length === 0 || _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node).some((p) => {
1757
1759
  const v = trackValue(timeline.tracks.get(motionTrackKey(p.id, "drawEnd")), time);
1758
1760
  return typeof v !== "number" || v > 0.01;
1759
1761
  }));
@@ -1839,7 +1841,7 @@ function checkMotionScene(scene) {
1839
1841
  }
1840
1842
  for (const id of targets) {
1841
1843
  const node = nodes.get(id).node;
1842
- const paths = node.type === "path" ? [node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node);
1844
+ const paths = node.type === "path" ? [node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node);
1843
1845
  if (paths.some((p) => p[key] !== void 0 && p[key] !== null && typeof p[key] !== "string"))
1844
1846
  issues.push(_chunkEBDZWIOPcjs.motionIssue.call(void 0, "paint-not-color", `"${id}" has a gradient ${key}; it switches to ${color} at the end instead of blending.`, { ...where, ids: [id] }));
1845
1847
  }
@@ -1852,7 +1854,7 @@ function checkMotionScene(scene) {
1852
1854
  else
1853
1855
  for (const id of targets) {
1854
1856
  const node = nodes.get(id).node;
1855
- const paths = node.type === "path" ? [node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node);
1857
+ const paths = node.type === "path" ? [node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node);
1856
1858
  if (paths.some((p) => typeof p[key] !== "string"))
1857
1859
  issues.push(_chunkEBDZWIOPcjs.motionIssue.call(void 0, "paint-not-color", `"${id}" has a gradient or no ${key}, so a colour pulse cannot tint it; give it a solid ${key} or pulse the ${key === "fill" ? "stroke" : "fill"}.`, { ...where, ids: [id] }));
1858
1860
  }
@@ -2297,7 +2299,7 @@ function motionNodePose(scene, id, time) {
2297
2299
  if (!entry) throw new Error(`There is no element ${_chunkEBDZWIOPcjs.namedWithSuggestion.call(void 0, id, [...indexMotionNodes(scene.artwork.nodes).keys()])} in the artwork.`);
2298
2300
  const timeline = compileMotionScene(scene);
2299
2301
  const drawn = indexMotionNodes(motionFrameAt(scene, time).document.nodes).get(id);
2300
- const centre = _chunkHRI3ZMDMcjs.applyMatrix.call(void 0, entry.parentWorld, { x: entry.center.x + motionPropertyValue(timeline, id, "x", time), y: entry.center.y + motionPropertyValue(timeline, id, "y", time) });
2302
+ const centre = _chunkRHXW4TA5cjs.applyMatrix.call(void 0, entry.parentWorld, { x: entry.center.x + motionPropertyValue(timeline, id, "x", time), y: entry.center.y + motionPropertyValue(timeline, id, "y", time) });
2301
2303
  const paint = (property) => _nullishCoalesce(trackValue(timeline.tracks.get(motionTrackKey(id, property)), time), () => ( motionRestValue(entry, property, scene.artwork)));
2302
2304
  const fill = paint("fill");
2303
2305
  const stroke = paint("stroke");
@@ -2644,7 +2646,7 @@ function toFlairSvgMotion(scene, options = {}) {
2644
2646
  raw: (t) => transformAt(t, true)
2645
2647
  });
2646
2648
  }
2647
- const paths = node.type === "path" ? [node] : _chunkHRI3ZMDMcjs.collectPathNodes.call(void 0, node);
2649
+ const paths = node.type === "path" ? [node] : _chunkRHXW4TA5cjs.collectPathNodes.call(void 0, node);
2648
2650
  for (const path of paths) {
2649
2651
  if (pathsSeen.has(path.id)) continue;
2650
2652
  pathsSeen.add(path.id);
@@ -2666,7 +2668,7 @@ function toFlairSvgMotion(scene, options = {}) {
2666
2668
  if (shapeSegments.length) {
2667
2669
  if (node.type !== "path") notes.push(`"${id}" is a group: its morph or effect animation is not exported (Flair tweens one path's "d").`);
2668
2670
  else {
2669
- const inverse = _chunkHRI3ZMDMcjs.invertMatrix.call(void 0, _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, node));
2671
+ const inverse = _chunkRHXW4TA5cjs.invertMatrix.call(void 0, _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, node));
2670
2672
  channels.push({
2671
2673
  id,
2672
2674
  kind: "attr",
@@ -2675,9 +2677,9 @@ function toFlairSvgMotion(scene, options = {}) {
2675
2677
  exact: () => false,
2676
2678
  value: (t) => {
2677
2679
  const frame = motionFrameAt(scene, t, { draw: false, offsets: false });
2678
- const now = _chunkHRI3ZMDMcjs.expandVectorAppearance.call(void 0, _optionalChain([indexMotionNodes, 'call', _114 => _114(frame.document.nodes), 'access', _115 => _115.get, 'call', _116 => _116(id), 'optionalAccess', _117 => _117.node]));
2680
+ const now = _chunkRHXW4TA5cjs.expandVectorAppearance.call(void 0, _optionalChain([indexMotionNodes, 'call', _114 => _114(frame.document.nodes), 'access', _115 => _115.get, 'call', _116 => _116(id), 'optionalAccess', _117 => _117.node]));
2679
2681
  if (!now || now.type !== "path") return "";
2680
- const bezier = _chunkGF2RBSDMcjs.transformBezierPath.call(void 0, _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, now, _chunkHRI3ZMDMcjs.IDENTITY_MATRIX, { effects: false }), inverse);
2682
+ const bezier = _chunkGF2RBSDMcjs.transformBezierPath.call(void 0, _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, now, _chunkRHXW4TA5cjs.IDENTITY_MATRIX, { effects: false }), inverse);
2681
2683
  return _chunkGF2RBSDMcjs.bezierPathToSvg.call(void 0, bezier, { precision: Math.min(precision, 2) });
2682
2684
  }
2683
2685
  });
@@ -2784,7 +2786,7 @@ function toFlairSvgMotion(scene, options = {}) {
2784
2786
  }
2785
2787
  if (scene.motionBlur) notes.push("Motion blur is drawn on the stage only; Flair plays the scene sharp.");
2786
2788
  if (trigger && (_nullishCoalesce(scene.loop, () => ( "none"))) !== "none") notes.push(`The scene plays on ${trigger}, so its loop does not apply in Flair.`);
2787
- let svg = _chunkHRI3ZMDMcjs.vectorDocumentToSvg.call(void 0, { ...scene.artwork, nodes: _chunkHRI3ZMDMcjs.expandVectorAppearances.call(void 0, scene.artwork.nodes) }, { pretty: false, precision, wrap });
2789
+ let svg = _chunkRHXW4TA5cjs.vectorDocumentToSvg.call(void 0, { ...scene.artwork, nodes: _chunkRHXW4TA5cjs.expandVectorAppearances.call(void 0, scene.artwork.nodes) }, { pretty: false, precision, wrap });
2788
2790
  if (routes.length) svg = svg.replace(/^(<svg[^>]*>)/, `$1<defs>${routes.join("")}</defs>`);
2789
2791
  let motion = { svg, animate };
2790
2792
  if (_optionalChain([scene, 'access', _120 => _120.controls, 'optionalAccess', _121 => _121.length])) {
@@ -2868,14 +2870,14 @@ function easingOf(ease, fallback) {
2868
2870
  return fallback;
2869
2871
  }
2870
2872
  function poseOf(value, entry) {
2871
- const t = _chunkHRI3ZMDMcjs.parseSvgTransform.call(void 0, String(value));
2872
- const o = _chunkHRI3ZMDMcjs.multiplyMatrices.call(void 0, _nullishCoalesce(_chunkHRI3ZMDMcjs.invertMatrix.call(void 0, _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, entry.node)), () => ( [1, 0, 0, 1, 0, 0])), t);
2873
+ const t = _chunkRHXW4TA5cjs.parseSvgTransform.call(void 0, String(value));
2874
+ const o = _chunkRHXW4TA5cjs.multiplyMatrices.call(void 0, _nullishCoalesce(_chunkRHXW4TA5cjs.invertMatrix.call(void 0, _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, entry.node)), () => ( [1, 0, 0, 1, 0, 0])), t);
2873
2875
  const sx = Math.hypot(o[0], o[1]);
2874
2876
  if (!(sx > 1e-9)) return null;
2875
2877
  const sy = (o[0] * o[3] - o[1] * o[2]) / sx;
2876
2878
  if (Math.abs(o[2] + o[1] / sx * sy) > 1e-6 || Math.abs(o[3] - o[0] / sx * sy) > 1e-6) return null;
2877
2879
  const c = entry.center;
2878
- const moved = _chunkHRI3ZMDMcjs.applyMatrix.call(void 0, o, c);
2880
+ const moved = _chunkRHXW4TA5cjs.applyMatrix.call(void 0, o, c);
2879
2881
  return { dx: moved.x - c.x, dy: moved.y - c.y, rotation: Math.atan2(o[1], o[0]) * 180 / Math.PI, sx, sy };
2880
2882
  }
2881
2883
  var near = (a, b, eps = 1e-6) => Math.abs(a - b) < eps;
@@ -2960,7 +2962,7 @@ function fromFlairSvgMotion(input, options = {}) {
2960
2962
  const notes = [];
2961
2963
  if (!input || typeof input.svg !== "string") throw new Error('Give a Flair SvgMotion: { svg: "<svg \u2026>", animate: [ \u2026 ] }.');
2962
2964
  const { motion, controls } = resolvePlaceholders(input, notes);
2963
- const artwork = _chunkHRI3ZMDMcjs.parseVectorSvg.call(void 0, motion.svg);
2965
+ const artwork = _chunkRHXW4TA5cjs.parseVectorSvg.call(void 0, motion.svg);
2964
2966
  const nodes = indexMotionNodes(artwork.nodes);
2965
2967
  const byStep = /* @__PURE__ */ new Map();
2966
2968
  for (const anim of _nullishCoalesce(motion.animate, () => ( []))) {
@@ -3207,9 +3209,9 @@ function toLottie(scene, options = {}) {
3207
3209
  const items = [];
3208
3210
  const shapeSegments = [...timeline.tracks.entries()].filter(([k]) => k.startsWith(`${path.id}\0`) && (k.endsWith("\0shape") || k.includes("\0effect:"))).flatMap(([, v]) => v);
3209
3211
  const geometryAt = (t) => {
3210
- if (!shapeSegments.length) return _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, path);
3212
+ if (!shapeSegments.length) return _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, path);
3211
3213
  const now = _optionalChain([indexMotionNodes, 'call', _130 => _130(motionFrameAt(scene, t, { draw: false, offsets: false }).document.nodes), 'access', _131 => _131.get, 'call', _132 => _132(path.id), 'optionalAccess', _133 => _133.node]);
3212
- return now && now.type === "path" ? _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, _chunkHRI3ZMDMcjs.expandVectorAppearances.call(void 0, [now])[0]) : _chunkHRI3ZMDMcjs.vectorPathWorldBezier.call(void 0, path);
3214
+ return now && now.type === "path" ? _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, _chunkRHXW4TA5cjs.expandVectorAppearances.call(void 0, [now])[0]) : _chunkRHXW4TA5cjs.vectorPathWorldBezier.call(void 0, path);
3213
3215
  };
3214
3216
  const rest = lottieContours(_chunkGF2RBSDMcjs.toBezierPath.call(void 0, geometryAt(0)), round3);
3215
3217
  rest.forEach((contour, n) => {
@@ -3282,13 +3284,13 @@ function toLottie(scene, options = {}) {
3282
3284
  const innerTr = STATIC_TR();
3283
3285
  if (node.type === "path") inner = [...pathShapes(node)];
3284
3286
  else if (node.type === "text" || node.type === "instance") {
3285
- const drawn = _chunkHRI3ZMDMcjs.expandVectorAppearance.call(void 0, node);
3287
+ const drawn = _chunkRHXW4TA5cjs.expandVectorAppearance.call(void 0, node);
3286
3288
  inner = drawn.type === "path" ? [...pathShapes(drawn)] : drawn.children.filter((c) => c.type === "path").reverse().flatMap((c) => [...pathShapes(c)]);
3287
- notes.push(`"${node.id}": text is exported as its outlines${_chunkHRI3ZMDMcjs.vectorTextHasOutlines.call(void 0, ) ? "" : " (glyph boxes: set an outline text shaper for real glyphs)"}.`);
3289
+ notes.push(`"${node.id}": text is exported as its outlines${_chunkRHXW4TA5cjs.vectorTextHasOutlines.call(void 0, ) ? "" : " (glyph boxes: set an outline text shaper for real glyphs)"}.`);
3288
3290
  } else {
3289
3291
  inner = shown(node.children).reverse().map(nodeGroup);
3290
- const m = _chunkHRI3ZMDMcjs.nodeMatrix.call(void 0, node);
3291
- if (m !== _chunkHRI3ZMDMcjs.IDENTITY_MATRIX) {
3292
+ const m = _chunkRHXW4TA5cjs.nodeMatrix.call(void 0, node);
3293
+ if (m !== _chunkRHXW4TA5cjs.IDENTITY_MATRIX) {
3292
3294
  const parts = staticParts(m);
3293
3295
  if (!parts) notes.push(`"${node.id}": its transform skews, which is not exported; it is drawn without the skew.`);
3294
3296
  else {
@@ -3301,7 +3303,7 @@ function toLottie(scene, options = {}) {
3301
3303
  const body = { ty: "gr", nm: `${node.id} (own)`, it: [...inner, innerTr] };
3302
3304
  return { ty: "gr", nm: _nullishCoalesce(node.name, () => ( node.id)), it: [body, poseTransform(entry)] };
3303
3305
  };
3304
- const artwork = { ...scene.artwork, nodes: _chunkHRI3ZMDMcjs.expandVectorAppearances.call(void 0, scene.artwork.nodes) };
3306
+ const artwork = { ...scene.artwork, nodes: _chunkRHXW4TA5cjs.expandVectorAppearances.call(void 0, scene.artwork.nodes) };
3305
3307
  const content = shown(artwork.nodes).reverse().map(nodeGroup);
3306
3308
  if (artwork.background && rgba(artwork.background))
3307
3309
  content.push({ ty: "gr", nm: "Background", it: [{ ty: "rc", nm: "Background", p: { a: 0, k: [artwork.width / 2, artwork.height / 2] }, s: { a: 0, k: [artwork.width, artwork.height] }, r: { a: 0, k: 0 } }, { ty: "fl", c: { a: 0, k: rgba(artwork.background).map(round3) }, o: { a: 0, k: 100 }, r: 1 }, STATIC_TR()] });
@@ -3400,11 +3402,11 @@ function preset(prst, w, h) {
3400
3402
  const poly = (pts) => [{ closed: true, anchors: pts.map(([x, y]) => ({ x, y })) }];
3401
3403
  switch (prst) {
3402
3404
  case "rect":
3403
- return [_chunkHRI3ZMDMcjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3405
+ return [_chunkRHXW4TA5cjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3404
3406
  case "roundRect":
3405
- return [_chunkHRI3ZMDMcjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h }, Math.min(w, h) * 0.16667)];
3407
+ return [_chunkRHXW4TA5cjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h }, Math.min(w, h) * 0.16667)];
3406
3408
  case "ellipse":
3407
- return [_chunkHRI3ZMDMcjs.ellipseSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3409
+ return [_chunkRHXW4TA5cjs.ellipseSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3408
3410
  case "triangle":
3409
3411
  return poly([[w / 2, 0], [w, h], [0, h]]);
3410
3412
  case "rtTriangle":
@@ -3512,7 +3514,7 @@ function shapes(ctx, tree, map) {
3512
3514
  let subpaths = cust ? custom(cust, w, h) : prst ? preset(prst, w, h) : null;
3513
3515
  if (!subpaths) {
3514
3516
  if (prst) ctx.notes.push(`"${name}" is a ${prst}, drawn as its bounding rectangle.`);
3515
- subpaths = [_chunkHRI3ZMDMcjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3517
+ subpaths = [_chunkRHXW4TA5cjs.rectSubpath.call(void 0, { x: 0, y: 0, width: w, height: h })];
3516
3518
  }
3517
3519
  const style = kid(el, "style");
3518
3520
  const fill = kid(spPr, "noFill") ? null : _nullishCoalesce(colour(ctx, kid(spPr, "solidFill")), () => ( (el.localName === "cxnSp" ? null : colour(ctx, kid(style, "fillRef")))));
@@ -3750,7 +3752,7 @@ function nextMotionEffectInstance(scene) {
3750
3752
  walk(scene.artwork.nodes);
3751
3753
  for (let i = 1; ; i++) if (!used.has(`fx${i}`)) return `fx${i}`;
3752
3754
  }
3753
- var motionArtworkSvg = (artwork) => _chunkHRI3ZMDMcjs.vectorDocumentToSvg.call(void 0, artwork);
3755
+ var motionArtworkSvg = (artwork) => _chunkRHXW4TA5cjs.vectorDocumentToSvg.call(void 0, artwork);
3754
3756
  var tag = (commands, source) => commands.map((c) => c.type === "wait" ? c : { ...c, source });
3755
3757
  function motionCommandsFromEffect(artwork, motion, source) {
3756
3758
  const imported = fromFlairSvgMotion({ svg: motionArtworkSvg(artwork), animate: [..._nullishCoalesce(motion.animate, () => ( []))] });
@@ -3839,7 +3841,7 @@ var AnimationEditorController = (_class = class {
3839
3841
  this.readOnly = _nullishCoalesce(options.readOnly, () => ( false));
3840
3842
  this.onChange = options.onChange;
3841
3843
  if (options.effects) this.effects.set(options.effects);
3842
- this.player = new (0, _chunkUUTTJK77cjs.AnimationPlayer)({ clock: options.clock, duration: () => compileMotionScene(this.scene).duration, loop: _nullishCoalesce(this.scene.loop, () => ( "none")) });
3844
+ this.player = new (0, _chunkSUF6WRXRcjs.AnimationPlayer)({ clock: options.clock, duration: () => compileMotionScene(this.scene).duration, loop: _nullishCoalesce(this.scene.loop, () => ( "none")) });
3843
3845
  this.state = this.computeState();
3844
3846
  this.connect();
3845
3847
  }
@@ -5077,7 +5079,7 @@ function createAnimationEditorToolProvider(controller, options = {}) {
5077
5079
  handler: ({ svg }) => {
5078
5080
  let artwork;
5079
5081
  try {
5080
- artwork = _chunkHRI3ZMDMcjs.parseVectorSvg.call(void 0, svg);
5082
+ artwork = _chunkRHXW4TA5cjs.parseVectorSvg.call(void 0, svg);
5081
5083
  } catch (error) {
5082
5084
  throw new Error(`The SVG could not be read: ${error.message}. Nothing was changed.`);
5083
5085
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createVectorMorph
3
- } from "../chunk-DAS7M4RY.js";
3
+ } from "../chunk-UILRJQFD.js";
4
4
  import {
5
5
  MOTION_ISSUE_CODES,
6
6
  motionIssue,
@@ -31,7 +31,7 @@ import {
31
31
  vectorNodeBounds,
32
32
  vectorPathWorldBezier,
33
33
  vectorTextHasOutlines
34
- } from "../chunk-77SG47WT.js";
34
+ } from "../chunk-FLOGD3QB.js";
35
35
  import "../chunk-ORDXMBD4.js";
36
36
  import "../chunk-M6DNZNVY.js";
37
37
  import {
@@ -68,7 +68,7 @@ import {
68
68
  } from "../chunk-DS4WGCLJ.js";
69
69
  import {
70
70
  AnimationPlayer
71
- } from "../chunk-QX25HWFL.js";
71
+ } from "../chunk-AY65VQSU.js";
72
72
  import {
73
73
  ANIMATION_EASING_LABELS,
74
74
  ANIMATION_EASING_PRESETS,
@@ -80,12 +80,14 @@ import {
80
80
  } from "../chunk-5UJHB3BW.js";
81
81
  import {
82
82
  mixColorsOklab
83
- } from "../chunk-45VRG4RB.js";
83
+ } from "../chunk-KY3FYKP3.js";
84
84
  import {
85
85
  hexToRgba,
86
86
  normalizeTokenColor,
87
87
  rgbaToHex
88
88
  } from "../chunk-2WPNAGHI.js";
89
+ import "../chunk-AA34BA7G.js";
90
+ import "../chunk-6ONMQ6WF.js";
89
91
 
90
92
  // src/animation-editor/types.ts
91
93
  var MOTION_TRIGGERS = ["click", "hover", "press", "scroll"];