@weasel-js/ui 1.7.1 → 1.7.2

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 (164) hide show
  1. package/dist/chunks/{BandEditor-Dd0egAgE.js → BandEditor-B4jUAHQ8.js} +13 -13
  2. package/dist/chunks/BandEditor-B4jUAHQ8.js.map +1 -0
  3. package/dist/chunks/{ColorField-BLs9fbeq.js → ColorField-BwlelY26.js} +4 -4
  4. package/dist/chunks/ColorField-BwlelY26.js.map +1 -0
  5. package/dist/chunks/{ComboBox-CuTLRmUg.js → ComboBox-DKln_mOd.js} +11 -11
  6. package/dist/chunks/ComboBox-DKln_mOd.js.map +1 -0
  7. package/dist/chunks/{CurveEditor-jVBEqqdv.js → CurveEditor-0EE00D6s.js} +2 -2
  8. package/dist/chunks/{CurveEditor-jVBEqqdv.js.map → CurveEditor-0EE00D6s.js.map} +1 -1
  9. package/dist/chunks/{DataGrid-BklgBqS0.js → DataGrid-CmHJe57v.js} +22 -17
  10. package/dist/chunks/DataGrid-CmHJe57v.js.map +1 -0
  11. package/dist/chunks/DetailList-BpU50XVe.js +54 -0
  12. package/dist/chunks/DetailList-BpU50XVe.js.map +1 -0
  13. package/dist/chunks/{DetentSlider-Bh7EpMqT.js → DetentSlider-DNTAk8xP.js} +2 -2
  14. package/dist/chunks/{DetentSlider-Bh7EpMqT.js.map → DetentSlider-DNTAk8xP.js.map} +1 -1
  15. package/dist/chunks/{FallthroughDiagram-C7BUe8eU.js → FallthroughDiagram-CS1IhQaU.js} +14 -14
  16. package/dist/chunks/FallthroughDiagram-CS1IhQaU.js.map +1 -0
  17. package/dist/chunks/{Field-DsBlnFKf.js → Field-DiX_WByH.js} +2 -2
  18. package/dist/chunks/{Field-DsBlnFKf.js.map → Field-DiX_WByH.js.map} +1 -1
  19. package/dist/chunks/{FillStrokeSwatch-CgsYQgew.js → FillStrokeSwatch-C4h3rUFM.js} +2 -2
  20. package/dist/chunks/FillStrokeSwatch-C4h3rUFM.js.map +1 -0
  21. package/dist/chunks/{FontFamilySelect-CGJ5OIOy.js → FontFamilySelect-DEvMXyZd.js} +2 -2
  22. package/dist/chunks/{FontFamilySelect-CGJ5OIOy.js.map → FontFamilySelect-DEvMXyZd.js.map} +1 -1
  23. package/dist/chunks/{FontWeightSelect-RbcXYJPS.js → FontWeightSelect-BLQ_LMJF.js} +2 -2
  24. package/dist/chunks/{FontWeightSelect-RbcXYJPS.js.map → FontWeightSelect-BLQ_LMJF.js.map} +1 -1
  25. package/dist/chunks/{GradientEditor-DypXzMc-.js → GradientEditor-DD2OjQtn.js} +4 -4
  26. package/dist/chunks/{GradientEditor-DypXzMc-.js.map → GradientEditor-DD2OjQtn.js.map} +1 -1
  27. package/dist/chunks/{InlineRange-P01ABSzo.js → InlineRange-DPjIsJB3.js} +3 -3
  28. package/dist/chunks/InlineRange-DPjIsJB3.js.map +1 -0
  29. package/dist/chunks/{Input-CzwvCZs_.js → Input-D7SDKbST.js} +2 -2
  30. package/dist/chunks/{Input-CzwvCZs_.js.map → Input-D7SDKbST.js.map} +1 -1
  31. package/dist/chunks/{Jog-DfNUYejm.js → Jog-BrkzdGV2.js} +6 -6
  32. package/dist/chunks/Jog-BrkzdGV2.js.map +1 -0
  33. package/dist/chunks/{LayerList-CsDqwYh-.js → LayerList-Bxj1N6bj.js} +3 -3
  34. package/dist/chunks/{LayerList-CsDqwYh-.js.map → LayerList-Bxj1N6bj.js.map} +1 -1
  35. package/dist/chunks/{ListEditor-BnGzqERm.js → ListEditor-OQDzG4A5.js} +2 -2
  36. package/dist/chunks/{ListEditor-BnGzqERm.js.map → ListEditor-OQDzG4A5.js.map} +1 -1
  37. package/dist/chunks/{MenuButton-L9f5vido.js → MenuButton-TAFg88Lp.js} +2 -2
  38. package/dist/chunks/{MenuButton-L9f5vido.js.map → MenuButton-TAFg88Lp.js.map} +1 -1
  39. package/dist/chunks/{MeshEditor-GbqqiPk8.js → MeshEditor-DWpvg8H6.js} +2 -2
  40. package/dist/chunks/{MeshEditor-GbqqiPk8.js.map → MeshEditor-DWpvg8H6.js.map} +1 -1
  41. package/dist/chunks/{NumberField-DLXXgh48.js → NumberField-DS0WSiin.js} +7 -7
  42. package/dist/chunks/NumberField-DS0WSiin.js.map +1 -0
  43. package/dist/chunks/{PaintField-C0hoXc0Y.js → PaintField-BdmQM53v.js} +2 -2
  44. package/dist/chunks/{PaintField-C0hoXc0Y.js.map → PaintField-BdmQM53v.js.map} +1 -1
  45. package/dist/chunks/{PaintInput-jQRxM95Y.js → PaintInput-DaQMeBsI.js} +4 -4
  46. package/dist/chunks/{PaintInput-jQRxM95Y.js.map → PaintInput-DaQMeBsI.js.map} +1 -1
  47. package/dist/chunks/{PatternPicker-CaMYXzhF.js → PatternPicker-B3HcMZWg.js} +2 -2
  48. package/dist/chunks/{PatternPicker-CaMYXzhF.js.map → PatternPicker-B3HcMZWg.js.map} +1 -1
  49. package/dist/chunks/{Plot2D-BHNbgCAl.js → Plot2D-BrvQS0dh.js} +7 -7
  50. package/dist/chunks/Plot2D-BrvQS0dh.js.map +1 -0
  51. package/dist/chunks/{PointPlotter-BZ_vk6gV.js → PointPlotter-BBXpQ_QD.js} +2 -2
  52. package/dist/chunks/{PointPlotter-BZ_vk6gV.js.map → PointPlotter-BBXpQ_QD.js.map} +1 -1
  53. package/dist/chunks/{Prefs-CkyldX-e.js → Prefs-C4MZ28SX.js} +76 -66
  54. package/dist/chunks/Prefs-C4MZ28SX.js.map +1 -0
  55. package/dist/chunks/{Properties-D15c8NP-.js → Properties-DseN56WI.js} +24 -24
  56. package/dist/chunks/{Properties-D15c8NP-.js.map → Properties-DseN56WI.js.map} +1 -1
  57. package/dist/chunks/{PropertyField-CV_Gw57S.js → PropertyField-BbNqK8xr.js} +243 -186
  58. package/dist/chunks/PropertyField-BbNqK8xr.js.map +1 -0
  59. package/dist/chunks/{RadioGroup-4dbzqvGy.js → RadioGroup-B70_M-gT.js} +2 -2
  60. package/dist/chunks/{RadioGroup-4dbzqvGy.js.map → RadioGroup-B70_M-gT.js.map} +1 -1
  61. package/dist/chunks/{RangeSlider-BxokZViJ.js → RangeSlider-DO5TZVk7.js} +8 -8
  62. package/dist/chunks/RangeSlider-DO5TZVk7.js.map +1 -0
  63. package/dist/chunks/{Select-BppLsJTz.js → Select-ouV8O6cp.js} +19 -19
  64. package/dist/chunks/Select-ouV8O6cp.js.map +1 -0
  65. package/dist/chunks/{SelectionPanel-Cm1qu-ZX.js → SelectionPanel-C3WzyaZV.js} +2 -2
  66. package/dist/chunks/{SelectionPanel-Cm1qu-ZX.js.map → SelectionPanel-C3WzyaZV.js.map} +1 -1
  67. package/dist/chunks/{Slider-Cl5RCeZ7.js → Slider-DSrlMEq8.js} +19 -19
  68. package/dist/chunks/Slider-DSrlMEq8.js.map +1 -0
  69. package/dist/chunks/{StatusBar-Ca9Dvhhq.js → StatusBar-BEOfOX0D.js} +6 -6
  70. package/dist/chunks/StatusBar-BEOfOX0D.js.map +1 -0
  71. package/dist/chunks/{SwatchStrip-Cw0l8Om7.js → SwatchStrip-Bi9iPLoh.js} +2 -2
  72. package/dist/chunks/{SwatchStrip-Cw0l8Om7.js.map → SwatchStrip-Bi9iPLoh.js.map} +1 -1
  73. package/dist/chunks/{Timeline-pqnYk5cV.js → Timeline-sMCH2fah.js} +99 -84
  74. package/dist/chunks/Timeline-sMCH2fah.js.map +1 -0
  75. package/dist/chunks/{TokenPanel-DAkL6vwQ.js → TokenPanel-WtKGY2Db.js} +29 -29
  76. package/dist/chunks/TokenPanel-WtKGY2Db.js.map +1 -0
  77. package/dist/chunks/{ToolOptionsBar-COsTJ1cu.js → ToolOptionsBar-CZTYPoC2.js} +2 -2
  78. package/dist/chunks/{ToolOptionsBar-COsTJ1cu.js.map → ToolOptionsBar-CZTYPoC2.js.map} +1 -1
  79. package/dist/chunks/{createKeyframeLayer-BTa4LyJE.js → createKeyframeLayer-DSVf13Su.js} +2 -2
  80. package/dist/chunks/{createKeyframeLayer-BTa4LyJE.js.map → createKeyframeLayer-DSVf13Su.js.map} +1 -1
  81. package/dist/chunks/field.module-B27pWv0i.js +15 -0
  82. package/dist/chunks/{field.module-Bh7BTKMh.js.map → field.module-B27pWv0i.js.map} +1 -1
  83. package/dist/chunks/{model-B1-gMBIW.js → model-qsAFK7_0.js} +2 -2
  84. package/dist/chunks/{model-B1-gMBIW.js.map → model-qsAFK7_0.js.map} +1 -1
  85. package/dist/components/BandEditor/index.js +1 -1
  86. package/dist/components/ColorField/index.js +1 -1
  87. package/dist/components/ComboBox/index.js +1 -1
  88. package/dist/components/CurveEditor/index.js +2 -2
  89. package/dist/components/DataGrid/DataGrid.d.ts +3 -0
  90. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  91. package/dist/components/DataGrid/index.js +1 -1
  92. package/dist/components/DetailList/DetailList.d.ts +1 -1
  93. package/dist/components/DetailList/DetailList.d.ts.map +1 -1
  94. package/dist/components/DetailList/index.js +1 -1
  95. package/dist/components/DetentSlider/index.js +1 -1
  96. package/dist/components/FallthroughDiagram/index.js +1 -1
  97. package/dist/components/Field/index.js +1 -1
  98. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts +5 -2
  99. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -1
  100. package/dist/components/FillStrokeSwatch/index.js +1 -1
  101. package/dist/components/FontFamilySelect/index.js +1 -1
  102. package/dist/components/FontWeightSelect/index.js +1 -1
  103. package/dist/components/GradientEditor/index.js +1 -1
  104. package/dist/components/InlineRange/index.js +1 -1
  105. package/dist/components/Input/index.js +1 -1
  106. package/dist/components/Jog/index.js +1 -1
  107. package/dist/components/LayerList/index.js +1 -1
  108. package/dist/components/ListEditor/index.js +1 -1
  109. package/dist/components/MenuButton/index.js +1 -1
  110. package/dist/components/MeshEditor/index.js +1 -1
  111. package/dist/components/NumberField/index.js +1 -1
  112. package/dist/components/PaintField/index.js +1 -1
  113. package/dist/components/PaintInput/index.js +1 -1
  114. package/dist/components/PatternPicker/index.js +1 -1
  115. package/dist/components/Plot2D/index.js +1 -1
  116. package/dist/components/PointPlotter/index.js +1 -1
  117. package/dist/components/Prefs/PrefsForm.d.ts +14 -0
  118. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  119. package/dist/components/Prefs/PrefsRow.d.ts +4 -0
  120. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -1
  121. package/dist/components/Prefs/index.js +1 -1
  122. package/dist/components/Properties/PropertyField.d.ts.map +1 -1
  123. package/dist/components/Properties/PropertyPanel.d.ts +18 -1
  124. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  125. package/dist/components/Properties/index.d.ts +2 -2
  126. package/dist/components/Properties/index.d.ts.map +1 -1
  127. package/dist/components/Properties/index.js +3 -3
  128. package/dist/components/RadioGroup/index.js +1 -1
  129. package/dist/components/RangeSlider/index.js +1 -1
  130. package/dist/components/Select/index.js +1 -1
  131. package/dist/components/SelectionPanel/index.js +2 -2
  132. package/dist/components/Slider/index.js +1 -1
  133. package/dist/components/StatusBar/StatusBar.d.ts +1 -1
  134. package/dist/components/StatusBar/index.js +1 -1
  135. package/dist/components/SwatchStrip/index.js +1 -1
  136. package/dist/components/Timeline/Transport.d.ts.map +1 -1
  137. package/dist/components/Timeline/index.js +1 -1
  138. package/dist/components/TokenPanel/index.js +1 -1
  139. package/dist/components/ToolOptionsBar/index.js +1 -1
  140. package/dist/index.js +75 -75
  141. package/dist/index.js.map +1 -1
  142. package/dist/style.css +1 -1
  143. package/package.json +9 -9
  144. package/dist/chunks/BandEditor-Dd0egAgE.js.map +0 -1
  145. package/dist/chunks/ColorField-BLs9fbeq.js.map +0 -1
  146. package/dist/chunks/ComboBox-CuTLRmUg.js.map +0 -1
  147. package/dist/chunks/DataGrid-BklgBqS0.js.map +0 -1
  148. package/dist/chunks/DetailList-DFtqdOJj.js +0 -52
  149. package/dist/chunks/DetailList-DFtqdOJj.js.map +0 -1
  150. package/dist/chunks/FallthroughDiagram-C7BUe8eU.js.map +0 -1
  151. package/dist/chunks/FillStrokeSwatch-CgsYQgew.js.map +0 -1
  152. package/dist/chunks/InlineRange-P01ABSzo.js.map +0 -1
  153. package/dist/chunks/Jog-DfNUYejm.js.map +0 -1
  154. package/dist/chunks/NumberField-DLXXgh48.js.map +0 -1
  155. package/dist/chunks/Plot2D-BHNbgCAl.js.map +0 -1
  156. package/dist/chunks/Prefs-CkyldX-e.js.map +0 -1
  157. package/dist/chunks/PropertyField-CV_Gw57S.js.map +0 -1
  158. package/dist/chunks/RangeSlider-BxokZViJ.js.map +0 -1
  159. package/dist/chunks/Select-BppLsJTz.js.map +0 -1
  160. package/dist/chunks/Slider-Cl5RCeZ7.js.map +0 -1
  161. package/dist/chunks/StatusBar-Ca9Dvhhq.js.map +0 -1
  162. package/dist/chunks/Timeline-pqnYk5cV.js.map +0 -1
  163. package/dist/chunks/TokenPanel-DAkL6vwQ.js.map +0 -1
  164. package/dist/chunks/field.module-Bh7BTKMh.js +0 -15
