@weasel-js/ui 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/chunks/ActionBar-CiKvEvXi.js +63 -0
  2. package/dist/chunks/ActionBar-CiKvEvXi.js.map +1 -0
  3. package/dist/chunks/ActionsBar-CzU6Of3B.js +94 -0
  4. package/dist/chunks/ActionsBar-CzU6Of3B.js.map +1 -0
  5. package/dist/chunks/Badge-DU8ihE7Z.js +2942 -0
  6. package/dist/chunks/Badge-DU8ihE7Z.js.map +1 -0
  7. package/dist/chunks/Button-9QNIYugK.js +87 -0
  8. package/dist/chunks/Button-9QNIYugK.js.map +1 -0
  9. package/dist/chunks/Callout-CvTKW1sd.js +114 -0
  10. package/dist/chunks/Callout-CvTKW1sd.js.map +1 -0
  11. package/dist/chunks/Checkbox-BeWFZr1M.js +47 -0
  12. package/dist/chunks/Checkbox-BeWFZr1M.js.map +1 -0
  13. package/dist/chunks/ColorField-B7vHaU5G.js +60 -0
  14. package/dist/chunks/ColorField-B7vHaU5G.js.map +1 -0
  15. package/dist/chunks/ComboBox-yfrxG0_I.js +88 -0
  16. package/dist/chunks/ComboBox-yfrxG0_I.js.map +1 -0
  17. package/dist/chunks/CurveEditor-BEQtef4P.js +786 -0
  18. package/dist/chunks/CurveEditor-BEQtef4P.js.map +1 -0
  19. package/dist/chunks/DataGrid-mUq38k0Q.js +186 -0
  20. package/dist/chunks/DataGrid-mUq38k0Q.js.map +1 -0
  21. package/dist/chunks/Dialog-tAi14bY3.js +58 -0
  22. package/dist/chunks/Dialog-tAi14bY3.js.map +1 -0
  23. package/dist/chunks/Field-4cagmYlT.js +31 -0
  24. package/dist/chunks/Field-4cagmYlT.js.map +1 -0
  25. package/dist/chunks/Input-DRei6KJr.js +55 -0
  26. package/dist/chunks/Input-DRei6KJr.js.map +1 -0
  27. package/dist/chunks/Keycaps-B9dJMYx_.js +397 -0
  28. package/dist/chunks/Keycaps-B9dJMYx_.js.map +1 -0
  29. package/dist/chunks/NumberField-BAmJwxw0.js +59 -0
  30. package/dist/chunks/NumberField-BAmJwxw0.js.map +1 -0
  31. package/dist/chunks/OptionsBar-CHOP_CiW.js +98 -0
  32. package/dist/chunks/OptionsBar-CHOP_CiW.js.map +1 -0
  33. package/dist/chunks/Plot2D-CEnhzodm.js +168 -0
  34. package/dist/chunks/Plot2D-CEnhzodm.js.map +1 -0
  35. package/dist/chunks/PointPlotter-Dvh5cyOC.js +16 -0
  36. package/dist/chunks/PointPlotter-Dvh5cyOC.js.map +1 -0
  37. package/dist/chunks/Powerline-W_yqAVMc.js +36 -0
  38. package/dist/chunks/Powerline-W_yqAVMc.js.map +1 -0
  39. package/dist/chunks/Prefs-NOoGuUHy.js +238 -0
  40. package/dist/chunks/Prefs-NOoGuUHy.js.map +1 -0
  41. package/dist/chunks/RadioGroup-DUlTy95a.js +49 -0
  42. package/dist/chunks/RadioGroup-DUlTy95a.js.map +1 -0
  43. package/dist/chunks/RangeSlider-Bks9GQuO.js +52 -0
  44. package/dist/chunks/RangeSlider-Bks9GQuO.js.map +1 -0
  45. package/dist/chunks/Select-BV70VU5O.js +97 -0
  46. package/dist/chunks/Select-BV70VU5O.js.map +1 -0
  47. package/dist/chunks/SelectionPanel-D_U7GKup.js +283 -0
  48. package/dist/chunks/SelectionPanel-D_U7GKup.js.map +1 -0
  49. package/dist/chunks/Sidebar-Bk9_TPhX.js +26 -0
  50. package/dist/chunks/Sidebar-Bk9_TPhX.js.map +1 -0
  51. package/dist/chunks/SidebarPanel-Nd9Od5WD.js +59 -0
  52. package/dist/chunks/SidebarPanel-Nd9Od5WD.js.map +1 -0
  53. package/dist/chunks/Slider-sUJGgmKR.js +221 -0
  54. package/dist/chunks/Slider-sUJGgmKR.js.map +1 -0
  55. package/dist/chunks/Switch-iUmlnP_b.js +27 -0
  56. package/dist/chunks/Switch-iUmlnP_b.js.map +1 -0
  57. package/dist/chunks/Tabs-DCs-Ww2f.js +41 -0
  58. package/dist/chunks/Tabs-DCs-Ww2f.js.map +1 -0
  59. package/dist/chunks/Toast-NdSJo2vj.js +128 -0
  60. package/dist/chunks/Toast-NdSJo2vj.js.map +1 -0
  61. package/dist/chunks/ToggleBar-BfcvLaOr.js +120 -0
  62. package/dist/chunks/ToggleBar-BfcvLaOr.js.map +1 -0
  63. package/dist/chunks/ToolButton-GAzBOvcR.js +53 -0
  64. package/dist/chunks/ToolButton-GAzBOvcR.js.map +1 -0
  65. package/dist/chunks/ToolGroup-Btg47vJF.js +25 -0
  66. package/dist/chunks/ToolGroup-Btg47vJF.js.map +1 -0
  67. package/dist/chunks/ToolPalette-C8V-I-uX.js +117 -0
  68. package/dist/chunks/ToolPalette-C8V-I-uX.js.map +1 -0
  69. package/dist/chunks/Tooltip-Clgn4trm.js +39 -0
  70. package/dist/chunks/Tooltip-Clgn4trm.js.map +1 -0
  71. package/dist/chunks/keyGlyph-BDH5fqkO.js +22 -0
  72. package/dist/chunks/keyGlyph-BDH5fqkO.js.map +1 -0
  73. package/dist/components/ActionBar/index.js +2 -0
  74. package/dist/components/ActionsBar/index.js +2 -0
  75. package/dist/components/Badge/index.js +2 -0
  76. package/dist/components/Button/index.js +2 -0
  77. package/dist/components/Callout/index.js +2 -0
  78. package/dist/components/Checkbox/index.js +2 -0
  79. package/dist/components/ColorField/index.js +2 -0
  80. package/dist/components/ComboBox/index.js +2 -0
  81. package/dist/components/CurveEditor/index.js +2 -0
  82. package/dist/components/DataGrid/index.js +2 -0
  83. package/dist/components/Dialog/index.js +2 -0
  84. package/dist/components/Field/index.js +2 -0
  85. package/dist/components/Input/index.js +2 -0
  86. package/dist/components/Keycaps/index.js +3 -0
  87. package/dist/components/NumberField/index.js +2 -0
  88. package/dist/components/OptionsBar/index.js +2 -0
  89. package/dist/components/Plot2D/index.js +2 -0
  90. package/dist/components/PointPlotter/index.js +2 -0
  91. package/dist/components/Powerline/index.js +3 -0
  92. package/dist/components/Prefs/index.js +2 -0
  93. package/dist/components/RadioGroup/index.js +2 -0
  94. package/dist/components/RangeSlider/index.js +2 -0
  95. package/dist/components/Select/index.js +2 -0
  96. package/dist/components/SelectionPanel/index.js +2 -0
  97. package/dist/components/Sidebar/index.js +2 -0
  98. package/dist/components/SidebarPanel/index.js +2 -0
  99. package/dist/components/Slider/index.js +2 -0
  100. package/dist/components/Switch/index.js +2 -0
  101. package/dist/components/Tabs/index.js +2 -0
  102. package/dist/components/Toast/index.js +2 -0
  103. package/dist/components/ToggleBar/index.js +2 -0
  104. package/dist/components/ToolButton/index.js +2 -0
  105. package/dist/components/ToolGroup/index.js +2 -0
  106. package/dist/components/ToolPalette/index.js +2 -0
  107. package/dist/components/Tooltip/index.js +2 -0
  108. package/dist/index.js +49 -6749
  109. package/dist/index.js.map +1 -1
  110. package/dist/style.css +1 -1
  111. package/package.json +8 -4
