@weasel-js/ui 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. package/dist/chunks/ActionBar-xA73vzzF.js +64 -0
  2. package/dist/chunks/ActionBar-xA73vzzF.js.map +1 -0
  3. package/dist/chunks/{Badge-D2aD7xVL.js → Badge-jYQjrTKc.js} +235 -264
  4. package/dist/chunks/{Badge-D2aD7xVL.js.map → Badge-jYQjrTKc.js.map} +1 -1
  5. package/dist/chunks/BandEditor-Dd0egAgE.js.map +1 -1
  6. package/dist/chunks/{Button-BIdXHQOx.js → Button-XB-T75YL.js} +2 -2
  7. package/dist/chunks/{Button-BIdXHQOx.js.map → Button-XB-T75YL.js.map} +1 -1
  8. package/dist/chunks/{ButtonBar-DIQTe5GQ.js → ButtonBar-CIMKPPRS.js} +7 -9
  9. package/dist/chunks/{ButtonBar-DIQTe5GQ.js.map → ButtonBar-CIMKPPRS.js.map} +1 -1
  10. package/dist/chunks/Callout-BUn0dP_S.js +115 -0
  11. package/dist/chunks/Callout-BUn0dP_S.js.map +1 -0
  12. package/dist/chunks/Checkbox-DFn-x0JO.js +37 -0
  13. package/dist/chunks/Checkbox-DFn-x0JO.js.map +1 -0
  14. package/dist/chunks/{CloseButton-C2J7wVfo.js → CloseButton-BmNmRVtb.js} +3 -3
  15. package/dist/chunks/{CloseButton-C2J7wVfo.js.map → CloseButton-BmNmRVtb.js.map} +1 -1
  16. package/dist/chunks/ColorField-BLs9fbeq.js +90 -0
  17. package/dist/chunks/ColorField-BLs9fbeq.js.map +1 -0
  18. package/dist/chunks/{ColorModeControl-BewxA0rX.js → ColorModeControl-DaVJ-SyX.js} +3 -3
  19. package/dist/chunks/{ColorModeControl-BewxA0rX.js.map → ColorModeControl-DaVJ-SyX.js.map} +1 -1
  20. package/dist/chunks/ComboBox-CuTLRmUg.js +138 -0
  21. package/dist/chunks/ComboBox-CuTLRmUg.js.map +1 -0
  22. package/dist/chunks/{CurveEditor-DUVjd25R.js → CurveEditor-jVBEqqdv.js} +90 -87
  23. package/dist/chunks/CurveEditor-jVBEqqdv.js.map +1 -0
  24. package/dist/chunks/{DataGrid-LZ2JgY2Y.js → DataGrid-BklgBqS0.js} +2 -2
  25. package/dist/chunks/{DataGrid-LZ2JgY2Y.js.map → DataGrid-BklgBqS0.js.map} +1 -1
  26. package/dist/chunks/{DetailList-BKomDzg5.js → DetailList-DFtqdOJj.js} +7 -7
  27. package/dist/chunks/DetailList-DFtqdOJj.js.map +1 -0
  28. package/dist/chunks/{DetentSlider-5uQPFucv.js → DetentSlider-Bh7EpMqT.js} +2 -2
  29. package/dist/chunks/{DetentSlider-5uQPFucv.js.map → DetentSlider-Bh7EpMqT.js.map} +1 -1
  30. package/dist/chunks/{Dialog-DGFutQ--.js → Dialog-DKfsk5VN.js} +3 -3
  31. package/dist/chunks/{Dialog-DGFutQ--.js.map → Dialog-DKfsk5VN.js.map} +1 -1
  32. package/dist/chunks/{DragGhost-B5_hb9W9.js → DragGhost-BeYDJyLZ.js} +2 -2
  33. package/dist/chunks/{DragGhost-B5_hb9W9.js.map → DragGhost-BeYDJyLZ.js.map} +1 -1
  34. package/dist/chunks/{FallthroughDiagram-BEHiM5IS.js → FallthroughDiagram-C7BUe8eU.js} +3 -3
  35. package/dist/chunks/{FallthroughDiagram-BEHiM5IS.js.map → FallthroughDiagram-C7BUe8eU.js.map} +1 -1
  36. package/dist/chunks/Field-DsBlnFKf.js +25 -0
  37. package/dist/chunks/Field-DsBlnFKf.js.map +1 -0
  38. package/dist/chunks/FillStrokeSwatch-CgsYQgew.js +112 -0
  39. package/dist/chunks/FillStrokeSwatch-CgsYQgew.js.map +1 -0
  40. package/dist/chunks/{FontFamilySelect-DkRgNtag.js → FontFamilySelect-CGJ5OIOy.js} +2 -2
  41. package/dist/chunks/FontFamilySelect-CGJ5OIOy.js.map +1 -0
  42. package/dist/chunks/FontWeightSelect-RbcXYJPS.js +49 -0
  43. package/dist/chunks/FontWeightSelect-RbcXYJPS.js.map +1 -0
  44. package/dist/chunks/{GestureRoute-C_YGl7bJ.js → GestureRoute-BXESrHI0.js} +2 -2
  45. package/dist/chunks/{GestureRoute-C_YGl7bJ.js.map → GestureRoute-BXESrHI0.js.map} +1 -1
  46. package/dist/chunks/GradientEditor-DypXzMc-.js +325 -0
  47. package/dist/chunks/GradientEditor-DypXzMc-.js.map +1 -0
  48. package/dist/chunks/{Icon-CcVjdq2C.js → Icon--B1ME-6c.js} +3 -1
  49. package/dist/chunks/Icon--B1ME-6c.js.map +1 -0
  50. package/dist/chunks/{Input-CHmkfYaD.js → Input-CzwvCZs_.js} +10 -15
  51. package/dist/chunks/Input-CzwvCZs_.js.map +1 -0
  52. package/dist/chunks/{ItemList-Cm-HUWCi.js → ItemList-CRu9y7hL.js} +2 -2
  53. package/dist/chunks/ItemList-CRu9y7hL.js.map +1 -0
  54. package/dist/chunks/{Jog-DRmfrkCg.js → Jog-DfNUYejm.js} +8 -8
  55. package/dist/chunks/Jog-DfNUYejm.js.map +1 -0
  56. package/dist/chunks/{LayerList-wCI1EueM.js → LayerList-CsDqwYh-.js} +151 -153
  57. package/dist/chunks/LayerList-CsDqwYh-.js.map +1 -0
  58. package/dist/chunks/ListEditor-BnGzqERm.js +72 -0
  59. package/dist/chunks/ListEditor-BnGzqERm.js.map +1 -0
  60. package/dist/chunks/MenuButton-L9f5vido.js +75 -0
  61. package/dist/chunks/MenuButton-L9f5vido.js.map +1 -0
  62. package/dist/chunks/MeshEditor-GbqqiPk8.js +199 -0
  63. package/dist/chunks/MeshEditor-GbqqiPk8.js.map +1 -0
  64. package/dist/chunks/{NumberField-BnJxcazc.js → NumberField-DLXXgh48.js} +26 -23
  65. package/dist/chunks/NumberField-DLXXgh48.js.map +1 -0
  66. package/dist/chunks/{OptionsBar-ujxYidhj.js → OptionsBar-DeTAjVb7.js} +6 -8
  67. package/dist/chunks/{OptionsBar-ujxYidhj.js.map → OptionsBar-DeTAjVb7.js.map} +1 -1
  68. package/dist/chunks/PaintField-C0hoXc0Y.js +63 -0
  69. package/dist/chunks/PaintField-C0hoXc0Y.js.map +1 -0
  70. package/dist/chunks/PaintInput-jQRxM95Y.js +132 -0
  71. package/dist/chunks/PaintInput-jQRxM95Y.js.map +1 -0
  72. package/dist/chunks/PatternPicker-CaMYXzhF.js +135 -0
  73. package/dist/chunks/PatternPicker-CaMYXzhF.js.map +1 -0
  74. package/dist/chunks/{Plot2D-CTXHkL5p.js → Plot2D-BHNbgCAl.js} +7 -7
  75. package/dist/chunks/Plot2D-BHNbgCAl.js.map +1 -0
  76. package/dist/chunks/{PointPlotter-ldI4RrU1.js → PointPlotter-BZ_vk6gV.js} +2 -2
  77. package/dist/chunks/{PointPlotter-ldI4RrU1.js.map → PointPlotter-BZ_vk6gV.js.map} +1 -1
  78. package/dist/chunks/{Powerline-DNyH885r.js → Powerline-6wIFmDik.js} +2 -2
  79. package/dist/chunks/{Powerline-DNyH885r.js.map → Powerline-6wIFmDik.js.map} +1 -1
  80. package/dist/chunks/{Prefs-ByA-x51i.js → Prefs-CkyldX-e.js} +83 -70
  81. package/dist/chunks/Prefs-CkyldX-e.js.map +1 -0
  82. package/dist/chunks/{Properties-DmAeQ3mk.js → Properties-D15c8NP-.js} +25 -25
  83. package/dist/chunks/{Properties-DmAeQ3mk.js.map → Properties-D15c8NP-.js.map} +1 -1
  84. package/dist/chunks/PropertyField-CV_Gw57S.js +686 -0
  85. package/dist/chunks/PropertyField-CV_Gw57S.js.map +1 -0
  86. package/dist/chunks/{RadioGroup-Bh4-12e-.js → RadioGroup-4dbzqvGy.js} +2 -2
  87. package/dist/chunks/{RadioGroup-Bh4-12e-.js.map → RadioGroup-4dbzqvGy.js.map} +1 -1
  88. package/dist/chunks/{RangeSlider-SEGE-7VF.js → RangeSlider-BxokZViJ.js} +8 -8
  89. package/dist/chunks/RangeSlider-BxokZViJ.js.map +1 -0
  90. package/dist/chunks/RecentColorsProvider-DHcfk25u.js +84 -0
  91. package/dist/chunks/RecentColorsProvider-DHcfk25u.js.map +1 -0
  92. package/dist/chunks/ResizeHandle-CbAgCQOt.js +81 -0
  93. package/dist/chunks/ResizeHandle-CbAgCQOt.js.map +1 -0
  94. package/dist/chunks/Select-BppLsJTz.js +236 -0
  95. package/dist/chunks/Select-BppLsJTz.js.map +1 -0
  96. package/dist/chunks/{SelectionPanel-BaQnX4Bs.js → SelectionPanel-Cm1qu-ZX.js} +14 -13
  97. package/dist/chunks/{SelectionPanel-BaQnX4Bs.js.map → SelectionPanel-Cm1qu-ZX.js.map} +1 -1
  98. package/dist/chunks/{SidebarPanel-BblDEz4G.js → SidebarPanel-AXQ0jRDx.js} +2 -2
  99. package/dist/chunks/{SidebarPanel-BblDEz4G.js.map → SidebarPanel-AXQ0jRDx.js.map} +1 -1
  100. package/dist/chunks/{Slider-YofwGOI4.js → Slider-Cl5RCeZ7.js} +19 -19
  101. package/dist/chunks/Slider-Cl5RCeZ7.js.map +1 -0
  102. package/dist/chunks/SwatchGrid-9ZPiDmxd.js +78 -0
  103. package/dist/chunks/SwatchGrid-9ZPiDmxd.js.map +1 -0
  104. package/dist/chunks/SwatchStrip-Cw0l8Om7.js +577 -0
  105. package/dist/chunks/SwatchStrip-Cw0l8Om7.js.map +1 -0
  106. package/dist/chunks/{ThemeSwitcher-BlsInAmR.js → ThemeSwitcher-DiBmMh_B.js} +3 -3
  107. package/dist/chunks/{ThemeSwitcher-BlsInAmR.js.map → ThemeSwitcher-DiBmMh_B.js.map} +1 -1
  108. package/dist/chunks/{Timeline-B39cwfMB.js → Timeline-pqnYk5cV.js} +244 -246
  109. package/dist/chunks/Timeline-pqnYk5cV.js.map +1 -0
  110. package/dist/chunks/Toast-C3ozq11V.js +170 -0
  111. package/dist/chunks/Toast-C3ozq11V.js.map +1 -0
  112. package/dist/chunks/{ToggleBar-BTYkBXU9.js → ToggleBar-Z2jZiguF.js} +6 -8
  113. package/dist/chunks/{ToggleBar-BTYkBXU9.js.map → ToggleBar-Z2jZiguF.js.map} +1 -1
  114. package/dist/chunks/{TokenPanel-CMDAOfYH.js → TokenPanel-DAkL6vwQ.js} +32 -32
  115. package/dist/chunks/TokenPanel-DAkL6vwQ.js.map +1 -0
  116. package/dist/chunks/{ToolButton-CAHBa08P.js → ToolButton-BURp4YIO.js} +7 -9
  117. package/dist/chunks/ToolButton-BURp4YIO.js.map +1 -0
  118. package/dist/chunks/{ToolOptionsBar-D_GCrBAN.js → ToolOptionsBar-COsTJ1cu.js} +3 -2
  119. package/dist/chunks/{ToolOptionsBar-D_GCrBAN.js.map → ToolOptionsBar-COsTJ1cu.js.map} +1 -1
  120. package/dist/chunks/{ToolPalette-OOWN51Xx.js → ToolPalette-DKDFWOX-.js} +7 -9
  121. package/dist/chunks/{ToolPalette-OOWN51Xx.js.map → ToolPalette-DKDFWOX-.js.map} +1 -1
  122. package/dist/chunks/{Tooltip-Clg2mhSt.js → Tooltip-C6eFCYxw.js} +2 -2
  123. package/dist/chunks/{Tooltip-Clg2mhSt.js.map → Tooltip-C6eFCYxw.js.map} +1 -1
  124. package/dist/chunks/Tree-Cc8lIzgM.js.map +1 -1
  125. package/dist/chunks/checkbox.module-DLQV9tMX.js +5 -0
  126. package/dist/chunks/checkbox.module-DLQV9tMX.js.map +1 -0
  127. package/dist/chunks/{createKeyframeLayer-DVl321_l.js → createKeyframeLayer-BTa4LyJE.js} +194 -208
  128. package/dist/chunks/createKeyframeLayer-BTa4LyJE.js.map +1 -0
  129. package/dist/chunks/field.module-Bh7BTKMh.js +15 -0
  130. package/dist/chunks/field.module-Bh7BTKMh.js.map +1 -0
  131. package/dist/chunks/formatShortcut-DRQrVThu.js.map +1 -1
  132. package/dist/chunks/handles-CqVANLtu.js +17 -0
  133. package/dist/chunks/handles-CqVANLtu.js.map +1 -0
  134. package/dist/chunks/{icons-BhcR1l64.js → icons-Dr2-r30x.js} +2 -2
  135. package/dist/chunks/icons-Dr2-r30x.js.map +1 -0
  136. package/dist/chunks/listbox.module-BcdVJMbm.js +8 -0
  137. package/dist/chunks/listbox.module-BcdVJMbm.js.map +1 -0
  138. package/dist/chunks/model-B1-gMBIW.js +386 -0
  139. package/dist/chunks/model-B1-gMBIW.js.map +1 -0
  140. package/dist/chunks/{portalHost-yTOVuCej.js → portalHost-CE70wLzo.js} +10 -6
  141. package/dist/chunks/portalHost-CE70wLzo.js.map +1 -0
  142. package/dist/chunks/prefField-BE_Ytr2H.js +229 -0
  143. package/dist/chunks/prefField-BE_Ytr2H.js.map +1 -0
  144. package/dist/chunks/{segmentTooltip-CStYHKzd.js → segmentTooltip-CGxCOWNz.js} +2 -2
  145. package/dist/chunks/{segmentTooltip-CStYHKzd.js.map → segmentTooltip-CGxCOWNz.js.map} +1 -1
  146. package/dist/chunks/segmentedControl.module-BzGXUL5G.js +11 -0
  147. package/dist/chunks/segmentedControl.module-BzGXUL5G.js.map +1 -0
  148. package/dist/chunks/useReorderDragList-CStYKjHl.js +133 -0
  149. package/dist/chunks/useReorderDragList-CStYKjHl.js.map +1 -0
  150. package/dist/chunks/useRovingTabIndex-D7u22Ia_.js +91 -0
  151. package/dist/chunks/useRovingTabIndex-D7u22Ia_.js.map +1 -0
  152. package/dist/components/ActionBar/ActionBar.d.ts.map +1 -1
  153. package/dist/components/ActionBar/index.js +1 -1
  154. package/dist/components/Badge/bases/ChamferedRect.d.ts.map +1 -1
  155. package/dist/components/Badge/index.js +1 -1
  156. package/dist/components/BandEditor/BandEditor.d.ts +1 -0
  157. package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
  158. package/dist/components/Button/index.js +1 -1
  159. package/dist/components/ButtonBar/ButtonBar.d.ts.map +1 -1
  160. package/dist/components/ButtonBar/index.js +1 -1
  161. package/dist/components/Callout/Callout.d.ts.map +1 -1
  162. package/dist/components/Callout/index.js +1 -1
  163. package/dist/components/Checkbox/Checkbox.d.ts +28 -13
  164. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  165. package/dist/components/Checkbox/index.js +1 -1
  166. package/dist/components/CloseButton/index.js +1 -1
  167. package/dist/components/ColorField/ColorField.d.ts.map +1 -1
  168. package/dist/components/ColorField/OpacityRange.d.ts +18 -0
  169. package/dist/components/ColorField/OpacityRange.d.ts.map +1 -0
  170. package/dist/components/ColorField/index.js +1 -1
  171. package/dist/components/ColorModeControl/index.js +1 -1
  172. package/dist/components/ComboBox/ComboBox.d.ts +7 -0
  173. package/dist/components/ComboBox/ComboBox.d.ts.map +1 -1
  174. package/dist/components/ComboBox/index.js +1 -1
  175. package/dist/components/CurveEditor/CurveEditor.d.ts.map +1 -1
  176. package/dist/components/CurveEditor/LayeredCurveEditor.d.ts.map +1 -1
  177. package/dist/components/CurveEditor/index.js +2 -2
  178. package/dist/components/DataGrid/index.js +1 -1
  179. package/dist/components/DetailList/index.js +1 -1
  180. package/dist/components/DetentSlider/index.js +1 -1
  181. package/dist/components/Dialog/index.js +1 -1
  182. package/dist/components/DragGhost/index.js +1 -1
  183. package/dist/components/FallthroughDiagram/index.js +1 -1
  184. package/dist/components/Field/index.js +1 -1
  185. package/dist/components/FillStrokeSwatch/FillStrokeSwatch.d.ts.map +1 -1
  186. package/dist/components/FillStrokeSwatch/index.js +1 -1
  187. package/dist/components/FontFamilySelect/FontFamilySelect.d.ts +20 -0
  188. package/dist/components/FontFamilySelect/FontFamilySelect.d.ts.map +1 -1
  189. package/dist/components/FontFamilySelect/index.js +1 -1
  190. package/dist/components/FontWeightSelect/FontWeightSelect.d.ts +26 -0
  191. package/dist/components/FontWeightSelect/FontWeightSelect.d.ts.map +1 -0
  192. package/dist/components/FontWeightSelect/index.d.ts +3 -0
  193. package/dist/components/FontWeightSelect/index.d.ts.map +1 -0
  194. package/dist/components/FontWeightSelect/index.js +2 -0
  195. package/dist/components/GestureRoute/index.js +1 -1
  196. package/dist/components/GradientEditor/GradientHandles.d.ts +1 -8
  197. package/dist/components/GradientEditor/GradientHandles.d.ts.map +1 -1
  198. package/dist/components/GradientEditor/SceneGradientHandles.d.ts +7 -5
  199. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -1
  200. package/dist/components/GradientEditor/handleOverlay.d.ts +41 -0
  201. package/dist/components/GradientEditor/handleOverlay.d.ts.map +1 -0
  202. package/dist/components/GradientEditor/index.js +1 -1
  203. package/dist/components/Input/Input.d.ts +1 -1
  204. package/dist/components/Input/Input.d.ts.map +1 -1
  205. package/dist/components/Input/index.js +1 -1
  206. package/dist/components/ItemList/ItemList.d.ts +32 -31
  207. package/dist/components/ItemList/ItemList.d.ts.map +1 -1
  208. package/dist/components/ItemList/index.js +1 -1
  209. package/dist/components/Jog/index.js +1 -1
  210. package/dist/components/LayerList/LayerList.d.ts.map +1 -1
  211. package/dist/components/LayerList/index.js +1 -1
  212. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -1
  213. package/dist/components/ListEditor/index.js +1 -1
  214. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  215. package/dist/components/MenuButton/index.js +1 -1
  216. package/dist/components/MeshEditor/MeshEditor.d.ts +4 -3
  217. package/dist/components/MeshEditor/MeshEditor.d.ts.map +1 -1
  218. package/dist/components/MeshEditor/MeshHandles.d.ts +38 -0
  219. package/dist/components/MeshEditor/MeshHandles.d.ts.map +1 -0
  220. package/dist/components/MeshEditor/index.d.ts +2 -0
  221. package/dist/components/MeshEditor/index.d.ts.map +1 -1
  222. package/dist/components/MeshEditor/index.js +2 -2
  223. package/dist/components/NumberField/NumberField.d.ts +1 -1
  224. package/dist/components/NumberField/NumberField.d.ts.map +1 -1
  225. package/dist/components/NumberField/index.js +1 -1
  226. package/dist/components/OptionsBar/OptionsBar.d.ts.map +1 -1
  227. package/dist/components/OptionsBar/index.js +1 -1
  228. package/dist/components/PaintField/PaintField.d.ts.map +1 -1
  229. package/dist/components/PaintField/index.js +1 -1
  230. package/dist/components/PaintInput/PaintInput.d.ts.map +1 -1
  231. package/dist/components/PaintInput/index.js +1 -1
  232. package/dist/components/PatternPicker/PatternPicker.d.ts +6 -5
  233. package/dist/components/PatternPicker/PatternPicker.d.ts.map +1 -1
  234. package/dist/components/PatternPicker/index.js +1 -1
  235. package/dist/components/Plot2D/index.js +1 -1
  236. package/dist/components/PointPlotter/index.js +1 -1
  237. package/dist/components/Powerline/index.js +2 -2
  238. package/dist/components/Prefs/PrefsForm.d.ts +8 -0
  239. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  240. package/dist/components/Prefs/PrefsRail.d.ts +3 -2
  241. package/dist/components/Prefs/PrefsRail.d.ts.map +1 -1
  242. package/dist/components/Prefs/index.js +2 -2
  243. package/dist/components/Prefs/prefField.d.ts +13 -0
  244. package/dist/components/Prefs/prefField.d.ts.map +1 -1
  245. package/dist/components/Properties/PropertyField.d.ts +13 -2
  246. package/dist/components/Properties/PropertyField.d.ts.map +1 -1
  247. package/dist/components/Properties/index.js +3 -3
  248. package/dist/components/RadioGroup/index.js +1 -1
  249. package/dist/components/RangeSlider/index.js +1 -1
  250. package/dist/components/RecentColors/RecentColorsProvider.d.ts +24 -0
  251. package/dist/components/RecentColors/RecentColorsProvider.d.ts.map +1 -0
  252. package/dist/components/RecentColors/index.d.ts +5 -0
  253. package/dist/components/RecentColors/index.d.ts.map +1 -0
  254. package/dist/components/RecentColors/index.js +2 -0
  255. package/dist/components/RecentColors/recentColors.d.ts +39 -0
  256. package/dist/components/RecentColors/recentColors.d.ts.map +1 -0
  257. package/dist/components/ResizeHandle/ResizeHandle.d.ts.map +1 -1
  258. package/dist/components/ResizeHandle/index.js +1 -1
  259. package/dist/components/Select/Select.d.ts +6 -2
  260. package/dist/components/Select/Select.d.ts.map +1 -1
  261. package/dist/components/Select/index.js +1 -1
  262. package/dist/components/SelectionPanel/index.js +2 -2
  263. package/dist/components/SelectionPanel/renderLeaf.d.ts +12 -2
  264. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
  265. package/dist/components/SidebarPanel/index.js +1 -1
  266. package/dist/components/Slider/index.js +1 -1
  267. package/dist/components/SwatchGrid/SwatchGrid.d.ts.map +1 -1
  268. package/dist/components/SwatchGrid/index.js +1 -1
  269. package/dist/components/SwatchStrip/SwatchStrip.d.ts +44 -0
  270. package/dist/components/SwatchStrip/SwatchStrip.d.ts.map +1 -0
  271. package/dist/components/SwatchStrip/index.d.ts +5 -0
  272. package/dist/components/SwatchStrip/index.d.ts.map +1 -0
  273. package/dist/components/SwatchStrip/index.js +2 -0
  274. package/dist/components/SwatchStrip/palettes.d.ts +21 -0
  275. package/dist/components/SwatchStrip/palettes.d.ts.map +1 -0
  276. package/dist/components/ThemeSwitcher/index.js +1 -1
  277. package/dist/components/Timeline/AnimatedTimeline.d.ts +1 -0
  278. package/dist/components/Timeline/AnimatedTimeline.d.ts.map +1 -1
  279. package/dist/components/Timeline/EasingPicker.d.ts +3 -0
  280. package/dist/components/Timeline/EasingPicker.d.ts.map +1 -1
  281. package/dist/components/Timeline/LaneGraph.d.ts +1 -1
  282. package/dist/components/Timeline/LaneGraph.d.ts.map +1 -1
  283. package/dist/components/Timeline/Timeline.d.ts +10 -1
  284. package/dist/components/Timeline/Timeline.d.ts.map +1 -1
  285. package/dist/components/Timeline/Transport.d.ts +6 -0
  286. package/dist/components/Timeline/Transport.d.ts.map +1 -1
  287. package/dist/components/Timeline/index.js +1 -1
  288. package/dist/components/Timeline/keys.d.ts +1 -0
  289. package/dist/components/Timeline/keys.d.ts.map +1 -1
  290. package/dist/components/Toast/Toast.d.ts +12 -3
  291. package/dist/components/Toast/Toast.d.ts.map +1 -1
  292. package/dist/components/Toast/index.js +1 -1
  293. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  294. package/dist/components/ToggleBar/index.js +1 -1
  295. package/dist/components/TokenPanel/index.js +1 -1
  296. package/dist/components/TokenPanel/tokenTypes.d.ts +1 -0
  297. package/dist/components/TokenPanel/tokenTypes.d.ts.map +1 -1
  298. package/dist/components/ToolButton/ToolButton.d.ts +1 -10
  299. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  300. package/dist/components/ToolButton/index.js +1 -1
  301. package/dist/components/ToolOptionsBar/index.js +1 -1
  302. package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
  303. package/dist/components/ToolPalette/formatShortcut.d.ts +2 -0
  304. package/dist/components/ToolPalette/formatShortcut.d.ts.map +1 -1
  305. package/dist/components/ToolPalette/index.js +1 -1
  306. package/dist/components/Tooltip/index.js +1 -1
  307. package/dist/components/Tree/Tree.d.ts +27 -26
  308. package/dist/components/Tree/Tree.d.ts.map +1 -1
  309. package/dist/icons/index.d.ts +51 -0
  310. package/dist/icons/index.d.ts.map +1 -1
  311. package/dist/icons/paths.d.ts +2 -0
  312. package/dist/icons/paths.d.ts.map +1 -1
  313. package/dist/index.d.ts +4 -1
  314. package/dist/index.d.ts.map +1 -1
  315. package/dist/index.js +98 -95
  316. package/dist/index.js.map +1 -1
  317. package/dist/overlays/portalHost.d.ts +6 -0
  318. package/dist/overlays/portalHost.d.ts.map +1 -1
  319. package/dist/style.css +1 -1
  320. package/dist/useAsyncOptions.d.ts.map +1 -1
  321. package/dist/useReorderDragList.d.ts.map +1 -1
  322. package/dist/useRovingTabIndex.d.ts +40 -39
  323. package/dist/useRovingTabIndex.d.ts.map +1 -1
  324. package/package.json +9 -9
  325. package/dist/chunks/ActionBar-DCq16yFA.js +0 -57
  326. package/dist/chunks/ActionBar-DCq16yFA.js.map +0 -1
  327. package/dist/chunks/Callout-ndW5_Bqx.js +0 -116
  328. package/dist/chunks/Callout-ndW5_Bqx.js.map +0 -1
  329. package/dist/chunks/Checkbox-DHXTUHO9.js +0 -47
  330. package/dist/chunks/Checkbox-DHXTUHO9.js.map +0 -1
  331. package/dist/chunks/ColorField-Yz_BkcCT.js +0 -69
  332. package/dist/chunks/ColorField-Yz_BkcCT.js.map +0 -1
  333. package/dist/chunks/ComboBox-B34H76CW.js +0 -138
  334. package/dist/chunks/ComboBox-B34H76CW.js.map +0 -1
  335. package/dist/chunks/CurveEditor-DUVjd25R.js.map +0 -1
  336. package/dist/chunks/DetailList-BKomDzg5.js.map +0 -1
  337. package/dist/chunks/Field--onYxXTF.js +0 -32
  338. package/dist/chunks/Field--onYxXTF.js.map +0 -1
  339. package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js +0 -111
  340. package/dist/chunks/FillStrokeSwatch-DNb0KXPk.js.map +0 -1
  341. package/dist/chunks/FontFamilySelect-DkRgNtag.js.map +0 -1
  342. package/dist/chunks/GradientEditor-b7v4Ph3i.js +0 -363
  343. package/dist/chunks/GradientEditor-b7v4Ph3i.js.map +0 -1
  344. package/dist/chunks/Icon-CcVjdq2C.js.map +0 -1
  345. package/dist/chunks/Input-CHmkfYaD.js.map +0 -1
  346. package/dist/chunks/ItemList-Cm-HUWCi.js.map +0 -1
  347. package/dist/chunks/Jog-DRmfrkCg.js.map +0 -1
  348. package/dist/chunks/LayerList-wCI1EueM.js.map +0 -1
  349. package/dist/chunks/ListEditor-BeA60TAA.js +0 -71
  350. package/dist/chunks/ListEditor-BeA60TAA.js.map +0 -1
  351. package/dist/chunks/MenuButton-BSqEChJE.js +0 -70
  352. package/dist/chunks/MenuButton-BSqEChJE.js.map +0 -1
  353. package/dist/chunks/MeshEditor-D1HLZcAh.js +0 -87
  354. package/dist/chunks/MeshEditor-D1HLZcAh.js.map +0 -1
  355. package/dist/chunks/NumberField-BnJxcazc.js.map +0 -1
  356. package/dist/chunks/PaintField-DadOELMg.js +0 -62
  357. package/dist/chunks/PaintField-DadOELMg.js.map +0 -1
  358. package/dist/chunks/PaintInput-v8Y7MDbH.js +0 -121
  359. package/dist/chunks/PaintInput-v8Y7MDbH.js.map +0 -1
  360. package/dist/chunks/PatternPicker-R_EQtw2Q.js +0 -93
  361. package/dist/chunks/PatternPicker-R_EQtw2Q.js.map +0 -1
  362. package/dist/chunks/Plot2D-CTXHkL5p.js.map +0 -1
  363. package/dist/chunks/Prefs-ByA-x51i.js.map +0 -1
  364. package/dist/chunks/PropertyField-DfIJJ5GS.js +0 -673
  365. package/dist/chunks/PropertyField-DfIJJ5GS.js.map +0 -1
  366. package/dist/chunks/RangeSlider-SEGE-7VF.js.map +0 -1
  367. package/dist/chunks/ResizeHandle-rKVWyeTG.js +0 -79
  368. package/dist/chunks/ResizeHandle-rKVWyeTG.js.map +0 -1
  369. package/dist/chunks/Select-ClmKtyWg.js +0 -229
  370. package/dist/chunks/Select-ClmKtyWg.js.map +0 -1
  371. package/dist/chunks/Slider-YofwGOI4.js.map +0 -1
  372. package/dist/chunks/SwatchGrid-BYvA8Bmh.js +0 -73
  373. package/dist/chunks/SwatchGrid-BYvA8Bmh.js.map +0 -1
  374. package/dist/chunks/Timeline-B39cwfMB.js.map +0 -1
  375. package/dist/chunks/Toast-BF9GE0HC.js +0 -126
  376. package/dist/chunks/Toast-BF9GE0HC.js.map +0 -1
  377. package/dist/chunks/TokenPanel-CMDAOfYH.js.map +0 -1
  378. package/dist/chunks/ToolButton-CAHBa08P.js.map +0 -1
  379. package/dist/chunks/createKeyframeLayer-DVl321_l.js.map +0 -1
  380. package/dist/chunks/icons-BhcR1l64.js.map +0 -1
  381. package/dist/chunks/model-BaF65rnX.js +0 -365
  382. package/dist/chunks/model-BaF65rnX.js.map +0 -1
  383. package/dist/chunks/portalHost-yTOVuCej.js.map +0 -1
  384. package/dist/chunks/prefField-BopW9bjx.js +0 -201
  385. package/dist/chunks/prefField-BopW9bjx.js.map +0 -1
  386. package/dist/chunks/segmentedControl.module-D6SzYJD7.js +0 -11
  387. package/dist/chunks/segmentedControl.module-D6SzYJD7.js.map +0 -1
  388. package/dist/chunks/useReorderDragList-FCMoFIzH.js +0 -131
  389. package/dist/chunks/useReorderDragList-FCMoFIzH.js.map +0 -1
  390. package/dist/chunks/useRovingTabIndex-Bp_hYm_h.js +0 -65
  391. package/dist/chunks/useRovingTabIndex-Bp_hYm_h.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tree-Cc8lIzgM.js","names":["s","DisclosureMark","Tree_module_default","TYPEAHEAD_MS","Tree","forwardRef","ariaLabel","ariaLabelledBy","expanded","setExpanded","useControlledSet","expandedIds","defaultExpandedIds","onExpandedChange","selected","setSelected","selectedIds","defaultSelectedIds","onSelectionChange","selectable","selectionMode","baseId","useId","visible","useMemo","out","walk","node","list","level","nodes","indexOf","v","i","items","useRef","focusId","setFocusId","useState","anchor","typed","stopId","className","empty","focus","id","toggle","next","select","mods","a","b","x","activate","onAction","onKeyDown","e","open","modsOf","typeAhead","now","t","want","start","from","k","textOf","onRowClick","onTwistyClick","itemRef","el","seq","renderLevel","n","branch","labelId","trailingId","pos","filterTree","changed","match","kids","treeBranchIds","own","setOwn","initial","value","onChange"],"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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"}
