@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/picklist/usePickList.ts","../../src/dnd/useDnd.ts","../../src/dnd/useDnd.props.ts","../../src/dnd/useSortableContainer.ts","../../src/dnd/useSortableContainer.props.ts","../../src/picklist/usePickList.props.ts"],"sourcesContent":["import { arrayMove } from '@primereact/core/dnd';\nimport { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { useDnd } from '../dnd/useDnd';\nimport { useSortableContainer } from '../dnd/useSortableContainer';\nimport { defaultProps } from './usePickList.props';\n\ntype ListSide = 'source' | 'target';\n\nexport const usePickList = withHeadless({\n name: 'usePickList',\n defaultProps,\n setup({ id, props }) {\n const [sourceState, setSourceState] = React.useState(props.source ?? []);\n const [targetState, setTargetState] = React.useState(props.target ?? []);\n\n React.useEffect(() => {\n if (props.source !== undefined) setSourceState(props.source);\n }, [props.source]);\n\n React.useEffect(() => {\n if (props.target !== undefined) setTargetState(props.target);\n }, [props.target]);\n\n const selection = props.selection ?? [];\n\n const isItemSelected = React.useCallback((item: unknown): boolean => selection.indexOf(item) !== -1, [selection]);\n\n const updateLists = (newSource: unknown[], newTarget: unknown[], event?: React.SyntheticEvent | Event) => {\n setSourceState(newSource);\n setTargetState(newTarget);\n props.onChange?.({ originalEvent: event, source: newSource, target: newTarget });\n };\n\n const updateListsRef = React.useRef(updateLists);\n\n updateListsRef.current = updateLists;\n\n const sourceRef = React.useRef(sourceState);\n const targetRef = React.useRef(targetState);\n\n sourceRef.current = sourceState;\n targetRef.current = targetState;\n\n const getSelectedIndices = (list: unknown[]): Set<number> => {\n const indices = new Set<number>();\n\n for (const sel of selection) {\n const idx = list.indexOf(sel);\n\n if (idx !== -1) indices.add(idx);\n }\n\n return indices;\n };\n\n const reorderUp = (side: ListSide, event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const items = side === 'source' ? [...(sourceState as unknown[])] : [...(targetState as unknown[])];\n const selectedIndices = getSelectedIndices(items);\n const sorted = [...selectedIndices].sort((a, b) => a - b);\n let moved = false;\n\n for (const idx of sorted) {\n if (idx > 0 && !selectedIndices.has(idx - 1)) {\n [items[idx], items[idx - 1]] = [items[idx - 1], items[idx]];\n selectedIndices.delete(idx);\n selectedIndices.add(idx - 1);\n moved = true;\n }\n }\n\n if (moved) {\n if (side === 'source') updateLists(items, targetState as unknown[], event);\n else updateLists(sourceState as unknown[], items, event);\n }\n };\n\n const reorderDown = (side: ListSide, event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const items = side === 'source' ? [...(sourceState as unknown[])] : [...(targetState as unknown[])];\n const selectedIndices = getSelectedIndices(items);\n const sorted = [...selectedIndices].sort((a, b) => b - a);\n let moved = false;\n\n for (const idx of sorted) {\n if (idx < items.length - 1 && !selectedIndices.has(idx + 1)) {\n [items[idx], items[idx + 1]] = [items[idx + 1], items[idx]];\n selectedIndices.delete(idx);\n selectedIndices.add(idx + 1);\n moved = true;\n }\n }\n\n if (moved) {\n if (side === 'source') updateLists(items, targetState as unknown[], event);\n else updateLists(sourceState as unknown[], items, event);\n }\n };\n\n const reorderTop = (side: ListSide, event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const items = side === 'source' ? (sourceState as unknown[]) : (targetState as unknown[]);\n const selected = items.filter((item) => isItemSelected(item));\n const rest = items.filter((item) => !isItemSelected(item));\n const newItems = [...selected, ...rest];\n\n if (side === 'source') updateLists(newItems, targetState as unknown[], event);\n else updateLists(sourceState as unknown[], newItems, event);\n };\n\n const reorderBottom = (side: ListSide, event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const items = side === 'source' ? (sourceState as unknown[]) : (targetState as unknown[]);\n const selected = items.filter((item) => isItemSelected(item));\n const rest = items.filter((item) => !isItemSelected(item));\n const newItems = [...rest, ...selected];\n\n if (side === 'source') updateLists(newItems, targetState as unknown[], event);\n else updateLists(sourceState as unknown[], newItems, event);\n };\n\n const moveToTarget = (event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const selectedFromSource = (sourceState as unknown[]).filter((item) => isItemSelected(item));\n\n if (selectedFromSource.length === 0) return;\n\n const newSource = (sourceState as unknown[]).filter((item) => !isItemSelected(item));\n const newTarget = [...(targetState as unknown[]), ...selectedFromSource];\n const newSelection = selection.filter((sel) => !selectedFromSource.includes(sel));\n\n updateLists(newSource, newTarget, event);\n props.onSelectionChange?.({ originalEvent: event, value: newSelection });\n };\n\n const moveToSource = (event?: React.SyntheticEvent) => {\n if (selection.length === 0) return;\n\n const selectedFromTarget = (targetState as unknown[]).filter((item) => isItemSelected(item));\n\n if (selectedFromTarget.length === 0) return;\n\n const newTarget = (targetState as unknown[]).filter((item) => !isItemSelected(item));\n const newSource = [...(sourceState as unknown[]), ...selectedFromTarget];\n const newSelection = selection.filter((sel) => !selectedFromTarget.includes(sel));\n\n updateLists(newSource, newTarget, event);\n props.onSelectionChange?.({ originalEvent: event, value: newSelection });\n };\n\n const moveAllToTarget = (event?: React.SyntheticEvent) => {\n const newTarget = [...(targetState as unknown[]), ...(sourceState as unknown[])];\n\n updateLists([], newTarget, event);\n props.onSelectionChange?.({ originalEvent: event, value: [] });\n };\n\n const moveAllToSource = (event?: React.SyntheticEvent) => {\n const newSource = [...(sourceState as unknown[]), ...(targetState as unknown[])];\n\n updateLists(newSource, [], event);\n props.onSelectionChange?.({ originalEvent: event, value: [] });\n };\n\n const { dnd } = useDnd({\n onSort: ({ containerId, fromIndex, toIndex }: { containerId: unknown; fromIndex: number; toIndex: number }) => {\n const side = containerId as ListSide;\n const items = side === 'source' ? sourceRef.current : targetRef.current;\n const newItems = arrayMove(items as unknown[], fromIndex, toIndex);\n\n if (side === 'source') {\n updateListsRef.current(newItems, targetRef.current as unknown[]);\n } else {\n updateListsRef.current(sourceRef.current as unknown[], newItems);\n }\n },\n onTransfer: ({ from, to }: { from: { containerId: unknown; index: number }; to: { containerId: unknown; index: number } }) => {\n const originSide = from.containerId as ListSide;\n const originItems = originSide === 'source' ? sourceRef.current : targetRef.current;\n const destItems = to.containerId === 'source' ? sourceRef.current : targetRef.current;\n const transferItem = (originItems as unknown[])[from.index];\n\n const filteredOrigin = (originItems as unknown[]).filter((_, i) => i !== from.index);\n const insertedDest = [...(destItems as unknown[])];\n\n insertedDest.splice(to.index, 0, transferItem);\n\n if (originSide === 'source') {\n updateListsRef.current(filteredOrigin, insertedDest);\n } else {\n updateListsRef.current(insertedDest, filteredOrigin);\n }\n }\n });\n\n const sourceContainer = useSortableContainer({\n dnd,\n id: 'source',\n items: sourceState,\n disabled: props.disabled || !props.draggable,\n placeholder: props.placeholder\n });\n\n const targetContainer = useSortableContainer({\n dnd,\n id: 'target',\n items: targetState,\n disabled: props.disabled || !props.draggable,\n placeholder: props.placeholder\n });\n\n const isDragging = sourceContainer.state.dragging || targetContainer.state.dragging;\n\n const getOptionProps = (item: unknown, index: number, side: ListSide) => {\n const container = side === 'source' ? sourceContainer : targetContainer;\n\n return {\n 'data-scope': 'picklist',\n 'data-part': 'option',\n ...(isItemSelected(item) ? { 'data-selected': '' } : {}),\n ...container.getItemDndProps(index)\n };\n };\n\n const sourceSelection = (sourceState as unknown[]).filter((item) => isItemSelected(item));\n const targetSelection = (targetState as unknown[]).filter((item) => isItemSelected(item));\n const hasSourceSelection = sourceSelection.length > 0;\n const hasTargetSelection = targetSelection.length > 0;\n\n const makeReorderProps = (side: ListSide, action: string, label: string, fn: (side: ListSide, e?: React.SyntheticEvent) => void, hasSelection: boolean) => ({\n 'data-scope': 'picklist',\n 'data-part': `${side}-${action}`,\n type: 'button' as const,\n disabled: props.disabled || !hasSelection,\n 'aria-label': label,\n onClick: (e: React.MouseEvent) => fn(side, e)\n });\n\n return {\n state: {\n source: sourceState as unknown[],\n target: targetState as unknown[],\n selection,\n dragging: isDragging\n },\n getOptionProps,\n moveToTarget,\n moveToSource,\n moveAllToTarget,\n moveAllToSource,\n reorderUp,\n reorderDown,\n reorderTop,\n reorderBottom,\n rootProps: { id, 'data-scope': 'picklist', 'data-part': 'root' },\n sourceListProps: { 'data-scope': 'picklist', 'data-part': 'source-list', ...sourceContainer.listProps },\n targetListProps: { 'data-scope': 'picklist', 'data-part': 'target-list', ...targetContainer.listProps },\n sourceControlsProps: { 'data-scope': 'picklist', 'data-part': 'source-controls' },\n targetControlsProps: { 'data-scope': 'picklist', 'data-part': 'target-controls' },\n moveToTargetProps: { 'data-scope': 'picklist', 'data-part': 'move-to-target', type: 'button' as const, disabled: props.disabled || !hasSourceSelection, 'aria-label': 'Move to Target', onClick: (e: React.MouseEvent) => moveToTarget(e) },\n moveAllToTargetProps: {\n 'data-scope': 'picklist',\n 'data-part': 'move-all-to-target',\n type: 'button' as const,\n disabled: props.disabled || (sourceState as unknown[]).length === 0,\n 'aria-label': 'Move All to Target',\n onClick: (e: React.MouseEvent) => moveAllToTarget(e)\n },\n moveToSourceProps: { 'data-scope': 'picklist', 'data-part': 'move-to-source', type: 'button' as const, disabled: props.disabled || !hasTargetSelection, 'aria-label': 'Move to Source', onClick: (e: React.MouseEvent) => moveToSource(e) },\n moveAllToSourceProps: {\n 'data-scope': 'picklist',\n 'data-part': 'move-all-to-source',\n type: 'button' as const,\n disabled: props.disabled || (targetState as unknown[]).length === 0,\n 'aria-label': 'Move All to Source',\n onClick: (e: React.MouseEvent) => moveAllToSource(e)\n },\n sourcePrevProps: makeReorderProps('source', 'prev', 'Move Up', reorderUp, hasSourceSelection),\n sourceNextProps: makeReorderProps('source', 'next', 'Move Down', reorderDown, hasSourceSelection),\n sourceFirstProps: makeReorderProps('source', 'first', 'Move Top', reorderTop, hasSourceSelection),\n sourceLastProps: makeReorderProps('source', 'last', 'Move Bottom', reorderBottom, hasSourceSelection),\n targetPrevProps: makeReorderProps('target', 'prev', 'Move Up', reorderUp, hasTargetSelection),\n targetNextProps: makeReorderProps('target', 'next', 'Move Down', reorderDown, hasTargetSelection),\n targetFirstProps: makeReorderProps('target', 'first', 'Move Top', reorderTop, hasTargetSelection),\n targetLastProps: makeReorderProps('target', 'last', 'Move Bottom', reorderBottom, hasTargetSelection)\n };\n }\n});\n","import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useDnd.props';\n\nexport interface DndContainerInfo {\n listRef: React.RefObject<HTMLElement | null>;\n items: unknown[];\n}\n\nexport interface DndCoordinatorState {\n dragging: boolean;\n activeContainerId: unknown | null;\n currentContainerId: unknown | null;\n fromIndex: number;\n projectedIndex: number;\n}\n\nexport interface DndCoordinator {\n uid: string;\n containers: Map<unknown, DndContainerInfo>;\n getState(): DndCoordinatorState;\n subscribe(fn: () => void): () => void;\n setState(update: Partial<DndCoordinatorState>): void;\n onSort?: (event: { containerId: unknown; fromIndex: number; toIndex: number }) => void;\n onTransfer?: (event: { from: { containerId: unknown; index: number }; to: { containerId: unknown; index: number } }) => void;\n}\n\nconst INITIAL_STATE: DndCoordinatorState = {\n dragging: false,\n activeContainerId: null,\n currentContainerId: null,\n fromIndex: -1,\n projectedIndex: -1\n};\n\nfunction createCoordinator(uid: string): DndCoordinator {\n const containers = new Map<unknown, DndContainerInfo>();\n let state: DndCoordinatorState = { ...INITIAL_STATE };\n const subscribers = new Set<() => void>();\n\n const notify = () => {\n for (const fn of subscribers) fn();\n };\n\n return {\n uid,\n containers,\n\n getState() {\n return state;\n },\n\n subscribe(fn: () => void) {\n subscribers.add(fn);\n\n return () => {\n subscribers.delete(fn);\n };\n },\n\n setState(update: Partial<DndCoordinatorState>) {\n state = { ...state, ...update };\n notify();\n },\n\n onSort: undefined,\n onTransfer: undefined\n };\n}\n\nconst NOOP_SUBSCRIBE = () => () => {};\n\nexport const useDnd = withHeadless({\n name: 'useDnd',\n defaultProps,\n setup({ props }) {\n const dndId = React.useId();\n const coordinatorRef = React.useRef<DndCoordinator | null>(null);\n\n if (!coordinatorRef.current) {\n coordinatorRef.current = createCoordinator(dndId);\n }\n\n const dnd = coordinatorRef.current;\n\n dnd.onSort = props.onSort;\n dnd.onTransfer = props.onTransfer;\n\n const subscribe = React.useCallback((fn: () => void) => dnd.subscribe(fn), [dnd]);\n const getSnapshot = React.useCallback(() => dnd.getState(), [dnd]);\n\n const dndState = React.useSyncExternalStore(dnd ? subscribe : NOOP_SUBSCRIBE, dnd ? getSnapshot : () => INITIAL_STATE, () => INITIAL_STATE);\n\n const state = {\n dragging: dndState.dragging\n };\n\n const rootProps = {\n 'data-scope': 'dnd',\n 'data-part': 'root',\n ...(state.dragging ? { 'data-dragging': '' } : undefined)\n };\n\n return {\n state,\n dnd,\n rootProps\n };\n }\n});\n","import type { UseDndProps } from '@primereact/types/headless/dnd';\n\nexport const defaultProps: UseDndProps = {\n onSort: undefined,\n onTransfer: undefined\n};\n","import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport type { DndCoordinator } from './useDnd';\nimport { defaultProps } from './useSortableContainer.props';\n\nconst getSortableItems = (listEl: HTMLElement): HTMLElement[] => Array.from(listEl.querySelectorAll(':scope > [data-sortable-item]'));\n\nexport const useSortableContainer = withHeadless({\n name: 'useSortableContainer',\n defaultProps,\n setup({ props }) {\n const dnd = props.dnd as DndCoordinator | undefined;\n const id = props.id;\n const items = props.items ?? [];\n const disabled = props.disabled ?? false;\n const placeholderMode = props.placeholder ?? 'clone';\n const onSort = props.onSort;\n const scopedListId = dnd ? `${dnd.uid}_${id}` : String(id);\n\n const listRef = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n if (!dnd || id == null) return;\n\n dnd.containers.set(id, { listRef, items });\n\n return () => {\n dnd.containers.delete(id);\n };\n }, [dnd, id]);\n\n const itemsRef = React.useRef(items);\n\n itemsRef.current = items;\n\n React.useEffect(() => {\n if (dnd && id != null) {\n const c = dnd.containers.get(id);\n\n if (c) c.items = items;\n }\n }, [dnd, id, items]);\n\n const [dragging, setDragging] = React.useState(false);\n\n const scrollRafRef = React.useRef<number>(0);\n\n const dragStateRef = React.useRef<{\n startX: number;\n startY: number;\n startScrollTop: number;\n node: HTMLElement;\n ghost: HTMLElement;\n clone: HTMLElement;\n itemHeight: number;\n gap: number;\n fromIndex: number;\n projectedIndex: number;\n originContainerId: unknown;\n currentContainerId: unknown;\n itemsAtStart: Map<unknown, unknown[]>;\n } | null>(null);\n\n const applyShifts = (listEl: HTMLElement, fromIndex: number, projectedIndex: number, draggedNode: HTMLElement, clone: HTMLElement, itemHeight: number, gap: number) => {\n const shift = itemHeight + gap;\n\n // During drag: node has data-sortable-item removed, clone has no data-sortable-item.\n // So getSortableItems returns only real siblings, in their original DOM order.\n // Items before fromIndex keep their index; items at/after fromIndex are shifted by 1.\n const realItems = getSortableItems(listEl);\n\n for (let i = 0; i < realItems.length; i++) {\n const logicalIndex = i < fromIndex ? i : i + 1;\n let offset = 0;\n\n if (fromIndex < projectedIndex) {\n if (logicalIndex > fromIndex && logicalIndex <= projectedIndex) offset = -shift;\n } else if (fromIndex > projectedIndex) {\n if (logicalIndex >= projectedIndex && logicalIndex < fromIndex) offset = shift;\n }\n\n realItems[i].style.transform = offset ? `translateY(${offset}px)` : '';\n }\n\n // Clone is placeholder at fromIndex slot; shift it to projectedIndex\n clone.style.transform = projectedIndex !== fromIndex ? `translateY(${(projectedIndex - fromIndex) * shift}px)` : '';\n };\n\n const clearShifts = (listEl: HTMLElement | null) => {\n if (!listEl) return;\n\n for (const child of getSortableItems(listEl)) {\n child.style.transform = '';\n }\n };\n\n const getListGap = (listEl: HTMLElement) => {\n const children = getSortableItems(listEl);\n\n return children.length > 1 ? children[1].getBoundingClientRect().top - children[0].getBoundingClientRect().bottom : 4;\n };\n\n const createGhost = (node: HTMLElement, rect: DOMRect): HTMLElement => {\n const ghost = node.cloneNode(true) as HTMLElement;\n\n ghost.setAttribute('inert', 'true');\n ghost.removeAttribute('data-sortable-item');\n ghost.removeAttribute('data-sortable-container');\n ghost.style.position = 'fixed';\n ghost.style.zIndex = '9999';\n ghost.style.pointerEvents = 'none';\n ghost.style.width = `${rect.width}px`;\n ghost.style.height = `${rect.height}px`;\n ghost.style.left = `${rect.left}px`;\n ghost.style.top = `${rect.top}px`;\n ghost.style.margin = '0';\n ghost.style.transform = 'translate(0px, 0px)';\n ghost.style.transition = 'none';\n ghost.style.opacity = '0.9';\n ghost.style.boxShadow = '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)';\n document.body.appendChild(ghost);\n\n return ghost;\n };\n\n const discoverListRefs = () => {\n if (dnd) {\n for (const [cId, cInfo] of dnd.containers) {\n if (!cInfo.listRef.current || !cInfo.listRef.current.isConnected) {\n const scopedId = `${dnd.uid}_${cId}`;\n const listEl = document.querySelector(`[data-sortable-list=\"${scopedId}\"]`) as HTMLElement | null;\n\n if (listEl) {\n cInfo.listRef.current = listEl;\n }\n }\n }\n }\n };\n\n const getItemDndProps = (index: number) => {\n if (disabled) return { 'data-sortable-item': '', 'data-sortable-container': String(id) };\n\n return {\n 'data-sortable-item': '',\n 'data-sortable-container': String(id),\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => {\n if (e.button !== 0 || disabled) return;\n\n const node = e.currentTarget;\n const listEl = node.parentElement as HTMLElement;\n\n if (listEl) {\n listRef.current = listEl;\n\n if (dnd && id != null) {\n const c = dnd.containers.get(id);\n\n if (c) c.listRef.current = listEl;\n }\n }\n\n discoverListRefs();\n\n const rect = node.getBoundingClientRect();\n const startX = e.clientX;\n const startY = e.clientY;\n let activated = false;\n\n const containerId = id;\n const hasMultipleContainers = dnd ? dnd.containers.size > 1 : false;\n\n const itemsAtStart = new Map<unknown, unknown[]>();\n\n if (dnd) {\n for (const [cId, cInfo] of dnd.containers) {\n itemsAtStart.set(cId, [...cInfo.items]);\n }\n } else {\n itemsAtStart.set(id, [...itemsRef.current]);\n }\n\n let lastPointerX = startX;\n let lastPointerY = startY;\n\n const updateProjection = () => {\n const state = dragStateRef.current;\n\n if (!state) return;\n\n let hoveredContainerId = state.originContainerId;\n\n if (hasMultipleContainers && dnd) {\n for (const [cId, cInfo] of dnd.containers) {\n // Re-discover stale or missing refs on the fly\n if (!cInfo.listRef.current || !cInfo.listRef.current.isConnected) {\n const scopedId = `${dnd.uid}_${cId}`;\n const listEl = document.querySelector(`[data-sortable-list=\"${scopedId}\"]`) as HTMLElement | null;\n\n if (listEl) cInfo.listRef.current = listEl;\n }\n\n const cRect = cInfo.listRef.current?.getBoundingClientRect();\n\n if (cRect && lastPointerX >= cRect.left && lastPointerX <= cRect.right && lastPointerY >= cRect.top && lastPointerY <= cRect.bottom) {\n hoveredContainerId = cId;\n break;\n }\n }\n }\n\n const hoveredList = hasMultipleContainers && dnd ? dnd.containers.get(hoveredContainerId)?.listRef.current : listRef.current;\n\n if (!hoveredList) return;\n\n const oList = hasMultipleContainers && dnd ? dnd.containers.get(state.originContainerId)?.listRef.current : listRef.current;\n const scrollDelta = (oList?.scrollTop ?? 0) - state.startScrollTop;\n const dy = lastPointerY - state.startY;\n const step = state.itemHeight + state.gap;\n const hoveredItems = state.itemsAtStart.get(hoveredContainerId) ?? [];\n\n let projected: number;\n\n if (hoveredContainerId === state.originContainerId) {\n projected = state.fromIndex + Math.round((dy + scrollDelta) / step);\n projected = Math.max(0, Math.min(hoveredItems.length - 1, projected));\n } else {\n const listRect = hoveredList.getBoundingClientRect();\n const listPadding = parseFloat(getComputedStyle(hoveredList).paddingTop) || 0;\n const relY = lastPointerY - listRect.top - listPadding;\n\n projected = Math.round(relY / step);\n projected = Math.max(0, Math.min(hoveredItems.length, projected));\n }\n\n const sideChanged = hoveredContainerId !== state.currentContainerId;\n\n if (sideChanged || projected !== state.projectedIndex) {\n // When switching containers, smooth-clear the old hovered list\n if (sideChanged && dnd) {\n const oldList = dnd.containers.get(state.currentContainerId)?.listRef.current;\n\n if (oldList) clearShifts(oldList);\n }\n\n state.currentContainerId = hoveredContainerId;\n state.projectedIndex = projected;\n\n if (dnd) {\n dnd.setState({ currentContainerId: hoveredContainerId, projectedIndex: projected });\n }\n\n if (hoveredContainerId === state.originContainerId) {\n // Move clone back to origin list (before the dragged node)\n if (sideChanged) {\n state.node.parentElement?.insertBefore(state.clone, state.node);\n }\n\n state.clone.style.height = `${state.itemHeight}px`;\n state.clone.style.overflow = '';\n applyShifts(hoveredList, state.fromIndex, projected, state.node, state.clone, state.itemHeight, state.gap);\n } else {\n // Measure the hovered list's own step — may differ from origin list's step.\n const hoveredItems = getSortableItems(hoveredList);\n const hoveredStep = hoveredItems.length >= 2 ? hoveredItems[1].getBoundingClientRect().top - hoveredItems[0].getBoundingClientRect().top : state.itemHeight + state.gap;\n\n // On container switch: move clone to document.body as position:fixed.\n // This avoids any layout impact on the hovered list (no scroll growth).\n if (sideChanged) {\n document.body.appendChild(state.clone);\n state.clone.style.position = 'fixed';\n state.clone.style.height = `${state.itemHeight}px`;\n state.clone.style.overflow = 'hidden';\n state.clone.style.transform = '';\n state.clone.style.margin = '0';\n state.clone.style.zIndex = '9998';\n state.clone.style.pointerEvents = 'none';\n state.clone.style.boxSizing = 'border-box';\n hoveredList.style.position = '';\n }\n\n // Position clone at the projected slot using fixed viewport coords.\n // Use offsetTop (transform-independent) + list viewport offset for accuracy.\n const listRect = hoveredList.getBoundingClientRect();\n const listScrollTop = hoveredList.scrollTop;\n const listPadding = parseFloat(getComputedStyle(hoveredList).paddingTop) || 0;\n\n let cloneFixedTop: number;\n\n if (hoveredItems.length === 0) {\n cloneFixedTop = listRect.top + listPadding;\n } else if (projected < hoveredItems.length) {\n // Use getBoundingClientRect which accounts for scrollTop correctly.\n // Called before shift transforms are applied, so value is layout-accurate.\n cloneFixedTop = hoveredItems[projected].getBoundingClientRect().top;\n } else {\n const last = hoveredItems[hoveredItems.length - 1];\n\n cloneFixedTop = last.getBoundingClientRect().bottom + (hoveredStep - last.getBoundingClientRect().height);\n }\n\n state.clone.style.top = `${cloneFixedTop}px`;\n state.clone.style.left = `${listRect.left}px`;\n state.clone.style.width = `${listRect.width}px`;\n state.clone.style.transform = '';\n\n // Shift items at and after projected down to make room for clone\n for (let i = 0; i < hoveredItems.length; i++) {\n hoveredItems[i].style.transform = i >= projected ? `translateY(${hoveredStep}px)` : '';\n }\n }\n }\n\n return hoveredList;\n };\n\n const onMove = (ev: PointerEvent) => {\n const dist = Math.sqrt((ev.clientX - startX) ** 2 + (ev.clientY - startY) ** 2);\n\n if (!activated && dist < 5) return;\n\n if (!activated) {\n activated = true;\n\n const list = listRef.current;\n const gap = list ? getListGap(list) : 4;\n\n let clone: HTMLElement;\n\n if (placeholderMode === 'empty') {\n clone = document.createElement(node.tagName) as HTMLElement;\n } else {\n clone = node.cloneNode(true) as HTMLElement;\n }\n\n clone.setAttribute('inert', 'true');\n clone.setAttribute('data-sortable-placeholder', '');\n clone.removeAttribute('data-sortable-item');\n clone.removeAttribute('data-sortable-container');\n clone.style.width = `${rect.width}px`;\n clone.style.height = `${rect.height}px`;\n clone.style.flexShrink = '0';\n clone.style.transition = 'transform 200ms ease, opacity 150ms ease';\n clone.style.opacity = '0';\n node.parentElement?.insertBefore(clone, node);\n // Fade clone in on next frame so the slot opens smoothly\n requestAnimationFrame(() => {\n clone.style.opacity = '1';\n });\n\n // Blur the list so Listbox clears its focusedOptionIndex (removes p-focus class)\n listRef.current?.blur();\n\n // Create ghost BEFORE modifying node (cloneNode copies current inline styles)\n const ghost = createGhost(node, rect);\n\n // Keep node in DOM but out of flow — clone holds the layout slot.\n // Remove data-sortable-item so getSortableItems ignores it during drag.\n node.setAttribute('data-dragging', '');\n node.removeAttribute('data-sortable-item');\n node.style.position = 'absolute';\n node.style.visibility = 'hidden';\n node.style.pointerEvents = 'none';\n\n // Disable pointer events on all sibling items to prevent CSS :hover during drag\n const listEl2 = node.parentElement;\n\n if (listEl2) {\n for (const sibling of getSortableItems(listEl2)) {\n if (sibling !== node) {\n sibling.style.pointerEvents = 'none';\n sibling.style.transition = 'transform 200ms ease';\n }\n }\n }\n\n // For multi-container DnD, also prep the other list's items\n if (dnd) {\n for (const [cId, cInfo] of dnd.containers) {\n if (cId !== containerId && cInfo.listRef.current) {\n for (const sibling of getSortableItems(cInfo.listRef.current)) {\n sibling.style.pointerEvents = 'none';\n sibling.style.transition = 'transform 200ms ease';\n }\n }\n }\n }\n\n dragStateRef.current = {\n startX,\n startY,\n startScrollTop: list?.scrollTop ?? 0,\n node,\n ghost,\n clone,\n itemHeight: rect.height,\n gap,\n fromIndex: index,\n projectedIndex: index,\n originContainerId: containerId,\n currentContainerId: containerId,\n itemsAtStart\n };\n\n setDragging(true);\n\n if (dnd) {\n dnd.setState({\n dragging: true,\n activeContainerId: containerId,\n currentContainerId: containerId,\n fromIndex: index,\n projectedIndex: index\n });\n }\n }\n\n const state = dragStateRef.current;\n\n if (!state) return;\n\n lastPointerX = ev.clientX;\n lastPointerY = ev.clientY;\n\n state.ghost.style.transform = `translate(${ev.clientX - state.startX}px, ${ev.clientY - state.startY}px)`;\n\n const hoveredList = updateProjection();\n\n // Auto-scroll\n cancelAnimationFrame(scrollRafRef.current);\n\n if (hoveredList) {\n const scrollThreshold = 40;\n const scrollSpeed = 8;\n\n const autoScroll = () => {\n const lr = hoveredList.getBoundingClientRect();\n const distTop = lastPointerY - lr.top;\n const distBottom = lr.bottom - lastPointerY;\n\n let scrolled = false;\n\n if (distTop > 0 && distTop < scrollThreshold) {\n hoveredList.scrollTop -= scrollSpeed;\n scrolled = true;\n } else if (distBottom > 0 && distBottom < scrollThreshold) {\n hoveredList.scrollTop += scrollSpeed;\n scrolled = true;\n }\n\n if (scrolled) {\n // Force clone reposition after scroll by invalidating cached projected index\n if (dragStateRef.current) dragStateRef.current.projectedIndex = -1;\n updateProjection();\n scrollRafRef.current = requestAnimationFrame(autoScroll);\n }\n };\n\n autoScroll();\n }\n };\n\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n cancelAnimationFrame(scrollRafRef.current);\n\n const state = dragStateRef.current;\n\n if (!state) return;\n\n const isCrossList = state.currentContainerId !== state.originContainerId;\n\n let finalized = false;\n\n const finalize = () => {\n if (finalized) return;\n\n finalized = true;\n state.ghost.removeEventListener('transitionend', finalize);\n cancelAnimationFrame(scrollRafRef.current);\n\n // Remove ghost and placeholder\n state.ghost.remove();\n state.clone.remove();\n\n // Collect all relevant lists\n const allLists: HTMLElement[] = [];\n\n if (dnd && dnd.containers.size > 1) {\n for (const [, cInfo] of dnd.containers) {\n if (cInfo.listRef.current) allLists.push(cInfo.listRef.current);\n }\n } else if (listRef.current) {\n allLists.push(listRef.current);\n }\n\n // Keep node in DOM — React will replace or reconcile it during flushSync.\n // Restore position so it participates in layout correctly,\n // but keep visibility:hidden + pointer-events:none until after flushSync.\n state.node.style.position = '';\n state.node.removeAttribute('data-dragging');\n state.node.setAttribute('data-sortable-item', '');\n\n // Freeze transforms and restore pointer-events before React re-render\n for (const list of allLists) {\n for (const child of getSortableItems(list)) {\n child.style.transition = 'none';\n child.style.transform = '';\n child.style.pointerEvents = '';\n }\n }\n\n flushSync(() => {\n if (!isCrossList) {\n if (state.fromIndex !== state.projectedIndex) {\n if (dnd?.onSort) {\n dnd.onSort({ containerId: state.originContainerId, fromIndex: state.fromIndex, toIndex: state.projectedIndex });\n } else if (onSort) {\n onSort({ containerId: state.originContainerId, fromIndex: state.fromIndex, toIndex: state.projectedIndex });\n }\n }\n } else {\n dnd?.onTransfer?.({\n from: { containerId: state.originContainerId, index: state.fromIndex },\n to: { containerId: state.currentContainerId, index: state.projectedIndex }\n });\n }\n });\n\n // Force reflow then restore transitions\n for (const list of allLists) {\n void list.offsetHeight;\n\n for (const child of getSortableItems(list)) {\n child.style.transition = '';\n child.style.visibility = '';\n child.style.pointerEvents = '';\n }\n }\n\n dragStateRef.current = null;\n setDragging(false);\n\n if (dnd) {\n dnd.setState({\n dragging: false,\n activeContainerId: null,\n currentContainerId: null,\n fromIndex: -1,\n projectedIndex: -1\n });\n }\n\n // Restore focus to the drop target list with the correct item focused.\n // data-dnd-focus-index is read by useListbox.onListFocus to set focusedOptionIndex.\n const dropContainerId = isCrossList ? state.currentContainerId : state.originContainerId;\n const dropList = hasMultipleContainers && dnd ? dnd.containers.get(dropContainerId)?.listRef.current : listRef.current;\n\n if (dropList) {\n dropList.dataset.dndFocusIndex = String(state.projectedIndex);\n dropList.focus();\n delete dropList.dataset.dndFocusIndex;\n }\n };\n\n // Fade ghost out in place — no positional animation to avoid jump artifacts\n state.ghost.style.transition = 'opacity 150ms ease-out';\n state.ghost.style.opacity = '0';\n\n state.ghost.addEventListener('transitionend', finalize, { once: true });\n\n setTimeout(() => {\n if (dragStateRef.current === state) {\n finalize();\n }\n }, 200);\n };\n\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n }\n };\n };\n\n const state = {\n dragging\n };\n\n const rootProps = React.useMemo(\n () => ({\n 'data-scope': 'dnd',\n 'data-part': 'sortable-container',\n ...(dragging ? { 'data-active': '' } : undefined),\n ...(disabled ? { 'data-disabled': '' } : undefined)\n }),\n [dragging, disabled]\n );\n\n const listProps = React.useMemo(\n () => ({\n 'data-sortable-list': scopedListId\n }),\n [scopedListId]\n );\n\n return {\n state,\n getItemDndProps,\n listProps,\n rootProps\n };\n }\n});\n","import type { UseSortableContainerProps } from '@primereact/types/headless/dnd';\n\nexport const defaultProps: UseSortableContainerProps = {\n dnd: undefined,\n id: undefined,\n items: undefined,\n disabled: false,\n placeholder: 'empty',\n onSort: undefined\n};\n","import type { UsePickListProps } from '@primereact/types/headless/picklist';\n\nexport const defaultProps: UsePickListProps = {\n source: undefined,\n target: undefined,\n selection: undefined,\n disabled: false,\n draggable: false,\n placeholder: 'empty',\n onChange: undefined,\n onSelectionChange: undefined\n};\n"],"mappings":"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","names":["arrayMove","withHeadless","React","withHeadless","React","defaultProps","INITIAL_STATE","createCoordinator","uid","containers","state","__spreadValues","subscribers","notify","fn","update","NOOP_SUBSCRIBE","useDnd","withHeadless","defaultProps","props","dndId","coordinatorRef","dnd","subscribe","getSnapshot","rootProps","withHeadless","React","flushSync","defaultProps","getSortableItems","listEl","useSortableContainer","withHeadless","defaultProps","props","_a","_b","_c","dnd","id","items","disabled","placeholderMode","onSort","scopedListId","listRef","itemsRef","c","dragging","setDragging","scrollRafRef","dragStateRef","applyShifts","fromIndex","projectedIndex","draggedNode","clone","itemHeight","gap","shift","realItems","i","logicalIndex","offset","clearShifts","child","getListGap","children","createGhost","node","rect","ghost","discoverListRefs","cId","cInfo","scopedId","getItemDndProps","index","e","startX","startY","activated","containerId","hasMultipleContainers","itemsAtStart","lastPointerX","lastPointerY","updateProjection","_d","_e","_f","_g","state","hoveredContainerId","cRect","hoveredList","oList","scrollDelta","dy","step","hoveredItems","projected","listRect","listPadding","relY","sideChanged","oldList","hoveredStep","listScrollTop","cloneFixedTop","last","onMove","ev","dist","list","listEl2","sibling","autoScroll","lr","distTop","distBottom","scrolled","onUp","isCrossList","finalized","finalize","allLists","flushSync","dropContainerId","dropList","rootProps","__spreadValues","listProps","defaultProps","usePickList","withHeadless","defaultProps","id","props","_a","_b","_c","sourceState","setSourceState","targetState","setTargetState","selection","isItemSelected","item","updateLists","newSource","newTarget","event","updateListsRef","sourceRef","targetRef","getSelectedIndices","list","indices","sel","idx","reorderUp","side","items","selectedIndices","sorted","b","moved","reorderDown","reorderTop","selected","rest","newItems","reorderBottom","moveToTarget","selectedFromSource","newSelection","moveToSource","selectedFromTarget","moveAllToTarget","moveAllToSource","dnd","useDnd","containerId","fromIndex","toIndex","arrayMove","from","to","originSide","originItems","destItems","transferItem","filteredOrigin","_","i","insertedDest","sourceContainer","useSortableContainer","targetContainer","isDragging","getOptionProps","index","container","__spreadValues","sourceSelection","targetSelection","hasSourceSelection","hasTargetSelection","makeReorderProps","action","label","fn","hasSelection","e"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/popover/usePopover.ts","../../src/popover/usePopover.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { OverlayEventBus } from '@primereact/core/utils';\nimport { useFocusTrap } from '@primereact/headless/focustrap';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { focus, getFirstFocusableElement, toElement } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './usePopover.props';\n\nexport const usePopover = withHeadless({\n name: 'usePopover',\n defaultProps,\n setup: ({ props }) => {\n const [openState, setOpenState, isControlled] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen,\n onChange: props.onOpenChange\n });\n const [rendered, setRendered] = React.useState<boolean>(!!openState);\n\n // elements\n const [anchorElement, setAnchorElement] = React.useState<HTMLElement | null>(props.anchor ?? null);\n const [positionerElement, setPositionerElement] = React.useState<HTMLDivElement | null>(null);\n const [popupElement, setPopupElement] = React.useState<HTMLElement | null>(null);\n const [arrowElement, setArrowElement] = React.useState<HTMLDivElement | null>(null);\n\n const state = {\n open: openState,\n rendered,\n trapped: !!props.trapped,\n anchorElement,\n positionerElement,\n popupElement,\n arrowElement\n };\n\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const anchorFallbackRef = React.useRef<HTMLElement | null>(null);\n const positionerRef = React.useRef<HTMLDivElement | null>(null);\n const popupRef = React.useRef<HTMLElement | null>(null);\n const arrowRef = React.useRef<HTMLDivElement | null>(null);\n\n const focusTrap = useFocusTrap({\n trapped: !!props.trapped && !!popupElement,\n autoFocus: false\n });\n\n const setAnchorRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (!element || element === anchorRef.current) return;\n\n anchorRef.current = element;\n setAnchorElement(element || anchorFallbackRef.current);\n }, []);\n\n const setAnchorFallbackRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (element === anchorFallbackRef.current) return;\n\n anchorFallbackRef.current = element;\n\n if (!element) {\n if (anchorRef.current && !anchorRef.current.isConnected) {\n anchorRef.current = null;\n setAnchorElement(null);\n }\n\n return;\n }\n\n if (!anchorRef.current) {\n anchorRef.current = element;\n setAnchorElement(element);\n }\n }, []);\n\n const setPositionerRef = React.useCallback((node: HTMLDivElement | null) => {\n const element = (toElement(node) ?? null) as HTMLDivElement | null;\n\n if (element === positionerRef.current) return;\n\n positionerRef.current = element;\n setPositionerElement(element);\n }, []);\n\n const setPopupRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (element === popupRef.current) return;\n\n popupRef.current = element;\n focusTrap.containerRef.current = element;\n setPopupElement(element);\n }, []);\n\n const setArrowRef = React.useCallback((node: HTMLDivElement | null) => {\n const element = (toElement(node) ?? null) as HTMLDivElement | null;\n\n if (element === arrowRef.current) return;\n\n arrowRef.current = element;\n setArrowElement(element);\n }, []);\n\n const isAutoFocusingRef = React.useRef(false);\n\n function setOpen(open: boolean, originalEvent?: Event) {\n setOpenState([\n open,\n {\n originalEvent,\n value: open\n }\n ]);\n }\n\n const handleFocusOut = (event: FocusEvent) => {\n if (isAutoFocusingRef.current) return;\n\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget || positionerRef.current?.contains(relatedTarget) || anchorRef.current?.contains(relatedTarget) || anchorFallbackRef.current?.contains(relatedTarget)) return;\n\n setOpen(false, event);\n };\n\n const onTriggerClick = (event: React.MouseEvent) => {\n setOpen(!openState, event.nativeEvent);\n };\n\n const onCloseClick = (event: React.MouseEvent) => {\n setOpen(false, event.nativeEvent);\n };\n\n const onOpenComplete = React.useCallback(() => {\n if (props.autoFocus === false) return;\n\n const popupNode = popupRef.current;\n\n if (!popupNode) return;\n\n const activeElement = document.activeElement as HTMLElement | null;\n const anchorNode = anchorRef.current || anchorFallbackRef.current;\n\n if (activeElement && anchorNode?.contains(activeElement) && anchorNode !== activeElement) {\n return;\n }\n\n isAutoFocusingRef.current = true;\n\n const firstFocusable = getFirstFocusableElement(popupNode);\n\n if (firstFocusable) {\n focus(firstFocusable as HTMLElement, { preventScroll: true });\n } else {\n focus(popupNode, { preventScroll: true });\n }\n\n isAutoFocusingRef.current = false;\n }, [props.autoFocus]);\n\n const onCloseComplete = React.useCallback(() => {\n props.onExitComplete?.();\n }, [props.onExitComplete]);\n\n const overlaySelfClickRef = React.useRef(false);\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'pointerdown',\n listener: (event: Event) => {\n const target = event.target as Node;\n\n if (!target || !document.documentElement.contains(target)) return;\n\n if (overlaySelfClickRef.current) {\n overlaySelfClickRef.current = false;\n\n return;\n }\n\n const positionerNode = positionerRef.current;\n const anchorNode = anchorRef.current;\n const anchorFallbackNode = anchorFallbackRef.current;\n\n if (openState && positionerNode && !positionerNode.contains(target) && (!anchorNode || !anchorNode.contains(target)) && (!anchorFallbackNode || !anchorFallbackNode.contains(target))) {\n setOpen(false, event);\n }\n }\n });\n\n React.useEffect(() => {\n if (!openState) return;\n\n const listener = (payload: unknown) => {\n const emittedTarget = (payload as { target?: Node | null } | undefined)?.target ?? null;\n\n if (!emittedTarget) return;\n\n const positionerNode = positionerRef.current;\n const anchorNode = anchorRef.current;\n const anchorFallbackNode = anchorFallbackRef.current;\n\n if ((positionerNode && positionerNode.contains(emittedTarget)) || (anchorNode && anchorNode.contains(emittedTarget)) || (anchorFallbackNode && anchorFallbackNode.contains(emittedTarget))) {\n overlaySelfClickRef.current = true;\n }\n };\n\n OverlayEventBus.on('overlay-click', listener);\n\n return () => {\n OverlayEventBus.off('overlay-click', listener);\n };\n }, [openState]);\n\n const [bindEscapeListener, unbindEscapeListener] = useEventListener({\n type: 'keydown',\n listener: (event: Event) => {\n if ((event as KeyboardEvent).key === 'Escape') {\n setOpen(false, event);\n focus((anchorRef.current || anchorFallbackRef.current) as HTMLElement, { preventScroll: true });\n }\n }\n });\n\n // effects\n React.useEffect(() => {\n if (props.anchor !== undefined) {\n anchorRef.current = props.anchor;\n setAnchorElement(props.anchor);\n }\n }, [props.anchor]);\n\n React.useEffect(() => {\n if (openState) {\n setRendered(true);\n }\n }, [openState]);\n\n React.useEffect(() => {\n if (openState) {\n bindOutsideClickListener();\n\n if (props.closeOnEscape) {\n bindEscapeListener();\n }\n } else {\n unbindOutsideClickListener();\n unbindEscapeListener();\n }\n }, [openState, props.closeOnEscape, bindOutsideClickListener, unbindOutsideClickListener, bindEscapeListener, unbindEscapeListener]);\n\n React.useEffect(() => {\n const positionerNode = positionerRef.current;\n\n if (!openState || !positionerNode || props.trapped || isControlled) return;\n\n positionerNode.addEventListener('focusout', handleFocusOut);\n\n return () => {\n positionerNode.removeEventListener('focusout', handleFocusOut);\n };\n }, [openState, props.trapped, isControlled, handleFocusOut]);\n\n // prop getters\n const triggerProps = {\n 'data-scope': 'popover',\n 'data-part': 'trigger',\n ref: setAnchorRef,\n onClick: onTriggerClick,\n ...(openState ? { 'data-positioner-open': '' } : {})\n };\n\n const positionerProps = {\n 'data-scope': 'popover',\n 'data-part': 'positioner',\n ref: setPositionerRef\n };\n\n const arrowProps = {\n 'data-scope': 'popover',\n 'data-part': 'arrow',\n ref: setArrowRef\n };\n\n const popupProps = {\n 'data-scope': 'popover',\n 'data-part': 'popup',\n ref: setPopupRef,\n tabIndex: -1,\n ...(openState ? { 'data-open': '' } : {})\n };\n\n const closeProps = {\n 'data-scope': 'popover',\n 'data-part': 'close',\n type: 'button' as const,\n onClick: onCloseClick\n };\n\n return {\n state,\n focusTrap,\n // refs\n setArrowRef,\n setAnchorRef,\n setAnchorFallbackRef,\n setPopupRef,\n setPositionerRef,\n // prop getters\n triggerProps,\n popupProps,\n closeProps,\n positionerProps,\n arrowProps,\n // methods\n setOpen,\n setRendered,\n onOpenComplete,\n onCloseComplete\n };\n }\n});\n","import type { UsePopoverProps } from '@primereact/types/headless/popover';\n\nexport const defaultProps: UsePopoverProps = {\n anchor: undefined,\n defaultOpen: undefined,\n open: undefined,\n trapped: false,\n autoFocus: true,\n closeOnEscape: true,\n onOpenChange: undefined,\n onExitComplete: undefined\n};\n"],"mappings":"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","names":["withHeadless","OverlayEventBus","useFocusTrap","useControlledState","useEventListener","focus","getFirstFocusableElement","toElement","React","defaultProps","usePopover","withHeadless","defaultProps","props","_a","openState","setOpenState","isControlled","useControlledState","rendered","setRendered","anchorElement","setAnchorElement","positionerElement","setPositionerElement","popupElement","setPopupElement","arrowElement","setArrowElement","state","anchorRef","anchorFallbackRef","positionerRef","popupRef","arrowRef","focusTrap","useFocusTrap","setAnchorRef","node","element","toElement","setAnchorFallbackRef","setPositionerRef","setPopupRef","setArrowRef","isAutoFocusingRef","setOpen","open","originalEvent","handleFocusOut","event","_b","_c","relatedTarget","onTriggerClick","onCloseClick","onOpenComplete","popupNode","activeElement","anchorNode","firstFocusable","getFirstFocusableElement","focus","onCloseComplete","overlaySelfClickRef","bindOutsideClickListener","unbindOutsideClickListener","useEventListener","target","positionerNode","anchorFallbackNode","listener","payload","emittedTarget","OverlayEventBus","bindEscapeListener","unbindEscapeListener","triggerProps","__spreadValues","positionerProps","arrowProps","popupProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/portal/usePortal.ts","../../src/portal/usePortal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMounted } from '@primereact/hooks';\nimport { defaultProps } from './usePortal.props';\n\nexport const usePortal = withHeadless({\n name: 'usePortal',\n defaultProps,\n setup({ props }) {\n const mounted = useMounted({\n onMounted: props.onMounted,\n onUnmounted: props.onUnmounted\n });\n\n const state = {\n mounted\n };\n\n return {\n state\n };\n }\n});\n","import type { UsePortalProps } from '@primereact/types/headless/portal';\n\nexport const defaultProps: UsePortalProps = {\n onMounted: undefined,\n onUnmounted: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,cAAAC,MAAkB,oBCCpB,IAAMC,EAA+B,CACxC,UAAW,OACX,YAAa,MACjB,EDDO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAUb,MAAO,CACH,MALU,CACV,QANYC,EAAW,CACvB,UAAWD,EAAM,UACjB,YAAaA,EAAM,WACvB,CAAC,CAID,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","useMounted","defaultProps","usePortal","withHeadless","defaultProps","props","useMounted"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/positioner/usePositioner.ts","../../src/positioner/usePositioner.anchor.ts","../../src/positioner/usePositioner.utils.ts","../../src/positioner/usePositioner.fallback.ts","../../src/positioner/usePositioner.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/headless/positioner';\nimport { getScrollableParents } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport * as React from 'react';\nimport { computeCSSPosition, getPlacementFromRects } from './usePositioner.anchor';\nimport { computeArrowPosition, computeCoordsFromPlacement, deriveAlignFromCoords, getFlippedSide, isAnchorDetached, shiftCoords } from './usePositioner.fallback';\nimport { defaultProps } from './usePositioner.props';\nimport { Rect, clamp, computeTransformOrigin, getBoundaryRect, getLayoutRect, isCssAnchorSupported } from './usePositioner.utils';\n\nexport const usePositioner = withHeadless({\n name: 'usePositioner',\n defaultProps,\n setup({ id, props, $primereact }) {\n const [actualSide, setActualSide] = React.useState<SideType>();\n const [actualAlign, setActualAlign] = React.useState<AlignType>();\n\n const anchorName = `--positioner-trigger-${id}`;\n const contentAnchor = `--positioner-content-${id}`;\n\n // ── Stable refs for props accessed in updatePlacement ──\n\n const propsRef = React.useRef(props);\n\n propsRef.current = props;\n\n const actualSideRef = React.useRef(actualSide);\n\n actualSideRef.current = actualSide;\n\n // ── Helper: getArrowOffset ──\n\n const getArrowOffset = React.useCallback((): number => {\n const p = propsRef.current;\n const arrow = p.arrow;\n\n if (!arrow) return 0;\n\n const computed = window.getComputedStyle(arrow);\n const side = actualSideRef.current ?? p.side;\n const isVertical = side === 'top' || side === 'bottom';\n const size = isVertical ? parseFloat(computed.height || '0') || arrow.offsetHeight : parseFloat(computed.width || '0') || arrow.offsetWidth;\n const borderTop = parseFloat(computed.borderTopWidth || '0');\n\n return Math.ceil(size / 2 + borderTop);\n }, []);\n\n const resolveSideOffset = React.useCallback((): number => {\n const p = propsRef.current;\n\n if (p.sideOffset != null) return p.sideOffset;\n\n return p.arrow ? getArrowOffset() : 0;\n }, [getArrowOffset]);\n\n // ── Reset actual placement when desired placement changes ──\n\n const prevSideRef = React.useRef(props.side);\n const prevAlignRef = React.useRef(props.align);\n\n if (prevSideRef.current !== props.side || prevAlignRef.current !== props.align) {\n prevSideRef.current = props.side;\n prevAlignRef.current = props.align;\n setActualSide(undefined);\n setActualAlign(undefined);\n }\n\n // ── CSS Anchor Mode: getTransformOrigin ──\n\n const getTransformOrigin = React.useCallback((): string => {\n const p = propsRef.current;\n const originSide = actualSideRef.current ?? p.side;\n const originAlign = actualAlign ?? p.align;\n const isVertical = originSide === 'top' || originSide === 'bottom';\n\n const primary = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[originSide as SideType];\n\n let secondary: string;\n\n if (isVertical) {\n secondary = originAlign === 'start' ? 'left' : originAlign === 'end' ? 'right' : 'center';\n } else {\n secondary = originAlign === 'start' ? 'top' : originAlign === 'end' ? 'bottom' : 'center';\n }\n\n return `${secondary} ${primary}`;\n }, [actualAlign]);\n\n // ── CSS Anchor Mode: computePosition ──\n\n const computePosition = React.useCallback((): React.CSSProperties => {\n if (!isCssAnchorSupported()) {\n return {};\n }\n\n const p = propsRef.current;\n\n return computeCSSPosition(p.side as SideType, p.align as AlignType, resolveSideOffset(), p.alignOffset, p.flip, p.shift, p.hideWhenDetached) as React.CSSProperties;\n }, [resolveSideOffset]);\n\n // ── CSS Anchor Mode: updatePlacement ──\n\n const updatePlacementCSS = React.useCallback(() => {\n const p = propsRef.current;\n const trigger = p.anchor;\n const content = p.content;\n\n if (!trigger || !content) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const positionerLayout = getLayoutRect(content, contentRect);\n const { side: nextSide, align: nextAlign } = getPlacementFromRects(triggerRect, contentRect);\n\n if (content.dataset.side !== nextSide) content.dataset.side = nextSide;\n\n if (content.dataset.align !== nextAlign) content.dataset.align = nextAlign;\n\n if (p.arrow) {\n if (p.arrow.dataset.side !== nextSide) p.arrow.dataset.side = nextSide;\n\n if (p.arrow.dataset.align !== nextAlign) p.arrow.dataset.align = nextAlign;\n }\n\n setActualSide((prev) => (prev === nextSide ? prev : nextSide));\n setActualAlign((prev) => (prev === nextAlign ? prev : nextAlign));\n\n // Available space\n const sOffset = resolveSideOffset();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const isVertical = nextSide === 'top' || nextSide === 'bottom';\n const availableHeight = isVertical ? (nextSide === 'bottom' ? viewportHeight - (triggerRect.bottom + sOffset) : triggerRect.top - sOffset) : viewportHeight;\n const availableWidth = isVertical ? viewportWidth : nextSide === 'right' ? viewportWidth - (triggerRect.right + sOffset) : triggerRect.left - sOffset;\n\n content.style.setProperty('--px-available-height', `${Math.max(0, availableHeight)}px`);\n content.style.setProperty('--px-available-width', `${Math.max(0, availableWidth)}px`);\n\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const arrow = p.arrow;\n\n if (arrow) {\n const computed = window.getComputedStyle(arrow);\n const cssArrowSize = parseFloat(computed.width || '0') || parseFloat(computed.height || '0') || 0;\n const arrowSize = Math.max(arrow.offsetWidth, arrow.offsetHeight, cssArrowSize);\n const arrowHalf = arrowSize / 2;\n const arrowInset = Math.max(8, arrowHalf);\n const arrowX = clamp(triggerCenterX - positionerLayout.left, arrowInset, positionerLayout.width - arrowInset);\n const arrowY = clamp(triggerCenterY - positionerLayout.top, arrowInset, positionerLayout.height - arrowInset);\n const arrowLeft = arrowX - arrowHalf;\n const arrowTop = arrowY - arrowHalf;\n\n content.style.setProperty('--px-placer-arrow-x', `${arrowX}px`);\n content.style.setProperty('--px-placer-arrow-y', `${arrowY}px`);\n content.style.setProperty('--px-placer-arrow-left', `${arrowLeft}px`);\n content.style.setProperty('--px-placer-arrow-top', `${arrowTop}px`);\n\n const transformOrigin = computeTransformOrigin(nextSide, arrowX, arrowY, positionerLayout.width, positionerLayout.height, arrowSize, true);\n\n content.style.setProperty('--px-transform-origin', transformOrigin);\n } else {\n const originX = triggerCenterX - positionerLayout.left;\n const originY = triggerCenterY - positionerLayout.top;\n\n content.style.removeProperty('--px-placer-arrow-x');\n content.style.removeProperty('--px-placer-arrow-y');\n content.style.removeProperty('--px-placer-arrow-left');\n content.style.removeProperty('--px-placer-arrow-top');\n content.style.setProperty('--px-transform-origin', `${originX}px ${originY}px`);\n }\n }, [resolveSideOffset]);\n\n // ── JS Fallback Mode: updatePlacement ──\n\n const updatePlacementJS = React.useCallback(() => {\n const p = propsRef.current;\n const anchor = p.anchor;\n const content = p.content;\n\n if (!anchor || !content) return;\n\n const boundary = getBoundaryRect(p.boundary);\n const anchorDomRect = anchor.getBoundingClientRect();\n const anchorRect: Rect = { x: anchorDomRect.left, y: anchorDomRect.top, width: anchorDomRect.width, height: anchorDomRect.height };\n const contentWidth = content.offsetWidth;\n const contentHeight = content.offsetHeight;\n const side = p.side as SideType;\n const align = p.align as AlignType;\n const sideOffset = resolveSideOffset();\n const alignOffset = p.alignOffset ?? 0;\n\n // hideWhenDetached\n if (p.hideWhenDetached && isAnchorDetached(anchorRect, boundary)) {\n content.style.visibility = 'hidden';\n\n return;\n } else {\n content.style.visibility = '';\n }\n\n // Flip\n let resolvedSide = side;\n\n if (p.flip) {\n resolvedSide = getFlippedSide(anchorRect, contentWidth, contentHeight, side, sideOffset, boundary);\n }\n\n // Compute coords\n let { x, y } = computeCoordsFromPlacement(anchorRect, contentWidth, contentHeight, resolvedSide, align, sideOffset, alignOffset);\n\n // Shift\n let resolvedAlign = align;\n\n if (p.shift) {\n const shifted = shiftCoords(x, y, contentWidth, contentHeight, resolvedSide, boundary);\n\n x = shifted.x;\n y = shifted.y;\n resolvedAlign = deriveAlignFromCoords(x, y, anchorRect, contentWidth, contentHeight, resolvedSide);\n }\n\n // Convert to offsetParent-relative coords for absolute strategy\n if (p.strategy === 'absolute') {\n const offsetParent = (content.offsetParent as HTMLElement) || document.documentElement;\n const parentRect = offsetParent.getBoundingClientRect();\n\n x = x - parentRect.left + offsetParent.scrollLeft;\n y = y - parentRect.top + offsetParent.scrollTop;\n }\n\n // Available space\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const isVertical = resolvedSide === 'top' || resolvedSide === 'bottom';\n const availableHeight = isVertical ? (resolvedSide === 'bottom' ? viewportHeight - (anchorRect.y + anchorRect.height + sideOffset) : anchorRect.y - sideOffset) : viewportHeight;\n const availableWidth = isVertical ? viewportWidth : resolvedSide === 'right' ? viewportWidth - (anchorRect.x + anchorRect.width + sideOffset) : anchorRect.x - sideOffset;\n\n content.style.setProperty('--px-available-height', `${Math.max(0, availableHeight)}px`);\n content.style.setProperty('--px-available-width', `${Math.max(0, availableWidth)}px`);\n\n // Apply position\n content.style.top = `${y}px`;\n content.style.left = `${x}px`;\n\n // Update data attributes\n if (content.dataset.side !== resolvedSide) content.dataset.side = resolvedSide;\n\n if (content.dataset.align !== resolvedAlign) content.dataset.align = resolvedAlign;\n\n const arrow = p.arrow;\n\n if (arrow) {\n if (arrow.dataset.side !== resolvedSide) arrow.dataset.side = resolvedSide;\n\n if (arrow.dataset.align !== resolvedAlign) arrow.dataset.align = resolvedAlign;\n }\n\n setActualSide((prev) => (prev === resolvedSide ? prev : resolvedSide));\n setActualAlign((prev) => (prev === resolvedAlign ? prev : resolvedAlign));\n\n if (arrow) {\n const computed = window.getComputedStyle(arrow);\n const cssArrowSize = parseFloat(computed.width || '0') || parseFloat(computed.height || '0') || 0;\n const arrowSize = Math.max(arrow.offsetWidth, arrow.offsetHeight, cssArrowSize);\n const arrowPos = computeArrowPosition(anchorRect, x, y, contentWidth, contentHeight, arrowSize, resolvedSide);\n\n content.style.setProperty('--px-placer-arrow-x', `${arrowPos.arrowX}px`);\n content.style.setProperty('--px-placer-arrow-y', `${arrowPos.arrowY}px`);\n content.style.setProperty('--px-placer-arrow-left', `${arrowPos.arrowLeft}px`);\n content.style.setProperty('--px-placer-arrow-top', `${arrowPos.arrowTop}px`);\n\n const transformOrigin = computeTransformOrigin(resolvedSide, arrowPos.arrowX, arrowPos.arrowY, contentWidth, contentHeight, arrowSize, true);\n\n content.style.setProperty('--px-transform-origin', transformOrigin);\n } else {\n const anchorCenterX = anchorRect.x + anchorRect.width / 2;\n const anchorCenterY = anchorRect.y + anchorRect.height / 2;\n const originX = anchorCenterX - x;\n const originY = anchorCenterY - y;\n\n content.style.removeProperty('--px-placer-arrow-x');\n content.style.removeProperty('--px-placer-arrow-y');\n content.style.removeProperty('--px-placer-arrow-left');\n content.style.removeProperty('--px-placer-arrow-top');\n content.style.setProperty('--px-transform-origin', `${originX}px ${originY}px`);\n }\n }, [resolveSideOffset]);\n\n // ── Unified updatePlacement (stable - reads from ref) ──\n\n const updatePlacement = React.useCallback(() => {\n const p = propsRef.current;\n const anchor = p.anchor;\n const content = p.content;\n\n if (!anchor || !content) return;\n\n const anchorWidth = anchor.getBoundingClientRect().width;\n\n content.style.setProperty('--px-positioner-anchor-width', `${anchorWidth}px`);\n\n if (isCssAnchorSupported()) {\n updatePlacementCSS();\n } else {\n updatePlacementJS();\n }\n }, [updatePlacementCSS, updatePlacementJS]);\n\n // Keep a stable ref for updatePlacement so listener effects don't re-run\n const updatePlacementRef = React.useRef(updatePlacement);\n\n updatePlacementRef.current = updatePlacement;\n\n // ── Effect: Initial style setup (branched by mode) ──\n\n React.useEffect(() => {\n const anchor = props.anchor;\n const content = props.content;\n\n if (!anchor || !content) return;\n\n const position = props.strategy ?? 'fixed';\n\n if (isCssAnchorSupported()) {\n Object.assign(content.style, {\n position,\n positionAnchor: anchorName,\n anchorName: contentAnchor,\n ...(computePosition() as React.CSSProperties | undefined),\n ['--px-transform-origin' as keyof React.CSSProperties]: getTransformOrigin()\n });\n\n Object.assign(anchor.style, {\n anchorName\n });\n } else {\n Object.assign(content.style, {\n position,\n top: '0',\n left: '0',\n margin: '0'\n });\n }\n\n return () => {\n // Reset positioning styles\n content.style.position = '';\n content.style.top = '';\n content.style.left = '';\n content.style.right = '';\n content.style.bottom = '';\n content.style.margin = '';\n content.style.visibility = '';\n\n // Clear CSS custom properties\n ['--px-transform-origin', '--px-positioner-anchor-width', '--px-available-height', '--px-available-width', '--px-placer-arrow-x', '--px-placer-arrow-y', '--px-placer-arrow-left', '--px-placer-arrow-top'].forEach((prop) =>\n content.style.removeProperty(prop)\n );\n\n // Clear CSS Anchor properties\n if (isCssAnchorSupported()) {\n ['position-anchor', 'anchor-name', 'position-area', 'position-try-fallbacks', 'position-visibility'].forEach((prop) => content.style.removeProperty(prop));\n content.style.marginTop = '';\n content.style.marginRight = '';\n content.style.marginBottom = '';\n content.style.marginLeft = '';\n anchor.style.removeProperty('anchor-name');\n }\n };\n }, [props.anchor, props.content, props.strategy, props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached]);\n\n // ── Effect: ZIndex management ──\n\n React.useEffect(() => {\n if (!props.content) return;\n\n if (props.autoZIndex) {\n ZIndex.set('overlay', props.content, (props.baseZIndex ?? 0) + ($primereact.config?.zIndex?.overlay ?? 1000));\n }\n\n return () => {\n if (props.autoZIndex && props.content) {\n ZIndex.clear(props.content);\n }\n };\n }, [props.content, props.autoZIndex, props.baseZIndex, $primereact.config?.zIndex?.overlay]);\n\n // ── Effect: Scroll/Resize listeners (stable - uses ref) ──\n\n React.useLayoutEffect(() => {\n if (!props.anchor || !props.content) return;\n\n let scheduleRafId = 0;\n let tickRafId = 0;\n let rafScheduled = false;\n let disposed = false;\n\n const scheduleUpdate = () => {\n if (rafScheduled || disposed) return;\n\n rafScheduled = true;\n scheduleRafId = requestAnimationFrame(() => {\n rafScheduled = false;\n\n if (!disposed) {\n updatePlacementRef.current();\n }\n });\n };\n\n // ResizeObserver for both anchor and content\n const resizeObserver = new ResizeObserver(scheduleUpdate);\n\n if (props.anchor instanceof Element) resizeObserver.observe(props.anchor);\n\n if (props.content instanceof Element) resizeObserver.observe(props.content);\n\n // Window resize (passive)\n window.addEventListener('resize', scheduleUpdate, { passive: true });\n\n // Scroll listeners\n let scrollParents: Element[] | null = null;\n\n if (isCssAnchorSupported()) {\n // CSS mode: capture-phase scroll on window\n window.addEventListener('scroll', scheduleUpdate, { capture: true, passive: true });\n } else {\n // JS mode: targeted scroll parents only\n scrollParents = getScrollableParents(props.anchor);\n\n for (const parent of scrollParents) {\n parent.addEventListener('scroll', scheduleUpdate, { passive: true });\n }\n }\n\n // Initial placement frames\n const maxFrames = isCssAnchorSupported() ? 5 : 3;\n let frame = 0;\n\n const tick = () => {\n if (disposed) return;\n\n updatePlacementRef.current();\n frame += 1;\n\n if (frame < maxFrames) {\n tickRafId = requestAnimationFrame(tick);\n }\n };\n\n tickRafId = requestAnimationFrame(tick);\n\n return () => {\n disposed = true;\n\n window.removeEventListener('resize', scheduleUpdate);\n\n if (isCssAnchorSupported()) {\n window.removeEventListener('scroll', scheduleUpdate, { capture: true } as EventListenerOptions);\n } else if (scrollParents) {\n for (const parent of scrollParents) {\n parent.removeEventListener('scroll', scheduleUpdate);\n }\n }\n\n resizeObserver.disconnect();\n cancelAnimationFrame(scheduleRafId);\n cancelAnimationFrame(tickRafId);\n };\n }, [props.anchor, props.content]);\n\n // ── Effect: trigger update on prop changes ──\n\n React.useEffect(() => {\n if (!props.anchor || !props.content) return;\n\n updatePlacementRef.current();\n }, [props.anchor, props.content, props.arrow, props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached, props.boundary, props.strategy]);\n\n // ── Effect: onPlacementChange callback ──\n\n const onPlacementChangeRef = React.useRef(props.onPlacementChange);\n\n onPlacementChangeRef.current = props.onPlacementChange;\n\n React.useEffect(() => {\n if (actualSide !== undefined && actualAlign !== undefined) {\n onPlacementChangeRef.current?.({ side: actualSide, align: actualAlign });\n }\n }, [actualSide, actualAlign]);\n\n const state = {\n actualSide,\n actualAlign\n };\n\n return {\n state,\n getTransformOrigin,\n computePosition,\n updatePlacement\n };\n }\n});\n","import { AlignType, SideType } from '@primereact/types/headless/positioner';\n\n// ── CSS Anchor Mode: Detect actual placement from rendered rects ──\n\nexport function getPlacementFromRects(triggerRect: DOMRect, contentRect: DOMRect): { side: SideType; align: AlignType } {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const contentCenterX = contentRect.left + contentRect.width / 2;\n const contentCenterY = contentRect.top + contentRect.height / 2;\n const dx = contentCenterX - triggerCenterX;\n const dy = contentCenterY - triggerCenterY;\n\n const separations: Record<SideType, number> = {\n top: triggerRect.top - contentRect.bottom,\n bottom: contentRect.top - triggerRect.bottom,\n left: triggerRect.left - contentRect.right,\n right: contentRect.left - triggerRect.right\n };\n\n const separated = (Object.entries(separations) as Array<[SideType, number]>).filter(([, value]) => value >= 0);\n const side: SideType = separated.length > 0 ? separated.sort((a, b) => a[1] - b[1])[0][0] : Math.abs(dx) > Math.abs(dy) ? (dx > 0 ? 'right' : 'left') : dy > 0 ? 'bottom' : 'top';\n const epsilon = 4;\n let align: AlignType = 'center';\n\n if (side === 'top' || side === 'bottom') {\n if (Math.abs(contentRect.left - triggerRect.left) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.right - triggerRect.right) <= epsilon) align = 'end';\n } else {\n if (Math.abs(contentRect.top - triggerRect.top) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.bottom - triggerRect.bottom) <= epsilon) align = 'end';\n }\n\n return { side, align };\n}\n\n// ── CSS Anchor Mode: Generate CSS Anchor positioning styles ──\n\nexport type CSSPositionStyle = Record<string, string | undefined>;\n\nexport function computeCSSPosition(side?: SideType, align?: AlignType, sideOffset?: number, alignOffset?: number, flip?: boolean, shift?: boolean, hideWhenDetached?: boolean): CSSPositionStyle {\n const style: Record<string, string> = {\n left: '',\n right: '',\n top: '',\n bottom: '',\n marginTop: '',\n marginRight: '',\n marginBottom: '',\n marginLeft: '',\n positionTryFallbacks: ''\n };\n\n style.positionArea = side ?? '';\n\n const sideMarginMap: Record<SideType, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft'\n };\n\n if (sideOffset) {\n style[sideMarginMap[side as SideType]] = `${sideOffset}px`;\n }\n\n if (align !== 'center') {\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n if (align === 'start') {\n style.left = `calc(anchor(start) + ${alignOffset}px)`;\n } else {\n style.right = `calc(anchor(end) - ${alignOffset}px)`;\n }\n } else {\n if (align === 'start') {\n style.top = `calc(anchor(start) + ${alignOffset}px)`;\n } else {\n style.bottom = `calc(anchor(end) - ${alignOffset}px)`;\n }\n }\n }\n\n if (flip || shift) {\n style.positionTryFallbacks = 'flip-block, flip-inline, flip-block flip-inline';\n }\n\n if (hideWhenDetached) {\n style.positionVisibility = 'anchors-visible';\n } else {\n style.positionVisibility = 'always';\n }\n\n return style;\n}\n","import { SideType } from '@primereact/types/headless/positioner';\nimport { isCssSupported } from '@primeuix/utils';\n\n// ── Feature Detection (lazy, cached — SSR-safe) ──\n\nlet _cssAnchorSupported: boolean | null = null;\n\nexport function isCssAnchorSupported(): boolean {\n if (_cssAnchorSupported === null) {\n _cssAnchorSupported = isCssSupported('anchor-name', '--a');\n }\n\n return _cssAnchorSupported;\n}\n\n// ── Shared Types ──\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface ComputedCoords {\n x: number;\n y: number;\n}\n\n// ── Shared Utilities ──\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function getBoundaryRect(boundary?: HTMLElement | null): Rect {\n if (boundary) {\n const rect = boundary.getBoundingClientRect();\n\n return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };\n }\n\n return { x: 0, y: 0, width: window.innerWidth, height: window.innerHeight };\n}\n\nexport function getLayoutRect(element: HTMLElement, rect: DOMRect) {\n const layoutWidth = element.offsetWidth || rect.width;\n const layoutHeight = element.offsetHeight || rect.height;\n\n if (!layoutWidth || !layoutHeight) {\n return rect;\n }\n\n const scaleX = rect.width / layoutWidth || 1;\n const scaleY = rect.height / layoutHeight || 1;\n const left = rect.left - (layoutWidth * scaleX - layoutWidth) / 2;\n const top = rect.top - (layoutHeight * scaleY - layoutHeight) / 2;\n\n return {\n left,\n top,\n width: layoutWidth,\n height: layoutHeight\n };\n}\n\n// ── Transform Origin (shared by both modes) ──\n\nexport function computeTransformOrigin(side: SideType, arrowX: number, arrowY: number, contentWidth: number, contentHeight: number, arrowSize: number, hasArrow: boolean): string {\n const arrowTip = arrowSize / 2;\n\n if (hasArrow) {\n if (side === 'top') {\n return `${arrowX}px calc(${contentHeight}px + ${arrowTip}px)`;\n }\n\n if (side === 'bottom') {\n return `${arrowX}px calc(0px - ${arrowTip}px)`;\n }\n\n if (side === 'left') {\n return `calc(${contentWidth}px + ${arrowTip}px) ${arrowY}px`;\n }\n\n return `calc(0px - ${arrowTip}px) ${arrowY}px`;\n }\n\n return `${arrowX}px ${arrowY}px`;\n}\n","import { AlignType, SideType } from '@primereact/types/headless/positioner';\nimport { ComputedCoords, Rect, clamp } from './usePositioner.utils';\n\n// ── Opposite Side Map ──\n\nconst OPPOSITE_SIDE: Record<SideType, SideType> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\n// ── Compute Initial Coords ──\n\nexport function computeCoordsFromPlacement(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, align: AlignType, sideOffset: number, alignOffset: number): ComputedCoords {\n let x = 0;\n let y = 0;\n const isVertical = side === 'top' || side === 'bottom';\n\n // Primary axis (side)\n if (side === 'top') {\n y = anchorRect.y - contentHeight - sideOffset;\n } else if (side === 'bottom') {\n y = anchorRect.y + anchorRect.height + sideOffset;\n } else if (side === 'left') {\n x = anchorRect.x - contentWidth - sideOffset;\n } else {\n x = anchorRect.x + anchorRect.width + sideOffset;\n }\n\n // Cross axis (align)\n if (isVertical) {\n if (align === 'start') {\n x = anchorRect.x + alignOffset;\n } else if (align === 'end') {\n x = anchorRect.x + anchorRect.width - contentWidth - alignOffset;\n } else {\n x = anchorRect.x + (anchorRect.width - contentWidth) / 2;\n }\n } else {\n if (align === 'start') {\n y = anchorRect.y + alignOffset;\n } else if (align === 'end') {\n y = anchorRect.y + anchorRect.height - contentHeight - alignOffset;\n } else {\n y = anchorRect.y + (anchorRect.height - contentHeight) / 2;\n }\n }\n\n return { x, y };\n}\n\n// ── Flip Side ──\n\nexport function getFlippedSide(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, sideOffset: number, boundary: Rect): SideType {\n const opposite = OPPOSITE_SIDE[side];\n\n const spaceMap: Record<SideType, number> = {\n top: anchorRect.y - boundary.y - sideOffset,\n bottom: boundary.y + boundary.height - (anchorRect.y + anchorRect.height) - sideOffset,\n left: anchorRect.x - boundary.x - sideOffset,\n right: boundary.x + boundary.width - (anchorRect.x + anchorRect.width) - sideOffset\n };\n\n const neededSize = side === 'top' || side === 'bottom' ? contentHeight : contentWidth;\n\n // Preferred side has enough space\n if (spaceMap[side] >= neededSize) return side;\n\n // Opposite side has enough space\n if (spaceMap[opposite] >= neededSize) return opposite;\n\n // Pick side with most available space\n if (spaceMap[opposite] > spaceMap[side]) return opposite;\n\n return side;\n}\n\n// ── Shift Coords ──\n\nconst VIEWPORT_PADDING = 5;\n\nexport function shiftCoords(x: number, y: number, contentWidth: number, contentHeight: number, side: SideType, boundary: Rect, padding: number = VIEWPORT_PADDING): ComputedCoords {\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n // Clamp horizontal (cross axis)\n x = clamp(x, boundary.x + padding, boundary.x + boundary.width - contentWidth - padding);\n } else {\n // Clamp vertical (cross axis)\n y = clamp(y, boundary.y + padding, boundary.y + boundary.height - contentHeight - padding);\n }\n\n return { x, y };\n}\n\n// ── Arrow Position ──\n\nexport function computeArrowPosition(anchorRect: Rect, contentX: number, contentY: number, contentWidth: number, contentHeight: number, arrowSize: number, side: SideType): { arrowX: number; arrowY: number; arrowLeft: number; arrowTop: number } {\n const arrowHalf = arrowSize / 2;\n const arrowInset = Math.max(8, arrowHalf);\n const isVertical = side === 'top' || side === 'bottom';\n\n const anchorCenterX = anchorRect.x + anchorRect.width / 2;\n const anchorCenterY = anchorRect.y + anchorRect.height / 2;\n\n let arrowX: number;\n let arrowY: number;\n\n if (isVertical) {\n arrowX = clamp(anchorCenterX - contentX, arrowInset, contentWidth - arrowInset);\n arrowY = side === 'bottom' ? 0 : contentHeight;\n } else {\n arrowX = side === 'right' ? 0 : contentWidth;\n arrowY = clamp(anchorCenterY - contentY, arrowInset, contentHeight - arrowInset);\n }\n\n return {\n arrowX,\n arrowY,\n arrowLeft: arrowX - arrowHalf,\n arrowTop: arrowY - arrowHalf\n };\n}\n\n// ── Anchor Detached Check ──\n\nexport function isAnchorDetached(anchorRect: Rect, boundary: Rect): boolean {\n return anchorRect.x + anchorRect.width <= boundary.x || anchorRect.y + anchorRect.height <= boundary.y || anchorRect.x >= boundary.x + boundary.width || anchorRect.y >= boundary.y + boundary.height;\n}\n\n// ── Derive Align from Final Coords ──\n\nexport function deriveAlignFromCoords(x: number, y: number, anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType): AlignType {\n const epsilon = 4;\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n if (Math.abs(x - anchorRect.x) <= epsilon) {\n return 'start';\n }\n\n if (Math.abs(x + contentWidth - (anchorRect.x + anchorRect.width)) <= epsilon) {\n return 'end';\n }\n } else {\n if (Math.abs(y - anchorRect.y) <= epsilon) {\n return 'start';\n }\n\n if (Math.abs(y + contentHeight - (anchorRect.y + anchorRect.height)) <= epsilon) {\n return 'end';\n }\n }\n\n return 'center';\n}\n","import type { UsePositionerProps } from '@primereact/types/headless/positioner';\n\nexport const defaultProps: UsePositionerProps = {\n side: 'bottom',\n align: 'center',\n sideOffset: undefined,\n alignOffset: 0,\n flip: true,\n shift: true,\n hideWhenDetached: false,\n strategy: 'fixed',\n boundary: undefined,\n anchor: undefined,\n content: undefined,\n arrow: undefined,\n autoZIndex: true,\n baseZIndex: 0,\n onPlacementChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","getScrollableParents","ZIndex","React","getPlacementFromRects","triggerRect","contentRect","triggerCenterX","triggerCenterY","contentCenterX","contentCenterY","dx","dy","separations","separated","value","side","a","b","epsilon","align","computeCSSPosition","sideOffset","alignOffset","flip","shift","hideWhenDetached","style","sideMarginMap","isCssSupported","_cssAnchorSupported","isCssAnchorSupported","clamp","value","min","max","getBoundaryRect","boundary","rect","getLayoutRect","element","layoutWidth","layoutHeight","scaleX","scaleY","left","top","computeTransformOrigin","side","arrowX","arrowY","contentWidth","contentHeight","arrowSize","hasArrow","arrowTip","OPPOSITE_SIDE","computeCoordsFromPlacement","anchorRect","contentWidth","contentHeight","side","align","sideOffset","alignOffset","x","y","isVertical","getFlippedSide","boundary","opposite","spaceMap","neededSize","VIEWPORT_PADDING","shiftCoords","padding","clamp","computeArrowPosition","contentX","contentY","arrowSize","arrowHalf","arrowInset","anchorCenterX","anchorCenterY","arrowX","arrowY","isAnchorDetached","deriveAlignFromCoords","defaultProps","usePositioner","withHeadless","defaultProps","id","props","$primereact","_a","_b","actualSide","setActualSide","actualAlign","setActualAlign","anchorName","contentAnchor","propsRef","actualSideRef","getArrowOffset","p","arrow","computed","side","size","borderTop","resolveSideOffset","prevSideRef","prevAlignRef","getTransformOrigin","originSide","originAlign","isVertical","primary","secondary","computePosition","isCssAnchorSupported","computeCSSPosition","updatePlacementCSS","trigger","content","triggerRect","contentRect","positionerLayout","getLayoutRect","nextSide","nextAlign","getPlacementFromRects","prev","sOffset","viewportWidth","viewportHeight","availableHeight","availableWidth","triggerCenterX","triggerCenterY","cssArrowSize","arrowSize","arrowHalf","arrowInset","arrowX","clamp","arrowY","arrowLeft","arrowTop","transformOrigin","computeTransformOrigin","originX","originY","updatePlacementJS","anchor","boundary","getBoundaryRect","anchorDomRect","anchorRect","contentWidth","contentHeight","align","sideOffset","alignOffset","isAnchorDetached","resolvedSide","getFlippedSide","x","y","computeCoordsFromPlacement","resolvedAlign","shifted","shiftCoords","deriveAlignFromCoords","offsetParent","parentRect","arrowPos","computeArrowPosition","anchorCenterX","anchorCenterY","updatePlacement","anchorWidth","updatePlacementRef","position","__spreadProps","__spreadValues","prop","_c","_d","ZIndex","scheduleRafId","tickRafId","rafScheduled","disposed","scheduleUpdate","resizeObserver","scrollParents","getScrollableParents","parent","maxFrames","frame","tick","onPlacementChangeRef"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/progressbar/useProgressBar.ts","../../src/progressbar/useProgressBar.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useProgressBar.props';\n\nexport const useProgressBar = withHeadless({\n name: 'useProgressBar',\n defaultProps,\n setup({ props }) {\n // methods\n const handleProgressValue = (value: number | undefined): number => {\n const minValue = props.min ?? 0;\n const maxValue = props.max ?? 100;\n\n if (minValue >= maxValue) {\n // eslint-disable-next-line no-console\n console.error('[ProgressBar] min must be less than max.');\n\n return 0;\n }\n\n const clampedValue = Math.min(Math.max(value ?? minValue, minValue), maxValue);\n const newValue = ((clampedValue - minValue) / (maxValue - minValue)) * 100;\n const boundedValue = Math.min(Math.max(newValue, 0), 100);\n\n return boundedValue;\n };\n\n const computedValue = React.useMemo(() => {\n return handleProgressValue(props.value);\n }, [props.value, props.min, props.max]);\n\n const formattedValue = React.useMemo(() => {\n return props.formatter?.(computedValue);\n }, [computedValue, props.formatter]);\n\n const state = {\n computedValue,\n formattedValue\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'progressbar' as const,\n 'data-part': 'root' as const\n };\n\n const trackProps = {\n 'data-scope': 'progressbar' as const,\n 'data-part': 'track' as const,\n role: 'progressbar' as const,\n 'aria-valuemin': props.min ?? 0,\n 'aria-valuenow': computedValue,\n 'aria-valuemax': props.max ?? 100\n };\n\n return {\n state,\n // prop getters\n rootProps,\n trackProps\n };\n }\n});\n","import type { UseProgressBarProps } from '@primereact/types/headless/progressbar';\n\nexport const defaultProps: UseProgressBarProps = {\n value: undefined,\n max: 100,\n min: 0,\n formatter: (value: number) =>\n new Intl.NumberFormat(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2\n }).format(value) + '%'\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAoC,CAC7C,MAAO,OACP,IAAK,IACL,IAAK,EACL,UAAYC,GACR,IAAI,KAAK,aAAa,OAAW,CAC7B,sBAAuB,EACvB,sBAAuB,CAC3B,CAAC,EAAE,OAAOA,CAAK,EAAI,GAC3B,EDPO,IAAMC,EAAiBC,EAAa,CACvC,KAAM,iBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAPrB,IAAAC,EAAAC,EASQ,IAAMC,EAAuBC,GAAsC,CAT3E,IAAAH,EAAAC,EAUY,IAAMG,GAAWJ,EAAAD,EAAM,MAAN,KAAAC,EAAa,EACxBK,GAAWJ,EAAAF,EAAM,MAAN,KAAAE,EAAa,IAE9B,GAAIG,GAAYC,EAEZ,eAAQ,MAAM,0CAA0C,EAEjD,EAIX,IAAMC,GADe,KAAK,IAAI,KAAK,IAAIH,GAAA,KAAAA,EAASC,EAAUA,CAAQ,EAAGC,CAAQ,EAC3CD,IAAaC,EAAWD,GAAa,IAGvE,OAFqB,KAAK,IAAI,KAAK,IAAIE,EAAU,CAAC,EAAG,GAAG,CAG5D,EAEMC,EAAsB,UAAQ,IACzBL,EAAoBH,EAAM,KAAK,EACvC,CAACA,EAAM,MAAOA,EAAM,IAAKA,EAAM,GAAG,CAAC,EAEhCS,EAAuB,UAAQ,IAAM,CA/BnD,IAAAR,EAgCY,OAAOA,EAAAD,EAAM,YAAN,YAAAC,EAAA,KAAAD,EAAkBQ,EAC7B,EAAG,CAACA,EAAeR,EAAM,SAAS,CAAC,EAE7BU,EAAQ,CACV,cAAAF,EACA,eAAAC,CACJ,EAGME,EAAY,CACd,aAAc,cACd,YAAa,MACjB,EAEMC,EAAa,CACf,aAAc,cACd,YAAa,QACb,KAAM,cACN,iBAAiBX,EAAAD,EAAM,MAAN,KAAAC,EAAa,EAC9B,gBAAiBO,EACjB,iBAAiBN,EAAAF,EAAM,MAAN,KAAAE,EAAa,GAClC,EAEA,MAAO,CACH,MAAAQ,EAEA,UAAAC,EACA,WAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","value","useProgressBar","withHeadless","defaultProps","props","_a","_b","handleProgressValue","value","minValue","maxValue","newValue","computedValue","formattedValue","state","rootProps","trackProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/progressspinner/useProgressSpinner.ts","../../src/progressspinner/useProgressSpinner.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useProgressSpinner.props';\n\nconst viewBoxSize = 100;\nconst center = viewBoxSize / 2;\n\nexport const useProgressSpinner = withHeadless({\n name: 'useProgressSpinner',\n defaultProps,\n setup({ props }) {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const strokeWidth = props.strokeWidth ?? 4;\n const radius = (viewBoxSize - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n\n const indeterminate = props.value == null;\n const clampedValue = indeterminate ? 0 : Math.min(Math.max(props.value!, min), max);\n const percent = indeterminate ? 0 : ((clampedValue - min) / (max - min)) * 100;\n const determinateState = indeterminate ? ('indeterminate' as const) : ('determinate' as const);\n\n const dashArray = `${circumference}`;\n const dashOffset = indeterminate ? undefined : `${circumference - (percent / 100) * circumference}`;\n\n const state = {\n value: props.value ?? null,\n percent,\n indeterminate\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'progress' as const,\n 'data-part': 'root' as const,\n 'data-state': determinateState,\n ...(indeterminate ? {} : { 'data-value': clampedValue }),\n role: 'progressbar' as const,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': indeterminate ? undefined : clampedValue,\n ...(props.disabled ? { 'data-disabled': '' } : {})\n };\n\n const circleProps = {\n 'data-scope': 'progress' as const,\n 'data-part': 'circle' as const,\n viewBox: `0 0 ${viewBoxSize} ${viewBoxSize}`\n };\n\n const circleTrackProps = {\n 'data-scope': 'progress' as const,\n 'data-part': 'circleTrack' as const,\n 'data-state': determinateState,\n cx: center,\n cy: center,\n r: radius,\n fill: 'none',\n strokeWidth\n };\n\n const circleRangeProps = {\n 'data-scope': 'progress' as const,\n 'data-part': 'circleRange' as const,\n 'data-state': determinateState,\n cx: center,\n cy: center,\n r: radius,\n fill: 'none',\n strokeWidth,\n ...(indeterminate\n ? {}\n : {\n strokeDasharray: dashArray,\n strokeDashoffset: dashOffset,\n strokeLinecap: 'round' as const,\n style: {\n transformOrigin: 'center',\n transform: 'rotate(-90deg)'\n }\n })\n };\n\n return {\n state,\n rootProps,\n circleProps,\n circleTrackProps,\n circleRangeProps\n };\n }\n});\n","import type { UseProgressSpinnerProps } from '@primereact/types/headless/progressspinner';\n\nexport const defaultProps: UseProgressSpinnerProps = {\n value: null,\n min: 0,\n max: 100,\n strokeWidth: 4\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAwC,CACjD,MAAO,KACP,IAAK,EACL,IAAK,IACL,YAAa,CACjB,EDJA,IAAMC,EAAc,IACdC,EAASD,EAAc,EAEhBE,EAAqBC,EAAa,CAC3C,KAAM,qBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CATrB,IAAAC,EAAAC,EAAAC,EAAAC,EAUQ,IAAMC,GAAMJ,EAAAD,EAAM,MAAN,KAAAC,EAAa,EACnBK,GAAMJ,EAAAF,EAAM,MAAN,KAAAE,EAAa,IACnBK,GAAcJ,EAAAH,EAAM,cAAN,KAAAG,EAAqB,EACnCK,GAAUb,EAAcY,GAAe,EACvCE,EAAgB,EAAI,KAAK,GAAKD,EAE9BE,EAAgBV,EAAM,OAAS,KAC/BW,EAAeD,EAAgB,EAAI,KAAK,IAAI,KAAK,IAAIV,EAAM,MAAQK,CAAG,EAAGC,CAAG,EAC5EM,EAAUF,EAAgB,GAAMC,EAAeN,IAAQC,EAAMD,GAAQ,IACrEQ,EAAmBH,EAAiB,gBAA6B,cAEjEI,EAAY,GAAGL,CAAa,GAC5BM,EAAaL,EAAgB,OAAY,GAAGD,EAAiBG,EAAU,IAAOH,CAAa,GAE3FO,EAAQ,CACV,OAAOZ,EAAAJ,EAAM,QAAN,KAAAI,EAAe,KACtB,QAAAQ,EACA,cAAAF,CACJ,EAGMO,EAAYC,EAAAC,EAAAD,EAAA,CACd,aAAc,WACd,YAAa,OACb,aAAcL,GACVH,EAAgB,CAAC,EAAI,CAAE,aAAcC,CAAa,GAJxC,CAKd,KAAM,cACN,gBAAiBN,EACjB,gBAAiBC,EACjB,gBAAiBI,EAAgB,OAAYC,IACzCX,EAAM,SAAW,CAAE,gBAAiB,EAAG,EAAI,CAAC,GAG9CoB,EAAc,CAChB,aAAc,WACd,YAAa,SACb,QAAS,OAAOzB,CAAW,IAAIA,CAAW,EAC9C,EAEM0B,EAAmB,CACrB,aAAc,WACd,YAAa,cACb,aAAcR,EACd,GAAIjB,EACJ,GAAIA,EACJ,EAAGY,EACH,KAAM,OACN,YAAAD,CACJ,EAEMe,EAAmBJ,EAAA,CACrB,aAAc,WACd,YAAa,cACb,aAAcL,EACd,GAAIjB,EACJ,GAAIA,EACJ,EAAGY,EACH,KAAM,OACN,YAAAD,GACIG,EACE,CAAC,EACD,CACI,gBAAiBI,EACjB,iBAAkBC,EAClB,cAAe,QACf,MAAO,CACH,gBAAiB,SACjB,UAAW,gBACf,CACJ,GAGV,MAAO,CACH,MAAAC,EACA,UAAAC,EACA,YAAAG,EACA,iBAAAC,EACA,iBAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","viewBoxSize","center","useProgressSpinner","withHeadless","defaultProps","props","_a","_b","_c","_d","min","max","strokeWidth","radius","circumference","indeterminate","clampedValue","percent","determinateState","dashArray","dashOffset","state","rootProps","__spreadValues","__spreadProps","circleProps","circleTrackProps","circleRangeProps"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/radiobutton/useRadioButton.ts","../../src/radiobutton/useRadioButton.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { defaultProps } from './useRadioButton.props';\n\nexport const useRadioButton = withHeadless({\n name: 'useRadioButton',\n defaultProps,\n setup: ({ props }) => {\n const [checkedState, setCheckedState] = useControlledState({\n value: props.checked,\n defaultValue: props.defaultChecked ?? false,\n onChange: props.onCheckedChange\n });\n\n const state = {\n checked: checkedState\n };\n\n // methods\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const computedChecked = !checkedState;\n\n setCheckedState([\n computedChecked,\n {\n originalEvent: event,\n checked: computedChecked\n }\n ]);\n };\n\n // prop getters\n const inputProps = {\n 'data-scope': 'radiobutton',\n 'data-part': 'input',\n id: props.inputId,\n type: 'radio' as const,\n value: props.value,\n name: props.name,\n checked: checkedState,\n tabIndex: props.tabIndex,\n disabled: props.disabled,\n readOnly: props.readOnly,\n required: props.required,\n 'aria-labelledby': props.ariaLabelledby,\n 'aria-label': props.ariaLabel,\n 'aria-invalid': props.invalid || undefined,\n [checkedState ? 'data-checked' : 'data-unchecked']: '',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.invalid && { 'data-invalid': '' }),\n onFocus: props.onFocus,\n onBlur: props.onBlur,\n onChange: !props.readOnly ? onChange : undefined\n };\n\n const boxProps = {\n 'data-scope': 'radiobutton',\n 'data-part': 'box',\n [checkedState ? 'data-checked' : 'data-unchecked']: '',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n const indicatorProps = {\n 'data-scope': 'radiobutton',\n 'data-part': 'indicator',\n [checkedState ? 'data-checked' : 'data-unchecked']: '',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n const rootProps = {\n 'data-scope': 'radiobutton',\n 'data-part': 'root',\n [checkedState ? 'data-checked' : 'data-unchecked']: '',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n return {\n state,\n // prop getters\n rootProps,\n inputProps,\n boxProps,\n indicatorProps,\n // methods\n onChange\n };\n }\n});\n","import type { UseRadioButtonProps } from '@primereact/types/headless/radiobutton';\n\nexport const defaultProps: UseRadioButtonProps = {\n checked: undefined,\n defaultChecked: undefined,\n inputId: undefined,\n value: undefined,\n name: undefined,\n disabled: undefined,\n readOnly: undefined,\n required: undefined,\n tabIndex: undefined,\n invalid: undefined,\n ariaLabelledby: undefined,\n ariaLabel: undefined,\n onFocus: undefined,\n onBlur: undefined,\n onCheckedChange: undefined\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCCC5B,IAAMC,EAAoC,CAC7C,QAAS,OACT,eAAgB,OAChB,QAAS,OACT,MAAO,OACP,KAAM,OACN,SAAU,OACV,SAAU,OACV,SAAU,OACV,SAAU,OACV,QAAS,OACT,eAAgB,OAChB,UAAW,OACX,QAAS,OACT,OAAQ,OACR,gBAAiB,MACrB,EDdO,IAAMC,EAAiBC,EAAa,CACvC,KAAM,iBACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAP1B,IAAAC,EAQQ,GAAM,CAACC,EAAcC,CAAe,EAAIC,EAAmB,CACvD,MAAOJ,EAAM,QACb,cAAcC,EAAAD,EAAM,iBAAN,KAAAC,EAAwB,GACtC,SAAUD,EAAM,eACpB,CAAC,EAEKK,EAAQ,CACV,QAASH,CACb,EAGMI,EAAYC,GAA+C,CAC7D,IAAMC,EAAkB,CAACN,EAEzBC,EAAgB,CACZK,EACA,CACI,cAAeD,EACf,QAASC,CACb,CACJ,CAAC,CACL,EAGMC,EAAaC,EAAAC,IAAA,CACf,aAAc,cACd,YAAa,QACb,GAAIX,EAAM,QACV,KAAM,QACN,MAAOA,EAAM,MACb,KAAMA,EAAM,KACZ,QAASE,EACT,SAAUF,EAAM,SAChB,SAAUA,EAAM,SAChB,SAAUA,EAAM,SAChB,SAAUA,EAAM,SAChB,kBAAmBA,EAAM,eACzB,aAAcA,EAAM,UACpB,eAAgBA,EAAM,SAAW,OACjC,CAACE,EAAe,eAAiB,gBAAgB,EAAG,IAChDF,EAAM,UAAY,CAAE,gBAAiB,EAAG,GACxCA,EAAM,SAAW,CAAE,eAAgB,EAAG,GAjB3B,CAkBf,QAASA,EAAM,QACf,OAAQA,EAAM,OACd,SAAWA,EAAM,SAAsB,OAAXM,CAChC,GAEMM,EAAWD,IAAA,CACb,aAAc,cACd,YAAa,MACb,CAACT,EAAe,eAAiB,gBAAgB,EAAG,IAChDF,EAAM,UAAY,CAAE,gBAAiB,EAAG,GACxCA,EAAM,SAAW,CAAE,eAAgB,EAAG,GAGxCa,EAAiBF,IAAA,CACnB,aAAc,cACd,YAAa,YACb,CAACT,EAAe,eAAiB,gBAAgB,EAAG,IAChDF,EAAM,UAAY,CAAE,gBAAiB,EAAG,GACxCA,EAAM,SAAW,CAAE,eAAgB,EAAG,GAGxCc,EAAYH,IAAA,CACd,aAAc,cACd,YAAa,OACb,CAACT,EAAe,eAAiB,gBAAgB,EAAG,IAChDF,EAAM,UAAY,CAAE,gBAAiB,EAAG,GACxCA,EAAM,SAAW,CAAE,eAAgB,EAAG,GAG9C,MAAO,CACH,MAAAK,EAEA,UAAAS,EACA,WAAAL,EACA,SAAAG,EACA,eAAAC,EAEA,SAAAP,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","defaultProps","useRadioButton","withHeadless","defaultProps","props","_a","checkedState","setCheckedState","useControlledState","state","onChange","event","computedChecked","inputProps","__spreadProps","__spreadValues","boxProps","indicatorProps","rootProps"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/radiobuttongroup/useRadioButtonGroup.ts","../../src/radiobuttongroup/useRadioButtonGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport type { UseRadioButtonGroupExposes } from '@primereact/types/headless/radiobuttongroup';\nimport * as React from 'react';\nimport { defaultProps } from './useRadioButtonGroup.props';\n\nexport const useRadioButtonGroup = withHeadless({\n name: 'useRadioButtonGroup',\n defaultProps,\n setup: ({ props }) => {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState\n };\n\n // methods\n const updateChange = React.useCallback(\n (event: Parameters<UseRadioButtonGroupExposes['updateChange']>[0]) => {\n const newValue = event.checked ? event.value : undefined;\n\n setValueState?.([newValue, { originalEvent: event.originalEvent, value: newValue }]);\n },\n [valueState, setValueState]\n );\n\n // prop getters\n const rootProps = {\n 'data-scope': 'radiobuttongroup',\n 'data-part': 'root'\n };\n\n return {\n state,\n // prop getters\n rootProps,\n // methods\n updateChange\n };\n }\n});\n","import type { UseRadioButtonGroupProps } from '@primereact/types/headless/radiobuttongroup';\n\nexport const defaultProps: UseRadioButtonGroupProps = {\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCAEnC,UAAYC,MAAW,QCDhB,IAAMC,EAAyC,CAClD,MAAO,OACP,aAAc,OACd,cAAe,MACnB,EDAO,IAAMC,EAAsBC,EAAa,CAC5C,KAAM,sBACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,GAAM,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOH,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EAEKI,EAAQ,CACV,MAAOH,CACX,EAGMI,EAAqB,cACtBC,GAAqE,CAClE,IAAMC,EAAWD,EAAM,QAAUA,EAAM,MAAQ,OAE/CJ,GAAA,MAAAA,EAAgB,CAACK,EAAU,CAAE,cAAeD,EAAM,cAAe,MAAOC,CAAS,CAAC,EACtF,EACA,CAACN,EAAYC,CAAa,CAC9B,EAQA,MAAO,CACH,MAAAE,EAEA,UARc,CACd,aAAc,mBACd,YAAa,MACjB,EAOI,aAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","React","defaultProps","useRadioButtonGroup","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","state","updateChange","event","newValue"]}
File without changes
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/rating/useRating.ts","../../src/rating/useRating.props.ts","../../src/rating/useRatingOption.ts","../../src/rating/useRatingOption.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks';\nimport * as React from 'react';\nimport { defaultProps } from './useRating.props';\n\nexport const useRating = withHeadless({\n name: 'useRating',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange as ((event: unknown) => void) | undefined\n });\n\n const [hovering, setHovering] = React.useState(false);\n const [hoveringValue, setHoveringValue] = React.useState(0);\n\n const generatedName = React.useId();\n const inputName = props.name ?? generatedName;\n const programmaticBlurRef = React.useRef(false);\n\n const updateValue = React.useCallback((event: React.SyntheticEvent, newValue: number) => setValueState([newValue, { originalEvent: event, value: newValue }]), [setValueState]);\n\n const onStartHover = React.useCallback(() => {\n if (!props.disabled && !props.readOnly && !hovering) setHovering(true);\n }, [props.disabled, props.readOnly, hovering]);\n\n const onStopHover = React.useCallback(() => {\n if (!props.disabled && !props.readOnly) setHovering(false);\n }, [props.disabled, props.readOnly]);\n\n const resolvePointerValue = React.useCallback(\n (e: React.PointerEvent | React.MouseEvent, optionEl: Element | null, idx: number): number => {\n if (props.allowHalf && optionEl) {\n const rect = optionEl.getBoundingClientRect();\n const isHalf = props.orientation === 'vertical' ? e.clientY < rect.top + rect.height / 2 : e.clientX < rect.left + rect.width / 2;\n\n return isHalf ? idx + 0.5 : idx + 1;\n }\n\n return idx + 1;\n },\n [props.allowHalf, props.orientation]\n );\n\n const state = {\n value: valueState ?? 0,\n hovering,\n hoveringValue\n };\n\n const rootProps = {\n 'data-scope': 'rating',\n 'data-part': 'root',\n 'data-orientation': props.orientation ?? 'horizontal',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.readOnly && { 'data-readonly': '' }),\n ...(props.invalid && { 'data-invalid': '' }),\n onPointerEnter: () => {\n if (props.disabled || props.readOnly) return;\n\n const active = document.activeElement as HTMLInputElement | null;\n\n if (active?.type === 'radio' && active.name === inputName) {\n programmaticBlurRef.current = true;\n active.blur();\n programmaticBlurRef.current = false;\n }\n\n onStartHover();\n },\n onPointerMove: () => {\n if (!props.disabled && !props.readOnly && !hovering) onStartHover();\n },\n onPointerLeave: () => {\n onStopHover();\n },\n onFocusCapture: (e: React.FocusEvent) => {\n if (props.disabled || props.readOnly) return;\n\n const target = e.target as HTMLInputElement;\n\n if (target.type === 'radio' && target.name === inputName) {\n setHoveringValue(parseFloat(target.value));\n onStartHover();\n }\n },\n onBlurCapture: (e: React.FocusEvent) => {\n if (props.disabled || props.readOnly || programmaticBlurRef.current) return;\n\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n onStopHover();\n }\n }\n };\n\n const optionProps = {\n 'data-scope': 'rating',\n 'data-part': 'option',\n 'data-orientation': props.orientation ?? 'horizontal',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.readOnly && { 'data-readonly': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n const onProps = {\n 'data-scope': 'rating',\n 'data-part': 'option-on',\n 'data-orientation': props.orientation ?? 'horizontal',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.readOnly && { 'data-readonly': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n const offProps = {\n 'data-scope': 'rating',\n 'data-part': 'option-off',\n 'data-orientation': props.orientation ?? 'horizontal',\n ...(props.disabled && { 'data-disabled': '' }),\n ...(props.readOnly && { 'data-readonly': '' }),\n ...(props.invalid && { 'data-invalid': '' })\n };\n\n return {\n state,\n inputName,\n rootProps,\n updateValue,\n setHoveringValue,\n resolvePointerValue,\n optionProps,\n onProps,\n offProps\n };\n }\n});\n","import type { UseRatingProps } from '@primereact/types/headless/rating';\n\nexport const defaultProps: UseRatingProps = {\n value: undefined,\n defaultValue: undefined,\n allowHalf: true,\n name: undefined,\n orientation: 'horizontal',\n disabled: undefined,\n readOnly: undefined,\n invalid: undefined,\n onValueChange: undefined\n};\n","import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultOptionProps } from './useRatingOption.props';\n\nconst srOnlyStyle = { position: 'absolute' as const, width: 1, height: 1, padding: 0, margin: -1, overflow: 'hidden' as const, clip: 'rect(0,0,0,0)', whiteSpace: 'nowrap' as const, borderWidth: 0 };\n\nexport const useRatingOption = withHeadless({\n name: 'useRatingOption',\n defaultProps: defaultOptionProps,\n setup({ props }) {\n const context = props.context;\n const index = props.index;\n const optionRef = React.useRef<Element>(null);\n\n const currentValue = context?.state.value ?? 0;\n const activeValue = context?.state.hovering ? context?.state.hoveringValue : currentValue;\n const highlighted = index >= 0 && activeValue > index;\n const half = highlighted && !!context?.props.allowHalf && activeValue === index + 0.5;\n const checked = index >= 0 && (activeValue === index + 1 || (!!context?.props.allowHalf && activeValue === index + 0.5));\n\n const state = { highlighted, half, checked, activeValue };\n\n const optionProps = {\n 'data-index': index,\n ...(highlighted && { 'data-highlighted': '' }),\n ...(half && { 'data-half': '' }),\n ...(checked && { 'data-checked': '' })\n };\n\n const onPointerMove = React.useCallback(\n (e: React.PointerEvent) => {\n if (!context?.props.disabled && !context?.props.readOnly) {\n context?.setHoveringValue(context.resolvePointerValue(e, optionRef.current, index));\n }\n },\n [context, index]\n );\n\n const onClick = React.useCallback(\n (e: React.MouseEvent) => {\n if (!context?.props.disabled && !context?.props.readOnly) {\n context?.updateValue(e, context.resolvePointerValue(e, optionRef.current, index));\n }\n },\n [context, index]\n );\n\n const onMouseDown = React.useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n }, []);\n\n const onIconProps = { onMouseDown, onPointerMove, onClick };\n const offIconProps = { onMouseDown, onPointerMove, onClick };\n\n const onInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!context?.props.disabled && !context?.props.readOnly) {\n context?.updateValue(e, parseFloat(e.target.value));\n }\n },\n [context]\n );\n\n const inputBaseProps = {\n type: 'radio' as const,\n name: context?.inputName,\n onChange: onInputChange,\n disabled: !!context?.props.disabled,\n 'aria-readonly': context?.props.readOnly || undefined,\n style: srOnlyStyle\n };\n\n const halfInputProps = context?.props.allowHalf\n ? {\n ...inputBaseProps,\n value: index + 0.5,\n checked: currentValue === index + 0.5\n }\n : null;\n\n const fullInputProps = {\n ...inputBaseProps,\n value: index + 1,\n checked: currentValue === index + 1\n };\n\n return {\n state,\n optionRef,\n optionProps,\n onIconProps,\n offIconProps,\n halfInputProps,\n fullInputProps,\n onPointerMove,\n onClick,\n onMouseDown\n };\n }\n});\n","import type { UseRatingOptionProps } from '@primereact/types/headless/rating';\n\nexport const defaultOptionProps: UseRatingOptionProps = {\n index: 0,\n context: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","React","defaultProps","useRating","withHeadless","defaultProps","props","_a","_b","_c","_d","_e","valueState","setValueState","useControlledState","hovering","setHovering","hoveringValue","setHoveringValue","generatedName","inputName","programmaticBlurRef","updateValue","event","newValue","onStartHover","onStopHover","resolvePointerValue","e","optionEl","idx","rect","state","rootProps","__spreadProps","__spreadValues","active","target","optionProps","onProps","offProps","withHeadless","React","defaultOptionProps","srOnlyStyle","useRatingOption","withHeadless","defaultOptionProps","props","_a","context","index","optionRef","currentValue","activeValue","highlighted","half","checked","state","optionProps","__spreadValues","onPointerMove","e","onClick","onMouseDown","onIconProps","offIconProps","onInputChange","inputBaseProps","halfInputProps","__spreadProps","fullInputProps"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/scrollarea/useScrollArea.ts","../../src/scrollarea/useScrollArea.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useScrollArea.props';\n\nconst SCROLL_TIMEOUT = 500;\nconst MIN_HANDLE_SIZE = 20;\n\nexport const useScrollArea = withHeadless({\n name: 'useScrollArea',\n defaultProps,\n setup({ props }) {\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const viewportRef = React.useRef<HTMLDivElement | null>(null);\n const scrollbarYRef = React.useRef<HTMLDivElement | null>(null);\n const scrollbarXRef = React.useRef<HTMLDivElement | null>(null);\n const handleYRef = React.useRef<HTMLDivElement | null>(null);\n const handleXRef = React.useRef<HTMLDivElement | null>(null);\n const cornerRef = React.useRef<HTMLDivElement | null>(null);\n\n const [hovering, setHovering] = React.useState(false);\n const [scrollingX, setScrollingX] = React.useState(false);\n const [scrollingY, setScrollingY] = React.useState(false);\n const [touchModality, setTouchModality] = React.useState(false);\n\n const [scrollMeta, setScrollMeta] = React.useState({\n hiddenX: true,\n hiddenY: true,\n cornerHidden: true,\n cornerWidth: 0,\n cornerHeight: 0,\n xBefore: false,\n xAfter: false,\n yBefore: false,\n yAfter: false\n });\n\n const isDraggingRef = React.useRef(false);\n const dragOrientationRef = React.useRef<'vertical' | 'horizontal'>('vertical');\n const dragStartRef = React.useRef({ pointerPos: 0, scrollPos: 0 });\n const prevScrollRef = React.useRef({ top: 0, left: 0 });\n\n const scrollXTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const scrollYTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = React.useRef<number | null>(null);\n\n const computeHandle = React.useCallback(function computeHandle() {\n const vp = viewportRef.current;\n\n if (!vp) return;\n\n const { scrollHeight, scrollWidth, clientHeight, clientWidth, scrollTop, scrollLeft } = vp;\n const yHidden = clientHeight >= scrollHeight;\n const xHidden = clientWidth >= scrollWidth;\n\n const scrollbarY = scrollbarYRef.current;\n const scrollbarX = scrollbarXRef.current;\n\n const cw = !yHidden && !xHidden && scrollbarY ? scrollbarY.offsetWidth : 0;\n const ch = !yHidden && !xHidden && scrollbarX ? scrollbarX.offsetHeight : 0;\n const scrollbarYHeight = scrollbarY && !yHidden ? scrollbarY.offsetHeight : 0;\n const scrollbarXWidth = scrollbarX && !xHidden ? scrollbarX.offsetWidth : 0;\n\n setScrollMeta((prev) => {\n const next = {\n hiddenX: xHidden,\n hiddenY: yHidden,\n cornerHidden: xHidden || yHidden,\n cornerWidth: cw,\n cornerHeight: ch,\n xBefore: !xHidden && scrollLeft > 0,\n xAfter: !xHidden && scrollWidth - clientWidth - scrollLeft > 1,\n yBefore: !yHidden && scrollTop > 0,\n yAfter: !yHidden && scrollHeight - clientHeight - scrollTop > 1\n };\n\n return prev.hiddenX === next.hiddenX &&\n prev.hiddenY === next.hiddenY &&\n prev.cornerHidden === next.cornerHidden &&\n prev.cornerWidth === next.cornerWidth &&\n prev.cornerHeight === next.cornerHeight &&\n prev.xBefore === next.xBefore &&\n prev.xAfter === next.xAfter &&\n prev.yBefore === next.yBefore &&\n prev.yAfter === next.yAfter\n ? prev\n : next;\n });\n\n if (scrollbarY && !yHidden && scrollbarYHeight > 0) {\n const handleRatio = clientHeight / scrollHeight;\n const handleHeight = Math.max(handleRatio * scrollbarYHeight, MIN_HANDLE_SIZE);\n const availableTrack = scrollbarYHeight - handleHeight;\n const maxScrollTop = scrollHeight - clientHeight;\n const scrollRatio = maxScrollTop > 0 ? scrollTop / maxScrollTop : 0;\n const offsetPx = scrollRatio * availableTrack;\n\n scrollbarY.style.setProperty('--px-handle-height', `${handleHeight}px`);\n scrollbarY.style.setProperty('--px-handle-offset', `${offsetPx}px`);\n }\n\n if (scrollbarX && !xHidden && scrollbarXWidth > 0) {\n const handleRatio = clientWidth / scrollWidth;\n const handleWidth = Math.max(handleRatio * scrollbarXWidth, MIN_HANDLE_SIZE);\n const availableTrack = scrollbarXWidth - handleWidth;\n const maxScrollLeft = scrollWidth - clientWidth;\n const scrollRatio = maxScrollLeft > 0 ? scrollLeft / maxScrollLeft : 0;\n const offsetPx = scrollRatio * availableTrack;\n\n scrollbarX.style.setProperty('--px-handle-width', `${handleWidth}px`);\n scrollbarX.style.setProperty('--px-handle-offset', `${offsetPx}px`);\n }\n }, []);\n\n const handleScroll = React.useCallback(\n function handleScroll() {\n if (!rafRef.current) {\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n computeHandle();\n });\n }\n\n const vp = viewportRef.current;\n\n if (!vp) return;\n\n const { scrollTop, scrollLeft } = vp;\n const prev = prevScrollRef.current;\n\n if (scrollTop !== prev.top) {\n setScrollingY((s) => s || true);\n\n if (scrollYTimeoutRef.current) clearTimeout(scrollYTimeoutRef.current);\n\n scrollYTimeoutRef.current = setTimeout(() => setScrollingY(false), SCROLL_TIMEOUT);\n }\n\n if (scrollLeft !== prev.left) {\n setScrollingX((s) => s || true);\n\n if (scrollXTimeoutRef.current) clearTimeout(scrollXTimeoutRef.current);\n\n scrollXTimeoutRef.current = setTimeout(() => setScrollingX(false), SCROLL_TIMEOUT);\n }\n\n prev.top = scrollTop;\n prev.left = scrollLeft;\n },\n [computeHandle]\n );\n\n const handleScrollbarWheel = React.useCallback(function handleScrollbarWheel(event: React.WheelEvent<HTMLDivElement>, orientation: 'vertical' | 'horizontal') {\n const vp = viewportRef.current;\n\n if (!vp || event.ctrlKey) return;\n\n if (orientation === 'vertical') {\n vp.scrollTop += event.deltaY;\n } else {\n vp.scrollLeft += event.deltaX || event.deltaY;\n }\n }, []);\n\n const handleHandlePointerDown = React.useCallback(function handleHandlePointerDown(event: React.PointerEvent<HTMLDivElement>, orientation: 'vertical' | 'horizontal') {\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n const isVertical = orientation === 'vertical';\n const scrollbar = isVertical ? scrollbarYRef.current : scrollbarXRef.current;\n const vp = viewportRef.current;\n\n if (!scrollbar || !vp) return;\n\n scrollbar.setPointerCapture(event.pointerId);\n isDraggingRef.current = true;\n dragOrientationRef.current = orientation;\n dragStartRef.current = {\n pointerPos: isVertical ? event.clientY : event.clientX,\n scrollPos: isVertical ? vp.scrollTop : vp.scrollLeft\n };\n }, []);\n\n const handleScrollbarPointerDown = React.useCallback(function handleScrollbarPointerDown(event: React.PointerEvent<HTMLDivElement>, orientation: 'vertical' | 'horizontal') {\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n\n const isVertical = orientation === 'vertical';\n const scrollbar = isVertical ? scrollbarYRef.current : scrollbarXRef.current;\n const vp = viewportRef.current;\n\n if (!scrollbar || !vp) return;\n\n scrollbar.setPointerCapture(event.pointerId);\n isDraggingRef.current = true;\n dragOrientationRef.current = orientation;\n\n const rect = scrollbar.getBoundingClientRect();\n const handle = isVertical ? handleYRef.current : handleXRef.current;\n const handleSize = handle ? (isVertical ? handle.offsetHeight : handle.offsetWidth) : 0;\n const trackSize = isVertical ? rect.height : rect.width;\n const effectiveTrack = trackSize - handleSize;\n\n if (effectiveTrack > 0) {\n const clickPos = (isVertical ? event.clientY - rect.top : event.clientX - rect.left) - handleSize / 2;\n const ratio = Math.max(0, Math.min(1, clickPos / effectiveTrack));\n const maxScroll = isVertical ? vp.scrollHeight - vp.clientHeight : vp.scrollWidth - vp.clientWidth;\n\n if (isVertical) {\n vp.scrollTop = ratio * maxScroll;\n } else {\n vp.scrollLeft = ratio * maxScroll;\n }\n }\n\n dragStartRef.current = {\n pointerPos: isVertical ? event.clientY : event.clientX,\n scrollPos: isVertical ? vp.scrollTop : vp.scrollLeft\n };\n }, []);\n\n const handleScrollbarPointerMove = React.useCallback(function handleScrollbarPointerMove(event: React.PointerEvent<HTMLDivElement>) {\n if (!isDraggingRef.current) return;\n\n event.preventDefault();\n\n const isVertical = dragOrientationRef.current === 'vertical';\n const vp = viewportRef.current;\n const scrollbar = isVertical ? scrollbarYRef.current : scrollbarXRef.current;\n\n if (!vp || !scrollbar) return;\n\n const rect = scrollbar.getBoundingClientRect();\n const handle = isVertical ? handleYRef.current : handleXRef.current;\n const handleSize = handle ? (isVertical ? handle.offsetHeight : handle.offsetWidth) : 0;\n const trackSize = isVertical ? rect.height : rect.width;\n const effectiveTrack = trackSize - handleSize;\n\n if (effectiveTrack <= 0) return;\n\n const currentPos = isVertical ? event.clientY : event.clientX;\n const delta = currentPos - dragStartRef.current.pointerPos;\n const maxScroll = isVertical ? vp.scrollHeight - vp.clientHeight : vp.scrollWidth - vp.clientWidth;\n const scrollDelta = (delta / effectiveTrack) * maxScroll;\n\n if (isVertical) {\n vp.scrollTop = dragStartRef.current.scrollPos + scrollDelta;\n } else {\n vp.scrollLeft = dragStartRef.current.scrollPos + scrollDelta;\n }\n }, []);\n\n const handleScrollbarPointerUp = React.useCallback(function handleScrollbarPointerUp(event: React.PointerEvent<HTMLDivElement>) {\n event.preventDefault();\n event.currentTarget.releasePointerCapture(event.pointerId);\n isDraggingRef.current = false;\n }, []);\n\n const onRootPointerEnter = React.useCallback(function onRootPointerEnter(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'touch') {\n setTouchModality(true);\n } else {\n setTouchModality(false);\n setHovering(true);\n }\n }, []);\n\n const onRootPointerLeave = React.useCallback(function onRootPointerLeave() {\n setHovering(false);\n }, []);\n\n const onRootPointerDown = React.useCallback(function onRootPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (event.pointerType === 'touch') {\n setTouchModality(true);\n }\n }, []);\n\n React.useLayoutEffect(() => {\n const vp = viewportRef.current;\n\n if (!vp) return;\n\n let localRaf: number | null = null;\n\n const observer = new ResizeObserver(() => {\n if (localRaf) return;\n\n localRaf = requestAnimationFrame(() => {\n localRaf = null;\n computeHandle();\n });\n });\n\n observer.observe(vp);\n\n if (vp.firstElementChild) {\n observer.observe(vp.firstElementChild);\n }\n\n computeHandle();\n\n return () => {\n observer.disconnect();\n\n if (localRaf) cancelAnimationFrame(localRaf);\n };\n }, [computeHandle]);\n\n React.useLayoutEffect(() => {\n computeHandle();\n }, [scrollMeta.hiddenX, scrollMeta.hiddenY, computeHandle]);\n\n React.useEffect(() => {\n return () => {\n clearTimeout(scrollXTimeoutRef.current ?? undefined);\n clearTimeout(scrollYTimeoutRef.current ?? undefined);\n\n if (rafRef.current) cancelAnimationFrame(rafRef.current);\n };\n }, []);\n\n const cornerSize = React.useMemo(() => ({ width: scrollMeta.cornerWidth, height: scrollMeta.cornerHeight }), [scrollMeta.cornerWidth, scrollMeta.cornerHeight]);\n\n const hiddenState = React.useMemo(() => ({ x: scrollMeta.hiddenX, y: scrollMeta.hiddenY, corner: scrollMeta.cornerHidden }), [scrollMeta.hiddenX, scrollMeta.hiddenY, scrollMeta.cornerHidden]);\n\n const scrolling = scrollingX || scrollingY;\n const hasOverflowX = !scrollMeta.hiddenX;\n const hasOverflowY = !scrollMeta.hiddenY;\n\n const state = React.useMemo(\n () => ({\n hovering,\n scrollingX,\n scrollingY,\n scrolling,\n touchModality,\n hasOverflowX,\n hasOverflowY,\n scrollXBefore: scrollMeta.xBefore,\n scrollXAfter: scrollMeta.xAfter,\n scrollYBefore: scrollMeta.yBefore,\n scrollYAfter: scrollMeta.yAfter,\n cornerHidden: scrollMeta.cornerHidden\n }),\n [hovering, scrollingX, scrollingY, scrolling, touchModality, hasOverflowX, hasOverflowY, scrollMeta]\n );\n\n const scrollDataAttributes = React.useMemo(\n () => ({\n ...(scrolling && { 'data-scrolling': '' as const }),\n ...(hasOverflowX && { 'data-has-overflow-x': '' as const }),\n ...(hasOverflowY && { 'data-has-overflow-y': '' as const }),\n ...(scrollMeta.xBefore && { 'data-scroll-x-before': '' as const }),\n ...(scrollMeta.xAfter && { 'data-scroll-x-after': '' as const }),\n ...(scrollMeta.yBefore && { 'data-scroll-y-before': '' as const }),\n ...(scrollMeta.yAfter && { 'data-scroll-y-after': '' as const })\n }),\n [scrolling, hasOverflowX, hasOverflowY, scrollMeta.xBefore, scrollMeta.xAfter, scrollMeta.yBefore, scrollMeta.yAfter]\n );\n\n const rootProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'root' as const,\n ref: rootRef,\n role: 'presentation' as const,\n 'data-variant': props.variant,\n ...(props.mask && { 'data-mask': '' as const }),\n ...scrollDataAttributes,\n onPointerEnter: onRootPointerEnter,\n onPointerLeave: onRootPointerLeave,\n onPointerDown: onRootPointerDown,\n style: {\n position: 'relative' as const,\n '--px-corner-height': `${cornerSize.height}px`,\n '--px-corner-width': `${cornerSize.width}px`\n } as React.CSSProperties\n }),\n [props.variant, props.mask, scrollDataAttributes, onRootPointerEnter, onRootPointerLeave, onRootPointerDown, cornerSize]\n );\n\n const tabIndex = hasOverflowX || hasOverflowY ? props.tabIndex || 0 : undefined;\n\n const viewportProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'viewport' as const,\n ref: viewportRef,\n tabIndex,\n onScroll: handleScroll,\n ...scrollDataAttributes,\n style: {\n overflow: 'scroll' as const,\n scrollbarWidth: 'none' as const\n } as React.CSSProperties\n }),\n [tabIndex, handleScroll, scrollDataAttributes]\n );\n\n const onScrollbarYPointerDown = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => handleScrollbarPointerDown(event, 'vertical'), [handleScrollbarPointerDown]);\n const onScrollbarXPointerDown = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => handleScrollbarPointerDown(event, 'horizontal'), [handleScrollbarPointerDown]);\n const onScrollbarYWheel = React.useCallback((event: React.WheelEvent<HTMLDivElement>) => handleScrollbarWheel(event, 'vertical'), [handleScrollbarWheel]);\n const onScrollbarXWheel = React.useCallback((event: React.WheelEvent<HTMLDivElement>) => handleScrollbarWheel(event, 'horizontal'), [handleScrollbarWheel]);\n const onHandleYPointerDown = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => handleHandlePointerDown(event, 'vertical'), [handleHandlePointerDown]);\n const onHandleXPointerDown = React.useCallback((event: React.PointerEvent<HTMLDivElement>) => handleHandlePointerDown(event, 'horizontal'), [handleHandlePointerDown]);\n\n const scrollbarBaseStyle: React.CSSProperties = {\n position: 'absolute',\n touchAction: 'none',\n userSelect: 'none',\n WebkitUserSelect: 'none'\n };\n\n const scrollbarYProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'scrollbar-y' as const,\n 'data-orientation': 'vertical' as const,\n ...(hovering && { 'data-hovering': '' as const }),\n ...(scrollingY && { 'data-scrolling': '' as const }),\n ref: scrollbarYRef,\n onPointerDown: onScrollbarYPointerDown,\n onPointerMove: handleScrollbarPointerMove,\n onPointerUp: handleScrollbarPointerUp,\n onWheel: onScrollbarYWheel,\n style: {\n ...scrollbarBaseStyle,\n top: 0,\n bottom: 'var(--px-corner-height)',\n insetInlineEnd: 0\n } as React.CSSProperties\n }),\n [hovering, scrollingY, onScrollbarYPointerDown, handleScrollbarPointerMove, handleScrollbarPointerUp, onScrollbarYWheel]\n );\n\n const scrollbarXProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'scrollbar-x' as const,\n 'data-orientation': 'horizontal' as const,\n ...(hovering && { 'data-hovering': '' as const }),\n ...(scrollingX && { 'data-scrolling': '' as const }),\n ref: scrollbarXRef,\n onPointerDown: onScrollbarXPointerDown,\n onPointerMove: handleScrollbarPointerMove,\n onPointerUp: handleScrollbarPointerUp,\n onWheel: onScrollbarXWheel,\n style: {\n ...scrollbarBaseStyle,\n bottom: 0,\n insetInlineStart: 0,\n insetInlineEnd: 'var(--px-corner-width)'\n } as React.CSSProperties\n }),\n [hovering, scrollingX, onScrollbarXPointerDown, handleScrollbarPointerMove, handleScrollbarPointerUp, onScrollbarXWheel]\n );\n\n const handleYProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'handle-y' as const,\n 'data-orientation': 'vertical' as const,\n ref: handleYRef,\n onPointerDown: onHandleYPointerDown,\n style: {\n height: 'var(--px-handle-height, 0px)',\n transform: 'translate3d(0, var(--px-handle-offset, 0px), 0)'\n } as React.CSSProperties\n }),\n [onHandleYPointerDown]\n );\n\n const handleXProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'handle-x' as const,\n 'data-orientation': 'horizontal' as const,\n ref: handleXRef,\n onPointerDown: onHandleXPointerDown,\n style: {\n width: 'var(--px-handle-width, 0px)',\n transform: 'translate3d(var(--px-handle-offset, 0px), 0, 0)'\n } as React.CSSProperties\n }),\n [onHandleXPointerDown]\n );\n\n const contentProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'content' as const,\n style: {\n minWidth: hasOverflowX ? 'fit-content' : undefined,\n minHeight: hasOverflowY ? 'fit-content' : undefined\n } as React.CSSProperties\n }),\n [hasOverflowX, hasOverflowY]\n );\n\n const cornerProps = React.useMemo(\n () => ({\n 'data-scope': 'scrollarea' as const,\n 'data-part': 'corner' as const,\n ref: cornerRef,\n style: {\n position: 'absolute' as const,\n bottom: 0,\n insetInlineEnd: 0,\n width: 'var(--px-corner-width)',\n height: 'var(--px-corner-height)'\n } as React.CSSProperties\n }),\n []\n );\n\n return {\n state,\n cornerSize,\n hiddenState,\n // prop getters\n rootProps,\n viewportProps,\n contentProps,\n scrollbarYProps,\n scrollbarXProps,\n handleYProps,\n handleXProps,\n cornerProps,\n // methods\n computeHandle,\n handleScroll,\n handleScrollbarPointerDown,\n handleScrollbarPointerMove,\n handleScrollbarPointerUp,\n handleScrollbarWheel,\n handleHandlePointerDown,\n onRootPointerEnter,\n onRootPointerLeave,\n onRootPointerDown\n };\n }\n});\n","import type { UseScrollAreaProps } from '@primereact/types/headless/scrollarea';\n\nexport const defaultProps: UseScrollAreaProps = {\n variant: 'auto',\n mask: false,\n tabIndex: 0\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","SCROLL_TIMEOUT","MIN_HANDLE_SIZE","useScrollArea","withHeadless","defaultProps","props","rootRef","viewportRef","scrollbarYRef","scrollbarXRef","handleYRef","handleXRef","cornerRef","hovering","setHovering","scrollingX","setScrollingX","scrollingY","setScrollingY","touchModality","setTouchModality","scrollMeta","setScrollMeta","isDraggingRef","dragOrientationRef","dragStartRef","prevScrollRef","scrollXTimeoutRef","scrollYTimeoutRef","rafRef","computeHandle","vp","scrollHeight","scrollWidth","clientHeight","clientWidth","scrollTop","scrollLeft","yHidden","xHidden","scrollbarY","scrollbarX","cw","ch","scrollbarYHeight","scrollbarXWidth","prev","next","handleRatio","handleHeight","availableTrack","maxScrollTop","offsetPx","handleWidth","maxScrollLeft","handleScroll","s","handleScrollbarWheel","event","orientation","handleHandlePointerDown","isVertical","scrollbar","handleScrollbarPointerDown","rect","handle","handleSize","effectiveTrack","clickPos","ratio","maxScroll","handleScrollbarPointerMove","delta","scrollDelta","handleScrollbarPointerUp","onRootPointerEnter","onRootPointerLeave","onRootPointerDown","localRaf","observer","_a","_b","cornerSize","hiddenState","scrolling","hasOverflowX","hasOverflowY","state","scrollDataAttributes","__spreadValues","rootProps","__spreadProps","tabIndex","viewportProps","onScrollbarYPointerDown","onScrollbarXPointerDown","onScrollbarYWheel","onScrollbarXWheel","onHandleYPointerDown","onHandleXPointerDown","scrollbarBaseStyle","scrollbarYProps","scrollbarXProps","handleYProps","handleXProps","contentProps","cornerProps"]}
File without changes