@weasel-js/ui 1.4.4 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/chunks/{BandEditor-CUlbOlJi.js → BandEditor-BeWO56_w.js} +1 -1
  2. package/dist/chunks/{BandEditor-CUlbOlJi.js.map → BandEditor-BeWO56_w.js.map} +1 -1
  3. package/dist/chunks/{Callout-Dvt6lqVn.js → Callout-BPIA2is-.js} +1 -1
  4. package/dist/chunks/{Callout-Dvt6lqVn.js.map → Callout-BPIA2is-.js.map} +1 -1
  5. package/dist/chunks/ComboBox-CPES6Y1i.js +138 -0
  6. package/dist/chunks/ComboBox-CPES6Y1i.js.map +1 -0
  7. package/dist/chunks/CurveEditor-Cj0lLiyR.js +533 -0
  8. package/dist/chunks/CurveEditor-Cj0lLiyR.js.map +1 -0
  9. package/dist/chunks/{DetentSlider-BpD7bgjN.js → DetentSlider-CYicfnKr.js} +2 -2
  10. package/dist/chunks/{DetentSlider-BpD7bgjN.js.map → DetentSlider-CYicfnKr.js.map} +1 -1
  11. package/dist/chunks/{GradientEditor-BLpAtMDK.js → GradientEditor-dBprHbS0.js} +2 -2
  12. package/dist/chunks/{GradientEditor-BLpAtMDK.js.map → GradientEditor-dBprHbS0.js.map} +1 -1
  13. package/dist/chunks/MenuButton-Do8fFUx1.js +60 -0
  14. package/dist/chunks/MenuButton-Do8fFUx1.js.map +1 -0
  15. package/dist/chunks/NumberField-BWzhqS19.js +112 -0
  16. package/dist/chunks/NumberField-BWzhqS19.js.map +1 -0
  17. package/dist/chunks/{PaintInput-B7AScmHN.js → PaintInput-DAevU7fd.js} +2 -2
  18. package/dist/chunks/{PaintInput-B7AScmHN.js.map → PaintInput-DAevU7fd.js.map} +1 -1
  19. package/dist/chunks/Plot2D-CVZwQpWJ.js +292 -0
  20. package/dist/chunks/Plot2D-CVZwQpWJ.js.map +1 -0
  21. package/dist/chunks/{PointPlotter-CbDKVggs.js → PointPlotter-anTHwz8f.js} +2 -2
  22. package/dist/chunks/PointPlotter-anTHwz8f.js.map +1 -0
  23. package/dist/chunks/Prefs-CzIn-hlq.js +302 -0
  24. package/dist/chunks/Prefs-CzIn-hlq.js.map +1 -0
  25. package/dist/chunks/Properties-DJaDEJkT.js +765 -0
  26. package/dist/chunks/Properties-DJaDEJkT.js.map +1 -0
  27. package/dist/chunks/{ResizeHandle-BrCO0JrH.js → ResizeHandle-CiExUWP-.js} +1 -1
  28. package/dist/chunks/{ResizeHandle-BrCO0JrH.js.map → ResizeHandle-CiExUWP-.js.map} +1 -1
  29. package/dist/chunks/{SelectionPanel-C59wavdA.js → SelectionPanel-CbyUT3Dh.js} +204 -194
  30. package/dist/chunks/SelectionPanel-CbyUT3Dh.js.map +1 -0
  31. package/dist/chunks/{Sidebar-BvwjZiFm.js → Sidebar-Cqcfx3_s.js} +1 -1
  32. package/dist/chunks/{Sidebar-BvwjZiFm.js.map → Sidebar-Cqcfx3_s.js.map} +1 -1
  33. package/dist/chunks/{SidebarPanel-D5Ua2vyP.js → SidebarPanel-BLzBo0S2.js} +1 -1
  34. package/dist/chunks/{SidebarPanel-D5Ua2vyP.js.map → SidebarPanel-BLzBo0S2.js.map} +1 -1
  35. package/dist/chunks/{Slider-Bs-KSYgQ.js → Slider--DFRC_hc.js} +2 -2
  36. package/dist/chunks/{Slider-Bs-KSYgQ.js.map → Slider--DFRC_hc.js.map} +1 -1
  37. package/dist/chunks/{StatusBar-Bqv4D0dW.js → StatusBar-B9NQ8atD.js} +1 -1
  38. package/dist/chunks/{StatusBar-Bqv4D0dW.js.map → StatusBar-B9NQ8atD.js.map} +1 -1
  39. package/dist/chunks/{Tabs-BT3CDkoQ.js → Tabs-9sODd2Ut.js} +1 -1
  40. package/dist/chunks/{Tabs-BT3CDkoQ.js.map → Tabs-9sODd2Ut.js.map} +1 -1
  41. package/dist/chunks/Timeline-DOZgb1CG.js +915 -0
  42. package/dist/chunks/Timeline-DOZgb1CG.js.map +1 -0
  43. package/dist/chunks/{Toast-B7ylq7fz.js → Toast-LpN1WK8E.js} +1 -1
  44. package/dist/chunks/{Toast-B7ylq7fz.js.map → Toast-LpN1WK8E.js.map} +1 -1
  45. package/dist/chunks/{ToolButton-CtDkqUIc.js → ToolButton-B81YjdwO.js} +1 -1
  46. package/dist/chunks/{ToolButton-CtDkqUIc.js.map → ToolButton-B81YjdwO.js.map} +1 -1
  47. package/dist/chunks/{ToolGroup-zDtqt0QJ.js → ToolGroup-D7juDOC_.js} +1 -1
  48. package/dist/chunks/{ToolGroup-zDtqt0QJ.js.map → ToolGroup-D7juDOC_.js.map} +1 -1
  49. package/dist/chunks/{ToolPalette-BbrMHfQ9.js → ToolPalette-BSzmRJS7.js} +3 -3
  50. package/dist/chunks/{ToolPalette-BbrMHfQ9.js.map → ToolPalette-BSzmRJS7.js.map} +1 -1
  51. package/dist/chunks/createKeyframeLayer-AL4jP0EX.js +694 -0
  52. package/dist/chunks/createKeyframeLayer-AL4jP0EX.js.map +1 -0
  53. package/dist/chunks/number-f6PydOZK.js +52 -0
  54. package/dist/chunks/number-f6PydOZK.js.map +1 -0
  55. package/dist/chunks/{schema-CtWwGbqJ.js → schema-CPdFNeP6.js} +15 -9
  56. package/dist/chunks/schema-CPdFNeP6.js.map +1 -0
  57. package/dist/components/BandEditor/index.js +1 -1
  58. package/dist/components/Callout/index.js +1 -1
  59. package/dist/components/ComboBox/ComboBox.d.ts +36 -0
  60. package/dist/components/ComboBox/ComboBox.d.ts.map +1 -1
  61. package/dist/components/ComboBox/index.d.ts +1 -1
  62. package/dist/components/ComboBox/index.d.ts.map +1 -1
  63. package/dist/components/ComboBox/index.js +1 -1
  64. package/dist/components/CurveEditor/CurveEditor.d.ts +4 -2
  65. package/dist/components/CurveEditor/CurveEditor.d.ts.map +1 -1
  66. package/dist/components/CurveEditor/LayeredCurveEditor.d.ts +8 -1
  67. package/dist/components/CurveEditor/LayeredCurveEditor.d.ts.map +1 -1
  68. package/dist/components/CurveEditor/createFunctionLayer.d.ts +2 -0
  69. package/dist/components/CurveEditor/createFunctionLayer.d.ts.map +1 -1
  70. package/dist/components/CurveEditor/createKeyframeLayer.d.ts +70 -0
  71. package/dist/components/CurveEditor/createKeyframeLayer.d.ts.map +1 -0
  72. package/dist/components/CurveEditor/index.d.ts +3 -1
  73. package/dist/components/CurveEditor/index.d.ts.map +1 -1
  74. package/dist/components/CurveEditor/index.js +3 -2
  75. package/dist/components/CurveEditor/layerTypes.d.ts +8 -3
  76. package/dist/components/CurveEditor/layerTypes.d.ts.map +1 -1
  77. package/dist/components/CurveEditor/snap.d.ts +3 -0
  78. package/dist/components/CurveEditor/snap.d.ts.map +1 -0
  79. package/dist/components/DetentSlider/index.js +1 -1
  80. package/dist/components/GradientEditor/index.js +1 -1
  81. package/dist/components/MenuButton/MenuButton.d.ts +29 -0
  82. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -0
  83. package/dist/components/MenuButton/index.d.ts +3 -0
  84. package/dist/components/MenuButton/index.d.ts.map +1 -0
  85. package/dist/components/MenuButton/index.js +2 -0
  86. package/dist/components/NumberField/UnitField.d.ts +30 -0
  87. package/dist/components/NumberField/UnitField.d.ts.map +1 -0
  88. package/dist/components/NumberField/index.d.ts +2 -0
  89. package/dist/components/NumberField/index.d.ts.map +1 -1
  90. package/dist/components/NumberField/index.js +2 -2
  91. package/dist/components/PaintInput/index.js +1 -1
  92. package/dist/components/Plot2D/Plot2D.d.ts +38 -2
  93. package/dist/components/Plot2D/Plot2D.d.ts.map +1 -1
  94. package/dist/components/Plot2D/index.d.ts +2 -1
  95. package/dist/components/Plot2D/index.d.ts.map +1 -1
  96. package/dist/components/Plot2D/index.js +2 -2
  97. package/dist/components/Plot2D/ticks.d.ts +43 -0
  98. package/dist/components/Plot2D/ticks.d.ts.map +1 -0
  99. package/dist/components/PointPlotter/PointPlotter.d.ts +3 -1
  100. package/dist/components/PointPlotter/PointPlotter.d.ts.map +1 -1
  101. package/dist/components/PointPlotter/index.js +1 -1
  102. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  103. package/dist/components/Prefs/index.d.ts +1 -1
  104. package/dist/components/Prefs/index.d.ts.map +1 -1
  105. package/dist/components/Prefs/index.js +3 -3
  106. package/dist/components/Prefs/schema.d.ts +5 -2
  107. package/dist/components/Prefs/schema.d.ts.map +1 -1
  108. package/dist/components/Properties/PropertyPanel.d.ts +15 -6
  109. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  110. package/dist/components/Properties/index.js +1 -1
  111. package/dist/components/ResizeHandle/index.js +1 -1
  112. package/dist/components/SelectionPanel/index.js +1 -1
  113. package/dist/components/Sidebar/index.js +1 -1
  114. package/dist/components/SidebarPanel/index.js +1 -1
  115. package/dist/components/Slider/index.js +1 -1
  116. package/dist/components/StatusBar/index.js +1 -1
  117. package/dist/components/Tabs/index.js +1 -1
  118. package/dist/components/Timeline/Lane.d.ts +9 -7
  119. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  120. package/dist/components/Timeline/LaneGraph.d.ts +24 -0
  121. package/dist/components/Timeline/LaneGraph.d.ts.map +1 -0
  122. package/dist/components/Timeline/Ruler.d.ts.map +1 -1
  123. package/dist/components/Timeline/Timeline.d.ts.map +1 -1
  124. package/dist/components/Timeline/index.js +1 -1
  125. package/dist/components/Timeline/keys.d.ts +4 -3
  126. package/dist/components/Timeline/keys.d.ts.map +1 -1
  127. package/dist/components/Timeline/timeScale.d.ts +2 -0
  128. package/dist/components/Timeline/timeScale.d.ts.map +1 -1
  129. package/dist/components/Toast/index.js +1 -1
  130. package/dist/components/ToolButton/index.js +1 -1
  131. package/dist/components/ToolGroup/index.js +1 -1
  132. package/dist/components/ToolPalette/index.js +1 -1
  133. package/dist/format/number.d.ts +16 -0
  134. package/dist/format/number.d.ts.map +1 -1
  135. package/dist/index.d.ts +4 -1
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +99 -64
  138. package/dist/index.js.map +1 -1
  139. package/dist/style.css +1 -1
  140. package/dist/useAsyncOptions.d.ts +38 -0
  141. package/dist/useAsyncOptions.d.ts.map +1 -0
  142. package/package.json +7 -6
  143. package/dist/chunks/ComboBox-BBRRWvdc.js +0 -107
  144. package/dist/chunks/ComboBox-BBRRWvdc.js.map +0 -1
  145. package/dist/chunks/CurveEditor-DtjdpJVB.js +0 -784
  146. package/dist/chunks/CurveEditor-DtjdpJVB.js.map +0 -1
  147. package/dist/chunks/NumberField-DBowmOfe.js +0 -62
  148. package/dist/chunks/NumberField-DBowmOfe.js.map +0 -1
  149. package/dist/chunks/Plot2D-C97pO13t.js +0 -134
  150. package/dist/chunks/Plot2D-C97pO13t.js.map +0 -1
  151. package/dist/chunks/PointPlotter-CbDKVggs.js.map +0 -1
  152. package/dist/chunks/Prefs-4JSEtuU-.js +0 -294
  153. package/dist/chunks/Prefs-4JSEtuU-.js.map +0 -1
  154. package/dist/chunks/Properties-BpUYKi7-.js +0 -758
  155. package/dist/chunks/Properties-BpUYKi7-.js.map +0 -1
  156. package/dist/chunks/SelectionPanel-C59wavdA.js.map +0 -1
  157. package/dist/chunks/Timeline-Bz806JbE.js +0 -908
  158. package/dist/chunks/Timeline-Bz806JbE.js.map +0 -1
  159. package/dist/chunks/number-Bv1nbhOJ.js +0 -18
  160. package/dist/chunks/number-Bv1nbhOJ.js.map +0 -1
  161. package/dist/chunks/schema-CtWwGbqJ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKjF,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAsE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,YAAY,CAAC;IACxB,4EAA4E;IAC5E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACpC,yDAAyD;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAEhD,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClC,sDAAsD;IACtD,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7B,mCAAmC;IACnC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,SAAS,CAAC;IAEnD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAEzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAmK3D"}