1
+ {"version":3,"file":"Tree-Cc8lIzgM.js","names":["s","DisclosureMark","Tree_module_default","TYPEAHEAD_MS","Tree","forwardRef","ariaLabel","ariaLabelledBy","expanded","setExpanded","useControlledSet","expandedIds","defaultExpandedIds","onExpandedChange","selected","setSelected","selectedIds","defaultSelectedIds","onSelectionChange","selectable","selectionMode","baseId","useId","visible","useMemo","out","walk","node","list","level","nodes","indexOf","v","i","items","useRef","focusId","setFocusId","useState","anchor","typed","stopId","className","empty","focus","id","toggle","next","select","mods","a","b","x","activate","onAction","onKeyDown","e","open","modsOf","typeAhead","now","t","want","start","from","k","textOf","onRowClick","onTwistyClick","itemRef","el","seq","renderLevel","n","branch","labelId","trailingId","pos","filterTree","changed","match","kids","treeBranchIds","own","setOwn","initial","value","onChange"],"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","import {\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\n/** Props for {@link Tree}. */\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\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 */\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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"}
@@ -0,0 +1,5 @@
1
+ var e = { checkbox: "_checkbox_1uuoi_4" };
2
+ //#endregion
3
+ export { e as t };
4
+
5
+ //# sourceMappingURL=checkbox.module-DLQV9tMX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.module-DLQV9tMX.js","names":["checkbox_module_default"],"sources":["../../src/components/checkbox.module.css"],"sourcesContent":["/* The one skin for a native <input type=\"checkbox\">. Imported by Checkbox and by\n the property rows, which render the same DOM. The box keys off the input's own\n pseudo-classes; a label's hover reaches its control's :hover. */\n.checkbox {\n appearance: none;\n -webkit-appearance: none;\n position: relative;\n flex: 0 0 auto;\n box-sizing: border-box;\n width: 14px;\n height: 14px;\n margin: 0;\n background: var(--wzl-surface-sunken);\n border: 1px solid var(--wzl-border-strong);\n border-radius: var(--wzl-radius-sm);\n cursor: pointer;\n transition: background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);\n}\n\n.checkbox:hover:not(:disabled) {\n border-color: var(--wzl-fg-muted);\n}\n\n.checkbox:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--wzl-focus-ring);\n}\n\n.checkbox:checked,\n.checkbox:indeterminate {\n background: var(--wzl-accent-strong);\n border-color: var(--wzl-accent-strong);\n}\n\n.checkbox[aria-invalid='true'] {\n border-color: var(--wzl-danger);\n}\n\n/* The mark is a mask filled with the on-accent color, so it follows the theme. */\n.checkbox:checked::before,\n.checkbox:indeterminate::before {\n content: '';\n position: absolute;\n inset: 0;\n background: var(--wzl-fg-on-accent);\n -webkit-mask: var(--_check-mark) center / 100% 100% no-repeat;\n mask: var(--_check-mark) center / 100% 100% no-repeat;\n}\n\n.checkbox:checked {\n --_check-mark: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpolyline points='3,7.5 6,10.5 11,4.5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n}\n\n.checkbox:indeterminate {\n --_check-mark: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cline x1='3' y1='7' x2='11' y2='7' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E\");\n}\n\n.checkbox:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n"],"mappings":""}