@weasel-js/ui 1.5.2 → 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 (466) 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-CW9pBPFl.js → Badge-DZ0lFs14.js} +755 -738
  4. package/dist/chunks/Badge-DZ0lFs14.js.map +1 -0
  5. package/dist/chunks/{BandEditor-jY-PFKY6.js → BandEditor-D-nVrVO4.js} +34 -34
  6. package/dist/chunks/{BandEditor-jY-PFKY6.js.map → BandEditor-D-nVrVO4.js.map} +1 -1
  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-BOsDAY2F.js → Checkbox-ChZz30Ds.js} +1 -1
  14. package/dist/chunks/{Checkbox-BOsDAY2F.js.map → Checkbox-ChZz30Ds.js.map} +1 -1
  15. package/dist/chunks/Code-v4tDWuuN.js +24 -0
  16. package/dist/chunks/Code-v4tDWuuN.js.map +1 -0
  17. package/dist/chunks/{ColorField-BYzgZM9o.js → ColorField-DJSCuSJv.js} +15 -15
  18. package/dist/chunks/ColorField-DJSCuSJv.js.map +1 -0
  19. package/dist/chunks/ColorModeControl-JOEiqtE0.js +47 -0
  20. package/dist/chunks/ColorModeControl-JOEiqtE0.js.map +1 -0
  21. package/dist/chunks/{ComboBox-Cz3f0Y_8.js → ComboBox-C1JgIpML.js} +2 -2
  22. package/dist/chunks/{ComboBox-Cz3f0Y_8.js.map → ComboBox-C1JgIpML.js.map} +1 -1
  23. package/dist/chunks/{CurveEditor-DXwSP-iA.js → CurveEditor-f1R4kSbD.js} +2 -2
  24. package/dist/chunks/{CurveEditor-DXwSP-iA.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-CAubVX0J.js → DetentSlider-BYyaZha6.js} +2 -2
  30. package/dist/chunks/{DetentSlider-CAubVX0J.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-DWnV8WZY.js → Field-xbqRmjsI.js} +1 -1
  40. package/dist/chunks/{Field-DWnV8WZY.js.map → Field-xbqRmjsI.js.map} +1 -1
  41. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js +111 -0
  42. package/dist/chunks/FillStrokeSwatch-BViKXIPx.js.map +1 -0
  43. package/dist/chunks/{FontFamilySelect-DxfgTC3G.js → FontFamilySelect-r9TV_xIH.js} +2 -2
  44. package/dist/chunks/{FontFamilySelect-DxfgTC3G.js.map → FontFamilySelect-r9TV_xIH.js.map} +1 -1
  45. package/dist/chunks/GradientEditor-BRTxHG-W.js +333 -0
  46. package/dist/chunks/{GradientEditor-rRBmf3G0.js.map → GradientEditor-BRTxHG-W.js.map} +1 -1
  47. package/dist/chunks/{Icon-DT0x6HaQ.js → Icon-BW0qv_U7.js} +28 -20
  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-DbMKpkXy.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-DkkTlL3_.js → Jog-LPoac9s4.js} +6 -6
  58. package/dist/chunks/{Jog-DkkTlL3_.js.map → Jog-LPoac9s4.js.map} +1 -1
  59. package/dist/chunks/{Keycaps-DunVpejA.js → Keycaps-CKiKOJnJ.js} +71 -65
  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-CCjEDZCg.js → NumberField-C1Y7zP-a.js} +27 -22
  70. package/dist/chunks/NumberField-C1Y7zP-a.js.map +1 -0
  71. package/dist/chunks/{OptionsBar-DeQ-vUeZ.js → OptionsBar-DlcagPYK.js} +3 -3
  72. package/dist/chunks/{OptionsBar-DeQ-vUeZ.js.map → OptionsBar-DlcagPYK.js.map} +1 -1
  73. package/dist/chunks/{PaintField-jBOJ32rL.js → PaintField-B2mLRZa4.js} +20 -20
  74. package/dist/chunks/PaintField-B2mLRZa4.js.map +1 -0
  75. package/dist/chunks/{PaintInput-Qs7Rul5R.js → PaintInput-BFKhd83I.js} +24 -24
  76. package/dist/chunks/{PaintInput-Qs7Rul5R.js.map → PaintInput-BFKhd83I.js.map} +1 -1
  77. package/dist/chunks/{PatternPicker-BMpXWboq.js → PatternPicker-DdfpxoQy.js} +2 -2
  78. package/dist/chunks/{PatternPicker-BMpXWboq.js.map → PatternPicker-DdfpxoQy.js.map} +1 -1
  79. package/dist/chunks/{Plot2D-CXf_f7QD.js → Plot2D-lyO7waPQ.js} +1 -1
  80. package/dist/chunks/{Plot2D-CXf_f7QD.js.map → Plot2D-lyO7waPQ.js.map} +1 -1
  81. package/dist/chunks/{PointPlotter-S_gz7VYt.js → PointPlotter-DGs9i5P-.js} +2 -2
  82. package/dist/chunks/{PointPlotter-S_gz7VYt.js.map → PointPlotter-DGs9i5P-.js.map} +1 -1
  83. package/dist/chunks/{Powerline-Ak5AWUlK.js → Powerline-DBEPceLE.js} +4 -2
  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-CsVp3SEu.js → RadioGroup-BK2mD6Q0.js} +2 -2
  92. package/dist/chunks/{RadioGroup-CsVp3SEu.js.map → RadioGroup-BK2mD6Q0.js.map} +1 -1
  93. package/dist/chunks/{RangeSlider-DNr-pJpZ.js → RangeSlider-BiRAOsTh.js} +1 -1
  94. package/dist/chunks/{RangeSlider-DNr-pJpZ.js.map → RangeSlider-BiRAOsTh.js.map} +1 -1
  95. package/dist/chunks/{ResizeHandle-RXFf5fXr.js → ResizeHandle-Cc6EOehs.js} +9 -9
  96. package/dist/chunks/{ResizeHandle-RXFf5fXr.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-CEbLS-0D.js → SelectionPanel-C5LmZA7b.js} +21 -20
  100. package/dist/chunks/{SelectionPanel-CEbLS-0D.js.map → SelectionPanel-C5LmZA7b.js.map} +1 -1
  101. package/dist/chunks/{Sidebar-qn_oSCNX.js → Sidebar-DKKd4R-x.js} +1 -1
  102. package/dist/chunks/{Sidebar-qn_oSCNX.js.map → Sidebar-DKKd4R-x.js.map} +1 -1
  103. package/dist/chunks/{SidebarPanel-Bs6V21hg.js → SidebarPanel-u5NsuAZY.js} +15 -19
  104. package/dist/chunks/SidebarPanel-u5NsuAZY.js.map +1 -0
  105. package/dist/chunks/{Slider-CIIrqiFS.js → Slider-BwRrWHFW.js} +42 -42
  106. package/dist/chunks/{Slider-CIIrqiFS.js.map → Slider-BwRrWHFW.js.map} +1 -1
  107. package/dist/chunks/{StatusBar-B4L15DSm.js → StatusBar-CdPdmmda.js} +1 -1
  108. package/dist/chunks/{StatusBar-B4L15DSm.js.map → StatusBar-CdPdmmda.js.map} +1 -1
  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-DH5POG0T.js → Switch-DxF7TsEu.js} +1 -1
  112. package/dist/chunks/{Switch-DH5POG0T.js.map → Switch-DxF7TsEu.js.map} +1 -1
  113. package/dist/chunks/{Tabs-BFHikpml.js → Tabs-GXEfoe3o.js} +1 -1
  114. package/dist/chunks/{Tabs-BFHikpml.js.map → Tabs-GXEfoe3o.js.map} +1 -1
  115. package/dist/chunks/{Timeline-DNKY_yiK.js → Timeline-SgmpQtUV.js} +128 -132
  116. package/dist/chunks/Timeline-SgmpQtUV.js.map +1 -0
  117. package/dist/chunks/{Toast-CI1UDuK6.js → Toast-BfcljZz6.js} +1 -1
  118. package/dist/chunks/{Toast-CI1UDuK6.js.map → Toast-BfcljZz6.js.map} +1 -1
  119. package/dist/chunks/ToggleBar-Btnl5r7F.js +80 -0
  120. package/dist/chunks/{ToggleBar-CClus5Cd.js.map → ToggleBar-Btnl5r7F.js.map} +1 -1
  121. package/dist/chunks/{TokenPanel-BPHq24dc.js → TokenPanel-5ajHEHha.js} +40 -40
  122. package/dist/chunks/{TokenPanel-BPHq24dc.js.map → TokenPanel-5ajHEHha.js.map} +1 -1
  123. package/dist/chunks/{ToolButton-9QzJCmuM.js → ToolButton-rzqlFlAc.js} +4 -4
  124. package/dist/chunks/{ToolButton-9QzJCmuM.js.map → ToolButton-rzqlFlAc.js.map} +1 -1
  125. package/dist/chunks/{ToolGroup-BJiDrH_i.js → ToolGroup-4bUBV5k6.js} +1 -1
  126. package/dist/chunks/{ToolGroup-BJiDrH_i.js.map → ToolGroup-4bUBV5k6.js.map} +1 -1
  127. package/dist/chunks/{ToolOptionsBar-CAM6RcUH.js → ToolOptionsBar-BF3TNXA3.js} +2 -2
  128. package/dist/chunks/{ToolOptionsBar-CAM6RcUH.js.map → ToolOptionsBar-BF3TNXA3.js.map} +1 -1
  129. package/dist/chunks/ToolPalette-Uw4PvWwa.js +83 -0
  130. package/dist/chunks/ToolPalette-Uw4PvWwa.js.map +1 -0
  131. package/dist/chunks/{Tooltip-C4YBczLq.js → Tooltip-9XiJF937.js} +13 -13
  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-DKtO0Sw_.js → createKeyframeLayer-BzDRCrrh.js} +71 -71
  136. package/dist/chunks/{createKeyframeLayer-DKtO0Sw_.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-BHz66zQO.js → number-6S8IzXVt.js} +3 -3
  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-CEjuWOhN.js → snap-DC4Km8xG.js} +1 -1
  160. package/dist/chunks/{snap-CEjuWOhN.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/ramp.d.ts +38 -0
  168. package/dist/color/ramp.d.ts.map +1 -0
  169. package/dist/components/ActionBar/ActionBar.d.ts +6 -4
  170. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  171. package/dist/components/ActionBar/index.js +1 -1
  172. package/dist/components/Badge/Badge.d.ts +21 -7
  173. package/dist/components/Badge/Badge.d.ts.map +1 -1
  174. package/dist/components/Badge/effects/Aqua.d.ts +1 -1
  175. package/dist/components/Badge/effects/Aqua.d.ts.map +1 -1
  176. package/dist/components/Badge/index.d.ts +1 -1
  177. package/dist/components/Badge/index.d.ts.map +1 -1
  178. package/dist/components/Badge/index.js +1 -1
  179. package/dist/components/Badge/types.d.ts +6 -5
  180. package/dist/components/Badge/types.d.ts.map +1 -1
  181. package/dist/components/BandEditor/index.js +1 -1
  182. package/dist/components/Button/Button.d.ts +17 -3
  183. package/dist/components/Button/Button.d.ts.map +1 -1
  184. package/dist/components/Button/index.d.ts +1 -1
  185. package/dist/components/Button/index.d.ts.map +1 -1
  186. package/dist/components/Button/index.js +1 -1
  187. package/dist/components/ButtonBar/ButtonBar.d.ts +36 -0
  188. package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -0
  189. package/dist/components/ButtonBar/index.d.ts +3 -0
  190. package/dist/components/ButtonBar/index.d.ts.map +1 -0
  191. package/dist/components/ButtonBar/index.js +2 -0
  192. package/dist/components/Callout/Callout.d.ts +2 -5
  193. package/dist/components/Callout/Callout.d.ts.map +1 -1
  194. package/dist/components/Callout/index.d.ts +1 -1
  195. package/dist/components/Callout/index.d.ts.map +1 -1
  196. package/dist/components/Callout/index.js +1 -1
  197. package/dist/components/Checkbox/index.js +1 -1
  198. package/dist/components/Code/Code.d.ts +28 -0
  199. package/dist/components/Code/Code.d.ts.map +1 -0
  200. package/dist/components/Code/index.d.ts +3 -0
  201. package/dist/components/Code/index.d.ts.map +1 -0
  202. package/dist/components/Code/index.js +2 -0
  203. package/dist/components/ColorField/index.js +1 -1
  204. package/dist/components/ColorModeControl/ColorModeControl.d.ts +21 -0
  205. package/dist/components/ColorModeControl/ColorModeControl.d.ts.map +1 -0
  206. package/dist/components/ColorModeControl/index.d.ts +3 -0
  207. package/dist/components/ColorModeControl/index.d.ts.map +1 -0
  208. package/dist/components/ColorModeControl/index.js +2 -0
  209. package/dist/components/ComboBox/index.js +1 -1
  210. package/dist/components/CurveEditor/index.js +3 -3
  211. package/dist/components/DataGrid/DataGrid.d.ts +22 -0
  212. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  213. package/dist/components/DataGrid/index.js +1 -1
  214. package/dist/components/DetailList/DetailList.d.ts +36 -0
  215. package/dist/components/DetailList/DetailList.d.ts.map +1 -0
  216. package/dist/components/DetailList/index.d.ts +3 -0
  217. package/dist/components/DetailList/index.d.ts.map +1 -0
  218. package/dist/components/DetailList/index.js +2 -0
  219. package/dist/components/DetentSlider/index.js +1 -1
  220. package/dist/components/Dialog/Dialog.d.ts +8 -2
  221. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  222. package/dist/components/Dialog/index.js +1 -1
  223. package/dist/components/Disclosure/Disclosure.d.ts +25 -17
  224. package/dist/components/Disclosure/Disclosure.d.ts.map +1 -1
  225. package/dist/components/Disclosure/index.d.ts +2 -2
  226. package/dist/components/Disclosure/index.d.ts.map +1 -1
  227. package/dist/components/Disclosure/index.js +2 -2
  228. package/dist/components/DragGhost/DragGhost.d.ts +21 -0
  229. package/dist/components/DragGhost/DragGhost.d.ts.map +1 -0
  230. package/dist/components/DragGhost/index.d.ts +3 -0
  231. package/dist/components/DragGhost/index.d.ts.map +1 -0
  232. package/dist/components/DragGhost/index.js +2 -0
  233. package/dist/components/DragHandleGlyph/index.js +1 -1
  234. package/dist/components/Field/index.js +1 -1
  235. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts +45 -0
  236. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -0
  237. package/dist/components/FillStrokeSwatch/index.d.ts +3 -0
  238. package/dist/components/FillStrokeSwatch/index.d.ts.map +1 -0
  239. package/dist/components/FillStrokeSwatch/index.js +2 -0
  240. package/dist/components/FontFamilySelect/index.js +1 -1
  241. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
  242. package/dist/components/GradientEditor/index.js +1 -1
  243. package/dist/components/InlineRange/InlineRange.d.ts +6 -2
  244. package/dist/components/InlineRange/InlineRange.d.ts.map +1 -1
  245. package/dist/components/InlineRange/index.js +1 -1
  246. package/dist/components/Input/Input.d.ts +13 -0
  247. package/dist/components/Input/Input.d.ts.map +1 -1
  248. package/dist/components/Input/index.js +1 -1
  249. package/dist/components/ItemList/ItemList.d.ts +70 -10
  250. package/dist/components/ItemList/ItemList.d.ts.map +1 -1
  251. package/dist/components/ItemList/index.js +1 -1
  252. package/dist/components/Jog/index.js +1 -1
  253. package/dist/components/Keycaps/index.d.ts +1 -0
  254. package/dist/components/Keycaps/index.d.ts.map +1 -1
  255. package/dist/components/Keycaps/index.js +3 -3
  256. package/dist/components/Keycaps/keySpecsFromMods.d.ts +2 -0
  257. package/dist/components/Keycaps/keySpecsFromMods.d.ts.map +1 -1
  258. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts +16 -0
  259. package/dist/components/Keycaps/keySpecsFromShortcut.d.ts.map +1 -0
  260. package/dist/components/LayerList/LayerList.d.ts +79 -0
  261. package/dist/components/LayerList/LayerList.d.ts.map +1 -0
  262. package/dist/components/LayerList/index.d.ts +3 -0
  263. package/dist/components/LayerList/index.d.ts.map +1 -0
  264. package/dist/components/LayerList/index.js +2 -0
  265. package/dist/components/LayerList/useSceneLayerList.d.ts +20 -0
  266. package/dist/components/LayerList/useSceneLayerList.d.ts.map +1 -0
  267. package/dist/components/ListEditor/ListEditor.d.ts +23 -0
  268. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -0
  269. package/dist/components/ListEditor/index.d.ts +3 -0
  270. package/dist/components/ListEditor/index.d.ts.map +1 -0
  271. package/dist/components/ListEditor/index.js +2 -0
  272. package/dist/components/MenuButton/MenuButton.d.ts +6 -2
  273. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  274. package/dist/components/MenuButton/index.js +1 -1
  275. package/dist/components/MeshEditor/index.js +1 -1
  276. package/dist/components/NumberField/NumberField.d.ts +13 -0
  277. package/dist/components/NumberField/NumberField.d.ts.map +1 -1
  278. package/dist/components/NumberField/index.js +1 -1
  279. package/dist/components/OptionsBar/index.js +1 -1
  280. package/dist/components/PaintField/index.js +1 -1
  281. package/dist/components/PaintInput/index.js +1 -1
  282. package/dist/components/PatternPicker/index.js +1 -1
  283. package/dist/components/Plot2D/index.js +1 -1
  284. package/dist/components/PointPlotter/index.js +1 -1
  285. package/dist/components/Powerline/Powerline.d.ts +4 -3
  286. package/dist/components/Powerline/Powerline.d.ts.map +1 -1
  287. package/dist/components/Powerline/index.js +2 -2
  288. package/dist/components/Prefs/PrefsDialog.d.ts +10 -2
  289. package/dist/components/Prefs/PrefsDialog.d.ts.map +1 -1
  290. package/dist/components/Prefs/PrefsForm.d.ts +26 -25
  291. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  292. package/dist/components/Prefs/PrefsPane.d.ts +24 -0
  293. package/dist/components/Prefs/PrefsPane.d.ts.map +1 -0
  294. package/dist/components/Prefs/PrefsRail.d.ts +32 -0
  295. package/dist/components/Prefs/PrefsRail.d.ts.map +1 -0
  296. package/dist/components/Prefs/PrefsRow.d.ts +32 -0
  297. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -0
  298. package/dist/components/Prefs/index.d.ts +5 -2
  299. package/dist/components/Prefs/index.d.ts.map +1 -1
  300. package/dist/components/Prefs/index.js +3 -3
  301. package/dist/components/Prefs/prefField.d.ts +36 -0
  302. package/dist/components/Prefs/prefField.d.ts.map +1 -0
  303. package/dist/components/Prefs/schema.d.ts +30 -0
  304. package/dist/components/Prefs/schema.d.ts.map +1 -1
  305. package/dist/components/Properties/DialogRow.d.ts +33 -0
  306. package/dist/components/Properties/DialogRow.d.ts.map +1 -0
  307. package/dist/components/Properties/PropertyField.d.ts +238 -0
  308. package/dist/components/Properties/PropertyField.d.ts.map +1 -0
  309. package/dist/components/Properties/PropertyGroup.d.ts +12 -3
  310. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  311. package/dist/components/Properties/PropertyPanel.d.ts +32 -236
  312. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  313. package/dist/components/Properties/Subpanel.d.ts +14 -0
  314. package/dist/components/Properties/Subpanel.d.ts.map +1 -0
  315. package/dist/components/Properties/index.d.ts +8 -4
  316. package/dist/components/Properties/index.d.ts.map +1 -1
  317. package/dist/components/Properties/index.js +3 -2
  318. package/dist/components/Properties/storyLayouts.d.ts.map +1 -1
  319. package/dist/components/RadioGroup/index.js +1 -1
  320. package/dist/components/RangeSlider/index.js +1 -1
  321. package/dist/components/ResizeHandle/index.js +1 -1
  322. package/dist/components/Select/Select.d.ts +38 -5
  323. package/dist/components/Select/Select.d.ts.map +1 -1
  324. package/dist/components/Select/index.d.ts +2 -2
  325. package/dist/components/Select/index.d.ts.map +1 -1
  326. package/dist/components/Select/index.js +2 -2
  327. package/dist/components/SelectionPanel/index.js +2 -2
  328. package/dist/components/SelectionPanel/renderLeaf.d.ts +14 -8
  329. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
  330. package/dist/components/Sidebar/index.js +1 -1
  331. package/dist/components/SidebarPanel/SidebarPanel.d.ts +2 -2
  332. package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
  333. package/dist/components/SidebarPanel/index.js +1 -1
  334. package/dist/components/Slider/index.js +1 -1
  335. package/dist/components/StatusBar/index.js +1 -1
  336. package/dist/components/SwatchGrid/SwatchGrid.d.ts +34 -0
  337. package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -0
  338. package/dist/components/SwatchGrid/index.d.ts +3 -0
  339. package/dist/components/SwatchGrid/index.d.ts.map +1 -0
  340. package/dist/components/SwatchGrid/index.js +2 -0
  341. package/dist/components/Switch/index.js +1 -1
  342. package/dist/components/Tabs/index.js +1 -1
  343. package/dist/components/Timeline/Lane.d.ts.map +1 -1
  344. package/dist/components/Timeline/index.js +1 -1
  345. package/dist/components/Toast/index.js +1 -1
  346. package/dist/components/ToggleBar/ToggleBar.d.ts +2 -1
  347. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  348. package/dist/components/ToggleBar/index.js +1 -1
  349. package/dist/components/TokenPanel/index.js +1 -1
  350. package/dist/components/ToolButton/index.js +1 -1
  351. package/dist/components/ToolGroup/index.js +1 -1
  352. package/dist/components/ToolOptionsBar/index.js +1 -1
  353. package/dist/components/ToolPalette/index.d.ts +1 -0
  354. package/dist/components/ToolPalette/index.d.ts.map +1 -1
  355. package/dist/components/ToolPalette/index.js +3 -2
  356. package/dist/components/Tooltip/Tooltip.d.ts +6 -2
  357. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  358. package/dist/components/Tooltip/index.d.ts +1 -1
  359. package/dist/components/Tooltip/index.d.ts.map +1 -1
  360. package/dist/components/Tooltip/index.js +2 -2
  361. package/dist/components/Tree/Tree.d.ts +84 -0
  362. package/dist/components/Tree/Tree.d.ts.map +1 -0
  363. package/dist/components/Tree/index.d.ts +3 -0
  364. package/dist/components/Tree/index.d.ts.map +1 -0
  365. package/dist/components/Tree/index.js +2 -0
  366. package/dist/components/segmentTooltip.d.ts +30 -0
  367. package/dist/components/segmentTooltip.d.ts.map +1 -0
  368. package/dist/components/stance.d.ts +30 -0
  369. package/dist/components/stance.d.ts.map +1 -0
  370. package/dist/components/stanceCss.d.ts +31 -0
  371. package/dist/components/stanceCss.d.ts.map +1 -0
  372. package/dist/components/stanceSurfaces.d.ts +4 -0
  373. package/dist/components/stanceSurfaces.d.ts.map +1 -0
  374. package/dist/format/number.d.ts +3 -2
  375. package/dist/format/number.d.ts.map +1 -1
  376. package/dist/icons/Icon.d.ts.map +1 -1
  377. package/dist/icons/ShapeKindIcon.d.ts +10 -0
  378. package/dist/icons/ShapeKindIcon.d.ts.map +1 -0
  379. package/dist/icons/index.d.ts +5 -3
  380. package/dist/icons/index.d.ts.map +1 -1
  381. package/dist/icons/paths.d.ts +2 -0
  382. package/dist/icons/paths.d.ts.map +1 -1
  383. package/dist/index.d.ts +16 -3
  384. package/dist/index.d.ts.map +1 -1
  385. package/dist/index.js +110 -78
  386. package/dist/index.js.map +1 -1
  387. package/dist/interactiveTarget.d.ts +9 -0
  388. package/dist/interactiveTarget.d.ts.map +1 -0
  389. package/dist/style.css +1 -1
  390. package/dist/useReorderDragList.d.ts +36 -7
  391. package/dist/useReorderDragList.d.ts.map +1 -1
  392. package/dist/useRovingTabIndex.d.ts +1 -1
  393. package/dist/useScrollSpy.d.ts +48 -0
  394. package/dist/useScrollSpy.d.ts.map +1 -0
  395. package/package.json +8 -8
  396. package/dist/chunks/ActionBar-CLwiY3Jg.js +0 -62
  397. package/dist/chunks/ActionBar-CLwiY3Jg.js.map +0 -1
  398. package/dist/chunks/ActionsBar-D84a4eGy.js +0 -41
  399. package/dist/chunks/ActionsBar-D84a4eGy.js.map +0 -1
  400. package/dist/chunks/Badge-CW9pBPFl.js.map +0 -1
  401. package/dist/chunks/Button-DRSApvnK.js +0 -90
  402. package/dist/chunks/Button-DRSApvnK.js.map +0 -1
  403. package/dist/chunks/Callout-DrNu-9Qr.js +0 -122
  404. package/dist/chunks/Callout-DrNu-9Qr.js.map +0 -1
  405. package/dist/chunks/ColorField-BYzgZM9o.js.map +0 -1
  406. package/dist/chunks/DataGrid-C8KrYtw7.js +0 -104
  407. package/dist/chunks/DataGrid-C8KrYtw7.js.map +0 -1
  408. package/dist/chunks/Dialog-fGqqQ6o_.js +0 -61
  409. package/dist/chunks/Dialog-fGqqQ6o_.js.map +0 -1
  410. package/dist/chunks/Disclosure-CILDfWsU.js +0 -47
  411. package/dist/chunks/Disclosure-CILDfWsU.js.map +0 -1
  412. package/dist/chunks/GradientEditor-rRBmf3G0.js +0 -333
  413. package/dist/chunks/Icon-DT0x6HaQ.js.map +0 -1
  414. package/dist/chunks/InlineRange-DdIlfGqG.js +0 -29
  415. package/dist/chunks/InlineRange-DdIlfGqG.js.map +0 -1
  416. package/dist/chunks/Input-DbMKpkXy.js.map +0 -1
  417. package/dist/chunks/ItemList-B9zYb0GE.js +0 -42
  418. package/dist/chunks/ItemList-B9zYb0GE.js.map +0 -1
  419. package/dist/chunks/Keycaps-DunVpejA.js.map +0 -1
  420. package/dist/chunks/LayerStack-CfQ6GsRz.js +0 -142
  421. package/dist/chunks/LayerStack-CfQ6GsRz.js.map +0 -1
  422. package/dist/chunks/MenuButton-C_4nox39.js +0 -60
  423. package/dist/chunks/MenuButton-C_4nox39.js.map +0 -1
  424. package/dist/chunks/MeshEditor-Bipz-Ocl.js +0 -123
  425. package/dist/chunks/MeshEditor-Bipz-Ocl.js.map +0 -1
  426. package/dist/chunks/NumberField-CCjEDZCg.js.map +0 -1
  427. package/dist/chunks/PaintField-jBOJ32rL.js.map +0 -1
  428. package/dist/chunks/Powerline-Ak5AWUlK.js.map +0 -1
  429. package/dist/chunks/Prefs-CNC8tzyN.js +0 -308
  430. package/dist/chunks/Prefs-CNC8tzyN.js.map +0 -1
  431. package/dist/chunks/Properties-Rnb6TAbN.js +0 -891
  432. package/dist/chunks/Properties-Rnb6TAbN.js.map +0 -1
  433. package/dist/chunks/Select-BEope086.js +0 -190
  434. package/dist/chunks/Select-BEope086.js.map +0 -1
  435. package/dist/chunks/SidebarPanel-Bs6V21hg.js.map +0 -1
  436. package/dist/chunks/Timeline-DNKY_yiK.js.map +0 -1
  437. package/dist/chunks/ToggleBar-CClus5Cd.js +0 -75
  438. package/dist/chunks/ToolPalette-DGkKwE7D.js +0 -97
  439. package/dist/chunks/ToolPalette-DGkKwE7D.js.map +0 -1
  440. package/dist/chunks/Tooltip-C4YBczLq.js.map +0 -1
  441. package/dist/chunks/icons-DFLytcui.js +0 -165
  442. package/dist/chunks/icons-DFLytcui.js.map +0 -1
  443. package/dist/chunks/model-13kZ_-mE.js +0 -483
  444. package/dist/chunks/model-13kZ_-mE.js.map +0 -1
  445. package/dist/chunks/number-BHz66zQO.js.map +0 -1
  446. package/dist/chunks/range.module-DSsOIq1R.js +0 -8
  447. package/dist/chunks/range.module-DSsOIq1R.js.map +0 -1
  448. package/dist/chunks/schema-Dft4Cu2p.js +0 -47
  449. package/dist/chunks/schema-Dft4Cu2p.js.map +0 -1
  450. package/dist/chunks/segmentedControl.module-DS72X1ns.js +0 -11
  451. package/dist/chunks/segmentedControl.module-DS72X1ns.js.map +0 -1
  452. package/dist/chunks/useReorderDragList-CSQGd7zQ.js +0 -102
  453. package/dist/chunks/useReorderDragList-CSQGd7zQ.js.map +0 -1
  454. package/dist/chunks/useRovingTabIndex-Dkpf_KhN.js.map +0 -1
  455. package/dist/components/ActionsBar/ActionsBar.d.ts +0 -35
  456. package/dist/components/ActionsBar/ActionsBar.d.ts.map +0 -1
  457. package/dist/components/ActionsBar/index.d.ts +0 -3
  458. package/dist/components/ActionsBar/index.d.ts.map +0 -1
  459. package/dist/components/ActionsBar/index.js +0 -2
  460. package/dist/components/LayerStack/LayerStack.d.ts +0 -62
  461. package/dist/components/LayerStack/LayerStack.d.ts.map +0 -1
  462. package/dist/components/LayerStack/index.d.ts +0 -2
  463. package/dist/components/LayerStack/index.d.ts.map +0 -1
  464. package/dist/components/LayerStack/index.js +0 -2
  465. package/dist/components/Properties/EffectCard.d.ts +0 -69
  466. package/dist/components/Properties/EffectCard.d.ts.map +0 -1
@@ -0,0 +1,83 @@
1
+ import { t as e } from "./formatShortcut-BoGqUoWi.js";
2
+ import { t } from "./useRovingTabIndex-B4uJqiKP.js";
3
+ import { t as n } from "./ToolButton-rzqlFlAc.js";
4
+ import { t as r } from "./ToolGroup-4bUBV5k6.js";
5
+ import { UnknownIcon as i } from "@weasel-js/core";
6
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { Fragment as s } from "react";
8
+ import { eligibleContribution as c } from "@weasel-js/modes";
9
+ var l = {
10
+ palette: "_palette_zei9m_1",
11
+ horizontal: "_horizontal_zei9m_11",
12
+ paletteBtn: "_paletteBtn_zei9m_17",
13
+ ineligibleBtn: "_ineligibleBtn_zei9m_20",
14
+ separator: "_separator_zei9m_25"
15
+ }, u = [
16
+ "select",
17
+ "shape",
18
+ "draw",
19
+ "type",
20
+ "view"
21
+ ], d = "misc";
22
+ function f(e) {
23
+ let t = /* @__PURE__ */ new Map();
24
+ for (let n of e) {
25
+ let e = n.presentation?.group ?? d, r = t.get(e) ?? [];
26
+ r.push(n), t.set(e, r);
27
+ }
28
+ return t;
29
+ }
30
+ function p(e, t) {
31
+ let n = new Set(e.keys()), r = [];
32
+ for (let e of t) n.has(e) && (r.push(e), n.delete(e));
33
+ for (let t of e.keys()) n.has(t) && t !== d && (r.push(t), n.delete(t));
34
+ return n.has(d) && r.push(d), r;
35
+ }
36
+ function m(e) {
37
+ let t = e.presentation?.icon;
38
+ return t == null ? /* @__PURE__ */ a(i, {}) : typeof t == "function" ? t(void 0) : t;
39
+ }
40
+ function h(i) {
41
+ let { tools: d, orientation: h = "vertical", className: g, lookupShortcut: _, modeRegistry: v, groupOrder: y = u } = i, b = f(Object.values(d.registry)), x = p(b, y), S = [
42
+ l.palette,
43
+ h === "horizontal" && l.horizontal,
44
+ g
45
+ ].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 === d.active), E = t({
46
+ items: w.map((e) => ({ disabled: !e })),
47
+ itemClassName: l.paletteBtn,
48
+ ...T >= 0 && w[T] ? { tabStopIndex: T } : {}
49
+ }), D = -1;
50
+ return /* @__PURE__ */ a("div", {
51
+ ref: E.rootRef,
52
+ className: S,
53
+ role: "toolbar",
54
+ "aria-label": "Tools",
55
+ children: x.map((t, i) => /* @__PURE__ */ o(s, { children: [i > 0 && /* @__PURE__ */ a("div", {
56
+ className: l.separator,
57
+ role: "separator",
58
+ "aria-orientation": h === "horizontal" ? "vertical" : "horizontal"
59
+ }), /* @__PURE__ */ a(r, {
60
+ orientation: h,
61
+ groupKey: t,
62
+ children: b.get(t).map((t) => {
63
+ let r = ++D, i = t.presentation?.label ?? t.id, o = t.presentation?.shortcut ?? e(_ ? _(t.id) : t.keybinding), s = w[r], c = v ? v.current().id : void 0, u = !s && c ? `${i}${o ? ` (${o})` : ""} — disabled in ${c} mode` : void 0;
64
+ return /* @__PURE__ */ a(n, {
65
+ icon: m(t),
66
+ label: i,
67
+ shortcut: o,
68
+ active: d.active === t.id,
69
+ tabbable: E.tabIndexFor(r) === 0,
70
+ ariaDisabled: !s,
71
+ className: [l.paletteBtn, !s && l.ineligibleBtn].filter(Boolean).join(" "),
72
+ title: u,
73
+ onClick: s ? () => d.setActive(t.id) : () => {},
74
+ onKeyDown: E.onKeyDown(r)
75
+ }, t.id);
76
+ })
77
+ })] }, t))
78
+ });
79
+ }
80
+ //#endregion
81
+ export { h as t };
82
+
83
+ //# sourceMappingURL=ToolPalette-Uw4PvWwa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolPalette-Uw4PvWwa.js","names":[],"sources":["../../src/components/ToolPalette/ToolPalette.module.css","../../src/components/ToolPalette/ToolPalette.tsx"],"sourcesContent":[".palette {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-2);\n background: var(--wzl-surface);\n border: 1px solid var(--wzl-border);\n border-radius: var(--wzl-radius-sm);\n padding: var(--wzl-space-2);\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: var(--wzl-space-1) 0;\n}\n.palette.horizontal .separator {\n width: 1px;\n margin: 0 var(--wzl-space-1);\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\n * `eligibility.capabilities` do not match the current mode are rendered\n * greyed-out, aria-disabled, and their onClick is suppressed. When omitted,\n * all tools are treated as eligible (preserves existing behavior in\n * 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,31 +1,31 @@
1
1
  import { r as e } from "./portalHost-CjpCnuGU.js";