package/dist/index.js CHANGED
@@ -15,83 +15,83 @@ import { t as vt } from "./chunks/CloseButton-BmNmRVtb.js";
15
15
  import { t as yt } from "./chunks/Code-AsKpgnv6.js";
16
16
  import { t as bt } from "./chunks/useReorderDragList-CStYKjHl.js";
17
17
  import { n as xt, r as St, t as Ct } from "./chunks/Disclosure-Ch2KxYuB.js";
18
- import { t as wt } from "./chunks/DataGrid-BklgBqS0.js";
19
- import { n as Tt, t as Et } from "./chunks/DetailList-DFtqdOJj.js";
18
+ import { t as wt } from "./chunks/DataGrid-CmHJe57v.js";
19
+ import { n as Tt, t as Et } from "./chunks/DetailList-BpU50XVe.js";
20
20
  import { t as Dt } from "./chunks/DragGhost-BeYDJyLZ.js";
21
21
  import { t as Ot } from "./chunks/DragGrip-AoIZXfZb.js";
22
22
  import { a as kt, i as At, n as jt, o as Mt, r as Nt, s as Pt, t as Ft } from "./chunks/Keycaps-C-FJyG8k.js";
23
- import { a as It, c as Lt, i as Rt, n as zt, o as Bt, r as Vt, s as Ht, t as Ut } from "./chunks/Plot2D-BHNbgCAl.js";
24
- import { a as Wt, i as Gt, n as Kt, r as qt, t as Jt } from "./chunks/CurveEditor-jVBEqqdv.js";
25
- import { i as Yt, n as Xt, r as Zt, t as Qt } from "./chunks/createKeyframeLayer-BTa4LyJE.js";
23
+ import { a as It, c as Lt, i as Rt, n as zt, o as Bt, r as Vt, s as Ht, t as Ut } from "./chunks/Plot2D-BrvQS0dh.js";
24
+ import { a as Wt, i as Gt, n as Kt, r as qt, t as Jt } from "./chunks/CurveEditor-0EE00D6s.js";
25
+ import { i as Yt, n as Xt, r as Zt, t as Qt } from "./chunks/createKeyframeLayer-DSVf13Su.js";
26
26
  import { n as $t, r as en, t as tn } from "./chunks/handles-CqVANLtu.js";
27
27
  import { t as nn } from "./chunks/snap-DRjbOiG9.js";
28
- import { i as rn, n as an, r as on, t as sn } from "./chunks/Properties-D15c8NP-.js";
28
+ import { i as rn, n as an, r as on, t as sn } from "./chunks/Properties-DseN56WI.js";
29
29
  import { t as cn } from "./chunks/Dialog-DKfsk5VN.js";
