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