@weasel-js/ui 1.8.0 → 1.8.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 (247) hide show
  1. package/dist/chunks/{ActionBar-xA73vzzF.js → ActionBar-CfXS7-9f.js} +2 -2
  2. package/dist/chunks/{ActionBar-xA73vzzF.js.map → ActionBar-CfXS7-9f.js.map} +1 -1
  3. package/dist/chunks/{Badge-jYQjrTKc.js → Badge-4ShpqA0h.js} +2 -2
  4. package/dist/chunks/{Badge-jYQjrTKc.js.map → Badge-4ShpqA0h.js.map} +1 -1
  5. package/dist/chunks/{Badge-CTc9Lkwn.js → Badge-qkV9EqKs.js} +6 -2
  6. package/dist/chunks/Badge-qkV9EqKs.js.map +1 -0
  7. package/dist/chunks/{Button-XB-T75YL.js → Button-CQA-K1g9.js} +17 -17
  8. package/dist/chunks/Button-CQA-K1g9.js.map +1 -0
  9. package/dist/chunks/Button-KF-qSGtA.js +11 -0
  10. package/dist/chunks/Button-KF-qSGtA.js.map +1 -0
  11. package/dist/chunks/{ButtonBar-CIMKPPRS.js → ButtonBar-B-cYuoem.js} +10 -4
  12. package/dist/chunks/ButtonBar-B-cYuoem.js.map +1 -0
  13. package/dist/chunks/{Callout-DpTO3fkb.js → Callout-VyYDIP7w.js} +18 -18
  14. package/dist/chunks/Callout-VyYDIP7w.js.map +1 -0
  15. package/dist/chunks/{CloseButton-wb7Or5Eg.js → CloseButton-CKarkTT9.js} +3 -3
  16. package/dist/chunks/{CloseButton-wb7Or5Eg.js.map → CloseButton-CKarkTT9.js.map} +1 -1
  17. package/dist/chunks/{Code-AsKpgnv6.js → Code-ChwKP1V0.js} +8 -2
  18. package/dist/chunks/Code-ChwKP1V0.js.map +1 -0
  19. package/dist/chunks/{ColorModeControl-DET6Itwq.js → ColorModeControl-CH9PmDlT.js} +6 -6
  20. package/dist/chunks/{ColorModeControl-DET6Itwq.js.map → ColorModeControl-CH9PmDlT.js.map} +1 -1
  21. package/dist/chunks/{ComboBox-DKln_mOd.js → ComboBox-BMj_IKBj.js} +4 -4
  22. package/dist/chunks/ComboBox-BMj_IKBj.js.map +1 -0
  23. package/dist/chunks/{DataGrid-B6IS9vUk.js → DataGrid-CjiVKoaA.js} +2 -2
  24. package/dist/chunks/{DataGrid-B6IS9vUk.js.map → DataGrid-CjiVKoaA.js.map} +1 -1
  25. package/dist/chunks/{Dialog-h-5MeYpu.js → Dialog-Du4POZ52.js} +5 -5
  26. package/dist/chunks/Dialog-Du4POZ52.js.map +1 -0
  27. package/dist/chunks/{DragGhost-BeYDJyLZ.js → DragGhost-_IpuN_xM.js} +2 -2
  28. package/dist/chunks/{DragGhost-BeYDJyLZ.js.map → DragGhost-_IpuN_xM.js.map} +1 -1
  29. package/dist/chunks/{FallthroughDiagram-CS1IhQaU.js → FallthroughDiagram-Cn6QLWKA.js} +9 -9
  30. package/dist/chunks/{FallthroughDiagram-CS1IhQaU.js.map → FallthroughDiagram-Cn6QLWKA.js.map} +1 -1
  31. package/dist/chunks/{FillStrokeSwatch-C4h3rUFM.js → FillStrokeSwatch-BkUhlpQL.js} +2 -2
  32. package/dist/chunks/{FillStrokeSwatch-C4h3rUFM.js.map → FillStrokeSwatch-BkUhlpQL.js.map} +1 -1
  33. package/dist/chunks/{FontFamilySelect-DEvMXyZd.js → FontFamilySelect-CXN7O2-p.js} +2 -2
  34. package/dist/chunks/{FontFamilySelect-DEvMXyZd.js.map → FontFamilySelect-CXN7O2-p.js.map} +1 -1
  35. package/dist/chunks/{FontWeightSelect-BLQ_LMJF.js → FontWeightSelect-BBuJGe_2.js} +2 -2
  36. package/dist/chunks/{FontWeightSelect-BLQ_LMJF.js.map → FontWeightSelect-BBuJGe_2.js.map} +1 -1
  37. package/dist/chunks/{GestureRoute-BXESrHI0.js → GestureRoute-BqHUrGeQ.js} +13 -13
  38. package/dist/chunks/{GestureRoute-BXESrHI0.js.map → GestureRoute-BqHUrGeQ.js.map} +1 -1
  39. package/dist/chunks/{GradientEditor-vz771M-N.js → GradientEditor-DX4sb1Hf.js} +3 -3
  40. package/dist/chunks/{GradientEditor-vz771M-N.js.map → GradientEditor-DX4sb1Hf.js.map} +1 -1
  41. package/dist/chunks/{Icon-DPRUIo3G.js → Icon-BfqYtAX5.js} +30 -1
  42. package/dist/chunks/Icon-BfqYtAX5.js.map +1 -0
  43. package/dist/chunks/{ItemList-CRu9y7hL.js → ItemList-nbakLf3N.js} +32 -32
  44. package/dist/chunks/ItemList-nbakLf3N.js.map +1 -0
  45. package/dist/chunks/{Jog-TE6QI9i1.js → Jog-BU0xuM3G.js} +6 -6
  46. package/dist/chunks/{Jog-TE6QI9i1.js.map → Jog-BU0xuM3G.js.map} +1 -1
  47. package/dist/chunks/{Keycaps-C-FJyG8k.js → Keycaps-CM-gOj0e.js} +8 -2
  48. package/dist/chunks/Keycaps-CM-gOj0e.js.map +1 -0
  49. package/dist/chunks/LayerList-vfAoImxX.js +432 -0
  50. package/dist/chunks/LayerList-vfAoImxX.js.map +1 -0
  51. package/dist/chunks/{ListEditor-DGtwj99m.js → ListEditor-BAKs47bN.js} +3 -3
  52. package/dist/chunks/{ListEditor-DGtwj99m.js.map → ListEditor-BAKs47bN.js.map} +1 -1
  53. package/dist/chunks/{MenuButton-TAFg88Lp.js → MenuButton-CJGdhwGr.js} +5 -5
  54. package/dist/chunks/MenuButton-CJGdhwGr.js.map +1 -0
  55. package/dist/chunks/{MeshEditor-8CRsu-Td.js → MeshEditor-rhf7cXfG.js} +2 -2
  56. package/dist/chunks/{MeshEditor-8CRsu-Td.js.map → MeshEditor-rhf7cXfG.js.map} +1 -1
  57. package/dist/chunks/{OptionsBar-DeTAjVb7.js → OptionsBar-DyTXbev-.js} +9 -3
  58. package/dist/chunks/OptionsBar-DyTXbev-.js.map +1 -0
  59. package/dist/chunks/{PaintField-DX4uYlF9.js → PaintField--GbF8sL7.js} +7 -7
  60. package/dist/chunks/PaintField--GbF8sL7.js.map +1 -0
  61. package/dist/chunks/{PaintInput-CWyOJXUM.js → PaintInput-DSS5IjXn.js} +5 -5
  62. package/dist/chunks/{PaintInput-CWyOJXUM.js.map → PaintInput-DSS5IjXn.js.map} +1 -1
  63. package/dist/chunks/{PatternPicker-0j51aDJ3.js → PatternPicker-82DCUvUk.js} +2 -2
  64. package/dist/chunks/{PatternPicker-0j51aDJ3.js.map → PatternPicker-82DCUvUk.js.map} +1 -1
  65. package/dist/chunks/{Powerline-6wIFmDik.js → Powerline-CogJv9VU.js} +2 -2
  66. package/dist/chunks/{Powerline-6wIFmDik.js.map → Powerline-CogJv9VU.js.map} +1 -1
  67. package/dist/chunks/{Prefs-gbjYqvSD.js → Prefs-BSSKOvPa.js} +41 -41
  68. package/dist/chunks/Prefs-BSSKOvPa.js.map +1 -0
  69. package/dist/chunks/{Properties-BbNuMiic.js → Properties-DteSVEWs.js} +4 -4
  70. package/dist/chunks/{Properties-BbNuMiic.js.map → Properties-DteSVEWs.js.map} +1 -1
  71. package/dist/chunks/{PropertyField-CWUtNK1w.js → PropertyField-CLbUOynA.js} +67 -67
  72. package/dist/chunks/PropertyField-CLbUOynA.js.map +1 -0
  73. package/dist/chunks/{Select-ouV8O6cp.js → Select-BhHwjNsb.js} +13 -13
  74. package/dist/chunks/Select-BhHwjNsb.js.map +1 -0
  75. package/dist/chunks/{SelectionPanel-BpUqP75b.js → SelectionPanel-B6HinSdB.js} +2 -2
  76. package/dist/chunks/{SelectionPanel-BpUqP75b.js.map → SelectionPanel-B6HinSdB.js.map} +1 -1
  77. package/dist/chunks/{SidebarPanel--dJ-k9-V.js → SidebarPanel-P3a8tIIj.js} +2 -2
  78. package/dist/chunks/{SidebarPanel--dJ-k9-V.js.map → SidebarPanel-P3a8tIIj.js.map} +1 -1
  79. package/dist/chunks/{StatusBar-BEOfOX0D.js → StatusBar-DEh7J2Gj.js} +14 -9
  80. package/dist/chunks/StatusBar-DEh7J2Gj.js.map +1 -0
  81. package/dist/chunks/{SwatchStrip-BY6A511W.js → SwatchStrip-D7YNn_p0.js} +2 -2
  82. package/dist/chunks/{SwatchStrip-BY6A511W.js.map → SwatchStrip-D7YNn_p0.js.map} +1 -1
  83. package/dist/chunks/{ThemeSwitcher-tnATkIo1.js → ThemeSwitcher-BJWP1l87.js} +6 -6
  84. package/dist/chunks/{ThemeSwitcher-tnATkIo1.js.map → ThemeSwitcher-BJWP1l87.js.map} +1 -1
  85. package/dist/chunks/{Timeline-FlLUm8nd.js → Timeline-CisRg82u.js} +2 -2
  86. package/dist/chunks/{Timeline-FlLUm8nd.js.map → Timeline-CisRg82u.js.map} +1 -1
  87. package/dist/chunks/{Toast-CuHkT0x0.js → Toast-DhkU9Z0b.js} +3 -3
  88. package/dist/chunks/{Toast-CuHkT0x0.js.map → Toast-DhkU9Z0b.js.map} +1 -1
  89. package/dist/chunks/ToggleBar-CRc2k89_.js +10 -0
  90. package/dist/chunks/ToggleBar-CRc2k89_.js.map +1 -0
  91. package/dist/chunks/{ToggleBar-BZ4Gk1IU.js → ToggleBar-CfYbMK3x.js} +9 -9
  92. package/dist/chunks/ToggleBar-CfYbMK3x.js.map +1 -0
  93. package/dist/chunks/{TokenPanel-DongdiZM.js → TokenPanel-cL37E39j.js} +5 -5
  94. package/dist/chunks/{TokenPanel-DongdiZM.js.map → TokenPanel-cL37E39j.js.map} +1 -1
  95. package/dist/chunks/{ToolButton-BURp4YIO.js → ToolButton-Bo7WH1wt.js} +2 -2
  96. package/dist/chunks/{ToolButton-BURp4YIO.js.map → ToolButton-Bo7WH1wt.js.map} +1 -1
  97. package/dist/chunks/{ToolOptionsBar-wTPJFfOn.js → ToolOptionsBar-DmhzrOmd.js} +2 -2
  98. package/dist/chunks/{ToolOptionsBar-wTPJFfOn.js.map → ToolOptionsBar-DmhzrOmd.js.map} +1 -1
  99. package/dist/chunks/{ToolPalette-DKDFWOX-.js → ToolPalette-BTD84k9C.js} +2 -2
  100. package/dist/chunks/{ToolPalette-DKDFWOX-.js.map → ToolPalette-BTD84k9C.js.map} +1 -1
  101. package/dist/chunks/{Tooltip-C6eFCYxw.js → Tooltip-DljsPEQG.js} +4 -4
  102. package/dist/chunks/Tooltip-DljsPEQG.js.map +1 -0
  103. package/dist/chunks/Tree-B_PW6K-W.js +215 -0
  104. package/dist/chunks/Tree-B_PW6K-W.js.map +1 -0
  105. package/dist/chunks/{icons-CofIOTiI.js → icons-B_fPKEis.js} +52 -43
  106. package/dist/chunks/icons-B_fPKEis.js.map +1 -0
  107. package/dist/chunks/{model-qQj8Ny9w.js → model-Ca0f95r0.js} +5 -5
  108. package/dist/chunks/{model-qQj8Ny9w.js.map → model-Ca0f95r0.js.map} +1 -1
  109. package/dist/chunks/{portalHost-CE70wLzo.js → portalHost-RUQPxIoW.js} +3 -2
  110. package/dist/chunks/{portalHost-CE70wLzo.js.map → portalHost-RUQPxIoW.js.map} +1 -1
  111. package/dist/chunks/{prefField-CCm_nzlM.js → prefField-DPPbAmRR.js} +3 -3
  112. package/dist/chunks/{prefField-CCm_nzlM.js.map → prefField-DPPbAmRR.js.map} +1 -1
  113. package/dist/chunks/{segmentTooltip-CGxCOWNz.js → segmentTooltip-8VBPNgEc.js} +2 -2
  114. package/dist/chunks/{segmentTooltip-CGxCOWNz.js.map → segmentTooltip-8VBPNgEc.js.map} +1 -1
  115. package/dist/chunks/segmentedControl.module-62qjNWJk.js +11 -0
  116. package/dist/chunks/{segmentedControl.module-BzGXUL5G.js.map → segmentedControl.module-62qjNWJk.js.map} +1 -1
  117. package/dist/chunks/{useReorderDragList-CStYKjHl.js → useReorderDragList-DnqqvRGK.js} +38 -30
  118. package/dist/chunks/useReorderDragList-DnqqvRGK.js.map +1 -0
  119. package/dist/components/ActionBar/index.js +1 -1
  120. package/dist/components/Badge/index.d.ts +1 -0
  121. package/dist/components/Badge/index.d.ts.map +1 -1
  122. package/dist/components/Badge/index.js +3 -3
  123. package/dist/components/Badge/variantIcons.d.ts +5 -0
  124. package/dist/components/Badge/variantIcons.d.ts.map +1 -0
  125. package/dist/components/Button/index.d.ts +1 -0
  126. package/dist/components/Button/index.d.ts.map +1 -1
  127. package/dist/components/Button/index.js +3 -2
  128. package/dist/components/Button/variantIcons.d.ts +5 -0
  129. package/dist/components/Button/variantIcons.d.ts.map +1 -0
  130. package/dist/components/ButtonBar/index.d.ts +1 -0
  131. package/dist/components/ButtonBar/index.d.ts.map +1 -1
  132. package/dist/components/ButtonBar/index.js +2 -2
  133. package/dist/components/ButtonBar/variantIcons.d.ts +5 -0
  134. package/dist/components/ButtonBar/variantIcons.d.ts.map +1 -0
  135. package/dist/components/Callout/Callout.d.ts.map +1 -1
  136. package/dist/components/Callout/index.js +1 -1
  137. package/dist/components/CloseButton/index.js +1 -1
  138. package/dist/components/Code/index.d.ts +1 -0
  139. package/dist/components/Code/index.d.ts.map +1 -1
  140. package/dist/components/Code/index.js +2 -2
  141. package/dist/components/Code/variantIcons.d.ts +5 -0
  142. package/dist/components/Code/variantIcons.d.ts.map +1 -0
  143. package/dist/components/ColorModeControl/index.js +1 -1
  144. package/dist/components/ComboBox/ComboBox.d.ts.map +1 -1
  145. package/dist/components/ComboBox/index.js +1 -1
  146. package/dist/components/DataGrid/index.js +1 -1
  147. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  148. package/dist/components/Dialog/index.js +1 -1
  149. package/dist/components/DragGhost/index.js +1 -1
  150. package/dist/components/FallthroughDiagram/index.js +1 -1
  151. package/dist/components/FillStrokeSwatch/index.js +1 -1
  152. package/dist/components/FontFamilySelect/index.js +1 -1
  153. package/dist/components/FontWeightSelect/index.js +1 -1
  154. package/dist/components/GestureRoute/index.js +1 -1
  155. package/dist/components/GradientEditor/index.js +1 -1
  156. package/dist/components/ItemList/index.js +1 -1
  157. package/dist/components/Jog/index.js +1 -1
  158. package/dist/components/Keycaps/index.d.ts +1 -0
  159. package/dist/components/Keycaps/index.d.ts.map +1 -1
  160. package/dist/components/Keycaps/index.js +2 -2
  161. package/dist/components/Keycaps/variantIcons.d.ts +5 -0
  162. package/dist/components/Keycaps/variantIcons.d.ts.map +1 -0
  163. package/dist/components/LayerList/LayerList.d.ts.map +1 -1
  164. package/dist/components/LayerList/index.js +1 -1
  165. package/dist/components/ListEditor/index.js +1 -1
  166. package/dist/components/MenuButton/MenuButton.d.ts.map +1 -1
  167. package/dist/components/MenuButton/index.js +1 -1
  168. package/dist/components/MeshEditor/index.js +1 -1
  169. package/dist/components/OptionsBar/index.d.ts +1 -0
  170. package/dist/components/OptionsBar/index.d.ts.map +1 -1
  171. package/dist/components/OptionsBar/index.js +2 -2
  172. package/dist/components/OptionsBar/variantIcons.d.ts +5 -0
  173. package/dist/components/OptionsBar/variantIcons.d.ts.map +1 -0
  174. package/dist/components/PaintField/PaintField.d.ts.map +1 -1
  175. package/dist/components/PaintField/index.js +1 -1
  176. package/dist/components/PaintInput/index.js +1 -1
  177. package/dist/components/PatternPicker/index.js +1 -1
  178. package/dist/components/Powerline/index.js +2 -2
  179. package/dist/components/Prefs/index.js +2 -2
  180. package/dist/components/Properties/index.js +2 -2
  181. package/dist/components/Select/Select.d.ts.map +1 -1
  182. package/dist/components/Select/index.js +1 -1
  183. package/dist/components/SelectionPanel/index.js +2 -2
  184. package/dist/components/SidebarPanel/index.js +1 -1
  185. package/dist/components/StatusBar/StatusBar.d.ts +2 -0
  186. package/dist/components/StatusBar/StatusBar.d.ts.map +1 -1
  187. package/dist/components/StatusBar/index.js +1 -1
  188. package/dist/components/SwatchStrip/index.js +1 -1
  189. package/dist/components/ThemeSwitcher/index.js +1 -1
  190. package/dist/components/Timeline/index.js +1 -1
  191. package/dist/components/Toast/index.js +1 -1
  192. package/dist/components/ToggleBar/index.d.ts +1 -0
  193. package/dist/components/ToggleBar/index.d.ts.map +1 -1
  194. package/dist/components/ToggleBar/index.js +3 -2
  195. package/dist/components/ToggleBar/variantIcons.d.ts +5 -0
  196. package/dist/components/ToggleBar/variantIcons.d.ts.map +1 -0
  197. package/dist/components/TokenPanel/index.js +1 -1
  198. package/dist/components/ToolButton/index.js +1 -1
  199. package/dist/components/ToolOptionsBar/index.js +1 -1
  200. package/dist/components/ToolPalette/index.js +1 -1
  201. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  202. package/dist/components/Tooltip/index.js +1 -1
  203. package/dist/components/Tree/Tree.d.ts +1 -1
  204. package/dist/components/Tree/Tree.d.ts.map +1 -1
  205. package/dist/components/Tree/index.js +1 -1
  206. package/dist/icons/index.d.ts +6 -0
  207. package/dist/icons/index.d.ts.map +1 -1
  208. package/dist/icons/paths.d.ts +12 -0
  209. package/dist/icons/paths.d.ts.map +1 -1
  210. package/dist/index.js +100 -98
  211. package/dist/index.js.map +1 -1
  212. package/dist/overlays/portalHost.d.ts +10 -4
  213. package/dist/overlays/portalHost.d.ts.map +1 -1
  214. package/dist/style.css +1 -1
  215. package/dist/useReorderDragList.d.ts +3 -0
  216. package/dist/useReorderDragList.d.ts.map +1 -1
  217. package/package.json +10 -9
  218. package/dist/chunks/Badge-CTc9Lkwn.js.map +0 -1
  219. package/dist/chunks/Button-XB-T75YL.js.map +0 -1
  220. package/dist/chunks/ButtonBar-CIMKPPRS.js.map +0 -1
  221. package/dist/chunks/Callout-DpTO3fkb.js.map +0 -1
  222. package/dist/chunks/Code-AsKpgnv6.js.map +0 -1
  223. package/dist/chunks/ComboBox-DKln_mOd.js.map +0 -1
  224. package/dist/chunks/Dialog-h-5MeYpu.js.map +0 -1
  225. package/dist/chunks/Icon-DPRUIo3G.js.map +0 -1
  226. package/dist/chunks/ItemList-CRu9y7hL.js.map +0 -1
  227. package/dist/chunks/Keycaps-C-FJyG8k.js.map +0 -1
  228. package/dist/chunks/LayerList-BXTAjK-4.js +0 -421
  229. package/dist/chunks/LayerList-BXTAjK-4.js.map +0 -1
  230. package/dist/chunks/MenuButton-TAFg88Lp.js.map +0 -1
  231. package/dist/chunks/OptionsBar-DeTAjVb7.js.map +0 -1
  232. package/dist/chunks/PaintField-DX4uYlF9.js.map +0 -1
  233. package/dist/chunks/Prefs-gbjYqvSD.js.map +0 -1
  234. package/dist/chunks/PropertyField-CWUtNK1w.js.map +0 -1
  235. package/dist/chunks/Select-ouV8O6cp.js.map +0 -1
  236. package/dist/chunks/StatusBar-BEOfOX0D.js.map +0 -1
  237. package/dist/chunks/ToggleBar-BZ4Gk1IU.js.map +0 -1
  238. package/dist/chunks/Tooltip-C6eFCYxw.js.map +0 -1
  239. package/dist/chunks/Tree-hzIbj2q1.js +0 -203
  240. package/dist/chunks/Tree-hzIbj2q1.js.map +0 -1
  241. package/dist/chunks/icons-CofIOTiI.js.map +0 -1
  242. package/dist/chunks/interactiveTarget-BNZmTow2.js +0 -24
  243. package/dist/chunks/interactiveTarget-BNZmTow2.js.map +0 -1
  244. package/dist/chunks/segmentedControl.module-BzGXUL5G.js +0 -11
  245. package/dist/chunks/useReorderDragList-CStYKjHl.js.map +0 -1
  246. package/dist/interactiveTarget.d.ts +0 -9
  247. package/dist/interactiveTarget.d.ts.map +0 -1