30
- import { a as ln, c as un, i as dn, n as fn, o as pn, s as mn, t as hn } from "./chunks/PropertyField-CV_Gw57S.js";
31
- import { a as gn, i as _n, n as U, o as vn, r as yn, t as bn } from "./chunks/RecentColorsProvider-DHcfk25u.js";
32
- import { t as xn } from "./chunks/InlineRange-P01ABSzo.js";
33
- import { t as Sn } from "./chunks/ColorField-BLs9fbeq.js";
34
- import { n as Cn, r as wn, t as Tn } from "./chunks/Select-BppLsJTz.js";
35
- import { t as En } from "./chunks/FontFamilySelect-CGJ5OIOy.js";
36
- import { n as Dn, t as On } from "./chunks/FontWeightSelect-RbcXYJPS.js";
37
- import { t as kn } from "./chunks/Input-CzwvCZs_.js";
38
- import { r as An, t as jn } from "./chunks/NumberField-DLXXgh48.js";
39
- import { t as Mn } from "./chunks/paintPreview-CuSZiHpR.js";
40
- import { t as Nn } from "./chunks/Slider-Cl5RCeZ7.js";
41
- import { t as Pn } from "./chunks/ToggleBar-Z2jZiguF.js";
42
- import { t as Fn } from "./chunks/useRovingTabIndex-D7u22Ia_.js";
43
- import { o as In, s as Ln, t as Rn } from "./chunks/MeshEditor-GbqqiPk8.js";
44
- import { i as zn, n as Bn, r as Vn, t as Hn } from "./chunks/GradientEditor-DypXzMc-.js";
45
- import { n as Un, t as Wn } from "./chunks/PatternPicker-CaMYXzhF.js";
46
- import { t as Gn } from "./chunks/PaintInput-jQRxM95Y.js";
47
- import { t as Kn } from "./chunks/PaintField-C0hoXc0Y.js";
48
- import { n as qn, t as Jn } from "./chunks/Field-DsBlnFKf.js";
49
- import { n as Yn, t as Xn } from "./chunks/RadioGroup-4dbzqvGy.js";
50
- import { t as Zn } from "./chunks/Switch-CSYmcM8y.js";
51
- import { n as Qn, r as $n, t as er } from "./chunks/LayerList-CsDqwYh-.js";
52
- import { t as tr } from "./chunks/ItemList-CRu9y7hL.js";
53
- import { t as nr } from "./chunks/ListEditor-BnGzqERm.js";
54
- import { t as rr } from "./chunks/ColorModeControl-DaVJ-SyX.js";
55
- import { n as ir, t as ar } from "./chunks/ThemeSwitcher-DiBmMh_B.js";
56
- import { t as or } from "./chunks/OptionsBar-DeTAjVb7.js";
57
- import { t as sr } from "./chunks/ButtonBar-CIMKPPRS.js";
58
- import { a as cr, i as lr, n as ur, o as dr, r as fr, s as pr, t as mr } from "./chunks/prefField-BE_Ytr2H.js";
59
- import { i as hr, l as gr, n as _r, o as vr, r as yr, s as br, t as xr } from "./chunks/model-B1-gMBIW.js";
60
- import { t as Sr } from "./chunks/ToolOptionsBar-COsTJ1cu.js";
61
- import { t as Cr } from "./chunks/FillStrokeSwatch-CgsYQgew.js";
62
- import { t as wr } from "./chunks/SwatchGrid-9ZPiDmxd.js";
63
- import { a as Tr, i as Er, n as Dr, r as Or, t as kr } from "./chunks/SwatchStrip-Cw0l8Om7.js";
64
- import { t as Ar } from "./chunks/Powerline-6wIFmDik.js";
65
- import { n as jr, t as Mr } from "./chunks/GestureRoute-BXESrHI0.js";
66
- import { t as Nr } from "./chunks/FallthroughDiagram-C7BUe8eU.js";
67
- import { a as Pr, i as Fr, n as Ir, o as Lr, r as Rr, t as zr } from "./chunks/Prefs-CkyldX-e.js";
68
- import { t as Br } from "./chunks/SelectionPanel-Cm1qu-ZX.js";
69
- import { t as Vr } from "./chunks/ResizeHandle-CbAgCQOt.js";
70
- import { t as Hr } from "./chunks/Sidebar-BZ0m4afn.js";
71
- import { t as Ur } from "./chunks/SidebarPanel-AXQ0jRDx.js";
72
- import { n as Wr, r as Gr, t as Kr } from "./chunks/StatusBar-Ca9Dvhhq.js";
73
- import { t as qr } from "./chunks/ToolButton-BURp4YIO.js";
74
- import { t as Jr } from "./chunks/ToolGroup-Dpg1LN0l.js";
75
- import { t as Yr } from "./chunks/ToolPalette-DKDFWOX-.js";
30
+ import { a as ln, c as un, i as dn, l as fn, n as pn, o as mn, s as hn, t as gn } from "./chunks/PropertyField-BbNqK8xr.js";
31
+ import { a as _n, i as U, n as vn, o as yn, r as bn, t as xn } from "./chunks/RecentColorsProvider-DHcfk25u.js";
32
+ import { t as Sn } from "./chunks/InlineRange-DPjIsJB3.js";
33
+ import { t as Cn } from "./chunks/ColorField-BwlelY26.js";
34
+ import { n as wn, r as Tn, t as En } from "./chunks/Select-ouV8O6cp.js";
35
+ import { t as Dn } from "./chunks/FontFamilySelect-DEvMXyZd.js";
36
+ import { n as On, t as kn } from "./chunks/FontWeightSelect-BLQ_LMJF.js";
37
+ import { t as An } from "./chunks/Input-D7SDKbST.js";
38
+ import { r as jn, t as Mn } from "./chunks/NumberField-DS0WSiin.js";
39
+ import { t as Nn } from "./chunks/paintPreview-CuSZiHpR.js";
40
+ import { t as Pn } from "./chunks/Slider-DSrlMEq8.js";
41
+ import { t as Fn } from "./chunks/ToggleBar-Z2jZiguF.js";
42
+ import { t as In } from "./chunks/useRovingTabIndex-D7u22Ia_.js";
43
+ import { o as Ln, s as Rn, t as zn } from "./chunks/MeshEditor-DWpvg8H6.js";
44
+ import { i as Bn, n as Vn, r as Hn, t as Un } from "./chunks/GradientEditor-DD2OjQtn.js";
45
+ import { n as Wn, t as Gn } from "./chunks/PatternPicker-B3HcMZWg.js";
46
+ import { t as Kn } from "./chunks/PaintInput-DaQMeBsI.js";
47
+ import { t as qn } from "./chunks/PaintField-BdmQM53v.js";
48
+ import { n as Jn, t as Yn } from "./chunks/Field-DiX_WByH.js";
49
+ import { n as Xn, t as Zn } from "./chunks/RadioGroup-B70_M-gT.js";
50
+ import { t as Qn } from "./chunks/Switch-CSYmcM8y.js";
51
+ import { n as $n, r as er, t as tr } from "./chunks/LayerList-Bxj1N6bj.js";
52
+ import { t as nr } from "./chunks/ItemList-CRu9y7hL.js";
53
+ import { t as rr } from "./chunks/ListEditor-OQDzG4A5.js";
54
+ import { t as ir } from "./chunks/ColorModeControl-DaVJ-SyX.js";
55
+ import { n as ar, t as or } from "./chunks/ThemeSwitcher-DiBmMh_B.js";
56
+ import { t as sr } from "./chunks/OptionsBar-DeTAjVb7.js";
57
+ import { t as cr } from "./chunks/ButtonBar-CIMKPPRS.js";
58
+ import { a as lr, i as ur, n as dr, o as fr, r as pr, s as mr, t as hr } from "./chunks/prefField-BE_Ytr2H.js";
59
+ import { i as gr, l as _r, n as vr, o as yr, r as br, s as xr, t as Sr } from "./chunks/model-qsAFK7_0.js";
60
+ import { t as Cr } from "./chunks/ToolOptionsBar-CZTYPoC2.js";
61
+ import { t as wr } from "./chunks/FillStrokeSwatch-C4h3rUFM.js";
62
+ import { t as Tr } from "./chunks/SwatchGrid-9ZPiDmxd.js";
63
+ import { a as Er, i as Dr, n as Or, r as kr, t as Ar } from "./chunks/SwatchStrip-Bi9iPLoh.js";
64
+ import { t as jr } from "./chunks/Powerline-6wIFmDik.js";
65
+ import { n as Mr, t as Nr } from "./chunks/GestureRoute-BXESrHI0.js";
66
+ import { t as Pr } from "./chunks/FallthroughDiagram-CS1IhQaU.js";
67
+ import { a as Fr, i as Ir, n as Lr, o as Rr, r as zr, t as Br } from "./chunks/Prefs-C4MZ28SX.js";
68
+ import { t as Vr } from "./chunks/SelectionPanel-C3WzyaZV.js";
69
+ import { t as Hr } from "./chunks/ResizeHandle-CbAgCQOt.js";
70
+ import { t as Ur } from "./chunks/Sidebar-BZ0m4afn.js";
71
+ import { t as Wr } from "./chunks/SidebarPanel-AXQ0jRDx.js";
72
+ import { n as Gr, r as Kr, t as qr } from "./chunks/StatusBar-BEOfOX0D.js";
73
+ import { t as Jr } from "./chunks/ToolButton-BURp4YIO.js";
74
+ import { t as Yr } from "./chunks/ToolGroup-Dpg1LN0l.js";
75
+ import { t as Xr } from "./chunks/ToolPalette-DKDFWOX-.js";
76
76
  import "./components/Field/index.js";
