@weasel-js/ui 1.5.2 → 1.6.1

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 (565) hide show
  1. package/dist/chunks/ActionBar-DCq16yFA.js +57 -0
  2. package/dist/chunks/ActionBar-DCq16yFA.js.map +1 -0
  3. package/dist/chunks/{Badge-CW9pBPFl.js → Badge-CyAIZSDo.js} +758 -741
  4. package/dist/chunks/Badge-CyAIZSDo.js.map +1 -0
  5. package/dist/chunks/{BandEditor-jY-PFKY6.js → BandEditor-Dhm_Xrlr.js} +37 -36
  6. package/dist/chunks/BandEditor-Dhm_Xrlr.js.map +1 -0
  7. package/dist/chunks/Button-BIdXHQOx.js +111 -0
  8. package/dist/chunks/Button-BIdXHQOx.js.map +1 -0
  9. package/dist/chunks/ButtonBar-D5Vi0aj_.js +46 -0
  10. package/dist/chunks/ButtonBar-D5Vi0aj_.js.map +1 -0
  11. package/dist/chunks/Callout-yEn9iPlh.js +119 -0
  12. package/dist/chunks/Callout-yEn9iPlh.js.map +1 -0
  13. package/dist/chunks/{Checkbox-BOsDAY2F.js → Checkbox-DHXTUHO9.js} +1 -1
  14. package/dist/chunks/Checkbox-DHXTUHO9.js.map +1 -0
  15. package/dist/chunks/Code-AsKpgnv6.js +24 -0
  16. package/dist/chunks/Code-AsKpgnv6.js.map +1 -0
  17. package/dist/chunks/{ColorField-BYzgZM9o.js → ColorField-BcMcW8Sa.js} +16 -16
  18. package/dist/chunks/ColorField-BcMcW8Sa.js.map +1 -0
  19. package/dist/chunks/ColorModeControl-ke5PXbBa.js +47 -0
  20. package/dist/chunks/ColorModeControl-ke5PXbBa.js.map +1 -0
  21. package/dist/chunks/{ComboBox-Cz3f0Y_8.js → ComboBox-DpT8lc3p.js} +3 -3
  22. package/dist/chunks/ComboBox-DpT8lc3p.js.map +1 -0
  23. package/dist/chunks/{CurveEditor-DXwSP-iA.js → CurveEditor-BDJXjEvK.js} +35 -35
  24. package/dist/chunks/CurveEditor-BDJXjEvK.js.map +1 -0
  25. package/dist/chunks/DataGrid-D-dZj1BD.js +152 -0
  26. package/dist/chunks/DataGrid-D-dZj1BD.js.map +1 -0
  27. package/dist/chunks/DetailList-BMER1LUZ.js +43 -0
  28. package/dist/chunks/DetailList-BMER1LUZ.js.map +1 -0
  29. package/dist/chunks/{DetentSlider-CAubVX0J.js → DetentSlider-CL8TlX3S.js} +2 -2
  30. package/dist/chunks/DetentSlider-CL8TlX3S.js.map +1 -0
  31. package/dist/chunks/Dialog-BWyNMgpf.js +66 -0
  32. package/dist/chunks/Dialog-BWyNMgpf.js.map +1 -0
  33. package/dist/chunks/Disclosure-0G0uh2fa.js +58 -0
  34. package/dist/chunks/Disclosure-0G0uh2fa.js.map +1 -0
  35. package/dist/chunks/DragGhost-B5_hb9W9.js +30 -0
  36. package/dist/chunks/DragGhost-B5_hb9W9.js.map +1 -0
  37. package/dist/chunks/{DragHandleGlyph-CppAz4_8.js → DragHandleGlyph-Dr7Fgo0I.js} +1 -1
  38. package/dist/chunks/DragHandleGlyph-Dr7Fgo0I.js.map +1 -0
  39. package/dist/chunks/{Field-DWnV8WZY.js → Field--onYxXTF.js} +7 -6
  40. package/dist/chunks/Field--onYxXTF.js.map +1 -0
  41. package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js +111 -0
  42. package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js.map +1 -0
  43. package/dist/chunks/{FontFamilySelect-DxfgTC3G.js → FontFamilySelect-DXlMKWfK.js} +2 -2
  44. package/dist/chunks/FontFamilySelect-DXlMKWfK.js.map +1 -0
  45. package/dist/chunks/GradientEditor-B3a-MsVJ.js +335 -0
  46. package/dist/chunks/GradientEditor-B3a-MsVJ.js.map +1 -0
  47. package/dist/chunks/{Icon-DT0x6HaQ.js → Icon-Cgzy8VgC.js} +28 -20
  48. package/dist/chunks/Icon-Cgzy8VgC.js.map +1 -0
  49. package/dist/chunks/InlineRange-eOj6JpJl.js +29 -0
  50. package/dist/chunks/InlineRange-eOj6JpJl.js.map +1 -0
  51. package/dist/chunks/{Input-DbMKpkXy.js → Input-CHmkfYaD.js} +24 -19
  52. package/dist/chunks/Input-CHmkfYaD.js.map +1 -0
  53. package/dist/chunks/ItemList-Cm-HUWCi.js +174 -0
  54. package/dist/chunks/ItemList-Cm-HUWCi.js.map +1 -0
  55. package/dist/chunks/ItemList.module-BSpCSxan.js +14 -0
  56. package/dist/chunks/ItemList.module-BSpCSxan.js.map +1 -0
  57. package/dist/chunks/{Jog-DkkTlL3_.js → Jog-DESxZ44P.js} +6 -6
  58. package/dist/chunks/Jog-DESxZ44P.js.map +1 -0
  59. package/dist/chunks/{Keycaps-DunVpejA.js → Keycaps-C0H_v2gO.js} +71 -65
  60. package/dist/chunks/Keycaps-C0H_v2gO.js.map +1 -0
  61. package/dist/chunks/LayerList-nz-QYvTF.js +427 -0
  62. package/dist/chunks/LayerList-nz-QYvTF.js.map +1 -0
  63. package/dist/chunks/ListEditor-BQ6AV3Ac.js +74 -0
  64. package/dist/chunks/ListEditor-BQ6AV3Ac.js.map +1 -0
  65. package/dist/chunks/MenuButton-DtaGenKf.js +70 -0
  66. package/dist/chunks/MenuButton-DtaGenKf.js.map +1 -0
  67. package/dist/chunks/MeshEditor-qqGc6hlD.js +87 -0
  68. package/dist/chunks/MeshEditor-qqGc6hlD.js.map +1 -0
  69. package/dist/chunks/{NumberField-CCjEDZCg.js → NumberField-CwJOMmQR.js} +27 -22
  70. package/dist/chunks/NumberField-CwJOMmQR.js.map +1 -0
  71. package/dist/chunks/{OptionsBar-DeQ-vUeZ.js → OptionsBar-DbzAgIln.js} +3 -3
  72. package/dist/chunks/OptionsBar-DbzAgIln.js.map +1 -0
  73. package/dist/chunks/{PaintField-jBOJ32rL.js → PaintField-DaJukRc6.js} +21 -21
  74. package/dist/chunks/PaintField-DaJukRc6.js.map +1 -0
  75. package/dist/chunks/{PaintInput-Qs7Rul5R.js → PaintInput-Byhna3H-.js} +24 -24
  76. package/dist/chunks/PaintInput-Byhna3H-.js.map +1 -0
  77. package/dist/chunks/{PatternPicker-BMpXWboq.js → PatternPicker-B-cUt-JT.js} +2 -2
  78. package/dist/chunks/PatternPicker-B-cUt-JT.js.map +1 -0
  79. package/dist/chunks/{Plot2D-CXf_f7QD.js → Plot2D-CTXHkL5p.js} +13 -13
  80. package/dist/chunks/Plot2D-CTXHkL5p.js.map +1 -0
  81. package/dist/chunks/{PointPlotter-S_gz7VYt.js → PointPlotter-Bxo6haKe.js} +5 -4
  82. package/dist/chunks/PointPlotter-Bxo6haKe.js.map +1 -0
  83. package/dist/chunks/Powerline-ExO5GwEr.js +42 -0
  84. package/dist/chunks/Powerline-ExO5GwEr.js.map +1 -0
  85. package/dist/chunks/Prefs-DpqFKiwY.js +476 -0
  86. package/dist/chunks/Prefs-DpqFKiwY.js.map +1 -0
  87. package/dist/chunks/Properties-D_KzDN9K.js +282 -0
  88. package/dist/chunks/Properties-D_KzDN9K.js.map +1 -0
  89. package/dist/chunks/PropertyField-DGCecAnV.js +758 -0
  90. package/dist/chunks/PropertyField-DGCecAnV.js.map +1 -0
  91. package/dist/chunks/{RadioGroup-CsVp3SEu.js → RadioGroup-Bh4-12e-.js} +2 -2
  92. package/dist/chunks/RadioGroup-Bh4-12e-.js.map +1 -0
  93. package/dist/chunks/{RangeSlider-DNr-pJpZ.js → RangeSlider-BKRRTPTZ.js} +1 -1
  94. package/dist/chunks/RangeSlider-BKRRTPTZ.js.map +1 -0
  95. package/dist/chunks/{ResizeHandle-RXFf5fXr.js → ResizeHandle-BKT0XYpx.js} +15 -15
  96. package/dist/chunks/ResizeHandle-BKT0XYpx.js.map +1 -0
  97. package/dist/chunks/Select-CzyfaXzp.js +225 -0
  98. package/dist/chunks/Select-CzyfaXzp.js.map +1 -0
  99. package/dist/chunks/{SelectionPanel-CEbLS-0D.js → SelectionPanel-BgUM1h03.js} +21 -20
  100. package/dist/chunks/SelectionPanel-BgUM1h03.js.map +1 -0
  101. package/dist/chunks/{Sidebar-qn_oSCNX.js → Sidebar-BZ0m4afn.js} +8 -8
  102. package/dist/chunks/Sidebar-BZ0m4afn.js.map +1 -0
  103. package/dist/chunks/{SidebarPanel-Bs6V21hg.js → SidebarPanel-aoIqxbtq.js} +15 -19
  104. package/dist/chunks/SidebarPanel-aoIqxbtq.js.map +1 -0
  105. package/dist/chunks/{Slider-CIIrqiFS.js → Slider-CFwQYQ10.js} +94 -92
  106. package/dist/chunks/Slider-CFwQYQ10.js.map +1 -0
  107. package/dist/chunks/{StatusBar-B4L15DSm.js → StatusBar-DzoPDY4k.js} +8 -8
  108. package/dist/chunks/StatusBar-DzoPDY4k.js.map +1 -0
  109. package/dist/chunks/SwatchGrid-BARC3rnF.js +73 -0
  110. package/dist/chunks/SwatchGrid-BARC3rnF.js.map +1 -0
  111. package/dist/chunks/{Switch-DH5POG0T.js → Switch-CSYmcM8y.js} +1 -1
  112. package/dist/chunks/Switch-CSYmcM8y.js.map +1 -0
  113. package/dist/chunks/{Tabs-BFHikpml.js → Tabs-BbpzLLdY.js} +1 -1
  114. package/dist/chunks/Tabs-BbpzLLdY.js.map +1 -0
  115. package/dist/chunks/{Timeline-DNKY_yiK.js → Timeline--58F7MED.js} +141 -145
  116. package/dist/chunks/Timeline--58F7MED.js.map +1 -0
  117. package/dist/chunks/{Toast-CI1UDuK6.js → Toast-DNBb-24H.js} +1 -1
  118. package/dist/chunks/Toast-DNBb-24H.js.map +1 -0
  119. package/dist/chunks/ToggleBar-DTjGeS0Q.js +82 -0
  120. package/dist/chunks/ToggleBar-DTjGeS0Q.js.map +1 -0
  121. package/dist/chunks/{TokenPanel-BPHq24dc.js → TokenPanel-CMq7uydV.js} +50 -47
  122. package/dist/chunks/TokenPanel-CMq7uydV.js.map +1 -0
  123. package/dist/chunks/{ToolButton-9QzJCmuM.js → ToolButton-CR4sQlxF.js} +4 -4
  124. package/dist/chunks/ToolButton-CR4sQlxF.js.map +1 -0
  125. package/dist/chunks/{ToolGroup-BJiDrH_i.js → ToolGroup-Dpg1LN0l.js} +7 -7
  126. package/dist/chunks/ToolGroup-Dpg1LN0l.js.map +1 -0
  127. package/dist/chunks/{ToolOptionsBar-CAM6RcUH.js → ToolOptionsBar-CtzTlaN2.js} +6 -5
  128. package/dist/chunks/ToolOptionsBar-CtzTlaN2.js.map +1 -0
  129. package/dist/chunks/ToolPalette-CKG9qY6P.js +83 -0
  130. package/dist/chunks/ToolPalette-CKG9qY6P.js.map +1 -0
  131. package/dist/chunks/Tooltip-Clg2mhSt.js +42 -0
  132. package/dist/chunks/Tooltip-Clg2mhSt.js.map +1 -0
  133. package/dist/chunks/Tree-DVOtc9R5.js +203 -0
  134. package/dist/chunks/Tree-DVOtc9R5.js.map +1 -0
  135. package/dist/chunks/{createKeyframeLayer-DKtO0Sw_.js → createKeyframeLayer-Czj6Y235.js} +86 -86
  136. package/dist/chunks/createKeyframeLayer-Czj6Y235.js.map +1 -0
  137. package/dist/chunks/{dlog-CMYiRF3Q.js → dlog-F0I8KsIW.js} +2 -2
  138. package/dist/chunks/dlog-F0I8KsIW.js.map +1 -0
  139. package/dist/chunks/formatShortcut-DRQrVThu.js +15 -0
  140. package/dist/chunks/formatShortcut-DRQrVThu.js.map +1 -0
  141. package/dist/chunks/icons-Dk8SRS8g.js +162 -0
  142. package/dist/chunks/icons-Dk8SRS8g.js.map +1 -0
  143. package/dist/chunks/interactiveTarget-BNZmTow2.js +24 -0
  144. package/dist/chunks/interactiveTarget-BNZmTow2.js.map +1 -0
  145. package/dist/chunks/{keyGlyph-Bp0wnLHn.js → keyGlyph-C0qTakG-.js} +1 -1
  146. package/dist/chunks/keyGlyph-C0qTakG-.js.map +1 -0
  147. package/dist/chunks/model-Du7Lta4C.js +360 -0
  148. package/dist/chunks/model-Du7Lta4C.js.map +1 -0
  149. package/dist/chunks/{number-BHz66zQO.js → number-D3NEx_8r.js} +3 -3
  150. package/dist/chunks/number-D3NEx_8r.js.map +1 -0
  151. package/dist/chunks/paintPreview-CuSZiHpR.js +42 -0
  152. package/dist/chunks/paintPreview-CuSZiHpR.js.map +1 -0
  153. package/dist/chunks/paintValue-BpaGPjV3.js +18 -0
  154. package/dist/chunks/paintValue-BpaGPjV3.js.map +1 -0
  155. package/dist/chunks/{portalHost-CjpCnuGU.js → portalHost-yTOVuCej.js} +1 -1
  156. package/dist/chunks/portalHost-yTOVuCej.js.map +1 -0
  157. package/dist/chunks/prefField-Dnl7nmjQ.js +197 -0
  158. package/dist/chunks/prefField-Dnl7nmjQ.js.map +1 -0
  159. package/dist/chunks/segmentTooltip-CStYHKzd.js +29 -0
  160. package/dist/chunks/segmentTooltip-CStYHKzd.js.map +1 -0
  161. package/dist/chunks/segmentedControl.module-Bv7DEg8f.js +11 -0
  162. package/dist/chunks/segmentedControl.module-Bv7DEg8f.js.map +1 -0
  163. package/dist/chunks/{snap-CEjuWOhN.js → snap-DRjbOiG9.js} +1 -1
  164. package/dist/chunks/snap-DRjbOiG9.js.map +1 -0
  165. package/dist/chunks/stance-BFQpS_fL.js +17 -0
  166. package/dist/chunks/stance-BFQpS_fL.js.map +1 -0
  167. package/dist/chunks/useReorderDragList-B_-5L5Gu.js +131 -0
  168. package/dist/chunks/useReorderDragList-B_-5L5Gu.js.map +1 -0
  169. package/dist/chunks/{useRovingTabIndex-Dkpf_KhN.js → useRovingTabIndex-Bp_hYm_h.js} +1 -1
  170. package/dist/chunks/useRovingTabIndex-Bp_hYm_h.js.map +1 -0
  171. package/dist/color/ramp.d.ts +38 -0
  172. package/dist/color/ramp.d.ts.map +1 -0
  173. package/dist/components/ActionBar/ActionBar.d.ts +7 -5
  174. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  175. package/dist/components/ActionBar/index.js +1 -1
  176. package/dist/components/Badge/Badge.d.ts +21 -7
  177. package/dist/components/Badge/Badge.d.ts.map +1 -1
  178. package/dist/components/Badge/effects/Aqua.d.ts +1 -1
  179. package/dist/components/Badge/effects/Aqua.d.ts.map +1 -1
  180. package/dist/components/Badge/index.d.ts +1 -1
  181. package/dist/components/Badge/index.d.ts.map +1 -1
  182. package/dist/components/Badge/index.js +1 -1
  183. package/dist/components/Badge/types.d.ts +6 -5
  184. package/dist/components/Badge/types.d.ts.map +1 -1
  185. package/dist/components/BandEditor/index.js +1 -1
  186. package/dist/components/Button/Button.d.ts +17 -3
  187. package/dist/components/Button/Button.d.ts.map +1 -1
  188. package/dist/components/Button/index.d.ts +1 -1
  189. package/dist/components/Button/index.d.ts.map +1 -1
  190. package/dist/components/Button/index.js +1 -1
  191. package/dist/components/ButtonBar/ButtonBar.d.ts +36 -0
  192. package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -0
  193. package/dist/components/ButtonBar/index.d.ts +3 -0
  194. package/dist/components/ButtonBar/index.d.ts.map +1 -0
  195. package/dist/components/ButtonBar/index.js +2 -0
  196. package/dist/components/Callout/Callout.d.ts +3 -6
  197. package/dist/components/Callout/Callout.d.ts.map +1 -1
  198. package/dist/components/Callout/index.d.ts +1 -1
  199. package/dist/components/Callout/index.d.ts.map +1 -1
  200. package/dist/components/Callout/index.js +1 -1
  201. package/dist/components/Checkbox/index.js +1 -1
  202. package/dist/components/Code/Code.d.ts +28 -0
  203. package/dist/components/Code/Code.d.ts.map +1 -0
  204. package/dist/components/Code/index.d.ts +3 -0
  205. package/dist/components/Code/index.d.ts.map +1 -0
  206. package/dist/components/Code/index.js +2 -0
  207. package/dist/components/ColorField/ColorField.d.ts +1 -1
  208. package/dist/components/ColorField/ColorField.d.ts.map +1 -1
  209. package/dist/components/ColorField/index.js +1 -1
  210. package/dist/components/ColorModeControl/ColorModeControl.d.ts +21 -0
  211. package/dist/components/ColorModeControl/ColorModeControl.d.ts.map +1 -0
  212. package/dist/components/ColorModeControl/index.d.ts +3 -0
  213. package/dist/components/ColorModeControl/index.d.ts.map +1 -0
  214. package/dist/components/ColorModeControl/index.js +2 -0
  215. package/dist/components/ComboBox/ComboBox.d.ts +2 -2
  216. package/dist/components/ComboBox/ComboBox.d.ts.map +1 -1
  217. package/dist/components/ComboBox/index.js +1 -1
  218. package/dist/components/CurveEditor/CurveEditor.d.ts +1 -1
  219. package/dist/components/CurveEditor/CurveEditor.d.ts.map +1 -1
  220. package/dist/components/CurveEditor/LayeredCurveEditor.d.ts +1 -1
  221. package/dist/components/CurveEditor/LayeredCurveEditor.d.ts.map +1 -1
  222. package/dist/components/CurveEditor/index.js +3 -3
  223. package/dist/components/DataGrid/DataGrid.d.ts +23 -1
  224. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  225. package/dist/components/DataGrid/index.js +1 -1
  226. package/dist/components/DetailList/DetailList.d.ts +36 -0
  227. package/dist/components/DetailList/DetailList.d.ts.map +1 -0
  228. package/dist/components/DetailList/index.d.ts +3 -0
  229. package/dist/components/DetailList/index.d.ts.map +1 -0
  230. package/dist/components/DetailList/index.js +2 -0
  231. package/dist/components/DetentSlider/index.js +1 -1
  232. package/dist/components/Dialog/Dialog.d.ts +9 -3
  233. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  234. package/dist/components/Dialog/index.js +1 -1
  235. package/dist/components/Disclosure/Disclosure.d.ts +26 -18
  236. package/dist/components/Disclosure/Disclosure.d.ts.map +1 -1
  237. package/dist/components/Disclosure/index.d.ts +2 -2
  238. package/dist/components/Disclosure/index.d.ts.map +1 -1
  239. package/dist/components/Disclosure/index.js +2 -2
  240. package/dist/components/DragGhost/DragGhost.d.ts +21 -0
  241. package/dist/components/DragGhost/DragGhost.d.ts.map +1 -0
  242. package/dist/components/DragGhost/index.d.ts +3 -0
  243. package/dist/components/DragGhost/index.d.ts.map +1 -0
  244. package/dist/components/DragGhost/index.js +2 -0
  245. package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts +1 -1
  246. package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts.map +1 -1
  247. package/dist/components/DragHandleGlyph/index.js +1 -1
  248. package/dist/components/Field/Field.d.ts +1 -1
  249. package/dist/components/Field/Field.d.ts.map +1 -1
  250. package/dist/components/Field/index.js +1 -1
  251. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts +45 -0
  252. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -0
  253. package/dist/components/FillStrokeSwatch/index.d.ts +3 -0
  254. package/dist/components/FillStrokeSwatch/index.d.ts.map +1 -0
  255. package/dist/components/FillStrokeSwatch/index.js +2 -0
  256. package/dist/components/FontFamilySelect/FontFamilySelect.d.ts +1 -1
  257. package/dist/components/FontFamilySelect/FontFamilySelect.d.ts.map +1 -1
  258. package/dist/components/FontFamilySelect/index.js +1 -1
  259. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
  260. package/dist/components/GradientEditor/index.js +1 -1
  261. package/dist/components/InlineRange/InlineRange.d.ts +6 -2
  262. package/dist/components/InlineRange/InlineRange.d.ts.map +1 -1
  263. package/dist/components/InlineRange/index.js +1 -1
  264. package/dist/components/Input/Input.d.ts +13 -0
  265. package/dist/components/Input/Input.d.ts.map +1 -1
  266. package/dist/components/Input/index.js +1 -1
  267. package/dist/components/ItemList/ItemList.d.ts +70 -10
  268. package/dist/components/ItemList/ItemList.d.ts.map +1 -1
  269. package/dist/components/ItemList/index.js +1 -1
  270. package/dist/components/Jog/Jog.d.ts +1 -1
  271. package/dist/components/Jog/Jog.d.ts.map +1 -1
  272. package/dist/components/Jog/index.js +1 -1
  273. package/dist/components/Keycaps/Keycap.d.ts +1 -1
  274. package/dist/components/Keycaps/Keycap.d.ts.map +1 -1
  275. package/dist/components/Keycaps/Keycaps.d.ts +1 -1
  276. package/dist/components/Keycaps/Keycaps.d.ts.map +1 -1
  277. package/dist/components/Keycaps/index.d.ts +1 -0
  278. package/dist/components/Keycaps/index.d.ts.map +1 -1
  279. package/dist/components/Keycaps/index.js +3 -3
  280. package/dist/components/Keycaps/keySpecsFromMods.d.ts +2 -0
  281. package/dist/components/Keycaps/keySpecsFromMods.d.ts.map +1 -1
  282. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts +16 -0
  283. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts.map +1 -0
  284. package/dist/components/LayerList/LayerList.d.ts +79 -0
  285. package/dist/components/LayerList/LayerList.d.ts.map +1 -0
  286. package/dist/components/LayerList/index.d.ts +3 -0
  287. package/dist/components/LayerList/index.d.ts.map +1 -0
  288. package/dist/components/LayerList/index.js +2 -0
  289. package/dist/components/LayerList/useSceneLayerList.d.ts +20 -0
  290. package/dist/components/LayerList/useSceneLayerList.d.ts.map +1 -0
  291. package/dist/components/ListEditor/ListEditor.d.ts +23 -0
  292. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -0
  293. package/dist/components/ListEditor/index.d.ts +3 -0
  294. package/dist/components/ListEditor/index.d.ts.map +1 -0
  295. package/dist/components/ListEditor/index.js +2 -0
  296. package/dist/components/MenuButton/MenuButton.d.ts +6 -2
  297. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  298. package/dist/components/MenuButton/index.js +1 -1
  299. package/dist/components/MeshEditor/index.js +1 -1
  300. package/dist/components/NumberField/NumberField.d.ts +13 -0
  301. package/dist/components/NumberField/NumberField.d.ts.map +1 -1
  302. package/dist/components/NumberField/UnitField.d.ts +1 -1
  303. package/dist/components/NumberField/UnitField.d.ts.map +1 -1
  304. package/dist/components/NumberField/index.js +1 -1
  305. package/dist/components/OptionsBar/index.js +1 -1
  306. package/dist/components/PaintField/index.js +1 -1
  307. package/dist/components/PaintInput/index.js +1 -1
  308. package/dist/components/PatternPicker/index.js +1 -1
  309. package/dist/components/Plot2D/index.js +1 -1
  310. package/dist/components/PointPlotter/PointPlotter.d.ts +1 -1
  311. package/dist/components/PointPlotter/PointPlotter.d.ts.map +1 -1
  312. package/dist/components/PointPlotter/index.js +1 -1
  313. package/dist/components/Powerline/Powerline.d.ts +5 -4
  314. package/dist/components/Powerline/Powerline.d.ts.map +1 -1
  315. package/dist/components/Powerline/index.js +2 -2
  316. package/dist/components/Prefs/PrefsDialog.d.ts +11 -3
  317. package/dist/components/Prefs/PrefsDialog.d.ts.map +1 -1
  318. package/dist/components/Prefs/PrefsForm.d.ts +27 -26
  319. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  320. package/dist/components/Prefs/PrefsPane.d.ts +24 -0
  321. package/dist/components/Prefs/PrefsPane.d.ts.map +1 -0
  322. package/dist/components/Prefs/PrefsRail.d.ts +32 -0
  323. package/dist/components/Prefs/PrefsRail.d.ts.map +1 -0
  324. package/dist/components/Prefs/PrefsRow.d.ts +32 -0
  325. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -0
  326. package/dist/components/Prefs/index.d.ts +5 -2
  327. package/dist/components/Prefs/index.d.ts.map +1 -1
  328. package/dist/components/Prefs/index.js +3 -3
  329. package/dist/components/Prefs/prefField.d.ts +36 -0
  330. package/dist/components/Prefs/prefField.d.ts.map +1 -0
  331. package/dist/components/Prefs/schema.d.ts +30 -0
  332. package/dist/components/Prefs/schema.d.ts.map +1 -1
  333. package/dist/components/Properties/CurveField.d.ts +1 -1
  334. package/dist/components/Properties/CurveField.d.ts.map +1 -1
  335. package/dist/components/Properties/DialogRow.d.ts +33 -0
  336. package/dist/components/Properties/DialogRow.d.ts.map +1 -0
  337. package/dist/components/Properties/PropertyField.d.ts +238 -0
  338. package/dist/components/Properties/PropertyField.d.ts.map +1 -0
  339. package/dist/components/Properties/PropertyGroup.d.ts +12 -3
  340. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  341. package/dist/components/Properties/PropertyPanel.d.ts +34 -238
  342. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  343. package/dist/components/Properties/Subpanel.d.ts +14 -0
  344. package/dist/components/Properties/Subpanel.d.ts.map +1 -0
  345. package/dist/components/Properties/index.d.ts +8 -4
  346. package/dist/components/Properties/index.d.ts.map +1 -1
  347. package/dist/components/Properties/index.js +3 -2
  348. package/dist/components/Properties/storyLayouts.d.ts +1 -1
  349. package/dist/components/Properties/storyLayouts.d.ts.map +1 -1
  350. package/dist/components/RadioGroup/RadioGroup.d.ts +2 -2
  351. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  352. package/dist/components/RadioGroup/index.js +1 -1
  353. package/dist/components/RangeSlider/RangeSlider.d.ts +1 -1
  354. package/dist/components/RangeSlider/RangeSlider.d.ts.map +1 -1
  355. package/dist/components/RangeSlider/index.js +1 -1
  356. package/dist/components/ResizeHandle/ResizeHandle.d.ts +1 -1
  357. package/dist/components/ResizeHandle/ResizeHandle.d.ts.map +1 -1
  358. package/dist/components/ResizeHandle/index.js +1 -1
  359. package/dist/components/Select/Select.d.ts +40 -7
  360. package/dist/components/Select/Select.d.ts.map +1 -1
  361. package/dist/components/Select/index.d.ts +2 -2
  362. package/dist/components/Select/index.d.ts.map +1 -1
  363. package/dist/components/Select/index.js +2 -2
  364. package/dist/components/SelectionPanel/SelectionPanel.d.ts +1 -1
  365. package/dist/components/SelectionPanel/SelectionPanel.d.ts.map +1 -1
  366. package/dist/components/SelectionPanel/index.js +2 -2
  367. package/dist/components/SelectionPanel/renderLeaf.d.ts +14 -8
  368. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
  369. package/dist/components/Sidebar/Sidebar.d.ts +1 -1
  370. package/dist/components/Sidebar/Sidebar.d.ts.map +1 -1
  371. package/dist/components/Sidebar/index.js +1 -1
  372. package/dist/components/SidebarPanel/SidebarPanel.d.ts +3 -3
  373. package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
  374. package/dist/components/SidebarPanel/index.js +1 -1
  375. package/dist/components/Slider/Slider.d.ts +2 -1
  376. package/dist/components/Slider/Slider.d.ts.map +1 -1
  377. package/dist/components/Slider/index.js +1 -1
  378. package/dist/components/StatusBar/StatusBar.d.ts +3 -3
  379. package/dist/components/StatusBar/StatusBar.d.ts.map +1 -1
  380. package/dist/components/StatusBar/index.js +1 -1
  381. package/dist/components/SwatchGrid/SwatchGrid.d.ts +34 -0
  382. package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -0
  383. package/dist/components/SwatchGrid/index.d.ts +3 -0
  384. package/dist/components/SwatchGrid/index.d.ts.map +1 -0
  385. package/dist/components/SwatchGrid/index.js +2 -0
  386. package/dist/components/Switch/index.js +1 -1
  387. package/dist/components/Tabs/Tabs.d.ts +4 -4
  388. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  389. package/dist/components/Tabs/index.js +1 -1
  390. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  391. package/dist/components/Timeline/index.js +1 -1
  392. package/dist/components/Toast/Toast.d.ts +1 -1
  393. package/dist/components/Toast/Toast.d.ts.map +1 -1
  394. package/dist/components/Toast/index.js +1 -1
  395. package/dist/components/ToggleBar/ToggleBar.d.ts +2 -1
  396. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  397. package/dist/components/ToggleBar/index.js +1 -1
  398. package/dist/components/TokenPanel/TokenPanel.d.ts +1 -1
  399. package/dist/components/TokenPanel/TokenPanel.d.ts.map +1 -1
  400. package/dist/components/TokenPanel/index.js +1 -1
  401. package/dist/components/ToolButton/ToolButton.d.ts +1 -1
  402. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  403. package/dist/components/ToolButton/index.js +1 -1
  404. package/dist/components/ToolGroup/ToolGroup.d.ts +1 -1
  405. package/dist/components/ToolGroup/ToolGroup.d.ts.map +1 -1
  406. package/dist/components/ToolGroup/index.js +1 -1
  407. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts +1 -1
  408. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts.map +1 -1
  409. package/dist/components/ToolOptionsBar/index.js +1 -1
  410. package/dist/components/ToolPalette/ToolPalette.d.ts +1 -1
  411. package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
  412. package/dist/components/ToolPalette/index.d.ts +1 -0
  413. package/dist/components/ToolPalette/index.d.ts.map +1 -1
  414. package/dist/components/ToolPalette/index.js +3 -2
  415. package/dist/components/Tooltip/Tooltip.d.ts +8 -4
  416. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  417. package/dist/components/Tooltip/index.d.ts +1 -1
  418. package/dist/components/Tooltip/index.d.ts.map +1 -1
  419. package/dist/components/Tooltip/index.js +2 -2
  420. package/dist/components/Tree/Tree.d.ts +84 -0
  421. package/dist/components/Tree/Tree.d.ts.map +1 -0
  422. package/dist/components/Tree/index.d.ts +3 -0
  423. package/dist/components/Tree/index.d.ts.map +1 -0
  424. package/dist/components/Tree/index.js +2 -0
  425. package/dist/components/segmentTooltip.d.ts +30 -0
  426. package/dist/components/segmentTooltip.d.ts.map +1 -0
  427. package/dist/components/stance.d.ts +30 -0
  428. package/dist/components/stance.d.ts.map +1 -0
  429. package/dist/components/stanceCss.d.ts +31 -0
  430. package/dist/components/stanceCss.d.ts.map +1 -0
  431. package/dist/components/stanceSurfaces.d.ts +4 -0
  432. package/dist/components/stanceSurfaces.d.ts.map +1 -0
  433. package/dist/format/number.d.ts +3 -2
  434. package/dist/format/number.d.ts.map +1 -1
  435. package/dist/icons/Icon.d.ts +1 -1
  436. package/dist/icons/Icon.d.ts.map +1 -1
  437. package/dist/icons/ShapeKindIcon.d.ts +10 -0
  438. package/dist/icons/ShapeKindIcon.d.ts.map +1 -0
  439. package/dist/icons/index.d.ts +55 -53
  440. package/dist/icons/index.d.ts.map +1 -1
  441. package/dist/icons/paths.d.ts +2 -0
  442. package/dist/icons/paths.d.ts.map +1 -1
  443. package/dist/index.d.ts +17 -3
  444. package/dist/index.d.ts.map +1 -1
  445. package/dist/index.js +130 -79
  446. package/dist/index.js.map +1 -1
  447. package/dist/interactiveTarget.d.ts +9 -0
  448. package/dist/interactiveTarget.d.ts.map +1 -0
  449. package/dist/overlays/portalHost.d.ts +1 -1
  450. package/dist/overlays/portalHost.d.ts.map +1 -1
  451. package/dist/style.css +1 -1
  452. package/dist/useReorderDragList.d.ts +36 -7
  453. package/dist/useReorderDragList.d.ts.map +1 -1
  454. package/dist/useRovingTabIndex.d.ts +1 -1
  455. package/dist/useScrollSpy.d.ts +48 -0
  456. package/dist/useScrollSpy.d.ts.map +1 -0
  457. package/package.json +8 -8
  458. package/dist/chunks/ActionBar-CLwiY3Jg.js +0 -62
  459. package/dist/chunks/ActionBar-CLwiY3Jg.js.map +0 -1
  460. package/dist/chunks/ActionsBar-D84a4eGy.js +0 -41
  461. package/dist/chunks/ActionsBar-D84a4eGy.js.map +0 -1
  462. package/dist/chunks/Badge-CW9pBPFl.js.map +0 -1
  463. package/dist/chunks/BandEditor-jY-PFKY6.js.map +0 -1
  464. package/dist/chunks/Button-DRSApvnK.js +0 -90
  465. package/dist/chunks/Button-DRSApvnK.js.map +0 -1
  466. package/dist/chunks/Callout-DrNu-9Qr.js +0 -122
  467. package/dist/chunks/Callout-DrNu-9Qr.js.map +0 -1
  468. package/dist/chunks/Checkbox-BOsDAY2F.js.map +0 -1
  469. package/dist/chunks/ColorField-BYzgZM9o.js.map +0 -1
  470. package/dist/chunks/ComboBox-Cz3f0Y_8.js.map +0 -1
  471. package/dist/chunks/CurveEditor-DXwSP-iA.js.map +0 -1
  472. package/dist/chunks/DataGrid-C8KrYtw7.js +0 -104
  473. package/dist/chunks/DataGrid-C8KrYtw7.js.map +0 -1
  474. package/dist/chunks/DetentSlider-CAubVX0J.js.map +0 -1
  475. package/dist/chunks/Dialog-fGqqQ6o_.js +0 -61
  476. package/dist/chunks/Dialog-fGqqQ6o_.js.map +0 -1
  477. package/dist/chunks/Disclosure-CILDfWsU.js +0 -47
  478. package/dist/chunks/Disclosure-CILDfWsU.js.map +0 -1
  479. package/dist/chunks/DragHandleGlyph-CppAz4_8.js.map +0 -1
  480. package/dist/chunks/Field-DWnV8WZY.js.map +0 -1
  481. package/dist/chunks/FontFamilySelect-DxfgTC3G.js.map +0 -1
  482. package/dist/chunks/GradientEditor-rRBmf3G0.js +0 -333
  483. package/dist/chunks/GradientEditor-rRBmf3G0.js.map +0 -1
  484. package/dist/chunks/Icon-DT0x6HaQ.js.map +0 -1
  485. package/dist/chunks/InlineRange-DdIlfGqG.js +0 -29
  486. package/dist/chunks/InlineRange-DdIlfGqG.js.map +0 -1
  487. package/dist/chunks/Input-DbMKpkXy.js.map +0 -1
  488. package/dist/chunks/ItemList-B9zYb0GE.js +0 -42
  489. package/dist/chunks/ItemList-B9zYb0GE.js.map +0 -1
  490. package/dist/chunks/Jog-DkkTlL3_.js.map +0 -1
  491. package/dist/chunks/Keycaps-DunVpejA.js.map +0 -1
  492. package/dist/chunks/LayerStack-CfQ6GsRz.js +0 -142
  493. package/dist/chunks/LayerStack-CfQ6GsRz.js.map +0 -1
  494. package/dist/chunks/MenuButton-C_4nox39.js +0 -60
  495. package/dist/chunks/MenuButton-C_4nox39.js.map +0 -1
  496. package/dist/chunks/MeshEditor-Bipz-Ocl.js +0 -123
  497. package/dist/chunks/MeshEditor-Bipz-Ocl.js.map +0 -1
  498. package/dist/chunks/NumberField-CCjEDZCg.js.map +0 -1
  499. package/dist/chunks/OptionsBar-DeQ-vUeZ.js.map +0 -1
  500. package/dist/chunks/PaintField-jBOJ32rL.js.map +0 -1
  501. package/dist/chunks/PaintInput-Qs7Rul5R.js.map +0 -1
  502. package/dist/chunks/PatternPicker-BMpXWboq.js.map +0 -1
  503. package/dist/chunks/Plot2D-CXf_f7QD.js.map +0 -1
  504. package/dist/chunks/PointPlotter-S_gz7VYt.js.map +0 -1
  505. package/dist/chunks/Powerline-Ak5AWUlK.js +0 -36
  506. package/dist/chunks/Powerline-Ak5AWUlK.js.map +0 -1
  507. package/dist/chunks/Prefs-CNC8tzyN.js +0 -308
  508. package/dist/chunks/Prefs-CNC8tzyN.js.map +0 -1
  509. package/dist/chunks/Properties-Rnb6TAbN.js +0 -891
  510. package/dist/chunks/Properties-Rnb6TAbN.js.map +0 -1
  511. package/dist/chunks/RadioGroup-CsVp3SEu.js.map +0 -1
  512. package/dist/chunks/RangeSlider-DNr-pJpZ.js.map +0 -1
  513. package/dist/chunks/ResizeHandle-RXFf5fXr.js.map +0 -1
  514. package/dist/chunks/Select-BEope086.js +0 -190
  515. package/dist/chunks/Select-BEope086.js.map +0 -1
  516. package/dist/chunks/SelectionPanel-CEbLS-0D.js.map +0 -1
  517. package/dist/chunks/Sidebar-qn_oSCNX.js.map +0 -1
  518. package/dist/chunks/SidebarPanel-Bs6V21hg.js.map +0 -1
  519. package/dist/chunks/Slider-CIIrqiFS.js.map +0 -1
  520. package/dist/chunks/StatusBar-B4L15DSm.js.map +0 -1
  521. package/dist/chunks/Switch-DH5POG0T.js.map +0 -1
  522. package/dist/chunks/Tabs-BFHikpml.js.map +0 -1
  523. package/dist/chunks/Timeline-DNKY_yiK.js.map +0 -1
  524. package/dist/chunks/Toast-CI1UDuK6.js.map +0 -1
  525. package/dist/chunks/ToggleBar-CClus5Cd.js +0 -75
  526. package/dist/chunks/ToggleBar-CClus5Cd.js.map +0 -1
  527. package/dist/chunks/TokenPanel-BPHq24dc.js.map +0 -1
  528. package/dist/chunks/ToolButton-9QzJCmuM.js.map +0 -1
  529. package/dist/chunks/ToolGroup-BJiDrH_i.js.map +0 -1
  530. package/dist/chunks/ToolOptionsBar-CAM6RcUH.js.map +0 -1
  531. package/dist/chunks/ToolPalette-DGkKwE7D.js +0 -97
  532. package/dist/chunks/ToolPalette-DGkKwE7D.js.map +0 -1
  533. package/dist/chunks/Tooltip-C4YBczLq.js +0 -42
  534. package/dist/chunks/Tooltip-C4YBczLq.js.map +0 -1
  535. package/dist/chunks/createKeyframeLayer-DKtO0Sw_.js.map +0 -1
  536. package/dist/chunks/dlog-CMYiRF3Q.js.map +0 -1
  537. package/dist/chunks/icons-DFLytcui.js +0 -165
  538. package/dist/chunks/icons-DFLytcui.js.map +0 -1
  539. package/dist/chunks/keyGlyph-Bp0wnLHn.js.map +0 -1
  540. package/dist/chunks/model-13kZ_-mE.js +0 -483
  541. package/dist/chunks/model-13kZ_-mE.js.map +0 -1
  542. package/dist/chunks/number-BHz66zQO.js.map +0 -1
  543. package/dist/chunks/portalHost-CjpCnuGU.js.map +0 -1
  544. package/dist/chunks/range.module-DSsOIq1R.js +0 -8
  545. package/dist/chunks/range.module-DSsOIq1R.js.map +0 -1
  546. package/dist/chunks/schema-Dft4Cu2p.js +0 -47
  547. package/dist/chunks/schema-Dft4Cu2p.js.map +0 -1
  548. package/dist/chunks/segmentedControl.module-DS72X1ns.js +0 -11
  549. package/dist/chunks/segmentedControl.module-DS72X1ns.js.map +0 -1
  550. package/dist/chunks/snap-CEjuWOhN.js.map +0 -1
  551. package/dist/chunks/useReorderDragList-CSQGd7zQ.js +0 -102
  552. package/dist/chunks/useReorderDragList-CSQGd7zQ.js.map +0 -1
  553. package/dist/chunks/useRovingTabIndex-Dkpf_KhN.js.map +0 -1
  554. package/dist/components/ActionsBar/ActionsBar.d.ts +0 -35
  555. package/dist/components/ActionsBar/ActionsBar.d.ts.map +0 -1
  556. package/dist/components/ActionsBar/index.d.ts +0 -3
  557. package/dist/components/ActionsBar/index.d.ts.map +0 -1
  558. package/dist/components/ActionsBar/index.js +0 -2
  559. package/dist/components/LayerStack/LayerStack.d.ts +0 -62
  560. package/dist/components/LayerStack/LayerStack.d.ts.map +0 -1
  561. package/dist/components/LayerStack/index.d.ts +0 -2
  562. package/dist/components/LayerStack/index.d.ts.map +0 -1
  563. package/dist/components/LayerStack/index.js +0 -2
  564. package/dist/components/Properties/EffectCard.d.ts +0 -69
  565. package/dist/components/Properties/EffectCard.d.ts.map +0 -1