@@ -0,0 +1,215 @@
1
+ import { t as e } from "./useReorderDragList-DnqqvRGK.js";
2
+ import { n as t } from "./Disclosure-CpWt87nO.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { forwardRef as i, useId as a, useMemo as o, useRef as s, useState as c } from "react";
5
+ import { intentOf as l, select as u } from "@weasel-js/select";
6
+ var d = {
7
+ tree: "_tree_10k4o_1",
8
+ group: "_group_10k4o_2",
9
+ item: "_item_10k4o_19",
10
+ row: "_row_10k4o_23",
11
+ twisty: "_twisty_10k4o_61",
12
+ leading: "_leading_10k4o_75",
13
+ label: "_label_10k4o_81",
14
+ trailing: "_trailing_10k4o_88",
15
+ empty: "_empty_10k4o_95"
16
+ }, f = 500, p = {
17
+ toggle: ["meta", "ctrl"],
18
+ range: "shift"
19
+ }, m = i(function({ nodes: i, empty: m, className: h, "aria-label": g, "aria-labelledby": b, expandedIds: x, defaultExpandedIds: S, onExpandedChange: C, selectionMode: w = "none", selectedIds: ee, defaultSelectedIds: T, onSelectionChange: E, onAction: D }, O) {
20
+ let [k, A] = y(x, S, C), [j, M] = y(ee, T, E), N = w !== "none", P = a(), F = o(() => {
21
+ let e = [], t = (n, r, i) => {
22
+ for (let a of n) e.push({
23
+ node: a,
24
+ parentId: r,
25
+ level: i
26
+ }), a.children && k.has(a.id) && t(a.children, a.id, i + 1);
27
+ };
28
+ return t(i, null, 1), e;
29
+ }, [i, k]), I = o(() => new Map(F.map((e, t) => [e.node.id, t])), [F]), L = s(/* @__PURE__ */ new Map()), [R, z] = c(null), B = s(null), V = s({
30
+ text: "",
31
+ at: 0
32
+ }), H = R != null && I.has(R) ? R : (F.find((e) => N && j.has(e.node.id)) ?? F[0])?.node.id;
33
+ if (i.length === 0) return /* @__PURE__ */ n("div", {
34
+ className: [d.empty, h].filter(Boolean).join(" "),
35
+ children: m ?? "—"
36
+ });
37
+ let U = (e) => {
38
+ e != null && L.current.get(e)?.focus();
39
+ }, W = (e) => {
40
+ if (!e.children || e.disabled) return;
41
+ let t = new Set(k);
42
+ t.has(e.id) ? t.delete(e.id) : t.add(e.id), A(t);
43
+ }, G = (t, n) => {
44
+ let r = {
45
+ mode: w === "multiple" ? "multi" : "single",
46
+ ...p
47
+ }, i = u({
48
+ ids: [...j],
49
+ anchor: B.current
50
+ }, t, l(e(n), r), {
51
+ order: F.map((e) => e.node.id),
52
+ eligible: (e) => !F[I.get(e) ?? -1]?.node.disabled
53
+ });
54
+ B.current = i.anchor;
55
+ let a = new Set(i.ids);
56
+ (a.size !== j.size || [...a].some((e) => !j.has(e))) && M(a);
57
+ }, K = (e, t) => {
58
+ e.disabled || (W(e), N && G(e.id, t), D?.(e.id, t));
59
+ }, q = (e) => (t) => {
60
+ if (t.target !== t.currentTarget) return;
61
+ let n = I.get(e.node.id), { node: r } = e, i = !!r.children && k.has(r.id);
62
+ switch (t.key) {
63
+ case "ArrowDown":
64
+ t.preventDefault(), U(F[Math.min(n + 1, F.length - 1)].node.id);
65
+ return;
66
+ case "ArrowUp":
67
+ t.preventDefault(), U(F[Math.max(n - 1, 0)].node.id);
68
+ return;
69
+ case "Home":
70
+ t.preventDefault(), U(F[0].node.id);
71
+ return;
72
+ case "End":
73
+ t.preventDefault(), U(F[F.length - 1].node.id);
74
+ return;
75
+ case "ArrowRight":
76
+ if (!r.children) return;
77
+ t.preventDefault(), i ? U(r.children[0]?.id) : W(r);
78
+ return;
79
+ case "ArrowLeft":
80
+ t.preventDefault(), i ? W(r) : U(e.parentId ?? void 0);
81
+ return;
82
+ case "Enter":
83
+ case " ":
84
+ t.preventDefault(), K(r, v(t));
85
+ return;
86
+ default:
87
+ if (t.key.length !== 1 || t.ctrlKey || t.metaKey || t.altKey) return;
88
+ J(t, n);
89
+ }
90
+ }, J = (e, t) => {
91
+ let n = Date.now(), r = V.current;
92
+ r.text = n - r.at > f ? e.key : r.text + e.key, r.at = n;
93
+ let i = r.text.toLowerCase(), a = r.text.length === 1 ? t + 1 : t;
94
+ for (let t = 0; t < F.length; t++) {
95
+ let n = F[(a + t) % F.length];
96
+ if (_(n.node).toLowerCase().startsWith(i)) {
97
+ e.preventDefault(), U(n.node.id);
98
+ return;
99
+ }
100
+ }
101
+ }, Y = (e) => (t) => K(e, v(t)), X = (e) => (t) => {
102
+ t.stopPropagation(), W(e);
103
+ }, Z = (e) => (t) => {
104
+ t ? L.current.set(e, t) : L.current.delete(e);
105
+ }, Q = 0, $ = (e, i, a) => e.map((o, s) => {
106
+ let c = Q++, l = !!o.children, u = l && k.has(o.id), f = `${P}-${c}`, p = o.trailing == null ? void 0 : `${P}-${c}-t`;
107
+ return /* @__PURE__ */ r("li", {
108
+ ref: Z(o.id),
109
+ role: "treeitem",
110
+ className: [d.item, o.className].filter(Boolean).join(" "),
111
+ "aria-level": a,
112
+ "aria-setsize": e.length,
113
+ "aria-posinset": s + 1,
114
+ "aria-expanded": l ? u : void 0,
115
+ "aria-selected": N ? j.has(o.id) : void 0,
116
+ "aria-disabled": o.disabled || void 0,
117
+ "aria-labelledby": p ? `${f} ${p}` : f,
118
+ "data-muted": o.muted ? "true" : void 0,
119
+ tabIndex: o.id === H ? 0 : -1,
120
+ onKeyDown: q({
121
+ node: o,
122
+ parentId: i,
123
+ level: a
124
+ }),
125
+ onFocus: (e) => {
126
+ e.target === e.currentTarget && z(o.id);
127
+ },
128
+ children: [/* @__PURE__ */ r("div", {
129
+ className: d.row,
130
+ onClick: Y(o),
131
+ children: [
132
+ /* @__PURE__ */ n("span", {
133
+ className: d.twisty,
134
+ "aria-hidden": "true",
135
+ onClick: l ? X(o) : void 0,
136
+ children: l && /* @__PURE__ */ n(t, { open: u })
137
+ }),
138
+ o.leading != null && /* @__PURE__ */ n("span", {
139
+ className: d.leading,
140
+ children: o.leading
141
+ }),
142
+ /* @__PURE__ */ n("span", {
143
+ id: f,
144
+ className: d.label,
145
+ children: o.label
146
+ }),
147
+ p && /* @__PURE__ */ n("span", {
148
+ id: p,
149
+ className: d.trailing,
150
+ children: o.trailing
151
+ })
152
+ ]
153
+ }), u && o.children.length > 0 && /* @__PURE__ */ n("ul", {
154
+ role: "group",
155
+ className: d.group,
156
+ children: $(o.children, o.id, a + 1)
157
+ })]
158
+ }, o.id);
159
+ });
160
+ return /* @__PURE__ */ n("ul", {
161
+ ref: O,
162
+ role: "tree",
163
+ className: [d.tree, h].filter(Boolean).join(" "),
164
+ "aria-label": g,
165
+ "aria-labelledby": b,
166
+ "aria-multiselectable": w === "multiple" || void 0,
167
+ children: $(i, null, 1)
168
+ });
169
+ });
170
+ function h(e, t) {
171
+ let n = !1, r = [];
172
+ for (let i of e) {
173
+ if (t(i)) {
174
+ r.push(i);
175
+ continue;
176
+ }
177
+ let e = i.children ? h(i.children, t) : [];
178
+ if (e.length === 0) {
179
+ n = !0;
180
+ continue;
181
+ }
182
+ e !== i.children && (n = !0), r.push(e === i.children ? i : {
183
+ ...i,
184
+ children: e
185
+ });
186
+ }
187
+ return n ? r : e;
188
+ }
189
+ function g(e) {
190
+ let t = [], n = (e) => {
191
+ for (let r of e) r.children && (t.push(r.id), n(r.children));
192
+ };
193
+ return n(e), t;
194
+ }
195
+ function _(e) {
196
+ return e.textValue ?? (typeof e.label == "string" ? e.label : "");
197
+ }
198
+ function v(e) {
199
+ return {
200
+ shiftKey: e.shiftKey,
201
+ ctrlKey: e.ctrlKey,
202
+ metaKey: e.metaKey,
203
+ altKey: e.altKey
204
+ };
205
+ }
206
+ function y(e, t, n) {
207
+ let [r, i] = c(() => new Set(t));
208
+ return [o(() => e === void 0 ? void 0 : new Set(e), [e]) ?? r, (t) => {
209
+ e === void 0 && i(t), n?.(t);
210
+ }];
211
+ }
212
+ //#endregion
213
+ export { h as n, g as r, m as t };
214
+
215
+ //# sourceMappingURL=Tree-B_PW6K-W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree-B_PW6K-W.js","names":["s","select","selectFrom","selectModifiers","DisclosureMark","Tree_module_default","TYPEAHEAD_MS","LIST_KEYS","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$1","policy","result","select","intentOf","mods","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 { intentOf, select as selectFrom, type SelectPolicy } from '@weasel-js/select';\nimport { selectModifiers, 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/** A list's convention: Cmd/Ctrl toggles a row, shift ranges from the anchor. */\nconst LIST_KEYS = { toggle: ['meta', 'ctrl'], range: 'shift' } as const;\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 const policy: SelectPolicy = { mode: selectionMode === 'multiple' ? 'multi' : 'single', ...LIST_KEYS };\n const result = selectFrom({ ids: [...selected], anchor: anchor.current }, id, intentOf(selectModifiers(mods), policy), {\n order: visible.map((v) => v.node.id),\n eligible: (x) => !visible[indexOf.get(x) ?? -1]?.node.disabled,\n });\n anchor.current = result.anchor;\n const next = new Set(result.ids);\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":";;;;;;;;;;;;;;;GC2EMM,IAAe,KAEfC,IAAY;CAAE,QAAQ,CAAC,QAAQ,MAAM;CAAG,OAAO;AAAQ,GA4BhDC,IAAOC,EAAW,SAC7B,EACE,UAAO,UAAO,cACd,cAAcC,GAAW,mBAAmBC,GAC5C,gBAAa,uBAAoB,qBACjC,mBAAgB,QAAQ,iBAAa,uBAAoB,sBACzD,eAEF,GACA;CACA,IAAM,CAACC,GAAUC,KAAeC,EAAiBC,GAAaC,GAAoBC,CAAgB,GAC5F,CAACC,GAAUC,KAAeL,EAAiBM,IAAaC,GAAoBC,CAAiB,GAC7FC,IAAaC,MAAkB,QAC/BC,IAASC,EAAM,GAEfC,IAAUC,QAAc;EAC5B,IAAMC,IAAiB,CAAC,GAClBC,KAAQ,GAA2B,GAAyB,MAAkB;GAClF,KAAK,IAAMC,KAAQC,GAEjB,AADAH,EAAI,KAAK;IAAE;IAAM;IAAU;GAAM,CAAC,GAC9BE,EAAK,YAAYnB,EAAS,IAAImB,EAAK,EAAE,KAAGD,EAAKC,EAAK,UAAUA,EAAK,IAAIE,IAAQ,CAAC;EAEtF;EAEA,OADAH,EAAKI,GAAO,MAAM,CAAC,GACZL;CACT,GAAG,CAACK,GAAOtB,CAAQ,CAAC,GACduB,IAAUP,QAAc,IAAI,IAAID,EAAQ,KAAK,GAAG,MAAM,CAACS,EAAE,KAAK,IAAIC,CAAC,CAAC,CAAC,GAAG,CAACV,CAAO,CAAC,GAEjFW,IAAQC,kBAAO,IAAI,IAA2B,CAAC,GAC/C,CAACC,GAASC,KAAcC,EAAwB,IAAI,GACpDC,IAASJ,EAAsB,IAAI,GACnCK,IAAQL,EAAO;EAAE,MAAM;EAAI,IAAI;CAAE,CAAC,GAElCM,IAASL,KAAW,QAAQL,EAAQ,IAAIK,CAAO,IACjDA,KACCb,EAAQ,MAAM,MAAMJ,KAAcL,EAAS,IAAIkB,EAAE,KAAK,EAAE,CAAC,KAAKT,EAAQ,GAAA,EAAK,KAAK;CAErF,IAAIO,EAAM,WAAW,GACnB,OAAO,kBAAC,OAAD;EAAK,WAAW,CAAClC,EAAE,OAAO8C,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAAI,UAAAC,KAAS;CAAS,CAAA;CAG5F,IAAMC,KAAS,MAA2B;EAAE,AAAIC,KAAM,QAAMX,EAAM,QAAQ,IAAIW,CAAE,CAAC,EAAE,MAAM;CAAG,GAEtFC,KAAU,MAAmB;EACjC,IAAI,CAACnB,EAAK,YAAYA,EAAK,UAAU;EACrC,IAAMoB,IAAO,IAAI,IAAIvC,CAAQ;EAG7B,AAFIuC,EAAK,IAAIpB,EAAK,EAAE,IAAGoB,EAAK,OAAOpB,EAAK,EAAE,IACrCoB,EAAK,IAAIpB,EAAK,EAAE,GACrBlB,EAAYsC,CAAI;CAClB,GAEMlD,KAAU,GAAY,MAAyB;EACnD,IAAMoD,IAAuB;GAAE,MAAM7B,MAAkB,aAAa,UAAU;GAAU,GAAGjB;EAAU,GAC/F+C,IAASpD,EAAW;GAAE,KAAK,CAAC,GAAGgB,CAAQ;GAAG,QAAQyB,EAAO;EAAQ,GAAGM,GAAIO,EAASrD,EAAgBsD,CAAI,GAAGJ,CAAM,GAAG;GACrH,OAAO1B,EAAQ,KAAK,MAAMS,EAAE,KAAK,EAAE;GACnC,WAAW,MAAM,CAACT,EAAQQ,EAAQ,IAAIuB,CAAC,KAAK,GAAG,EAAE,KAAK;EACxD,CAAC;EACD,EAAO,UAAUJ,EAAO;EACxB,IAAMH,IAAO,IAAI,IAAIG,EAAO,GAAG;EAC/B,CAAIH,EAAK,SAASjC,EAAS,QAAQ,CAAC,GAAGiC,CAAI,CAAC,CAAC,MAAM,MAAM,CAACjC,EAAS,IAAIwC,CAAC,CAAC,MAAGvC,EAAYgC,CAAI;CAC9F,GAEMQ,KAAY,GAAgB,MAAyB;EACzD,AAAI5B,EAAK,aACTmB,EAAOnB,CAAI,GACPR,KAAY6B,EAAOrB,EAAK,IAAI0B,CAAI,GACpCG,IAAW7B,EAAK,IAAI0B,CAAI;CAC1B,GAEMI,KAAa,OAAgB,MAAoC;EACrE,IAAIC,EAAE,WAAWA,EAAE,eAAe;EAClC,IAAMzB,IAAIF,EAAQ,IAAIC,EAAE,KAAK,EAAE,GACzB,EAAE,YAASA,GACX2B,IAAO,CAAC,CAAChC,EAAK,YAAYnB,EAAS,IAAImB,EAAK,EAAE;EACpD,QAAQ+B,EAAE,KAAV;GACE,KAAK;IAEH,AADAA,EAAE,eAAe,GACjBd,EAAMrB,EAAQ,KAAK,IAAIU,IAAI,GAAGV,EAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;IAC1D;GACF,KAAK;IAEH,AADAmC,EAAE,eAAe,GACjBd,EAAMrB,EAAQ,KAAK,IAAIU,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;IACzC;GACF,KAAK;IAEH,AADAyB,EAAE,eAAe,GACjBd,EAAMrB,EAAQ,EAAE,CAAC,KAAK,EAAE;IACxB;GACF,KAAK;IAEH,AADAmC,EAAE,eAAe,GACjBd,EAAMrB,EAAQA,EAAQ,SAAS,EAAE,CAAC,KAAK,EAAE;IACzC;GACF,KAAK;IACH,IAAI,CAACI,EAAK,UAAU;IAEpB,AADA+B,EAAE,eAAe,GACZC,IACAf,EAAMjB,EAAK,SAAS,EAAE,EAAE,EAAE,IADpBmB,EAAOnB,CAAI;IAEtB;GACF,KAAK;IAEH,AADA+B,EAAE,eAAe,GACbC,IAAMb,EAAOnB,CAAI,IAChBiB,EAAMZ,EAAE,YAAY,KAAA,CAAS;IAClC;GACF,KAAK;GACL,KAAK;IAEH,AADA0B,EAAE,eAAe,GACjBH,EAAS5B,GAAMiC,EAAOF,CAAC,CAAC;IACxB;GACF;IACE,IAAIA,EAAE,IAAI,WAAW,KAAKA,EAAE,WAAWA,EAAE,WAAWA,EAAE,QAAQ;IAC9D,EAAUA,GAAGzB,CAAC;EAClB;CACF,GAEM4B,KAAa,GAAkB,MAAiB;EACpD,IAAMC,IAAM,KAAK,IAAI,GACfC,IAAIvB,EAAM;EAEhB,AADA,EAAE,OAAOsB,IAAMC,EAAE,KAAK7D,IAAe,EAAE,MAAM6D,EAAE,OAAO,EAAE,KACxD,EAAE,KAAKD;EACP,IAAME,IAAOD,EAAE,KAAK,YAAY,GAE1BE,IAAQF,EAAE,KAAK,WAAW,IAAIG,IAAO,IAAIA;EAC/C,KAAK,IAAIC,IAAI,GAAGA,IAAI5C,EAAQ,QAAQ,KAAK;GACvC,IAAMS,IAAIT,GAAS0C,IAAQE,KAAK5C,EAAQ;GACxC,IAAI6C,EAAOpC,EAAE,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,WAAWgC,CAAI,GAAG;IAEjD,AADA,EAAE,eAAe,GACjBpB,EAAMZ,EAAE,KAAK,EAAE;IACf;GACF;EACF;CACF,GAEMqC,KAAc,OAAoB,MAAkCd,EAAS5B,GAAMiC,EAAOF,CAAC,CAAC,GAE5FY,KAAiB,OAAoB,MAAmC;EAE5E,AADAZ,EAAE,gBAAgB,GAClBZ,EAAOnB,CAAI;CACb,GAEM4C,KAAW,OAAgB,MAA6B;EAC5D,AAAIC,IAAItC,EAAM,QAAQ,IAAIW,GAAI2B,CAAE,IAC3BtC,EAAM,QAAQ,OAAOW,CAAE;CAC9B,GAEI4B,IAAM,GACJC,KAAe,GAA2B,GAAyB,MACvE9C,EAAK,KAAK,GAAM,MAAQ;EACtB,IAAM+C,IAAI,KACJC,IAAS,CAAC,CAACjD,EAAK,UAChBgC,IAAOiB,KAAUpE,EAAS,IAAImB,EAAK,EAAE,GACrCkD,IAAU,GAAGxD,EAAO,GAAGsD,KACvBG,IAAanD,EAAK,YAAY,OAA4B,KAAA,IAArB,GAAGN,EAAO,GAAGsD,EAAE;EAC1D,OACE,kBAAC,MAAD;GAEE,KAAKJ,EAAQ5C,EAAK,EAAE;GACpB,MAAK;GACL,WAAW,CAAC/B,EAAE,MAAM+B,EAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GAC5D,cAAYE;GACZ,gBAAcD,EAAK;GACnB,iBAAemD,IAAM;GACrB,iBAAeH,IAASjB,IAAO,KAAA;GAC/B,iBAAexC,IAAaL,EAAS,IAAIa,EAAK,EAAE,IAAI,KAAA;GACpD,iBAAeA,EAAK,YAAY,KAAA;GAChC,mBAAiBmD,IAAa,GAAGD,EAAQ,GAAGC,MAAeD;GAC3D,cAAYlD,EAAK,QAAQ,SAAS,KAAA;GAClC,UAAUA,EAAK,OAAOc,IAAS,IAAI;GACnC,WAAWgB,EAAU;IAAE;IAAM;IAAU;GAAM,CAAC;GAC9C,UAAU,MAAM;IAAE,AAAI,EAAE,WAAW,EAAE,iBAAepB,EAAWV,EAAK,EAAE;GAAG;GAf3E,UAAA,CAiBE,kBAAC,OAAD;IAAK,WAAW/B,EAAE;IAAK,SAASyE,EAAW1C,CAAI;IAA/C,UAAA;KACE,kBAAC,QAAD;MAAM,WAAW/B,EAAE;MAAQ,eAAY;MAAO,SAASgF,IAASN,EAAc3C,CAAI,IAAI,KAAA;MACnF,UAAAiD,KAAU,kBAAC5E,GAAD,EAAsB,QAAO,CAAA;KACpC,CAAA;KACL2B,EAAK,WAAW,QAAQ,kBAAC,QAAD;MAAM,WAAW/B,EAAE;MAAU,UAAA+B,EAAK;KAAc,CAAA;KACzE,kBAAC,QAAD;MAAM,IAAIkD;MAAS,WAAWjF,EAAE;MAAQ,UAAA+B,EAAK;KAAY,CAAA;KACxDmD,KAAc,kBAAC,QAAD;MAAM,IAAIA;MAAY,WAAWlF,EAAE;MAAW,UAAA+B,EAAK;KAAe,CAAA;IAC9E;GACJ,CAAA,GAAAgC,KAAQhC,EAAK,SAAU,SAAS,KAC/B,kBAAC,MAAD;IAAI,MAAK;IAAQ,WAAW/B,EAAE;IAC3B,UAAA8E,EAAY/C,EAAK,UAAWA,EAAK,IAAIE,IAAQ,CAAC;GAC7C,CAAA,CAEJ;EA7BG,GAAAF,EAAK,EA6BR;CAER,CAAC;CAEH,OACE,kBAAC,MAAD;EACO;EACL,MAAK;EACL,WAAW,CAAC/B,EAAE,MAAM8C,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACvD,cAAYpC;EACZ,mBAAiBC;EACjB,wBAAsBa,MAAkB,cAAc,KAAA;EAErD,UAAAsD,EAAY5C,GAAO,MAAM,CAAC;CACzB,CAAA;AAER,CAAC;AAOD,SAAgBkD,EACd,GACA,GACqB;CACrB,IAAIC,IAAU,IACRxD,IAAkB,CAAC;CACzB,KAAK,IAAME,KAAQG,GAAO;EACxB,IAAIoD,EAAMvD,CAAI,GAAG;GACf,EAAI,KAAKA,CAAI;GACb;EACF;EACA,IAAMwD,IAAOxD,EAAK,WAAWqD,EAAWrD,EAAK,UAAUuD,CAAK,IAAI,CAAC;EACjE,IAAIC,EAAK,WAAW,GAAG;GACrB,IAAU;GACV;EACF;EAEA,AADIA,MAASxD,EAAK,aAAU,IAAU,KACtCF,EAAI,KAAK0D,MAASxD,EAAK,WAAWA,IAAO;GAAE,GAAGA;GAAM,UAAUwD;EAAK,CAAC;CACtE;CACA,OAAOF,IAAUxD,IAAMK;AACzB;AAGA,SAAgBsD,EAAc,GAAsC;CAClE,IAAM3D,IAAgB,CAAC,GACjBC,KAAQ,MAA8B;EAC1C,KAAK,IAAMC,KAAQC,GACjB,AAAKD,EAAK,aACVF,EAAI,KAAKE,EAAK,EAAE,GAChBD,EAAKC,EAAK,QAAQ;CAEtB;CAEA,OADAD,EAAKI,CAAK,GACHL;AACT;AAEA,SAAS2C,EAAO,GAAwB;CACtC,OAAOzC,EAAK,cAAc,OAAOA,EAAK,SAAU,WAAWA,EAAK,QAAQ;AAC1E;AAEA,SAASiC,EAAO,GAA+F;CAC7G,OAAO;EAAE,UAAU,EAAE;EAAU,SAAS,EAAE;EAAS,SAAS,EAAE;EAAS,QAAQ,EAAE;CAAO;AAC1F;AAEA,SAASlD,EACP,GACA,GACA,GACoD;CACpD,IAAM,CAAC2E,GAAKC,KAAUhD,QAAoC,IAAI,IAAIiD,CAAO,CAAC;CAM1E,OAAO,CALY/D,QAAegE,MAAU,KAAA,IAAY,KAAA,IAAY,IAAI,IAAIA,CAAK,GAAI,CAACA,CAAK,CAKnF,KAAcH,IAJT,MAAsB;EAEjC,AADIG,MAAU,KAAA,KAAWF,EAAOvC,CAAI,GACpC0C,IAAW1C,CAAI;CACjB,CAC8B;AAChC"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./Icon-DPRUIo3G.js";
1
+ import { t as e } from "./Icon-BfqYtAX5.js";
2
2
  import { AlignBottomIcon as t, AlignCenterXIcon as n, AlignCenterYIcon as r, AlignLeftIcon as ee, AlignRightIcon as i, AlignTopIcon as a, ArrowIcon as o, BringForwardIcon as s, BringToFrontIcon as c, CopyIcon as l, CutIcon as u, DeleteIcon as d, DistributeHorizontalIcon as f, DistributeVerticalIcon as p, DuplicateIcon as m, EllipseIcon as h, EyedropperIcon as g, FlipXIcon as _, FlipYIcon as v, GroupIcon as y, HandIcon as b, ImageIcon as x, LassoIcon as S, LineIcon as C, PasteIcon as w, PenIcon as T, PencilIcon as E, PolygonIcon as D, RectIcon as O, RedoIcon as k, SelectIcon as A, SendBackwardIcon as j, SendToBackIcon as M, StarIcon as N, TextIcon as P, UndoIcon as F, UngroupIcon as I, UnknownIcon as L } from "@weasel-js/core";