@@ -0,0 +1,786 @@
1
+ import { i as e, n as t, r as n, t as r } from "./Plot2D-CEnhzodm.js";
2
+ import { useCallback as i, useEffect as a, useMemo as o, useRef as s, useState as c } from "react";
3
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
4
+ //#region src/components/CurveEditor/catmullRom.ts
5
+ function f(e, t, n) {
6
+ let r = t.x - e.x, i = t.y - e.y;
7
+ return Math.sqrt(r * r + i * i) ** +n;
8
+ }
9
+ function p(e, t, n, r, i, a = .5) {
10
+ let o = 0 + f(e, t, a), s = o + f(t, n, a), c = s + f(n, r, a);
11
+ if (s - o === 0) return {
12
+ x: t.x + (n.x - t.x) * i,
13
+ y: t.y + (n.y - t.y) * i
14
+ };
15
+ let l = o + i * (s - o), u = ((o - l) * e.x + (l - 0) * t.x) / (o - 0), d = ((o - l) * e.y + (l - 0) * t.y) / (o - 0), p = ((s - l) * t.x + (l - o) * n.x) / (s - o), m = ((s - l) * t.y + (l - o) * n.y) / (s - o), h = ((c - l) * n.x + (l - s) * r.x) / (c - s), g = ((c - l) * n.y + (l - s) * r.y) / (c - s), _ = ((s - l) * u + (l - 0) * p) / (s - 0), v = ((s - l) * d + (l - 0) * m) / (s - 0), y = ((c - l) * p + (l - o) * h) / (c - o), b = ((c - l) * m + (l - o) * g) / (c - o);
16
+ return {
17
+ x: ((s - l) * _ + (l - o) * y) / (s - o),
18
+ y: ((s - l) * v + (l - o) * b) / (s - o)
19
+ };
20
+ }
21
+ function m(e, t, n = .5) {
22
+ if (e.length < 2) return [];
23
+ t < 1 && (t = 1);
24
+ let r = e.length, i = [], a = {
25
+ x: 2 * e[0].x - e[1].x,
26
+ y: 2 * e[0].y - e[1].y
27
+ }, o = {
28
+ x: 2 * e[r - 1].x - e[r - 2].x,
29
+ y: 2 * e[r - 1].y - e[r - 2].y
30
+ };
31
+ for (let s = 0; s < r - 1; s++) {
32
+ let c = s === 0 ? a : e[s - 1], l = e[s], u = e[s + 1], d = s + 2 < r ? e[s + 2] : o, f = s === 0 ? 0 : 1;
33
+ for (let e = f; e <= t; e++) {
34
+ if (e === 0) {
35
+ i.push(l);
36
+ continue;
37
+ }
38
+ if (e === t) {
39
+ i.push(u);
40
+ continue;
41
+ }
42
+ let r = e / t;
43
+ i.push(p(c, l, u, d, r, n));
44
+ }
45
+ }
46
+ return i;
47
+ }
48
+ //#endregion
49
+ //#region src/components/CurveEditor/monotone.ts
50
+ function h(e) {
51
+ let t = e.length;
52
+ if (t === 0) return [];
53
+ if (t === 1) return [0];
54
+ let n = Array(t - 1);
55
+ for (let r = 0; r < t - 1; r++) n[r] = e[r + 1] - e[r];
56
+ let r = Array(t);
57
+ r[0] = n[0], r[t - 1] = n[t - 2];
58
+ for (let e = 1; e < t - 1; e++) if (n[e - 1] * n[e] <= 0) r[e] = 0;
59
+ else {
60
+ let t = (n[e - 1] + n[e]) / 2, i = Math.min(Math.abs(n[e - 1]), Math.abs(n[e]), Math.abs(t));
61
+ r[e] = Math.sign(t) * i;
62
+ }
63
+ return r;
64
+ }
65
+ function g(e, t, n, r, i) {
66
+ let a = i * i, o = a * i;
67
+ return (2 * o - 3 * a + 1) * e + (o - 2 * a + i) * n + (-2 * o + 3 * a) * t + (o - a) * r;
68
+ }
69
+ function _(e, t) {
70
+ if (e.length < 2) return [];
71
+ t < 1 && (t = 1);
72
+ let n = e.length, r = e.map((e) => e.x), i = e.map((e) => e.y), a = h(r), o = h(i), s = [];
73
+ for (let c = 0; c < n - 1; c++) {
74
+ let n = c === 0 ? 0 : 1;
75
+ for (let l = n; l <= t; l++) {
76
+ if (l === 0) {
77
+ s.push(e[c]);
78
+ continue;
79
+ }
80
+ if (l === t) {
81
+ s.push(e[c + 1]);
82
+ continue;
83
+ }
84
+ let n = l / t;
85
+ s.push({
86
+ x: g(r[c], r[c + 1], a[c], a[c + 1], n),
87
+ y: g(i[c], i[c + 1], o[c], o[c + 1], n)
88
+ });
89
+ }
90
+ }
91
+ return s;
92
+ }
93
+ //#endregion
94
+ //#region src/components/CurveEditor/interpolation.ts
95
+ function v(e, t) {
96
+ if (e.length < 2) return [];
97
+ t < 1 && (t = 1);
98
+ let n = [];
99
+ for (let r = 0; r < e.length - 1; r++) {
100
+ let i = e[r], a = e[r + 1], o = r === 0 ? 0 : 1;
101
+ for (let e = o; e <= t; e++) {
102
+ if (e === 0) {
103
+ n.push(i);
104
+ continue;
105
+ }
106
+ if (e === t) {
107
+ n.push(a);
108
+ continue;
109
+ }
110
+ let r = e / t;
111
+ n.push({
112
+ x: i.x + (a.x - i.x) * r,
113
+ y: i.y + (a.y - i.y) * r
114
+ });
115
+ }
116
+ }
117
+ return n;
118
+ }
119
+ function y(e, t, n) {
120
+ switch (n) {
121
+ case "linear": return v(e, t);
122
+ case "catmull-rom-uniform": return m(e, t, 0);
123
+ case "catmull-rom-chordal": return m(e, t, 1);
124
+ case "monotone": return _(e, t);
125
+ default: return m(e, t, .5);
126
+ }
127
+ }
128
+ //#endregion
129
+ //#region src/components/CurveEditor/hitTest.ts
130
+ function b(e, t, n) {
131
+ let r = n * n, i = null;
132
+ for (let n = 0; n < e.length; n++) {
133
+ let a = e[n], o = a.x - t.x, s = a.y - t.y, c = o * o + s * s;
134
+ c > r || (i === null || c < i.d2) && (i = {
135
+ index: n,
136
+ d2: c
137
+ });
138
+ }
139
+ return i ? { index: i.index } : null;
140
+ }
141
+ function x(e, t, n) {
142
+ let r = n * n, i = null;
143
+ for (let n = 0; n < e.length; n++) {
144
+ let a = e[n];
145
+ if (a.length < 2) continue;
146
+ let o = a.length - 1;
147
+ for (let e = 0; e < o; e++) {
148
+ let s = a[e], c = a[e + 1], l = c.x - s.x, u = c.y - s.y, d = t.x - s.x, f = t.y - s.y, p = l * l + u * u, m = p > 0 ? (d * l + f * u) / p : 0;
149
+ m < 0 ? m = 0 : m > 1 && (m = 1);
150
+ let h = s.x + m * l, g = s.y + m * u, _ = h - t.x, v = g - t.y, y = _ * _ + v * v;
151
+ if (y > r) continue;
152
+ let b = (e + m) / o;
153
+ (i === null || y < i.d2) && (i = {
154
+ segIdx: n,
155
+ t: b,
156
+ d2: y
157
+ });
158
+ }
159
+ }
160
+ return i ? {
161
+ segIdx: i.segIdx,
162
+ t: i.t
163
+ } : null;
164
+ }
165
+ var S = {
166
+ root: "_root_ybpym_1",
167
+ fill: "_fill_ybpym_19",
168
+ curve: "_curve_ybpym_25",
169
+ anchor: "_anchor_ybpym_32",
170
+ active: "_active_ybpym_43",
171
+ pinned: "_pinned_ybpym_48",
172
+ locked: "_locked_ybpym_55",
173
+ endpoint: "_endpoint_ybpym_63",
174
+ hidden: "_hidden_ybpym_71"
175
+ }, C = 16, w = 12, T = 8;
176
+ function E(e, t) {
177
+ let n = t.modelRange, r = Math.min(n.xMin, n.xMax), i = Math.max(n.xMin, n.xMax), a = Math.min(n.yMin, n.yMax), o = Math.max(n.yMin, n.yMax);
178
+ return {
179
+ x: Math.max(r, Math.min(i, e.x)),
180
+ y: Math.max(a, Math.min(o, e.y))
181
+ };
182
+ }
183
+ function D(e, t, n) {
184
+ return n === "free" ? !1 : e === 0 || e === t - 1;
185
+ }
186
+ function O(e, t) {
187
+ return e.map((e) => t.toPlot(e));
188
+ }
189
+ function k(e, t, n) {
190
+ if (e.length < 2) return [];
191
+ let r = y(e, C, t), i = [];
192
+ for (let t = 0; t < e.length - 1; t++) {
193
+ let e = t * C, a = e + C, o = r.slice(e, a + 1);
194
+ i.push(o.map((e) => n.toPlot(e)));
195
+ }
196
+ return i;
197
+ }
198
+ function A(e) {
199
+ return (e.constrain ?? "none") === "function" ? "monotone" : e.interpolation ?? "catmull-rom";
200
+ }
201
+ function j(t = {}) {
202
+ let n = t.id ?? "function", r = t.domain ?? "2d", i = t.endpoints ?? "free", a = t.constrain ?? "none", o = t.addPointMode ?? "click-curve", s = A(t), c = t.interactive !== !1, f = t.curve !== !1 && t.curve !== null;
203
+ function p(e, n) {
204
+ let { points: r, activeIndex: a } = e, o = O(r, n), p = "", m = null;
205
+ if (r.length >= 2) {
206
+ let e = y(r, C, s).map((e) => n.toPlot(e)), i = [`M${e[0].x.toFixed(2)},${e[0].y.toFixed(2)}`];
207
+ for (let t = 1; t < e.length; t++) i.push(`L${e[t].x.toFixed(2)},${e[t].y.toFixed(2)}`);
208
+ if (p = i.join(""), t.fill) {
209
+ let r = t.fill.side === "below" ? n.plotSize.height : 0, a = e[0], o = e[e.length - 1], s = [...i];
210
+ s.push(`L${o.x.toFixed(2)},${r.toFixed(2)}`), s.push(`L${a.x.toFixed(2)},${r.toFixed(2)}`), s.push("Z"), m = s.join("");
211
+ }
212
+ }
213
+ return /* @__PURE__ */ d(l, { children: [
214
+ m && /* @__PURE__ */ u("path", {
215
+ "data-curve-element": "fill",
216
+ className: S.fill,
217
+ d: m,
218
+ fill: t.fill ? t.fill.color : void 0
219
+ }),
220
+ p && f && /* @__PURE__ */ u("path", {
221
+ className: S.curve,
222
+ d: p,
223
+ fill: "none"
224
+ }),
225
+ c && o.map((e, n) => {
226
+ let o = D(n, r.length, i), s = r[n]?.locked === !0;
227
+ if ((s || o) && t.hideNonInteractive) return null;
228
+ let c = a === n, l = f && (n === 0 || n === r.length - 1);
229
+ if (t.renderAnchor) {
230
+ let i = t.renderAnchor({
231
+ point: r[n],
232
+ index: n,
233
+ cx: e.x,
234
+ cy: e.y,
235
+ isActive: c,
236
+ isLocked: s,
237
+ isPinnedEndpoint: o,
238
+ isEndpoint: l
239
+ });
240
+ if (i != null) return /* @__PURE__ */ u("g", {
241
+ "data-anchor-index": n,
242
+ children: i
243
+ }, n);
244
+ }
245
+ let d = [
246
+ S.anchor,
247
+ l && S.endpoint,
248
+ (o || s) && S.pinned,
249
+ s && S.locked,
250
+ c && S.active
251
+ ].filter(Boolean).join(" ");
252
+ if (l || s) {
253
+ let t = s ? 3.55 : 5;
254
+ return /* @__PURE__ */ u("rect", {
255
+ className: d,
256
+ x: e.x - t,
257
+ y: e.y - t,
258
+ width: t * 2,
259
+ height: t * 2,
260
+ transform: `rotate(45 ${e.x} ${e.y})`,
261
+ "data-anchor-index": n
262
+ }, n);
263
+ }
264
+ return /* @__PURE__ */ u("circle", {
265
+ className: d,
266
+ cx: e.x,
267
+ cy: e.y,
268
+ r: 4,
269
+ "data-anchor-index": n
270
+ }, n);
271
+ })
272
+ ] });
273
+ }
274
+ function m(e, t, n) {
275
+ if (!c) return null;
276
+ let r = b(O(e.points, n), t, w);
277
+ if (r) return {
278
+ kind: "anchor",
279
+ payload: { index: r.index }
280
+ };
281
+ if (o === "click-curve" && f) {
282
+ let r = x(k(e.points, s, n), t, T);
283
+ if (r) return {
284
+ kind: "curve",
285
+ payload: {
286
+ segIdx: r.segIdx,
287
+ t: r.t
288
+ }
289
+ };
290
+ }
291
+ return null;
292
+ }
293
+ function h(e) {
294
+ return {
295
+ onMove(n, o, s, c) {
296
+ let l = n.points;
297
+ if (e < 0 || e >= l.length) return n;
298
+ let u = c.modelRange, d = t.xClamp ? t.xClamp[0] : u.xMin, f = t.xClamp ? t.xClamp[1] : u.xMax, p = o.x, m = o.y, h = e === 0 || e === l.length - 1;
299
+ if (i === "pinned-both" && h) p = e === 0 ? d : f, m = e === 0 ? u.yMin : u.yMax;
300
+ else if (i === "pinned-x" && h) p = e === 0 ? d : f;
301
+ else if (a === "function" || r === "1d") {
302
+ let t = a === "function" ? (f - d) / 1e3 : 0, n = e > 0 ? l[e - 1].x + t : d, r = e < l.length - 1 ? l[e + 1].x - t : f;
303
+ p = Math.max(n, Math.min(r, p));
304
+ }
305
+ p = Math.max(Math.min(d, f), Math.min(Math.max(d, f), p));
306
+ let g = E({
307
+ x: p,
308
+ y: m
309
+ }, c), _ = l.slice();
310
+ return _[e] = {
311
+ ...l[e],
312
+ x: g.x,
313
+ y: g.y
314
+ }, {
315
+ ...n,
316
+ points: _,
317
+ activeIndex: e
318
+ };
319
+ },
320
+ onCommit(e) {
321
+ return {
322
+ ...e,
323
+ activeIndex: null
324
+ };
325
+ },
326
+ onCancel(e) {
327
+ return {
328
+ ...e,
329
+ activeIndex: null
330
+ };
331
+ }
332
+ };
333
+ }
334
+ function g(o, s, c, l, u) {
335
+ if (s.kind === "anchor") {
336
+ let { index: r } = s.payload;
337
+ if (e("function-layer", "anchor-down", {
338
+ id: n,
339
+ index: r,
340
+ shift: l.modifiers.shift,
341
+ button: c.button
342
+ }), o.points[r]?.locked) return;
343
+ if (l.modifiers.shift) {
344
+ if (D(r, o.points.length, i) || t.minPoints !== void 0 && o.points.length <= t.minPoints) return;
345
+ u.commit({
346
+ ...o,
347
+ points: o.points.filter((e, t) => t !== r),
348
+ activeIndex: null
349
+ });
350
+ return;
351
+ }
352
+ return c.button === 2 ? void 0 : (u.commit({
353
+ ...o,
354
+ activeIndex: r
355
+ }), h(r));
356
+ }
357
+ if (s.kind === "curve") {
358
+ let { segIdx: e } = s.payload;
359
+ if (t.maxPoints !== void 0 && o.points.length >= t.maxPoints) return;
360
+ let n = e + 1, i = E(u.model, l);
361
+ if (a === "function" || r === "1d") {
362
+ let e = a === "function" ? (l.modelRange.xMax - l.modelRange.xMin) / 1e3 : 0, t = n > 0 ? o.points[n - 1] : null, r = n < o.points.length ? o.points[n] : null;
363
+ if (t && Math.abs(i.x - t.x) < e * 2) return u.commit({
364
+ ...o,
365
+ activeIndex: n - 1
366
+ }), h(n - 1);
367
+ if (r && Math.abs(i.x - r.x) < e * 2) return u.commit({
368
+ ...o,
369
+ activeIndex: n
370
+ }), h(n);
371
+ }
372
+ let c = [
373
+ ...o.points.slice(0, n),
374
+ i,
375
+ ...o.points.slice(n)
376
+ ];
377
+ return u.commit({
378
+ ...o,
379
+ points: c,
380
+ activeIndex: n
381
+ }), h(n);
382
+ }
383
+ }
384
+ function _(e, n, i, a, s) {
385
+ if (!c || o !== "click-empty" || t.maxPoints !== void 0 && e.points.length >= t.maxPoints) return;
386
+ let l = E(n, a), u = e.points.length;
387
+ if (r === "1d") {
388
+ for (let t = 0; t < e.points.length; t++) if (e.points[t].x > l.x) {
389
+ u = t;
390
+ break;
391
+ }
392
+ }
393
+ let d = [
394
+ ...e.points.slice(0, u),
395
+ l,
396
+ ...e.points.slice(u)
397
+ ];
398
+ s.commit({
399
+ ...e,
400
+ points: d,
401
+ activeIndex: null
402
+ });
403
+ }
404
+ return {
405
+ id: n,
406
+ render: p,
407
+ hitTest: m,
408
+ onPointerDown: g,
409
+ onEmptyPointerDown: _
410
+ };
411
+ }
412
+ function M(e) {
413
+ return {
414
+ points: e,
415
+ activeIndex: null
416
+ };
417
+ }
418
+ //#endregion
419
+ //#region src/components/CurveEditor/LayeredCurveEditor.tsx
420
+ function N(e) {
421
+ return {
422
+ shift: e.shiftKey,
423
+ alt: e.altKey,
424
+ meta: e.metaKey,
425
+ ctrl: e.ctrlKey
426
+ };
427
+ }
428
+ function P(l) {
429
+ let { layers: f, onLayerChange: p, onLayerCommit: m, width: h, height: g, xRange: _ = [0, 1], yRange: v = [0, 1], grid: y, axes: b, className: x, style: C, children: w } = l, T = l.history !== !1, E = o(() => ({
430
+ xMin: _[0],
431
+ xMax: _[1],
432
+ yMin: v[0],
433
+ yMax: v[1]
434
+ }), [_, v]), D = o(() => ({
435
+ width: h,
436
+ height: g
437
+ }), [h, g]), O = s(f);
438
+ O.current = f;
439
+ let k = s(E);
440
+ k.current = E;
441
+ let A = s(D);
442
+ A.current = D;
443
+ let j = s(null), M = i((e) => {
444
+ let r = k.current, i = A.current;
445
+ return {
446
+ modelRange: r,
447
+ plotSize: i,
448
+ toPlot: (e) => t(e, r, i),
449
+ toModel: (e) => n(e, r, i),
450
+ modifiers: e
451
+ };
452
+ }, []), P = s(null), [F, I] = c(null), L = s([]), R = s([]), z = i(() => {
453
+ let e = /* @__PURE__ */ new Map();
454
+ for (let t of O.current) e.set(t.layer.id, t.state);
455
+ return e;
456
+ }, []), B = i((e) => {
457
+ let t = O.current;
458
+ for (let n of t) {
459
+ let t = e.get(n.layer.id);
460
+ t !== void 0 && t !== n.state && p(n.layer.id, t);
461
+ }
462
+ }, [p]), V = i(() => {
463
+ if (!T) return;
464
+ let e = L.current;
465
+ if (e.length === 0) return;
466
+ let t = e.pop();
467
+ R.current.push(z()), B(t);
468
+ }, [
469
+ T,
470
+ z,
471
+ B
472
+ ]), H = i(() => {
473
+ if (!T) return;
474
+ let e = R.current;
475
+ if (e.length === 0) return;
476
+ let t = e.pop();
477
+ L.current.push(z()), B(t);
478
+ }, [
479
+ T,
480
+ z,
481
+ B
482
+ ]), U = s(() => {}), W = s(() => {}), G = s(() => {}), K = s((e) => U.current(e)).current, q = s((e) => W.current(e)).current, J = s((e) => G.current(e)).current, Y = i(() => {
483
+ window.removeEventListener("pointermove", K), window.removeEventListener("pointerup", q), window.removeEventListener("pointercancel", J), P.current = null, I(null);
484
+ }, [
485
+ K,
486
+ q,
487
+ J
488
+ ]), X = i((e) => {
489
+ for (let t of O.current) if (t.layer.id === e) return t.state;
490
+ }, []);
491
+ U.current = (e) => {
492
+ let t = P.current;
493
+ if (!t || t.pointerId !== e.pointerId) return;
494
+ let n = j.current;
495
+ if (!n) return;
496
+ let r = n.clientToModel(e), i = X(t.layerId);
497
+ if (i === void 0) return;
498
+ let a = M(N(e)), o = t.gesture.onMove(i, r, e, a);
499
+ o !== i && p(t.layerId, o);
500
+ }, W.current = (e) => {
501
+ let t = P.current;
502
+ if (!t || t.pointerId !== e.pointerId) return;
503
+ let n = X(t.layerId);
504
+ if (n === void 0) {
505
+ Y();
506
+ return;
507
+ }
508
+ let r = M(N(e)), i = t.gesture.onCommit ? t.gesture.onCommit(n, r) : n;
509
+ i !== n && p(t.layerId, i), T && (L.current.push(t.startStates), R.current = []), m && m(t.layerId, i, t.startSelfState), Y();
510
+ }, G.current = (e) => {
511
+ let t = P.current;
512
+ if (!t || t.pointerId !== e.pointerId) return;
513
+ let n = X(t.layerId);
514
+ if (n === void 0) {
515
+ Y();
516
+ return;
517
+ }
518
+ let r = M(N(e)), i = t.gesture.onCancel ? t.gesture.onCancel(n, r) : t.startSelfState;
519
+ i !== n && p(t.layerId, i), Y();
520
+ };
521
+ let Z = i((e, t, n) => {
522
+ let r = z();
523
+ P.current = {
524
+ layerId: e,
525
+ pointerId: t,
526
+ gesture: n,
527
+ startStates: r,
528
+ startSelfState: r.get(e)
529
+ }, I(e), window.addEventListener("pointermove", K), window.addEventListener("pointerup", q), window.addEventListener("pointercancel", J);
530
+ }, [
531
+ z,
532
+ K,
533
+ q,
534
+ J
535
+ ]), Q = i((t, n) => {
536
+ if (P.current) return;
537
+ let r = M(N(t)), i = O.current, a = t.nativeEvent;
538
+ e("layered-curve-editor", "pointerdown", {
539
+ plot: n.plot,
540
+ model: n.model,
541
+ layers: i.length
542
+ });
543
+ let o = z();
544
+ for (let e = i.length - 1; e >= 0; e--) {
545
+ let s = i[e], c = s.layer.hitTest?.(s.state, n.plot, r);
546
+ if (!c) continue;
547
+ let l = s.state, u, d = s.layer.onPointerDown?.(l, c, a, r, {
548
+ plot: n.plot,
549
+ model: n.model,
550
+ commit(e) {
551
+ u = e, p(s.layer.id, e);
552
+ }
553
+ });
554
+ if (t.stopPropagation(), d) {
555
+ Z(s.layer.id, t.pointerId, d);
556
+ return;
557
+ }
558
+ u !== void 0 && (T && (L.current.push(o), R.current = []), m?.(s.layer.id, u, l));
559
+ return;
560
+ }
561
+ let s = null;
562
+ for (let e = i.length - 1; e >= 0; e--) {
563
+ let c = i[e];
564
+ if (!c.layer.onEmptyPointerDown) continue;
565
+ let l = c.state, u, d = c.layer.onEmptyPointerDown(l, n.model, a, r, {
566
+ plot: n.plot,
567
+ model: n.model,
568
+ commit(e) {
569
+ u = e, p(c.layer.id, e);
570
+ }
571
+ });
572
+ if (d) {
573
+ Z(c.layer.id, t.pointerId, d), u !== void 0 && P.current !== null && (P.current.startStates = o, P.current.startSelfState = o.get(c.layer.id));
574
+ return;
575
+ }
576
+ if (u !== void 0) {
577
+ s = {
578
+ id: c.layer.id,
579
+ next: u,
580
+ prev: l
581
+ };
582
+ break;
583
+ }
584
+ }
585
+ s && (T && (L.current.push(o), R.current = []), m?.(s.id, s.next, s.prev));
586
+ }, [
587
+ M,
588
+ Z,
589
+ p,
590
+ m,
591
+ T,
592
+ z
593
+ ]), $ = i((e) => {
594
+ let t = M(N(e)), n = O.current;
595
+ if (T && (e.metaKey || e.ctrlKey)) {
596
+ let t = e.key.toLowerCase();
597
+ if (t === "z") {
598
+ e.shiftKey ? H() : V(), e.preventDefault();
599
+ return;
600
+ }
601
+ if (t === "y") {
602
+ H(), e.preventDefault();
603
+ return;
604
+ }
605
+ }
606
+ for (let r = n.length - 1; r >= 0; r--) {
607
+ let i = n[r];
608
+ if (i.layer.onKeyDown?.(i.state, e.nativeEvent, t), e.isDefaultPrevented()) return;
609
+ }
610
+ }, [
611
+ T,
612
+ V,
613
+ H,
614
+ M
615
+ ]);
616
+ a(() => () => {
617
+ window.removeEventListener("pointermove", K), window.removeEventListener("pointerup", q), window.removeEventListener("pointercancel", J);
618
+ }, [
619
+ K,
620
+ q,
621
+ J
622
+ ]);
623
+ let ee = o(() => ({
624
+ modelRange: E,
625
+ plotSize: D,
626
+ toPlot: (e) => t(e, E, D),
627
+ toModel: (e) => n(e, E, D)
628
+ }), [E, D]);
629
+ return /* @__PURE__ */ d(r, {
630
+ ref: j,
631
+ className: [S.root, x].filter(Boolean).join(" "),
632
+ style: C,
633
+ width: h,
634
+ height: g,
635
+ xRange: _,
636
+ yRange: v,
637
+ grid: y,
638
+ axes: b,
639
+ tabIndex: T ? 0 : void 0,
640
+ onPointerDown: Q,
641
+ onKeyDown: $,
642
+ children: [w, f.map((e) => {
643
+ let t = {
644
+ ...ee,
645
+ modifiers: {
646
+ shift: !1,
647
+ alt: !1,
648
+ meta: !1,
649
+ ctrl: !1
650
+ },
651
+ isActive: F === e.layer.id
652
+ };
653
+ return /* @__PURE__ */ u("g", {
654
+ "data-layer-id": e.layer.id,
655
+ children: e.layer.render(e.state, t)
656
+ }, e.layer.id);
657
+ })]
658
+ });
659
+ }
660
+ //#endregion
661
+ //#region src/components/CurveEditor/CurveEditor.tsx
662
+ function F(e) {
663
+ let { value: t, onChange: n, onChangeCommit: r, domain: l, endpoints: d, interpolation: f, constrain: p, addPointMode: m, minPoints: h, maxPoints: g, curve: _, fill: v, hideNonInteractive: y, renderAnchor: b, width: x, height: S, xRange: C, yRange: w, grid: T, axes: E, history: D, className: O, style: k, decorations: A } = e, M = o(() => j({
664
+ id: "function",
665
+ domain: l,
666
+ endpoints: d,
667
+ interpolation: f,
668
+ constrain: p,
669
+ addPointMode: m,
670
+ minPoints: h,
671
+ maxPoints: g,
672
+ curve: _,
673
+ fill: v,
674
+ hideNonInteractive: y,
675
+ renderAnchor: b
676
+ }), [
677
+ l,
678
+ d,
679
+ f,
680
+ p,
681
+ m,
682
+ h,
683
+ g,
684
+ _,
685
+ v,
686
+ y,
687
+ b
688
+ ]), [N, F] = c(() => ({
689
+ points: t,
690
+ activeIndex: null
691
+ })), I = s(N);
692
+ I.current = N, a(() => {
693
+ I.current.activeIndex === null && I.current.points !== t && F({
694
+ points: t,
695
+ activeIndex: null
696
+ });
697
+ }, [t]);
698
+ let L = i((e, t) => {
699
+ let r = t, i = I.current.points;
700
+ F(r), r.points !== i && n(r.points);
701
+ }, [n]), R = i((e, t, n) => {
702
+ if (!r) return;
703
+ let i = t, a = n;
704
+ i.points !== a.points && r(i.points, a.points);
705
+ }, [r]);
706
+ return /* @__PURE__ */ u("div", {
707
+ onContextMenu: i((e) => {
708
+ let t = e.target?.closest?.("[data-anchor-index]");
709
+ if (!t) return;
710
+ e.preventDefault(), e.stopPropagation();
711
+ let i = t.getAttribute("data-anchor-index");
712
+ if (i === null) return;
713
+ let a = Number(i), o = I.current.points;
714
+ if (!Number.isInteger(a) || a < 0 || a >= o.length || o[a]?.locked || d !== void 0 && d !== "free" && (a === 0 || a === o.length - 1) || h !== void 0 && o.length <= h) return;
715
+ let s = o.filter((e, t) => t !== a);
716
+ F({
717
+ points: s,
718
+ activeIndex: null
719
+ }), n(s), r?.(s, o);
720
+ }, [
721
+ d,
722
+ h,
723
+ n,
724
+ r
725
+ ]),
726
+ style: { display: "contents" },
727
+ children: /* @__PURE__ */ u(P, {
728
+ layers: o(() => [{
729
+ layer: M,
730
+ state: N
731
+ }], [M, N]),
732
+ onLayerChange: L,
733
+ onLayerCommit: R,
734
+ width: x,
735
+ height: S,
736
+ xRange: C,
737
+ yRange: w,
738
+ grid: T,
739
+ axes: E,
740
+ history: D,
741
+ className: O,
742
+ style: k,
743
+ children: A
744
+ })
745
+ });
746
+ }
747
+ //#endregion
748
+ //#region src/components/CurveEditor/setCurveOp.ts
749
+ function I(e) {
750
+ let { id: t, from: n, to: r, label: i, coalesceKey: a } = e;
751
+ return {
752
+ name: "setCurve",
753
+ args: {
754
+ id: t,
755
+ from: n,
756
+ to: r,
757
+ label: i,
758
+ coalesceKey: a
759
+ },
760
+ label: i,
761
+ coalesceKey: a,
762
+ apply(e) {
763
+ if (L(n, r)) return !1;
764
+ e.setValue(t, r);
765
+ },
766
+ invert() {
767
+ return I({
768
+ id: t,
769
+ from: r,
770
+ to: n,
771
+ label: i,
772
+ coalesceKey: a
773
+ });
774
+ }
775
+ };
776
+ }
777
+ function L(e, t) {
778
+ if (e === t) return !0;
779
+ if (e.length !== t.length) return !1;
780
+ for (let n = 0; n < e.length; n++) if (e[n].x !== t[n].x || e[n].y !== t[n].y) return !1;
781
+ return !0;
782
+ }
783
+ //#endregion
784
+ export { M as a, j as i, F as n, y as o, P as r, I as t };
785
+
786
+ //# sourceMappingURL=CurveEditor-BEQtef4P.js.map