@weasel-js/ui 1.2.0 → 1.3.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 (267) hide show
  1. package/dist/chunks/{ActionBar-BvPEd_GW.js → ActionBar-BTev_ZZl.js} +21 -21
  2. package/dist/chunks/ActionBar-BTev_ZZl.js.map +1 -0
  3. package/dist/chunks/{ActionsBar-9aR5N3lU.js → ActionsBar-CBi_dV4B.js} +4 -4
  4. package/dist/chunks/{ActionsBar-9aR5N3lU.js.map → ActionsBar-CBi_dV4B.js.map} +1 -1
  5. package/dist/chunks/{Badge-dQzbkk-C.js → Badge-9dPfvYOk.js} +672 -670
  6. package/dist/chunks/Badge-9dPfvYOk.js.map +1 -0
  7. package/dist/chunks/{BandEditor-D3i6l299.js → BandEditor-DeE-Nhyh.js} +46 -46
  8. package/dist/chunks/BandEditor-DeE-Nhyh.js.map +1 -0
  9. package/dist/chunks/{Button-9QNIYugK.js → Button-CIu40Epu.js} +28 -28
  10. package/dist/chunks/Button-CIu40Epu.js.map +1 -0
  11. package/dist/chunks/{Callout-cJHJ4kIN.js → Callout-CxDNb9iE.js} +35 -35
  12. package/dist/chunks/Callout-CxDNb9iE.js.map +1 -0
  13. package/dist/chunks/Checkbox-Chtrlh19.js +47 -0
  14. package/dist/chunks/Checkbox-Chtrlh19.js.map +1 -0
  15. package/dist/chunks/ColorField-CSSRv3jG.js +60 -0
  16. package/dist/chunks/ColorField-CSSRv3jG.js.map +1 -0
  17. package/dist/chunks/{ComboBox-ONQISwtI.js → ComboBox-BIQ8KP4h.js} +28 -28
  18. package/dist/chunks/ComboBox-BIQ8KP4h.js.map +1 -0
  19. package/dist/chunks/{CurveEditor-SmwwvrsA.js → CurveEditor-DiJk0NhK.js} +117 -116
  20. package/dist/chunks/{CurveEditor-SmwwvrsA.js.map → CurveEditor-DiJk0NhK.js.map} +1 -1
  21. package/dist/chunks/DataGrid-BgiEYBLo.js +107 -0
  22. package/dist/chunks/DataGrid-BgiEYBLo.js.map +1 -0
  23. package/dist/chunks/Dialog-RzrboT4Q.js +59 -0
  24. package/dist/chunks/Dialog-RzrboT4Q.js.map +1 -0
  25. package/dist/chunks/DragHandleGlyph-CJbzRigu.js +47 -0
  26. package/dist/chunks/DragHandleGlyph-CJbzRigu.js.map +1 -0
  27. package/dist/chunks/{Field-VQwmrIna.js → Field-DrRby9vo.js} +6 -6
  28. package/dist/chunks/Field-DrRby9vo.js.map +1 -0
  29. package/dist/chunks/GradientEditor-BuVR6pt-.js +308 -0
  30. package/dist/chunks/GradientEditor-BuVR6pt-.js.map +1 -0
  31. package/dist/chunks/InlineRange-B-Jkv8AA.js +24 -0
  32. package/dist/chunks/InlineRange-B-Jkv8AA.js.map +1 -0
  33. package/dist/chunks/Input-BnxOPY4N.js +55 -0
  34. package/dist/chunks/Input-BnxOPY4N.js.map +1 -0
  35. package/dist/chunks/{Keycaps-CFX7UAj8.js → Keycaps-Dk33JOiH.js} +15 -15
  36. package/dist/chunks/Keycaps-Dk33JOiH.js.map +1 -0
  37. package/dist/chunks/LayerStack-DQYvGNPA.js +145 -0
  38. package/dist/chunks/LayerStack-DQYvGNPA.js.map +1 -0
  39. package/dist/chunks/NumberField-BQ-KaK7T.js +59 -0
  40. package/dist/chunks/NumberField-BQ-KaK7T.js.map +1 -0
  41. package/dist/chunks/{OptionsBar-CHvH4n4u.js → OptionsBar-BecAPCID.js} +4 -4
  42. package/dist/chunks/{OptionsBar-CHvH4n4u.js.map → OptionsBar-BecAPCID.js.map} +1 -1
  43. package/dist/chunks/PaintInput-K5W4Uho3.js +205 -0
  44. package/dist/chunks/PaintInput-K5W4Uho3.js.map +1 -0
  45. package/dist/chunks/PatternPicker-BdLSj_f_.js +93 -0
  46. package/dist/chunks/PatternPicker-BdLSj_f_.js.map +1 -0
  47. package/dist/chunks/Plot2D-BEjpJhk-.js +134 -0
  48. package/dist/chunks/Plot2D-BEjpJhk-.js.map +1 -0
  49. package/dist/chunks/{PointPlotter-BUIse9c4.js → PointPlotter-C_tZb122.js} +2 -2
  50. package/dist/chunks/{PointPlotter-BUIse9c4.js.map → PointPlotter-C_tZb122.js.map} +1 -1
  51. package/dist/chunks/{Powerline-BYWdK8QH.js → Powerline-Cc-Av8Pc.js} +2 -2
  52. package/dist/chunks/{Powerline-BYWdK8QH.js.map → Powerline-Cc-Av8Pc.js.map} +1 -1
  53. package/dist/chunks/Prefs-CRTRAud6.js +300 -0
  54. package/dist/chunks/Prefs-CRTRAud6.js.map +1 -0
  55. package/dist/chunks/Properties-BRrWSBHM.js +648 -0
  56. package/dist/chunks/Properties-BRrWSBHM.js.map +1 -0
  57. package/dist/chunks/RadioGroup-BrtV1Clm.js +49 -0
  58. package/dist/chunks/RadioGroup-BrtV1Clm.js.map +1 -0
  59. package/dist/chunks/RangeSlider-CJfhxDn6.js +52 -0
  60. package/dist/chunks/RangeSlider-CJfhxDn6.js.map +1 -0
  61. package/dist/chunks/{ResizeHandle-BOpmtOOj.js → ResizeHandle-Csz3DPew.js} +8 -8
  62. package/dist/chunks/{ResizeHandle-BOpmtOOj.js.map → ResizeHandle-Csz3DPew.js.map} +1 -1
  63. package/dist/chunks/{Select-CHsuQCp0.js → Select-BYhHGmMl.js} +32 -32
  64. package/dist/chunks/Select-BYhHGmMl.js.map +1 -0
  65. package/dist/chunks/SelectionPanel-D2IYlj_K.js +446 -0
  66. package/dist/chunks/SelectionPanel-D2IYlj_K.js.map +1 -0
  67. package/dist/chunks/{Sidebar-DP_nyJze.js → Sidebar-DrBQZ9nP.js} +1 -1
  68. package/dist/chunks/{Sidebar-DP_nyJze.js.map → Sidebar-DrBQZ9nP.js.map} +1 -1
  69. package/dist/chunks/SidebarPanel-Dbqb79Kx.js +59 -0
  70. package/dist/chunks/SidebarPanel-Dbqb79Kx.js.map +1 -0
  71. package/dist/chunks/Slider-DbOt9Dji.js +257 -0
  72. package/dist/chunks/Slider-DbOt9Dji.js.map +1 -0
  73. package/dist/chunks/{StatusBar-DBO0E0Yd.js → StatusBar-B6lPbvrF.js} +6 -6
  74. package/dist/chunks/StatusBar-B6lPbvrF.js.map +1 -0
  75. package/dist/chunks/Switch-BSr-vaAC.js +27 -0
  76. package/dist/chunks/Switch-BSr-vaAC.js.map +1 -0
  77. package/dist/chunks/Tabs-CIa-Idzu.js +41 -0
  78. package/dist/chunks/Tabs-CIa-Idzu.js.map +1 -0
  79. package/dist/chunks/{Toast-DFw4IrD_.js → Toast-C0UnBqQu.js} +31 -31
  80. package/dist/chunks/{Toast-DFw4IrD_.js.map → Toast-C0UnBqQu.js.map} +1 -1
  81. package/dist/chunks/{ToggleBar-BP1zFcvg.js → ToggleBar-1wDRwSGN.js} +11 -10
  82. package/dist/chunks/ToggleBar-1wDRwSGN.js.map +1 -0
  83. package/dist/chunks/{ToolButton-ClPz5L6j.js → ToolButton-Bd9l_I8f.js} +16 -16
  84. package/dist/chunks/ToolButton-Bd9l_I8f.js.map +1 -0
  85. package/dist/chunks/{ToolGroup-BTIwd4U4.js → ToolGroup-gizXwttA.js} +1 -1
  86. package/dist/chunks/{ToolGroup-BTIwd4U4.js.map → ToolGroup-gizXwttA.js.map} +1 -1
  87. package/dist/chunks/{ToolOptionsBar-JvmY7iNe.js → ToolOptionsBar-CXjeTE1d.js} +4 -4
  88. package/dist/chunks/ToolOptionsBar-CXjeTE1d.js.map +1 -0
  89. package/dist/chunks/{ToolPalette-DAiVhdtV.js → ToolPalette-3YpkSNfj.js} +24 -24
  90. package/dist/chunks/ToolPalette-3YpkSNfj.js.map +1 -0
  91. package/dist/chunks/Tooltip-Di7vxbFa.js +40 -0
  92. package/dist/chunks/Tooltip-Di7vxbFa.js.map +1 -0
  93. package/dist/chunks/dlog-CMYiRF3Q.js +38 -0
  94. package/dist/chunks/dlog-CMYiRF3Q.js.map +1 -0
  95. package/dist/chunks/{keyGlyph-BDH5fqkO.js → keyGlyph-D3X08tSp.js} +1 -1
  96. package/dist/chunks/{keyGlyph-BDH5fqkO.js.map → keyGlyph-D3X08tSp.js.map} +1 -1
  97. package/dist/chunks/number-llMRJPJW.js +18 -0
  98. package/dist/chunks/number-llMRJPJW.js.map +1 -0
  99. package/dist/chunks/segmentedControl.module-YXqIjnmu.js +11 -0
  100. package/dist/chunks/segmentedControl.module-YXqIjnmu.js.map +1 -0
  101. package/dist/chunks/useReorderDragList-RSJqj18B.js +109 -0
  102. package/dist/chunks/useReorderDragList-RSJqj18B.js.map +1 -0
  103. package/dist/chunks/{useRovingTabIndex-DBZtq4IH.js → useRovingTabIndex-CuUl6DLF.js} +1 -1
  104. package/dist/chunks/{useRovingTabIndex-DBZtq4IH.js.map → useRovingTabIndex-CuUl6DLF.js.map} +1 -1
  105. package/dist/components/ActionBar/index.js +1 -1
  106. package/dist/components/ActionsBar/index.js +1 -1
  107. package/dist/components/Badge/Badge.d.ts.map +1 -1
  108. package/dist/components/Badge/index.js +1 -1
  109. package/dist/components/BandEditor/index.js +1 -1
  110. package/dist/components/Button/index.js +1 -1
  111. package/dist/components/Callout/index.js +1 -1
  112. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  113. package/dist/components/Checkbox/index.js +1 -1
  114. package/dist/components/ColorField/ColorField.d.ts.map +1 -1
  115. package/dist/components/ColorField/index.js +1 -1
  116. package/dist/components/ComboBox/index.js +1 -1
  117. package/dist/components/CurveEditor/index.js +1 -1
  118. package/dist/components/DataGrid/index.js +1 -1
  119. package/dist/components/Dialog/index.js +1 -1
  120. package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts +12 -0
  121. package/dist/components/DragHandleGlyph/DragHandleGlyph.d.ts.map +1 -0
  122. package/dist/components/DragHandleGlyph/index.d.ts +3 -0
  123. package/dist/components/DragHandleGlyph/index.d.ts.map +1 -0
  124. package/dist/components/DragHandleGlyph/index.js +2 -0
  125. package/dist/components/Field/index.js +1 -1
  126. package/dist/components/GradientEditor/SceneGradientHandles.d.ts +41 -0
  127. package/dist/components/GradientEditor/SceneGradientHandles.d.ts.map +1 -0
  128. package/dist/components/GradientEditor/index.d.ts +1 -0
  129. package/dist/components/GradientEditor/index.d.ts.map +1 -1
  130. package/dist/components/GradientEditor/index.js +2 -2
  131. package/dist/components/InlineRange/InlineRange.d.ts +17 -0
  132. package/dist/components/InlineRange/InlineRange.d.ts.map +1 -0
  133. package/dist/components/InlineRange/index.d.ts +2 -0
  134. package/dist/components/InlineRange/index.d.ts.map +1 -0
  135. package/dist/components/InlineRange/index.js +2 -0
  136. package/dist/components/Input/Input.d.ts +1 -1
  137. package/dist/components/Input/index.js +1 -1
  138. package/dist/components/Keycaps/index.js +2 -2
  139. package/dist/components/LayerStack/LayerStack.d.ts +49 -0
  140. package/dist/components/LayerStack/LayerStack.d.ts.map +1 -0
  141. package/dist/components/LayerStack/index.d.ts +2 -0
  142. package/dist/components/LayerStack/index.d.ts.map +1 -0
  143. package/dist/components/LayerStack/index.js +2 -0
  144. package/dist/components/NumberField/NumberField.d.ts +1 -1
  145. package/dist/components/NumberField/index.js +1 -1
  146. package/dist/components/OptionsBar/index.js +1 -1
  147. package/dist/components/PaintInput/PaintInput.d.ts +40 -0
  148. package/dist/components/PaintInput/PaintInput.d.ts.map +1 -0
  149. package/dist/components/PaintInput/index.d.ts +2 -0
  150. package/dist/components/PaintInput/index.d.ts.map +1 -0
  151. package/dist/components/PaintInput/index.js +2 -0
  152. package/dist/components/PatternPicker/PatternPicker.d.ts +31 -0
  153. package/dist/components/PatternPicker/PatternPicker.d.ts.map +1 -0
  154. package/dist/components/PatternPicker/index.d.ts +2 -0
  155. package/dist/components/PatternPicker/index.d.ts.map +1 -0
  156. package/dist/components/PatternPicker/index.js +2 -0
  157. package/dist/components/Plot2D/index.js +1 -1
  158. package/dist/components/PointPlotter/index.js +1 -1
  159. package/dist/components/Powerline/index.js +2 -2
  160. package/dist/components/Prefs/PrefsForm.d.ts.map +1 -1
  161. package/dist/components/Prefs/index.d.ts +1 -1
  162. package/dist/components/Prefs/index.d.ts.map +1 -1
  163. package/dist/components/Prefs/index.js +1 -1
  164. package/dist/components/Prefs/schema.d.ts +4 -92
  165. package/dist/components/Prefs/schema.d.ts.map +1 -1
  166. package/dist/components/Properties/CurveField.d.ts +37 -0
  167. package/dist/components/Properties/CurveField.d.ts.map +1 -0
  168. package/dist/components/Properties/EffectCard.d.ts +68 -0
  169. package/dist/components/Properties/EffectCard.d.ts.map +1 -0
  170. package/dist/components/Properties/PropertyGroup.d.ts +24 -0
  171. package/dist/components/Properties/PropertyGroup.d.ts.map +1 -0
  172. package/dist/components/Properties/PropertyPanel.d.ts +181 -0
  173. package/dist/components/Properties/PropertyPanel.d.ts.map +1 -0
  174. package/dist/components/Properties/index.d.ts +9 -0
  175. package/dist/components/Properties/index.d.ts.map +1 -0
  176. package/dist/components/Properties/index.js +2 -0
  177. package/dist/components/Properties/storyLayouts.d.ts +11 -0
  178. package/dist/components/Properties/storyLayouts.d.ts.map +1 -0
  179. package/dist/components/RadioGroup/index.js +1 -1
  180. package/dist/components/RangeSlider/index.js +1 -1
  181. package/dist/components/ResizeHandle/index.js +1 -1
  182. package/dist/components/Select/index.js +1 -1
  183. package/dist/components/SelectionPanel/SelectionPanel.d.ts +32 -1
  184. package/dist/components/SelectionPanel/SelectionPanel.d.ts.map +1 -1
  185. package/dist/components/SelectionPanel/index.js +1 -1
  186. package/dist/components/Sidebar/index.js +1 -1
  187. package/dist/components/SidebarPanel/index.js +1 -1
  188. package/dist/components/Slider/index.js +1 -1
  189. package/dist/components/StatusBar/index.js +1 -1
  190. package/dist/components/Switch/Switch.d.ts +1 -1
  191. package/dist/components/Switch/index.js +1 -1
  192. package/dist/components/Tabs/index.js +1 -1
  193. package/dist/components/Toast/index.js +1 -1
  194. package/dist/components/ToggleBar/ToggleBar.d.ts +1 -1
  195. package/dist/components/ToggleBar/ToggleBar.d.ts.map +1 -1
  196. package/dist/components/ToggleBar/index.js +1 -1
  197. package/dist/components/ToolButton/index.js +1 -1
  198. package/dist/components/ToolGroup/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/index.js +1 -1
  202. package/dist/components/paintValue.d.ts +8 -0
  203. package/dist/components/paintValue.d.ts.map +1 -0
  204. package/dist/format/number.d.ts +13 -0
  205. package/dist/format/number.d.ts.map +1 -1
  206. package/dist/icons/Icon.d.ts +17 -0
  207. package/dist/icons/Icon.d.ts.map +1 -0
  208. package/dist/icons/index.d.ts +50 -0
  209. package/dist/icons/index.d.ts.map +1 -0
  210. package/dist/icons/paths.d.ts +71 -0
  211. package/dist/icons/paths.d.ts.map +1 -0
  212. package/dist/index.d.ts +9 -1
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +190 -48
  215. package/dist/index.js.map +1 -1
  216. package/dist/style.css +1 -1
  217. package/package.json +4 -3
  218. package/dist/chunks/ActionBar-BvPEd_GW.js.map +0 -1
  219. package/dist/chunks/Badge-dQzbkk-C.js.map +0 -1
  220. package/dist/chunks/BandEditor-D3i6l299.js.map +0 -1
  221. package/dist/chunks/Button-9QNIYugK.js.map +0 -1
  222. package/dist/chunks/Callout-cJHJ4kIN.js.map +0 -1
  223. package/dist/chunks/Checkbox-KQ5L8APP.js +0 -47
  224. package/dist/chunks/Checkbox-KQ5L8APP.js.map +0 -1
  225. package/dist/chunks/ColorField-ykpiD3XU.js +0 -60
  226. package/dist/chunks/ColorField-ykpiD3XU.js.map +0 -1
  227. package/dist/chunks/ComboBox-ONQISwtI.js.map +0 -1
  228. package/dist/chunks/DataGrid-DZQ4Chbd.js +0 -210
  229. package/dist/chunks/DataGrid-DZQ4Chbd.js.map +0 -1
  230. package/dist/chunks/Dialog-CqwdJv_t.js +0 -59
  231. package/dist/chunks/Dialog-CqwdJv_t.js.map +0 -1
  232. package/dist/chunks/Field-VQwmrIna.js.map +0 -1
  233. package/dist/chunks/GradientEditor-Bg6SX64V.js +0 -280
  234. package/dist/chunks/GradientEditor-Bg6SX64V.js.map +0 -1
  235. package/dist/chunks/Input-DpkwYtUY.js +0 -55
  236. package/dist/chunks/Input-DpkwYtUY.js.map +0 -1
  237. package/dist/chunks/Keycaps-CFX7UAj8.js.map +0 -1
  238. package/dist/chunks/NumberField-BbzI0GtU.js +0 -59
  239. package/dist/chunks/NumberField-BbzI0GtU.js.map +0 -1
  240. package/dist/chunks/Plot2D-CEnhzodm.js +0 -168
  241. package/dist/chunks/Plot2D-CEnhzodm.js.map +0 -1
  242. package/dist/chunks/Prefs-BMR9wMiZ.js +0 -238
  243. package/dist/chunks/Prefs-BMR9wMiZ.js.map +0 -1
  244. package/dist/chunks/RadioGroup-CIpHr3g6.js +0 -49
  245. package/dist/chunks/RadioGroup-CIpHr3g6.js.map +0 -1
  246. package/dist/chunks/RangeSlider-CaDogGTj.js +0 -52
  247. package/dist/chunks/RangeSlider-CaDogGTj.js.map +0 -1
  248. package/dist/chunks/Select-CHsuQCp0.js.map +0 -1
  249. package/dist/chunks/SelectionPanel-D_wk_8ZN.js +0 -303
  250. package/dist/chunks/SelectionPanel-D_wk_8ZN.js.map +0 -1
  251. package/dist/chunks/SidebarPanel-BVTQ1ZyM.js +0 -59
  252. package/dist/chunks/SidebarPanel-BVTQ1ZyM.js.map +0 -1
  253. package/dist/chunks/Slider-tGbqoAZH.js +0 -259
  254. package/dist/chunks/Slider-tGbqoAZH.js.map +0 -1
  255. package/dist/chunks/StatusBar-DBO0E0Yd.js.map +0 -1
  256. package/dist/chunks/Switch-JyVSSAzC.js +0 -27
  257. package/dist/chunks/Switch-JyVSSAzC.js.map +0 -1
  258. package/dist/chunks/Tabs-Df0sDomx.js +0 -41
  259. package/dist/chunks/Tabs-Df0sDomx.js.map +0 -1
  260. package/dist/chunks/ToggleBar-BP1zFcvg.js.map +0 -1
  261. package/dist/chunks/ToolButton-ClPz5L6j.js.map +0 -1
  262. package/dist/chunks/ToolOptionsBar-JvmY7iNe.js.map +0 -1
  263. package/dist/chunks/ToolPalette-DAiVhdtV.js.map +0 -1
  264. package/dist/chunks/Tooltip-DXJbdR5B.js +0 -40
  265. package/dist/chunks/Tooltip-DXJbdR5B.js.map +0 -1
  266. package/dist/chunks/segmentedControl.module-DCyuDbj1.js +0 -11
  267. package/dist/chunks/segmentedControl.module-DCyuDbj1.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReorderDragList-RSJqj18B.js","names":[],"sources":["../../src/useReorderDragList.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport type { ReactNode, PointerEvent as ReactPointerEvent, RefCallback } from 'react';\n\n/** One row in a reorderable list. */\nexport interface LayerListItem {\n id: string;\n label: ReactNode;\n /** Locked rows cannot be dragged, cannot be crossed by drops, and\n * never combine with other rows in a multi-selection. */\n locked?: boolean;\n /** Optional color swatch rendered before the label. Any CSS color string. */\n swatch?: string;\n}\n\n/**\n * Options for {@link useReorderDragList}. `onReorder` receives the dragged ids\n * and the index they were dropped at, measured against the pre-drag `items`.\n */\nexport interface UseReorderDragListOptions {\n items: LayerListItem[];\n selectedIds: string[];\n onReorder(ids: string[], targetIndex: number): void;\n /** Pointer-move distance (px) before pending drag engages. Default 4. */\n threshold?: number;\n}\n\n/**\n * Live drag state for rendering feedback: which ids are being dragged and the\n * insertion index the drop would use. Both `null` when no drag is engaged.\n */\nexport interface ReorderDragState {\n draggedIds: string[] | null;\n targetIndex: number | null;\n}\n\n/**\n * Props to spread onto the list container and each row, plus the live\n * {@link ReorderDragState}.\n */\nexport interface ReorderDragHandlers {\n rowProps(id: string, index: number): { onPointerDown(e: ReactPointerEvent): void };\n containerProps: {\n ref: RefCallback<HTMLElement>;\n onPointerMove(e: ReactPointerEvent): void;\n onPointerUp(e: ReactPointerEvent): void;\n onPointerCancel(e: ReactPointerEvent): void;\n };\n state: ReorderDragState;\n}\n\ninterface PendingState {\n id: string;\n sourceIndex: number;\n startX: number;\n startY: number;\n pointerId: number;\n}\n\ninterface ActiveState extends PendingState {\n draggedIds: string[];\n targetIndex: number;\n}\n\n/**\n * The half-open run of indices a row at `sourceIndex` may be dropped into:\n * bounded by the nearest locked row above and below it, so a locked row is a\n * wall in both directions rather than a global ceiling.\n */\nfunction unlockedSegment(items: readonly LayerListItem[], sourceIndex: number): [number, number] {\n let lo = 0;\n for (let i = sourceIndex - 1; i >= 0; i--) {\n if (items[i]?.locked) { lo = i + 1; break; }\n }\n let hi = items.length;\n for (let i = sourceIndex + 1; i < items.length; i++) {\n if (items[i]?.locked) { hi = i; break; }\n }\n return [lo, hi];\n}\n\n/**\n * Drag-to-reorder for a vertical list of rows. Dragging a row that is part of\n * the current selection drags the whole selection; dragging any other row\n * drags just that row. Locked rows can neither be dragged nor crossed by a\n * drop. A drop that would leave a contiguous block where it already is does\n * not call `onReorder`.\n *\n * The pointer is captured on the row, so a drag that leaves the list still\n * tracks and still releases cleanly.\n */\nexport function useReorderDragList(opts: UseReorderDragListOptions): ReorderDragHandlers {\n const { threshold = 4 } = opts;\n const optsRef = useRef(opts);\n optsRef.current = opts;\n const containerRef = useRef<HTMLElement | null>(null);\n const pendingRef = useRef<PendingState | null>(null);\n const activeRef = useRef<ActiveState | null>(null);\n const [state, setState] = useState<ReorderDragState>({ draggedIds: null, targetIndex: null });\n\n const computeTargetIndex = useCallback((clientY: number, sourceIndex: number): number => {\n const [lo, hi] = unlockedSegment(optsRef.current.items, sourceIndex);\n const c = containerRef.current;\n if (!c) return lo;\n const rows = Array.from(c.children) as HTMLElement[];\n let raw = rows.length;\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) continue;\n const r = row.getBoundingClientRect();\n if (clientY < r.bottom) { raw = i; break; }\n }\n return Math.max(lo, Math.min(raw, hi));\n }, []);\n\n const refCb = useCallback<RefCallback<HTMLElement>>((el) => {\n containerRef.current = el;\n }, []);\n\n const onPointerDownRow = useCallback((id: string, index: number, e: ReactPointerEvent) => {\n // Locked items cannot be dragged — skip recording the pending state so\n // pointer-move cannot engage. Plain click still works because LayerList\n // tracks click intent in its own ref, separate from drag candidacy.\n const item = optsRef.current.items[index];\n if (item?.locked) return;\n // Capture the pointer to the row so subsequent move/up events keep firing\n // (on the row, bubbling to the container) even when the user drags\n // outside the list's bounding box. Without capture, releasing outside\n // the container leaves the drag state stuck because pointerup fires on\n // the document, not the list.\n try { (e.currentTarget as Element).setPointerCapture?.(e.pointerId); } catch { /* unsupported / already captured */ }\n pendingRef.current = {\n id,\n sourceIndex: index,\n startX: e.clientX,\n startY: e.clientY,\n pointerId: e.pointerId,\n };\n }, []);\n\n const reset = useCallback(() => {\n pendingRef.current = null;\n activeRef.current = null;\n setState({ draggedIds: null, targetIndex: null });\n }, []);\n\n const onPointerMove = useCallback((e: ReactPointerEvent) => {\n const active = activeRef.current;\n if (active) {\n const targetIndex = computeTargetIndex(e.clientY, active.sourceIndex);\n if (targetIndex !== active.targetIndex) {\n active.targetIndex = targetIndex;\n setState({ draggedIds: active.draggedIds, targetIndex });\n }\n return;\n }\n const pending = pendingRef.current;\n if (!pending) return;\n const dx = e.clientX - pending.startX;\n const dy = e.clientY - pending.startY;\n if (Math.hypot(dx, dy) < threshold) return;\n // Engage.\n const selected = optsRef.current.selectedIds;\n const inSelection = selected.includes(pending.id);\n const [lo, hi] = unlockedSegment(optsRef.current.items, pending.sourceIndex);\n const draggedIds = (inSelection ? [...selected] : [pending.id]).filter((id) => {\n const i = optsRef.current.items.findIndex((it) => it.id === id);\n return i >= lo && i < hi;\n });\n const targetIndex = computeTargetIndex(e.clientY, pending.sourceIndex);\n activeRef.current = { ...pending, draggedIds, targetIndex };\n setState({ draggedIds, targetIndex });\n }, [computeTargetIndex, threshold]);\n\n const onPointerUp = useCallback((e: ReactPointerEvent) => {\n const active = activeRef.current;\n if (!active) {\n reset();\n return;\n }\n const targetIndex = computeTargetIndex(e.clientY, active.sourceIndex);\n // Skip no-op: target lands inside the dragged-ids contiguous block.\n const items = optsRef.current.items;\n const indices = active.draggedIds\n .map((id) => items.findIndex((it) => it.id === id))\n .filter((i) => i >= 0)\n .sort((a, b) => a - b);\n const isContiguous =\n indices.length > 0 &&\n indices.every((v, i) => {\n if (i === 0) return true;\n const prev = indices[i - 1];\n return prev !== undefined && v === prev + 1;\n });\n const first = indices[0];\n const last = indices[indices.length - 1];\n const wouldBeNoop =\n isContiguous &&\n first !== undefined &&\n last !== undefined &&\n targetIndex >= first &&\n targetIndex <= last + 1;\n if (!wouldBeNoop) {\n optsRef.current.onReorder(active.draggedIds, targetIndex);\n }\n reset();\n }, [computeTargetIndex, reset]);\n\n const onPointerCancel = useCallback(() => {\n reset();\n }, [reset]);\n\n return {\n rowProps: (id, index) => ({\n onPointerDown: (e) => onPointerDownRow(id, index, e),\n }),\n containerProps: {\n ref: refCb,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n },\n state,\n };\n}\n"],"mappings":";;AAoEA,SAAS,EAAgB,GAAiC,GAAuC;CAC/F,IAAI,IAAK;AACT,MAAK,IAAI,IAAI,IAAc,GAAG,KAAK,GAAG,IACpC,KAAI,EAAM,IAAI,QAAQ;AAAE,MAAK,IAAI;AAAG;;CAEtC,IAAI,IAAK,EAAM;AACf,MAAK,IAAI,IAAI,IAAc,GAAG,IAAI,EAAM,QAAQ,IAC9C,KAAI,EAAM,IAAI,QAAQ;AAAE,MAAK;AAAG;;AAElC,QAAO,CAAC,GAAI,EAAG;;AAajB,SAAgB,EAAmB,GAAsD;CACvF,IAAM,EAAE,eAAY,MAAM,GACpB,IAAU,EAAO,EAAK;AAC5B,GAAQ,UAAU;CAClB,IAAM,IAAe,EAA2B,KAAK,EAC/C,IAAa,EAA4B,KAAK,EAC9C,IAAY,EAA2B,KAAK,EAC5C,CAAC,GAAO,KAAY,EAA2B;EAAE,YAAY;EAAM,aAAa;EAAM,CAAC,EAEvF,IAAqB,GAAa,GAAiB,MAAgC;EACvF,IAAM,CAAC,GAAI,KAAM,EAAgB,EAAQ,QAAQ,OAAO,EAAY,EAC9D,IAAI,EAAa;AACvB,MAAI,CAAC,EAAG,QAAO;EACf,IAAM,IAAO,MAAM,KAAK,EAAE,SAAS,EAC/B,IAAM,EAAK;AACf,OAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,KAAK;GACpC,IAAM,IAAM,EAAK;AACZ,YAED,IADM,EAAI,uBACA,CAAE,QAAQ;AAAE,QAAM;AAAG;;;AAErC,SAAO,KAAK,IAAI,GAAI,KAAK,IAAI,GAAK,EAAG,CAAC;IACrC,EAAE,CAAC,EAEA,IAAQ,GAAuC,MAAO;AAC1D,IAAa,UAAU;IACtB,EAAE,CAAC,EAEA,IAAmB,GAAa,GAAY,GAAe,MAAyB;AAI3E,SAAQ,QAAQ,MAAM,IACzB,QAMV;OAAI;AAAG,MAAE,cAA0B,oBAAoB,EAAE,UAAU;WAAU;AAC7E,KAAW,UAAU;IACnB;IACA,aAAa;IACb,QAAQ,EAAE;IACV,QAAQ,EAAE;IACV,WAAW,EAAE;IACd;;IACA,EAAE,CAAC,EAEA,IAAQ,QAAkB;AAG9B,EAFA,EAAW,UAAU,MACrB,EAAU,UAAU,MACpB,EAAS;GAAE,YAAY;GAAM,aAAa;GAAM,CAAC;IAChD,EAAE,CAAC;AAoEN,QAAO;EACL,WAAW,GAAI,OAAW,EACxB,gBAAgB,MAAM,EAAiB,GAAI,GAAO,EAAE,EACrD;EACD,gBAAgB;GACd,KAAK;GACL,eAxEkB,GAAa,MAAyB;IAC1D,IAAM,IAAS,EAAU;AACzB,QAAI,GAAQ;KACV,IAAM,IAAc,EAAmB,EAAE,SAAS,EAAO,YAAY;AACrE,KAAI,MAAgB,EAAO,gBACzB,EAAO,cAAc,GACrB,EAAS;MAAE,YAAY,EAAO;MAAY;MAAa,CAAC;AAE1D;;IAEF,IAAM,IAAU,EAAW;AAC3B,QAAI,CAAC,EAAS;IACd,IAAM,IAAK,EAAE,UAAU,EAAQ,QACzB,IAAK,EAAE,UAAU,EAAQ;AAC/B,QAAI,KAAK,MAAM,GAAI,EAAG,GAAG,EAAW;IAEpC,IAAM,IAAW,EAAQ,QAAQ,aAC3B,IAAc,EAAS,SAAS,EAAQ,GAAG,EAC3C,CAAC,GAAI,KAAM,EAAgB,EAAQ,QAAQ,OAAO,EAAQ,YAAY,EACtE,KAAc,IAAc,CAAC,GAAG,EAAS,GAAG,CAAC,EAAQ,GAAG,EAAE,QAAQ,MAAO;KAC7E,IAAM,IAAI,EAAQ,QAAQ,MAAM,WAAW,MAAO,EAAG,OAAO,EAAG;AAC/D,YAAO,KAAK,KAAM,IAAI;MACtB,EACI,IAAc,EAAmB,EAAE,SAAS,EAAQ,YAAY;AAEtE,IADA,EAAU,UAAU;KAAE,GAAG;KAAS;KAAY;KAAa,EAC3D,EAAS;KAAE;KAAY;KAAa,CAAC;MACpC,CAAC,GAAoB,EAAU,CA8C9B;GACA,aA7CgB,GAAa,MAAyB;IACxD,IAAM,IAAS,EAAU;AACzB,QAAI,CAAC,GAAQ;AACX,QAAO;AACP;;IAEF,IAAM,IAAc,EAAmB,EAAE,SAAS,EAAO,YAAY,EAE/D,IAAQ,EAAQ,QAAQ,OACxB,IAAU,EAAO,WACpB,KAAK,MAAO,EAAM,WAAW,MAAO,EAAG,OAAO,EAAG,CAAC,CAClD,QAAQ,MAAM,KAAK,EAAE,CACrB,MAAM,GAAG,MAAM,IAAI,EAAE,EAClB,IACJ,EAAQ,SAAS,KACjB,EAAQ,OAAO,GAAG,MAAM;AACtB,SAAI,MAAM,EAAG,QAAO;KACpB,IAAM,IAAO,EAAQ,IAAI;AACzB,YAAO,MAAS,KAAA,KAAa,MAAM,IAAO;MAC1C,EACE,IAAQ,EAAQ,IAChB,IAAO,EAAQ,EAAQ,SAAS;AAUtC,IARE,KACA,MAAU,KAAA,KACV,MAAS,KAAA,KACT,KAAe,KACf,KAAe,IAAO,KAEtB,EAAQ,QAAQ,UAAU,EAAO,YAAY,EAAY,EAE3D,GAAO;MACN,CAAC,GAAoB,EAAM,CAa1B;GACA,iBAZoB,QAAkB;AACxC,OAAO;MACN,CAAC,EAAM,CAUN;GACD;EACD;EACD"}
@@ -62,4 +62,4 @@ function a(a) {
62
62
  //#endregion
63
63
  export { a as t };
64
64
 
65
- //# sourceMappingURL=useRovingTabIndex-DBZtq4IH.js.map
65
+ //# sourceMappingURL=useRovingTabIndex-CuUl6DLF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRovingTabIndex-DBZtq4IH.js","names":[],"sources":["../../src/useRovingTabIndex.ts"],"sourcesContent":["import { useRef, type KeyboardEvent as ReactKeyboardEvent, type RefObject } from 'react';\n\n/** The only thing the hook needs to know about a bar's items: which are\n * skipped by arrow navigation. */\nexport type RovingItem = { disabled?: boolean };\n\n/** Options for {@link useRovingTabIndex}. */\nexport type UseRovingTabIndexOptions = {\n /** In the same order as the elements carrying `itemClassName`. */\n items: readonly RovingItem[];\n /** Class on the focusable element of each item, inside the container the\n * returned `rootRef` is attached to. Their DOM order must match `items`. */\n itemClassName: string;\n /** Index that carries `tabIndex=0`. Defaults to the first enabled item; a\n * radiogroup-style bar passes its selected index so Tab lands on the\n * current value. */\n tabStopIndex?: number;\n /** Called with the new index as arrow/Home/End focus moves, before focus\n * moves. This is where a selection-follows-focus bar commits the value. */\n onNavigate?: (index: number) => void;\n /** Space/Enter on the item at `index`. When omitted the keypress is left\n * alone, which on a native `<button>` produces an ordinary click. */\n onActivate?: (index: number) => void;\n};\n\n/**\n * What {@link useRovingTabIndex} returns: a container ref plus the per-item\n * `tabIndex` and `onKeyDown` values to spread onto each item.\n */\nexport type RovingTabIndex<T extends HTMLElement = HTMLDivElement> = {\n /** Attach to the container element that holds the items. */\n rootRef: RefObject<T | null>;\n /** `tabIndex` value for the item at `index`. */\n tabIndexFor: (index: number) => 0 | -1;\n /** `onKeyDown` for the item at `index`. */\n onKeyDown: (index: number) => (e: ReactKeyboardEvent<HTMLElement>) => void;\n};\n\nfunction firstEnabledIndex(items: readonly RovingItem[]): number {\n for (let i = 0; i < items.length; i++) if (!items[i].disabled) return i;\n return -1;\n}\n\nfunction lastEnabledIndex(items: readonly RovingItem[]): number {\n for (let i = items.length - 1; i >= 0; i--) if (!items[i].disabled) return i;\n return -1;\n}\n\nfunction nextEnabledIndex(items: readonly RovingItem[], from: number): number {\n const n = items.length;\n for (let k = 1; k <= n; k++) {\n const i = (from + k + n) % n;\n if (!items[i].disabled) return i;\n }\n return from;\n}\n\nfunction prevEnabledIndex(items: readonly RovingItem[], from: number): number {\n const n = items.length;\n for (let k = 1; k <= n; k++) {\n const i = (from - k + n) % n;\n if (!items[i].disabled) return i;\n }\n return from;\n}\n\n/**\n * Roving tabindex for a bar of items: one item is in the tab order, and the\n * arrow keys move focus among the rest, skipping disabled ones and wrapping\n * at both ends. Home and End go to the first and last enabled item. Both axes\n * navigate, so the same bar works laid out either way.\n *\n * Backs `ActionsBar`, `OptionsBar`, and `ToggleBar`.\n *\n * **When a bar should not use this.** Only when the bar owns its items. A\n * container of arbitrary compound controls — a number field, a select, a\n * color field — must leave the arrow keys alone, because those controls edit\n * their own value with them; taking the arrows over would break the control\n * to navigate between controls. `ToolOptionsBar` is that case and keeps plain\n * DOM tab order. A bar whose items are all simple buttons is the case this\n * hook is for.\n *\n * With every item disabled there is no tab stop and the bar drops out of the\n * tab order entirely.\n */\nexport function useRovingTabIndex<T extends HTMLElement = HTMLDivElement>(\n options: UseRovingTabIndexOptions,\n): RovingTabIndex<T> {\n const { items, itemClassName, onNavigate, onActivate } = options;\n const rootRef = useRef<T | null>(null);\n\n const tabStopIndex = options.tabStopIndex ?? firstEnabledIndex(items);\n\n const focusItem = (index: number): void => {\n const root = rootRef.current;\n if (!root) return;\n const elements = root.querySelectorAll<HTMLElement>(`.${itemClassName}`);\n elements[index]?.focus();\n };\n\n const onKeyDown = (index: number) => (e: ReactKeyboardEvent<HTMLElement>): void => {\n let nextIndex = -1;\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex = prevEnabledIndex(items, index);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex = nextEnabledIndex(items, index);\n break;\n case 'Home':\n nextIndex = firstEnabledIndex(items);\n break;\n case 'End':\n nextIndex = lastEnabledIndex(items);\n break;\n case ' ':\n case 'Enter':\n if (onActivate) {\n e.preventDefault();\n onActivate(index);\n }\n return;\n default:\n return;\n }\n if (nextIndex < 0 || nextIndex === index) return;\n e.preventDefault();\n onNavigate?.(nextIndex);\n focusItem(nextIndex);\n };\n\n return {\n rootRef,\n tabIndexFor: (index: number) => (index === tabStopIndex ? 0 : -1),\n onKeyDown,\n };\n}\n"],"mappings":";;AAsCA,SAAS,EAAkB,GAAsC;AAC/D,MAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAK,KAAI,CAAC,EAAM,GAAG,SAAU,QAAO;AACtE,QAAO;;AAGT,SAAS,EAAiB,GAAsC;AAC9D,MAAK,IAAI,IAAI,EAAM,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,CAAC,EAAM,GAAG,SAAU,QAAO;AAC3E,QAAO;;AAGT,SAAS,EAAiB,GAA8B,GAAsB;CAC5E,IAAM,IAAI,EAAM;AAChB,MAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;EAC3B,IAAM,KAAK,IAAO,IAAI,KAAK;AAC3B,MAAI,CAAC,EAAM,GAAG,SAAU,QAAO;;AAEjC,QAAO;;AAGT,SAAS,EAAiB,GAA8B,GAAsB;CAC5E,IAAM,IAAI,EAAM;AAChB,MAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;EAC3B,IAAM,KAAK,IAAO,IAAI,KAAK;AAC3B,MAAI,CAAC,EAAM,GAAG,SAAU,QAAO;;AAEjC,QAAO;;AAsBT,SAAgB,EACd,GACmB;CACnB,IAAM,EAAE,UAAO,kBAAe,eAAY,kBAAe,GACnD,IAAU,EAAiB,KAAK,EAEhC,IAAe,EAAQ,gBAAgB,EAAkB,EAAM,EAE/D,KAAa,MAAwB;EACzC,IAAM,IAAO,EAAQ;AAChB,OACY,EAAK,iBAA8B,IAAI,IACxD,CAAS,IAAQ,OAAO;;AAoC1B,QAAO;EACL;EACA,cAAc,MAAmB,MAAU,IAAe,IAAI;EAC9D,YApCiB,OAAmB,MAA6C;GACjF,IAAI,IAAY;AAChB,WAAQ,EAAE,KAAV;IACE,KAAK;IACL,KAAK;AACH,SAAY,EAAiB,GAAO,EAAM;AAC1C;IACF,KAAK;IACL,KAAK;AACH,SAAY,EAAiB,GAAO,EAAM;AAC1C;IACF,KAAK;AACH,SAAY,EAAkB,EAAM;AACpC;IACF,KAAK;AACH,SAAY,EAAiB,EAAM;AACnC;IACF,KAAK;IACL,KAAK;AACH,KAAI,MACF,EAAE,gBAAgB,EAClB,EAAW,EAAM;AAEnB;IACF,QACE;;AAEA,OAAY,KAAK,MAAc,MACnC,EAAE,gBAAgB,EAClB,IAAa,EAAU,EACvB,EAAU,EAAU;;EAOrB"}
1
+ {"version":3,"file":"useRovingTabIndex-CuUl6DLF.js","names":[],"sources":["../../src/useRovingTabIndex.ts"],"sourcesContent":["import { useRef, type KeyboardEvent as ReactKeyboardEvent, type RefObject } from 'react';\n\n/** The only thing the hook needs to know about a bar's items: which are\n * skipped by arrow navigation. */\nexport type RovingItem = { disabled?: boolean };\n\n/** Options for {@link useRovingTabIndex}. */\nexport type UseRovingTabIndexOptions = {\n /** In the same order as the elements carrying `itemClassName`. */\n items: readonly RovingItem[];\n /** Class on the focusable element of each item, inside the container the\n * returned `rootRef` is attached to. Their DOM order must match `items`. */\n itemClassName: string;\n /** Index that carries `tabIndex=0`. Defaults to the first enabled item; a\n * radiogroup-style bar passes its selected index so Tab lands on the\n * current value. */\n tabStopIndex?: number;\n /** Called with the new index as arrow/Home/End focus moves, before focus\n * moves. This is where a selection-follows-focus bar commits the value. */\n onNavigate?: (index: number) => void;\n /** Space/Enter on the item at `index`. When omitted the keypress is left\n * alone, which on a native `<button>` produces an ordinary click. */\n onActivate?: (index: number) => void;\n};\n\n/**\n * What {@link useRovingTabIndex} returns: a container ref plus the per-item\n * `tabIndex` and `onKeyDown` values to spread onto each item.\n */\nexport type RovingTabIndex<T extends HTMLElement = HTMLDivElement> = {\n /** Attach to the container element that holds the items. */\n rootRef: RefObject<T | null>;\n /** `tabIndex` value for the item at `index`. */\n tabIndexFor: (index: number) => 0 | -1;\n /** `onKeyDown` for the item at `index`. */\n onKeyDown: (index: number) => (e: ReactKeyboardEvent<HTMLElement>) => void;\n};\n\nfunction firstEnabledIndex(items: readonly RovingItem[]): number {\n for (let i = 0; i < items.length; i++) if (!items[i].disabled) return i;\n return -1;\n}\n\nfunction lastEnabledIndex(items: readonly RovingItem[]): number {\n for (let i = items.length - 1; i >= 0; i--) if (!items[i].disabled) return i;\n return -1;\n}\n\nfunction nextEnabledIndex(items: readonly RovingItem[], from: number): number {\n const n = items.length;\n for (let k = 1; k <= n; k++) {\n const i = (from + k + n) % n;\n if (!items[i].disabled) return i;\n }\n return from;\n}\n\nfunction prevEnabledIndex(items: readonly RovingItem[], from: number): number {\n const n = items.length;\n for (let k = 1; k <= n; k++) {\n const i = (from - k + n) % n;\n if (!items[i].disabled) return i;\n }\n return from;\n}\n\n/**\n * Roving tabindex for a bar of items: one item is in the tab order, and the\n * arrow keys move focus among the rest, skipping disabled ones and wrapping\n * at both ends. Home and End go to the first and last enabled item. Both axes\n * navigate, so the same bar works laid out either way.\n *\n * Backs `ActionsBar`, `OptionsBar`, and `ToggleBar`.\n *\n * **When a bar should not use this.** Only when the bar owns its items. A\n * container of arbitrary compound controls — a number field, a select, a\n * color field — must leave the arrow keys alone, because those controls edit\n * their own value with them; taking the arrows over would break the control\n * to navigate between controls. `ToolOptionsBar` is that case and keeps plain\n * DOM tab order. A bar whose items are all simple buttons is the case this\n * hook is for.\n *\n * With every item disabled there is no tab stop and the bar drops out of the\n * tab order entirely.\n */\nexport function useRovingTabIndex<T extends HTMLElement = HTMLDivElement>(\n options: UseRovingTabIndexOptions,\n): RovingTabIndex<T> {\n const { items, itemClassName, onNavigate, onActivate } = options;\n const rootRef = useRef<T | null>(null);\n\n const tabStopIndex = options.tabStopIndex ?? firstEnabledIndex(items);\n\n const focusItem = (index: number): void => {\n const root = rootRef.current;\n if (!root) return;\n const elements = root.querySelectorAll<HTMLElement>(`.${itemClassName}`);\n elements[index]?.focus();\n };\n\n const onKeyDown = (index: number) => (e: ReactKeyboardEvent<HTMLElement>): void => {\n let nextIndex = -1;\n switch (e.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex = prevEnabledIndex(items, index);\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex = nextEnabledIndex(items, index);\n break;\n case 'Home':\n nextIndex = firstEnabledIndex(items);\n break;\n case 'End':\n nextIndex = lastEnabledIndex(items);\n break;\n case ' ':\n case 'Enter':\n if (onActivate) {\n e.preventDefault();\n onActivate(index);\n }\n return;\n default:\n return;\n }\n if (nextIndex < 0 || nextIndex === index) return;\n e.preventDefault();\n onNavigate?.(nextIndex);\n focusItem(nextIndex);\n };\n\n return {\n rootRef,\n tabIndexFor: (index: number) => (index === tabStopIndex ? 0 : -1),\n onKeyDown,\n };\n}\n"],"mappings":";;AAsCA,SAAS,EAAkB,GAAsC;AAC/D,MAAK,IAAI,IAAI,GAAG,IAAI,EAAM,QAAQ,IAAK,KAAI,CAAC,EAAM,GAAG,SAAU,QAAO;AACtE,QAAO;;AAGT,SAAS,EAAiB,GAAsC;AAC9D,MAAK,IAAI,IAAI,EAAM,SAAS,GAAG,KAAK,GAAG,IAAK,KAAI,CAAC,EAAM,GAAG,SAAU,QAAO;AAC3E,QAAO;;AAGT,SAAS,EAAiB,GAA8B,GAAsB;CAC5E,IAAM,IAAI,EAAM;AAChB,MAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;EAC3B,IAAM,KAAK,IAAO,IAAI,KAAK;AAC3B,MAAI,CAAC,EAAM,GAAG,SAAU,QAAO;;AAEjC,QAAO;;AAGT,SAAS,EAAiB,GAA8B,GAAsB;CAC5E,IAAM,IAAI,EAAM;AAChB,MAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;EAC3B,IAAM,KAAK,IAAO,IAAI,KAAK;AAC3B,MAAI,CAAC,EAAM,GAAG,SAAU,QAAO;;AAEjC,QAAO;;AAsBT,SAAgB,EACd,GACmB;CACnB,IAAM,EAAE,UAAO,kBAAe,eAAY,kBAAe,GACnD,IAAU,EAAiB,KAAK,EAEhC,IAAe,EAAQ,gBAAgB,EAAkB,EAAM,EAE/D,KAAa,MAAwB;EACzC,IAAM,IAAO,EAAQ;AAChB,OACY,EAAK,iBAA8B,IAAI,IACxD,CAAS,IAAQ,OAAO;;AAoC1B,QAAO;EACL;EACA,cAAc,MAAmB,MAAU,IAAe,IAAI;EAC9D,YApCiB,OAAmB,MAA6C;GACjF,IAAI,IAAY;AAChB,WAAQ,EAAE,KAAV;IACE,KAAK;IACL,KAAK;AACH,SAAY,EAAiB,GAAO,EAAM;AAC1C;IACF,KAAK;IACL,KAAK;AACH,SAAY,EAAiB,GAAO,EAAM;AAC1C;IACF,KAAK;AACH,SAAY,EAAkB,EAAM;AACpC;IACF,KAAK;AACH,SAAY,EAAiB,EAAM;AACnC;IACF,KAAK;IACL,KAAK;AACH,KAAI,MACF,EAAE,gBAAgB,EAClB,EAAW,EAAM;AAEnB;IACF,QACE;;AAEA,OAAY,KAAK,MAAc,MACnC,EAAE,gBAAgB,EAClB,IAAa,EAAU,EACvB,EAAU,EAAU;;EAOrB"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ActionBar-BvPEd_GW.js";
1
+ import { t as e } from "../../chunks/ActionBar-BTev_ZZl.js";
2
2
  export { e as ActionBar };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ActionsBar-9aR5N3lU.js";
1
+ import { t as e } from "../../chunks/ActionsBar-CBi_dV4B.js";
2
2
  export { e as ActionsBar };
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAEhH,OAAO,EAAU,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAW,KAAK,UAAU,EAAoB,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;wCAEoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,+GAA+G;IAC/G,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,mGAAmG;IACnG,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,oEAAoE;IACpE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;iFAC6E;IAC7E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,iBAAiB,GAAG;KACtB,CAAC,IAAI,UAAU,GAAG,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAAE;CACrF,CAAC,UAAU,CAAC,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAS3C;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CAqQtC"}
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGhH,OAAO,EAAU,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAW,KAAK,UAAU,EAAoB,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE9E,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;wCAEoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,+GAA+G;IAC/G,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,mGAAmG;IACnG,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,oEAAoE;IACpE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;iFAC6E;IAC7E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,iBAAiB,GAAG;KACtB,CAAC,IAAI,UAAU,GAAG,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAAE;CACrF,CAAC,UAAU,CAAC,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAS3C;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,2CA8QtC"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Badge-dQzbkk-C.js";
1
+ import { t as e } from "../../chunks/Badge-9dPfvYOk.js";
2
2
  export { e as Badge };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../chunks/BandEditor-D3i6l299.js";
1
+ import { n as e, r as t, t as n } from "../../chunks/BandEditor-DeE-Nhyh.js";
2
2
  export { n as BandEditor, e as linearScale, t as logScale };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Button-9QNIYugK.js";
1
+ import { t as e } from "../../chunks/Button-CIu40Epu.js";
2
2
  export { e as Button };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../chunks/Callout-cJHJ4kIN.js";
1
+ import { n as e, t } from "../../chunks/Callout-CxDNb9iE.js";
2
2
  export { t as Callout, e as CalloutTrigger };
@@ -12,7 +12,7 @@ export type CheckboxProps = Omit<RACCheckboxProps, 'children' | 'className'> & {
12
12
  * Single checkbox wrapping React Aria's Checkbox. Supports indeterminate
13
13
  * via `isIndeterminate`. The label is supplied as children.
14
14
  */
15
- export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<RACCheckboxProps, "children" | "className"> & {
15
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<Omit<RACCheckboxProps, "className" | "children"> & {
16
16
  children?: ReactNode;
17
17
  className?: string;
18
18
  } & import("react").RefAttributes<HTMLLabelElement>>;
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Checkbox-KQ5L8APP.js";
1
+ import { t as e } from "../../chunks/Checkbox-Chtrlh19.js";
2
2
  export { e as Checkbox };
@@ -1 +1 @@
1
- {"version":3,"file":"ColorField.d.ts","sourceRoot":"","sources":["../../../src/components/ColorField/ColorField.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;8BAI0B;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;uEACmE;IACnE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;yDACqD;IACrD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA4EhD"}
1
+ {"version":3,"file":"ColorField.d.ts","sourceRoot":"","sources":["../../../src/components/ColorField/ColorField.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;8BAI0B;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;uEACmE;IACnE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;yDACqD;IACrD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CA2EhD"}
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/ColorField-ykpiD3XU.js";
1
+ import { t as e } from "../../chunks/ColorField-CSSRv3jG.js";
2
2
  export { e as ColorField };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../chunks/ComboBox-ONQISwtI.js";
1
+ import { n as e, t } from "../../chunks/ComboBox-BIQ8KP4h.js";
2
2
  export { t as ComboBox, e as ComboBoxItem };
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../../chunks/CurveEditor-SmwwvrsA.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../../chunks/CurveEditor-DiJk0NhK.js";
2
2
  export { n as CurveEditor, i as LayeredCurveEditor, t as createFunctionLayer, a as createSetCurveOp, e as functionLayerState, r as sampleByInterpolation };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/DataGrid-DZQ4Chbd.js";
1
+ import { t as e } from "../../chunks/DataGrid-BgiEYBLo.js";
2
2
  export { e as DataGrid };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Dialog-CqwdJv_t.js";
1
+ import { t as e } from "../../chunks/Dialog-RzrboT4Q.js";
2
2
  export { e as Dialog };
@@ -0,0 +1,12 @@
1
+ /** Props for `<DragHandleGlyph>`. */
2
+ export interface DragHandleGlyphProps {
3
+ /** Height in px; width scales with it. Default 16. */
4
+ size?: number;
5
+ }
6
+ /** The two-column dot grip used on anything draggable by a handle.
7
+ *
8
+ * Deliberately not part of the icon register: that register is outline strokes
9
+ * at a fixed weight, and a grip is filled dots. Forcing it in would either
10
+ * break the register's rule or produce a worse glyph. */
11
+ export declare function DragHandleGlyph({ size }: DragHandleGlyphProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=DragHandleGlyph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragHandleGlyph.d.ts","sourceRoot":"","sources":["../../../src/components/DragHandleGlyph/DragHandleGlyph.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;0DAI0D;AAC1D,wBAAgB,eAAe,CAAC,EAAE,IAAS,EAAE,EAAE,oBAAoB,2CAiBlE"}
@@ -0,0 +1,3 @@
1
+ export type { DragHandleGlyphProps } from './DragHandleGlyph';
2
+ export { DragHandleGlyph } from './DragHandleGlyph';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/DragHandleGlyph/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../chunks/DragHandleGlyph-CJbzRigu.js";
2
+ export { e as DragHandleGlyph };
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../chunks/Field-VQwmrIna.js";
1
+ import { n as e, t } from "../../chunks/Field-DrRby9vo.js";
2
2
  export { t as Field, e as fieldClasses };
@@ -0,0 +1,41 @@
1
+ import { type ReactElement, type RefObject } from 'react';
2
+ import { type FillStyle, type RectPose, type Scene, type Stroke, type View } from '@weasel-js/core';
3
+ /** The paint slots a node carries. Either may hold a gradient, and each has
4
+ * its own action, so the overlay is told which one it is editing. */
5
+ export type PaintSlot = 'fill' | 'stroke';
6
+ /** What `SceneGradientHandles` reads off a node. Every field is optional, so
7
+ * any richer app data shape satisfies it. */
8
+ export interface PaintedNodeData {
9
+ fill?: FillStyle | null;
10
+ stroke?: Stroke | null;
11
+ }
12
+ export interface SceneGradientHandlesProps<TData extends PaintedNodeData, TLayer extends string, TPose extends RectPose> {
13
+ scene: Scene<TData, TLayer, TPose>;
14
+ /** The element the overlay is positioned in. Must be the canvas's own box,
15
+ * or the handles land somewhere other than the paint. */
16
+ containerRef: RefObject<HTMLElement | null>;
17
+ /** The node whose paint is being edited — usually the lone selected id. */
18
+ nodeId: string | null | undefined;
19
+ /** Which of the node's two paints these handles move. */
20
+ slot: PaintSlot;
21
+ /** Current viewport; a thunk is re-read per projection. See
22
+ * `useNodeOverlayFrame`. */
23
+ view?: View | (() => View);
24
+ className?: string;
25
+ }
26
+ /**
27
+ * Scene-aware `GradientHandles`: on-canvas geometry handles for the gradient
28
+ * in one node's `fill` or `stroke`, committed through the `setFill` /
29
+ * `setStroke` actions as a single undo entry per drag.
30
+ *
31
+ * Renders nothing unless the targeted slot holds a gradient. The node stores
32
+ * its gradient in `units: 'bounds'` — fractions of its own box, so the paint
33
+ * survives pan, zoom and resize — which is not a frame polar math can work
34
+ * in; the handles get it resolved onto the box and every edit is normalized
35
+ * back on the way out.
36
+ *
37
+ * `slot` is a prop rather than state the kit keeps: an app that edits fill
38
+ * and stroke separately already knows which one has focus.
39
+ */
40
+ export declare function SceneGradientHandles<TData extends PaintedNodeData, TLayer extends string, TPose extends RectPose>(props: SceneGradientHandlesProps<TData, TLayer, TPose>): ReactElement | null;
41
+ //# sourceMappingURL=SceneGradientHandles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneGradientHandles.d.ts","sourceRoot":"","sources":["../../../src/components/GradientEditor/SceneGradientHandles.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAML,KAAK,SAAS,EAEd,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,MAAM,EAEX,KAAK,IAAI,EACV,MAAM,iBAAiB,CAAC;AAGzB;sEACsE;AACtE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1C;8CAC8C;AAC9C,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB,CACxC,KAAK,SAAS,eAAe,EAC7B,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,QAAQ;IAEtB,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC;8DAC0D;IAC1D,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,yDAAyD;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB;iCAC6B;IAC7B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,MAAM,SAAS,MAAM,EACrB,KAAK,SAAS,QAAQ,EACtB,KAAK,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,GAAG,IAAI,CAgC7E"}
@@ -1,3 +1,4 @@
1
1
  export { GradientEditor, type GradientEditorProps } from './GradientEditor';
2
2
  export { GradientHandles, type GradientHandlesProps } from './GradientHandles';
3
+ export { SceneGradientHandles, type SceneGradientHandlesProps, type PaintSlot, type PaintedNodeData, } from './SceneGradientHandles';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/GradientEditor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/GradientEditor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC"}
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "../../chunks/GradientEditor-Bg6SX64V.js";
2
- export { e as GradientEditor, t as GradientHandles };
1
+ import { n as e, r as t, t as n } from "../../chunks/GradientEditor-BuVR6pt-.js";
2
+ export { t as GradientEditor, e as GradientHandles, n as SceneGradientHandles };
@@ -0,0 +1,17 @@
1
+ import { type InputHTMLAttributes, type ReactElement } from 'react';
2
+ /** Props for {@link InlineRange} — a range input's, with `value` required. */
3
+ export type InlineRangeProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'min' | 'max'> & {
4
+ value: number;
5
+ min?: number;
6
+ max?: number;
7
+ };
8
+ /**
9
+ * Compact range input for a property row: one track, no label, no output.
10
+ *
11
+ * Distinct from the kit's other two — `Slider` is shaped for canvas scrubbing,
12
+ * and `RangeSlider` is a full-width labelled form control on React Aria. This
13
+ * one exists to sit inline beside a swatch or a readout, and to own the track
14
+ * painting both of those surfaces need.
15
+ */
16
+ export declare function InlineRange(props: InlineRangeProps): ReactElement;
17
+ //# sourceMappingURL=InlineRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineRange.d.ts","sourceRoot":"","sources":["../../../src/components/InlineRange/InlineRange.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGxF,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CACjC,GAAG;IACF,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAejE"}
@@ -0,0 +1,2 @@
1
+ export { InlineRange, type InlineRangeProps } from './InlineRange';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/InlineRange/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../chunks/InlineRange-B-Jkv8AA.js";
2
+ export { e as InlineRange };
@@ -17,7 +17,7 @@ export type InputProps = Omit<RACTextFieldProps, 'children' | 'className'> & {
17
17
  *
18
18
  * `ref` forwards to the underlying `<input>`.
19
19
  */
20
- export declare const Input: import("react").ForwardRefExoticComponent<Omit<RACTextFieldProps, "children" | "className"> & {
20
+ export declare const Input: import("react").ForwardRefExoticComponent<Omit<RACTextFieldProps, "className" | "children"> & {
21
21
  label?: ReactNode;
22
22
  description?: ReactNode;
23
23
  errorMessage?: ReactNode | ((v: ValidationResult) => ReactNode);
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/Input-DpkwYtUY.js";
1
+ import { t as e } from "../../chunks/Input-BnxOPY4N.js";
2
2
  export { e as Input };
@@ -1,3 +1,3 @@
1
- import { a as e, i as t, n, o as r, r as i, t as a } from "../../chunks/Keycaps-CFX7UAj8.js";
2
- import { t as o } from "../../chunks/keyGlyph-BDH5fqkO.js";
1
+ import { a as e, i as t, n, o as r, r as i, t as a } from "../../chunks/Keycaps-Dk33JOiH.js";
2
+ import { t as o } from "../../chunks/keyGlyph-D3X08tSp.js";
3
3
  export { e as KeyCap, t as KeySequence, a as detectPlatform, r as inferKeycapKind, o as keyGlyph, n as keySpecFromKey, i as keySpecsFromMods };
@@ -0,0 +1,49 @@
1
+ import { type ReactNode } from 'react';
2
+ /** One card in a layer stack: its identity, the label shown when collapsed,
3
+ * and the optional select hoisted into its header. */
4
+ export interface LayerStackItem {
5
+ /** Stable id used for keys, onRemove, onReorder. Numeric to match
6
+ * common id-from-nextId conventions; string ids also work. */
7
+ id: number | string;
8
+ /** Short kind label rendered in the header when no primary select
9
+ * is hoisted (e.g. "shadow", "stroke"). */
10
+ kind: string;
11
+ /** When present, hoist this select into the card header so the user
12
+ * can switch mode/shape without expanding. */
13
+ primaryValue?: string;
14
+ primaryOptions?: string[];
15
+ /** Accent CSS color used as the left border / index-badge fill. Sets
16
+ * --wzl-layer-stack-accent on the card, which re-binds --wzl-accent
17
+ * for everything inside it. */
18
+ accent?: string;
19
+ /** Optional badge text rendered before the primary control
20
+ * (e.g. tail index "1", "2", "3"). When omitted a drag handle
21
+ * glyph renders in its place. */
22
+ badge?: string;
23
+ /** Initial expanded state. Defaults to true for newly-added items. */
24
+ defaultExpanded?: boolean;
25
+ }
26
+ /** Props for `<LayerStack>`. */
27
+ export interface LayerStackProps {
28
+ title: string;
29
+ items: LayerStackItem[];
30
+ /** Kinds the user can add via the header palette. */
31
+ paletteKinds: string[];
32
+ onAdd: (kind: string) => void;
33
+ onRemove: (id: number | string) => void;
34
+ onReorder: (orderedIds: Array<number | string>) => void;
35
+ onPrimaryChange: (id: number | string, nextValue: string) => void;
36
+ /** Render the body controls for each item. */
37
+ renderBody: (item: LayerStackItem) => ReactNode;
38
+ /** Hide the title + palette row (used when an outer wrap renders its
39
+ * own head — see speech-balloons Tails panel). */
40
+ hideHead?: boolean;
41
+ /** Appended to the root element's class list. The module's own class names
42
+ * are hashed, so this is the supported way to reach the stack from a
43
+ * consumer stylesheet. */
44
+ className?: string;
45
+ }
46
+ /** A drag-reorderable stack of expandable cards, with a palette in the header
47
+ * for adding more. The body of each card is the caller's to render. */
48
+ export declare function LayerStack({ className, title, items, paletteKinds, onAdd, onRemove, onReorder, onPrimaryChange, renderBody, hideHead, }: LayerStackProps): import("react/jsx-runtime").JSX.Element;
49
+ //# sourceMappingURL=LayerStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LayerStack.d.ts","sourceRoot":"","sources":["../../../src/components/LayerStack/LayerStack.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,SAAS,EAAyC,MAAM,OAAO,CAAC;AAMlG;uDACuD;AACvD,MAAM,WAAW,cAAc;IAC7B;mEAC+D;IAC/D,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB;gDAC4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb;mDAC+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;oCAEgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;sCAEkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACxC,SAAS,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,8CAA8C;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,CAAC;IAChD;uDACmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;+BAE2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;wEACwE;AACxE,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,eAAe,EACf,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,2CAsJjB"}
@@ -0,0 +1,2 @@
1
+ export { LayerStack, type LayerStackItem, type LayerStackProps } from './LayerStack';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/LayerStack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../chunks/LayerStack-DQYvGNPA.js";
2
+ export { e as LayerStack };
@@ -20,7 +20,7 @@ export type NumberFieldProps = Omit<RACNumberFieldProps, 'children' | 'className
20
20
  *
21
21
  * `ref` forwards to the underlying `<input>`.
22
22
  */
23
- export declare const NumberField: import("react").ForwardRefExoticComponent<Omit<RACNumberFieldProps, "children" | "className"> & {
23
+ export declare const NumberField: import("react").ForwardRefExoticComponent<Omit<RACNumberFieldProps, "className" | "children"> & {
24
24
  label?: ReactNode;
25
25
  description?: ReactNode;
26
26
  errorMessage?: ReactNode | ((v: ValidationResult) => ReactNode);
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/NumberField-BbzI0GtU.js";
1
+ import { t as e } from "../../chunks/NumberField-BQ-KaK7T.js";
2
2
  export { e as NumberField };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/OptionsBar-CHvH4n4u.js";
1
+ import { t as e } from "../../chunks/OptionsBar-BecAPCID.js";
2
2
  export { e as OptionsBar };
@@ -0,0 +1,40 @@
1
+ import { type ReactElement } from 'react';
2
+ import { type FillStyle, type PaintKind } from '@weasel-js/core';
3
+ /** Props for {@link PaintInput}. `onInput` fires throughout a gesture and
4
+ * `onChange` once at its end. */
5
+ export interface PaintInputProps {
6
+ /** The paint being edited. `null` is an explicit "no paint"; `undefined`
7
+ * is no value to show. */
8
+ value: FillStyle | null | undefined;
9
+ /** Indeterminate presentation: no kind lit, and the body withheld because
10
+ * there is no single paint to show. */
11
+ mixed?: boolean;
12
+ /** Dim the control — a value is in effect but was never chosen. */
13
+ unset?: boolean;
14
+ /** Restrict the kind bar. Default: every registered kind. */
15
+ kinds?: readonly PaintKind[];
16
+ /** Offer "None". Default `true` — the bar answers "what kind of paint is
17
+ * this?" and no-paint is one of the answers. Turn it off where the slot
18
+ * cannot express absence. */
19
+ allowNone?: boolean;
20
+ onInput?: (next: FillStyle | null) => void;
21
+ onChange: (next: FillStyle | null) => void;
22
+ /** Names the paint this control edits — `Fill`, `Color`. Carried by the
23
+ * solid body's swatch, which is the part with a value to announce. */
24
+ 'aria-label'?: string;
25
+ className?: string;
26
+ }
27
+ /**
28
+ * Editor for a whole `FillStyle` — a kind bar over whichever body that kind
29
+ * wants.
30
+ *
31
+ * The bar is driven by the paint-kind registry rather than a fixed list, so a
32
+ * consumer's registered kind appears in it and renders that entry's `Editor`.
33
+ * The five built-in kinds keep their branch here: their editors live in this
34
+ * package and `@weasel-js/core`, which owns the registry, cannot import it.
35
+ *
36
+ * Geometry is deliberately absent — on a canvas it belongs on the artwork,
37
+ * via `<SceneGradientHandles>`.
38
+ */
39
+ export declare function PaintInput(props: PaintInputProps): ReactElement;
40
+ //# sourceMappingURL=PaintInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaintInput.d.ts","sourceRoot":"","sources":["../../../src/components/PaintInput/PaintInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAIL,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAuCzB;kCACkC;AAClC,MAAM,WAAW,eAAe;IAC9B;+BAC2B;IAC3B,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC;4CACwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B;;kCAE8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3C;2EACuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAoH/D"}
@@ -0,0 +1,2 @@
1
+ export { PaintInput, type PaintInputProps } from './PaintInput';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PaintInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../chunks/PaintInput-K5W4Uho3.js";
2
+ export { e as PaintInput };
@@ -0,0 +1,31 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { FillStyle, TilePatternSpec } from '@weasel-js/core';
3
+ /** The `pattern` member of the paint union. */
4
+ export type PatternFill = Extract<FillStyle, {
5
+ fill: 'pattern';
6
+ }>;
7
+ /**
8
+ * A pattern seeded from a color. `units: 'bounds'` anchors the tile to the
9
+ * node's box, so the texture travels with the shape.
10
+ */
11
+ export declare function seedPattern(tile: TilePatternSpec['tile'], from: string, size?: number): PatternFill;
12
+ /** Props for {@link PatternPicker}. */
13
+ export interface PatternPickerProps {
14
+ /** The pattern paint being edited. */
15
+ value: PatternFill;
16
+ /** The color new tiles are seeded with — the paint's own, normally. */
17
+ color: string;
18
+ /** Committed value: one call per click. A tile pick and a size change are
19
+ * each a complete gesture, so there is no `onInput`. */
20
+ onChange: (next: PatternFill) => void;
21
+ className?: string;
22
+ }
23
+ /**
24
+ * Grid of tile swatches over a size switch, each swatch previewing the real
25
+ * tile at the current color.
26
+ *
27
+ * The preview shares its shape mapper with what the renderer paints, so a
28
+ * swatch cannot drift from the texture it selects.
29
+ */
30
+ export declare function PatternPicker(props: PatternPickerProps): ReactElement;
31
+ //# sourceMappingURL=PatternPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatternPicker.d.ts","sourceRoot":"","sources":["../../../src/components/PatternPicker/PatternPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKlE,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAyBlE;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAA0B,GAC/B,WAAW,CAMb;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd;6DACyD;IACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CA4CrE"}
@@ -0,0 +1,2 @@
1
+ export { PatternPicker, seedPattern, type PatternPickerProps, type PatternFill } from './PatternPicker';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PatternPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { n as e, t } from "../../chunks/PatternPicker-BdLSj_f_.js";
2
+ export { t as PatternPicker, e as seedPattern };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "../../chunks/Plot2D-CEnhzodm.js";
1
+ import { n as e, r as t, t as n } from "../../chunks/Plot2D-BEjpJhk-.js";
2
2
  export { n as Plot2D, e as modelToPlot, t as plotToModel };
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../chunks/PointPlotter-BUIse9c4.js";
1
+ import { t as e } from "../../chunks/PointPlotter-C_tZb122.js";
2
2
  export { e as PointPlotter };
@@ -1,3 +1,3 @@
1
- import { n as e } from "../../chunks/Badge-dQzbkk-C.js";
2
- import { t } from "../../chunks/Powerline-BYWdK8QH.js";
1
+ import { n as e } from "../../chunks/Badge-9dPfvYOk.js";
2
+ import { t } from "../../chunks/Powerline-Cc-Av8Pc.js";
3
3
  export { e as EDGE_PROFILES, t as Powerline };
@@ -1 +1 @@
1
- {"version":3,"file":"PrefsForm.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWhD,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,QAAQ,EAGd,MAAM,UAAU,CAAC;AAGlB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,SAAS,CAAC;AAEjE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;IAClB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;0CACsC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAsB9C"}
1
+ {"version":3,"file":"PrefsForm.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/PrefsForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAahD,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAGlB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,QAAQ,CAAC;IACf,0EAA0E;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,SAAS,CAAC;AAEjE,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,EAAE,SAAS,CAAC;IAClB;8DAC0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;0CACsC;IACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CAsB9C"}
@@ -1,4 +1,4 @@
1
1
  export { PrefsForm, type PrefsFormProps, type PrefRenderer, type PrefRenderContext } from './PrefsForm';
2
2
  export { PrefsDialog, type PrefsDialogProps } from './PrefsDialog';
3
- export { isPrefLeaf, prefValueAtPath, visiblePrefSubtree, type BuiltinPref, type PrefBoolean, type PrefBooleanControl, type PrefColor, type PrefCustom, type PrefEnum, type PrefEnumControl, type PrefGroup, type PrefLeaf, type PrefNumber, type PrefNumberControl, type PrefNumberUnit, type PrefString, type PrefStringControl, } from './schema';
3
+ export { isPrefLeaf, prefValueAtPath, visiblePrefSubtree, type BuiltinPref, type PrefBoolean, type PrefBooleanControl, type PrefColor, type PrefCustom, type PrefEnum, type PrefEnumControl, type PrefEnumEncoding, type PrefGroup, type PrefKind, type PrefLeaf, type PrefNumber, type PrefNumberControl, type PrefNumberUnit, type PrefPaint, type PrefObject, type PrefString, type PrefStringControl, } from './schema';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Prefs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,UAAU,CAAC"}
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "../../chunks/Prefs-BMR9wMiZ.js";
1
+ import { a as e, i as t, n, r, t as i } from "../../chunks/Prefs-CRTRAud6.js";
2
2
  export { i as PrefsDialog, n as PrefsForm, r as isPrefLeaf, t as prefValueAtPath, e as visiblePrefSubtree };