@gunkin/uiify 0.0.25-alpha → 0.0.26-alpha

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 (336) hide show
  1. package/agents/reference/components/accordion.md +4 -4
  2. package/agents/reference/components/alert-modal.md +10 -10
  3. package/agents/reference/components/alert.md +1 -1
  4. package/agents/reference/components/aspect-ratio.md +1 -1
  5. package/agents/reference/components/avatar.md +2 -2
  6. package/agents/reference/components/breadcrumb.md +9 -10
  7. package/agents/reference/components/candle-chart.md +35 -35
  8. package/agents/reference/components/carousel.md +10 -14
  9. package/agents/reference/components/collapsible.md +3 -3
  10. package/agents/reference/components/color-picker.md +6 -6
  11. package/agents/reference/components/combobox.md +7 -17
  12. package/agents/reference/components/context-menu.md +5 -26
  13. package/agents/reference/components/date-picker.md +2 -1
  14. package/agents/reference/components/drawer.md +17 -31
  15. package/agents/reference/components/dropdown-menu.md +2 -3
  16. package/agents/reference/components/field.md +11 -11
  17. package/agents/reference/components/form-error-summary.md +4 -4
  18. package/agents/reference/components/input-group.md +1 -0
  19. package/agents/reference/components/input.md +1 -0
  20. package/agents/reference/components/line-chart.md +29 -29
  21. package/agents/reference/components/modal.md +13 -15
  22. package/agents/reference/components/number-field.md +1 -1
  23. package/agents/reference/components/otp-input.md +2 -1
  24. package/agents/reference/components/pagination.md +7 -8
  25. package/agents/reference/components/rating.md +1 -1
  26. package/agents/reference/components/segmented-control.md +1 -0
  27. package/agents/reference/components/select.md +1 -0
  28. package/agents/reference/components/slider.md +4 -4
  29. package/agents/reference/components/spinner.md +1 -1
  30. package/agents/reference/components/table.md +1 -1
  31. package/agents/reference/components/tabs.md +6 -6
  32. package/agents/reference/components/tags-input.md +5 -12
  33. package/agents/reference/components/toast.md +8 -15
  34. package/agents/reference/components/toggle.md +4 -3
  35. package/agents/reference/components/virtual-scroll.md +4 -5
  36. package/agents/reference/elements/choice.md +3 -3
  37. package/agents/reference/elements/details.md +2 -2
  38. package/agents/reference/elements/popover.md +3 -3
  39. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  40. package/dist/components/accordion/Accordion.js +20 -46
  41. package/dist/components/accordion/Accordion.js.map +1 -1
  42. package/dist/components/accordion/types.d.ts +6 -15
  43. package/dist/components/accordion/types.d.ts.map +1 -1
  44. package/dist/components/alert/Alert.d.ts.map +1 -1
  45. package/dist/components/alert/Alert.js +5 -14
  46. package/dist/components/alert/Alert.js.map +1 -1
  47. package/dist/components/alert/types.d.ts +3 -7
  48. package/dist/components/alert/types.d.ts.map +1 -1
  49. package/dist/components/alert-modal/AlertModal.d.ts.map +1 -1
  50. package/dist/components/alert-modal/AlertModal.js +28 -137
  51. package/dist/components/alert-modal/AlertModal.js.map +1 -1
  52. package/dist/components/alert-modal/AlertModalParts.d.ts.map +1 -1
  53. package/dist/components/alert-modal/AlertModalParts.js +4 -37
  54. package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
  55. package/dist/components/alert-modal/types.d.ts +15 -33
  56. package/dist/components/alert-modal/types.d.ts.map +1 -1
  57. package/dist/components/aspect-ratio/AspectRatio.d.ts.map +1 -1
  58. package/dist/components/aspect-ratio/AspectRatio.js +4 -12
  59. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  60. package/dist/components/aspect-ratio/types.d.ts +3 -6
  61. package/dist/components/aspect-ratio/types.d.ts.map +1 -1
  62. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  63. package/dist/components/avatar/Avatar.js +4 -21
  64. package/dist/components/avatar/Avatar.js.map +1 -1
  65. package/dist/components/avatar/types.d.ts +4 -14
  66. package/dist/components/avatar/types.d.ts.map +1 -1
  67. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
  68. package/dist/components/breadcrumb/Breadcrumb.js +43 -123
  69. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  70. package/dist/components/breadcrumb/types.d.ts +12 -35
  71. package/dist/components/breadcrumb/types.d.ts.map +1 -1
  72. package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
  73. package/dist/components/candle-chart/CandleChart.js +122 -186
  74. package/dist/components/candle-chart/CandleChart.js.map +1 -1
  75. package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
  76. package/dist/components/candle-chart/client/CandleChartClient.js +8 -15
  77. package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
  78. package/dist/components/candle-chart/types.d.ts +42 -116
  79. package/dist/components/candle-chart/types.d.ts.map +1 -1
  80. package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
  81. package/dist/components/carousel/CarouselMarkup.js +55 -142
  82. package/dist/components/carousel/CarouselMarkup.js.map +1 -1
  83. package/dist/components/carousel/types.d.ts +13 -80
  84. package/dist/components/carousel/types.d.ts.map +1 -1
  85. package/dist/components/collapsible/Collapsible.d.ts +1 -5
  86. package/dist/components/collapsible/Collapsible.d.ts.map +1 -1
  87. package/dist/components/collapsible/Collapsible.js +3 -33
  88. package/dist/components/collapsible/Collapsible.js.map +1 -1
  89. package/dist/components/collapsible/types.d.ts +4 -18
  90. package/dist/components/collapsible/types.d.ts.map +1 -1
  91. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
  92. package/dist/components/color-picker/ColorPicker.js +28 -123
  93. package/dist/components/color-picker/ColorPicker.js.map +1 -1
  94. package/dist/components/color-picker/types.d.ts +11 -30
  95. package/dist/components/color-picker/types.d.ts.map +1 -1
  96. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  97. package/dist/components/combobox/Combobox.js +30 -23
  98. package/dist/components/combobox/Combobox.js.map +1 -1
  99. package/dist/components/combobox/types.d.ts +9 -29
  100. package/dist/components/combobox/types.d.ts.map +1 -1
  101. package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
  102. package/dist/components/context-menu/ContextMenu.js +30 -53
  103. package/dist/components/context-menu/ContextMenu.js.map +1 -1
  104. package/dist/components/context-menu/types.d.ts +6 -31
  105. package/dist/components/context-menu/types.d.ts.map +1 -1
  106. package/dist/components/date-picker/DatePicker.d.ts +1 -1
  107. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  108. package/dist/components/date-picker/DatePicker.js +2 -1
  109. package/dist/components/date-picker/DatePicker.js.map +1 -1
  110. package/dist/components/date-picker/types.d.ts +4 -1
  111. package/dist/components/date-picker/types.d.ts.map +1 -1
  112. package/dist/components/drawer/Drawer.d.ts.map +1 -1
  113. package/dist/components/drawer/Drawer.js +12 -12
  114. package/dist/components/drawer/Drawer.js.map +1 -1
  115. package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
  116. package/dist/components/drawer/DrawerNative.js +47 -252
  117. package/dist/components/drawer/DrawerNative.js.map +1 -1
  118. package/dist/components/drawer/types.d.ts +25 -30
  119. package/dist/components/drawer/types.d.ts.map +1 -1
  120. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  121. package/dist/components/dropdown-menu/DropdownMenu.js +30 -27
  122. package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
  123. package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
  124. package/dist/components/dropdown-menu/DropdownMenuBar.js +3 -7
  125. package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
  126. package/dist/components/dropdown-menu/types.d.ts +2 -5
  127. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  128. package/dist/components/field/Field.js +7 -7
  129. package/dist/components/field/Field.js.map +1 -1
  130. package/dist/components/field/types.d.ts +11 -11
  131. package/dist/components/field/types.d.ts.map +1 -1
  132. package/dist/components/form-error-summary/FormErrorSummary.d.ts.map +1 -1
  133. package/dist/components/form-error-summary/FormErrorSummary.js +20 -34
  134. package/dist/components/form-error-summary/FormErrorSummary.js.map +1 -1
  135. package/dist/components/form-error-summary/types.d.ts +6 -16
  136. package/dist/components/form-error-summary/types.d.ts.map +1 -1
  137. package/dist/components/hover-card/HoverCard.d.ts.map +1 -1
  138. package/dist/components/hover-card/HoverCard.js +9 -9
  139. package/dist/components/hover-card/HoverCard.js.map +1 -1
  140. package/dist/components/input/Input.d.ts.map +1 -1
  141. package/dist/components/input/Input.js +2 -0
  142. package/dist/components/input/Input.js.map +1 -1
  143. package/dist/components/input/types.d.ts +3 -0
  144. package/dist/components/input/types.d.ts.map +1 -1
  145. package/dist/components/input-group/InputGroup.d.ts.map +1 -1
  146. package/dist/components/input-group/InputGroup.js +2 -1
  147. package/dist/components/input-group/InputGroup.js.map +1 -1
  148. package/dist/components/input-group/types.d.ts +3 -0
  149. package/dist/components/input-group/types.d.ts.map +1 -1
  150. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts +2 -2
  151. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.d.ts.map +1 -1
  152. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js +11 -3
  153. package/dist/components/internal/chart-scrollbar/use-scrollbar-reserve.js.map +1 -1
  154. package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
  155. package/dist/components/internal/choice-family/ChoiceGroup.js +14 -51
  156. package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
  157. package/dist/components/internal/choice-family/types.d.ts +8 -40
  158. package/dist/components/internal/choice-family/types.d.ts.map +1 -1
  159. package/dist/components/internal/control-size/types.d.ts +3 -0
  160. package/dist/components/internal/control-size/types.d.ts.map +1 -0
  161. package/dist/components/internal/control-size/types.js +1 -0
  162. package/dist/components/internal/control-size/types.js.map +1 -0
  163. package/dist/components/internal/live-chart/types.d.ts +3 -1
  164. package/dist/components/internal/live-chart/types.d.ts.map +1 -1
  165. package/dist/components/internal/live-chart/use-live-chart-window.d.ts.map +1 -1
  166. package/dist/components/internal/live-chart/use-live-chart-window.js +21 -5
  167. package/dist/components/internal/live-chart/use-live-chart-window.js.map +1 -1
  168. package/dist/components/internal/menu/menu-parts.d.ts.map +1 -1
  169. package/dist/components/internal/menu/menu-parts.js +3 -3
  170. package/dist/components/internal/menu/menu-parts.js.map +1 -1
  171. package/dist/components/internal/native-check-control/NativeCheckControl.d.ts.map +1 -1
  172. package/dist/components/internal/native-check-control/NativeCheckControl.js +8 -32
  173. package/dist/components/internal/native-check-control/NativeCheckControl.js.map +1 -1
  174. package/dist/components/internal/native-check-control/types.d.ts +4 -18
  175. package/dist/components/internal/native-check-control/types.d.ts.map +1 -1
  176. package/dist/components/line-chart/LineChart.d.ts.map +1 -1
  177. package/dist/components/line-chart/LineChart.js +134 -208
  178. package/dist/components/line-chart/LineChart.js.map +1 -1
  179. package/dist/components/line-chart/client/LineChartClient.d.ts.map +1 -1
  180. package/dist/components/line-chart/client/LineChartClient.js +8 -15
  181. package/dist/components/line-chart/client/LineChartClient.js.map +1 -1
  182. package/dist/components/line-chart/types.d.ts +36 -103
  183. package/dist/components/line-chart/types.d.ts.map +1 -1
  184. package/dist/components/modal/Modal.d.ts.map +1 -1
  185. package/dist/components/modal/Modal.js +34 -115
  186. package/dist/components/modal/Modal.js.map +1 -1
  187. package/dist/components/modal/ModalAnatomy.js +6 -6
  188. package/dist/components/modal/ModalAnatomy.js.map +1 -1
  189. package/dist/components/modal/ModalParts.js +1 -1
  190. package/dist/components/modal/ModalParts.js.map +1 -1
  191. package/dist/components/modal/client/ModalClientContent.d.ts.map +1 -1
  192. package/dist/components/modal/client/ModalClientContent.js +2 -2
  193. package/dist/components/modal/client/ModalClientContent.js.map +1 -1
  194. package/dist/components/modal/types.d.ts +19 -19
  195. package/dist/components/modal/types.d.ts.map +1 -1
  196. package/dist/components/number-field/NumberField.d.ts.map +1 -1
  197. package/dist/components/number-field/NumberField.js +13 -11
  198. package/dist/components/number-field/NumberField.js.map +1 -1
  199. package/dist/components/number-field/types.d.ts +1 -1
  200. package/dist/components/number-field/types.d.ts.map +1 -1
  201. package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
  202. package/dist/components/otp-input/OtpInput.js +9 -9
  203. package/dist/components/otp-input/OtpInput.js.map +1 -1
  204. package/dist/components/otp-input/types.d.ts +4 -1
  205. package/dist/components/otp-input/types.d.ts.map +1 -1
  206. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  207. package/dist/components/pagination/Pagination.js +26 -69
  208. package/dist/components/pagination/Pagination.js.map +1 -1
  209. package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
  210. package/dist/components/pagination/PaginationShell.js +5 -6
  211. package/dist/components/pagination/PaginationShell.js.map +1 -1
  212. package/dist/components/pagination/types.d.ts +9 -32
  213. package/dist/components/pagination/types.d.ts.map +1 -1
  214. package/dist/components/rating/types.d.ts +1 -5
  215. package/dist/components/rating/types.d.ts.map +1 -1
  216. package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
  217. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
  218. package/dist/components/segmented-control/SegmentedControl.js +4 -2
  219. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  220. package/dist/components/segmented-control/client/SegmentedControlClient.d.ts +1 -1
  221. package/dist/components/segmented-control/client/SegmentedControlClient.d.ts.map +1 -1
  222. package/dist/components/segmented-control/client/SegmentedControlClient.js +4 -2
  223. package/dist/components/segmented-control/client/SegmentedControlClient.js.map +1 -1
  224. package/dist/components/segmented-control/types.d.ts +3 -0
  225. package/dist/components/segmented-control/types.d.ts.map +1 -1
  226. package/dist/components/select/Select.d.ts.map +1 -1
  227. package/dist/components/select/Select.js +2 -0
  228. package/dist/components/select/Select.js.map +1 -1
  229. package/dist/components/select/types.d.ts +3 -0
  230. package/dist/components/select/types.d.ts.map +1 -1
  231. package/dist/components/slider/Slider.d.ts.map +1 -1
  232. package/dist/components/slider/Slider.js +12 -7
  233. package/dist/components/slider/Slider.js.map +1 -1
  234. package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
  235. package/dist/components/slider/client/SliderClient.js +53 -100
  236. package/dist/components/slider/client/SliderClient.js.map +1 -1
  237. package/dist/components/slider/types.d.ts +8 -38
  238. package/dist/components/slider/types.d.ts.map +1 -1
  239. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  240. package/dist/components/spinner/Spinner.js +2 -10
  241. package/dist/components/spinner/Spinner.js.map +1 -1
  242. package/dist/components/spinner/types.d.ts +3 -6
  243. package/dist/components/spinner/types.d.ts.map +1 -1
  244. package/dist/components/table/client/TableColumnHeader.d.ts.map +1 -1
  245. package/dist/components/table/client/TableColumnHeader.js +1 -15
  246. package/dist/components/table/client/TableColumnHeader.js.map +1 -1
  247. package/dist/components/table/types.d.ts +2 -6
  248. package/dist/components/table/types.d.ts.map +1 -1
  249. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  250. package/dist/components/tabs/Tabs.js +9 -43
  251. package/dist/components/tabs/Tabs.js.map +1 -1
  252. package/dist/components/tabs/types.d.ts +8 -21
  253. package/dist/components/tabs/types.d.ts.map +1 -1
  254. package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
  255. package/dist/components/tags-input/TagsInput.js +16 -27
  256. package/dist/components/tags-input/TagsInput.js.map +1 -1
  257. package/dist/components/tags-input/types.d.ts +8 -23
  258. package/dist/components/tags-input/types.d.ts.map +1 -1
  259. package/dist/components/toast/Toast.d.ts.map +1 -1
  260. package/dist/components/toast/Toast.js +13 -62
  261. package/dist/components/toast/Toast.js.map +1 -1
  262. package/dist/components/toast/ToastElements.d.ts.map +1 -1
  263. package/dist/components/toast/ToastElements.js +20 -57
  264. package/dist/components/toast/ToastElements.js.map +1 -1
  265. package/dist/components/toast/types.d.ts +9 -36
  266. package/dist/components/toast/types.d.ts.map +1 -1
  267. package/dist/components/toggle/Toggle.d.ts +1 -1
  268. package/dist/components/toggle/Toggle.d.ts.map +1 -1
  269. package/dist/components/toggle/Toggle.js +36 -61
  270. package/dist/components/toggle/Toggle.js.map +1 -1
  271. package/dist/components/toggle/types.d.ts +5 -24
  272. package/dist/components/toggle/types.d.ts.map +1 -1
  273. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  274. package/dist/components/tooltip/Tooltip.js +4 -4
  275. package/dist/components/tooltip/Tooltip.js.map +1 -1
  276. package/dist/components/virtual-scroll/VirtualScroll.d.ts.map +1 -1
  277. package/dist/components/virtual-scroll/VirtualScroll.js +65 -43
  278. package/dist/components/virtual-scroll/VirtualScroll.js.map +1 -1
  279. package/dist/components/virtual-scroll/VirtualScrollRowShell.js +2 -2
  280. package/dist/components/virtual-scroll/VirtualScrollRowShell.js.map +1 -1
  281. package/dist/components/virtual-scroll/types.d.ts +7 -20
  282. package/dist/components/virtual-scroll/types.d.ts.map +1 -1
  283. package/dist/components/virtual-scroll/types.js.map +1 -1
  284. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts +3 -0
  285. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.d.ts.map +1 -1
  286. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js +11 -2
  287. package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js.map +1 -1
  288. package/dist/core/class-names.d.ts +3 -0
  289. package/dist/core/class-names.d.ts.map +1 -0
  290. package/dist/core/class-names.js +7 -0
  291. package/dist/core/class-names.js.map +1 -0
  292. package/dist/core/part-names.d.ts +8 -0
  293. package/dist/core/part-names.d.ts.map +1 -0
  294. package/dist/core/part-names.js +111 -0
  295. package/dist/core/part-names.js.map +1 -0
  296. package/dist/core/polymorphic.d.ts +10 -3
  297. package/dist/core/polymorphic.d.ts.map +1 -1
  298. package/dist/core/render-native-invoker.d.ts +1 -0
  299. package/dist/core/render-native-invoker.d.ts.map +1 -1
  300. package/dist/core/render-native-invoker.js +6 -6
  301. package/dist/core/render-native-invoker.js.map +1 -1
  302. package/dist/core/roving-focus.d.ts +2 -2
  303. package/dist/core/roving-focus.d.ts.map +1 -1
  304. package/dist/core/roving-focus.js +6 -7
  305. package/dist/core/roving-focus.js.map +1 -1
  306. package/dist/core/slot-props.d.ts +9 -7
  307. package/dist/core/slot-props.d.ts.map +1 -1
  308. package/dist/core/slot-props.js +4 -14
  309. package/dist/core/slot-props.js.map +1 -1
  310. package/dist/elements/choice/Choice.d.ts.map +1 -1
  311. package/dist/elements/choice/Choice.js +5 -42
  312. package/dist/elements/choice/Choice.js.map +1 -1
  313. package/dist/elements/choice/types.d.ts +4 -11
  314. package/dist/elements/choice/types.d.ts.map +1 -1
  315. package/dist/elements/details/Details.d.ts.map +1 -1
  316. package/dist/elements/details/Details.js +4 -5
  317. package/dist/elements/details/Details.js.map +1 -1
  318. package/dist/elements/details/types.d.ts +3 -3
  319. package/dist/elements/details/types.d.ts.map +1 -1
  320. package/dist/elements/dialog/Dialog.d.ts.map +1 -1
  321. package/dist/elements/dialog/Dialog.js +1 -1
  322. package/dist/elements/dialog/Dialog.js.map +1 -1
  323. package/dist/elements/invoker/Invoker.js +3 -3
  324. package/dist/elements/invoker/Invoker.js.map +1 -1
  325. package/dist/elements/popover/Popover.d.ts.map +1 -1
  326. package/dist/elements/popover/Popover.js +3 -3
  327. package/dist/elements/popover/Popover.js.map +1 -1
  328. package/dist/elements/popover/types.d.ts +6 -4
  329. package/dist/elements/popover/types.d.ts.map +1 -1
  330. package/dist/styles/index.css +1 -1
  331. package/dist/styles/tailwind.css +2 -2
  332. package/dist/styles/tokens.css +1 -1
  333. package/package.json +1 -1
  334. package/skills/uiify/references/elements/aspect-ratio.md +1 -1
  335. package/skills/uiify/references/elements/field.md +1 -1
  336. package/skills/uiify/references/elements/toggle.md +1 -0
