@weasel-js/ui 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/dist/chunks/ActionBar-CYvfmEz0.js +57 -0
  2. package/dist/chunks/ActionBar-CYvfmEz0.js.map +1 -0
  3. package/dist/chunks/{Badge-Bf8Rd1R6.js → Badge-DZ0lFs14.js} +755 -738
  4. package/dist/chunks/Badge-DZ0lFs14.js.map +1 -0
  5. package/dist/chunks/{BandEditor-D8I5Uun-.js → BandEditor-D-nVrVO4.js} +44 -44
  6. package/dist/chunks/BandEditor-D-nVrVO4.js.map +1 -0
  7. package/dist/chunks/Button-Dyp31jMt.js +111 -0
  8. package/dist/chunks/Button-Dyp31jMt.js.map +1 -0
  9. package/dist/chunks/ButtonBar-smZzFuEo.js +46 -0
  10. package/dist/chunks/ButtonBar-smZzFuEo.js.map +1 -0
  11. package/dist/chunks/Callout-xLjnx7Mp.js +119 -0
  12. package/dist/chunks/Callout-xLjnx7Mp.js.map +1 -0
  13. package/dist/chunks/{Checkbox-BZZsPaVF.js → Checkbox-ChZz30Ds.js} +5 -5
  14. package/dist/chunks/Checkbox-ChZz30Ds.js.map +1 -0
  15. package/dist/chunks/Code-v4tDWuuN.js +24 -0
  16. package/dist/chunks/Code-v4tDWuuN.js.map +1 -0
  17. package/dist/chunks/{ColorField-YVf8irfr.js → ColorField-DJSCuSJv.js} +15 -15
  18. package/dist/chunks/{ColorField-YVf8irfr.js.map → ColorField-DJSCuSJv.js.map} +1 -1
  19. package/dist/chunks/ColorModeControl-JOEiqtE0.js +47 -0
  20. package/dist/chunks/ColorModeControl-JOEiqtE0.js.map +1 -0
  21. package/dist/chunks/{ComboBox-D57tNYDD.js → ComboBox-C1JgIpML.js} +13 -13
  22. package/dist/chunks/ComboBox-C1JgIpML.js.map +1 -0
  23. package/dist/chunks/{CurveEditor-BXiMoN9d.js → CurveEditor-f1R4kSbD.js} +2 -2
  24. package/dist/chunks/{CurveEditor-BXiMoN9d.js.map → CurveEditor-f1R4kSbD.js.map} +1 -1
  25. package/dist/chunks/DataGrid-CZPrB_3a.js +152 -0
  26. package/dist/chunks/DataGrid-CZPrB_3a.js.map +1 -0
  27. package/dist/chunks/DetailList-DHaXX4TG.js +43 -0
  28. package/dist/chunks/DetailList-DHaXX4TG.js.map +1 -0
  29. package/dist/chunks/{DetentSlider-BWNSv07Z.js → DetentSlider-BYyaZha6.js} +2 -2
  30. package/dist/chunks/{DetentSlider-BWNSv07Z.js.map → DetentSlider-BYyaZha6.js.map} +1 -1
  31. package/dist/chunks/Dialog-GIvjoDQj.js +66 -0
  32. package/dist/chunks/Dialog-GIvjoDQj.js.map +1 -0
  33. package/dist/chunks/Disclosure-D79jhmh2.js +58 -0
  34. package/dist/chunks/Disclosure-D79jhmh2.js.map +1 -0
  35. package/dist/chunks/DragGhost-DcU7cOwy.js +30 -0
  36. package/dist/chunks/DragGhost-DcU7cOwy.js.map +1 -0
  37. package/dist/chunks/{DragHandleGlyph-CppAz4_8.js → DragHandleGlyph-BtBxHjZS.js} +1 -1
  38. package/dist/chunks/{DragHandleGlyph-CppAz4_8.js.map → DragHandleGlyph-BtBxHjZS.js.map} +1 -1
  39. package/dist/chunks/{Field-BNqvUJfg.js → Field-xbqRmjsI.js} +6 -6
  40. package/dist/chunks/Field-xbqRmjsI.js.map +1 -0
  41. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js +111 -0
  42. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js.map +1 -0
  43. package/dist/chunks/{FontFamilySelect-CO19kyOO.js → FontFamilySelect-r9TV_xIH.js} +2 -2
  44. package/dist/chunks/{FontFamilySelect-CO19kyOO.js.map → FontFamilySelect-r9TV_xIH.js.map} +1 -1
  45. package/dist/chunks/GradientEditor-BRTxHG-W.js +333 -0
  46. package/dist/chunks/GradientEditor-BRTxHG-W.js.map +1 -0
  47. package/dist/chunks/{Icon-QhLhaGFe.js → Icon-BW0qv_U7.js} +50 -21
  48. package/dist/chunks/Icon-BW0qv_U7.js.map +1 -0
  49. package/dist/chunks/InlineRange-BwGFDhpT.js +29 -0
  50. package/dist/chunks/InlineRange-BwGFDhpT.js.map +1 -0
  51. package/dist/chunks/{Input-B9Vh7ASP.js → Input-Bx2cuUbS.js} +24 -19
  52. package/dist/chunks/Input-Bx2cuUbS.js.map +1 -0
  53. package/dist/chunks/ItemList-DzJ2lK0R.js +175 -0
  54. package/dist/chunks/ItemList-DzJ2lK0R.js.map +1 -0
  55. package/dist/chunks/ItemList.module-DDUXfuZL.js +14 -0
  56. package/dist/chunks/ItemList.module-DDUXfuZL.js.map +1 -0
  57. package/dist/chunks/{Jog-BYrxbAQU.js → Jog-LPoac9s4.js} +10 -10
  58. package/dist/chunks/Jog-LPoac9s4.js.map +1 -0
  59. package/dist/chunks/{Keycaps-CGNQV2Pz.js → Keycaps-CKiKOJnJ.js} +75 -69
  60. package/dist/chunks/Keycaps-CKiKOJnJ.js.map +1 -0
  61. package/dist/chunks/LayerList-BeGrkLb9.js +427 -0
  62. package/dist/chunks/LayerList-BeGrkLb9.js.map +1 -0
  63. package/dist/chunks/ListEditor-C6zLzCsJ.js +74 -0
  64. package/dist/chunks/ListEditor-C6zLzCsJ.js.map +1 -0
  65. package/dist/chunks/MenuButton-BcdhrNGh.js +70 -0
  66. package/dist/chunks/MenuButton-BcdhrNGh.js.map +1 -0
  67. package/dist/chunks/MeshEditor-BOOIFWnz.js +87 -0
  68. package/dist/chunks/MeshEditor-BOOIFWnz.js.map +1 -0
  69. package/dist/chunks/{NumberField-CQzS6TjF.js → NumberField-C1Y7zP-a.js} +27 -22
  70. package/dist/chunks/NumberField-C1Y7zP-a.js.map +1 -0
  71. package/dist/chunks/{OptionsBar-BWaYG_OH.js → OptionsBar-DlcagPYK.js} +3 -3
  72. package/dist/chunks/{OptionsBar-BWaYG_OH.js.map → OptionsBar-DlcagPYK.js.map} +1 -1
  73. package/dist/chunks/{PaintField-BVYMu3OI.js → PaintField-B2mLRZa4.js} +20 -20
  74. package/dist/chunks/PaintField-B2mLRZa4.js.map +1 -0
  75. package/dist/chunks/{PaintInput-BzAHCKro.js → PaintInput-BFKhd83I.js} +27 -27
  76. package/dist/chunks/PaintInput-BFKhd83I.js.map +1 -0
  77. package/dist/chunks/{PatternPicker-C4OryrYi.js → PatternPicker-DdfpxoQy.js} +6 -6
  78. package/dist/chunks/PatternPicker-DdfpxoQy.js.map +1 -0
  79. package/dist/chunks/{Plot2D-Czvyt_vG.js → Plot2D-lyO7waPQ.js} +1 -1
  80. package/dist/chunks/{Plot2D-Czvyt_vG.js.map → Plot2D-lyO7waPQ.js.map} +1 -1
  81. package/dist/chunks/{PointPlotter-Xvb98GwB.js → PointPlotter-DGs9i5P-.js} +2 -2
  82. package/dist/chunks/{PointPlotter-Xvb98GwB.js.map → PointPlotter-DGs9i5P-.js.map} +1 -1
  83. package/dist/chunks/{Powerline-B_EH-7Z-.js → Powerline-DBEPceLE.js} +7 -5
  84. package/dist/chunks/Powerline-DBEPceLE.js.map +1 -0
  85. package/dist/chunks/Prefs-Ctu0H4-b.js +475 -0
  86. package/dist/chunks/Prefs-Ctu0H4-b.js.map +1 -0
  87. package/dist/chunks/Properties-Bbneh1ws.js +281 -0
  88. package/dist/chunks/Properties-Bbneh1ws.js.map +1 -0
  89. package/dist/chunks/PropertyField-CDb19d3F.js +756 -0
  90. package/dist/chunks/PropertyField-CDb19d3F.js.map +1 -0
  91. package/dist/chunks/{RadioGroup-C6xpdQNg.js → RadioGroup-BK2mD6Q0.js} +6 -6
  92. package/dist/chunks/RadioGroup-BK2mD6Q0.js.map +1 -0
  93. package/dist/chunks/{RangeSlider-CzgeGLVS.js → RangeSlider-BiRAOsTh.js} +8 -8
  94. package/dist/chunks/RangeSlider-BiRAOsTh.js.map +1 -0
  95. package/dist/chunks/{ResizeHandle-1Ey8AOij.js → ResizeHandle-Cc6EOehs.js} +9 -9
  96. package/dist/chunks/{ResizeHandle-1Ey8AOij.js.map → ResizeHandle-Cc6EOehs.js.map} +1 -1
  97. package/dist/chunks/Select-DVValBe1.js +225 -0
  98. package/dist/chunks/Select-DVValBe1.js.map +1 -0
  99. package/dist/chunks/SelectionPanel-C5LmZA7b.js +103 -0
  100. package/dist/chunks/SelectionPanel-C5LmZA7b.js.map +1 -0
  101. package/dist/chunks/{Sidebar-BlUjn8lD.js → Sidebar-DKKd4R-x.js} +4 -4
  102. package/dist/chunks/Sidebar-DKKd4R-x.js.map +1 -0
  103. package/dist/chunks/{SidebarPanel-BqHfz6VK.js → SidebarPanel-u5NsuAZY.js} +15 -19
  104. package/dist/chunks/SidebarPanel-u5NsuAZY.js.map +1 -0
  105. package/dist/chunks/{Slider-B2ywUZH6.js → Slider-BwRrWHFW.js} +58 -58
  106. package/dist/chunks/Slider-BwRrWHFW.js.map +1 -0
  107. package/dist/chunks/{StatusBar-BFt7Yw5O.js → StatusBar-CdPdmmda.js} +6 -6
  108. package/dist/chunks/StatusBar-CdPdmmda.js.map +1 -0
  109. package/dist/chunks/SwatchGrid-C-Zx2Exd.js +73 -0
  110. package/dist/chunks/SwatchGrid-C-Zx2Exd.js.map +1 -0
  111. package/dist/chunks/{Switch-Om3t3ASc.js → Switch-DxF7TsEu.js} +5 -5
  112. package/dist/chunks/Switch-DxF7TsEu.js.map +1 -0
  113. package/dist/chunks/{Tabs-EAvYywil.js → Tabs-GXEfoe3o.js} +5 -5
  114. package/dist/chunks/Tabs-GXEfoe3o.js.map +1 -0
  115. package/dist/chunks/{Timeline-BEyKaBXl.js → Timeline-SgmpQtUV.js} +128 -132
  116. package/dist/chunks/Timeline-SgmpQtUV.js.map +1 -0
  117. package/dist/chunks/{Toast-iqLDD_XZ.js → Toast-BfcljZz6.js} +15 -15
  118. package/dist/chunks/Toast-BfcljZz6.js.map +1 -0
  119. package/dist/chunks/ToggleBar-Btnl5r7F.js +80 -0
  120. package/dist/chunks/ToggleBar-Btnl5r7F.js.map +1 -0
  121. package/dist/chunks/TokenPanel-5ajHEHha.js +634 -0
  122. package/dist/chunks/TokenPanel-5ajHEHha.js.map +1 -0
  123. package/dist/chunks/{ToolButton-Dd-1T5aX.js → ToolButton-rzqlFlAc.js} +9 -9
  124. package/dist/chunks/ToolButton-rzqlFlAc.js.map +1 -0
  125. package/dist/chunks/{ToolGroup-BBI-W-Gm.js → ToolGroup-4bUBV5k6.js} +3 -3
  126. package/dist/chunks/ToolGroup-4bUBV5k6.js.map +1 -0
  127. package/dist/chunks/ToolOptionsBar-BF3TNXA3.js +85 -0
  128. package/dist/chunks/ToolOptionsBar-BF3TNXA3.js.map +1 -0
  129. package/dist/chunks/ToolPalette-Uw4PvWwa.js +83 -0
  130. package/dist/chunks/ToolPalette-Uw4PvWwa.js.map +1 -0
  131. package/dist/chunks/Tooltip-9XiJF937.js +42 -0
  132. package/dist/chunks/Tooltip-9XiJF937.js.map +1 -0
  133. package/dist/chunks/Tree-BGt6P8tI.js +203 -0
  134. package/dist/chunks/Tree-BGt6P8tI.js.map +1 -0
  135. package/dist/chunks/{createKeyframeLayer-7j7ukrSx.js → createKeyframeLayer-BzDRCrrh.js} +71 -71
  136. package/dist/chunks/{createKeyframeLayer-7j7ukrSx.js.map → createKeyframeLayer-BzDRCrrh.js.map} +1 -1
  137. package/dist/chunks/formatShortcut-BoGqUoWi.js +15 -0
  138. package/dist/chunks/formatShortcut-BoGqUoWi.js.map +1 -0
  139. package/dist/chunks/icons-DbScMMqX.js +179 -0
  140. package/dist/chunks/icons-DbScMMqX.js.map +1 -0
  141. package/dist/chunks/interactiveTarget-C7QUBaJN.js +24 -0
  142. package/dist/chunks/interactiveTarget-C7QUBaJN.js.map +1 -0
  143. package/dist/chunks/{keyGlyph-Bp0wnLHn.js → keyGlyph-CLvUHU8c.js} +1 -1
  144. package/dist/chunks/{keyGlyph-Bp0wnLHn.js.map → keyGlyph-CLvUHU8c.js.map} +1 -1
  145. package/dist/chunks/model-BQMvTLnW.js +360 -0
  146. package/dist/chunks/model-BQMvTLnW.js.map +1 -0
  147. package/dist/chunks/number-6S8IzXVt.js +89 -0
  148. package/dist/chunks/number-6S8IzXVt.js.map +1 -0
  149. package/dist/chunks/paintPreview-DPtZS4yU.js +42 -0
  150. package/dist/chunks/paintPreview-DPtZS4yU.js.map +1 -0
  151. package/dist/chunks/paintValue-Bz6AVuh3.js +18 -0
  152. package/dist/chunks/paintValue-Bz6AVuh3.js.map +1 -0
  153. package/dist/chunks/prefField-CLkhrvYl.js +197 -0
  154. package/dist/chunks/prefField-CLkhrvYl.js.map +1 -0
  155. package/dist/chunks/segmentTooltip-CAkZlW-t.js +29 -0
  156. package/dist/chunks/segmentTooltip-CAkZlW-t.js.map +1 -0
  157. package/dist/chunks/segmentedControl.module-D2nw68Yo.js +11 -0
  158. package/dist/chunks/segmentedControl.module-D2nw68Yo.js.map +1 -0
  159. package/dist/chunks/{snap-B0WQwetQ.js → snap-DC4Km8xG.js} +1 -1
  160. package/dist/chunks/{snap-B0WQwetQ.js.map → snap-DC4Km8xG.js.map} +1 -1
  161. package/dist/chunks/stance-CarrcbbP.js +17 -0
  162. package/dist/chunks/stance-CarrcbbP.js.map +1 -0
  163. package/dist/chunks/useReorderDragList-Dcezzgix.js +131 -0
  164. package/dist/chunks/useReorderDragList-Dcezzgix.js.map +1 -0
  165. package/dist/chunks/{useRovingTabIndex-Dkpf_KhN.js → useRovingTabIndex-B4uJqiKP.js} +1 -1
  166. package/dist/chunks/useRovingTabIndex-B4uJqiKP.js.map +1 -0
  167. package/dist/color/oklch.d.ts +2 -1
  168. package/dist/color/oklch.d.ts.map +1 -1
  169. package/dist/color/ramp.d.ts +38 -0
  170. package/dist/color/ramp.d.ts.map +1 -0
  171. package/dist/components/ActionBar/ActionBar.d.ts +6 -4
  172. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  173. package/dist/components/ActionBar/index.js +1 -1
  174. package/dist/components/Badge/Badge.d.ts +21 -7
  175. package/dist/components/Badge/Badge.d.ts.map +1 -1
  176. package/dist/components/Badge/effects/Aqua.d.ts +1 -1
  177. package/dist/components/Badge/effects/Aqua.d.ts.map +1 -1
  178. package/dist/components/Badge/index.d.ts +1 -1
  179. package/dist/components/Badge/index.d.ts.map +1 -1
  180. package/dist/components/Badge/index.js +1 -1
  181. package/dist/components/Badge/types.d.ts +6 -5
  182. package/dist/components/Badge/types.d.ts.map +1 -1
  183. package/dist/components/BandEditor/index.js +1 -1
  184. package/dist/components/Button/Button.d.ts +17 -3
  185. package/dist/components/Button/Button.d.ts.map +1 -1
  186. package/dist/components/Button/index.d.ts +1 -1
  187. package/dist/components/Button/index.d.ts.map +1 -1
  188. package/dist/components/Button/index.js +1 -1
  189. package/dist/components/ButtonBar/ButtonBar.d.ts +36 -0
  190. package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -0
  191. package/dist/components/ButtonBar/index.d.ts +3 -0
  192. package/dist/components/ButtonBar/index.d.ts.map +1 -0
  193. package/dist/components/ButtonBar/index.js +2 -0
  194. package/dist/components/Callout/Callout.d.ts +2 -5
  195. package/dist/components/Callout/Callout.d.ts.map +1 -1
  196. package/dist/components/Callout/index.d.ts +1 -1
  197. package/dist/components/Callout/index.d.ts.map +1 -1
  198. package/dist/components/Callout/index.js +1 -1
  199. package/dist/components/Checkbox/index.js +1 -1
  200. package/dist/components/Code/Code.d.ts +28 -0
  201. package/dist/components/Code/Code.d.ts.map +1 -0
  202. package/dist/components/Code/index.d.ts +3 -0
  203. package/dist/components/Code/index.d.ts.map +1 -0
  204. package/dist/components/Code/index.js +2 -0
  205. package/dist/components/ColorField/index.js +1 -1
  206. package/dist/components/ColorModeControl/ColorModeControl.d.ts +21 -0
  207. package/dist/components/ColorModeControl/ColorModeControl.d.ts.map +1 -0
  208. package/dist/components/ColorModeControl/index.d.ts +3 -0
  209. package/dist/components/ColorModeControl/index.d.ts.map +1 -0
  210. package/dist/components/ColorModeControl/index.js +2 -0
  211. package/dist/components/ComboBox/index.js +1 -1
  212. package/dist/components/CurveEditor/index.js +3 -3
  213. package/dist/components/DataGrid/DataGrid.d.ts +22 -0
  214. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  215. package/dist/components/DataGrid/index.js +1 -1
  216. package/dist/components/DetailList/DetailList.d.ts +36 -0
  217. package/dist/components/DetailList/DetailList.d.ts.map +1 -0
  218. package/dist/components/DetailList/index.d.ts +3 -0
  219. package/dist/components/DetailList/index.d.ts.map +1 -0
  220. package/dist/components/DetailList/index.js +2 -0
  221. package/dist/components/DetentSlider/index.js +1 -1
  222. package/dist/components/Dialog/Dialog.d.ts +8 -2
  223. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  224. package/dist/components/Dialog/index.js +1 -1
  225. package/dist/components/Disclosure/Disclosure.d.ts +25 -17
  226. package/dist/components/Disclosure/Disclosure.d.ts.map +1 -1
  227. package/dist/components/Disclosure/index.d.ts +2 -2
  228. package/dist/components/Disclosure/index.d.ts.map +1 -1
  229. package/dist/components/Disclosure/index.js +2 -2
  230. package/dist/components/DragGhost/DragGhost.d.ts +21 -0
  231. package/dist/components/DragGhost/DragGhost.d.ts.map +1 -0
  232. package/dist/components/DragGhost/index.d.ts +3 -0
  233. package/dist/components/DragGhost/index.d.ts.map +1 -0
  234. package/dist/components/DragGhost/index.js +2 -0
  235. package/dist/components/DragHandleGlyph/index.js +1 -1
  236. package/dist/components/Field/index.js +1 -1
  237. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts +45 -0
  238. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -0
  239. package/dist/components/FillStrokeSwatch/index.d.ts +3 -0
  240. package/dist/components/FillStrokeSwatch/index.d.ts.map +1 -0
  241. package/dist/components/FillStrokeSwatch/index.js +2 -0
  242. package/dist/components/FontFamilySelect/index.js +1 -1
  243. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
  244. package/dist/components/GradientEditor/index.js +1 -1
  245. package/dist/components/InlineRange/InlineRange.d.ts +6 -2
  246. package/dist/components/InlineRange/InlineRange.d.ts.map +1 -1
  247. package/dist/components/InlineRange/index.js +1 -1
  248. package/dist/components/Input/Input.d.ts +13 -0
  249. package/dist/components/Input/Input.d.ts.map +1 -1
  250. package/dist/components/Input/index.js +1 -1
  251. package/dist/components/ItemList/ItemList.d.ts +70 -10
  252. package/dist/components/ItemList/ItemList.d.ts.map +1 -1
  253. package/dist/components/ItemList/index.js +1 -1
  254. package/dist/components/Jog/index.js +1 -1
  255. package/dist/components/Keycaps/index.d.ts +1 -0
  256. package/dist/components/Keycaps/index.d.ts.map +1 -1
  257. package/dist/components/Keycaps/index.js +3 -3
  258. package/dist/components/Keycaps/keySpecsFromMods.d.ts +2 -0
  259. package/dist/components/Keycaps/keySpecsFromMods.d.ts.map +1 -1
  260. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts +16 -0
  261. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts.map +1 -0
  262. package/dist/components/LayerList/LayerList.d.ts +79 -0
  263. package/dist/components/LayerList/LayerList.d.ts.map +1 -0
  264. package/dist/components/LayerList/index.d.ts +3 -0
  265. package/dist/components/LayerList/index.d.ts.map +1 -0
  266. package/dist/components/LayerList/index.js +2 -0
  267. package/dist/components/LayerList/useSceneLayerList.d.ts +20 -0
  268. package/dist/components/LayerList/useSceneLayerList.d.ts.map +1 -0
  269. package/dist/components/ListEditor/ListEditor.d.ts +23 -0
  270. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -0
  271. package/dist/components/ListEditor/index.d.ts +3 -0
  272. package/dist/components/ListEditor/index.d.ts.map +1 -0
  273. package/dist/components/ListEditor/index.js +2 -0
  274. package/dist/components/MenuButton/MenuButton.d.ts +6 -2
  275. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  276. package/dist/components/MenuButton/index.js +1 -1
  277. package/dist/components/MeshEditor/index.js +1 -1
  278. package/dist/components/NumberField/NumberField.d.ts +13 -0
  279. package/dist/components/NumberField/NumberField.d.ts.map +1 -1
  280. package/dist/components/NumberField/UnitField.d.ts +2 -1
  281. package/dist/components/NumberField/UnitField.d.ts.map +1 -1
  282. package/dist/components/NumberField/index.js +1 -1
  283. package/dist/components/OptionsBar/index.js +1 -1
  284. package/dist/components/PaintField/index.js +1 -1
  285. package/dist/components/PaintInput/index.js +1 -1
  286. package/dist/components/PatternPicker/index.js +1 -1
  287. package/dist/components/Plot2D/index.js +1 -1
  288. package/dist/components/PointPlotter/index.js +1 -1
  289. package/dist/components/Powerline/Powerline.d.ts +4 -3
  290. package/dist/components/Powerline/Powerline.d.ts.map +1 -1
  291. package/dist/components/Powerline/index.js +2 -2
  292. package/dist/components/Prefs/PrefsDialog.d.ts +10 -2
  293. package/dist/components/Prefs/PrefsDialog.d.ts.map +1 -1
  294. package/dist/components/Prefs/PrefsForm.d.ts +26 -25
  295. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  296. package/dist/components/Prefs/PrefsPane.d.ts +24 -0
  297. package/dist/components/Prefs/PrefsPane.d.ts.map +1 -0
  298. package/dist/components/Prefs/PrefsRail.d.ts +32 -0
  299. package/dist/components/Prefs/PrefsRail.d.ts.map +1 -0
  300. package/dist/components/Prefs/PrefsRow.d.ts +32 -0
  301. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -0
  302. package/dist/components/Prefs/index.d.ts +5 -2
  303. package/dist/components/Prefs/index.d.ts.map +1 -1
  304. package/dist/components/Prefs/index.js +3 -3
  305. package/dist/components/Prefs/prefField.d.ts +36 -0
  306. package/dist/components/Prefs/prefField.d.ts.map +1 -0
  307. package/dist/components/Prefs/schema.d.ts +32 -1
  308. package/dist/components/Prefs/schema.d.ts.map +1 -1
  309. package/dist/components/Properties/DialogRow.d.ts +33 -0
  310. package/dist/components/Properties/DialogRow.d.ts.map +1 -0
  311. package/dist/components/Properties/PropertyField.d.ts +238 -0
  312. package/dist/components/Properties/PropertyField.d.ts.map +1 -0
  313. package/dist/components/Properties/PropertyGroup.d.ts +18 -3
  314. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  315. package/dist/components/Properties/PropertyPanel.d.ts +50 -256
  316. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  317. package/dist/components/Properties/Subpanel.d.ts +14 -0
  318. package/dist/components/Properties/Subpanel.d.ts.map +1 -0
  319. package/dist/components/Properties/index.d.ts +8 -6
  320. package/dist/components/Properties/index.d.ts.map +1 -1
  321. package/dist/components/Properties/index.js +3 -2
  322. package/dist/components/Properties/storyLayouts.d.ts.map +1 -1
  323. package/dist/components/RadioGroup/index.js +1 -1
  324. package/dist/components/RangeSlider/index.js +1 -1
  325. package/dist/components/ResizeHandle/index.js +1 -1
  326. package/dist/components/Select/Select.d.ts +56 -5
  327. package/dist/components/Select/Select.d.ts.map +1 -1
  328. package/dist/components/Select/index.d.ts +2 -2
  329. package/dist/components/Select/index.d.ts.map +1 -1
  330. package/dist/components/Select/index.js +2 -2
  331. package/dist/components/SelectionPanel/SelectionPanel.d.ts +3 -50
  332. package/dist/components/SelectionPanel/SelectionPanel.d.ts.map +1 -1
  333. package/dist/components/SelectionPanel/index.js +3 -2
  334. package/dist/components/SelectionPanel/model.d.ts +4 -1
  335. package/dist/components/SelectionPanel/model.d.ts.map +1 -1
  336. package/dist/components/SelectionPanel/renderLeaf.d.ts +112 -0
  337. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -0
  338. package/dist/components/Sidebar/index.js +1 -1
  339. package/dist/components/SidebarPanel/SidebarPanel.d.ts +2 -2
  340. package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
  341. package/dist/components/SidebarPanel/index.js +1 -1
  342. package/dist/components/Slider/index.js +1 -1
  343. package/dist/components/StatusBar/index.js +1 -1
  344. package/dist/components/SwatchGrid/SwatchGrid.d.ts +34 -0
  345. package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -0
  346. package/dist/components/SwatchGrid/index.d.ts +3 -0
  347. package/dist/components/SwatchGrid/index.d.ts.map +1 -0
  348. package/dist/components/SwatchGrid/index.js +2 -0
  349. package/dist/components/Switch/index.js +1 -1
  350. package/dist/components/Tabs/index.js +1 -1
  351. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  352. package/dist/components/Timeline/index.js +1 -1
  353. package/dist/components/Toast/index.js +1 -1
  354. package/dist/components/ToggleBar/ToggleBar.d.ts +2 -1
  355. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  356. package/dist/components/ToggleBar/index.js +1 -1
  357. package/dist/components/TokenPanel/TokenPanel.d.ts +10 -4
  358. package/dist/components/TokenPanel/TokenPanel.d.ts.map +1 -1
  359. package/dist/components/TokenPanel/index.d.ts +2 -2
  360. package/dist/components/TokenPanel/index.d.ts.map +1 -1
  361. package/dist/components/TokenPanel/index.js +2 -2
  362. package/dist/components/TokenPanel/tokenTypes.d.ts +24 -0
  363. package/dist/components/TokenPanel/tokenTypes.d.ts.map +1 -1
  364. package/dist/components/ToolButton/index.js +1 -1
  365. package/dist/components/ToolGroup/index.js +1 -1
  366. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts +29 -18
  367. package/dist/components/ToolOptionsBar/ToolOptionsBar.d.ts.map +1 -1
  368. package/dist/components/ToolOptionsBar/index.js +1 -1
  369. package/dist/components/ToolPalette/ToolPalette.d.ts +5 -4
  370. package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
  371. package/dist/components/ToolPalette/index.d.ts +1 -0
  372. package/dist/components/ToolPalette/index.d.ts.map +1 -1
  373. package/dist/components/ToolPalette/index.js +3 -2
  374. package/dist/components/Tooltip/Tooltip.d.ts +6 -2
  375. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  376. package/dist/components/Tooltip/index.d.ts +1 -1
  377. package/dist/components/Tooltip/index.d.ts.map +1 -1
  378. package/dist/components/Tooltip/index.js +2 -2
  379. package/dist/components/Tree/Tree.d.ts +84 -0
  380. package/dist/components/Tree/Tree.d.ts.map +1 -0
  381. package/dist/components/Tree/index.d.ts +3 -0
  382. package/dist/components/Tree/index.d.ts.map +1 -0
  383. package/dist/components/Tree/index.js +2 -0
  384. package/dist/components/segmentTooltip.d.ts +30 -0
  385. package/dist/components/segmentTooltip.d.ts.map +1 -0
  386. package/dist/components/stance.d.ts +30 -0
  387. package/dist/components/stance.d.ts.map +1 -0
  388. package/dist/components/stanceCss.d.ts +31 -0
  389. package/dist/components/stanceCss.d.ts.map +1 -0
  390. package/dist/components/stanceSurfaces.d.ts +4 -0
  391. package/dist/components/stanceSurfaces.d.ts.map +1 -0
  392. package/dist/format/number.d.ts +13 -3
  393. package/dist/format/number.d.ts.map +1 -1
  394. package/dist/icons/Icon.d.ts.map +1 -1
  395. package/dist/icons/ShapeKindIcon.d.ts +10 -0
  396. package/dist/icons/ShapeKindIcon.d.ts.map +1 -0
  397. package/dist/icons/index.d.ts +5 -3
  398. package/dist/icons/index.d.ts.map +1 -1
  399. package/dist/icons/paths.d.ts +11 -1
  400. package/dist/icons/paths.d.ts.map +1 -1
  401. package/dist/index.d.ts +16 -3
  402. package/dist/index.d.ts.map +1 -1
  403. package/dist/index.js +110 -84
  404. package/dist/index.js.map +1 -1
  405. package/dist/interactiveTarget.d.ts +9 -0
  406. package/dist/interactiveTarget.d.ts.map +1 -0
  407. package/dist/style.css +1 -1
  408. package/dist/useReorderDragList.d.ts +36 -7
  409. package/dist/useReorderDragList.d.ts.map +1 -1
  410. package/dist/useRovingTabIndex.d.ts +8 -6
  411. package/dist/useRovingTabIndex.d.ts.map +1 -1
  412. package/dist/useScrollSpy.d.ts +48 -0
  413. package/dist/useScrollSpy.d.ts.map +1 -0
  414. package/package.json +8 -8
  415. package/dist/chunks/ActionBar-GZdcfdQL.js +0 -62
  416. package/dist/chunks/ActionBar-GZdcfdQL.js.map +0 -1
  417. package/dist/chunks/ActionsBar-Fhx_40iP.js +0 -41
  418. package/dist/chunks/ActionsBar-Fhx_40iP.js.map +0 -1
  419. package/dist/chunks/Badge-Bf8Rd1R6.js.map +0 -1
  420. package/dist/chunks/BandEditor-D8I5Uun-.js.map +0 -1
  421. package/dist/chunks/Button-CExdkQcU.js +0 -90
  422. package/dist/chunks/Button-CExdkQcU.js.map +0 -1
  423. package/dist/chunks/Callout-cx5_CWcW.js +0 -122
  424. package/dist/chunks/Callout-cx5_CWcW.js.map +0 -1
  425. package/dist/chunks/Checkbox-BZZsPaVF.js.map +0 -1
  426. package/dist/chunks/ComboBox-D57tNYDD.js.map +0 -1
  427. package/dist/chunks/DataGrid-BVdDMZkQ.js +0 -104
  428. package/dist/chunks/DataGrid-BVdDMZkQ.js.map +0 -1
  429. package/dist/chunks/Dialog-DuOzsR2g.js +0 -61
  430. package/dist/chunks/Dialog-DuOzsR2g.js.map +0 -1
  431. package/dist/chunks/Disclosure-9UgDzc7Z.js +0 -47
  432. package/dist/chunks/Disclosure-9UgDzc7Z.js.map +0 -1
  433. package/dist/chunks/Field-BNqvUJfg.js.map +0 -1
  434. package/dist/chunks/GradientEditor-B_ymIr4Q.js +0 -333
  435. package/dist/chunks/GradientEditor-B_ymIr4Q.js.map +0 -1
  436. package/dist/chunks/Icon-QhLhaGFe.js.map +0 -1
  437. package/dist/chunks/InlineRange-DdIlfGqG.js +0 -29
  438. package/dist/chunks/InlineRange-DdIlfGqG.js.map +0 -1
  439. package/dist/chunks/Input-B9Vh7ASP.js.map +0 -1
  440. package/dist/chunks/ItemList-BZJQReXD.js +0 -42
  441. package/dist/chunks/ItemList-BZJQReXD.js.map +0 -1
  442. package/dist/chunks/Jog-BYrxbAQU.js.map +0 -1
  443. package/dist/chunks/Keycaps-CGNQV2Pz.js.map +0 -1
  444. package/dist/chunks/LayerStack-DOylrQcm.js +0 -142
  445. package/dist/chunks/LayerStack-DOylrQcm.js.map +0 -1
  446. package/dist/chunks/MenuButton-DGE-0DP0.js +0 -60
  447. package/dist/chunks/MenuButton-DGE-0DP0.js.map +0 -1
  448. package/dist/chunks/MeshEditor-CHoGQ9K8.js +0 -123
  449. package/dist/chunks/MeshEditor-CHoGQ9K8.js.map +0 -1
  450. package/dist/chunks/NumberField-CQzS6TjF.js.map +0 -1
  451. package/dist/chunks/PaintField-BVYMu3OI.js.map +0 -1
  452. package/dist/chunks/PaintInput-BzAHCKro.js.map +0 -1
  453. package/dist/chunks/PatternPicker-C4OryrYi.js.map +0 -1
  454. package/dist/chunks/Powerline-B_EH-7Z-.js.map +0 -1
  455. package/dist/chunks/Prefs-FuaJBs3t.js +0 -308
  456. package/dist/chunks/Prefs-FuaJBs3t.js.map +0 -1
  457. package/dist/chunks/Properties-B3KU69NI.js +0 -874
  458. package/dist/chunks/Properties-B3KU69NI.js.map +0 -1
  459. package/dist/chunks/RadioGroup-C6xpdQNg.js.map +0 -1
  460. package/dist/chunks/RangeSlider-CzgeGLVS.js.map +0 -1
  461. package/dist/chunks/Select-BMYVh10x.js +0 -127
  462. package/dist/chunks/Select-BMYVh10x.js.map +0 -1
  463. package/dist/chunks/SelectionPanel-DTpcQidl.js +0 -572
  464. package/dist/chunks/SelectionPanel-DTpcQidl.js.map +0 -1
  465. package/dist/chunks/Sidebar-BlUjn8lD.js.map +0 -1
  466. package/dist/chunks/SidebarPanel-BqHfz6VK.js.map +0 -1
  467. package/dist/chunks/Slider-B2ywUZH6.js.map +0 -1
  468. package/dist/chunks/StatusBar-BFt7Yw5O.js.map +0 -1
  469. package/dist/chunks/Switch-Om3t3ASc.js.map +0 -1
  470. package/dist/chunks/Tabs-EAvYywil.js.map +0 -1
  471. package/dist/chunks/Timeline-BEyKaBXl.js.map +0 -1
  472. package/dist/chunks/Toast-iqLDD_XZ.js.map +0 -1
  473. package/dist/chunks/ToggleBar--9As2PWG.js +0 -75
  474. package/dist/chunks/ToggleBar--9As2PWG.js.map +0 -1
  475. package/dist/chunks/TokenPanel-BL9hlq7x.js +0 -374
  476. package/dist/chunks/TokenPanel-BL9hlq7x.js.map +0 -1
  477. package/dist/chunks/ToolButton-Dd-1T5aX.js.map +0 -1
  478. package/dist/chunks/ToolGroup-BBI-W-Gm.js.map +0 -1
  479. package/dist/chunks/ToolOptionsBar-B2xPWzJf.js +0 -27
  480. package/dist/chunks/ToolOptionsBar-B2xPWzJf.js.map +0 -1
  481. package/dist/chunks/ToolPalette-BmTDDpmz.js +0 -97
  482. package/dist/chunks/ToolPalette-BmTDDpmz.js.map +0 -1
  483. package/dist/chunks/Tooltip-BHre_vbI.js +0 -42
  484. package/dist/chunks/Tooltip-BHre_vbI.js.map +0 -1
  485. package/dist/chunks/icons-Btrs-JD7.js +0 -165
  486. package/dist/chunks/icons-Btrs-JD7.js.map +0 -1
  487. package/dist/chunks/number-f6PydOZK.js +0 -52
  488. package/dist/chunks/number-f6PydOZK.js.map +0 -1
  489. package/dist/chunks/range.module-DSsOIq1R.js +0 -8
  490. package/dist/chunks/range.module-DSsOIq1R.js.map +0 -1
  491. package/dist/chunks/schema-MCVT1MLv.js +0 -47
  492. package/dist/chunks/schema-MCVT1MLv.js.map +0 -1
  493. package/dist/chunks/segmentedControl.module-DmeUMYe3.js +0 -11
  494. package/dist/chunks/segmentedControl.module-DmeUMYe3.js.map +0 -1
  495. package/dist/chunks/useReorderDragList-CSQGd7zQ.js +0 -102
  496. package/dist/chunks/useReorderDragList-CSQGd7zQ.js.map +0 -1
  497. package/dist/chunks/useRovingTabIndex-Dkpf_KhN.js.map +0 -1
  498. package/dist/components/ActionsBar/ActionsBar.d.ts +0 -35
  499. package/dist/components/ActionsBar/ActionsBar.d.ts.map +0 -1
  500. package/dist/components/ActionsBar/index.d.ts +0 -3
  501. package/dist/components/ActionsBar/index.d.ts.map +0 -1
  502. package/dist/components/ActionsBar/index.js +0 -2
  503. package/dist/components/LayerStack/LayerStack.d.ts +0 -62
  504. package/dist/components/LayerStack/LayerStack.d.ts.map +0 -1
  505. package/dist/components/LayerStack/index.d.ts +0 -2
  506. package/dist/components/LayerStack/index.d.ts.map +0 -1
  507. package/dist/components/LayerStack/index.js +0 -2
  508. package/dist/components/Properties/EffectCard.d.ts +0 -69
  509. package/dist/components/Properties/EffectCard.d.ts.map +0 -1
  510. package/dist/components/Properties/PinDot.d.ts +0 -18
  511. package/dist/components/Properties/PinDot.d.ts.map +0 -1