3
3
  import { jsx as R } from "react/jsx-runtime";
4
4
  //#region src/icons/index.tsx
@@ -29,134 +29,143 @@ var z = (t) => /* @__PURE__ */ R(e, {
29
29
  }), q = (t) => /* @__PURE__ */ R(e, {
30
30
  name: "modeDark",
31
31
  ...t
32
- }), te = (t) => /* @__PURE__ */ R(e, {
32
+ }), J = (t) => /* @__PURE__ */ R(e, {
33
33
  name: "modeAuto",
34
34
  ...t
35
- }), J = (t) => /* @__PURE__ */ R(e, {
35
+ }), Y = (t) => /* @__PURE__ */ R(e, {
36
36
  name: "remove",
37
37
  ...t
38
- }), Y = (t) => /* @__PURE__ */ R(e, {
38
+ }), X = (t) => /* @__PURE__ */ R(e, {
39
39
  name: "sort",
40
40
  ...t
41
- }), X = (t) => /* @__PURE__ */ R(e, {
41
+ }), Z = (t) => /* @__PURE__ */ R(e, {
42
42
  name: "zoomOut",
43
43
  ...t
44
- }), Z = (t) => /* @__PURE__ */ R(e, {
44
+ }), te = (t) => /* @__PURE__ */ R(e, {
45
45
  name: "fit",
46
46
  ...t
47
47
  }), Q = (t) => /* @__PURE__ */ R(e, {
48
- name: "snapshot",
48
+ name: "fitContain",
49
49
  ...t
50
50
  }), ne = (t) => /* @__PURE__ */ R(e, {
51
- name: "play",
51
+ name: "fitFill",
52
52
  ...t
53
53
  }), re = (t) => /* @__PURE__ */ R(e, {
54
- name: "pause",
54
+ name: "fitStretch",
55
55
  ...t
56
56
  }), ie = (t) => /* @__PURE__ */ R(e, {
57
- name: "stop",
57
+ name: "snapshot",
58
58
  ...t
59
59
  }), ae = (t) => /* @__PURE__ */ R(e, {
60
+ name: "play",
61
+ ...t
62
+ }), oe = (t) => /* @__PURE__ */ R(e, {
63
+ name: "pause",
64
+ ...t
65
+ }), se = (t) => /* @__PURE__ */ R(e, {
66
+ name: "stop",
67
+ ...t
68
+ }), ce = (t) => /* @__PURE__ */ R(e, {
60
69
  name: "stepBack",
61
70
  ...t
62
71
  }), $ = (t) => /* @__PURE__ */ R(e, {
63
72
  name: "stepForward",
64
73
  ...t
65
- }), oe = $, se = (t) => /* @__PURE__ */ R(e, {
74
+ }), le = $, ue = (t) => /* @__PURE__ */ R(e, {
66
75
  name: "crosshair",
67
76
  ...t
68
- }), ce = (t) => /* @__PURE__ */ R(e, {
77
+ }), de = (t) => /* @__PURE__ */ R(e, {
69
78
  name: "fullscreen",
70
79
  ...t
71
- }), le = (t) => /* @__PURE__ */ R(e, {
80
+ }), fe = (t) => /* @__PURE__ */ R(e, {
72
81
  name: "compare",
73
82
  ...t
74
- }), ue = (t) => /* @__PURE__ */ R(e, {
83
+ }), pe = (t) => /* @__PURE__ */ R(e, {
75
84
  name: "filter",
76
85
  ...t
77
- }), de = (t) => /* @__PURE__ */ R(e, {
86
+ }), me = (t) => /* @__PURE__ */ R(e, {
78
87
  name: "search",
79
88
  ...t
80
- }), fe = (t) => /* @__PURE__ */ R(e, {
89
+ }), he = (t) => /* @__PURE__ */ R(e, {
81
90
  name: "loupe",
82
91
  ...t
83
- }), pe = (t) => /* @__PURE__ */ R(e, {
92
+ }), ge = (t) => /* @__PURE__ */ R(e, {
84
93
  name: "layers",
85
94
  ...t
86
- }), me = (t) => /* @__PURE__ */ R(e, {
95
+ }), _e = (t) => /* @__PURE__ */ R(e, {
87
96
  name: "page",
88
97
  ...t
89
- }), he = (t) => /* @__PURE__ */ R(e, {
98
+ }), ve = (t) => /* @__PURE__ */ R(e, {
90
99
  name: "lock",
91
100
  ...t
92
- }), ge = (t) => /* @__PURE__ */ R(e, {
101
+ }), ye = (t) => /* @__PURE__ */ R(e, {
93
102
  name: "unlock",
94
103
  ...t
95
- }), _e = (t) => /* @__PURE__ */ R(e, {
104
+ }), be = (t) => /* @__PURE__ */ R(e, {
96
105
  name: "visible",
97
106
  ...t
98
- }), ve = (t) => /* @__PURE__ */ R(e, {
107
+ }), xe = (t) => /* @__PURE__ */ R(e, {
99
108
  name: "hidden",
100
109
  ...t
101
- }), ye = (t) => /* @__PURE__ */ R(e, {
110
+ }), Se = (t) => /* @__PURE__ */ R(e, {
102
111
  name: "pin",
103
112
  ...t
104
- }), be = (t) => /* @__PURE__ */ R(e, {
113
+ }), Ce = (t) => /* @__PURE__ */ R(e, {
105
114
  name: "link",
106
115
  ...t
107
- }), xe = (t) => /* @__PURE__ */ R(e, {
116
+ }), we = (t) => /* @__PURE__ */ R(e, {
108
117
  name: "collapse",
109
118
  ...t
110
- }), Se = (t) => /* @__PURE__ */ R(e, {
119
+ }), Te = (t) => /* @__PURE__ */ R(e, {
111
120
  name: "expand",
112
121
  ...t
113
- }), Ce = (t) => /* @__PURE__ */ R(e, {
122
+ }), Ee = (t) => /* @__PURE__ */ R(e, {
114
123
  name: "chevron",
115
124
  ...t
116
- }), we = (t) => /* @__PURE__ */ R(e, {
125
+ }), De = (t) => /* @__PURE__ */ R(e, {
117
126
  name: "tune",
118
127
  ...t
119
- }), Te = (t) => /* @__PURE__ */ R(e, {
128
+ }), Oe = (t) => /* @__PURE__ */ R(e, {
120
129
  name: "grid",
121
130
  ...t
122
- }), Ee = (t) => /* @__PURE__ */ R(e, {
131
+ }), ke = (t) => /* @__PURE__ */ R(e, {
123
132
  name: "snap",
124
133
  ...t
125
- }), De = (t) => /* @__PURE__ */ R(e, {
134
+ }), Ae = (t) => /* @__PURE__ */ R(e, {
126
135
  name: "measure",
127
136
  ...t
128
- }), Oe = (t) => /* @__PURE__ */ R(e, {
137
+ }), je = (t) => /* @__PURE__ */ R(e, {
129
138
  name: "randomize",
130
139
  ...t
131
- }), ke = (t) => /* @__PURE__ */ R(e, {
140
+ }), Me = (t) => /* @__PURE__ */ R(e, {
132
141
  name: "refresh",
133
142
  ...t
134
- }), Ae = (t) => /* @__PURE__ */ R(e, {
143
+ }), Ne = (t) => /* @__PURE__ */ R(e, {
135
144
  name: "info",
136
145
  ...t
137
- }), je = (t) => /* @__PURE__ */ R(e, {
146
+ }), Pe = (t) => /* @__PURE__ */ R(e, {
138
147
  name: "warning",
139
148
  ...t
140
- }), Me = (t) => /* @__PURE__ */ R(e, {
149
+ }), Fe = (t) => /* @__PURE__ */ R(e, {
141
150
  name: "error",
142
151
  ...t
143
- }), Ne = (t) => /* @__PURE__ */ R(e, {
152
+ }), Ie = (t) => /* @__PURE__ */ R(e, {
144
153
  name: "busy",
145
154
  ...t
146
- }), Pe = (t) => /* @__PURE__ */ R(e, {
155
+ }), Le = (t) => /* @__PURE__ */ R(e, {
147
156
  name: "check",
148
157
  ...t
149
- }), Fe = (t) => /* @__PURE__ */ R(e, {
158
+ }), Re = (t) => /* @__PURE__ */ R(e, {
150
159
  name: "layoutRows",
151
160
  ...t
152
- }), Ie = (t) => /* @__PURE__ */ R(e, {
161
+ }), ze = (t) => /* @__PURE__ */ R(e, {
153
162
  name: "layoutColumns",
154
163
  ...t
155
- }), Le = (t) => /* @__PURE__ */ R(e, {
164
+ }), Be = (t) => /* @__PURE__ */ R(e, {
156
165
  name: "layoutGrid",
157
166
  ...t
158
167
  });
