@primereact/headless 11.0.0-alpha.9 → 11.0.0-rc.1

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 (592) hide show
  1. package/LICENSE.md +45 -0
  2. package/README.md +35 -0
  3. package/accordion/index.d.ts +3 -0
  4. package/accordion/index.mjs +1 -1
  5. package/accordion/index.mjs.map +1 -1
  6. package/accordion/useAccordion.d.ts +7 -6
  7. package/accordion/useAccordion.props.d.ts +2 -2
  8. package/accordion/useAccordionPanel.d.ts +46 -0
  9. package/accordion/useAccordionPanel.props.d.ts +2 -0
  10. package/animateonscroll/index.d.ts +1 -0
  11. package/animateonscroll/index.mjs +1 -1
  12. package/animateonscroll/index.mjs.map +1 -1
  13. package/animateonscroll/useAnimateOnScroll.d.ts +6 -1
  14. package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -2
  15. package/autocomplete/index.d.ts +3 -0
  16. package/autocomplete/index.mjs +2 -0
  17. package/autocomplete/index.mjs.map +1 -0
  18. package/autocomplete/useAutoComplete.d.ts +198 -0
  19. package/autocomplete/useAutoComplete.props.d.ts +2 -0
  20. package/avatar/index.d.ts +1 -0
  21. package/avatar/index.mjs +1 -1
  22. package/avatar/index.mjs.map +1 -1
  23. package/avatar/useAvatar.d.ts +5 -1
  24. package/avatar/useAvatar.props.d.ts +2 -2
  25. package/avatargroup/index.d.ts +3 -0
  26. package/avatargroup/index.mjs +2 -0
  27. package/avatargroup/index.mjs.map +1 -0
  28. package/avatargroup/useAvatarGroup.d.ts +6 -0
  29. package/avatargroup/useAvatarGroup.props.d.ts +2 -0
  30. package/badge/index.d.ts +1 -0
  31. package/badge/index.mjs +1 -1
  32. package/badge/index.mjs.map +1 -1
  33. package/badge/useBadge.d.ts +7 -1
  34. package/badge/useBadge.props.d.ts +2 -2
  35. package/breadcrumb/index.d.ts +1 -0
  36. package/breadcrumb/index.mjs +1 -1
  37. package/breadcrumb/index.mjs.map +1 -1
  38. package/breadcrumb/useBreadcrumb.d.ts +18 -2
  39. package/breadcrumb/useBreadcrumb.props.d.ts +2 -2
  40. package/button/index.d.ts +1 -0
  41. package/button/index.mjs +1 -1
  42. package/button/index.mjs.map +1 -1
  43. package/button/useButton.d.ts +6 -1
  44. package/button/useButton.props.d.ts +2 -2
  45. package/card/index.d.ts +1 -0
  46. package/card/index.mjs +1 -1
  47. package/card/index.mjs.map +1 -1
  48. package/card/useCard.d.ts +6 -1
  49. package/card/useCard.props.d.ts +2 -2
  50. package/carousel/index.d.ts +1 -0
  51. package/carousel/index.mjs +1 -1
  52. package/carousel/index.mjs.map +1 -1
  53. package/carousel/useCarousel.d.ts +101 -5
  54. package/carousel/useCarousel.props.d.ts +2 -2
  55. package/checkbox/index.d.ts +1 -0
  56. package/checkbox/index.mjs +1 -1
  57. package/checkbox/index.mjs.map +1 -1
  58. package/checkbox/useCheckbox.d.ts +44 -3
  59. package/checkbox/useCheckbox.props.d.ts +2 -2
  60. package/checkboxgroup/index.d.ts +3 -0
  61. package/checkboxgroup/index.mjs +2 -0
  62. package/checkboxgroup/index.mjs.map +1 -0
  63. package/checkboxgroup/useCheckboxGroup.d.ts +11 -0
  64. package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
  65. package/chip/index.d.ts +1 -0
  66. package/chip/index.mjs +1 -1
  67. package/chip/index.mjs.map +1 -1
  68. package/chip/useChip.d.ts +9 -3
  69. package/chip/useChip.props.d.ts +2 -2
  70. package/collapsible/index.d.ts +3 -0
  71. package/collapsible/index.mjs +2 -0
  72. package/collapsible/index.mjs.map +1 -0
  73. package/collapsible/useCollapsible.d.ts +33 -0
  74. package/collapsible/useCollapsible.props.d.ts +2 -0
  75. package/compare/index.d.ts +3 -0
  76. package/compare/index.mjs +2 -0
  77. package/compare/index.mjs.map +1 -0
  78. package/compare/useCompare.d.ts +2 -0
  79. package/compare/useCompare.props.d.ts +2 -0
  80. package/contextmenu/index.d.ts +1 -0
  81. package/contextmenu/index.mjs +1 -1
  82. package/contextmenu/index.mjs.map +1 -1
  83. package/contextmenu/submenu/index.d.ts +2 -0
  84. package/contextmenu/submenu/index.mjs +2 -0
  85. package/contextmenu/submenu/index.mjs.map +1 -0
  86. package/contextmenu/submenu/useContextMenuSubmenu.d.ts +121 -0
  87. package/contextmenu/submenu/useContextMenuSubmenu.props.d.ts +2 -0
  88. package/contextmenu/useContextMenu.d.ts +413 -1
  89. package/contextmenu/useContextMenu.props.d.ts +2 -2
  90. package/datatable/features/index.d.ts +28 -0
  91. package/datatable/features/index.mjs +11 -0
  92. package/datatable/features/index.mjs.map +1 -0
  93. package/datatable/features/useDataTableColumnReorder.d.ts +52 -0
  94. package/datatable/features/useDataTableColumnResize.d.ts +20 -0
  95. package/datatable/features/useDataTableEditing.d.ts +69 -0
  96. package/datatable/features/useDataTableExpansion.d.ts +32 -0
  97. package/datatable/features/useDataTableExport.d.ts +43 -0
  98. package/datatable/features/useDataTableFilter.d.ts +95 -0
  99. package/datatable/features/useDataTableGrouping.d.ts +11 -0
  100. package/datatable/features/useDataTableKeyboard.d.ts +23 -0
  101. package/datatable/features/useDataTablePagination.d.ts +32 -0
  102. package/datatable/features/useDataTableRowReorder.d.ts +42 -0
  103. package/datatable/features/useDataTableSelection.d.ts +28 -0
  104. package/datatable/features/useDataTableSort.d.ts +51 -0
  105. package/datatable/features/useDataTableTree.d.ts +31 -0
  106. package/datatable/index.d.ts +7 -0
  107. package/datatable/index.mjs +11 -0
  108. package/datatable/index.mjs.map +1 -0
  109. package/datatable/useDataTable.d.ts +237 -0
  110. package/datatable/useDataTable.props.d.ts +2 -0
  111. package/datatable/useDataTableRow.d.ts +30 -0
  112. package/datatable/useDataTableRow.props.d.ts +2 -0
  113. package/datatable/utils/compareValues.d.ts +20 -0
  114. package/datatable/utils/index.d.ts +1 -0
  115. package/datatable/utils/index.mjs +2 -0
  116. package/datatable/utils/index.mjs.map +1 -0
  117. package/dataview/index.d.ts +1 -0
  118. package/dataview/index.mjs +1 -1
  119. package/dataview/index.mjs.map +1 -1
  120. package/dataview/useDataView.d.ts +25 -1
  121. package/dataview/useDataView.props.d.ts +2 -2
  122. package/datepicker/index.d.ts +1 -0
  123. package/datepicker/index.mjs +1 -1
  124. package/datepicker/index.mjs.map +1 -1
  125. package/datepicker/useDatePicker.d.ts +2 -114
  126. package/datepicker/useDatePicker.props.d.ts +2 -2
  127. package/dialog/index.d.ts +1 -0
  128. package/dialog/index.mjs +1 -1
  129. package/dialog/index.mjs.map +1 -1
  130. package/dialog/useDialog.d.ts +274 -24
  131. package/dialog/useDialog.props.d.ts +2 -2
  132. package/divider/index.d.ts +1 -0
  133. package/divider/index.mjs +1 -1
  134. package/divider/index.mjs.map +1 -1
  135. package/divider/useDivider.d.ts +14 -1
  136. package/divider/useDivider.props.d.ts +2 -2
  137. package/dnd/index.d.ts +11 -0
  138. package/dnd/index.mjs +2 -0
  139. package/dnd/index.mjs.map +1 -0
  140. package/dnd/useDnd.d.ts +45 -0
  141. package/dnd/useDnd.props.d.ts +2 -0
  142. package/dnd/useDraggable.d.ts +14 -0
  143. package/dnd/useDraggable.props.d.ts +2 -0
  144. package/dnd/useDroppable.d.ts +11 -0
  145. package/dnd/useDroppable.props.d.ts +2 -0
  146. package/dnd/useSortable.d.ts +11 -0
  147. package/dnd/useSortable.props.d.ts +2 -0
  148. package/dnd/useSortableContainer.d.ts +24 -0
  149. package/dnd/useSortableContainer.props.d.ts +2 -0
  150. package/drawer/index.d.ts +1 -0
  151. package/drawer/index.mjs +1 -1
  152. package/drawer/index.mjs.map +1 -1
  153. package/drawer/useDrawer.d.ts +78 -16
  154. package/drawer/useDrawer.props.d.ts +2 -2
  155. package/fieldset/index.d.ts +1 -0
  156. package/fieldset/index.mjs +1 -1
  157. package/fieldset/index.mjs.map +1 -1
  158. package/fieldset/useFieldset.d.ts +80 -1
  159. package/fieldset/useFieldset.props.d.ts +2 -2
  160. package/fileupload/index.d.ts +1 -0
  161. package/fileupload/index.mjs +1 -1
  162. package/fileupload/index.mjs.map +1 -1
  163. package/fileupload/useFileUpload.d.ts +73 -4
  164. package/fileupload/useFileUpload.props.d.ts +2 -2
  165. package/floatlabel/index.d.ts +3 -0
  166. package/floatlabel/index.mjs +2 -0
  167. package/floatlabel/index.mjs.map +1 -0
  168. package/floatlabel/useFloatLabel.d.ts +6 -0
  169. package/floatlabel/useFloatLabel.props.d.ts +2 -0
  170. package/fluid/index.d.ts +1 -0
  171. package/fluid/index.mjs +1 -1
  172. package/fluid/index.mjs.map +1 -1
  173. package/fluid/useFluid.d.ts +6 -1
  174. package/fluid/useFluid.props.d.ts +2 -2
  175. package/focustrap/index.d.ts +1 -0
  176. package/focustrap/index.mjs +1 -1
  177. package/focustrap/index.mjs.map +1 -1
  178. package/focustrap/useFocusTrap.d.ts +16 -3
  179. package/focustrap/useFocusTrap.props.d.ts +2 -2
  180. package/gallery/index.d.ts +1 -0
  181. package/gallery/index.mjs +1 -1
  182. package/gallery/index.mjs.map +1 -1
  183. package/gallery/item/index.mjs +1 -1
  184. package/gallery/item/index.mjs.map +1 -1
  185. package/gallery/item/useGalleryItem.d.ts +17 -7
  186. package/gallery/item/useGalleryItem.props.d.ts +2 -2
  187. package/gallery/useGallery.d.ts +147 -6
  188. package/gallery/useGallery.props.d.ts +2 -2
  189. package/iconfield/index.d.ts +1 -0
  190. package/iconfield/index.mjs +1 -1
  191. package/iconfield/index.mjs.map +1 -1
  192. package/iconfield/useIconField.d.ts +6 -1
  193. package/iconfield/useIconField.props.d.ts +2 -2
  194. package/iftalabel/index.d.ts +3 -0
  195. package/iftalabel/index.mjs +2 -0
  196. package/iftalabel/index.mjs.map +1 -0
  197. package/iftalabel/useIftaLabel.d.ts +6 -0
  198. package/iftalabel/useIftaLabel.props.d.ts +2 -0
  199. package/inplace/index.d.ts +1 -0
  200. package/inplace/index.mjs +1 -1
  201. package/inplace/index.mjs.map +1 -1
  202. package/inplace/useInplace.d.ts +21 -2
  203. package/inplace/useInplace.props.d.ts +2 -2
  204. package/{colorpicker → inputcolor}/colorManager.d.ts +3 -2
  205. package/inputcolor/index.d.ts +4 -0
  206. package/inputcolor/index.mjs +2 -0
  207. package/inputcolor/index.mjs.map +1 -0
  208. package/inputcolor/useInputColor.d.ts +119 -0
  209. package/inputcolor/useInputColor.props.d.ts +2 -0
  210. package/inputgroup/index.d.ts +1 -0
  211. package/inputgroup/index.mjs +1 -1
  212. package/inputgroup/index.mjs.map +1 -1
  213. package/inputgroup/useInputGroup.d.ts +6 -1
  214. package/inputgroup/useInputGroup.props.d.ts +2 -2
  215. package/inputnumber/index.d.ts +1 -0
  216. package/inputnumber/index.mjs +1 -1
  217. package/inputnumber/index.mjs.map +1 -1
  218. package/inputnumber/useInputNumber.d.ts +55 -17
  219. package/inputnumber/useInputNumber.props.d.ts +2 -2
  220. package/inputotp/index.d.ts +1 -0
  221. package/inputotp/index.mjs +1 -1
  222. package/inputotp/index.mjs.map +1 -1
  223. package/inputotp/useInputOtp.d.ts +25 -6
  224. package/inputotp/useInputOtp.props.d.ts +2 -2
  225. package/inputpassword/index.d.ts +3 -0
  226. package/inputpassword/index.mjs +2 -0
  227. package/inputpassword/index.mjs.map +1 -0
  228. package/inputpassword/useInputPassword.d.ts +15 -0
  229. package/inputpassword/useInputPassword.props.d.ts +2 -0
  230. package/inputtags/index.d.ts +1 -0
  231. package/inputtags/index.mjs +1 -1
  232. package/inputtags/index.mjs.map +1 -1
  233. package/inputtags/useInputTags.d.ts +42 -12
  234. package/inputtags/useInputTags.props.d.ts +2 -2
  235. package/inputtext/index.d.ts +1 -0
  236. package/inputtext/index.mjs +1 -1
  237. package/inputtext/index.mjs.map +1 -1
  238. package/inputtext/useInputText.d.ts +8 -1
  239. package/inputtext/useInputText.props.d.ts +2 -2
  240. package/knob/index.d.ts +1 -0
  241. package/knob/index.mjs +1 -1
  242. package/knob/index.mjs.map +1 -1
  243. package/knob/useKnob.d.ts +51 -10
  244. package/knob/useKnob.props.d.ts +2 -2
  245. package/label/index.d.ts +1 -0
  246. package/label/index.mjs +1 -1
  247. package/label/index.mjs.map +1 -1
  248. package/label/useLabel.d.ts +6 -1
  249. package/label/useLabel.props.d.ts +2 -2
  250. package/listbox/index.d.ts +3 -0
  251. package/listbox/index.mjs +1 -1
  252. package/listbox/index.mjs.map +1 -1
  253. package/listbox/useListbox.d.ts +56 -18
  254. package/listbox/useListbox.props.d.ts +2 -2
  255. package/listbox/useListboxOption.d.ts +21 -0
  256. package/listbox/useListboxOption.props.d.ts +2 -0
  257. package/menu/checkboxitem/index.d.ts +2 -0
  258. package/menu/checkboxitem/index.mjs +2 -0
  259. package/menu/checkboxitem/index.mjs.map +1 -0
  260. package/menu/checkboxitem/useMenuCheckboxItem.d.ts +112 -0
  261. package/menu/checkboxitem/useMenuCheckboxItem.props.d.ts +2 -0
  262. package/menu/index.d.ts +1 -0
  263. package/menu/index.mjs +1 -1
  264. package/menu/index.mjs.map +1 -1
  265. package/menu/radioitem/index.d.ts +2 -0
  266. package/menu/radioitem/index.mjs +2 -0
  267. package/menu/radioitem/index.mjs.map +1 -0
  268. package/menu/radioitem/useMenuRadioItem.d.ts +106 -0
  269. package/menu/radioitem/useMenuRadioItem.props.d.ts +2 -0
  270. package/menu/submenu/index.d.ts +2 -0
  271. package/menu/submenu/index.mjs +2 -0
  272. package/menu/submenu/index.mjs.map +1 -0
  273. package/menu/submenu/useMenuSubmenu.d.ts +97 -0
  274. package/menu/submenu/useMenuSubmenu.props.d.ts +2 -0
  275. package/menu/useMenu.d.ts +215 -22
  276. package/menu/useMenu.props.d.ts +2 -2
  277. package/message/index.d.ts +1 -0
  278. package/message/index.mjs +1 -1
  279. package/message/index.mjs.map +1 -1
  280. package/message/useMessage.d.ts +13 -1
  281. package/message/useMessage.props.d.ts +2 -2
  282. package/metergroup/index.d.ts +1 -0
  283. package/metergroup/index.mjs +1 -1
  284. package/metergroup/index.mjs.map +1 -1
  285. package/metergroup/useMeterGroup.d.ts +36 -5
  286. package/metergroup/useMeterGroup.props.d.ts +2 -2
  287. package/navigationmenu/index.d.ts +3 -0
  288. package/navigationmenu/index.mjs +2 -0
  289. package/navigationmenu/index.mjs.map +1 -0
  290. package/navigationmenu/useNavigationMenu.d.ts +30 -0
  291. package/navigationmenu/useNavigationMenu.props.d.ts +2 -0
  292. package/orderlist/index.d.ts +3 -0
  293. package/orderlist/index.mjs +2 -0
  294. package/orderlist/index.mjs.map +1 -0
  295. package/orderlist/useOrderList.d.ts +73 -0
  296. package/orderlist/useOrderList.props.d.ts +2 -0
  297. package/organizationchart/index.d.ts +3 -0
  298. package/organizationchart/index.mjs +2 -0
  299. package/organizationchart/index.mjs.map +1 -0
  300. package/organizationchart/useOrganizationChart.d.ts +69 -0
  301. package/organizationchart/useOrganizationChart.props.d.ts +2 -0
  302. package/overlaybadge/index.d.ts +3 -0
  303. package/overlaybadge/index.mjs +2 -0
  304. package/overlaybadge/index.mjs.map +1 -0
  305. package/overlaybadge/useOverlayBadge.d.ts +1 -0
  306. package/overlaybadge/useOverlayBadge.props.d.ts +2 -0
  307. package/package.json +12 -15
  308. package/paginator/index.d.ts +1 -0
  309. package/paginator/index.mjs +1 -1
  310. package/paginator/index.mjs.map +1 -1
  311. package/paginator/usePaginator.d.ts +47 -1
  312. package/paginator/usePaginator.props.d.ts +2 -2
  313. package/panel/index.d.ts +1 -0
  314. package/panel/index.mjs +1 -1
  315. package/panel/index.mjs.map +1 -1
  316. package/panel/usePanel.d.ts +76 -8
  317. package/panel/usePanel.props.d.ts +2 -2
  318. package/picklist/index.d.ts +3 -0
  319. package/picklist/index.mjs +2 -0
  320. package/picklist/index.mjs.map +1 -0
  321. package/picklist/usePickList.d.ts +153 -0
  322. package/picklist/usePickList.props.d.ts +2 -0
  323. package/popover/index.d.ts +1 -0
  324. package/popover/index.mjs +1 -7
  325. package/popover/index.mjs.map +1 -1
  326. package/popover/usePopover.d.ts +65 -12
  327. package/popover/usePopover.props.d.ts +2 -2
  328. package/portal/index.d.ts +1 -0
  329. package/portal/index.mjs +1 -1
  330. package/portal/index.mjs.map +1 -1
  331. package/portal/usePortal.d.ts +4 -2
  332. package/portal/usePortal.props.d.ts +2 -2
  333. package/positioner/index.d.ts +3 -0
  334. package/positioner/index.mjs +2 -0
  335. package/positioner/index.mjs.map +1 -0
  336. package/positioner/usePositioner.anchor.d.ts +7 -0
  337. package/positioner/usePositioner.d.ts +11 -0
  338. package/positioner/usePositioner.fallback.d.ts +13 -0
  339. package/positioner/usePositioner.props.d.ts +2 -0
  340. package/positioner/usePositioner.utils.d.ts +21 -0
  341. package/progressbar/index.d.ts +1 -0
  342. package/progressbar/index.mjs +1 -1
  343. package/progressbar/index.mjs.map +1 -1
  344. package/progressbar/useProgressBar.d.ts +13 -1
  345. package/progressbar/useProgressBar.props.d.ts +2 -2
  346. package/progressspinner/index.d.ts +1 -0
  347. package/progressspinner/index.mjs +1 -1
  348. package/progressspinner/index.mjs.map +1 -1
  349. package/progressspinner/useProgressSpinner.d.ts +50 -1
  350. package/progressspinner/useProgressSpinner.props.d.ts +2 -2
  351. package/radiobutton/index.d.ts +1 -0
  352. package/radiobutton/index.mjs +1 -1
  353. package/radiobutton/index.mjs.map +1 -1
  354. package/radiobutton/useRadioButton.d.ts +41 -3
  355. package/radiobutton/useRadioButton.props.d.ts +2 -2
  356. package/radiobuttongroup/index.d.ts +3 -0
  357. package/radiobuttongroup/index.mjs +2 -0
  358. package/radiobuttongroup/index.mjs.map +1 -0
  359. package/radiobuttongroup/useRadioButtonGroup.d.ts +11 -0
  360. package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
  361. package/rating/index.d.ts +3 -0
  362. package/rating/index.mjs +1 -1
  363. package/rating/index.mjs.map +1 -1
  364. package/rating/useRating.d.ts +46 -12
  365. package/rating/useRating.props.d.ts +2 -2
  366. package/rating/useRatingOption.d.ts +69 -0
  367. package/rating/useRatingOption.props.d.ts +2 -0
  368. package/scrollarea/index.d.ts +1 -0
  369. package/scrollarea/index.mjs +1 -1
  370. package/scrollarea/index.mjs.map +1 -1
  371. package/scrollarea/useScrollArea.d.ts +120 -15
  372. package/scrollarea/useScrollArea.props.d.ts +2 -2
  373. package/select/index.d.ts +3 -0
  374. package/select/index.mjs +2 -0
  375. package/select/index.mjs.map +1 -0
  376. package/select/useSelect.d.ts +190 -0
  377. package/select/useSelect.props.d.ts +2 -0
  378. package/select/useSelect.test.d.ts +1 -0
  379. package/sidebar/index.d.ts +7 -0
  380. package/sidebar/index.mjs +2 -0
  381. package/sidebar/index.mjs.map +1 -0
  382. package/sidebar/useSidebar.d.ts +117 -0
  383. package/sidebar/useSidebar.props.d.ts +2 -0
  384. package/sidebar/useSidebarLayout.d.ts +24 -0
  385. package/sidebar/useSidebarLayout.props.d.ts +2 -0
  386. package/sidebar/useSidebarMenuItem.d.ts +11 -0
  387. package/sidebar/useSidebarMenuItem.props.d.ts +2 -0
  388. package/skeleton/index.d.ts +1 -0
  389. package/skeleton/index.mjs +1 -1
  390. package/skeleton/index.mjs.map +1 -1
  391. package/skeleton/useSkeleton.d.ts +7 -1
  392. package/skeleton/useSkeleton.props.d.ts +2 -2
  393. package/slider/index.d.ts +1 -0
  394. package/slider/index.mjs +1 -1
  395. package/slider/index.mjs.map +1 -1
  396. package/slider/useSlider.d.ts +81 -48
  397. package/slider/useSlider.props.d.ts +2 -2
  398. package/speeddial/index.d.ts +1 -0
  399. package/speeddial/index.mjs +1 -1
  400. package/speeddial/index.mjs.map +1 -1
  401. package/speeddial/useSpeedDial.d.ts +89 -32
  402. package/speeddial/useSpeedDial.props.d.ts +2 -2
  403. package/splitter/index.d.ts +1 -0
  404. package/splitter/index.mjs +1 -1
  405. package/splitter/index.mjs.map +1 -1
  406. package/splitter/useSplitter.d.ts +57 -14
  407. package/splitter/useSplitter.props.d.ts +2 -2
  408. package/stepper/index.d.ts +1 -0
  409. package/stepper/index.mjs +1 -1
  410. package/stepper/index.mjs.map +1 -1
  411. package/stepper/useStepper.d.ts +47 -2
  412. package/stepper/useStepper.props.d.ts +2 -2
  413. package/styleclass/index.d.ts +1 -0
  414. package/styleclass/index.mjs +1 -1
  415. package/styleclass/index.mjs.map +1 -1
  416. package/styleclass/useStyleClass.d.ts +5 -1
  417. package/styleclass/useStyleClass.props.d.ts +2 -2
  418. package/tabs/index.d.ts +1 -0
  419. package/tabs/index.mjs +1 -1
  420. package/tabs/index.mjs.map +1 -1
  421. package/tabs/useTabs.d.ts +42 -3
  422. package/tabs/useTabs.props.d.ts +2 -2
  423. package/tag/index.d.ts +1 -0
  424. package/tag/index.mjs +1 -1
  425. package/tag/index.mjs.map +1 -1
  426. package/tag/useTag.d.ts +6 -1
  427. package/tag/useTag.props.d.ts +2 -2
  428. package/terminal/index.d.ts +1 -0
  429. package/terminal/index.mjs +1 -1
  430. package/terminal/index.mjs.map +1 -1
  431. package/terminal/useTerminal.d.ts +23 -2
  432. package/terminal/useTerminal.props.d.ts +2 -2
  433. package/textarea/index.d.ts +1 -0
  434. package/textarea/index.mjs +1 -1
  435. package/textarea/index.mjs.map +1 -1
  436. package/textarea/useTextarea.d.ts +9 -2
  437. package/textarea/useTextarea.props.d.ts +2 -2
  438. package/timeline/index.d.ts +1 -0
  439. package/timeline/index.mjs +1 -1
  440. package/timeline/index.mjs.map +1 -1
  441. package/timeline/useTimeline.d.ts +41 -1
  442. package/timeline/useTimeline.props.d.ts +2 -2
  443. package/toast/index.d.ts +1 -1
  444. package/toast/index.mjs +1 -1
  445. package/toast/index.mjs.map +1 -1
  446. package/toast/useToast.d.ts +85 -23
  447. package/toast/useToast.props.d.ts +2 -2
  448. package/toaster/ToastManager.d.ts +14 -0
  449. package/toaster/index.d.ts +4 -0
  450. package/toaster/index.mjs +2 -0
  451. package/toaster/index.mjs.map +1 -0
  452. package/toaster/useToaster.d.ts +50 -0
  453. package/toaster/useToaster.props.d.ts +2 -0
  454. package/togglebutton/index.d.ts +1 -0
  455. package/togglebutton/index.mjs +1 -1
  456. package/togglebutton/index.mjs.map +1 -1
  457. package/togglebutton/useToggleButton.d.ts +5 -3
  458. package/togglebutton/useToggleButton.props.d.ts +2 -2
  459. package/togglebuttongroup/index.d.ts +3 -0
  460. package/togglebuttongroup/index.mjs +2 -0
  461. package/togglebuttongroup/index.mjs.map +1 -0
  462. package/togglebuttongroup/useToggleButtonGroup.d.ts +17 -0
  463. package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
  464. package/toggleswitch/index.d.ts +3 -0
  465. package/toggleswitch/index.mjs +2 -0
  466. package/toggleswitch/index.mjs.map +1 -0
  467. package/toggleswitch/useToggleSwitch.d.ts +48 -0
  468. package/toggleswitch/useToggleSwitch.props.d.ts +2 -0
  469. package/toolbar/index.d.ts +1 -0
  470. package/toolbar/index.mjs +1 -1
  471. package/toolbar/index.mjs.map +1 -1
  472. package/toolbar/useToolbar.d.ts +7 -1
  473. package/toolbar/useToolbar.props.d.ts +2 -2
  474. package/tooltip/index.d.ts +1 -0
  475. package/tooltip/index.mjs +1 -1
  476. package/tooltip/index.mjs.map +1 -1
  477. package/tooltip/useTooltip.d.ts +43 -24
  478. package/tooltip/useTooltip.props.d.ts +2 -2
  479. package/tooltipmanager/index.d.ts +2 -0
  480. package/tooltipmanager/index.mjs +2 -0
  481. package/tooltipmanager/index.mjs.map +1 -0
  482. package/tooltipmanager/useTooltipManager.d.ts +12 -0
  483. package/tooltipmanager/useTooltipManager.props.d.ts +2 -0
  484. package/tooltipmanager/useTooltipManager.test.d.ts +0 -0
  485. package/tree/TreeDragDropService.d.ts +13 -5
  486. package/tree/index.d.ts +7 -0
  487. package/tree/index.mjs +1 -1
  488. package/tree/index.mjs.map +1 -1
  489. package/tree/useTree.d.ts +96 -16
  490. package/tree/useTree.props.d.ts +2 -2
  491. package/tree/useTreeDragDrop.d.ts +24 -0
  492. package/tree/useTreeFlatten.d.ts +13 -0
  493. package/tree/useTreeKeyboard.d.ts +18 -0
  494. package/tree/useTreeNode.d.ts +45 -0
  495. package/tree/useTreeNode.props.d.ts +2 -0
  496. package/tree/useTreeSelection.d.ts +31 -0
  497. package/utils/itemKey.d.ts +10 -0
  498. package/LICENSE +0 -21
  499. package/colorpicker/index.d.ts +0 -3
  500. package/colorpicker/index.mjs +0 -2
  501. package/colorpicker/index.mjs.map +0 -1
  502. package/colorpicker/input/index.d.ts +0 -2
  503. package/colorpicker/input/index.mjs +0 -2
  504. package/colorpicker/input/index.mjs.map +0 -1
  505. package/colorpicker/input/useColorPickerInput.d.ts +0 -11
  506. package/colorpicker/input/useColorPickerInput.props.d.ts +0 -2
  507. package/colorpicker/slider/index.d.ts +0 -2
  508. package/colorpicker/slider/index.mjs +0 -2
  509. package/colorpicker/slider/index.mjs.map +0 -1
  510. package/colorpicker/slider/useColorPickerSlider.d.ts +0 -13
  511. package/colorpicker/slider/useColorPickerSlider.props.d.ts +0 -2
  512. package/colorpicker/useColorPicker.d.ts +0 -26
  513. package/colorpicker/useColorPicker.props.d.ts +0 -2
  514. package/commandmenu/index.d.ts +0 -2
  515. package/commandmenu/index.mjs +0 -2
  516. package/commandmenu/index.mjs.map +0 -1
  517. package/commandmenu/useCommandMenu.d.ts +0 -11
  518. package/commandmenu/useCommandMenu.props.d.ts +0 -2
  519. package/confirmdialog/index.d.ts +0 -2
  520. package/confirmdialog/index.mjs +0 -2
  521. package/confirmdialog/index.mjs.map +0 -1
  522. package/confirmdialog/useConfirmDialog.d.ts +0 -1
  523. package/confirmdialog/useConfirmDialog.props.d.ts +0 -2
  524. package/confirmpopup/index.d.ts +0 -2
  525. package/confirmpopup/index.mjs +0 -2
  526. package/confirmpopup/index.mjs.map +0 -1
  527. package/confirmpopup/useConfirmPopup.d.ts +0 -25
  528. package/confirmpopup/useConfirmPopup.props.d.ts +0 -2
  529. package/imagecompare/index.d.ts +0 -2
  530. package/imagecompare/index.mjs +0 -2
  531. package/imagecompare/index.mjs.map +0 -1
  532. package/imagecompare/useImageCompare.d.ts +0 -8
  533. package/imagecompare/useImageCompare.props.d.ts +0 -2
  534. package/menu/sub/index.d.ts +0 -2
  535. package/menu/sub/index.mjs +0 -2
  536. package/menu/sub/index.mjs.map +0 -1
  537. package/menu/sub/useMenuSub.d.ts +0 -19
  538. package/menu/sub/useMenuSub.props.d.ts +0 -2
  539. package/orgchart/index.d.ts +0 -2
  540. package/orgchart/index.mjs +0 -2
  541. package/orgchart/index.mjs.map +0 -1
  542. package/orgchart/useOrgChart.d.ts +0 -20
  543. package/orgchart/useOrgChart.props.d.ts +0 -2
  544. package/overlay/index.d.ts +0 -2
  545. package/overlay/index.mjs +0 -2
  546. package/overlay/index.mjs.map +0 -1
  547. package/overlay/useOverlay.d.ts +0 -16
  548. package/overlay/useOverlay.props.d.ts +0 -2
  549. package/password/index.d.ts +0 -2
  550. package/password/index.mjs +0 -2
  551. package/password/index.mjs.map +0 -1
  552. package/password/usePassword.d.ts +0 -35
  553. package/password/usePassword.props.d.ts +0 -2
  554. package/placer/index.d.ts +0 -2
  555. package/placer/index.mjs +0 -2
  556. package/placer/index.mjs.map +0 -1
  557. package/placer/usePlacer.d.ts +0 -12
  558. package/placer/usePlacer.props.d.ts +0 -2
  559. package/switch/index.d.ts +0 -2
  560. package/switch/index.mjs +0 -2
  561. package/switch/index.mjs.map +0 -1
  562. package/switch/useSwitch.d.ts +0 -7
  563. package/switch/useSwitch.props.d.ts +0 -2
  564. package/toast/item/index.css +0 -2
  565. package/toast/item/index.css.map +0 -1
  566. package/toast/item/index.d.ts +0 -2
  567. package/toast/item/index.mjs +0 -2
  568. package/toast/item/index.mjs.map +0 -1
  569. package/toast/item/useToastItem.d.ts +0 -25
  570. package/toast/item/useToastItem.props.d.ts +0 -2
  571. package/toast/toastStore.d.ts +0 -40
  572. package/tooltip/group/index.d.ts +0 -2
  573. package/tooltip/group/index.mjs +0 -2
  574. package/tooltip/group/index.mjs.map +0 -1
  575. package/tooltip/group/useTooltipGroup.d.ts +0 -9
  576. package/tooltip/group/useTooltipGroup.props.d.ts +0 -2
  577. /package/{colorpicker/input/useColorPickerInput.test.d.ts → autocomplete/useAutoComplete.test.d.ts} +0 -0
  578. /package/{colorpicker/slider/useColorPickerSlider.test.d.ts → checkboxgroup/useCheckboxGroup.test.d.ts} +0 -0
  579. /package/{colorpicker/useColorPicker.test.d.ts → collapsible/useCollapsible.test.d.ts} +0 -0
  580. /package/{commandmenu/useCommandMenu.test.d.ts → compare/useCompare.test.d.ts} +0 -0
  581. /package/{confirmdialog/useConfirmDialog.test.d.ts → floatlabel/useFloatLabel.test.d.ts} +0 -0
  582. /package/{confirmpopup/useConfirmPopup.test.d.ts → iftalabel/useIftaLabel.test.d.ts} +0 -0
  583. /package/{imagecompare/useImageCompare.test.d.ts → inputcolor/useInputColor.test.d.ts} +0 -0
  584. /package/{orgchart/useOrgChart.test.d.ts → inputpassword/useInputPassword.test.d.ts} +0 -0
  585. /package/{overlay/useOverlay.test.d.ts → navigationmenu/useNavigationMenu.test.d.ts} +0 -0
  586. /package/{password/usePassword.test.d.ts → organizationchart/useOrganizationChart.test.d.ts} +0 -0
  587. /package/{placer/usePlacer.test.d.ts → overlaybadge/useOverlayBadge.test.d.ts} +0 -0
  588. /package/{progressspinner/useProgressSpinner.test.d.ts → positioner/usePositioner.test.d.ts} +0 -0
  589. /package/{rating/useRating.test.d.ts → radiobuttongroup/useRadioButtonGroup.test.d.ts} +0 -0
  590. /package/{switch/useSwitch.test.d.ts → toaster/useToaster.test.d.ts} +0 -0
  591. /package/{toast/item/useToastItem.test.d.ts → togglebuttongroup/useToggleButtonGroup.test.d.ts} +0 -0
  592. /package/{tooltip/group/useTooltipGroup.test.d.ts → toggleswitch/useToggleSwitch.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/datepicker/useDatePicker.ts","../../src/datepicker/useDatePicker.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect } from '@primereact/hooks';\nimport { useDatePickerDateMeta, useDatePickerProps } from '@primereact/types/shared/datepicker';\nimport { find, findSingle, getAttribute, getFocusableElements, getIndex, getOuterWidth, isDate, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useDatePicker.props';\n\nconst TICKS_TO_1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;\n\nconst primereact = {\n config: {\n locale: {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n completed: 'Completed',\n pending: 'Pending',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n prevHour: 'Previous Hour',\n nextHour: 'Next Hour',\n prevMinute: 'Previous Minute',\n nextMinute: 'Next Minute',\n prevSecond: 'Previous Second',\n nextSecond: 'Next Second',\n am: 'am',\n pm: 'pm',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n showMonthAfterYear: false,\n dateFormat: 'mm/dd/yy',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyFilterMessage: 'No results found',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n emptySelectionMessage: 'No selected item',\n emptySearchMessage: 'No results found',\n fileChosenMessage: '{0} files',\n noFileChosenMessage: 'No file chosen',\n emptyMessage: 'No available options',\n aria: {\n trueLabel: 'True',\n falseLabel: 'False',\n nullLabel: 'Not Selected',\n star: '1 star',\n stars: '{star} stars',\n selectAll: 'All items selected',\n unselectAll: 'All items unselected',\n close: 'Close',\n previous: 'Previous',\n next: 'Next',\n navigation: 'Navigation',\n scrollTop: 'Scroll Top',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveBottom: 'Move Bottom',\n moveToTarget: 'Move to Target',\n moveToSource: 'Move to Source',\n moveAllToTarget: 'Move All to Target',\n moveAllToSource: 'Move All to Source',\n pageLabel: 'Page {page}',\n firstPageLabel: 'First Page',\n lastPageLabel: 'Last Page',\n nextPageLabel: 'Next Page',\n prevPageLabel: 'Previous Page',\n rowsPerPageLabel: 'Rows per page',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n selectRow: 'Row Selected',\n unselectRow: 'Row Unselected',\n expandRow: 'Row Expanded',\n collapseRow: 'Row Collapsed',\n showFilterMenu: 'Show Filter Menu',\n hideFilterMenu: 'Hide Filter Menu',\n filterOperator: 'Filter Operator',\n filterConstraint: 'Filter Constraint',\n editRow: 'Row Edit',\n saveEdit: 'Save Edit',\n cancelEdit: 'Cancel Edit',\n listView: 'List View',\n gridView: 'Grid View',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n rotateRight: 'Rotate Right',\n rotateLeft: 'Rotate Left',\n listLabel: 'Option List'\n }\n }\n }\n};\n\nexport const useDatePicker = withHeadless({\n name: 'useDatePicker',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null);\n const nextButtonRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const prevButtonRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const overlayRef = React.useRef<HTMLDivElement | null>(null);\n const timePickerTimer = React.useRef<NodeJS.Timeout | null>(null);\n const typeUpdate = React.useRef(false);\n const selectionStart = React.useRef<number | null>(null);\n const selectionEnd = React.useRef<number | null>(null);\n const [showClearIcon, setShowClearIcon] = React.useState(true);\n const [overlayVisibleState, setOverlayVisibleState] = React.useState<boolean>(false);\n const [currentView, setCurrentView] = React.useState(props.view);\n const [currentMonth, setCurrentMonth] = React.useState<number>(0);\n const [currentYear, setCurrentYear] = React.useState<number>(0);\n const [currentHour, setCurrentHour] = React.useState<number>(0);\n const [currentMinute, setCurrentMinute] = React.useState<number>(0);\n const [currentSecond, setCurrentSecond] = React.useState<number>(0);\n const [pm, setPM] = React.useState<boolean>(false);\n const [focusedDateIndex, setFocusedDateIndex] = React.useState(0);\n const [navigationState, setNavigationState] = React.useState<{ backward?: boolean; button?: boolean } | null>(null);\n const [hoveredDateState, setHoveredDateState] = React.useState<useDatePickerDateMeta | null>(null);\n\n const getInitialValue = (): useDatePickerProps['value'] => {\n if (props.value !== undefined) {\n return typeof props.value === 'string' ? (parseValue(props.value) as useDatePickerProps['value']) : props.value;\n }\n\n if (props.defaultValue !== undefined) {\n return typeof props.defaultValue === 'string' ? (parseValue(props.defaultValue) as useDatePickerProps['value']) : props.defaultValue;\n }\n\n return null;\n };\n\n const [rawValueState, setRawValueState] = React.useState<useDatePickerProps['value']>(() => getInitialValue());\n\n const state = {\n rawValue: rawValueState,\n overlayVisible: overlayVisibleState,\n currentView,\n showClearIcon,\n hoveredDate: hoveredDateState\n };\n\n const isSelected = (dateMeta: useDatePickerDateMeta) => {\n if (rawValueState) {\n if (isSingleSelection()) {\n return isDateEquals(parseValueForComparison(rawValueState), dateMeta);\n } else if (isMultipleSelection()) {\n let selected = false;\n\n if (Array.isArray(rawValueState)) {\n for (const date of rawValueState) {\n selected = isDateEquals(parseValueForComparison(date), dateMeta);\n\n if (selected) {\n break;\n }\n }\n }\n\n return selected;\n } else if (isRangeSelection() && Array.isArray(rawValueState)) {\n const start = parseValueForComparison(rawValueState[0]);\n\n if (start === null) {\n return false;\n }\n\n if (rawValueState[1]) {\n const end = parseValueForComparison(rawValueState[1]);\n\n if (end === null) {\n return false;\n }\n\n return isDateEquals(start, dateMeta) || isDateEquals(end, dateMeta) || isDateBetween(start, end, dateMeta);\n } else {\n return isDateEquals(start, dateMeta);\n }\n }\n }\n\n return false;\n };\n\n const isInHoverRange = (dateMeta: useDatePickerDateMeta) => {\n if (!isRangeSelection() || !hoveredDateState || !rawValueState || !Array.isArray(rawValueState)) {\n return false;\n }\n\n if (rawValueState.length === 0 || rawValueState[1] !== null) {\n return false;\n }\n\n const start = parseValueForComparison(rawValueState[0]);\n\n if (!start) {\n return false;\n }\n\n const hoverDateObj = new Date(hoveredDateState.year, hoveredDateState.month, hoveredDateState.day);\n const currentDateObj = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n const rangeStart = start.getTime() < hoverDateObj.getTime() ? start : hoverDateObj;\n const rangeEnd = start.getTime() < hoverDateObj.getTime() ? hoverDateObj : start;\n const currentTime = currentDateObj.getTime();\n\n return currentTime >= rangeStart.getTime() && currentTime <= rangeEnd.getTime();\n };\n\n const onDateCellMouseEnter = (dateMeta: useDatePickerDateMeta) => {\n if (isRangeSelection() && dateMeta.selectable) {\n setHoveredDateState(dateMeta);\n }\n };\n\n const isMonthSelected = (month: number) => {\n if (isDate(rawValueState) && rawValueState !== null) {\n return (rawValueState as Date).getMonth() === month && (rawValueState as Date).getFullYear() === currentYear;\n } else if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getMonth() === month && parsedDate.getFullYear() === currentYear : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n if (!parsedEnd) {\n return parsedStart ? parsedStart.getFullYear() === currentYear && parsedStart.getMonth() === month : false;\n } else {\n if (!parsedStart) return false;\n\n const currentDate = new Date(currentYear as number, month, 1);\n const startDate = new Date(parsedStart.getFullYear(), parsedStart.getMonth(), 1);\n const endDate = new Date(parsedEnd.getFullYear(), parsedEnd.getMonth(), 1);\n\n return currentDate >= startDate && currentDate <= endDate;\n }\n }\n }\n\n return false;\n };\n\n const isYearSelected = (year: number) => {\n if (typeof rawValueState !== 'string' && rawValueState !== null) {\n return (rawValueState as Date).getFullYear() === year;\n } else if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getFullYear() === year : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n const start = parsedStart ? parsedStart.getFullYear() : null;\n const end = parsedEnd ? parsedEnd.getFullYear() : null;\n\n if (!start || !end) return false;\n\n return start === year || end === year || (start < year && end > year);\n }\n }\n\n return false;\n };\n\n const isDateEquals = (value: Date | string | null | undefined, dateMeta: useDatePickerDateMeta) => {\n if (value) {\n const dateValue = typeof value === 'string' ? (parseValue(value) as Date | string) : value;\n\n if (dateValue && dateValue instanceof Date) {\n return dateValue.getDate() === dateMeta.day && dateValue.getMonth() === dateMeta.month && dateValue.getFullYear() === dateMeta.year;\n }\n }\n\n return false;\n };\n\n const isDateBetween = (start: Date, end: Date, dateMeta: useDatePickerDateMeta) => {\n const between = false;\n const parsedStart = parseValueForComparison(start);\n const parsedEnd = parseValueForComparison(end);\n\n if (parsedStart && parsedEnd) {\n const date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n return parsedStart.getTime() <= date.getTime() && parsedEnd.getTime() >= date.getTime();\n }\n\n return between;\n };\n\n const sundayIndex = React.useMemo(() => {\n return primereact?.config?.locale?.firstDayOfWeek > 0 ? 7 - primereact?.config?.locale?.firstDayOfWeek : 0;\n }, []);\n\n const getFirstDayOfMonthIndex = (month: number, year: number) => {\n const day = new Date();\n\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n\n const dayIndex = day.getDay() + sundayIndex;\n\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n };\n\n const getDaysCountInMonth = (month: number, year: number) => {\n return 32 - daylightSavingAdjust(new Date(year, month, 32)).getDate();\n };\n\n const getDaysCountInPrevMonth = (month: number, year: number) => {\n const prev = getPreviousMonthAndYear(month, year);\n\n return getDaysCountInMonth(prev.month, prev.year);\n };\n\n const getPreviousMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 0) {\n m = 11;\n y = year - 1;\n } else {\n m = month - 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const getNextMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 11) {\n m = 0;\n y = year + 1;\n } else {\n m = month + 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const daylightSavingAdjust = (date: Date) => {\n if (!date) {\n date = new Date();\n }\n\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\n return date;\n };\n\n const isToday = (today: Date, day: number, month: number, year: number) => {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n };\n\n const isSelectable = (day: number, month: number, year: number, otherMonth: boolean) => {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n\n if (otherMonth && !props.selectOtherMonths) {\n return false;\n }\n\n if (props.minDate) {\n if (props.minDate.getFullYear() > year) {\n validMin = false;\n } else if (props.minDate.getFullYear() === year) {\n if (props.minDate.getMonth() > month) {\n validMin = false;\n } else if (props.minDate.getMonth() === month) {\n if (props.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < year) {\n validMax = false;\n } else if (props.maxDate.getFullYear() === year) {\n if (props.maxDate.getMonth() < month) {\n validMax = false;\n } else if (props.maxDate.getMonth() === month) {\n if (props.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n\n if (props.disabledDates) {\n validDate = !isDateDisabled(day, month, year);\n }\n\n if (props.disabledDays) {\n validDay = !isDayDisabled(day, month, year);\n }\n\n return validMin && validMax && validDate && validDay;\n };\n\n const onPrevButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: true, button: true });\n navBackward(event);\n };\n\n const onNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: false, button: true });\n navForward(event);\n };\n\n const navBackward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n decrementYear();\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth, year: currentYear });\n }\n } else if (currentView === 'year') {\n decrementDecade();\n } else {\n if (event.shiftKey) {\n decrementYear();\n } else {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n decrementYear();\n } else {\n setCurrentMonth((currentMonth as number) - 1);\n }\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n }\n };\n\n const navForward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n incrementYear();\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth, year: currentYear });\n }\n } else if (currentView === 'year') {\n incrementDecade();\n } else {\n if (event.shiftKey) {\n incrementYear();\n } else {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n incrementYear();\n } else {\n setCurrentMonth((currentMonth as number) + 1);\n }\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n }\n };\n\n const decrementYear = () => {\n setCurrentYear((currentYear ?? 0) - 1);\n };\n\n const decrementDecade = () => {\n setCurrentYear((currentYear ?? 0) - 10);\n };\n\n const incrementYear = () => {\n setCurrentYear((currentYear ?? 0) + 1);\n };\n\n const incrementDecade = () => {\n setCurrentYear((currentYear ?? 0) + 10);\n };\n\n const switchToMonthView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('month');\n event.preventDefault();\n };\n\n const switchToYearView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('year');\n event.preventDefault();\n };\n\n const isEnabled = () => {\n return !props.disabled && !props.readOnly;\n };\n\n const updateCurrentTimeMeta = (date: Date) => {\n let currentHour = date.getHours();\n\n if (props.hourFormat === '12') {\n setPM(currentHour > 11);\n\n if (currentHour >= 12) currentHour = currentHour == 12 ? 12 : currentHour - 12;\n }\n\n setCurrentHour(Math.floor(currentHour / (props.stepHour ?? 1)) * (props.stepHour ?? 1));\n setCurrentMinute(Math.floor(date.getMinutes() / (props.stepMinute ?? 1)) * (props.stepMinute ?? 1));\n setCurrentSecond(Math.floor(date.getSeconds() / (props.stepSecond ?? 1)) * (props.stepSecond ?? 1));\n };\n\n const onButtonClick = () => {\n if (isEnabled()) {\n if (!overlayVisibleState) {\n inputRef.current?.elementRef.current?.focus();\n setOverlayVisibleState(true);\n } else {\n setOverlayVisibleState(false);\n }\n }\n };\n\n const isDateDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDates) {\n for (const disabledDate of props.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n const isDayDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDays) {\n const weekday = new Date(year, month, day);\n const weekdayNumber = weekday.getDay();\n\n return props.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n\n return false;\n };\n\n const onDateSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement> | null, dateMeta: useDatePickerDateMeta) => {\n if (props.disabled || !dateMeta.selectable) {\n return;\n }\n\n if (overlayRef.current) {\n (find(overlayRef.current, 'table td span:not([data-p-disabled=\"true\"])') as HTMLElement[]).forEach((cell) => (cell.tabIndex = -1));\n }\n\n if (event) {\n event.currentTarget.focus();\n }\n\n if (isMultipleSelection() && isSelected(dateMeta)) {\n if (rawValueState && Array.isArray(rawValueState)) {\n const newValue = rawValueState.filter((date) => !isDateEquals(parseValueForComparison(date), dateMeta)) as Date[];\n\n updateModel(newValue);\n }\n } else {\n if (shouldSelectDate()) {\n if (dateMeta.otherMonth) {\n setCurrentMonth(dateMeta.month);\n setCurrentYear(dateMeta.year);\n selectDate(dateMeta);\n } else {\n selectDate(dateMeta);\n }\n }\n }\n\n if (isSingleSelection() && (!props.showTime || props.hideOnDateTimeSelect)) {\n if (inputRef.current) {\n inputRef.current?.elementRef.current.focus();\n }\n\n setTimeout(() => {\n setOverlayVisibleState(false);\n }, 150);\n }\n };\n\n const selectDate = (dateMeta: useDatePickerDateMeta) => {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n if (props.showTime) {\n if (props.hourFormat === '12' && currentHour !== 12 && pm) {\n date.setHours((currentHour as number) + 12);\n } else {\n date.setHours(currentHour as number);\n }\n\n date.setMinutes(currentMinute as number);\n date.setSeconds(props.showSeconds ? (currentSecond as number) : 0);\n }\n\n if (props.minDate && props.minDate > date) {\n date = props.minDate;\n }\n\n if (props.maxDate && props.maxDate < date) {\n date = props.maxDate;\n }\n\n setCurrentHour(date.getHours());\n setCurrentMinute(date.getMinutes());\n setCurrentSecond(date.getSeconds());\n\n let modelVal = null;\n\n if (isSingleSelection()) {\n modelVal = date;\n } else if (isMultipleSelection()) {\n if (Array.isArray(rawValueState)) {\n modelVal = [...rawValueState, date];\n } else {\n modelVal = [date];\n }\n } else if (isRangeSelection()) {\n if (rawValueState && Array.isArray(rawValueState) && rawValueState.length) {\n let startDate = parseValueForComparison(rawValueState[0]) as Date;\n let endDate = rawValueState[1];\n\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n setFocusedDateIndex(1);\n setHoveredDateState(null);\n } else {\n startDate = date;\n endDate = null;\n setFocusedDateIndex(0);\n setHoveredDateState(null);\n }\n\n modelVal = [startDate, endDate];\n } else {\n modelVal = [date, null];\n setFocusedDateIndex(0);\n }\n }\n\n if (modelVal !== null) {\n updateModel(modelVal as Date);\n }\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value: date\n });\n }\n };\n\n const updateModel = (value: useDatePickerProps['value']) => {\n setRawValueState(value);\n\n if (props.updateModelType === 'date') {\n if (isSingleSelection()) {\n writeValue(value);\n } else {\n let stringArrValue = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => parseValueForComparison(date));\n }\n\n writeValue(stringArrValue);\n }\n } else if (props.updateModelType == 'string') {\n if (isSingleSelection()) {\n if (value instanceof Date || typeof value === 'string' || value === null) {\n writeValue(formatDateTime(value));\n }\n } else if (isMultipleSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n const formatted = formatDateTime(date);\n\n return typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n } else if (isRangeSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n if (date === null || date === undefined) {\n return null;\n }\n\n const formatted = formatDateTime(date);\n\n return formatted !== null && typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n }\n }\n };\n\n const shouldSelectDate = () => {\n if (isMultipleSelection()) {\n return props.maxDateCount != null ? props.maxDateCount > (rawValueState && Array.isArray(rawValueState) ? rawValueState.length : 0) : true;\n }\n\n return true;\n };\n\n const writeValue = (newValue: useDatePickerProps['value']) => {\n setShowClearIcon(!isEmpty(newValue));\n\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n };\n\n const isSingleSelection = () => {\n return props.selectionMode === 'single';\n };\n\n const isRangeSelection = () => {\n return props.selectionMode === 'range';\n };\n\n const isMultipleSelection = () => {\n return props.selectionMode === 'multiple';\n };\n\n const formatValue = (value: useDatePickerProps['value']) => {\n if (typeof value === 'string') {\n return props.dateFormat ? (isNaN(new Date(value).getTime()) ? value : formatDate(new Date(value), props.dateFormat)) : value;\n }\n\n let formattedValue: string | null = '';\n\n if (value) {\n try {\n if (isSingleSelection()) {\n const singleVal = Array.isArray(value) ? (value[0] ?? null) : value;\n\n if (singleVal == null) {\n formattedValue = '';\n } else {\n formattedValue = (formatDateTime(singleVal as string | Date) as string) ?? '';\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n const dateAsString = typeof v === 'string' ? (formatDateTime(parseValueForComparison(v) as Date) as string) : (formatDateTime(v as Date) as string);\n\n formattedValue += dateAsString;\n\n if (i !== value.length - 1) {\n formattedValue += ', ';\n }\n }\n }\n } else if (isRangeSelection()) {\n if (Array.isArray(value) && value.length) {\n const startDate = parseValueForComparison(value[0]) as Date;\n const endDate = parseValueForComparison(value[1]) as Date | null;\n\n formattedValue = (formatDateTime(startDate) as string) ?? '';\n\n if (endDate) {\n formattedValue += ' - ' + ((formatDateTime(endDate) as string) ?? '');\n }\n }\n }\n } catch {\n formattedValue = typeof value === 'string' ? value : '';\n }\n }\n\n return formattedValue;\n };\n\n const formatDateTime = (date: Date | string | null) => {\n let formattedValue = null;\n\n if (isDate(date) && isNotEmpty(date)) {\n if (props.timeOnly) {\n formattedValue = formatTime(date);\n } else {\n formattedValue = formatDate(date, datePattern);\n\n if (props.showTime) {\n formattedValue += ' ' + formatTime(date);\n }\n }\n } else if (props.updateModelType === 'string') {\n formattedValue = date;\n }\n\n return formattedValue;\n };\n\n const formatDate = (date: Date, format: string) => {\n if (!date) {\n return '';\n }\n\n let iFormat: number;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const formatNumber = (match: string, value: number, len: number) => {\n let num = '' + value;\n\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n\n return num;\n };\n\n const formatName = (match: string, value: number, shortNames: string[], longNames: string[]) => {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n };\n\n let output = '';\n let literal = false;\n\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + TICKS_TO_1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n\n return output;\n };\n\n const formatTime = (date: Date) => {\n if (!date) {\n return '';\n }\n\n let output = '';\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (props.hourFormat === '12' && hours > 11 && hours !== 12) {\n hours -= 12;\n }\n\n if (props.hourFormat === '12') {\n output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;\n } else {\n output += hours < 10 ? '0' + hours : hours;\n }\n\n output += ':';\n output += minutes < 10 ? '0' + minutes : minutes;\n\n if (props.showSeconds) {\n output += ':';\n output += seconds < 10 ? '0' + seconds : seconds;\n }\n\n if (props.hourFormat === '12') {\n output += date.getHours() > 11 ? ` ${primereact?.config?.locale?.pm}` : ` ${primereact?.config?.locale?.am}`;\n }\n\n return output;\n };\n\n const clearTimePickerTimer = () => {\n if (timePickerTimer.current) {\n clearTimeout(timePickerTimer.current);\n }\n };\n\n const onTodayButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n const date = new Date();\n const dateMeta = {\n day: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n otherMonth: date.getMonth() !== currentMonth || date.getFullYear() !== currentYear,\n today: true,\n selectable: true\n };\n\n setCurrentView('date');\n onDateSelect(null, dateMeta);\n\n if (props.onTodayButtonClick) {\n props.onTodayButtonClick({\n originalEvent: event,\n date\n });\n }\n\n event.preventDefault();\n };\n\n const onClearButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n updateModel(null);\n setOverlayVisibleState(false);\n setShowClearIcon(false);\n\n if (props.onClearButtonClick) {\n props.onClearButtonClick(event);\n }\n\n event.preventDefault();\n };\n\n const onTimePickerElementMouseDown = (event: React.MouseEvent<HTMLButtonElement>, type: number, direction: number) => {\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseUp = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n if (isEnabled()) {\n clearTimePickerTimer();\n updateModelTime();\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseLeave = () => {\n clearTimePickerTimer();\n };\n\n const onContainerButtonKeydown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Tab':\n trapFocus(event);\n break;\n\n case 'Escape':\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n\n default:\n //Noop\n break;\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n };\n\n const onTimePickerElementKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, type: number, direction: number) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onTimePickerElementKeyUp = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onTimePickerElementMouseUp(event);\n }\n }\n };\n\n const repeat = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>, interval: number | null, type: number, direction: number) => {\n const i = interval || 500;\n\n clearTimePickerTimer();\n timePickerTimer.current = setTimeout(() => {\n repeat(event, 100, type, direction);\n }, i);\n\n switch (type) {\n case 0:\n if (direction === 1) {\n incrementHour(event);\n } else {\n decrementHour(event);\n }\n\n break;\n\n case 1:\n if (direction === 1) {\n incrementMinute(event);\n } else {\n decrementMinute(event);\n }\n\n break;\n\n case 2:\n if (direction === 1) {\n incrementSecond(event);\n } else {\n decrementSecond(event);\n }\n\n break;\n }\n };\n\n const convertTo24Hour = (hours: number, pm: boolean) => {\n if (props.hourFormat == '12') {\n if (hours === 12) {\n return pm ? 12 : 0;\n } else {\n return pm ? hours + 12 : hours;\n }\n }\n\n return hours;\n };\n\n const validateTime = (hour: number, minute: number, second: number, pm: boolean) => {\n let value: Date | string | null = viewDate;\n const convertedHour = convertTo24Hour(hour, pm);\n\n if (isRangeSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[1] || rawValueState[0] : null;\n }\n\n if (isMultipleSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[rawValueState.length - 1] : null;\n }\n\n const valueDateString = value instanceof Date ? value.toDateString() : null;\n\n if (props.minDate && valueDateString && props.minDate.toDateString() === valueDateString) {\n if (props.minDate.getHours() > convertedHour) {\n return false;\n }\n\n if (props.minDate.getHours() === convertedHour) {\n if (props.minDate.getMinutes() > minute) {\n return false;\n }\n\n if (props.minDate.getMinutes() === minute) {\n if (props.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n\n if (props.maxDate && valueDateString && props.maxDate.toDateString() === valueDateString) {\n if (props.maxDate.getHours() < convertedHour) {\n return false;\n }\n\n if (props.maxDate.getHours() === convertedHour) {\n if (props.maxDate.getMinutes() < minute) {\n return false;\n }\n\n if (props.maxDate.getMinutes() === minute) {\n if (props.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n const incrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const prevHour = currentHour;\n let newHour = currentHour + Number(props.stepHour);\n let newPM = pm;\n\n if (props.hourFormat == '24') {\n newHour = newHour >= 24 ? newHour - 24 : newHour;\n } else if (props.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !pm;\n }\n\n newHour = newHour >= 13 ? newHour - 12 : newHour;\n }\n\n if (validateTime(newHour, currentMinute, currentSecond, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n }\n\n event.preventDefault();\n };\n\n const decrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newHour = currentHour - Number(props.stepHour);\n let newPM = pm;\n\n if (props.hourFormat == '24') {\n newHour = newHour < 0 ? 24 + newHour : newHour;\n } else if (props.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (currentHour === 12) {\n newPM = !pm;\n }\n\n newHour = newHour <= 0 ? 12 + newHour : newHour;\n }\n\n if (validateTime(newHour, currentMinute, currentSecond, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n }\n\n event.preventDefault();\n };\n\n const incrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newMinute = currentMinute + Number(props.stepMinute);\n\n if (validateTime(currentHour, newMinute, currentSecond, pm)) {\n setCurrentMinute(newMinute > 59 ? newMinute - 60 : newMinute);\n }\n\n event.preventDefault();\n };\n\n const decrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newMinute = currentMinute - Number(props.stepMinute);\n\n newMinute = newMinute < 0 ? 60 + newMinute : newMinute;\n\n if (validateTime(currentHour, newMinute, currentSecond, pm)) {\n setCurrentMinute(newMinute);\n }\n\n event.preventDefault();\n };\n\n const incrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newSecond = currentSecond + Number(props.stepSecond);\n\n if (validateTime(currentHour, currentMinute, newSecond, pm)) {\n setCurrentSecond(newSecond > 59 ? newSecond - 60 : newSecond);\n }\n\n event.preventDefault();\n };\n\n const decrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newSecond = currentSecond - Number(props.stepSecond);\n\n newSecond = newSecond < 0 ? 60 + newSecond : newSecond;\n\n if (validateTime(currentHour, currentMinute, newSecond, pm)) {\n setCurrentSecond(newSecond);\n }\n\n event.preventDefault();\n };\n\n const updateModelTime = () => {\n let valueDate: Date | string | null = viewDate;\n\n if (isRangeSelection()) {\n valueDate = Array.isArray(rawValueState) ? rawValueState[focusedDateIndex] || rawValueState[0] : null;\n }\n\n if (isMultipleSelection()) {\n valueDate = Array.isArray(rawValueState) ? rawValueState[rawValueState.length - 1] : null;\n }\n\n const dateValue = valueDate && valueDate instanceof Date ? new Date(valueDate.getTime()) : new Date();\n\n if (props.hourFormat == '12') {\n if (currentHour === 12) dateValue.setHours(pm ? 12 : 0);\n else dateValue.setHours(pm ? currentHour + 12 : currentHour);\n } else {\n dateValue.setHours(currentHour);\n }\n\n dateValue.setMinutes(currentMinute);\n dateValue.setSeconds(currentSecond);\n\n let value: useDatePickerProps['value'];\n\n if (isRangeSelection()) {\n if (Array.isArray(rawValueState)) {\n if (focusedDateIndex === 1 && rawValueState[1]) {\n value = [rawValueState[0] as Date | null, dateValue];\n } else if (focusedDateIndex === 0) {\n value = [dateValue, rawValueState[1] as Date | null];\n } else {\n value = [dateValue, null];\n }\n } else {\n value = [dateValue, null];\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(rawValueState)) {\n value = [...(rawValueState.slice(0, -1) as (Date | null)[]), dateValue];\n } else {\n value = [dateValue];\n }\n } else {\n value = dateValue;\n }\n\n updateModel(value);\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value\n });\n }\n };\n\n const toggleAMPM = (event: React.MouseEvent<HTMLButtonElement>) => {\n const validHour = validateTime(currentHour, currentMinute, currentSecond, !pm);\n\n if (!validHour && (props.maxDate || props.minDate)) return;\n\n setPM(!pm);\n\n event.preventDefault();\n };\n\n const onMonthSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n if (props.view === 'month') {\n onDateSelect(event, {\n year: currentYear,\n month: index,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentMonth(index);\n setCurrentView('date');\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const onYearSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n if (props.view === 'year') {\n onDateSelect(event, {\n year: year.value,\n month: 0,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentYear(year.value);\n setCurrentView('month');\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth + 1, year: currentYear });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const updateCurrentMetaData = () => {\n const _viewDate = viewDate as Date;\n\n if (!_viewDate) {\n return;\n }\n\n setCurrentMonth(_viewDate.getMonth());\n setCurrentYear(_viewDate.getFullYear());\n\n if (props.showTime || props.timeOnly) {\n let timeDate = _viewDate;\n\n if (isRangeSelection() && rawValueState && Array.isArray(rawValueState) && rawValueState[focusedDateIndex]) {\n const selectedDate = rawValueState[focusedDateIndex];\n\n if (selectedDate instanceof Date) {\n timeDate = selectedDate;\n }\n }\n\n updateCurrentTimeMeta(timeDate);\n }\n };\n\n const isValidSelection = (value: Date | Date[]) => {\n if (value == null) {\n return true;\n }\n\n let isValid = true;\n\n if (isSingleSelection() && value instanceof Date) {\n if (!isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n } else if (Array.isArray(value) && value.every((v) => isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (isRangeSelection()) {\n isValid = value.length > 1 && value[1] >= value[0];\n }\n }\n\n return isValid;\n };\n\n const parseValue = (text: string): useDatePickerProps['value'] => {\n if (!text || text.trim().length === 0) {\n return null;\n }\n\n let value: useDatePickerProps['value'];\n\n if (isSingleSelection()) {\n value = parseDateTime(text) ?? null;\n } else if (isMultipleSelection()) {\n const tokens = text.split(',');\n const dateArray: (Date | null)[] = [];\n\n for (const token of tokens) {\n dateArray.push(parseDateTime(token.trim()) ?? null);\n }\n\n value = dateArray;\n } else if (isRangeSelection()) {\n const tokens = text.split(' - ');\n const dateArray: (Date | null)[] = [];\n\n for (let i = 0; i < tokens.length; i++) {\n dateArray[i] = parseDateTime(tokens[i].trim()) ?? null;\n }\n\n value = dateArray;\n }\n\n return value;\n };\n\n const parseValueForComparison = (value: useDatePickerProps['value']): Date | null => {\n if (typeof value === 'string') {\n const parsedValue = parseValue(value);\n\n if (!parsedValue) {\n return null;\n }\n\n if (isSingleSelection()) {\n return parsedValue as Date | null;\n }\n\n if (Array.isArray(parsedValue)) {\n return (parsedValue[0] ?? null) as Date | null;\n }\n\n return null;\n }\n\n if (Array.isArray(value)) {\n return (value[0] ?? null) as Date | null;\n }\n\n return (value ?? null) as Date | null;\n };\n\n const parseDateTime = (text: string) => {\n let date;\n const parts = text.match(/(?:(.+?) )?(\\d{2}:\\d{2}(?::\\d{2})?)(?: (am|pm))?/);\n\n if (props.timeOnly) {\n date = new Date();\n\n if (parts) {\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n const dateFormat = datePattern;\n\n if (props.showTime) {\n if (parts) {\n date = parseDate(parts[1], dateFormat) as Date;\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n date = parseDate(text, dateFormat);\n }\n }\n\n return date;\n };\n\n const populateTime = (value: Date, timeString: string, ampm: string) => {\n if (props.hourFormat == '12' && !ampm) {\n throw new Error('Invalid Time');\n }\n\n setPM(ampm === primereact?.config?.locale?.pm || ampm === primereact?.config?.locale?.pm.toLowerCase());\n const time = parseTime(timeString);\n\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n\n if (time.second !== null) {\n value.setSeconds(time.second);\n }\n };\n\n const parseTime = (value: string) => {\n const tokens = value.split(':');\n const validTokenLength = props.showSeconds ? 3 : 2;\n const regex = /^[0-9][0-9]$/;\n\n if (tokens.length !== validTokenLength || !tokens[0].match(regex) || !tokens[1].match(regex) || (props.showSeconds && !tokens[2].match(regex))) {\n throw 'Invalid time';\n }\n\n let h = parseInt(tokens[0]);\n const m = parseInt(tokens[1]);\n const s = props.showSeconds ? parseInt(tokens[2]) : null;\n\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (props.hourFormat == '12' && h > 12) || (props.showSeconds && (s === null || isNaN(s) || s > 59))) {\n throw 'Invalid time';\n }\n\n if (props.hourFormat == '12' && h !== 12 && pm) {\n h += 12;\n } else if (props.hourFormat == '12' && h == 12 && !pm) {\n h = 0;\n }\n\n return { hour: h, minute: m, second: s };\n };\n\n const parseDate = (value: string | object, format: string) => {\n if (format == null || value == null) {\n throw 'Invalid arguments';\n }\n\n value = typeof value === 'object' ? value.toString() : value + '';\n\n if (value === '') {\n return null;\n }\n\n let iFormat: number;\n let dim;\n let extra;\n let iValue = 0;\n const shortYearCutoff = typeof props.shortYearCutoff !== 'string' ? props.shortYearCutoff : (new Date().getFullYear() % 100) + parseInt(props.shortYearCutoff, 10);\n let year = -1;\n let month = -1;\n let day = -1;\n\n let doy = -1;\n let literal = false;\n let date;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const getNumber = (match: string) => {\n const isDoubled = lookAhead(match),\n size = match === '@' ? 14 : match === '!' ? 20 : match === 'y' && isDoubled ? 4 : match === 'o' ? 3 : 2,\n minSize = match === 'y' ? size : 1,\n digits = new RegExp('^\\\\d{' + minSize + ',' + size + '}'),\n num = value.substring(iValue).match(digits);\n\n if (!num) {\n throw 'Missing number at position ' + iValue;\n }\n\n iValue += num[0].length;\n\n return parseInt(num[0], 10);\n };\n\n const getName = (match: string, shortNames: string[], longNames: string[]) => {\n let index = -1;\n const arr = lookAhead(match) ? longNames : shortNames;\n const names: [number, string][] = [];\n\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n\n names.sort((a, b) => {\n return b[1].length - a[1].length;\n });\n\n for (let i = 0; i < names.length; i++) {\n const name = names[i][1];\n\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n\n if (index !== -1) {\n return index + 1;\n } else {\n throw 'Unknown name at position ' + iValue;\n }\n };\n\n const checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw 'Unexpected literal at position ' + iValue;\n }\n\n iValue++;\n };\n\n if (currentView === 'month') {\n day = 1;\n }\n\n if (currentView === 'year') {\n day = 1;\n month = 1;\n }\n\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n day = getNumber('d');\n break;\n case 'D':\n getName('D', primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n doy = getNumber('o');\n break;\n case 'm':\n month = getNumber('m');\n break;\n case 'M':\n month = getName('M', primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n year = getNumber('y');\n break;\n case '@':\n date = new Date(getNumber('@'));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case '!':\n date = new Date((getNumber('!') - TICKS_TO_1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n\n break;\n default:\n checkLiteral();\n }\n }\n }\n\n if (iValue < value.length) {\n extra = value.substr(iValue);\n\n if (!/^\\s+/.test(extra)) {\n throw 'Extra/unparsed characters found in date: ' + extra;\n }\n }\n\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - (new Date().getFullYear() % 100) + (year <= (shortYearCutoff as number) ? 0 : -100);\n }\n\n if (doy > -1) {\n month = 1;\n day = doy;\n\n do {\n dim = getDaysCountInMonth(month - 1, year);\n\n if (day <= dim) {\n break;\n }\n\n month++;\n day -= dim;\n // eslint-disable-next-line\n } while (true);\n }\n\n date = daylightSavingAdjust(new Date(year, month - 1, day));\n\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw 'Invalid date'; // E.g. 31/02/00\n }\n\n return date;\n };\n\n const getWeekNumber = (date: Date) => {\n const checkDate = new Date(date.getTime());\n\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n\n checkDate.setMonth(0);\n checkDate.setDate(1);\n\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n };\n\n const onDateCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, date: useDatePickerDateMeta, groupIndex: number) => {\n event.preventDefault();\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement as HTMLTableCellElement;\n\n const cellIndex = getIndex(cell);\n\n switch (event.code) {\n case 'ArrowDown': {\n cellContent.tabIndex = -1;\n\n const nextRow = cell.parentElement?.nextElementSibling;\n\n if (nextRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const nextTableRows = tableRows.slice(tableRowIndex + 1);\n\n const hasNextFocusableDate = nextTableRows.find((el) => {\n const focusCell = el.children[cellIndex].children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n cellContent.tabIndex = -1;\n\n if (event.altKey) {\n setOverlayVisibleState(true);\n } else {\n const prevRow = cell.parentElement?.previousElementSibling;\n\n if (prevRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const prevTableRows = tableRows.slice(0, tableRowIndex).reverse();\n\n const hasNextFocusableDate = prevTableRows.find((el) => {\n const focusCell = el.children[cellIndex].children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cellContent.tabIndex = -1;\n const prevCell = cell.previousElementSibling;\n\n if (prevCell) {\n const cells = Array.from(cell.parentElement?.children ?? []);\n const prevCells = cells.slice(0, cellIndex).reverse();\n\n const hasPrevFocusableDate = prevCells.find((el) => {\n const focusCell = el.children[0];\n\n return getAttribute(focusCell, 'data-pc-section') !== 'weeklabelcontainer';\n });\n\n if (hasPrevFocusableDate) {\n const focusCell = hasPrevFocusableDate.children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cellContent.tabIndex = -1;\n const nextCell = cell.nextElementSibling;\n\n if (nextCell) {\n const cells = Array.from(cell.parentElement?.children ?? []);\n const nextCells = cells.slice(cellIndex + 1);\n const hasNextFocusableDate = nextCells.find((el) => {\n const focusCell = el.children[0];\n\n return !getAttribute(focusCell, 'data-p-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[0] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n\n break;\n }\n\n case 'Home': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[0].children[0] as HTMLElement;\n\n if (getAttribute(focusCell, 'data-p-disabled')) {\n navigateToMonth(event, true, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'End': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[currentRow.children.length - 1].children[0] as HTMLElement;\n\n if (getAttribute(focusCell, 'data-p-disabled')) {\n navigateToMonth(event, false, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageUp': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageDown': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const navigateToMonth = (event: React.KeyboardEvent<HTMLSpanElement>, prev: boolean, groupIndex: number = 0) => {\n if (prev) {\n if (props.numberOfMonths === 1 || groupIndex === 0) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n const prevMonthContainer = overlayRef.current?.children[groupIndex - 1] as HTMLElement;\n const cells = find(prevMonthContainer, 'table td span:not([data-p-disabled=\"true\"])');\n const focusCell = cells[cells.length - 1] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n } else {\n if (props.numberOfMonths === 1 || groupIndex === (props.numberOfMonths as number) - 1) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n const nextMonthContainer = overlayRef.current?.children[groupIndex + 1] as HTMLElement;\n const focusCell = findSingle(nextMonthContainer, 'table td span:not([data-p-disabled=\"true\"])') as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n }\n };\n\n const onMonthCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const onYearCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onYearSelect(event, year);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n setOverlayVisibleState(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const updateFocus = () => {\n let cell: Element | null = null;\n\n if (navigationState) {\n if (navigationState.button) {\n initFocusableCell();\n\n if (navigationState.backward) {\n if (prevButtonRef.current) {\n prevButtonRef.current?.elementRef.current.focus();\n }\n } else {\n if (nextButtonRef.current) {\n nextButtonRef.current?.elementRef.current.focus();\n }\n }\n } else {\n if (!overlayRef.current) {\n return;\n }\n\n if (navigationState.backward) {\n let cells;\n\n if (currentView === 'month') {\n cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]:not([data-p-disabled=\"true\"])');\n } else if (currentView === 'year') {\n cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]:not([data-p-disabled=\"true\"])');\n } else {\n cells = find(overlayRef.current, 'table td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n\n if (cells && cells.length > 0) {\n cell = cells[cells.length - 1];\n }\n } else {\n if (currentView === 'month') {\n cell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]:not([data-p-disabled=\"true\"])');\n } else if (currentView === 'year') {\n cell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]:not([data-p-disabled=\"true\"])');\n } else {\n cell = findSingle(overlayRef.current, 'table td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n (cell as HTMLElement).focus();\n }\n }\n\n setNavigationState(null);\n } else {\n initFocusableCell();\n }\n };\n\n const initFocusableCell = () => {\n let cell;\n\n if (!overlayRef.current) {\n return;\n }\n\n if (currentView === 'month') {\n const cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"]');\n const selectedCell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"month\"][data-p-selected=\"true\"]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else if (currentView === 'year') {\n const cells = find(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"]');\n const selectedCell = findSingle(overlayRef.current, '[data-pc-name=\"datepickertable\"] [data-pc-section=\"year\"][data-p-selected=\"true\"]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else {\n cell = findSingle(overlayRef.current, '.p-datepicker-calendar span[data-p-selected=\"true\"]');\n\n if (!cell) {\n const todayCell = findSingle(overlayRef.current, 'td[data-p-today=\"true\"] span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n\n if (todayCell) cell = todayCell;\n else cell = findSingle(overlayRef.current, '.p-datepicker-calendar td span:not([data-pc-section=\"weeklabelcontainer\"]):not([data-p-disabled=\"true\"])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n }\n };\n\n const trapFocus = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n if (!overlayRef.current) {\n return;\n }\n\n const focusableElements = getFocusableElements(overlayRef.current) as HTMLElement[];\n\n if (focusableElements && focusableElements.length > 0) {\n if (!document.activeElement) {\n focusableElements[0].focus();\n } else {\n const focusedIndex = focusableElements.indexOf(document.activeElement as HTMLElement);\n\n if (event.shiftKey) {\n if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();\n else focusableElements[focusedIndex - 1].focus();\n } else {\n if (focusedIndex === -1) {\n if (props.timeOnly) {\n focusableElements[0].focus();\n } else {\n let elementIndex = focusableElements.findIndex((el) => el.tagName === 'SPAN');\n\n if (elementIndex === -1) {\n elementIndex = focusableElements.findIndex((el) => el.tagName === 'BUTTON');\n }\n\n if (elementIndex !== -1) {\n focusableElements[elementIndex].focus();\n } else {\n focusableElements[0].focus();\n }\n }\n } else if (focusedIndex === focusableElements.length - 1) {\n focusableElements[0].focus();\n } else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n };\n\n const getMonthName = (index?: number) => {\n return primereact?.config?.locale?.monthNames[index ?? currentMonth];\n };\n\n const getYear = () => {\n return currentYear;\n };\n\n const onClearClick = () => {\n updateModel(null);\n setShowClearIcon(false);\n setOverlayVisibleState(false);\n };\n\n const onInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n try {\n selectionStart.current = event.target.selectionStart;\n selectionEnd.current = event.target.selectionEnd;\n\n setShowClearIcon(!isEmpty(event.target.value));\n const value = parseValue(event.target.value) as Date;\n\n if (isValidSelection(value)) {\n typeUpdate.current = true;\n updateModel(props.updateModelType === 'string' ? formatValue(value) : value);\n updateCurrentMetaData();\n }\n } catch {\n /* NoOp */\n }\n\n if (props.onInput) {\n props.onInput(event);\n }\n };\n\n const onInputClick = () => {\n if (props.showOnFocus && isEnabled() && !overlayVisibleState) {\n setOverlayVisibleState(true);\n }\n };\n\n const onInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'ArrowDown' && overlayVisibleState) {\n trapFocus(event);\n } else if (event.code === 'ArrowDown' && !overlayVisibleState) {\n setOverlayVisibleState(true);\n } else if (event.code === 'Escape') {\n if (overlayVisibleState) {\n setOverlayVisibleState(false);\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.code === 'Tab') {\n if (overlayVisibleState && overlayRef.current) {\n (getFocusableElements(overlayRef.current) as HTMLElement[]).forEach((el) => (el.tabIndex = -1));\n }\n\n if (overlayVisibleState) {\n setOverlayVisibleState(false);\n }\n } else if (event.code === 'Enter') {\n if (props.manualInput && (event.target as HTMLInputElement).value !== null && (event.target as HTMLInputElement).value?.trim() !== '') {\n try {\n const value = parseValue((event.target as HTMLInputElement).value) as Date | Date[];\n\n if (isValidSelection(value)) {\n setOverlayVisibleState(false);\n }\n } catch {\n /* NoOp */\n }\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n }\n };\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.showonInputFocus && isEnabled()) {\n setOverlayVisibleState(true);\n }\n\n if (props.onFocus) {\n props.onFocus(event);\n }\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.onBlur) {\n props.onBlur({\n originalEvent: event,\n value: event.target.value\n });\n }\n\n if (props.onValueChange) {\n event.target.value = formatValue(rawValueState);\n }\n\n if (showClearIcon) {\n setShowClearIcon(!isEmpty(event.target.value));\n }\n };\n\n const onOverlayEnter = () => {\n updateFocus();\n\n if (portalRef?.current?.containerRef?.current?.elementRef?.current) {\n const element = portalRef.current.containerRef.current.elementRef.current;\n\n if (elementRef?.current) {\n element.style.width = getOuterWidth(element) + 'px';\n element.style.minWidth = getOuterWidth(elementRef.current) + 'px';\n }\n }\n };\n\n const changeVisibleState = (isVisible: boolean) => {\n setOverlayVisibleState(isVisible);\n };\n\n const viewDate = React.useMemo<Date>(() => {\n let propValue = rawValueState;\n\n if (propValue && Array.isArray(propValue)) {\n if (isRangeSelection()) {\n if (propValue.length === 0) {\n propValue = null;\n } else if (propValue.length === 1) {\n propValue = propValue[0];\n } else {\n const start = parseValueForComparison(propValue[0]) as Date;\n const end = parseValueForComparison(propValue[1]) as Date | null;\n const lastVisibleMonth = new Date(start.getFullYear(), start.getMonth() + (props.numberOfMonths ?? 1), 1);\n\n if (!end || end < lastVisibleMonth) {\n propValue = propValue[0];\n } else {\n propValue = new Date(end.getFullYear(), end.getMonth() - (props.numberOfMonths ?? 1) + 1, 1);\n }\n }\n } else if (isMultipleSelection()) {\n propValue = propValue[propValue.length - 1];\n }\n }\n\n if (propValue && typeof propValue !== 'string') {\n return propValue as Date;\n } else {\n const today = new Date();\n\n if (props.maxDate && props.maxDate < today) {\n return props.maxDate;\n }\n\n if (props.minDate && props.minDate > today) {\n return props.minDate;\n }\n\n return today;\n }\n }, [rawValueState, props.numberOfMonths, props.maxDate, props.minDate]);\n\n const inputFieldValue = React.useMemo(() => {\n return formatValue(rawValueState);\n }, [rawValueState]);\n\n const months = React.useMemo(() => {\n const monthsArray = [];\n\n for (let i = 0; i < (props.numberOfMonths ?? 1); i++) {\n let month = (currentMonth ?? 0) + i;\n let year = currentYear ?? 0;\n\n if (month > 11) {\n month = (month % 11) - 1;\n year = year + 1;\n }\n\n const dates = [];\n const firstDay = getFirstDayOfMonthIndex(month, year);\n const daysLength = getDaysCountInMonth(month, year);\n const prevMonthDaysLength = getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n const today = new Date();\n const weekNumbers = [];\n const monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n for (let i = 0; i < monthRows; i++) {\n const week = [];\n\n if (i == 0) {\n for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {\n const prev = getPreviousMonthAndYear(month, year);\n\n week.push({\n day: j,\n month: prev.month,\n year: prev.year,\n otherMonth: true,\n today: isToday(today, j, prev.month, prev.year),\n selectable: isSelectable(j, prev.month, prev.year, true)\n });\n }\n\n const remainingDaysLength = 7 - week.length;\n\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n dayNo++;\n }\n } else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n const next = getNextMonthAndYear(month, year);\n\n week.push({\n day: dayNo - daysLength,\n month: next.month,\n year: next.year,\n otherMonth: true,\n today: isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: isSelectable(dayNo - daysLength, next.month, next.year, true)\n });\n } else {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n }\n\n dayNo++;\n }\n }\n\n weekNumbers.push(getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n\n dates.push(week);\n }\n\n monthsArray.push({\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n });\n }\n\n return monthsArray;\n }, [currentMonth, currentYear, props.numberOfMonths, props.minDate, props.maxDate, props.disabledDates, props.disabledDays, props.selectOtherMonths]);\n\n const getIndexedMonth = React.useCallback(\n (index: number = 0) => {\n return months[index];\n },\n [months]\n );\n\n const monthPickerValues = React.useMemo(() => {\n const monthPickerValuesArray = [];\n\n const isSelectableMonth = (baseMonth: number) => {\n if (props.minDate) {\n const minMonth = props.minDate.getMonth();\n const minYear = props.minDate.getFullYear();\n\n if ((currentYear as number) < minYear || (currentYear === minYear && baseMonth < minMonth)) {\n return false;\n }\n }\n\n if (props.maxDate) {\n const maxMonth = props.maxDate.getMonth();\n const maxYear = props.maxDate.getFullYear();\n\n if ((currentYear as number) > maxYear || (currentYear === maxYear && baseMonth > maxMonth)) {\n return false;\n }\n }\n\n return true;\n };\n\n for (let i = 0; i <= 11; i++) {\n monthPickerValuesArray.push({\n value: primereact?.config?.locale?.monthNamesShort[i],\n selectable: isSelectableMonth(i)\n });\n }\n\n return monthPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const yearPickerValues = React.useMemo(() => {\n const yearPickerValuesArray = [];\n const base = (currentYear as number) - ((currentYear as number) % 10);\n\n const isSelectableYear = (baseYear: number) => {\n if (props.minDate) {\n if (props.minDate.getFullYear() > baseYear) return false;\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < baseYear) return false;\n }\n\n return true;\n };\n\n for (let i = 0; i < 10; i++) {\n yearPickerValuesArray.push({ value: base + i, selectable: isSelectableYear(base + i) });\n }\n\n return yearPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const weekDays = React.useMemo(() => {\n const weekDays = [];\n\n let dayIndex = primereact?.config?.locale?.firstDayOfWeek;\n\n for (let i = 0; i < 7; i++) {\n weekDays.push(primereact?.config?.locale?.dayNamesMin[dayIndex]);\n dayIndex = dayIndex == 6 ? 0 : ++dayIndex;\n }\n\n return weekDays;\n }, []);\n\n const datePattern = React.useMemo(() => {\n return props.dateFormat || primereact?.config?.locale?.dateFormat;\n }, [props.dateFormat, primereact?.config?.locale]);\n\n const formattedCurrentHour = React.useMemo(() => {\n if (currentHour == 0 && props.hourFormat == '12') {\n return currentHour + 12;\n }\n\n return currentHour < 10 ? '0' + currentHour : currentHour;\n }, [currentHour, props.hourFormat]);\n\n const formattedCurrentMinute = React.useMemo(() => {\n return currentMinute < 10 ? '0' + currentMinute : currentMinute;\n }, [currentMinute]);\n\n const formattedCurrentSecond = React.useMemo(() => {\n return currentSecond < 10 ? '0' + currentSecond : currentSecond;\n }, [currentSecond]);\n\n const todayLabel = React.useMemo(() => {\n return primereact?.config?.locale?.today;\n }, [primereact?.config?.locale]);\n\n const clearLabel = React.useMemo(() => {\n return primereact?.config?.locale?.clear;\n }, [primereact?.config?.locale]);\n\n const weekHeaderLabel = React.useMemo(() => {\n return primereact?.config?.locale?.weekHeader;\n }, [primereact?.config?.locale]);\n\n const switchViewButtonDisabled = React.useMemo(() => {\n return (props.numberOfMonths as number) > 1 || !!props.disabled;\n }, [props.numberOfMonths, props.disabled]);\n\n const ampmLabel = React.useMemo(() => {\n if (pm) {\n return primereact?.config?.locale?.pm;\n }\n\n return primereact?.config?.locale?.am;\n }, [pm, primereact?.config?.locale]);\n\n // effects\n useMountEffect(() => {\n setTimeout(() => {\n if (!props.disabled) {\n initFocusableCell();\n }\n }, 300);\n });\n\n React.useEffect(() => {\n if (inputRef.current?.elementRef.current && selectionStart.current != null && selectionEnd.current != null) {\n inputRef.current.elementRef.current.selectionStart = selectionStart.current;\n inputRef.current.elementRef.current.selectionEnd = selectionEnd.current;\n selectionStart.current = null;\n selectionEnd.current = null;\n }\n }, [inputFieldValue]);\n\n React.useEffect(() => {\n updateFocus();\n }, [currentView, months]);\n\n React.useEffect(() => {\n if (props.value === undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.value === 'string' ? parseValue(props.value) : props.value) as useDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n if (!typeUpdate.current && inputRef.current && inputRef.current.elementRef.current) {\n inputRef.current.elementRef.current.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.value]);\n\n React.useEffect(() => {\n if (props.value !== undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.defaultValue === 'string' ? parseValue(props.defaultValue) : props.defaultValue) as useDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n if (!typeUpdate.current && inputRef.current && inputRef.current.elementRef.current) {\n inputRef.current.elementRef.current.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.defaultValue]);\n\n React.useEffect(() => {\n if (isEmpty(rawValueState)) {\n setShowClearIcon(false);\n }\n }, [rawValueState]);\n\n React.useEffect(() => {\n if (props.showTime && overlayVisibleState) {\n updateModelTime();\n }\n }, [pm]);\n\n React.useEffect(() => {\n if (!overlayVisibleState && hoveredDateState) {\n setHoveredDateState(null);\n }\n }, [overlayVisibleState]);\n\n return {\n state,\n inputRef,\n nextButtonRef,\n prevButtonRef,\n portalRef,\n overlayRef,\n //methods\n inputFieldValue,\n weekHeaderLabel,\n todayLabel,\n clearLabel,\n weekDays,\n months,\n getIndexedMonth,\n getYear,\n getMonthName,\n onPrevButtonClick,\n onNextButtonClick,\n monthPickerValues,\n yearPickerValues,\n switchToMonthView,\n switchToYearView,\n onDateSelect,\n onMonthSelect,\n onYearSelect,\n onDateCellKeydown,\n onMonthCellKeydown,\n onYearCellKeydown,\n onButtonClick,\n switchViewButtonDisabled,\n formattedCurrentHour,\n formattedCurrentMinute,\n formattedCurrentSecond,\n ampmLabel,\n onTimePickerElementMouseDown,\n onTimePickerElementMouseUp,\n onTimePickerElementMouseLeave,\n onContainerButtonKeydown,\n onTimePickerElementKeyDown,\n onTimePickerElementKeyUp,\n toggleAMPM,\n onTodayButtonClick,\n onClearButtonClick,\n onClearClick,\n onInput,\n onInputClick,\n onInputKeyDown,\n onInputFocus,\n onInputBlur,\n onOverlayEnter,\n changeVisibleState,\n // for styling\n isRangeSelection,\n isSelected,\n parseValue,\n isDateEquals,\n isMonthSelected,\n isYearSelected,\n isInHoverRange,\n onDateCellMouseEnter\n };\n }\n});\n","import type { useDatePickerProps } from '@primereact/types/shared/datepicker';\n\nexport const defaultProps: useDatePickerProps = {\n defaultValue: undefined,\n value: undefined,\n updateModelType: 'date',\n selectionMode: 'single',\n dateFormat: undefined,\n selectOtherMonths: false,\n numberOfMonths: 1,\n view: 'date',\n minDate: undefined,\n maxDate: undefined,\n maxDateCount: undefined,\n showOnFocus: true,\n autoZIndex: true,\n baseZIndex: 0,\n shortYearCutoff: '+10',\n showTime: false,\n timeOnly: false,\n hourFormat: '24',\n stepHour: 1,\n stepMinute: 1,\n stepSecond: 1,\n hideOnDateTimeSelect: false,\n hideOnRangeSelection: false,\n timeSeparator: ':',\n manualInput: true,\n showSeconds: false,\n appendTo: 'body',\n onValueChange: undefined,\n onDateSelect: undefined,\n onMonthChange: undefined,\n onYearChange: undefined,\n onTodayButtonClick: undefined,\n onClearButtonClick: undefined,\n onInput: undefined,\n onKeyDown: undefined,\n onFocus: undefined,\n onBlur: undefined\n};\n"],"mappings":"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","names":["withHeadless","useMountEffect","find","findSingle","getAttribute","getFocusableElements","getIndex","getOuterWidth","isDate","isEmpty","isNotEmpty","React","defaultProps","TICKS_TO_1970","primereact","useDatePicker","withHeadless","defaultProps","props","elementRef","_a","_b","_c","_d","_e","inputRef","nextButtonRef","prevButtonRef","portalRef","overlayRef","timePickerTimer","typeUpdate","selectionStart","selectionEnd","showClearIcon","setShowClearIcon","overlayVisibleState","setOverlayVisibleState","currentView","setCurrentView","currentMonth","setCurrentMonth","currentYear","setCurrentYear","currentHour","setCurrentHour","currentMinute","setCurrentMinute","currentSecond","setCurrentSecond","pm","setPM","focusedDateIndex","setFocusedDateIndex","navigationState","setNavigationState","hoveredDateState","setHoveredDateState","getInitialValue","parseValue","rawValueState","setRawValueState","state","isSelected","dateMeta","isSingleSelection","isDateEquals","parseValueForComparison","isMultipleSelection","selected","date","isRangeSelection","start","end","isDateBetween","isInHoverRange","hoverDateObj","currentDateObj","rangeStart","rangeEnd","currentTime","onDateCellMouseEnter","isMonthSelected","month","isDate","currentValue","parsedDate","parsedStart","parsedEnd","currentDate","startDate","endDate","isYearSelected","year","value","dateValue","sundayIndex","getFirstDayOfMonthIndex","day","dayIndex","getDaysCountInMonth","daylightSavingAdjust","getDaysCountInPrevMonth","prev","getPreviousMonthAndYear","m","y","getNextMonthAndYear","isToday","today","isSelectable","otherMonth","validMin","validMax","validDate","validDay","isDateDisabled","isDayDisabled","onPrevButtonClick","event","navBackward","onNextButtonClick","navForward","isEnabled","decrementYear","decrementDecade","incrementYear","incrementDecade","switchToMonthView","switchToYearView","updateCurrentTimeMeta","_f","onButtonClick","disabledDate","weekdayNumber","onDateSelect","find","cell","newValue","updateModel","shouldSelectDate","selectDate","modelVal","writeValue","stringArrValue","formatDateTime","formatted","isEmpty","formatValue","formatDate","formattedValue","singleVal","i","v","dateAsString","e","isNotEmpty","formatTime","datePattern","format","_g","_h","iFormat","lookAhead","match","matches","formatNumber","len","num","formatName","shortNames","longNames","output","literal","hours","minutes","seconds","clearTimePickerTimer","onTodayButtonClick","onClearButtonClick","onTimePickerElementMouseDown","type","direction","repeat","onTimePickerElementMouseUp","updateModelTime","onTimePickerElementMouseLeave","onContainerButtonKeydown","trapFocus","onTimePickerElementKeyDown","onTimePickerElementKeyUp","interval","incrementHour","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","convertTo24Hour","validateTime","hour","minute","second","viewDate","convertedHour","valueDateString","prevHour","newHour","newPM","newMinute","newSecond","valueDate","toggleAMPM","onMonthSelect","index","updateFocus","onYearSelect","updateCurrentMetaData","_viewDate","timeDate","selectedDate","isValidSelection","isValid","text","parseDateTime","tokens","dateArray","token","parsedValue","parts","populateTime","dateFormat","parseDate","timeString","ampm","time","parseTime","validTokenLength","regex","h","s","dim","extra","iValue","shortYearCutoff","doy","getNumber","isDoubled","size","minSize","digits","getName","arr","names","a","b","name","checkLiteral","getWeekNumber","checkDate","onDateCellKeydown","groupIndex","_i","_j","_k","_l","cellContent","cellIndex","getIndex","tableRowIndex","hasNextFocusableDate","el","focusCell","getAttribute","hasPrevFocusableDate","navigateToMonth","currentRow","prevMonthContainer","cells","nextMonthContainer","findSingle","onMonthCellKeydown","parentCell","targetRow","columnIndex","targetCellContainer","targetElement","prevCell","nextCell","onYearCellKeydown","initFocusableCell","selectedCell","todayCell","focusableElements","getFocusableElements","focusedIndex","elementIndex","getMonthName","getYear","onClearClick","onInput","onInputClick","onInputKeyDown","onInputFocus","onInputBlur","onOverlayEnter","element","getOuterWidth","changeVisibleState","isVisible","propValue","lastVisibleMonth","inputFieldValue","months","monthsArray","dates","firstDay","daysLength","prevMonthDaysLength","dayNo","weekNumbers","monthRows","week","j","remainingDaysLength","next","getIndexedMonth","monthPickerValues","monthPickerValuesArray","isSelectableMonth","baseMonth","minMonth","minYear","maxMonth","maxYear","yearPickerValues","yearPickerValuesArray","base","isSelectableYear","baseYear","weekDays","formattedCurrentHour","formattedCurrentMinute","formattedCurrentSecond","todayLabel","clearLabel","weekHeaderLabel","switchViewButtonDisabled","ampmLabel","useMountEffect","initialValue"]}
1
+ {"version":3,"sources":["../../src/datepicker/useDatePicker.ts","../../src/datepicker/useDatePicker.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { usePopover } from '@primereact/headless/popover';\nimport type { UseDatePickerDateMeta, UseDatePickerExposes, UseDatePickerProps } from '@primereact/types/headless/datepicker';\nimport type { UsePopoverOpenChangeEvent } from '@primereact/types/headless/popover';\nimport { find, findSingle, focus, getAttribute, getFocusableElements, getIndex, isDate, isNotEmpty, toElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useDatePicker.props';\n\nconst TICKS_TO_1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;\n\nconst primereact = {\n config: {\n locale: {\n startsWith: 'Starts with',\n contains: 'Contains',\n notContains: 'Not contains',\n endsWith: 'Ends with',\n equals: 'Equals',\n notEquals: 'Not equals',\n noFilter: 'No Filter',\n lt: 'Less than',\n lte: 'Less than or equal to',\n gt: 'Greater than',\n gte: 'Greater than or equal to',\n dateIs: 'Date is',\n dateIsNot: 'Date is not',\n dateBefore: 'Date is before',\n dateAfter: 'Date is after',\n clear: 'Clear',\n apply: 'Apply',\n matchAll: 'Match All',\n matchAny: 'Match Any',\n addRule: 'Add Rule',\n removeRule: 'Remove Rule',\n accept: 'Yes',\n reject: 'No',\n choose: 'Choose',\n upload: 'Upload',\n cancel: 'Cancel',\n completed: 'Completed',\n pending: 'Pending',\n fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n chooseYear: 'Choose Year',\n chooseMonth: 'Choose Month',\n chooseDate: 'Choose Date',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n prevHour: 'Previous Hour',\n nextHour: 'Next Hour',\n prevMinute: 'Previous Minute',\n nextMinute: 'Next Minute',\n prevSecond: 'Previous Second',\n nextSecond: 'Next Second',\n am: 'am',\n pm: 'pm',\n today: 'Today',\n weekHeader: 'Wk',\n firstDayOfWeek: 0,\n showMonthAfterYear: false,\n dateFormat: 'mm/dd/yy',\n weak: 'Weak',\n medium: 'Medium',\n strong: 'Strong',\n passwordPrompt: 'Enter a password',\n emptyFilterMessage: 'No results found',\n searchMessage: '{0} results are available',\n selectionMessage: '{0} items selected',\n emptySelectionMessage: 'No selected item',\n emptySearchMessage: 'No results found',\n fileChosenMessage: '{0} files',\n noFileChosenMessage: 'No file chosen',\n emptyMessage: 'No available options',\n aria: {\n trueLabel: 'True',\n falseLabel: 'False',\n nullLabel: 'Not Selected',\n star: '1 star',\n stars: '{star} stars',\n selectAll: 'All items selected',\n unselectAll: 'All items unselected',\n close: 'Close',\n previous: 'Previous',\n next: 'Next',\n navigation: 'Navigation',\n scrollTop: 'Scroll Top',\n moveTop: 'Move Top',\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveBottom: 'Move Bottom',\n moveToTarget: 'Move to Target',\n moveToSource: 'Move to Source',\n moveAllToTarget: 'Move All to Target',\n moveAllToSource: 'Move All to Source',\n pageLabel: 'Page {page}',\n firstPageLabel: 'First Page',\n lastPageLabel: 'Last Page',\n nextPageLabel: 'Next Page',\n prevPageLabel: 'Previous Page',\n rowsPerPageLabel: 'Rows per page',\n jumpToPageDropdownLabel: 'Jump to Page Dropdown',\n jumpToPageInputLabel: 'Jump to Page Input',\n selectRow: 'Row Selected',\n unselectRow: 'Row Unselected',\n expandRow: 'Row Expanded',\n collapseRow: 'Row Collapsed',\n showFilterMenu: 'Show Filter Menu',\n hideFilterMenu: 'Hide Filter Menu',\n filterOperator: 'Filter Operator',\n filterConstraint: 'Filter Constraint',\n editRow: 'Row Edit',\n saveEdit: 'Save Edit',\n cancelEdit: 'Cancel Edit',\n listView: 'List View',\n gridView: 'Grid View',\n slide: 'Slide',\n slideNumber: '{slideNumber}',\n zoomImage: 'Zoom Image',\n zoomIn: 'Zoom In',\n zoomOut: 'Zoom Out',\n rotateRight: 'Rotate Right',\n rotateLeft: 'Rotate Left',\n listLabel: 'Option List'\n }\n }\n }\n};\n\nexport const useDatePicker = withHeadless<UseDatePickerProps, typeof defaultProps, UseDatePickerExposes & Record<PropertyKey, unknown>>({\n name: 'useDatePicker',\n defaultProps,\n setup: ({ props, id }) => {\n const nextButtonRef = React.useRef<HTMLButtonElement | null>(null);\n const prevButtonRef = React.useRef<HTMLButtonElement | null>(null);\n const calendarRef = React.useRef<HTMLDivElement | null>(null);\n const timePickerTimer = React.useRef<NodeJS.Timeout | null>(null);\n const typeUpdate = React.useRef(false);\n const selectionStart = React.useRef<number | null>(null);\n const selectionEnd = React.useRef<number | null>(null);\n\n const handleOpenChange = (event: UsePopoverOpenChangeEvent) => {\n props.onOpenChange?.({ value: !!event.value });\n };\n\n const popover = usePopover({\n open: props.open,\n defaultOpen: props.defaultOpen ?? false,\n closeOnEscape: props.closeOnEscape,\n autoFocus: props.autoFocus,\n trapped: props.trapped,\n onOpenChange: handleOpenChange\n });\n\n const [currentView, setCurrentView] = React.useState(props.view);\n const [currentMonth, setCurrentMonth] = React.useState<number>(0);\n const [currentYear, setCurrentYear] = React.useState<number>(0);\n const [currentHour, setCurrentHourState] = React.useState<number>(0);\n const [currentMinute, setCurrentMinuteState] = React.useState<number>(0);\n const [currentSecond, setCurrentSecondState] = React.useState<number>(0);\n const [pm, setPMState] = React.useState<boolean>(false);\n\n // Refs mirror time state so press-and-hold repeat reads the latest value\n // (closure-captured state is stale across timer ticks).\n const currentHourRef = React.useRef(currentHour);\n const currentMinuteRef = React.useRef(currentMinute);\n const currentSecondRef = React.useRef(currentSecond);\n const pmRef = React.useRef(pm);\n\n const setCurrentHour = React.useCallback((value: number) => {\n currentHourRef.current = value;\n setCurrentHourState(value);\n }, []);\n const setCurrentMinute = React.useCallback((value: number) => {\n currentMinuteRef.current = value;\n setCurrentMinuteState(value);\n }, []);\n const setCurrentSecond = React.useCallback((value: number) => {\n currentSecondRef.current = value;\n setCurrentSecondState(value);\n }, []);\n const setPM = React.useCallback((value: boolean) => {\n pmRef.current = value;\n setPMState(value);\n }, []);\n const [focusedDateIndex, setFocusedDateIndexState] = React.useState(0);\n const focusedDateIndexRef = React.useRef(focusedDateIndex);\n const setFocusedDateIndex = React.useCallback((value: number) => {\n focusedDateIndexRef.current = value;\n setFocusedDateIndexState(value);\n }, []);\n const [navigationState, setNavigationState] = React.useState<{ backward?: boolean; button?: boolean } | null>(null);\n const hoveredDateRef = React.useRef<UseDatePickerDateMeta | null>(null);\n\n const getInitialValue = (): UseDatePickerProps['value'] => {\n if (props.value !== undefined) {\n return typeof props.value === 'string' ? (parseValue(props.value) as UseDatePickerProps['value']) : props.value;\n }\n\n if (props.defaultValue !== undefined) {\n return typeof props.defaultValue === 'string' ? (parseValue(props.defaultValue) as UseDatePickerProps['value']) : props.defaultValue;\n }\n\n return null;\n };\n\n const [rawValueState, setRawValueStateInner] = React.useState<UseDatePickerProps['value']>(() => getInitialValue());\n const rawValueStateRef = React.useRef<UseDatePickerProps['value']>(rawValueState);\n const setRawValueState = React.useCallback((value: UseDatePickerProps['value']) => {\n rawValueStateRef.current = value;\n setRawValueStateInner(value);\n }, []);\n\n const calendarRefs = React.useRef<Set<HTMLDivElement>>(new Set());\n const setCalendarRef = React.useCallback((node: HTMLDivElement | null) => {\n if (node) {\n calendarRefs.current.add(node);\n\n if (!calendarRef.current) calendarRef.current = node;\n } else {\n if (calendarRef.current && !document.body.contains(calendarRef.current)) {\n calendarRefs.current.delete(calendarRef.current);\n calendarRef.current = calendarRefs.current.values().next().value ?? null;\n }\n }\n }, []);\n\n const setNextButtonRef = React.useCallback((node: HTMLButtonElement | null) => {\n nextButtonRef.current = node;\n }, []);\n\n const setPrevButtonRef = React.useCallback((node: HTMLButtonElement | null) => {\n prevButtonRef.current = node;\n }, []);\n\n const state = {\n rawValue: rawValueState,\n opened: popover.state.open,\n currentView,\n anchorElement: popover.state.anchorElement,\n positionerElement: popover.state.positionerElement,\n popupElement: popover.state.popupElement,\n arrowElement: popover.state.arrowElement,\n rendered: popover.state.rendered,\n isPopup: !!popover.state.rendered\n };\n\n const isSelected = (dateMeta: UseDatePickerDateMeta) => {\n if (rawValueState) {\n if (isSingleSelection()) {\n return isDateEquals(parseValueForComparison(rawValueState), dateMeta);\n } else if (isMultipleSelection()) {\n let selected = false;\n\n if (Array.isArray(rawValueState)) {\n for (const date of rawValueState) {\n selected = isDateEquals(parseValueForComparison(date), dateMeta);\n\n if (selected) {\n break;\n }\n }\n }\n\n return selected;\n } else if (isRangeSelection() && Array.isArray(rawValueState)) {\n const start = parseValueForComparison(rawValueState[0]);\n\n if (start === null) {\n return false;\n }\n\n if (rawValueState[1]) {\n const end = parseValueForComparison(rawValueState[1]);\n\n if (end === null) {\n return false;\n }\n\n return isDateEquals(start, dateMeta) || isDateEquals(end, dateMeta) || isDateBetween(start, end, dateMeta);\n } else {\n return isDateEquals(start, dateMeta);\n }\n }\n }\n\n return false;\n };\n\n const isRangeMode = props.selectionMode === 'range';\n const isSingleMode = props.selectionMode === 'single';\n const isMultipleMode = props.selectionMode === 'multiple';\n\n const onDateCellMouseEnter = (dateMeta: UseDatePickerDateMeta) => {\n if (isRangeSelection() && dateMeta.selectable) {\n updateHoverPreview(dateMeta);\n }\n };\n\n const isMonthSelected = (month: number) => {\n if (isDate(rawValueState) && rawValueState !== null) {\n return (rawValueState as Date).getMonth() === month && (rawValueState as Date).getFullYear() === currentYear;\n } else if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getMonth() === month && parsedDate.getFullYear() === currentYear : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n if (!parsedEnd) {\n return parsedStart ? parsedStart.getFullYear() === currentYear && parsedStart.getMonth() === month : false;\n } else {\n if (!parsedStart) return false;\n\n const currentDate = new Date(currentYear as number, month, 1);\n const startDate = new Date(parsedStart.getFullYear(), parsedStart.getMonth(), 1);\n const endDate = new Date(parsedEnd.getFullYear(), parsedEnd.getMonth(), 1);\n\n return currentDate >= startDate && currentDate <= endDate;\n }\n }\n }\n\n return false;\n };\n\n const isYearSelected = (year: number) => {\n if (Array.isArray(rawValueState)) {\n if (isMultipleSelection()) {\n return rawValueState?.some((currentValue) => {\n const parsedDate = parseValueForComparison(currentValue);\n\n return parsedDate ? parsedDate.getFullYear() === year : false;\n });\n } else if (isRangeSelection()) {\n const parsedStart = rawValueState?.[0] ? parseValueForComparison(rawValueState[0]) : null;\n const parsedEnd = rawValueState?.[1] ? parseValueForComparison(rawValueState[1]) : null;\n\n const start = parsedStart ? parsedStart.getFullYear() : null;\n const end = parsedEnd ? parsedEnd.getFullYear() : null;\n\n if (start !== null && end !== null) return year >= start && year <= end;\n\n return year === start || year === end;\n }\n } else if (isDate(rawValueState) && rawValueState !== null) {\n return (rawValueState as Date).getFullYear() === year;\n }\n\n return false;\n };\n\n const isDateEquals = (value: Date | string | null | undefined, dateMeta: UseDatePickerDateMeta) => {\n if (value) {\n const dateValue = typeof value === 'string' ? (parseValue(value) as Date | string) : value;\n\n if (dateValue && dateValue instanceof Date) {\n return dateValue.getDate() === dateMeta.day && dateValue.getMonth() === dateMeta.month && dateValue.getFullYear() === dateMeta.year;\n }\n }\n\n return false;\n };\n\n const isDateBetween = (start: Date, end: Date, dateMeta: UseDatePickerDateMeta) => {\n const between = false;\n const parsedStart = parseValueForComparison(start);\n const parsedEnd = parseValueForComparison(end);\n\n if (parsedStart && parsedEnd) {\n const date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n return parsedStart.getTime() <= date.getTime() && parsedEnd.getTime() >= date.getTime();\n }\n\n return between;\n };\n\n const sundayIndex = React.useMemo(() => {\n return primereact?.config?.locale?.firstDayOfWeek > 0 ? 7 - primereact?.config?.locale?.firstDayOfWeek : 0;\n }, []);\n\n const getFirstDayOfMonthIndex = (month: number, year: number) => {\n const day = new Date();\n\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n\n const dayIndex = day.getDay() + sundayIndex;\n\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n };\n\n const getDaysCountInMonth = (month: number, year: number) => {\n return 32 - daylightSavingAdjust(new Date(year, month, 32)).getDate();\n };\n\n const getDaysCountInPrevMonth = (month: number, year: number) => {\n const prev = getPreviousMonthAndYear(month, year);\n\n return getDaysCountInMonth(prev.month, prev.year);\n };\n\n const getPreviousMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 0) {\n m = 11;\n y = year - 1;\n } else {\n m = month - 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const getNextMonthAndYear = (month: number, year: number) => {\n let m, y;\n\n if (month === 11) {\n m = 0;\n y = year + 1;\n } else {\n m = month + 1;\n y = year;\n }\n\n return { month: m, year: y };\n };\n\n const daylightSavingAdjust = (date: Date) => {\n if (!date) {\n date = new Date();\n }\n\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n\n return date;\n };\n\n const isToday = (today: Date, day: number, month: number, year: number) => {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n };\n\n const isSelectable = (day: number, month: number, year: number, otherMonth: boolean) => {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n\n if (otherMonth && !props.selectOtherMonths) {\n return false;\n }\n\n if (props.minDate) {\n if (props.minDate.getFullYear() > year) {\n validMin = false;\n } else if (props.minDate.getFullYear() === year) {\n if (props.minDate.getMonth() > month) {\n validMin = false;\n } else if (props.minDate.getMonth() === month) {\n if (props.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < year) {\n validMax = false;\n } else if (props.maxDate.getFullYear() === year) {\n if (props.maxDate.getMonth() < month) {\n validMax = false;\n } else if (props.maxDate.getMonth() === month) {\n if (props.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n\n if (props.disabledDates) {\n validDate = !isDateDisabled(day, month, year);\n }\n\n if (props.disabledDays) {\n validDay = !isDayDisabled(day, month, year);\n }\n\n return validMin && validMax && validDate && validDay;\n };\n\n const onPrevButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: true, button: true });\n navBackward(event);\n };\n\n const onNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setNavigationState({ backward: false, button: true });\n navForward(event);\n };\n\n const navBackward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n const nextYear = (currentYear ?? 0) - 1;\n\n setCurrentYear(nextYear);\n\n if (props.onYearChange) {\n props.onYearChange({ month: (currentMonth ?? 0) + 1, year: nextYear });\n }\n } else if (currentView === 'year') {\n decrementDecade();\n } else {\n if (event.shiftKey) {\n decrementYear();\n } else {\n let nextMonth = currentMonth as number;\n let nextYear = currentYear as number;\n\n if (currentMonth === 0) {\n nextMonth = 11;\n nextYear = (currentYear ?? 0) - 1;\n setCurrentYear(nextYear);\n } else {\n nextMonth = (currentMonth as number) - 1;\n }\n\n setCurrentMonth(nextMonth);\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: nextMonth + 1, year: nextYear });\n }\n }\n }\n };\n\n const navForward = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLSpanElement>) => {\n event.preventDefault();\n\n if (!isEnabled()) {\n return;\n }\n\n if (currentView === 'month') {\n const nextYear = (currentYear ?? 0) + 1;\n\n setCurrentYear(nextYear);\n\n if (props.onYearChange) {\n props.onYearChange({ month: (currentMonth ?? 0) + 1, year: nextYear });\n }\n } else if (currentView === 'year') {\n incrementDecade();\n } else {\n if (event.shiftKey) {\n incrementYear();\n } else {\n let nextMonth = currentMonth as number;\n let nextYear = currentYear as number;\n\n if (currentMonth === 11) {\n nextMonth = 0;\n nextYear = (currentYear ?? 0) + 1;\n setCurrentYear(nextYear);\n } else {\n nextMonth = (currentMonth as number) + 1;\n }\n\n setCurrentMonth(nextMonth);\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: nextMonth + 1, year: nextYear });\n }\n }\n }\n };\n\n const decrementYear = () => {\n setCurrentYear((currentYear ?? 0) - 1);\n };\n\n const decrementDecade = () => {\n setCurrentYear((currentYear ?? 0) - 10);\n };\n\n const incrementYear = () => {\n setCurrentYear((currentYear ?? 0) + 1);\n };\n\n const incrementDecade = () => {\n setCurrentYear((currentYear ?? 0) + 10);\n };\n\n const switchToMonthView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('month');\n event.preventDefault();\n };\n\n const switchToYearView = (event: React.MouseEvent<HTMLButtonElement>) => {\n setCurrentView('year');\n event.preventDefault();\n };\n\n const isEnabled = () => {\n return !props.disabled && !props.readOnly;\n };\n\n const updateCurrentTimeMeta = (date: Date) => {\n let currentHour = date.getHours();\n\n if (props.hourFormat === '12') {\n setPM(currentHour > 11);\n\n if (currentHour >= 12) currentHour = currentHour == 12 ? 12 : currentHour - 12;\n }\n\n setCurrentHour(Math.floor(currentHour / (props.stepHour ?? 1)) * (props.stepHour ?? 1));\n setCurrentMinute(Math.floor(date.getMinutes() / (props.stepMinute ?? 1)) * (props.stepMinute ?? 1));\n setCurrentSecond(Math.floor(date.getSeconds() / (props.stepSecond ?? 1)) * (props.stepSecond ?? 1));\n };\n\n const onTriggerClick = () => {\n if (isEnabled()) {\n if (!popover.state.open) {\n (popover.state.anchorElement as HTMLInputElement | null)?.focus();\n popover.setOpen(true);\n } else {\n popover.setOpen(false);\n }\n }\n };\n\n const isDateDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDates) {\n for (const disabledDate of props.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n const isDayDisabled = (day: number, month: number, year: number) => {\n if (props.disabledDays) {\n const weekday = new Date(year, month, day);\n const weekdayNumber = weekday.getDay();\n\n return props.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n\n return false;\n };\n\n const onDateSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement> | null, dateMeta: UseDatePickerDateMeta) => {\n if (props.disabled || !dateMeta.selectable) {\n return;\n }\n\n if (calendarRef.current) {\n (find(calendarRef.current, 'table td [data-part=\"day\"]:not([data-disabled])') as HTMLElement[]).forEach((cell) => (cell.tabIndex = -1));\n }\n\n if (event) {\n event.currentTarget.focus();\n }\n\n if (isMultipleSelection() && isSelected(dateMeta)) {\n if (rawValueState && Array.isArray(rawValueState)) {\n const newValue = rawValueState.filter((date) => !isDateEquals(parseValueForComparison(date), dateMeta)) as Date[];\n\n updateModel(newValue);\n }\n } else {\n if (shouldSelectDate()) {\n if (dateMeta.otherMonth) {\n setCurrentMonth(dateMeta.month);\n setCurrentYear(dateMeta.year);\n selectDate(dateMeta);\n } else {\n selectDate(dateMeta);\n }\n }\n }\n\n if (isSingleSelection() && (!props.showTime || props.hideOnDateTimeSelect)) {\n (popover.state.anchorElement as HTMLInputElement | null)?.focus();\n\n setTimeout(() => {\n popover.setOpen(false);\n }, 150);\n }\n };\n\n const selectDate = (dateMeta: UseDatePickerDateMeta) => {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n if (props.showTime) {\n if (props.hourFormat === '12' && currentHour !== 12 && pm) {\n date.setHours((currentHour as number) + 12);\n } else {\n date.setHours(currentHour as number);\n }\n\n date.setMinutes(currentMinute as number);\n date.setSeconds(props.showSeconds ? (currentSecond as number) : 0);\n }\n\n if (props.minDate && props.minDate > date) {\n date = props.minDate;\n }\n\n if (props.maxDate && props.maxDate < date) {\n date = props.maxDate;\n }\n\n setCurrentHour(date.getHours());\n setCurrentMinute(date.getMinutes());\n setCurrentSecond(date.getSeconds());\n\n let modelVal = null;\n\n if (isSingleSelection()) {\n modelVal = date;\n } else if (isMultipleSelection()) {\n if (Array.isArray(rawValueState)) {\n modelVal = [...rawValueState, date];\n } else {\n modelVal = [date];\n }\n } else if (isRangeSelection()) {\n if (rawValueState && Array.isArray(rawValueState) && rawValueState.length) {\n let startDate = parseValueForComparison(rawValueState[0]) as Date;\n let endDate = rawValueState[1];\n\n if (!endDate) {\n if (date.getTime() >= startDate.getTime()) {\n endDate = date;\n } else {\n endDate = startDate;\n startDate = date;\n }\n\n setFocusedDateIndex(1);\n updateHoverPreview(null);\n } else {\n startDate = date;\n endDate = null;\n setFocusedDateIndex(0);\n updateHoverPreview(null);\n }\n\n modelVal = [startDate, endDate];\n } else {\n modelVal = [date, null];\n setFocusedDateIndex(0);\n }\n }\n\n if (modelVal !== null) {\n updateModel(modelVal as Date);\n }\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value: date\n });\n }\n };\n\n const updateModel = (value: UseDatePickerProps['value']) => {\n setRawValueState(value);\n\n if (props.updateModelType === 'date') {\n if (isSingleSelection()) {\n writeValue(value);\n } else {\n let stringArrValue = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => parseValueForComparison(date));\n }\n\n writeValue(stringArrValue);\n }\n } else if (props.updateModelType == 'string') {\n if (isSingleSelection()) {\n if (value instanceof Date || typeof value === 'string' || value === null) {\n writeValue(formatDateTime(value));\n }\n } else if (isMultipleSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n const formatted = formatDateTime(date);\n\n return typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n } else if (isRangeSelection()) {\n let stringArrValue: (string | null)[] | null = null;\n\n if (Array.isArray(value)) {\n stringArrValue = value.map((date) => {\n if (date === null || date === undefined) {\n return null;\n }\n\n const formatted = formatDateTime(date);\n\n return formatted !== null && typeof formatted === 'string' ? formatted : null;\n });\n }\n\n writeValue(stringArrValue);\n }\n }\n };\n\n const shouldSelectDate = () => {\n if (isMultipleSelection()) {\n return props.maxDateCount != null ? props.maxDateCount > (rawValueState && Array.isArray(rawValueState) ? rawValueState.length : 0) : true;\n }\n\n return true;\n };\n\n const writeValue = (newValue: UseDatePickerProps['value']) => {\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n };\n\n const isSingleSelection = () => {\n return props.selectionMode === 'single';\n };\n\n const isRangeSelection = () => {\n return props.selectionMode === 'range';\n };\n\n const isMultipleSelection = () => {\n return props.selectionMode === 'multiple';\n };\n\n const formatValue = (value: UseDatePickerProps['value']) => {\n if (typeof value === 'string') {\n return props.dateFormat ? (isNaN(new Date(value).getTime()) ? value : formatDate(new Date(value), props.dateFormat)) : value;\n }\n\n let formattedValue: string | null = '';\n\n if (value) {\n try {\n if (isSingleSelection()) {\n const singleVal = Array.isArray(value) ? (value[0] ?? null) : value;\n\n if (singleVal == null) {\n formattedValue = '';\n } else {\n formattedValue = (formatDateTime(singleVal as string | Date) as string) ?? '';\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n const dateAsString = typeof v === 'string' ? (formatDateTime(parseValueForComparison(v) as Date) as string) : (formatDateTime(v as Date) as string);\n\n formattedValue += dateAsString;\n\n if (i !== value.length - 1) {\n formattedValue += ', ';\n }\n }\n }\n } else if (isRangeSelection()) {\n if (Array.isArray(value) && value.length) {\n const startDate = parseValueForComparison(value[0]) as Date;\n const endDate = parseValueForComparison(value[1]) as Date | null;\n\n formattedValue = (formatDateTime(startDate) as string) ?? '';\n\n if (endDate) {\n formattedValue += ' - ' + ((formatDateTime(endDate) as string) ?? '');\n }\n }\n }\n } catch {\n formattedValue = typeof value === 'string' ? value : '';\n }\n }\n\n return formattedValue;\n };\n\n const formatDateTime = (date: Date | string | null) => {\n let formattedValue = null;\n\n if (isDate(date) && isNotEmpty(date)) {\n if (props.timeOnly) {\n formattedValue = formatTime(date);\n } else {\n formattedValue = formatDate(date, datePattern);\n\n if (props.showTime) {\n formattedValue += ' ' + formatTime(date);\n }\n }\n } else if (props.updateModelType === 'string') {\n formattedValue = date;\n }\n\n return formattedValue;\n };\n\n const formatDate = (date: Date, format: string) => {\n if (!date) {\n return '';\n }\n\n let iFormat: number;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const formatNumber = (match: string, value: number, len: number) => {\n let num = '' + value;\n\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n\n return num;\n };\n\n const formatName = (match: string, value: number, shortNames: string[], longNames: string[]) => {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n };\n\n let output = '';\n let literal = false;\n\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + TICKS_TO_1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n\n return output;\n };\n\n const formatTime = (date: Date) => {\n if (!date) {\n return '';\n }\n\n let output = '';\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n\n if (props.hourFormat === '12' && hours > 11 && hours !== 12) {\n hours -= 12;\n }\n\n if (props.hourFormat === '12') {\n output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;\n } else {\n output += hours < 10 ? '0' + hours : hours;\n }\n\n output += ':';\n output += minutes < 10 ? '0' + minutes : minutes;\n\n if (props.showSeconds) {\n output += ':';\n output += seconds < 10 ? '0' + seconds : seconds;\n }\n\n if (props.hourFormat === '12') {\n output += date.getHours() > 11 ? ` ${primereact?.config?.locale?.pm}` : ` ${primereact?.config?.locale?.am}`;\n }\n\n return output;\n };\n\n const clearTimePickerTimer = () => {\n if (timePickerTimer.current) {\n clearTimeout(timePickerTimer.current);\n timePickerTimer.current = null;\n }\n };\n\n const onTodayButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n const date = new Date();\n const dateMeta = {\n day: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n otherMonth: date.getMonth() !== currentMonth || date.getFullYear() !== currentYear,\n today: true,\n selectable: true\n };\n\n setCurrentView('date');\n onDateSelect(null, dateMeta);\n\n if (props.onTodayButtonClick) {\n props.onTodayButtonClick({\n originalEvent: event,\n date\n });\n }\n\n event.preventDefault();\n };\n\n const onClearButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n updateModel(null);\n popover.setOpen(false);\n\n if (props.onClearButtonClick) {\n props.onClearButtonClick(event);\n }\n\n event.preventDefault();\n };\n\n const onTimePickerElementMouseDown = (event: React.MouseEvent<HTMLButtonElement>, type: number, direction: number) => {\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseUp = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n if (isEnabled()) {\n clearTimePickerTimer();\n event.preventDefault();\n }\n };\n\n const onTimePickerElementMouseLeave = () => {\n clearTimePickerTimer();\n };\n\n const onContainerButtonKeydown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Tab':\n trapFocus(event);\n break;\n\n case 'Escape':\n popover.setOpen(false);\n event.preventDefault();\n break;\n\n default:\n //Noop\n break;\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n };\n\n const onTimePickerElementKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, type: number, direction: number) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n if (isEnabled()) {\n repeat(event, null, type, direction);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onTimePickerElementKeyUp = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (event.code) {\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onTimePickerElementMouseUp(event);\n }\n }\n };\n\n const repeat = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>, interval: number | null, type: number, direction: number) => {\n const i = interval || 500;\n\n clearTimePickerTimer();\n timePickerTimer.current = setTimeout(() => {\n repeat(event, 100, type, direction);\n }, i);\n\n switch (type) {\n case 0:\n if (direction === 1) {\n incrementHour(event);\n } else {\n decrementHour(event);\n }\n\n break;\n\n case 1:\n if (direction === 1) {\n incrementMinute(event);\n } else {\n decrementMinute(event);\n }\n\n break;\n\n case 2:\n if (direction === 1) {\n incrementSecond(event);\n } else {\n decrementSecond(event);\n }\n\n break;\n }\n };\n\n const convertTo24Hour = (hours: number, pm: boolean) => {\n if (props.hourFormat == '12') {\n if (hours === 12) {\n return pm ? 12 : 0;\n } else {\n return pm ? hours + 12 : hours;\n }\n }\n\n return hours;\n };\n\n const validateTime = (hour: number, minute: number, second: number, pm: boolean) => {\n let value: Date | string | null = viewDate;\n const convertedHour = convertTo24Hour(hour, pm);\n\n if (isRangeSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[1] || rawValueState[0] : null;\n }\n\n if (isMultipleSelection()) {\n value = Array.isArray(rawValueState) ? rawValueState[rawValueState.length - 1] : null;\n }\n\n const valueDateString = value instanceof Date ? value.toDateString() : null;\n\n if (props.minDate && valueDateString && props.minDate.toDateString() === valueDateString) {\n if (props.minDate.getHours() > convertedHour) {\n return false;\n }\n\n if (props.minDate.getHours() === convertedHour) {\n if (props.minDate.getMinutes() > minute) {\n return false;\n }\n\n if (props.minDate.getMinutes() === minute) {\n if (props.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n\n if (props.maxDate && valueDateString && props.maxDate.toDateString() === valueDateString) {\n if (props.maxDate.getHours() < convertedHour) {\n return false;\n }\n\n if (props.maxDate.getHours() === convertedHour) {\n if (props.maxDate.getMinutes() < minute) {\n return false;\n }\n\n if (props.maxDate.getMinutes() === minute) {\n if (props.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n\n return true;\n };\n\n const incrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const prevHour = currentHourRef.current;\n let newHour = prevHour + Number(props.stepHour);\n let newPM = pmRef.current;\n\n if (props.hourFormat == '24') {\n newHour = newHour >= 24 ? newHour - 24 : newHour;\n } else if (props.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !pmRef.current;\n }\n\n newHour = newHour >= 13 ? newHour - 12 : newHour;\n }\n\n if (validateTime(newHour, currentMinuteRef.current, currentSecondRef.current, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n updateModelTime({ hour: newHour, pm: newPM });\n }\n\n event.preventDefault();\n };\n\n const decrementHour = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const prevHour = currentHourRef.current;\n let newHour = prevHour - Number(props.stepHour);\n let newPM = pmRef.current;\n\n if (props.hourFormat == '24') {\n newHour = newHour < 0 ? 24 + newHour : newHour;\n } else if (props.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (prevHour === 12) {\n newPM = !pmRef.current;\n }\n\n newHour = newHour <= 0 ? 12 + newHour : newHour;\n }\n\n if (validateTime(newHour, currentMinuteRef.current, currentSecondRef.current, newPM)) {\n setCurrentHour(newHour);\n setPM(newPM);\n updateModelTime({ hour: newHour, pm: newPM });\n }\n\n event.preventDefault();\n };\n\n const incrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newMinute = currentMinuteRef.current + Number(props.stepMinute);\n\n if (validateTime(currentHourRef.current, newMinute, currentSecondRef.current, pmRef.current)) {\n const wrapped = newMinute > 59 ? newMinute - 60 : newMinute;\n\n setCurrentMinute(wrapped);\n updateModelTime({ minute: wrapped });\n }\n\n event.preventDefault();\n };\n\n const decrementMinute = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newMinute = currentMinuteRef.current - Number(props.stepMinute);\n\n newMinute = newMinute < 0 ? 60 + newMinute : newMinute;\n\n if (validateTime(currentHourRef.current, newMinute, currentSecondRef.current, pmRef.current)) {\n setCurrentMinute(newMinute);\n updateModelTime({ minute: newMinute });\n }\n\n event.preventDefault();\n };\n\n const incrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n const newSecond = currentSecondRef.current + Number(props.stepSecond);\n\n if (validateTime(currentHourRef.current, currentMinuteRef.current, newSecond, pmRef.current)) {\n const wrapped = newSecond > 59 ? newSecond - 60 : newSecond;\n\n setCurrentSecond(wrapped);\n updateModelTime({ second: wrapped });\n }\n\n event.preventDefault();\n };\n\n const decrementSecond = (event: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>) => {\n let newSecond = currentSecondRef.current - Number(props.stepSecond);\n\n newSecond = newSecond < 0 ? 60 + newSecond : newSecond;\n\n if (validateTime(currentHourRef.current, currentMinuteRef.current, newSecond, pmRef.current)) {\n setCurrentSecond(newSecond);\n updateModelTime({ second: newSecond });\n }\n\n event.preventDefault();\n };\n\n const updateModelTime = (overrides?: { hour?: number; minute?: number; second?: number; pm?: boolean }) => {\n const hour = overrides?.hour ?? currentHourRef.current;\n const minute = overrides?.minute ?? currentMinuteRef.current;\n const second = overrides?.second ?? currentSecondRef.current;\n const isPM = overrides?.pm ?? pmRef.current;\n\n const currentRawValue = rawValueStateRef.current;\n const currentFocusedIndex = focusedDateIndexRef.current;\n let valueDate: Date | string | null = viewDate;\n\n if (isRangeSelection()) {\n valueDate = Array.isArray(currentRawValue) ? currentRawValue[currentFocusedIndex] || currentRawValue[0] : null;\n }\n\n if (isMultipleSelection()) {\n valueDate = Array.isArray(currentRawValue) ? currentRawValue[currentRawValue.length - 1] : null;\n }\n\n if (isSingleSelection() && currentRawValue instanceof Date) {\n valueDate = currentRawValue;\n }\n\n const dateValue = valueDate && valueDate instanceof Date ? new Date(valueDate.getTime()) : new Date();\n\n if (props.hourFormat == '12') {\n if (hour === 12) dateValue.setHours(isPM ? 12 : 0);\n else dateValue.setHours(isPM ? hour + 12 : hour);\n } else {\n dateValue.setHours(hour);\n }\n\n dateValue.setMinutes(minute);\n dateValue.setSeconds(second);\n\n let value: UseDatePickerProps['value'];\n\n if (isRangeSelection()) {\n if (Array.isArray(currentRawValue)) {\n if (currentFocusedIndex === 1 && currentRawValue[1]) {\n value = [currentRawValue[0] as Date | null, dateValue];\n } else if (currentFocusedIndex === 0) {\n value = [dateValue, currentRawValue[1] as Date | null];\n } else {\n value = [dateValue, null];\n }\n } else {\n value = [dateValue, null];\n }\n } else if (isMultipleSelection()) {\n if (Array.isArray(currentRawValue)) {\n value = [...(currentRawValue.slice(0, -1) as (Date | null)[]), dateValue];\n } else {\n value = [dateValue];\n }\n } else {\n value = dateValue;\n }\n\n updateModel(value);\n\n if (props.onDateSelect) {\n props.onDateSelect({\n value\n });\n }\n };\n\n const toggleAMPM = (event: React.MouseEvent<HTMLButtonElement>) => {\n const next = !pmRef.current;\n const validHour = validateTime(currentHourRef.current, currentMinuteRef.current, currentSecondRef.current, next);\n\n if (!validHour && (props.maxDate || props.minDate)) return;\n\n setPM(next);\n updateModelTime({ pm: next });\n\n event.preventDefault();\n };\n\n const onMonthSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n if (!monthPickerValues[index]?.selectable) {\n return;\n }\n\n if (props.view === 'month') {\n onDateSelect(event, {\n year: currentYear,\n month: index,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentMonth(index);\n setCurrentView('date');\n\n if (props.onMonthChange) {\n props.onMonthChange({ month: index + 1, year: currentYear });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const onYearSelect = (event: React.MouseEvent<HTMLSpanElement> | React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n if (!yearPickerValues.find((item) => item.value === year.value)?.selectable) {\n return;\n }\n\n if (props.view === 'year') {\n onDateSelect(event, {\n year: year.value,\n month: 0,\n day: 1,\n selectable: true,\n otherMonth: false,\n today: false\n });\n } else {\n setCurrentYear(year.value);\n setCurrentView('month');\n\n if (props.onYearChange) {\n props.onYearChange({ month: currentMonth + 1, year: year.value });\n }\n }\n\n setTimeout(updateFocus, 0);\n };\n\n const updateCurrentMetaData = () => {\n const _viewDate = viewDate as Date;\n\n if (!_viewDate) {\n return;\n }\n\n setCurrentMonth(_viewDate.getMonth());\n setCurrentYear(_viewDate.getFullYear());\n\n if (props.showTime || props.timeOnly) {\n let timeDate = _viewDate;\n\n if (isRangeSelection() && rawValueState && Array.isArray(rawValueState) && rawValueState[focusedDateIndex]) {\n const selectedDate = rawValueState[focusedDateIndex];\n\n if (selectedDate instanceof Date) {\n timeDate = selectedDate;\n }\n }\n\n updateCurrentTimeMeta(timeDate);\n }\n };\n\n const isValidSelection = (value: Date | Date[]) => {\n if (value == null) {\n return true;\n }\n\n let isValid = true;\n\n if (isSingleSelection() && value instanceof Date) {\n if (!isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n } else if (Array.isArray(value) && value.every((v) => isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (isRangeSelection()) {\n isValid = value.length > 1 && value[1] >= value[0];\n }\n }\n\n return isValid;\n };\n\n const parseValue = (text: string): UseDatePickerProps['value'] => {\n if (!text || text.trim().length === 0) {\n return null;\n }\n\n let value: UseDatePickerProps['value'];\n\n if (isSingleSelection()) {\n value = parseDateTime(text) ?? null;\n } else if (isMultipleSelection()) {\n const tokens = text.split(',');\n const dateArray: (Date | null)[] = [];\n\n for (const token of tokens) {\n dateArray.push(parseDateTime(token.trim()) ?? null);\n }\n\n value = dateArray;\n } else if (isRangeSelection()) {\n const tokens = text.split(' - ');\n const dateArray: (Date | null)[] = [];\n\n for (let i = 0; i < tokens.length; i++) {\n dateArray[i] = parseDateTime(tokens[i].trim()) ?? null;\n }\n\n value = dateArray;\n }\n\n return value;\n };\n\n const parseValueForComparison = (value: UseDatePickerProps['value']): Date | null => {\n if (typeof value === 'string') {\n const parsedValue = parseValue(value);\n\n if (!parsedValue) {\n return null;\n }\n\n if (isSingleSelection()) {\n return parsedValue as Date | null;\n }\n\n if (Array.isArray(parsedValue)) {\n return (parsedValue[0] ?? null) as Date | null;\n }\n\n return null;\n }\n\n if (Array.isArray(value)) {\n return (value[0] ?? null) as Date | null;\n }\n\n return (value ?? null) as Date | null;\n };\n\n const rangeBoundaries = React.useMemo<{ startMs: number | null; endMs: number | null }>(() => {\n if (!isRangeMode || !rawValueState || !Array.isArray(rawValueState)) {\n return { startMs: null, endMs: null };\n }\n\n const toDayMs = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n const start = rawValueState[0] != null ? parseValueForComparison(rawValueState[0]) : null;\n const end = rawValueState[1] != null ? parseValueForComparison(rawValueState[1]) : null;\n\n return { startMs: start ? toDayMs(start) : null, endMs: end ? toDayMs(end) : null };\n }, [rawValueState, isRangeMode]);\n\n const updateHoverPreview = React.useCallback(\n (dateMeta: UseDatePickerDateMeta | null) => {\n hoveredDateRef.current = dateMeta;\n\n if (calendarRefs.current.size === 0) return;\n\n let lo: number | null = null;\n let hi: number | null = null;\n\n if (dateMeta && isRangeMode && Array.isArray(rawValueState) && rawValueState[0] != null && rawValueState[1] == null) {\n const start = parseValueForComparison(rawValueState[0]);\n\n if (start) {\n const sm = new Date(start.getFullYear(), start.getMonth(), start.getDate()).getTime();\n const hm = new Date(dateMeta.year, dateMeta.month, dateMeta.day).getTime();\n\n lo = Math.min(sm, hm);\n hi = Math.max(sm, hm);\n }\n }\n\n calendarRefs.current.forEach((calendar) => {\n const cells = calendar.querySelectorAll<HTMLElement>('[data-part=\"day\"]');\n\n cells.forEach((cell) => {\n cell.removeAttribute('data-in-hover-range');\n cell.removeAttribute('data-hover-range-start');\n cell.removeAttribute('data-hover-range-end');\n\n if (lo === null || hi === null) return;\n\n const ts = Number(cell.dataset.timestamp);\n\n if (!Number.isFinite(ts) || ts < lo || ts > hi) return;\n\n if (ts === lo && ts === hi) {\n cell.setAttribute('data-hover-range-start', '');\n cell.setAttribute('data-hover-range-end', '');\n } else if (ts === lo) cell.setAttribute('data-hover-range-start', '');\n else if (ts === hi) cell.setAttribute('data-hover-range-end', '');\n else cell.setAttribute('data-in-hover-range', '');\n });\n });\n },\n [isRangeMode, rawValueState]\n );\n\n const dateOnlyMs = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n\n const singleSelectedMs = React.useMemo<number | null>(() => {\n if (!isSingleMode || !rawValueState) return null;\n\n const d = parseValueForComparison(rawValueState);\n\n return d ? dateOnlyMs(d) : null;\n }, [rawValueState, isSingleMode]);\n\n const multipleSelectedMs = React.useMemo<Set<number>>(() => {\n const set = new Set<number>();\n\n if (!isMultipleMode || !Array.isArray(rawValueState)) return set;\n\n for (const v of rawValueState) {\n const d = parseValueForComparison(v);\n\n if (d) set.add(dateOnlyMs(d));\n }\n\n return set;\n }, [rawValueState, isMultipleMode]);\n\n const dateMetaMs = (dateMeta: UseDatePickerDateMeta) => new Date(dateMeta.year, dateMeta.month, dateMeta.day).getTime();\n\n const computeHoverBounds = (): { lo: number | null; hi: number | null } => {\n const hover = hoveredDateRef.current;\n\n if (!hover || !isRangeMode || !Array.isArray(rawValueState) || rawValueState[0] == null || rawValueState[1] != null) {\n return { lo: null, hi: null };\n }\n\n const start = parseValueForComparison(rawValueState[0]);\n\n if (!start) return { lo: null, hi: null };\n\n const sm = start.getTime();\n const hm = new Date(hover.year, hover.month, hover.day).getTime();\n\n return { lo: Math.min(sm, hm), hi: Math.max(sm, hm) };\n };\n\n const isInHoverRange = (dateMeta: UseDatePickerDateMeta) => {\n const { lo, hi } = computeHoverBounds();\n\n if (lo === null || hi === null) return false;\n\n const t = dateMetaMs(dateMeta);\n\n return t >= lo && t <= hi;\n };\n\n const isRangeStart = (dateMeta: UseDatePickerDateMeta) => {\n const { startMs } = rangeBoundaries;\n\n return startMs !== null && dateMetaMs(dateMeta) === startMs;\n };\n\n const isRangeEnd = (dateMeta: UseDatePickerDateMeta) => {\n const { endMs } = rangeBoundaries;\n\n return endMs !== null && dateMetaMs(dateMeta) === endMs;\n };\n\n const isInSelectedRange = (dateMeta: UseDatePickerDateMeta) => {\n const { startMs, endMs } = rangeBoundaries;\n\n if (startMs === null || endMs === null) return false;\n\n const t = dateMetaMs(dateMeta);\n\n return t > startMs && t < endMs;\n };\n\n const isExactlySelected = (dateMeta: UseDatePickerDateMeta) => {\n const t = dateMetaMs(dateMeta);\n\n if (isSingleMode) return singleSelectedMs !== null && t === singleSelectedMs;\n\n if (isMultipleMode) return multipleSelectedMs.has(t);\n\n if (isRangeMode) {\n const { startMs, endMs } = rangeBoundaries;\n\n return (startMs !== null && t === startMs) || (endMs !== null && t === endMs);\n }\n\n return false;\n };\n\n const isHoverRangeStart = (dateMeta: UseDatePickerDateMeta) => {\n const { lo } = computeHoverBounds();\n\n return lo !== null && dateMetaMs(dateMeta) === lo;\n };\n\n const isHoverRangeEnd = (dateMeta: UseDatePickerDateMeta) => {\n const { hi } = computeHoverBounds();\n\n return hi !== null && dateMetaMs(dateMeta) === hi;\n };\n\n const isInHoverRangeMiddle = (dateMeta: UseDatePickerDateMeta) => {\n const { lo, hi } = computeHoverBounds();\n\n if (lo === null || hi === null) return false;\n\n const t = dateMetaMs(dateMeta);\n\n return t > lo && t < hi;\n };\n\n const isWeekend = (dateMeta: UseDatePickerDateMeta) => {\n const dow = new Date(dateMeta.year, dateMeta.month, dateMeta.day).getDay();\n\n return dow === 0 || dow === 6;\n };\n\n const focusTargetMs = React.useMemo<number | null>(() => {\n if (singleSelectedMs !== null) return singleSelectedMs;\n\n if (multipleSelectedMs.size > 0) return multipleSelectedMs.values().next().value as number;\n\n const { startMs } = rangeBoundaries;\n\n if (startMs !== null) return startMs;\n\n const today = new Date();\n\n today.setHours(0, 0, 0, 0);\n\n return today.getTime();\n }, [singleSelectedMs, multipleSelectedMs, rangeBoundaries]);\n\n const isFocusTarget = (dateMeta: UseDatePickerDateMeta) => {\n if (!dateMeta.selectable) return false;\n\n const t = new Date(dateMeta.year, dateMeta.month, dateMeta.day).getTime();\n\n return t === focusTargetMs;\n };\n\n const parseDateTime = (text: string) => {\n let date;\n const parts = text.match(/(?:(.+?) )?(\\d{2}:\\d{2}(?::\\d{2})?)(?: (am|pm))?/);\n\n if (props.timeOnly) {\n date = new Date();\n\n if (parts) {\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n const dateFormat = datePattern;\n\n if (props.showTime) {\n if (parts) {\n date = parseDate(parts[1], dateFormat) as Date;\n populateTime(date, parts[2], parts[3]);\n }\n } else {\n date = parseDate(text, dateFormat);\n }\n }\n\n return date;\n };\n\n const populateTime = (value: Date, timeString: string, ampm: string) => {\n if (props.hourFormat == '12' && !ampm) {\n throw new Error('Invalid Time');\n }\n\n setPM(ampm === primereact?.config?.locale?.pm || ampm === primereact?.config?.locale?.pm.toLowerCase());\n const time = parseTime(timeString);\n\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n\n if (time.second !== null) {\n value.setSeconds(time.second);\n }\n };\n\n const parseTime = (value: string) => {\n const tokens = value.split(':');\n const validTokenLength = props.showSeconds ? 3 : 2;\n const regex = /^[0-9][0-9]$/;\n\n if (tokens.length !== validTokenLength || !tokens[0].match(regex) || !tokens[1].match(regex) || (props.showSeconds && !tokens[2].match(regex))) {\n throw 'Invalid time';\n }\n\n let h = parseInt(tokens[0]);\n const m = parseInt(tokens[1]);\n const s = props.showSeconds ? parseInt(tokens[2]) : null;\n\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (props.hourFormat == '12' && h > 12) || (props.showSeconds && (s === null || isNaN(s) || s > 59))) {\n throw 'Invalid time';\n }\n\n if (props.hourFormat == '12' && h !== 12 && pm) {\n h += 12;\n } else if (props.hourFormat == '12' && h == 12 && !pm) {\n h = 0;\n }\n\n return { hour: h, minute: m, second: s };\n };\n\n const parseDate = (value: string | object, format: string) => {\n if (format == null || value == null) {\n throw 'Invalid arguments';\n }\n\n value = typeof value === 'object' ? value.toString() : value + '';\n\n if (value === '') {\n return null;\n }\n\n let iFormat: number;\n let dim;\n let extra;\n let iValue = 0;\n const shortYearCutoff = typeof props.shortYearCutoff !== 'string' ? props.shortYearCutoff : (new Date().getFullYear() % 100) + parseInt(props.shortYearCutoff, 10);\n let year = -1;\n let month = -1;\n let day = -1;\n\n let doy = -1;\n let literal = false;\n let date;\n\n const lookAhead = (match: string) => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n };\n\n const getNumber = (match: string) => {\n const isDoubled = lookAhead(match),\n size = match === '@' ? 14 : match === '!' ? 20 : match === 'y' && isDoubled ? 4 : match === 'o' ? 3 : 2,\n minSize = match === 'y' ? size : 1,\n digits = new RegExp('^\\\\d{' + minSize + ',' + size + '}'),\n num = value.substring(iValue).match(digits);\n\n if (!num) {\n throw 'Missing number at position ' + iValue;\n }\n\n iValue += num[0].length;\n\n return parseInt(num[0], 10);\n };\n\n const getName = (match: string, shortNames: string[], longNames: string[]) => {\n let index = -1;\n const arr = lookAhead(match) ? longNames : shortNames;\n const names: [number, string][] = [];\n\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n\n names.sort((a, b) => {\n return b[1].length - a[1].length;\n });\n\n for (let i = 0; i < names.length; i++) {\n const name = names[i][1];\n\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n\n if (index !== -1) {\n return index + 1;\n } else {\n throw 'Unknown name at position ' + iValue;\n }\n };\n\n const checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw 'Unexpected literal at position ' + iValue;\n }\n\n iValue++;\n };\n\n if (currentView === 'month') {\n day = 1;\n }\n\n if (currentView === 'year') {\n day = 1;\n month = 1;\n }\n\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n day = getNumber('d');\n break;\n case 'D':\n getName('D', primereact?.config?.locale?.dayNamesShort, primereact?.config?.locale?.dayNames);\n break;\n case 'o':\n doy = getNumber('o');\n break;\n case 'm':\n month = getNumber('m');\n break;\n case 'M':\n month = getName('M', primereact?.config?.locale?.monthNamesShort, primereact?.config?.locale?.monthNames);\n break;\n case 'y':\n year = getNumber('y');\n break;\n case '@':\n date = new Date(getNumber('@'));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case '!':\n date = new Date((getNumber('!') - TICKS_TO_1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n\n break;\n default:\n checkLiteral();\n }\n }\n }\n\n if (iValue < value.length) {\n extra = value.substr(iValue);\n\n if (!/^\\s+/.test(extra)) {\n throw 'Extra/unparsed characters found in date: ' + extra;\n }\n }\n\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - (new Date().getFullYear() % 100) + (year <= (shortYearCutoff as number) ? 0 : -100);\n }\n\n if (doy > -1) {\n month = 1;\n day = doy;\n\n do {\n dim = getDaysCountInMonth(month - 1, year);\n\n if (day <= dim) {\n break;\n }\n\n month++;\n day -= dim;\n // eslint-disable-next-line\n } while (true);\n }\n\n date = daylightSavingAdjust(new Date(year, month - 1, day));\n\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw 'Invalid date'; // E.g. 31/02/00\n }\n\n return date;\n };\n\n const getWeekNumber = (date: Date) => {\n const checkDate = new Date(date.getTime());\n\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n\n checkDate.setMonth(0);\n checkDate.setDate(1);\n\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n };\n\n const onDateCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, date: UseDatePickerDateMeta, groupIndex: number) => {\n event.preventDefault();\n const cellContent = event.currentTarget;\n const cell = cellContent.closest('td') as HTMLTableCellElement;\n\n if (!cell) return;\n\n const cellIndex = getIndex(cell);\n\n switch (event.code) {\n case 'ArrowDown': {\n cellContent.tabIndex = -1;\n\n const nextRow = cell.parentElement?.nextElementSibling;\n\n if (nextRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const nextTableRows = tableRows.slice(tableRowIndex + 1);\n\n const hasNextFocusableDate = nextTableRows.find((el) => {\n const focusCell = el.children[cellIndex].querySelector('[data-part=\"day\"]');\n\n return !(focusCell as Element).hasAttribute('data-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].querySelector('[data-part=\"day\"]') as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowUp': {\n cellContent.tabIndex = -1;\n\n if (event.altKey) {\n popover.setOpen(false);\n (popover.state.anchorElement as HTMLInputElement | null)?.focus();\n } else {\n const prevRow = cell.parentElement?.previousElementSibling;\n\n if (prevRow) {\n const tableRowIndex = getIndex(cell.parentElement);\n const tableRows = Array.from(cell.parentElement?.parentElement?.children ?? []);\n const prevTableRows = tableRows.slice(0, tableRowIndex).reverse();\n\n const hasNextFocusableDate = prevTableRows.find((el) => {\n const focusCell = el.children[cellIndex].querySelector('[data-part=\"day\"]');\n\n return !(focusCell as Element).hasAttribute('data-disabled');\n });\n\n if (hasNextFocusableDate) {\n const focusCell = hasNextFocusableDate.children[cellIndex].querySelector('[data-part=\"day\"]') as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cellContent.tabIndex = -1;\n\n const findPrevFocusableInRow = (row: Element | null | undefined, fromIndex: number): HTMLElement | null => {\n if (!row) return null;\n const rowCells = Array.from(row.children ?? []);\n const candidates = rowCells.slice(0, fromIndex).reverse();\n const match = candidates.find((el) => {\n const dayEl = el.querySelector('[data-part=\"day\"]');\n\n return dayEl && getAttribute(dayEl, 'data-slot') !== 'weekLabel' && !dayEl.hasAttribute('data-disabled');\n });\n\n return (match?.querySelector('[data-part=\"day\"]') as HTMLElement) ?? null;\n };\n\n let target = findPrevFocusableInRow(cell.parentElement, cellIndex);\n\n if (!target) {\n let prevRow = cell.parentElement?.previousElementSibling as HTMLElement | null;\n\n while (prevRow && !target) {\n target = findPrevFocusableInRow(prevRow, prevRow.children.length);\n prevRow = prevRow.previousElementSibling as HTMLElement | null;\n }\n }\n\n if (target) {\n target.tabIndex = 0;\n target.focus();\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cellContent.tabIndex = -1;\n\n const findNextFocusableInRow = (row: Element | null | undefined, fromIndex: number): HTMLElement | null => {\n if (!row) return null;\n const rowCells = Array.from(row.children ?? []);\n const candidates = rowCells.slice(fromIndex + 1);\n const match = candidates.find((el) => {\n const dayEl = el.querySelector('[data-part=\"day\"]');\n\n return dayEl && getAttribute(dayEl, 'data-slot') !== 'weekLabel' && !dayEl.hasAttribute('data-disabled');\n });\n\n return (match?.querySelector('[data-part=\"day\"]') as HTMLElement) ?? null;\n };\n\n let target = findNextFocusableInRow(cell.parentElement, cellIndex);\n\n if (!target) {\n let nextRow = cell.parentElement?.nextElementSibling as HTMLElement | null;\n\n while (nextRow && !target) {\n target = findNextFocusableInRow(nextRow, -1);\n nextRow = nextRow.nextElementSibling as HTMLElement | null;\n }\n }\n\n if (target) {\n target.tabIndex = 0;\n target.focus();\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n popover.setOpen(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n\n break;\n }\n\n case 'Home': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[0].querySelector('[data-part=\"day\"]') as HTMLElement;\n\n if (!focusCell || focusCell.hasAttribute('data-disabled')) {\n navigateToMonth(event, true, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'End': {\n cellContent.tabIndex = -1;\n const currentRow = cell.parentElement as HTMLTableRowElement;\n const focusCell = currentRow.children[currentRow.children.length - 1].querySelector('[data-part=\"day\"]') as HTMLElement;\n\n if (!focusCell || focusCell.hasAttribute('data-disabled')) {\n navigateToMonth(event, false, groupIndex);\n } else {\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageUp': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n navigateToMonth(event, true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'PageDown': {\n cellContent.tabIndex = -1;\n\n if (event.shiftKey) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n navigateToMonth(event, false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const navigateToMonth = (event: React.KeyboardEvent<HTMLSpanElement>, prev: boolean, groupIndex: number = 0) => {\n if (prev) {\n if (props.numberOfMonths === 1 || groupIndex === 0) {\n setNavigationState({ backward: true });\n navBackward(event);\n } else {\n const prevMonthContainer = calendarRef.current?.children[groupIndex - 1] as HTMLElement;\n const cells = find(prevMonthContainer, 'table td [data-part=\"day\"]:not([data-disabled])');\n const focusCell = cells[cells.length - 1] as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n } else {\n if (props.numberOfMonths === 1 || groupIndex === (props.numberOfMonths as number) - 1) {\n setNavigationState({ backward: false });\n navForward(event);\n } else {\n const nextMonthContainer = calendarRef.current?.children[groupIndex + 1] as HTMLElement;\n const focusCell = findSingle(nextMonthContainer, 'table td [data-part=\"day\"]:not([data-disabled])') as HTMLElement;\n\n focusCell.tabIndex = 0;\n focusCell.focus();\n }\n }\n };\n\n const onMonthCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, index: number) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n popover.setOpen(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const onYearCellKeydown = (event: React.KeyboardEvent<HTMLSpanElement>, year: { value: number }) => {\n const cell = event.currentTarget;\n\n switch (event.code) {\n case 'ArrowUp':\n\n case 'ArrowDown': {\n cell.tabIndex = -1;\n const parentCell = cell.parentElement as HTMLTableCellElement;\n const currentRow = parentCell?.parentElement as HTMLTableRowElement;\n const targetRow = event.code === 'ArrowUp' ? (currentRow?.previousElementSibling as HTMLTableRowElement) : (currentRow?.nextElementSibling as HTMLTableRowElement);\n const columnIndex = Array.from(parentCell?.parentElement?.children ?? []).indexOf(parentCell);\n const targetCellContainer = targetRow?.children[columnIndex] as HTMLTableCellElement;\n const targetElement = targetCellContainer?.children[0] as HTMLElement;\n\n if (targetElement) {\n targetElement.tabIndex = 0;\n targetElement.focus();\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowLeft': {\n cell.tabIndex = -1;\n const prevCell = cell.parentElement?.previousElementSibling?.children[0];\n\n if (prevCell) {\n (prevCell as HTMLElement).tabIndex = 0;\n (prevCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: true });\n navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight': {\n cell.tabIndex = -1;\n const nextCell = cell.parentElement?.nextElementSibling?.children[0];\n\n if (nextCell) {\n (nextCell as HTMLElement).tabIndex = 0;\n (nextCell as HTMLElement).focus();\n } else {\n setNavigationState({ backward: false });\n navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n\n case 'Home':\n case 'End':\n break;\n\n case 'PageUp': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: true });\n navBackward(event);\n\n break;\n }\n\n case 'PageDown': {\n if (event.shiftKey) return;\n\n setNavigationState({ backward: false });\n navForward(event);\n\n break;\n }\n\n case 'Enter':\n case 'NumpadEnter':\n\n case 'Space': {\n onYearSelect(event, year);\n event.preventDefault();\n break;\n }\n\n case 'Escape': {\n popover.setOpen(false);\n event.preventDefault();\n break;\n }\n\n case 'Tab': {\n trapFocus(event);\n break;\n }\n\n default:\n //no op\n break;\n }\n };\n\n const updateFocus = () => {\n let cell: Element | null = null;\n\n if (navigationState) {\n if (navigationState.button) {\n initFocusableCell();\n\n if (navigationState.backward) {\n const prevButton = toElement(prevButtonRef);\n\n if (prevButton) {\n focus(prevButton);\n }\n } else {\n const nextButton = toElement(nextButtonRef);\n\n if (nextButton) {\n focus(nextButton);\n }\n }\n } else {\n if (!calendarRef.current) {\n return;\n }\n\n if (navigationState.backward) {\n let cells;\n\n if (currentView === 'month') {\n cells = find(calendarRef.current, '[data-part=\"table\"] [data-part=\"month\"]:not([data-disabled])');\n } else if (currentView === 'year') {\n cells = find(calendarRef.current, '[data-part=\"table\"] [data-part=\"year\"]:not([data-disabled])');\n } else {\n cells = find(calendarRef.current, 'table td [data-part=\"day\"]:not([data-disabled])');\n }\n\n if (cells && cells.length > 0) {\n cell = cells[cells.length - 1];\n }\n } else {\n if (currentView === 'month') {\n cell = findSingle(calendarRef.current, '[data-part=\"table\"] [data-part=\"month\"]:not([data-disabled])');\n } else if (currentView === 'year') {\n cell = findSingle(calendarRef.current, '[data-part=\"table\"] [data-part=\"year\"]:not([data-disabled])');\n } else {\n cell = findSingle(calendarRef.current, 'table td [data-part=\"day\"]:not([data-disabled])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n (cell as HTMLElement).focus();\n }\n }\n\n setNavigationState(null);\n } else {\n initFocusableCell();\n }\n };\n\n const initFocusableCell = () => {\n let cell;\n\n if (!calendarRef.current) {\n return;\n }\n\n if (currentView === 'month') {\n const cells = find(calendarRef.current, '[data-part=\"table\"] [data-part=\"month\"]');\n const selectedCell = findSingle(calendarRef.current, '[data-part=\"table\"] [data-part=\"month\"][data-selected]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else if (currentView === 'year') {\n const cells = find(calendarRef.current, '[data-part=\"table\"] [data-part=\"year\"]');\n const selectedCell = findSingle(calendarRef.current, '[data-part=\"table\"] [data-part=\"year\"][data-selected]');\n\n cells.forEach((cell) => ((cell as HTMLElement).tabIndex = -1));\n cell = selectedCell || cells[0];\n } else {\n cell = findSingle(calendarRef.current, '[data-part=\"calendar\"] [data-part=\"day\"][data-selected]');\n\n if (!cell) {\n const todayCell = findSingle(calendarRef.current, '[data-part=\"day\"][data-today]:not([data-disabled])');\n\n if (todayCell) cell = todayCell;\n else cell = findSingle(calendarRef.current, '[data-part=\"calendar\"] [data-part=\"day\"]:not([data-disabled])');\n }\n }\n\n if (cell) {\n (cell as HTMLElement).tabIndex = 0;\n }\n };\n\n const trapFocus = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n if (!calendarRef.current) {\n return;\n }\n\n const focusableElements = getFocusableElements(calendarRef.current) as HTMLElement[];\n\n if (focusableElements && focusableElements.length > 0) {\n if (!document.activeElement) {\n focusableElements[0].focus();\n } else {\n const focusedIndex = focusableElements.indexOf(document.activeElement as HTMLElement);\n\n if (event.shiftKey) {\n if (focusedIndex === -1 || focusedIndex === 0) focusableElements[focusableElements.length - 1].focus();\n else focusableElements[focusedIndex - 1].focus();\n } else {\n if (focusedIndex === -1) {\n if (props.timeOnly) {\n focusableElements[0].focus();\n } else {\n let elementIndex = focusableElements.findIndex((el) => el.tagName === 'SPAN');\n\n if (elementIndex === -1) {\n elementIndex = focusableElements.findIndex((el) => el.tagName === 'BUTTON');\n }\n\n if (elementIndex !== -1) {\n focusableElements[elementIndex].focus();\n } else {\n focusableElements[0].focus();\n }\n }\n } else if (focusedIndex === focusableElements.length - 1) {\n focusableElements[0].focus();\n } else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n };\n\n const getMonthName = (index?: number) => {\n return primereact?.config?.locale?.monthNames[index ?? currentMonth];\n };\n\n const getYear = () => {\n return currentYear;\n };\n\n const onClearClick = () => {\n updateModel(null);\n popover.setOpen(false);\n };\n\n const onInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n try {\n selectionStart.current = event.target.selectionStart;\n selectionEnd.current = event.target.selectionEnd;\n\n const value = parseValue(event.target.value) as Date;\n\n if (isValidSelection(value)) {\n typeUpdate.current = true;\n updateModel(props.updateModelType === 'string' ? formatValue(value) : value);\n updateCurrentMetaData();\n }\n } catch {\n /* NoOp */\n }\n\n if (props.onInput) {\n props.onInput(event);\n }\n };\n\n const onInputClick = () => {\n if (props.showOnFocus && isEnabled() && !popover.state.open) {\n popover.setOpen(true);\n }\n };\n\n const onInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'ArrowDown' && popover.state.open) {\n trapFocus(event);\n } else if (event.code === 'ArrowDown' && !popover.state.open) {\n popover.setOpen(true);\n } else if (event.code === 'Escape') {\n if (popover.state.open) {\n popover.setOpen(false);\n event.preventDefault();\n event.stopPropagation();\n }\n } else if (event.code === 'Tab') {\n if (popover.state.open && calendarRef.current) {\n (getFocusableElements(calendarRef.current) as HTMLElement[]).forEach((el) => (el.tabIndex = -1));\n }\n\n if (popover.state.open) {\n popover.setOpen(false);\n }\n } else if (event.code === 'Enter') {\n if (props.manualInput && (event.target as HTMLInputElement).value !== null && (event.target as HTMLInputElement).value?.trim() !== '') {\n try {\n const value = parseValue((event.target as HTMLInputElement).value) as Date | Date[];\n\n if (isValidSelection(value)) {\n popover.setOpen(false);\n }\n } catch {\n /* NoOp */\n }\n }\n\n if (props.onKeyDown) {\n props.onKeyDown(event);\n }\n }\n };\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.showOnFocus && isEnabled()) {\n popover.setOpen(true);\n }\n\n if (props.onFocus) {\n props.onFocus(event);\n }\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.onBlur) {\n props.onBlur({\n originalEvent: event,\n value: event.target.value\n });\n }\n\n if (props.onValueChange) {\n event.target.value = formatValue(rawValueState);\n }\n };\n\n const show = () => {\n popover.setOpen(true);\n };\n\n const hide = () => {\n popover.setOpen(false);\n };\n\n const toggle = () => {\n if (popover.state.open) {\n hide();\n } else {\n show();\n }\n };\n\n const viewDate = React.useMemo<Date>(() => {\n let propValue = rawValueState;\n\n if (propValue && Array.isArray(propValue)) {\n if (isRangeSelection()) {\n if (propValue.length === 0) {\n propValue = null;\n } else if (propValue.length === 1) {\n propValue = propValue[0];\n } else {\n const start = parseValueForComparison(propValue[0]) as Date;\n const end = parseValueForComparison(propValue[1]) as Date | null;\n const lastVisibleMonth = new Date(start.getFullYear(), start.getMonth() + (props.numberOfMonths ?? 1), 1);\n\n if (!end || end < lastVisibleMonth) {\n propValue = propValue[0];\n } else {\n propValue = new Date(end.getFullYear(), end.getMonth() - (props.numberOfMonths ?? 1) + 1, 1);\n }\n }\n } else if (isMultipleSelection()) {\n propValue = propValue[propValue.length - 1];\n }\n }\n\n if (propValue && typeof propValue !== 'string') {\n return propValue as Date;\n } else {\n const today = new Date();\n\n if (props.maxDate && props.maxDate < today) {\n return props.maxDate;\n }\n\n if (props.minDate && props.minDate > today) {\n return props.minDate;\n }\n\n return today;\n }\n }, [rawValueState, props.numberOfMonths, props.maxDate, props.minDate]);\n\n const inputFieldValue = React.useMemo(() => {\n return formatValue(rawValueState);\n }, [rawValueState]);\n\n const months = React.useMemo(() => {\n const monthsArray = [];\n\n for (let i = 0; i < (props.numberOfMonths ?? 1); i++) {\n let month = (currentMonth ?? 0) + i;\n let year = currentYear ?? 0;\n\n if (month > 11) {\n year = year + Math.floor(month / 12);\n month = month % 12;\n }\n\n const dates = [];\n const firstDay = getFirstDayOfMonthIndex(month, year);\n const daysLength = getDaysCountInMonth(month, year);\n const prevMonthDaysLength = getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n const today = new Date();\n const weekNumbers = [];\n const monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n for (let i = 0; i < monthRows; i++) {\n const week = [];\n\n if (i == 0) {\n for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {\n const prev = getPreviousMonthAndYear(month, year);\n\n week.push({\n day: j,\n month: prev.month,\n year: prev.year,\n otherMonth: true,\n today: isToday(today, j, prev.month, prev.year),\n selectable: isSelectable(j, prev.month, prev.year, true)\n });\n }\n\n const remainingDaysLength = 7 - week.length;\n\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n dayNo++;\n }\n } else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n const next = getNextMonthAndYear(month, year);\n\n week.push({\n day: dayNo - daysLength,\n month: next.month,\n year: next.year,\n otherMonth: true,\n today: isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: isSelectable(dayNo - daysLength, next.month, next.year, true)\n });\n } else {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n otherMonth: false,\n today: isToday(today, dayNo, month, year),\n selectable: isSelectable(dayNo, month, year, false)\n });\n }\n\n dayNo++;\n }\n }\n\n weekNumbers.push(getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n\n dates.push(week);\n }\n\n monthsArray.push({\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n });\n }\n\n return monthsArray;\n }, [currentMonth, currentYear, props.numberOfMonths, props.minDate, props.maxDate, props.disabledDates, props.disabledDays, props.selectOtherMonths]);\n\n const getIndexedMonth = React.useCallback(\n (index: number = 0) => {\n return months[index];\n },\n [months]\n );\n\n const monthPickerValues = React.useMemo(() => {\n const monthPickerValuesArray = [];\n\n const isSelectableMonth = (baseMonth: number) => {\n if (props.minDate) {\n const minMonth = props.minDate.getMonth();\n const minYear = props.minDate.getFullYear();\n\n if ((currentYear as number) < minYear || (currentYear === minYear && baseMonth < minMonth)) {\n return false;\n }\n }\n\n if (props.maxDate) {\n const maxMonth = props.maxDate.getMonth();\n const maxYear = props.maxDate.getFullYear();\n\n if ((currentYear as number) > maxYear || (currentYear === maxYear && baseMonth > maxMonth)) {\n return false;\n }\n }\n\n return true;\n };\n\n for (let i = 0; i <= 11; i++) {\n monthPickerValuesArray.push({\n value: primereact?.config?.locale?.monthNamesShort[i],\n selectable: isSelectableMonth(i)\n });\n }\n\n return monthPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const yearPickerValues = React.useMemo(() => {\n const yearPickerValuesArray = [];\n const base = (currentYear as number) - ((currentYear as number) % 10);\n\n const isSelectableYear = (baseYear: number) => {\n if (props.minDate) {\n if (props.minDate.getFullYear() > baseYear) return false;\n }\n\n if (props.maxDate) {\n if (props.maxDate.getFullYear() < baseYear) return false;\n }\n\n return true;\n };\n\n for (let i = 0; i < 10; i++) {\n yearPickerValuesArray.push({ value: base + i, selectable: isSelectableYear(base + i) });\n }\n\n return yearPickerValuesArray;\n }, [currentYear, props.minDate, props.maxDate]);\n\n const weekDays = React.useMemo(() => {\n const weekDays = [];\n\n let dayIndex = primereact?.config?.locale?.firstDayOfWeek;\n\n for (let i = 0; i < 7; i++) {\n weekDays.push(primereact?.config?.locale?.dayNamesMin[dayIndex]);\n dayIndex = dayIndex == 6 ? 0 : ++dayIndex;\n }\n\n return weekDays;\n }, []);\n\n const hasValue = () => {\n return isNotEmpty(rawValueState);\n };\n\n const datePattern = React.useMemo(() => {\n return props.dateFormat || primereact?.config?.locale?.dateFormat;\n }, [props.dateFormat, primereact?.config?.locale]);\n\n const formattedCurrentHour = React.useMemo(() => {\n if (currentHour == 0 && props.hourFormat == '12') {\n return currentHour + 12;\n }\n\n return currentHour < 10 ? '0' + currentHour : currentHour;\n }, [currentHour, props.hourFormat]);\n\n const formattedCurrentMinute = React.useMemo(() => {\n return currentMinute < 10 ? '0' + currentMinute : currentMinute;\n }, [currentMinute]);\n\n const formattedCurrentSecond = React.useMemo(() => {\n return currentSecond < 10 ? '0' + currentSecond : currentSecond;\n }, [currentSecond]);\n\n const todayLabel = React.useMemo(() => {\n return primereact?.config?.locale?.today;\n }, [primereact?.config?.locale]);\n\n const clearLabel = React.useMemo(() => {\n return primereact?.config?.locale?.clear;\n }, [primereact?.config?.locale]);\n\n const weekHeaderLabel = React.useMemo(() => {\n return primereact?.config?.locale?.weekHeader;\n }, [primereact?.config?.locale]);\n\n const switchViewButtonDisabled = React.useMemo(() => {\n return (props.numberOfMonths as number) > 1 || !!props.disabled;\n }, [props.numberOfMonths, props.disabled]);\n\n const ampmLabel = React.useMemo(() => {\n if (pm) {\n return primereact?.config?.locale?.pm;\n }\n\n return primereact?.config?.locale?.am;\n }, [pm, primereact?.config?.locale]);\n\n // effects\n\n React.useEffect(() => {\n if (popover.state.open && popover.state.rendered) {\n updateFocus();\n }\n }, [popover.state.open, popover.state.rendered]);\n\n React.useEffect(() => {\n const timer = setTimeout(() => {\n if (!props.disabled) {\n initFocusableCell();\n }\n }, 300);\n\n return () => {\n clearTimeout(timer);\n clearTimePickerTimer();\n };\n }, []);\n\n React.useEffect(() => {\n const inputEl = popover.state.anchorElement as HTMLInputElement | null;\n\n if (inputEl && selectionStart.current != null && selectionEnd.current != null) {\n inputEl.selectionStart = selectionStart.current;\n inputEl.selectionEnd = selectionEnd.current;\n selectionStart.current = null;\n selectionEnd.current = null;\n }\n }, [inputFieldValue]);\n\n React.useEffect(() => {\n updateFocus();\n }, [currentView, months]);\n\n React.useEffect(() => {\n if (props.value === undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.value === 'string' ? parseValue(props.value) : props.value) as UseDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n const inputEl = popover.state.anchorElement as HTMLInputElement | null;\n\n if (!typeUpdate.current && inputEl) {\n inputEl.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.value]);\n\n React.useEffect(() => {\n if (props.value !== undefined) return;\n\n updateCurrentMetaData();\n const initialValue = (typeof props.defaultValue === 'string' ? parseValue(props.defaultValue) : props.defaultValue) as UseDatePickerProps['value'];\n\n setRawValueState(initialValue);\n\n const inputEl = popover.state.anchorElement as HTMLInputElement | null;\n\n if (!typeUpdate.current && inputEl) {\n inputEl.value = formatValue(initialValue);\n }\n\n typeUpdate.current = false;\n }, [props.defaultValue]);\n\n React.useEffect(() => {\n if (props.showTime && popover.state.open) {\n updateModelTime();\n }\n }, [pm]);\n\n React.useEffect(() => {\n if (!popover.state.open && hoveredDateRef.current) {\n updateHoverPreview(null);\n }\n }, [popover.state.open, updateHoverPreview]);\n\n React.useEffect(() => {\n updateHoverPreview(hoveredDateRef.current);\n }, [rawValueState, updateHoverPreview]);\n\n // Returns props\n const rootProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'root' as const,\n ...(props.disabled && { 'data-disabled': '' as const }),\n ...(props.invalid && { 'data-invalid': '' as const }),\n ...(props.readOnly && { 'data-readonly': '' as const })\n };\n\n const clearProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'clear' as const,\n onClick: onClearButtonClick,\n onKeyDown: onContainerButtonKeydown\n };\n\n const clearTriggerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'clear-trigger' as const,\n onClick: onClearClick\n };\n\n const nextProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'next' as const,\n ref: setNextButtonRef,\n type: 'button' as const,\n onClick: onNextButtonClick,\n onKeyDown: onContainerButtonKeydown\n };\n\n const prevProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'prev' as const,\n ref: setPrevButtonRef,\n type: 'button' as const,\n onClick: onPrevButtonClick,\n onKeyDown: onContainerButtonKeydown\n };\n\n const selectMonthProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'select-month' as const,\n type: 'button' as const,\n onClick: switchToMonthView,\n onKeyDown: onContainerButtonKeydown,\n disabled: switchViewButtonDisabled,\n 'data-disabled': switchViewButtonDisabled || undefined\n };\n\n const selectYearProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'select-year' as const,\n type: 'button' as const,\n onClick: switchToYearView,\n onKeyDown: onContainerButtonKeydown,\n disabled: switchViewButtonDisabled,\n 'data-disabled': switchViewButtonDisabled || undefined\n };\n\n const titleProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'title' as const,\n id: id ? id + '_title' : undefined,\n 'aria-live': 'polite' as const\n };\n\n const todayProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'today' as const,\n onClick: onTodayButtonClick,\n onKeyDown: onContainerButtonKeydown\n };\n\n const getTableProps = React.useCallback(() => {\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'table' as const,\n 'data-view': state.currentView,\n role: 'grid' as const,\n 'aria-labelledby': id ? id + '_title' : undefined\n };\n }, [id, state.currentView]);\n\n const getDayProps = React.useCallback(\n (date: UseDatePickerDateMeta, groupIndex: number) => {\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>) => onDateSelect(event, date);\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => onDateCellKeydown(event, date, groupIndex);\n const handleMouseEnter = () => onDateCellMouseEnter(date);\n\n const dateObj = new Date(date.year, date.month, date.day);\n const t = dateObj.getTime();\n const dow = dateObj.getDay();\n\n const { startMs: rStart, endMs: rEnd } = rangeBoundaries;\n\n const rangeStart = rStart !== null && t === rStart;\n const rangeEnd = rEnd !== null && t === rEnd;\n const inRangeMiddle = rStart !== null && rEnd !== null && t > rStart && t < rEnd;\n const rangePending = isRangeMode && rStart !== null && rEnd === null;\n\n let exactlySelected = false;\n\n if (isSingleMode) exactlySelected = singleSelectedMs !== null && t === singleSelectedMs;\n else if (isMultipleMode) exactlySelected = multipleSelectedMs.has(t);\n else if (isRangeMode) exactlySelected = rangeStart || rangeEnd;\n\n const ariaSelected = exactlySelected || inRangeMiddle;\n\n const focusable = date.selectable && t === focusTargetMs;\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'day' as const,\n 'data-timestamp': String(t),\n role: 'gridcell' as const,\n draggable: false as const,\n tabIndex: focusable ? 0 : -1,\n 'aria-disabled': !date.selectable,\n ...(ariaSelected && { 'aria-selected': true as const }),\n ...(exactlySelected && { 'data-selected': '' as const }),\n ...(rangeStart && { 'data-range-start': '' as const }),\n ...(rangeStart && rangePending && { 'data-range-pending': '' as const }),\n ...(rangeEnd && { 'data-range-end': '' as const }),\n ...(inRangeMiddle && { 'data-in-range': '' as const }),\n ...(!date.selectable && { 'data-disabled': '' as const }),\n ...(date?.today && { 'data-today': '' as const }),\n ...(date?.otherMonth && { 'data-outside': '' as const }),\n ...((dow === 0 || dow === 6) && { 'data-weekend': '' as const }),\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onMouseEnter: handleMouseEnter\n };\n },\n [rangeBoundaries, singleSelectedMs, multipleSelectedMs, focusTargetMs, isSingleMode, isMultipleMode, isRangeMode, onDateSelect, onDateCellKeydown, onDateCellMouseEnter]\n );\n\n const getMonthProps = React.useCallback(\n (month: { value: string; selectable: boolean }, index: number) => {\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>) => onMonthSelect(event, index);\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => onMonthCellKeydown(event, index);\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'month' as const,\n draggable: false as const,\n ...(!month.selectable && { 'data-disabled': '' as const }),\n ...(isMonthSelected(index) && { 'data-selected': '' as const }),\n onClick: handleClick,\n onKeyDown: handleKeyDown\n };\n },\n [isMonthSelected, onMonthSelect, onMonthCellKeydown]\n );\n\n const getYearProps = React.useCallback(\n (year: { value: number; selectable: boolean }) => {\n const handleClick = (event: React.MouseEvent<HTMLSpanElement>) => onYearSelect(event, year);\n const handleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => onYearCellKeydown(event, year);\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'year' as const,\n draggable: false as const,\n ...(!year.selectable && { 'data-disabled': '' as const }),\n ...(isYearSelected(year.value) && { 'data-selected': '' as const }),\n onClick: handleClick,\n onKeyDown: handleKeyDown\n };\n },\n [isYearSelected, onYearSelect, onYearCellKeydown]\n );\n\n const getTableBodyCellProps = React.useCallback(\n (date?: UseDatePickerDateMeta) => {\n let exactlySelected = false;\n let ariaSelected = false;\n\n if (date) {\n const t = new Date(date.year, date.month, date.day).getTime();\n const { startMs: rStart, endMs: rEnd } = rangeBoundaries;\n\n if (isSingleMode) exactlySelected = singleSelectedMs !== null && t === singleSelectedMs;\n else if (isMultipleMode) exactlySelected = multipleSelectedMs.has(t);\n else if (isRangeMode) exactlySelected = (rStart !== null && t === rStart) || (rEnd !== null && t === rEnd);\n\n const inRange = rStart !== null && rEnd !== null && t > rStart && t < rEnd;\n\n ariaSelected = exactlySelected || inRange;\n }\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'cell' as const,\n role: 'gridcell' as const,\n 'aria-label': date?.day != null ? String(date.day) : undefined,\n ...(ariaSelected && { 'aria-selected': true as const }),\n ...(exactlySelected && { 'data-selected': '' as const })\n };\n },\n [rangeBoundaries, singleSelectedMs, multipleSelectedMs, isSingleMode, isMultipleMode, isRangeMode]\n );\n\n const getDecrementProps = React.useCallback(\n (type: string) => {\n const direction = type === 'hour' ? 0 : type === 'minute' ? 1 : 2;\n\n if (type !== 'ampm') {\n const handleMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => onTimePickerElementMouseDown(event, direction, -1);\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => onTimePickerElementKeyDown(event, direction, -1);\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'decrement' as const,\n type: 'button' as const,\n onMouseDown: handleMouseDown,\n onMouseUp: onTimePickerElementMouseUp,\n onMouseLeave: onTimePickerElementMouseLeave,\n onKeyDown: handleKeyDown,\n onKeyUp: onTimePickerElementKeyUp\n };\n }\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'decrement' as const,\n type: 'button' as const,\n onClick: toggleAMPM,\n onKeyDown: onContainerButtonKeydown\n };\n },\n [onTimePickerElementMouseDown, onTimePickerElementMouseUp, onTimePickerElementMouseLeave, onTimePickerElementKeyDown, onTimePickerElementKeyUp, toggleAMPM, onContainerButtonKeydown]\n );\n\n const getIncrementProps = React.useCallback(\n (type: string) => {\n const direction = type === 'hour' ? 0 : type === 'minute' ? 1 : 2;\n\n if (type !== 'ampm') {\n const handleMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => onTimePickerElementMouseDown(event, direction, 1);\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => onTimePickerElementKeyDown(event, direction, 1);\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'increment' as const,\n type: 'button' as const,\n onMouseDown: handleMouseDown,\n onMouseUp: onTimePickerElementMouseUp,\n onMouseLeave: onTimePickerElementMouseLeave,\n onKeyDown: handleKeyDown,\n onKeyUp: onTimePickerElementKeyUp\n };\n }\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'increment' as const,\n type: 'button' as const,\n onClick: toggleAMPM,\n onKeyDown: onContainerButtonKeydown\n };\n },\n [onTimePickerElementMouseDown, onTimePickerElementMouseUp, onTimePickerElementMouseLeave, onTimePickerElementKeyDown, onTimePickerElementKeyUp, toggleAMPM, onContainerButtonKeydown]\n );\n\n const getPickerProps = React.useCallback((type: string) => {\n const typeMap: Record<string, string> = {\n hour: 'hourPicker',\n minute: 'minutePicker',\n second: 'secondPicker',\n ampm: 'ampmPicker'\n };\n\n return {\n 'data-scope': 'datepicker' as const,\n 'data-part': typeMap[type] || 'hourPicker'\n };\n }, []);\n\n const inputProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'input' as const,\n ref: popover.setAnchorRef,\n defaultValue: inputFieldValue,\n role: 'combobox' as const,\n name: props.name,\n autoComplete: 'off' as const,\n inputMode: 'none' as const,\n disabled: props.disabled,\n readOnly: !props.manualInput || props.readOnly,\n required: props.required,\n tabIndex: 0,\n 'aria-autocomplete': 'none' as const,\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': state.opened,\n 'aria-invalid': props.invalid || undefined,\n 'aria-controls': state.opened ? id + '_panel' : undefined,\n ...(props.disabled && { 'data-disabled': '' as const }),\n ...(props.invalid && { 'data-invalid': '' as const }),\n ...(props.readOnly && { 'data-readonly': '' as const }),\n onChange: onInput,\n onClick: onInputClick,\n onKeyDown: onInputKeyDown,\n onFocus: onInputFocus,\n onBlur: onInputBlur\n };\n\n const triggerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'trigger' as const,\n type: 'button' as const,\n ref: popover.setAnchorFallbackRef,\n disabled: props.disabled,\n 'aria-haspopup': 'dialog' as const,\n 'aria-expanded': state.opened,\n 'aria-controls': id + '_panel',\n ...(props.disabled && { 'data-disabled': '' }),\n [state.opened ? 'data-expanded' : 'data-collapsed']: '',\n onClick: onTriggerClick\n };\n\n const popupProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'popup' as const,\n ref: popover.setPopupRef,\n id: id ? id + '_panel' : undefined,\n role: 'dialog' as const,\n tabIndex: -1,\n 'aria-modal': true as const,\n ...(popover.state.open && { 'data-open': '' as const })\n };\n\n const positionerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'positioner' as const,\n ref: popover.setPositionerRef\n };\n\n const arrowProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'arrow' as const,\n ref: popover.setArrowRef\n };\n\n const bodyProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'body' as const\n };\n\n const panelProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'panel' as const\n };\n\n const calendarProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'calendar' as const,\n ref: setCalendarRef\n };\n\n const headerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'header' as const\n };\n\n const buttonbarProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'buttonbar' as const\n };\n\n const footerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'footer' as const\n };\n\n const timePickerProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'timePicker' as const\n };\n\n const separatorProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'separator' as const\n };\n\n const valueProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'value' as const\n };\n\n const decadeProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'decade' as const\n };\n\n const ampmProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'ampm' as const\n };\n\n const hourProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'hour' as const\n };\n\n const minuteProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'minute' as const\n };\n const secondProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'second' as const\n };\n\n const tableBodyProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'tableBody' as const\n };\n\n const tableBodyRowProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'tableBodyRow' as const\n };\n\n const weekNumberProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekNumber' as const\n };\n\n const tableHeaderProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'tableHeader' as const\n };\n\n const weekDayCellProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekDayCell' as const,\n scope: 'col' as const\n };\n\n const tableHeaderRowProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'tableHeaderRow' as const\n };\n\n const weekHeaderProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekHeader' as const,\n scope: 'col' as const\n };\n\n const weekLabelProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekLabel' as const\n };\n\n const weekDayProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekDay' as const\n };\n const weekHeaderLabelProps = {\n 'data-scope': 'datepicker' as const,\n 'data-part': 'weekHeaderLabel' as const\n };\n\n return {\n state,\n nextButtonRef,\n prevButtonRef,\n calendarRef,\n //methods\n inputFieldValue,\n weekHeaderLabel,\n todayLabel,\n clearLabel,\n weekDays,\n months,\n getIndexedMonth,\n getYear,\n getMonthName,\n onPrevButtonClick,\n onNextButtonClick,\n monthPickerValues,\n yearPickerValues,\n switchToMonthView,\n switchToYearView,\n onDateSelect,\n onMonthSelect,\n onYearSelect,\n onDateCellKeydown,\n onMonthCellKeydown,\n onYearCellKeydown,\n onTriggerClick,\n switchViewButtonDisabled,\n formattedCurrentHour,\n formattedCurrentMinute,\n formattedCurrentSecond,\n ampmLabel,\n onTimePickerElementMouseDown,\n onTimePickerElementMouseUp,\n onTimePickerElementMouseLeave,\n onContainerButtonKeydown,\n onTimePickerElementKeyDown,\n onTimePickerElementKeyUp,\n toggleAMPM,\n onTodayButtonClick,\n onClearButtonClick,\n onClearClick,\n onInput,\n onInputClick,\n onInputKeyDown,\n onInputFocus,\n onInputBlur,\n show,\n hide,\n toggle,\n setRendered: popover.setRendered,\n hasValue,\n // for styling\n isRangeSelection,\n isSelected,\n parseValue,\n isDateEquals,\n isMonthSelected,\n isYearSelected,\n isInHoverRange,\n isRangeStart,\n isRangeEnd,\n isInSelectedRange,\n isExactlySelected,\n isHoverRangeStart,\n isHoverRangeEnd,\n isInHoverRangeMiddle,\n isWeekend,\n isFocusTarget,\n onDateCellMouseEnter,\n // prop getters\n getDayProps,\n getMonthProps,\n getDecrementProps,\n getIncrementProps,\n getYearProps,\n popupProps,\n positionerProps,\n arrowProps,\n getTableProps,\n getTableBodyCellProps,\n // static props objects\n clearProps,\n clearTriggerProps,\n nextProps,\n prevProps,\n rootProps,\n selectMonthProps,\n selectYearProps,\n titleProps,\n todayProps,\n inputProps,\n triggerProps,\n bodyProps,\n panelProps,\n calendarProps,\n headerProps,\n buttonbarProps,\n footerProps,\n timePickerProps,\n separatorProps,\n valueProps,\n decadeProps,\n ampmProps,\n hourProps,\n minuteProps,\n secondProps,\n getPickerProps,\n tableBodyProps,\n tableBodyRowProps,\n weekNumberProps,\n tableHeaderProps,\n weekDayCellProps,\n tableHeaderRowProps,\n weekHeaderProps,\n weekLabelProps,\n weekDayProps,\n weekHeaderLabelProps\n };\n }\n});\n","import type { UseDatePickerProps } from '@primereact/types/headless/datepicker';\n\nexport const defaultProps: UseDatePickerProps = {\n value: undefined,\n defaultValue: undefined,\n open: undefined,\n defaultOpen: undefined,\n updateModelType: 'date',\n selectionMode: 'single',\n dateFormat: undefined,\n selectOtherMonths: false,\n numberOfMonths: 1,\n view: 'date',\n minDate: undefined,\n maxDate: undefined,\n maxDateCount: undefined,\n showOnFocus: true,\n autoZIndex: true,\n baseZIndex: 0,\n shortYearCutoff: '+10',\n showTime: false,\n timeOnly: false,\n hourFormat: '24',\n stepHour: 1,\n stepMinute: 1,\n stepSecond: 1,\n hideOnDateTimeSelect: false,\n timeSeparator: ':',\n manualInput: true,\n showSeconds: false,\n showWeek: false,\n appendTo: 'body',\n closeOnEscape: true,\n autoFocus: false,\n trapped: false,\n onValueChange: undefined,\n onDateSelect: undefined,\n onMonthChange: undefined,\n onYearChange: undefined,\n onTodayButtonClick: undefined,\n onClearButtonClick: undefined,\n onInput: undefined,\n onKeyDown: undefined,\n onFocus: undefined,\n onBlur: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","usePopover","find","findSingle","focus","getAttribute","getFocusableElements","getIndex","isDate","isNotEmpty","toElement","React","defaultProps","TICKS_TO_1970","primereact","useDatePicker","withHeadless","defaultProps","props","id","_a","_b","_c","_d","_e","_f","nextButtonRef","prevButtonRef","calendarRef","timePickerTimer","typeUpdate","selectionStart","selectionEnd","handleOpenChange","event","popover","usePopover","currentView","setCurrentView","currentMonth","setCurrentMonth","currentYear","setCurrentYear","currentHour","setCurrentHourState","currentMinute","setCurrentMinuteState","currentSecond","setCurrentSecondState","pm","setPMState","currentHourRef","currentMinuteRef","currentSecondRef","pmRef","setCurrentHour","value","setCurrentMinute","setCurrentSecond","setPM","focusedDateIndex","setFocusedDateIndexState","focusedDateIndexRef","setFocusedDateIndex","navigationState","setNavigationState","hoveredDateRef","getInitialValue","parseValue","rawValueState","setRawValueStateInner","rawValueStateRef","setRawValueState","calendarRefs","setCalendarRef","node","setNextButtonRef","setPrevButtonRef","state","isSelected","dateMeta","isSingleSelection","isDateEquals","parseValueForComparison","isMultipleSelection","selected","date","isRangeSelection","start","end","isDateBetween","isRangeMode","isSingleMode","isMultipleMode","onDateCellMouseEnter","updateHoverPreview","isMonthSelected","month","isDate","currentValue","parsedDate","parsedStart","parsedEnd","currentDate","startDate","endDate","isYearSelected","year","dateValue","sundayIndex","getFirstDayOfMonthIndex","day","dayIndex","getDaysCountInMonth","daylightSavingAdjust","getDaysCountInPrevMonth","prev","getPreviousMonthAndYear","m","y","getNextMonthAndYear","isToday","today","isSelectable","otherMonth","validMin","validMax","validDate","validDay","isDateDisabled","isDayDisabled","onPrevButtonClick","navBackward","onNextButtonClick","navForward","isEnabled","nextYear","decrementDecade","decrementYear","nextMonth","incrementDecade","incrementYear","switchToMonthView","switchToYearView","updateCurrentTimeMeta","onTriggerClick","disabledDate","weekdayNumber","onDateSelect","find","cell","newValue","updateModel","shouldSelectDate","selectDate","modelVal","writeValue","stringArrValue","formatDateTime","formatted","formatValue","formatDate","formattedValue","singleVal","i","v","dateAsString","e","isNotEmpty","formatTime","datePattern","format","_g","_h","iFormat","lookAhead","match","matches","formatNumber","len","num","formatName","shortNames","longNames","output","literal","hours","minutes","seconds","clearTimePickerTimer","onTodayButtonClick","onClearButtonClick","onTimePickerElementMouseDown","type","direction","repeat","onTimePickerElementMouseUp","onTimePickerElementMouseLeave","onContainerButtonKeydown","trapFocus","onTimePickerElementKeyDown","onTimePickerElementKeyUp","interval","incrementHour","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","convertTo24Hour","validateTime","hour","minute","second","viewDate","convertedHour","valueDateString","prevHour","newHour","newPM","updateModelTime","newMinute","wrapped","newSecond","overrides","isPM","currentRawValue","currentFocusedIndex","valueDate","toggleAMPM","next","onMonthSelect","index","monthPickerValues","updateFocus","onYearSelect","yearPickerValues","item","updateCurrentMetaData","_viewDate","timeDate","selectedDate","isValidSelection","isValid","text","parseDateTime","tokens","dateArray","token","parsedValue","rangeBoundaries","toDayMs","d","lo","hi","sm","hm","calendar","ts","dateOnlyMs","singleSelectedMs","multipleSelectedMs","set","dateMetaMs","computeHoverBounds","hover","isInHoverRange","t","isRangeStart","startMs","isRangeEnd","endMs","isInSelectedRange","isExactlySelected","isHoverRangeStart","isHoverRangeEnd","isInHoverRangeMiddle","isWeekend","dow","focusTargetMs","isFocusTarget","parts","populateTime","dateFormat","parseDate","timeString","ampm","time","parseTime","validTokenLength","regex","h","s","dim","extra","iValue","shortYearCutoff","doy","getNumber","isDoubled","size","minSize","digits","getName","arr","names","a","b","name","checkLiteral","getWeekNumber","checkDate","onDateCellKeydown","groupIndex","_i","_j","_k","cellContent","cellIndex","getIndex","tableRowIndex","hasNextFocusableDate","el","focusCell","findPrevFocusableInRow","row","fromIndex","dayEl","getAttribute","target","prevRow","navigateToMonth","findNextFocusableInRow","nextRow","currentRow","prevMonthContainer","cells","nextMonthContainer","findSingle","onMonthCellKeydown","parentCell","targetRow","columnIndex","targetCellContainer","targetElement","prevCell","nextCell","onYearCellKeydown","initFocusableCell","prevButton","toElement","focus","nextButton","selectedCell","todayCell","focusableElements","getFocusableElements","focusedIndex","elementIndex","getMonthName","getYear","onClearClick","onInput","onInputClick","onInputKeyDown","onInputFocus","onInputBlur","show","hide","toggle","propValue","lastVisibleMonth","inputFieldValue","months","monthsArray","dates","firstDay","daysLength","prevMonthDaysLength","dayNo","weekNumbers","monthRows","week","j","remainingDaysLength","getIndexedMonth","monthPickerValuesArray","isSelectableMonth","baseMonth","minMonth","minYear","maxMonth","maxYear","yearPickerValuesArray","base","isSelectableYear","baseYear","weekDays","hasValue","formattedCurrentHour","formattedCurrentMinute","formattedCurrentSecond","todayLabel","clearLabel","weekHeaderLabel","switchViewButtonDisabled","ampmLabel","timer","inputEl","initialValue","rootProps","__spreadValues","clearProps","clearTriggerProps","nextProps","prevProps","selectMonthProps","selectYearProps","titleProps","todayProps","getTableProps","getDayProps","handleClick","handleKeyDown","handleMouseEnter","dateObj","rStart","rEnd","rangeStart","rangeEnd","inRangeMiddle","rangePending","exactlySelected","ariaSelected","focusable","__spreadProps","getMonthProps","getYearProps","getTableBodyCellProps","inRange","getDecrementProps","getIncrementProps","getPickerProps","inputProps","triggerProps","popupProps","positionerProps","arrowProps","bodyProps","panelProps","calendarProps","headerProps","buttonbarProps","footerProps","timePickerProps","separatorProps","valueProps","decadeProps","ampmProps","hourProps","minuteProps","secondProps","tableBodyProps","tableBodyRowProps","weekNumberProps","tableHeaderProps","weekDayCellProps","tableHeaderRowProps","weekHeaderProps","weekLabelProps","weekDayProps","weekHeaderLabelProps"]}