@weasel-js/ui 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/chunks/Badge-CTc9Lkwn.js +14 -0
  2. package/dist/chunks/Badge-CTc9Lkwn.js.map +1 -0
  3. package/dist/chunks/{Badge-CyAIZSDo.js → Badge-D2aD7xVL.js} +277 -228
  4. package/dist/chunks/Badge-D2aD7xVL.js.map +1 -0
  5. package/dist/chunks/BandEditor-Dd0egAgE.js +292 -0
  6. package/dist/chunks/BandEditor-Dd0egAgE.js.map +1 -0
  7. package/dist/chunks/{ButtonBar-D5Vi0aj_.js → ButtonBar-DIQTe5GQ.js} +2 -2
  8. package/dist/chunks/{ButtonBar-D5Vi0aj_.js.map → ButtonBar-DIQTe5GQ.js.map} +1 -1
  9. package/dist/chunks/Callout-ndW5_Bqx.js +116 -0
  10. package/dist/chunks/Callout-ndW5_Bqx.js.map +1 -0
  11. package/dist/chunks/CloseButton-C2J7wVfo.js +26 -0
  12. package/dist/chunks/CloseButton-C2J7wVfo.js.map +1 -0
  13. package/dist/chunks/ColorField-Yz_BkcCT.js +69 -0
  14. package/dist/chunks/ColorField-Yz_BkcCT.js.map +1 -0
  15. package/dist/chunks/{ColorModeControl-ke5PXbBa.js → ColorModeControl-BewxA0rX.js} +3 -3
  16. package/dist/chunks/{ColorModeControl-ke5PXbBa.js.map → ColorModeControl-BewxA0rX.js.map} +1 -1
  17. package/dist/chunks/{ComboBox-DpT8lc3p.js → ComboBox-B34H76CW.js} +12 -12
  18. package/dist/chunks/ComboBox-B34H76CW.js.map +1 -0
  19. package/dist/chunks/{CurveEditor-BDJXjEvK.js → CurveEditor-DUVjd25R.js} +2 -2
  20. package/dist/chunks/{CurveEditor-BDJXjEvK.js.map → CurveEditor-DUVjd25R.js.map} +1 -1
  21. package/dist/chunks/{DataGrid-D-dZj1BD.js → DataGrid-LZ2JgY2Y.js} +17 -17
  22. package/dist/chunks/DataGrid-LZ2JgY2Y.js.map +1 -0
  23. package/dist/chunks/DetailList-BKomDzg5.js +52 -0
  24. package/dist/chunks/DetailList-BKomDzg5.js.map +1 -0
  25. package/dist/chunks/{DetentSlider-CL8TlX3S.js → DetentSlider-5uQPFucv.js} +2 -2
  26. package/dist/chunks/{DetentSlider-CL8TlX3S.js.map → DetentSlider-5uQPFucv.js.map} +1 -1
  27. package/dist/chunks/Dialog-DGFutQ--.js +63 -0
  28. package/dist/chunks/Dialog-DGFutQ--.js.map +1 -0
  29. package/dist/chunks/{Disclosure-0G0uh2fa.js → Disclosure-Ch2KxYuB.js} +7 -7
  30. package/dist/chunks/Disclosure-Ch2KxYuB.js.map +1 -0
  31. package/dist/chunks/{DragHandleGlyph-Dr7Fgo0I.js → DragGrip-AoIZXfZb.js} +2 -2
  32. package/dist/chunks/DragGrip-AoIZXfZb.js.map +1 -0
  33. package/dist/chunks/FallthroughDiagram-BEHiM5IS.js +284 -0
  34. package/dist/chunks/FallthroughDiagram-BEHiM5IS.js.map +1 -0
  35. package/dist/chunks/{FontFamilySelect-DXlMKWfK.js → FontFamilySelect-DkRgNtag.js} +2 -2
  36. package/dist/chunks/{FontFamilySelect-DXlMKWfK.js.map → FontFamilySelect-DkRgNtag.js.map} +1 -1
  37. package/dist/chunks/GestureRoute-C_YGl7bJ.js +82 -0
  38. package/dist/chunks/GestureRoute-C_YGl7bJ.js.map +1 -0
  39. package/dist/chunks/GradientEditor-b7v4Ph3i.js +363 -0
  40. package/dist/chunks/GradientEditor-b7v4Ph3i.js.map +1 -0
  41. package/dist/chunks/{Icon-Cgzy8VgC.js → Icon-CcVjdq2C.js} +31 -1
  42. package/dist/chunks/Icon-CcVjdq2C.js.map +1 -0
  43. package/dist/chunks/{InlineRange-eOj6JpJl.js → InlineRange-P01ABSzo.js} +3 -3
  44. package/dist/chunks/InlineRange-P01ABSzo.js.map +1 -0
  45. package/dist/chunks/{Jog-DESxZ44P.js → Jog-DRmfrkCg.js} +3 -3
  46. package/dist/chunks/{Jog-DESxZ44P.js.map → Jog-DRmfrkCg.js.map} +1 -1
  47. package/dist/chunks/{Keycaps-C0H_v2gO.js → Keycaps-C-FJyG8k.js} +14 -14
  48. package/dist/chunks/Keycaps-C-FJyG8k.js.map +1 -0
  49. package/dist/chunks/{LayerList-nz-QYvTF.js → LayerList-wCI1EueM.js} +148 -152
  50. package/dist/chunks/LayerList-wCI1EueM.js.map +1 -0
  51. package/dist/chunks/ListEditor-BeA60TAA.js +71 -0
  52. package/dist/chunks/ListEditor-BeA60TAA.js.map +1 -0
  53. package/dist/chunks/{MenuButton-DtaGenKf.js → MenuButton-BSqEChJE.js} +7 -7
  54. package/dist/chunks/MenuButton-BSqEChJE.js.map +1 -0
  55. package/dist/chunks/{MeshEditor-qqGc6hlD.js → MeshEditor-D1HLZcAh.js} +3 -3
  56. package/dist/chunks/{MeshEditor-qqGc6hlD.js.map → MeshEditor-D1HLZcAh.js.map} +1 -1
  57. package/dist/chunks/NumberField-BnJxcazc.js +206 -0
  58. package/dist/chunks/NumberField-BnJxcazc.js.map +1 -0
  59. package/dist/chunks/{OptionsBar-DbzAgIln.js → OptionsBar-ujxYidhj.js} +2 -2
  60. package/dist/chunks/{OptionsBar-DbzAgIln.js.map → OptionsBar-ujxYidhj.js.map} +1 -1
  61. package/dist/chunks/{PaintField-DaJukRc6.js → PaintField-DadOELMg.js} +2 -2
  62. package/dist/chunks/{PaintField-DaJukRc6.js.map → PaintField-DadOELMg.js.map} +1 -1
  63. package/dist/chunks/PaintInput-v8Y7MDbH.js +121 -0
  64. package/dist/chunks/PaintInput-v8Y7MDbH.js.map +1 -0
  65. package/dist/chunks/{PatternPicker-B-cUt-JT.js → PatternPicker-R_EQtw2Q.js} +2 -2
  66. package/dist/chunks/{PatternPicker-B-cUt-JT.js.map → PatternPicker-R_EQtw2Q.js.map} +1 -1
  67. package/dist/chunks/{PointPlotter-Bxo6haKe.js → PointPlotter-ldI4RrU1.js} +2 -2
  68. package/dist/chunks/{PointPlotter-Bxo6haKe.js.map → PointPlotter-ldI4RrU1.js.map} +1 -1
  69. package/dist/chunks/{Powerline-ExO5GwEr.js → Powerline-DNyH885r.js} +2 -2
  70. package/dist/chunks/{Powerline-ExO5GwEr.js.map → Powerline-DNyH885r.js.map} +1 -1
  71. package/dist/chunks/{Prefs-DpqFKiwY.js → Prefs-ByA-x51i.js} +46 -34
  72. package/dist/chunks/Prefs-ByA-x51i.js.map +1 -0
  73. package/dist/chunks/{Properties-D_KzDN9K.js → Properties-DmAeQ3mk.js} +35 -29
  74. package/dist/chunks/Properties-DmAeQ3mk.js.map +1 -0
  75. package/dist/chunks/PropertyField-DfIJJ5GS.js +673 -0
  76. package/dist/chunks/PropertyField-DfIJJ5GS.js.map +1 -0
  77. package/dist/chunks/{RangeSlider-BKRRTPTZ.js → RangeSlider-SEGE-7VF.js} +8 -8
  78. package/dist/chunks/RangeSlider-SEGE-7VF.js.map +1 -0
  79. package/dist/chunks/{ResizeHandle-BKT0XYpx.js → ResizeHandle-rKVWyeTG.js} +3 -3
  80. package/dist/chunks/ResizeHandle-rKVWyeTG.js.map +1 -0
  81. package/dist/chunks/Select-ClmKtyWg.js +229 -0
  82. package/dist/chunks/Select-ClmKtyWg.js.map +1 -0
  83. package/dist/chunks/SelectionPanel-BaQnX4Bs.js +106 -0
  84. package/dist/chunks/SelectionPanel-BaQnX4Bs.js.map +1 -0
  85. package/dist/chunks/SidebarPanel-BblDEz4G.js +53 -0
  86. package/dist/chunks/SidebarPanel-BblDEz4G.js.map +1 -0
  87. package/dist/chunks/Slider-YofwGOI4.js +389 -0
  88. package/dist/chunks/Slider-YofwGOI4.js.map +1 -0
  89. package/dist/chunks/{StatusBar-DzoPDY4k.js → StatusBar-Ca9Dvhhq.js} +6 -6
  90. package/dist/chunks/StatusBar-Ca9Dvhhq.js.map +1 -0
  91. package/dist/chunks/{SwatchGrid-BARC3rnF.js → SwatchGrid-BYvA8Bmh.js} +3 -3
  92. package/dist/chunks/SwatchGrid-BYvA8Bmh.js.map +1 -0
  93. package/dist/chunks/ThemeSwitcher-BlsInAmR.js +38 -0
  94. package/dist/chunks/ThemeSwitcher-BlsInAmR.js.map +1 -0
  95. package/dist/chunks/{Timeline--58F7MED.js → Timeline-B39cwfMB.js} +207 -203
  96. package/dist/chunks/Timeline-B39cwfMB.js.map +1 -0
  97. package/dist/chunks/{Toast-DNBb-24H.js → Toast-BF9GE0HC.js} +25 -27
  98. package/dist/chunks/Toast-BF9GE0HC.js.map +1 -0
  99. package/dist/chunks/{ToggleBar-DTjGeS0Q.js → ToggleBar-BTYkBXU9.js} +8 -8
  100. package/dist/chunks/ToggleBar-BTYkBXU9.js.map +1 -0
  101. package/dist/chunks/{TokenPanel-CMq7uydV.js → TokenPanel-CMDAOfYH.js} +5 -5
  102. package/dist/chunks/{TokenPanel-CMq7uydV.js.map → TokenPanel-CMDAOfYH.js.map} +1 -1
  103. package/dist/chunks/{ToolButton-CR4sQlxF.js → ToolButton-CAHBa08P.js} +6 -6
  104. package/dist/chunks/ToolButton-CAHBa08P.js.map +1 -0
  105. package/dist/chunks/{ToolOptionsBar-CtzTlaN2.js → ToolOptionsBar-D_GCrBAN.js} +8 -7
  106. package/dist/chunks/ToolOptionsBar-D_GCrBAN.js.map +1 -0
  107. package/dist/chunks/{ToolPalette-CKG9qY6P.js → ToolPalette-OOWN51Xx.js} +3 -3
  108. package/dist/chunks/ToolPalette-OOWN51Xx.js.map +1 -0
  109. package/dist/chunks/{Tree-DVOtc9R5.js → Tree-Cc8lIzgM.js} +2 -2
  110. package/dist/chunks/{Tree-DVOtc9R5.js.map → Tree-Cc8lIzgM.js.map} +1 -1
  111. package/dist/chunks/{createKeyframeLayer-Czj6Y235.js → createKeyframeLayer-DVl321_l.js} +15 -16
  112. package/dist/chunks/createKeyframeLayer-DVl321_l.js.map +1 -0
  113. package/dist/chunks/{icons-Dk8SRS8g.js → icons-BhcR1l64.js} +2 -2
  114. package/dist/chunks/icons-BhcR1l64.js.map +1 -0
  115. package/dist/chunks/{model-Du7Lta4C.js → model-BaF65rnX.js} +95 -90
  116. package/dist/chunks/model-BaF65rnX.js.map +1 -0
  117. package/dist/chunks/{prefField-Dnl7nmjQ.js → prefField-BopW9bjx.js} +17 -13
  118. package/dist/chunks/prefField-BopW9bjx.js.map +1 -0
  119. package/dist/chunks/segmentedControl.module-D6SzYJD7.js +11 -0
  120. package/dist/chunks/segmentedControl.module-D6SzYJD7.js.map +1 -0
  121. package/dist/chunks/{useReorderDragList-B_-5L5Gu.js → useReorderDragList-FCMoFIzH.js} +2 -2
  122. package/dist/chunks/useReorderDragList-FCMoFIzH.js.map +1 -0
  123. package/dist/components/Badge/bases/Powerline.d.ts.map +1 -1
  124. package/dist/components/Badge/bases/edgeProfiles.d.ts +31 -4
  125. package/dist/components/Badge/bases/edgeProfiles.d.ts.map +1 -1
  126. package/dist/components/Badge/index.d.ts +1 -0
  127. package/dist/components/Badge/index.d.ts.map +1 -1
  128. package/dist/components/Badge/index.js +3 -2
  129. package/dist/components/Badge/statusIcons.d.ts +5 -0
  130. package/dist/components/Badge/statusIcons.d.ts.map +1 -0
  131. package/dist/components/BandEditor/BandEditor.d.ts +16 -7
  132. package/dist/components/BandEditor/BandEditor.d.ts.map +1 -1
  133. package/dist/components/BandEditor/bands.d.ts +5 -2
  134. package/dist/components/BandEditor/bands.d.ts.map +1 -1
  135. package/dist/components/BandEditor/index.js +1 -1
  136. package/dist/components/ButtonBar/index.js +1 -1
  137. package/dist/components/Callout/Callout.d.ts +2 -2
  138. package/dist/components/Callout/Callout.d.ts.map +1 -1
  139. package/dist/components/Callout/index.js +1 -1
  140. package/dist/components/CloseButton/CloseButton.d.ts +21 -0
  141. package/dist/components/CloseButton/CloseButton.d.ts.map +1 -0
  142. package/dist/components/CloseButton/index.d.ts +3 -0
  143. package/dist/components/CloseButton/index.d.ts.map +1 -0
  144. package/dist/components/CloseButton/index.js +2 -0
  145. package/dist/components/ColorField/ColorField.d.ts +5 -1
  146. package/dist/components/ColorField/ColorField.d.ts.map +1 -1
  147. package/dist/components/ColorField/index.js +1 -1
  148. package/dist/components/ColorModeControl/index.js +1 -1
  149. package/dist/components/ComboBox/index.js +1 -1
  150. package/dist/components/CurveEditor/index.js +2 -2
  151. package/dist/components/DataGrid/index.js +1 -1
  152. package/dist/components/DetailList/DetailList.d.ts +31 -5
  153. package/dist/components/DetailList/DetailList.d.ts.map +1 -1
  154. package/dist/components/DetailList/index.d.ts +1 -1
  155. package/dist/components/DetailList/index.d.ts.map +1 -1
  156. package/dist/components/DetailList/index.js +1 -1
  157. package/dist/components/DetentSlider/index.js +1 -1
  158. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  159. package/dist/components/Dialog/index.js +1 -1
  160. package/dist/components/Disclosure/Disclosure.d.ts +1 -1
  161. package/dist/components/Disclosure/index.js +1 -1
  162. package/dist/components/{DragHandleGlyph/DragHandleGlyph.d.ts → DragGrip/DragGrip.d.ts} +4 -4
  163. package/dist/components/DragGrip/DragGrip.d.ts.map +1 -0
  164. package/dist/components/DragGrip/index.d.ts +3 -0
  165. package/dist/components/DragGrip/index.d.ts.map +1 -0
  166. package/dist/components/DragGrip/index.js +2 -0
  167. package/dist/components/FallthroughDiagram/FallthroughDiagram.d.ts +14 -0
  168. package/dist/components/FallthroughDiagram/FallthroughDiagram.d.ts.map +1 -0
  169. package/dist/components/FallthroughDiagram/fixtures.d.ts +17 -0
  170. package/dist/components/FallthroughDiagram/fixtures.d.ts.map +1 -0
  171. package/dist/components/FallthroughDiagram/index.d.ts +3 -0
  172. package/dist/components/FallthroughDiagram/index.d.ts.map +1 -0
  173. package/dist/components/FallthroughDiagram/index.js +2 -0
  174. package/dist/components/FontFamilySelect/index.js +1 -1
  175. package/dist/components/GestureRoute/GestureRoute.d.ts +19 -0
  176. package/dist/components/GestureRoute/GestureRoute.d.ts.map +1 -0
  177. package/dist/components/GestureRoute/index.d.ts +3 -0
  178. package/dist/components/GestureRoute/index.d.ts.map +1 -0
  179. package/dist/components/GestureRoute/index.js +2 -0
  180. package/dist/components/GradientEditor/GradientEditor.d.ts +22 -8
  181. package/dist/components/GradientEditor/GradientEditor.d.ts.map +1 -1
  182. package/dist/components/GradientEditor/index.js +1 -1
  183. package/dist/components/InlineRange/index.js +1 -1
  184. package/dist/components/Jog/index.js +1 -1
  185. package/dist/components/Keycaps/Keycaps.d.ts +11 -5
  186. package/dist/components/Keycaps/Keycaps.d.ts.map +1 -1
  187. package/dist/components/Keycaps/index.d.ts +1 -1
  188. package/dist/components/Keycaps/index.d.ts.map +1 -1
  189. package/dist/components/Keycaps/index.js +1 -1
  190. package/dist/components/LayerList/LayerList.d.ts +1 -1
  191. package/dist/components/LayerList/LayerList.d.ts.map +1 -1
  192. package/dist/components/LayerList/index.js +1 -1
  193. package/dist/components/ListEditor/ListEditor.d.ts.map +1 -1
  194. package/dist/components/ListEditor/index.js +1 -1
  195. package/dist/components/MenuButton/index.js +1 -1
  196. package/dist/components/MeshEditor/index.js +1 -1
  197. package/dist/components/NumberField/UnitField.d.ts +20 -7
  198. package/dist/components/NumberField/UnitField.d.ts.map +1 -1
  199. package/dist/components/NumberField/index.js +1 -1
  200. package/dist/components/OptionsBar/index.js +1 -1
  201. package/dist/components/PaintField/index.js +1 -1
  202. package/dist/components/PaintInput/PaintInput.d.ts.map +1 -1
  203. package/dist/components/PaintInput/index.js +1 -1
  204. package/dist/components/PatternPicker/index.js +1 -1
  205. package/dist/components/PointPlotter/index.js +1 -1
  206. package/dist/components/Powerline/index.d.ts +1 -1
  207. package/dist/components/Powerline/index.d.ts.map +1 -1
  208. package/dist/components/Powerline/index.js +2 -2
  209. package/dist/components/Prefs/PrefsRow.d.ts.map +1 -1
  210. package/dist/components/Prefs/index.d.ts +1 -1
  211. package/dist/components/Prefs/index.d.ts.map +1 -1
  212. package/dist/components/Prefs/index.js +2 -2
  213. package/dist/components/Prefs/prefField.d.ts.map +1 -1
  214. package/dist/components/Prefs/schema.d.ts +2 -2
  215. package/dist/components/Prefs/schema.d.ts.map +1 -1
  216. package/dist/components/Properties/PropertyField.d.ts +22 -30
  217. package/dist/components/Properties/PropertyField.d.ts.map +1 -1
  218. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -1
  219. package/dist/components/Properties/PropertyPanel.d.ts +1 -8
  220. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -1
  221. package/dist/components/Properties/index.d.ts +1 -1
  222. package/dist/components/Properties/index.d.ts.map +1 -1
  223. package/dist/components/Properties/index.js +2 -2
  224. package/dist/components/RangeSlider/index.js +1 -1
  225. package/dist/components/ResizeHandle/index.js +1 -1
  226. package/dist/components/Select/Select.d.ts.map +1 -1
  227. package/dist/components/Select/index.js +1 -1
  228. package/dist/components/SelectionPanel/SelectionPanel.d.ts.map +1 -1
  229. package/dist/components/SelectionPanel/index.js +2 -2
  230. package/dist/components/SelectionPanel/renderLeaf.d.ts +7 -0
  231. package/dist/components/SelectionPanel/renderLeaf.d.ts.map +1 -1
  232. package/dist/components/SidebarPanel/SidebarPanel.d.ts +1 -1
  233. package/dist/components/SidebarPanel/SidebarPanel.d.ts.map +1 -1
  234. package/dist/components/SidebarPanel/index.js +1 -1
  235. package/dist/components/Slider/Slider.d.ts +19 -2
  236. package/dist/components/Slider/Slider.d.ts.map +1 -1
  237. package/dist/components/Slider/index.js +1 -1
  238. package/dist/components/StatusBar/index.js +1 -1
  239. package/dist/components/SwatchGrid/index.js +1 -1
  240. package/dist/components/ThemeSwitcher/ThemeSwitcher.d.ts +38 -0
  241. package/dist/components/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -0
  242. package/dist/components/ThemeSwitcher/index.d.ts +3 -0
  243. package/dist/components/ThemeSwitcher/index.d.ts.map +1 -0
  244. package/dist/components/ThemeSwitcher/index.js +2 -0
  245. package/dist/components/Timeline/Transport.d.ts.map +1 -1
  246. package/dist/components/Timeline/index.js +1 -1
  247. package/dist/components/Toast/Toast.d.ts.map +1 -1
  248. package/dist/components/Toast/index.js +1 -1
  249. package/dist/components/ToggleBar/index.js +1 -1
  250. package/dist/components/TokenPanel/index.js +1 -1
  251. package/dist/components/ToolButton/index.js +1 -1
  252. package/dist/components/ToolOptionsBar/index.js +1 -1
  253. package/dist/components/ToolPalette/ToolPalette.d.ts +2 -1
  254. package/dist/components/ToolPalette/ToolPalette.d.ts.map +1 -1
  255. package/dist/components/ToolPalette/index.js +1 -1
  256. package/dist/components/Tree/index.js +1 -1
  257. package/dist/components/spin.d.ts +16 -0
  258. package/dist/components/spin.d.ts.map +1 -0
  259. package/dist/components/stanceSurfaces.d.ts.map +1 -1
  260. package/dist/icons/index.d.ts +0 -2
  261. package/dist/icons/index.d.ts.map +1 -1
  262. package/dist/icons/paths.d.ts +10 -0
  263. package/dist/icons/paths.d.ts.map +1 -1
  264. package/dist/index.d.ts +5 -2
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +83 -99
  267. package/dist/index.js.map +1 -1
  268. package/dist/paintGradientTrack.d.ts +5 -2
  269. package/dist/paintGradientTrack.d.ts.map +1 -1
  270. package/dist/style.css +1 -1
  271. package/dist/useReorderDragList.d.ts +1 -1
  272. package/dist/useReorderDragList.d.ts.map +1 -1
  273. package/package.json +9 -8
  274. package/dist/chunks/Badge-CyAIZSDo.js.map +0 -1
  275. package/dist/chunks/BandEditor-Dhm_Xrlr.js +0 -248
  276. package/dist/chunks/BandEditor-Dhm_Xrlr.js.map +0 -1
  277. package/dist/chunks/Callout-yEn9iPlh.js +0 -119
  278. package/dist/chunks/Callout-yEn9iPlh.js.map +0 -1
  279. package/dist/chunks/ColorField-BcMcW8Sa.js +0 -60
  280. package/dist/chunks/ColorField-BcMcW8Sa.js.map +0 -1
  281. package/dist/chunks/ComboBox-DpT8lc3p.js.map +0 -1
  282. package/dist/chunks/DataGrid-D-dZj1BD.js.map +0 -1
  283. package/dist/chunks/DetailList-BMER1LUZ.js +0 -43
  284. package/dist/chunks/DetailList-BMER1LUZ.js.map +0 -1
  285. package/dist/chunks/Dialog-BWyNMgpf.js +0 -66
  286. package/dist/chunks/Dialog-BWyNMgpf.js.map +0 -1
  287. package/dist/chunks/Disclosure-0G0uh2fa.js.map +0 -1
  288. package/dist/chunks/DragHandleGlyph-Dr7Fgo0I.js.map +0 -1
  289. package/dist/chunks/GradientEditor-B3a-MsVJ.js +0 -335
  290. package/dist/chunks/GradientEditor-B3a-MsVJ.js.map +0 -1
  291. package/dist/chunks/Icon-Cgzy8VgC.js.map +0 -1
  292. package/dist/chunks/InlineRange-eOj6JpJl.js.map +0 -1
  293. package/dist/chunks/Keycaps-C0H_v2gO.js.map +0 -1
  294. package/dist/chunks/LayerList-nz-QYvTF.js.map +0 -1
  295. package/dist/chunks/ListEditor-BQ6AV3Ac.js +0 -74
  296. package/dist/chunks/ListEditor-BQ6AV3Ac.js.map +0 -1
  297. package/dist/chunks/MenuButton-DtaGenKf.js.map +0 -1
  298. package/dist/chunks/NumberField-CwJOMmQR.js +0 -117
  299. package/dist/chunks/NumberField-CwJOMmQR.js.map +0 -1
  300. package/dist/chunks/PaintInput-Byhna3H-.js +0 -131
  301. package/dist/chunks/PaintInput-Byhna3H-.js.map +0 -1
  302. package/dist/chunks/Prefs-DpqFKiwY.js.map +0 -1
  303. package/dist/chunks/Properties-D_KzDN9K.js.map +0 -1
  304. package/dist/chunks/PropertyField-DGCecAnV.js +0 -758
  305. package/dist/chunks/PropertyField-DGCecAnV.js.map +0 -1
  306. package/dist/chunks/RangeSlider-BKRRTPTZ.js.map +0 -1
  307. package/dist/chunks/ResizeHandle-BKT0XYpx.js.map +0 -1
  308. package/dist/chunks/Select-CzyfaXzp.js +0 -225
  309. package/dist/chunks/Select-CzyfaXzp.js.map +0 -1
  310. package/dist/chunks/SelectionPanel-BgUM1h03.js +0 -103
  311. package/dist/chunks/SelectionPanel-BgUM1h03.js.map +0 -1
  312. package/dist/chunks/SidebarPanel-aoIqxbtq.js +0 -55
  313. package/dist/chunks/SidebarPanel-aoIqxbtq.js.map +0 -1
  314. package/dist/chunks/Slider-CFwQYQ10.js +0 -383
  315. package/dist/chunks/Slider-CFwQYQ10.js.map +0 -1
  316. package/dist/chunks/StatusBar-DzoPDY4k.js.map +0 -1
  317. package/dist/chunks/SwatchGrid-BARC3rnF.js.map +0 -1
  318. package/dist/chunks/Timeline--58F7MED.js.map +0 -1
  319. package/dist/chunks/Toast-DNBb-24H.js.map +0 -1
  320. package/dist/chunks/ToggleBar-DTjGeS0Q.js.map +0 -1
  321. package/dist/chunks/ToolButton-CR4sQlxF.js.map +0 -1
  322. package/dist/chunks/ToolOptionsBar-CtzTlaN2.js.map +0 -1
  323. package/dist/chunks/ToolPalette-CKG9qY6P.js.map +0 -1
  324. package/dist/chunks/createKeyframeLayer-Czj6Y235.js.map +0 -1
  325. package/dist/chunks/icons-Dk8SRS8g.js.map +0 -1
  326. package/dist/chunks/model-Du7Lta4C.js.map +0 -1
  327. package/dist/chunks/number-D3NEx_8r.js +0 -89
  328. package/dist/chunks/number-D3NEx_8r.js.map +0 -1
  329. package/dist/chunks/prefField-Dnl7nmjQ.js.map +0 -1
  330. package/dist/chunks/segmentedControl.module-Bv7DEg8f.js +0 -11
  331. package/dist/chunks/segmentedControl.module-Bv7DEg8f.js.map +0 -1
  332. package/dist/chunks/useReorderDragList-B_-5L5Gu.js.map +0 -1
  333. package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts.map +0 -1
  334. package/dist/components/DragHandleGlyph/index.d.ts +0 -3
  335. package/dist/components/DragHandleGlyph/index.d.ts.map +0 -1
  336. package/dist/components/DragHandleGlyph/index.js +0 -2
  337. package/dist/format/number.d.ts +0 -56
  338. package/dist/format/number.d.ts.map +0 -1
  339. package/dist/icons/ShapeKindIcon.d.ts +0 -10
  340. package/dist/icons/ShapeKindIcon.d.ts.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { a as e, t } from "./Icon-CcVjdq2C.js";