@@ -1,97 +0,0 @@
1
- import { t as e } from "./keyGlyph-Bp0wnLHn.js";
2
- import { t } from "./useRovingTabIndex-Dkpf_KhN.js";
3
- import { t as n } from "./ToolButton-Dd-1T5aX.js";
4
- import { t as r } from "./ToolGroup-BBI-W-Gm.js";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- import { UnknownIcon as o } from "@weasel-js/core";
7
- import { Fragment as s } from "react";
8
- import { eligibleContribution as c } from "@weasel-js/modes";
9
- var l = {
10
- palette: "_palette_tbdk7_1",
11
- horizontal: "_horizontal_tbdk7_11",
12
- paletteBtn: "_paletteBtn_tbdk7_17",
13
- ineligibleBtn: "_ineligibleBtn_tbdk7_20",
14
- separator: "_separator_tbdk7_25"
15
- };
16
- //#endregion
17
- //#region src/components/ToolPalette/formatShortcut.ts
18
- function u(t) {
19
- if (!t) return;
20
- let n = Array.isArray(t.key) ? t.key[0] : t.key, r = [];
21
- return t.mod && r.push("⌘"), t.shift === !0 && r.push("⇧"), t.alt && r.push("⌥"), r.push(e(n)), r;
22
- }
23
- function d(e) {
24
- let t = u(e);
25
- return t ? t.join("") : void 0;
26
- }
27
- //#endregion
28
- //#region src/components/ToolPalette/ToolPalette.tsx
29
- var f = [
30
- "select",
31
- "shape",
32
- "draw",
33
- "type",
34
- "view"
35
- ], p = "misc";
36
- function m(e) {
37
- let t = /* @__PURE__ */ new Map();
38
- for (let n of e) {
39
- let e = n.presentation?.group ?? p, r = t.get(e) ?? [];
40
- r.push(n), t.set(e, r);
41
- }
42
- return t;
43
- }
44
- function h(e, t) {
45
- let n = new Set(e.keys()), r = [];
46
- for (let e of t) n.has(e) && (r.push(e), n.delete(e));
47
- for (let t of e.keys()) n.has(t) && t !== p && (r.push(t), n.delete(t));
48
- return n.has(p) && r.push(p), r;
49
- }
50
- function g(e) {
51
- let t = e.presentation?.icon;
52
- return t == null ? /* @__PURE__ */ i(o, {}) : typeof t == "function" ? t(void 0) : t;
53
- }
54
- function _(e) {
55
- let { tools: o, orientation: u = "vertical", className: p, lookupShortcut: _, modeRegistry: v, groupOrder: y = f } = e, b = m(Object.values(o.registry)), x = h(b, y), S = [
56
- l.palette,
57
- u === "horizontal" && l.horizontal,
58
- p
59
- ].filter(Boolean).join(" "), C = x.flatMap((e) => b.get(e)), w = C.map((e) => v ? c(v, e) : !0), T = C.findIndex((e) => e.id === o.active), E = t({
60
- items: w.map((e) => ({ disabled: !e })),
61
- itemClassName: l.paletteBtn,
62
- ...T >= 0 && w[T] ? { tabStopIndex: T } : {}
63
- }), D = -1;
64
- return /* @__PURE__ */ i("div", {
65
- ref: E.rootRef,
66
- className: S,
67
- role: "toolbar",
68
- "aria-label": "Tools",
69
- children: x.map((e, t) => /* @__PURE__ */ a(s, { children: [t > 0 && /* @__PURE__ */ i("div", {
70
- className: l.separator,
71
- role: "separator",
72
- "aria-orientation": u === "horizontal" ? "vertical" : "horizontal"
73
- }), /* @__PURE__ */ i(r, {
74
- orientation: u,
75
- groupKey: e,
76
- children: b.get(e).map((e) => {
77
- let t = ++D, r = e.presentation?.label ?? e.id, a = e.presentation?.shortcut ?? d(_ ? _(e.id) : e.keybinding), s = w[t], c = v ? v.current().id : void 0, u = !s && c ? `${r}${a ? ` (${a})` : ""} — disabled in ${c} mode` : void 0;
78
- return /* @__PURE__ */ i(n, {
79
- icon: g(e),
80
- label: r,
81
- shortcut: a,
82
- active: o.active === e.id,
83
- tabbable: E.tabIndexFor(t) === 0,
84
- ariaDisabled: !s,
85
- className: [l.paletteBtn, !s && l.ineligibleBtn].filter(Boolean).join(" "),
86
- title: u,
87
- onClick: s ? () => o.setActive(e.id) : () => {},
88
- onKeyDown: E.onKeyDown(t)
89
- }, e.id);
90
- })
91
- })] }, e))
92
- });
93
- }
94
- //#endregion
95
- export { d as n, u as r, _ as t };
96
-
97
- //# sourceMappingURL=ToolPalette-BmTDDpmz.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolPalette-BmTDDpmz.js","names":[],"sources":["../../src/components/ToolPalette/ToolPalette.module.css","../../src/components/ToolPalette/formatShortcut.ts","../../src/components/ToolPalette/ToolPalette.tsx"],"sourcesContent":[".palette {\n display: flex;\n flex-direction: column;\n gap: 4px;\n background: var(--wzl-surface);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n padding: 4px;\n user-select: none;\n}\n.palette.horizontal {\n flex-direction: row;\n}\n\n/* Marker only — `useRovingTabIndex` finds the palette's buttons by this class.\n Carries no styles; deleting it breaks keyboard navigation. */\n.paletteBtn {}\n\n/* Applied to ineligible tool buttons in the active mode. */\n.ineligibleBtn {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.separator {\n background: var(--wzl-border);\n}\n.palette:not(.horizontal) .separator {\n height: 1px;\n margin: 2px 0;\n}\n.palette.horizontal .separator {\n width: 1px;\n margin: 0 2px;\n}\n","import { keyGlyph } from '../Keycaps/keyGlyph';\n\nexport interface ShortcutInput {\n key: string | readonly string[];\n mod?: boolean;\n alt?: boolean;\n shift?: boolean | 'optional';\n}\n\n/** Format a shortcut as an array of display chips, one per key — modifier\n * icons (⌘, ↑, ⌥) followed by the key glyph. UIs that want a boxed\n * per-key look render each chip in its own element. `shift: 'optional'` is\n * treated as falsy. */\nexport function formatShortcutParts(b: ShortcutInput | undefined): readonly string[] | undefined {\n if (!b) return undefined;\n const rawKey = Array.isArray(b.key) ? b.key[0] : (b.key as string);\n const parts: string[] = [];\n if (b.mod) parts.push('⌘');\n if (b.shift === true) parts.push('⇧');\n if (b.alt) parts.push('⌥');\n parts.push(keyGlyph(rawKey));\n return parts;\n}\n\n/** Format a shortcut as a single display string. Order: mod, shift, alt,\n * key. Returns `undefined` for `undefined` input so callers can `??` a\n * fallback. When `key` is an array, the first element is used. `shift: 'optional'`\n * is treated as falsy. */\nexport function formatShortcut(b: ShortcutInput | undefined): string | undefined {\n const parts = formatShortcutParts(b);\n return parts ? parts.join('') : undefined;\n}\n","import { Fragment, type ReactNode } from 'react';\nimport { UnknownIcon } from '@weasel-js/core';\nimport type { AnyTool, ToolsApi } from '@weasel-js/core';\nimport { eligibleContribution, type ModeRegistry } from '@weasel-js/modes';\nimport { ToolButton } from '../ToolButton';\nimport { ToolGroup } from '../ToolGroup';\nimport { useRovingTabIndex } from '../../useRovingTabIndex';\nimport s from './ToolPalette.module.css';\nimport { formatShortcut, type ShortcutInput } from './formatShortcut';\n\nconst DEFAULT_GROUP_ORDER = ['select', 'shape', 'draw', 'type', 'view'] as const;\nconst MISC = 'misc';\n\nfunction partitionByGroup(list: AnyTool[]): Map<string, AnyTool[]> {\n const groups = new Map<string, AnyTool[]>();\n for (const tool of list) {\n const g = tool.presentation?.group ?? MISC;\n const bucket = groups.get(g) ?? [];\n bucket.push(tool);\n groups.set(g, bucket);\n }\n return groups;\n}\n\nfunction orderedGroupKeys(\n groups: Map<string, AnyTool[]>,\n groupOrder: readonly string[],\n): string[] {\n const seen = new Set(groups.keys());\n const ordered: string[] = [];\n for (const known of groupOrder) {\n if (seen.has(known)) {\n ordered.push(known);\n seen.delete(known);\n }\n }\n // Unknown groups in insertion order (Map preserves it), misc last.\n for (const key of groups.keys()) {\n if (seen.has(key) && key !== MISC) {\n ordered.push(key);\n seen.delete(key);\n }\n }\n if (seen.has(MISC)) ordered.push(MISC);\n return ordered;\n}\n\nfunction resolveIcon(tool: AnyTool): ReactNode {\n const rawIcon = tool.presentation?.icon;\n if (rawIcon == null) return <UnknownIcon />;\n if (typeof rawIcon === 'function') return rawIcon(undefined);\n return rawIcon;\n}\n\n/** Props for {@link ToolPalette}. */\nexport interface ToolPaletteProps {\n tools: ToolsApi;\n orientation?: 'vertical' | 'horizontal';\n className?: string;\n /** Derive the keyboard shortcut for a tool button from the action registry.\n * Called with the tool's id; return `undefined` to suppress a chip. When\n * omitted, falls back to `tool.keybinding` (legacy path). */\n lookupShortcut?: (toolId: string) => ShortcutInput | undefined;\n /**\n * Optional mode registry. When provided, tools whose `capabilities` do not\n * match the current mode are rendered greyed-out, aria-disabled, and their\n * onClick is suppressed. When omitted, all tools are treated as eligible\n * (preserves existing behaviour in consumers that haven't wired a registry).\n */\n modeRegistry?: ModeRegistry;\n /**\n * Presentation-group display order. Groups not listed keep their registry\n * insertion order after the listed ones; `misc` always renders last.\n * Defaults to `['select', 'shape', 'draw', 'type', 'view']`.\n */\n groupOrder?: readonly string[];\n}\n\n/**\n * Toolbar of the registered tools, split into separator-divided groups by\n * each tool's presentation group and navigable by arrow keys. Clicking a\n * button makes that tool active.\n *\n * Given a `modeRegistry`, tools whose capabilities the current mode does not\n * allow render greyed out and inert rather than disappearing.\n */\nexport function ToolPalette(props: ToolPaletteProps) {\n const {\n tools, orientation = 'vertical', className, lookupShortcut, modeRegistry,\n groupOrder = DEFAULT_GROUP_ORDER,\n } = props;\n const list = Object.values(tools.registry);\n const groups = partitionByGroup(list);\n const groupKeys = orderedGroupKeys(groups, groupOrder);\n const cls = [s.palette, orientation === 'horizontal' && s.horizontal, className]\n .filter(Boolean).join(' ');\n\n // Flat, in DOM order — the roving-tabindex hook indexes by this order.\n const ordered = groupKeys.flatMap((k) => groups.get(k)!);\n const eligibility = ordered.map(\n (tool) => (modeRegistry ? eligibleContribution(modeRegistry, tool) : true),\n );\n const activeIndex = ordered.findIndex((t) => t.id === tools.active);\n const roving = useRovingTabIndex({\n items: eligibility.map((enabled) => ({ disabled: !enabled })),\n itemClassName: s.paletteBtn,\n // An ineligible active tool can't hold the tab stop; fall back to the\n // hook's first-enabled default.\n ...(activeIndex >= 0 && eligibility[activeIndex] ? { tabStopIndex: activeIndex } : {}),\n });\n let index = -1;\n\n return (\n <div\n ref={roving.rootRef}\n className={cls}\n role=\"toolbar\"\n aria-label=\"Tools\"\n >\n {groupKeys.map((key, i) => (\n <Fragment key={key}>\n {i > 0 && (\n <div\n className={s.separator}\n role=\"separator\"\n aria-orientation={orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n />\n )}\n <ToolGroup orientation={orientation} groupKey={key}>\n {groups.get(key)!.map((tool) => {\n const i = ++index;\n const label = tool.presentation?.label ?? tool.id;\n const shortcut = tool.presentation?.shortcut\n ?? formatShortcut(lookupShortcut ? lookupShortcut(tool.id) : tool.keybinding);\n const enabled = eligibility[i];\n const modeName = modeRegistry ? modeRegistry.current().id : undefined;\n const resolvedTitle = !enabled && modeName\n ? `${label}${shortcut ? ` (${shortcut})` : ''} — disabled in ${modeName} mode`\n : undefined;\n return (\n <ToolButton\n key={tool.id}\n icon={resolveIcon(tool)}\n label={label}\n shortcut={shortcut}\n active={tools.active === tool.id}\n tabbable={roving.tabIndexFor(i) === 0}\n ariaDisabled={!enabled}\n className={[s.paletteBtn, !enabled && s.ineligibleBtn].filter(Boolean).join(' ')}\n title={resolvedTitle}\n onClick={enabled ? () => tools.setActive(tool.id) : () => {}}\n onKeyDown={roving.onKeyDown(i)}\n />\n );\n })}\n </ToolGroup>\n </Fragment>\n ))}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { r as e } from "./portalHost-CjpCnuGU.js";
2
- import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
3
- import { OverlayArrow as i, Tooltip as a, TooltipTrigger as o } from "react-aria-components";
4
- var s = {
5
- tooltip: "_tooltip_1ev6z_1",
6
- arrow: "_arrow_1ev6z_22"
7
- };
8
- //#endregion
9
- //#region src/components/Tooltip/Tooltip.tsx
10
- function c(e) {
11
- let { delay: t = 600, closeDelay: r = 0, ...i } = e;
12
- return /* @__PURE__ */ n(o, {
13
- delay: t,
14
- closeDelay: r,
15
- ...i
16
- });
17
- }
18
- function l(o) {
19
- let { children: c, className: l, placement: u = "top", offset: d = 8, portalContainer: f, ...p } = o, { anchor: m, portalProps: h } = e(f);
20
- return /* @__PURE__ */ r(t, { children: [m, /* @__PURE__ */ r(a, {
21
- ...p,
22
- placement: u,
23
- offset: d,
24
- className: [s.tooltip, l].filter(Boolean).join(" "),
25
- "data-weasel-overlay": "",
26
- ...h,
27
- children: [/* @__PURE__ */ n(i, {
28
- className: s.arrow,
29
- children: /* @__PURE__ */ n("svg", {
30
- width: 8,
31
- height: 8,
32
- viewBox: "0 0 8 8",
33
- "aria-hidden": "true",
34
- children: /* @__PURE__ */ n("path", { d: "M0 0 L4 4 L8 0" })
35
- })
36
- }), c]
37
- })] });
38
- }
39
- //#endregion
40
- export { c as n, l as t };
41
-
42
- //# sourceMappingURL=Tooltip-BHre_vbI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tooltip-BHre_vbI.js","names":[],"sources":["../../src/components/Tooltip/Tooltip.module.css","../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":[".tooltip {\n /* Above Dialog overlay (1000) and ToastRegion (1100) — RAC sets no z-index. */\n z-index: 1200;\n background: var(--wzl-surface);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);\n color: var(--wzl-fg);\n font-family: var(--wzl-font-ui);\n font-size: var(--wzl-font-size-sm);\n line-height: 1.3;\n padding: 4px 8px;\n max-width: 260px;\n transition: opacity var(--wzl-motion-fast);\n}\n\n.tooltip[data-entering],\n.tooltip[data-exiting] {\n opacity: 0;\n}\n\n.arrow svg {\n display: block;\n fill: var(--wzl-surface);\n stroke: var(--wzl-border);\n stroke-width: 1;\n}\n\n.arrow[data-placement='bottom'] svg {\n transform: rotate(180deg);\n}\n\n.arrow[data-placement='left'] svg {\n transform: rotate(-90deg);\n}\n\n.arrow[data-placement='right'] svg {\n transform: rotate(90deg);\n}\n","import type { ReactNode } from 'react';\nimport {\n TooltipTrigger as RACTooltipTrigger,\n Tooltip as RACTooltip,\n OverlayArrow,\n type TooltipProps as RACTooltipProps,\n type TooltipTriggerComponentProps,\n} from 'react-aria-components';\nimport { useOverlayPortal, type OverlayPortalProps, type WithoutPortalTarget } from '../../overlays/portalHost';\nimport s from './Tooltip.module.css';\n\n/**\n * Props for {@link TooltipTrigger} — React Aria's `TooltipTrigger` props\n * unchanged.\n */\nexport type TooltipTriggerProps = TooltipTriggerComponentProps;\n\n/**\n * TooltipTrigger with kit defaults: ~600 ms open delay, instant close.\n * Wrap a focusable trigger plus a `<Tooltip>`. Non-RAC triggers (plain\n * `<button>` etc.) must be wrapped in `<Focusable>` from\n * react-aria-components so hover/focus props reach the DOM node.\n *\n * Caveat: while a tooltip is open, react-aria captures the first Escape\n * keydown (document-level, capture phase) to dismiss it — app-level\n * Escape handlers (deselect, cancel gesture) see only the second press.\n */\nexport function TooltipTrigger(props: TooltipTriggerProps) {\n const { delay = 600, closeDelay = 0, ...rest } = props;\n return <RACTooltipTrigger delay={delay} closeDelay={closeDelay} {...rest} />;\n}\n\n/** Props for {@link Tooltip}, on top of React Aria's `Tooltip` props. */\nexport type TooltipProps = Omit<WithoutPortalTarget<RACTooltipProps>, 'children' | 'className'> &\n OverlayPortalProps & {\n children?: ReactNode;\n className?: string;\n };\n\n/**\n * Tooltip bubble with an arrow pointing at the trigger. Non-interactive\n * content only (ARIA tooltip semantics). Use inside `<TooltipTrigger>`.\n */\nexport function Tooltip(props: TooltipProps) {\n const { children, className, placement = 'top', offset = 8, portalContainer, ...rest } = props;\n const { anchor, portalProps } = useOverlayPortal(portalContainer);\n return (\n <>\n {anchor}\n <RACTooltip\n {...rest}\n placement={placement}\n offset={offset}\n className={[s.tooltip, className].filter(Boolean).join(' ')}\n data-weasel-overlay=\"\"\n {...portalProps}\n >\n <OverlayArrow className={s.arrow}>\n <svg width={8} height={8} viewBox=\"0 0 8 8\" aria-hidden=\"true\">\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n {children}\n </RACTooltip>\n </>\n );\n}\n"],"mappings":";;;;;;;;;AC2BA,SAAgB,EAAe,GAA4B;CACzD,IAAM,EAAE,WAAQ,KAAK,gBAAa,GAAG,GAAG,MAAS;AACjD,QAAO,kBAAC,GAAD;EAA0B;EAAmB;EAAY,GAAI;EAAQ,CAAA;;AAc9E,SAAgB,EAAQ,GAAqB;CAC3C,IAAM,EAAE,aAAU,cAAW,eAAY,OAAO,YAAS,GAAG,oBAAiB,GAAG,MAAS,GACnF,EAAE,WAAQ,mBAAgB,EAAiB,EAAgB;AACjE,QACE,kBAAA,GAAA,EAAA,UAAA,CACG,GACD,kBAAC,GAAD;EACE,GAAI;EACO;EACH;EACR,WAAW,CAAC,EAAE,SAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAC3D,uBAAoB;EACpB,GAAI;YANN,CAQE,kBAAC,GAAD;GAAc,WAAW,EAAE;aACzB,kBAAC,OAAD;IAAK,OAAO;IAAG,QAAQ;IAAG,SAAQ;IAAU,eAAY;cACtD,kBAAC,QAAD,EAAM,GAAE,kBAAmB,CAAA;IACvB,CAAA;GACO,CAAA,EACd,EACU;IACZ,EAAA,CAAA"}
@@ -1,165 +0,0 @@
1
- import { t as e } from "./Icon-QhLhaGFe.js";
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { ArrowIcon as n, EllipseIcon as r, EyedropperIcon as i, HandIcon as a, ImageIcon as o, LassoIcon as s, LineIcon as c, PenIcon as l, PencilIcon as u, PolygonIcon as d, RectIcon as f, SelectIcon as p, StarIcon as m, TextIcon as h, UnknownIcon as g } from "@weasel-js/core";
4
- //#region src/icons/index.tsx
5
- var _ = (n) => /* @__PURE__ */ t(e, {
6
- name: "clone",
7
- ...n
8
- }), v = (n) => /* @__PURE__ */ t(e, {
9
- name: "reset",
10
- ...n
11
- }), y = (n) => /* @__PURE__ */ t(e, {
12
- name: "close",
13
- ...n
14
- }), b = (n) => /* @__PURE__ */ t(e, {
15
- name: "export",
16
- ...n
17
- }), x = (n) => /* @__PURE__ */ t(e, {
18
- name: "zoomIn",
19
- ...n
20
- }), S = (n) => /* @__PURE__ */ t(e, {
21
- name: "pan",
22
- ...n
23
- }), C = (n) => /* @__PURE__ */ t(e, {
24
- name: "add",
25
- ...n
26
- }), w = (n) => /* @__PURE__ */ t(e, {
27
- name: "modeLight",
28
- ...n
29
- }), T = (n) => /* @__PURE__ */ t(e, {
30
- name: "modeDark",
31
- ...n
32
- }), E = (n) => /* @__PURE__ */ t(e, {
33
- name: "modeAuto",
34
- ...n
35
- }), D = (n) => /* @__PURE__ */ t(e, {
36
- name: "remove",
37
- ...n
38
- }), O = (n) => /* @__PURE__ */ t(e, {
39
- name: "delete",
40
- ...n
41
- }), k = (n) => /* @__PURE__ */ t(e, {
42
- name: "sort",
43
- ...n
44
- }), A = (n) => /* @__PURE__ */ t(e, {
45
- name: "undo",
46
- ...n
47
- }), j = (n) => /* @__PURE__ */ t(e, {
48
- name: "redo",
49
- ...n
50
- }), M = (n) => /* @__PURE__ */ t(e, {
51
- name: "zoomOut",
52
- ...n
53
- }), N = (n) => /* @__PURE__ */ t(e, {
54
- name: "fit",
55
- ...n
56
- }), P = (n) => /* @__PURE__ */ t(e, {
57
- name: "snapshot",
58
- ...n
59
- }), F = (n) => /* @__PURE__ */ t(e, {
60
- name: "play",
61
- ...n
62
- }), I = (n) => /* @__PURE__ */ t(e, {
63
- name: "pause",
64
- ...n
65
- }), L = (n) => /* @__PURE__ */ t(e, {
66
- name: "stop",
67
- ...n
68
- }), R = (n) => /* @__PURE__ */ t(e, {
69
- name: "stepBack",
70
- ...n
71
- }), z = (n) => /* @__PURE__ */ t(e, {
72
- name: "stepForward",
73
- ...n
74
- }), B = z, ee = (n) => /* @__PURE__ */ t(e, {
75
- name: "crosshair",
76
- ...n
77
- }), V = (n) => /* @__PURE__ */ t(e, {
78
- name: "fullscreen",
79
- ...n
80
- }), H = (n) => /* @__PURE__ */ t(e, {
81
- name: "compare",
82
- ...n
83
- }), U = (n) => /* @__PURE__ */ t(e, {
84
- name: "filter",
85
- ...n
86
- }), W = (n) => /* @__PURE__ */ t(e, {
87
- name: "search",
88
- ...n
89
- }), G = (n) => /* @__PURE__ */ t(e, {
90
- name: "loupe",
91
- ...n
92
- }), K = (n) => /* @__PURE__ */ t(e, {
93
- name: "layers",
94
- ...n
95
- }), q = (n) => /* @__PURE__ */ t(e, {
96
- name: "lock",
97
- ...n
98
- }), J = (n) => /* @__PURE__ */ t(e, {
99
- name: "unlock",
100
- ...n
101
- }), Y = (n) => /* @__PURE__ */ t(e, {
102
- name: "visible",
103
- ...n
104
- }), X = (n) => /* @__PURE__ */ t(e, {
105
- name: "hidden",
106
- ...n
107
- }), Z = (n) => /* @__PURE__ */ t(e, {
108
- name: "pin",
109
- ...n
110
- }), Q = (n) => /* @__PURE__ */ t(e, {
111
- name: "link",
112
- ...n
113
- }), $ = (n) => /* @__PURE__ */ t(e, {
114
- name: "collapse",
115
- ...n
116
- }), te = (n) => /* @__PURE__ */ t(e, {
117
- name: "expand",
118
- ...n
119
- }), ne = (n) => /* @__PURE__ */ t(e, {
120
- name: "chevron",
121
- ...n
122
- }), re = (n) => /* @__PURE__ */ t(e, {
123
- name: "tune",
124
- ...n
125
- }), ie = (n) => /* @__PURE__ */ t(e, {
126
- name: "grid",
127
- ...n
128
- }), ae = (n) => /* @__PURE__ */ t(e, {
129
- name: "snap",
130
- ...n
131
- }), oe = (n) => /* @__PURE__ */ t(e, {
132
- name: "measure",
133
- ...n
134
- }), se = (n) => /* @__PURE__ */ t(e, {
135
- name: "randomize",
136
- ...n
137
- }), ce = (n) => /* @__PURE__ */ t(e, {
138
- name: "refresh",
139
- ...n
140
- }), le = (n) => /* @__PURE__ */ t(e, {
141
- name: "info",
142
- ...n
143
- }), ue = (n) => /* @__PURE__ */ t(e, {
144
- name: "warning",
145
- ...n
146
- }), de = (n) => /* @__PURE__ */ t(e, {
147
- name: "error",
148
- ...n
149
- }), fe = (n) => /* @__PURE__ */ t(e, {
150
- name: "busy",
151
- ...n
152
- }), pe = (n) => /* @__PURE__ */ t(e, {
153
- name: "layoutRows",
154
- ...n
155
- }), me = (n) => /* @__PURE__ */ t(e, {
156
- name: "layoutColumns",
157
- ...n
158
- }), he = (n) => /* @__PURE__ */ t(e, {
159
- name: "layoutGrid",
160
- ...n
161
- });
162
- //#endregion
163
- export { P as $, Q as A, u as B, le as C, he as D, me as E, T as F, f as G, F as H, w as I, D as J, j as K, S as L, G as M, oe as N, pe as O, E as P, ae as Q, I as R, o as S, K as T, d as U, Z as V, se as W, W as X, v as Y, p as Z, N as _, _ as a, L as at, a as b, H as c, A as ct, r as d, Y as dt, k as et, de as f, ue as ft, U as g, i as h, ne as i, B as it, q as j, c as k, ee as l, g as lt, b as m, M as mt, n, R as nt, y as o, h as ot, te as p, x as pt, ce as q, fe as r, z as rt, $ as s, re as st, C as t, m as tt, O as u, J as ut, V as v, s as w, X as x, ie as y, l as z };
164
-
165
- //# sourceMappingURL=icons-Btrs-JD7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons-Btrs-JD7.js","names":[],"sources":["../../src/icons/index.tsx"],"sourcesContent":["import { Icon, type IconProps } from './Icon';\n\nexport { Icon, isFillable } from './Icon';\nexport type { IconProps } from './Icon';\nexport { ICON_FILLS, ICON_GROUPS, ICON_PATHS } from './paths';\nexport type { FillableIconName, IconName } from './paths';\n\n// Tool glyphs live in @weasel-js/core because core needs them for\n// `Tool.presentation.icon` defaults and cannot depend on this package.\n// Re-exported here so consumers have one import site for the whole set.\nexport {\n SelectIcon, LassoIcon, RectIcon, EllipseIcon, ImageIcon, EyedropperIcon,\n LineIcon, ArrowIcon, PolygonIcon, StarIcon, PencilIcon, TextIcon, PenIcon, HandIcon,\n UnknownIcon,\n} from '@weasel-js/core';\n\nexport const CloneIcon = (p: IconProps) => <Icon name=\"clone\" {...p} />;\nexport const ResetIcon = (p: IconProps) => <Icon name=\"reset\" {...p} />;\nexport const CloseIcon = (p: IconProps) => <Icon name=\"close\" {...p} />;\nexport const ExportIcon = (p: IconProps) => <Icon name=\"export\" {...p} />;\nexport const ZoomInIcon = (p: IconProps) => <Icon name=\"zoomIn\" {...p} />;\nexport const PanIcon = (p: IconProps) => <Icon name=\"pan\" {...p} />;\nexport const AddIcon = (p: IconProps) => <Icon name=\"add\" {...p} />;\nexport const ModeLightIcon = (p: IconProps) => <Icon name=\"modeLight\" {...p} />;\nexport const ModeDarkIcon = (p: IconProps) => <Icon name=\"modeDark\" {...p} />;\nexport const ModeAutoIcon = (p: IconProps) => <Icon name=\"modeAuto\" {...p} />;\nexport const RemoveIcon = (p: IconProps) => <Icon name=\"remove\" {...p} />;\nexport const DeleteIcon = (p: IconProps) => <Icon name=\"delete\" {...p} />;\nexport const SortIcon = (p: IconProps) => <Icon name=\"sort\" {...p} />;\nexport const UndoIcon = (p: IconProps) => <Icon name=\"undo\" {...p} />;\nexport const RedoIcon = (p: IconProps) => <Icon name=\"redo\" {...p} />;\nexport const ZoomOutIcon = (p: IconProps) => <Icon name=\"zoomOut\" {...p} />;\nexport const FitIcon = (p: IconProps) => <Icon name=\"fit\" {...p} />;\nexport const SnapshotIcon = (p: IconProps) => <Icon name=\"snapshot\" {...p} />;\nexport const PlayIcon = (p: IconProps) => <Icon name=\"play\" {...p} />;\nexport const PauseIcon = (p: IconProps) => <Icon name=\"pause\" {...p} />;\nexport const StopIcon = (p: IconProps) => <Icon name=\"stop\" {...p} />;\nexport const StepBackIcon = (p: IconProps) => <Icon name=\"stepBack\" {...p} />;\nexport const StepForwardIcon = (p: IconProps) => <Icon name=\"stepForward\" {...p} />;\n/** @deprecated Use {@link StepForwardIcon}; `step` alone stopped naming a direction. */\nexport const StepIcon = StepForwardIcon;\nexport const CrosshairIcon = (p: IconProps) => <Icon name=\"crosshair\" {...p} />;\nexport const FullscreenIcon = (p: IconProps) => <Icon name=\"fullscreen\" {...p} />;\nexport const CompareIcon = (p: IconProps) => <Icon name=\"compare\" {...p} />;\nexport const FilterIcon = (p: IconProps) => <Icon name=\"filter\" {...p} />;\nexport const SearchIcon = (p: IconProps) => <Icon name=\"search\" {...p} />;\nexport const LoupeIcon = (p: IconProps) => <Icon name=\"loupe\" {...p} />;\nexport const LayersIcon = (p: IconProps) => <Icon name=\"layers\" {...p} />;\nexport const LockIcon = (p: IconProps) => <Icon name=\"lock\" {...p} />;\nexport const UnlockIcon = (p: IconProps) => <Icon name=\"unlock\" {...p} />;\nexport const VisibleIcon = (p: IconProps) => <Icon name=\"visible\" {...p} />;\nexport const HiddenIcon = (p: IconProps) => <Icon name=\"hidden\" {...p} />;\nexport const PinIcon = (p: IconProps) => <Icon name=\"pin\" {...p} />;\nexport const LinkIcon = (p: IconProps) => <Icon name=\"link\" {...p} />;\nexport const CollapseIcon = (p: IconProps) => <Icon name=\"collapse\" {...p} />;\nexport const ExpandIcon = (p: IconProps) => <Icon name=\"expand\" {...p} />;\nexport const ChevronIcon = (p: IconProps) => <Icon name=\"chevron\" {...p} />;\nexport const TuneIcon = (p: IconProps) => <Icon name=\"tune\" {...p} />;\nexport const GridIcon = (p: IconProps) => <Icon name=\"grid\" {...p} />;\nexport const SnapIcon = (p: IconProps) => <Icon name=\"snap\" {...p} />;\nexport const MeasureIcon = (p: IconProps) => <Icon name=\"measure\" {...p} />;\nexport const RandomizeIcon = (p: IconProps) => <Icon name=\"randomize\" {...p} />;\nexport const RefreshIcon = (p: IconProps) => <Icon name=\"refresh\" {...p} />;\nexport const InfoIcon = (p: IconProps) => <Icon name=\"info\" {...p} />;\nexport const WarningIcon = (p: IconProps) => <Icon name=\"warning\" {...p} />;\nexport const ErrorIcon = (p: IconProps) => <Icon name=\"error\" {...p} />;\nexport const BusyIcon = (p: IconProps) => <Icon name=\"busy\" {...p} />;\nexport const LayoutRowsIcon = (p: IconProps) => <Icon name=\"layoutRows\" {...p} />;\nexport const LayoutColumnsIcon = (p: IconProps) => <Icon name=\"layoutColumns\" {...p} />;\nexport const LayoutGridIcon = (p: IconProps) => <Icon name=\"layoutGrid\" {...p} />;\n"],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- //#region src/format/number.ts
2
- var e = "−";
3
- function t(e, t) {
4
- return (Number.isFinite(e) ? e.toLocaleString(void 0, t) : String(e)).replace(/^-/, "−");
5
- }
6
- function n(e) {
7
- return Number(e.replace("−", "-"));
8
- }
9
- var r = {
10
- k: 3,
11
- m: 6,
12
- b: 9,
13
- t: 12
14
- };
15
- function i(e, n = 0) {
16
- if (!Number.isFinite(e)) return t(e);
17
- let r = Math.abs(e) < 1e3 ? {
18
- useGrouping: !1,
19
- minimumFractionDigits: n,
20
- maximumFractionDigits: n
21
- } : {
22
- notation: "compact",
23
- minimumFractionDigits: 1,
24
- maximumFractionDigits: 1
25
- };
26
- return e.toLocaleString("en-US", r).replace(/^-/, "−");
27
- }
28
- function a(e, t) {
29
- if (t) {
30
- let n = e.trim(), r = o(n, t);
31
- if (r !== void 0) {
32
- let e = a(n.slice(0, -r.length)), i = t[r];
33
- return i < 1 ? e / (1 / i) : e * i;
34
- }
35
- }
36
- let n = e.trim().replace("−", "-"), i = r[n.slice(-1).toLowerCase()];
37
- return i !== void 0 && (n = n.slice(0, -1).trimEnd()), /^[-+]?\d{1,3}(,\d{3})+(\.\d*)?$/.test(n) && (n = n.replace(/,/g, "")), /\d/.test(n) ? Number(i === void 0 ? n : `${n}e${i}`) : NaN;
38
- }
39
- function o(e, t) {
40
- let n = Object.keys(t).filter((e) => e !== "").sort((e, t) => t.length - e.length), r = e.toLowerCase();
41
- return n.find((t) => e.endsWith(t)) ?? n.find((e) => r.endsWith(e.toLowerCase()));
42
- }
43
- function s(e) {
44
- return String(e).replace(/^-/, "−");
45
- }
46
- function c(e) {
47
- return Number.isFinite(e) ? e <= 2 ? `${s(Math.round(e * 100))}%` : e >= 100 ? `${Math.round(e).toLocaleString("en-US")}x` : `${s(Math.round(e * 10) / 10)}x` : String(e);
48
- }
49
- //#endregion
50
- export { a, c as i, i as n, n as o, t as r, e as t };
51
-
52
- //# sourceMappingURL=number-f6PydOZK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"number-f6PydOZK.js","names":[],"sources":["../../src/format/number.ts"],"sourcesContent":["/**\n * Display-formatter for numbers. Use this anywhere a number is shown to\n * a user. The whole point: negative values get prefixed with the real\n * MINUS SIGN (U+2212) instead of the ASCII HYPHEN-MINUS (U+002D) that\n * `toLocaleString` and template literals produce by default.\n *\n * U+2212 is the same visual width as `+` and reads as a sign rather\n * than a hyphen — columns of signed numbers align cleanly and the\n * glyph doesn't get confused with a bullet or list dash.\n */\nexport const MINUS_SIGN = '−';\n\n/**\n * Formats a number for display, substituting {@link MINUS_SIGN} for the ASCII\n * hyphen `toLocaleString` emits. Non-finite values stringify as-is.\n */\nexport function formatNumber(value: number, options?: Intl.NumberFormatOptions): string {\n const formatted = Number.isFinite(value)\n ? value.toLocaleString(undefined, options)\n : String(value);\n return formatted.replace(/^-/, MINUS_SIGN);\n}\n\n/**\n * Parses a string that may carry {@link MINUS_SIGN} in place of the ASCII\n * hyphen. The inverse of {@link formatNumber} for any editing surface that\n * renders its value through it and reads the edited text back.\n */\nexport function parseSignedNumber(text: string): number {\n return Number(text.replace(MINUS_SIGN, '-'));\n}\n\n/** Powers of ten a typed magnitude suffix stands for. */\nconst EXPONENTS: Record<string, number> = { k: 3, m: 6, b: 9, t: 12 };\n\n/**\n * Formats a number the way a `compact` readout shows it: below 1,000 at\n * `decimals` places, from 1,000 up at one decimal with a magnitude suffix\n * (`40.0K`, `2.0M`). Always `en-US`, so {@link parseNumber} reads it back.\n */\nexport function formatCompact(value: number, decimals = 0): string {\n if (!Number.isFinite(value)) return formatNumber(value);\n const options: Intl.NumberFormatOptions =\n Math.abs(value) < 1000\n ? { useGrouping: false, minimumFractionDigits: decimals, maximumFractionDigits: decimals }\n : { notation: 'compact', minimumFractionDigits: 1, maximumFractionDigits: 1 };\n return value.toLocaleString('en-US', options).replace(/^-/, MINUS_SIGN);\n}\n\n/**\n * Reads a typed number: anything {@link parseSignedNumber} reads, plus\n * thousands commas in the `40,000` shape and a `k`/`m`/`b`/`t` suffix in either\n * case (`2.5m` is 2,500,000). Empty text is NaN rather than zero.\n *\n * Given `units` — a suffix mapped to the factor it scales by — a trailing unit\n * name is read first: the longest match wins, exact case before any case, and\n * a unit beats a magnitude suffix, so with `m` accepted `2m` is `2 * units.m`.\n */\nexport function parseNumber(text: string, units?: Readonly<Record<string, number>>): number {\n if (units) {\n const trimmed = text.trim();\n const name = unitSuffixOf(trimmed, units);\n if (name !== undefined) {\n const n = parseNumber(trimmed.slice(0, -name.length));\n const factor = units[name]!;\n // Divided by the reciprocal below 1: 12 * 0.1 is 1.2000000000000002, 12 / 10 is 1.2.\n return factor < 1 ? n / (1 / factor) : n * factor;\n }\n }\n let t = text.trim().replace(MINUS_SIGN, '-');\n const exponent = EXPONENTS[t.slice(-1).toLowerCase()];\n if (exponent !== undefined) t = t.slice(0, -1).trimEnd();\n if (/^[-+]?\\d{1,3}(,\\d{3})+(\\.\\d*)?$/.test(t)) t = t.replace(/,/g, '');\n if (!/\\d/.test(t)) return Number.NaN;\n // Scaled through the exponent rather than by multiplying: 1.1 * 1000 is 1100.0000000000002.\n return Number(exponent === undefined ? t : `${t}e${exponent}`);\n}\n\n/** The longest unit name `text` ends with — exact case first, then any case. */\nfunction unitSuffixOf(text: string, units: Readonly<Record<string, number>>): string | undefined {\n const names = Object.keys(units).filter((n) => n !== '').sort((a, b) => b.length - a.length);\n const lower = text.toLowerCase();\n return names.find((n) => text.endsWith(n)) ?? names.find((n) => lower.endsWith(n.toLowerCase()));\n}\n\n/** {@link String} with the leading ASCII hyphen swapped for {@link MINUS_SIGN}.\n * Locale-independent, unlike `toLocaleString`. */\nfunction signedString(value: number): string {\n return String(value).replace(/^-/, MINUS_SIGN);\n}\n\n/**\n * Formats a zoom factor for display. Below 2x a percentage reads naturally;\n * past it the numbers get long and a multiplier is what people say out loud,\n * so 250% shows as `2.5x`. Past 100x a tenth is noise, so the decimal is\n * dropped and thousands are grouped: `1009.74` reads as `1,010x`.\n */\nexport function formatZoom(zoom: number): string {\n if (!Number.isFinite(zoom)) return String(zoom);\n if (zoom <= 2) return `${signedString(Math.round(zoom * 100))}%`;\n if (zoom >= 100) return `${Math.round(zoom).toLocaleString('en-US')}x`;\n return `${signedString(Math.round(zoom * 10) / 10)}x`;\n}\n"],"mappings":";AAUA,IAAa,IAAa;AAM1B,SAAgB,EAAa,GAAe,GAA4C;AAItF,SAHkB,OAAO,SAAS,EAAM,GACpC,EAAM,eAAe,KAAA,GAAW,EAAQ,GACxC,OAAO,EAAM,EACA,QAAQ,MAAA,IAAiB;;AAQ5C,SAAgB,EAAkB,GAAsB;AACtD,QAAO,OAAO,EAAK,QAAA,KAAoB,IAAI,CAAC;;AAI9C,IAAM,IAAoC;CAAE,GAAG;CAAG,GAAG;CAAG,GAAG;CAAG,GAAG;CAAI;AAOrE,SAAgB,EAAc,GAAe,IAAW,GAAW;AACjE,KAAI,CAAC,OAAO,SAAS,EAAM,CAAE,QAAO,EAAa,EAAM;CACvD,IAAM,IACJ,KAAK,IAAI,EAAM,GAAG,MACd;EAAE,aAAa;EAAO,uBAAuB;EAAU,uBAAuB;EAAU,GACxF;EAAE,UAAU;EAAW,uBAAuB;EAAG,uBAAuB;EAAG;AACjF,QAAO,EAAM,eAAe,SAAS,EAAQ,CAAC,QAAQ,MAAA,IAAiB;;AAYzE,SAAgB,EAAY,GAAc,GAAkD;AAC1F,KAAI,GAAO;EACT,IAAM,IAAU,EAAK,MAAM,EACrB,IAAO,EAAa,GAAS,EAAM;AACzC,MAAI,MAAS,KAAA,GAAW;GACtB,IAAM,IAAI,EAAY,EAAQ,MAAM,GAAG,CAAC,EAAK,OAAO,CAAC,EAC/C,IAAS,EAAM;AAErB,UAAO,IAAS,IAAI,KAAK,IAAI,KAAU,IAAI;;;CAG/C,IAAI,IAAI,EAAK,MAAM,CAAC,QAAA,KAAoB,IAAI,EACtC,IAAW,EAAU,EAAE,MAAM,GAAG,CAAC,aAAa;AAKpD,QAJI,MAAa,KAAA,MAAW,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,GACpD,kCAAkC,KAAK,EAAE,KAAE,IAAI,EAAE,QAAQ,MAAM,GAAG,GACjE,KAAK,KAAK,EAAE,GAEV,OAAO,MAAa,KAAA,IAAY,IAAI,GAAG,EAAE,GAAG,IAAW,GAFpC;;AAM5B,SAAS,EAAa,GAAc,GAA6D;CAC/F,IAAM,IAAQ,OAAO,KAAK,EAAM,CAAC,QAAQ,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,OAAO,EACtF,IAAQ,EAAK,aAAa;AAChC,QAAO,EAAM,MAAM,MAAM,EAAK,SAAS,EAAE,CAAC,IAAI,EAAM,MAAM,MAAM,EAAM,SAAS,EAAE,aAAa,CAAC,CAAC;;AAKlG,SAAS,EAAa,GAAuB;AAC3C,QAAO,OAAO,EAAM,CAAC,QAAQ,MAAA,IAAiB;;AAShD,SAAgB,EAAW,GAAsB;AAI/C,QAHK,OAAO,SAAS,EAAK,GACtB,KAAQ,IAAU,GAAG,EAAa,KAAK,MAAM,IAAO,IAAI,CAAC,CAAC,KAC1D,KAAQ,MAAY,GAAG,KAAK,MAAM,EAAK,CAAC,eAAe,QAAQ,CAAC,KAC7D,GAAG,EAAa,KAAK,MAAM,IAAO,GAAG,GAAG,GAAG,CAAC,KAHhB,OAAO,EAAK"}
@@ -1,8 +0,0 @@
1
- var e = {
2
- range: "_range_g7ip1_9",
3
- alpha: "_alpha_g7ip1_74"
4
- };
5
- //#endregion
6
- export { e as t };
7
-
8
- //# sourceMappingURL=range.module-DSsOIq1R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"range.module-DSsOIq1R.js","names":[],"sources":["../../src/components/range.module.css"],"sourcesContent":["/* The one skin for a native <input type=\"range\">. Imported by InlineRange and\n by the property rows, which render the same DOM and used to carry three\n independently authored copies of these rules.\n\n The track is painted here rather than left to `accent-color`: a UA fills the\n left of the track with the accent but draws the remainder near-white on a\n dark surface whatever `color-scheme` says, and overriding the track's\n background removes the accent fill instead of recolouring the remainder. */\n.range {\n appearance: none;\n -webkit-appearance: none;\n width: 100%;\n min-inline-size: 48px;\n /* The box is taller than the track so the thumb has room to spill; a surface\n where the element itself IS the track overrides this. */\n height: var(--wzl-range-box-h, 12px);\n margin: 0;\n padding: 0;\n /* Transparent so the track pseudo-element shows; a surface that paints the element itself overrides it. */\n background: var(--wzl-range-bg, transparent);\n cursor: pointer;\n}\n\n.range::-webkit-slider-runnable-track {\n height: var(--wzl-slider-track-h, 4px);\n border-radius: var(--wzl-radius-sm);\n background: var(\n --wzl-range-track-bg,\n color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-track-mix, 18%), transparent)\n );\n}\n\n.range::-moz-range-track {\n height: var(--wzl-slider-track-h, 4px);\n border-radius: var(--wzl-radius-sm);\n background: var(\n --wzl-range-track-bg,\n color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-track-mix, 18%), transparent)\n );\n}\n\n.range::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: var(--wzl-slider-thumb-size, 8px);\n height: var(--wzl-slider-thumb-size, 8px);\n border: none;\n border-radius: 50%;\n background: color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-thumb-mix, 70%), transparent);\n /* Centres an 8px thumb on a 4px track. Webkit does not centre it for you. */\n margin-top: calc((var(--wzl-slider-track-h, 4px) - var(--wzl-slider-thumb-size, 8px)) / 2);\n}\n\n.range::-moz-range-thumb {\n width: var(--wzl-slider-thumb-size, 8px);\n height: var(--wzl-slider-thumb-size, 8px);\n border: none;\n border-radius: 50%;\n background: color-mix(in srgb, var(--wzl-accent) var(--wzl-slider-thumb-mix, 70%), transparent);\n}\n\n.range:focus-visible {\n outline: 2px solid var(--wzl-focus-ring);\n outline-offset: 2px;\n}\n\n.range:disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n/* Alpha variant: a fainter track, used where the row already carries a colour\n swatch and the slider must not compete with it. */\n.alpha::-webkit-slider-runnable-track {\n background: var(--wzl-range-track-bg, color-mix(in srgb, var(--wzl-accent) 10%, transparent));\n}\n\n.alpha::-moz-range-track {\n background: var(--wzl-range-track-bg, color-mix(in srgb, var(--wzl-accent) 10%, transparent));\n}\n\n/* A dead alpha track keeps its groove but loses its thumb, so the affordance\n reads inert rather than merely dimmed. Keyed off `:disabled`, which ColorRow\n already sets on the input — not off a class on the row. */\n.alpha:disabled::-webkit-slider-runnable-track,\n.alpha:disabled::-moz-range-track {\n background: color-mix(in srgb, var(--wzl-fg) 5%, transparent);\n}\n\n.alpha:disabled::-webkit-slider-thumb,\n.alpha:disabled::-moz-range-thumb {\n background: transparent;\n}\n"],"mappings":""}
@@ -1,47 +0,0 @@
1
- //#region src/components/Prefs/schema.ts
2
- function e(e) {
3
- if (!e.unit) return {
4
- min: e.min,
5
- max: e.max,
6
- step: e.step ?? 1
7
- };
8
- let { toDisplay: t } = e.unit, n = e.min === void 0 ? void 0 : t(e.min), r = e.max === void 0 ? void 0 : t(e.max), i = n !== void 0 && r !== void 0 && n > r, a = e.step === void 0 ? 1 : Math.abs(t(e.step) - t(0)) || e.step;
9
- return {
10
- min: i ? r : n,
11
- max: i ? n : r,
12
- step: a
13
- };
14
- }
15
- function t(e) {
16
- return e.suffix === void 0 ? { ...e.accepts } : {
17
- [e.suffix]: 1,
18
- ...e.accepts
19
- };
20
- }
21
- function n(e) {
22
- return "kind" in e;
23
- }
24
- function r(e, t) {
25
- let n = e;
26
- for (let e of t.split(".")) {
27
- if (typeof n != "object" || !n) return;
28
- n = n[e];
29
- }
30
- return n;
31
- }
32
- function i(e, t) {
33
- if (n(e)) return e.hidden && !t ? null : e;
34
- let r = e, a = {};
35
- for (let [e, n] of Object.entries(r.children)) {
36
- let r = i(n, t);
37
- r && (a[e] = r);
38
- }
39
- return Object.keys(a).length === 0 ? null : {
40
- ...e,
41
- children: a
42
- };
43
- }
44
- //#endregion
45
- export { i as a, r as i, e as n, t as r, n as t };
46
-
47
- //# sourceMappingURL=schema-MCVT1MLv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-MCVT1MLv.js","names":[],"sources":["../../src/components/Prefs/schema.ts"],"sourcesContent":["// Preference-schema vocabulary for PrefsForm / PrefsDialog / SelectionPanel:\n// core's `ToolPref*` family under this package's names. Never re-declare them\n// here — this was a hand-kept structural copy until it drifted, and the\n// independence from `@weasel-js/core` it bought is long gone anyway.\n\nexport type {\n ToolPref as BuiltinPref,\n ToolPrefBoolean as PrefBoolean,\n ToolPrefBooleanControl as PrefBooleanControl,\n ToolPrefColor as PrefColor,\n ToolPrefCustom as PrefCustom,\n ToolPrefEnum as PrefEnum,\n ToolPrefEnumControl as PrefEnumControl,\n ToolPrefEnumEncoding as PrefEnumEncoding,\n ToolPrefGroup as PrefGroup,\n ToolPrefKind as PrefKind,\n ToolPrefLeaf as PrefLeaf,\n ToolPrefNumber as PrefNumber,\n ToolPrefNumberControl as PrefNumberControl,\n ToolPrefNumberFormat as PrefNumberFormat,\n ToolPrefNumberUnit as PrefNumberUnit,\n ToolPrefObject as PrefObject,\n ToolPrefPaint as PrefPaint,\n ToolPrefString as PrefString,\n ToolPrefStringControl as PrefStringControl,\n} from '@weasel-js/core';\n\nimport type { ToolPrefGroup, ToolPrefLeaf, ToolPrefNumber, ToolPrefNumberUnit as PrefNumberUnitType } from '@weasel-js/core';\n\n/**\n * A number leaf's bounds in the unit it is displayed in.\n *\n * Only what the leaf declares converts: an omitted bound has no stored\n * counterpart to put through the conversion, and its fallback — 0..100 for a\n * slider's track, a step of 1 — is a display-space number already. `min` and\n * `max` are points, so they convert the way the value does; `step` is a\n * distance, and a unit with an offset maps zero somewhere else, so converting\n * it as a point would scale it wrong. A decreasing conversion swaps which end\n * is the lower one.\n */\nexport function prefDisplayBounds(\n p: ToolPrefNumber,\n): { min?: number; max?: number; step: number } {\n if (!p.unit) return { min: p.min, max: p.max, step: p.step ?? 1 };\n const { toDisplay } = p.unit;\n const lo = p.min === undefined ? undefined : toDisplay(p.min);\n const hi = p.max === undefined ? undefined : toDisplay(p.max);\n const flipped = lo !== undefined && hi !== undefined && lo > hi;\n const step = p.step === undefined\n ? 1\n : Math.abs(toDisplay(p.step) - toDisplay(0)) || p.step;\n return { min: flipped ? hi : lo, max: flipped ? lo : hi, step };\n}\n\n/** What a unit leaf's field reads as typed text: its `accepts` table, and its\n * `suffix` as the display unit itself. */\nexport function prefUnitAccepts(unit: PrefNumberUnitType): Readonly<Record<string, number>> {\n return unit.suffix === undefined ? { ...unit.accepts } : { [unit.suffix]: 1, ...unit.accepts };\n}\n\n/** Distinguishes a leaf from a group while walking a schema tree. */\nexport function isPrefLeaf(node: ToolPrefLeaf | ToolPrefGroup): node is ToolPrefLeaf {\n return 'kind' in node;\n}\n\n/** Get the value at a dotted path inside a nested value tree. Returns\n * `undefined` when a segment is missing or hits a non-object. */\nexport function prefValueAtPath(values: unknown, path: string): unknown {\n let cur: unknown = values;\n for (const seg of path.split('.')) {\n if (cur == null || typeof cur !== 'object') return undefined;\n cur = (cur as Record<string, unknown>)[seg];\n }\n return cur;\n}\n\n/**\n * Recursively drop `hidden` leaves (unless `showHidden`), pruning groups\n * that end up empty. Returns null when the entire subtree is hidden.\n */\nexport function visiblePrefSubtree<T extends ToolPrefLeaf | ToolPrefGroup>(\n node: T,\n showHidden: boolean,\n): T | null {\n if (isPrefLeaf(node)) return node.hidden && !showHidden ? null : node;\n const group = node as ToolPrefGroup;\n const children: Record<string, ToolPrefLeaf | ToolPrefGroup> = {};\n for (const [key, child] of Object.entries(group.children)) {\n const kept = visiblePrefSubtree(child, showHidden);\n if (kept) children[key] = kept;\n }\n if (Object.keys(children).length === 0) return null;\n return { ...node, children };\n}\n"],"mappings":";AAwCA,SAAgB,EACd,GAC8C;AAC9C,KAAI,CAAC,EAAE,KAAM,QAAO;EAAE,KAAK,EAAE;EAAK,KAAK,EAAE;EAAK,MAAM,EAAE,QAAQ;EAAG;CACjE,IAAM,EAAE,iBAAc,EAAE,MAClB,IAAK,EAAE,QAAQ,KAAA,IAAY,KAAA,IAAY,EAAU,EAAE,IAAI,EACvD,IAAK,EAAE,QAAQ,KAAA,IAAY,KAAA,IAAY,EAAU,EAAE,IAAI,EACvD,IAAU,MAAO,KAAA,KAAa,MAAO,KAAA,KAAa,IAAK,GACvD,IAAO,EAAE,SAAS,KAAA,IACpB,IACA,KAAK,IAAI,EAAU,EAAE,KAAK,GAAG,EAAU,EAAE,CAAC,IAAI,EAAE;AACpD,QAAO;EAAE,KAAK,IAAU,IAAK;EAAI,KAAK,IAAU,IAAK;EAAI;EAAM;;AAKjE,SAAgB,EAAgB,GAA4D;AAC1F,QAAO,EAAK,WAAW,KAAA,IAAY,EAAE,GAAG,EAAK,SAAS,GAAG;GAAG,EAAK,SAAS;EAAG,GAAG,EAAK;EAAS;;AAIhG,SAAgB,EAAW,GAA0D;AACnF,QAAO,UAAU;;AAKnB,SAAgB,EAAgB,GAAiB,GAAuB;CACtE,IAAI,IAAe;AACnB,MAAK,IAAM,KAAO,EAAK,MAAM,IAAI,EAAE;AACjC,MAAmB,OAAO,KAAQ,aAA9B,EAAwC;AAC5C,MAAO,EAAgC;;AAEzC,QAAO;;AAOT,SAAgB,EACd,GACA,GACU;AACV,KAAI,EAAW,EAAK,CAAE,QAAO,EAAK,UAAU,CAAC,IAAa,OAAO;CACjE,IAAM,IAAQ,GACR,IAAyD,EAAE;AACjE,MAAK,IAAM,CAAC,GAAK,MAAU,OAAO,QAAQ,EAAM,SAAS,EAAE;EACzD,IAAM,IAAO,EAAmB,GAAO,EAAW;AAClD,EAAI,MAAM,EAAS,KAAO;;AAG5B,QADI,OAAO,KAAK,EAAS,CAAC,WAAW,IAAU,OACxC;EAAE,GAAG;EAAM;EAAU"}
@@ -1,11 +0,0 @@
1
- var e = {
2
- root: "_root_nj5x1_10",
3
- segment: "_segment_nj5x1_32",
4
- segmentSelected: "_segmentSelected_nj5x1_81",
5
- size_sm: "_size_sm_nj5x1_139",
6
- variant_minimal: "_variant_minimal_nj5x1_152"
7
- };
8
- //#endregion
9
- export { e as t };
10
-
11
- //# sourceMappingURL=segmentedControl.module-DmeUMYe3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segmentedControl.module-DmeUMYe3.js","names":[],"sources":["../../src/components/segmentedControl.module.css"],"sourcesContent":["/* Shared by ActionsBar and OptionsBar, which look identical and differ only\n in what a segment does. Lives here rather than in either component so\n neither owns the other's styling.\n\n Aqua-glass segmented control. The track is a pill-shaped well; the\n selected segment becomes a tinted glass cylinder that reads as the same\n \"lozenge\" family as the standalone Button. Visual params come from the\n `--btn-*` custom properties (see Button.module.css) so the Button Lab\n can tune both surfaces with one set of sliders. */\n.root {\n display: inline-flex;\n height: var(--tb-h, var(--wzl-control-h, 24px));\n padding: 2px;\n background: linear-gradient(\n 180deg,\n rgba(0, 0, 0, 0.18) 0%,\n rgba(0, 0, 0, 0.05) 100%\n );\n border-radius: var(--wzl-radius-pill);\n /* Clip segments to the track outline so interior corners read crisp and\n the selected segment's glass treatment doesn't paint over the rounded\n outer pixels. */\n overflow: hidden;\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.4),\n 0 1px 0 rgba(255, 255, 255, 0.06);\n user-select: none;\n -webkit-user-select: none;\n touch-action: none;\n}\n\n.segment {\n position: relative;\n flex: 1 1 0;\n min-width: 0;\n /* The track's stretch sizes a segment; without this, labkit's :where(button) height wins and overflows a small bar. */\n height: auto;\n padding: 0 12px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n margin: 0;\n font-family: var(--wzl-font-ui);\n font-weight: var(--wzl-font-weight-normal);\n font-size: var(--btn-fontsize, var(--wzl-font-size));\n line-height: 1;\n color: var(--wzl-fg-muted);\n cursor: pointer;\n /* Only round the outer corners of the bar — middle segments stay square\n so the seams between them don't render as facing parentheses. */\n border-radius: 0;\n isolation: isolate;\n overflow: hidden;\n transition: color var(--wzl-motion-fast);\n}\n\n.segment:first-child {\n border-radius: var(--wzl-radius-pill) 0 0 var(--wzl-radius-pill);\n}\n\n.segment:last-child {\n border-radius: 0 var(--wzl-radius-pill) var(--wzl-radius-pill) 0;\n}\n\n.segment:only-child {\n border-radius: var(--wzl-radius-pill);\n}\n\n.segment:focus-visible {\n outline: 2px solid var(--wzl-accent);\n outline-offset: -2px;\n}\n\n.segment:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.segment:hover:not(:disabled):not(.segmentSelected) {\n color: var(--wzl-fg);\n}\n\n/* Selected segment — full Aqua glass cylinder. Mirrors Button.variant_primary. */\n.segmentSelected {\n background: linear-gradient(\n 180deg,\n color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha, 45%), transparent) 0%,\n color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha, 70%), transparent) calc(var(--btn-equator, 52%) - var(--btn-equator-spread, 12%)),\n color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint, 95%), white) var(--btn-equator, 52%),\n var(--wzl-accent) calc(var(--btn-equator, 52%) + var(--btn-equator-spread, 12%) * 1.6),\n color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint, 70%), black) 100%\n );\n backdrop-filter: blur(var(--btn-blur, 6px)) saturate(var(--btn-saturate, 1.3));\n -webkit-backdrop-filter: blur(var(--btn-blur, 6px)) saturate(var(--btn-saturate, 1.3));\n color: var(--wzl-fg-on-accent);\n text-shadow:\n 0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow, 0.35)),\n var(--btn-text-inset-x, 0px) var(--btn-text-inset-y, 1px) 0 rgba(0, 0, 0, var(--btn-text-inset, 0.55)),\n 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow, 0.35) * 0.5));\n box-shadow:\n inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi, 0.42)),\n inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo, 0.3)),\n 0 0 0 1px rgba(0, 0, 0, var(--btn-rim, 0.22)),\n 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near, 0.3)),\n 0 2px 4px rgba(0, 0, 0, calc(var(--btn-drop-far, 0.18) * 0.8));\n}\n\n/* Specular gloss on the selected segment. Top corners inherit the\n segment's radius so they hug the upper edge cleanly; bottom corners\n are flattened so the gloss ends in a straight line at the equator\n instead of two little curves that read as `)(` brackets. */\n.segmentSelected::before {\n content: '';\n position: absolute;\n inset: 1px 1px var(--btn-gloss-bottom, 50%) 1px;\n border-radius: inherit;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n background: linear-gradient(\n 180deg,\n rgba(255, 255, 255, var(--btn-gloss-top, 0.42)) 0%,\n rgba(255, 255, 255, var(--btn-gloss-mid, 0.12)) 60%,\n rgba(255, 255, 255, 0) 100%\n );\n pointer-events: none;\n z-index: 1;\n}\n\n.segmentSelected > * {\n position: relative;\n z-index: 2;\n}\n\n/* Small variant — ~60% of the default height, with proportionally reduced\n padding and font. Sized for dense surfaces (lab control panels, inline\n filters, etc.). */\n.size_sm {\n height: 17px;\n padding: 1px;\n}\n\n.size_sm .segment {\n padding: 0 8px;\n font-size: var(--wzl-font-size-sm);\n}\n\n/* Minimal variant — strips the pill track, glass selected state, inset\n shadows, and outer padding. Used in dense diagnostic surfaces (dispatch\n trace, lab inspectors) where the bar must read as plain text controls. */\n.variant_minimal {\n height: auto;\n padding: 0;\n background: none;\n border-radius: 0;\n box-shadow: none;\n gap: 2px;\n}\n\n.variant_minimal .segment {\n padding: 0 4px;\n font-size: var(--wzl-font-size-sm);\n font-weight: var(--wzl-font-weight-medium);\n line-height: 1.4;\n border-radius: var(--wzl-radius-sm);\n color: var(--wzl-fg-muted);\n transition: none;\n}\n\n.variant_minimal .segment:first-child,\n.variant_minimal .segment:last-child,\n.variant_minimal .segment:only-child {\n border-radius: var(--wzl-radius-sm);\n}\n\n.variant_minimal .segment:hover:not(:disabled):not(.segmentSelected) {\n color: var(--wzl-fg);\n background: var(--wzl-surface-hover);\n}\n\n.variant_minimal .segmentSelected {\n background: none;\n backdrop-filter: none;\n -webkit-backdrop-filter: none;\n color: var(--wzl-accent-fg, var(--wzl-accent));\n text-shadow: none;\n box-shadow: none;\n font-weight: var(--wzl-font-weight-medium);\n}\n\n.variant_minimal .segmentSelected::before {\n content: none;\n}\n"],"mappings":""}
@@ -1,102 +0,0 @@
1
- import { startThresholdDrag as e } from "@weasel-js/core";
2
- import { useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
3
- //#region src/useReorderDragList.ts
4
- function a(e, t) {
5
- let n = 0;
6
- for (let r = t - 1; r >= 0; r--) if (e[r]?.locked) {
7
- n = r + 1;
8
- break;
9
- }
10
- let r = e.length;
11
- for (let n = t + 1; n < e.length; n++) if (e[n]?.locked) {
12
- r = n;
13
- break;
14
- }
15
- return [n, r];
16
- }
17
- function o(e, t, n) {
18
- let r = t.map((t) => e.findIndex((e) => e.id === t)).filter((e) => e >= 0).sort((e, t) => e - t), i = r.length > 0 && r.every((e, t) => {
19
- if (t === 0) return !0;
20
- let n = r[t - 1];
21
- return n !== void 0 && e === n + 1;
22
- }), a = r[0], o = r[r.length - 1];
23
- return i && a !== void 0 && o !== void 0 && n >= a && n <= o + 1;
24
- }
25
- function s(s) {
26
- let c = r(s);
27
- c.current = s;
28
- let l = r(null), u = r(null), [d, f] = i({
29
- draggedIds: null,
30
- targetIndex: null
31
- });
32
- n(() => () => {
33
- u.current?.cancel();
34
- }, []);
35
- let p = t((e, t) => {
36
- let [n, r] = a(c.current.items, t), i = l.current;
37
- if (!i) return n;
38
- let o = Array.from(i.children), s = o.length;
39
- for (let t = 0; t < o.length; t++) {
40
- let n = o[t];
41
- if (n && e < n.getBoundingClientRect().bottom) {
42
- s = t;
43
- break;
44
- }
45
- }
46
- return Math.max(n, Math.min(s, r));
47
- }, []), m = t((e) => {
48
- l.current = e;
49
- }, []), h = t(() => {
50
- u.current = null, f({
51
- draggedIds: null,
52
- targetIndex: null
53
- });
54
- }, []), g = t((t, n, r) => {
55
- let i = l.current;
56
- if (!i || u.current) return;
57
- let s = {
58
- shiftKey: r.shiftKey,
59
- ctrlKey: r.ctrlKey,
60
- metaKey: r.metaKey,
61
- altKey: r.altKey
62
- }, d = [], m = 0;
63
- u.current = e(r, {
64
- origin: i,
65
- threshold: c.current.items[n]?.locked ? Infinity : c.current.threshold ?? 4,
66
- onActivate: (e) => {
67
- let r = c.current.selectedIds, [i, o] = a(c.current.items, n);
68
- d = (r.includes(t) ? [...r] : [t]).filter((e) => {
69
- let t = c.current.items.findIndex((t) => t.id === e);
70
- return t >= i && t < o;
71
- }), m = p(e.clientY, n), f({
72
- draggedIds: d,
73
- targetIndex: m
74
- });
75
- },
76
- onMove: (e) => {
77
- let t = p(e.clientY, n);
78
- t !== m && (m = t, f({
79
- draggedIds: d,
80
- targetIndex: m
81
- }));
82
- },
83
- onCommit: (e) => {
84
- let t = p(e.clientY, n);
85
- o(c.current.items, d, t) || c.current.onReorder(d, t), h();
86
- },
87
- onClick: () => {
88
- c.current.onPress?.(t, s), h();
89
- },
90
- onCancel: h
91
- });
92
- }, [p, h]);
93
- return {
94
- rowProps: (e, t) => ({ onPointerDown: (n) => g(e, t, n) }),
95
- containerProps: { ref: m },
96
- state: d
97
- };
98
- }
99
- //#endregion
100
- export { s as t };
101
-
102
- //# sourceMappingURL=useReorderDragList-CSQGd7zQ.js.map