@primereact/headless 11.0.0-rc.1 → 11.0.0-rc.2

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 (279) hide show
  1. package/accordion/index.mjs +1 -2
  2. package/animateonscroll/index.mjs +1 -2
  3. package/autocomplete/index.mjs +1 -2
  4. package/avatar/index.mjs +1 -2
  5. package/avatargroup/index.mjs +0 -1
  6. package/badge/index.mjs +1 -2
  7. package/breadcrumb/index.mjs +0 -1
  8. package/button/index.mjs +0 -1
  9. package/card/index.mjs +0 -1
  10. package/carousel/index.mjs +1 -2
  11. package/carousel/useCarousel.d.ts +28 -15
  12. package/checkbox/index.mjs +1 -2
  13. package/checkboxgroup/index.mjs +1 -2
  14. package/chip/index.mjs +1 -2
  15. package/collapsible/index.mjs +1 -2
  16. package/compare/index.mjs +1 -2
  17. package/contextmenu/index.mjs +1 -2
  18. package/contextmenu/submenu/index.mjs +0 -1
  19. package/datatable/features/index.mjs +8 -9
  20. package/datatable/features/useDataTableExport.d.ts +1 -1
  21. package/datatable/features/useDataTableKeyboard.d.ts +1 -1
  22. package/datatable/features/useDataTableSelection.d.ts +4 -4
  23. package/datatable/index.mjs +8 -9
  24. package/datatable/useDataTable.d.ts +2 -2
  25. package/datatable/utils/index.mjs +0 -1
  26. package/dataview/index.mjs +1 -2
  27. package/datepicker/index.mjs +1 -2
  28. package/dialog/index.mjs +1 -2
  29. package/dialog/useDialog.d.ts +12 -12
  30. package/divider/index.mjs +0 -1
  31. package/divider/useDivider.d.ts +1 -1
  32. package/dnd/index.mjs +1 -2
  33. package/drawer/index.mjs +1 -2
  34. package/fieldset/index.mjs +1 -2
  35. package/fileupload/index.mjs +1 -2
  36. package/fileupload/useFileUpload.d.ts +3 -0
  37. package/floatlabel/index.mjs +0 -1
  38. package/fluid/index.mjs +0 -1
  39. package/focustrap/index.mjs +1 -2
  40. package/gallery/index.mjs +1 -2
  41. package/gallery/item/index.mjs +1 -2
  42. package/gallery/useGallery.d.ts +17 -9
  43. package/iconfield/index.mjs +0 -1
  44. package/iftalabel/index.mjs +0 -1
  45. package/inplace/index.mjs +1 -2
  46. package/inplace/useInplace.d.ts +18 -6
  47. package/inputcolor/colorManager.d.ts +1 -1
  48. package/inputcolor/index.mjs +1 -2
  49. package/inputgroup/index.mjs +0 -1
  50. package/inputnumber/index.mjs +1 -2
  51. package/inputotp/index.mjs +1 -2
  52. package/inputpassword/index.mjs +1 -2
  53. package/inputtags/index.mjs +1 -2
  54. package/inputtext/index.mjs +1 -2
  55. package/knob/index.mjs +1 -2
  56. package/label/index.mjs +0 -1
  57. package/listbox/index.mjs +1 -2
  58. package/menu/checkboxitem/index.mjs +1 -2
  59. package/menu/index.mjs +1 -2
  60. package/menu/radioitem/index.mjs +1 -2
  61. package/menu/submenu/index.mjs +1 -2
  62. package/message/index.mjs +1 -2
  63. package/metergroup/index.mjs +1 -2
  64. package/navigationmenu/index.mjs +1 -2
  65. package/orderlist/index.mjs +1 -2
  66. package/orderlist/useOrderList.d.ts +1 -0
  67. package/organizationchart/index.mjs +1 -2
  68. package/overlaybadge/index.mjs +0 -1
  69. package/package.json +9 -7
  70. package/paginator/index.mjs +1 -2
  71. package/paginator/usePaginator.d.ts +1 -1
  72. package/panel/index.mjs +1 -2
  73. package/picklist/index.mjs +1 -2
  74. package/popover/index.mjs +1 -2
  75. package/portal/index.mjs +0 -1
  76. package/positioner/index.mjs +1 -2
  77. package/positioner/usePositioner.anchor.d.ts +2 -2
  78. package/positioner/usePositioner.fallback.d.ts +2 -2
  79. package/progressbar/index.mjs +1 -2
  80. package/progressspinner/index.mjs +1 -2
  81. package/radiobutton/index.mjs +1 -2
  82. package/radiobuttongroup/index.mjs +1 -2
  83. package/rating/index.mjs +1 -2
  84. package/scrollarea/index.mjs +1 -2
  85. package/scrollarea/useScrollArea.d.ts +1 -1
  86. package/select/index.mjs +1 -2
  87. package/sidebar/index.mjs +1 -2
  88. package/sidebar/useSidebar.d.ts +30 -4
  89. package/sidebar/useSidebarLayout.d.ts +4 -4
  90. package/sidebar/useSidebarMenuItem.d.ts +0 -1
  91. package/skeleton/index.mjs +0 -1
  92. package/slider/index.mjs +1 -2
  93. package/speeddial/index.mjs +1 -2
  94. package/splitter/index.mjs +1 -2
  95. package/stepper/index.mjs +1 -2
  96. package/styleclass/index.mjs +1 -2
  97. package/tabs/index.mjs +1 -2
  98. package/tag/index.mjs +0 -1
  99. package/terminal/index.mjs +1 -2
  100. package/textarea/index.mjs +1 -2
  101. package/timeline/index.mjs +0 -1
  102. package/toast/index.mjs +1 -2
  103. package/toaster/index.mjs +1 -2
  104. package/togglebutton/index.mjs +1 -2
  105. package/togglebuttongroup/index.mjs +1 -2
  106. package/toggleswitch/index.mjs +1 -2
  107. package/toolbar/index.mjs +0 -1
  108. package/tooltip/index.mjs +1 -2
  109. package/tooltipmanager/index.mjs +1 -2
  110. package/tree/index.mjs +1 -2
  111. package/tree/useTree.d.ts +4 -4
  112. package/tree/useTreeDragDrop.d.ts +2 -2
  113. package/tree/useTreeFlatten.d.ts +1 -1
  114. package/tree/useTreeSelection.d.ts +3 -3
  115. package/accordion/index.mjs.map +0 -1
  116. package/accordion/useAccordion.test.d.ts +0 -0
  117. package/animateonscroll/index.mjs.map +0 -1
  118. package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
  119. package/autocomplete/index.mjs.map +0 -1
  120. package/autocomplete/useAutoComplete.test.d.ts +0 -0
  121. package/avatar/index.mjs.map +0 -1
  122. package/avatar/useAvatar.test.d.ts +0 -0
  123. package/avatargroup/index.mjs.map +0 -1
  124. package/badge/index.mjs.map +0 -1
  125. package/badge/useBadge.test.d.ts +0 -0
  126. package/breadcrumb/index.mjs.map +0 -1
  127. package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
  128. package/button/index.mjs.map +0 -1
  129. package/button/useButton.test.d.ts +0 -0
  130. package/card/index.mjs.map +0 -1
  131. package/card/useCard.test.d.ts +0 -0
  132. package/carousel/index.mjs.map +0 -1
  133. package/carousel/useCarousel.test.d.ts +0 -0
  134. package/checkbox/index.mjs.map +0 -1
  135. package/checkbox/useCheckbox.test.d.ts +0 -0
  136. package/checkboxgroup/index.mjs.map +0 -1
  137. package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
  138. package/chip/index.mjs.map +0 -1
  139. package/chip/useChip.test.d.ts +0 -0
  140. package/collapsible/index.mjs.map +0 -1
  141. package/collapsible/useCollapsible.test.d.ts +0 -0
  142. package/compare/index.mjs.map +0 -1
  143. package/compare/useCompare.test.d.ts +0 -0
  144. package/contextmenu/index.mjs.map +0 -1
  145. package/contextmenu/submenu/index.mjs.map +0 -1
  146. package/contextmenu/useContextMenu.test.d.ts +0 -0
  147. package/datatable/features/index.mjs.map +0 -1
  148. package/datatable/index.mjs.map +0 -1
  149. package/datatable/utils/index.mjs.map +0 -1
  150. package/dataview/index.mjs.map +0 -1
  151. package/dataview/useDataView.test.d.ts +0 -0
  152. package/datepicker/index.mjs.map +0 -1
  153. package/datepicker/useDatePicker.test.d.ts +0 -0
  154. package/dialog/index.mjs.map +0 -1
  155. package/dialog/useDialog.test.d.ts +0 -0
  156. package/divider/index.mjs.map +0 -1
  157. package/divider/useDivider.test.d.ts +0 -0
  158. package/dnd/index.mjs.map +0 -1
  159. package/drawer/index.mjs.map +0 -1
  160. package/drawer/useDrawer.test.d.ts +0 -0
  161. package/fieldset/index.mjs.map +0 -1
  162. package/fieldset/useFieldset.test.d.ts +0 -0
  163. package/fileupload/index.mjs.map +0 -1
  164. package/fileupload/useFileUpload.test.d.ts +0 -0
  165. package/floatlabel/index.mjs.map +0 -1
  166. package/floatlabel/useFloatLabel.test.d.ts +0 -0
  167. package/fluid/index.mjs.map +0 -1
  168. package/fluid/useFluid.test.d.ts +0 -0
  169. package/focustrap/index.mjs.map +0 -1
  170. package/focustrap/useFocusTrap.test.d.ts +0 -0
  171. package/gallery/index.mjs.map +0 -1
  172. package/gallery/item/index.mjs.map +0 -1
  173. package/gallery/useGallery.test.d.ts +0 -0
  174. package/iconfield/index.mjs.map +0 -1
  175. package/iconfield/useIconField.test.d.ts +0 -0
  176. package/iftalabel/index.mjs.map +0 -1
  177. package/iftalabel/useIftaLabel.test.d.ts +0 -0
  178. package/inplace/index.mjs.map +0 -1
  179. package/inplace/useInplace.test.d.ts +0 -0
  180. package/inputcolor/index.mjs.map +0 -1
  181. package/inputcolor/useInputColor.test.d.ts +0 -0
  182. package/inputgroup/index.mjs.map +0 -1
  183. package/inputgroup/useInputGroup.test.d.ts +0 -0
  184. package/inputnumber/index.mjs.map +0 -1
  185. package/inputnumber/useInputNumber.test.d.ts +0 -0
  186. package/inputotp/index.mjs.map +0 -1
  187. package/inputotp/useInputOtp.test.d.ts +0 -0
  188. package/inputpassword/index.mjs.map +0 -1
  189. package/inputpassword/useInputPassword.test.d.ts +0 -0
  190. package/inputtags/index.mjs.map +0 -1
  191. package/inputtags/useInputTags.test.d.ts +0 -0
  192. package/inputtext/index.mjs.map +0 -1
  193. package/inputtext/useInputText.test.d.ts +0 -0
  194. package/knob/index.mjs.map +0 -1
  195. package/knob/useKnob.test.d.ts +0 -0
  196. package/label/index.mjs.map +0 -1
  197. package/label/useLabel.test.d.ts +0 -0
  198. package/listbox/index.mjs.map +0 -1
  199. package/listbox/useListbox.test.d.ts +0 -0
  200. package/menu/checkboxitem/index.mjs.map +0 -1
  201. package/menu/index.mjs.map +0 -1
  202. package/menu/radioitem/index.mjs.map +0 -1
  203. package/menu/submenu/index.mjs.map +0 -1
  204. package/menu/useMenu.test.d.ts +0 -0
  205. package/message/index.mjs.map +0 -1
  206. package/message/useMessage.test.d.ts +0 -0
  207. package/metergroup/index.mjs.map +0 -1
  208. package/metergroup/useMeterGroup.test.d.ts +0 -0
  209. package/navigationmenu/index.mjs.map +0 -1
  210. package/navigationmenu/useNavigationMenu.test.d.ts +0 -0
  211. package/orderlist/index.mjs.map +0 -1
  212. package/organizationchart/index.mjs.map +0 -1
  213. package/organizationchart/useOrganizationChart.test.d.ts +0 -0
  214. package/overlaybadge/index.mjs.map +0 -1
  215. package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
  216. package/paginator/index.mjs.map +0 -1
  217. package/paginator/usePaginator.test.d.ts +0 -0
  218. package/panel/index.mjs.map +0 -1
  219. package/panel/usePanel.test.d.ts +0 -0
  220. package/picklist/index.mjs.map +0 -1
  221. package/popover/index.mjs.map +0 -1
  222. package/popover/usePopover.test.d.ts +0 -0
  223. package/portal/index.mjs.map +0 -1
  224. package/portal/usePortal.test.d.ts +0 -0
  225. package/positioner/index.mjs.map +0 -1
  226. package/positioner/usePositioner.test.d.ts +0 -0
  227. package/progressbar/index.mjs.map +0 -1
  228. package/progressbar/useProgressBar.test.d.ts +0 -0
  229. package/progressspinner/index.mjs.map +0 -1
  230. package/radiobutton/index.mjs.map +0 -1
  231. package/radiobutton/useRadioButton.test.d.ts +0 -0
  232. package/radiobuttongroup/index.mjs.map +0 -1
  233. package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
  234. package/rating/index.mjs.map +0 -1
  235. package/scrollarea/index.mjs.map +0 -1
  236. package/scrollarea/useScrollArea.test.d.ts +0 -0
  237. package/select/index.mjs.map +0 -1
  238. package/select/useSelect.test.d.ts +0 -1
  239. package/sidebar/index.mjs.map +0 -1
  240. package/skeleton/index.mjs.map +0 -1
  241. package/skeleton/useSkeleton.test.d.ts +0 -0
  242. package/slider/index.mjs.map +0 -1
  243. package/slider/useSlider.test.d.ts +0 -0
  244. package/speeddial/index.mjs.map +0 -1
  245. package/speeddial/useSpeedDial.test.d.ts +0 -0
  246. package/splitter/index.mjs.map +0 -1
  247. package/splitter/useSplitter.test.d.ts +0 -0
  248. package/stepper/index.mjs.map +0 -1
  249. package/stepper/useStepper.test.d.ts +0 -0
  250. package/styleclass/index.mjs.map +0 -1
  251. package/styleclass/useStyleClass.test.d.ts +0 -0
  252. package/tabs/index.mjs.map +0 -1
  253. package/tabs/useTabs.test.d.ts +0 -0
  254. package/tag/index.mjs.map +0 -1
  255. package/tag/useTag.test.d.ts +0 -0
  256. package/terminal/index.mjs.map +0 -1
  257. package/terminal/useTerminal.test.d.ts +0 -0
  258. package/textarea/index.mjs.map +0 -1
  259. package/textarea/useTextarea.test.d.ts +0 -0
  260. package/timeline/index.mjs.map +0 -1
  261. package/timeline/useTimeline.test.d.ts +0 -0
  262. package/toast/index.mjs.map +0 -1
  263. package/toast/useToast.test.d.ts +0 -0
  264. package/toaster/index.mjs.map +0 -1
  265. package/toaster/useToaster.test.d.ts +0 -0
  266. package/togglebutton/index.mjs.map +0 -1
  267. package/togglebutton/useToggle.test.d.ts +0 -0
  268. package/togglebuttongroup/index.mjs.map +0 -1
  269. package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
  270. package/toggleswitch/index.mjs.map +0 -1
  271. package/toggleswitch/useToggleSwitch.test.d.ts +0 -0
  272. package/toolbar/index.mjs.map +0 -1
  273. package/toolbar/useToolbar.test.d.ts +0 -0
  274. package/tooltip/index.mjs.map +0 -1
  275. package/tooltip/useTooltip.test.d.ts +0 -0
  276. package/tooltipmanager/index.mjs.map +0 -1
  277. package/tooltipmanager/useTooltipManager.test.d.ts +0 -0
  278. package/tree/index.mjs.map +0 -1
  279. package/tree/useTree.test.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/select/useSelect.ts","../../src/select/useSelect.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useListbox } from '@primereact/headless/listbox';\nimport { usePopover } from '@primereact/headless/popover';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport type { UseListboxValueChangeEvent } from '@primereact/types/headless/listbox';\nimport type { UsePopoverOpenChangeEvent } from '@primereact/types/headless/popover';\nimport { getFirstFocusableElement, getOuterWidth, isNotEmpty, focus as primeuix_focus } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useSelect.props';\n\nexport const useSelect = withHeadless({\n name: 'useSelect',\n defaultProps,\n setup({ props, id, elementRef }) {\n const onListboxValueChange = React.useRef<((event: UseListboxValueChangeEvent) => void) | null>(null);\n\n const handleListboxValueChange = (event: UseListboxValueChangeEvent) => {\n onListboxValueChange.current?.(event);\n };\n\n const handleOpenChange = (event: UsePopoverOpenChangeEvent) => {\n props.onOpenChange?.({ value: !!event.value });\n };\n\n const listbox = useListbox({\n value: props.value,\n defaultValue: props.defaultValue,\n options: props.options,\n optionKey: props.optionKey,\n optionLabel: props.optionLabel,\n optionValue: props.optionValue,\n optionDisabled: props.optionDisabled,\n optionGroupLabel: props.optionGroupLabel,\n optionGroupChildren: props.optionGroupChildren,\n disabled: props.disabled,\n locale: props.locale,\n autoOptionFocus: props.autoOptionFocus,\n selectOnFocus: props.selectOnFocus,\n focusOnHover: props.focusOnHover,\n multiple: props.multiple,\n metaKeySelection: props.metaKeySelection,\n onValueChange: handleListboxValueChange\n });\n\n const popover = usePopover({\n open: props.open,\n defaultOpen: props.defaultOpen ?? false,\n closeOnEscape: props.closeOnEscape,\n autoFocus: props.autoFocus,\n trapped: props.trapped,\n onOpenChange: handleOpenChange\n });\n\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const focusOnShow = React.useRef<boolean>(false);\n const [focusedState, setFocusedState] = React.useState(false);\n\n const state = {\n value: valueState,\n opened: popover.state.open,\n focused: focusedState,\n focusedOptionIndex: listbox.state.focusedOptionIndex,\n anchorElement: popover.state.anchorElement,\n positionerElement: popover.state.positionerElement,\n popupElement: popover.state.popupElement,\n arrowElement: popover.state.arrowElement,\n rendered: popover.state.rendered\n };\n\n const show = () => {\n popover.setOpen(true);\n };\n\n const hide = () => {\n popover.setOpen(false);\n listbox.changeFocusedOptionIndex(new Event('blur') as unknown as React.KeyboardEvent, -1);\n };\n\n const toggle = () => {\n if (popover.state.open) {\n hide();\n } else {\n show();\n }\n };\n\n const focus = () => {\n if (popover.state.anchorElement) {\n primeuix_focus(popover.state.anchorElement);\n }\n };\n\n const onClick = () => {\n if (!props.disabled) {\n toggle();\n }\n };\n\n const onFocus = () => {\n listbox.listProps.onFocus?.();\n setFocusedState(true);\n };\n\n const onBlur = () => {\n listbox.listProps.onBlur?.();\n setFocusedState(false);\n };\n\n const onOptionSelect = (event: { originalEvent: React.SyntheticEvent; value: unknown }) => {\n const selectedValue = event.value;\n\n if (selectedValue === null) {\n hide();\n focus();\n\n return;\n }\n\n const option = listbox.getOptions().find((opt: unknown) => {\n const optValue = listbox.getOptionValue(opt);\n\n return listbox.isEquals(optValue, selectedValue);\n });\n\n setValueState([\n selectedValue,\n {\n originalEvent: event.originalEvent,\n value: selectedValue,\n option\n }\n ]);\n\n hide();\n focus();\n };\n\n const onClearClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const emptyValue = props.multiple ? [] : null;\n\n setValueState([\n emptyValue,\n {\n originalEvent: event,\n value: emptyValue,\n option: null\n }\n ]);\n\n listbox.updateModel(event, emptyValue);\n\n if (popover.state.open) {\n hide();\n }\n\n focus();\n };\n\n const onClearKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.code === 'Enter' || event.code === 'Space') {\n onClearClick(event as unknown as React.MouseEvent<HTMLButtonElement>);\n }\n };\n\n onListboxValueChange.current = (event: UseListboxValueChangeEvent) => {\n if (props.multiple) {\n setValueState([\n event.value,\n {\n originalEvent: event.originalEvent,\n value: event.value\n }\n ]);\n } else {\n onOptionSelect(event);\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onEnterKey(event);\n break;\n\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n if (popover.state.open) {\n listbox.listProps.onKeyDown?.(event);\n }\n\n break;\n\n case 'Escape':\n if (popover.state.open) {\n hide();\n focus();\n }\n\n break;\n\n case 'Tab':\n onTabKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n\n default:\n if (popover.state.open) {\n listbox.listProps.onKeyDown?.(event);\n }\n\n break;\n }\n };\n\n const onArrowDownKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!popover.state.open) {\n focusOnShow.current = true;\n show();\n } else {\n listbox.listProps.onKeyDown?.(event);\n }\n\n event.preventDefault();\n };\n\n const onArrowUpKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!popover.state.open) {\n focusOnShow.current = true;\n show();\n } else {\n if (event.altKey) {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n\n if (focusedOptionIndex !== -1) {\n const focusedOption = listbox.getOptions()[focusedOptionIndex];\n\n if (focusedOption) {\n onOptionSelect({\n originalEvent: event,\n value: listbox.getOptionValue(focusedOption)\n });\n }\n }\n\n hide();\n } else {\n listbox.listProps.onKeyDown?.(event);\n }\n }\n\n event.preventDefault();\n };\n\n const onEnterKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!popover.state.open) {\n onArrowDownKey(event);\n } else {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n\n if (focusedOptionIndex !== -1) {\n const focusedOption = listbox.getOptions()[focusedOptionIndex];\n\n if (focusedOption && !listbox.isOptionDisabled(focusedOption)) {\n listbox.onOptionSelect(event, focusedOption);\n }\n }\n }\n\n event.preventDefault();\n };\n\n const onTabKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (popover.state.open) {\n const firstFocusable = getFirstFocusableElement(popover.state.positionerElement!, ':not([data-focus-guard])');\n\n if (firstFocusable) {\n primeuix_focus(firstFocusable as HTMLElement);\n event.preventDefault();\n } else {\n hide();\n }\n }\n };\n\n const onFilterKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case 'Escape':\n hide();\n focus();\n\n event.preventDefault();\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n if (listbox.state.focusedOptionIndex !== -1) {\n const focusedOption = listbox.getOptions()[listbox.state.focusedOptionIndex];\n\n if (focusedOption && !listbox.isOptionDisabled(focusedOption)) {\n listbox.onOptionSelect(event, focusedOption);\n }\n }\n\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n onKeyDown(event);\n break;\n\n default:\n break;\n }\n };\n\n const getValueLabel = (val: unknown) => {\n const option = listbox.getOptions().find((opt: unknown) => listbox.isEquals(listbox.getOptionValue(opt), val));\n\n if (option) {\n return listbox.getOptionLabel(option);\n }\n\n if (!props.optionValue && val != null) {\n return listbox.getOptionLabel(val);\n }\n\n return null;\n };\n\n const getSelectedOptionLabel = () => {\n if (!hasValue()) {\n return null;\n }\n\n if (props.multiple && Array.isArray(valueState)) {\n return valueState.map(getValueLabel).filter(Boolean);\n }\n\n return getValueLabel(valueState);\n };\n\n const hasValue = () => {\n if (props.multiple) {\n return Array.isArray(valueState) && valueState.length > 0;\n }\n\n return isNotEmpty(valueState);\n };\n\n const [bindLabelClick] = useEventListener({\n target: () => document.querySelector(`label[for=\"${id}\"]`) as HTMLElement,\n type: 'click',\n listener: () => {\n focus();\n }\n });\n\n const [bindResizeListener, unbindResizeListener] = useEventListener({\n target: 'window',\n type: 'resize',\n listener: () => {\n if (popover.state.open) {\n hide();\n }\n }\n });\n\n React.useEffect(() => {\n bindLabelClick();\n }, [id]);\n\n React.useEffect(() => {\n if (popover.state.open) {\n bindResizeListener();\n } else {\n unbindResizeListener();\n }\n }, [popover.state.open, bindResizeListener, unbindResizeListener]);\n\n React.useEffect(() => {\n if (popover.state.open && popover.state.positionerElement) {\n const widthSource = elementRef?.current ?? popover.state.anchorElement;\n\n if (widthSource) {\n popover.state.positionerElement.style.minWidth = getOuterWidth(widthSource) + 'px';\n }\n\n if (focusOnShow.current || props.autoOptionFocus) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n const indexToFocus = focusedOptionIndex !== -1 ? focusedOptionIndex : listbox.findFirstFocusedOptionIndex();\n\n listbox.changeFocusedOptionIndex(new Event('focus') as unknown as React.KeyboardEvent, indexToFocus);\n focusOnShow.current = false;\n });\n });\n }\n }\n }, [popover.state.open, popover.state.positionerElement]);\n\n const rootProps = {\n id,\n 'data-scope': 'select' as const,\n 'data-part': 'root' as const,\n ...(props.disabled && { 'data-disabled': '' as const }),\n ...(props.invalid && { 'data-invalid': '' as const })\n };\n\n const indicatorProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'indicator' as const,\n 'aria-hidden': true as const,\n ...(popover.state.open ? { 'data-open': '' as const } : { 'data-closed': '' as const })\n };\n\n const clearProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'clear' as const,\n 'aria-label': 'Clear',\n tabIndex: props.disabled ? -1 : 0,\n onClick: onClearClick,\n onKeyDown: onClearKeyDown\n };\n\n const positionerProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'positioner' as const,\n ref: popover.setPositionerRef\n };\n\n const popupProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'popup' as const,\n ref: popover.setPopupRef,\n ...(popover.state.open && { 'data-open': '' as const })\n };\n\n const arrowProps = {\n 'data-scope': 'select',\n 'data-part': 'arrow',\n ref: popover.setArrowRef\n };\n\n const listProps = {\n ...listbox?.listProps,\n id: `${id}_list`,\n tabIndex: -1,\n 'data-scope': 'select' as const,\n 'data-part': 'list' as const\n };\n\n const filterProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'filter' as const,\n role: 'searchbox' as const,\n autoComplete: 'off' as const,\n disabled: props.disabled,\n 'aria-owns': `${id}_list`,\n 'aria-activedescendant': listbox?.getFocusedOptionId(),\n tabIndex: props.disabled ? -1 : props.tabIndex,\n onBlur: listbox?.filterProps.onBlur,\n onChange: listbox?.filterProps.onChange,\n onKeyDown: onFilterKeyDown\n };\n\n const triggerProps = {\n 'data-scope': 'select' as const,\n 'data-part': 'trigger' as const,\n ref: popover.setAnchorRef,\n tabIndex: props.disabled ? -1 : props.tabIndex,\n role: 'combobox' as const,\n disabled: props.disabled,\n 'aria-haspopup': 'listbox' as const,\n 'aria-multiselectable': props.multiple || undefined,\n 'aria-expanded': !!popover.state.open,\n 'aria-controls': popover.state.open ? `${id}_list` : undefined,\n 'aria-activedescendant': popover.state.open ? listbox?.getFocusedOptionId() : undefined,\n 'aria-invalid': props.invalid,\n 'aria-disabled': props.disabled,\n ...(popover.state.open && { 'data-positioner-open': '' as const }),\n onClick,\n onKeyDown,\n onFocus,\n onBlur\n };\n\n return {\n state,\n listbox,\n // prop getters\n rootProps,\n triggerProps,\n filterProps,\n listProps,\n indicatorProps,\n clearProps,\n positionerProps,\n popupProps,\n arrowProps,\n // methods\n setRendered: popover.setRendered,\n getSelectedOptionLabel,\n hasValue,\n show,\n hide,\n toggle,\n focus\n };\n }\n});\n","import type { UseSelectProps } from '@primereact/types/headless/select';\n\nexport const defaultProps: UseSelectProps = {\n open: undefined,\n defaultOpen: undefined,\n value: undefined,\n defaultValue: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n disabled: false,\n invalid: false,\n locale: undefined,\n metaKeySelection: false,\n multiple: false,\n autoOptionFocus: true,\n selectOnFocus: false,\n focusOnHover: true,\n closeOnEscape: false,\n autoFocus: false,\n trapped: false,\n onOpenChange: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useListbox","usePopover","useControlledState","useEventListener","getFirstFocusableElement","getOuterWidth","isNotEmpty","primeuix_focus","React","defaultProps","useSelect","withHeadless","defaultProps","props","id","elementRef","_a","onListboxValueChange","handleListboxValueChange","event","handleOpenChange","listbox","useListbox","popover","usePopover","valueState","setValueState","useControlledState","focusOnShow","focusedState","setFocusedState","state","show","hide","toggle","focus","primeuix_focus","onClick","onFocus","_b","onBlur","onOptionSelect","selectedValue","option","opt","optValue","onClearClick","emptyValue","onClearKeyDown","onKeyDown","_c","_d","onArrowDownKey","onArrowUpKey","onEnterKey","onTabKey","focusedOptionIndex","focusedOption","firstFocusable","getFirstFocusableElement","onFilterKeyDown","getValueLabel","val","getSelectedOptionLabel","hasValue","isNotEmpty","bindLabelClick","useEventListener","bindResizeListener","unbindResizeListener","widthSource","getOuterWidth","indexToFocus","rootProps","__spreadValues","indicatorProps","clearProps","positionerProps","popupProps","arrowProps","listProps","__spreadProps","filterProps","triggerProps"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/sidebar/useSidebar.ts","../../src/sidebar/useSidebar.props.ts","../../src/sidebar/useSidebarLayout.ts","../../src/sidebar/useSidebarLayout.props.ts","../../src/sidebar/useSidebarMenuItem.ts","../../src/sidebar/useSidebarMenuItem.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport * as React from 'react';\nimport { defaultProps } from './useSidebar.props';\n\nexport const useSidebar = withHeadless({\n name: 'useSidebar',\n defaultProps,\n setup({ props }) {\n const [openState, setOpenState] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen ?? true,\n onChange: props.onOpenChange\n });\n\n const displayState = openState ? 'expanded' : 'collapsed';\n\n const state = {\n open: !!openState,\n displayState: displayState as 'expanded' | 'collapsed'\n };\n\n // methods\n const toggle = (event?: React.SyntheticEvent) => {\n if (props.collapsible === 'none') return;\n\n setOpenState([!openState, { originalEvent: event, value: !openState }]);\n };\n\n const expand = (event?: React.SyntheticEvent) => {\n setOpenState([true, { originalEvent: event, value: true }]);\n };\n\n const collapse = (event?: React.SyntheticEvent) => {\n if (props.collapsible === 'none') return;\n\n setOpenState([false, { originalEvent: event, value: false }]);\n };\n\n // hover with debounce\n const hoverTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearHoverTimer = () => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = null;\n }\n };\n\n const handlePointerEnter = React.useCallback(\n (event?: React.SyntheticEvent) => {\n if (!props.openOnHover) return;\n\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => expand(event), props.hoverOpenDelay ?? 50);\n },\n [props.openOnHover, props.hoverOpenDelay]\n );\n\n const handlePointerLeave = React.useCallback(\n (event?: React.SyntheticEvent) => {\n if (!props.openOnHover) return;\n\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => collapse(event), props.hoverCloseDelay ?? 100);\n },\n [props.openOnHover, props.hoverCloseDelay]\n );\n\n React.useEffect(() => clearHoverTimer, []);\n\n // Stable handle for the layout's setSidebar — the layout instance object\n // is recreated on every layout render, but its `setSidebar` is wrapped in\n // useCallback so the function reference is stable across re-renders.\n const setSidebar = props.layout?.setSidebar;\n\n // Unregister on unmount only. Mounting publishes via the state-push effect below.\n React.useEffect(() => {\n if (!setSidebar || !props.id) return;\n\n return () => setSidebar(props.id!, null);\n }, [setSidebar, props.id]);\n\n // Push the current snapshot whenever relevant state changes.\n React.useEffect(() => {\n if (!setSidebar || !props.id) return;\n\n setSidebar(props.id, {\n toggle,\n collapse,\n open: !!openState,\n state: openState ? 'expanded' : 'collapsed',\n overlay: !!props.overlay,\n hideOnOutsideClick: props.hideOnOutsideClick !== false\n });\n }, [setSidebar, props.id, openState, props.overlay, props.hideOnOutsideClick]);\n\n // prop getters\n const rootProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'root',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-collapsible-mode': props.collapsible,\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined),\n ...(props.openOnHover\n ? {\n onPointerEnter: handlePointerEnter,\n onPointerLeave: handlePointerLeave\n }\n : undefined),\n style: {\n '--px-sidebar-width': props.width,\n '--px-sidebar-width-icon': props.iconWidth\n } as React.CSSProperties\n };\n\n // sub-component prop getters\n const spacerProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'spacer',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const asideProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'aside',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const panelProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'panel',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const contentProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'content',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const headerProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'header',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const footerProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'footer',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const triggerProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'trigger',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n onClick: toggle,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const railProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'rail',\n 'aria-label': 'Toggle Sidebar',\n tabIndex: -1 as const,\n onClick: toggle,\n title: 'Toggle Sidebar',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const mainProps = {\n 'data-scope': 'sidebar',\n 'data-part': 'main',\n 'data-state': displayState,\n 'data-collapsible': displayState === 'collapsed' ? props.collapsible : '',\n 'data-variant': props.variant,\n 'data-side': props.side,\n ...(props.overlay ? { 'data-overlay': '' as const } : undefined)\n };\n\n const backdropProps = {\n ...(props.dismissable ? { onClick: collapse } : {})\n };\n\n return {\n state,\n // methods\n toggle,\n expand,\n collapse,\n // prop getters\n rootProps,\n spacerProps,\n asideProps,\n panelProps,\n contentProps,\n headerProps,\n footerProps,\n triggerProps,\n railProps,\n mainProps,\n backdropProps,\n // config\n variant: props.variant,\n collapsible: props.collapsible,\n side: props.side,\n overlay: props.overlay,\n openOnHover: props.openOnHover\n };\n }\n});\n","import type { UseSidebarProps } from '@primereact/types/headless/sidebar';\n\nexport const defaultProps: UseSidebarProps = {\n layout: undefined,\n id: undefined,\n side: 'left',\n variant: 'sidebar',\n collapsible: 'icon',\n overlay: false,\n open: undefined,\n defaultOpen: true,\n onOpenChange: undefined,\n openOnHover: false,\n hoverOpenDelay: 50,\n hoverCloseDelay: 100,\n dismissable: true,\n hideOnOutsideClick: true,\n width: '16rem',\n iconWidth: '3rem'\n};\n","import { withHeadless } from '@primereact/core/headless';\nimport type { SidebarRegistryEntry } from '@primereact/types/headless/sidebar';\nimport * as React from 'react';\nimport { defaultLayoutProps } from './useSidebarLayout.props';\n\nexport const useSidebarLayout = withHeadless({\n name: 'useSidebarLayout',\n defaultProps: defaultLayoutProps,\n setup() {\n const [sidebars, setSidebars] = React.useState<Map<string, SidebarRegistryEntry>>(() => new Map());\n\n const setSidebar = React.useCallback((id: string, entry: SidebarRegistryEntry | null) => {\n setSidebars((prev) => {\n if (entry === null) {\n if (!prev.has(id)) return prev;\n\n const next = new Map(prev);\n\n next.delete(id);\n\n return next;\n }\n\n // Bail if the relevant primitive state is unchanged. Methods (toggle/collapse)\n // are re-created on every parent render — comparing them would defeat the\n // bail-out. The stored entry's closures stay functionally correct so long as\n // the primitives match.\n const existing = prev.get(id);\n\n if (existing && existing.open === entry.open && existing.state === entry.state && existing.overlay === entry.overlay && existing.hideOnOutsideClick === entry.hideOnOutsideClick) {\n return prev;\n }\n\n const next = new Map(prev);\n\n next.set(id, entry);\n\n return next;\n });\n }, []);\n\n const toggle = React.useCallback(\n (target?: string, event?: React.SyntheticEvent) => {\n if (target) {\n sidebars.get(target)?.toggle(event);\n\n return;\n }\n\n if (sidebars.size === 1) {\n sidebars.values().next().value?.toggle(event);\n }\n },\n [sidebars]\n );\n\n const collapse = React.useCallback(\n (target?: string, event?: React.SyntheticEvent) => {\n if (target) {\n const entry = sidebars.get(target);\n\n if (entry?.open) entry.toggle(event);\n\n return;\n }\n\n sidebars.forEach((entry) => {\n if (entry.open) entry.toggle(event);\n });\n },\n [sidebars]\n );\n\n const open = React.useMemo(() => {\n for (const entry of sidebars.values()) {\n if (entry.open) return true;\n }\n\n return false;\n }, [sidebars]);\n\n const hasInteractOutsideTarget = React.useMemo(() => {\n for (const entry of sidebars.values()) {\n if (entry.open && entry.overlay && entry.hideOnOutsideClick) return true;\n }\n\n return false;\n }, [sidebars]);\n\n const handleMainClick = (event: React.MouseEvent) => {\n const target = event.target as HTMLElement | null;\n\n // Skip clicks that originate from a sidebar trigger so opening the sidebar via the trigger\n // (which usually lives inside Sidebar.Main) is not immediately undone by the same click.\n if (target?.closest('[data-scope=\"sidebar\"][data-part=\"trigger\"]')) return;\n\n sidebars.forEach((entry) => {\n if (entry.open && entry.overlay && entry.hideOnOutsideClick) {\n entry.collapse(event);\n }\n });\n };\n\n const mainProps = {\n ...(hasInteractOutsideTarget ? { onClick: handleMainClick } : undefined)\n };\n\n const backdropProps = {\n onClick: () => collapse(),\n 'data-state': (open ? 'open' : 'closed') as 'open' | 'closed'\n };\n\n const backdropMotionProps = {\n visible: open,\n motionProps: {\n name: 'p-overlay-mask',\n appear: true\n }\n };\n\n return {\n state: { open },\n setSidebar,\n toggle,\n collapse,\n backdropProps,\n backdropMotionProps,\n mainProps\n };\n }\n});\n","import type { UseSidebarLayoutProps } from '@primereact/types/headless/sidebar';\n\nexport const defaultLayoutProps: UseSidebarLayoutProps = {};\n","import { withHeadless } from '@primereact/core/headless';\nimport { useCollapsible } from '@primereact/headless/collapsible';\nimport * as React from 'react';\nimport { defaultMenuItemProps } from './useSidebarMenuItem.props';\n\nexport const useSidebarMenuItem = withHeadless({\n name: 'useSidebarMenuItem',\n defaultProps: defaultMenuItemProps,\n setup({ props }) {\n const isCollapsible = !!props.collapsible;\n\n const collapsible = useCollapsible({\n open: isCollapsible ? props.open : undefined,\n defaultOpen: isCollapsible ? (props.defaultOpen ?? true) : true,\n onOpenChange: isCollapsible ? props.onOpenChange : undefined,\n disabled: props.disabled\n });\n\n const state = {\n isCollapsible,\n open: collapsible.state.open\n };\n\n const triggerProps = isCollapsible ? collapsible.triggerProps : {};\n const contentProps = isCollapsible ? collapsible.contentProps : {};\n const rootProps = isCollapsible\n ? {\n ...collapsible.rootProps,\n 'data-collapsible': true\n }\n : {};\n\n return {\n state,\n toggle: collapsible.toggle,\n triggerProps,\n contentProps,\n rootProps\n };\n }\n});\n","import type { UseSidebarMenuItemProps } from '@primereact/types/headless/sidebar';\n\nexport const defaultMenuItemProps: UseSidebarMenuItemProps = {\n collapsible: false,\n open: undefined,\n defaultOpen: true,\n disabled: false,\n onOpenChange: undefined\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCACnC,UAAYC,MAAW,QCAhB,IAAMC,EAAgC,CACzC,OAAQ,OACR,GAAI,OACJ,KAAM,OACN,QAAS,UACT,YAAa,OACb,QAAS,GACT,KAAM,OACN,YAAa,GACb,aAAc,OACd,YAAa,GACb,eAAgB,GAChB,gBAAiB,IACjB,YAAa,GACb,mBAAoB,GACpB,MAAO,QACP,UAAW,MACf,EDdO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CARrB,IAAAC,EAAAC,EASQ,GAAM,CAACC,EAAWC,CAAY,EAAIC,EAAmB,CACjD,MAAOL,EAAM,KACb,cAAcC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,GACnC,SAAUD,EAAM,YACpB,CAAC,EAEKM,EAAeH,EAAY,WAAa,YAExCI,EAAQ,CACV,KAAM,CAAC,CAACJ,EACR,aAAcG,CAClB,EAGME,EAAUC,GAAiC,CACzCT,EAAM,cAAgB,QAE1BI,EAAa,CAAC,CAACD,EAAW,CAAE,cAAeM,EAAO,MAAO,CAACN,CAAU,CAAC,CAAC,CAC1E,EAEMO,EAAUD,GAAiC,CAC7CL,EAAa,CAAC,GAAM,CAAE,cAAeK,EAAO,MAAO,EAAK,CAAC,CAAC,CAC9D,EAEME,EAAYF,GAAiC,CAC3CT,EAAM,cAAgB,QAE1BI,EAAa,CAAC,GAAO,CAAE,cAAeK,EAAO,MAAO,EAAM,CAAC,CAAC,CAChE,EAGMG,EAAsB,SAA6C,IAAI,EAEvEC,EAAkB,IAAM,CACtBD,EAAc,UACd,aAAaA,EAAc,OAAO,EAClCA,EAAc,QAAU,KAEhC,EAEME,EAA2B,cAC5BL,GAAiC,CAlD9C,IAAAR,EAmDqBD,EAAM,cAEXa,EAAgB,EAChBD,EAAc,QAAU,WAAW,IAAMF,EAAOD,CAAK,GAAGR,EAAAD,EAAM,iBAAN,KAAAC,EAAwB,EAAE,EACtF,EACA,CAACD,EAAM,YAAaA,EAAM,cAAc,CAC5C,EAEMe,EAA2B,cAC5BN,GAAiC,CA5D9C,IAAAR,EA6DqBD,EAAM,cAEXa,EAAgB,EAChBD,EAAc,QAAU,WAAW,IAAMD,EAASF,CAAK,GAAGR,EAAAD,EAAM,kBAAN,KAAAC,EAAyB,GAAG,EAC1F,EACA,CAACD,EAAM,YAAaA,EAAM,eAAe,CAC7C,EAEM,YAAU,IAAMa,EAAiB,CAAC,CAAC,EAKzC,IAAMG,GAAad,EAAAF,EAAM,SAAN,YAAAE,EAAc,WAG3B,YAAU,IAAM,CAClB,GAAI,GAACc,GAAc,CAAChB,EAAM,IAE1B,MAAO,IAAMgB,EAAWhB,EAAM,GAAK,IAAI,CAC3C,EAAG,CAACgB,EAAYhB,EAAM,EAAE,CAAC,EAGnB,YAAU,IAAM,CACd,CAACgB,GAAc,CAAChB,EAAM,IAE1BgB,EAAWhB,EAAM,GAAI,CACjB,OAAAQ,EACA,SAAAG,EACA,KAAM,CAAC,CAACR,EACR,MAAOA,EAAY,WAAa,YAChC,QAAS,CAAC,CAACH,EAAM,QACjB,mBAAoBA,EAAM,qBAAuB,EACrD,CAAC,CACL,EAAG,CAACgB,EAAYhB,EAAM,GAAIG,EAAWH,EAAM,QAASA,EAAM,kBAAkB,CAAC,EAG7E,IAAMiB,EAAYC,EAAAC,IAAA,CACd,aAAc,UACd,YAAa,OACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,wBAAyBA,EAAM,YAC/B,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAClDA,EAAM,YACJ,CACI,eAAgBc,EAChB,eAAgBC,CACpB,EACA,QAdQ,CAed,MAAO,CACH,qBAAsBf,EAAM,MAC5B,0BAA2BA,EAAM,SACrC,CACJ,GAGMoB,EAAcD,EAAA,CAChB,aAAc,UACd,YAAa,SACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpDqB,EAAaF,EAAA,CACf,aAAc,UACd,YAAa,QACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpDsB,EAAaH,EAAA,CACf,aAAc,UACd,YAAa,QACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpDuB,EAAeJ,EAAA,CACjB,aAAc,UACd,YAAa,UACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpDwB,EAAcL,EAAA,CAChB,aAAc,UACd,YAAa,SACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpDyB,EAAcN,EAAA,CAChB,aAAc,UACd,YAAa,SACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpD0B,EAAeP,EAAA,CACjB,aAAc,UACd,YAAa,UACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,KACnB,QAASQ,GACLR,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpD2B,EAAYR,EAAA,CACd,aAAc,UACd,YAAa,OACb,aAAc,iBACd,SAAU,GACV,QAASX,EACT,MAAO,iBACP,aAAcF,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpD4B,EAAYT,EAAA,CACd,aAAc,UACd,YAAa,OACb,aAAcb,EACd,mBAAoBA,IAAiB,YAAcN,EAAM,YAAc,GACvE,eAAgBA,EAAM,QACtB,YAAaA,EAAM,MACfA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,QAGpD6B,EAAgBV,EAAA,GACdnB,EAAM,YAAc,CAAE,QAASW,CAAS,EAAI,CAAC,GAGrD,MAAO,CACH,MAAAJ,EAEA,OAAAC,EACA,OAAAE,EACA,SAAAC,EAEA,UAAAM,EACA,YAAAG,EACA,WAAAC,EACA,WAAAC,EACA,aAAAC,EACA,YAAAC,EACA,YAAAC,EACA,aAAAC,EACA,UAAAC,EACA,UAAAC,EACA,cAAAC,EAEA,QAAS7B,EAAM,QACf,YAAaA,EAAM,YACnB,KAAMA,EAAM,KACZ,QAASA,EAAM,QACf,YAAaA,EAAM,WACvB,CACJ,CACJ,CAAC,EErPD,OAAS,gBAAA8B,MAAoB,4BAE7B,UAAYC,MAAW,QCAhB,IAAMC,EAA4C,CAAC,EDGnD,IAAMC,GAAmBC,EAAa,CACzC,KAAM,mBACN,aAAcC,EACd,OAAQ,CACJ,GAAM,CAACC,EAAUC,CAAW,EAAU,WAA4C,IAAM,IAAI,GAAK,EAE3FC,EAAmB,cAAY,CAACC,EAAYC,IAAuC,CACrFH,EAAaI,GAAS,CAClB,GAAID,IAAU,KAAM,CAChB,GAAI,CAACC,EAAK,IAAIF,CAAE,EAAG,OAAOE,EAE1B,IAAMC,EAAO,IAAI,IAAID,CAAI,EAEzB,OAAAC,EAAK,OAAOH,CAAE,EAEPG,CACX,CAMA,IAAMC,EAAWF,EAAK,IAAIF,CAAE,EAE5B,GAAII,GAAYA,EAAS,OAASH,EAAM,MAAQG,EAAS,QAAUH,EAAM,OAASG,EAAS,UAAYH,EAAM,SAAWG,EAAS,qBAAuBH,EAAM,mBAC1J,OAAOC,EAGX,IAAMC,EAAO,IAAI,IAAID,CAAI,EAEzB,OAAAC,EAAK,IAAIH,EAAIC,CAAK,EAEXE,CACX,CAAC,CACL,EAAG,CAAC,CAAC,EAECE,EAAe,cACjB,CAACC,EAAiBC,IAAiC,CA1C/D,IAAAC,EAAAC,EA2CgB,GAAIH,EAAQ,EACRE,EAAAX,EAAS,IAAIS,CAAM,IAAnB,MAAAE,EAAsB,OAAOD,GAE7B,MACJ,CAEIV,EAAS,OAAS,KAClBY,EAAAZ,EAAS,OAAO,EAAE,KAAK,EAAE,QAAzB,MAAAY,EAAgC,OAAOF,GAE/C,EACA,CAACV,CAAQ,CACb,EAEMa,EAAiB,cACnB,CAACJ,EAAiBC,IAAiC,CAC/C,GAAID,EAAQ,CACR,IAAML,EAAQJ,EAAS,IAAIS,CAAM,EAE7BL,GAAA,MAAAA,EAAO,MAAMA,EAAM,OAAOM,CAAK,EAEnC,MACJ,CAEAV,EAAS,QAASI,GAAU,CACpBA,EAAM,MAAMA,EAAM,OAAOM,CAAK,CACtC,CAAC,CACL,EACA,CAACV,CAAQ,CACb,EAEMc,EAAa,UAAQ,IAAM,CAC7B,QAAWV,KAASJ,EAAS,OAAO,EAChC,GAAII,EAAM,KAAM,MAAO,GAG3B,MAAO,EACX,EAAG,CAACJ,CAAQ,CAAC,EAEPe,EAAiC,UAAQ,IAAM,CACjD,QAAWX,KAASJ,EAAS,OAAO,EAChC,GAAII,EAAM,MAAQA,EAAM,SAAWA,EAAM,mBAAoB,MAAO,GAGxE,MAAO,EACX,EAAG,CAACJ,CAAQ,CAAC,EAgBPgB,EAAYC,EAAA,GACVF,EAA2B,CAAE,QAfZL,GAA4B,CACjD,IAAMD,EAASC,EAAM,OAIjBD,GAAA,MAAAA,EAAQ,QAAQ,gDAEpBT,EAAS,QAASI,GAAU,CACpBA,EAAM,MAAQA,EAAM,SAAWA,EAAM,oBACrCA,EAAM,SAASM,CAAK,CAE5B,CAAC,CACL,CAG8D,EAAI,QAgBlE,MAAO,CACH,MAAO,CAAE,KAAAI,CAAK,EACd,WAAAZ,EACA,OAAAM,EACA,SAAAK,EACA,cAlBkB,CAClB,QAAS,IAAMA,EAAS,EACxB,aAAeC,EAAO,OAAS,QACnC,EAgBI,oBAdwB,CACxB,QAASA,EACT,YAAa,CACT,KAAM,iBACN,OAAQ,EACZ,CACJ,EASI,UAAAE,CACJ,CACJ,CACJ,CAAC,EElID,OAAS,gBAAAE,MAAoB,4BAC7B,OAAS,kBAAAC,MAAsB,mCCCxB,IAAMC,EAAgD,CACzD,YAAa,GACb,KAAM,OACN,YAAa,GACb,SAAU,GACV,aAAc,MAClB,EDHO,IAAMC,GAAqBC,EAAa,CAC3C,KAAM,qBACN,aAAcC,EACd,MAAM,CAAE,MAAAC,CAAM,EAAG,CARrB,IAAAC,EASQ,IAAMC,EAAgB,CAAC,CAACF,EAAM,YAExBG,EAAcC,EAAe,CAC/B,KAAMF,EAAgBF,EAAM,KAAO,OACnC,YAAaE,IAAiBD,EAAAD,EAAM,cAAN,KAAAC,EAA6B,GAC3D,aAAcC,EAAgBF,EAAM,aAAe,OACnD,SAAUA,EAAM,QACpB,CAAC,EAEKK,EAAQ,CACV,cAAAH,EACA,KAAMC,EAAY,MAAM,IAC5B,EAEMG,EAAeJ,EAAgBC,EAAY,aAAe,CAAC,EAC3DI,EAAeL,EAAgBC,EAAY,aAAe,CAAC,EAC3DK,EAAYN,EACZO,EAAAC,EAAA,GACOP,EAAY,WADnB,CAEI,mBAAoB,EACxB,GACA,CAAC,EAEP,MAAO,CACH,MAAAE,EACA,OAAQF,EAAY,OACpB,aAAAG,EACA,aAAAC,EACA,UAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","React","defaultProps","useSidebar","withHeadless","defaultProps","props","_a","_b","openState","setOpenState","useControlledState","displayState","state","toggle","event","expand","collapse","hoverTimerRef","clearHoverTimer","handlePointerEnter","handlePointerLeave","setSidebar","rootProps","__spreadProps","__spreadValues","spacerProps","asideProps","panelProps","contentProps","headerProps","footerProps","triggerProps","railProps","mainProps","backdropProps","withHeadless","React","defaultLayoutProps","useSidebarLayout","withHeadless","defaultLayoutProps","sidebars","setSidebars","setSidebar","id","entry","prev","next","existing","toggle","target","event","_a","_b","collapse","open","hasInteractOutsideTarget","mainProps","__spreadValues","withHeadless","useCollapsible","defaultMenuItemProps","useSidebarMenuItem","withHeadless","defaultMenuItemProps","props","_a","isCollapsible","collapsible","useCollapsible","state","triggerProps","contentProps","rootProps","__spreadProps","__spreadValues"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/skeleton/useSkeleton.ts","../../src/skeleton/useSkeleton.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useSkeleton.props';\n\nexport const useSkeleton = withHeadless({\n name: 'useSkeleton',\n defaultProps,\n setup() {\n // prop getters\n const rootProps = {\n 'aria-hidden': true as const,\n 'data-scope': 'skeleton' as const,\n 'data-part': 'root' as const\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseSkeletonProps } from '@primereact/types/headless/skeleton';\n\nexport const defaultProps: UseSkeletonProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAiC,CAAC,EDCxC,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,OAAQ,CAQJ,MAAO,CACH,UAPc,CACd,cAAe,GACf,aAAc,WACd,YAAa,MACjB,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useSkeleton","withHeadless","defaultProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/slider/useSlider.ts","../../src/slider/useSlider.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks';\nimport { isRTL } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useSlider.props';\n\nexport const useSlider = withHeadless({\n name: 'useSlider',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n const [isDragging, setIsDragging] = React.useState(false);\n const activeIndex = React.useRef(0);\n const focusedIndex = React.useRef<number | null>(null);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const step = props.step ?? 1;\n const minStepsBetweenHandles = props.minStepsBetweenHandles ?? 0;\n const isHorizontal = props.orientation === 'horizontal';\n const isHandlePointerDown = React.useRef(false);\n const dragOffsetPx = React.useRef(0);\n\n // methods\n function clamp(value: number, minValue: number, maxValue: number) {\n return Math.min(Math.max(value, minValue), maxValue);\n }\n\n function getPrecision(stepValue: number) {\n const stepString = stepValue.toString();\n\n if (stepString.includes('e-')) {\n return Number(stepString.split('e-')[1] || 0);\n }\n\n const dotIndex = stepString.indexOf('.');\n\n return dotIndex >= 0 ? stepString.length - dotIndex - 1 : 0;\n }\n\n function roundToStep(value: number, stepValue: number, minValue: number) {\n if (!stepValue) return value;\n\n const precision = getPrecision(stepValue);\n const rounded = Math.round((value - minValue) / stepValue) * stepValue + minValue;\n\n return Number(rounded.toFixed(precision));\n }\n\n const normalizeValue = (value: number) => clamp(roundToStep(value, step, min), min, max);\n\n function range() {\n return Array.isArray(valueState);\n }\n\n function getValues() {\n const sourceValue = valueState !== undefined ? valueState : (props.value ?? props.defaultValue);\n const rawValues = Array.isArray(sourceValue) ? sourceValue : sourceValue !== undefined ? [sourceValue] : [min];\n\n return rawValues.map((value) => normalizeValue(value));\n }\n\n function getValueState() {\n const values = getValues();\n\n if (range()) {\n return values;\n }\n\n return values[0];\n }\n\n function getHandleElement(index: number) {\n return rootRef.current?.querySelector<HTMLElement>(`[data-index=\"${index}\"]`) ?? null;\n }\n\n function isHandleDisabled(index: number) {\n return getHandleElement(index)?.hasAttribute('data-disabled') ?? false;\n }\n\n function blurFocusedHandleIfDifferent(nextIndex: number) {\n if (focusedIndex.current === null || focusedIndex.current === nextIndex) return;\n\n const rootNode = rootRef.current;\n\n if (!rootNode) {\n focusedIndex.current = null;\n\n return;\n }\n\n const input = rootNode.querySelector<HTMLInputElement>(`[data-index=\"${focusedIndex.current}\"] input[type=\"range\"]`);\n\n focusedIndex.current = null;\n input?.blur();\n }\n\n function getClosestEnabledValueIndex(values: number[], nextValue: number, event?: React.PointerEvent<HTMLDivElement>) {\n const indices = values.map((_, index) => index);\n const enabledIndices = rootRef.current ? indices.filter((index) => !isHandleDisabled(index)) : indices;\n\n if (!enabledIndices.length) return -1;\n\n let closestIndex = enabledIndices[0];\n let smallestDistance = Math.abs(values[closestIndex] - nextValue);\n const pointerAxis = event ? (isHorizontal ? event.clientX : event.clientY) : null;\n\n for (const index of enabledIndices.slice(1)) {\n const distance = Math.abs(values[index] - nextValue);\n\n if (distance < smallestDistance) {\n closestIndex = index;\n smallestDistance = distance;\n } else if (distance === smallestDistance && pointerAxis !== null) {\n const closestElement = getHandleElement(closestIndex);\n const candidateElement = getHandleElement(index);\n\n if (closestElement && candidateElement) {\n const closestRect = closestElement.getBoundingClientRect();\n const candidateRect = candidateElement.getBoundingClientRect();\n const closestCenter = isHorizontal ? closestRect.left + closestRect.width / 2 : closestRect.top + closestRect.height / 2;\n const candidateCenter = isHorizontal ? candidateRect.left + candidateRect.width / 2 : candidateRect.top + candidateRect.height / 2;\n\n if (closestCenter === candidateCenter) {\n closestIndex = pointerAxis < closestCenter ? Math.min(closestIndex, index) : Math.max(closestIndex, index);\n } else {\n const closestDelta = Math.abs(pointerAxis - closestCenter);\n const candidateDelta = Math.abs(pointerAxis - candidateCenter);\n\n if (candidateDelta < closestDelta) {\n closestIndex = index;\n }\n }\n }\n }\n }\n\n return closestIndex;\n }\n\n function getHandleValue(index: number) {\n const values = getValues();\n\n return values[index] ?? min;\n }\n\n function getValuePercent(value: number) {\n const rangeValue = max - min;\n\n if (!rangeValue) return 0;\n\n return clamp(((value - min) / rangeValue) * 100, 0, 100);\n }\n\n function setRootRef(node: HTMLDivElement | null) {\n rootRef.current = node;\n }\n\n function getRootRect(event: React.PointerEvent<HTMLDivElement>) {\n return rootRef.current?.getBoundingClientRect() ?? event.currentTarget.getBoundingClientRect();\n }\n\n function getValueFromPointer(event: React.PointerEvent<HTMLDivElement>, offsetPx: number = 0) {\n const rect = getRootRect(event);\n const size = isHorizontal ? rect.width : rect.height;\n\n if (!size) return min;\n\n const pointerPosition = isHorizontal ? event.clientX - rect.left : event.clientY - rect.top;\n const position = (pointerPosition - offsetPx) / size;\n const clampedPosition = clamp(position, 0, 1);\n const isRtl = isHorizontal && isRTL(rootRef.current ?? event.currentTarget);\n const orientedPosition = isHorizontal ? (isRtl ? 1 - clampedPosition : clampedPosition) : 1 - clampedPosition;\n const value = min + orientedPosition * (max - min);\n\n return normalizeValue(value);\n }\n\n function updateValueAt(index: number, nextValue: number, originalEvent: React.PointerEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | React.ChangeEvent<HTMLInputElement>) {\n const values = getValues();\n const minDistance = Math.max(minStepsBetweenHandles * (step || 1), 0);\n const minValue = index > 0 ? values[index - 1] + minDistance : min;\n const maxValue = index < values.length - 1 ? values[index + 1] - minDistance : max;\n const lowerBound = Math.min(minValue, maxValue);\n const upperBound = Math.max(minValue, maxValue);\n const clampedValue = clamp(normalizeValue(nextValue), lowerBound, upperBound);\n const nextValues = [...values];\n\n nextValues[index] = clampedValue;\n\n const nextValueState = range() ? nextValues : nextValues[0];\n\n setValueState([\n nextValueState,\n {\n originalEvent,\n value: nextValueState\n }\n ]);\n\n return nextValueState;\n }\n\n function updateValueFromPointer(event: React.PointerEvent<HTMLDivElement>) {\n const nextValue = getValueFromPointer(event, dragOffsetPx.current);\n const values = getValues();\n const closestIndex = getClosestEnabledValueIndex(values, nextValue, event);\n\n if (closestIndex === -1) return;\n\n blurFocusedHandleIfDifferent(closestIndex);\n activeIndex.current = closestIndex;\n dragOffsetPx.current = 0;\n updateValueAt(activeIndex.current, nextValue, event);\n }\n\n function onTrackPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n setIsDragging(true);\n\n if (isHandlePointerDown.current) {\n isHandlePointerDown.current = false;\n\n return;\n }\n\n dragOffsetPx.current = 0;\n\n updateValueFromPointer(event);\n }\n\n function onTrackPointerMove(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n if (!isDragging) return;\n\n if (isHandleDisabled(activeIndex.current)) return;\n\n event.preventDefault();\n updateValueAt(activeIndex.current, getValueFromPointer(event, dragOffsetPx.current), event);\n }\n\n function onTrackPointerUp(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n event.preventDefault();\n event.currentTarget.releasePointerCapture(event.pointerId);\n setIsDragging(false);\n isHandlePointerDown.current = false;\n dragOffsetPx.current = 0;\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: getValueState()\n });\n }\n\n function onHandlePointerDown(event: React.PointerEvent<HTMLDivElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n if (isHandleDisabled(index)) return;\n\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n rootRef.current?.setPointerCapture(event.pointerId);\n const handle = getHandleElement(index);\n\n if (handle) {\n const handleRect = handle.getBoundingClientRect();\n const handleCenter = isHorizontal ? handleRect.left + handleRect.width / 2 : handleRect.top + handleRect.height / 2;\n const pointerAxis = isHorizontal ? event.clientX : event.clientY;\n\n dragOffsetPx.current = pointerAxis - handleCenter;\n } else {\n dragOffsetPx.current = 0;\n }\n\n blurFocusedHandleIfDifferent(index);\n activeIndex.current = index;\n isHandlePointerDown.current = true;\n }\n\n function onInputChange(event: React.ChangeEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n activeIndex.current = index;\n const nextValueState = updateValueAt(index, Number(event.target.value), event);\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: nextValueState\n });\n }\n\n function onInputFocus(event: React.FocusEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n focusedIndex.current = index;\n activeIndex.current = index;\n props.onFocus?.(event);\n }\n\n function onInputBlur(event: React.FocusEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n activeIndex.current = index;\n\n if (focusedIndex.current === index) {\n focusedIndex.current = null;\n }\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: getValueState()\n });\n props.onBlur?.(event);\n }\n\n const state = {\n value: valueState,\n isDragging\n };\n\n // prop getters\n const rootProps = {\n ref: setRootRef,\n onPointerDown: onTrackPointerDown,\n onPointerMove: onTrackPointerMove,\n onPointerUp: onTrackPointerUp,\n 'data-orientation': props.orientation,\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(isDragging ? { 'data-dragging': '' } : {}),\n style: { display: 'flex' as const, position: 'relative' as const, touchAction: 'none' as const }\n };\n\n const trackProps = {\n 'data-orientation': props.orientation,\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(isDragging ? { 'data-dragging': '' } : {}),\n style: { display: 'block' as const, flexGrow: 1, position: 'relative' as const }\n };\n\n const getRangeProps = () => {\n const values = range() ? ((valueState as number[]) ?? []) : [min, (valueState as number) ?? min];\n const minValue = Math.min(...values);\n const maxValue = Math.max(...values);\n const startValue = range() ? minValue : min;\n const endValue = range() ? maxValue : values[1];\n const startPercent = getValuePercent(startValue);\n const endPercent = getValuePercent(endValue);\n const sizePercent = Math.max(endPercent - startPercent, 0);\n const rangeStyle: React.CSSProperties = isHorizontal ? { position: 'absolute', insetInlineStart: `${startPercent}%`, width: `${sizePercent}%` } : { position: 'absolute', bottom: `${startPercent}%`, height: `${sizePercent}%` };\n\n return {\n 'data-orientation': props.orientation,\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(isDragging ? { 'data-dragging': '' } : {}),\n style: rangeStyle\n };\n };\n\n const getHandleProps = (index: number) => {\n const handleValue = getHandleValue(index);\n const percent = getValuePercent(handleValue);\n\n const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => onHandlePointerDown(event, index);\n\n return {\n onPointerDown: handlePointerDown,\n 'data-index': index,\n 'data-orientation': props.orientation,\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(isDragging ? { 'data-dragging': '' } : {}),\n style: isHorizontal ? ({ position: 'absolute', insetInlineStart: `${percent}%`, translate: '-50% 0' } as React.CSSProperties) : ({ position: 'absolute', bottom: `${percent}%`, translate: '0 50%' } as React.CSSProperties)\n };\n };\n\n const getHiddenInputProps = (index: number) => {\n const handleValue = getHandleValue(index);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => onInputChange(event, index);\n const handleInput = (event: React.FormEvent<HTMLInputElement>) => onInputChange(event as React.ChangeEvent<HTMLInputElement>, index);\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => onInputFocus(event, index);\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => onInputBlur(event, index);\n\n return {\n 'data-scope': 'slider' as const,\n 'data-part': 'hidden-input' as const,\n type: 'range' as const,\n min: props.min,\n max: props.max,\n step: props.step,\n value: handleValue ?? min,\n disabled: props.disabled,\n readOnly: props.readOnly,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': handleValue,\n 'aria-orientation': props.orientation,\n style: {\n position: 'absolute' as const,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden' as const,\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap' as const,\n borderWidth: 0\n },\n onChange: handleChange,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur\n };\n };\n\n return {\n state,\n // methods\n range,\n getHandleValue,\n getValuePercent,\n setRootRef,\n onTrackPointerDown,\n onTrackPointerMove,\n onTrackPointerUp,\n updateValueFromPointer,\n onHandlePointerDown,\n onInputChange,\n onInputFocus,\n onInputBlur,\n // prop getters\n rootProps,\n trackProps,\n getRangeProps,\n getHandleProps,\n getHiddenInputProps\n };\n }\n});\n","import type { UseSliderProps } from '@primereact/types/headless/slider';\n\nexport const defaultProps: UseSliderProps = {\n value: undefined,\n defaultValue: undefined,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n minStepsBetweenHandles: 0,\n onValueChange: undefined,\n onValueChangeEnd: undefined,\n disabled: false,\n readOnly: false,\n invalid: undefined,\n onFocus: undefined,\n onBlur: undefined\n};\n"],"mappings":"6bAAA,OAAS,gBAAAA,OAAoB,4BAC7B,OAAS,sBAAAC,OAA0B,oBACnC,OAAS,SAAAC,OAAa,kBACtB,UAAYC,MAAW,QCDhB,IAAMC,GAA+B,CACxC,MAAO,OACP,aAAc,OACd,YAAa,aACb,IAAK,EACL,IAAK,IACL,KAAM,EACN,uBAAwB,EACxB,cAAe,OACf,iBAAkB,OAClB,SAAU,GACV,SAAU,GACV,QAAS,OACT,QAAS,OACT,OAAQ,MACZ,EDXO,IAAMC,GAAYC,GAAa,CAClC,KAAM,YACN,aAAAC,GACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CATrB,IAAAC,EAAAC,GAAAC,GAAAC,GAUQ,GAAM,CAACC,EAAYC,CAAa,EAAIC,GAAmB,CACnD,MAAOP,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EACK,CAACQ,EAAYC,CAAa,EAAU,WAAS,EAAK,EAClDC,EAAoB,SAAO,CAAC,EAC5BC,EAAqB,SAAsB,IAAI,EAC/CC,EAAgB,SAA8B,IAAI,EAClDC,GAAMZ,EAAAD,EAAM,MAAN,KAAAC,EAAa,EACnBa,GAAMZ,GAAAF,EAAM,MAAN,KAAAE,GAAa,IACnBa,GAAOZ,GAAAH,EAAM,OAAN,KAAAG,GAAc,EACrBa,IAAyBZ,GAAAJ,EAAM,yBAAN,KAAAI,GAAgC,EACzDa,EAAejB,EAAM,cAAgB,aACrCkB,EAA4B,SAAO,EAAK,EACxCC,EAAqB,SAAO,CAAC,EAGnC,SAASC,EAAMC,EAAeC,EAAkBC,EAAkB,CAC9D,OAAO,KAAK,IAAI,KAAK,IAAIF,EAAOC,CAAQ,EAAGC,CAAQ,CACvD,CAEA,SAASC,GAAaC,EAAmB,CACrC,IAAMC,EAAaD,EAAU,SAAS,EAEtC,GAAIC,EAAW,SAAS,IAAI,EACxB,OAAO,OAAOA,EAAW,MAAM,IAAI,EAAE,CAAC,GAAK,CAAC,EAGhD,IAAMC,EAAWD,EAAW,QAAQ,GAAG,EAEvC,OAAOC,GAAY,EAAID,EAAW,OAASC,EAAW,EAAI,CAC9D,CAEA,SAASC,GAAYP,EAAeI,EAAmBH,EAAkB,CACrE,GAAI,CAACG,EAAW,OAAOJ,EAEvB,IAAMQ,EAAYL,GAAaC,CAAS,EAClCK,EAAU,KAAK,OAAOT,EAAQC,GAAYG,CAAS,EAAIA,EAAYH,EAEzE,OAAO,OAAOQ,EAAQ,QAAQD,CAAS,CAAC,CAC5C,CAEA,IAAME,EAAkBV,GAAkBD,EAAMQ,GAAYP,EAAON,EAAMF,CAAG,EAAGA,EAAKC,CAAG,EAEvF,SAASkB,GAAQ,CACb,OAAO,MAAM,QAAQ3B,CAAU,CACnC,CAEA,SAAS4B,GAAY,CA3D7B,IAAAhC,EA4DY,IAAMiC,EAAc7B,IAAe,OAAYA,GAAcJ,EAAAD,EAAM,QAAN,KAAAC,EAAeD,EAAM,aAGlF,OAFkB,MAAM,QAAQkC,CAAW,EAAIA,EAAcA,IAAgB,OAAY,CAACA,CAAW,EAAI,CAACrB,CAAG,GAE5F,IAAKQ,GAAUU,EAAeV,CAAK,CAAC,CACzD,CAEA,SAASc,GAAgB,CACrB,IAAMC,EAASH,EAAU,EAEzB,OAAID,EAAM,EACCI,EAGJA,EAAO,CAAC,CACnB,CAEA,SAASC,EAAiBC,EAAe,CA5EjD,IAAArC,EAAAC,EA6EY,OAAOA,GAAAD,EAAAW,EAAQ,UAAR,YAAAX,EAAiB,cAA2B,gBAAgBqC,CAAK,QAAjE,KAAApC,EAA0E,IACrF,CAEA,SAASqC,EAAiBD,EAAe,CAhFjD,IAAArC,EAAAC,EAiFY,OAAOA,GAAAD,EAAAoC,EAAiBC,CAAK,IAAtB,YAAArC,EAAyB,aAAa,mBAAtC,KAAAC,EAA0D,EACrE,CAEA,SAASsC,EAA6BC,EAAmB,CACrD,GAAI9B,EAAa,UAAY,MAAQA,EAAa,UAAY8B,EAAW,OAEzE,IAAMC,EAAW9B,EAAQ,QAEzB,GAAI,CAAC8B,EAAU,CACX/B,EAAa,QAAU,KAEvB,MACJ,CAEA,IAAMgC,EAAQD,EAAS,cAAgC,gBAAgB/B,EAAa,OAAO,wBAAwB,EAEnHA,EAAa,QAAU,KACvBgC,GAAA,MAAAA,EAAO,MACX,CAEA,SAASC,GAA4BR,EAAkBS,EAAmBC,EAA4C,CAClH,IAAMC,EAAUX,EAAO,IAAI,CAACY,EAAGV,IAAUA,CAAK,EACxCW,EAAiBrC,EAAQ,QAAUmC,EAAQ,OAAQT,GAAU,CAACC,EAAiBD,CAAK,CAAC,EAAIS,EAE/F,GAAI,CAACE,EAAe,OAAQ,MAAO,GAEnC,IAAIC,EAAeD,EAAe,CAAC,EAC/BE,EAAmB,KAAK,IAAIf,EAAOc,CAAY,EAAIL,CAAS,EAC1DO,EAAcN,EAAS7B,EAAe6B,EAAM,QAAUA,EAAM,QAAW,KAE7E,QAAWR,KAASW,EAAe,MAAM,CAAC,EAAG,CACzC,IAAMI,EAAW,KAAK,IAAIjB,EAAOE,CAAK,EAAIO,CAAS,EAEnD,GAAIQ,EAAWF,EACXD,EAAeZ,EACfa,EAAmBE,UACZA,IAAaF,GAAoBC,IAAgB,KAAM,CAC9D,IAAME,EAAiBjB,EAAiBa,CAAY,EAC9CK,EAAmBlB,EAAiBC,CAAK,EAE/C,GAAIgB,GAAkBC,EAAkB,CACpC,IAAMC,EAAcF,EAAe,sBAAsB,EACnDG,EAAgBF,EAAiB,sBAAsB,EACvDG,EAAgBzC,EAAeuC,EAAY,KAAOA,EAAY,MAAQ,EAAIA,EAAY,IAAMA,EAAY,OAAS,EACjHG,GAAkB1C,EAAewC,EAAc,KAAOA,EAAc,MAAQ,EAAIA,EAAc,IAAMA,EAAc,OAAS,EAEjI,GAAIC,IAAkBC,GAClBT,EAAeE,EAAcM,EAAgB,KAAK,IAAIR,EAAcZ,CAAK,EAAI,KAAK,IAAIY,EAAcZ,CAAK,MACtG,CACH,IAAMsB,GAAe,KAAK,IAAIR,EAAcM,CAAa,EAClC,KAAK,IAAIN,EAAcO,EAAe,EAExCC,KACjBV,EAAeZ,EAEvB,CACJ,CACJ,CACJ,CAEA,OAAOY,CACX,CAEA,SAASW,EAAevB,EAAe,CAhJ/C,IAAArC,EAmJY,OAAOA,EAFQgC,EAAU,EAEXK,CAAK,IAAZ,KAAArC,EAAiBY,CAC5B,CAEA,SAASiD,EAAgBzC,EAAe,CACpC,IAAM0C,EAAajD,EAAMD,EAEzB,OAAKkD,EAEE3C,GAAQC,EAAQR,GAAOkD,EAAc,IAAK,EAAG,GAAG,EAF/B,CAG5B,CAEA,SAASC,EAAWC,EAA6B,CAC7CrD,EAAQ,QAAUqD,CACtB,CAEA,SAASC,GAAYpB,EAA2C,CAlKxE,IAAA7C,EAAAC,EAmKY,OAAOA,GAAAD,EAAAW,EAAQ,UAAR,YAAAX,EAAiB,0BAAjB,KAAAC,EAA4C4C,EAAM,cAAc,sBAAsB,CACjG,CAEA,SAASqB,EAAoBrB,EAA2CsB,EAAmB,EAAG,CAtKtG,IAAAnE,EAuKY,IAAMoE,EAAOH,GAAYpB,CAAK,EACxBwB,EAAOrD,EAAeoD,EAAK,MAAQA,EAAK,OAE9C,GAAI,CAACC,EAAM,OAAOzD,EAGlB,IAAM0D,IADkBtD,EAAe6B,EAAM,QAAUuB,EAAK,KAAOvB,EAAM,QAAUuB,EAAK,KACpDD,GAAYE,EAC1CE,EAAkBpD,EAAMmD,EAAU,EAAG,CAAC,EACtCE,EAAQxD,GAAgByD,IAAMzE,EAAAW,EAAQ,UAAR,KAAAX,EAAmB6C,EAAM,aAAa,EACpE6B,EAAmB1D,EAAgBwD,EAAQ,EAAID,EAAkBA,EAAmB,EAAIA,EACxFnD,EAAQR,EAAM8D,GAAoB7D,EAAMD,GAE9C,OAAOkB,EAAeV,CAAK,CAC/B,CAEA,SAASuD,EAActC,EAAeO,EAAmBgC,EAA+H,CACpL,IAAMzC,EAASH,EAAU,EACnB6C,EAAc,KAAK,IAAI9D,IAA0BD,GAAQ,GAAI,CAAC,EAC9DO,EAAWgB,EAAQ,EAAIF,EAAOE,EAAQ,CAAC,EAAIwC,EAAcjE,EACzDU,EAAWe,EAAQF,EAAO,OAAS,EAAIA,EAAOE,EAAQ,CAAC,EAAIwC,EAAchE,EACzEiE,EAAa,KAAK,IAAIzD,EAAUC,CAAQ,EACxCyD,EAAa,KAAK,IAAI1D,EAAUC,CAAQ,EACxC0D,EAAe7D,EAAMW,EAAec,CAAS,EAAGkC,EAAYC,CAAU,EACtEE,EAAa,CAAC,GAAG9C,CAAM,EAE7B8C,EAAW5C,CAAK,EAAI2C,EAEpB,IAAME,EAAiBnD,EAAM,EAAIkD,EAAaA,EAAW,CAAC,EAE1D,OAAA5E,EAAc,CACV6E,EACA,CACI,cAAAN,EACA,MAAOM,CACX,CACJ,CAAC,EAEMA,CACX,CAEA,SAASC,EAAuBtC,EAA2C,CACvE,IAAMD,EAAYsB,EAAoBrB,EAAO3B,EAAa,OAAO,EAC3DiB,EAASH,EAAU,EACnBiB,EAAeN,GAA4BR,EAAQS,EAAWC,CAAK,EAErEI,IAAiB,KAErBV,EAA6BU,CAAY,EACzCxC,EAAY,QAAUwC,EACtB/B,EAAa,QAAU,EACvByD,EAAclE,EAAY,QAASmC,EAAWC,CAAK,EACvD,CAEA,SAASuC,EAAmBvC,EAA2C,CACnE,GAAI,EAAA9C,EAAM,UAAYA,EAAM,WAExB,EAAA8C,EAAM,cAAgB,SAAWA,EAAM,SAAW,GAMtD,IAJAA,EAAM,eAAe,EACrBA,EAAM,cAAc,kBAAkBA,EAAM,SAAS,EACrDrC,EAAc,EAAI,EAEdS,EAAoB,QAAS,CAC7BA,EAAoB,QAAU,GAE9B,MACJ,CAEAC,EAAa,QAAU,EAEvBiE,EAAuBtC,CAAK,EAChC,CAEA,SAASwC,EAAmBxC,EAA2C,CAC/D9C,EAAM,UAAYA,EAAM,UAEvBQ,IAED+B,EAAiB7B,EAAY,OAAO,IAExCoC,EAAM,eAAe,EACrB8B,EAAclE,EAAY,QAASyD,EAAoBrB,EAAO3B,EAAa,OAAO,EAAG2B,CAAK,GAC9F,CAEA,SAASyC,EAAiBzC,EAA2C,CA3P7E,IAAA7C,EA4PgBD,EAAM,UAAYA,EAAM,WAE5B8C,EAAM,eAAe,EACrBA,EAAM,cAAc,sBAAsBA,EAAM,SAAS,EACzDrC,EAAc,EAAK,EACnBS,EAAoB,QAAU,GAC9BC,EAAa,QAAU,GAEvBlB,EAAAD,EAAM,mBAAN,MAAAC,EAAA,KAAAD,EAAyB,CACrB,cAAe8C,EACf,MAAOX,EAAc,CACzB,GACJ,CAEA,SAASqD,EAAoB1C,EAA2CR,EAAe,CA1Q/F,IAAArC,EA+QY,GAJID,EAAM,UAAYA,EAAM,UAExBuC,EAAiBD,CAAK,GAEtBQ,EAAM,cAAgB,SAAWA,EAAM,SAAW,EAAG,OAEzDA,EAAM,eAAe,GACrB7C,EAAAW,EAAQ,UAAR,MAAAX,EAAiB,kBAAkB6C,EAAM,WACzC,IAAM2C,EAASpD,EAAiBC,CAAK,EAErC,GAAImD,EAAQ,CACR,IAAMC,EAAaD,EAAO,sBAAsB,EAC1CE,EAAe1E,EAAeyE,EAAW,KAAOA,EAAW,MAAQ,EAAIA,EAAW,IAAMA,EAAW,OAAS,EAC5GtC,EAAcnC,EAAe6B,EAAM,QAAUA,EAAM,QAEzD3B,EAAa,QAAUiC,EAAcuC,CACzC,MACIxE,EAAa,QAAU,EAG3BqB,EAA6BF,CAAK,EAClC5B,EAAY,QAAU4B,EACtBpB,EAAoB,QAAU,EAClC,CAEA,SAAS0E,EAAc9C,EAA4CR,EAAe,CApS1F,IAAArC,EAqSY,GAAID,EAAM,UAAYA,EAAM,SAAU,OAEtCU,EAAY,QAAU4B,EACtB,IAAM6C,EAAiBP,EAActC,EAAO,OAAOQ,EAAM,OAAO,KAAK,EAAGA,CAAK,GAE7E7C,EAAAD,EAAM,mBAAN,MAAAC,EAAA,KAAAD,EAAyB,CACrB,cAAe8C,EACf,MAAOqC,CACX,EACJ,CAEA,SAASU,EAAa/C,EAA2CR,EAAe,CAhTxF,IAAArC,EAiTgBD,EAAM,UAAYA,EAAM,WAE5BW,EAAa,QAAU2B,EACvB5B,EAAY,QAAU4B,GACtBrC,EAAAD,EAAM,UAAN,MAAAC,EAAA,KAAAD,EAAgB8C,GACpB,CAEA,SAASgD,EAAYhD,EAA2CR,EAAe,CAxTvF,IAAArC,EAAAC,EAyTgBF,EAAM,UAAYA,EAAM,WAE5BU,EAAY,QAAU4B,EAElB3B,EAAa,UAAY2B,IACzB3B,EAAa,QAAU,OAG3BV,EAAAD,EAAM,mBAAN,MAAAC,EAAA,KAAAD,EAAyB,CACrB,cAAe8C,EACf,MAAOX,EAAc,CACzB,IACAjC,EAAAF,EAAM,SAAN,MAAAE,EAAA,KAAAF,EAAe8C,GACnB,CAEA,IAAMiD,GAAQ,CACV,MAAO1F,EACP,WAAAG,CACJ,EAGMwF,GAAYC,EAAAC,MAAA,CACd,IAAKlC,EACL,cAAeqB,EACf,cAAeC,EACf,YAAaC,EACb,mBAAoBvF,EAAM,aACtBA,EAAM,SAAW,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAC5CA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,CAAC,GACnDQ,EAAa,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAR9B,CASd,MAAO,CAAE,QAAS,OAAiB,SAAU,WAAqB,YAAa,MAAgB,CACnG,GAEM2F,GAAaF,EAAAC,MAAA,CACf,mBAAoBlG,EAAM,aACtBA,EAAM,SAAW,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAC5CA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,CAAC,GACnDQ,EAAa,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAJ7B,CAKf,MAAO,CAAE,QAAS,QAAkB,SAAU,EAAG,SAAU,UAAoB,CACnF,GA+EA,MAAO,CACH,MAAAuF,GAEA,MAAA/D,EACA,eAAA6B,EACA,gBAAAC,EACA,WAAAE,EACA,mBAAAqB,EACA,mBAAAC,EACA,iBAAAC,EACA,uBAAAH,EACA,oBAAAI,EACA,cAAAI,EACA,aAAAC,EACA,YAAAC,EAEA,UAAAE,GACA,WAAAG,GACA,cA/FkB,IAAM,CACxB,IAAM/D,EAASJ,EAAM,EAAM3B,GAAA,KAAAA,EAA2B,CAAC,EAAK,CAACQ,EAAMR,GAAA,KAAAA,EAAyBQ,CAAG,EACzFS,EAAW,KAAK,IAAI,GAAGc,CAAM,EAC7Bb,EAAW,KAAK,IAAI,GAAGa,CAAM,EAC7BgE,EAAapE,EAAM,EAAIV,EAAWT,EAClCwF,EAAWrE,EAAM,EAAIT,EAAWa,EAAO,CAAC,EACxCkE,EAAexC,EAAgBsC,CAAU,EACzCG,EAAazC,EAAgBuC,CAAQ,EACrCG,EAAc,KAAK,IAAID,EAAaD,EAAc,CAAC,EACnDG,EAAkCxF,EAAe,CAAE,SAAU,WAAY,iBAAkB,GAAGqF,CAAY,IAAK,MAAO,GAAGE,CAAW,GAAI,EAAI,CAAE,SAAU,WAAY,OAAQ,GAAGF,CAAY,IAAK,OAAQ,GAAGE,CAAW,GAAI,EAEhO,OAAOP,EAAAC,MAAA,CACH,mBAAoBlG,EAAM,aACtBA,EAAM,SAAW,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAC5CA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,CAAC,GACnDQ,EAAa,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAJzC,CAKH,MAAOiG,CACX,EACJ,EA8EI,eA5EoBnE,GAAkB,CACtC,IAAMoE,EAAc7C,EAAevB,CAAK,EAClCqE,EAAU7C,EAAgB4C,CAAW,EAI3C,OAAOT,EAAAC,MAAA,CACH,cAHuBpD,GAA8C0C,EAAoB1C,EAAOR,CAAK,EAIrG,aAAcA,EACd,mBAAoBtC,EAAM,aACtBA,EAAM,SAAW,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAC5CA,EAAM,QAAU,CAAE,eAAgB,EAAY,EAAI,CAAC,GACnDQ,EAAa,CAAE,gBAAiB,EAAG,EAAI,CAAC,GANzC,CAOH,MAAOS,EAAgB,CAAE,SAAU,WAAY,iBAAkB,GAAG0F,CAAO,IAAK,UAAW,QAAS,EAA6B,CAAE,SAAU,WAAY,OAAQ,GAAGA,CAAO,IAAK,UAAW,OAAQ,CACvM,EACJ,EA8DI,oBA5DyBrE,GAAkB,CAC3C,IAAMoE,EAAc7C,EAAevB,CAAK,EAElCsE,EAAgB9D,GAA+C8C,EAAc9C,EAAOR,CAAK,EACzFuE,EAAe/D,GAA6C8C,EAAc9C,EAA8CR,CAAK,EAC7HwE,EAAehE,GAA8C+C,EAAa/C,EAAOR,CAAK,EACtFyE,EAAcjE,GAA8CgD,EAAYhD,EAAOR,CAAK,EAE1F,MAAO,CACH,aAAc,SACd,YAAa,eACb,KAAM,QACN,IAAKtC,EAAM,IACX,IAAKA,EAAM,IACX,KAAMA,EAAM,KACZ,MAAO0G,GAAA,KAAAA,EAAe7F,EACtB,SAAUb,EAAM,SAChB,SAAUA,EAAM,SAChB,gBAAiBA,EAAM,IACvB,gBAAiBA,EAAM,IACvB,gBAAiB0G,EACjB,mBAAoB1G,EAAM,YAC1B,MAAO,CACH,SAAU,WACV,MAAO,EACP,OAAQ,EACR,QAAS,EACT,OAAQ,GACR,SAAU,SACV,KAAM,mBACN,WAAY,SACZ,YAAa,CACjB,EACA,SAAU4G,EACV,QAASC,EACT,QAASC,EACT,OAAQC,CACZ,CACJ,CAuBA,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","isRTL","React","defaultProps","useSlider","withHeadless","defaultProps","props","_a","_b","_c","_d","valueState","setValueState","useControlledState","isDragging","setIsDragging","activeIndex","focusedIndex","rootRef","min","max","step","minStepsBetweenHandles","isHorizontal","isHandlePointerDown","dragOffsetPx","clamp","value","minValue","maxValue","getPrecision","stepValue","stepString","dotIndex","roundToStep","precision","rounded","normalizeValue","range","getValues","sourceValue","getValueState","values","getHandleElement","index","isHandleDisabled","blurFocusedHandleIfDifferent","nextIndex","rootNode","input","getClosestEnabledValueIndex","nextValue","event","indices","_","enabledIndices","closestIndex","smallestDistance","pointerAxis","distance","closestElement","candidateElement","closestRect","candidateRect","closestCenter","candidateCenter","closestDelta","getHandleValue","getValuePercent","rangeValue","setRootRef","node","getRootRect","getValueFromPointer","offsetPx","rect","size","position","clampedPosition","isRtl","isRTL","orientedPosition","updateValueAt","originalEvent","minDistance","lowerBound","upperBound","clampedValue","nextValues","nextValueState","updateValueFromPointer","onTrackPointerDown","onTrackPointerMove","onTrackPointerUp","onHandlePointerDown","handle","handleRect","handleCenter","onInputChange","onInputFocus","onInputBlur","state","rootProps","__spreadProps","__spreadValues","trackProps","startValue","endValue","startPercent","endPercent","sizePercent","rangeStyle","handleValue","percent","handleChange","handleInput","handleFocus","handleBlur"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/speeddial/useSpeedDial.ts","../../src/speeddial/useSpeedDial.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { $dt } from '@primeuix/styled';\nimport { find, findSingle, focus } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useSpeedDial.props';\n\nexport const useSpeedDial = withHeadless({\n name: 'useSpeedDial',\n defaultProps,\n setup: ({ props, id, elementRef }) => {\n const [visibleState, setVisibleState] = useControlledState({\n value: props.visible,\n defaultValue: props.defaultVisible ?? false,\n onChange: props.onVisibleChange\n });\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<string | number>(-1);\n const rootRef = React.useRef<HTMLElement | null>(null);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const isItemClicked = React.useRef(false);\n\n const setRootRef = React.useCallback((node: HTMLElement | null) => {\n rootRef.current = node;\n elementRef.current = node ?? undefined;\n }, []);\n\n const state = {\n visible: visibleState,\n focusedOptionIndex\n };\n\n const setListRef = React.useCallback((node: HTMLUListElement | null) => {\n listRef.current = node;\n }, []);\n\n const getItems = () => find(rootRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"item\"]');\n const getItemCount = () => getItems().length;\n\n const focusButton = () => {\n const buttonEl = findSingle(rootRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"trigger\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const show = () => setVisibleState([true, { value: true }]);\n const hide = () => setVisibleState([false, { value: false }]);\n\n const calculateItemDiff = React.useCallback(() => {\n if (props.type !== 'linear') {\n const button = findSingle(rootRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"trigger\"]') as HTMLButtonElement;\n const firstItem = findSingle(listRef.current as HTMLUListElement, '[data-scope=\"speeddial\"][data-part=\"item\"]') as HTMLLIElement;\n\n if (button && firstItem) {\n const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.x').name, `${wDiff / 2}px`);\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.y').name, `${hDiff / 2}px`);\n }\n }\n }, [props.type]);\n\n const [bindDocumentClickListener, unbindDocumentClickListener] = useEventListener({\n type: 'click',\n listener: (event) => {\n const target = event.target as Node;\n const isOutside = rootRef.current && !rootRef.current.contains(target);\n\n if (visibleState && isOutside) {\n hide();\n }\n\n isItemClicked.current = false;\n }\n });\n\n useUpdateEffect(() => {\n if (visibleState) {\n requestAnimationFrame(calculateItemDiff);\n\n if (props.hideOnClickOutside) {\n bindDocumentClickListener();\n }\n }\n\n return () => {\n if (props.hideOnClickOutside) {\n unbindDocumentClickListener();\n }\n };\n }, [visibleState]);\n\n useUnmountEffect(() => {\n unbindDocumentClickListener();\n });\n\n const calculateTransitionDelay = (index: number) => {\n const length = getItemCount();\n\n return (visibleState ? index : length - index - 1) * (props.transitionDelay ?? 30);\n };\n\n const calculatePointStyle = (index: number): React.CSSProperties => {\n const { type, direction, radius: propRadius } = props;\n\n if (type === 'linear') {\n return {};\n }\n\n const length = getItemCount();\n const radius = (propRadius || length * 20) as number;\n const diffX = $dt('item.diff.x').variable;\n const diffY = $dt('item.diff.y').variable;\n\n const createCoord = (value: number) => `calc(${value}px + ${diffX})`;\n const createCoordY = (value: number) => `calc(${value}px + ${diffY})`;\n\n if (type === 'circle') {\n const step = (2 * Math.PI) / length;\n\n return {\n left: createCoord(radius * Math.cos(step * index)),\n top: createCoordY(radius * Math.sin(step * index))\n };\n }\n\n const stepDivisor = type === 'semi-circle' ? length - 1 : 2 * (length - 1);\n const step = Math.PI / stepDivisor;\n const x = createCoord(radius * Math.cos(step * index));\n const y = createCoordY(radius * Math.sin(step * index));\n\n const pointStyleMap: Record<string, Record<string, (x: string, y: string) => React.CSSProperties>> = {\n 'semi-circle': {\n up: (x, y) => ({ left: x, bottom: y }),\n down: (x, y) => ({ left: x, top: y }),\n left: (x, y) => ({ right: y, top: x }),\n right: (x, y) => ({ left: y, top: x })\n },\n 'quarter-circle': {\n 'up-left': (x, y) => ({ right: x, bottom: y }),\n 'up-right': (x, y) => ({ left: x, bottom: y }),\n 'down-left': (x, y) => ({ right: y, top: x }),\n 'down-right': (x, y) => ({ left: y, top: x })\n }\n };\n\n const styleMapper = pointStyleMap[type as string]?.[direction as string];\n\n return styleMapper ? styleMapper(x, y) : {};\n };\n\n const getItemStyle = (index: number): React.CSSProperties => ({\n transitionDelay: `${calculateTransitionDelay(index)}ms`,\n ...calculatePointStyle(index)\n });\n\n const findOptionIndex = (direction: 'next' | 'prev') => {\n const items = getItems();\n const isNext = direction === 'next';\n const fallbackIndex = isNext ? 0 : items.length - 1;\n // const newIndex = index === -1 ? items[fallbackIndex]?.id : index;\n // const matchedIndex = items.findIndex((item) => item.getAttribute('id') === newIndex);\n\n return focusedOptionIndex === -1 ? fallbackIndex : (focusedOptionIndex as number) + (isNext ? 1 : -1);\n };\n\n const changeFocusedOptionIndex = (index: number) => {\n const items = getItems();\n\n if (items[index]) {\n setFocusedOptionIndex(index ?? -1);\n\n const buttonEl = findSingle(items[index], '[data-part=\"action\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n }\n };\n\n const navigate = (event: React.KeyboardEvent, direction: 'next' | 'prev') => {\n const optionIndex = findOptionIndex(direction);\n\n changeFocusedOptionIndex(optionIndex);\n event.preventDefault();\n };\n\n const hideAndFocusButton = () => {\n hide();\n setFocusedOptionIndex(-1);\n focusButton();\n };\n\n const onTriggerClick = () => {\n if (visibleState) {\n hide();\n } else {\n show();\n }\n\n isItemClicked.current = true;\n };\n\n const onTriggerKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n show();\n navigate(event, 'next');\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n show();\n navigate(event, 'prev');\n break;\n\n case 'Escape':\n hideAndFocusButton();\n break;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n const direction = props.direction as string;\n const leftDirections = ['left', 'up-right', 'down-left'];\n const rightDirections = ['right', 'up-left', 'down-right'];\n\n switch (event.code) {\n case 'ArrowDown':\n if (direction === 'down') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'ArrowUp':\n if (direction === 'down') {\n navigate(event, 'prev');\n } else {\n navigate(event, 'next');\n }\n\n break;\n\n case 'ArrowLeft':\n if (leftDirections.includes(direction) || direction === 'down') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'ArrowRight':\n if (rightDirections.includes(direction) || direction === 'up') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n case 'Escape':\n hideAndFocusButton();\n break;\n\n case 'Home':\n setFocusedOptionIndex(-1);\n navigate(event, 'next');\n break;\n\n case 'End':\n setFocusedOptionIndex(-1);\n navigate(event, 'prev');\n break;\n }\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (!rootRef.current?.contains(event.relatedTarget as Node)) {\n setFocusedOptionIndex(-1);\n }\n };\n\n const onItemClick = (event: React.MouseEvent | React.KeyboardEvent) => {\n hide();\n isItemClicked.current = true;\n event.preventDefault?.();\n };\n\n const onItemKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n onItemClick(event);\n }\n };\n\n // prop getters\n const rootProps = {\n ref: setRootRef,\n id,\n 'data-scope': 'speeddial' as const,\n 'data-part': 'root' as const,\n ...(visibleState ? { 'data-open': '' as const } : { 'data-closed': '' as const }),\n style: {\n alignItems: (props.direction === 'up' || props.direction === 'down' ? 'center' : undefined) as React.CSSProperties['alignItems'],\n justifyContent: (props.direction === 'left' || props.direction === 'right' ? 'center' : undefined) as React.CSSProperties['justifyContent'],\n flexDirection: (props.direction === 'up'\n ? 'column-reverse'\n : props.direction === 'down'\n ? 'column'\n : props.direction === 'left'\n ? 'row-reverse'\n : props.direction === 'right'\n ? 'row'\n : undefined) as React.CSSProperties['flexDirection']\n }\n };\n\n const triggerProps = {\n 'data-scope': 'speeddial' as const,\n 'data-part': 'trigger' as const,\n type: 'button' as const,\n 'aria-expanded': visibleState,\n 'aria-haspopup': 'true' as const,\n 'aria-controls': `${id}_list`,\n ...(visibleState ? { 'data-open': '' as const } : { 'data-closed': '' as const }),\n onClick: onTriggerClick,\n onKeyDown: onTriggerKeyDown\n };\n\n const listProps = {\n ref: setListRef,\n 'data-scope': 'speeddial' as const,\n 'data-part': 'list' as const,\n ...(visibleState ? { 'data-open': '' as const } : { 'data-closed': '' as const }),\n id: `${id}_list`,\n role: 'menu' as const,\n tabIndex: -1,\n onBlur,\n onKeyDown,\n style: {\n flexDirection: (props.direction === 'up'\n ? 'column-reverse'\n : props.direction === 'down'\n ? 'column'\n : props.direction === 'left'\n ? 'row-reverse'\n : props.direction === 'right'\n ? 'row'\n : undefined) as React.CSSProperties['flexDirection']\n }\n };\n\n const getItemProps = (index: number) => ({\n id: `${id}_${index}`,\n 'data-scope': 'speeddial' as const,\n 'data-part': 'item' as const,\n role: 'none' as const,\n style: getItemStyle(index),\n ...(focusedOptionIndex === index ? { 'data-active': '' as const } : {})\n });\n\n const actionProps = {\n 'data-scope': 'speeddial',\n 'data-part': 'action',\n type: 'button' as const,\n tabIndex: -1,\n role: 'menuitem' as const,\n onClick: onItemClick,\n onKeyDown: onItemKeyDown\n };\n\n return {\n state,\n //refs\n listRef,\n // prop getters\n rootProps,\n triggerProps,\n listProps,\n getItemProps,\n actionProps,\n // methods\n getItemStyle,\n onBlur,\n onKeyDown,\n onTriggerClick,\n onTriggerKeyDown,\n onItemClick,\n onItemKeyDown\n };\n }\n});\n","import type { UseSpeedDialProps } from '@primereact/types/headless/speeddial';\n\nexport const defaultProps: UseSpeedDialProps = {\n visible: undefined,\n defaultVisible: undefined,\n direction: 'up',\n transitionDelay: 30,\n type: 'linear',\n radius: 0,\n hideOnClickOutside: true,\n onVisibleChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useUnmountEffect","useUpdateEffect","useControlledState","$dt","find","findSingle","focus","React","defaultProps","useSpeedDial","withHeadless","defaultProps","props","id","elementRef","_a","visibleState","setVisibleState","useControlledState","focusedOptionIndex","setFocusedOptionIndex","rootRef","listRef","isItemClicked","setRootRef","node","state","setListRef","getItems","find","getItemCount","focusButton","buttonEl","findSingle","focus","show","hide","calculateItemDiff","button","firstItem","wDiff","hDiff","$dt","bindDocumentClickListener","unbindDocumentClickListener","useEventListener","event","target","isOutside","useUpdateEffect","useUnmountEffect","calculateTransitionDelay","index","length","calculatePointStyle","type","direction","propRadius","radius","diffX","diffY","createCoord","value","createCoordY","step","stepDivisor","x","y","styleMapper","getItemStyle","__spreadValues","findOptionIndex","items","isNext","fallbackIndex","changeFocusedOptionIndex","navigate","optionIndex","hideAndFocusButton","onTriggerClick","onTriggerKeyDown","onKeyDown","leftDirections","rightDirections","onBlur","onItemClick","onItemKeyDown","rootProps","__spreadProps","triggerProps","listProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/splitter/useSplitter.ts","../../src/splitter/useSplitter.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport type { UseSplitterPanelInfo, UseSplitterRegisterPanelProps } from '@primereact/types/headless/splitter';\nimport { isRTL } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useSplitter.props';\n\nconst validatePanelSize = (rawSize: number, info: UseSplitterPanelInfo | undefined, min: number, isKeyDown: boolean): { size: number; collapsed: boolean } => {\n if (!info?.collapsible) {\n return { size: Math.max(rawSize, min), collapsed: false };\n }\n\n const collapsedSize = info.collapsedSize ?? 0;\n\n if (rawSize >= min) {\n return { size: rawSize, collapsed: false };\n }\n\n if (isKeyDown) {\n return { size: collapsedSize, collapsed: true };\n }\n\n const halfwayPoint = (collapsedSize + min) / 2;\n\n if (rawSize <= halfwayPoint) {\n return { size: collapsedSize, collapsed: true };\n }\n\n return { size: min, collapsed: false };\n};\n\nexport const useSplitter = withHeadless({\n name: 'useSplitter',\n defaultProps,\n setup({ props, elementRef }) {\n const gutterCounter = React.useRef(0);\n const size = React.useRef<number | null>(null);\n const gutterMidpoint = React.useRef<number | null>(null);\n const initialSizes = React.useRef<number[]>([]);\n const initialCollapsed = React.useRef<boolean[]>([]);\n const reportedCollapsed = React.useRef<boolean[]>([]);\n const initialTotal = React.useRef(100);\n const prevPanelIndex = React.useRef<number | null>(null);\n const timer = React.useRef<ReturnType<typeof setInterval> | null>(null);\n const [panelSizes, setPanelSizes] = React.useState<number[]>([]);\n const [resizing, setResizing] = React.useState(false);\n const panelCounter = React.useRef(0);\n const panelRegistry = React.useRef<UseSplitterPanelInfo[]>([]);\n const panelSizesRef = React.useRef<number[]>([]);\n const resizingRef = React.useRef(false);\n const horizontal = props.orientation === 'horizontal';\n\n panelSizesRef.current = panelSizes;\n\n // When panels config is provided, populate registry synchronously\n if (props.panels) {\n panelRegistry.current = props.panels.map((config, i) => ({\n id: undefined,\n index: i,\n minSize: config.minSize ?? 0,\n maxSize: config.maxSize ?? 100,\n collapsible: config.collapsible ?? false,\n collapsedSize: config.collapsedSize ?? 0,\n collapsed: panelRegistry.current[i]?.collapsed ?? false\n }));\n panelCounter.current = props.panels.length;\n }\n\n if (props.sizes && panelSizes.length > 0 && !resizingRef.current) {\n if (panelSizes.length !== props.sizes.length || !panelSizes.every((v, i) => v === props.sizes![i])) {\n for (let i = 0; i < panelRegistry.current.length; i++) {\n const info = panelRegistry.current[i];\n\n if (info?.collapsible) {\n info.collapsed = props.sizes[i] <= (info.collapsedSize ?? 0);\n }\n }\n\n setPanelSizes([...props.sizes]);\n }\n }\n\n const state = { resizing };\n\n const registerPanel = React.useCallback((index: number | null, panelProps: UseSplitterRegisterPanelProps): number => {\n if (index !== null && panelRegistry.current[index]) {\n const existing = panelRegistry.current[index];\n\n panelRegistry.current[index] = {\n ...existing,\n id: panelProps.id ?? existing.id,\n minSize: panelProps.minSize ?? 0,\n maxSize: panelProps.maxSize ?? 100,\n collapsible: panelProps.collapsible ?? false,\n collapsedSize: panelProps.collapsedSize ?? 0\n };\n\n return index;\n }\n\n const newIndex = panelCounter.current;\n\n panelCounter.current += 1;\n\n panelRegistry.current[newIndex] = {\n id: panelProps.id,\n index: newIndex,\n minSize: panelProps.minSize ?? 0,\n maxSize: panelProps.maxSize ?? 100,\n collapsible: panelProps.collapsible ?? false,\n collapsedSize: panelProps.collapsedSize ?? 0,\n collapsed: false\n };\n\n return newIndex;\n }, []);\n\n const registerGutter = React.useCallback(() => {\n return gutterCounter.current++;\n }, []);\n\n React.useEffect(() => {\n return () => {\n if (timer.current) {\n clearInterval(timer.current);\n timer.current = null;\n }\n\n panelCounter.current = 0;\n gutterCounter.current = 0;\n panelRegistry.current = [];\n };\n }, []);\n\n const getPanelMinSize = (panelIndex: number): number => {\n return panelRegistry.current[panelIndex]?.minSize ?? 0;\n };\n\n const getPanelMaxSize = (panelIndex: number): number => {\n return panelRegistry.current[panelIndex]?.maxSize ?? 100;\n };\n\n const onResizeStart = (event: React.PointerEvent | KeyboardEvent, index: number, isKeyDown = false) => {\n if (!elementRef.current) return;\n\n const panelElements = elementRef.current.querySelectorAll<HTMLElement>(':scope > [data-index]');\n let totalPanelPx = 0;\n\n for (const el of panelElements) {\n const rect = el.getBoundingClientRect();\n\n totalPanelPx += horizontal ? rect.width : rect.height;\n }\n\n size.current = totalPanelPx;\n\n if (!isKeyDown) {\n elementRef.current.setAttribute('data-resizing', '');\n\n const pointerEvent = event as React.PointerEvent;\n\n gutterMidpoint.current = horizontal ? pointerEvent.clientX : pointerEvent.clientY;\n }\n\n resizingRef.current = true;\n prevPanelIndex.current = index;\n\n initialSizes.current = [...panelSizesRef.current];\n initialCollapsed.current = panelRegistry.current.map((info) => info.collapsed);\n reportedCollapsed.current = panelRegistry.current.map((info) => info.collapsed);\n initialTotal.current = initialSizes.current.reduce((a, b) => a + b, 0) || 100;\n\n if (!isKeyDown) {\n props.onResizeStart?.({ sizes: [...initialSizes.current] });\n }\n };\n\n const onResize = (event: React.PointerEvent | KeyboardEvent, step = 5, isKeyDown = false) => {\n if (size.current === null || prevPanelIndex.current === null || initialSizes.current.length === 0) {\n return;\n }\n\n const gutterIdx = prevPanelIndex.current;\n let delta: number;\n\n const total = initialTotal.current;\n\n if (isKeyDown) {\n delta = (total * step) / size.current;\n } else {\n if (gutterMidpoint.current === null) return;\n\n const pointerEvent = event as unknown as PointerEvent;\n\n if (horizontal) {\n if (isRTL(elementRef.current as HTMLElement)) {\n delta = ((gutterMidpoint.current - pointerEvent.clientX) * total) / size.current;\n } else {\n delta = ((pointerEvent.clientX - gutterMidpoint.current) * total) / size.current;\n }\n } else {\n delta = ((pointerEvent.clientY - gutterMidpoint.current) * total) / size.current;\n }\n }\n\n const newSizes = [...initialSizes.current];\n\n for (let i = 0; i < panelRegistry.current.length; i++) {\n if (initialCollapsed.current[i] !== undefined) {\n panelRegistry.current[i].collapsed = initialCollapsed.current[i];\n }\n }\n\n if (delta > 0) {\n const growInfo = panelRegistry.current[gutterIdx];\n let toGrow = delta;\n const max = getPanelMaxSize(gutterIdx);\n\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[gutterIdx]));\n\n if (growInfo?.collapsible && growInfo.collapsed) {\n const gapSize = getPanelMinSize(gutterIdx) - growInfo.collapsedSize;\n const halfwayDelta = gapSize / 2;\n\n if (isKeyDown) {\n toGrow = Math.max(toGrow, gapSize);\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[gutterIdx]));\n } else if (toGrow < halfwayDelta) {\n toGrow = 0;\n } else {\n toGrow = Math.max(toGrow, gapSize);\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[gutterIdx]));\n }\n }\n\n let shrunk = 0;\n\n for (let i = gutterIdx + 1; i < newSizes.length && shrunk < toGrow; i++) {\n const info = panelRegistry.current[i];\n const min = getPanelMinSize(i);\n\n if (info?.collapsed) {\n continue;\n }\n\n const effectiveMin = info?.collapsible ? (info.collapsedSize ?? 0) : min;\n const available = Math.max(0, newSizes[i] - effectiveMin);\n const amount = Math.min(toGrow - shrunk, available);\n const rawSize = newSizes[i] - amount;\n\n const validated = validatePanelSize(rawSize, info, min, isKeyDown);\n const actualShrunk = newSizes[i] - validated.size;\n\n newSizes[i] = validated.size;\n shrunk += actualShrunk;\n\n if (info) {\n info.collapsed = validated.collapsed;\n }\n }\n\n newSizes[gutterIdx] += shrunk;\n\n if (growInfo?.collapsible && growInfo.collapsed && newSizes[gutterIdx] >= getPanelMinSize(gutterIdx)) {\n growInfo.collapsed = false;\n }\n } else if (delta < 0) {\n const nextIdx = gutterIdx + 1;\n const growInfo = panelRegistry.current[nextIdx];\n let toGrow = -delta;\n const max = getPanelMaxSize(nextIdx);\n\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[nextIdx]));\n\n if (growInfo?.collapsible && growInfo.collapsed) {\n const gapSize = getPanelMinSize(nextIdx) - growInfo.collapsedSize;\n const halfwayDelta = gapSize / 2;\n\n if (isKeyDown) {\n toGrow = Math.max(toGrow, gapSize);\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[nextIdx]));\n } else if (toGrow < halfwayDelta) {\n toGrow = 0;\n } else {\n toGrow = Math.max(toGrow, gapSize);\n toGrow = Math.min(toGrow, Math.max(0, max - newSizes[nextIdx]));\n }\n }\n\n let shrunk = 0;\n\n for (let i = gutterIdx; i >= 0 && shrunk < toGrow; i--) {\n const info = panelRegistry.current[i];\n const min = getPanelMinSize(i);\n\n if (info?.collapsed) {\n continue;\n }\n\n const effectiveMin = info?.collapsible ? (info.collapsedSize ?? 0) : min;\n const available = Math.max(0, newSizes[i] - effectiveMin);\n const amount = Math.min(toGrow - shrunk, available);\n const rawSize = newSizes[i] - amount;\n\n const validated = validatePanelSize(rawSize, info, min, isKeyDown);\n const actualShrunk = newSizes[i] - validated.size;\n\n newSizes[i] = validated.size;\n shrunk += actualShrunk;\n\n if (info) {\n info.collapsed = validated.collapsed;\n }\n }\n\n newSizes[nextIdx] += shrunk;\n\n if (growInfo?.collapsible && growInfo.collapsed && newSizes[nextIdx] >= getPanelMinSize(nextIdx)) {\n growInfo.collapsed = false;\n }\n }\n\n for (let i = 0; i < panelRegistry.current.length; i++) {\n const info = panelRegistry.current[i];\n\n if (info.collapsed !== reportedCollapsed.current[i]) {\n reportedCollapsed.current[i] = info.collapsed;\n props.onCollapse?.({ index: i, collapsed: info.collapsed, sizes: [...newSizes] });\n }\n }\n\n const finalSizes = [...newSizes];\n\n setResizing(true);\n setPanelSizes(finalSizes);\n props.onResize?.({ sizes: finalSizes });\n };\n\n const onResizeEnd = () => {\n resizingRef.current = false;\n elementRef.current?.removeAttribute('data-resizing');\n props.onResizeEnd?.({ sizes: [...panelSizesRef.current] });\n setResizing(false);\n clear();\n };\n\n const repeat = (event: React.PointerEvent | KeyboardEvent, index: number, step: number) => {\n onResizeStart(event, index, true);\n onResize(event, step, true);\n };\n\n const setTimer = (event: React.PointerEvent | KeyboardEvent, index: number, step: number) => {\n if (!timer.current) {\n props.onResizeStart?.({ sizes: [...panelSizesRef.current] });\n repeat(event, index, step);\n timer.current = setInterval(() => {\n repeat(event, index, step);\n }, 40);\n }\n };\n\n const clearTimer = () => {\n if (timer.current) {\n clearInterval(timer.current);\n timer.current = null;\n }\n };\n\n const onGutterKeyUp = () => {\n if (!timer.current) return;\n\n clearTimer();\n onResizeEnd();\n };\n\n const onGutterKeyDown = (event: React.KeyboardEvent, index: number, gutterDisabled?: boolean) => {\n if (props.disabled || gutterDisabled) return;\n\n switch (event.code) {\n case 'ArrowLeft': {\n if (horizontal) {\n setTimer(event as unknown as KeyboardEvent, index, (props.step as number) * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n if (horizontal) {\n setTimer(event as unknown as KeyboardEvent, index, props.step as number);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowDown': {\n if (!horizontal) {\n setTimer(event as unknown as KeyboardEvent, index, props.step as number);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n if (!horizontal) {\n setTimer(event as unknown as KeyboardEvent, index, (props.step as number) * -1);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n break;\n }\n };\n\n const [bindDocumentPointerMoveListener, unbindDocumentPointerMoveListener] = useEventListener({\n type: 'pointermove',\n listener: (event: Event) => onResize(event as unknown as React.PointerEvent)\n });\n\n const [bindDocumentPointerUpListener, unbindDocumentPointerUpListener] = useEventListener({\n type: 'pointerup',\n listener: () => {\n onResizeEnd();\n unbindPointerListeners();\n }\n });\n\n const bindPointerListeners = () => {\n bindDocumentPointerMoveListener();\n bindDocumentPointerUpListener();\n };\n\n const unbindPointerListeners = () => {\n unbindDocumentPointerMoveListener();\n unbindDocumentPointerUpListener();\n };\n\n const onGutterPointerDown = (event: React.PointerEvent, index: number, gutterDisabled?: boolean) => {\n if (props.disabled || gutterDisabled) return;\n\n onResizeStart(event, index);\n bindPointerListeners();\n };\n\n const clear = () => {\n size.current = null;\n gutterMidpoint.current = null;\n initialSizes.current = [];\n initialCollapsed.current = [];\n reportedCollapsed.current = [];\n initialTotal.current = 100;\n prevPanelIndex.current = null;\n };\n\n React.useLayoutEffect(() => {\n const panelCount = panelRegistry.current.length;\n\n if (panelCount === 0) return;\n\n const sourceSizes = props.sizes ?? props.defaultSizes;\n const _panelSizes: number[] = [];\n\n for (let i = 0; i < panelCount; i++) {\n _panelSizes[i] = sourceSizes?.[i] ?? 100 / panelCount;\n }\n\n for (let i = 0; i < panelCount; i++) {\n const info = panelRegistry.current[i];\n\n if (info?.collapsible && _panelSizes[i] <= (info.collapsedSize ?? 0)) {\n info.collapsed = true;\n }\n }\n\n setPanelSizes(_panelSizes);\n }, []);\n\n // prop getters\n const rootProps = {\n ref: elementRef as React.RefObject<HTMLDivElement>,\n 'data-scope': 'splitter',\n 'data-part': 'root',\n 'data-orientation': props.orientation,\n ...(state.resizing && { 'data-resizing': '' as const }),\n ...(props.disabled && { 'data-disabled': '' as const })\n };\n\n const getPanelProps = (index: number) => {\n const panelCount = panelCounter.current || 1;\n const flexGrow = panelSizes?.[index] ?? 100 / panelCount;\n const info = panelRegistry.current[index];\n\n return {\n 'data-scope': 'splitter',\n 'data-part': 'panel',\n 'data-orientation': props.orientation,\n 'data-index': index,\n ...(info?.collapsed && { 'data-collapsed': '' as const }),\n style: {\n flex: `${flexGrow} 1 0px`,\n overflow: 'hidden',\n ...(horizontal ? { minWidth: 0 } : { minHeight: 0 })\n } as React.CSSProperties,\n ...(state.resizing && { 'data-resizing': '' as const })\n };\n };\n\n const getGutterProps = (index: number, options?: { id?: string; disabled?: boolean }) => {\n const { id: gutterInstanceId, disabled: gutterDisabled } = options ?? {};\n const disabled = props.disabled || gutterDisabled;\n const registry = panelRegistry.current;\n const prevPanel = registry?.[index];\n const nextPanel = registry?.[index + 1];\n const ariaValueNow = panelSizes?.[index] ?? 0;\n const ariaValueMin = prevPanel?.minSize ?? 0;\n const ariaValueMax = 100 - (nextPanel?.minSize ?? 0);\n const ariaControls = [prevPanel?.id, nextPanel?.id].filter(Boolean).join(' ') || undefined;\n\n const handlePointerDown = (e: React.PointerEvent) => onGutterPointerDown(e, index, gutterDisabled);\n const handleKeyDown = (e: React.KeyboardEvent) => onGutterKeyDown(e, index, gutterDisabled);\n\n return {\n 'data-scope': 'splitter',\n 'data-part': 'gutter',\n ...(gutterInstanceId !== undefined && { id: gutterInstanceId }),\n role: 'separator' as const,\n tabIndex: disabled ? -1 : 0,\n 'aria-valuenow': Math.round(ariaValueNow),\n 'aria-valuemin': Math.round(ariaValueMin),\n 'aria-valuemax': Math.round(ariaValueMax),\n ...(ariaControls && { 'aria-controls': ariaControls }),\n 'aria-disabled': disabled || undefined,\n style: { touchAction: 'none' as const, userSelect: 'none' as const },\n 'data-orientation': props.orientation,\n ...(state.resizing && { 'data-resizing': '' as const }),\n ...(disabled && { 'data-disabled': '' as const }),\n onPointerDown: handlePointerDown,\n onKeyDown: handleKeyDown,\n onKeyUp: onGutterKeyUp\n };\n };\n\n const handleProps = {\n 'data-scope': 'splitter',\n 'data-part': 'handle',\n 'data-orientation': props.orientation,\n ...(state.resizing && { 'data-resizing': '' as const })\n };\n\n return {\n state,\n registerPanel,\n registerGutter,\n panelCounter,\n panelRegistry,\n panelSizes,\n onResizeStart,\n onResize,\n onResizeEnd,\n onGutterPointerDown,\n onGutterKeyUp,\n onGutterKeyDown,\n getGutterProps,\n // prop getters\n rootProps,\n getPanelProps,\n handleProps\n };\n }\n});\n","import type { UseSplitterProps } from '@primereact/types/headless/splitter';\n\nexport const defaultProps: UseSplitterProps = {\n panels: undefined,\n sizes: undefined,\n defaultSizes: undefined,\n orientation: 'horizontal',\n disabled: false,\n step: 5,\n onResizeStart: undefined,\n onResize: undefined,\n onResizeEnd: undefined,\n onCollapse: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","isRTL","React","defaultProps","validatePanelSize","rawSize","info","min","isKeyDown","_a","collapsedSize","halfwayPoint","useSplitter","withHeadless","defaultProps","props","elementRef","gutterCounter","size","gutterMidpoint","initialSizes","initialCollapsed","reportedCollapsed","initialTotal","prevPanelIndex","timer","panelSizes","setPanelSizes","resizing","setResizing","panelCounter","panelRegistry","panelSizesRef","resizingRef","horizontal","config","i","_b","_c","_d","_e","_f","v","state","registerPanel","index","panelProps","_g","_h","_i","existing","__spreadProps","__spreadValues","newIndex","registerGutter","getPanelMinSize","panelIndex","getPanelMaxSize","onResizeStart","event","panelElements","totalPanelPx","el","rect","pointerEvent","a","b","onResize","step","gutterIdx","delta","total","isRTL","newSizes","growInfo","toGrow","max","gapSize","halfwayDelta","shrunk","effectiveMin","available","amount","validated","actualShrunk","nextIdx","finalSizes","onResizeEnd","clear","repeat","setTimer","clearTimer","onGutterKeyUp","onGutterKeyDown","gutterDisabled","bindDocumentPointerMoveListener","unbindDocumentPointerMoveListener","useEventListener","bindDocumentPointerUpListener","unbindDocumentPointerUpListener","unbindPointerListeners","bindPointerListeners","onGutterPointerDown","panelCount","sourceSizes","_panelSizes","rootProps","getPanelProps","flexGrow","getGutterProps","options","gutterInstanceId","disabled","registry","prevPanel","nextPanel","ariaValueNow","ariaValueMin","ariaValueMax","ariaControls","handlePointerDown","e","handleKeyDown","handleProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/stepper/useStepper.ts","../../src/stepper/useStepper.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { UseStepperProps } from '@primereact/types/headless/stepper';\nimport * as React from 'react';\nimport { defaultProps } from './useStepper.props';\n\nexport const useStepper = withHeadless({\n name: 'useStepper',\n defaultProps,\n setup({ props, id }) {\n const [activeValue, setActiveValue] = React.useState<UseStepperProps['value']>(props.value ?? props.defaultValue ?? null);\n\n const state = {\n value: activeValue\n };\n\n const setActiveStep = (value: null | undefined | string | number) => {\n if (value !== activeValue) {\n setActiveValue(value);\n\n props.onValueChange?.({\n value\n });\n }\n };\n\n const isStepActive = (value: null | undefined | string | number): boolean => {\n return activeValue === value;\n };\n\n const isStepDisabled = () => {\n return props.linear ?? false;\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'stepper' as const,\n 'data-part': 'root' as const\n };\n\n const getItemProps = ({ active }: { active: boolean }) => ({\n 'data-scope': 'stepper' as const,\n 'data-part': 'item' as const,\n ...(active ? { 'data-active': '' as const } : {})\n });\n\n const getStepProps = ({ active, disabled }: { active: boolean; disabled: boolean | undefined | null }) => ({\n 'data-scope': 'stepper' as const,\n 'data-part': 'step' as const,\n 'aria-current': active ? ('step' as const) : undefined,\n role: 'presentation' as const,\n ...(active ? { 'data-active': '' as const } : {}),\n ...(disabled ? { 'data-disabled': '' as const } : {})\n });\n\n const getHeaderProps = ({ activeValue, disabled }: { activeValue: string | number | null | undefined; disabled: boolean | undefined | null }) => ({\n 'data-scope': 'stepper' as const,\n 'data-part': 'header' as const,\n type: 'button' as const,\n role: 'tab' as const,\n tabIndex: disabled ? -1 : undefined,\n 'aria-controls': `${id}_steppanel_${activeValue}`,\n disabled,\n onClick: () => setActiveStep(activeValue)\n });\n\n const getPanelProps = ({ active, activeValue }: { active: boolean; activeValue: string | number | null | undefined }) => ({\n 'data-scope': 'stepper' as const,\n 'data-part': 'panel' as const,\n role: 'tabpanel' as const,\n 'aria-controls': `${id}_step_${activeValue}`,\n ...(active ? { 'data-active': '' as const } : {})\n });\n\n return {\n state,\n // prop getters\n rootProps,\n getItemProps,\n getStepProps,\n getHeaderProps,\n getPanelProps,\n // methods\n setActiveStep,\n isStepActive,\n isStepDisabled\n };\n }\n});\n","import type { UseStepperProps } from '@primereact/types/headless/stepper';\n\nexport const defaultProps: UseStepperProps = {\n defaultValue: null,\n value: null,\n linear: false,\n onValueChange: undefined\n};\n"],"mappings":"yVAAA,OAAS,gBAAAA,MAAoB,4BAE7B,UAAYC,MAAW,QCAhB,IAAMC,EAAgC,CACzC,aAAc,KACd,MAAO,KACP,OAAQ,GACR,cAAe,MACnB,EDFO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,GAAAC,CAAG,EAAG,CARzB,IAAAC,EAAAC,EASQ,GAAM,CAACC,EAAaC,CAAc,EAAU,YAAmCF,GAAAD,EAAAF,EAAM,QAAN,KAAAE,EAAeF,EAAM,eAArB,KAAAG,EAAqC,IAAI,EAElHG,EAAQ,CACV,MAAOF,CACX,EAEMG,EAAiBC,GAA8C,CAf7E,IAAAN,EAgBgBM,IAAUJ,IACVC,EAAeG,CAAK,GAEpBN,EAAAF,EAAM,gBAAN,MAAAE,EAAA,KAAAF,EAAsB,CAClB,MAAAQ,CACJ,GAER,EAkDA,MAAO,CACH,MAAAF,EAEA,UA1Cc,CACd,aAAc,UACd,YAAa,MACjB,EAwCI,aAtCiB,CAAC,CAAE,OAAAG,CAAO,IAA4BC,EAAA,CACvD,aAAc,UACd,YAAa,QACTD,EAAS,CAAE,cAAe,EAAY,EAAI,CAAC,GAoC/C,aAjCiB,CAAC,CAAE,OAAAA,EAAQ,SAAAE,CAAS,IAAkED,IAAA,CACvG,aAAc,UACd,YAAa,OACb,eAAgBD,EAAU,OAAmB,OAC7C,KAAM,gBACFA,EAAS,CAAE,cAAe,EAAY,EAAI,CAAC,GAC3CE,EAAW,CAAE,gBAAiB,EAAY,EAAI,CAAC,GA4BnD,eAzBmB,CAAC,CAAE,YAAAP,EAAa,SAAAO,CAAS,KAAkG,CAC9I,aAAc,UACd,YAAa,SACb,KAAM,SACN,KAAM,MACN,SAAUA,EAAW,GAAK,OAC1B,gBAAiB,GAAGV,CAAE,cAAcG,CAAW,GAC/C,SAAAO,EACA,QAAS,IAAMJ,EAAcH,CAAW,CAC5C,GAiBI,cAfkB,CAAC,CAAE,OAAAK,EAAQ,YAAAL,CAAY,IAA6EM,EAAA,CACtH,aAAc,UACd,YAAa,QACb,KAAM,WACN,gBAAiB,GAAGT,CAAE,SAASG,CAAW,IACtCK,EAAS,CAAE,cAAe,EAAY,EAAI,CAAC,GAY/C,cAAAF,EACA,aA1DkBC,GACXJ,IAAgBI,EA0DvB,eAvDmB,IAAM,CA7BrC,IAAAN,EA8BY,OAAOA,EAAAF,EAAM,SAAN,KAAAE,EAAgB,EAC3B,CAsDA,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","useStepper","withHeadless","defaultProps","props","id","_a","_b","activeValue","setActiveValue","state","setActiveStep","value","active","__spreadValues","disabled"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/styleclass/useStyleClass.ts","../../src/styleclass/useStyleClass.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { useMountEffect } from '@primereact/hooks/use-mount-effect';\nimport { useUnmountEffect } from '@primereact/hooks/use-unmount-effect';\nimport { useUpdateEffect } from '@primereact/hooks/use-update-effect';\nimport { addClass, getTargetElement, hasClass, isElement, isVisible, removeClass, setAttribute, toElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useStyleClass.props';\n\nexport const useStyleClass = withHeadless({\n name: 'useStyleClass',\n defaultProps,\n setup({ props, elementRef }) {\n const animating = React.useRef(false);\n\n // element refs\n const targetRef = React.useRef<HTMLElement | null>(null);\n const resizeObserver = React.useRef<ResizeObserver | null>(null);\n\n // events\n const [bindTargetEnterListener, unbindTargetEnterListener] = useEventListener({\n type: 'animationend',\n listener() {\n removeClass(targetRef.current as Element, props.enterActiveClassName ?? '');\n\n if (props.enterToClassName) {\n addClass(targetRef.current as Element, props.enterToClassName);\n }\n\n unbindTargetEnterListener();\n\n if (targetRef.current && props.enterActiveClassName?.includes('slidedown')) {\n targetRef.current.style.maxHeight = '';\n }\n\n animating.current = false;\n }\n });\n\n const [bindTargetLeaveListener, unbindTargetLeaveListener] = useEventListener({\n type: 'animationend',\n listener() {\n removeClass(targetRef.current as Element, props.leaveActiveClassName ?? '');\n\n if (props.leaveToClassName) {\n addClass(targetRef.current as Element, props.leaveToClassName);\n }\n\n unbindTargetLeaveListener();\n animating.current = false;\n }\n });\n\n const [bindDocumentClickListener, unbindDocumentClickListener] = useEventListener({\n type: 'click',\n listener(event) {\n if (!isVisible(targetRef.current as HTMLElement) || getComputedStyle(targetRef.current as Element).getPropertyValue('position') === 'static') {\n unbindDocumentClickListener();\n } else if (isOutsideClick(event as MouseEvent)) {\n leave();\n }\n },\n when: props.hideOnOutsideClick\n });\n\n const [bindWindowResizeListener, unbindWindowResizeListener] = useEventListener({\n type: 'resize',\n listener() {\n if (!isVisible(targetRef.current as HTMLElement)) {\n unbindWindowResizeListener();\n } else {\n leave();\n }\n },\n when: props.hideOnResize\n });\n\n const [bindClickListener, unbindClickListener] = useEventListener({\n type: 'click',\n listener() {\n targetRef.current = resolveTarget() as HTMLElement;\n\n if (props.toggleClassName) {\n if (hasClass(targetRef.current, props.toggleClassName)) {\n removeClass(targetRef.current, props.toggleClassName);\n } else {\n addClass(targetRef.current, props.toggleClassName);\n }\n } else {\n if (isVisible(targetRef.current)) {\n leave();\n } else {\n enter();\n }\n }\n }\n });\n\n // methods\n const enter = React.useCallback(() => {\n if (!targetRef.current) return;\n\n if (props.enterActiveClassName) {\n if (!animating.current) {\n animating.current = true;\n\n if (props.enterActiveClassName.includes('slidedown')) {\n targetRef.current.style.height = '0px';\n removeClass(targetRef.current, (props.hiddenClassName || props.enterFromClassName) ?? '');\n targetRef.current.style.maxHeight = targetRef.current.scrollHeight + 'px';\n addClass(targetRef.current, props.hiddenClassName || props.enterActiveClassName);\n targetRef.current.style.height = '';\n }\n\n addClass(targetRef.current, props.enterActiveClassName);\n\n if (props.enterFromClassName) {\n removeClass(targetRef.current, props.enterFromClassName);\n }\n\n bindTargetEnterListener({ target: targetRef.current });\n }\n } else {\n if (props.enterFromClassName) {\n removeClass(targetRef.current, props.enterFromClassName);\n }\n\n if (props.enterToClassName) {\n addClass(targetRef.current, props.enterToClassName);\n }\n }\n\n if (props.hideOnOutsideClick) {\n bindDocumentClickListener({ target: elementRef.current?.ownerDocument });\n }\n\n if (props.hideOnResize) {\n bindResizeListener();\n }\n }, [bindDocumentClickListener, bindTargetEnterListener, elementRef, props]);\n\n const leave = React.useCallback(() => {\n if (props.leaveActiveClassName) {\n if (!animating.current) {\n animating.current = true;\n addClass(targetRef.current as Element, props.leaveActiveClassName);\n\n if (props.leaveFromClassName) {\n removeClass(targetRef.current as Element, props.leaveFromClassName);\n }\n\n bindTargetLeaveListener({ target: targetRef.current });\n }\n } else {\n if (props.leaveFromClassName) {\n removeClass(targetRef.current as Element, props.leaveFromClassName);\n }\n\n if (props.leaveToClassName) {\n addClass(targetRef.current as Element, props.leaveToClassName);\n }\n }\n\n if (props.hideOnOutsideClick) {\n unbindDocumentClickListener();\n }\n\n if (props.hideOnResize) {\n unbindResizeListener();\n }\n }, [bindTargetLeaveListener, props, unbindDocumentClickListener]);\n\n const bindResizeListener = () => {\n const resizeTarget = getTargetElement(props.resizeSelector ?? 'window');\n\n if (isElement(resizeTarget)) {\n bindElementResizeListener(resizeTarget);\n } else {\n bindWindowResizeListener({ target: 'window' });\n }\n };\n\n const unbindResizeListener = () => {\n unbindWindowResizeListener();\n unbindElementResizeListener();\n };\n\n const bindElementResizeListener = (resizeTarget: Element) => {\n if (!resizeObserver.current && resizeTarget) {\n let isFirstResize = true;\n\n resizeObserver.current = new ResizeObserver(() => {\n if (isFirstResize) {\n isFirstResize = false;\n\n return;\n }\n\n if (isVisible(targetRef.current as HTMLElement)) {\n leave();\n }\n });\n resizeObserver.current.observe(resizeTarget);\n }\n };\n\n const unbindElementResizeListener = () => {\n if (resizeObserver.current) {\n resizeObserver.current.disconnect();\n resizeObserver.current = null;\n }\n };\n\n const resolveTarget = React.useCallback(() => {\n return targetRef.current || getTargetElement(props.selector, elementRef.current as Element);\n }, [elementRef, props.selector]);\n\n const init = React.useCallback(() => {\n Promise.resolve().then(() => {\n if (props.nodeRef?.current) {\n elementRef.current = toElement(props.nodeRef) as HTMLElement;\n }\n\n setAttribute(elementRef.current as HTMLElement, 'data-pd-styleclass', true);\n bindClickListener({ target: elementRef.current });\n });\n }, [bindClickListener, elementRef, props.nodeRef]);\n\n const destroy = React.useCallback(() => {\n unbindClickListener();\n unbindDocumentClickListener();\n unbindResizeListener();\n targetRef.current = null;\n }, []);\n\n const isOutsideClick = (event: MouseEvent) => {\n const target = event?.target as Node;\n\n return !elementRef.current?.isSameNode(target) && !elementRef.current?.contains(target) && !targetRef.current?.contains(target);\n };\n\n // effects\n useMountEffect(() => {\n init();\n });\n\n useUpdateEffect(() => {\n init();\n\n return () => {\n unbindClickListener();\n };\n });\n\n useUnmountEffect(() => {\n destroy();\n });\n\n // prop getters\n const rootProps = {\n 'data-scope': 'styleclass',\n 'data-part': 'root'\n };\n\n return {\n // prop getters\n rootProps,\n // element refs\n targetRef,\n // methods\n enter,\n leave\n };\n }\n});\n","import type { UseStyleClassProps } from '@primereact/types/headless/styleclass';\n\nexport const defaultProps: UseStyleClassProps = {\n nodeRef: undefined,\n selector: undefined,\n enterFromClassName: undefined,\n enterActiveClassName: undefined,\n enterToClassName: undefined,\n leaveFromClassName: undefined,\n leaveActiveClassName: undefined,\n leaveToClassName: undefined,\n hiddenClassName: undefined,\n hideOnOutsideClick: false,\n toggleClassName: undefined,\n hideOnResize: false,\n resizeSelector: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useMountEffect","useUnmountEffect","useUpdateEffect","addClass","getTargetElement","hasClass","isElement","isVisible","removeClass","setAttribute","toElement","React","defaultProps","useStyleClass","withHeadless","defaultProps","props","elementRef","animating","targetRef","resizeObserver","bindTargetEnterListener","unbindTargetEnterListener","useEventListener","_a","_b","removeClass","addClass","bindTargetLeaveListener","unbindTargetLeaveListener","bindDocumentClickListener","unbindDocumentClickListener","event","isVisible","isOutsideClick","leave","bindWindowResizeListener","unbindWindowResizeListener","bindClickListener","unbindClickListener","resolveTarget","hasClass","enter","bindResizeListener","unbindResizeListener","resizeTarget","getTargetElement","isElement","bindElementResizeListener","unbindElementResizeListener","isFirstResize","init","toElement","setAttribute","destroy","_c","target","useMountEffect","useUpdateEffect","useUnmountEffect"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tabs/useTabs.ts","../../src/tabs/useTabs.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { focus, isRTL } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useTabs.props';\n\nexport const useTabs = withHeadless({\n name: 'useTabs',\n defaultProps,\n setup: ({ props, id }) => {\n const [activeTabState, setActiveTabState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n const [canScrollPrev, setCanScrollPrev] = React.useState<boolean>(false);\n const [canScrollNext, setCanScrollNext] = React.useState<boolean>(false);\n\n const contentRef = React.useRef<HTMLDivElement>(null);\n const prevButtonRef = React.useRef<HTMLButtonElement>(null);\n const nextButtonRef = React.useRef<HTMLButtonElement>(null);\n const activeBarRef = React.useRef<HTMLElement>(null);\n const activeTabRef = React.useRef<HTMLElement>(null);\n\n const state = {\n activeTab: activeTabState,\n canScrollPrev,\n canScrollNext\n };\n\n // methods\n const updateValue = (value: string | number | undefined) => {\n if (activeTabState !== value) {\n setActiveTabState([value, { value }]);\n }\n };\n\n const isItemActive = (key: null | undefined | string | number): boolean => {\n if (key === null || key === undefined) return false;\n\n return activeTabState === key;\n };\n\n const updateActiveBar = () => {\n const bar = activeBarRef.current;\n const tab = activeTabRef.current;\n\n if (!bar || !tab) return;\n\n bar.style.setProperty('--px-active-bar-width', tab.offsetWidth + 'px');\n bar.style.setProperty('--px-active-bar-height', tab.offsetHeight + 'px');\n bar.style.setProperty('--px-active-bar-left', tab.offsetLeft + 'px');\n bar.style.setProperty('--px-active-bar-top', tab.offsetTop + 'px');\n };\n\n const focusTab = (tabElement: HTMLElement | null, direction: 'next' | 'previous' | 'first' | 'last'): void => {\n const TAB_SELECTOR = '[role=\"tab\"]';\n const ENABLED_TAB_SELECTOR = '[role=\"tab\"]:not([data-disabled])';\n\n const findAdjacentTab = (element: HTMLElement, dir: 'next' | 'previous'): HTMLElement | null => {\n const sibling = element[dir === 'next' ? 'nextElementSibling' : 'previousElementSibling'] as HTMLElement | null;\n\n if (!sibling) return null;\n\n if (!sibling.matches(TAB_SELECTOR) || sibling.hasAttribute('data-disabled')) return findAdjacentTab(sibling, dir);\n\n return sibling;\n };\n\n const findBoundaryTab = (boundary: 'first' | 'last', currentTab: HTMLElement): HTMLElement | null => {\n const container = currentTab.parentElement;\n\n if (!container) return null;\n\n const tabs = container.querySelectorAll<HTMLElement>(ENABLED_TAB_SELECTOR);\n\n if (tabs.length === 0) return null;\n\n return boundary === 'first' ? tabs[0] : tabs[tabs.length - 1];\n };\n\n if (!tabElement) return;\n\n let targetTab: HTMLElement | null = null;\n\n switch (direction) {\n case 'next':\n targetTab = findAdjacentTab(tabElement, 'next') ?? findBoundaryTab('first', tabElement);\n break;\n\n case 'previous':\n targetTab = findAdjacentTab(tabElement, 'previous') ?? findBoundaryTab('last', tabElement);\n break;\n\n case 'first':\n targetTab = findBoundaryTab('first', tabElement);\n break;\n\n case 'last':\n targetTab = findBoundaryTab('last', tabElement);\n break;\n }\n\n if (targetTab) {\n focus(targetTab);\n }\n };\n\n const onTabKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, value: undefined | string | number) => {\n switch (event.code) {\n case 'ArrowRight':\n focusTab(event.currentTarget, 'next');\n break;\n\n case 'ArrowLeft':\n focusTab(event.currentTarget, 'previous');\n break;\n\n case 'Home':\n focusTab(event.currentTarget, 'first');\n break;\n\n case 'End':\n focusTab(event.currentTarget, 'last');\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n updateValue(value);\n break;\n\n case 'Tab':\n return;\n\n default:\n break;\n }\n\n event.preventDefault();\n };\n\n const onTabClick = (event: React.MouseEvent<HTMLButtonElement>, value: undefined | string | number) => {\n if (!props.selectOnFocus) {\n updateValue(value);\n }\n };\n\n const onTabFocus = (event: React.FocusEvent<HTMLButtonElement>, value: undefined | string | number) => {\n if (props.selectOnFocus) {\n updateValue(value);\n }\n };\n\n const scrollToActiveTab = () => {\n const content = contentRef.current;\n const tab = activeTabRef.current;\n\n if (!content || !tab || props.scrollStrategy === false) return;\n\n if (typeof props.scrollStrategy === 'function') {\n props.scrollStrategy(content, tab);\n\n return;\n }\n\n const contentWidth = content.clientWidth;\n const currentScrollLeft = Math.abs(content.scrollLeft);\n const tabLeft = tab.offsetLeft;\n const tabWidth = tab.offsetWidth;\n const tabRight = tabLeft + tabWidth;\n\n let targetScrollLeft: number;\n\n if (props.scrollStrategy === 'center') {\n targetScrollLeft = tabLeft - (contentWidth - tabWidth) / 2;\n } else {\n // nearest\n const padding = contentWidth * 0.1;\n\n if (tabLeft < currentScrollLeft + padding) {\n targetScrollLeft = tabLeft - padding;\n } else if (tabRight > currentScrollLeft + contentWidth - padding) {\n targetScrollLeft = tabRight - contentWidth + padding;\n } else {\n return;\n }\n }\n\n const maxScrollLeft = content.scrollWidth - contentWidth;\n const clampedScrollLeft = Math.max(0, Math.min(targetScrollLeft, maxScrollLeft));\n\n content.scrollTo({ left: isRTL(content) ? -clampedScrollLeft : clampedScrollLeft, behavior: 'smooth' });\n };\n\n // effects\n React.useEffect(() => {\n const raf = requestAnimationFrame(() => {\n updateActiveBar();\n scrollToActiveTab();\n });\n\n return () => cancelAnimationFrame(raf);\n }, [activeTabState]);\n\n // observers\n React.useEffect(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n let raf = 0;\n\n const onResize = () => {\n updateScrollState();\n updateActiveBar();\n };\n\n const mo = new MutationObserver(() => {\n cancelAnimationFrame(raf);\n raf = requestAnimationFrame(onResize);\n });\n\n mo.observe(content, { childList: true, subtree: true });\n\n updateScrollState();\n\n const ro = new ResizeObserver(onResize);\n\n ro.observe(content);\n\n window.addEventListener('resize', onResize);\n\n return () => {\n cancelAnimationFrame(raf);\n mo.disconnect();\n ro.disconnect();\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n const onContentScroll = () => {\n updateScrollState();\n };\n\n const getVisibleButtonWidths = () => {\n const [prevButton, nextButton] = [prevButtonRef.current, nextButtonRef.current];\n let width = 0;\n\n if (prevButton && nextButton) {\n width = (prevButton?.offsetWidth || 0) + (nextButton?.offsetWidth || 0);\n }\n\n return width;\n };\n\n const updateScrollState = () => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const { scrollWidth, clientWidth } = content;\n const scrollLeft = Math.abs(content.scrollLeft);\n\n setCanScrollPrev(scrollLeft > 1);\n setCanScrollNext(scrollWidth - clientWidth - scrollLeft > 1);\n };\n\n const scrollPrev = () => {\n const content = contentRef.current;\n\n if (!content) return;\n\n const buttonWidths = getVisibleButtonWidths();\n const width = content.clientWidth - buttonWidths;\n const currentScrollLeft = Math.abs(content.scrollLeft);\n const scrollStep = width * 0.8;\n const targetScrollLeft = currentScrollLeft - scrollStep;\n const scrollLeft = Math.max(targetScrollLeft, 0);\n\n content.scrollLeft = isRTL(content) ? -1 * scrollLeft : scrollLeft;\n };\n\n const scrollNext = () => {\n const content = contentRef.current;\n\n if (!content) return;\n\n const buttonWidths = getVisibleButtonWidths();\n const width = content.clientWidth - buttonWidths;\n const currentScrollLeft = Math.abs(content.scrollLeft);\n const scrollStep = width * 0.8;\n const targetScrollLeft = currentScrollLeft + scrollStep;\n const maxScrollLeft = content.scrollWidth - width;\n const scrollLeft = Math.min(targetScrollLeft, maxScrollLeft);\n\n content.scrollLeft = isRTL(content) ? -1 * scrollLeft : scrollLeft;\n };\n\n const scrollStateAttrs = React.useMemo(\n () => ({\n ...(canScrollPrev && { 'data-can-scroll-prev': '' as const }),\n ...(canScrollNext && { 'data-can-scroll-next': '' as const })\n }),\n [canScrollPrev, canScrollNext]\n );\n\n // prop getters\n const contentProps = React.useMemo(\n () => ({\n onScroll: onContentScroll,\n ...(canScrollPrev && { 'data-can-scroll-prev': '' as const }),\n ...(canScrollNext && { 'data-can-scroll-next': '' as const })\n }),\n [onContentScroll, canScrollPrev, canScrollNext]\n );\n\n const getTabProps = (value: string | number | undefined, disabled?: boolean) => {\n const active = isItemActive(value);\n\n return {\n role: 'tab' as const,\n tabIndex: active ? (props.tabIndex ?? 0) : -1,\n ref: active ? (activeTabRef as React.RefObject<HTMLButtonElement>) : undefined,\n disabled,\n 'aria-selected': active,\n 'aria-disabled': disabled,\n 'aria-controls': `${id}_tabpanel_${value}`,\n ...(active && { 'data-active': '' as const }),\n ...(disabled && { 'data-disabled': '' as const }),\n ...scrollStateAttrs,\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => onTabClick(event, value),\n onFocus: (event: React.FocusEvent<HTMLButtonElement>) => onTabFocus(event, value),\n onKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>) => onTabKeyDown(event, value)\n };\n };\n\n const getIndicatorProps = () => {\n return {\n ref: activeBarRef as React.RefObject<HTMLSpanElement>,\n style: {\n '--px-active-bar-width': activeBarRef.current?.offsetWidth + 'px',\n '--px-active-bar-height': activeBarRef.current?.offsetHeight + 'px',\n '--px-active-bar-left': activeBarRef.current?.offsetLeft + 'px',\n '--px-active-bar-top': activeBarRef.current?.offsetTop + 'px'\n } as React.CSSProperties\n };\n };\n\n return {\n state,\n // methods\n updateValue,\n isItemActive,\n focusTab,\n onTabKeyDown,\n onTabClick,\n onTabFocus,\n // prop getters\n getTabProps,\n getIndicatorProps,\n // scroll\n scrollPrev,\n scrollNext,\n updateScrollState,\n onContentScroll,\n scrollStateAttrs,\n contentProps,\n contentRef,\n prevButtonRef,\n nextButtonRef,\n activeBarRef,\n activeTabRef,\n updateActiveBar\n };\n }\n});\n","import type { UseTabsProps } from '@primereact/types/headless/tabs';\n\nexport const defaultProps: UseTabsProps = {\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined,\n selectOnFocus: false,\n scrollStrategy: 'nearest',\n tabIndex: 0\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,OAAoB,4BAC7B,OAAS,sBAAAC,OAA0B,yCACnC,OAAS,SAAAC,GAAO,SAAAC,MAAa,kBAC7B,UAAYC,MAAW,QCDhB,IAAMC,EAA6B,CACtC,MAAO,OACP,aAAc,OACd,cAAe,OACf,cAAe,GACf,eAAgB,UAChB,SAAU,CACd,EDHO,IAAMC,GAAUC,GAAa,CAChC,KAAM,UACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,EAAO,GAAAC,CAAG,IAAM,CACtB,GAAM,CAACC,EAAgBC,CAAiB,EAAIC,GAAmB,CAC3D,MAAOJ,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EACK,CAACK,EAAeC,CAAgB,EAAU,WAAkB,EAAK,EACjE,CAACC,EAAeC,CAAgB,EAAU,WAAkB,EAAK,EAEjEC,EAAmB,SAAuB,IAAI,EAC9CC,EAAsB,SAA0B,IAAI,EACpDC,EAAsB,SAA0B,IAAI,EACpDC,EAAqB,SAAoB,IAAI,EAC7CC,EAAqB,SAAoB,IAAI,EAE7CC,EAAQ,CACV,UAAWZ,EACX,cAAAG,EACA,cAAAE,CACJ,EAGMQ,EAAeC,GAAuC,CACpDd,IAAmBc,GACnBb,EAAkB,CAACa,EAAO,CAAE,MAAAA,CAAM,CAAC,CAAC,CAE5C,EAEMC,EAAgBC,GACdA,GAAQ,KAAkC,GAEvChB,IAAmBgB,EAGxBC,EAAkB,IAAM,CAC1B,IAAMC,EAAMR,EAAa,QACnBS,EAAMR,EAAa,QAErB,CAACO,GAAO,CAACC,IAEbD,EAAI,MAAM,YAAY,wBAAyBC,EAAI,YAAc,IAAI,EACrED,EAAI,MAAM,YAAY,yBAA0BC,EAAI,aAAe,IAAI,EACvED,EAAI,MAAM,YAAY,uBAAwBC,EAAI,WAAa,IAAI,EACnED,EAAI,MAAM,YAAY,sBAAuBC,EAAI,UAAY,IAAI,EACrE,EAEMC,EAAW,CAACC,EAAgCC,IAA4D,CAvDtH,IAAAC,EAAAC,EAwDY,IAAMC,EAAe,eACfC,EAAuB,oCAEvBC,EAAkB,CAACC,EAAsBC,IAAiD,CAC5F,IAAMC,EAAUF,EAAQC,IAAQ,OAAS,qBAAuB,wBAAwB,EAExF,OAAKC,EAED,CAACA,EAAQ,QAAQL,CAAY,GAAKK,EAAQ,aAAa,eAAe,EAAUH,EAAgBG,EAASD,CAAG,EAEzGC,EAJc,IAKzB,EAEMC,EAAkB,CAACC,EAA4BC,IAAgD,CACjG,IAAMC,EAAYD,EAAW,cAE7B,GAAI,CAACC,EAAW,OAAO,KAEvB,IAAMC,EAAOD,EAAU,iBAA8BR,CAAoB,EAEzE,OAAIS,EAAK,SAAW,EAAU,KAEvBH,IAAa,QAAUG,EAAK,CAAC,EAAIA,EAAKA,EAAK,OAAS,CAAC,CAChE,EAEA,GAAI,CAACd,EAAY,OAEjB,IAAIe,EAAgC,KAEpC,OAAQd,EAAW,CACf,IAAK,OACDc,GAAYb,EAAAI,EAAgBN,EAAY,MAAM,IAAlC,KAAAE,EAAuCQ,EAAgB,QAASV,CAAU,EACtF,MAEJ,IAAK,WACDe,GAAYZ,EAAAG,EAAgBN,EAAY,UAAU,IAAtC,KAAAG,EAA2CO,EAAgB,OAAQV,CAAU,EACzF,MAEJ,IAAK,QACDe,EAAYL,EAAgB,QAASV,CAAU,EAC/C,MAEJ,IAAK,OACDe,EAAYL,EAAgB,OAAQV,CAAU,EAC9C,KACR,CAEIe,GACAC,GAAMD,CAAS,CAEvB,EAEME,EAAe,CAACC,EAA+CzB,IAAuC,CACxG,OAAQyB,EAAM,KAAM,CAChB,IAAK,aACDnB,EAASmB,EAAM,cAAe,MAAM,EACpC,MAEJ,IAAK,YACDnB,EAASmB,EAAM,cAAe,UAAU,EACxC,MAEJ,IAAK,OACDnB,EAASmB,EAAM,cAAe,OAAO,EACrC,MAEJ,IAAK,MACDnB,EAASmB,EAAM,cAAe,MAAM,EACpC,MAEJ,IAAK,QACL,IAAK,cACL,IAAK,QACD1B,EAAYC,CAAK,EACjB,MAEJ,IAAK,MACD,OAEJ,QACI,KACR,CAEAyB,EAAM,eAAe,CACzB,EAEMC,EAAa,CAACD,EAA4CzB,IAAuC,CAC9FhB,EAAM,eACPe,EAAYC,CAAK,CAEzB,EAEM2B,EAAa,CAACF,EAA4CzB,IAAuC,CAC/FhB,EAAM,eACNe,EAAYC,CAAK,CAEzB,EAEM4B,EAAoB,IAAM,CAC5B,IAAMC,EAAUpC,EAAW,QACrBY,EAAMR,EAAa,QAEzB,GAAI,CAACgC,GAAW,CAACxB,GAAOrB,EAAM,iBAAmB,GAAO,OAExD,GAAI,OAAOA,EAAM,gBAAmB,WAAY,CAC5CA,EAAM,eAAe6C,EAASxB,CAAG,EAEjC,MACJ,CAEA,IAAMyB,EAAeD,EAAQ,YACvBE,EAAoB,KAAK,IAAIF,EAAQ,UAAU,EAC/CG,EAAU3B,EAAI,WACd4B,EAAW5B,EAAI,YACf6B,EAAWF,EAAUC,EAEvBE,EAEJ,GAAInD,EAAM,iBAAmB,SACzBmD,EAAmBH,GAAWF,EAAeG,GAAY,MACtD,CAEH,IAAMG,EAAUN,EAAe,GAE/B,GAAIE,EAAUD,EAAoBK,EAC9BD,EAAmBH,EAAUI,UACtBF,EAAWH,EAAoBD,EAAeM,EACrDD,EAAmBD,EAAWJ,EAAeM,MAE7C,OAER,CAEA,IAAMC,EAAgBR,EAAQ,YAAcC,EACtCQ,EAAoB,KAAK,IAAI,EAAG,KAAK,IAAIH,EAAkBE,CAAa,CAAC,EAE/ER,EAAQ,SAAS,CAAE,KAAMU,EAAMV,CAAO,EAAI,CAACS,EAAoBA,EAAmB,SAAU,QAAS,CAAC,CAC1G,EAGM,YAAU,IAAM,CAClB,IAAME,EAAM,sBAAsB,IAAM,CACpCrC,EAAgB,EAChByB,EAAkB,CACtB,CAAC,EAED,MAAO,IAAM,qBAAqBY,CAAG,CACzC,EAAG,CAACtD,CAAc,CAAC,EAGb,YAAU,IAAM,CAClB,GAAI,CAACO,EAAW,QAAS,OAEzB,IAAMoC,EAAUpC,EAAW,QACvB+C,EAAM,EAEJC,EAAW,IAAM,CACnBC,EAAkB,EAClBvC,EAAgB,CACpB,EAEMwC,EAAK,IAAI,iBAAiB,IAAM,CAClC,qBAAqBH,CAAG,EACxBA,EAAM,sBAAsBC,CAAQ,CACxC,CAAC,EAEDE,EAAG,QAAQd,EAAS,CAAE,UAAW,GAAM,QAAS,EAAK,CAAC,EAEtDa,EAAkB,EAElB,IAAME,EAAK,IAAI,eAAeH,CAAQ,EAEtC,OAAAG,EAAG,QAAQf,CAAO,EAElB,OAAO,iBAAiB,SAAUY,CAAQ,EAEnC,IAAM,CACT,qBAAqBD,CAAG,EACxBG,EAAG,WAAW,EACdC,EAAG,WAAW,EACd,OAAO,oBAAoB,SAAUH,CAAQ,CACjD,CACJ,EAAG,CAAC,CAAC,EAEL,IAAMI,EAAkB,IAAM,CAC1BH,EAAkB,CACtB,EAEMI,EAAyB,IAAM,CACjC,GAAM,CAACC,EAAYC,CAAU,EAAI,CAACtD,EAAc,QAASC,EAAc,OAAO,EAC1EsD,EAAQ,EAEZ,OAAIF,GAAcC,IACdC,IAASF,GAAA,YAAAA,EAAY,cAAe,KAAMC,GAAA,YAAAA,EAAY,cAAe,IAGlEC,CACX,EAEMP,EAAoB,IAAM,CAC5B,GAAI,CAACjD,EAAW,QAAS,OAEzB,IAAMoC,EAAUpC,EAAW,QACrB,CAAE,YAAAyD,EAAa,YAAAC,CAAY,EAAItB,EAC/BuB,EAAa,KAAK,IAAIvB,EAAQ,UAAU,EAE9CvC,EAAiB8D,EAAa,CAAC,EAC/B5D,EAAiB0D,EAAcC,EAAcC,EAAa,CAAC,CAC/D,EAEMC,EAAa,IAAM,CACrB,IAAMxB,EAAUpC,EAAW,QAE3B,GAAI,CAACoC,EAAS,OAEd,IAAMyB,EAAeR,EAAuB,EACtCG,EAAQpB,EAAQ,YAAcyB,EAC9BvB,EAAoB,KAAK,IAAIF,EAAQ,UAAU,EAC/C0B,EAAaN,EAAQ,GACrBd,EAAmBJ,EAAoBwB,EACvCH,EAAa,KAAK,IAAIjB,EAAkB,CAAC,EAE/CN,EAAQ,WAAaU,EAAMV,CAAO,EAAI,GAAKuB,EAAaA,CAC5D,EAEMI,EAAa,IAAM,CACrB,IAAM3B,EAAUpC,EAAW,QAE3B,GAAI,CAACoC,EAAS,OAEd,IAAMyB,EAAeR,EAAuB,EACtCG,EAAQpB,EAAQ,YAAcyB,EAC9BvB,EAAoB,KAAK,IAAIF,EAAQ,UAAU,EAC/C0B,EAAaN,EAAQ,GACrBd,EAAmBJ,EAAoBwB,EACvClB,EAAgBR,EAAQ,YAAcoB,EACtCG,EAAa,KAAK,IAAIjB,EAAkBE,CAAa,EAE3DR,EAAQ,WAAaU,EAAMV,CAAO,EAAI,GAAKuB,EAAaA,CAC5D,EAEMK,EAAyB,UAC3B,IAAOC,IAAA,GACCrE,GAAiB,CAAE,uBAAwB,EAAY,GACvDE,GAAiB,CAAE,uBAAwB,EAAY,GAE/D,CAACF,EAAeE,CAAa,CACjC,EAGMoE,EAAqB,UACvB,IAAOD,IAAA,CACH,SAAUb,GACNxD,GAAiB,CAAE,uBAAwB,EAAY,GACvDE,GAAiB,CAAE,uBAAwB,EAAY,GAE/D,CAACsD,EAAiBxD,EAAeE,CAAa,CAClD,EAkCA,MAAO,CACH,MAAAO,EAEA,YAAAC,EACA,aAAAE,EACA,SAAAK,EACA,aAAAkB,EACA,WAAAE,EACA,WAAAC,EAEA,YA1CgB,CAAC3B,EAAoC4D,IAAuB,CA3TxF,IAAAnD,EA4TY,IAAMoD,EAAS5D,EAAaD,CAAK,EAEjC,OAAO8D,EAAAJ,MAAA,CACH,KAAM,MACN,SAAUG,GAAUpD,EAAAzB,EAAM,WAAN,KAAAyB,EAAkB,EAAK,GAC3C,IAAKoD,EAAUhE,EAAsD,OACrE,SAAA+D,EACA,gBAAiBC,EACjB,gBAAiBD,EACjB,gBAAiB,GAAG3E,CAAE,aAAae,CAAK,IACpC6D,GAAU,CAAE,cAAe,EAAY,GACvCD,GAAY,CAAE,gBAAiB,EAAY,GAC5CH,GAVA,CAWH,QAAUhC,GAA+CC,EAAWD,EAAOzB,CAAK,EAChF,QAAUyB,GAA+CE,EAAWF,EAAOzB,CAAK,EAChF,UAAYyB,GAAkDD,EAAaC,EAAOzB,CAAK,CAC3F,EACJ,EAyBI,kBAvBsB,IAAM,CA/UxC,IAAAS,EAAAC,EAAAqD,EAAAC,EAgVY,MAAO,CACH,IAAKpE,EACL,MAAO,CACH,0BAAyBa,EAAAb,EAAa,UAAb,YAAAa,EAAsB,aAAc,KAC7D,2BAA0BC,EAAAd,EAAa,UAAb,YAAAc,EAAsB,cAAe,KAC/D,yBAAwBqD,EAAAnE,EAAa,UAAb,YAAAmE,EAAsB,YAAa,KAC3D,wBAAuBC,EAAApE,EAAa,UAAb,YAAAoE,EAAsB,WAAY,IAC7D,CACJ,CACJ,EAeI,WAAAX,EACA,WAAAG,EACA,kBAAAd,EACA,gBAAAG,EACA,iBAAAY,EACA,aAAAE,EACA,WAAAlE,EACA,cAAAC,EACA,cAAAC,EACA,aAAAC,EACA,aAAAC,EACA,gBAAAM,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","focus","isRTL","React","defaultProps","useTabs","withHeadless","defaultProps","props","id","activeTabState","setActiveTabState","useControlledState","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","contentRef","prevButtonRef","nextButtonRef","activeBarRef","activeTabRef","state","updateValue","value","isItemActive","key","updateActiveBar","bar","tab","focusTab","tabElement","direction","_a","_b","TAB_SELECTOR","ENABLED_TAB_SELECTOR","findAdjacentTab","element","dir","sibling","findBoundaryTab","boundary","currentTab","container","tabs","targetTab","focus","onTabKeyDown","event","onTabClick","onTabFocus","scrollToActiveTab","content","contentWidth","currentScrollLeft","tabLeft","tabWidth","tabRight","targetScrollLeft","padding","maxScrollLeft","clampedScrollLeft","isRTL","raf","onResize","updateScrollState","mo","ro","onContentScroll","getVisibleButtonWidths","prevButton","nextButton","width","scrollWidth","clientWidth","scrollLeft","scrollPrev","buttonWidths","scrollStep","scrollNext","scrollStateAttrs","__spreadValues","contentProps","disabled","active","__spreadProps","_c","_d"]}