@@ -1,6 +1,6 @@
1
1
  import type { ReactElement } from "react";
2
2
  import type { ToggleProps } from "./types.js";
3
- export declare function Toggle({ id, label, pressed, defaultPressed, disabled, slotProps, ...rootProps }: ToggleProps): ReactElement;
3
+ export declare function Toggle({ id, label, pressed, defaultPressed, onPressedChange, disabled, slotProps, ...rootProps }: ToggleProps): ReactElement;
4
4
  export declare namespace Toggle {
5
5
  var displayName: string;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,MAAM,CAAC,EACrB,EAAE,EACF,KAAK,EACL,OAAO,EACP,cAAsB,EACtB,QAAgB,EAChB,SAAS,EACT,GAAG,SAAS,EACb,EAAE,WAAW,GAAG,YAAY,CA2D5B;yBAnEe,MAAM"}
1
+ {"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,MAAM,CAAC,EACrB,EAAE,EACF,KAAK,EACL,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,QAAgB,EAChB,SAAS,EACT,GAAG,SAAS,EACb,EAAE,WAAW,GAAG,YAAY,CAwC5B;yBAjDe,MAAM"}
@@ -1,10 +1,11 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { omitProps } from "../../core/slot-props.js";
2
+ import { composeEventHandlers } from "../../core/compose-event-handlers.js";
3
3
  function Toggle({
4
4
  id,
5
5
  label,
6
6
  pressed,
7
7
  defaultPressed = false,
8
+ onPressedChange,
8
9
  disabled = false,
9
10
  slotProps,
10
11
  ...rootProps
@@ -12,66 +13,40 @@ function Toggle({
12
13
  const isControlled = pressed !== void 0;
13
14
  const checked = isControlled ? pressed : void 0;
14
15
  const labelId = `${id}-label`;
15
- return /* @__PURE__ */ jsxs(
16
- "div",
17
- {
18
- ...omitProps(rootProps, [
19
- "children",
20
- "dangerouslySetInnerHTML",
21
- "data-disabled",
22
- "data-uiify-toggle",
23
- "id"
24
- ]),
25
- "data-disabled": disabled ? "" : void 0,
26
- "data-uiify-toggle": "",
27
- children: [
28
- /* @__PURE__ */ jsx(
29
- "input",
30
- {
31
- ...omitProps(slotProps?.control, [
32
- "aria-labelledby",
33
- "checked",
34
- "data-disabled",
35
- "data-part",
36
- "data-state",
37
- "data-uiify-toggle",
38
- "defaultChecked",
39
- "disabled",
40
- "id",
41
- "type"
42
- ]),
43
- "aria-labelledby": labelId,
44
- checked,
45
- "data-disabled": disabled ? "" : void 0,
46
- "data-part": "control",
47
- "data-state": isControlled ? pressed ? "on" : "off" : void 0,
48
- defaultChecked: !isControlled ? defaultPressed : void 0,
49
- disabled: disabled || void 0,
50
- id,
51
- type: "checkbox"
52
- }
53
- ),
54
- /* @__PURE__ */ jsx(
55
- "label",
56
- {
57
- ...omitProps(slotProps?.label, [
58
- "data-part",
59
- "data-uiify-button",
60
- "data-variant",
61
- "htmlFor",
62
- "id"
63
- ]),
64
- "data-part": "label",
65
- "data-uiify-button": "",
66
- "data-variant": "outline",
67
- htmlFor: id,
68
- id: labelId,
69
- children: label
70
- }
71
- )
72
- ]
73
- }
74
- );
16
+ return /* @__PURE__ */ jsxs("div", { "data-disabled": disabled ? "" : void 0, "data-uiify-toggle": "", ...rootProps, children: [
17
+ /* @__PURE__ */ jsx(
18
+ "input",
19
+ {
20
+ "aria-labelledby": labelId,
21
+ checked,
22
+ "data-disabled": disabled ? "" : void 0,
23
+ "data-part": "control",
24
+ "data-state": isControlled ? pressed ? "on" : "off" : void 0,
25
+ defaultChecked: !isControlled ? defaultPressed : void 0,
26
+ disabled: disabled || void 0,
27
+ id,
28
+ type: "checkbox",
29
+ readOnly: isControlled && !onPressedChange && !slotProps?.control?.onChange,
30
+ ...slotProps?.control,
31
+ onChange: onPressedChange ? composeEventHandlers(
32
+ slotProps?.control?.onChange,
33
+ (event) => onPressedChange(event.currentTarget.checked)
34
+ ) : slotProps?.control?.onChange
35
+ }
36
+ ),
37
+ /* @__PURE__ */ jsx(
38
+ "label",
39
+ {
40
+ "data-part": "label",
41
+ "data-uiify-button": "",
42
+ "data-variant": "outline",
43
+ htmlFor: id,
44
+ id: labelId,
45
+ ...slotProps?.label,
46
+ children: label
47
+ }
48
+ )
49
+ ] });
75
50
  }
76
51
  Toggle.displayName = "Toggle";
77
52
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/toggle/Toggle.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { omitProps } from \"../../core/slot-props.js\";\nimport type { ToggleProps } from \"./types.js\";\n\nexport function Toggle({\n id,\n label,\n pressed,\n defaultPressed = false,\n disabled = false,\n slotProps,\n ...rootProps\n}: ToggleProps): ReactElement {\n const isControlled = pressed !== undefined;\n const checked = isControlled ? pressed : undefined;\n\n const labelId = `${id}-label`;\n\n return (\n <div\n {...omitProps(rootProps, [\n \"children\",\n \"dangerouslySetInnerHTML\",\n \"data-disabled\",\n \"data-uiify-toggle\",\n \"id\",\n ])}\n data-disabled={disabled ? \"\" : undefined}\n data-uiify-toggle=\"\"\n >\n <input\n {...omitProps(slotProps?.control, [\n \"aria-labelledby\",\n \"checked\",\n \"data-disabled\",\n \"data-part\",\n \"data-state\",\n \"data-uiify-toggle\",\n \"defaultChecked\",\n \"disabled\",\n \"id\",\n \"type\",\n ])}\n aria-labelledby={labelId}\n checked={checked}\n data-disabled={disabled ? \"\" : undefined}\n data-part=\"control\"\n data-state={isControlled ? (pressed ? \"on\" : \"off\") : undefined}\n defaultChecked={!isControlled ? defaultPressed : undefined}\n disabled={disabled || undefined}\n id={id}\n type=\"checkbox\"\n />\n <label\n {...omitProps(slotProps?.label, [\n \"data-part\",\n \"data-uiify-button\",\n \"data-variant\",\n \"htmlFor\",\n \"id\",\n ])}\n data-part=\"label\"\n data-uiify-button=\"\"\n data-variant=\"outline\"\n htmlFor={id}\n id={labelId}\n >\n {label}\n </label>\n </div>\n );\n}\nToggle.displayName = \"Toggle\";\n"],"mappings":"AAmBI,SAWE,KAXF;AAlBJ,SAAS,iBAAiB;AAGnB,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,QAAM,eAAe,YAAY;AACjC,QAAM,UAAU,eAAe,UAAU;AAEzC,QAAM,UAAU,GAAG,EAAE;AAErB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,UAAU,WAAW;AAAA,QACvB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,iBAAe,WAAW,KAAK;AAAA,MAC/B,qBAAkB;AAAA,MAElB;AAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,UAAU,WAAW,SAAS;AAAA,cAChC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC;AAAA,YACD,mBAAiB;AAAA,YACjB;AAAA,YACA,iBAAe,WAAW,KAAK;AAAA,YAC/B,aAAU;AAAA,YACV,cAAY,eAAgB,UAAU,OAAO,QAAS;AAAA,YACtD,gBAAgB,CAAC,eAAe,iBAAiB;AAAA,YACjD,UAAU,YAAY;AAAA,YACtB;AAAA,YACA,MAAK;AAAA;AAAA,QACP;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,UAAU,WAAW,OAAO;AAAA,cAC9B;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC;AAAA,YACD,aAAU;AAAA,YACV,qBAAkB;AAAA,YAClB,gBAAa;AAAA,YACb,SAAS;AAAA,YACT,IAAI;AAAA,YAEH;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AACA,OAAO,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/toggle/Toggle.tsx"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport { composeEventHandlers } from \"../../core/compose-event-handlers.js\";\nimport type { ToggleProps } from \"./types.js\";\n\nexport function Toggle({\n id,\n label,\n pressed,\n defaultPressed = false,\n onPressedChange,\n disabled = false,\n slotProps,\n ...rootProps\n}: ToggleProps): ReactElement {\n const isControlled = pressed !== undefined;\n const checked = isControlled ? pressed : undefined;\n\n const labelId = `${id}-label`;\n\n return (\n <div data-disabled={disabled ? \"\" : undefined} data-uiify-toggle=\"\" {...rootProps}>\n <input\n aria-labelledby={labelId}\n checked={checked}\n data-disabled={disabled ? \"\" : undefined}\n data-part=\"control\"\n data-state={isControlled ? (pressed ? \"on\" : \"off\") : undefined}\n defaultChecked={!isControlled ? defaultPressed : undefined}\n disabled={disabled || undefined}\n id={id}\n type=\"checkbox\"\n readOnly={isControlled && !onPressedChange && !slotProps?.control?.onChange}\n {...slotProps?.control}\n onChange={\n onPressedChange\n ? composeEventHandlers(slotProps?.control?.onChange, (event) =>\n onPressedChange(event.currentTarget.checked),\n )\n : slotProps?.control?.onChange\n }\n />\n <label\n data-part=\"label\"\n data-uiify-button=\"\"\n data-variant=\"outline\"\n htmlFor={id}\n id={labelId}\n {...slotProps?.label}\n >\n {label}\n </label>\n </div>\n );\n}\nToggle.displayName = \"Toggle\";\n"],"mappings":"AAoBI,SACE,KADF;AAnBJ,SAAS,4BAA4B;AAG9B,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,QAAM,eAAe,YAAY;AACjC,QAAM,UAAU,eAAe,UAAU;AAEzC,QAAM,UAAU,GAAG,EAAE;AAErB,SACE,qBAAC,SAAI,iBAAe,WAAW,KAAK,QAAW,qBAAkB,IAAI,GAAG,WACtE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,mBAAiB;AAAA,QACjB;AAAA,QACA,iBAAe,WAAW,KAAK;AAAA,QAC/B,aAAU;AAAA,QACV,cAAY,eAAgB,UAAU,OAAO,QAAS;AAAA,QACtD,gBAAgB,CAAC,eAAe,iBAAiB;AAAA,QACjD,UAAU,YAAY;AAAA,QACtB;AAAA,QACA,MAAK;AAAA,QACL,UAAU,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,SAAS;AAAA,QAClE,GAAG,WAAW;AAAA,QACf,UACE,kBACI;AAAA,UAAqB,WAAW,SAAS;AAAA,UAAU,CAAC,UAClD,gBAAgB,MAAM,cAAc,OAAO;AAAA,QAC7C,IACA,WAAW,SAAS;AAAA;AAAA,IAE5B;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,qBAAkB;AAAA,QAClB,gBAAa;AAAA,QACb,SAAS;AAAA,QACT,IAAI;AAAA,QACH,GAAG,WAAW;AAAA,QAEd;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AACA,OAAO,cAAc;","names":[]}
@@ -1,26 +1,7 @@
1
1
  import type { ComponentPropsWithRef, ReactNode } from "react";
2
- import type { ConsumerDataAttributes } from "../../core/slot-props.js";
3
- type ToggleControlOwnedAttributes = {
4
- readonly "aria-labelledby"?: never;
5
- readonly "data-disabled"?: never;
6
- readonly "data-part"?: never;
7
- readonly "data-state"?: never;
8
- readonly "data-uiify-toggle"?: never;
9
- readonly checked?: never;
10
- readonly defaultChecked?: never;
11
- readonly disabled?: never;
12
- readonly id?: never;
13
- readonly type?: never;
14
- };
15
- type ToggleLabelOwnedAttributes = {
16
- readonly "data-part"?: never;
17
- readonly "data-uiify-button"?: never;
18
- readonly "data-variant"?: never;
19
- readonly htmlFor?: never;
20
- readonly id?: never;
21
- };
22
- export type ToggleControlSlotProps = Omit<ComponentPropsWithRef<"input">, "aria-labelledby" | "checked" | "data-disabled" | "data-part" | "data-state" | "data-uiify-toggle" | "defaultChecked" | "disabled" | "id" | "type"> & ToggleControlOwnedAttributes & ConsumerDataAttributes;
23
- export type ToggleLabelSlotProps = Omit<ComponentPropsWithRef<"label">, "children" | "data-part" | "data-uiify-button" | "data-variant" | "htmlFor" | "id"> & ToggleLabelOwnedAttributes & ConsumerDataAttributes;
2
+ import type { SlotProps } from "../../core/slot-props.js";
3
+ export type ToggleControlSlotProps = SlotProps<"input">;
4
+ export type ToggleLabelSlotProps = SlotProps<"label">;
24
5
  export interface ToggleSlotProps {
25
6
  readonly control?: ToggleControlSlotProps;
26
7
  readonly label?: ToggleLabelSlotProps;
@@ -30,9 +11,9 @@ export interface ToggleOwnProps {
30
11
  readonly label: ReactNode;
31
12
  readonly pressed?: boolean;
32
13
  readonly defaultPressed?: boolean;
14
+ readonly onPressedChange?: (pressed: boolean) => void;
33
15
  readonly disabled?: boolean;
34
16
  readonly slotProps?: ToggleSlotProps;
35
17
  }
36
- export type ToggleProps = ToggleOwnProps & Omit<ComponentPropsWithRef<"div">, keyof ToggleOwnProps | "children" | "dangerouslySetInnerHTML" | "data-disabled" | "data-uiify-toggle" | "id">;
37
- export {};
18
+ export type ToggleProps = ToggleOwnProps & Omit<ComponentPropsWithRef<"div">, keyof ToggleOwnProps | "children" | "dangerouslySetInnerHTML" | "id">;
38
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/toggle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,KAAK,4BAA4B,GAAG;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,qBAAqB,CAAC,OAAO,CAAC,EAC5B,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,WAAW,GACX,YAAY,GACZ,mBAAmB,GACnB,gBAAgB,GAChB,UAAU,GACV,IAAI,GACJ,MAAM,CACT,GACC,4BAA4B,GAC5B,sBAAsB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,qBAAqB,CAAC,OAAO,CAAC,EAC9B,UAAU,GAAG,WAAW,GAAG,mBAAmB,GAAG,cAAc,GAAG,SAAS,GAAG,IAAI,CACnF,GACC,0BAA0B,GAC1B,sBAAsB,CAAC;AAEzB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GACtC,IAAI,CACF,qBAAqB,CAAC,KAAK,CAAC,EAC1B,MAAM,cAAc,GACpB,UAAU,GACV,yBAAyB,GACzB,eAAe,GACf,mBAAmB,GACnB,IAAI,CACP,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/toggle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GACtC,IAAI,CACF,qBAAqB,CAAC,KAAK,CAAC,EAC5B,MAAM,cAAc,GAAG,UAAU,GAAG,yBAAyB,GAAG,IAAI,CACrE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EAIX,YAAY,EACb,MAAM,OAAO,CAAC;AAgBf,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAYnF;yBAZe,eAAe;;;AAe/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA4BxE;yBA5Be,WAAW;;;AA+B3B,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAC/D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CAkErB;AAED,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC5D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CAgFrB;AAED,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EAIX,YAAY,EACb,MAAM,OAAO,CAAC;AAgBf,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAoBpB,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAUnF;yBAVe,eAAe;;;AAY/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,GAAG,IAAI,CA0BxE;yBA1Be,WAAW;;;AA4B3B,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAC/D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CAqErB;AACD,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC5D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CA+ErB;AACD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC"}
@@ -76,11 +76,11 @@ function TooltipTrigger(props) {
76
76
  as,
77
77
  defaultTag: "button",
78
78
  props: {
79
- ...consumerProps,
80
- ...anchorProps,
81
79
  "aria-describedby": open ? contentId : void 0,
82
80
  ...nativeButton ? { type: "button", "data-uiify-button": "" } : {},
83
81
  ...className ? { className } : {},
82
+ ...anchorProps,
83
+ ...consumerProps,
84
84
  onBlur: composeEventHandlers(consumerOnBlur, () => {
85
85
  closeTooltip();
86
86
  }),
@@ -146,14 +146,12 @@ function TooltipContent(props) {
146
146
  as,
147
147
  defaultTag: "div",
148
148
  props: {
149
- ...domProps,
150
149
  ...createAnchorPositionerProps({
151
150
  align,
152
151
  anchorName: anchorNameForId(anchorId),
153
152
  side
154
153
  }),
155
154
  ...consumerStyle ? { style: consumerStyle } : {},
156
- ref: mergedRef,
157
155
  popover: "manual",
158
156
  // The consumer's own non-empty `id` wins (computed above as `resolvedId`); otherwise the
159
157
  // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.
@@ -163,6 +161,8 @@ function TooltipContent(props) {
163
161
  "data-uiify-tooltip": "",
164
162
  "data-state": open ? "open" : "closed",
165
163
  ...className ? { className } : {},
164
+ ...domProps,
165
+ ref: mergedRef,
166
166
  onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {
167
167
  intent.clearCloseTimer();
168
168
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef } from \"react\";\nimport type {\n CSSProperties,\n ElementType,\n FocusEvent,\n KeyboardEvent,\n PointerEvent,\n ReactElement,\n} from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport {\n createAnchorPositionerProps,\n createAnchorTriggerProps,\n anchorNameForId,\n} from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport {\n createPartContext,\n splitRef,\n useHoverOverlay,\n type HoverIntentStore,\n} from \"@gunkin/uiify/core\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { CONTENT_HOVER_GRACE_MS, createTooltipProviderStore } from \"./tooltip-store.js\";\nimport type {\n TooltipContentProps,\n TooltipProviderOwnProps,\n TooltipProviderStore,\n TooltipRootProps,\n TooltipTriggerProps,\n} from \"./types.js\";\n\ninterface TooltipClientContextValue {\n readonly anchorId: string;\n readonly closeTooltip: () => void;\n readonly contentId: string;\n readonly intent: HoverIntentStore;\n readonly open: boolean;\n readonly openTooltip: (immediate?: boolean) => void;\n readonly pointerFocusRef: React.RefObject<boolean>;\n readonly setContentId: (id: string) => void;\n}\n\nconst [TooltipProviderStoreProvider, useTooltipProviderStore] =\n createPartContext<TooltipProviderStore>(\"Tooltip\", \"Provider\");\n\n// Root name \"Root\" (the default): Trigger/Content require <Tooltip.Root>, a\n// distinct nesting requirement from TooltipRoot itself requiring\n// <Tooltip.Provider> above. Keeping the two contexts' root names accurate\n// (rather than pointing both at \"Provider\") preserves the original's\n// correct, non-misleading error for the \"Trigger without Root\" case.\nconst [TooltipContextProvider, useTooltipContext] =\n createPartContext<TooltipClientContextValue>(\"Tooltip\");\n\nexport function TooltipProvider(props: TooltipProviderOwnProps): ReactElement | null {\n const { children, delayDuration = 300, skipDelayDuration = 300 } = props;\n const storeRef = useRef<TooltipProviderStore | null>(null);\n storeRef.current ??= createTooltipProviderStore({ delayDuration, skipDelayDuration });\n\n useIsomorphicLayoutEffect(() => {\n storeRef.current?.updateOptions({ delayDuration, skipDelayDuration });\n }, [delayDuration, skipDelayDuration]);\n\n return (\n <TooltipProviderStoreProvider value={storeRef.current}>{children}</TooltipProviderStoreProvider>\n );\n}\nTooltipProvider.displayName = \"TooltipProvider\";\n\nexport function TooltipRoot(props: TooltipRootProps): ReactElement | null {\n const { children, defaultOpen = false, id, onOpenChange, open } = props;\n const provider = useTooltipProviderStore(\"Root\");\n const pointerFocusRef = useRef(false);\n const overlay = useHoverOverlay({\n closeDelay: CONTENT_HOVER_GRACE_MS,\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(id !== undefined ? { id } : {}),\n idPrefix: \"uiify-tooltip\",\n ...(onOpenChange ? { onOpenChange } : {}),\n onOpened: provider.markOpened,\n ...(open !== undefined ? { open } : {}),\n openDelay: provider.getDelayDuration(),\n shouldSkipDelay: provider.shouldSkipDelay,\n });\n\n const contextValue: TooltipClientContextValue = {\n anchorId: overlay.anchorId,\n closeTooltip: overlay.closeOverlay,\n contentId: overlay.contentId,\n intent: overlay.intent,\n open: overlay.open,\n openTooltip: overlay.openOverlay,\n pointerFocusRef,\n setContentId: overlay.setContentId,\n };\n\n return <TooltipContextProvider value={contextValue}>{children}</TooltipContextProvider>;\n}\nTooltipRoot.displayName = \"TooltipRoot\";\n\nexport function TooltipTrigger<TAs extends ElementType = \"button\">(\n props: TooltipTriggerProps<TAs>,\n): ReactElement | null {\n const { as, render, className, ...consumerProps } = props as TooltipTriggerProps<\"button\">;\n const { anchorId, closeTooltip, contentId, intent, open, openTooltip, pointerFocusRef } =\n useTooltipContext(\"Trigger\");\n const nativeButton = !as || as === \"button\";\n const consumerStyle = (consumerProps as { style?: CSSProperties }).style;\n const anchorProps = {\n ...createAnchorTriggerProps(anchorNameForId(anchorId)),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n };\n const {\n onBlur: consumerOnBlur,\n onFocus: consumerOnFocus,\n onKeyDown: consumerOnKeyDown,\n onPointerDown: consumerOnPointerDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = consumerProps as {\n onBlur?: (event: FocusEvent<HTMLElement>) => void;\n onFocus?: (event: FocusEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerDown?: (event: PointerEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n\n return useRenderElement({\n as,\n defaultTag: \"button\",\n props: {\n ...consumerProps,\n ...anchorProps,\n \"aria-describedby\": open ? contentId : undefined,\n ...(nativeButton ? { type: \"button\", \"data-uiify-button\": \"\" } : {}),\n ...(className ? { className } : {}),\n onBlur: composeEventHandlers(consumerOnBlur, () => {\n closeTooltip();\n }),\n onFocus: composeEventHandlers(consumerOnFocus, () => {\n if (!pointerFocusRef.current) openTooltip(true);\n pointerFocusRef.current = false;\n }),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") closeTooltip();\n }),\n onPointerDown: composeEventHandlers(consumerOnPointerDown, () => {\n pointerFocusRef.current = true;\n }),\n onPointerEnter: composeEventHandlers(\n consumerOnPointerEnter,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") openTooltip(false);\n },\n ),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") {\n intent.scheduleClose(() => closeTooltip());\n }\n },\n ),\n },\n render,\n state: { open },\n });\n}\n\nexport function TooltipContent<TAs extends ElementType = \"div\">(\n props: TooltipContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"center\",\n as,\n render,\n className,\n side = \"bottom\",\n ...consumerProps\n } = props as TooltipContentProps<\"div\">;\n const { anchorId, closeTooltip, contentId, intent, open, setContentId } =\n useTooltipContext(\"Content\");\n const [consumerRef, domProps] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const popupRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(popupRef, consumerRef);\n const consumerDomProps = domProps as { id?: string; style?: CSSProperties };\n const resolvedId =\n typeof consumerDomProps.id === \"string\" && consumerDomProps.id.length > 0\n ? consumerDomProps.id\n : contentId;\n const consumerStyle = consumerDomProps.style;\n\n useIsomorphicLayoutEffect(() => {\n setContentId(resolvedId);\n }, [resolvedId, setContentId]);\n\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const popup = popupRef.current;\n if (!popup) return;\n try {\n if (open && !popup.matches(\":popover-open\")) popup.showPopover();\n if (!open && popup.matches(\":popover-open\")) popup.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [open]);\n\n const { onPointerEnter: consumerOnPointerEnter, onPointerLeave: consumerOnPointerLeave } =\n domProps as {\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...domProps,\n ...createAnchorPositionerProps({\n align,\n anchorName: anchorNameForId(anchorId),\n side,\n }),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n ref: mergedRef,\n popover: \"manual\",\n // The consumer's own non-empty `id` wins (computed above as `resolvedId`); otherwise the\n // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.\n id: resolvedId,\n role: \"tooltip\",\n \"data-part\": \"content\",\n \"data-uiify-tooltip\": \"\",\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {\n intent.clearCloseTimer();\n }),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") closeTooltip();\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\n\nexport const Tooltip = {\n Content: TooltipContent,\n Provider: TooltipProvider,\n Root: TooltipRoot,\n Trigger: TooltipTrigger,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\nimport { useRef } from \"react\";\nimport type {\n CSSProperties,\n ElementType,\n FocusEvent,\n KeyboardEvent,\n PointerEvent,\n ReactElement,\n} from \"react\";\nimport { useIsomorphicLayoutEffect, useMergedRefs } from \"@gunkin/uiify/hooks\";\nimport {\n createAnchorPositionerProps,\n createAnchorTriggerProps,\n anchorNameForId,\n} from \"@gunkin/uiify/core/anchor-position\";\nimport { composeEventHandlers } from \"@gunkin/uiify/core/compose-event-handlers\";\nimport {\n createPartContext,\n splitRef,\n useHoverOverlay,\n type HoverIntentStore,\n} from \"@gunkin/uiify/core\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { CONTENT_HOVER_GRACE_MS, createTooltipProviderStore } from \"./tooltip-store.js\";\nimport type {\n TooltipContentProps,\n TooltipProviderOwnProps,\n TooltipProviderStore,\n TooltipRootProps,\n TooltipTriggerProps,\n} from \"./types.js\";\ninterface TooltipClientContextValue {\n readonly anchorId: string;\n readonly closeTooltip: () => void;\n readonly contentId: string;\n readonly intent: HoverIntentStore;\n readonly open: boolean;\n readonly openTooltip: (immediate?: boolean) => void;\n readonly pointerFocusRef: React.RefObject<boolean>;\n readonly setContentId: (id: string) => void;\n}\nconst [TooltipProviderStoreProvider, useTooltipProviderStore] =\n createPartContext<TooltipProviderStore>(\"Tooltip\", \"Provider\");\n// Root name \"Root\" (the default): Trigger/Content require <Tooltip.Root>, a\n// distinct nesting requirement from TooltipRoot itself requiring\n// <Tooltip.Provider> above. Keeping the two contexts' root names accurate\n// (rather than pointing both at \"Provider\") preserves the original's\n// correct, non-misleading error for the \"Trigger without Root\" case.\nconst [TooltipContextProvider, useTooltipContext] =\n createPartContext<TooltipClientContextValue>(\"Tooltip\");\nexport function TooltipProvider(props: TooltipProviderOwnProps): ReactElement | null {\n const { children, delayDuration = 300, skipDelayDuration = 300 } = props;\n const storeRef = useRef<TooltipProviderStore | null>(null);\n storeRef.current ??= createTooltipProviderStore({ delayDuration, skipDelayDuration });\n useIsomorphicLayoutEffect(() => {\n storeRef.current?.updateOptions({ delayDuration, skipDelayDuration });\n }, [delayDuration, skipDelayDuration]);\n return (\n <TooltipProviderStoreProvider value={storeRef.current}>{children}</TooltipProviderStoreProvider>\n );\n}\nTooltipProvider.displayName = \"TooltipProvider\";\nexport function TooltipRoot(props: TooltipRootProps): ReactElement | null {\n const { children, defaultOpen = false, id, onOpenChange, open } = props;\n const provider = useTooltipProviderStore(\"Root\");\n const pointerFocusRef = useRef(false);\n const overlay = useHoverOverlay({\n closeDelay: CONTENT_HOVER_GRACE_MS,\n ...(defaultOpen !== undefined ? { defaultOpen } : {}),\n ...(id !== undefined ? { id } : {}),\n idPrefix: \"uiify-tooltip\",\n ...(onOpenChange ? { onOpenChange } : {}),\n onOpened: provider.markOpened,\n ...(open !== undefined ? { open } : {}),\n openDelay: provider.getDelayDuration(),\n shouldSkipDelay: provider.shouldSkipDelay,\n });\n const contextValue: TooltipClientContextValue = {\n anchorId: overlay.anchorId,\n closeTooltip: overlay.closeOverlay,\n contentId: overlay.contentId,\n intent: overlay.intent,\n open: overlay.open,\n openTooltip: overlay.openOverlay,\n pointerFocusRef,\n setContentId: overlay.setContentId,\n };\n return <TooltipContextProvider value={contextValue}>{children}</TooltipContextProvider>;\n}\nTooltipRoot.displayName = \"TooltipRoot\";\nexport function TooltipTrigger<TAs extends ElementType = \"button\">(\n props: TooltipTriggerProps<TAs>,\n): ReactElement | null {\n const { as, render, className, ...consumerProps } = props as TooltipTriggerProps<\"button\">;\n const { anchorId, closeTooltip, contentId, intent, open, openTooltip, pointerFocusRef } =\n useTooltipContext(\"Trigger\");\n const nativeButton = !as || as === \"button\";\n const consumerStyle = (\n consumerProps as {\n style?: CSSProperties;\n }\n ).style;\n const anchorProps = {\n ...createAnchorTriggerProps(anchorNameForId(anchorId)),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n };\n const {\n onBlur: consumerOnBlur,\n onFocus: consumerOnFocus,\n onKeyDown: consumerOnKeyDown,\n onPointerDown: consumerOnPointerDown,\n onPointerEnter: consumerOnPointerEnter,\n onPointerLeave: consumerOnPointerLeave,\n } = consumerProps as {\n onBlur?: (event: FocusEvent<HTMLElement>) => void;\n onFocus?: (event: FocusEvent<HTMLElement>) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLElement>) => void;\n onPointerDown?: (event: PointerEvent<HTMLElement>) => void;\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n return useRenderElement({\n as,\n defaultTag: \"button\",\n props: {\n \"aria-describedby\": open ? contentId : undefined,\n ...(nativeButton ? { type: \"button\", \"data-uiify-button\": \"\" } : {}),\n ...(className ? { className } : {}),\n ...anchorProps,\n ...consumerProps,\n onBlur: composeEventHandlers(consumerOnBlur, () => {\n closeTooltip();\n }),\n onFocus: composeEventHandlers(consumerOnFocus, () => {\n if (!pointerFocusRef.current) openTooltip(true);\n pointerFocusRef.current = false;\n }),\n onKeyDown: composeEventHandlers(consumerOnKeyDown, (event: KeyboardEvent<HTMLElement>) => {\n if (event.key === \"Escape\") closeTooltip();\n }),\n onPointerDown: composeEventHandlers(consumerOnPointerDown, () => {\n pointerFocusRef.current = true;\n }),\n onPointerEnter: composeEventHandlers(\n consumerOnPointerEnter,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") openTooltip(false);\n },\n ),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") {\n intent.scheduleClose(() => closeTooltip());\n }\n },\n ),\n },\n render,\n state: { open },\n });\n}\nexport function TooltipContent<TAs extends ElementType = \"div\">(\n props: TooltipContentProps<TAs>,\n): ReactElement | null {\n const {\n align = \"center\",\n as,\n render,\n className,\n side = \"bottom\",\n ...consumerProps\n } = props as TooltipContentProps<\"div\">;\n const { anchorId, closeTooltip, contentId, intent, open, setContentId } =\n useTooltipContext(\"Content\");\n const [consumerRef, domProps] = splitRef<HTMLElement, typeof consumerProps>(consumerProps);\n const popupRef = useRef<HTMLElement | null>(null);\n const mergedRef = useMergedRefs(popupRef, consumerRef);\n const consumerDomProps = domProps as {\n id?: string;\n style?: CSSProperties;\n };\n const resolvedId =\n typeof consumerDomProps.id === \"string\" && consumerDomProps.id.length > 0\n ? consumerDomProps.id\n : contentId;\n const consumerStyle = consumerDomProps.style;\n useIsomorphicLayoutEffect(() => {\n setContentId(resolvedId);\n }, [resolvedId, setContentId]);\n // Same technique as core/use-popover.ts: guard with .matches(\":popover-open\")\n // so a StrictMode double-invoke or an unrelated re-run doesn't call\n // showPopover/hidePopover on a popover already in that state (both throw).\n // try/catch covers the node having disconnected between render and effect.\n useIsomorphicLayoutEffect(() => {\n const popup = popupRef.current;\n if (!popup) return;\n try {\n if (open && !popup.matches(\":popover-open\")) popup.showPopover();\n if (!open && popup.matches(\":popover-open\")) popup.hidePopover();\n } catch {\n // The node may have disconnected between render and layout effect.\n }\n }, [open]);\n const { onPointerEnter: consumerOnPointerEnter, onPointerLeave: consumerOnPointerLeave } =\n domProps as {\n onPointerEnter?: (event: PointerEvent<HTMLElement>) => void;\n onPointerLeave?: (event: PointerEvent<HTMLElement>) => void;\n };\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...createAnchorPositionerProps({\n align,\n anchorName: anchorNameForId(anchorId),\n side,\n }),\n ...(consumerStyle ? { style: consumerStyle } : {}),\n popover: \"manual\",\n // The consumer's own non-empty `id` wins (computed above as `resolvedId`); otherwise the\n // The consumer's own non-empty `id` wins; otherwise the context-generated id is used.\n id: resolvedId,\n role: \"tooltip\",\n \"data-part\": \"content\",\n \"data-uiify-tooltip\": \"\",\n \"data-state\": open ? \"open\" : \"closed\",\n ...(className ? { className } : {}),\n ...domProps,\n ref: mergedRef,\n onPointerEnter: composeEventHandlers(consumerOnPointerEnter, () => {\n intent.clearCloseTimer();\n }),\n onPointerLeave: composeEventHandlers(\n consumerOnPointerLeave,\n (event: PointerEvent<HTMLElement>) => {\n if (event.pointerType === \"mouse\") closeTooltip();\n },\n ),\n },\n render,\n state: { open, positioning: \"native\" as const },\n });\n}\nexport const Tooltip = {\n Content: TooltipContent,\n Provider: TooltipProvider,\n Root: TooltipRoot,\n Trigger: TooltipTrigger,\n};\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../../../src/components/virtual-scroll/VirtualScroll.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AA0Cf,OAAO,KAAK,EAEV,iBAAiB,EACjB,qBAAqB,EAItB,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvD,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC9B,YAAY,CA0fd;yBA5fe,aAAa"}
1
+ {"version":3,"file":"VirtualScroll.d.ts","sourceRoot":"","sources":["../../../src/components/virtual-scroll/VirtualScroll.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAuCf,OAAO,KAAK,EAEV,iBAAiB,EACjB,qBAAqB,EAItB,MAAM,YAAY,CAAC;AAwBpB,wBAAgB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EACvD,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC9B,YAAY,CAugBd;yBAzgBe,aAAa"}
@@ -8,14 +8,11 @@ import {
8
8
  useRef,
9
9
  useState
10
10
  } from "react";
11
+ import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
11
12
  import { flushSync } from "react-dom";
12
13
  import { useResizeObserver } from "@gunkin/uiify/hooks";
13
14
  import { useMergedRefs } from "../../hooks/use-merged-refs.js";
14
- import {
15
- mergeRepeatedSlotProps,
16
- omitProps,
17
- resolveRepeatedSlotProps
18
- } from "../../core/slot-props.js";
15
+ import { mergeRepeatedSlotProps, resolveRepeatedSlotProps } from "../../core/slot-props.js";
19
16
  import { resolveVirtualScrollAnchorAdjustment } from "./virtual-scroll-anchor.js";
20
17
  import { readScrollOffset, writeScrollOffset } from "./virtual-scroll-axis.js";
21
18
  import {
@@ -81,7 +78,6 @@ function VirtualScroll(props) {
81
78
  scrollRef,
82
79
  estimateRowHeight,
83
80
  onRangeChange,
84
- role = "list",
85
81
  anchor = "start",
86
82
  followAppend = false,
87
83
  onScrollStateChange,
@@ -89,6 +85,7 @@ function VirtualScroll(props) {
89
85
  slotProps,
90
86
  ...consumerProps
91
87
  } = props;
88
+ const listRole = consumerProps.role === "grid" ? "grid" : "list";
92
89
  const height = suppliedHeight ?? 600;
93
90
  const dynamicLayout = estimateRowHeight !== void 0;
94
91
  const horizontal = orientation === "horizontal";
@@ -96,6 +93,16 @@ function VirtualScroll(props) {
96
93
  const rootRef = useMergedRefs(ref, consumerRef);
97
94
  const scrollOffsetRef = useRef(0);
98
95
  const programmaticScrollRef = useRef(false);
96
+ const eventHandlersRef = useRef({
97
+ onScroll: () => {
98
+ },
99
+ onScrollEnd: () => {
100
+ },
101
+ onTouchStart: () => {
102
+ },
103
+ onTouchEnd: () => {
104
+ }
105
+ });
99
106
  const itemsRef = useRef(items);
100
107
  itemsRef.current = items;
101
108
  const lastRangeChangeRef = useRef("");
@@ -196,7 +203,15 @@ function VirtualScroll(props) {
196
203
  applyVirtualScrollRangeToDom(element, nextRange, {
197
204
  dynamicLayout: dynamicLayout2,
198
205
  slotCount: slotCount2,
199
- getRowOffset: store.getRowOffset.bind(store)
206
+ getRowOffset: store.getRowOffset.bind(store),
207
+ spacerStyle: slotProps?.spacer?.style,
208
+ getRowStyle: (index) => {
209
+ const item = itemsRef.current[index];
210
+ if (!item) return void 0;
211
+ const { byItemIndex, ...byItemValueProps } = slotProps?.row ?? {};
212
+ const commonProps = resolveRepeatedSlotProps(byItemValueProps, item.id);
213
+ return mergeRepeatedSlotProps(commonProps, byItemIndex?.[index]).style;
214
+ }
200
215
  });
201
216
  flushSync(() => {
202
217
  setRangeVersion((version) => version + 1);
@@ -355,8 +370,6 @@ function VirtualScroll(props) {
355
370
  }
356
371
  }
357
372
  });
358
- let onScroll = null;
359
- let onScrollEnd = null;
360
373
  const ios = iosControllerRef.current;
361
374
  const onTouchStart = () => ios.onTouchStart();
362
375
  const onTouchEnd = () => ios.onTouchEnd();
@@ -377,27 +390,29 @@ function VirtualScroll(props) {
377
390
  }, 0);
378
391
  });
379
392
  };