77
- import { t as Xr } from "./chunks/Checkbox-DFn-x0JO.js";
78
- import { i as Zr, n as Qr, r as $r, t as ei } from "./chunks/Tabs-BbpzLLdY.js";
79
- import { n as ti, r as ni, t as ri } from "./chunks/Tree-Cc8lIzgM.js";
80
- import { t as ii } from "./chunks/MenuButton-L9f5vido.js";
81
- import { n as ai, t as oi } from "./chunks/ComboBox-CuTLRmUg.js";
82
- import { t as si } from "./chunks/RangeSlider-BxokZViJ.js";
83
- import { t as ci } from "./chunks/DetentSlider-Bh7EpMqT.js";
84
- import { n as li, t as ui } from "./chunks/Callout-BUn0dP_S.js";
85
- import { a as di, i as fi, n as pi, r as mi, t as hi } from "./chunks/Toast-C3ozq11V.js";
86
- import { t as gi } from "./chunks/PointPlotter-BZ_vk6gV.js";
87
- import { a as _i, i as vi, n as yi, r as bi, t as xi } from "./chunks/TokenPanel-DAkL6vwQ.js";
88
- import { n as Si, r as Ci, t as wi } from "./chunks/BandEditor-Dd0egAgE.js";
89
- import { t as Ti } from "./chunks/Jog-DfNUYejm.js";
90
- import { a as Ei, c as Di, i as Oi, l as ki, n as Ai, o as ji, r as Mi, s as Ni, t as Pi } from "./chunks/Timeline-pqnYk5cV.js";
91
- import { hexToOklchDeg as W, hexToRgba as Fi, interpolateSrgb as G, oklchDegToHex as Ii, rgbaToHex as K, useLatest as Li } from "@weasel-js/core";
92
- import { useCallback as Ri, useEffect as q, useRef as J, useState as Y } from "react";
77
+ import { t as Zr } from "./chunks/Checkbox-DFn-x0JO.js";
78
+ import { i as Qr, n as $r, r as ei, t as ti } from "./chunks/Tabs-BbpzLLdY.js";
79
+ import { n as ni, r as ri, t as ii } from "./chunks/Tree-Cc8lIzgM.js";
80
+ import { t as ai } from "./chunks/MenuButton-TAFg88Lp.js";
81
+ import { n as oi, t as si } from "./chunks/ComboBox-DKln_mOd.js";
82
+ import { t as ci } from "./chunks/RangeSlider-DO5TZVk7.js";
83
+ import { t as li } from "./chunks/DetentSlider-DNTAk8xP.js";
84
+ import { n as ui, t as di } from "./chunks/Callout-BUn0dP_S.js";
85
+ import { a as fi, i as pi, n as mi, r as hi, t as gi } from "./chunks/Toast-C3ozq11V.js";
86
+ import { t as _i } from "./chunks/PointPlotter-BBXpQ_QD.js";
87
+ import { a as vi, i as yi, n as bi, r as xi, t as Si } from "./chunks/TokenPanel-WtKGY2Db.js";
88
+ import { n as Ci, r as wi, t as Ti } from "./chunks/BandEditor-B4jUAHQ8.js";
89
+ import { t as Ei } from "./chunks/Jog-BrkzdGV2.js";
90
+ import { a as Di, c as Oi, i as ki, l as Ai, n as ji, o as Mi, r as Ni, s as Pi, t as Fi } from "./chunks/Timeline-sMCH2fah.js";
91
+ import { hexToOklchDeg as W, hexToRgba as Ii, interpolateSrgb as G, oklchDegToHex as Li, rgbaToHex as K, useLatest as Ri } from "@weasel-js/core";
92
+ import { useCallback as zi, useEffect as q, useRef as J, useState as Y } from "react";
93
93
  //#region src/color/oklch.ts