159
168
  //#endregion
160
- export { K as $, ue as A, I as At, Ae as B, p as C, ae as Ct, Se as D, P as Dt, Me as E, ie as Et, Te as F, U as Ft, Fe as G, pe as H, y as I, X as It, he as J, C as K, b as L, _ as M, ge as Mt, v as N, _e as Nt, H as O, we as Ot, ce as P, je as Pt, q as Q, ve as R, f as S, N as St, h as T, oe as Tt, Ie as U, S as V, Le as W, De as X, fe as Y, te as Z, le as _, j as _t, ee as a, E as at, u as b, Q as bt, o as c, D as ct, Ne as d, k as dt, me as et, Pe as f, ke as ft, xe as g, A as gt, V as h, de as ht, r as i, T as it, Z as j, L as jt, g as k, F as kt, s as l, Oe as lt, z as m, B as mt, t as n, w as nt, i as o, ye as ot, Ce as p, J as pt, be as q, n as r, re as rt, a as s, ne as st, G as t, W as tt, c as u, O as ut, l as v, M as vt, m as w, $ as wt, d as x, Y as xt, se as y, Ee as yt, x as z };
169
+ export { Ae as $, pe as A, P as At, b as B, p as C, ie as Ct, Te as D, $ as Dt, Fe as E, ce as Et, _ as F, ye as Ft, ge as G, x as H, v as I, be as It, Re as J, ze as K, de as L, Pe as Lt, ne as M, F as Mt, te as N, I as Nt, H as O, le as Ot, re as P, L as Pt, he as Q, Oe as R, U as Rt, f as S, ke as St, h as T, N as Tt, Ne as U, xe as V, S as W, Ce as X, C as Y, ve as Z, fe as _, B as _t, ee as a, w as at, u as b, j as bt, o as c, E as ct, Ie as d, D as dt, J as et, Le as f, je as ft, we as g, Y as gt, V as h, Me as ht, r as i, W as it, Q as j, De as jt, g as k, se as kt, s as l, Se as lt, z as m, k as mt, t as n, K as nt, i as o, oe as ot, Ee as p, O as pt, Be as q, n as r, _e as rt, a as s, T as st, G as t, q as tt, c as u, ae as ut, l as v, me as vt, m as w, X as wt, d as x, M as xt, ue as y, A as yt, y as z, Z as zt };
161
170
 