380
- onScroll = () => {
393
+ const onScroll = () => {
381
394
  syncNativeScroll();
382
395
  scrollState.notifyScroll();
383
396
  };
384
- element.addEventListener("scroll", onScroll, { passive: true });
385
- if (supportsScrollEndEvent()) {
386
- onScrollEnd = () => {
387
- syncNativeScroll();
388
- scrollState.notifyScrollEnd();
389
- };
390
- element.addEventListener("scrollend", onScrollEnd, { passive: true });
391
- }
392
- element.addEventListener("touchstart", onTouchStart, { passive: true });
393
- element.addEventListener("touchend", onTouchEnd, { passive: true });
397
+ const onScrollEnd = () => {
398
+ if (!supportsScrollEndEvent()) return;
399
+ syncNativeScroll();
400
+ scrollState.notifyScrollEnd();
401
+ };
402
+ eventHandlersRef.current = { onScroll, onScrollEnd, onTouchStart, onTouchEnd };
394
403
  return () => {
395
404
  if (verifyFrame !== 0) cancelAnimationFrame(verifyFrame);
396
405
  if (verifyTimer !== 0) window.clearTimeout(verifyTimer);
397
- if (onScroll) element.removeEventListener("scroll", onScroll);
398
- if (onScrollEnd) element.removeEventListener("scrollend", onScrollEnd);
399
- element.removeEventListener("touchstart", onTouchStart);
400
- element.removeEventListener("touchend", onTouchEnd);
406
+ eventHandlersRef.current = {
407
+ onScroll: () => {
408
+ },
409
+ onScrollEnd: () => {
410
+ },
411
+ onTouchStart: () => {
412
+ },
413
+ onTouchEnd: () => {
414
+ }
415
+ };
401
416
  scrollState.dispose();
402
417
  };
403
418
  }, [isScrollingResetDelay]);