94
- var X = Ii;
94
+ var X = Li;
95
95
  function Z(e, t) {
96
96
  let [n, r] = t.lRange;
97
97
  return e <= n ? t.cBot : e >= r ? t.cTop : e <= t.midL ? t.cBot + (t.cPeak - t.cBot) * ((e - n) / (t.midL - n)) : t.cPeak + (t.cTop - t.cPeak) * ((e - t.midL) / (r - t.midL));
@@ -99,7 +99,7 @@ function Z(e, t) {
99
99
  //#endregion
100
100
  //#region src/color/ramp.ts
101
101
  var Q = (e) => {
102
- let [t, n, r] = Fi(e);
102
+ let [t, n, r] = Ii(e);
103
103
  return [
104
104
  t,
105
105
  n,
@@ -112,13 +112,13 @@ function $(e, t, n, r = {}) {
112
112
  let u = W(l), d = u.C > 1e-4 ? u.H : W(K(G(s, c, n, "oklch", a))).H;
113
113
  return X(u.L, Z(u.L, o), d);
114
114
  }
115
- function zi(e, t, n, r = {}) {
115
+ function Bi(e, t, n, r = {}) {
116
116
  return n <= 1 ? n === 1 ? [$(e, t, 0, r)] : [] : Array.from({ length: n }, (i, a) => $(e, t, a / (n - 1), r));
117
117
  }
118
118
  //#endregion
119
119
  //#region src/useAsyncOptions.ts
120
- function Bi({ load: e, debounceMs: t = 150, minLength: n = 0 }) {
121
- let [r, i] = Y(""), [a, o] = Y([]), [s, c] = Y(!1), [l, u] = Y(null), d = Li(e), f = J(0), p = J(0), m = J(null);
120
+ function Vi({ load: e, debounceMs: t = 150, minLength: n = 0 }) {
121
+ let [r, i] = Y(""), [a, o] = Y([]), [s, c] = Y(!1), [l, u] = Y(null), d = Ri(e), f = J(0), p = J(0), m = J(null);
122
122
  return q(() => {
123
123
  if (r.length < n) {
124
124
  m.current?.abort(), m.current = null, p.current = f.current, o([]), c(!1), u(null);
@@ -143,10 +143,10 @@ function Bi({ load: e, debounceMs: t = 150, minLength: n = 0 }) {
143
143
  isLoading: s,
144
144
  loadError: l,
145
145
  inputValue: r,
146
- onInputChange: Ri((e) => i(e), [])
146
+ onInputChange: zi((e) => i(e), [])
147
147
  };
148
148
  }
149
149
  //#endregion
150
- export { ft as ActionBar, Ve as AddIcon, Ae as AlignBottomIcon, Le as AlignCenterXIcon, be as AlignCenterYIcon, I as AlignLeftIcon, Me as AlignRightIcon, ze as AlignTopIcon, Pi as AnimatedTimeline, B as ArrowIcon, gt as BADGE_STATUS_ICONS, Or as BASIC_PALETTE, Er as BUILTIN_PALETTES, mt as Badge, wi as BandEditor, Ee as BringForwardIcon, Ue as BringToFrontIcon, H as BusyIcon, _t as Button, sr as ButtonBar, ar as COLOR_MODE_OPTIONS, ui as Callout, li as CalloutTrigger, me as CheckIcon, Xr as Checkbox, Pe as ChevronIcon, Oe as CloneIcon, vt as CloseButton, ve as CloseIcon, yt as Code, ge as CollapseIcon, Sn as ColorField, rr as ColorModeControl, oi as ComboBox, ai as ComboBoxItem, P as CompareIcon, Ge as CopyIcon, Ze as CrosshairIcon, Kt as CurveEditor, rn as CurveField, R as CutIcon, wt as DataGrid, Ye as DeleteIcon, Et as DetailList, Tt as DetailRow, ci as DetentSlider, cn as Dialog, on as DialogRow, Ct as Disclosure, xt as DisclosureMark, St as DisclosureRow, w as DistributeHorizontalIcon, d as DistributeVerticalIcon, Dt as DragGhost, Ot as DragGrip, qe as DuplicateIcon, ji as EASING_NAMES, pt as EDGE_PROFILES, Ei as EasingPicker, E as EllipseIcon, ee as ErrorIcon, p as ExpandIcon, v as ExportIcon, we as EyedropperIcon, Nr as FallthroughDiagram, Jn as Field, Cr as FillStrokeSwatch, c as FilterIcon, Se as FitIcon, de as FlipXIcon, g as FlipYIcon, ct as Focusable, En as FontFamilySelect, On as FontWeightSelect, b as FullscreenIcon, Mr as GestureRoute, Vn as GradientEditor, Bn as GradientHandles, ne as GridIcon, oe as GroupIcon, tn as HANDLE_SIZE_TOKENS, ue as HandIcon, C as HiddenIcon, a as ICON_FILLS, r as ICON_GROUPS, n as ICON_PATHS, o as Icon, $e as ImageIcon, u as InfoIcon, xn as InlineRange, kn as Input, tr as ItemList, Ti as Jog, Nt as KeyCap, jt as KeySequence, k as LassoIcon, Qn as LayerList, Yt as LayeredCurveEditor, ae as LayersIcon, O as LayoutColumnsIcon, A as LayoutGridIcon, ie as LayoutRowsIcon, le as LineIcon, Ie as LinkIcon, nr as ListEditor, ce as LockIcon, M as LoupeIcon, xr as MIXED, j as MeasureIcon, ii as MenuButton, In as MeshEditor, Rn as MeshHandles, N as ModeAutoIcon, S as ModeDarkIcon, s as ModeLightIcon, An as NumberField, or as OptionsBar, at as OverlayPortalProvider, pe as PageIcon, Kn as PaintField, Gn as PaintInput, He as PanIcon, je as PasteIcon, Wn as PatternPicker, Re as PauseIcon, xe as PenIcon, L as PencilIcon, Ne as PinIcon, Be as PlayIcon, Ut as Plot2D, gi as PointPlotter, V as PolygonIcon, Ar as Powerline, zr as PrefsDialog, Ir as PrefsForm, Fr as PrefsPane, Rr as PrefsRail, hn as PropertyControl, fn as PropertyField, an as PropertyGroup, dn as PropertyList, ln as PropertyNote, pn as PropertyPanel, mn as PropertyRow, un as PropertySpan, Xn as Radio, Yn as RadioGroup, De as RandomizeIcon, si as RangeSlider, bn as RecentColorsProvider, We as RectIcon, fe as RedoIcon, he as RefreshIcon, Fe as RemoveIcon, ke as ResetIcon, Vr as ResizeHandle, Tr as STANDARD_PALETTE, Hn as SceneGradientHandles, ye as SearchIcon, Tn as Select, _e as SelectIcon, Cn as SelectItem, wn as SelectSection, Br as SelectionPanel, F as SendBackwardIcon, Ke as SendToBackIcon, Hr as Sidebar, Ur as SidebarPanel, Nn as Slider, Qe as SnapIcon, z as SnapshotIcon, Xe as SortIcon, T as StarIcon, Kr as StatusBar, Wr as StatusBarItem, Gr as StatusBarSpacer, f as StepBackIcon, Je as StepForwardIcon, D as StepIcon, te as StopIcon, sn as Subpanel, wr as SwatchGrid, kr as SwatchStrip, Zn as Switch, yi as TOKEN_CATEGORIES, ei as Tab, Qr as TabList, $r as TabPanel, Zr as Tabs, m as TextIcon, ir as ThemeSwitcher, Ai as Timeline, pi as ToastQueue, hi as ToastRegion, Pn as ToggleBar, xi as TokenPanel, qr as ToolButton, Jr as ToolGroup, Sr as ToolOptionsBar, Yr as ToolPalette, ot as Tooltip, st as TooltipTrigger, Oi as Transport, ri as Tree, y as TuneIcon, Te as UndoIcon, l as UngroupIcon, jn as UnitField, Ce as UnknownIcon, h as UnlockIcon, _ as VisibleIcon, x as WarningIcon, re as ZoomInIcon, se as ZoomOutIcon, _r as aggregateValue, Qt as applyKeyframeDrag, Z as chromaAt, yr as classifyKind, zi as colorRamp, qt as createFunctionLayer, Xt as createKeyframeLayer, gn as createRecentColorsStore, Jt as createSetCurveOp, mi as createToastQueue, fi as defaultToastQueue, Dr as describeColor, kt as detectPlatform, t as dlog, Ni as easingBezier, Di as easingLabel, hr as effectiveSections, qn as fieldClasses, ur as filterPrefSubtree, ti as filterTree, Dn as fontWeightLabel, dt as formatShortcut, ut as formatShortcutParts, zt as formatTick, Gt as functionLayerState, jr as gestureRouteSegments, $t as handleHalf, en as handleSize, At as inferKeycapKind, bi as inferTokenType, e as isDebugEnabled, i as isFillable, Ln as isMeshPaint, fr as isPrefLeaf, lt as keyGlyph, Mt as keySpecFromKey, Pt as keySpecsFromMods, Ft as keySpecsFromShortcut, Zt as keyframeLayerState, vr as kindBreakdown, Si as linearScale, Ci as logScale, Ht as modelToPlot, $n as moveLayers, rt as nearestPortalHost, Vt as niceStep, Rt as niceTicks, br as nodeValueAt, vn as normalizeRecentColor, X as oklchToHex, zn as paintGradientTrack, Mn as paintPreviewCss, Pr as pickActiveSection, Lt as plotToModel, lr as prefDisplayBounds, mr as prefFieldProps, cr as prefRailItems, dr as prefValueAtPath, $ as rampColor, vi as refitScale, Mi as samePath, Wt as sampleByInterpolation, ki as sampleEasing, Un as seedPattern, gr as setAtPath, nn as snapToNearest, et as solidColorOf, It as stepDecimals, tt as strokeColorOf, Bt as tickDecimals, di as toast, _i as tokenCategory, ni as treeBranchIds, it as useAssignedPortalContainer, Bi as useAsyncOptions, nt as useOverlayPortal, U as useRecentColors, yn as useRecentColorsStore, _n as useRecordRecentColor, bt as useReorderDragList, Fn as useRovingTabIndex, er as useSceneLayerList, Lr as useScrollSpy, ht as useStance, pr as visiblePrefSubtree };
150
+ export { ft as ActionBar, Ve as AddIcon, Ae as AlignBottomIcon, Le as AlignCenterXIcon, be as AlignCenterYIcon, I as AlignLeftIcon, Me as AlignRightIcon, ze as AlignTopIcon, Fi as AnimatedTimeline, B as ArrowIcon, gt as BADGE_STATUS_ICONS, kr as BASIC_PALETTE, Dr as BUILTIN_PALETTES, mt as Badge, Ti as BandEditor, Ee as BringForwardIcon, Ue as BringToFrontIcon, H as BusyIcon, _t as Button, cr as ButtonBar, or as COLOR_MODE_OPTIONS, di as Callout, ui as CalloutTrigger, me as CheckIcon, Zr as Checkbox, Pe as ChevronIcon, Oe as CloneIcon, vt as CloseButton, ve as CloseIcon, yt as Code, ge as CollapseIcon, Cn as ColorField, ir as ColorModeControl, si as ComboBox, oi as ComboBoxItem, P as CompareIcon, Ge as CopyIcon, Ze as CrosshairIcon, Kt as CurveEditor, rn as CurveField, R as CutIcon, wt as DataGrid, Ye as DeleteIcon, Et as DetailList, Tt as DetailRow, li as DetentSlider, cn as Dialog, on as DialogRow, Ct as Disclosure, xt as DisclosureMark, St as DisclosureRow, w as DistributeHorizontalIcon, d as DistributeVerticalIcon, Dt as DragGhost, Ot as DragGrip, qe as DuplicateIcon, Mi as EASING_NAMES, pt as EDGE_PROFILES, Di as EasingPicker, E as EllipseIcon, ee as ErrorIcon, p as ExpandIcon, v as ExportIcon, we as EyedropperIcon, Pr as FallthroughDiagram, Yn as Field, wr as FillStrokeSwatch, c as FilterIcon, Se as FitIcon, de as FlipXIcon, g as FlipYIcon, ct as Focusable, Dn as FontFamilySelect, kn as FontWeightSelect, b as FullscreenIcon, Nr as GestureRoute, Hn as GradientEditor, Vn as GradientHandles, ne as GridIcon, oe as GroupIcon, tn as HANDLE_SIZE_TOKENS, ue as HandIcon, C as HiddenIcon, a as ICON_FILLS, r as ICON_GROUPS, n as ICON_PATHS, o as Icon, $e as ImageIcon, u as InfoIcon, Sn as InlineRange, An as Input, nr as ItemList, Ei as Jog, Nt as KeyCap, jt as KeySequence, k as LassoIcon, $n as LayerList, Yt as LayeredCurveEditor, ae as LayersIcon, O as LayoutColumnsIcon, A as LayoutGridIcon, ie as LayoutRowsIcon, le as LineIcon, Ie as LinkIcon, rr as ListEditor, ce as LockIcon, M as LoupeIcon, Sr as MIXED, j as MeasureIcon, ai as MenuButton, Ln as MeshEditor, zn as MeshHandles, N as ModeAutoIcon, S as ModeDarkIcon, s as ModeLightIcon, jn as NumberField, sr as OptionsBar, at as OverlayPortalProvider, pe as PageIcon, qn as PaintField, Kn as PaintInput, He as PanIcon, je as PasteIcon, Gn as PatternPicker, Re as PauseIcon, xe as PenIcon, L as PencilIcon, Ne as PinIcon, Be as PlayIcon, Ut as Plot2D, _i as PointPlotter, V as PolygonIcon, jr as Powerline, Br as PrefsDialog, Lr as PrefsForm, Ir as PrefsPane, zr as PrefsRail, gn as PropertyControl, pn as PropertyField, an as PropertyGroup, dn as PropertyHelp, ln as PropertyList, mn as PropertyNote, hn as PropertyPanel, un as PropertyRow, fn as PropertySpan, Zn as Radio, Xn as RadioGroup, De as RandomizeIcon, ci as RangeSlider, xn as RecentColorsProvider, We as RectIcon, fe as RedoIcon, he as RefreshIcon, Fe as RemoveIcon, ke as ResetIcon, Hr as ResizeHandle, Er as STANDARD_PALETTE, Un as SceneGradientHandles, ye as SearchIcon, En as Select, _e as SelectIcon, wn as SelectItem, Tn as SelectSection, Vr as SelectionPanel, F as SendBackwardIcon, Ke as SendToBackIcon, Ur as Sidebar, Wr as SidebarPanel, Pn as Slider, Qe as SnapIcon, z as SnapshotIcon, Xe as SortIcon, T as StarIcon, qr as StatusBar, Gr as StatusBarItem, Kr as StatusBarSpacer, f as StepBackIcon, Je as StepForwardIcon, D as StepIcon, te as StopIcon, sn as Subpanel, Tr as SwatchGrid, Ar as SwatchStrip, Qn as Switch, bi as TOKEN_CATEGORIES, ti as Tab, $r as TabList, ei as TabPanel, Qr as Tabs, m as TextIcon, ar as ThemeSwitcher, ji as Timeline, mi as ToastQueue, gi as ToastRegion, Fn as ToggleBar, Si as TokenPanel, Jr as ToolButton, Yr as ToolGroup, Cr as ToolOptionsBar, Xr as ToolPalette, ot as Tooltip, st as TooltipTrigger, ki as Transport, ii as Tree, y as TuneIcon, Te as UndoIcon, l as UngroupIcon, Mn as UnitField, Ce as UnknownIcon, h as UnlockIcon, _ as VisibleIcon, x as WarningIcon, re as ZoomInIcon, se as ZoomOutIcon, vr as aggregateValue, Qt as applyKeyframeDrag, Z as chromaAt, br as classifyKind, Bi as colorRamp, qt as createFunctionLayer, Xt as createKeyframeLayer, _n as createRecentColorsStore, Jt as createSetCurveOp, hi as createToastQueue, pi as defaultToastQueue, Or as describeColor, kt as detectPlatform, t as dlog, Pi as easingBezier, Oi as easingLabel, gr as effectiveSections, Jn as fieldClasses, dr as filterPrefSubtree, ni as filterTree, On as fontWeightLabel, dt as formatShortcut, ut as formatShortcutParts, zt as formatTick, Gt as functionLayerState, Mr as gestureRouteSegments, $t as handleHalf, en as handleSize, At as inferKeycapKind, xi as inferTokenType, e as isDebugEnabled, i as isFillable, Rn as isMeshPaint, pr as isPrefLeaf, lt as keyGlyph, Mt as keySpecFromKey, Pt as keySpecsFromMods, Ft as keySpecsFromShortcut, Zt as keyframeLayerState, yr as kindBreakdown, Ci as linearScale, wi as logScale, Ht as modelToPlot, er as moveLayers, rt as nearestPortalHost, Vt as niceStep, Rt as niceTicks, xr as nodeValueAt, yn as normalizeRecentColor, X as oklchToHex, Bn as paintGradientTrack, Nn as paintPreviewCss, Fr as pickActiveSection, Lt as plotToModel, ur as prefDisplayBounds, hr as prefFieldProps, lr as prefRailItems, fr as prefValueAtPath, $ as rampColor, yi as refitScale, Ni as samePath, Wt as sampleByInterpolation, Ai as sampleEasing, Wn as seedPattern, _r as setAtPath, nn as snapToNearest, et as solidColorOf, It as stepDecimals, tt as strokeColorOf, Bt as tickDecimals, fi as toast, vi as tokenCategory, ri as treeBranchIds, it as useAssignedPortalContainer, Vi as useAsyncOptions, nt as useOverlayPortal, vn as useRecentColors, bn as useRecentColorsStore, U as useRecordRecentColor, bt as useReorderDragList, In as useRovingTabIndex, tr as useSceneLayerList, Rr as useScrollSpy, ht as useStance, mr as visiblePrefSubtree };
151
151
 
152
152
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isDebugEnabled","ICON_PATHS","ICON_GROUPS","isFillable","ICON_FILLS","Icon","ModeLightIcon","FilterIcon","UngroupIcon","InfoIcon","DistributeVerticalIcon","StepBackIcon","ExpandIcon","TextIcon","ErrorIcon","StopIcon","GridIcon","ZoomInIcon","LayoutRowsIcon","LayersIcon","GroupIcon","ZoomOutIcon","LockIcon","LineIcon","HandIcon","FlipXIcon","UnlockIcon","FlipYIcon","VisibleIcon","ExportIcon","TuneIcon","FullscreenIcon","WarningIcon","ModeDarkIcon","HiddenIcon","DistributeHorizontalIcon","StarIcon","EllipseIcon","StepIcon","LayoutColumnsIcon","LassoIcon","LayoutGridIcon","MeasureIcon","LoupeIcon","ModeAutoIcon","CompareIcon","SendBackwardIcon","AlignLeftIcon","PencilIcon","CutIcon","SnapshotIcon","ArrowIcon","PolygonIcon","BusyIcon","RedoIcon","PageIcon","CheckIcon","RefreshIcon","CollapseIcon","SelectIcon","CloseIcon","SearchIcon","AlignCenterYIcon","PenIcon","FitIcon","UnknownIcon","EyedropperIcon","UndoIcon","BringForwardIcon","RandomizeIcon","CloneIcon","ResetIcon","AlignBottomIcon","PasteIcon","AlignRightIcon","PinIcon","ChevronIcon","RemoveIcon","LinkIcon","AlignCenterXIcon","PauseIcon","AlignTopIcon","PlayIcon","AddIcon","PanIcon","BringToFrontIcon","RectIcon","CopyIcon","SendToBackIcon","DuplicateIcon","StepForwardIcon","DeleteIcon","SortIcon","CrosshairIcon","SnapIcon","ImageIcon","solidColorOf","strokeColorOf","useOverlayPortal","nearestPortalHost","useAssignedPortalContainer","OverlayPortalProvider","Tooltip","TooltipTrigger","Focusable","keyGlyph","formatShortcutParts","formatShortcut","ActionBar","EDGE_PROFILES","Badge","useStance","BADGE_STATUS_ICONS","Button","CloseButton","Code","useReorderDragList","DisclosureMark","DisclosureRow","Disclosure","DataGrid","DetailRow","DetailList","DragGhost","DragGrip","detectPlatform","inferKeycapKind","KeySequence","keySpecFromKey","KeyCap","keySpecsFromMods","keySpecsFromShortcut","stepDecimals","plotToModel","niceTicks","formatTick","tickDecimals","niceStep","modelToPlot","Plot2D","sampleByInterpolation","functionLayerState","CurveEditor","createFunctionLayer","createSetCurveOp","LayeredCurveEditor","createKeyframeLayer","keyframeLayerState","applyKeyframeDrag","handleHalf","handleSize","HANDLE_SIZE_TOKENS","snapToNearest","CurveField","PropertyGroup","DialogRow","Subpanel","Dialog","PropertyNote","PropertySpan","PropertyList","PropertyField","PropertyPanel","PropertyRow","PropertyControl","createRecentColorsStore","useRecordRecentColor","useRecentColors","normalizeRecentColor","useRecentColorsStore","RecentColorsProvider","InlineRange","ColorField","SelectItem","SelectSection","Select","FontFamilySelect","fontWeightLabel","FontWeightSelect","Input","NumberField","UnitField","paintPreviewCss","Slider","ToggleBar","useRovingTabIndex","MeshEditor","isMeshPaint","MeshHandles","paintGradientTrack","GradientHandles","GradientEditor","SceneGradientHandles","seedPattern","PatternPicker","PaintInput","PaintField","fieldClasses","Field","RadioGroup","Radio","Switch","LayerList","moveLayers","useSceneLayerList","ItemList","ListEditor","ColorModeControl","ThemeSwitcher","COLOR_MODE_OPTIONS","OptionsBar","ButtonBar","prefRailItems","prefDisplayBounds","filterPrefSubtree","prefValueAtPath","isPrefLeaf","visiblePrefSubtree","prefFieldProps","effectiveSections","setAtPath","aggregateValue","kindBreakdown","classifyKind","nodeValueAt","MIXED","ToolOptionsBar","FillStrokeSwatch","SwatchGrid","STANDARD_PALETTE","BUILTIN_PALETTES","describeColor","BASIC_PALETTE","SwatchStrip","Powerline","gestureRouteSegments","GestureRoute","FallthroughDiagram","pickActiveSection","PrefsPane","PrefsForm","useScrollSpy","PrefsRail","PrefsDialog","SelectionPanel","ResizeHandle","Sidebar","SidebarPanel","StatusBarItem","StatusBarSpacer","StatusBar","ToolButton","ToolGroup","ToolPalette","Checkbox","Tabs","TabList","TabPanel","Tab","filterTree","treeBranchIds","Tree","MenuButton","ComboBoxItem","ComboBox","RangeSlider","DetentSlider","DialogTrigger","Callout","toast","defaultToastQueue","ToastQueue","createToastQueue","ToastRegion","PointPlotter","tokenCategory","refitScale","TOKEN_CATEGORIES","inferTokenType","TokenPanel","linearScale","logScale","BandEditor","Jog","EasingPicker","easingLabel","Transport","sampleEasing","Timeline","EASING_NAMES","samePath","easingBezier","AnimatedTimeline","oklchToHex","oklchDegToHex","chromaAt","lo","hi","curve","L","rgb","r","g","b","hexToRgba","hex","rampColor","options","a","from","to","rgbaToHex","interpolateSrgb","t","space","hue","chroma","s","hexToOklchDeg","H","colorRamp","steps","i","useAsyncOptions","inputValue","setInputValue","useState","setOptions","isLoading","setIsLoading","loadError","setLoadError","loadRef","useLatest","load","issued","useRef","applied","inFlight","useEffect","minLength","timer","mine","controller","next","error","debounceMs","useCallback","dlog"],"sources":["../src/color/oklch.ts","../src/color/ramp.ts","../src/useAsyncOptions.ts"],"sourcesContent":["// OKLCH math from Björn Ottosson: https://bottosson.github.io/posts/oklab/\nimport { oklchDegToHex } from '@weasel-js/core';\n\n/**\n * A chroma envelope over lightness, as three linear segments: flat at `cBot`\n * below `lRange[0]`, rising to `cPeak` at `midL`, falling to `cTop` at\n * `lRange[1]`, flat beyond. Keeps a color ramp inside gamut at the light and\n * dark ends while staying saturated through the middle.\n */\nexport type ChromaCurve = {\n lRange: [number, number];\n midL: number;\n cBot: number;\n cPeak: number;\n cTop: number;\n};\n\n/** A single lightness/chroma sample. */\nexport type ChromaCurvePoint = { L: number; C: number };\n\n/**\n * Converts an OKLCH color to a gamut-clipped `#rrggbb` string. Hue is in\n * degrees, unlike the kit's OKLab helpers which take radians.\n */\nexport const oklchToHex = oklchDegToHex;\n\n/** Evaluates a {@link ChromaCurve} at a lightness, clamping outside its range. */\nexport function chromaAt(L: number, curve: ChromaCurve): number {\n const [lo, hi] = curve.lRange;\n if (L <= lo) return curve.cBot;\n if (L >= hi) return curve.cTop;\n if (L <= curve.midL) return curve.cBot + (curve.cPeak - curve.cBot) * ((L - lo) / (curve.midL - lo));\n return curve.cPeak + (curve.cTop - curve.cPeak) * ((L - curve.midL) / (hi - curve.midL));\n}\n","import {\n hexToOklchDeg,\n hexToRgba,\n interpolateSrgb,\n rgbaToHex,\n type ColorInterpolationSpace,\n type HueInterpolation,\n} from '@weasel-js/core';\nimport { chromaAt, oklchToHex, type ChromaCurve } from './oklch';\n\n/**\n * How {@link rampColor} and {@link colorRamp} travel between two endpoints.\n *\n * What each space interpolates:\n *\n * | `space` | components lerped | hue |\n * | --------------- | ---------------------------- | -------------------- |\n * | `'oklch'` | L, C, H | around the wheel |\n * | `'hsl'` | H, S, L | around the wheel |\n * | `'oklab'` | L, a, b | through the wheel |\n * | `'srgb'` | gamma-encoded R, G, B | through the wheel |\n * | `'srgb-linear'` | linear-light R, G, B | through the wheel |\n *\n * A lightness ramp is two endpoints that differ in lightness, and a hue ramp\n * two that differ in hue: the polar spaces keep chroma or saturation fixed\n * while they move, and the others cut a straight line between the two colors,\n * which for a hue ramp passes through gray.\n *\n * `chroma` is an OKLCH envelope in every space, since {@link ChromaCurve}'s\n * numbers are OKLCH chroma over OKLCH lightness. It runs after the\n * interpolation: each sample keeps its lightness and hue, and its chroma is\n * replaced with the curve's value at that lightness. A sample left with no\n * hue (a gray midpoint) takes the hue an OKLCH ramp would have had there.\n */\nexport interface ColorRampOptions {\n /** Default `'oklch'`. */\n space?: ColorInterpolationSpace;\n /** Polar spaces only. Default `'shorter'`. */\n hue?: HueInterpolation;\n chroma?: ChromaCurve;\n}\n\nconst rgb = (hex: string): [number, number, number] => {\n const [r, g, b] = hexToRgba(hex);\n return [r, g, b];\n};\n\n/** One sample of a ramp from `from` to `to` (`#rrggbb`), `t` in 0..1. */\nexport function rampColor(from: string, to: string, t: number, options: ColorRampOptions = {}): string {\n const { space = 'oklch', hue = 'shorter', chroma } = options;\n const a = rgb(from);\n const b = rgb(to);\n const hex = rgbaToHex(interpolateSrgb(a, b, t, space, hue));\n if (!chroma) return hex;\n const s = hexToOklchDeg(hex);\n const H = s.C > 1e-4 ? s.H : hexToOklchDeg(rgbaToHex(interpolateSrgb(a, b, t, 'oklch', hue))).H;\n return oklchToHex(s.L, chromaAt(s.L, chroma), H);\n}\n\n/** `steps` evenly spaced samples from `from` to `to`, both ends included. */\nexport function colorRamp(from: string, to: string, steps: number, options: ColorRampOptions = {}): string[] {\n if (steps <= 1) return steps === 1 ? [rampColor(from, to, 0, options)] : [];\n return Array.from({ length: steps }, (_, i) => rampColor(from, to, i / (steps - 1), options));\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useLatest } from '@weasel-js/core';\nimport type { ComboBoxOption } from './components/ComboBox/ComboBox';\n\ntype Key = string | number;\n\n/** An option list keyed to the value type its combo box commits. */\nexport type AsyncOption<T extends Key> = ComboBoxOption & { value: T };\n\n/** Options for {@link useAsyncOptions}. */\nexport type UseAsyncOptionsProps<T extends Key> = {\n /**\n * Fetches the options for a query. The signal aborts when a later keystroke\n * supersedes this call, so a `fetch` should forward it.\n */\n load: (query: string, signal: AbortSignal) => Promise<ReadonlyArray<AsyncOption<T>>>;\n /** Quiet period before a query is sent. */\n debounceMs?: number;\n /** Shorter queries are not sent, and empty the options. */\n minLength?: number;\n};\n\n/** What {@link useAsyncOptions} returns, shaped to spread into a `ComboBox`. */\nexport type AsyncOptionsResult<T extends Key> = {\n options: ReadonlyArray<AsyncOption<T>>;\n isLoading: boolean;\n loadError: unknown | null;\n inputValue: string;\n onInputChange: (next: string) => void;\n};\n\n/**\n * Drives a combo box whose options come from a server: debounces the query,\n * discards responses overtaken by a later one, and reports a failed load\n * separately from an empty result.\n *\n * `options` holds the last *resolved* list and is never emptied to mean\n * \"working\", so the previous results stay on screen — and stay arrowable —\n * while the next request is in flight.\n */\nexport function useAsyncOptions<T extends Key = string>({\n load,\n debounceMs = 150,\n minLength = 0,\n}: UseAsyncOptionsProps<T>): AsyncOptionsResult<T> {\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState<ReadonlyArray<AsyncOption<T>>>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [loadError, setLoadError] = useState<unknown | null>(null);\n\n // Read through a ref: a consumer passing an inline arrow re-creates `load`\n // every render, and depending on it directly would refire the request.\n const loadRef = useLatest(load);\n\n // A monotonic id per request, and the highest one whose result has been\n // applied. A liveness flag cannot do this job: two requests from adjacent\n // keystrokes are both live, so the slower one overwrites the newer result\n // if it lands second.\n const issued = useRef(0);\n const applied = useRef(0);\n const inFlight = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (inputValue.length < minLength) {\n inFlight.current?.abort();\n inFlight.current = null;\n applied.current = issued.current;\n setOptions([]);\n setIsLoading(false);\n setLoadError(null);\n return;\n }\n\n const timer = setTimeout(() => {\n const mine = ++issued.current;\n const controller = new AbortController();\n inFlight.current?.abort();\n inFlight.current = controller;\n setIsLoading(true);\n\n loadRef.current(inputValue, controller.signal).then(\n (next) => {\n if (mine <= applied.current) return;\n applied.current = mine;\n setOptions(next);\n setLoadError(null);\n setIsLoading(false);\n },\n (error: unknown) => {\n if (controller.signal.aborted || mine <= applied.current) return;\n applied.current = mine;\n setLoadError(error);\n setIsLoading(false);\n },\n );\n }, debounceMs);\n\n return () => clearTimeout(timer);\n }, [inputValue, debounceMs, minLength, loadRef]);\n\n useEffect(() => () => inFlight.current?.abort(), []);\n\n const onInputChange = useCallback((next: string) => setInputValue(next), []);\n\n return { options, isLoading, loadError, inputValue, onInputChange };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["isDebugEnabled","ICON_PATHS","ICON_GROUPS","isFillable","ICON_FILLS","Icon","ModeLightIcon","FilterIcon","UngroupIcon","InfoIcon","DistributeVerticalIcon","StepBackIcon","ExpandIcon","TextIcon","ErrorIcon","StopIcon","GridIcon","ZoomInIcon","LayoutRowsIcon","LayersIcon","GroupIcon","ZoomOutIcon","LockIcon","LineIcon","HandIcon","FlipXIcon","UnlockIcon","FlipYIcon","VisibleIcon","ExportIcon","TuneIcon","FullscreenIcon","WarningIcon","ModeDarkIcon","HiddenIcon","DistributeHorizontalIcon","StarIcon","EllipseIcon","StepIcon","LayoutColumnsIcon","LassoIcon","LayoutGridIcon","MeasureIcon","LoupeIcon","ModeAutoIcon","CompareIcon","SendBackwardIcon","AlignLeftIcon","PencilIcon","CutIcon","SnapshotIcon","ArrowIcon","PolygonIcon","BusyIcon","RedoIcon","PageIcon","CheckIcon","RefreshIcon","CollapseIcon","SelectIcon","CloseIcon","SearchIcon","AlignCenterYIcon","PenIcon","FitIcon","UnknownIcon","EyedropperIcon","UndoIcon","BringForwardIcon","RandomizeIcon","CloneIcon","ResetIcon","AlignBottomIcon","PasteIcon","AlignRightIcon","PinIcon","ChevronIcon","RemoveIcon","LinkIcon","AlignCenterXIcon","PauseIcon","AlignTopIcon","PlayIcon","AddIcon","PanIcon","BringToFrontIcon","RectIcon","CopyIcon","SendToBackIcon","DuplicateIcon","StepForwardIcon","DeleteIcon","SortIcon","CrosshairIcon","SnapIcon","ImageIcon","solidColorOf","strokeColorOf","useOverlayPortal","nearestPortalHost","useAssignedPortalContainer","OverlayPortalProvider","Tooltip","TooltipTrigger","Focusable","keyGlyph","formatShortcutParts","formatShortcut","ActionBar","EDGE_PROFILES","Badge","useStance","BADGE_STATUS_ICONS","Button","CloseButton","Code","useReorderDragList","DisclosureMark","DisclosureRow","Disclosure","DataGrid","DetailRow","DetailList","DragGhost","DragGrip","detectPlatform","inferKeycapKind","KeySequence","keySpecFromKey","KeyCap","keySpecsFromMods","keySpecsFromShortcut","stepDecimals","plotToModel","niceTicks","formatTick","tickDecimals","niceStep","modelToPlot","Plot2D","sampleByInterpolation","functionLayerState","CurveEditor","createFunctionLayer","createSetCurveOp","LayeredCurveEditor","createKeyframeLayer","keyframeLayerState","applyKeyframeDrag","handleHalf","handleSize","HANDLE_SIZE_TOKENS","snapToNearest","CurveField","PropertyGroup","DialogRow","Subpanel","Dialog","PropertyList","PropertyRow","PropertyHelp","PropertySpan","PropertyField","PropertyNote","PropertyPanel","PropertyControl","createRecentColorsStore","useRecordRecentColor","useRecentColors","normalizeRecentColor","useRecentColorsStore","RecentColorsProvider","InlineRange","ColorField","SelectItem","SelectSection","Select","FontFamilySelect","fontWeightLabel","FontWeightSelect","Input","NumberField","UnitField","paintPreviewCss","Slider","ToggleBar","useRovingTabIndex","MeshEditor","isMeshPaint","MeshHandles","paintGradientTrack","GradientHandles","GradientEditor","SceneGradientHandles","seedPattern","PatternPicker","PaintInput","PaintField","fieldClasses","Field","RadioGroup","Radio","Switch","LayerList","moveLayers","useSceneLayerList","ItemList","ListEditor","ColorModeControl","ThemeSwitcher","COLOR_MODE_OPTIONS","OptionsBar","ButtonBar","prefRailItems","prefDisplayBounds","filterPrefSubtree","prefValueAtPath","isPrefLeaf","visiblePrefSubtree","prefFieldProps","effectiveSections","setAtPath","aggregateValue","kindBreakdown","classifyKind","nodeValueAt","MIXED","ToolOptionsBar","FillStrokeSwatch","SwatchGrid","STANDARD_PALETTE","BUILTIN_PALETTES","describeColor","BASIC_PALETTE","SwatchStrip","Powerline","gestureRouteSegments","GestureRoute","FallthroughDiagram","pickActiveSection","PrefsPane","PrefsForm","useScrollSpy","PrefsRail","PrefsDialog","SelectionPanel","ResizeHandle","Sidebar","SidebarPanel","StatusBarItem","StatusBarSpacer","StatusBar","ToolButton","ToolGroup","ToolPalette","Checkbox","Tabs","TabList","TabPanel","Tab","filterTree","treeBranchIds","Tree","MenuButton","ComboBoxItem","ComboBox","RangeSlider","DetentSlider","DialogTrigger","Callout","toast","defaultToastQueue","ToastQueue","createToastQueue","ToastRegion","PointPlotter","tokenCategory","refitScale","TOKEN_CATEGORIES","inferTokenType","TokenPanel","linearScale","logScale","BandEditor","Jog","EasingPicker","easingLabel","Transport","sampleEasing","Timeline","EASING_NAMES","samePath","easingBezier","AnimatedTimeline","oklchToHex","oklchDegToHex","chromaAt","lo","hi","curve","L","rgb","r","g","b","hexToRgba","hex","rampColor","options","a","from","to","rgbaToHex","interpolateSrgb","t","space","hue","chroma","s","hexToOklchDeg","H","colorRamp","steps","i","useAsyncOptions","inputValue","setInputValue","useState","setOptions","isLoading","setIsLoading","loadError","setLoadError","loadRef","useLatest","load","issued","useRef","applied","inFlight","useEffect","minLength","timer","mine","controller","next","error","debounceMs","useCallback","dlog"],"sources":["../src/color/oklch.ts","../src/color/ramp.ts","../src/useAsyncOptions.ts"],"sourcesContent":["// OKLCH math from Björn Ottosson: https://bottosson.github.io/posts/oklab/\nimport { oklchDegToHex } from '@weasel-js/core';\n\n/**\n * A chroma envelope over lightness, as three linear segments: flat at `cBot`\n * below `lRange[0]`, rising to `cPeak` at `midL`, falling to `cTop` at\n * `lRange[1]`, flat beyond. Keeps a color ramp inside gamut at the light and\n * dark ends while staying saturated through the middle.\n */\nexport type ChromaCurve = {\n lRange: [number, number];\n midL: number;\n cBot: number;\n cPeak: number;\n cTop: number;\n};\n\n/** A single lightness/chroma sample. */\nexport type ChromaCurvePoint = { L: number; C: number };\n\n/**\n * Converts an OKLCH color to a gamut-clipped `#rrggbb` string. Hue is in\n * degrees, unlike the kit's OKLab helpers which take radians.\n */\nexport const oklchToHex = oklchDegToHex;\n\n/** Evaluates a {@link ChromaCurve} at a lightness, clamping outside its range. */\nexport function chromaAt(L: number, curve: ChromaCurve): number {\n const [lo, hi] = curve.lRange;\n if (L <= lo) return curve.cBot;\n if (L >= hi) return curve.cTop;\n if (L <= curve.midL) return curve.cBot + (curve.cPeak - curve.cBot) * ((L - lo) / (curve.midL - lo));\n return curve.cPeak + (curve.cTop - curve.cPeak) * ((L - curve.midL) / (hi - curve.midL));\n}\n","import {\n hexToOklchDeg,\n hexToRgba,\n interpolateSrgb,\n rgbaToHex,\n type ColorInterpolationSpace,\n type HueInterpolation,\n} from '@weasel-js/core';\nimport { chromaAt, oklchToHex, type ChromaCurve } from './oklch';\n\n/**\n * How {@link rampColor} and {@link colorRamp} travel between two endpoints.\n *\n * What each space interpolates:\n *\n * | `space` | components lerped | hue |\n * | --------------- | ---------------------------- | -------------------- |\n * | `'oklch'` | L, C, H | around the wheel |\n * | `'hsl'` | H, S, L | around the wheel |\n * | `'oklab'` | L, a, b | through the wheel |\n * | `'srgb'` | gamma-encoded R, G, B | through the wheel |\n * | `'srgb-linear'` | linear-light R, G, B | through the wheel |\n *\n * A lightness ramp is two endpoints that differ in lightness, and a hue ramp\n * two that differ in hue: the polar spaces keep chroma or saturation fixed\n * while they move, and the others cut a straight line between the two colors,\n * which for a hue ramp passes through gray.\n *\n * `chroma` is an OKLCH envelope in every space, since {@link ChromaCurve}'s\n * numbers are OKLCH chroma over OKLCH lightness. It runs after the\n * interpolation: each sample keeps its lightness and hue, and its chroma is\n * replaced with the curve's value at that lightness. A sample left with no\n * hue (a gray midpoint) takes the hue an OKLCH ramp would have had there.\n */\nexport interface ColorRampOptions {\n /** Default `'oklch'`. */\n space?: ColorInterpolationSpace;\n /** Polar spaces only. Default `'shorter'`. */\n hue?: HueInterpolation;\n chroma?: ChromaCurve;\n}\n\nconst rgb = (hex: string): [number, number, number] => {\n const [r, g, b] = hexToRgba(hex);\n return [r, g, b];\n};\n\n/** One sample of a ramp from `from` to `to` (`#rrggbb`), `t` in 0..1. */\nexport function rampColor(from: string, to: string, t: number, options: ColorRampOptions = {}): string {\n const { space = 'oklch', hue = 'shorter', chroma } = options;\n const a = rgb(from);\n const b = rgb(to);\n const hex = rgbaToHex(interpolateSrgb(a, b, t, space, hue));\n if (!chroma) return hex;\n const s = hexToOklchDeg(hex);\n const H = s.C > 1e-4 ? s.H : hexToOklchDeg(rgbaToHex(interpolateSrgb(a, b, t, 'oklch', hue))).H;\n return oklchToHex(s.L, chromaAt(s.L, chroma), H);\n}\n\n/** `steps` evenly spaced samples from `from` to `to`, both ends included. */\nexport function colorRamp(from: string, to: string, steps: number, options: ColorRampOptions = {}): string[] {\n if (steps <= 1) return steps === 1 ? [rampColor(from, to, 0, options)] : [];\n return Array.from({ length: steps }, (_, i) => rampColor(from, to, i / (steps - 1), options));\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useLatest } from '@weasel-js/core';\nimport type { ComboBoxOption } from './components/ComboBox/ComboBox';\n\ntype Key = string | number;\n\n/** An option list keyed to the value type its combo box commits. */\nexport type AsyncOption<T extends Key> = ComboBoxOption & { value: T };\n\n/** Options for {@link useAsyncOptions}. */\nexport type UseAsyncOptionsProps<T extends Key> = {\n /**\n * Fetches the options for a query. The signal aborts when a later keystroke\n * supersedes this call, so a `fetch` should forward it.\n */\n load: (query: string, signal: AbortSignal) => Promise<ReadonlyArray<AsyncOption<T>>>;\n /** Quiet period before a query is sent. */\n debounceMs?: number;\n /** Shorter queries are not sent, and empty the options. */\n minLength?: number;\n};\n\n/** What {@link useAsyncOptions} returns, shaped to spread into a `ComboBox`. */\nexport type AsyncOptionsResult<T extends Key> = {\n options: ReadonlyArray<AsyncOption<T>>;\n isLoading: boolean;\n loadError: unknown | null;\n inputValue: string;\n onInputChange: (next: string) => void;\n};\n\n/**\n * Drives a combo box whose options come from a server: debounces the query,\n * discards responses overtaken by a later one, and reports a failed load\n * separately from an empty result.\n *\n * `options` holds the last *resolved* list and is never emptied to mean\n * \"working\", so the previous results stay on screen — and stay arrowable —\n * while the next request is in flight.\n */\nexport function useAsyncOptions<T extends Key = string>({\n load,\n debounceMs = 150,\n minLength = 0,\n}: UseAsyncOptionsProps<T>): AsyncOptionsResult<T> {\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState<ReadonlyArray<AsyncOption<T>>>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [loadError, setLoadError] = useState<unknown | null>(null);\n\n // Read through a ref: a consumer passing an inline arrow re-creates `load`\n // every render, and depending on it directly would refire the request.\n const loadRef = useLatest(load);\n\n // A monotonic id per request, and the highest one whose result has been\n // applied. A liveness flag cannot do this job: two requests from adjacent\n // keystrokes are both live, so the slower one overwrites the newer result\n // if it lands second.\n const issued = useRef(0);\n const applied = useRef(0);\n const inFlight = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (inputValue.length < minLength) {\n inFlight.current?.abort();\n inFlight.current = null;\n applied.current = issued.current;\n setOptions([]);\n setIsLoading(false);\n setLoadError(null);\n return;\n }\n\n const timer = setTimeout(() => {\n const mine = ++issued.current;\n const controller = new AbortController();\n inFlight.current?.abort();\n inFlight.current = controller;\n setIsLoading(true);\n\n loadRef.current(inputValue, controller.signal).then(\n (next) => {\n if (mine <= applied.current) return;\n applied.current = mine;\n setOptions(next);\n setLoadError(null);\n setIsLoading(false);\n },\n (error: unknown) => {\n if (controller.signal.aborted || mine <= applied.current) return;\n applied.current = mine;\n setLoadError(error);\n setIsLoading(false);\n },\n );\n }, debounceMs);\n\n return () => clearTimeout(timer);\n }, [inputValue, debounceMs, minLength, loadRef]);\n\n useEffect(() => () => inFlight.current?.abort(), []);\n\n const onInputChange = useCallback((next: string) => setInputValue(next), []);\n\n return { options, isLoading, loadError, inputValue, onInputChange };\n}\n"],"mappings":"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"}