162
- //# sourceMappingURL=icons-CofIOTiI.js.map
171
+ //# sourceMappingURL=icons-B_fPKEis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons-B_fPKEis.js","names":["Icon","UnknownIcon$1","CloneIcon","p","ResetIcon","CloseIcon","ExportIcon","ZoomInIcon","PanIcon","AddIcon","ModeLightIcon","ModeDarkIcon","ModeAutoIcon","RemoveIcon","SortIcon","ZoomOutIcon","FitIcon","FitContainIcon","FitFillIcon","FitStretchIcon","SnapshotIcon","PlayIcon","PauseIcon","StopIcon","StepBackIcon","StepForwardIcon","StepIcon","CrosshairIcon","FullscreenIcon","CompareIcon","FilterIcon","SearchIcon","LoupeIcon","LayersIcon","PageIcon","LockIcon","UnlockIcon","VisibleIcon","HiddenIcon","PinIcon","LinkIcon","CollapseIcon","ExpandIcon","ChevronIcon","TuneIcon","GridIcon","SnapIcon","MeasureIcon","RandomizeIcon","RefreshIcon","InfoIcon","WarningIcon","ErrorIcon","BusyIcon","CheckIcon","LayoutRowsIcon","LayoutColumnsIcon","LayoutGridIcon","TextIcon","HandIcon","DistributeVerticalIcon","FlipXIcon","ImageIcon","FlipYIcon","UndoIcon","UngroupIcon","DistributeHorizontalIcon","EllipseIcon","StarIcon","LassoIcon","LineIcon","AlignLeftIcon","PasteIcon","CutIcon","SendBackwardIcon","ArrowIcon","PencilIcon","PolygonIcon","AlignCenterYIcon","EyedropperIcon","BringForwardIcon","RedoIcon","AlignBottomIcon","AlignRightIcon","RectIcon","AlignCenterXIcon","AlignTopIcon","PenIcon","BringToFrontIcon","CopyIcon","DuplicateIcon","DeleteIcon","SendToBackIcon","SelectIcon","GroupIcon"],"sources":["../../src/icons/index.tsx"],"sourcesContent":["import { Icon, type IconProps } from './Icon';\n\nexport { Icon, isFillable } from './Icon';\nexport type { IconProps } from './Icon';\nexport { ICON_FILLS, ICON_GROUPS, ICON_PATHS } from './paths';\nexport type { FillableIconName, IconName } from './paths';\n\n// Tool glyphs live in @weasel-js/core because core needs them for\n// `Tool.presentation.icon` defaults and cannot depend on this package.\n// Re-exported here so consumers have one import site for the whole set.\nexport {\n SelectIcon, LassoIcon, RectIcon, EllipseIcon, ImageIcon, EyedropperIcon,\n LineIcon, ArrowIcon, PolygonIcon, StarIcon, PencilIcon, TextIcon, PenIcon, HandIcon,\n UnknownIcon,\n} from '@weasel-js/core';\n// The standard edit actions' glyphs live beside those actions in core, for the\n// same reason.\nexport {\n CutIcon, CopyIcon, PasteIcon, DuplicateIcon, GroupIcon, UngroupIcon,\n BringForwardIcon, BringToFrontIcon, SendBackwardIcon, SendToBackIcon, FlipXIcon, FlipYIcon,\n UndoIcon, RedoIcon, DeleteIcon,\n AlignLeftIcon, AlignCenterXIcon, AlignRightIcon, AlignTopIcon, AlignCenterYIcon, AlignBottomIcon,\n DistributeHorizontalIcon, DistributeVerticalIcon,\n} from '@weasel-js/core';\n\n/** Clone: a ruled card with a second one tucked behind it. */\nexport const CloneIcon = (p: IconProps) => <Icon name=\"clone\" {...p} />;\n/** Reset: a near-full counterclockwise arc, arrowhead at the top. */\nexport const ResetIcon = (p: IconProps) => <Icon name=\"reset\" {...p} />;\n/** Close: an X. */\nexport const CloseIcon = (p: IconProps) => <Icon name=\"close\" {...p} />;\n/** Export: an arrow pointing down into an open tray. */\nexport const ExportIcon = (p: IconProps) => <Icon name=\"export\" {...p} />;\n/** Zoom in: a magnifier with a plus. */\nexport const ZoomInIcon = (p: IconProps) => <Icon name=\"zoomIn\" {...p} />;\n/** Pan: four arrows out from a hub. */\nexport const PanIcon = (p: IconProps) => <Icon name=\"pan\" {...p} />;\n/** Add: a plus. */\nexport const AddIcon = (p: IconProps) => <Icon name=\"add\" {...p} />;\n/** Light color mode: a sun. */\nexport const ModeLightIcon = (p: IconProps) => <Icon name=\"modeLight\" {...p} />;\n/** Dark color mode: a crescent moon. */\nexport const ModeDarkIcon = (p: IconProps) => <Icon name=\"modeDark\" {...p} />;\n/** Automatic color mode: a four-pointed sparkle. */\nexport const ModeAutoIcon = (p: IconProps) => <Icon name=\"modeAuto\" {...p} />;\n/** Remove: a minus. */\nexport const RemoveIcon = (p: IconProps) => <Icon name=\"remove\" {...p} />;\n/** Sort: three ruled lines beside a downward arrow. */\nexport const SortIcon = (p: IconProps) => <Icon name=\"sort\" {...p} />;\n/** Zoom out: a magnifier with a minus. */\nexport const ZoomOutIcon = (p: IconProps) => <Icon name=\"zoomOut\" {...p} />;\n/** Fit: four corner brackets around a small rect. */\nexport const FitIcon = (p: IconProps) => <Icon name=\"fit\" {...p} />;\n/** Fit, contain: a circle in a wide frame, meeting its top and bottom. */\nexport const FitContainIcon = (p: IconProps) => <Icon name=\"fitContain\" {...p} />;\n/** Fit, fill: a circle as wide as a frame, running past its top and bottom. */\nexport const FitFillIcon = (p: IconProps) => <Icon name=\"fitFill\" {...p} />;\n/** Fit, stretch: an ellipse squashed to a wide frame's proportions. */\nexport const FitStretchIcon = (p: IconProps) => <Icon name=\"fitStretch\" {...p} />;\n/** Snapshot: a camera. */\nexport const SnapshotIcon = (p: IconProps) => <Icon name=\"snapshot\" {...p} />;\n/** Play: a right-pointing triangle. */\nexport const PlayIcon = (p: IconProps) => <Icon name=\"play\" {...p} />;\n/** Pause: two vertical bars. */\nexport const PauseIcon = (p: IconProps) => <Icon name=\"pause\" {...p} />;\n/** Stop: a rounded square. */\nexport const StopIcon = (p: IconProps) => <Icon name=\"stop\" {...p} />;\n/** Step back: a left-pointing triangle against a bar. */\nexport const StepBackIcon = (p: IconProps) => <Icon name=\"stepBack\" {...p} />;\n/** Step forward: a right-pointing triangle against a bar. */\nexport const StepForwardIcon = (p: IconProps) => <Icon name=\"stepForward\" {...p} />;\n/** @deprecated Use {@link StepForwardIcon}; `step` alone stopped naming a direction. */\nexport const StepIcon = StepForwardIcon;\n/** Crosshair: a ring with four ticks on the axes. */\nexport const CrosshairIcon = (p: IconProps) => <Icon name=\"crosshair\" {...p} />;\n/** Fullscreen: two corner arrows pointing out diagonally. */\nexport const FullscreenIcon = (p: IconProps) => <Icon name=\"fullscreen\" {...p} />;\n/** Compare: a frame split into two columns of lines. */\nexport const CompareIcon = (p: IconProps) => <Icon name=\"compare\" {...p} />;\n/** Filter: a funnel. */\nexport const FilterIcon = (p: IconProps) => <Icon name=\"filter\" {...p} />;\n/** Search: an empty magnifier. */\nexport const SearchIcon = (p: IconProps) => <Icon name=\"search\" {...p} />;\n/** Loupe: a magnifier over a grid of pixels. */\nexport const LoupeIcon = (p: IconProps) => <Icon name=\"loupe\" {...p} />;\n/** Layers: a stack of three sheets. */\nexport const LayersIcon = (p: IconProps) => <Icon name=\"layers\" {...p} />;\n/** Page: a document with a folded corner. */\nexport const PageIcon = (p: IconProps) => <Icon name=\"page\" {...p} />;\n/** Lock: a closed padlock. */\nexport const LockIcon = (p: IconProps) => <Icon name=\"lock\" {...p} />;\n/** Unlock: an open padlock. */\nexport const UnlockIcon = (p: IconProps) => <Icon name=\"unlock\" {...p} />;\n/** Visible: an eye. */\nexport const VisibleIcon = (p: IconProps) => <Icon name=\"visible\" {...p} />;\n/** Hidden: an eye struck through. */\nexport const HiddenIcon = (p: IconProps) => <Icon name=\"hidden\" {...p} />;\n/** Pin: a push pin. */\nexport const PinIcon = (p: IconProps) => <Icon name=\"pin\" {...p} />;\n/** Link: two chain links. */\nexport const LinkIcon = (p: IconProps) => <Icon name=\"link\" {...p} />;\n/** Collapse: two chevrons pointing inward. */\nexport const CollapseIcon = (p: IconProps) => <Icon name=\"collapse\" {...p} />;\n/** Expand: two chevrons pointing outward. */\nexport const ExpandIcon = (p: IconProps) => <Icon name=\"expand\" {...p} />;\n/** Chevron: a downward disclosure mark, centered to spin in place under `rotate()`. */\nexport const ChevronIcon = (p: IconProps) => <Icon name=\"chevron\" {...p} />;\n/** Tune: three slider tracks with their knobs. */\nexport const TuneIcon = (p: IconProps) => <Icon name=\"tune\" {...p} />;\n/** Grid: an outlined 3x3 grid — the grid to snap to. */\nexport const GridIcon = (p: IconProps) => <Icon name=\"grid\" {...p} />;\n/** Snap: a horseshoe magnet. */\nexport const SnapIcon = (p: IconProps) => <Icon name=\"snap\" {...p} />;\n/** Measure: a ruler. */\nexport const MeasureIcon = (p: IconProps) => <Icon name=\"measure\" {...p} />;\n/** Randomize: a die showing three. */\nexport const RandomizeIcon = (p: IconProps) => <Icon name=\"randomize\" {...p} />;\n/** Refresh: two arcs chasing each other around a circle. */\nexport const RefreshIcon = (p: IconProps) => <Icon name=\"refresh\" {...p} />;\n/** Info: an i in a ring. */\nexport const InfoIcon = (p: IconProps) => <Icon name=\"info\" {...p} />;\n/** Warning: an exclamation mark in a triangle. */\nexport const WarningIcon = (p: IconProps) => <Icon name=\"warning\" {...p} />;\n/** Error: an X in a ring. */\nexport const ErrorIcon = (p: IconProps) => <Icon name=\"error\" {...p} />;\n/** Busy: a three-quarter arc, for a spinner. */\nexport const BusyIcon = (p: IconProps) => <Icon name=\"busy\" {...p} />;\n/** Check: a check mark. */\nexport const CheckIcon = (p: IconProps) => <Icon name=\"check\" {...p} />;\n/** Row layout: three filled horizontal bars. */\nexport const LayoutRowsIcon = (p: IconProps) => <Icon name=\"layoutRows\" {...p} />;\n/** Column layout: three filled vertical bars. */\nexport const LayoutColumnsIcon = (p: IconProps) => <Icon name=\"layoutColumns\" {...p} />;\n/** Grid layout: a filled 3x3 of cells. */\nexport const LayoutGridIcon = (p: IconProps) => <Icon name=\"layoutGrid\" {...p} />;\n"],"mappings":";;;;AA0BA,IAAaE,KAAa,MAAiB,kBAACF,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDC,KAAa,MAAiB,kBAACJ,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDE,KAAa,MAAiB,kBAACL,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDG,KAAc,MAAiB,kBAACN,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DI,KAAc,MAAiB,kBAACP,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DK,KAAW,MAAiB,kBAACR,GAAD;CAAM,MAAK;CAAM,GAAIG;AAAI,CAAA,GAErDM,KAAW,MAAiB,kBAACT,GAAD;CAAM,MAAK;CAAM,GAAIG;AAAI,CAAA,GAErDO,KAAiB,MAAiB,kBAACV,GAAD;CAAM,MAAK;CAAY,GAAIG;AAAI,CAAA,GAEjEQ,KAAgB,MAAiB,kBAACX,GAAD;CAAM,MAAK;CAAW,GAAIG;AAAI,CAAA,GAE/DS,KAAgB,MAAiB,kBAACZ,GAAD;CAAM,MAAK;CAAW,GAAIG;AAAI,CAAA,GAE/DU,KAAc,MAAiB,kBAACb,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DW,KAAY,MAAiB,kBAACd,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDY,KAAe,MAAiB,kBAACf,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7Da,MAAW,MAAiB,kBAAChB,GAAD;CAAM,MAAK;CAAM,GAAIG;AAAI,CAAA,GAErDc,KAAkB,MAAiB,kBAACjB,GAAD;CAAM,MAAK;CAAa,GAAIG;AAAI,CAAA,GAEnEe,MAAe,MAAiB,kBAAClB,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7DgB,MAAkB,MAAiB,kBAACnB,GAAD;CAAM,MAAK;CAAa,GAAIG;AAAI,CAAA,GAEnEiB,MAAgB,MAAiB,kBAACpB,GAAD;CAAM,MAAK;CAAW,GAAIG;AAAI,CAAA,GAE/DkB,MAAY,MAAiB,kBAACrB,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDmB,MAAa,MAAiB,kBAACtB,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDoB,MAAY,MAAiB,kBAACvB,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDqB,MAAgB,MAAiB,kBAACxB,GAAD;CAAM,MAAK;CAAW,GAAIG;AAAI,CAAA,GAE/DsB,KAAmB,MAAiB,kBAACzB,GAAD;CAAM,MAAK;CAAc,GAAIG;AAAI,CAAA,GAErEuB,KAAWD,GAEXE,MAAiB,MAAiB,kBAAC3B,GAAD;CAAM,MAAK;CAAY,GAAIG;AAAI,CAAA,GAEjEyB,MAAkB,MAAiB,kBAAC5B,GAAD;CAAM,MAAK;CAAa,GAAIG;AAAI,CAAA,GAEnE0B,MAAe,MAAiB,kBAAC7B,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7D2B,MAAc,MAAiB,kBAAC9B,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3D4B,MAAc,MAAiB,kBAAC/B,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3D6B,MAAa,MAAiB,kBAAChC,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzD8B,MAAc,MAAiB,kBAACjC,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3D+B,MAAY,MAAiB,kBAAClC,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDgC,MAAY,MAAiB,kBAACnC,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDiC,MAAc,MAAiB,kBAACpC,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DkC,MAAe,MAAiB,kBAACrC,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7DmC,MAAc,MAAiB,kBAACtC,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DoC,MAAW,MAAiB,kBAACvC,GAAD;CAAM,MAAK;CAAM,GAAIG;AAAI,CAAA,GAErDqC,MAAY,MAAiB,kBAACxC,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDsC,MAAgB,MAAiB,kBAACzC,GAAD;CAAM,MAAK;CAAW,GAAIG;AAAI,CAAA,GAE/DuC,MAAc,MAAiB,kBAAC1C,GAAD;CAAM,MAAK;CAAS,GAAIG;AAAI,CAAA,GAE3DwC,MAAe,MAAiB,kBAAC3C,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7DyC,MAAY,MAAiB,kBAAC5C,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvD0C,MAAY,MAAiB,kBAAC7C,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvD2C,MAAY,MAAiB,kBAAC9C,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvD4C,MAAe,MAAiB,kBAAC/C,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7D6C,MAAiB,MAAiB,kBAAChD,GAAD;CAAM,MAAK;CAAY,GAAIG;AAAI,CAAA,GAEjE8C,MAAe,MAAiB,kBAACjD,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7D+C,MAAY,MAAiB,kBAAClD,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDgD,MAAe,MAAiB,kBAACnD,GAAD;CAAM,MAAK;CAAU,GAAIG;AAAI,CAAA,GAE7DiD,MAAa,MAAiB,kBAACpD,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDkD,MAAY,MAAiB,kBAACrD,GAAD;CAAM,MAAK;CAAO,GAAIG;AAAI,CAAA,GAEvDmD,MAAa,MAAiB,kBAACtD,GAAD;CAAM,MAAK;CAAQ,GAAIG;AAAI,CAAA,GAEzDoD,MAAkB,MAAiB,kBAACvD,GAAD;CAAM,MAAK;CAAa,GAAIG;AAAI,CAAA,GAEnEqD,MAAqB,MAAiB,kBAACxD,GAAD;CAAM,MAAK;CAAgB,GAAIG;AAAI,CAAA,GAEzEsD,MAAkB,MAAiB,kBAACzD,GAAD;CAAM,MAAK;CAAa,GAAIG;AAAI,CAAA"}
@@ -1,8 +1,8 @@
1
- import { a as e, t } from "./Icon-DPRUIo3G.js";
2
- import { t as n } from "./PropertyField-CWUtNK1w.js";
3
- import { t as r } from "./ToggleBar-BZ4Gk1IU.js";
1
+ import { a as e, t } from "./Icon-BfqYtAX5.js";
2
+ import { t as n } from "./PropertyField-CLbUOynA.js";
3
+ import { t as r } from "./ToggleBar-CfYbMK3x.js";
4
4
  import { r as i, t as a } from "./FitLabel-BzZGkWfL.js";
5
- import { t as o } from "./prefField-CCm_nzlM.js";
5
+ import { t as o } from "./prefField-DPPbAmRR.js";
6
6
  import { MIXED as s } from "@weasel-js/core";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  import { Fragment as u, createElement as d } from "react";
@@ -384,4 +384,4 @@ function k(e) {
384
384
  //#endregion
385
385
  export { S as a, w as c, m as d, f, T as i, D as l, O as n, k as o, x as r, E as s, s as t, g as u };
386
386
 
387
- //# sourceMappingURL=model-qQj8Ny9w.js.map
387
+ //# sourceMappingURL=model-Ca0f95r0.js.map