@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
@@ -0,0 +1,765 @@
1
+ import { t as e } from "./dlog-CMYiRF3Q.js";
2
+ import { n as t, t as n } from "./Tooltip-BHre_vbI.js";
3
+ import { n as r } from "./Disclosure-DiA6UKdM.js";
4
+ import { a as i, n as a, r as o } from "./number-f6PydOZK.js";
5
+ import { t as s } from "./range.module-CvSfABmu.js";
6
+ import { n as c } from "./CurveEditor-Cj0lLiyR.js";
7
+ import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
8
+ import { useCallback as f, useEffect as p, useId as m, useMemo as h, useRef as g, useState as _ } from "react";
9
+ import { Focusable as v } from "react-aria-components";
10
+ var y = {
11
+ field: "_field_17u88_1",
12
+ plot: "_plot_17u88_12",
13
+ marks: "_marks_17u88_17",
14
+ actions: "_actions_17u88_23",
15
+ action: "_action_17u88_23"
16
+ };
17
+ //#endregion
18
+ //#region src/components/Properties/CurveField.tsx
19
+ function b({ values: t, min: n, max: r, step: i, width: a, height: o = 110, defaults: s, onChange: l, marks: p }) {
20
+ let m = h(() => {
21
+ let e = [];
22
+ for (let n = 0; n + 1 < t.length; n += 2) e.push({
23
+ x: t[n],
24
+ y: t[n + 1]
25
+ });
26
+ return e;
27
+ }, [t]), g = f((t) => {
28
+ let a = Array(t.length * 2);
29
+ for (let e = 0; e < t.length; e++) {
30
+ let o = Math.round(t[e].y / i) * i, s = Math.max(n, Math.min(r, o));
31
+ a[e * 2] = t[e].x, a[e * 2 + 1] = s;
32
+ }
33
+ e("curve-field", "handleChange", {
34
+ nLen: t.length,
35
+ flatLen: a.length,
36
+ sample: a.slice(0, 4)
37
+ }), l(a);
38
+ }, [
39
+ l,
40
+ n,
41
+ r,
42
+ i
43
+ ]), _ = f(() => {
44
+ let e = [];
45
+ for (let n = 0; n + 1 < t.length; n += 2) e.push({
46
+ x: 1 - t[n],
47
+ y: t[n + 1]
48
+ });
49
+ e.sort((e, t) => e.x - t.x);
50
+ let n = [];
51
+ for (let t of e) n.push(t.x, t.y);
52
+ l(n);
53
+ }, [t, l]), v = f(() => {
54
+ let e = (n + r) / 2, i = Array(t.length);
55
+ for (let n = 0; n + 1 < t.length; n += 2) i[n] = t[n], i[n + 1] = 2 * e - t[n + 1];
56
+ l(i);
57
+ }, [
58
+ t,
59
+ n,
60
+ r,
61
+ l
62
+ ]);
63
+ return /* @__PURE__ */ d("div", {
64
+ className: y.field,
65
+ children: [/* @__PURE__ */ d("div", {
66
+ className: y.plot,
67
+ children: [/* @__PURE__ */ u(c, {
68
+ value: m,
69
+ onInput: g,
70
+ domain: "1d",
71
+ constrain: "function",
72
+ xRange: [0, 1],
73
+ yRange: [n, r],
74
+ width: a,
75
+ height: o,
76
+ endpoints: "pinned-x",
77
+ addPointMode: "click-curve",
78
+ minPoints: 2,
79
+ grid: {},
80
+ history: !1
81
+ }), p && p.length > 0 && /* @__PURE__ */ u("svg", {
82
+ className: y.marks,
83
+ width: a,
84
+ height: o,
85
+ viewBox: `0 0 ${a} ${o}`,
86
+ "aria-hidden": "true",
87
+ children: p.map((e) => {
88
+ let t = e.color ?? "#ffcc00";
89
+ if (e.kind === "band") {
90
+ let n = Math.max(0, Math.min(1, e.x[0])) * a, r = Math.max(0, Math.min(1, e.x[1])) * a, i = Math.min(n, r), s = Math.abs(r - n);
91
+ return /* @__PURE__ */ d("g", { children: [
92
+ /* @__PURE__ */ u("rect", {
93
+ x: i,
94
+ y: 0,
95
+ width: s,
96
+ height: o,
97
+ fill: t,
98
+ fillOpacity: .4
99
+ }),
100
+ /* @__PURE__ */ u("line", {
101
+ x1: i,
102
+ y1: 0,
103
+ x2: i,
104
+ y2: o,
105
+ stroke: t,
106
+ strokeOpacity: .85,
107
+ strokeWidth: 1
108
+ }),
109
+ /* @__PURE__ */ u("line", {
110
+ x1: i + s,
111
+ y1: 0,
112
+ x2: i + s,
113
+ y2: o,
114
+ stroke: t,
115
+ strokeOpacity: .85,
116
+ strokeWidth: 1
117
+ })
118
+ ] }, `band-${e.x[0]}-${e.x[1]}-${t}`);
119
+ }
120
+ let n = Math.max(0, Math.min(1, e.x)) * a;
121
+ return /* @__PURE__ */ u("line", {
122
+ x1: n,
123
+ y1: 0,
124
+ x2: n,
125
+ y2: o,
126
+ stroke: t,
127
+ strokeWidth: 1
128
+ }, `mark-${e.x}-${t}`);
129
+ })
130
+ })]
131
+ }), /* @__PURE__ */ d("div", {
132
+ className: y.actions,
133
+ children: [
134
+ /* @__PURE__ */ u("button", {
135
+ type: "button",
136
+ className: y.action,
137
+ onClick: _,
138
+ children: "Flip horizontally"
139
+ }),
140
+ /* @__PURE__ */ u("button", {
141
+ type: "button",
142
+ className: y.action,
143
+ onClick: v,
144
+ children: "Flip vertically"
145
+ }),
146
+ s && /* @__PURE__ */ u("button", {
147
+ type: "button",
148
+ className: y.action,
149
+ onClick: () => l([...s]),
150
+ children: "Reset"
151
+ })
152
+ ]
153
+ })]
154
+ });
155
+ }
156
+ var x = {
157
+ panel: "_panel_ue4mo_9",
158
+ list: "_list_ue4mo_3",
159
+ row: "_row_ue4mo_4",
160
+ group: "_group_ue4mo_4",
161
+ subpanel: "_subpanel_ue4mo_3",
162
+ card: "_card_ue4mo_14",
163
+ cardList: "_cardList_ue4mo_15",
164
+ panelTitle: "_panelTitle_ue4mo_42",
165
+ listPairs: "_listPairs_ue4mo_3",
166
+ rowColor: "_rowColor_ue4mo_4",
167
+ span: "_span_ue4mo_79",
168
+ listOneUp: "_listOneUp_ue4mo_87",
169
+ densityTight: "_densityTight_ue4mo_98",
170
+ densityNormal: "_densityNormal_ue4mo_110",
171
+ densityRoomy: "_densityRoomy_ue4mo_122",
172
+ alignStart: "_alignStart_ue4mo_144",
173
+ alignCenter: "_alignCenter_ue4mo_149",
174
+ alignEnd: "_alignEnd_ue4mo_154",
175
+ alignBaseline: "_alignBaseline_ue4mo_159",
176
+ rowLabel: "_rowLabel_ue4mo_186",
177
+ readout: "_readout_ue4mo_208",
178
+ help: "_help_ue4mo_220",
179
+ readoutInput: "_readoutInput_ue4mo_252",
180
+ readoutGroup: "_readoutGroup_ue4mo_298",
181
+ readoutUnit: "_readoutUnit_ue4mo_304",
182
+ fieldUnitGroup: "_fieldUnitGroup_ue4mo_311",
183
+ rowInline: "_rowInline_ue4mo_332",
184
+ toggle: "_toggle_ue4mo_350",
185
+ alpha: "_alpha_ue4mo_493",
186
+ rowBlock: "_rowBlock_ue4mo_502",
187
+ rowCheckbox: "_rowCheckbox_ue4mo_522",
188
+ toggleButton: "_toggleButton_ue4mo_565",
189
+ toggleButtonSelected: "_toggleButtonSelected_ue4mo_591",
190
+ groupTitle: "_groupTitle_ue4mo_610",
191
+ groupHead: "_groupHead_ue4mo_632",
192
+ groupBody: "_groupBody_ue4mo_4",
193
+ groupPairs: "_groupPairs_ue4mo_656",
194
+ groupOneUp: "_groupOneUp_ue4mo_669",
195
+ subpanelTitle: "_subpanelTitle_ue4mo_692",
196
+ cardDragging: "_cardDragging_ue4mo_736",
197
+ cardExpanded: "_cardExpanded_ue4mo_740",
198
+ cardAccented: "_cardAccented_ue4mo_744",
199
+ cardHead: "_cardHead_ue4mo_759",
200
+ cardHandle: "_cardHandle_ue4mo_780",
201
+ cardIndexBadge: "_cardIndexBadge_ue4mo_793",
202
+ cardTitle: "_cardTitle_ue4mo_811",
203
+ cardPrimary: "_cardPrimary_ue4mo_821",
204
+ cardRemove: "_cardRemove_ue4mo_836",
205
+ cardBody: "_cardBody_ue4mo_865",
206
+ cardListWrap: "_cardListWrap_ue4mo_877",
207
+ cardDropHint: "_cardDropHint_ue4mo_881",
208
+ cardListEmpty: "_cardListEmpty_ue4mo_889"
209
+ }, S = {
210
+ tight: x.densityTight,
211
+ normal: x.densityNormal,
212
+ roomy: x.densityRoomy
213
+ }, C = {
214
+ start: x.alignStart,
215
+ center: x.alignCenter,
216
+ end: x.alignEnd,
217
+ baseline: x.alignBaseline
218
+ };
219
+ function w(e, { density: t, align: n }, r) {
220
+ return [
221
+ e,
222
+ t && S[t],
223
+ n && C[n],
224
+ r
225
+ ].filter(Boolean).join(" ");
226
+ }
227
+ function T({ title: e, children: t, className: n, density: r, align: i }) {
228
+ return /* @__PURE__ */ d("div", {
229
+ className: w(x.panel, {
230
+ density: r,
231
+ align: i
232
+ }, n),
233
+ children: [e != null && /* @__PURE__ */ u("h2", {
234
+ className: x.panelTitle,
235
+ children: e
236
+ }), t]
237
+ });
238
+ }
239
+ function E({ children: e, className: t, pack: n = "auto-color", density: r, align: i }) {
240
+ return /* @__PURE__ */ u("div", {
241
+ className: w(`${x.list}${n === "pairs" ? ` ${x.listPairs}` : n === "one-up" ? ` ${x.listOneUp}` : ""}`, {
242
+ density: r,
243
+ align: i
244
+ }, t),
245
+ children: e
246
+ });
247
+ }
248
+ function D({ children: e, className: t }) {
249
+ return /* @__PURE__ */ u("div", {
250
+ className: t ? `${x.span} ${t}` : x.span,
251
+ children: e
252
+ });
253
+ }
254
+ function O({ label: e, readout: t, description: n, variant: r = "default", layout: i, span: a, children: o, htmlFor: s, className: c, density: l, align: f }) {
255
+ let p = r === "color" ? x.rowColor : r === "checkbox" ? x.rowCheckbox : "", m = r === "default" ? "block" : "inline", h = i ?? m, g = h === m ? "" : h === "inline" ? x.rowInline : x.rowBlock;
256
+ return /* @__PURE__ */ d("label", {
257
+ className: w([
258
+ x.row,
259
+ p,
260
+ g,
261
+ a && x.span
262
+ ].filter(Boolean).join(" "), {
263
+ density: l,
264
+ align: f
265
+ }, c),
266
+ htmlFor: s,
267
+ children: [/* @__PURE__ */ d("span", {
268
+ className: x.rowLabel,
269
+ children: [
270
+ e,
271
+ n ? /* @__PURE__ */ u(k, {
272
+ label: e,
273
+ description: n
274
+ }) : null,
275
+ t != null && /* @__PURE__ */ u("em", {
276
+ className: x.readout,
277
+ children: t
278
+ })
279
+ ]
280
+ }), o]
281
+ });
282
+ }
283
+ function k({ label: e, description: r }) {
284
+ let i = typeof e == "string" ? e : "this setting";
285
+ return /* @__PURE__ */ d(t, { children: [/* @__PURE__ */ u(v, { children: /* @__PURE__ */ u("button", {
286
+ type: "button",
287
+ className: x.help,
288
+ "aria-label": `About ${i}`,
289
+ onClick: (e) => {
290
+ e.preventDefault(), e.stopPropagation();
291
+ },
292
+ onMouseDown: (e) => e.stopPropagation(),
293
+ children: "ⓘ"
294
+ }) }), /* @__PURE__ */ u(n, { children: r })] });
295
+ }
296
+ function A(e) {
297
+ let t = g(null), n = g(e);
298
+ return p(() => {
299
+ n.current = e;
300
+ }), p(() => {
301
+ let e = t.current;
302
+ if (!e) return;
303
+ let r = () => n.current?.(e.value);
304
+ return e.addEventListener("change", r), () => e.removeEventListener("change", r);
305
+ }, []), t;
306
+ }
307
+ function j({ label: t, value: n, min: r, max: i, step: c = 1, onChange: l, onInput: d, format: f, notation: p, unit: m, layout: h, description: g, span: _, density: v, align: y }) {
308
+ let b = c >= 1 ? 0 : Math.min(6, Math.max(0, Math.ceil(-Math.log10(c)))), x = d ?? l, S = d ? l : void 0, C = A(S && ((e) => S(Number(e))));
309
+ return /* @__PURE__ */ u(O, {
310
+ span: _,
311
+ label: t,
312
+ readout: /* @__PURE__ */ u(M, {
313
+ value: n,
314
+ min: r,
315
+ max: i,
316
+ format: f ?? (p === "compact" ? (e) => a(e, b) : (e) => o(e, {
317
+ useGrouping: !1,
318
+ minimumFractionDigits: b,
319
+ maximumFractionDigits: b
320
+ })),
321
+ unit: m,
322
+ onCommit: (e) => {
323
+ x(e), S?.(e);
324
+ }
325
+ }),
326
+ layout: h,
327
+ description: g,
328
+ density: v,
329
+ align: y,
330
+ children: /* @__PURE__ */ u("input", {
331
+ ref: C,
332
+ type: "range",
333
+ className: s.range,
334
+ tabIndex: -1,
335
+ min: r,
336
+ max: i,
337
+ step: c,
338
+ value: n,
339
+ onChange: (n) => {
340
+ let r = Number(n.target.value);
341
+ e("property-panel", "slider", {
342
+ label: t,
343
+ value: r
344
+ }), x(r);
345
+ }
346
+ })
347
+ });
348
+ }
349
+ function M({ value: e, min: t, max: n, format: r, unit: a, onCommit: s }) {
350
+ let [c, l] = _(null), f = (e) => r ? r(e) : o(e, {
351
+ useGrouping: !1,
352
+ maximumFractionDigits: 20
353
+ }), p = (e) => {
354
+ let t = f(e);
355
+ return typeof t == "string" ? t : String(t);
356
+ }, m = c === null ? p(e) : c, h = { "--wzl-property-readout-fit": `${Math.max(p(t).length, p(n).length)}ch` }, g = a == null ? null : typeof a == "string" ? /* @__PURE__ */ u("span", {
357
+ className: x.readoutUnit,
358
+ children: a
359
+ }) : a, v = () => {
360
+ if (c !== null) {
361
+ let e = i(c);
362
+ Number.isFinite(e) && s(Math.min(n, Math.max(t, e)));
363
+ }
364
+ l(null);
365
+ };
366
+ return /* @__PURE__ */ d("span", {
367
+ className: x.readoutGroup,
368
+ children: [/* @__PURE__ */ u("input", {
369
+ type: "text",
370
+ inputMode: "decimal",
371
+ className: x.readoutInput,
372
+ style: h,
373
+ value: m,
374
+ onFocus: (t) => {
375
+ let n = f(e);
376
+ l(typeof n == "string" ? n : String(n)), t.currentTarget.select();
377
+ },
378
+ onChange: (e) => l(e.target.value.replace(/-/g, "−")),
379
+ onBlur: v,
380
+ onClick: (e) => {
381
+ e.preventDefault(), e.stopPropagation(), e.currentTarget.focus();
382
+ },
383
+ onMouseDown: (e) => e.stopPropagation(),
384
+ onKeyDown: (e) => {
385
+ e.key === "Enter" ? (v(), e.currentTarget.blur()) : e.key === "Escape" && (l(null), e.currentTarget.blur());
386
+ }
387
+ }), g]
388
+ });
389
+ }
390
+ function N({ label: e, value: t, onChange: n, onInput: r, alpha: i, onAlphaChange: a, onAlphaInput: o, alphaDisabled: c, layout: l, description: f, span: p, density: m, align: h }) {
391
+ let g = i != null, _ = r ?? n, v = A(r && ((e) => n(e))), y = o ?? a, b = A(o && a && ((e) => a(Number(e))));
392
+ return /* @__PURE__ */ d(O, {
393
+ span: p,
394
+ label: e,
395
+ variant: "color",
396
+ layout: l,
397
+ description: f,
398
+ density: m,
399
+ align: h,
400
+ children: [/* @__PURE__ */ u("input", {
401
+ ref: v,
402
+ type: "color",
403
+ value: t,
404
+ onChange: (e) => _(e.target.value)
405
+ }), g && /* @__PURE__ */ u("input", {
406
+ ref: b,
407
+ type: "range",
408
+ className: `${s.range} ${s.alpha} ${x.alpha}`,
409
+ min: 0,
410
+ max: 1,
411
+ step: .01,
412
+ value: i,
413
+ disabled: c,
414
+ onChange: (e) => y?.(Number(e.target.value))
415
+ })]
416
+ });
417
+ }
418
+ function P({ label: e, value: t, onChange: n, layout: r, span: i, description: a, density: o, align: s }) {
419
+ return /* @__PURE__ */ u(O, {
420
+ span: i,
421
+ label: e,
422
+ variant: "checkbox",
423
+ layout: r,
424
+ description: a,
425
+ density: o,
426
+ align: s,
427
+ children: /* @__PURE__ */ u("input", {
428
+ type: "checkbox",
429
+ checked: t === !0,
430
+ onChange: (e) => n(e.target.checked)
431
+ })
432
+ });
433
+ }
434
+ function F({ label: e, value: t, onChange: n, placeholder: r, maxLength: i, layout: a, description: o, span: s, density: c, align: l }) {
435
+ return /* @__PURE__ */ u(O, {
436
+ span: s,
437
+ label: e,
438
+ layout: a,
439
+ description: o,
440
+ density: c,
441
+ align: l,
442
+ children: /* @__PURE__ */ u("input", {
443
+ type: "text",
444
+ value: t ?? "",
445
+ placeholder: r,
446
+ maxLength: i,
447
+ onChange: (e) => n(e.target.value)
448
+ })
449
+ });
450
+ }
451
+ function I({ label: e, value: t, onChange: n, onInput: r, min: i, max: a, step: o, placeholder: s, unit: c, layout: l, description: f, span: p, density: m, align: h }) {
452
+ let g = r ?? n, _ = /* @__PURE__ */ u("input", {
453
+ ref: A(r && ((e) => {
454
+ if (e === "") return;
455
+ let t = Number(e);
456
+ Number.isFinite(t) && n(t);
457
+ })),
458
+ type: "number",
459
+ value: t ?? "",
460
+ min: i,
461
+ max: a,
462
+ step: o,
463
+ placeholder: s,
464
+ onChange: (e) => {
465
+ let t = e.target.value;
466
+ if (t === "") return;
467
+ let n = Number(t);
468
+ Number.isFinite(n) && g(n);
469
+ }
470
+ });
471
+ return /* @__PURE__ */ u(O, {
472
+ span: p,
473
+ label: e,
474
+ layout: l,
475
+ description: f,
476
+ density: m,
477
+ align: h,
478
+ children: c == null ? _ : /* @__PURE__ */ d("span", {
479
+ className: x.fieldUnitGroup,
480
+ children: [_, typeof c == "string" ? /* @__PURE__ */ u("span", {
481
+ className: x.readoutUnit,
482
+ children: c
483
+ }) : c]
484
+ })
485
+ });
486
+ }
487
+ function L({ label: t, value: n, options: r, onChange: i, placeholder: a = "Choose option…", layout: o, description: s, span: c, density: l, align: f }) {
488
+ let p = r.some((e) => e.value === n);
489
+ return /* @__PURE__ */ u(O, {
490
+ span: c,
491
+ label: t,
492
+ layout: o,
493
+ description: s,
494
+ density: l,
495
+ align: f,
496
+ children: /* @__PURE__ */ d("select", {
497
+ value: p ? n : "",
498
+ onChange: (n) => {
499
+ let r = n.target.value;
500
+ e("property-panel", "select", {
501
+ label: t,
502
+ value: r
503
+ }), i(r);
504
+ },
505
+ children: [!p && /* @__PURE__ */ u("option", {
506
+ value: "",
507
+ disabled: !0,
508
+ hidden: !0,
509
+ children: a
510
+ }), r.map((e) => /* @__PURE__ */ u("option", {
511
+ value: e.value,
512
+ children: e.label
513
+ }, e.value))]
514
+ })
515
+ });
516
+ }
517
+ function R({ label: e, value: t, options: n, onChange: r, layout: i, description: a, span: o, density: s, align: c }) {
518
+ return /* @__PURE__ */ u(O, {
519
+ span: o,
520
+ label: e,
521
+ layout: i,
522
+ description: a,
523
+ density: s,
524
+ align: c,
525
+ children: /* @__PURE__ */ u("div", {
526
+ className: x.toggle,
527
+ children: n.map((e) => {
528
+ let n = e.value === t;
529
+ return /* @__PURE__ */ u("button", {
530
+ type: "button",
531
+ "aria-pressed": n,
532
+ className: n ? `${x.toggleButton} ${x.toggleButtonSelected}` : x.toggleButton,
533
+ onClick: () => r(e.value),
534
+ children: e.label
535
+ }, e.value);
536
+ })
537
+ })
538
+ });
539
+ }
540
+ //#endregion
541
+ //#region src/components/Properties/EffectCard.tsx
542
+ function z({ title: e, children: t, className: n, density: r, align: i }) {
543
+ return /* @__PURE__ */ d("div", {
544
+ className: w(x.subpanel, {
545
+ density: r,
546
+ align: i
547
+ }, n),
548
+ children: [/* @__PURE__ */ d("h4", {
549
+ className: x.subpanelTitle,
550
+ children: [/* @__PURE__ */ u("span", { children: e }), /* @__PURE__ */ u("hr", {})]
551
+ }), t]
552
+ });
553
+ }
554
+ function B({ title: e, primary: t, accent: n, index: r, expanded: i = !0, onToggleExpanded: a, onRemove: o, draggable: s, onPressHandle: c, onReleaseHandle: l, onDragStart: f, onDragEnd: p, onDragOver: m, onDragLeave: h, onDrop: g, dragging: _, children: v, className: y }) {
555
+ let b = `${i ? ` ${x.cardExpanded}` : ""}${_ ? ` ${x.cardDragging}` : ""}${n ? ` ${x.cardAccented}` : ""}`, S = `${x.card}${b}${y ? ` ${y}` : ""}`, C = n ? { "--wzl-effect-card-accent": n } : void 0, w = a ? {
556
+ role: "button",
557
+ tabIndex: 0,
558
+ onClick: a,
559
+ onKeyDown: (e) => {
560
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), a());
561
+ }
562
+ } : {};
563
+ return /* @__PURE__ */ d("div", {
564
+ className: S,
565
+ style: C,
566
+ draggable: s,
567
+ onDragStart: f,
568
+ onDragEnd: p,
569
+ onDragOver: m,
570
+ onDragLeave: h,
571
+ onDrop: g,
572
+ children: [/* @__PURE__ */ d("div", {
573
+ className: x.cardHead,
574
+ ...w,
575
+ children: [
576
+ r == null ? /* @__PURE__ */ u("span", {
577
+ className: x.cardHandle,
578
+ "aria-hidden": "true",
579
+ title: "Drag to reorder",
580
+ onMouseDown: c,
581
+ onMouseUp: l,
582
+ children: /* @__PURE__ */ u(V, {})
583
+ }) : /* @__PURE__ */ u("button", {
584
+ type: "button",
585
+ className: `${x.cardIndexBadge} ${x.cardHandle}`,
586
+ title: "Drag to reorder · click to toggle",
587
+ "aria-label": `Item ${r + 1} — drag to reorder, click to toggle`,
588
+ onMouseDown: c,
589
+ onMouseUp: l,
590
+ onClick: (e) => {
591
+ e.stopPropagation(), a?.();
592
+ },
593
+ children: r + 1
594
+ }),
595
+ /* @__PURE__ */ u("span", {
596
+ className: x.cardTitle,
597
+ children: e
598
+ }),
599
+ t != null && /* @__PURE__ */ u("span", {
600
+ className: x.cardPrimary,
601
+ children: t
602
+ }),
603
+ o && /* @__PURE__ */ u("button", {
604
+ type: "button",
605
+ className: x.cardRemove,
606
+ onClick: (e) => {
607
+ e.stopPropagation(), o();
608
+ },
609
+ title: "Remove",
610
+ "aria-label": "Remove",
611
+ children: "✕"
612
+ })
613
+ ]
614
+ }), i && /* @__PURE__ */ u("div", {
615
+ className: x.cardBody,
616
+ children: v
617
+ })]
618
+ });
619
+ }
620
+ function V() {
621
+ return /* @__PURE__ */ d("svg", {
622
+ width: "10",
623
+ height: "14",
624
+ viewBox: "0 0 10 14",
625
+ "aria-hidden": "true",
626
+ children: [
627
+ /* @__PURE__ */ u("circle", {
628
+ cx: "3",
629
+ cy: "3",
630
+ r: "1.3",
631
+ fill: "currentColor"
632
+ }),
633
+ /* @__PURE__ */ u("circle", {
634
+ cx: "7",
635
+ cy: "3",
636
+ r: "1.3",
637
+ fill: "currentColor"
638
+ }),
639
+ /* @__PURE__ */ u("circle", {
640
+ cx: "3",
641
+ cy: "7",
642
+ r: "1.3",
643
+ fill: "currentColor"
644
+ }),
645
+ /* @__PURE__ */ u("circle", {
646
+ cx: "7",
647
+ cy: "7",
648
+ r: "1.3",
649
+ fill: "currentColor"
650
+ }),
651
+ /* @__PURE__ */ u("circle", {
652
+ cx: "3",
653
+ cy: "11",
654
+ r: "1.3",
655
+ fill: "currentColor"
656
+ }),
657
+ /* @__PURE__ */ u("circle", {
658
+ cx: "7",
659
+ cy: "11",
660
+ r: "1.3",
661
+ fill: "currentColor"
662
+ })
663
+ ]
664
+ });
665
+ }
666
+ function H({ items: e, renderItem: t, onReorder: n, empty: r, defaultExpandedIds: i }) {
667
+ let [a, o] = _(() => new Set(i ?? [])), [s, c] = _(null), [f, p] = _(null), [m, h] = _(null);
668
+ return e.length === 0 ? /* @__PURE__ */ u(l, { children: r ?? /* @__PURE__ */ u("div", {
669
+ className: x.cardListEmpty,
670
+ children: "No items."
671
+ }) }) : /* @__PURE__ */ u("div", {
672
+ className: x.cardList,
673
+ children: e.map((e) => {
674
+ let r = a.has(e.id), i = s === e.id, l = f === e.id, g = m && m.id === e.id && m.position === "before", _ = m && m.id === e.id && m.position === "after", v = () => o((t) => {
675
+ let n = new Set(t);
676
+ return n.has(e.id) ? n.delete(e.id) : n.add(e.id), n;
677
+ });
678
+ return /* @__PURE__ */ d("div", {
679
+ className: x.cardListWrap,
680
+ children: [
681
+ g && /* @__PURE__ */ u("div", { className: x.cardDropHint }),
682
+ t(e, {
683
+ isExpanded: r,
684
+ isDragging: i,
685
+ toggleExpanded: v,
686
+ cardProps: {
687
+ expanded: r,
688
+ dragging: i,
689
+ draggable: l,
690
+ onToggleExpanded: v,
691
+ onPressHandle: () => p(e.id),
692
+ onReleaseHandle: () => p(null),
693
+ onDragStart: (t) => {
694
+ t.dataTransfer.effectAllowed = "move", t.dataTransfer.setData("text/plain", String(e.id)), c(e.id);
695
+ },
696
+ onDragEnd: () => {
697
+ c(null), p(null), h(null);
698
+ },
699
+ onDragOver: (t) => {
700
+ if (s === null || s === e.id) return;
701
+ t.preventDefault(), t.dataTransfer.dropEffect = "move";
702
+ let n = t.currentTarget.getBoundingClientRect(), r = t.clientY < n.top + n.height / 2 ? "before" : "after";
703
+ h({
704
+ id: e.id,
705
+ position: r
706
+ });
707
+ },
708
+ onDragLeave: () => {
709
+ h((t) => t && t.id === e.id ? null : t);
710
+ },
711
+ onDrop: (t) => {
712
+ if (t.preventDefault(), s === null || s === e.id) {
713
+ h(null);
714
+ return;
715
+ }
716
+ let r = t.currentTarget.getBoundingClientRect(), i = t.clientY < r.top + r.height / 2 ? "before" : "after";
717
+ n(s, e.id, i), h(null);
718
+ }
719
+ }
720
+ }),
721
+ _ && /* @__PURE__ */ u("div", { className: x.cardDropHint })
722
+ ]
723
+ }, String(e.id));
724
+ })
725
+ });
726
+ }
727
+ //#endregion
728
+ //#region src/components/Properties/PropertyGroup.tsx
729
+ function U({ title: e, hidden: t, collapsible: n, defaultCollapsed: i, collapsed: a, onCollapsedChange: o, children: s, className: c, pack: l = "auto-color", density: f, align: p }) {
730
+ let h = m(), [g, v] = _(i ?? !1);
731
+ if (t) return null;
732
+ let y = n ?? (i !== void 0 || a !== void 0 || o !== void 0), b = y && (a ?? g), S = () => {
733
+ a === void 0 && v(!b), o?.(!b);
734
+ }, C = w(`${x.group}${l === "pairs" ? ` ${x.groupPairs}` : l === "one-up" ? ` ${x.groupOneUp}` : ""}`, {
735
+ density: f,
736
+ align: p
737
+ }, c), T = /* @__PURE__ */ d("h3", {
738
+ className: x.groupTitle,
739
+ children: [
740
+ /* @__PURE__ */ u("hr", {}),
741
+ /* @__PURE__ */ u("span", { children: e }),
742
+ /* @__PURE__ */ u("hr", {})
743
+ ]
744
+ });
745
+ return /* @__PURE__ */ d("div", {
746
+ className: C,
747
+ children: [y ? /* @__PURE__ */ u(r, {
748
+ className: x.groupHead,
749
+ open: !b,
750
+ onToggle: S,
751
+ label: typeof e == "string" ? e : "this section",
752
+ controls: h,
753
+ children: T
754
+ }) : T, /* @__PURE__ */ u("div", {
755
+ id: h,
756
+ className: x.groupBody,
757
+ hidden: b,
758
+ children: s
759
+ })]
760
+ });
761
+ }
762
+ //#endregion
763
+ export { P as a, E as c, D as d, L as f, b as g, R as h, z as i, T as l, F as m, B as n, N as o, j as p, H as r, I as s, U as t, O as u };
764
+
765
+ //# sourceMappingURL=Properties-DJaDEJkT.js.map