1
+ {"version":3,"file":"Timeline.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKjF,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACxH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,YAAY,CAAC;IACxB,4EAA4E;IAC5E,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACpC,yDAAyD;IACzD,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC;IAEhD,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClC,sDAAsD;IACtD,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7B,mCAAmC;IACnC,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,SAAS,CAAC;IAEnD,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAEzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAgK3D"}
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../../chunks/Timeline-Bz806JbE.js";
1
+ import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c } from "../../chunks/Timeline-DOZgb1CG.js";
2
2
  export { c as AnimatedTimeline, a as EASING_NAMES, e as EasingPicker, i as Timeline, o as Transport, s as easingBezier, t as easingLabel, n as samePath, r as sampleEasing };
@@ -1,4 +1,4 @@
1
- import { type EasingSpec, type Track } from '@weasel-js/core';
1
+ import { type EasingSpec, type Keyframe, type Track } from '@weasel-js/core';
2
2
  export interface KeySelection {
3
3
  /** Index path into the track tree, outermost first — a `LaneRow.path`. A
4
4
  * top-level track is `[i]`; a track inside the nested timeline at `i` is
@@ -27,8 +27,9 @@ export declare function insertKey(tracks: readonly Track[], trackPath: readonly
27
27
  export declare function deleteKey(tracks: readonly Track[], sel: KeySelection): KeyEdit;
28
28
  /** Set the easing shaping the approach INTO the selected key. */
29
29
  export declare function setKeyEasing(tracks: readonly Track[], sel: KeySelection, easing: EasingSpec | undefined): Track[];
30
+ /** Replace a sampled track's whole key list, keeping its callbacks. */
31
+ export declare function setKeys(tracks: readonly Track[], trackPath: readonly number[], keys: readonly Keyframe<unknown>[]): Track[];
30
32
  /** Set the selected key's value, leaving its time alone. */
31
33
  export declare function setKeyValue(tracks: readonly Track[], sel: KeySelection, value: unknown): Track[];
32
- /** Snap `ms` to the nearest candidate within `toleranceMs`, else return it. */
33
- export declare function snapTime(ms: number, candidates: readonly number[], toleranceMs: number): number;
34
+ export { snapToNearest as snapTime } from '../CurveEditor/snap';
34
35
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAyE,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGlJ,MAAM,WAAW,YAAY;IAC3B;;oBAEgB;IAChB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE5E;AAgCD;;;;;;iEAMiE;AACjE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GACxD,OAAO,CA+BT;AAED;mDACmD;AACnD,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GACnE,OAAO,CAeT;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAY9E;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAC1E,KAAK,EAAE,CAST;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAC1D,KAAK,EAAE,CAQT;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAW/F"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAmB,KAAK,QAAQ,EAAyC,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGlJ,MAAM,WAAW,YAAY;IAC3B;;oBAEgB;IAChB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE5E;AAgCD;;;;;;iEAMiE;AACjE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GACxD,OAAO,CA+BT;AAED;mDACmD;AACnD,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GACnE,OAAO,CAeT;AAED,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAY9E;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,GAC1E,KAAK,EAAE,CAST;AAED,uEAAuE;AACvE,wBAAgB,OAAO,CACrB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,QAAQ,CAAC,OAAO,CAAC,EAAE,GACzF,KAAK,EAAE,CAIT;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAC1D,KAAK,EAAE,CAQT;AAED,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
@@ -26,6 +26,8 @@ export declare function spanPercent(window: TimeWindow, ms: number): string;
26
26
  export declare function zoomWindow(w: TimeWindow, atMs: number, factor: number, bounds: TimeWindow): TimeWindow;
27
27
  /** Shift the window by `byMs`, preserving its span. */
28
28
  export declare function panWindow(w: TimeWindow, byMs: number, bounds: TimeWindow): TimeWindow;
29
+ /** Minimum gap between time ticks, in px — the ruler's and the graph grid's. */
30
+ export declare const TICK_SPACING_PX = 64;
29
31
  /** Ruler tick times inside `w`, spaced at least `minSpacingPx` apart. */
30
32
  export declare function tickTimes(w: TimeWindow, widthPx: number, minSpacingPx: number): number[];
31
33
  //# sourceMappingURL=timeScale.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeScale.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/timeScale.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAU9E;AAED;;iFAEiF;AACjF,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;0DAC0D;AAC1D,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAElE;AAUD;2CAC2C;AAC3C,wBAAgB,UAAU,CACxB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAC9D,UAAU,CAMZ;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAErF;AAUD,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CASxF"}
1
+ {"version":3,"file":"timeScale.d.ts","sourceRoot":"","sources":["../../../src/components/Timeline/timeScale.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAU9E;AAED;;iFAEiF;AACjF,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,wCAAwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;0DAC0D;AAC1D,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAElE;AAUD;2CAC2C;AAC3C,wBAAgB,UAAU,CACxB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAC9D,UAAU,CAMZ;AAED,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,CAErF;AAED,gFAAgF;AAChF,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,yEAAyE;AACzE,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CASxF"}
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "../../chunks/Toast-B7ylq7fz.js";
1
+ import { a as e, i as t, n, r, t as i } from "../../chunks/Toast-LpN1WK8E.js";
2
2
  export { n as ToastQueue, i as ToastRegion, r as createToastQueue, t as defaultToastQueue, e as toast };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToolButton-CtDkqUIc.js";
1
+ import { t as e } from "../../chunks/ToolButton-B81YjdwO.js";
2
2
  export { e as ToolButton };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ToolGroup-zDtqt0QJ.js";
1
+ import { t as e } from "../../chunks/ToolGroup-D7juDOC_.js";
2
2
  export { e as ToolGroup };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../chunks/ToolPalette-BbrMHfQ9.js";
1
+ import { n as e, r as t, t as n } from "../../chunks/ToolPalette-BSzmRJS7.js";
2
2
  export { n as ToolPalette, e as formatShortcut, t as formatShortcutParts };
@@ -20,6 +20,22 @@ export declare function formatNumber(value: number, options?: Intl.NumberFormatO
20
20
  * renders its value through it and reads the edited text back.
21
21
  */
22
22
  export declare function parseSignedNumber(text: string): number;
23
+ /**
24
+ * Formats a number the way a `compact` readout shows it: below 1,000 at
25
+ * `decimals` places, from 1,000 up at one decimal with a magnitude suffix
26
+ * (`40.0K`, `2.0M`). Always `en-US`, so {@link parseNumber} reads it back.
27
+ */
28
+ export declare function formatCompact(value: number, decimals?: number): string;
29
+ /**
30
+ * Reads a typed number: anything {@link parseSignedNumber} reads, plus
31
+ * thousands commas in the `40,000` shape and a `k`/`m`/`b`/`t` suffix in either
32
+ * case (`2.5m` is 2,500,000). Empty text is NaN rather than zero.
33
+ *
34
+ * Given `units` — a suffix mapped to the factor it scales by — a trailing unit
35
+ * name is read first: the longest match wins, exact case before any case, and
36
+ * a unit beats a magnitude suffix, so with `m` accepted `2m` is `2 * units.m`.
37
+ */
38
+ export declare function parseNumber(text: string, units?: Readonly<Record<string, number>>): number;
23
39
  /**
24
40
  * Formats a zoom factor for display. Below 2x a percentage reads naturally;
25
41
  * past it the numbers get long and a multiplier is what people say out loud,
@@ -1 +1 @@
1
- {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/format/number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,WAAM,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAQD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C"}
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/format/number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,WAAM,CAAC;AAE9B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAOjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAkB1F;AAeD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C"}
package/dist/index.d.ts CHANGED
@@ -37,6 +37,7 @@ export * from './components/Tabs';
37
37
  export * from './components/RadioGroup';
38
38
  export * from './components/NumberField';
39
39
  export * from './components/Select';
40
+ export * from './components/MenuButton';
40
41
  export * from './components/ComboBox';
41
42
  export * from './components/RangeSlider';
42
43
  export * from './components/DetentSlider';
@@ -57,9 +58,11 @@ export { paintGradientTrack } from './paintGradientTrack';
57
58
  export type { GradientTrackOpts } from './paintGradientTrack';
58
59
  export { oklchToHex, chromaAt } from './color/oklch';
59
60
  export type { ChromaCurve, ChromaCurvePoint } from './color/oklch';
61
+ export { useAsyncOptions } from './useAsyncOptions';
62
+ export type { AsyncOption, AsyncOptionsResult, UseAsyncOptionsProps } from './useAsyncOptions';
60
63
  export { useReorderDragList } from './useReorderDragList';
61
64
  export { useRovingTabIndex } from './useRovingTabIndex';
62
65
  export type { RovingItem, RovingTabIndex, UseRovingTabIndexOptions } from './useRovingTabIndex';
63
- export { formatNumber, formatZoom, MINUS_SIGN, parseSignedNumber } from './format/number';
66
+ export { formatCompact, formatNumber, formatZoom, MINUS_SIGN, parseNumber, parseSignedNumber, } from './format/number';
64
67
  export type { LayerListItem, UseReorderDragListOptions, ReorderDragState, ReorderDragHandlers, } from './useReorderDragList';
65
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,80 +1,115 @@
1
1
  import { n as e, t } from "./chunks/dlog-CMYiRF3Q.js";
2
2
  import { n, t as r } from "./chunks/Icon-DBXtBB1f.js";
3
- import { $ as i, A as a, B as o, C as s, D as c, E as ee, F as te, G as l, H as u, I as d, J as f, K as p, L as m, M as h, N as g, O as _, P as v, Q as y, R as b, S as x, T as S, U as C, V as w, W as T, X as E, Y as D, Z as O, _ as k, a as A, at as j, b as M, c as N, ct as P, d as F, dt as I, et as L, f as R, ft as z, g as B, h as V, i as H, it as U, j as W, k as G, l as K, lt as q, m as J, n as Y, nt as X, o as Z, ot as Q, p as ne, q as re, r as ie, rt as ae, s as oe, st as se, t as ce, tt as le, u as ue, ut as de, v as fe, w as pe, x as me, y as he, z as ge } from "./chunks/icons-BV27dhKB.js";
4
- import { i as _e, n as ve, r as ye, t as be } from "./chunks/Prefs-4JSEtuU-.js";
5
- import { n as xe, r as Se, t as Ce } from "./chunks/portalHost-CjpCnuGU.js";
6
- import { n as we, t as Te } from "./chunks/Tooltip-BHre_vbI.js";
7
- import { t as Ee } from "./chunks/ActionBar-DxGp3WuZ.js";
8
- import { n as De, t as Oe } from "./chunks/Badge-Bf8Rd1R6.js";
3
+ import { $ as i, A as a, B as o, C as s, D as c, E as l, F as u, G as d, H as f, I as p, J as m, K as ee, L as te, M as ne, N as re, O as ie, P as h, Q as g, R as _, S as v, T as y, U as b, V as x, W as S, X as C, Y as w, Z as T, _ as E, a as D, at as O, b as k, c as A, ct as j, d as M, dt as N, et as P, f as F, ft as I, g as L, h as R, i as z, it as B, j as V, k as H, l as U, lt as W, m as G, n as K, nt as q, o as J, ot as Y, p as ae, q as oe, r as se, rt as ce, s as le, st as ue, t as de, tt as fe, u as pe, ut as me, v as he, w as ge, x as _e, y as ve, z as ye } from "./chunks/icons-BV27dhKB.js";
4
+ import { i as be, n as xe, r as Se, t as Ce } from "./chunks/Prefs-CzIn-hlq.js";
5
+ import { n as we, r as Te, t as Ee } from "./chunks/portalHost-CjpCnuGU.js";
6
+ import { n as De, t as Oe } from "./chunks/Tooltip-BHre_vbI.js";
7
+ import { t as ke } from "./chunks/ActionBar-DxGp3WuZ.js";
8
+ import { n as Ae, t as je } from "./chunks/Badge-Bf8Rd1R6.js";
9
9
  import "./components/Badge/index.js";
10
- import { t as ke } from "./chunks/Button-CExdkQcU.js";
11
- import { t as Ae } from "./chunks/useReorderDragList-CSQGd7zQ.js";
12
- import { t as je } from "./chunks/DataGrid-BVdDMZkQ.js";
13
- import { n as Me, t as Ne } from "./chunks/Disclosure-DiA6UKdM.js";
14
- import { t as Pe } from "./chunks/DragHandleGlyph-CppAz4_8.js";
15
- import { a as Fe, i as Ie, n as Le, o as Re, r as ze, t as Be } from "./chunks/Keycaps-DSeq6QWH.js";
16
- import { t as Ve } from "./chunks/keyGlyph-Bp0wnLHn.js";
17
- import { t as He } from "./chunks/LayerStack-DOylrQcm.js";
18
- import { t as Ue } from "./chunks/Slider-Bs-KSYgQ.js";
19
- import { i as We, n as Ge, r as Ke, t as qe } from "./chunks/number-Bv1nbhOJ.js";
20
- import { t as Je } from "./chunks/ItemList-BZJQReXD.js";
21
- import { t as Ye } from "./chunks/ToggleBar-Bxwv6xvj.js";
22
- import { t as Xe } from "./chunks/useRovingTabIndex-Dkpf_KhN.js";
23
- import { t as Ze } from "./chunks/OptionsBar-D_Cd3ZYs.js";
24
- import { t as Qe } from "./chunks/ActionsBar-D1VFreoj.js";
25
- import { t as $e } from "./chunks/ToolOptionsBar-B2xPWzJf.js";
26
- import { t as et } from "./chunks/InlineRange-CcfzY80y.js";
27
- import { t as tt } from "./chunks/ColorField-C20aRvCg.js";
28
- import { i as nt, n as rt, r as it, t as at } from "./chunks/GradientEditor-BLpAtMDK.js";
29
- import { n as ot, t as st } from "./chunks/PatternPicker-Ba22Bf4L.js";
30
- import { t as ct } from "./chunks/PaintInput-B7AScmHN.js";
31
- import { t as $ } from "./chunks/Powerline-BaHDJlcO.js";
32
- import { t as lt } from "./chunks/Checkbox-D-pVpobU.js";
33
- import { n as ut, t as dt } from "./chunks/Field-dzlxOGxT.js";
34
- import { n as ft, t as pt } from "./chunks/Select-CacMfs4v.js";
35
- import { t as mt } from "./chunks/FontFamilySelect-DIJ4phXz.js";
36
- import { t as ht } from "./chunks/Input-CoKOtyD0.js";
37
- import { t as gt } from "./chunks/NumberField-DBowmOfe.js";
38
- import { n as _t, t as vt } from "./chunks/RadioGroup-B2_LUgDp.js";
39
- import { t as yt } from "./chunks/RangeSlider-S2R3zA8N.js";
40
- import { t as bt } from "./chunks/Switch-C4NU-me1.js";
41
- import { i as xt, n as St, r as Ct, t as wt } from "./chunks/schema-CtWwGbqJ.js";
42
- import { t as Tt } from "./chunks/Dialog-CYBLjwbd.js";
43
- import { n as Et, r as Dt, t as Ot } from "./chunks/Plot2D-C97pO13t.js";
44
- import { a as kt, i as At, n as jt, o as Mt, r as Nt, t as Pt } from "./chunks/CurveEditor-DtjdpJVB.js";
45
- import { a as Ft, c as It, d as Lt, f as Rt, g as zt, h as Bt, i as Vt, l as Ht, m as Ut, n as Wt, o as Gt, p as Kt, r as qt, s as Jt, t as Yt, u as Xt } from "./chunks/Properties-BpUYKi7-.js";
46
- import { a as Zt, c as Qt, i as $t, n as en, o as tn, r as nn, s as rn, t as an } from "./chunks/SelectionPanel-C59wavdA.js";
47
- import { t as on } from "./chunks/ResizeHandle-BrCO0JrH.js";
48
- import { t as sn } from "./chunks/Sidebar-BvwjZiFm.js";
49
- import { t as cn } from "./chunks/SidebarPanel-D5Ua2vyP.js";
50
- import { n as ln, r as un, t as dn } from "./chunks/StatusBar-Bqv4D0dW.js";
51
- import { t as fn } from "./chunks/ToolButton-CtDkqUIc.js";
52
- import { t as pn } from "./chunks/ToolGroup-zDtqt0QJ.js";
53
- import { n as mn, r as hn, t as gn } from "./chunks/ToolPalette-BbrMHfQ9.js";
10
+ import { t as Me } from "./chunks/Button-CExdkQcU.js";
11
+ import { t as Ne } from "./chunks/useReorderDragList-CSQGd7zQ.js";
12
+ import { t as Pe } from "./chunks/DataGrid-BVdDMZkQ.js";
13
+ import { n as Fe, t as Ie } from "./chunks/Disclosure-DiA6UKdM.js";
14
+ import { t as Le } from "./chunks/DragHandleGlyph-CppAz4_8.js";
15
+ import { a as Re, i as ze, n as Be, o as Ve, r as He, t as Ue } from "./chunks/Keycaps-DSeq6QWH.js";
16
+ import { t as We } from "./chunks/keyGlyph-Bp0wnLHn.js";
17
+ import { t as Ge } from "./chunks/LayerStack-DOylrQcm.js";
18
+ import { t as Ke } from "./chunks/Slider--DFRC_hc.js";
19
+ import { a as qe, i as Je, n as Ye, o as Xe, r as Ze, t as Qe } from "./chunks/number-f6PydOZK.js";
20
+ import { t as $e } from "./chunks/ItemList-BZJQReXD.js";
21
+ import { t as et } from "./chunks/ToggleBar-Bxwv6xvj.js";
22
+ import { t as tt } from "./chunks/useRovingTabIndex-Dkpf_KhN.js";
23
+ import { t as nt } from "./chunks/OptionsBar-D_Cd3ZYs.js";
24
+ import { t as rt } from "./chunks/ActionsBar-D1VFreoj.js";
25
+ import { t as it } from "./chunks/ToolOptionsBar-B2xPWzJf.js";
26
+ import { t as at } from "./chunks/InlineRange-CcfzY80y.js";
27
+ import { t as ot } from "./chunks/ColorField-C20aRvCg.js";
28
+ import { i as st, n as ct, r as lt, t as ut } from "./chunks/GradientEditor-dBprHbS0.js";
29
+ import { n as dt, t as ft } from "./chunks/PatternPicker-Ba22Bf4L.js";
30
+ import { t as pt } from "./chunks/PaintInput-DAevU7fd.js";
31
+ import { t as mt } from "./chunks/Powerline-BaHDJlcO.js";
32
+ import { t as ht } from "./chunks/Checkbox-D-pVpobU.js";
33
+ import { n as gt, t as _t } from "./chunks/Field-dzlxOGxT.js";
34
+ import { n as vt, t as yt } from "./chunks/Select-CacMfs4v.js";
35
+ import { t as bt } from "./chunks/FontFamilySelect-DIJ4phXz.js";
36
+ import { t as xt } from "./chunks/Input-CoKOtyD0.js";
37
+ import { n as St, t as Ct } from "./chunks/NumberField-BWzhqS19.js";
38
+ import { n as wt, t as Tt } from "./chunks/RadioGroup-B2_LUgDp.js";
39
+ import { t as Et } from "./chunks/RangeSlider-S2R3zA8N.js";
40
+ import { t as Dt } from "./chunks/Switch-C4NU-me1.js";
41
+ import { a as Ot, i as kt, n as At, t as jt } from "./chunks/schema-CPdFNeP6.js";
42
+ import { t as Mt } from "./chunks/Dialog-CYBLjwbd.js";
43
+ import { a as Nt, c as Pt, i as Ft, n as It, o as Lt, r as Rt, s as zt, t as Bt } from "./chunks/Plot2D-CVZwQpWJ.js";
44
+ import { a as Vt, i as Ht, n as Ut, r as Wt, t as Gt } from "./chunks/CurveEditor-Cj0lLiyR.js";
45
+ import { a as Kt, i as qt, n as Jt, r as Yt, t as Xt } from "./chunks/createKeyframeLayer-AL4jP0EX.js";
46
+ import { a as Zt, c as Qt, d as $t, f as en, g as tn, h as nn, i as rn, l as an, m as on, n as sn, o as cn, p as ln, r as un, s as dn, t as fn, u as pn } from "./chunks/Properties-DJaDEJkT.js";
47
+ import { a as mn, c as hn, i as gn, n as _n, o as vn, r as yn, s as bn, t as xn } from "./chunks/SelectionPanel-CbyUT3Dh.js";
48
+ import { t as Sn } from "./chunks/ResizeHandle-CiExUWP-.js";
49
+ import { t as Cn } from "./chunks/Sidebar-Cqcfx3_s.js";
50
+ import { t as wn } from "./chunks/SidebarPanel-BLzBo0S2.js";
51
+ import { n as Tn, r as En, t as Dn } from "./chunks/StatusBar-B9NQ8atD.js";
52
+ import { t as On } from "./chunks/ToolButton-B81YjdwO.js";
53
+ import { t as kn } from "./chunks/ToolGroup-D7juDOC_.js";
54
+ import { n as An, r as jn, t as Mn } from "./chunks/ToolPalette-BSzmRJS7.js";
54
55
  import "./components/Field/index.js";
55
- import { i as _n, n as vn, r as yn, t as bn } from "./chunks/Tabs-BT3CDkoQ.js";
56
- import { n as xn, t as Sn } from "./chunks/ComboBox-BBRRWvdc.js";
57
- import { t as Cn } from "./chunks/DetentSlider-BpD7bgjN.js";
58
- import { n as wn, t as Tn } from "./chunks/Callout-Dvt6lqVn.js";
59
- import { a as En, i as Dn, n as On, r as kn, t as An } from "./chunks/Toast-B7ylq7fz.js";
60
- import { t as jn } from "./chunks/PointPlotter-CbDKVggs.js";
61
- import { n as Mn, r as Nn, t as Pn } from "./chunks/BandEditor-CUlbOlJi.js";
62
- import { a as Fn, c as In, i as Ln, l as Rn, n as zn, o as Bn, r as Vn, s as Hn, t as Un } from "./chunks/Timeline-Bz806JbE.js";
63
- import { oklabToSrgbU8 as Wn, oklchToOklab as Gn, rgbaToHex as Kn } from "@weasel-js/core";
56
+ import { i as Nn, n as Pn, r as Fn, t as In } from "./chunks/Tabs-9sODd2Ut.js";
57
+ import { t as Ln } from "./chunks/MenuButton-Do8fFUx1.js";
58
+ import { n as Rn, t as zn } from "./chunks/ComboBox-CPES6Y1i.js";
59
+ import { t as Bn } from "./chunks/DetentSlider-CYicfnKr.js";
60
+ import { n as Vn, t as Hn } from "./chunks/Callout-BPIA2is-.js";
61
+ import { a as Un, i as Wn, n as Gn, r as Kn, t as qn } from "./chunks/Toast-LpN1WK8E.js";
62
+ import { t as Jn } from "./chunks/PointPlotter-anTHwz8f.js";
63
+ import { n as Yn, r as Xn, t as X } from "./chunks/BandEditor-BeWO56_w.js";
64
+ import { a as Zn, c as Qn, i as $n, l as er, n as tr, o as nr, r as rr, s as ir, t as ar } from "./chunks/Timeline-DOZgb1CG.js";
65
+ import { oklabToSrgbU8 as or, oklchToOklab as sr, rgbaToHex as cr } from "@weasel-js/core";
66
+ import { useCallback as lr, useEffect as Z, useRef as Q, useState as $ } from "react";
64
67
  //#region src/color/oklch.ts
65
- function qn(e, t, n) {
66
- let [r, i, a] = Gn(e, t, n * Math.PI / 180), [o, s, c] = Wn(r, i, a);
67
- return Kn([
68
+ function ur(e, t, n) {
69
+ let [r, i, a] = sr(e, t, n * Math.PI / 180), [o, s, c] = or(r, i, a);
70
+ return cr([
68
71
  o / 255,
69
72
  s / 255,
70
73
  c / 255
71
74
  ]);
72
75
  }
73
- function Jn(e, t) {
76
+ function dr(e, t) {
74
77
  let [n, r] = t.lRange;
75
78
  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));
76
79
  }
77
80
  //#endregion
78
- export { Ee as ActionBar, Qe as ActionsBar, ce as AddIcon, Un as AnimatedTimeline, Y as ArrowIcon, Oe as Badge, Pn as BandEditor, ie as BusyIcon, ke as Button, Tn as Callout, wn as CalloutTrigger, lt as Checkbox, Ft as CheckboxRow, H as ChevronIcon, A as CloneIcon, Z as CloseIcon, oe as CollapseIcon, tt as ColorField, Gt as ColorRow, Sn as ComboBox, xn as ComboBoxItem, N as CompareIcon, K as CrosshairIcon, jt as CurveEditor, zt as CurveField, je as DataGrid, ue as DeleteIcon, Cn as DetentSlider, Tt as Dialog, Ne as Disclosure, Me as DisclosureRow, Pe as DragHandleGlyph, Bn as EASING_NAMES, De as EDGE_PROFILES, Fn as EasingPicker, Wt as EffectCard, qt as EffectCardList, F as EllipseIcon, R as ErrorIcon, ne as ExpandIcon, J as ExportIcon, V as EyedropperIcon, dt as Field, B as FilterIcon, k as FitIcon, mt as FontFamilySelect, fe as FullscreenIcon, it as GradientEditor, rt as GradientHandles, he as GridIcon, M as HandIcon, me as HiddenIcon, n as ICON_PATHS, r as Icon, x as ImageIcon, s as InfoIcon, et as InlineRange, ht as Input, Je as ItemList, Fe as KeyCap, Ie as KeySequence, pe as LassoIcon, He as LayerStack, Nt as LayeredCurveEditor, S as LayersIcon, ee as LayoutColumnsIcon, c as LayoutGridIcon, _ as LayoutRowsIcon, G as LineIcon, a as LinkIcon, W as LockIcon, h as LoupeIcon, qe as MINUS_SIGN, en as MIXED, g as MeasureIcon, v as ModeAutoIcon, te as ModeDarkIcon, d as ModeLightIcon, gt as NumberField, Jt as NumberRow, Ze as OptionsBar, Ce as OverlayPortalProvider, ct as PaintInput, m as PanIcon, st as PatternPicker, b as PauseIcon, ge as PenIcon, o as PencilIcon, w as PinIcon, u as PlayIcon, Ot as Plot2D, jn as PointPlotter, C as PolygonIcon, $ as Powerline, be as PrefsDialog, ve as PrefsForm, Yt as PropertyGroup, It as PropertyList, Ht as PropertyPanel, Xt as PropertyRow, Lt as PropertySpan, vt as Radio, _t as RadioGroup, T as RandomizeIcon, yt as RangeSlider, l as RectIcon, p as RedoIcon, re as RefreshIcon, f as RemoveIcon, D as ResetIcon, on as ResizeHandle, at as SceneGradientHandles, E as SearchIcon, pt as Select, O as SelectIcon, ft as SelectItem, Rt as SelectRow, an as SelectionPanel, sn as Sidebar, cn as SidebarPanel, Ue as Slider, Kt as SliderRow, y as SnapIcon, i as SnapshotIcon, L as SortIcon, le as StarIcon, dn as StatusBar, ln as StatusBarItem, un as StatusBarSpacer, X as StepIcon, ae as StopIcon, Vt as Subpanel, bt as Switch, bn as Tab, vn as TabList, yn as TabPanel, _n as Tabs, U as TextIcon, Ut as TextRow, zn as Timeline, On as ToastQueue, An as ToastRegion, Ye as ToggleBar, Bt as ToggleRow, fn as ToolButton, pn as ToolGroup, $e as ToolOptionsBar, gn as ToolPalette, Te as Tooltip, we as TooltipTrigger, Vn as Transport, j as TuneIcon, Q as UndoIcon, se as UnknownIcon, P as UnlockIcon, q as VisibleIcon, de as WarningIcon, I as ZoomInIcon, z as ZoomOutIcon, nn as aggregateValue, Jn as chromaAt, $t as classifyKind, At as createFunctionLayer, Pt as createSetCurveOp, kn as createToastQueue, Dn as defaultToastQueue, Be as detectPlatform, t as dlog, Hn as easingBezier, In as easingLabel, Zt as effectiveSections, ut as fieldClasses, Ge as formatNumber, mn as formatShortcut, hn as formatShortcutParts, Ke as formatZoom, kt as functionLayerState, Re as inferKeycapKind, e as isDebugEnabled, wt as isPrefLeaf, Ve as keyGlyph, Le as keySpecFromKey, ze as keySpecsFromMods, tn as kindBreakdown, Mn as linearScale, Nn as logScale, Et as modelToPlot, xe as nearestPortalHost, rn as nodeValueAt, qn as oklchToHex, nt as paintGradientTrack, We as parseSignedNumber, Dt as plotToModel, St as prefDisplayBounds, Ct as prefValueAtPath, Ln as samePath, Mt as sampleByInterpolation, Rn as sampleEasing, ot as seedPattern, Qt as setAtPath, ye as solidColorOf, _e as strokeColorOf, En as toast, Se as useOverlayPortal, Ae as useReorderDragList, Xe as useRovingTabIndex, xt as visiblePrefSubtree };
81
+ //#region src/useAsyncOptions.ts
82
+ function fr({ load: e, debounceMs: t = 150, minLength: n = 0 }) {
83
+ let [r, i] = $(""), [a, o] = $([]), [s, c] = $(!1), [l, u] = $(null), d = Q(e);
84
+ d.current = e;
85
+ let f = Q(0), p = Q(0), m = Q(null);
86
+ return Z(() => {
87
+ if (r.length < n) {
88
+ m.current?.abort(), m.current = null, p.current = f.current, o([]), c(!1), u(null);
89
+ return;
90
+ }
91
+ let e = setTimeout(() => {
92
+ let e = ++f.current, t = new AbortController();
93
+ m.current?.abort(), m.current = t, c(!0), d.current(r, t.signal).then((t) => {
94
+ e <= p.current || (p.current = e, o(t), u(null), c(!1));
95
+ }, (n) => {
96
+ t.signal.aborted || e <= p.current || (p.current = e, u(n), c(!1));
97
+ });
98
+ }, t);
99
+ return () => clearTimeout(e);
100
+ }, [
101
+ r,
102
+ t,
103
+ n
104
+ ]), Z(() => () => m.current?.abort(), []), {
105
+ options: a,
106
+ isLoading: s,
107
+ loadError: l,
108
+ inputValue: r,
109
+ onInputChange: lr((e) => i(e), [])
110
+ };
111
+ }
112
+ //#endregion
113
+ export { ke as ActionBar, rt as ActionsBar, de as AddIcon, ar as AnimatedTimeline, K as ArrowIcon, je as Badge, X as BandEditor, se as BusyIcon, Me as Button, Hn as Callout, Vn as CalloutTrigger, ht as Checkbox, Zt as CheckboxRow, z as ChevronIcon, D as CloneIcon, J as CloseIcon, le as CollapseIcon, ot as ColorField, cn as ColorRow, zn as ComboBox, Rn as ComboBoxItem, A as CompareIcon, U as CrosshairIcon, Ut as CurveEditor, tn as CurveField, Pe as DataGrid, pe as DeleteIcon, Bn as DetentSlider, Mt as Dialog, Ie as Disclosure, Fe as DisclosureRow, Le as DragHandleGlyph, nr as EASING_NAMES, Ae as EDGE_PROFILES, Zn as EasingPicker, sn as EffectCard, un as EffectCardList, M as EllipseIcon, F as ErrorIcon, ae as ExpandIcon, G as ExportIcon, R as EyedropperIcon, _t as Field, L as FilterIcon, E as FitIcon, bt as FontFamilySelect, he as FullscreenIcon, lt as GradientEditor, ct as GradientHandles, ve as GridIcon, k as HandIcon, _e as HiddenIcon, n as ICON_PATHS, r as Icon, v as ImageIcon, s as InfoIcon, at as InlineRange, xt as Input, $e as ItemList, Re as KeyCap, ze as KeySequence, ge as LassoIcon, Ge as LayerStack, Kt as LayeredCurveEditor, y as LayersIcon, l as LayoutColumnsIcon, c as LayoutGridIcon, ie as LayoutRowsIcon, H as LineIcon, a as LinkIcon, V as LockIcon, ne as LoupeIcon, Qe as MINUS_SIGN, _n as MIXED, re as MeasureIcon, Ln as MenuButton, h as ModeAutoIcon, u as ModeDarkIcon, p as ModeLightIcon, St as NumberField, dn as NumberRow, nt as OptionsBar, Ee as OverlayPortalProvider, pt as PaintInput, te as PanIcon, ft as PatternPicker, _ as PauseIcon, ye as PenIcon, o as PencilIcon, x as PinIcon, f as PlayIcon, Bt as Plot2D, Jn as PointPlotter, b as PolygonIcon, mt as Powerline, Ce as PrefsDialog, xe as PrefsForm, fn as PropertyGroup, Qt as PropertyList, an as PropertyPanel, pn as PropertyRow, $t as PropertySpan, Tt as Radio, wt as RadioGroup, S as RandomizeIcon, Et as RangeSlider, d as RectIcon, ee as RedoIcon, oe as RefreshIcon, m as RemoveIcon, w as ResetIcon, Sn as ResizeHandle, ut as SceneGradientHandles, C as SearchIcon, yt as Select, T as SelectIcon, vt as SelectItem, en as SelectRow, xn as SelectionPanel, Cn as Sidebar, wn as SidebarPanel, Ke as Slider, ln as SliderRow, g as SnapIcon, i as SnapshotIcon, P as SortIcon, fe as StarIcon, Dn as StatusBar, Tn as StatusBarItem, En as StatusBarSpacer, q as StepIcon, ce as StopIcon, rn as Subpanel, Dt as Switch, In as Tab, Pn as TabList, Fn as TabPanel, Nn as Tabs, B as TextIcon, on as TextRow, tr as Timeline, Gn as ToastQueue, qn as ToastRegion, et as ToggleBar, nn as ToggleRow, On as ToolButton, kn as ToolGroup, it as ToolOptionsBar, Mn as ToolPalette, Oe as Tooltip, De as TooltipTrigger, rr as Transport, O as TuneIcon, Y as UndoIcon, Ct as UnitField, ue as UnknownIcon, j as UnlockIcon, W as VisibleIcon, me as WarningIcon, N as ZoomInIcon, I as ZoomOutIcon, yn as aggregateValue, Xt as applyKeyframeDrag, dr as chromaAt, gn as classifyKind, Wt as createFunctionLayer, Jt as createKeyframeLayer, Gt as createSetCurveOp, Kn as createToastQueue, Wn as defaultToastQueue, Ue as detectPlatform, t as dlog, ir as easingBezier, Qn as easingLabel, mn as effectiveSections, gt as fieldClasses, Ye as formatCompact, Ze as formatNumber, An as formatShortcut, jn as formatShortcutParts, It as formatTick, Je as formatZoom, Ht as functionLayerState, Ve as inferKeycapKind, e as isDebugEnabled, jt as isPrefLeaf, We as keyGlyph, Be as keySpecFromKey, He as keySpecsFromMods, Yt as keyframeLayerState, vn as kindBreakdown, Yn as linearScale, Xn as logScale, zt as modelToPlot, we as nearestPortalHost, Rt as niceStep, Ft as niceTicks, bn as nodeValueAt, ur as oklchToHex, st as paintGradientTrack, qe as parseNumber, Xe as parseSignedNumber, Pt as plotToModel, At as prefDisplayBounds, kt as prefValueAtPath, $n as samePath, Vt as sampleByInterpolation, er as sampleEasing, dt as seedPattern, hn as setAtPath, qt as snapToNearest, Se as solidColorOf, Nt as stepDecimals, be as strokeColorOf, Lt as tickDecimals, Un as toast, fr as useAsyncOptions, Te as useOverlayPortal, Ne as useReorderDragList, tt as useRovingTabIndex, Ot as visiblePrefSubtree };
79
114
 
80
115
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/color/oklch.ts"],"sourcesContent":["// OKLCH math from Björn Ottosson: https://bottosson.github.io/posts/oklab/\nimport { oklchToOklab, oklabToSrgbU8, rgbaToHex } 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 function oklchToHex(L: number, C: number, Hdeg: number): string {\n // Delegate to the kit's OKLab pipeline (kit angle unit is radians) →\n // gamut-clipped u8 sRGB → `#rrggbb`.\n const [l, a, b] = oklchToOklab(L, C, (Hdeg * Math.PI) / 180);\n const [r, g, bl] = oklabToSrgbU8(l, a, b);\n return rgbaToHex([r / 255, g / 255, bl / 255]);\n}\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,GAAW,GAAW,GAAW,GAAsB;CAGrE,IAAM,CAAC,GAAG,GAAG,KAAK,GAAa,GAAG,GAAI,IAAO,KAAK,KAAM,IAAI,EACtD,CAAC,GAAG,GAAG,KAAM,GAAc,GAAG,GAAG,EAAE;AACzC,QAAO,GAAU;EAAC,IAAI;EAAK,IAAI;EAAK,IAAK;EAAI,CAAC;;AAIhD,SAAgB,GAAS,GAAW,GAA4B;CAC9D,IAAM,CAAC,GAAI,KAAM,EAAM;AAIvB,QAHI,KAAK,IAAW,EAAM,OACtB,KAAK,IAAW,EAAM,OACtB,KAAK,EAAM,OAAa,EAAM,QAAQ,EAAM,QAAQ,EAAM,UAAU,IAAI,MAAO,EAAM,OAAO,MACzF,EAAM,SAAS,EAAM,OAAO,EAAM,WAAW,IAAI,EAAM,SAAS,IAAK,EAAM"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/color/oklch.ts","../src/useAsyncOptions.ts"],"sourcesContent":["// OKLCH math from Björn Ottosson: https://bottosson.github.io/posts/oklab/\nimport { oklchToOklab, oklabToSrgbU8, rgbaToHex } 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 function oklchToHex(L: number, C: number, Hdeg: number): string {\n // Delegate to the kit's OKLab pipeline (kit angle unit is radians) →\n // gamut-clipped u8 sRGB → `#rrggbb`.\n const [l, a, b] = oklchToOklab(L, C, (Hdeg * Math.PI) / 180);\n const [r, g, bl] = oklabToSrgbU8(l, a, b);\n return rgbaToHex([r / 255, g / 255, bl / 255]);\n}\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 { useCallback, useEffect, useRef, useState } from 'react';\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 = useRef(load);\n loadRef.current = 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]);\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,GAAW,GAAW,GAAW,GAAsB;CAGrE,IAAM,CAAC,GAAG,GAAG,KAAK,GAAa,GAAG,GAAI,IAAO,KAAK,KAAM,IAAI,EACtD,CAAC,GAAG,GAAG,KAAM,GAAc,GAAG,GAAG,EAAE;AACzC,QAAO,GAAU;EAAC,IAAI;EAAK,IAAI;EAAK,IAAK;EAAI,CAAC;;AAIhD,SAAgB,GAAS,GAAW,GAA4B;CAC9D,IAAM,CAAC,GAAI,KAAM,EAAM;AAIvB,QAHI,KAAK,IAAW,EAAM,OACtB,KAAK,IAAW,EAAM,OACtB,KAAK,EAAM,OAAa,EAAM,QAAQ,EAAM,QAAQ,EAAM,UAAU,IAAI,MAAO,EAAM,OAAO,MACzF,EAAM,SAAS,EAAM,OAAO,EAAM,WAAW,IAAI,EAAM,SAAS,IAAK,EAAM;;;;ACCpF,SAAgB,GAAwC,EACtD,SACA,gBAAa,KACb,eAAY,KACqC;CACjD,IAAM,CAAC,GAAY,KAAiB,EAAS,GAAG,EAC1C,CAAC,GAAS,KAAc,EAAwC,EAAE,CAAC,EACnE,CAAC,GAAW,KAAgB,EAAS,GAAM,EAC3C,CAAC,GAAW,KAAgB,EAAyB,KAAK,EAI1D,IAAU,EAAO,EAAK;AAC5B,GAAQ,UAAU;CAMlB,IAAM,IAAS,EAAO,EAAE,EAClB,IAAU,EAAO,EAAE,EACnB,IAAW,EAA+B,KAAK;AA4CrD,QA1CA,QAAgB;AACd,MAAI,EAAW,SAAS,GAAW;AAMjC,GALA,EAAS,SAAS,OAAO,EACzB,EAAS,UAAU,MACnB,EAAQ,UAAU,EAAO,SACzB,EAAW,EAAE,CAAC,EACd,EAAa,GAAM,EACnB,EAAa,KAAK;AAClB;;EAGF,IAAM,IAAQ,iBAAiB;GAC7B,IAAM,IAAO,EAAE,EAAO,SAChB,IAAa,IAAI,iBAAiB;AAKxC,GAJA,EAAS,SAAS,OAAO,EACzB,EAAS,UAAU,GACnB,EAAa,GAAK,EAElB,EAAQ,QAAQ,GAAY,EAAW,OAAO,CAAC,MAC5C,MAAS;AACJ,SAAQ,EAAQ,YACpB,EAAQ,UAAU,GAClB,EAAW,EAAK,EAChB,EAAa,KAAK,EAClB,EAAa,GAAM;OAEpB,MAAmB;AACd,MAAW,OAAO,WAAW,KAAQ,EAAQ,YACjD,EAAQ,UAAU,GAClB,EAAa,EAAM,EACnB,EAAa,GAAM;KAEtB;KACA,EAAW;AAEd,eAAa,aAAa,EAAM;IAC/B;EAAC;EAAY;EAAY;EAAU,CAAC,EAEvC,cAAsB,EAAS,SAAS,OAAO,EAAE,EAAE,CAAC,EAI7C;EAAE;EAAS;EAAW;EAAW;EAAY,eAF9B,IAAa,MAAiB,EAAc,EAAK,EAAE,EAAE,CAEvB;EAAe"}