File without changes
package/tag/index.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/tag/useTag.ts","../../src/tag/useTag.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useTag.props';\n\nexport const useTag = withHeadless({\n name: 'useTag',\n defaultProps,\n setup() {\n // prop getters\n const rootProps = {\n 'data-scope': 'tag',\n 'data-part': 'root'\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseTagProps } from '@primereact/types/headless/tag';\n\nexport const defaultProps: UseTagProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAA4B,CAAC,EDCnC,IAAMC,EAASC,EAAa,CAC/B,KAAM,SACN,aAAAC,EACA,OAAQ,CAOJ,MAAO,CACH,UANc,CACd,aAAc,MACd,YAAa,MACjB,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useTag","withHeadless","defaultProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/terminal/useTerminal.ts","../../src/terminal/useTerminal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { TerminalCommandItem, TerminalResponse } from '@primereact/types/headless/terminal';\nimport { focus } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useTerminal.props';\n\nexport const useTerminal = withHeadless({\n name: 'useTerminal',\n defaultProps,\n setup({ props, elementRef }) {\n const [commandTextState, setCommandTextState] = React.useState<string>('');\n const [commandsState, setCommandsState] = React.useState<TerminalCommandItem[]>([]);\n const [indexState, setIndexState] = React.useState<number>(0);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const state = {\n commandText: commandTextState,\n commands: commandsState\n };\n\n const clear = React.useCallback(() => {\n setCommandsState([]);\n setIndexState(0);\n }, []);\n\n const handleResponse = React.useCallback(\n (response: TerminalResponse) => {\n if (response === null) {\n clear();\n } else if (response !== undefined) {\n setCommandsState((prev) => {\n if (prev.length === 0) return prev;\n\n const commands = [...prev];\n\n commands[commands.length - 1].response = response;\n\n return commands;\n });\n }\n },\n [clear]\n );\n\n const executeCommand = React.useCallback(\n async (text: string) => {\n if (!props.onCommand) return;\n\n const result = props.onCommand(text);\n\n if (result instanceof Promise) {\n const response = await result;\n\n handleResponse(response);\n } else {\n handleResponse(result);\n }\n },\n [props.onCommand, handleResponse]\n );\n\n React.useEffect(() => {\n if (elementRef.current) {\n elementRef.current.scrollTop = elementRef.current.scrollHeight;\n }\n });\n\n const onClick = () => {\n if (inputRef.current) {\n focus(inputRef.current);\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case 'ArrowUp':\n if (commandsState && commandsState.length) {\n const prevIndex = indexState - 1 < 0 ? commandsState.length - 1 : indexState - 1;\n const command = commandsState[prevIndex];\n\n setIndexState(prevIndex);\n setCommandTextState(command.text);\n }\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n if (commandTextState) {\n const newCommands = [...commandsState];\n\n newCommands.push({ text: commandTextState });\n\n setIndexState((prevIndex) => prevIndex + 1);\n setCommandTextState('');\n setCommandsState(newCommands);\n executeCommand(commandTextState);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setCommandTextState(e.target.value);\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'terminal' as const,\n 'data-part': 'root' as const,\n onClick\n };\n\n const promptValueProps = {\n ref: inputRef,\n 'data-scope': 'terminal' as const,\n 'data-part': 'promptvalue' as const,\n value: commandTextState,\n type: 'text' as const,\n autoComplete: 'off' as const,\n onChange: onInputChange,\n onKeyDown\n };\n\n const commandResponseProps = {\n 'data-scope': 'terminal' as const,\n 'data-part': 'commandresponse' as const,\n 'aria-live': 'polite' as const\n };\n\n return {\n state,\n inputRef,\n // prop getters\n rootProps,\n promptValueProps,\n commandResponseProps,\n // handlers\n onClick,\n onKeyDown,\n onInputChange,\n clear\n };\n }\n});\n","import type { UseTerminalProps } from '@primereact/types/headless/terminal';\n\nexport const defaultProps: UseTerminalProps = {\n prompt: undefined,\n onCommand: undefined\n};\n"],"mappings":"6MAAA,OAAS,gBAAAA,MAAoB,4BAE7B,OAAS,SAAAC,MAAa,kBACtB,UAAYC,MAAW,QCDhB,IAAMC,EAAiC,CAC1C,OAAQ,OACR,UAAW,MACf,EDCO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,WAAAC,CAAW,EAAG,CACzB,GAAM,CAACC,EAAkBC,CAAmB,EAAU,WAAiB,EAAE,EACnE,CAACC,EAAeC,CAAgB,EAAU,WAAgC,CAAC,CAAC,EAC5E,CAACC,EAAYC,CAAa,EAAU,WAAiB,CAAC,EACtDC,EAAiB,SAAyB,IAAI,EAE9CC,EAAQ,CACV,YAAaP,EACb,SAAUE,CACd,EAEMM,EAAc,cAAY,IAAM,CAClCL,EAAiB,CAAC,CAAC,EACnBE,EAAc,CAAC,CACnB,EAAG,CAAC,CAAC,EAECI,EAAuB,cACxBC,GAA+B,CACxBA,IAAa,KACbF,EAAM,EACCE,IAAa,QACpBP,EAAkBQ,GAAS,CACvB,GAAIA,EAAK,SAAW,EAAG,OAAOA,EAE9B,IAAMC,EAAW,CAAC,GAAGD,CAAI,EAEzB,OAAAC,EAASA,EAAS,OAAS,CAAC,EAAE,SAAWF,EAElCE,CACX,CAAC,CAET,EACA,CAACJ,CAAK,CACV,EAEMK,EAAuB,cAClBC,GAAiBC,EAAA,sBACpB,GAAI,CAACjB,EAAM,UAAW,OAEtB,IAAMkB,EAASlB,EAAM,UAAUgB,CAAI,EAEnC,GAAIE,aAAkB,QAAS,CAC3B,IAAMN,EAAW,MAAMM,EAEvBP,EAAeC,CAAQ,CAC3B,MACID,EAAeO,CAAM,CAE7B,GACA,CAAClB,EAAM,UAAWW,CAAc,CACpC,EAEM,YAAU,IAAM,CACdV,EAAW,UACXA,EAAW,QAAQ,UAAYA,EAAW,QAAQ,aAE1D,CAAC,EAED,IAAMkB,EAAU,IAAM,CACdX,EAAS,SACTY,EAAMZ,EAAS,OAAO,CAE9B,EAEMa,EAAaC,GAAiD,CAChE,OAAQA,EAAM,KAAM,CAChB,IAAK,UACD,GAAIlB,GAAiBA,EAAc,OAAQ,CACvC,IAAMmB,EAAYjB,EAAa,EAAI,EAAIF,EAAc,OAAS,EAAIE,EAAa,EACzEkB,EAAUpB,EAAcmB,CAAS,EAEvChB,EAAcgB,CAAS,EACvBpB,EAAoBqB,EAAQ,IAAI,CACpC,CAEA,MAEJ,IAAK,QACL,IAAK,cACD,GAAItB,EAAkB,CAClB,IAAMuB,EAAc,CAAC,GAAGrB,CAAa,EAErCqB,EAAY,KAAK,CAAE,KAAMvB,CAAiB,CAAC,EAE3CK,EAAegB,GAAcA,EAAY,CAAC,EAC1CpB,EAAoB,EAAE,EACtBE,EAAiBoB,CAAW,EAC5BV,EAAeb,CAAgB,CACnC,CAEA,MAEJ,QACI,KACR,CACJ,EAEMwB,EAAiBC,GAA2C,CAC9DxB,EAAoBwB,EAAE,OAAO,KAAK,CACtC,EA0BA,MAAO,CACH,MAAAlB,EACA,SAAAD,EAEA,UA3Bc,CACd,aAAc,WACd,YAAa,OACb,QAAAW,CACJ,EAwBI,iBAtBqB,CACrB,IAAKX,EACL,aAAc,WACd,YAAa,cACb,MAAON,EACP,KAAM,OACN,aAAc,MACd,SAAUwB,EACV,UAAAL,CACJ,EAcI,qBAZyB,CACzB,aAAc,WACd,YAAa,kBACb,YAAa,QACjB,EAUI,QAAAF,EACA,UAAAE,EACA,cAAAK,EACA,MAAAhB,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","focus","React","defaultProps","useTerminal","withHeadless","defaultProps","props","elementRef","commandTextState","setCommandTextState","commandsState","setCommandsState","indexState","setIndexState","inputRef","state","clear","handleResponse","response","prev","commands","executeCommand","text","__async","result","onClick","focus","onKeyDown","event","prevIndex","command","newCommands","onInputChange","e"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/textarea/useTextarea.ts","../../src/textarea/useTextarea.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { isCssSupported } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useTextarea.props';\n\nexport const useTextarea = withHeadless({\n name: 'useTextarea',\n defaultProps,\n setup({ props }) {\n const isFieldSizingSupported = React.useMemo(() => isCssSupported('field-sizing', 'content'), []);\n\n const resize = React.useCallback(\n (element: HTMLTextAreaElement) => {\n if (!element || !element.offsetParent) return;\n\n if (isFieldSizingSupported) {\n if (!element.style.minHeight) {\n element.style.minHeight = element.offsetHeight + 'px';\n }\n\n if (!element.style.width) {\n element.style.width = element.offsetWidth + 'px';\n }\n\n // Set field-sizing to content to enable automatic height adjustment\n (element.style as unknown as { fieldSizing: string }).fieldSizing = 'content';\n } else {\n // Fallback: JavaScript-based resize\n const computedStyle = window.getComputedStyle(element);\n const maxHeight = parseFloat(computedStyle.maxHeight) || Infinity;\n\n element.style.height = 'auto';\n\n const scrollHeight = element.scrollHeight;\n\n if (scrollHeight >= maxHeight) {\n element.style.overflowY = 'scroll';\n element.style.height = maxHeight + 'px';\n } else {\n element.style.overflowY = 'hidden';\n element.style.height = scrollHeight + 'px';\n }\n }\n },\n [isFieldSizingSupported]\n );\n\n const onInput = React.useCallback(\n (event: React.FormEvent<HTMLTextAreaElement>) => {\n if (props.autoResize) {\n resize(event.currentTarget);\n }\n },\n [props.autoResize, resize]\n );\n\n // prop getters\n const rootProps = {\n 'data-scope': 'textarea',\n 'data-part': 'root',\n 'aria-invalid': !!props.invalid || undefined,\n ...(props.invalid ? { 'data-invalid': '' } : undefined),\n onInput\n };\n\n return {\n // prop getters\n rootProps\n };\n }\n});\n","import type { UseTextareaProps } from '@primereact/types/headless/textarea';\n\nexport const defaultProps: UseTextareaProps = {\n autoResize: undefined\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,kBAAAC,MAAsB,kBAC/B,UAAYC,MAAW,QCAhB,IAAMC,EAAiC,CAC1C,WAAY,MAChB,EDCO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,IAAMC,EAA+B,UAAQ,IAAMC,EAAe,eAAgB,SAAS,EAAG,CAAC,CAAC,EAE1FC,EAAe,cAChBC,GAAiC,CAC9B,GAAI,GAACA,GAAW,CAACA,EAAQ,cAEzB,GAAIH,EACKG,EAAQ,MAAM,YACfA,EAAQ,MAAM,UAAYA,EAAQ,aAAe,MAGhDA,EAAQ,MAAM,QACfA,EAAQ,MAAM,MAAQA,EAAQ,YAAc,MAI/CA,EAAQ,MAA6C,YAAc,cACjE,CAEH,IAAMC,EAAgB,OAAO,iBAAiBD,CAAO,EAC/CE,EAAY,WAAWD,EAAc,SAAS,GAAK,IAEzDD,EAAQ,MAAM,OAAS,OAEvB,IAAMG,EAAeH,EAAQ,aAEzBG,GAAgBD,GAChBF,EAAQ,MAAM,UAAY,SAC1BA,EAAQ,MAAM,OAASE,EAAY,OAEnCF,EAAQ,MAAM,UAAY,SAC1BA,EAAQ,MAAM,OAASG,EAAe,KAE9C,CACJ,EACA,CAACN,CAAsB,CAC3B,EAEMO,EAAgB,cACjBC,GAAgD,CACzCT,EAAM,YACNG,EAAOM,EAAM,aAAa,CAElC,EACA,CAACT,EAAM,WAAYG,CAAM,CAC7B,EAWA,MAAO,CAEH,UAVcO,EAAAC,EAAA,CACd,aAAc,WACd,YAAa,OACb,eAAgB,CAAC,CAACX,EAAM,SAAW,QAC/BA,EAAM,QAAU,CAAE,eAAgB,EAAG,EAAI,QAJ/B,CAKd,QAAAQ,CACJ,EAKA,CACJ,CACJ,CAAC","names":["withHeadless","isCssSupported","React","defaultProps","useTextarea","withHeadless","defaultProps","props","isFieldSizingSupported","isCssSupported","resize","element","computedStyle","maxHeight","scrollHeight","onInput","event","__spreadProps","__spreadValues"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/timeline/useTimeline.ts","../../src/timeline/useTimeline.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useTimeline.props';\n\nexport const useTimeline = withHeadless({\n name: 'useTimeline',\n defaultProps,\n setup({ props }) {\n // prop getters\n const rootProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'root' as const,\n 'data-align': props.align,\n 'data-orientation': props.orientation\n };\n\n const eventProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'event' as const,\n 'data-align': props.align,\n 'data-orientation': props.orientation\n };\n\n const separatorProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'separator' as const,\n 'data-orientation': props.orientation\n };\n\n const markerProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'marker' as const,\n 'data-orientation': props.orientation\n };\n\n const connectorProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'connector' as const,\n 'data-orientation': props.orientation\n };\n\n const contentProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'content' as const,\n 'data-align': props.align,\n 'data-orientation': props.orientation\n };\n\n const oppositeProps = {\n 'data-scope': 'timeline' as const,\n 'data-part': 'opposite' as const,\n 'data-align': props.align,\n 'data-orientation': props.orientation\n };\n\n return {\n rootProps,\n eventProps,\n separatorProps,\n markerProps,\n connectorProps,\n contentProps,\n oppositeProps\n };\n }\n});\n","import type { UseTimelineProps } from '@primereact/types/headless/timeline';\n\nexport const defaultProps: UseTimelineProps = {\n align: 'left',\n orientation: 'vertical'\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAiC,CAC1C,MAAO,OACP,YAAa,UACjB,EDFO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAEb,IAAMC,EAAY,CACd,aAAc,WACd,YAAa,OACb,aAAcD,EAAM,MACpB,mBAAoBA,EAAM,WAC9B,EAEME,EAAa,CACf,aAAc,WACd,YAAa,QACb,aAAcF,EAAM,MACpB,mBAAoBA,EAAM,WAC9B,EAEMG,EAAiB,CACnB,aAAc,WACd,YAAa,YACb,mBAAoBH,EAAM,WAC9B,EAEMI,EAAc,CAChB,aAAc,WACd,YAAa,SACb,mBAAoBJ,EAAM,WAC9B,EAEMK,EAAiB,CACnB,aAAc,WACd,YAAa,YACb,mBAAoBL,EAAM,WAC9B,EAEMM,EAAe,CACjB,aAAc,WACd,YAAa,UACb,aAAcN,EAAM,MACpB,mBAAoBA,EAAM,WAC9B,EAEMO,EAAgB,CAClB,aAAc,WACd,YAAa,WACb,aAAcP,EAAM,MACpB,mBAAoBA,EAAM,WAC9B,EAEA,MAAO,CACH,UAAAC,EACA,WAAAC,EACA,eAAAC,EACA,YAAAC,EACA,eAAAC,EACA,aAAAC,EACA,cAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useTimeline","withHeadless","defaultProps","props","rootProps","eventProps","separatorProps","markerProps","connectorProps","contentProps","oppositeProps"]}
File without changes