2
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 = {
3
+ import { Focusable as i, OverlayArrow as a, Tooltip as o, TooltipTrigger as s } from "react-aria-components";
4
+ var c = {
5
5
  tooltip: "_tooltip_ityd9_1",
6
6
  arrow: "_arrow_ityd9_22"
7
7
  };
8
8
  //#endregion
9
9
  //#region src/components/Tooltip/Tooltip.tsx
10
- function c(e) {
10
+ function l(e) {
11
11
  let { delay: t = 600, closeDelay: r = 0, ...i } = e;
12
- return /* @__PURE__ */ n(o, {
12
+ return /* @__PURE__ */ n(s, {
13
13
  delay: t,
14
14
  closeDelay: r,
15
15
  ...i
16
16
  });
17
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, {
18
+ function u(i) {
19
+ let { children: s, className: l, placement: u = "top", offset: d = 8, portalContainer: f, ...p } = i, { anchor: m, portalProps: h } = e(f);
20
+ return /* @__PURE__ */ r(t, { children: [m, /* @__PURE__ */ r(o, {
21
21
  ...p,
22
22
  placement: u,
23
23
  offset: d,
24
- className: [s.tooltip, l].filter(Boolean).join(" "),
24
+ className: [c.tooltip, l].filter(Boolean).join(" "),
25
25
  "data-weasel-overlay": "",
26
26
  ...h,
27
- children: [/* @__PURE__ */ n(i, {
28
- className: s.arrow,
27
+ children: [/* @__PURE__ */ n(a, {
28
+ className: c.arrow,
29
29
  children: /* @__PURE__ */ n("svg", {
30
30
  width: 8,
31
31
  height: 8,
@@ -33,10 +33,10 @@ function l(o) {
33
33
  "aria-hidden": "true",
34
34
  children: /* @__PURE__ */ n("path", { d: "M0 0 L4 4 L8 0" })
35
35
  })
36
- }), c]
36
+ }), s]
37
37
  })] });
38
38
  }
39
39
  //#endregion
40
- export { c as n, l as t };
40
+ export { u as n, l as r, i as t };
41
41
 
42
- //# sourceMappingURL=Tooltip-C4YBczLq.js.map
42
+ //# sourceMappingURL=Tooltip-9XiJF937.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip-9XiJF937.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: var(--wzl-space-2) var(--wzl-space-4);\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/** Makes a non-RAC element a {@link TooltipTrigger} trigger: supplies\n * `tabIndex`, the hover/focus handlers and `aria-describedby`. The child must\n * forward its ref and DOM props, and carry an interactive role (or `img`). */\nexport { Focusable } from 'react-aria-components';\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>`, a `Badge` etc.) must be wrapped in {@link Focusable} so\n * 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":";;;;;;;;;ACgCA,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"}
@@ -0,0 +1,203 @@
1
+ import { n as e } from "./Disclosure-D79jhmh2.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { forwardRef as r, useId as i, useMemo as a, useRef as o, useState as s } from "react";
4
+ var c = {
5
+ tree: "_tree_10k4o_1",
6
+ group: "_group_10k4o_2",
7
+ item: "_item_10k4o_19",
8
+ row: "_row_10k4o_23",
9
+ twisty: "_twisty_10k4o_61",
10
+ leading: "_leading_10k4o_75",
11
+ label: "_label_10k4o_81",
12
+ trailing: "_trailing_10k4o_88",
13
+ empty: "_empty_10k4o_95"
14
+ }, l = 500, u = r(function({ nodes: r, empty: u, className: d, "aria-label": f, "aria-labelledby": g, expandedIds: _, defaultExpandedIds: v, onExpandedChange: y, selectionMode: b = "none", selectedIds: x, defaultSelectedIds: S, onSelectionChange: C, onAction: w }, T) {
15
+ let [E, D] = h(_, v, y), [O, k] = h(x, S, C), A = b !== "none", j = i(), M = a(() => {
16
+ let e = [], t = (n, r, i) => {
17
+ for (let a of n) e.push({
18
+ node: a,
19
+ parentId: r,
20
+ level: i
21
+ }), a.children && E.has(a.id) && t(a.children, a.id, i + 1);
22
+ };
23
+ return t(r, null, 1), e;
24
+ }, [r, E]), N = a(() => new Map(M.map((e, t) => [e.node.id, t])), [M]), P = o(/* @__PURE__ */ new Map()), [F, I] = s(null), L = o(null), R = o({
25
+ text: "",
26
+ at: 0
27
+ }), z = F != null && N.has(F) ? F : (M.find((e) => A && O.has(e.node.id)) ?? M[0])?.node.id;
28
+ if (r.length === 0) return /* @__PURE__ */ t("div", {
29
+ className: [c.empty, d].filter(Boolean).join(" "),
30
+ children: u ?? "—"
31
+ });
32
+ let B = (e) => {
33
+ e != null && P.current.get(e)?.focus();
34
+ }, V = (e) => {
35
+ if (!e.children || e.disabled) return;
36
+ let t = new Set(E);
37
+ t.has(e.id) ? t.delete(e.id) : t.add(e.id), D(t);
38
+ }, H = (e, t) => {
39
+ let n;
40
+ if (b === "multiple" && t.shiftKey && L.current != null && N.has(L.current)) {
41
+ let t = N.get(L.current), r = N.get(e);
42
+ n = new Set(M.slice(Math.min(t, r), Math.max(t, r) + 1).filter((e) => !e.node.disabled).map((e) => e.node.id));
43
+ } else b === "multiple" && (t.metaKey || t.ctrlKey) ? (n = new Set(O), n.has(e) ? n.delete(e) : n.add(e), L.current = e) : (n = new Set([e]), L.current = e);
44
+ (n.size !== O.size || [...n].some((e) => !O.has(e))) && k(n);
45
+ }, U = (e, t) => {
46
+ e.disabled || (V(e), A && H(e.id, t), w?.(e.id, t));
47
+ }, W = (e) => (t) => {
48
+ if (t.target !== t.currentTarget) return;
49
+ let n = N.get(e.node.id), { node: r } = e, i = !!r.children && E.has(r.id);
50
+ switch (t.key) {
51
+ case "ArrowDown":
52
+ t.preventDefault(), B(M[Math.min(n + 1, M.length - 1)].node.id);
53
+ return;
54
+ case "ArrowUp":
55
+ t.preventDefault(), B(M[Math.max(n - 1, 0)].node.id);
56
+ return;
57
+ case "Home":
58
+ t.preventDefault(), B(M[0].node.id);
59
+ return;
60
+ case "End":
61
+ t.preventDefault(), B(M[M.length - 1].node.id);
62
+ return;
63
+ case "ArrowRight":
64
+ if (!r.children) return;
65
+ t.preventDefault(), i ? B(r.children[0]?.id) : V(r);
66
+ return;
67
+ case "ArrowLeft":
68
+ t.preventDefault(), i ? V(r) : B(e.parentId ?? void 0);
69
+ return;
70
+ case "Enter":
71
+ case " ":
72
+ t.preventDefault(), U(r, m(t));
73
+ return;
74
+ default:
75
+ if (t.key.length !== 1 || t.ctrlKey || t.metaKey || t.altKey) return;
76
+ G(t, n);
77
+ }
78
+ }, G = (e, t) => {
79
+ let n = Date.now(), r = R.current;
80
+ r.text = n - r.at > l ? e.key : r.text + e.key, r.at = n;
81
+ let i = r.text.toLowerCase(), a = r.text.length === 1 ? t + 1 : t;
82
+ for (let t = 0; t < M.length; t++) {
83
+ let n = M[(a + t) % M.length];
84
+ if (p(n.node).toLowerCase().startsWith(i)) {
85
+ e.preventDefault(), B(n.node.id);
86
+ return;
87
+ }
88
+ }
89
+ }, K = (e) => (t) => U(e, m(t)), q = (e) => (t) => {
90
+ t.stopPropagation(), V(e);
91
+ }, J = (e) => (t) => {
92
+ t ? P.current.set(e, t) : P.current.delete(e);
93
+ }, Y = 0, X = (r, i, a) => r.map((o, s) => {
94
+ let l = Y++, u = !!o.children, d = u && E.has(o.id), f = `${j}-${l}`, p = o.trailing == null ? void 0 : `${j}-${l}-t`;
95
+ return /* @__PURE__ */ n("li", {
96
+ ref: J(o.id),
97
+ role: "treeitem",
98
+ className: [c.item, o.className].filter(Boolean).join(" "),
99
+ "aria-level": a,
100
+ "aria-setsize": r.length,
101
+ "aria-posinset": s + 1,
102
+ "aria-expanded": u ? d : void 0,
103
+ "aria-selected": A ? O.has(o.id) : void 0,
104
+ "aria-disabled": o.disabled || void 0,
105
+ "aria-labelledby": p ? `${f} ${p}` : f,
106
+ "data-muted": o.muted ? "true" : void 0,
107
+ tabIndex: o.id === z ? 0 : -1,
108
+ onKeyDown: W({
109
+ node: o,
110
+ parentId: i,
111
+ level: a
112
+ }),
113
+ onFocus: (e) => {
114
+ e.target === e.currentTarget && I(o.id);
115
+ },
116
+ children: [/* @__PURE__ */ n("div", {
117
+ className: c.row,
118
+ onClick: K(o),
119
+ children: [
120
+ /* @__PURE__ */ t("span", {
121
+ className: c.twisty,
122
+ "aria-hidden": "true",
123
+ onClick: u ? q(o) : void 0,
124
+ children: u && /* @__PURE__ */ t(e, { open: d })
125
+ }),
126
+ o.leading != null && /* @__PURE__ */ t("span", {
127
+ className: c.leading,
128
+ children: o.leading
129
+ }),
130
+ /* @__PURE__ */ t("span", {
131
+ id: f,
132
+ className: c.label,
133
+ children: o.label
134
+ }),
135
+ p && /* @__PURE__ */ t("span", {
136
+ id: p,
137
+ className: c.trailing,
138
+ children: o.trailing
139
+ })
140
+ ]
141
+ }), d && o.children.length > 0 && /* @__PURE__ */ t("ul", {
142
+ role: "group",
143
+ className: c.group,
144
+ children: X(o.children, o.id, a + 1)
145
+ })]
146
+ }, o.id);
147
+ });
148
+ return /* @__PURE__ */ t("ul", {
149
+ ref: T,
150
+ role: "tree",
151
+ className: [c.tree, d].filter(Boolean).join(" "),
152
+ "aria-label": f,
153
+ "aria-labelledby": g,
154
+ "aria-multiselectable": b === "multiple" || void 0,
155
+ children: X(r, null, 1)
156
+ });
157
+ });
158
+ function d(e, t) {
159
+ let n = !1, r = [];
160
+ for (let i of e) {
161
+ if (t(i)) {
162
+ r.push(i);
163
+ continue;
164
+ }
165
+ let e = i.children ? d(i.children, t) : [];
166
+ if (e.length === 0) {
167
+ n = !0;
168
+ continue;
169
+ }
170
+ e !== i.children && (n = !0), r.push(e === i.children ? i : {
171
+ ...i,
172
+ children: e
173
+ });
174
+ }
175
+ return n ? r : e;
176
+ }
177
+ function f(e) {
178
+ let t = [], n = (e) => {
179
+ for (let r of e) r.children && (t.push(r.id), n(r.children));
180
+ };
181
+ return n(e), t;
182
+ }
183
+ function p(e) {
184
+ return e.textValue ?? (typeof e.label == "string" ? e.label : "");
185
+ }
186
+ function m(e) {
187
+ return {
188
+ shiftKey: e.shiftKey,
189
+ ctrlKey: e.ctrlKey,
190
+ metaKey: e.metaKey,
191
+ altKey: e.altKey
192
+ };
193
+ }
194
+ function h(e, t, n) {
195
+ let [r, i] = s(() => new Set(t));
196
+ return [a(() => e === void 0 ? void 0 : new Set(e), [e]) ?? r, (t) => {
197
+ e === void 0 && i(t), n?.(t);
198
+ }];
199
+ }
200
+ //#endregion
201
+ export { d as n, f as r, u as t };
202
+
203
+ //# sourceMappingURL=Tree-BGt6P8tI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree-BGt6P8tI.js","names":[],"sources":["../../src/components/Tree/Tree.module.css","../../src/components/Tree/Tree.tsx"],"sourcesContent":[".tree,\n.group {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.tree {\n user-select: none;\n -webkit-user-select: none;\n width: 100%;\n}\n\n/* One twisty and one gap, so a child's twisty sits under its parent's label. */\n.group {\n padding-inline-start: var(--wzl-tree-indent, calc(var(--wzl-control-h-xs) + var(--wzl-space-2)));\n}\n\n.item {\n outline: none;\n}\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--wzl-space-2);\n padding: 0 var(--wzl-space-2) 0 0;\n height: var(--wzl-control-h);\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg);\n border-radius: var(--wzl-radius-sm);\n cursor: default;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.row:hover {\n background: var(--wzl-surface);\n}\n\n.item:focus-visible > .row {\n outline: 2px solid var(--wzl-focus-ring);\n outline-offset: -2px;\n}\n\n.item[aria-selected='true'] > .row {\n background: var(--wzl-border);\n}\n\n.item[data-muted] > .row {\n color: var(--wzl-fg-subtle);\n}\n\n.item[aria-disabled='true'] > .row {\n color: var(--wzl-fg-subtle);\n cursor: not-allowed;\n}\n\n/* A leaf keeps the empty box, so labels at one level line up whether or not\n their rows are branches. */\n.twisty {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wzl-control-h-xs);\n align-self: stretch;\n color: var(--wzl-fg-muted);\n}\n\n.row:hover > .twisty {\n color: var(--wzl-fg);\n}\n\n.leading {\n flex: none;\n display: inline-flex;\n align-items: center;\n}\n\n.label {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.trailing {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wzl-space-2);\n}\n\n.empty {\n padding: var(--wzl-space-6) var(--wzl-space-4);\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-subtle);\n font-style: italic;\n}\n","/**\n * A hierarchy of rows that expand and collapse: a file tree, a registry\n * browser, an outline.\n *\n * **Semantics.** WAI-ARIA `tree`: each node is a `treeitem` carrying\n * `aria-level`, `aria-setsize` and `aria-posinset`; a branch carries\n * `aria-expanded` and nests its children in a `group`, which is rendered only\n * while the branch is open. `aria-selected` appears only when `selectionMode`\n * is set. A treeitem may not contain interactive content, so `leading` and\n * `trailing` are decoration — an icon, a count — and the twisty is a drawn\n * `DisclosureMark`, not a button.\n *\n * **Keyboard.** One treeitem is in the tab order: the one last focused, else\n * the first selected, else the first. Up/Down move between visible rows,\n * Home/End go to the first and last. Right opens a closed branch, then moves\n * into it; Left closes an open branch, else moves to the parent. Enter and\n * Space activate, as a click does. Typing moves to the next row whose text\n * starts with what was typed.\n *\n * **Activating** a row — click, Enter, Space — toggles it if it is a branch,\n * selects it under `selectionMode`, and calls `onAction`. Clicking the twisty\n * only toggles.\n *\n * **Filtering** is the consumer's: narrow `nodes` with `filterTree`, and pass\n * `treeBranchIds` of the result as `expandedIds` so every match shows.\n */\nimport {\n forwardRef,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport type { PressModifiers } from '../../useReorderDragList';\nimport { DisclosureMark } from '../Disclosure';\nimport s from './Tree.module.css';\n\n/** One node. A node with `children` is a branch, even when the array is empty. */\nexport interface TreeNode {\n /** Unique across the whole tree. */\n id: string;\n label: ReactNode;\n /** What type-ahead matches against. Defaults to `label` when that is a string. */\n textValue?: string;\n /** Decoration before the label — an icon. Not a control. */\n leading?: ReactNode;\n /** Decoration after the label — a count badge. Not a control. Read as part\n * of the row's accessible name. */\n trailing?: ReactNode;\n children?: readonly TreeNode[];\n /** Present but not in effect. */\n muted?: boolean;\n /** Focusable and announced, but cannot be activated, expanded or selected. */\n disabled?: boolean;\n className?: string;\n}\n\n/** Whether and how rows are selectable. */\nexport type TreeSelectionMode = 'none' | 'single' | 'multiple';\n\nexport interface TreeProps {\n nodes: readonly TreeNode[];\n /** Shown in place of the tree when `nodes` is empty. */\n empty?: ReactNode;\n className?: string;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n\n /** Open branches, controlled. */\n expandedIds?: Iterable<string>;\n /** Open branches on first render, when uncontrolled. */\n defaultExpandedIds?: Iterable<string>;\n /** The whole set a toggle would produce. Called whether or not controlled. */\n onExpandedChange?(ids: Set<string>): void;\n\n /** Default `'none'`. `'multiple'` adds to the selection with Cmd/Ctrl and\n * extends it over visible rows with Shift. */\n selectionMode?: TreeSelectionMode;\n /** Selected rows, controlled. */\n selectedIds?: Iterable<string>;\n /** Selected rows on first render, when uncontrolled. */\n defaultSelectedIds?: Iterable<string>;\n /** The whole set an activation would produce, when it differs. */\n onSelectionChange?(ids: Set<string>): void;\n\n /** A row was activated — click, Enter or Space — with the modifiers held. */\n onAction?(id: string, mods: PressModifiers): void;\n}\n\ninterface Visible {\n node: TreeNode;\n parentId: string | null;\n level: number;\n}\n\nconst TYPEAHEAD_MS = 500;\n\nexport const Tree = forwardRef(function Tree(\n {\n nodes, empty, className,\n 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy,\n expandedIds, defaultExpandedIds, onExpandedChange,\n selectionMode = 'none', selectedIds, defaultSelectedIds, onSelectionChange,\n onAction,\n }: TreeProps,\n ref: Ref<HTMLUListElement>,\n) {\n const [expanded, setExpanded] = useControlledSet(expandedIds, defaultExpandedIds, onExpandedChange);\n const [selected, setSelected] = useControlledSet(selectedIds, defaultSelectedIds, onSelectionChange);\n const selectable = selectionMode !== 'none';\n const baseId = useId();\n\n const visible = useMemo(() => {\n const out: Visible[] = [];\n const walk = (list: readonly TreeNode[], parentId: string | null, level: number) => {\n for (const node of list) {\n out.push({ node, parentId, level });\n if (node.children && expanded.has(node.id)) walk(node.children, node.id, level + 1);\n }\n };\n walk(nodes, null, 1);\n return out;\n }, [nodes, expanded]);\n const indexOf = useMemo(() => new Map(visible.map((v, i) => [v.node.id, i])), [visible]);\n\n const items = useRef(new Map<string, HTMLLIElement>());\n const [focusId, setFocusId] = useState<string | null>(null);\n const anchor = useRef<string | null>(null);\n const typed = useRef({ text: '', at: 0 });\n\n const stopId = focusId != null && indexOf.has(focusId)\n ? focusId\n : (visible.find((v) => selectable && selected.has(v.node.id)) ?? visible[0])?.node.id;\n\n if (nodes.length === 0) {\n return <div className={[s.empty, className].filter(Boolean).join(' ')}>{empty ?? '—'}</div>;\n }\n\n const focus = (id: string | undefined) => { if (id != null) items.current.get(id)?.focus(); };\n\n const toggle = (node: TreeNode) => {\n if (!node.children || node.disabled) return;\n const next = new Set(expanded);\n if (next.has(node.id)) next.delete(node.id);\n else next.add(node.id);\n setExpanded(next);\n };\n\n const select = (id: string, mods: PressModifiers) => {\n let next: Set<string>;\n if (selectionMode === 'multiple' && mods.shiftKey && anchor.current != null && indexOf.has(anchor.current)) {\n const a = indexOf.get(anchor.current)!;\n const b = indexOf.get(id)!;\n next = new Set(visible.slice(Math.min(a, b), Math.max(a, b) + 1)\n .filter((v) => !v.node.disabled).map((v) => v.node.id));\n } else if (selectionMode === 'multiple' && (mods.metaKey || mods.ctrlKey)) {\n next = new Set(selected);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n anchor.current = id;\n } else {\n next = new Set([id]);\n anchor.current = id;\n }\n if (next.size !== selected.size || [...next].some((x) => !selected.has(x))) setSelected(next);\n };\n\n const activate = (node: TreeNode, mods: PressModifiers) => {\n if (node.disabled) return;\n toggle(node);\n if (selectable) select(node.id, mods);\n onAction?.(node.id, mods);\n };\n\n const onKeyDown = (v: Visible) => (e: KeyboardEvent<HTMLLIElement>) => {\n if (e.target !== e.currentTarget) return;\n const i = indexOf.get(v.node.id)!;\n const { node } = v;\n const open = !!node.children && expanded.has(node.id);\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n focus(visible[Math.min(i + 1, visible.length - 1)].node.id);\n return;\n case 'ArrowUp':\n e.preventDefault();\n focus(visible[Math.max(i - 1, 0)].node.id);\n return;\n case 'Home':\n e.preventDefault();\n focus(visible[0].node.id);\n return;\n case 'End':\n e.preventDefault();\n focus(visible[visible.length - 1].node.id);\n return;\n case 'ArrowRight':\n if (!node.children) return;\n e.preventDefault();\n if (!open) toggle(node);\n else focus(node.children[0]?.id);\n return;\n case 'ArrowLeft':\n e.preventDefault();\n if (open) toggle(node);\n else focus(v.parentId ?? undefined);\n return;\n case 'Enter':\n case ' ':\n e.preventDefault();\n activate(node, modsOf(e));\n return;\n default:\n if (e.key.length !== 1 || e.ctrlKey || e.metaKey || e.altKey) return;\n typeAhead(e, i);\n }\n };\n\n const typeAhead = (e: KeyboardEvent, from: number) => {\n const now = Date.now();\n const t = typed.current;\n t.text = now - t.at > TYPEAHEAD_MS ? e.key : t.text + e.key;\n t.at = now;\n const want = t.text.toLowerCase();\n // A fresh first letter looks past the current row; a longer prefix may still match it.\n const start = t.text.length === 1 ? from + 1 : from;\n for (let k = 0; k < visible.length; k++) {\n const v = visible[(start + k) % visible.length];\n if (textOf(v.node).toLowerCase().startsWith(want)) {\n e.preventDefault();\n focus(v.node.id);\n return;\n }\n }\n };\n\n const onRowClick = (node: TreeNode) => (e: MouseEvent<HTMLDivElement>) => activate(node, modsOf(e));\n\n const onTwistyClick = (node: TreeNode) => (e: MouseEvent<HTMLSpanElement>) => {\n e.stopPropagation();\n toggle(node);\n };\n\n const itemRef = (id: string) => (el: HTMLLIElement | null) => {\n if (el) items.current.set(id, el);\n else items.current.delete(id);\n };\n\n let seq = 0;\n const renderLevel = (list: readonly TreeNode[], parentId: string | null, level: number): ReactNode =>\n list.map((node, pos) => {\n const n = seq++;\n const branch = !!node.children;\n const open = branch && expanded.has(node.id);\n const labelId = `${baseId}-${n}`;\n const trailingId = node.trailing != null ? `${baseId}-${n}-t` : undefined;\n return (\n <li\n key={node.id}\n ref={itemRef(node.id)}\n role=\"treeitem\"\n className={[s.item, node.className].filter(Boolean).join(' ')}\n aria-level={level}\n aria-setsize={list.length}\n aria-posinset={pos + 1}\n aria-expanded={branch ? open : undefined}\n aria-selected={selectable ? selected.has(node.id) : undefined}\n aria-disabled={node.disabled || undefined}\n aria-labelledby={trailingId ? `${labelId} ${trailingId}` : labelId}\n data-muted={node.muted ? 'true' : undefined}\n tabIndex={node.id === stopId ? 0 : -1}\n onKeyDown={onKeyDown({ node, parentId, level })}\n onFocus={(e) => { if (e.target === e.currentTarget) setFocusId(node.id); }}\n >\n <div className={s.row} onClick={onRowClick(node)}>\n <span className={s.twisty} aria-hidden=\"true\" onClick={branch ? onTwistyClick(node) : undefined}>\n {branch && <DisclosureMark open={open} />}\n </span>\n {node.leading != null && <span className={s.leading}>{node.leading}</span>}\n <span id={labelId} className={s.label}>{node.label}</span>\n {trailingId && <span id={trailingId} className={s.trailing}>{node.trailing}</span>}\n </div>\n {open && node.children!.length > 0 && (\n <ul role=\"group\" className={s.group}>\n {renderLevel(node.children!, node.id, level + 1)}\n </ul>\n )}\n </li>\n );\n });\n\n return (\n <ul\n ref={ref}\n role=\"tree\"\n className={[s.tree, className].filter(Boolean).join(' ')}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-multiselectable={selectionMode === 'multiple' || undefined}\n >\n {renderLevel(nodes, null, 1)}\n </ul>\n );\n});\n\n/**\n * `nodes` narrowed to those `match` accepts, plus their ancestors. A matching\n * node keeps its whole subtree; a branch with no match inside it is dropped.\n * Returns `nodes` itself when nothing is dropped.\n */\nexport function filterTree(\n nodes: readonly TreeNode[],\n match: (node: TreeNode) => boolean,\n): readonly TreeNode[] {\n let changed = false;\n const out: TreeNode[] = [];\n for (const node of nodes) {\n if (match(node)) {\n out.push(node);\n continue;\n }\n const kids = node.children ? filterTree(node.children, match) : [];\n if (kids.length === 0) {\n changed = true;\n continue;\n }\n if (kids !== node.children) changed = true;\n out.push(kids === node.children ? node : { ...node, children: kids });\n }\n return changed ? out : nodes;\n}\n\n/** Every branch id in `nodes`, depth first — `expandedIds` for a tree with everything open. */\nexport function treeBranchIds(nodes: readonly TreeNode[]): string[] {\n const out: string[] = [];\n const walk = (list: readonly TreeNode[]) => {\n for (const node of list) {\n if (!node.children) continue;\n out.push(node.id);\n walk(node.children);\n }\n };\n walk(nodes);\n return out;\n}\n\nfunction textOf(node: TreeNode): string {\n return node.textValue ?? (typeof node.label === 'string' ? node.label : '');\n}\n\nfunction modsOf(e: { shiftKey: boolean; ctrlKey: boolean; metaKey: boolean; altKey: boolean }): PressModifiers {\n return { shiftKey: e.shiftKey, ctrlKey: e.ctrlKey, metaKey: e.metaKey, altKey: e.altKey };\n}\n\nfunction useControlledSet(\n value: Iterable<string> | undefined,\n initial: Iterable<string> | undefined,\n onChange: ((ids: Set<string>) => void) | undefined,\n): [ReadonlySet<string>, (next: Set<string>) => void] {\n const [own, setOwn] = useState<ReadonlySet<string>>(() => new Set(initial));\n const controlled = useMemo(() => (value === undefined ? undefined : new Set(value)), [value]);\n const set = (next: Set<string>) => {\n if (value === undefined) setOwn(next);\n onChange?.(next);\n };\n return [controlled ?? own, set];\n}\n"],"mappings":"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"}