@@ -1,6 +1,6 @@
1
- import { r as e } from "./number-BHz66zQO.js";
2
- import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
- import { openPointerSession as r } from "@weasel-js/core";
1
+ import { r as e } from "./number-D3NEx_8r.js";
2
+ import { openPointerSession as t } from "@weasel-js/core";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import { useCallback as i, useEffect as a, useMemo as o, useRef as s } from "react";
5
5
  var c = {
6
6
  root: "_root_1nxpz_1",
@@ -60,26 +60,26 @@ function h(e, t, n, r) {
60
60
  }
61
61
  return i === -1 ? e[0] : e[Math.max(0, i - (r - 1))];
62
62
  }
63
- function g(e, t, n) {
63
+ function ee(e, t, n) {
64
64
  return e !== void 0 && e > 0 ? e : (n - t) / 100;
65
65
  }
66
- function _(e, t, n, r, i, a) {
66
+ function g(e, t, n, r, i, a) {
67
67
  let o = a !== void 0 && a > 0 ? a : (i - r) / 1e3;
68
68
  return u(e, n > 0 ? t[n - 1].value + o : r, n < t.length - 1 ? t[n + 1].value - o : i);
69
69
  }
70
- function v(e, t, n, r) {
70
+ function _(e, t, n, r) {
71
71
  if (!e.bounds) return [n, r];
72
72
  let i = typeof e.bounds == "function" ? e.bounds(t) : e.bounds;
73
73
  return [i[0], i[1]];
74
74
  }
75
- function y(t) {
75
+ function v(t) {
76
76
  return e(t.value, {
77
77
  minimumFractionDigits: 3,
78
78
  maximumFractionDigits: 3
79
79
  });
80
80
  }
81
- function b(e) {
82
- let { thumbs: b, onInput: x, onChange: S, step: C, constraint: w, trackHeight: T, density: E, ariaLabel: ee, className: D } = e, O = o(() => p(e.stops, e.min, e.max), [
81
+ function y(e) {
82
+ let { thumbs: y, onInput: b, onChange: x, step: S, constraint: C, trackHeight: w, density: T, ariaLabel: E, className: D } = e, O = o(() => p(e.stops, e.min, e.max), [
83
83
  e.stops,
84
84
  e.min,
85
85
  e.max
@@ -111,44 +111,46 @@ function b(e) {
111
111
  ]), z = i((e, t) => {
112
112
  let n = R(e);
113
113
  if (j) return m(n, k, Infinity, L);
114
- let r = u(l(n, C, M), M, N);
114
+ let r = u(l(n, S, M), M, N);
115
115
  return k.length > 0 ? m(r, k, d / t, L) : r;
116
116
  }, [
117
117
  R,
118
118
  L,
119
119
  j,
120
120
  k,
121
- C,
121
+ S,
122
122
  M,
123
123
  N
124
- ]), B = i((t, n, i, a) => {
125
- I.current?.cancel(), F.current = (a ?? b).map((e) => ({ ...e }));
126
- let o = !1;
127
- I.current = r(t, n, {
124
+ ]), B = i((n, r, i, a) => {
125
+ I.current?.cancel();
126
+ let o = (a ?? y).map((e) => ({ ...e }));
127
+ F.current = o;
128
+ let s = !1;
129
+ I.current = t(n, r, {
128
130
  onMove: (t) => {
129
131
  let n = P.current, r = F.current;
130
132
  if (!n || !r) return;
131
- let a = n.getBoundingClientRect(), s = z((t.clientX - a.left) / a.width, a.width), [c, l] = v(r[i], {
133
+ let a = n.getBoundingClientRect(), o = z((t.clientX - a.left) / a.width, a.width), [c, l] = _(r[i], {
132
134
  thumbs: r,
133
135
  index: i
134
136
  }, M, N);
135
- s = u(s, c, l), w === "ordered" && (s = _(s, r, i, M, N, C));
137
+ o = u(o, c, l), C === "ordered" && (o = g(o, r, i, M, N, S));
136
138
  let d = a.height;
137
- e.onRemoveThumb && (o = t.clientY < a.top - d || t.clientY > a.bottom + d), r[i] = {
139
+ e.onRemoveThumb && (s = t.clientY < a.top - d || t.clientY > a.bottom + d), r[i] = {
138
140
  ...r[i],
139
- value: s
140
- }, x(r.map((e) => ({ ...e })));
141
+ value: o
142
+ }, b(r.map((e) => ({ ...e })));
141
143
  },
142
144
  onEnd: () => {
143
145
  I.current = null;
144
146
  let t = F.current;
145
147
  if (F.current = null, t) {
146
- if (o && e.onRemoveThumb && e.onRemoveThumb(i)) {
148
+ if (s && e.onRemoveThumb && e.onRemoveThumb(i)) {
147
149
  let e = t.filter((e, t) => t !== i).map((e) => ({ ...e }));
148
- x(e), S?.(e);
150
+ b(e), x?.(e);
149
151
  return;
150
152
  }
151
- S?.(t.map((e) => ({ ...e })));
153
+ x?.(t.map((e) => ({ ...e })));
152
154
  }
153
155
  },
154
156
  onCancel: () => {
@@ -156,59 +158,59 @@ function b(e) {
156
158
  }
157
159
  }, f);
158
160
  }, [
161
+ y,
159
162
  b,
160
163
  x,
161
- S,
162
164
  z,
163
165
  M,
164
166
  N,
167
+ S,
165
168
  C,
166
- w,
167
169
  e
168
- ]), V = i((e, t, n) => {
170
+ ]), V = i((e, n, r) => {
169
171
  I.current?.cancel();
170
- let i = b.map((e) => ({ ...e })), a = i.map((e) => e.value);
171
- F.current = i, I.current = r(e, t, {
172
+ let i = y.map((e) => ({ ...e })), a = i.map((e) => e.value);
173
+ F.current = i, I.current = t(e, n, {
172
174
  onMove: (e) => {
173
- let t = P.current, r = F.current;
174
- if (!t || !r) return;
175
- let i = t.getBoundingClientRect(), o = (e.clientX - n) / i.width;
175
+ let t = P.current, n = F.current;
176
+ if (!t || !n) return;
177
+ let i = t.getBoundingClientRect(), o = (e.clientX - r) / i.width;
176
178
  if (A) {
177
179
  let e = a.map(L), t = u(o, -Math.min(...e), 1 - Math.max(...e));
178
- for (let n = 0; n < r.length; n++) r[n] = {
179
- ...r[n],
180
- value: R(e[n] + t)
180
+ for (let r = 0; r < n.length; r++) n[r] = {
181
+ ...n[r],
182
+ value: R(e[r] + t)
181
183
  };
182
- x(r.map((e) => ({ ...e })));
184
+ b(n.map((e) => ({ ...e })));
183
185
  return;
184
186
  }
185
187
  let s = o * (N - M);
186
- s = l(s, C, 0);
188
+ s = l(s, S, 0);
187
189
  let c = -Infinity, d = Infinity;
188
190
  for (let e = 0; e < a.length; e++) c = Math.max(c, M - a[e]), d = Math.min(d, N - a[e]);
189
191
  s = u(s, c, d);
190
- for (let e = 0; e < r.length; e++) r[e] = {
191
- ...r[e],
192
+ for (let e = 0; e < n.length; e++) n[e] = {
193
+ ...n[e],
192
194
  value: u(a[e] + s, M, N)
193
195
  };
194
- x(r.map((e) => ({ ...e })));
196
+ b(n.map((e) => ({ ...e })));
195
197
  },
196
198
  onEnd: () => {
197
199
  I.current = null;
198
200
  let e = F.current;
199
- F.current = null, e && S?.(e.map((e) => ({ ...e })));
201
+ F.current = null, e && x?.(e.map((e) => ({ ...e })));
200
202
  },
201
203
  onCancel: () => {
202
204
  I.current = null, F.current = null;
203
205
  }
204
206
  }, f);
205
207
  }, [
208
+ y,
206
209
  b,
207
210
  x,
208
- S,
209
211
  M,
210
212
  N,
211
- C,
213
+ S,
212
214
  A,
213
215
  L,
214
216
  R
@@ -219,11 +221,11 @@ function b(e) {
219
221
  n.shiftKey && e.allowShiftAll ? V(r, n, n.clientX) : B(r, n, t);
220
222
  }, U = (t) => (n) => {
221
223
  if (!e.onRemoveThumb || (n.preventDefault(), !e.onRemoveThumb(t))) return;
222
- let r = b.filter((e, n) => n !== t).map((e) => ({ ...e }));
223
- x(r), S?.(r);
224
+ let r = y.filter((e, n) => n !== t).map((e) => ({ ...e }));
225
+ b(r), x?.(r);
224
226
  }, W = (t) => {
225
227
  if (typeof t.button == "number" && t.button > 0) return;
226
- let n = (e.trackClick ?? "none") === "move-nearest" && b.length > 0;
228
+ let n = (e.trackClick ?? (y.length === 1 ? "move-nearest" : "none")) === "move-nearest" && y.length > 0;
227
229
  if (!e.onAddThumb && !n || t.target.closest(`.${c.thumb}`)) return;
228
230
  t.preventDefault();
229
231
  let r = P.current;
@@ -232,22 +234,22 @@ function b(e) {
232
234
  if (e.onAddThumb) {
233
235
  let t = e.onAddThumb(a);
234
236
  if (!t) return;
235
- let n = [...b.map((e) => ({ ...e })), t];
236
- x(n), S?.(n);
237
+ let n = [...y.map((e) => ({ ...e })), t];
238
+ b(n), x?.(n);
237
239
  return;
238
240
  }
239
241
  let o = 0;
240
- for (let e = 1; e < b.length; e++) Math.abs(b[e].value - a) < Math.abs(b[o].value - a) && (o = e);
241
- let s = b.map((e) => ({ ...e })), [l, d] = v(s[o], {
242
+ for (let e = 1; e < y.length; e++) Math.abs(y[e].value - a) < Math.abs(y[o].value - a) && (o = e);
243
+ let s = y.map((e) => ({ ...e })), [l, d] = _(s[o], {
242
244
  thumbs: s,
243
245
  index: o
244
246
  }, M, N), f = u(a, l, d);
245
- w === "ordered" && (f = _(f, s, o, M, N, C)), s[o] = {
247
+ C === "ordered" && (f = g(f, s, o, M, N, S)), s[o] = {
246
248
  ...s[o],
247
249
  value: f
248
- }, x(s), B(r, t, o, s);
250
+ }, b(s), r.querySelectorAll(`.${c.thumb}`)[o]?.focus(), B(r, t, o, s);
249
251
  }, G = (e) => (t) => {
250
- let n = g(C, M, N), r = 0, i = 0, a = null;
252
+ let n = ee(S, M, N), r = 0, i = 0, a = null;
251
253
  switch (t.key) {
252
254
  case "ArrowRight":
253
255
  case "ArrowUp":
@@ -272,72 +274,72 @@ function b(e) {
272
274
  default: return;
273
275
  }
274
276
  t.preventDefault();
275
- let o = b.map((e) => ({ ...e })), [s, c] = v(o[e], {
277
+ let o = y.map((e) => ({ ...e })), [s, c] = _(o[e], {
276
278
  thumbs: o,
277
279
  index: e
278
280
  }, M, N), d = Math.max(M, s), f = Math.min(N, c), p;
279
- p = a === "home" ? d : a === "end" ? f : k.length > 0 ? h(k, o[e].value, i > 0 ? 1 : -1, Math.abs(i)) : l(o[e].value + r, C, M), p = u(p, d, f), w === "ordered" && (p = _(p, o, e, d, f, C)), o[e] = {
281
+ p = a === "home" ? d : a === "end" ? f : k.length > 0 ? h(k, o[e].value, i > 0 ? 1 : -1, Math.abs(i)) : l(o[e].value + r, S, M), p = u(p, d, f), C === "ordered" && (p = g(p, o, e, d, f, S)), o[e] = {
280
282
  ...o[e],
281
283
  value: p
282
- }, x(o), S?.(o);
283
- }, K = e.readoutPlacement ?? "none", q = e.renderReadout, J = E === "slim", Y = {};
284
- J && (Y["--rp-track-height"] = "var(--wzl-slider-track-h)", Y["--rp-thumb-size"] = "var(--wzl-slider-thumb-size)"), T !== void 0 && (Y["--rp-track-height"] = `${T}px`);
284
+ }, b(o), x?.(o);
285
+ }, K = e.readoutPlacement ?? "none", q = e.renderReadout, J = T === "slim", Y = {};
286
+ J && (Y["--rp-track-height"] = "var(--wzl-slider-track-h)", Y["--rp-thumb-size"] = "var(--wzl-slider-thumb-size)"), w !== void 0 && (Y["--rp-track-height"] = `${w}px`);
285
287
  let X = e.stopLabels ?? "all", Z = O.length - 1, Q = X === "none" ? [] : O.map((e, t) => ({
286
288
  stop: e,
287
289
  i: t
288
- })).filter(({ stop: e, i: t }) => e.label !== void 0 && (X === "all" || t === 0 || t === Z)), $ = Q.length > 0 && /* @__PURE__ */ t("div", {
290
+ })).filter(({ stop: e, i: t }) => e.label !== void 0 && (X === "all" || t === 0 || t === Z)), $ = Q.length > 0 && /* @__PURE__ */ n("div", {
289
291
  className: c.stopLabels,
290
292
  "data-slider-stop-labels": !0,
291
293
  "aria-hidden": "true",
292
- children: Q.map(({ stop: e, i: n }) => /* @__PURE__ */ t("span", {
294
+ children: Q.map(({ stop: e, i: t }) => /* @__PURE__ */ n("span", {
293
295
  className: c.stopLabel,
294
296
  "data-slider-stop-label": !0,
295
- "data-selected": b.some((t) => t.value === e.value) ? "true" : void 0,
296
- "data-edge": n === 0 ? "start" : n === Z ? "end" : void 0,
297
+ "data-selected": y.some((t) => t.value === e.value) ? "true" : void 0,
298
+ "data-edge": t === 0 ? "start" : t === Z ? "end" : void 0,
297
299
  style: { left: `${L(e.value) * 100}%` },
298
300
  children: e.label
299
301
  }, e.value))
300
- });
301
- return /* @__PURE__ */ n("div", {
302
- className: [
303
- c.root,
304
- J && c.slim,
305
- $ && c.withStopLabels,
306
- D
307
- ].filter(Boolean).join(" "),
302
+ }), te = [
303
+ c.root,
304
+ J && c.slim,
305
+ $ && c.withStopLabels,
306
+ D
307
+ ].filter(Boolean).join(" ");
308
+ return /* @__PURE__ */ r("div", {
309
+ className: te,
308
310
  style: Object.keys(Y).length > 0 ? Y : void 0,
309
- children: [/* @__PURE__ */ n("div", {
311
+ children: [/* @__PURE__ */ r("div", {
310
312
  className: c.row,
311
- children: [/* @__PURE__ */ n("div", {
313
+ children: [/* @__PURE__ */ r("div", {
312
314
  className: c.track,
313
315
  ref: P,
314
316
  onPointerDown: W,
315
317
  children: [
316
- e.renderTrack && /* @__PURE__ */ t("div", {
318
+ e.renderTrack && /* @__PURE__ */ n("div", {
317
319
  className: c.trackInner,
318
320
  children: e.renderTrack({
319
321
  trackWidth: P.current?.getBoundingClientRect().width ?? 0,
320
322
  valueToFraction: L
321
323
  })
322
324
  }),
323
- (e.showStops ?? !0) && k.length > 0 && /* @__PURE__ */ t("div", {
325
+ (e.showStops ?? !0) && k.length > 0 && /* @__PURE__ */ n("div", {
324
326
  className: c.ticks,
325
327
  "data-slider-ticks": !0,
326
328
  "aria-hidden": "true",
327
329
  children: k.map((e) => {
328
- let n = L(e);
329
- return /* @__PURE__ */ t("span", {
330
+ let t = L(e);
331
+ return /* @__PURE__ */ n("span", {
330
332
  className: c.tick,
331
333
  "data-slider-tick": !0,
332
- "data-fraction": String(n),
333
- style: { left: `${n * 100}%` }
334
+ "data-fraction": String(t),
335
+ style: { left: `${t * 100}%` }
334
336
  }, e);
335
337
  })
336
338
  }),
337
339
  $,
338
- b.map((e, n) => {
340
+ y.map((e, t) => {
339
341
  let r = e.shape === "notched", i = typeof e.shape == "object" && e.shape !== null ? e.shape.render : null, a = `${c.thumb}${r ? ` ${c.notched}` : ""}`;
340
- return /* @__PURE__ */ t("div", {
342
+ return /* @__PURE__ */ n("div", {
341
343
  role: "slider",
342
344
  tabIndex: 0,
343
345
  "aria-orientation": "horizontal",
@@ -345,37 +347,37 @@ function b(e) {
345
347
  "aria-valuemax": N,
346
348
  "aria-valuenow": e.value,
347
349
  "aria-valuetext": e.valueText,
348
- "aria-label": [ee, e.label].filter(Boolean).join(" ") || void 0,
350
+ "aria-label": [E, e.label].filter(Boolean).join(" ") || void 0,
349
351
  className: a,
350
352
  style: { left: `${L(e.value) * 100}%` },
351
- onPointerDown: H(n),
352
- onKeyDown: G(n),
353
- onContextMenu: U(n),
353
+ onPointerDown: H(t),
354
+ onKeyDown: G(t),
355
+ onContextMenu: U(t),
354
356
  children: i ? i({
355
357
  width: 14,
356
358
  height: 24,
357
359
  isActive: !1
358
360
  }) : e.label ?? ""
359
- }, n);
361
+ }, t);
360
362
  })
361
363
  ]
362
- }), K === "inline-after" && /* @__PURE__ */ t("span", {
364
+ }), K === "inline-after" && /* @__PURE__ */ n("span", {
363
365
  "data-readout": "inline",
364
366
  className: c.readoutInline,
365
- children: b.map((e, t) => /* @__PURE__ */ n("span", { children: [t > 0 ? " / " : "", q ? q(e, t) : y(e)] }, t))
367
+ children: y.map((e, t) => /* @__PURE__ */ r("span", { children: [t > 0 ? " / " : "", q ? q(e, t) : v(e)] }, t))
366
368
  })]
367
- }), K === "below-thumb" && /* @__PURE__ */ t("div", {
369
+ }), K === "below-thumb" && /* @__PURE__ */ n("div", {
368
370
  className: c.readoutsBelow,
369
- children: b.map((e, n) => /* @__PURE__ */ t("span", {
371
+ children: y.map((e, t) => /* @__PURE__ */ n("span", {
370
372
  "data-readout": "below",
371
373
  className: c.readoutBelow,
372
374
  style: { left: `${L(e.value) * 100}%` },
373
- children: q ? q(e, n) : y(e)
374
- }, n))
375
+ children: q ? q(e, t) : v(e)
376
+ }, t))
375
377
  })]
376
378
  });
377
379
  }
378
380
  //#endregion
379
- export { b as t };
381
+ export { y as t };
380
382
 
381
- //# sourceMappingURL=Slider-CIIrqiFS.js.map
383
+ //# sourceMappingURL=Slider-CFwQYQ10.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider-CFwQYQ10.js","names":["s","formatNumber","Slider_module_default","quantize","step","v","min","clamp","lo","hi","STOP_SNAP_PX","NO_CAPTURE","usableStops","stops","byValue","stop","s","max","seen","a","b","attract","f","toFraction","best","bestGap","tolerance","gap","stepStops","direction","first","count","i","defaultStep","clampOrdered","index","thumbs","resolveBounds","thumb","fallbackMin","fallbackMax","tuple","ctx","defaultReadout","Slider","props","stopList","useMemo","even","strict","trackRef","useRef","dragBufferRef","sessionRef","valueToFraction","useCallback","gaps","x","fractionToValue","c","valueAt","q","trackWidth","beginThumbDrag","buf","seed","t","droppedOff","openPointerSession","origin","down","track","buffer","rect","ev","bLo","bHi","constraint","bandHeight","onInput","next","onChange","beginShiftAllDrag","startValues","dxFraction","anchorX","starts","df","dValue","allowedNeg","allowedPos","onThumbPointerDown","e","onThumbContextMenu","onTrackPointerDown","wantsMove","created","moved","onThumbKeyDown","stepSize","delta","stopDelta","snapTo","placement","renderReadout","slim","density","rootVars","trackHeight","labelMode","lastStop","labeledStops","stopLabelRow","rootClass","className","isNotched","customRender","cls","ariaLabel"],"sources":["../../src/components/Slider/Slider.module.css","../../src/components/Slider/Slider.tsx"],"sourcesContent":[".root {\n position: relative;\n user-select: none;\n -webkit-user-select: none;\n touch-action: none;\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-4);\n}\n\n.track {\n position: relative;\n flex: 1;\n min-width: 0;\n height: var(--rp-track-height, 24px);\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n cursor: var(--rp-track-cursor, crosshair);\n /* No `overflow: hidden` here — thumbs at extreme values would get\n * clipped at the track edges. The gradient/track-paint clip is\n * applied to `.trackInner` instead, which lets thumbs spill freely. */\n}\n\n.trackInner {\n position: absolute;\n inset: 0;\n border-radius: var(--wzl-radius-sm);\n overflow: hidden;\n}\n\n.thumb {\n position: absolute;\n /* Thumb extends 2px above + below the track for grabbability + visual\n * weight. Track itself stays its natural height; the thumb just spills. */\n top: -2px;\n bottom: -2px;\n width: var(--rp-thumb-size, 14px);\n margin-left: calc(var(--rp-thumb-size, 14px) / -2);\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--wzl-fg-muted) 70%, transparent);\n border: 1px solid var(--wzl-border-strong);\n border-radius: var(--wzl-radius-sm);\n cursor: ew-resize;\n /* Frosted-glass over the (often colorful) track. Cheap on modern GPUs;\n * gracefully degrades to just the partial-alpha background on engines\n * without backdrop-filter support. */\n backdrop-filter: blur(3px);\n -webkit-backdrop-filter: blur(3px);\n /* Subtle raise — sells the \"thumb is on top of the track\" hierarchy. */\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n font: var(--wzl-font-weight-medium) var(--wzl-font-size-xs)/var(--wzl-leading-tight) ui-sans-serif, system-ui, sans-serif;\n font-variant-numeric: tabular-nums;\n color: var(--wzl-fg-inverse);\n /* White halo so labels stay legible over wildly varying gradient\n * backgrounds (e.g. labels 'T' / 'P' / 'B' over teal, hue 200° over\n * yellow-green, etc.). */\n text-shadow: 0 0 2px rgba(255, 255, 255, 0.7);\n}\n\n/* A slim slider's thumb is round and flush with the track, matching the\n property rows. The default thumb keeps its 2px spill and rounded-rect face. */\n.slim .thumb {\n top: 50%;\n bottom: auto;\n height: var(--rp-thumb-size);\n transform: translateY(-50%);\n border-radius: 50%;\n border: none;\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n box-shadow: none;\n background: color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-thumb-mix, 70%), transparent);\n}\n\n.thumb:focus-visible {\n outline: 2px solid var(--wzl-accent);\n outline-offset: 1px;\n}\n\n.thumbActive {\n /* Visual marker for the dragging/focused thumb; subclass-overridable. */\n z-index: 1;\n}\n\n/* The row holds absolutely-positioned labels, so it has to state its own\n height: the text's, not the thumb's. It said 14px — the default thumb's\n size — which left 4px of dead space under the labels at either density. */\n.readoutsBelow {\n position: relative;\n height: calc(var(--wzl-font-size-xs) * var(--wzl-leading-tight));\n margin-top: var(--wzl-space-2);\n}\n\n.readoutBelow {\n position: absolute;\n transform: translateX(-50%);\n font: var(--wzl-font-weight-medium) var(--wzl-font-size-xs)/var(--wzl-leading-tight) ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n color: var(--wzl-fg-muted);\n white-space: nowrap;\n}\n\n.readoutInline {\n display: inline-block;\n margin-left: var(--wzl-space-4);\n font: var(--wzl-font-weight-medium) var(--wzl-font-size-sm)/var(--wzl-leading-tight) ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n color: var(--wzl-fg-muted);\n vertical-align: middle;\n}\n\n.notched {\n background: var(--thumb-svg, none);\n background-size: 100% 100%;\n background-repeat: no-repeat;\n background-color: transparent;\n border: none;\n /* Notched thumbs need to disable the .thumb defaults that paint to\n * the bounding box: backdrop-filter and box-shadow both ignore the\n * SVG's polygon/notch and would render through the notch cutout.\n * Use filter: drop-shadow instead — it traces the actual rendered\n * alpha (i.e. the polygon shape including the cut). */\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n box-shadow: none;\n filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.25));\n /* Default notched SVG (down-pointing pentagon, matches the perceptual-color experiment). */\n --thumb-svg: url(\"data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 30' preserveAspectRatio='none'%3E%3Cpolygon points='0,0 2.52,0 7,10.3 11.48,0 14,0 14,30 0,30' fill='rgba(255,255,255,0.62)' stroke='rgba(0,0,0,0.55)' stroke-width='0.75' stroke-linejoin='miter'/%3E%3C/svg%3E\");\n}\n\n.ticks {\n position: absolute;\n inset: 0;\n /* A mark must never eat the track click that adds a thumb, nor the\n * pointerdown that starts a drag through it. */\n pointer-events: none;\n}\n\n.tick {\n position: absolute;\n top: var(--rp-tick-inset, 20%);\n bottom: var(--rp-tick-inset, 20%);\n width: var(--rp-tick-width, 1px);\n margin-left: calc(var(--rp-tick-width, 1px) / -2);\n border-radius: var(--wzl-radius-pill);\n background: var(--rp-tick-color, var(--wzl-border-strong));\n}\n\n/* The labels hang below the track out of flow, so the row reserves their\n * height and anything after it — the below-thumb readouts — clears them.\n * Padding, not margin: a margin would collapse into whatever follows. */\n.withStopLabels .row {\n padding-bottom: calc(var(--wzl-space-xs) + var(--wzl-font-size-xs) * var(--wzl-leading-tight));\n}\n\n.stopLabels {\n position: absolute;\n left: 0;\n right: 0;\n top: calc(100% + var(--wzl-space-xs));\n height: calc(var(--wzl-font-size-xs) * var(--wzl-leading-tight));\n pointer-events: none;\n}\n\n.stopLabel {\n position: absolute;\n transform: translateX(-50%);\n white-space: nowrap;\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size-xs);\n line-height: var(--wzl-leading-tight);\n font-variant-numeric: tabular-nums;\n color: var(--wzl-fg-subtle);\n}\n\n/* The end labels are pinned inside the track rather than centered on it, so a\n * wide one can't spill past the control and misalign whatever sits beside it. */\n.stopLabel[data-edge=\"start\"] {\n transform: none;\n}\n\n.stopLabel[data-edge=\"end\"] {\n transform: translateX(-100%);\n}\n\n.stopLabel[data-selected] {\n color: var(--wzl-fg);\n font-weight: var(--wzl-font-weight-medium);\n}\n","import { useCallback, useEffect, useMemo, useRef, type CSSProperties, type KeyboardEvent as ReactKeyboardEvent, type MouseEvent as ReactMouseEvent, type PointerEvent as ReactPointerEvent, type ReactElement, type ReactNode } from 'react';\nimport { openPointerSession, type PointerSession } from '@weasel-js/core';\nimport s from './Slider.module.css';\nimport { formatNumber } from '../../format/number';\n\n/**\n * Passed to a custom thumb renderer: the thumb box in CSS px, and whether\n * this thumb is the one being dragged.\n */\nexport type ThumbRenderCtx = {\n width: number;\n height: number;\n isActive: boolean;\n};\n\n/**\n * A thumb's appearance — one of the two built-in shapes, or a custom\n * renderer.\n */\nexport type ThumbShape =\n | 'round'\n | 'notched'\n | { render: (ctx: ThumbRenderCtx) => ReactNode };\n\n/**\n * One handle on a {@link Slider}. `bounds` narrows the range this particular\n * thumb may move within, either fixed or computed from the current thumb\n * list.\n */\nexport type Thumb = {\n value: number;\n label?: string;\n shape?: ThumbShape;\n bounds?: [number, number] | ((ctx: BoundsCtx) => [number, number]);\n /**\n * Spoken form of `value`, published as `aria-valuetext`. Required by ARIA\n * whenever `value` is not the quantity the user is choosing — an index into\n * a value list, a log-scaled position — since `aria-valuenow` alone then\n * announces a number that means nothing.\n */\n valueText?: string;\n};\n\n/**\n * Passed to a thumb's `bounds` function: the full thumb list and this thumb's\n * index in it, so a bound can be expressed relative to its neighbors.\n */\nexport type BoundsCtx = {\n thumbs: readonly Thumb[];\n index: number;\n};\n\n/**\n * Passed to `renderTrack`: the track's width in CSS px and a mapping from a\n * slider value to its 0..1 position along the track.\n */\nexport type TrackCtx = {\n trackWidth: number;\n valueToFraction: (v: number) => number;\n};\n\n/** A {@link Slider} stop that carries a label, drawn under the track at the stop. */\nexport type SliderStop = {\n value: number;\n label?: ReactNode;\n};\n\n/**\n * Props for {@link Slider}.\n *\n * `onInput` fires continuously through a drag; `onChange` fires once when it\n * ends and is the one to write to history.\n *\n * `stops` are attractors: a drag that passes within a few pixels of one lands\n * on it, and the arrow keys move stop to stop. `step` still quantizes the\n * values between them. Each one is drawn on the track as a mark; pass\n * `showStops: false` for a track whose own paint already reads as the stops.\n * A stop given as a {@link SliderStop} with a `label` gets that label drawn\n * under it; `stopLabels` narrows the row to the two ends or turns it off.\n *\n * `snap: 'strict'` makes every stop a detent the thumb must rest on: drags and\n * track presses land on the nearest one, and `step` no longer applies.\n * `spacing: 'even'` places the stops at equal intervals, runs the track from\n * the first stop to the last, and maps values linearly within each gap — so a\n * geometric list (0.25/0.5/1/2/4) gets usable room for every stop instead of\n * four crowded into the first fifth. Both need stops; with fewer than two,\n * `'even'` falls back to linear.\n *\n * `trackClick: 'move-nearest'` makes a press on bare track send the closest\n * thumb there, focus it, and continue as a drag. It is the default for a\n * single thumb. With several it defaults to `'none'`, because on a\n * multi-thumb editor a stray click would yank a stop the user was not aiming\n * at; `onAddThumb`, where it is set, keeps the track press.\n *\n * `constraint: 'ordered'` keeps thumbs from crossing each other. Supplying\n * `onAddThumb` makes a click on empty track create a thumb, and supplying\n * `onRemoveThumb` lets a right-click or a drag off the track remove one —\n * both callbacks can decline by returning `null`/`false`. `allowShiftAll`\n * makes shift-drag translate every thumb together.\n */\nexport type SliderProps<T extends Thumb = Thumb> = {\n thumbs: readonly T[];\n onInput: (next: T[]) => void;\n onChange?: (next: T[]) => void;\n min: number;\n max: number;\n step?: number;\n stops?: readonly (number | SliderStop)[];\n showStops?: boolean;\n stopLabels?: 'all' | 'ends' | 'none';\n snap?: 'magnetic' | 'strict';\n spacing?: 'linear' | 'even';\n trackClick?: 'none' | 'move-nearest';\n constraint?: 'free' | 'ordered';\n onAddThumb?: (atValue: number) => T | null;\n onRemoveThumb?: (index: number) => boolean;\n allowShiftAll?: boolean;\n renderTrack?: (ctx: TrackCtx) => ReactNode;\n trackHeight?: number;\n /** `'slim'` drives the track and thumb from the kit's slider tokens, so a\n * Slider matches the property rows. `trackHeight` still wins if given. */\n density?: 'default' | 'slim';\n renderReadout?: (thumb: T, index: number) => ReactNode;\n readoutPlacement?: 'none' | 'inline-after' | 'below-thumb';\n ariaLabel?: string;\n className?: string;\n};\n\nfunction quantize(v: number, step: number | undefined, min: number): number {\n if (step === undefined || step <= 0) return v;\n return Math.round((v - min) / step) * step + min;\n}\n\nfunction clamp(v: number, lo: number, hi: number): number {\n return Math.max(lo, Math.min(hi, v));\n}\n\n/** How close a drag has to come to a stop, in track pixels, to land on it. */\nconst STOP_SNAP_PX = 8;\n\n/** A custom `ThumbShape.render` may put interactive content inside the thumb,\n * and capture would retarget pointerup and kill the click on it. */\nconst NO_CAPTURE = { capture: false } as const;\n\n/** The stops that are actually reachable: inside the range, deduped, ascending.\n * A duplicate keeps the first label given for its value. */\nfunction usableStops(stops: SliderProps['stops'], min: number, max: number): SliderStop[] {\n if (!stops || stops.length === 0) return [];\n const byValue = new Map<number, SliderStop>();\n for (const stop of stops) {\n const s = typeof stop === 'number' ? { value: stop } : stop;\n if (s.value < min || s.value > max) continue;\n const seen = byValue.get(s.value);\n if (!seen || (seen.label === undefined && s.label !== undefined)) byValue.set(s.value, s);\n }\n return [...byValue.values()].sort((a, b) => a.value - b.value);\n}\n\n/** The stop nearest `v` along the track, or `v` itself when none lies within\n * `tolerance` (a track fraction). Measured on the track rather than in value\n * units so evenly spaced stops attract over the same distance. */\nfunction attract(v: number, stops: number[], tolerance: number, toFraction: (v: number) => number): number {\n const f = toFraction(v);\n let best = v;\n let bestGap = tolerance;\n for (const stop of stops) {\n const gap = Math.abs(toFraction(stop) - f);\n if (gap <= bestGap) {\n best = stop;\n bestGap = gap;\n }\n }\n return best;\n}\n\n/** The stop `count` places past `v` in `direction`, saturating at either end. */\nfunction stepStops(stops: number[], v: number, direction: 1 | -1, count: number): number {\n if (direction > 0) {\n const first = stops.findIndex(stop => stop > v);\n if (first === -1) return stops[stops.length - 1];\n return stops[Math.min(stops.length - 1, first + count - 1)];\n }\n let first = -1;\n for (let i = stops.length - 1; i >= 0; i--) {\n if (stops[i] < v) {\n first = i;\n break;\n }\n }\n if (first === -1) return stops[0];\n return stops[Math.max(0, first - (count - 1))];\n}\n\nfunction defaultStep(step: number | undefined, min: number, max: number): number {\n if (step !== undefined && step > 0) return step;\n return (max - min) / 100;\n}\n\n/** Keep a thumb inside its neighbors when `constraint` is `'ordered'`. */\nfunction clampOrdered(\n v: number,\n thumbs: readonly Thumb[],\n index: number,\n min: number,\n max: number,\n step: number | undefined,\n): number {\n const gap = step !== undefined && step > 0 ? step : (max - min) / 1000;\n const lower = index > 0 ? thumbs[index - 1].value + gap : min;\n const upper = index < thumbs.length - 1 ? thumbs[index + 1].value - gap : max;\n return clamp(v, lower, upper);\n}\n\nfunction resolveBounds(thumb: Thumb, ctx: BoundsCtx, fallbackMin: number, fallbackMax: number): [number, number] {\n if (!thumb.bounds) return [fallbackMin, fallbackMax];\n const tuple = typeof thumb.bounds === 'function' ? thumb.bounds(ctx) : thumb.bounds;\n return [tuple[0], tuple[1]];\n}\n\nfunction defaultReadout(thumb: Thumb): string {\n return formatNumber(thumb.value, { minimumFractionDigits: 3, maximumFractionDigits: 3 });\n}\n\n/**\n * Multi-thumb slider over a shared track. The thumb list is fully controlled:\n * every change, live or committed, arrives as a whole new array.\n *\n * Thumbs are draggable, and arrow/Home/End move the focused thumb — those\n * keystrokes fire `onInput` and `onChange` together, since there is no\n * in-flight state to buffer.\n */\nexport function Slider<T extends Thumb = Thumb>(props: SliderProps<T>): ReactElement {\n const { thumbs, onInput, onChange, step, constraint, trackHeight, density, ariaLabel, className } = props;\n\n const stopList = useMemo(() => usableStops(props.stops, props.min, props.max), [props.stops, props.min, props.max]);\n const stops = useMemo(() => stopList.map(stop => stop.value), [stopList]);\n const even = props.spacing === 'even' && stops.length >= 2;\n const strict = props.snap === 'strict' && stops.length > 0;\n const min = even ? stops[0] : props.min;\n const max = even ? stops[stops.length - 1] : props.max;\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n // In-flight thumb buffer during a drag; null when not dragging.\n const dragBufferRef = useRef<T[] | null>(null);\n const sessionRef = useRef<PointerSession | null>(null);\n\n useEffect(() => () => { sessionRef.current?.cancel(); }, []);\n\n const valueToFraction = useCallback(\n (v: number): number => {\n if (max === min) return 0;\n if (!even) return clamp((v - min) / (max - min), 0, 1);\n const gaps = stops.length - 1;\n const x = clamp(v, min, max);\n let i = 0;\n while (i < gaps - 1 && x > stops[i + 1]) i++;\n return (i + (x - stops[i]) / (stops[i + 1] - stops[i])) / gaps;\n },\n [min, max, even, stops],\n );\n\n const fractionToValue = useCallback(\n (f: number): number => {\n const c = clamp(f, 0, 1);\n if (!even) return min + c * (max - min);\n const gaps = stops.length - 1;\n const i = Math.min(gaps - 1, Math.floor(c * gaps));\n return stops[i] + (c * gaps - i) * (stops[i + 1] - stops[i]);\n },\n [min, max, even, stops],\n );\n\n /** The value a pointer at track fraction `f` chooses, before bounds. */\n const valueAt = useCallback(\n (f: number, trackWidth: number): number => {\n const v = fractionToValue(f);\n if (strict) return attract(v, stops, Infinity, valueToFraction);\n const q = clamp(quantize(v, step, min), min, max);\n return stops.length > 0 ? attract(q, stops, STOP_SNAP_PX / trackWidth, valueToFraction) : q;\n },\n [fractionToValue, valueToFraction, strict, stops, step, min, max],\n );\n\n // `seed` replaces the thumb list the drag starts from. A track press moves a\n // thumb before the drag begins, and without seeding, a release with no\n // movement would commit the stale buffer and undo that move.\n const beginThumbDrag = useCallback(\n (origin: Element, down: ReactPointerEvent, index: number, seed?: readonly T[]) => {\n sessionRef.current?.cancel();\n const buf: T[] = (seed ?? thumbs).map(t => ({ ...t }));\n dragBufferRef.current = buf;\n let droppedOff = false;\n\n const onMove = (ev: PointerEvent) => {\n const track = trackRef.current;\n const buffer = dragBufferRef.current;\n if (!track || !buffer) return;\n const rect = track.getBoundingClientRect();\n let v = valueAt((ev.clientX - rect.left) / rect.width, rect.width);\n\n const [bLo, bHi] = resolveBounds(buffer[index], { thumbs: buffer, index }, min, max);\n v = clamp(v, bLo, bHi);\n\n if (constraint === 'ordered') v = clampOrdered(v, buffer, index, min, max, step);\n\n // Drop-off detection: pointer exits the track vertically by more than trackHeight.\n const bandHeight = rect.height;\n if (props.onRemoveThumb) {\n if (ev.clientY < rect.top - bandHeight || ev.clientY > rect.bottom + bandHeight) {\n droppedOff = true;\n } else {\n droppedOff = false;\n }\n }\n\n buffer[index] = { ...buffer[index], value: v };\n onInput(buffer.map(t => ({ ...t })));\n };\n\n // A drag that ends without a release — cancelled pointer, lost capture,\n // an unmount — drops the buffer without committing.\n const onCancel = () => {\n sessionRef.current = null;\n dragBufferRef.current = null;\n };\n\n const onEnd = () => {\n sessionRef.current = null;\n const buffer = dragBufferRef.current;\n dragBufferRef.current = null;\n if (!buffer) return;\n\n if (droppedOff && props.onRemoveThumb) {\n const accepted = props.onRemoveThumb(index);\n if (accepted) {\n const next = buffer.filter((_, i) => i !== index).map(t => ({ ...t })) as T[];\n onInput(next);\n onChange?.(next);\n return;\n }\n }\n\n onChange?.(buffer.map(t => ({ ...t })));\n };\n\n sessionRef.current = openPointerSession(origin, down, { onMove, onEnd, onCancel }, NO_CAPTURE);\n },\n [thumbs, onInput, onChange, valueAt, min, max, step, constraint, props],\n );\n\n const beginShiftAllDrag = useCallback(\n (origin: Element, down: ReactPointerEvent, anchorX: number) => {\n sessionRef.current?.cancel();\n const buf: T[] = thumbs.map(t => ({ ...t }));\n const startValues = buf.map(t => t.value);\n dragBufferRef.current = buf;\n\n const onMove = (ev: PointerEvent) => {\n const track = trackRef.current;\n const buffer = dragBufferRef.current;\n if (!track || !buffer) return;\n const rect = track.getBoundingClientRect();\n const dxFraction = (ev.clientX - anchorX) / rect.width;\n // Evenly spaced gaps span different amounts of value, so equal value\n // offsets would pull the thumbs apart; move them by track distance.\n if (even) {\n const starts = startValues.map(valueToFraction);\n const df = clamp(dxFraction, -Math.min(...starts), 1 - Math.max(...starts));\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = { ...buffer[i], value: fractionToValue(starts[i] + df) };\n }\n onInput(buffer.map(t => ({ ...t })));\n return;\n }\n let dValue = dxFraction * (max - min);\n dValue = quantize(dValue, step, 0);\n\n // Clamp delta so no thumb leaves [min, max] (per-thumb bounds intentionally\n // not enforced — matches the experiment's hue-band shift-translate semantics).\n let allowedNeg = -Infinity;\n let allowedPos = Infinity;\n for (let i = 0; i < startValues.length; i++) {\n allowedNeg = Math.max(allowedNeg, min - startValues[i]);\n allowedPos = Math.min(allowedPos, max - startValues[i]);\n }\n dValue = clamp(dValue, allowedNeg, allowedPos);\n\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = { ...buffer[i], value: clamp(startValues[i] + dValue, min, max) };\n }\n onInput(buffer.map(t => ({ ...t })));\n };\n\n const onCancel = () => {\n sessionRef.current = null;\n dragBufferRef.current = null;\n };\n\n const onEnd = () => {\n sessionRef.current = null;\n const buffer = dragBufferRef.current;\n dragBufferRef.current = null;\n if (buffer) onChange?.(buffer.map(t => ({ ...t })));\n };\n\n sessionRef.current = openPointerSession(origin, down, { onMove, onEnd, onCancel }, NO_CAPTURE);\n },\n [thumbs, onInput, onChange, min, max, step, even, valueToFraction, fractionToValue],\n );\n\n const onThumbPointerDown = (index: number) => (e: ReactPointerEvent) => {\n // Only bail on explicit non-primary buttons (button > 0). jsdom's PointerEvent\n // leaves `button` undefined; treat that as primary so tests can drive drags.\n if (typeof e.button === 'number' && e.button > 0) return;\n // preventDefault below suppresses the focus the press would otherwise\n // give the thumb, and the arrow keys are on the thumb.\n (e.currentTarget as HTMLElement).focus?.();\n e.preventDefault();\n e.stopPropagation();\n const origin = e.currentTarget as HTMLElement;\n if (e.shiftKey && props.allowShiftAll) {\n beginShiftAllDrag(origin, e, e.clientX);\n } else {\n beginThumbDrag(origin, e, index);\n }\n };\n\n const onThumbContextMenu = (index: number) => (e: ReactMouseEvent) => {\n if (!props.onRemoveThumb) return;\n e.preventDefault();\n const accepted = props.onRemoveThumb(index);\n if (!accepted) return;\n const next = thumbs.filter((_, i) => i !== index).map(t => ({ ...t })) as T[];\n onInput(next);\n onChange?.(next);\n };\n\n const onTrackPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (typeof e.button === 'number' && e.button > 0) return;\n const trackClick = props.trackClick ?? (thumbs.length === 1 ? 'move-nearest' : 'none');\n const wantsMove = trackClick === 'move-nearest' && thumbs.length > 0;\n if (!props.onAddThumb && !wantsMove) return;\n // If the event originated on a thumb, the thumb's own handler ran first; this is a track click.\n if ((e.target as HTMLElement).closest(`.${s.thumb}`)) return;\n e.preventDefault();\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const v = valueAt((e.clientX - rect.left) / rect.width, rect.width);\n\n if (props.onAddThumb) {\n const created = props.onAddThumb(v);\n if (!created) return;\n const next = [...thumbs.map(t => ({ ...t })), created] as T[];\n onInput(next);\n onChange?.(next);\n return;\n }\n\n let index = 0;\n for (let i = 1; i < thumbs.length; i++) {\n if (Math.abs(thumbs[i].value - v) < Math.abs(thumbs[index].value - v)) index = i;\n }\n const next = thumbs.map(t => ({ ...t })) as T[];\n const [bLo, bHi] = resolveBounds(next[index], { thumbs: next, index }, min, max);\n let moved = clamp(v, bLo, bHi);\n if (constraint === 'ordered') moved = clampOrdered(moved, next, index, min, max, step);\n next[index] = { ...next[index], value: moved };\n onInput(next);\n // preventDefault above suppresses the focus the press would give; the arrow keys are on the thumb.\n track.querySelectorAll<HTMLElement>(`.${s.thumb}`)[index]?.focus();\n beginThumbDrag(track, e, index, next);\n };\n\n const onThumbKeyDown = (index: number) => (e: ReactKeyboardEvent) => {\n const stepSize = defaultStep(step, min, max);\n let delta = 0;\n // With stops, a keystroke moves by whole stops rather than by value.\n let stopDelta = 0;\n let snapTo: 'home' | 'end' | null = null;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = e.shiftKey ? stepSize * 10 : stepSize;\n stopDelta = e.shiftKey ? 10 : 1;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = e.shiftKey ? -stepSize * 10 : -stepSize;\n stopDelta = e.shiftKey ? -10 : -1;\n break;\n case 'PageUp':\n delta = stepSize * 10;\n stopDelta = 10;\n break;\n case 'PageDown':\n delta = -stepSize * 10;\n stopDelta = -10;\n break;\n case 'Home':\n snapTo = 'home';\n break;\n case 'End':\n snapTo = 'end';\n break;\n default:\n return;\n }\n\n e.preventDefault();\n const next = thumbs.map(t => ({ ...t }));\n const [bLo, bHi] = resolveBounds(next[index], { thumbs: next, index }, min, max);\n const lo = Math.max(min, bLo);\n const hi = Math.min(max, bHi);\n let v: number;\n if (snapTo === 'home') v = lo;\n else if (snapTo === 'end') v = hi;\n else if (stops.length > 0) {\n v = stepStops(stops, next[index].value, stopDelta > 0 ? 1 : -1, Math.abs(stopDelta));\n } else {\n v = quantize(next[index].value + delta, step, min);\n }\n v = clamp(v, lo, hi);\n if (constraint === 'ordered') v = clampOrdered(v, next, index, lo, hi, step);\n next[index] = { ...next[index], value: v };\n onInput(next);\n onChange?.(next);\n };\n\n const placement = props.readoutPlacement ?? 'none';\n const renderReadout = props.renderReadout;\n\n const slim = density === 'slim';\n const rootVars: Record<string, string> = {};\n if (slim) {\n rootVars['--rp-track-height'] = 'var(--wzl-slider-track-h)';\n rootVars['--rp-thumb-size'] = 'var(--wzl-slider-thumb-size)';\n }\n // An explicit trackHeight wins: a caller who named a number meant it.\n if (trackHeight !== undefined) rootVars['--rp-track-height'] = `${trackHeight}px`;\n\n const labelMode = props.stopLabels ?? 'all';\n const lastStop = stopList.length - 1;\n const labeledStops = labelMode === 'none'\n ? []\n : stopList\n .map((stop, i) => ({ stop, i }))\n .filter(({ stop, i }) => stop.label !== undefined && (labelMode === 'all' || i === 0 || i === lastStop));\n // Inside the track so it shares the track's width, not the row's — an inline\n // readout beside the track would otherwise shift every label off its stop.\n const stopLabelRow = labeledStops.length > 0 && (\n <div className={s.stopLabels} data-slider-stop-labels aria-hidden=\"true\">\n {labeledStops.map(({ stop, i }) => (\n <span\n key={stop.value}\n className={s.stopLabel}\n data-slider-stop-label\n data-selected={thumbs.some(t => t.value === stop.value) ? 'true' : undefined}\n data-edge={i === 0 ? 'start' : i === lastStop ? 'end' : undefined}\n style={{ left: `${valueToFraction(stop.value) * 100}%` }}\n >\n {stop.label}\n </span>\n ))}\n </div>\n );\n const rootClass = [s.root, slim && s.slim, stopLabelRow && s.withStopLabels, className].filter(Boolean).join(' ');\n\n return (\n <div\n className={rootClass}\n style={Object.keys(rootVars).length > 0 ? (rootVars as CSSProperties) : undefined}\n >\n <div className={s.row}>\n <div className={s.track} ref={trackRef} onPointerDown={onTrackPointerDown}>\n {props.renderTrack && (\n <div className={s.trackInner}>\n {props.renderTrack({\n trackWidth: trackRef.current?.getBoundingClientRect().width ?? 0,\n valueToFraction,\n })}\n </div>\n )}\n {(props.showStops ?? true) && stops.length > 0 && (\n <div className={s.ticks} data-slider-ticks aria-hidden=\"true\">\n {stops.map(v => {\n const f = valueToFraction(v);\n return (\n <span\n key={v}\n className={s.tick}\n data-slider-tick\n data-fraction={String(f)}\n style={{ left: `${f * 100}%` }}\n />\n );\n })}\n </div>\n )}\n {stopLabelRow}\n {thumbs.map((thumb, i) => {\n const isNotched = thumb.shape === 'notched';\n const customRender = typeof thumb.shape === 'object' && thumb.shape !== null ? thumb.shape.render : null;\n const cls = `${s.thumb}${isNotched ? ` ${s.notched}` : ''}`;\n return (\n <div\n key={i}\n role=\"slider\"\n tabIndex={0}\n aria-orientation=\"horizontal\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={thumb.value}\n aria-valuetext={thumb.valueText}\n aria-label={[ariaLabel, thumb.label].filter(Boolean).join(' ') || undefined}\n className={cls}\n style={{ left: `${valueToFraction(thumb.value) * 100}%` }}\n onPointerDown={onThumbPointerDown(i)}\n onKeyDown={onThumbKeyDown(i)}\n onContextMenu={onThumbContextMenu(i)}\n >\n {customRender ? customRender({ width: 14, height: 24, isActive: false }) : (thumb.label ?? '')}\n </div>\n );\n })}\n </div>\n {placement === 'inline-after' && (\n <span data-readout=\"inline\" className={s.readoutInline}>\n {thumbs.map((t, i) => (\n <span key={i}>{i > 0 ? ' / ' : ''}{renderReadout ? renderReadout(t, i) : defaultReadout(t)}</span>\n ))}\n </span>\n )}\n </div>\n {placement === 'below-thumb' && (\n <div className={s.readoutsBelow}>\n {thumbs.map((t, i) => (\n <span\n key={i}\n data-readout=\"below\"\n className={s.readoutBelow}\n style={{ left: `${valueToFraction(t.value) * 100}%` }}\n >\n {renderReadout ? renderReadout(t, i) : defaultReadout(t)}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -17,14 +17,14 @@ function n(n) {
17
17
  });
18
18
  }
19
19
  function r(n) {
20
- let { title: r, muted: i, children: a, className: o } = n;
20
+ let { title: r, muted: i, children: a, className: o } = n, s = [
21
+ t.item,
22
+ i && t.muted,
23
+ r !== void 0 && t.hasTitle,
24
+ o
25
+ ].filter(Boolean).join(" ");
21
26
  return /* @__PURE__ */ e("span", {
22
- className: [
23
- t.item,
24
- i && t.muted,
25
- r !== void 0 && t.hasTitle,
26
- o
27
- ].filter(Boolean).join(" "),
27
+ className: s,
28
28
  title: r,
29
29
  children: a
30
30
  });
@@ -38,4 +38,4 @@ function i() {
38
38
  //#endregion
39
39
  export { r as n, i as r, n as t };
40
40
 
41
- //# sourceMappingURL=StatusBar-B4L15DSm.js.map
41
+ //# sourceMappingURL=StatusBar-DzoPDY4k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBar-DzoPDY4k.js","names":["s","StatusBar_module_default","StatusBar","props","className","ariaLabel","StatusBarItem","cls","muted","title","StatusBarSpacer"],"sources":["../../src/components/StatusBar/StatusBar.module.css","../../src/components/StatusBar/StatusBar.tsx"],"sourcesContent":[".bar {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-8);\n flex-shrink: 0;\n padding: var(--wzl-space-2) var(--wzl-space-6);\n font-family: var(--wzl-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-muted);\n background: var(--wzl-surface);\n border-top: 1px solid var(--wzl-border);\n}\n\n.item {\n white-space: nowrap;\n}\n\n.muted {\n opacity: 0.6;\n font-variant-numeric: tabular-nums;\n}\n\n.hasTitle {\n cursor: help;\n}\n\n.spacer {\n margin-left: auto;\n}\n","import type { ReactNode } from 'react';\nimport s from './StatusBar.module.css';\n\n/** Props for {@link StatusBar}. */\nexport interface StatusBarProps {\n /**\n * Accessible label for the bar. Deliberately not a live region — a status\n * bar's readouts change on every pointer move (zoom, cursor position,\n * selection count), and announcing each one would make a screen reader\n * unusable. Screen-reader users reach the same facts through the controls\n * that own them.\n */\n ariaLabel?: string;\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * The thin readout strip along the bottom of an editor window: monospace,\n * one row, items separated by a fixed gap, with an optional spacer that\n * pushes everything after it to the trailing edge.\n *\n * Pure presentation — it holds whatever the app puts in it. Compose with\n * `<StatusBarItem>` and `<StatusBarSpacer>`.\n */\nexport function StatusBar(props: StatusBarProps) {\n const { ariaLabel, children, className } = props;\n return (\n <footer className={[s.bar, className].filter(Boolean).join(' ')} aria-label={ariaLabel}>\n {children}\n </footer>\n );\n}\n\n/** Props for {@link StatusBarItem}. */\nexport interface StatusBarItemProps {\n /**\n * Hover text. Items that carry one also get a `help` cursor, so the\n * affordance is discoverable rather than hidden behind a hover delay.\n */\n title?: string;\n /**\n * Dim the item and use tabular figures. For reference material that\n * shouldn't compete with live readouts — build stamps, hints, units.\n */\n muted?: boolean;\n children?: ReactNode;\n className?: string;\n}\n\n/** One readout in a `<StatusBar>`. */\nexport function StatusBarItem(props: StatusBarItemProps) {\n const { title, muted, children, className } = props;\n const cls = [s.item, muted && s.muted, title !== undefined && s.hasTitle, className]\n .filter(Boolean).join(' ');\n return <span className={cls} title={title}>{children}</span>;\n}\n\n/**\n * Splits a status bar into leading and trailing runs — everything after the\n * spacer is pushed to the trailing edge. Decorative, so it's hidden from the\n * accessibility tree.\n */\nexport function StatusBarSpacer() {\n return <span className={s.spacer} aria-hidden=\"true\" />;\n}\n"],"mappings":";;;;;;;;;;ACyBA,SAAgBE,EAAU,GAAuB;CAC/C,IAAM,EAAE,cAAW,aAAU,iBAAcC;CAC3C,OACE,kBAAC,UAAD;EAAQ,WAAW,CAACH,EAAE,KAAKI,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAAG,cAAYC;EAC1E;CACK,CAAA;AAEZ;AAmBA,SAAgBC,EAAc,GAA2B;CACvD,IAAM,EAAE,UAAO,UAAO,aAAU,iBAAcH,GACxCI,IAAM;EAACP,EAAE;EAAMQ,KAASR,EAAE;EAAOS,MAAU,KAAA,KAAaT,EAAE;EAAUI;CAAS,CAAC,CACjF,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAC3B,OAAO,kBAAC,QAAD;EAAM,WAAWG;EAAY;EAAQ;CAAe,CAAA;AAC7D;AAOA,SAAgBG,IAAkB;CAChC,OAAO,kBAAC,QAAD;EAAM,WAAWV,EAAE;EAAQ,eAAY;CAAQ,CAAA;AACxD"}
@@ -0,0 +1,73 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { useRef as t } from "react";
3
+ var n = {
4
+ grid: "_grid_19vkr_1",
5
+ swatch: "_swatch_19vkr_6"
6
+ };
7
+ //#endregion
8
+ //#region src/components/SwatchGrid/SwatchGrid.tsx
9
+ function r(e) {
10
+ return e.label ?? e.value ?? "None";
11
+ }
12
+ function i(i) {
13
+ let { options: a, value: o, onChange: s, onAltChange: c, className: l } = i, u = i.columns ?? 6, d = t(null), f = o === void 0 ? -1 : a.findIndex((e) => e.value === o), p = f >= 0 ? f : 0, m = (e) => {
14
+ d.current?.querySelectorAll("button")[e]?.focus();
15
+ }, h = (e) => (t) => {
16
+ let n = a.length - 1, r = -1;
17
+ switch (t.key) {
18
+ case "ArrowLeft":
19
+ r = Math.max(0, e - 1);
20
+ break;
21
+ case "ArrowRight":
22
+ r = Math.min(n, e + 1);
23
+ break;
24
+ case "ArrowUp":
25
+ r = e - u >= 0 ? e - u : e;
26
+ break;
27
+ case "ArrowDown":
28
+ r = e + u <= n ? e + u : e;
29
+ break;
30
+ case "Home":
31
+ r = 0;
32
+ break;
33
+ case "End":
34
+ r = n;
35
+ break;
36
+ case "Enter":
37
+ t.shiftKey && c && (t.preventDefault(), c(a[e].value));
38
+ return;
39
+ default: return;
40
+ }
41
+ t.preventDefault(), r !== e && m(r);
42
+ };
43
+ return /* @__PURE__ */ e("div", {
44
+ ref: d,
45
+ className: [n.grid, l].filter(Boolean).join(" "),
46
+ role: "group",
47
+ "aria-label": i["aria-label"],
48
+ style: { "--columns": u },
49
+ children: a.map((t, i) => {
50
+ let a = r(t);
51
+ return /* @__PURE__ */ e("button", {
52
+ type: "button",
53
+ className: n.swatch,
54
+ "aria-label": a,
55
+ title: a,
56
+ tabIndex: i === p ? 0 : -1,
57
+ "aria-current": i === f ? "true" : void 0,
58
+ ...t.value === null ? { "data-none": "" } : { style: { "--swatch": t.value } },
59
+ onClick: (e) => {
60
+ e.shiftKey && c ? c(t.value) : s(t.value);
61
+ },
62
+ onContextMenu: c ? (e) => {
63
+ e.preventDefault(), c(t.value);
64
+ } : void 0,
65
+ onKeyDown: h(i)
66
+ }, t.value ?? `none-${i}`);
67
+ })
68
+ });
69
+ }
70
+ //#endregion
71
+ export { i as t };
72
+
73
+ //# sourceMappingURL=SwatchGrid-BARC3rnF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwatchGrid-BARC3rnF.js","names":["s","SwatchGrid_module_default","nameOf","o","SwatchGrid","props","columns","rootRef","useRef","current","value","options","tabStop","focusAt","i","onKeyDown","last","next","e","onAltChange","className","name","onChange"],"sources":["../../src/components/SwatchGrid/SwatchGrid.module.css","../../src/components/SwatchGrid/SwatchGrid.tsx"],"sourcesContent":[".grid {\n display: grid;\n grid-template-columns: repeat(var(--columns), minmax(0, 1fr));\n}\n\n.swatch {\n aspect-ratio: 1 / 1;\n min-inline-size: 0;\n /* A labkit host's :where(button) default sets a control height. */\n block-size: auto;\n padding: 0;\n border: 0.5px solid var(--wzl-border);\n border-radius: 0;\n /* The color over the checker, so a translucent swatch reads as one. */\n background:\n linear-gradient(var(--swatch), var(--swatch)),\n repeating-conic-gradient(var(--wzl-checker-a) 0% 25%, var(--wzl-checker-b) 0% 50%)\n 50% / var(--wzl-checker-size) var(--wzl-checker-size);\n background-clip: padding-box;\n cursor: pointer;\n}\n\n.swatch:hover {\n border-color: var(--wzl-fg-muted);\n}\n\n.swatch[aria-current] {\n border-color: var(--wzl-accent);\n box-shadow: 0 0 0 1px var(--wzl-accent);\n}\n\n.swatch:focus-visible {\n position: relative;\n outline: 2px solid var(--wzl-focus-ring);\n outline-offset: 1px;\n}\n\n/* No paint: the checker crossed by the danger diagonal. */\n.swatch[data-none] {\n background:\n linear-gradient(\n 45deg,\n transparent calc(50% - 1px),\n var(--wzl-danger) calc(50% - 1px),\n var(--wzl-danger) calc(50% + 1px),\n transparent calc(50% + 1px)\n ),\n repeating-conic-gradient(var(--wzl-checker-a) 0% 25%, var(--wzl-checker-b) 0% 50%)\n 50% / var(--wzl-checker-size) var(--wzl-checker-size);\n}\n","import { useRef, type CSSProperties, type KeyboardEvent, type ReactElement } from 'react';\nimport s from './SwatchGrid.module.css';\n\n/** One swatch. `value: null` is the \"no paint\" swatch. */\nexport interface SwatchGridOption {\n value: string | null;\n /** Accessible name and tooltip. Defaults to the value, or \"None\". */\n label?: string;\n}\n\n/** Props for {@link SwatchGrid}. */\nexport interface SwatchGridProps {\n options: readonly SwatchGridOption[];\n /** The swatch to mark current, if any matches. */\n value?: string | null;\n /** A click, Enter or Space on a swatch. */\n onChange: (value: string | null) => void;\n /** The alternate target — shift-click, right-click (the browser menu is\n * suppressed) and Shift+Enter. Drawing apps route this to the slot that\n * isn't focused: click for fill, shift-click for stroke. */\n onAltChange?: (value: string | null) => void;\n /** Swatches per row; also the step for ArrowUp/ArrowDown. Default 6. */\n columns?: number;\n 'aria-label'?: string;\n className?: string;\n}\n\nfunction nameOf(o: SwatchGridOption): string {\n return o.label ?? o.value ?? 'None';\n}\n\n/**\n * A palette: a grid of color swatches that apply on click. Keyboard focus\n * roves — one tab stop, on the current swatch, with the arrows moving by one\n * across and by a row up and down.\n *\n * The grid applies nothing itself. `onChange` and `onAltChange` hand the\n * color to the app, which decides what \"apply\" means: set its active paint,\n * write the selection through `useOngoingAction`'s `commit`, or both.\n */\nexport function SwatchGrid(props: SwatchGridProps): ReactElement {\n const { options, value, onChange, onAltChange, className } = props;\n const columns = props.columns ?? 6;\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n const current = value === undefined ? -1 : options.findIndex((o) => o.value === value);\n const tabStop = current >= 0 ? current : 0;\n\n const focusAt = (i: number): void => {\n rootRef.current?.querySelectorAll<HTMLElement>('button')[i]?.focus();\n };\n\n const onKeyDown = (i: number) => (e: KeyboardEvent<HTMLButtonElement>): void => {\n const last = options.length - 1;\n let next = -1;\n switch (e.key) {\n case 'ArrowLeft': next = Math.max(0, i - 1); break;\n case 'ArrowRight': next = Math.min(last, i + 1); break;\n case 'ArrowUp': next = i - columns >= 0 ? i - columns : i; break;\n case 'ArrowDown': next = i + columns <= last ? i + columns : i; break;\n case 'Home': next = 0; break;\n case 'End': next = last; break;\n case 'Enter':\n if (e.shiftKey && onAltChange) {\n e.preventDefault();\n onAltChange(options[i].value);\n }\n return;\n default: return;\n }\n e.preventDefault();\n if (next !== i) focusAt(next);\n };\n\n return (\n <div\n ref={rootRef}\n className={[s.grid, className].filter(Boolean).join(' ')}\n role=\"group\"\n aria-label={props['aria-label']}\n style={{ '--columns': columns } as CSSProperties}\n >\n {options.map((o, i) => {\n const name = nameOf(o);\n return (\n <button\n key={o.value ?? `none-${i}`}\n type=\"button\"\n className={s.swatch}\n aria-label={name}\n title={name}\n tabIndex={i === tabStop ? 0 : -1}\n aria-current={i === current ? 'true' : undefined}\n {...(o.value === null\n ? { 'data-none': '' }\n : { style: { '--swatch': o.value } as CSSProperties })}\n onClick={(e) => {\n if (e.shiftKey && onAltChange) onAltChange(o.value);\n else onChange(o.value);\n }}\n onContextMenu={onAltChange ? (e) => { e.preventDefault(); onAltChange(o.value); } : undefined}\n onKeyDown={onKeyDown(i)}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AC2BA,SAASE,EAAO,GAA6B;CAC3C,OAAOC,EAAE,SAASA,EAAE,SAAS;AAC/B;AAWA,SAAgBC,EAAW,GAAsC;CAC/D,IAAM,EAAE,YAAS,UAAO,aAAU,gBAAa,iBAAcC,GACvDC,IAAUD,EAAM,WAAW,GAC3BE,IAAUC,EAA8B,IAAI,GAE5CC,IAAUC,MAAU,KAAA,IAAY,KAAKC,EAAQ,WAAW,MAAMR,EAAE,UAAUO,CAAK,GAC/EE,IAAUH,KAAW,IAAIA,IAAU,GAEnCI,KAAW,MAAoB;EACnC,EAAQ,SAAS,iBAA8B,QAAQ,CAAC,CAACC,EAAE,EAAE,MAAM;CACrE,GAEMC,KAAa,OAAe,MAA8C;EAC9E,IAAMC,IAAOL,EAAQ,SAAS,GAC1BM,IAAO;EACX,QAAQC,EAAE,KAAV;GACE,KAAK;IAAa,IAAO,KAAK,IAAI,GAAGJ,IAAI,CAAC;IAAG;GAC7C,KAAK;IAAc,IAAO,KAAK,IAAIE,GAAMF,IAAI,CAAC;IAAG;GACjD,KAAK;IAAW,IAAOA,IAAIR,KAAW,IAAIQ,IAAIR,IAAUQ;IAAG;GAC3D,KAAK;IAAa,IAAOA,IAAIR,KAAWU,IAAOF,IAAIR,IAAUQ;IAAG;GAChE,KAAK;IAAQ,IAAO;IAAG;GACvB,KAAK;IAAO,IAAOE;IAAM;GACzB,KAAK;IACH,AAAIE,EAAE,YAAYC,MAChBD,EAAE,eAAe,GACjBC,EAAYR,EAAQG,EAAE,CAAC,KAAK;IAE9B;GACF,SAAS;EACX;EAEA,AADAI,EAAE,eAAe,GACbD,MAASH,KAAGD,EAAQI,CAAI;CAC9B;CAEA,OACE,kBAAC,OAAD;EACE,KAAKV;EACL,WAAW,CAACP,EAAE,MAAMoB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACvD,MAAK;EACL,cAAYf,EAAM;EAClB,OAAO,EAAE,aAAaC,EAAQ;EAE7B,UAAAK,EAAQ,KAAK,GAAG,MAAM;GACrB,IAAMU,IAAOnB,EAAOC,CAAC;GACrB,OACE,kBAAC,UAAD;IAEE,MAAK;IACL,WAAWH,EAAE;IACb,cAAYqB;IACZ,OAAOA;IACP,UAAU,MAAMT,IAAU,IAAI;IAC9B,gBAAc,MAAMH,IAAU,SAAS,KAAA;IACvC,GAAKN,EAAE,UAAU,OACb,EAAE,aAAa,GAAG,IAClB,EAAE,OAAO,EAAE,YAAYA,EAAE,MAAM,EAAmB;IACtD,UAAU,MAAM;KACd,AAAI,EAAE,YAAYgB,IAAaA,EAAYhB,EAAE,KAAK,IAC7CmB,EAASnB,EAAE,KAAK;IACvB;IACA,eAAegB,KAAe,MAAM;KAAsB,AAApB,EAAE,eAAe,GAAGA,EAAYhB,EAAE,KAAK;IAAG,IAAI,KAAA;IACpF,WAAWY,EAAU,CAAC;GACvB,GAhBMZ,EAAE,SAAS,QAAQ,GAgBzB;EAEL,CAAC;CACE,CAAA;AAET"}
@@ -24,4 +24,4 @@ var i = {
24
24
  //#endregion
25
25
  export { a as t };
26
26
 
27
- //# sourceMappingURL=Switch-DH5POG0T.js.map
27
+ //# sourceMappingURL=Switch-CSYmcM8y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch-CSYmcM8y.js","names":["Switch","RACSwitch","s","Switch_module_default","\"switch\"","Switch$1","forwardRef","rest","props","Switch","className","children"],"sources":["../../src/components/Switch/Switch.module.css","../../src/components/Switch/Switch.tsx"],"sourcesContent":[".switch {\n display: inline-flex;\n align-items: center;\n gap: var(--wzl-space-4);\n cursor: pointer;\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size);\n color: var(--wzl-fg);\n user-select: none;\n -webkit-user-select: none;\n}\n\n.switch[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.track {\n position: relative;\n flex: 0 0 auto;\n width: 28px;\n height: 16px;\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border-strong);\n border-radius: var(--wzl-radius-pill);\n transition: background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);\n}\n\n.switch[data-focus-visible] .track {\n box-shadow: 0 0 0 2px var(--wzl-focus-ring);\n}\n\n.switch[data-selected] .track {\n background: var(--wzl-accent-strong);\n border-color: var(--wzl-accent-strong);\n}\n\n.thumb {\n position: absolute;\n top: 1px;\n left: 1px;\n width: 12px;\n height: 12px;\n background: var(--wzl-fg);\n border-radius: 50%;\n transition: transform var(--wzl-motion-fast);\n}\n\n.switch[data-selected] .thumb {\n transform: translateX(12px);\n background: var(--wzl-fg-on-accent);\n}\n\n.label {\n line-height: 1.2;\n}\n","import { forwardRef, type ReactNode, type Ref } from 'react';\nimport {\n Switch as RACSwitch,\n type SwitchProps as RACSwitchProps,\n} from 'react-aria-components';\nimport s from './Switch.module.css';\n\n/**\n * Props for {@link Switch}, on top of React Aria's `Switch` props. The label\n * is passed as children.\n */\nexport type SwitchProps = Omit<RACSwitchProps, 'children' | 'className'> & {\n children?: ReactNode;\n className?: string;\n};\n\n/**\n * On/off toggle wrapping React Aria's Switch, skinned against the `--wzl-*`\n * tokens. Use for a setting that takes effect immediately; use `Checkbox`\n * for one that is submitted with a form.\n *\n * `ref` forwards to the underlying label element.\n */\nexport const Switch = forwardRef(function Switch(\n props: SwitchProps,\n ref: Ref<HTMLLabelElement>,\n) {\n const { children, className, ...rest } = props;\n return (\n <RACSwitch\n {...rest}\n ref={ref}\n className={[s.switch, className].filter(Boolean).join(' ')}\n >\n <span className={s.track}>\n <span className={s.thumb} />\n </span>\n {children !== undefined && <span className={s.label}>{children}</span>}\n </RACSwitch>\n );\n});\n"],"mappings":";;;;;;;;GCuBaA,IAASM,EAAW,SAC/B,GACA,GACA;CACA,IAAM,EAAE,aAAU,cAAW,GAAGC,MAASC;CACzC,OACE,kBAACP,GAAD;EACE,GAAIM;EACC;EACL,WAAW,CAACL,EAAE,QAAQQ,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAH3D,UAAA,CAKE,kBAAC,QAAD;GAAM,WAAWR,EAAE;GACjB,UAAA,kBAAC,QAAD,EAAM,WAAWA,EAAE,MAAQ,CAAA;EACvB,CAAA,GACLS,MAAa,KAAA,KAAa,kBAAC,QAAD;GAAM,WAAWT,EAAE;GAAQ;EAAe,CAAA,CAC5D;;AAEf,CAAC"}