2
+ import { t as n } from "./ColorField-Yz_BkcCT.js";
3
+ import { t as r } from "./ToggleBar-BTYkBXU9.js";
4
+ import { r as i } from "./GradientEditor-b7v4Ph3i.js";
5
+ import { t as a } from "./PatternPicker-R_EQtw2Q.js";
6
+ import { getAlpha01 as o, getPaintKind as s, listPaintKinds as c, paintAlpha as l, solid as u, switchGradientKind as d, toHex8 as f, withAlpha01 as p } from "@weasel-js/core";
7
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
8
+ import { useCallback as g, useRef as _ } from "react";
9
+ var v = {
10
+ root: "_root_1nsz3_2",
11
+ unset: "_unset_1nsz3_10",
12
+ noEditor: "_noEditor_1nsz3_15"
13
+ }, y = "#000000ff", b = "none";
14
+ function x(e) {
15
+ let t = f(e.color);
16
+ return p(t.slice(0, 7), o(t) * l(e));
17
+ }
18
+ function S(e) {
19
+ let t = u(e);
20
+ return t.opacity === void 0 ? t : {
21
+ ...t,
22
+ opacity: Math.round(t.opacity * 100) / 100
23
+ };
24
+ }
25
+ function C(e) {
26
+ return e?.fill === "pattern";
27
+ }
28
+ function w(e) {
29
+ return e === null ? b : e === void 0 ? null : e.fill ?? "solid";
30
+ }
31
+ function T(o) {
32
+ let { value: l, mixed: u = !1, unset: f = !1, kinds: p, allowNone: T = !0, onInput: E, onChange: D, className: O } = o, k = o["aria-label"], A = _(/* @__PURE__ */ new Map()), j = u ? null : w(l);
33
+ l != null && j !== null && A.current.set(j, l);
34
+ let M = c().filter((e) => p === void 0 || p.includes(e.id)), N = (n, r, i) => i && i in e ? {
35
+ value: n,
36
+ label: /* @__PURE__ */ m(t, {
37
+ name: i,
38
+ size: 14
39
+ }),
40
+ ariaLabel: r
41
+ } : {
42
+ value: n,
43
+ label: r
44
+ }, P = [...T ? [N(b, "None", "paintNone")] : [], ...M.map((e) => N(e.id, e.label, e.icon))], F = g(() => l == null ? y : s(w(l) ?? "solid")?.colorOf(l) ?? y, [l]), I = (e) => {
45
+ if (e === j) return;
46
+ if (e === b) {
47
+ D(null);
48
+ return;
49
+ }
50
+ let t = A.current.get(e);
51
+ if (t !== void 0) {
52
+ D(t);
53
+ return;
54
+ }
55
+ let n = l == null ? void 0 : d(l, e);
56
+ if (n !== void 0) {
57
+ D(n);
58
+ return;
59
+ }
60
+ let r = s(e);
61
+ r && D(r.seed(F()));
62
+ };
63
+ return /* @__PURE__ */ h("div", {
64
+ className: [
65
+ v.root,
66
+ f && v.unset,
67
+ O
68
+ ].filter(Boolean).join(" "),
69
+ title: f ? "Not set" : void 0,
70
+ children: [/* @__PURE__ */ m(r, {
71
+ items: P,
72
+ value: j,
73
+ size: "sm",
74
+ ariaLabel: "Paint kind",
75
+ onChange: (e) => e && I(e)
76
+ }), L()]
77
+ });
78
+ function L() {
79
+ if (u || l === void 0) return /* @__PURE__ */ m(n, {
80
+ mixed: !0,
81
+ "aria-label": k,
82
+ onChange: (e) => D(S(e))
83
+ });
84
+ if (l === null) return null;
85
+ let e = s(w(l) ?? "solid");
86
+ if (e?.Editor) {
87
+ let t = e.Editor;
88
+ return /* @__PURE__ */ m(t, {
89
+ value: l,
90
+ onInput: E,
91
+ onChange: D
92
+ });
93
+ }
94
+ if (e?.stopsOf) return /* @__PURE__ */ m(i, {
95
+ value: l,
96
+ kindSwitch: !1,
97
+ onInput: E,
98
+ onChange: D
99
+ });
100
+ if (C(l)) return /* @__PURE__ */ m(a, {
101
+ value: l,
102
+ color: F(),
103
+ onChange: D
104
+ });
105
+ let t = w(l);
106
+ return t === "solid" ? /* @__PURE__ */ m(n, {
107
+ value: x(l),
108
+ alpha: !0,
109
+ "aria-label": k,
110
+ onInput: (e) => E?.(S(e)),
111
+ onChange: (e) => D(S(e))
112
+ }) : /* @__PURE__ */ h("div", {
113
+ className: v.noEditor,
114
+ children: [e?.label ?? t, ": no editor"]
115
+ });
116
+ }
117
+ }
118
+ //#endregion
119
+ export { T as t };
120
+
121
+ //# sourceMappingURL=PaintInput-v8Y7MDbH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaintInput-v8Y7MDbH.js","names":["s","ICON_PATHS","ColorField","ToggleBar","GradientEditor","PatternPicker","PaintInput_module_default","FALLBACK_COLOR","NONE","solidHex8","hex8","toHex8","paint","withAlpha01","getAlpha01","paintAlpha","solidFromField","solid","color","isPattern","kindOf","PaintInput","props","ariaLabel","remembered","useRef","active","mixed","value","entries","listPaintKinds","kinds","entry","segment","icon","id","Icon","label","items","allowNone","currentColor","useCallback","getPaintKind","switchKind","kind","seen","converted","switchGradientKind","onChange","unset","className","renderBody","Editor","onInput"],"sources":["../../src/components/PaintInput/PaintInput.module.css","../../src/components/PaintInput/PaintInput.tsx"],"sourcesContent":["/* Kind switch stacked over whichever paint body it selects. */\n.root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-3);\n min-inline-size: 0;\n}\n\n/* A value is in effect but nobody chose it. Never louder than mixed. */\n.unset {\n opacity: 0.55;\n}\n\n/* A kind with no editor: named, not editable. */\n.noEditor {\n font-size: var(--wzl-font-size-sm);\n color: var(--wzl-fg-muted);\n}\n","import { useCallback, useRef, type ReactElement } from 'react';\nimport {\n getAlpha01,\n getPaintKind,\n listPaintKinds,\n paintAlpha,\n solid,\n switchGradientKind,\n toHex8,\n withAlpha01,\n type FillStyle,\n type PaintKind,\n} from '@weasel-js/core';\nimport { Icon } from '../../icons/Icon';\nimport { ICON_PATHS, type IconName } from '../../icons/paths';\nimport { ColorField } from '../ColorField';\nimport { GradientEditor } from '../GradientEditor';\nimport { PatternPicker, type PatternFill } from '../PatternPicker';\nimport { ToggleBar, type ToggleBarItem } from '../ToggleBar';\nimport s from './PaintInput.module.css';\n\n/** What a kind with no color of its own seeds from. */\nconst FALLBACK_COLOR = '#000000ff';\n\n/** The bar's answer for \"no paint at all\". Not a registered kind — absence\n * has no seed, no color and nothing to render — so it is this control's own\n * segment rather than a registry entry. */\nconst NONE = 'none';\n\n/** A solid paint as the one `#rrggbbaa` a color field edits. Its alpha lives\n * in `opacity`; a hex alpha left in `color` multiplies with it when painted,\n * so both fold in. */\nfunction solidHex8(paint: FillStyle): string {\n const hex8 = toHex8((paint as { color: string }).color);\n return withAlpha01(hex8.slice(0, 7), getAlpha01(hex8) * paintAlpha(paint));\n}\n\n/** `solid(color)` at the slider's own 1% resolution: the alpha arrives\n * through a hex channel, which would turn 70% into 0.70196. */\nfunction solidFromField(color: string): FillStyle {\n const paint = solid(color);\n return paint.opacity === undefined\n ? paint\n : { ...paint, opacity: Math.round(paint.opacity * 100) / 100 };\n}\n\nfunction isPattern(paint: FillStyle | undefined): paint is PatternFill {\n return paint?.fill === 'pattern';\n}\n\n/** A paint's own discriminant. The solid member leaves `fill` off, and an\n * explicit `null` is the absence of paint rather than an unknown one. */\nfunction kindOf(paint: FillStyle | null | undefined): PaintKind | null {\n if (paint === null) return NONE;\n if (paint === undefined) return null;\n return paint.fill ?? 'solid';\n}\n\n/** Props for {@link PaintInput}. `onInput` fires throughout a gesture and\n * `onChange` once at its end. */\nexport interface PaintInputProps {\n /** The paint being edited. `null` is an explicit \"no paint\"; `undefined`\n * is no value to show. */\n value: FillStyle | null | undefined;\n /** Indeterminate presentation: no kind lit, and the body withheld because\n * there is no single paint to show. */\n mixed?: boolean;\n /** Dim the control — a value is in effect but was never chosen. */\n unset?: boolean;\n /** Restrict the kind bar. Default: every registered kind. */\n kinds?: readonly PaintKind[];\n /** Offer \"None\". Default `true` — the bar answers \"what kind of paint is\n * this?\" and no-paint is one of the answers. Turn it off where the slot\n * cannot express absence. */\n allowNone?: boolean;\n onInput?: (next: FillStyle | null) => void;\n onChange: (next: FillStyle | null) => void;\n /** Names the paint this control edits — `Fill`, `Color`. Carried by the\n * solid body's swatch, which is the part with a value to announce. */\n 'aria-label'?: string;\n className?: string;\n}\n\n/**\n * Editor for a whole `FillStyle` — a kind bar over whichever body that kind\n * wants.\n *\n * The bar is driven by the paint-kind registry rather than a fixed list, so a\n * consumer's registered kind appears in it and renders that entry's `Editor`.\n * The five built-in kinds keep their branch here: their editors live in this\n * package and `@weasel-js/core`, which owns the registry, cannot import it.\n *\n * Geometry is deliberately absent — on a canvas it belongs on the artwork,\n * via `<SceneGradientHandles>`.\n */\nexport function PaintInput(props: PaintInputProps): ReactElement {\n const {\n value, mixed = false, unset = false, kinds, allowNone = true,\n onInput, onChange, className,\n } = props;\n const ariaLabel = props['aria-label'];\n\n // Per-kind memory, so linear → solid → linear comes back with its stops.\n // A ref, not state: it must not survive the control being pointed at a\n // different selection, and nothing renders off it directly.\n const remembered = useRef(new Map<PaintKind, FillStyle>());\n\n const active = mixed ? null : kindOf(value);\n if (value != null && active !== null) remembered.current.set(active, value);\n\n const entries = listPaintKinds().filter(\n (entry) => kinds === undefined || kinds.includes(entry.id),\n );\n const segment = (id: string, label: string, icon: string | undefined): ToggleBarItem<PaintKind> =>\n icon && icon in ICON_PATHS\n // Icon-only: six labelled segments do not fit a property row, and the\n // full label stays the accessible name.\n // 14 to match the panel's other glyph segments. A `sm` bar is 17px tall\n // over 1px of padding, so 15 fills the segment box edge to edge.\n ? { value: id, label: <Icon name={icon as IconName} size={14} />, ariaLabel: label }\n : { value: id, label };\n\n const items: readonly ToggleBarItem<PaintKind>[] = [\n ...(allowNone ? [segment(NONE, 'None', 'paintNone')] : []),\n ...entries.map((entry) => segment(entry.id, entry.label, entry.icon)),\n ];\n\n /** The color a switch seeds from: whatever the current paint shows. */\n const currentColor = useCallback((): string => {\n if (value == null) return FALLBACK_COLOR;\n return getPaintKind(kindOf(value) ?? 'solid')?.colorOf(value) ?? FALLBACK_COLOR;\n }, [value]);\n\n const switchKind = (kind: PaintKind): void => {\n if (kind === active) return;\n if (kind === NONE) {\n onChange(null);\n return;\n }\n const seen = remembered.current.get(kind);\n if (seen !== undefined) {\n onChange(seen);\n return;\n }\n const converted = value != null ? switchGradientKind(value, kind) : undefined;\n if (converted !== undefined) {\n onChange(converted);\n return;\n }\n const entry = getPaintKind(kind);\n if (entry) onChange(entry.seed(currentColor()));\n };\n\n return (\n <div\n className={[s.root, unset && s.unset, className].filter(Boolean).join(' ')}\n title={unset ? 'Not set' : undefined}\n >\n <ToggleBar<PaintKind>\n items={items}\n value={active}\n size=\"sm\"\n ariaLabel=\"Paint kind\"\n onChange={(kind) => kind && switchKind(kind)}\n />\n {renderBody()}\n </div>\n );\n\n function renderBody(): ReactElement | null {\n if (mixed || value === undefined) {\n return (\n <ColorField\n mixed\n aria-label={ariaLabel}\n onChange={(color) => onChange(solidFromField(color))}\n />\n );\n }\n // Absence has nothing to edit. The lit segment is the whole statement.\n if (value === null) return null;\n // A registered `Editor` wins even for a built-in id: re-registering one is\n // how a consumer replaces a kit control, and the built-in branches below\n // are the fallback for the ids that ship without an entry editor.\n const entry = getPaintKind(kindOf(value) ?? 'solid');\n if (entry?.Editor) {\n const Editor = entry.Editor;\n return <Editor value={value} onInput={onInput} onChange={onChange} />;\n }\n if (entry?.stopsOf) {\n return (\n <GradientEditor\n value={value}\n kindSwitch={false}\n onInput={onInput}\n onChange={onChange}\n />\n );\n }\n if (isPattern(value)) {\n return <PatternPicker value={value} color={currentColor()} onChange={onChange} />;\n }\n const kind = kindOf(value);\n if (kind !== 'solid') {\n // Editing a paint this control cannot represent would overwrite it, so\n // a kind with no editor is shown and left alone.\n return <div className={s.noEditor}>{entry?.label ?? kind}: no editor</div>;\n }\n return (\n <ColorField\n value={solidHex8(value)}\n alpha\n aria-label={ariaLabel}\n onInput={(color) => onInput?.(solidFromField(color))}\n onChange={(color) => onChange(solidFromField(color))}\n />\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;GCsBMO,IAAiB,aAKjBC,IAAO;AAKb,SAASC,EAAU,GAA0B;CAC3C,IAAMC,IAAOC,EAAQC,EAA4B,KAAK;CACtD,OAAOC,EAAYH,EAAK,MAAM,GAAG,CAAC,GAAGI,EAAWJ,CAAI,IAAIK,EAAWH,CAAK,CAAC;AAC3E;AAIA,SAASI,EAAe,GAA0B;CAChD,IAAMJ,IAAQK,EAAMC,CAAK;CACzB,OAAON,EAAM,YAAY,KAAA,IACrBA,IACA;EAAE,GAAGA;EAAO,SAAS,KAAK,MAAMA,EAAM,UAAU,GAAG,IAAI;CAAI;AACjE;AAEA,SAASO,EAAU,GAAoD;CACrE,OAAOP,GAAO,SAAS;AACzB;AAIA,SAASQ,EAAO,GAAuD;CAGrE,OAFIR,MAAU,OAAaJ,IACvBI,MAAU,KAAA,IAAkB,OACzBA,EAAM,QAAQ;AACvB;AAuCA,SAAgBS,EAAW,GAAsC;CAC/D,IAAM,EACJ,UAAO,WAAQ,IAAO,WAAQ,IAAO,UAAO,eAAY,IACxD,YAAS,aAAU,iBACjBC,GACEC,IAAYD,EAAM,eAKlBE,IAAaC,kBAAO,IAAI,IAA0B,CAAC,GAEnDC,IAASC,IAAQ,OAAOP,EAAOQ,CAAK;CAC1C,AAAIA,KAAS,QAAQF,MAAW,QAAMF,EAAW,QAAQ,IAAIE,GAAQE,CAAK;CAE1E,IAAMC,IAAUC,EAAe,CAAC,CAAC,QAC9B,MAAUC,MAAU,KAAA,KAAaA,EAAM,SAASC,EAAM,EAAE,CAC3D,GACMC,KAAW,GAAY,GAAe,MAC1CC,KAAQA,KAAQjC,IAKZ;EAAE,OAAOkC;EAAI,OAAO,kBAACC,GAAD;GAAM,MAAMF;GAAkB,MAAM;EAAK,CAAA;EAAG,WAAWG;CAAM,IACjF;EAAE,OAAOF;EAAI;CAAM,GAEnBG,IAA6C,CACjD,GAAIC,IAAY,CAACN,EAAQzB,GAAM,QAAQ,WAAW,CAAC,IAAI,CAAC,GACxD,GAAGqB,EAAQ,KAAK,MAAUI,EAAQD,EAAM,IAAIA,EAAM,OAAOA,EAAM,IAAI,CAAC,CACtE,GAGMQ,IAAeC,QACfb,KAAS,OAAarB,IACnBmC,EAAatB,EAAOQ,CAAK,KAAK,OAAO,CAAC,EAAE,QAAQA,CAAK,KAAKrB,GAChE,CAACqB,CAAK,CAAC,GAEJe,KAAc,MAA0B;EAC5C,IAAIC,MAASlB,GAAQ;EACrB,IAAIkB,MAASpC,GAAM;GACjB,EAAS,IAAI;GACb;EACF;EACA,IAAMqC,IAAOrB,EAAW,QAAQ,IAAIoB,CAAI;EACxC,IAAIC,MAAS,KAAA,GAAW;GACtB,EAASA,CAAI;GACb;EACF;EACA,IAAMC,IAAYlB,KAAS,OAAyC,KAAA,IAAlCmB,EAAmBnB,GAAOgB,CAAI;EAChE,IAAIE,MAAc,KAAA,GAAW;GAC3B,EAASA,CAAS;GAClB;EACF;EACA,IAAMd,IAAQU,EAAaE,CAAI;EAC/B,AAAIZ,KAAOgB,EAAShB,EAAM,KAAKQ,EAAa,CAAC,CAAC;CAChD;CAEA,OACE,kBAAC,OAAD;EACE,WAAW;GAACxC,EAAE;GAAMiD,KAASjD,EAAE;GAAOkD;EAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACzE,OAAOD,IAAQ,YAAY,KAAA;EAF7B,UAAA,CAIE,kBAAC9C,GAAD;GACS;GACP,OAAOuB;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAASkB,KAAQD,EAAWC,CAAI;EAC5C,CAAA,GACAO,EAAW,CACT;;CAGP,SAASA,IAAkC;EACzC,IAAIxB,KAASC,MAAU,KAAA,GACrB,OACE,kBAAC1B,GAAD;GACE,OAAA;GACA,cAAYqB;GACZ,WAAW,MAAUyB,EAAShC,EAAeE,CAAK,CAAC;EACpD,CAAA;EAIL,IAAIU,MAAU,MAAM,OAAO;EAI3B,IAAMI,IAAQU,EAAatB,EAAOQ,CAAK,KAAK,OAAO;EACnD,IAAII,GAAO,QAAQ;GACjB,IAAMoB,IAASpB,EAAM;GACrB,OAAO,kBAACoB,GAAD;IAAe;IAAgB;IAAmB;GAAW,CAAA;EACtE;EACA,IAAIpB,GAAO,SACT,OACE,kBAAC5B,GAAD;GACS;GACP,YAAY;GACH;GACC;EACX,CAAA;EAGL,IAAIe,EAAUS,CAAK,GACjB,OAAO,kBAACvB,GAAD;GAAsB;GAAO,OAAOmC,EAAa;GAAa;EAAW,CAAA;EAElF,IAAMI,IAAOxB,EAAOQ,CAAK;EAMzB,OALIgB,MAAS,UAMX,kBAAC1C,GAAD;GACE,OAAOO,EAAUmB,CAAK;GACtB,OAAA;GACA,cAAYL;GACZ,UAAU,MAAU8B,IAAUrC,EAAeE,CAAK,CAAC;GACnD,WAAW,MAAU8B,EAAShC,EAAeE,CAAK,CAAC;EACpD,CAAA,IATM,kBAAC,OAAD;GAAK,WAAWlB,EAAE;GAAlB,UAAA,CAA6BgC,GAAO,SAASY,GAAK,aAAgB;;CAW7E;AACF"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./ToggleBar-DTjGeS0Q.js";
1
+ import { t as e } from "./ToggleBar-BTYkBXU9.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  import { tilePreviewCssUrl as r } from "@weasel-js/svg";
4
4
  var i = {
@@ -90,4 +90,4 @@ function d(d) {
90
90
  //#endregion
91
91
  export { u as n, d as t };
92
92
 
93
- //# sourceMappingURL=PatternPicker-B-cUt-JT.js.map
93
+ //# sourceMappingURL=PatternPicker-R_EQtw2Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PatternPicker-B-cUt-JT.js","names":["s","ToggleBar","PatternPicker_module_default","TILES","TILE_SIZES","DEFAULT_TILE_SIZE","PREVIEW_SIZE","specOf","fill","seedPattern","spec","from","tile","PatternPicker","props","value","size","pick","color","resize","onChange","nextSize","className","preview","selected","tilePreviewCssUrl","v"],"sources":["../../src/components/PatternPicker/PatternPicker.module.css","../../src/components/PatternPicker/PatternPicker.tsx"],"sourcesContent":["/* Tile grid over the size switch. */\n.root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-3);\n min-inline-size: 0;\n}\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(var(--wzl-swatch-size, 28px), 1fr));\n gap: 0;\n}\n\n/* The swatch's whole face is its own tile, so it must not carry a flat\n background — and the tile repeats at its own scale, not the swatch's. */\n.swatch {\n width: 100%;\n aspect-ratio: 1 / 1;\n min-width: 0;\n padding: 0;\n border: 0.5px solid var(--wzl-border);\n border-radius: 0;\n cursor: pointer;\n background-color: var(--wzl-surface-sunken);\n background-image: var(--tile-preview);\n background-repeat: repeat;\n background-size: 16px 16px;\n background-clip: padding-box;\n}\n\n.swatch:hover {\n border-color: var(--wzl-fg-muted);\n}\n\n.swatchActive {\n border-color: var(--wzl-accent);\n box-shadow: 0 0 0 1px var(--wzl-accent);\n}\n","import type { ReactElement } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { FillStyle, TilePatternSpec } from '@weasel-js/core';\nimport { tilePreviewCssUrl } from '@weasel-js/svg';\nimport { ToggleBar } from '../ToggleBar';\nimport s from './PatternPicker.module.css';\n\n/** The `pattern` member of the paint union. */\nexport type PatternFill = Extract<FillStyle, { fill: 'pattern' }>;\n\nconst TILES: readonly TilePatternSpec['tile'][] = ['hatch', 'crosshatch', 'dots', 'chunks'];\n\n/** Tile sizes the picker offers, coarse enough that each reads as a\n * distinct texture rather than a nudge. */\nconst TILE_SIZES: readonly { value: number; label: string }[] = [\n { value: 4, label: 'S' },\n { value: 8, label: 'M' },\n { value: 16, label: 'L' },\n { value: 32, label: 'XL' },\n];\n\nconst DEFAULT_TILE_SIZE = 8;\n\n/** Every swatch previews at one size so the grid compares tiles, not scales. */\nconst PREVIEW_SIZE = 16;\n\n/** The spec a pattern paint carries, if it carries one. A consumer-built\n * `TextureHandle` has no spec, so the picker shows no tile selected and\n * replaces it wholesale on the next click. */\nfunction specOf(fill: PatternFill): TilePatternSpec | null {\n return 'tile' in fill.pattern ? fill.pattern : null;\n}\n\n/**\n * A pattern seeded from a color. `units: 'bounds'` anchors the tile to the\n * node's box, so the texture travels with the shape.\n */\nexport function seedPattern(\n tile: TilePatternSpec['tile'],\n from: string,\n size: number = DEFAULT_TILE_SIZE,\n): PatternFill {\n const spec: TilePatternSpec = { tile, color: from, size };\n // `chunks` is a scatter over a ground rather than a line texture; without a\n // background it reads as loose specks on whatever sits beneath.\n if (tile === 'chunks') spec.bg = '#00000000';\n return { fill: 'pattern', pattern: spec, units: 'bounds' };\n}\n\n/** Props for {@link PatternPicker}. */\nexport interface PatternPickerProps {\n /** The pattern paint being edited. */\n value: PatternFill;\n /** The color new tiles are seeded with — the paint's own, normally. */\n color: string;\n /** Committed value: one call per click. A tile pick and a size change are\n * each a complete gesture, so there is no `onInput`. */\n onChange: (next: PatternFill) => void;\n className?: string;\n}\n\n/**\n * Grid of tile swatches over a size switch, each swatch previewing the real\n * tile at the current color.\n *\n * The preview shares its shape mapper with what the renderer paints, so a\n * swatch cannot drift from the texture it selects.\n */\nexport function PatternPicker(props: PatternPickerProps): ReactElement {\n const { value, color, onChange, className } = props;\n const spec = specOf(value);\n const size = spec?.size ?? DEFAULT_TILE_SIZE;\n\n const pick = (tile: TilePatternSpec['tile']): void => {\n onChange(seedPattern(tile, color, size));\n };\n\n const resize = (nextSize: number): void => {\n if (!spec) return;\n onChange({ ...value, pattern: { ...spec, size: nextSize } });\n };\n\n return (\n <div className={[s.root, className].filter(Boolean).join(' ')}>\n <div className={s.grid}>\n {TILES.map((tile) => {\n const preview: TilePatternSpec = { tile, color, size: PREVIEW_SIZE };\n if (tile === 'chunks') preview.bg = '#00000000';\n const selected = spec?.tile === tile;\n return (\n <button\n key={tile}\n type=\"button\"\n className={[s.swatch, selected && s.swatchActive].filter(Boolean).join(' ')}\n style={{ ['--tile-preview' as string]: tilePreviewCssUrl(preview) } as CSSProperties}\n title={tile}\n aria-label={tile}\n aria-pressed={selected}\n onClick={() => pick(tile)}\n />\n );\n })}\n </div>\n <ToggleBar<number>\n items={TILE_SIZES}\n value={size}\n size=\"sm\"\n ariaLabel=\"Tile size\"\n onChange={(v) => v != null && resize(v)}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;GCUMG,IAA4C;CAAC;CAAS;CAAc;CAAQ;AAAQ,GAIpFC,IAA0D;CAC9D;EAAE,OAAO;EAAG,OAAO;CAAI;CACvB;EAAE,OAAO;EAAG,OAAO;CAAI;CACvB;EAAE,OAAO;EAAI,OAAO;CAAI;CACxB;EAAE,OAAO;EAAI,OAAO;CAAK;AAC3B,GAEMC,IAAoB,GAGpBC,IAAe;AAKrB,SAASC,EAAO,GAA2C;CACzD,OAAO,UAAUC,EAAK,UAAUA,EAAK,UAAU;AACjD;AAMA,SAAgBC,EACd,GACA,GACA,IAAeJ,GACF;CACb,IAAMK,IAAwB;EAAE;EAAM,OAAOC;EAAM;CAAK;CAIxD,OADIC,MAAS,aAAU,EAAK,KAAK,cAC1B;EAAE,MAAM;EAAW,SAASF;EAAM,OAAO;CAAS;AAC3D;AAqBA,SAAgBG,EAAc,GAAyC;CACrE,IAAM,EAAE,UAAO,UAAO,aAAU,iBAAcC,GACxCJ,IAAOH,EAAOQ,CAAK,GACnBC,IAAON,GAAM,QAAQL,GAErBY,KAAQ,MAAwC;EACpD,EAASR,EAAYG,GAAMM,GAAOF,CAAI,CAAC;CACzC,GAEMG,KAAU,MAA2B;EACzC,AAAKT,KACLU,EAAS;GAAE,GAAGL;GAAO,SAAS;IAAE,GAAGL;IAAM,MAAMW;GAAS;EAAE,CAAC;CAC7D;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,CAACrB,EAAE,MAAMsB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAA5D,UAAA,CACE,kBAAC,OAAD;GAAK,WAAWtB,EAAE;GACf,UAAAG,EAAM,KAAK,MAAS;IACnB,IAAMoB,IAA2B;KAAE;KAAM;KAAO,MAAMjB;IAAa;IACnE,AAAIM,MAAS,aAAU,EAAQ,KAAK;IACpC,IAAMY,IAAWd,GAAM,SAASE;IAChC,OACE,kBAAC,UAAD;KAEE,MAAK;KACL,WAAW,CAACZ,EAAE,QAAQwB,KAAYxB,EAAE,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;KAC1E,OAAO,EAAG,kBAA6ByB,EAAkBF,CAAO,EAAE;KAClE,OAAOX;KACP,cAAYA;KACZ,gBAAcY;KACd,eAAeP,EAAKL,CAAI;IACzB,GARMA,CAQN;GAEL,CAAC;EACE,CAAA,GACL,kBAACX,GAAD;GACE,OAAOG;GACP,OAAOY;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAAMU,KAAK,QAAQP,EAAOO,CAAC;EACvC,CAAA,CACE;;AAET"}
1
+ {"version":3,"file":"PatternPicker-R_EQtw2Q.js","names":["s","ToggleBar","PatternPicker_module_default","TILES","TILE_SIZES","DEFAULT_TILE_SIZE","PREVIEW_SIZE","specOf","fill","seedPattern","spec","from","tile","PatternPicker","props","value","size","pick","color","resize","onChange","nextSize","className","preview","selected","tilePreviewCssUrl","v"],"sources":["../../src/components/PatternPicker/PatternPicker.module.css","../../src/components/PatternPicker/PatternPicker.tsx"],"sourcesContent":["/* Tile grid over the size switch. */\n.root {\n display: flex;\n flex-direction: column;\n gap: var(--wzl-space-3);\n min-inline-size: 0;\n}\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(var(--wzl-swatch-size, 28px), 1fr));\n gap: 0;\n}\n\n/* The swatch's whole face is its own tile, so it must not carry a flat\n background — and the tile repeats at its own scale, not the swatch's. */\n.swatch {\n width: 100%;\n aspect-ratio: 1 / 1;\n min-width: 0;\n padding: 0;\n border: 0.5px solid var(--wzl-border);\n border-radius: 0;\n cursor: pointer;\n background-color: var(--wzl-surface-sunken);\n background-image: var(--tile-preview);\n background-repeat: repeat;\n background-size: 16px 16px;\n background-clip: padding-box;\n}\n\n.swatch:hover {\n border-color: var(--wzl-fg-muted);\n}\n\n.swatchActive {\n border-color: var(--wzl-accent);\n box-shadow: 0 0 0 1px var(--wzl-accent);\n}\n","import type { ReactElement } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { FillStyle, TilePatternSpec } from '@weasel-js/core';\nimport { tilePreviewCssUrl } from '@weasel-js/svg';\nimport { ToggleBar } from '../ToggleBar';\nimport s from './PatternPicker.module.css';\n\n/** The `pattern` member of the paint union. */\nexport type PatternFill = Extract<FillStyle, { fill: 'pattern' }>;\n\nconst TILES: readonly TilePatternSpec['tile'][] = ['hatch', 'crosshatch', 'dots', 'chunks'];\n\n/** Tile sizes the picker offers, coarse enough that each reads as a\n * distinct texture rather than a nudge. */\nconst TILE_SIZES: readonly { value: number; label: string }[] = [\n { value: 4, label: 'S' },\n { value: 8, label: 'M' },\n { value: 16, label: 'L' },\n { value: 32, label: 'XL' },\n];\n\nconst DEFAULT_TILE_SIZE = 8;\n\n/** Every swatch previews at one size so the grid compares tiles, not scales. */\nconst PREVIEW_SIZE = 16;\n\n/** The spec a pattern paint carries, if it carries one. A consumer-built\n * `TextureHandle` has no spec, so the picker shows no tile selected and\n * replaces it wholesale on the next click. */\nfunction specOf(fill: PatternFill): TilePatternSpec | null {\n return 'tile' in fill.pattern ? fill.pattern : null;\n}\n\n/**\n * A pattern seeded from a color. `units: 'bounds'` anchors the tile to the\n * node's box, so the texture travels with the shape.\n */\nexport function seedPattern(\n tile: TilePatternSpec['tile'],\n from: string,\n size: number = DEFAULT_TILE_SIZE,\n): PatternFill {\n const spec: TilePatternSpec = { tile, color: from, size };\n // `chunks` is a scatter over a ground rather than a line texture; without a\n // background it reads as loose specks on whatever sits beneath.\n if (tile === 'chunks') spec.bg = '#00000000';\n return { fill: 'pattern', pattern: spec, units: 'bounds' };\n}\n\n/** Props for {@link PatternPicker}. */\nexport interface PatternPickerProps {\n /** The pattern paint being edited. */\n value: PatternFill;\n /** The color new tiles are seeded with — the paint's own, normally. */\n color: string;\n /** Committed value: one call per click. A tile pick and a size change are\n * each a complete gesture, so there is no `onInput`. */\n onChange: (next: PatternFill) => void;\n className?: string;\n}\n\n/**\n * Grid of tile swatches over a size switch, each swatch previewing the real\n * tile at the current color.\n *\n * The preview shares its shape mapper with what the renderer paints, so a\n * swatch cannot drift from the texture it selects.\n */\nexport function PatternPicker(props: PatternPickerProps): ReactElement {\n const { value, color, onChange, className } = props;\n const spec = specOf(value);\n const size = spec?.size ?? DEFAULT_TILE_SIZE;\n\n const pick = (tile: TilePatternSpec['tile']): void => {\n onChange(seedPattern(tile, color, size));\n };\n\n const resize = (nextSize: number): void => {\n if (!spec) return;\n onChange({ ...value, pattern: { ...spec, size: nextSize } });\n };\n\n return (\n <div className={[s.root, className].filter(Boolean).join(' ')}>\n <div className={s.grid}>\n {TILES.map((tile) => {\n const preview: TilePatternSpec = { tile, color, size: PREVIEW_SIZE };\n if (tile === 'chunks') preview.bg = '#00000000';\n const selected = spec?.tile === tile;\n return (\n <button\n key={tile}\n type=\"button\"\n className={[s.swatch, selected && s.swatchActive].filter(Boolean).join(' ')}\n style={{ ['--tile-preview' as string]: tilePreviewCssUrl(preview) } as CSSProperties}\n title={tile}\n aria-label={tile}\n aria-pressed={selected}\n onClick={() => pick(tile)}\n />\n );\n })}\n </div>\n <ToggleBar<number>\n items={TILE_SIZES}\n value={size}\n size=\"sm\"\n ariaLabel=\"Tile size\"\n onChange={(v) => v != null && resize(v)}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;GCUMG,IAA4C;CAAC;CAAS;CAAc;CAAQ;AAAQ,GAIpFC,IAA0D;CAC9D;EAAE,OAAO;EAAG,OAAO;CAAI;CACvB;EAAE,OAAO;EAAG,OAAO;CAAI;CACvB;EAAE,OAAO;EAAI,OAAO;CAAI;CACxB;EAAE,OAAO;EAAI,OAAO;CAAK;AAC3B,GAEMC,IAAoB,GAGpBC,IAAe;AAKrB,SAASC,EAAO,GAA2C;CACzD,OAAO,UAAUC,EAAK,UAAUA,EAAK,UAAU;AACjD;AAMA,SAAgBC,EACd,GACA,GACA,IAAeJ,GACF;CACb,IAAMK,IAAwB;EAAE;EAAM,OAAOC;EAAM;CAAK;CAIxD,OADIC,MAAS,aAAU,EAAK,KAAK,cAC1B;EAAE,MAAM;EAAW,SAASF;EAAM,OAAO;CAAS;AAC3D;AAqBA,SAAgBG,EAAc,GAAyC;CACrE,IAAM,EAAE,UAAO,UAAO,aAAU,iBAAcC,GACxCJ,IAAOH,EAAOQ,CAAK,GACnBC,IAAON,GAAM,QAAQL,GAErBY,KAAQ,MAAwC;EACpD,EAASR,EAAYG,GAAMM,GAAOF,CAAI,CAAC;CACzC,GAEMG,KAAU,MAA2B;EACzC,AAAKT,KACLU,EAAS;GAAE,GAAGL;GAAO,SAAS;IAAE,GAAGL;IAAM,MAAMW;GAAS;EAAE,CAAC;CAC7D;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,CAACrB,EAAE,MAAMsB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAA5D,UAAA,CACE,kBAAC,OAAD;GAAK,WAAWtB,EAAE;GACf,UAAAG,EAAM,KAAK,MAAS;IACnB,IAAMoB,IAA2B;KAAE;KAAM;KAAO,MAAMjB;IAAa;IACnE,AAAIM,MAAS,aAAU,EAAQ,KAAK;IACpC,IAAMY,IAAWd,GAAM,SAASE;IAChC,OACE,kBAAC,UAAD;KAEE,MAAK;KACL,WAAW,CAACZ,EAAE,QAAQwB,KAAYxB,EAAE,YAAY,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;KAC1E,OAAO,EAAG,kBAA6ByB,EAAkBF,CAAO,EAAE;KAClE,OAAOX;KACP,cAAYA;KACZ,gBAAcY;KACd,eAAeP,EAAKL,CAAI;IACzB,GARMA,CAQN;GAEL,CAAC;EACE,CAAA,GACL,kBAACX,GAAD;GACE,OAAOG;GACP,OAAOY;GACP,MAAK;GACL,WAAU;GACV,WAAW,MAAMU,KAAK,QAAQP,EAAOO,CAAC;EACvC,CAAA,CACE;;AAET"}
@@ -1,4 +1,4 @@
1
- import { n as e } from "./CurveEditor-BDJXjEvK.js";
1
+ import { n as e } from "./CurveEditor-DUVjd25R.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region src/components/PointPlotter/PointPlotter.tsx
4
4
  function n(n) {
@@ -14,4 +14,4 @@ function n(n) {
14
14
  //#endregion
15
15
  export { n as t };
16
16
 
17
- //# sourceMappingURL=PointPlotter-Bxo6haKe.js.map
17
+ //# sourceMappingURL=PointPlotter-ldI4RrU1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PointPlotter-Bxo6haKe.js","names":["CurveEditor","PointPlotter","curveProps","props"],"sources":["../../src/components/PointPlotter/PointPlotter.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport {\n CurveEditor,\n type AnchorRenderProps,\n type ControlPoint,\n type CurveEditorProps,\n} from '../CurveEditor';\nimport type { GridSettings, AxesSettings, TickSettings } from '../Plot2D';\n\n/** Props for {@link PointPlotter}. */\nexport interface PointPlotterProps {\n /** Plotted points; caller-owned. */\n value: readonly ControlPoint[];\n /** Fires every frame during drag with the live in-flight value. */\n onInput: (next: ControlPoint[]) => void;\n /** Fires once per discrete user action (drag-end, add, delete) with\n * the new value and the value at gesture start. Wire history here. */\n onChange?: (next: ControlPoint[], prev: readonly ControlPoint[]) => void;\n /** Model-space x range. Default [0, 1]. */\n xRange?: readonly [number, number];\n /** Model-space y range. Default [0, 1]. */\n yRange?: readonly [number, number];\n width: number;\n height: number;\n grid?: GridSettings | false | null;\n axes?: AxesSettings | false | null;\n xTicks?: TickSettings | false | null;\n yTicks?: TickSettings | false | null;\n /** Minimum allowed point count. User-initiated deletion is refused\n * while `value.length <= minPoints`. */\n minPoints?: number;\n /** Maximum allowed point count. User-initiated insertion is refused\n * while `value.length >= maxPoints`. */\n maxPoints?: number;\n /** How new points are added. Default `'click-empty'`. Set to `'never'`\n * to disable insertion entirely. */\n addPointMode?: 'click-empty' | 'never';\n /** Built-in undo/redo via keyboard when the component has focus.\n * Default `true`. See `CurveEditor.history` for details. */\n history?: boolean;\n /** Custom per-anchor renderer. See `CurveEditor.renderAnchor`. */\n renderAnchor?: (info: AnchorRenderProps) => ReactNode;\n /** Extra SVG content beneath the anchors. See `CurveEditor.decorations`. */\n decorations?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * 2D point plotter — a CurveEditor with the curve hidden. Anchors,\n * drag, shift+click delete, right-click delete, and click-empty insert\n * are inherited from CurveEditor verbatim, so the two components share\n * gesture semantics and stay in sync as CurveEditor evolves.\n *\n * Differences from CurveEditor: no curve `<path>` drawn, no fill, no\n * endpoint pinning, no interpolation, default `addPointMode` is\n * `'click-empty'` (CurveEditor defaults to `'click-curve'`, which\n * doesn't make sense without a curve to hit-test against).\n */\nexport function PointPlotter(props: PointPlotterProps) {\n const curveProps: CurveEditorProps = {\n ...props,\n addPointMode: props.addPointMode ?? 'click-empty',\n curve: false,\n fill: false,\n endpoints: 'free',\n };\n return <CurveEditor {...curveProps} />;\n}\n"],"mappings":";;;AA2DA,SAAgBC,EAAa,GAA0B;CACrD,IAAMC,IAA+B;EACnC,GAAGC;EACH,cAAcA,EAAM,gBAAgB;EACpC,OAAO;EACP,MAAM;EACN,WAAW;CACb;CACA,OAAO,kBAACH,GAAD,EAAa,GAAIE,EAAa,CAAA;AACvC"}
1
+ {"version":3,"file":"PointPlotter-ldI4RrU1.js","names":["CurveEditor","PointPlotter","curveProps","props"],"sources":["../../src/components/PointPlotter/PointPlotter.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport {\n CurveEditor,\n type AnchorRenderProps,\n type ControlPoint,\n type CurveEditorProps,\n} from '../CurveEditor';\nimport type { GridSettings, AxesSettings, TickSettings } from '../Plot2D';\n\n/** Props for {@link PointPlotter}. */\nexport interface PointPlotterProps {\n /** Plotted points; caller-owned. */\n value: readonly ControlPoint[];\n /** Fires every frame during drag with the live in-flight value. */\n onInput: (next: ControlPoint[]) => void;\n /** Fires once per discrete user action (drag-end, add, delete) with\n * the new value and the value at gesture start. Wire history here. */\n onChange?: (next: ControlPoint[], prev: readonly ControlPoint[]) => void;\n /** Model-space x range. Default [0, 1]. */\n xRange?: readonly [number, number];\n /** Model-space y range. Default [0, 1]. */\n yRange?: readonly [number, number];\n width: number;\n height: number;\n grid?: GridSettings | false | null;\n axes?: AxesSettings | false | null;\n xTicks?: TickSettings | false | null;\n yTicks?: TickSettings | false | null;\n /** Minimum allowed point count. User-initiated deletion is refused\n * while `value.length <= minPoints`. */\n minPoints?: number;\n /** Maximum allowed point count. User-initiated insertion is refused\n * while `value.length >= maxPoints`. */\n maxPoints?: number;\n /** How new points are added. Default `'click-empty'`. Set to `'never'`\n * to disable insertion entirely. */\n addPointMode?: 'click-empty' | 'never';\n /** Built-in undo/redo via keyboard when the component has focus.\n * Default `true`. See `CurveEditor.history` for details. */\n history?: boolean;\n /** Custom per-anchor renderer. See `CurveEditor.renderAnchor`. */\n renderAnchor?: (info: AnchorRenderProps) => ReactNode;\n /** Extra SVG content beneath the anchors. See `CurveEditor.decorations`. */\n decorations?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * 2D point plotter — a CurveEditor with the curve hidden. Anchors,\n * drag, shift+click delete, right-click delete, and click-empty insert\n * are inherited from CurveEditor verbatim, so the two components share\n * gesture semantics and stay in sync as CurveEditor evolves.\n *\n * Differences from CurveEditor: no curve `<path>` drawn, no fill, no\n * endpoint pinning, no interpolation, default `addPointMode` is\n * `'click-empty'` (CurveEditor defaults to `'click-curve'`, which\n * doesn't make sense without a curve to hit-test against).\n */\nexport function PointPlotter(props: PointPlotterProps) {\n const curveProps: CurveEditorProps = {\n ...props,\n addPointMode: props.addPointMode ?? 'click-empty',\n curve: false,\n fill: false,\n endpoints: 'free',\n };\n return <CurveEditor {...curveProps} />;\n}\n"],"mappings":";;;AA2DA,SAAgBC,EAAa,GAA0B;CACrD,IAAMC,IAA+B;EACnC,GAAGC;EACH,cAAcA,EAAM,gBAAgB;EACpC,OAAO;EACP,MAAM;EACN,WAAW;CACb;CACA,OAAO,kBAACH,GAAD,EAAa,GAAIE,EAAa,CAAA;AACvC"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./Badge-CyAIZSDo.js";
1
+ import { t as e } from "./Badge-D2aD7xVL.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  var n = {
4
4
  row: "_row_1a09e_1",
@@ -39,4 +39,4 @@ function r({ segments: r, startCap: i = "flat", size: a, variant: o, depth: s, g
39
39
  //#endregion
40
40
  export { r as t };
41
41
 
42
- //# sourceMappingURL=Powerline-ExO5GwEr.js.map
42
+ //# sourceMappingURL=Powerline-DNyH885r.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Powerline-ExO5GwEr.js","names":["s","Badge","Powerline_module_default","Powerline","rest","cls","className","style","gap","segments","leftEdge","i","startCap","rightEdge","seg","depth","variant","size"],"sources":["../../src/components/Powerline/Powerline.module.css","../../src/components/Powerline/Powerline.tsx"],"sourcesContent":[".row {\n display: inline-flex;\n align-items: stretch;\n gap: var(--powerline-gap, 0.2em);\n}\n\n.matrix {\n display: grid;\n gap: var(--wzl-space-6);\n}\n\n/* Reset Badge's opinionated text defaults — Powerline segments should pick up\n * the surrounding text style instead of forcing uppercase / 10px / extra\n * tracking. Consumers can still override via className on Powerline. */\n.segment {\n font-size: inherit;\n text-transform: none;\n letter-spacing: normal;\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { Badge } from '../Badge/Badge';\nimport type { BadgeSize, BadgeStatus, BadgeVariant } from '../Badge/types';\nimport type { StanceProps } from '../stance';\nimport type { EdgeCap } from '../Badge/bases/edgeProfiles';\nimport s from './Powerline.module.css';\n\n/**\n * One segment of a {@link Powerline}. Giving it `onClick` or `href` makes it\n * interactive, the same way it does on a `Badge`.\n */\nexport interface PowerlineSegment extends StanceProps {\n text: ReactNode;\n /** Cap on this segment's right edge. Next segment's left edge adopts the same profile. */\n endCap?: EdgeCap;\n status?: BadgeStatus;\n variant?: BadgeVariant;\n size?: BadgeSize;\n onClick?: () => void;\n href?: string;\n 'aria-label'?: string;\n}\n\n/** Props for {@link Powerline}. */\nexport interface PowerlineProps {\n segments: PowerlineSegment[];\n /** Left edge of the first segment. Defaults to 'flat'. */\n startCap?: EdgeCap;\n /** Default size for every segment (per-segment `size` wins). */\n size?: BadgeSize;\n /** Default variant for every segment (per-segment `variant` wins). */\n variant?: BadgeVariant;\n /** Protrusion depth in CSS px, passed through to every segment's base. */\n depth?: number;\n /** Visible gap between adjacent segments. Number → px; string → literal CSS length.\n * Default: `0.2em` (scales with the row's font size). Pass `0` for flush. */\n gap?: number | string;\n className?: string;\n 'aria-label'?: string;\n}\n\n/**\n * A row of chevron-linked badge segments, in the style of a shell powerline\n * prompt. Each segment's `endCap` shapes both its own right edge and the next\n * segment's left edge, so the run reads as one continuous chain.\n *\n * Built for showing a path through a sequence of steps — the inspector uses\n * it to display how input routes from tool to gesture to action to target.\n */\nexport function Powerline({\n segments,\n startCap = 'flat',\n size,\n variant,\n depth,\n gap,\n className,\n ...rest\n}: PowerlineProps) {\n const cls = [s.row, className].filter(Boolean).join(' ');\n const style: CSSProperties | undefined = gap !== undefined\n ? { ['--powerline-gap' as never]: typeof gap === 'number' ? `${gap}px` : gap }\n : undefined;\n return (\n <span className={cls} style={style} aria-label={rest['aria-label']}>\n {segments.map((seg, i) => {\n const leftEdge: EdgeCap = i === 0 ? startCap : (segments[i - 1].endCap ?? 'flat');\n const rightEdge: EdgeCap = seg.endCap ?? 'flat';\n return (\n <Badge\n key={i}\n base=\"powerline\"\n baseParams={{ leftEdge, rightEdge, ...(depth !== undefined && { depth }) }}\n status={seg.status}\n stance={seg.stance}\n tone={seg.tone}\n variant={seg.variant ?? variant}\n size={seg.size ?? size}\n onClick={seg.onClick}\n href={seg.href}\n aria-label={seg['aria-label']}\n className={s.segment}\n >\n {seg.text}\n </Badge>\n );\n })}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;ACiDA,SAAgBG,EAAU,EACxB,aACA,cAAW,QACX,SACA,YACA,UACA,QACA,cACA,GAAGC,KACc;CACjB,IAAMC,IAAM,CAACL,EAAE,KAAKM,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,GACjDC,IAAmCC,MAAQ,KAAA,IAE7C,KAAA,IADA,EAAG,mBAA6B,OAAOA,KAAQ,WAAW,GAAGA,EAAI,MAAMA,EAAI;CAE/E,OACE,kBAAC,QAAD;EAAM,WAAWH;EAAY;EAAO,cAAYD,EAAK;EAClD,UAAAK,EAAS,KAAK,GAAK,MAAM;GACxB,IAAMC,IAAoBC,MAAM,IAAIC,IAAYH,EAASE,IAAI,EAAE,CAAC,UAAU,QACpEE,IAAqBC,EAAI,UAAU;GACzC,OACE,kBAACb,GAAD;IAEE,MAAK;IACL,YAAY;KAAE;KAAU;KAAW,GAAIc,MAAU,KAAA,KAAa,EAAE,SAAM;IAAG;IACzE,QAAQD,EAAI;IACZ,QAAQA,EAAI;IACZ,MAAMA,EAAI;IACV,SAASA,EAAI,WAAWE;IACxB,MAAMF,EAAI,QAAQG;IAClB,SAASH,EAAI;IACb,MAAMA,EAAI;IACV,cAAYA,EAAI;IAChB,WAAWd,EAAE;IAEZ,UAAAc,EAAI;GACA,GAdAH,CAcA;EAEX,CAAC;CACG,CAAA;AAEV"}
1
+ {"version":3,"file":"Powerline-DNyH885r.js","names":["s","Badge","Powerline_module_default","Powerline","rest","cls","className","style","gap","segments","leftEdge","i","startCap","rightEdge","seg","depth","variant","size"],"sources":["../../src/components/Powerline/Powerline.module.css","../../src/components/Powerline/Powerline.tsx"],"sourcesContent":[".row {\n display: inline-flex;\n align-items: stretch;\n gap: var(--powerline-gap, 0.2em);\n}\n\n.matrix {\n display: grid;\n gap: var(--wzl-space-6);\n}\n\n/* Reset Badge's opinionated text defaults — Powerline segments should pick up\n * the surrounding text style instead of forcing uppercase / 10px / extra\n * tracking. Consumers can still override via className on Powerline. */\n.segment {\n font-size: inherit;\n text-transform: none;\n letter-spacing: normal;\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { Badge } from '../Badge/Badge';\nimport type { BadgeSize, BadgeStatus, BadgeVariant } from '../Badge/types';\nimport type { StanceProps } from '../stance';\nimport type { EdgeCap } from '../Badge/bases/edgeProfiles';\nimport s from './Powerline.module.css';\n\n/**\n * One segment of a {@link Powerline}. Giving it `onClick` or `href` makes it\n * interactive, the same way it does on a `Badge`.\n */\nexport interface PowerlineSegment extends StanceProps {\n text: ReactNode;\n /** Cap on this segment's right edge. Next segment's left edge adopts the same profile. */\n endCap?: EdgeCap;\n status?: BadgeStatus;\n variant?: BadgeVariant;\n size?: BadgeSize;\n onClick?: () => void;\n href?: string;\n 'aria-label'?: string;\n}\n\n/** Props for {@link Powerline}. */\nexport interface PowerlineProps {\n segments: PowerlineSegment[];\n /** Left edge of the first segment. Defaults to 'flat'. */\n startCap?: EdgeCap;\n /** Default size for every segment (per-segment `size` wins). */\n size?: BadgeSize;\n /** Default variant for every segment (per-segment `variant` wins). */\n variant?: BadgeVariant;\n /** Protrusion depth in CSS px, passed through to every segment's base. */\n depth?: number;\n /** Visible gap between adjacent segments. Number → px; string → literal CSS length.\n * Default: `0.2em` (scales with the row's font size). Pass `0` for flush. */\n gap?: number | string;\n className?: string;\n 'aria-label'?: string;\n}\n\n/**\n * A row of chevron-linked badge segments, in the style of a shell powerline\n * prompt. Each segment's `endCap` shapes both its own right edge and the next\n * segment's left edge, so the run reads as one continuous chain.\n *\n * Built for showing a path through a sequence of steps — the inspector uses\n * it to display how input routes from tool to gesture to action to target.\n */\nexport function Powerline({\n segments,\n startCap = 'flat',\n size,\n variant,\n depth,\n gap,\n className,\n ...rest\n}: PowerlineProps) {\n const cls = [s.row, className].filter(Boolean).join(' ');\n const style: CSSProperties | undefined = gap !== undefined\n ? { ['--powerline-gap' as never]: typeof gap === 'number' ? `${gap}px` : gap }\n : undefined;\n return (\n <span className={cls} style={style} aria-label={rest['aria-label']}>\n {segments.map((seg, i) => {\n const leftEdge: EdgeCap = i === 0 ? startCap : (segments[i - 1].endCap ?? 'flat');\n const rightEdge: EdgeCap = seg.endCap ?? 'flat';\n return (\n <Badge\n key={i}\n base=\"powerline\"\n baseParams={{ leftEdge, rightEdge, ...(depth !== undefined && { depth }) }}\n status={seg.status}\n stance={seg.stance}\n tone={seg.tone}\n variant={seg.variant ?? variant}\n size={seg.size ?? size}\n onClick={seg.onClick}\n href={seg.href}\n aria-label={seg['aria-label']}\n className={s.segment}\n >\n {seg.text}\n </Badge>\n );\n })}\n </span>\n );\n}\n"],"mappings":";;;;;;;;;ACiDA,SAAgBG,EAAU,EACxB,aACA,cAAW,QACX,SACA,YACA,UACA,QACA,cACA,GAAGC,KACc;CACjB,IAAMC,IAAM,CAACL,EAAE,KAAKM,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,GACjDC,IAAmCC,MAAQ,KAAA,IAE7C,KAAA,IADA,EAAG,mBAA6B,OAAOA,KAAQ,WAAW,GAAGA,EAAI,MAAMA,EAAI;CAE/E,OACE,kBAAC,QAAD;EAAM,WAAWH;EAAY;EAAO,cAAYD,EAAK;EAClD,UAAAK,EAAS,KAAK,GAAK,MAAM;GACxB,IAAMC,IAAoBC,MAAM,IAAIC,IAAYH,EAASE,IAAI,EAAE,CAAC,UAAU,QACpEE,IAAqBC,EAAI,UAAU;GACzC,OACE,kBAACb,GAAD;IAEE,MAAK;IACL,YAAY;KAAE;KAAU;KAAW,GAAIc,MAAU,KAAA,KAAa,EAAE,SAAM;IAAG;IACzE,QAAQD,EAAI;IACZ,QAAQA,EAAI;IACZ,MAAMA,EAAI;IACV,SAASA,EAAI,WAAWE;IACxB,MAAMF,EAAI,QAAQG;IAClB,SAASH,EAAI;IACb,MAAMA,EAAI;IACV,cAAYA,EAAI;IAChB,WAAWd,EAAE;IAEZ,UAAAc,EAAI;GACA,GAdAH,CAcA;EAEX,CAAC;CACG,CAAA;AAEV"}
@@ -1,8 +1,8 @@
1
- import { t as e } from "./Dialog-BWyNMgpf.js";
2
- import { o as t, t as n } from "./PropertyField-DGCecAnV.js";
1
+ import { t as e } from "./Dialog-DGFutQ--.js";
2
+ import { o as t, t as n } from "./PropertyField-DfIJJ5GS.js";
3
3
  import { t as r } from "./Input-CHmkfYaD.js";
4
4
  import { t as i } from "./useRovingTabIndex-Bp_hYm_h.js";
5
- import { a, n as o, o as s, r as c, s as l, t as u } from "./prefField-Dnl7nmjQ.js";
5
+ import { a, n as o, o as s, r as c, s as l, t as u } from "./prefField-BopW9bjx.js";
6
6
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
7
7
  import { useCallback as m, useEffect as h, useMemo as g, useRef as _, useState as v } from "react";
8
8
  //#region src/useScrollSpy.ts
@@ -120,7 +120,6 @@ function w({ ctx: e, path: n, pref: r }) {
120
120
  label: r.name,
121
121
  description: r.description,
122
122
  layout: "inline",
123
- chrome: "framed",
124
123
  className: C.row,
125
124
  children: /* @__PURE__ */ f("span", {
126
125
  className: C.rowControl,
@@ -130,26 +129,40 @@ function w({ ctx: e, path: n, pref: r }) {
130
129
  }
131
130
  function T(e, t) {
132
131
  let { pref: r, value: i, setValue: a } = e;
133
- if (r.kind === "object") return /* @__PURE__ */ f(E, { ctx: e });
132
+ if (r.kind === "object") return /* @__PURE__ */ f(D, { ctx: e });
134
133
  let o = u(r, {
135
134
  value: i,
136
135
  siblings: t,
137
136
  setValue: a
138
137
  });
139
- return o === null ? /* @__PURE__ */ p("span", {
138
+ if (o === null) return /* @__PURE__ */ p("span", {
140
139
  className: C.unrenderable,
141
140
  children: [
142
141
  "(",
143
142
  r.kind,
144
143
  ": no renderer)"
145
144
  ]
146
- }) : /* @__PURE__ */ f(n, {
147
- ...o,
148
- chrome: "framed",
149
- name: r.name
150
145
  });
146
+ switch (o.kind) {
147
+ case "number": return /* @__PURE__ */ f(n, {
148
+ ...o,
149
+ name: r.name,
150
+ onInput: E,
151
+ steppers: o.accepts === void 0
152
+ });
153
+ case "color": return /* @__PURE__ */ f(n, {
154
+ ...o,
155
+ name: r.name,
156
+ onInput: E
157
+ });
158
+ default: return /* @__PURE__ */ f(n, {
159
+ ...o,
160
+ name: r.name
161
+ });
162
+ }
151
163
  }
152
- function E({ ctx: e }) {
164
+ var E = () => {};
165
+ function D({ ctx: e }) {
153
166
  let n = e.pref, { value: r, setValue: i } = e, a = typeof r == "object" && r ? r : void 0, o = (s) => {
154
167
  let l = [];
155
168
  for (let [u, d] of Object.entries(s)) {
@@ -165,7 +178,6 @@ function E({ ctx: e }) {
165
178
  l.push(/* @__PURE__ */ f(t, {
166
179
  label: d.name,
167
180
  layout: "inline",
168
- chrome: "framed",
169
181
  className: C.objectRow,
170
182
  children: /* @__PURE__ */ f("span", {
171
183
  className: C.rowControl,
@@ -195,7 +207,7 @@ function E({ ctx: e }) {
195
207
  }
196
208
  //#endregion
197
209
  //#region src/components/Prefs/PrefsPane.tsx
198
- function D(e) {
210
+ function O(e) {
199
211
  let { ctx: t, group: n, path: r, scrollRef: i, className: a } = e, o = Object.entries(n.children).filter((e) => c(e[1])), s = Object.entries(n.children).filter((e) => !c(e[1])), l = (e) => r === "" ? e : `${r}.${e}`;
200
212
  return /* @__PURE__ */ p("div", {
201
213
  className: [C.pane, a].filter(Boolean).join(" "),
@@ -219,7 +231,7 @@ function D(e) {
219
231
  pref: n
220
232
  }, e))
221
233
  }),
222
- s.map(([e, n]) => /* @__PURE__ */ f(O, {
234
+ s.map(([e, n]) => /* @__PURE__ */ f(k, {
223
235
  ctx: t,
224
236
  group: n,
225
237
  path: l(e),
@@ -228,7 +240,7 @@ function D(e) {
228
240
  ]
229
241
  });
230
242
  }
231
- function O({ ctx: e, group: t, path: n, depth: r }) {
243
+ function k({ ctx: e, group: t, path: n, depth: r }) {
232
244
  let i = r === 0 ? "h4" : "h5";
233
245
  return /* @__PURE__ */ p("section", {
234
246
  className: r === 0 ? C.paneSection : C.paneSubsection,
@@ -251,7 +263,7 @@ function O({ ctx: e, group: t, path: n, depth: r }) {
251
263
  ctx: e,
252
264
  path: a,
253
265
  pref: i
254
- }, t) : /* @__PURE__ */ f(O, {
266
+ }, t) : /* @__PURE__ */ f(k, {
255
267
  ctx: e,
256
268
  group: i,
257
269
  path: a,
@@ -264,7 +276,7 @@ function O({ ctx: e, group: t, path: n, depth: r }) {
264
276
  }
265
277
  //#endregion
266
278
  //#region src/components/Prefs/PrefsRail.tsx
267
- function k(e) {
279
+ function A(e) {
268
280
  let { items: t, section: n, current: r, onOpen: a, onScrollTo: o, ariaLabel: s, header: c, showCounts: l } = e, u = (e) => {
269
281
  let n = t[e];
270
282
  n && (n.depth === 0 ? a(n.path) : o(n.path));
@@ -307,7 +319,7 @@ function k(e) {
307
319
  }
308
320
  //#endregion
309
321
  //#region src/components/Prefs/PrefsForm.tsx
310
- function A(e) {
322
+ function j(e) {
311
323
  let { schema: t, values: n, onChange: i, renderers: a, showHidden: s = !1, layout: u = "columns", filterable: d = !1, className: m } = e, [h, _] = v(""), y = g(() => {
312
324
  let e = l(t, s);
313
325
  return e === null ? null : o(e, h);
@@ -328,7 +340,7 @@ function A(e) {
328
340
  placeholder: "Filter settings"
329
341
  })
330
342
  }) : null;
331
- return u === "rail" ? /* @__PURE__ */ f(j, {
343
+ return u === "rail" ? /* @__PURE__ */ f(M, {
332
344
  ...e,
333
345
  root: y,
334
346
  ctx: b,
@@ -337,7 +349,7 @@ function A(e) {
337
349
  onClearFilter: () => _("")
338
350
  }) : /* @__PURE__ */ p("div", {
339
351
  className: [C.columnsLayout, m].filter(Boolean).join(" "),
340
- children: [x, y === null ? /* @__PURE__ */ f(N, {
352
+ children: [x, y === null ? /* @__PURE__ */ f(P, {
341
353
  query: h,
342
354
  onClear: () => _("")
343
355
  }) : /* @__PURE__ */ f("div", {
@@ -348,7 +360,7 @@ function A(e) {
348
360
  ctx: b,
349
361
  path: e,
350
362
  pref: t
351
- }) : /* @__PURE__ */ f(P, {
363
+ }) : /* @__PURE__ */ f(F, {
352
364
  ctx: b,
353
365
  group: t,
354
366
  path: e,
@@ -358,16 +370,16 @@ function A(e) {
358
370
  })]
359
371
  });
360
372
  }
361
- function j(e) {
373
+ function M(e) {
362
374
  let { schema: t, root: n, ctx: r, query: i, filterField: o, onClearFilter: s, className: c } = e, l = g(() => n === null ? [] : a(n), [n]), [u, d] = v(() => e.defaultSection ?? ""), m = e.section ?? u, h = l.some((e) => e.path === m && e.depth === 0) ? m : l.find((e) => e.depth === 0)?.path ?? "", y = _(null), b = x({
363
375
  rootRef: y,
364
376
  ids: g(() => l.filter((e) => e.depth === 1 && e.section === h).map((e) => e.path), [l, h])
365
377
  }), S = (t) => {
366
378
  e.section === void 0 && d(t), e.onSectionChange?.(t), y.current?.scrollTo?.({ top: 0 });
367
- }, w = n === null ? null : M(n, h, t.name);
379
+ }, w = n === null ? null : N(n, h, t.name);
368
380
  return /* @__PURE__ */ p("div", {
369
381
  className: [C.railLayout, c].filter(Boolean).join(" "),
370
- children: [/* @__PURE__ */ f(k, {
382
+ children: [/* @__PURE__ */ f(A, {
371
383
  items: l,
372
384
  section: h,
373
385
  current: b.active,
@@ -378,11 +390,11 @@ function j(e) {
378
390
  showCounts: i.trim() !== ""
379
391
  }), w === null ? /* @__PURE__ */ f("div", {
380
392
  className: C.pane,
381
- children: /* @__PURE__ */ f(N, {
393
+ children: /* @__PURE__ */ f(P, {
382
394
  query: i,
383
395
  onClear: s
384
396
  })
385
- }) : /* @__PURE__ */ f(D, {
397
+ }) : /* @__PURE__ */ f(O, {
386
398
  ctx: r,
387
399
  group: w,
388
400
  path: h,
@@ -390,7 +402,7 @@ function j(e) {
390
402
  })]
391
403
  });
392
404
  }
393
- function M(e, t, n) {
405
+ function N(e, t, n) {
394
406
  if (t === "") {
395
407
  let t = Object.fromEntries(Object.entries(e.children).filter(([, e]) => c(e)));
396
408
  return Object.keys(t).length === 0 ? null : {
@@ -407,7 +419,7 @@ function M(e, t, n) {
407
419
  }
408
420
  return r ?? null;
409
421
  }
410
- function N({ query: e, onClear: t }) {
422
+ function P({ query: e, onClear: t }) {
411
423
  return /* @__PURE__ */ p("div", {
412
424
  className: C.noMatches,
413
425
  children: [/* @__PURE__ */ p("p", { children: [
@@ -422,7 +434,7 @@ function N({ query: e, onClear: t }) {
422
434
  })]
423
435
  });
424
436
  }
425
- function P({ ctx: e, group: t, path: n, depth: r }) {
437
+ function F({ ctx: e, group: t, path: n, depth: r }) {
426
438
  return /* @__PURE__ */ p("div", {
427
439
  className: r === 0 ? C.panel : C.subpanel,
428
440
  children: [/* @__PURE__ */ p("div", {
@@ -442,7 +454,7 @@ function P({ ctx: e, group: t, path: n, depth: r }) {
442
454
  ctx: e,
443
455
  path: a,
444
456
  pref: i
445
- }, t) : /* @__PURE__ */ f(P, {
457
+ }, t) : /* @__PURE__ */ f(F, {
446
458
  ctx: e,
447
459
  group: i,
448
460
  path: a,
@@ -454,7 +466,7 @@ function P({ ctx: e, group: t, path: n, depth: r }) {
454
466
  }
455
467
  //#endregion
456
468
  //#region src/components/Prefs/PrefsDialog.tsx
457
- function F(t) {
469
+ function I(t) {
458
470
  let { isOpen: n, onOpenChange: r, title: i, headerExtra: a, footer: o, dialogClassName: s, ...c } = t, l = c.layout === "rail";
459
471
  return /* @__PURE__ */ f(e, {
460
472
  isOpen: n,
@@ -467,10 +479,10 @@ function F(t) {
467
479
  className: C.titleRow,
468
480
  children: [/* @__PURE__ */ f("span", { children: i ?? c.schema.name }), a]
469
481
  }),
470
- children: /* @__PURE__ */ f(A, { ...c })
482
+ children: /* @__PURE__ */ f(j, { ...c })
471
483
  });
472
484
  }
473
485
  //#endregion
474
- export { y as a, D as i, A as n, x as o, k as r, F as t };
486
+ export { y as a, O as i, j as n, x as o, A as r, I as t };
475
487
 
476
- //# sourceMappingURL=Prefs-DpqFKiwY.js.map
488
+ //# sourceMappingURL=Prefs-ByA-x51i.js.map