@@ -434,12 +449,12 @@ function VirtualScroll(props) {
434
449
  }, [range]);
435
450
  const scrollportStyle = {
436
451
  ...suppliedHeight !== void 0 || !consumerStyle?.blockSize && !consumerStyle?.height ? { blockSize: height } : {},
437
- ...consumerStyle,
438
452
  overflowX: horizontal ? "auto" : void 0,
439
453
  overflowY: horizontal ? "hidden" : "auto",
440
454
  "--uiify-virtual-scroll-count": items.length,
441
455
  "--uiify-virtual-scroll-row-height": `${rowHeight}px`,
442
- ...dynamicLayout ? { "--uiify-virtual-scroll-total-size": `${totalSize}px` } : {}
456
+ ...dynamicLayout ? { "--uiify-virtual-scroll-total-size": `${totalSize}px` } : {},
457
+ ...consumerStyle
443
458
  };
444
459
  const spacerStyle = dynamicLayout ? void 0 : {
445
460
  "--uiify-range-start": range.start
@@ -447,21 +462,37 @@ function VirtualScroll(props) {
447
462
  return /* @__PURE__ */ jsx(
448
463
  "div",
449
464
  {
450
- ...consumerProps,
451
- ref: rootRef,
452
- "data-testid": testId ?? consumerProps["data-testid"],
465
+ "data-testid": testId,
453
466
  "data-uiify-virtual-scroll": "",
454
467
  "data-dynamic-layout": dynamicLayout ? "" : void 0,
455
468
  "data-orientation": orientation,
456
- role,
469
+ role: listRole,
470
+ ...consumerProps,
471
+ ref: rootRef,
472
+ onScroll: composeEventHandlers(
473
+ consumerProps.onScroll,
474
+ () => eventHandlersRef.current.onScroll()
475
+ ),
476
+ onScrollEnd: composeEventHandlers(
477
+ consumerProps.onScrollEnd,
478
+ () => eventHandlersRef.current.onScrollEnd()
479
+ ),
480
+ onTouchStart: composeEventHandlers(
481
+ consumerProps.onTouchStart,
482
+ () => eventHandlersRef.current.onTouchStart()
483
+ ),
484
+ onTouchEnd: composeEventHandlers(
485
+ consumerProps.onTouchEnd,
486
+ () => eventHandlersRef.current.onTouchEnd()
487
+ ),
457
488
  className,
458
489
  style: scrollportStyle,
459
490
  children: /* @__PURE__ */ jsx(
460
491
  "div",
461
492
  {
462
- ...omitProps(slotProps?.spacer, ["children", "dangerouslySetInnerHTML", "data-part"]),
463
493
  "data-part": "spacer",
464
- style: { ...slotProps?.spacer?.style, ...spacerStyle },
494
+ ...slotProps?.spacer,
495
+ style: { ...spacerStyle, ...slotProps?.spacer?.style },
465
496
  children: rowSlots.map((slot) => {
466
497
  const store = measurementStoreRef.current;
467
498
  const rowOffset = dynamicLayout ? store.getRowOffset(slot.index) : void 0;
@@ -473,22 +504,13 @@ function VirtualScroll(props) {
473
504
  if (!slot.item) return {};
474
505
  const { byItemIndex, ...byItemValueProps } = slotProps?.row ?? {};
475
506
  const commonProps = resolveRepeatedSlotProps(byItemValueProps, slot.item.id);
476
- return omitProps(mergeRepeatedSlotProps(commonProps, byItemIndex?.[slot.index]), [
477
- "children",
478
- "dangerouslySetInnerHTML",
479
- "aria-posinset",
480
- "aria-setsize",
481
- "data-dynamic-row",
482
- "data-part",
483
- "data-row-index",
484
- "role"
485
- ]);
507
+ return mergeRepeatedSlotProps(commonProps, byItemIndex?.[slot.index]);
486
508
  })(),
487
509
  key: `slot-${slot.slotIndex}`,
488
510
  slotIndex: slot.slotIndex,
489
511
  index: slot.index,
490
512
  itemCount: items.length,
491
- listRole: role,
513
+ listRole,
492
514
  dynamicLayout,
493
515
  ...rowOffset !== void 0 ? { rowOffset } : {},
494
516
  ...measuredRowHeight !== void 0 ? { rowHeight: measuredRowHeight } : {}