@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
@@ -0,0 +1,119 @@
1
+ import type { ColorInputChannel, ColorInstance, ColorSliderChannel } from '@primereact/types/headless/inputcolor';
2
+ import * as React from 'react';
3
+ export declare const useInputColor: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/inputcolor").UseInputColorProps, unknown, {
4
+ state: {
5
+ value: ColorInstance;
6
+ isAreaDragging: boolean;
7
+ };
8
+ value: ColorInstance | undefined;
9
+ areaValue: ColorInstance;
10
+ areaChannels: {
11
+ xChannel: import("@primereact/types/headless/inputcolor").ColorChannel;
12
+ yChannel: import("@primereact/types/headless/inputcolor").ColorChannel;
13
+ };
14
+ rootProps: {
15
+ 'data-dragging'?: "" | undefined;
16
+ 'data-disabled'?: "" | undefined;
17
+ 'data-scope': "inputcolor";
18
+ 'data-part': "root";
19
+ };
20
+ areaProps: {
21
+ 'data-scope': "inputcolor";
22
+ 'data-part': "area";
23
+ style: React.CSSProperties;
24
+ onPointerDown: (event: React.PointerEvent<HTMLElement>) => void;
25
+ onPointerMove: (event: React.PointerEvent<HTMLElement>) => void;
26
+ onPointerUp: (event: React.PointerEvent<HTMLElement>) => void;
27
+ };
28
+ areaHandleProps: {
29
+ 'data-scope': "inputcolor";
30
+ 'data-part': "area-handle";
31
+ role: "slider";
32
+ tabIndex: number;
33
+ 'aria-disabled': boolean | undefined;
34
+ 'aria-valuemin': number;
35
+ 'aria-valuemax': number;
36
+ 'aria-valuenow': number;
37
+ 'aria-label': string;
38
+ 'aria-roledescription': string;
39
+ 'aria-valuetext': string;
40
+ onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
41
+ onBlur: (event: React.FocusEvent<HTMLElement>) => void;
42
+ };
43
+ swatchProps: {
44
+ 'data-scope': "inputcolor";
45
+ 'data-part': "swatch";
46
+ style: React.CSSProperties;
47
+ };
48
+ eyeDropperProps: {
49
+ 'data-scope': "inputcolor";
50
+ 'data-part': "eye-dropper";
51
+ disabled: boolean;
52
+ onClick: () => void;
53
+ };
54
+ sliderHandleProps: {
55
+ 'data-scope': "inputcolor";
56
+ 'data-part': "slider-handle";
57
+ role: "slider";
58
+ tabIndex: number;
59
+ 'aria-disabled': boolean | undefined;
60
+ };
61
+ getInputProps: ({ channel, disabled: inputDisabled }?: {
62
+ channel?: ColorInputChannel;
63
+ disabled?: boolean;
64
+ }) => {
65
+ 'data-scope': "inputcolor";
66
+ 'data-part': "input";
67
+ type: "text" | "number";
68
+ spellCheck: false;
69
+ autoComplete: "off";
70
+ disabled: boolean;
71
+ 'data-channel': ColorInputChannel;
72
+ 'aria-label': ColorInputChannel;
73
+ min: number | undefined;
74
+ max: number | undefined;
75
+ step: number | undefined;
76
+ channelValue: string;
77
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
78
+ onBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
79
+ onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
80
+ };
81
+ getSliderProps: ({ channel, orientation, disabled: sliderDisabled }?: {
82
+ channel?: ColorSliderChannel;
83
+ orientation?: "horizontal" | "vertical";
84
+ disabled?: boolean;
85
+ }) => {
86
+ 'data-scope': "inputcolor";
87
+ 'data-part': "slider";
88
+ 'data-orientation': "horizontal" | "vertical";
89
+ 'data-channel': ColorSliderChannel;
90
+ orientation: "horizontal" | "vertical";
91
+ style: React.CSSProperties;
92
+ value: number;
93
+ min: number;
94
+ max: number;
95
+ step: number;
96
+ disabled: boolean | undefined;
97
+ onValueChange: (event: {
98
+ originalEvent: React.SyntheticEvent;
99
+ value: number | number[] | undefined;
100
+ }) => void;
101
+ onValueChangeEnd: (event: {
102
+ originalEvent: React.SyntheticEvent;
103
+ value: number | number[] | undefined;
104
+ }) => void;
105
+ };
106
+ setValue: (inValue: unknown | ((prev?: ColorInstance | undefined) => unknown)) => void;
107
+ handleAreaPointerDown: (event: React.PointerEvent<HTMLElement>) => void;
108
+ handleAreaPointerMove: (event: React.PointerEvent<HTMLElement>) => void;
109
+ handleAreaPointerUp: (event: React.PointerEvent<HTMLElement>) => void;
110
+ handleAreaBlur: (event: React.FocusEvent<HTMLElement>) => void;
111
+ handleAreaKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
112
+ areaStyles: React.CSSProperties;
113
+ swatchStyles: React.CSSProperties;
114
+ openEyeDropper: () => void;
115
+ syncChannelInputs: (color?: ColorInstance) => void;
116
+ registerInputEl: (el: {
117
+ elementRef: React.RefObject<HTMLInputElement>;
118
+ }) => void;
119
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { UseInputColorProps } from '@primereact/types/headless/inputcolor';
2
+ export declare const defaultProps: UseInputColorProps;
@@ -1,2 +1,3 @@
1
1
  export * from './useInputGroup';
2
2
  export * from './useInputGroup.props';
3
+ export type * from '@primereact/types/headless/inputgroup';
@@ -1,2 +1,2 @@
1
- import{withHeadless as r}from"@primereact/core/headless";var p={};var u=r({name:"useInputGroup",defaultProps:p});export{p as defaultProps,u as useInputGroup};
1
+ import{withHeadless as p}from"@primereact/core/headless";var o={};var u=p({name:"useInputGroup",defaultProps:o,setup(){return{rootProps:{"data-scope":"inputgroup","data-part":"root"}}}});export{o as defaultProps,u as useInputGroup};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/inputgroup/useInputGroup.ts","../../src/inputgroup/useInputGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useInputGroup.props';\n\nexport const useInputGroup = withHeadless({\n name: 'useInputGroup',\n defaultProps\n});\n","import type { useInputGroupProps } from '@primereact/types/shared/inputgroup';\n\nexport const defaultProps: useInputGroupProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAmC,CAAC,EDC1C,IAAMC,EAAgBC,EAAa,CACtC,KAAM,gBACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useInputGroup","withHeadless","defaultProps"]}
1
+ {"version":3,"sources":["../../src/inputgroup/useInputGroup.ts","../../src/inputgroup/useInputGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useInputGroup.props';\n\nexport const useInputGroup = withHeadless({\n name: 'useInputGroup',\n defaultProps,\n setup() {\n // prop getters\n const rootProps = {\n 'data-scope': 'inputgroup',\n 'data-part': 'root'\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseInputGroupProps } from '@primereact/types/headless/inputgroup';\n\nexport const defaultProps: UseInputGroupProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAmC,CAAC,EDC1C,IAAMC,EAAgBC,EAAa,CACtC,KAAM,gBACN,aAAAC,EACA,OAAQ,CAOJ,MAAO,CACH,UANc,CACd,aAAc,aACd,YAAa,MACjB,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useInputGroup","withHeadless","defaultProps"]}
@@ -1 +1,6 @@
1
- export declare const useInputGroup: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/inputgroup").useInputGroupProps, unknown, Record<PropertyKey, unknown>>;
1
+ export declare const useInputGroup: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/inputgroup").UseInputGroupProps, unknown, {
2
+ rootProps: {
3
+ 'data-scope': string;
4
+ 'data-part': string;
5
+ };
6
+ }>;
@@ -1,2 +1,2 @@
1
- import type { useInputGroupProps } from '@primereact/types/shared/inputgroup';
2
- export declare const defaultProps: useInputGroupProps;
1
+ import type { UseInputGroupProps } from '@primereact/types/headless/inputgroup';
2
+ export declare const defaultProps: UseInputGroupProps;
@@ -1,2 +1,3 @@
1
1
  export * from './useInputNumber';
2
2
  export * from './useInputNumber.props';
3
+ export type * from '@primereact/types/headless/inputnumber';
@@ -1,2 +1,2 @@
1
- var ve=Object.defineProperty,Je=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var fe=Object.getOwnPropertySymbols;var ze=Object.prototype.hasOwnProperty,Qe=Object.prototype.propertyIsEnumerable;var me=(r,R,x)=>R in r?ve(r,R,{enumerable:!0,configurable:!0,writable:!0,value:x}):r[R]=x,ge=(r,R)=>{for(var x in R||(R={}))ze.call(R,x)&&me(r,x,R[x]);if(fe)for(var x of fe(R))Qe.call(R,x)&&me(r,x,R[x]);return r},de=(r,R)=>Je(r,qe(R));import{withHeadless as Xe}from"@primereact/core/headless";import{useMountEffect as Ye,useUnmountEffect as Ze,useUpdateEffect as X}from"@primereact/hooks";import{clearSelection as en,getSelection as Re,isEmpty as nn,isNotEmpty as Ie}from"@primeuix/utils";import*as d from"react";var Ee={value:void 0,defaultValue:void 0,format:!0,locale:void 0,mode:"decimal",prefix:void 0,suffix:void 0,currency:void 0,currencyDisplay:void 0,useGrouping:!0,minFractionDigits:void 0,maxFractionDigits:void 0,roundingMode:void 0,min:void 0,max:void 0,step:1,allowEmpty:!0,highlightOnFocus:!1,target:void 0,onValueChange:void 0,onChange:void 0};var sn=Xe({name:"useInputNumber",defaultProps:Ee,setup({props:r}){let[R,x]=d.useState(!1),Y=d.useRef(null),j=d.useRef(null),U=d.useRef(null),Z=d.useRef(null),O=d.useRef(null),W=d.useRef(null),P=d.useRef(null),v=d.useRef(null),b=d.useRef(null),E=d.useRef(null),g=d.useRef(null),C=d.useRef(null),s=d.useRef(null),T=d.useRef(null),V=d.useRef(null),K=d.useRef(null),xe={focused:R},J=()=>{var e,n;return{localeMatcher:r.localeMatcher,style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay,useGrouping:r.useGrouping,minimumFractionDigits:(e=r.minFractionDigits)!=null?e:void 0,maximumFractionDigits:(n=r.maxFractionDigits)!=null?n:void 0,roundingMode:r.roundingMode}},ee=()=>{Z.current=new Intl.NumberFormat(r.locale,J());let e=[...new Intl.NumberFormat(r.locale,{useGrouping:!1}).format(9876543210)].reverse(),n=new Map(e.map((t,u)=>[t,u]));b.current=new RegExp(`[${e.join("")}]`,"g"),E.current=be(),g.current=ye(),C.current=Me(),s.current=he(),T.current=Te(),V.current=Se(),K.current=t=>n.get(t)},B=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),he=()=>{var n,t;let e=new Intl.NumberFormat(r.locale,de(ge({},J()),{useGrouping:!1}));return new RegExp(`[${e.format(1.1).replace((n=C.current)!=null?n:"","").trim().replace((t=b.current)!=null?t:"","")}]`,"g")},be=()=>{var n;let e=new Intl.NumberFormat(r.locale,{useGrouping:!0});return O.current=e.format(1e6).trim().replace((n=b.current)!=null?n:"","").charAt(0),new RegExp(`[${O.current}]`,"g")},ye=()=>{var n;let e=new Intl.NumberFormat(r.locale,{useGrouping:!1});return new RegExp(`[${e.format(-1).trim().replace((n=b.current)!=null?n:"","")}]`,"g")},Me=()=>{var e,n;if(r.currency){let t=new Intl.NumberFormat(r.locale,{style:"currency",currency:r.currency,currencyDisplay:r.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0,roundingMode:r.roundingMode});return new RegExp(`[${t.format(1).replace(/\s/g,"").replace((e=b.current)!=null?e:"","").replace((n=E.current)!=null?n:"","")}]`,"g")}return new RegExp("[]","g")},Se=()=>{if(r.prefix)V.current=new RegExp(B(r.prefix),"g");else{let n=new Intl.NumberFormat(r.locale,{style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay}).format(1).split("1")[0];V.current=new RegExp(B(n),"g")}return V.current},Te=()=>{if(r.suffix)T.current=new RegExp(B(r.suffix),"g");else{let n=new Intl.NumberFormat(r.locale,{style:r.mode,currency:r.currency,currencyDisplay:r.currencyDisplay,minimumFractionDigits:0,maximumFractionDigits:0,roundingMode:r.roundingMode}).format(1).split("1")[1];T.current=new RegExp(B(n),"g")}return T.current},p=e=>{if(e!=null){if(typeof e=="string"&&e==="-")return e;if(r.format){let n=new Intl.NumberFormat(r.locale,J()),t=typeof e=="string"?Number(e):e,u=n.format(t);return r.prefix&&(u=r.prefix+u),r.suffix&&(u=u+r.suffix),u}return e.toString()}return""},L=e=>{var t;let n=e.replace(T.current||"","").replace(V.current||"","").trim().replace(/\s/g,"").replace(C.current||"","");if(s.current&&g.current&&b.current){let u=new RegExp(`[${[...new Intl.NumberFormat(r.locale,{useGrouping:!1}).format(9876543210)].reverse().join("")}${new Intl.NumberFormat(r.locale).format(1.1).replace(/[0-9]/g,"")}${new Intl.NumberFormat(r.locale).format(-1).replace(/[0-9]/g,"")}]`,"g");n=((t=n.match(u))==null?void 0:t.join(""))||""}if(E.current&&(n=n.replace(E.current,"")),g.current&&(n=n.replace(g.current,"-")),s.current&&(n=n.replace(s.current,".")),b.current&&K.current&&(n=n.replace(b.current,u=>{let l=K.current?K.current(u):void 0;return l!==void 0?l.toString():""})),n){if(n==="-")return n;let u=+n;return isNaN(u)?null:u}return null},D=()=>{let e=u=>{var l,c,i,o;return u?"tagName"in u&&u.tagName==="INPUT"?u:"inputRef"in u&&((i=(c=(l=u.inputRef)==null?void 0:l.current)==null?void 0:c.elementRef)!=null&&i.current)?u.inputRef.current.elementRef.current:"elementRef"in u&&((o=u.elementRef)!=null&&o.current)?u.elementRef.current:null:null},n=null;r.target&&(n="current"in r.target?r.target.current:r.target);let t=n||Y.current;return e(t)},Le=(e,n)=>{let t=e.toString(),u=n.toString(),l=t.includes(".")?t.split(".")[1].length:0,c=u.includes(".")?u.split(".")[1].length:0,i=Math.max(l,c),o=Math.pow(10,i);return Math.round((e+n)*o)/o},q=(e,n,t)=>{if(r.readOnly)return;let u=n||500;G(),j.current=setTimeout(()=>{q(e,40,t)},u),z(e,t)},z=(e,n)=>{var u;let t=D();if(t){let l=((u=r.step)!=null?u:1)*n,c=L(t.value)||0,i=k(Le(c,l));ae(i,null,"spin",String(c)),N(e,i),ie(e,String(c),i)}},De=(e,n)=>{var t;if(!r.disabled){let u=D();u&&u.focus(),q(e,void 0,(t=n!=null?n:r.step)!=null?t:1),e.preventDefault()}},He=(e,n)=>{var t;if(!r.disabled){let u=D();u&&u.focus(),q(e,void 0,n!=null?n:((t=r.step)!=null?t:1)*-1),e.preventDefault()}},we=()=>{r.disabled||G()},ne=e=>{var n;r.disabled||r.readOnly||(v.current&&(e.target.value=(n=U.current)!=null?n:""),v.current=!1)},Ce=e=>{var S,F,w,a;if(r.readOnly)return;let n=e.target;if(e.altKey||e.ctrlKey||e.metaKey){v.current=!0,U.current=n.value;return}U.current=n.value;let t=(S=n.selectionStart)!=null?S:0,u=(F=n.selectionEnd)!=null?F:0,l=u-t,c=n.value,i=null;switch(e.code||e.key){case"ArrowUp":z(e,1),e.preventDefault();break;case"ArrowDown":z(e,-1),e.preventDefault();break;case"ArrowLeft":if(l>1){let f=H(c.charAt(t))?t+1:t+2;e.target.setSelectionRange(f,f)}else H(c.charAt(t-1))||e.preventDefault();break;case"ArrowRight":if(l>1){let f=u-1;e.target.setSelectionRange(f,f)}else H(c.charAt(t))||e.preventDefault();break;case"Tab":case"Enter":case"NumpadEnter":i=k(L(c)),e.target.value=p(i),e.target.setAttribute("aria-valuenow",i!=null?String(i):""),N(e,i);break;case"Backspace":{if(e.preventDefault(),t===u){t>=c.length&&P.current!==null&&(t=c.length-P.current.length,e.target.setSelectionRange(t,t));let f=c.charAt(t-1),{decimalCharIndex:I,decimalCharIndexWithoutPrefix:y}=re(c);if(H(f)){let h=oe(c);if(E.current&&E.current.test(f))E.current.lastIndex=0,i=c.slice(0,t-2)+c.slice(t-1);else if(s.current&&s.current.test(f))s.current&&(s.current.lastIndex=0),h?e.target.setSelectionRange(t-1,t-1):i=c.slice(0,t-1)+c.slice(t);else if(I>0&&t>I){let m=te()&&(r.minFractionDigits||0)<h?"":"0";i=c.slice(0,t-1)+m+c.slice(t)}else if(y===1){i=c.slice(0,t-1)+"0"+c.slice(t);let m=L(i);i=typeof m=="number"&&m>0?i:""}else i=c.slice(0,t-1)+c.slice(t)}M(e,i,null,"delete-single")}else i=le(c,t,u),M(e,i,null,"delete-range");break}case"Delete":if(e.preventDefault(),t===u){let f=c.charAt(t),{decimalCharIndex:I,decimalCharIndexWithoutPrefix:y}=re(c);if(H(f)){let h=oe(c);if(E.current&&E.current.test(f))E.current.lastIndex=0,i=c.slice(0,t)+c.slice(t+2);else if(s.current&&s.current.test(f))s.current.lastIndex=0,h?e.target.setSelectionRange(t+1,t+1):i=c.slice(0,t)+c.slice(t+1);else if(I>0&&t>I){let m=te()&&(r.minFractionDigits||0)<h?"":"0";i=c.slice(0,t)+m+c.slice(t+1)}else if(y===1){i=c.slice(0,t)+"0"+c.slice(t+1);let m=L(i);i=typeof m=="number"&&m>0?i:""}else i=c.slice(0,t)+c.slice(t+1)}M(e,i,null,"delete-back-single")}else i=le(c,t,u),M(e,i,null,"delete-range");break;case"Home":e.preventDefault(),Ie(r.min)&&N(e,(w=r.min)!=null?w:0);break;case"End":e.preventDefault(),Ie(r.max)&&N(e,(a=r.max)!=null?a:100);break;default:break}},Fe=e=>{if(r.readOnly)return;let n=e.key,t=Ve(n),u=Pe(n);e.code!=="Enter"&&e.preventDefault(),(Number(n)>=0&&Number(n)<=9||u||t)&&ue(e,n,{isDecimalSign:t,isMinusSign:u})},pe=e=>{var t;if(r.readOnly)return;e.preventDefault();let n=(t=e.clipboardData||window.clipboardData)==null?void 0:t.getData("Text");if(n){let u=L(n);u!=null&&ue(e,u.toString())}},Ne=()=>r.min===void 0||r.min===null||r.min<0,Pe=e=>g.current&&g.current.test(e)||e==="-"?(g.current&&(g.current.lastIndex=0),!0):!1,Ve=e=>{var n;return(n=r.locale)!=null&&n.includes("fr")&&[".",","].includes(e)||s.current&&s.current.test(e)?(s.current&&(s.current.lastIndex=0),!0):!1},te=()=>r.mode==="decimal",re=e=>{let n=s.current?e.search(s.current):-1;s.current&&(s.current.lastIndex=0);let t=e.replace(V.current||"","").trim().replace(/\s/g,"").replace(C.current||"",""),u=s.current?t.search(s.current):-1;return s.current&&(s.current.lastIndex=0),{decimalCharIndex:n,decimalCharIndexWithoutPrefix:u}},ke=e=>{let n=i=>{i&&(i.lastIndex=0)},t=s.current?e.search(s.current):-1;n(s.current);let u=g.current?e.search(g.current):-1;n(g.current);let l=T.current?e.search(T.current):-1;n(T.current);let c=C.current?e.search(C.current):-1;return n(C.current),{decimalCharIndex:t,minusCharIndex:u,suffixCharIndex:l,currencyCharIndex:c}},ue=(e,n,t={isDecimalSign:!1,isMinusSign:!1})=>{var f,I,y,h;let u=g.current?n.search(g.current):-1;if(g.current&&(g.current.lastIndex=0),!Ne()&&u!==-1)return;let l=(f=e.target.selectionStart)!=null?f:0,c=(I=e.target.selectionEnd)!=null?I:0,i=e.target.value.trim(),{decimalCharIndex:o,minusCharIndex:S,suffixCharIndex:F,currencyCharIndex:w}=ke(i),a;if(t.isMinusSign){let m=S===-1;(l===0||l===w+1)&&(a=i,(m||c!==0)&&(a=$(i,n,0,c)),M(e,a,n,"insert"))}else if(t.isDecimalSign)o>0&&l===o?M(e,i,n,"insert"):(o>l&&o<c||o===-1&&r.maxFractionDigits)&&(a=$(i,n,l,c),M(e,a,n,"insert"));else{let m=(h=(y=Z.current)==null?void 0:y.resolvedOptions().maximumFractionDigits)!=null?h:0,_=l!==c?"range-insert":"insert";if(o>0&&l>o){if(l+n.length-(o+1)<=m){let A=w>=l?w-1:F>=l?F:i.length;a=i.slice(0,l)+n+i.slice(l+n.length,A)+i.slice(A),M(e,a,n,_)}}else a=$(i,n,l,c),M(e,a,n,_)}},$=(e,n,t,u)=>{var c;if((n==="."?n:n.split(".")).length===2){let i=e.slice(t,u).search((c=s.current)!=null?c:"");return s.current&&(s.current.lastIndex=0),i>0?e.slice(0,t)+p(n)+e.slice(u):p(n)||e}else return u-t===e.length?p(n):t===0?n+e.slice(u):u===e.length?e.slice(0,t)+n:e.slice(0,t)+n+e.slice(u)},le=(e,n,t)=>{let u;return t-n===e.length?u="":n===0?u=e.slice(t):t===e.length?u=e.slice(0,n):u=e.slice(0,n)+e.slice(t),u},Q=()=>{var S;let e=D();if(!e)return 0;let n=e.value,t=(S=e.selectionStart)!=null?S:0,u=n.length,l=null,c=(W.current||"").length;n=n.replace(W.current||"",""),t=t-c;let i=n.charAt(t);if(H(i))return t+c;let o=t-1;for(;o>=0;)if(i=n.charAt(o),H(i)){l=o+c;break}else o--;if(l!==null)e.setSelectionRange&&e.setSelectionRange(l+1,l+1);else{for(o=t;o<u;)if(i=n.charAt(o),H(i)){l=o+c;break}else o++;l!==null&&e.setSelectionRange&&e.setSelectionRange(l,l)}return l||0},Ae=()=>{let e=D();if(!e)return;let n=e.value;!r.readOnly&&n!==Re()&&Q()},H=e=>e.length===1&&(b.current&&b.current.test(e)||s.current&&s.current.test(e)||E.current&&E.current.test(e)||g.current&&g.current.test(e))?(Oe(),!0):!1,Oe=()=>{b.current&&(b.current.lastIndex=0),s.current&&(s.current.lastIndex=0),E.current&&(E.current.lastIndex=0),g.current&&(g.current.lastIndex=0)},ce=()=>{var u,l;let e=(l=(u=r.value)!=null?u:r.defaultValue)!=null?l:null,n=Be(e);se(n);let t=k(e);e!==null&&e!==t&&N(null,t)},M=(e,n,t,u)=>{let l=e.target.value,c=null;n!=null&&(c=L(n),c=!c&&!r.allowEmpty?0:c,ae(c,t,u,n),ie(e,l,c))},Ke=(e,n)=>{if(n===null&&e!==null)return!0;if(n!=null){let t=typeof e=="string"?L(e):e;return n!==t}return!1},ie=(e,n,t)=>{r.onChange&&Ke(n,t)&&r.onChange({originalEvent:e,value:t})},k=e=>e==="-"||e==null?null:r.min!=null&&typeof r.min=="number"&&typeof e=="number"&&e<r.min?r.min:r.max!=null&&typeof r.max=="number"&&typeof e=="number"&&e>r.max?r.max:e,Be=e=>nn(e)?null:r.min!==void 0&&r.min!==null&&e!==null&&e<r.min?r.min:r.max!==void 0&&r.max!==null&&e!==null&&e>r.max?r.max:e,ae=(e,n,t,u)=>{var S,F;n=n||"";let l=D();if(!l)return;let c=l.value,i=p(e),o=c.length;if(i!==u&&(i=Ge(i,u)),o===0){l.value=i,l.setSelectionRange&&l.setSelectionRange(0,0);let a=Q()+n.length;l.setSelectionRange&&l.setSelectionRange(a,a)}else{let w=(S=l.selectionStart)!=null?S:0,a=(F=l.selectionEnd)!=null?F:0;l.value=i;let f=i.length;if(t==="range-insert"){let I=L((c||"").slice(0,w)),h=(I!==null?I.toString():"").split("").join(`(${O.current})?`),m=new RegExp(h,"g");m.test(i);let _=n.split("").join(`(${O.current})?`),A=new RegExp(_,"g");A.test(i.slice(m.lastIndex)),a=m.lastIndex+A.lastIndex,l.setSelectionRange&&l.setSelectionRange(a,a)}else if(f===o)t==="insert"||t==="delete-back-single"?l.setSelectionRange&&l.setSelectionRange(a+1,a+1):t==="delete-single"?l.setSelectionRange&&l.setSelectionRange(a-1,a-1):(t==="delete-range"||t==="spin")&&l.setSelectionRange&&l.setSelectionRange(a,a);else if(t==="delete-back-single"){let I=c.charAt(a-1),y=c.charAt(a),h=o-f,m=E.current?E.current.test(y):!1;m&&h===1?a+=1:!m&&H(I)&&(a+=-1*h+1),E.current&&(E.current.lastIndex=0),l.setSelectionRange&&l.setSelectionRange(a,a)}else if(c==="-"&&t==="insert"){l.setSelectionRange&&l.setSelectionRange(0,0);let y=Q()+n.length+1;l.setSelectionRange&&l.setSelectionRange(y,y)}else a=a+(f-o),l.setSelectionRange&&l.setSelectionRange(a,a)}l.setAttribute("aria-valuenow",String(e))},$e=e=>{var n;return!e&&!r.allowEmpty?(n=r.min)!=null?n:0:e},se=e=>{e=$e(e);let n=D();if(!n)return;let t=n.value,u=p(e);t!==u&&(n.value=u,n.setAttribute("aria-valuenow",String(e)))},Ge=(e,n)=>{if(e&&n){let t=s.current,u=t?n.search(t):-1;if(t&&(t.lastIndex=0),P.current)return u!==-1?e.replace(P.current,"").split(t!=null?t:"")[0]+n.replace(P.current,"").slice(u)+P.current:e;if(W.current)return u!==-1?e.split(t!=null?t:"")[0]+n.slice(u):e}return e},oe=e=>{var n,t,u;if(e){let l=e.split((n=s.current)!=null?n:"");if(l.length===2)return l[1].replace((t=T.current)!=null?t:"","").trim().replace(/\s/g,"").replace((u=C.current)!=null?u:"","").length}return 0},N=(e,n)=>{if(r.onValueChange){let t;e?t=e:t={target:D()},r.onValueChange({originalEvent:t,value:n})}},_e=e=>{x(!0);let n=D();!r.disabled&&!r.readOnly&&(n==null?void 0:n.value)!==Re()&&r.highlightOnFocus&&e.target.select()},je=e=>{x(!1);let n=e.target,t=k(L(n.value));n.value=p(t),n.setAttribute("aria-valuenow",String(t)),N(e,t),!r.disabled&&!r.readOnly&&r.highlightOnFocus&&en()},G=()=>{j.current&&clearInterval(j.current)},Ue=()=>{var e,n;return r.max!==void 0&&((n=(e=r.value)!=null?e:r.defaultValue)!=null?n:0)>=r.max},We=()=>{var e,n;return r.min!==void 0&&((n=(e=r.value)!=null?e:r.defaultValue)!=null?n:0)<=r.min};return Ze(()=>{G()}),Ye(()=>{var u,l;ee();let e=(l=(u=r.value)!=null?u:r.defaultValue)!=null?l:null,n=k(e);se(typeof n=="number"?n:null),e!==null&&e!==n&&N(null,n)}),X(()=>{ee(),ce()},[r.locale,r.localeMatcher,r.mode,r.currency,r.currencyDisplay,r.useGrouping,r.minFractionDigits,r.maxFractionDigits,r.suffix,r.prefix]),X(()=>{ce()},[r.value,r.defaultValue]),X(()=>{r.disabled&&G()},[r.disabled]),{state:xe,inputRef:Y,onChange:ne,onInput:ne,onInputKeyDown:Ce,onInputKeyPress:Fe,onInputClick:Ae,onPaste:pe,onInputFocus:_e,onInputBlur:je,onValueChange:r.onValueChange,maxBoundry:Ue,minBoundry:We,increment:De,decrement:He,stopSpin:we}}});export{Ee as defaultProps,sn as useInputNumber};
1
+ var Oe=Object.defineProperty;var re=Object.getOwnPropertySymbols;var Ue=Object.prototype.hasOwnProperty,pe=Object.prototype.propertyIsEnumerable;var oe=(t,s,b)=>s in t?Oe(t,s,{enumerable:!0,configurable:!0,writable:!0,value:b}):t[s]=b,C=(t,s)=>{for(var b in s||(s={}))Ue.call(s,b)&&oe(t,b,s[b]);if(re)for(var b of re(s))pe.call(s,b)&&oe(t,b,s[b]);return t};import{withHeadless as Ae}from"@primereact/core/headless";import{useControlledState as Be,useMountEffect as ve,useNumberFormatter as Ge,useUnmountEffect as $e,useUpdateEffect as W}from"@primereact/hooks";import{clearSelection as We,getSelection as de,isEmpty as je,isNotEmpty as fe}from"@primeuix/utils";import*as F from"react";var me={value:void 0,defaultValue:void 0,format:!0,locale:void 0,mode:"decimal",prefix:void 0,suffix:void 0,currency:void 0,currencyDisplay:void 0,useGrouping:!0,minFractionDigits:void 0,maxFractionDigits:void 0,roundingMode:void 0,min:void 0,max:void 0,step:1,allowEmpty:!0,highlightOnFocus:!1,onValueChange:void 0,onChange:void 0,invalid:void 0,disabled:void 0,readOnly:void 0};var Ye=Ae({name:"useInputNumber",defaultProps:me,setup({props:t}){let[s,b]=Be({value:t.value,defaultValue:t.defaultValue,onChange:t.onValueChange}),ge=Ge({value:s,locale:t.locale,localeMatcher:t.localeMatcher,mode:t.mode,currency:t.currency,currencyDisplay:t.currencyDisplay,useGrouping:t.useGrouping,minFractionDigits:t.minFractionDigits,maxFractionDigits:t.maxFractionDigits,roundingMode:t.roundingMode,prefix:t.prefix,suffix:t.suffix,min:t.min,format:t.format}),{formattedValue:Ee,formatValue:P,parseValue:I,addWithPrecision:j,isDecimalMode:J,isNumeralChar:y,isMinusSign:be,isDecimalSign:N,allowMinusSign:he,getDecimalCharIndexes:_,getCharIndexes:Re,getDecimalLength:q,concatValues:Te,groupChar:x,prefixChar:z,suffixChar:Q,resolvedOptions:Ie}=ge,K=F.useRef(null),O=F.useRef(null),U=F.useRef(null),X=F.useRef(s);X.current=s;let ye={value:s,formattedValue:Ee},p=(e,l)=>{var u,r;let n=((u=t.step)!=null?u:1)*l;if(e){let i=I(e.currentTarget.value)||0,a=w(j(Number(i),n));le(e,a,null,"spin",String(i)),H(e,a),$(e,String(i),a)}else{let i=(r=X.current)!=null?r:0,a=w(j(Number(i),n));H(null,a),$(null,String(i),a)}},A=(e,l,n)=>{if(t.readOnly)return;let u=l||500;k(),K.current=setTimeout(()=>{A(e,40,n)},u),p(e,n)},Y=(e,l)=>{var n;t.disabled||(A(e,void 0,(n=l!=null?l:t.step)!=null?n:1),e==null||e.preventDefault())},Z=(e,l)=>{var n;t.disabled||(A(e,void 0,l!=null?l:((n=t.step)!=null?n:1)*-1),e==null||e.preventDefault())},B=()=>{Y(null,1)},v=()=>{Z(null,-1)},S=()=>{t.disabled||k()},ee=e=>{var l;t.disabled||t.readOnly||(U.current&&(e.currentTarget.value=(l=O.current)!=null?l:""),U.current=!1)},Me=e=>{var m,h,M,g;if(t.readOnly)return;let l=e.currentTarget;if(e.altKey||e.ctrlKey||e.metaKey){U.current=!0,O.current=l.value;return}O.current=l.value;let n=(m=l.selectionStart)!=null?m:0,u=(h=l.selectionEnd)!=null?h:0,r=u-n,i=l.value,a=null;switch(e.code||e.key){case"ArrowUp":p(e,1),e.preventDefault();break;case"ArrowDown":p(e,-1),e.preventDefault();break;case"ArrowLeft":if(r>1){let d=y(i.charAt(n))?n+1:n+2;e.currentTarget.setSelectionRange(d,d)}else y(i.charAt(n-1))||e.preventDefault();break;case"ArrowRight":if(r>1){let d=u-1;e.currentTarget.setSelectionRange(d,d)}else y(i.charAt(n))||e.preventDefault();break;case"Tab":case"Enter":case"NumpadEnter":a=w(I(i)),e.currentTarget.value=P(a),e.currentTarget.setAttribute("aria-valuenow",a!=null?String(a):""),H(e,a);break;case"Backspace":{if(e.preventDefault(),n===u){n>=i.length&&Q!==null&&(n=i.length-Q.length,e.currentTarget.setSelectionRange(n,n));let d=i.charAt(n-1),{decimalCharIndex:c,decimalCharIndexWithoutPrefix:T}=_(i);if(y(d)){let E=q(i);if(x&&new RegExp(`[${x}]`,"g").test(d))a=i.slice(0,n-2)+i.slice(n-1);else if(N(d))E?e.currentTarget.setSelectionRange(n-1,n-1):a=i.slice(0,n-1)+i.slice(n);else if(c>0&&n>c){let f=J()&&(t.minFractionDigits||0)<E?"":"0";a=i.slice(0,n-1)+f+i.slice(n)}else if(T===1){a=i.slice(0,n-1)+"0"+i.slice(n);let f=I(a);a=typeof f=="number"&&f>0?a:""}else a=i.slice(0,n-1)+i.slice(n)}R(e,a,null,"delete-single")}else a=te(i,n,u),R(e,a,null,"delete-range");break}case"Delete":if(e.preventDefault(),n===u){let d=i.charAt(n),{decimalCharIndex:c,decimalCharIndexWithoutPrefix:T}=_(i);if(y(d)){let E=q(i);if(x&&new RegExp(`[${x}]`,"g").test(d))a=i.slice(0,n)+i.slice(n+2);else if(N(d))E?e.currentTarget.setSelectionRange(n+1,n+1):a=i.slice(0,n)+i.slice(n+1);else if(c>0&&n>c){let f=J()&&(t.minFractionDigits||0)<E?"":"0";a=i.slice(0,n)+f+i.slice(n+1)}else if(T===1){a=i.slice(0,n)+"0"+i.slice(n+1);let f=I(a);a=typeof f=="number"&&f>0?a:""}else a=i.slice(0,n)+i.slice(n+1)}R(e,a,null,"delete-back-single")}else a=te(i,n,u),R(e,a,null,"delete-range");break;case"Home":e.preventDefault(),fe(t.min)&&H(e,(M=t.min)!=null?M:0);break;case"End":e.preventDefault(),fe(t.max)&&H(e,(g=t.max)!=null?g:100);break;default:break}},Le=e=>{if(t.readOnly)return;let l=e.key,n=N(l),u=be(l);e.code!=="Enter"&&e.preventDefault(),(Number(l)>=0&&Number(l)<=9||u||n)&&ne(e,l,{isDecimalSign:n,isMinusSign:u})},xe=e=>{var n;if(t.readOnly)return;e.preventDefault();let l=(n=e.clipboardData||window.clipboardData)==null?void 0:n.getData("Text");if(l){let u=I(l);u!=null&&ne(e,u.toString())}},ne=(e,l,n={isDecimalSign:!1,isMinusSign:!1})=>{var d,c,T,E;let u=l.search(/-/);if(!he()&&u!==-1)return;let r=(d=e.currentTarget.selectionStart)!=null?d:0,i=(c=e.currentTarget.selectionEnd)!=null?c:0,a=e.currentTarget.value.trim(),{decimalCharIndex:o,minusCharIndex:m,suffixCharIndex:h,currencyCharIndex:M}=Re(a),g;if(n.isMinusSign){let f=m===-1;(r===0||r===M+1)&&(g=a,(f||i!==0)&&(g=V(a,l,0,i)),R(e,g,l,"insert"))}else if(n.isDecimalSign)o>0&&r===o?R(e,a,l,"insert"):(o>r&&o<i||o===-1&&t.maxFractionDigits)&&(g=V(a,l,r,i),R(e,g,l,"insert"));else{let f=(E=(T=Ie())==null?void 0:T.maximumFractionDigits)!=null?E:0,D=r!==i?"range-insert":"insert";if(o>0&&r>o){if(r+l.length-(o+1)<=f){let L=M>=r?M-1:h>=r?h:a.length;g=a.slice(0,r)+l+a.slice(r+l.length,L)+a.slice(L),R(e,g,l,D)}}else g=V(a,l,r,i),R(e,g,l,D)}},V=(e,l,n,u)=>(l==="."?l:l.split(".")).length===2?e.slice(n,u).search(/[.,]/)>0?e.slice(0,n)+P(l)+e.slice(u):P(l)||e:u-n===e.length?P(l):n===0?l+e.slice(u):u===e.length?e.slice(0,n)+l:e.slice(0,n)+l+e.slice(u),te=(e,l,n)=>{let u;return n-l===e.length?u="":l===0?u=e.slice(n):n===e.length?u=e.slice(0,l):u=e.slice(0,l)+e.slice(n),u},G=e=>{var h;let l=e.currentTarget,n=l.value,u=(h=l.selectionStart)!=null?h:0,r=n.length,i=null,a=(z||"").length;n=n.replace(z||"",""),u=u-a;let o=n.charAt(u);if(y(o))return u+a;let m=u-1;for(;m>=0;)if(o=n.charAt(m),y(o)){i=m+a;break}else m--;if(i!==null)l.setSelectionRange&&l.setSelectionRange(i+1,i+1);else{for(m=u;m<r;)if(o=n.charAt(m),y(o)){i=m+a;break}else m++;i!==null&&l.setSelectionRange&&l.setSelectionRange(i,i)}return i||0},He=e=>{!t.readOnly&&e.currentTarget.value!==de()&&G(e)},ie=()=>{let e=s!=null?s:null,l=De(e);ae(l);let n=w(e);e!==null&&e!==n&&H(null,n)},R=(e,l,n,u)=>{let r=e.currentTarget.value,i=null;l!=null&&(i=I(l),i=!i&&!t.allowEmpty?0:i,le(e,i,n,u,l),$(e,r,i))},Se=(e,l)=>{if(l===null&&e!==null)return!0;if(l!=null){let n=typeof e=="string"?I(e):e;return l!==n}return!1},$=(e,l,n)=>{t.onChange&&Se(l,n)&&t.onChange({originalEvent:e,value:n})},w=e=>e==="-"||e==null?null:t.min!=null&&typeof t.min=="number"&&typeof e=="number"&&e<t.min?t.min:t.max!=null&&typeof t.max=="number"&&typeof e=="number"&&e>t.max?t.max:e,De=e=>je(e)?null:t.min!==void 0&&t.min!==null&&e!==null&&e<t.min?t.min:t.max!==void 0&&t.max!==null&&e!==null&&e>t.max?t.max:e,le=(e,l,n,u,r)=>{var h,M,g;let i=e.currentTarget,a=(h=i.value)!=null?h:"",o=P(l),m=a.length;if(o!==r&&(o=Te(o,r)),m===0){i.value=o,i.setSelectionRange&&i.setSelectionRange(0,0);let c=G(e)+(n?n.length:0);i.setSelectionRange&&i.setSelectionRange(c,c)}else{let d=(M=i.selectionStart)!=null?M:0,c=(g=i.selectionEnd)!=null?g:0;i.value=o;let T=o.length;if(u==="range-insert"){let E=I(a.slice(0,d)),D=(E!==null?E.toString():"").split("").join(`(${x})?`),L=new RegExp(D,"g");L.test(o);let Ke=(n!=null?n:"").split("").join(`(${x})?`),se=new RegExp(Ke,"g");se.test(o.slice(L.lastIndex)),c=L.lastIndex+se.lastIndex,i.setSelectionRange&&i.setSelectionRange(c,c)}else if(T===m)u==="insert"||u==="delete-back-single"?i.setSelectionRange&&i.setSelectionRange(c+1,c+1):u==="delete-single"?i.setSelectionRange&&i.setSelectionRange(c-1,c-1):(u==="delete-range"||u==="spin")&&i.setSelectionRange&&i.setSelectionRange(c,c);else if(u==="delete-back-single"){let E=a.charAt(c-1),f=a.charAt(c),D=m-T,L=x?new RegExp(`[${x}]`,"g").test(f):!1;L&&D===1?c+=1:!L&&y(E)&&(c+=-1*D+1),i.setSelectionRange&&i.setSelectionRange(c,c)}else if(a==="-"&&u==="insert"){i.setSelectionRange&&i.setSelectionRange(0,0);let f=G(e)+(n?n.length:0)+1;i.setSelectionRange&&i.setSelectionRange(f,f)}else c=c+(T-m),i.setSelectionRange&&i.setSelectionRange(c,c)}i.setAttribute("aria-valuenow",String(l))},Ce=e=>{var l;return!e&&!t.allowEmpty?(l=t.min)!=null?l:0:e},ae=e=>{let l=Ce(e);b([l,{value:l}])},H=(e,l)=>{let n=e!=null?e:null;b([l,{originalEvent:n,value:l}])},we=e=>{!t.disabled&&!t.readOnly&&e.currentTarget.value!==de()&&t.highlightOnFocus&&e.currentTarget.select()},Pe=e=>{let l=e.currentTarget,n=w(I(l.value));H(e,n),!t.disabled&&!t.readOnly&&t.highlightOnFocus&&We()},k=()=>{K.current&&clearInterval(K.current)},ue=()=>t.max!==void 0&&(s!=null?s:0)>=t.max,ce=()=>t.min!==void 0&&(s!=null?s:0)<=t.min;$e(()=>{k()}),ve(()=>{let e=w(s);ae(typeof e=="number"?e:null),s!==null&&s!==e&&H(null,e)}),W(()=>{ie()},[t.locale,t.localeMatcher,t.mode,t.currency,t.currencyDisplay,t.useGrouping,t.minFractionDigits,t.maxFractionDigits,t.suffix,t.prefix]),W(()=>{ie()},[t.value,t.defaultValue]),W(()=>{t.disabled&&k()},[t.disabled]);let Fe=C(C(C({"data-scope":"inputnumber","data-part":"root"},t.disabled?{"data-disabled":""}:{}),t.invalid?{"data-invalid":""}:{}),t.readOnly?{"data-readonly":""}:{}),Ve=C(C(C({"data-scope":"inputnumber","data-part":"input",role:"spinbutton","aria-valuemin":t.min,"aria-valuemax":t.max,"aria-valuenow":s!=null?s:void 0,inputMode:t.mode==="decimal"&&!t.minFractionDigits?"numeric":"decimal",disabled:!!t.disabled||void 0,readOnly:!!t.readOnly||void 0,onChange:ee,onInput:ee,onKeyDown:Me,onKeyPress:Le,onClick:He,onPaste:xe,onFocus:we,onBlur:Pe},t.disabled?{"data-disabled":""}:{}),t.invalid?{"data-invalid":""}:{}),t.readOnly?{"data-readonly":""}:{}),ke={disabled:!!t.disabled||ue(),tabIndex:-1,onPointerDown:()=>B(),onPointerUp:()=>S(),onPointerLeave:()=>S(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&B()},onKeyUp:()=>S()},Ne={disabled:!!t.disabled||ce(),tabIndex:-1,onPointerDown:()=>v(),onPointerUp:()=>S(),onPointerLeave:()=>S(),onKeyDown:e=>{(e.key==="Enter"||e.key===" ")&&v()},onKeyUp:()=>S()};return{state:ye,rootProps:Fe,inputProps:Ve,incrementProps:ke,decrementProps:Ne,maxBoundry:ue,minBoundry:ce,increment:Y,decrement:Z,stepUp:B,stepDown:v,stopSpin:S}}});export{me as defaultProps,Ye as useInputNumber};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/inputnumber/useInputNumber.ts","../../src/inputnumber/useInputNumber.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { useInputNumberProps } from '@primereact/types/shared/inputnumber';\nimport { clearSelection, getSelection, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputNumber.props';\n\nexport const useInputNumber = withHeadless({\n name: 'useInputNumber',\n defaultProps,\n setup({ props }) {\n const [focused, setFocused] = React.useState<boolean>(false);\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null);\n const timer = React.useRef<NodeJS.Timeout | null>(null);\n const lastValue = React.useRef<string | null>(null);\n const numberFormat = React.useRef<Intl.NumberFormat | null>(null);\n const groupChar = React.useRef<string | null>(null);\n const prefixChar = React.useRef<string | null>(null);\n const suffixChar = React.useRef<string | null>(null);\n const isSpecialChar = React.useRef<boolean | null>(null);\n const _numeral = React.useRef<RegExp | null>(null);\n const _group = React.useRef<RegExp | null>(null);\n const _minusSign = React.useRef<RegExp | null>(null);\n const _currency = React.useRef<RegExp | null>(null);\n const _decimal = React.useRef<RegExp | null>(null);\n const _suffix = React.useRef<RegExp | null>(null);\n const _prefix = React.useRef<RegExp | null>(null);\n const _index = React.useRef<((d: string) => number | undefined) | null>(null);\n\n const state = {\n focused\n };\n\n const getOptions = () => {\n return {\n localeMatcher: props.localeMatcher,\n style: props.mode,\n currency: props.currency,\n currencyDisplay: props.currencyDisplay,\n useGrouping: props.useGrouping,\n minimumFractionDigits: props.minFractionDigits ?? undefined,\n maximumFractionDigits: props.maxFractionDigits ?? undefined,\n roundingMode: props.roundingMode\n };\n };\n\n const constructParser = () => {\n numberFormat.current = new Intl.NumberFormat(props.locale, getOptions());\n const numerals = [...new Intl.NumberFormat(props.locale, { useGrouping: false }).format(9876543210)].reverse();\n const index = new Map(numerals.map((d, i) => [d, i]));\n\n _numeral.current = new RegExp(`[${numerals.join('')}]`, 'g');\n _group.current = getGroupingExpression();\n _minusSign.current = getMinusSignExpression();\n _currency.current = getCurrencyExpression();\n _decimal.current = getDecimalExpression();\n _suffix.current = getSuffixExpression();\n _prefix.current = getPrefixExpression();\n _index.current = (d) => index.get(d);\n };\n\n const escapeRegExp = (text: string) => {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n };\n\n const getDecimalExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { ...getOptions(), useGrouping: false });\n\n return new RegExp(\n `[${formatter\n .format(1.1)\n .replace(_currency.current ?? '', '')\n .trim()\n .replace(_numeral.current ?? '', '')}]`,\n 'g'\n );\n };\n\n const getGroupingExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { useGrouping: true });\n\n groupChar.current = formatter\n .format(1000000)\n .trim()\n .replace(_numeral.current ?? '', '')\n .charAt(0);\n\n return new RegExp(`[${groupChar.current}]`, 'g');\n };\n\n const getMinusSignExpression = () => {\n const formatter = new Intl.NumberFormat(props.locale, { useGrouping: false });\n\n return new RegExp(\n `[${formatter\n .format(-1)\n .trim()\n .replace(_numeral.current ?? '', '')}]`,\n 'g'\n );\n };\n\n const getCurrencyExpression = () => {\n if (props.currency) {\n const formatter = new Intl.NumberFormat(props.locale, { style: 'currency', currency: props.currency, currencyDisplay: props.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: props.roundingMode });\n\n return new RegExp(\n `[${formatter\n .format(1)\n .replace(/\\s/g, '')\n .replace(_numeral.current ?? '', '')\n .replace(_group.current ?? '', '')}]`,\n 'g'\n );\n }\n\n return new RegExp(`[]`, 'g');\n };\n\n const getPrefixExpression = () => {\n if (props.prefix) {\n _prefix.current = new RegExp(escapeRegExp(props.prefix), 'g');\n } else {\n const formatter = new Intl.NumberFormat(props.locale, { style: props.mode, currency: props.currency, currencyDisplay: props.currencyDisplay });\n\n const prefixStr = formatter.format(1).split('1')[0];\n\n _prefix.current = new RegExp(escapeRegExp(prefixStr), 'g');\n }\n\n return _prefix.current;\n };\n\n const getSuffixExpression = () => {\n if (props.suffix) {\n _suffix.current = new RegExp(escapeRegExp(props.suffix), 'g');\n } else {\n const formatter = new Intl.NumberFormat(props.locale, { style: props.mode, currency: props.currency, currencyDisplay: props.currencyDisplay, minimumFractionDigits: 0, maximumFractionDigits: 0, roundingMode: props.roundingMode });\n\n const suffixStr = formatter.format(1).split('1')[1];\n\n _suffix.current = new RegExp(escapeRegExp(suffixStr), 'g');\n }\n\n return _suffix.current;\n };\n\n const formatValue = (value: number | string | null | undefined) => {\n if (value != null) {\n if (typeof value === 'string' && value === '-') {\n // Minus sign\n return value;\n }\n\n if (props.format) {\n const formatter = new Intl.NumberFormat(props.locale, getOptions());\n const numericValue = typeof value === 'string' ? Number(value) : value;\n let formattedValue = formatter.format(numericValue);\n\n if (props.prefix) {\n formattedValue = props.prefix + formattedValue;\n }\n\n if (props.suffix) {\n formattedValue = formattedValue + props.suffix;\n }\n\n return formattedValue;\n }\n\n return value.toString();\n }\n\n return '';\n };\n\n const parseValue = (text: string) => {\n let cleanText = text\n .replace(_suffix.current || '', '')\n .replace(_prefix.current || '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current || '', '');\n\n if (_decimal.current && _minusSign.current && _numeral.current) {\n const validChars = new RegExp(\n `[${[...new Intl.NumberFormat(props.locale, { useGrouping: false }).format(9876543210)].reverse().join('')}${new Intl.NumberFormat(props.locale).format(1.1).replace(/[0-9]/g, '')}${new Intl.NumberFormat(props.locale)\n .format(-1)\n .replace(/[0-9]/g, '')}]`,\n 'g'\n );\n\n cleanText = cleanText.match(validChars)?.join('') || '';\n }\n\n if (_group.current) {\n cleanText = cleanText.replace(_group.current, '');\n }\n\n if (_minusSign.current) {\n cleanText = cleanText.replace(_minusSign.current, '-');\n }\n\n if (_decimal.current) {\n cleanText = cleanText.replace(_decimal.current, '.');\n }\n\n if (_numeral.current && _index.current) {\n cleanText = cleanText.replace(_numeral.current, (d) => {\n const res = _index.current ? _index.current(d) : undefined;\n\n return res !== undefined ? res.toString() : '';\n });\n }\n\n if (cleanText) {\n if (cleanText === '-') return cleanText;\n\n const parsedValue = +cleanText;\n\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n return null;\n };\n\n const getInputElement = (): HTMLInputElement | null => {\n const extractHTMLInput = (ref: HTMLInputElement | { elementRef?: React.RefObject<HTMLInputElement>; inputRef?: React.RefObject<{ elementRef: React.RefObject<HTMLInputElement> }> } | null): HTMLInputElement | null => {\n if (!ref) return null;\n\n if ('tagName' in ref && ref.tagName === 'INPUT') {\n return ref;\n } else {\n if ('inputRef' in ref && ref.inputRef?.current?.elementRef?.current) {\n return ref.inputRef.current.elementRef.current;\n }\n\n if ('elementRef' in ref && ref.elementRef?.current) {\n return ref.elementRef.current;\n }\n }\n\n return null;\n };\n\n let targetRef = null;\n\n if (props.target) {\n targetRef = 'current' in props.target ? props.target.current : props.target;\n }\n\n const refToUse = targetRef || inputRef.current;\n\n return extractHTMLInput(refToUse);\n };\n\n const addWithPrecision = (base: number, increment: number) => {\n const baseStr = base.toString();\n const stepStr = increment.toString();\n\n const baseDecimalPlaces = baseStr.includes('.') ? baseStr.split('.')[1].length : 0;\n const stepDecimalPlaces = stepStr.includes('.') ? stepStr.split('.')[1].length : 0;\n\n const maxDecimalPlaces = Math.max(baseDecimalPlaces, stepDecimalPlaces);\n const precision = Math.pow(10, maxDecimalPlaces);\n\n return Math.round((base + increment) * precision) / precision;\n };\n\n const repeat = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, interval: number | undefined, dir: number) => {\n if (props.readOnly) {\n return;\n }\n\n const i = interval || 500;\n\n clearTimer();\n timer.current = setTimeout(() => {\n repeat(event, 40, dir);\n }, i);\n\n spin(event, dir);\n };\n\n const spin = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n const inputEl = getInputElement();\n\n if (inputEl) {\n const step = (props.step ?? 1) * dir;\n const currentValue = parseValue(inputEl.value) || 0;\n const newValue = validateValue(addWithPrecision(currentValue as number, step));\n\n updateInput(newValue as number, null, 'spin', String(currentValue));\n updateModel(event, newValue as useInputNumberProps['value']);\n handleOnInput(event, String(currentValue), newValue as number);\n }\n };\n\n const increment = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => {\n if (!props.disabled) {\n const inputEl = getInputElement();\n\n if (inputEl) {\n inputEl.focus();\n }\n\n repeat(event, undefined, dir ?? props.step ?? 1);\n event.preventDefault();\n }\n };\n\n const decrement = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>, dir: number) => {\n if (!props.disabled) {\n const inputEl = getInputElement();\n\n if (inputEl) {\n inputEl.focus();\n }\n\n repeat(event, undefined, dir ?? (props.step ?? 1) * -1);\n event.preventDefault();\n }\n };\n\n const stopSpin = () => {\n if (!props.disabled) {\n clearTimer();\n }\n };\n\n const onInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (isSpecialChar.current) {\n (event.target as HTMLInputElement).value = lastValue.current ?? '';\n }\n\n isSpecialChar.current = false;\n };\n\n const onInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const inputElement = event.target as HTMLInputElement;\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n isSpecialChar.current = true;\n lastValue.current = inputElement.value;\n\n return;\n }\n\n lastValue.current = inputElement.value;\n\n let selectionStart = inputElement.selectionStart ?? 0;\n const selectionEnd = inputElement.selectionEnd ?? 0;\n const selectionRange = selectionEnd - selectionStart;\n const inputValue = inputElement.value;\n let newValueStr = null;\n const code = event.code || event.key;\n\n switch (code) {\n case 'ArrowUp':\n spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (selectionRange > 1) {\n const cursorPosition = isNumeralChar(inputValue.charAt(selectionStart)) ? selectionStart + 1 : selectionStart + 2;\n\n (event.target as HTMLInputElement).setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (selectionRange > 1) {\n const cursorPosition = selectionEnd - 1;\n\n (event.target as HTMLInputElement).setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = validateValue(parseValue(inputValue)) as useInputNumberProps['value'];\n (event.target as HTMLInputElement).value = formatValue(newValueStr);\n (event.target as HTMLInputElement).setAttribute('aria-valuenow', newValueStr != null ? String(newValueStr) : '');\n updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n if (selectionStart >= inputValue.length && suffixChar.current !== null) {\n selectionStart = inputValue.length - suffixChar.current.length;\n (event.target as HTMLInputElement).setSelectionRange(selectionStart, selectionStart);\n }\n\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (_group.current && _group.current.test(deleteChar)) {\n _group.current.lastIndex = 0;\n\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (_decimal.current && _decimal.current.test(deleteChar)) {\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n if (decimalLength) {\n (event.target as HTMLInputElement).setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (_group.current && _group.current.test(deleteChar)) {\n _group.current.lastIndex = 0;\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (_decimal.current && _decimal.current.test(deleteChar)) {\n _decimal.current.lastIndex = 0;\n\n if (decimalLength) {\n (event.target as HTMLInputElement).setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-back-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(props.min)) {\n updateModel(event, props.min ?? 0);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(props.max)) {\n updateModel(event, props.max ?? 100);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const char = event.key;\n const isDecimalSign = isDecimalSignFn(char);\n const isMinusSign = isMinusSignFn(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n insert(event, char, { isDecimalSign, isMinusSign });\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n event.preventDefault();\n const data = (event.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('Text');\n\n if (data) {\n const filteredData = parseValue(data);\n\n if (filteredData != null) {\n insert(event, filteredData.toString());\n }\n }\n };\n\n const allowMinusSign = () => {\n return props.min === undefined || props.min === null || props.min < 0;\n };\n\n const isMinusSignFn = (char: string) => {\n if ((_minusSign.current && _minusSign.current.test(char)) || char === '-') {\n if (_minusSign.current) {\n _minusSign.current.lastIndex = 0;\n }\n\n return true;\n }\n\n return false;\n };\n\n const isDecimalSignFn = (char: string) => {\n if ((props.locale?.includes('fr') && ['.', ','].includes(char)) || (_decimal.current && _decimal.current.test(char))) {\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return true;\n }\n\n return false;\n };\n\n const isDecimalMode = () => {\n return props.mode === 'decimal';\n };\n\n const getDecimalCharIndexes = (val: string) => {\n const decimalCharIndex = _decimal.current ? val.search(_decimal.current) : -1;\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n const filteredVal = val\n .replace(_prefix.current || '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current || '', '');\n const decimalCharIndexWithoutPrefix = _decimal.current ? filteredVal.search(_decimal.current) : -1;\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return { decimalCharIndex, decimalCharIndexWithoutPrefix };\n };\n\n const getCharIndexes = (val: string) => {\n const resetRegexLastIndex = (regex: RegExp | null) => {\n if (regex) {\n regex.lastIndex = 0;\n }\n };\n\n const decimalCharIndex = _decimal.current ? val.search(_decimal.current) : -1;\n\n resetRegexLastIndex(_decimal.current);\n\n const minusCharIndex = _minusSign.current ? val.search(_minusSign.current) : -1;\n\n resetRegexLastIndex(_minusSign.current);\n\n const suffixCharIndex = _suffix.current ? val.search(_suffix.current) : -1;\n\n resetRegexLastIndex(_suffix.current);\n\n const currencyCharIndex = _currency.current ? val.search(_currency.current) : -1;\n\n resetRegexLastIndex(_currency.current);\n\n return { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex };\n };\n\n const insert = (event: React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, text: string, sign = { isDecimalSign: false, isMinusSign: false }) => {\n const minusCharIndexOnText = _minusSign.current ? text.search(_minusSign.current) : -1;\n\n if (_minusSign.current) {\n _minusSign.current.lastIndex = 0;\n }\n\n if (!allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = (event.target as HTMLInputElement).selectionStart ?? 0;\n const selectionEnd = (event.target as HTMLInputElement).selectionEnd ?? 0;\n const inputValue = (event.target as HTMLInputElement).value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n const isNewMinusSign = minusCharIndex === -1;\n\n if (selectionStart === 0 || selectionStart === currencyCharIndex + 1) {\n newValueStr = inputValue;\n\n if (isNewMinusSign || selectionEnd !== 0) {\n newValueStr = insertText(inputValue, text, 0, selectionEnd);\n }\n\n updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && props.maxFractionDigits) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = numberFormat.current?.resolvedOptions().maximumFractionDigits ?? 0;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, operation);\n }\n }\n };\n\n const insertText = (value: string, text: string, start: number, end: number) => {\n const textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(_decimal.current ?? '');\n\n if (_decimal.current) {\n _decimal.current.lastIndex = 0;\n }\n\n return decimalCharIndex > 0 ? value.slice(0, start) + formatValue(text) + value.slice(end) : formatValue(text) || value;\n } else if (end - start === value.length) {\n return formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n };\n\n const deleteRange = (value: string, start: number, end: number) => {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n };\n\n const initCursor = () => {\n const inputEl = getInputElement();\n\n if (!inputEl) return 0;\n\n let inputValue = inputEl.value;\n let selectionStart = inputEl.selectionStart ?? 0;\n const valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n const prefixLength = (prefixChar.current || '').length;\n\n inputValue = inputValue.replace(prefixChar.current || '', '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n };\n\n const onInputClick = () => {\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const currentValue = inputEl.value;\n\n if (!props.readOnly && currentValue !== getSelection()) {\n initCursor();\n }\n };\n\n const isNumeralChar = (char: string) => {\n if (char.length === 1 && ((_numeral.current && _numeral.current.test(char)) || (_decimal.current && _decimal.current.test(char)) || (_group.current && _group.current.test(char)) || (_minusSign.current && _minusSign.current.test(char)))) {\n resetRegex();\n\n return true;\n }\n\n return false;\n };\n\n const resetRegex = () => {\n if (_numeral.current) _numeral.current.lastIndex = 0;\n\n if (_decimal.current) _decimal.current.lastIndex = 0;\n\n if (_group.current) _group.current.lastIndex = 0;\n\n if (_minusSign.current) _minusSign.current.lastIndex = 0;\n };\n\n const changeValue = () => {\n const _value = props.value ?? props.defaultValue ?? null;\n const val = validateValueByLimit(_value);\n\n updateInputValue(val);\n\n const newValue = validateValue(_value);\n\n if (_value !== null && _value !== newValue) {\n updateModel(null, newValue as useInputNumberProps['value']);\n }\n };\n\n const updateValue = (event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, valueStr: string, insertedValueStr: string | null, operation: string) => {\n const currentValue = (event.target as HTMLInputElement).value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = parseValue(valueStr);\n newValue = !newValue && !props.allowEmpty ? 0 : newValue;\n\n updateInput(newValue, insertedValueStr, operation, valueStr);\n handleOnInput(event, currentValue, newValue);\n }\n };\n\n const isValueChanged = (currentValue: string | number | null, newValue: number | string | null) => {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n const parsedCurrentValue = typeof currentValue === 'string' ? parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n };\n\n const handleOnInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null,\n currentValue: string,\n newValue: number | string | null\n ) => {\n if (props.onChange && isValueChanged(currentValue, newValue)) {\n props.onChange({\n originalEvent: event,\n value: newValue as number\n });\n }\n };\n\n const validateValue = (value: number | string | null) => {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (props.min != null && typeof props.min === 'number' && typeof value === 'number' && value < props.min) {\n return props.min;\n }\n\n if (props.max != null && typeof props.max === 'number' && typeof value === 'number' && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const validateValueByLimit = (value: number | null) => {\n if (isEmpty(value)) {\n return null;\n }\n\n if (props.min !== undefined && props.min !== null && value !== null && value < props.min) {\n return props.min;\n }\n\n if (props.max !== undefined && props.max !== null && value !== null && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const updateInput = (value: number | string | null, insertedValueStr: string | null, operation: string, valueStr: string) => {\n insertedValueStr = insertedValueStr || '';\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const inputValue = inputEl.value;\n\n let newValue = formatValue(value);\n const currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n inputEl.value = newValue;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor();\n const selectionEnd = index + insertedValueStr.length;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n const selectionStart = inputEl.selectionStart ?? 0;\n let selectionEnd = inputEl.selectionEnd ?? 0;\n\n inputEl.value = newValue;\n const newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = parseValue((inputValue || '').slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${groupChar.current})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = insertedValueStr.split('').join(`(${groupChar.current})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n const prevChar = inputValue.charAt(selectionEnd - 1);\n const nextChar = inputValue.charAt(selectionEnd);\n const diff = currentLength - newLength;\n const isGroupChar = _group.current ? _group.current.test(nextChar) : false;\n\n if (isGroupChar && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupChar && isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n if (_group.current) {\n _group.current.lastIndex = 0;\n }\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor();\n const selectionEnd = index + insertedValueStr.length + 1;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n inputEl.setAttribute('aria-valuenow', String(value));\n };\n\n const evaluateEmpty = (newValue: useInputNumberProps['value']) => {\n return !newValue && !props.allowEmpty ? (props.min ?? 0) : newValue;\n };\n\n const updateInputValue = (newValue: useInputNumberProps['value']) => {\n newValue = evaluateEmpty(newValue);\n\n const inputEl = getInputElement();\n\n if (!inputEl) return;\n\n const value = inputEl.value;\n const _formattedValue = formatValue(newValue);\n\n if (value !== _formattedValue) {\n inputEl.value = _formattedValue;\n inputEl.setAttribute('aria-valuenow', String(newValue));\n }\n };\n\n const concatValues = (val1: string, val2: string) => {\n if (val1 && val2) {\n const decimalRegex = _decimal.current;\n const decimalCharIndex = decimalRegex ? val2.search(decimalRegex) : -1;\n\n if (decimalRegex) {\n decimalRegex.lastIndex = 0;\n }\n\n if (suffixChar.current) {\n return decimalCharIndex !== -1 ? val1.replace(suffixChar.current, '').split(decimalRegex ?? '')[0] + val2.replace(suffixChar.current, '').slice(decimalCharIndex) + suffixChar.current : val1;\n } else if (prefixChar.current) {\n return decimalCharIndex !== -1 ? val1.split(decimalRegex ?? '')[0] + val2.slice(decimalCharIndex) : val1;\n }\n }\n\n return val1;\n };\n\n const getDecimalLength = (value: string) => {\n if (value) {\n const valueSplit = value.split(_decimal.current ?? '');\n\n if (valueSplit.length === 2) {\n return valueSplit[1]\n .replace(_suffix.current ?? '', '')\n .trim()\n .replace(/\\s/g, '')\n .replace(_currency.current ?? '', '').length;\n }\n }\n\n return 0;\n };\n\n const updateModel = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | React.PointerEvent<HTMLButtonElement> | null,\n value: useInputNumberProps['value']\n ) => {\n if (props.onValueChange) {\n let originalEvent;\n\n if (event) {\n originalEvent = event;\n } else {\n // Create a dummy synthetic event if event is null\n const inputEl = getInputElement();\n\n originalEvent = {\n ...({} as React.FormEvent<HTMLInputElement>),\n target: inputEl as EventTarget & HTMLInputElement\n };\n }\n\n props.onValueChange({\n originalEvent,\n value: value as number\n });\n }\n };\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n\n const inputEl = getInputElement();\n\n if (!props.disabled && !props.readOnly && inputEl?.value !== getSelection() && props.highlightOnFocus) {\n event.target.select();\n }\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n\n const input = event.target as HTMLInputElement;\n const newValue = validateValue(parseValue(input.value)) as useInputNumberProps['value'];\n\n input.value = formatValue(newValue);\n input.setAttribute('aria-valuenow', String(newValue));\n updateModel(event, newValue);\n\n if (!props.disabled && !props.readOnly && props.highlightOnFocus) {\n clearSelection();\n }\n };\n\n const clearTimer = () => {\n if (timer.current) {\n clearInterval(timer.current);\n }\n };\n\n const maxBoundry = () => {\n return props.max !== undefined && (props.value ?? props.defaultValue ?? 0) >= props.max;\n };\n\n const minBoundry = () => {\n return props.min !== undefined && (props.value ?? props.defaultValue ?? 0) <= props.min;\n };\n\n useUnmountEffect(() => {\n clearTimer();\n });\n\n useMountEffect(() => {\n constructParser();\n\n const initialValue = props.value ?? props.defaultValue ?? null;\n const newValue = validateValue(initialValue as number | null);\n const valueForInput = typeof newValue === 'number' ? newValue : null;\n\n updateInputValue(valueForInput);\n\n if (initialValue !== null && initialValue !== newValue) {\n updateModel(null, newValue as number);\n }\n });\n\n useUpdateEffect(() => {\n constructParser();\n changeValue();\n }, [props.locale, props.localeMatcher, props.mode, props.currency, props.currencyDisplay, props.useGrouping, props.minFractionDigits, props.maxFractionDigits, props.suffix, props.prefix]);\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.value, props.defaultValue]);\n\n useUpdateEffect(() => {\n if (props.disabled) {\n clearTimer();\n }\n }, [props.disabled]);\n\n return {\n state,\n inputRef,\n // methods\n onChange: onInput,\n onInput,\n onInputKeyDown,\n onInputKeyPress,\n onInputClick,\n onPaste,\n onInputFocus,\n onInputBlur,\n onValueChange: props.onValueChange,\n maxBoundry,\n minBoundry,\n increment,\n decrement,\n stopSpin\n };\n }\n});\n","import type { useInputNumberProps } from '@primereact/types/shared/inputnumber';\n\nexport const defaultProps: useInputNumberProps = {\n value: undefined,\n defaultValue: undefined,\n format: true,\n locale: undefined,\n mode: 'decimal',\n prefix: undefined,\n suffix: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n useGrouping: true,\n minFractionDigits: undefined,\n maxFractionDigits: undefined,\n roundingMode: undefined,\n min: undefined,\n max: undefined,\n step: 1,\n allowEmpty: true,\n highlightOnFocus: false,\n target: undefined,\n onValueChange: undefined,\n onChange: undefined\n};\n"],"mappings":"+bAAA,OAAS,gBAAAA,OAAoB,4BAC7B,OAAS,kBAAAC,GAAgB,oBAAAC,GAAkB,mBAAAC,MAAuB,oBAElE,OAAS,kBAAAC,GAAgB,gBAAAC,GAAc,WAAAC,GAAS,cAAAC,OAAkB,kBAClE,UAAYC,MAAW,QCFhB,IAAMC,GAAoC,CAC7C,MAAO,OACP,aAAc,OACd,OAAQ,GACR,OAAQ,OACR,KAAM,UACN,OAAQ,OACR,OAAQ,OACR,SAAU,OACV,gBAAiB,OACjB,YAAa,GACb,kBAAmB,OACnB,kBAAmB,OACnB,aAAc,OACd,IAAK,OACL,IAAK,OACL,KAAM,EACN,WAAY,GACZ,iBAAkB,GAClB,OAAQ,OACR,cAAe,OACf,SAAU,MACd,EDjBO,IAAMC,GAAiBC,GAAa,CACvC,KAAM,iBACN,aAAAC,GACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,GAAM,CAACC,EAASC,CAAU,EAAU,WAAkB,EAAK,EACrDC,EAAiB,SAAiE,IAAI,EACtFC,EAAc,SAA8B,IAAI,EAChDC,EAAkB,SAAsB,IAAI,EAC5CC,EAAqB,SAAiC,IAAI,EAC1DC,EAAkB,SAAsB,IAAI,EAC5CC,EAAmB,SAAsB,IAAI,EAC7CC,EAAmB,SAAsB,IAAI,EAC7CC,EAAsB,SAAuB,IAAI,EACjDC,EAAiB,SAAsB,IAAI,EAC3CC,EAAe,SAAsB,IAAI,EACzCC,EAAmB,SAAsB,IAAI,EAC7CC,EAAkB,SAAsB,IAAI,EAC5CC,EAAiB,SAAsB,IAAI,EAC3CC,EAAgB,SAAsB,IAAI,EAC1CC,EAAgB,SAAsB,IAAI,EAC1CC,EAAe,SAAmD,IAAI,EAEtEC,GAAQ,CACV,QAAAlB,CACJ,EAEMmB,EAAa,IAAM,CAjCjC,IAAAC,EAAAC,EAkCY,MAAO,CACH,cAAetB,EAAM,cACrB,MAAOA,EAAM,KACb,SAAUA,EAAM,SAChB,gBAAiBA,EAAM,gBACvB,YAAaA,EAAM,YACnB,uBAAuBqB,EAAArB,EAAM,oBAAN,KAAAqB,EAA2B,OAClD,uBAAuBC,EAAAtB,EAAM,oBAAN,KAAAsB,EAA2B,OAClD,aAActB,EAAM,YACxB,CACJ,EAEMuB,GAAkB,IAAM,CAC1BjB,EAAa,QAAU,IAAI,KAAK,aAAaN,EAAM,OAAQoB,EAAW,CAAC,EACvE,IAAMI,EAAW,CAAC,GAAG,IAAI,KAAK,aAAaxB,EAAM,OAAQ,CAAE,YAAa,EAAM,CAAC,EAAE,OAAO,UAAU,CAAC,EAAE,QAAQ,EACvGyB,EAAQ,IAAI,IAAID,EAAS,IAAI,CAACE,EAAGC,IAAM,CAACD,EAAGC,CAAC,CAAC,CAAC,EAEpDhB,EAAS,QAAU,IAAI,OAAO,IAAIa,EAAS,KAAK,EAAE,CAAC,IAAK,GAAG,EAC3DZ,EAAO,QAAUgB,GAAsB,EACvCf,EAAW,QAAUgB,GAAuB,EAC5Cf,EAAU,QAAUgB,GAAsB,EAC1Cf,EAAS,QAAUgB,GAAqB,EACxCf,EAAQ,QAAUgB,GAAoB,EACtCf,EAAQ,QAAUgB,GAAoB,EACtCf,EAAO,QAAWQ,GAAMD,EAAM,IAAIC,CAAC,CACvC,EAEMQ,EAAgBC,GACXA,EAAK,QAAQ,2BAA4B,MAAM,EAGpDJ,GAAuB,IAAM,CAjE3C,IAAAV,EAAAC,EAkEY,IAAMc,EAAY,IAAI,KAAK,aAAapC,EAAM,OAAQqC,GAAAC,GAAA,GAAKlB,EAAW,GAAhB,CAAmB,YAAa,EAAM,EAAC,EAE7F,OAAO,IAAI,OACP,IAAIgB,EACC,OAAO,GAAG,EACV,SAAQf,EAAAP,EAAU,UAAV,KAAAO,EAAqB,GAAI,EAAE,EACnC,KAAK,EACL,SAAQC,EAAAX,EAAS,UAAT,KAAAW,EAAoB,GAAI,EAAE,CAAC,IACxC,GACJ,CACJ,EAEMM,GAAwB,IAAM,CA9E5C,IAAAP,EA+EY,IAAMe,EAAY,IAAI,KAAK,aAAapC,EAAM,OAAQ,CAAE,YAAa,EAAK,CAAC,EAE3E,OAAAO,EAAU,QAAU6B,EACf,OAAO,GAAO,EACd,KAAK,EACL,SAAQf,EAAAV,EAAS,UAAT,KAAAU,EAAoB,GAAI,EAAE,EAClC,OAAO,CAAC,EAEN,IAAI,OAAO,IAAId,EAAU,OAAO,IAAK,GAAG,CACnD,EAEMsB,GAAyB,IAAM,CA1F7C,IAAAR,EA2FY,IAAMe,EAAY,IAAI,KAAK,aAAapC,EAAM,OAAQ,CAAE,YAAa,EAAM,CAAC,EAE5E,OAAO,IAAI,OACP,IAAIoC,EACC,OAAO,EAAE,EACT,KAAK,EACL,SAAQf,EAAAV,EAAS,UAAT,KAAAU,EAAoB,GAAI,EAAE,CAAC,IACxC,GACJ,CACJ,EAEMS,GAAwB,IAAM,CAtG5C,IAAAT,EAAAC,EAuGY,GAAItB,EAAM,SAAU,CAChB,IAAMoC,EAAY,IAAI,KAAK,aAAapC,EAAM,OAAQ,CAAE,MAAO,WAAY,SAAUA,EAAM,SAAU,gBAAiBA,EAAM,gBAAiB,sBAAuB,EAAG,sBAAuB,EAAG,aAAcA,EAAM,YAAa,CAAC,EAEnO,OAAO,IAAI,OACP,IAAIoC,EACC,OAAO,CAAC,EACR,QAAQ,MAAO,EAAE,EACjB,SAAQf,EAAAV,EAAS,UAAT,KAAAU,EAAoB,GAAI,EAAE,EAClC,SAAQC,EAAAV,EAAO,UAAP,KAAAU,EAAkB,GAAI,EAAE,CAAC,IACtC,GACJ,CACJ,CAEA,OAAO,IAAI,OAAO,KAAM,GAAG,CAC/B,EAEMW,GAAsB,IAAM,CAC9B,GAAIjC,EAAM,OACNiB,EAAQ,QAAU,IAAI,OAAOiB,EAAalC,EAAM,MAAM,EAAG,GAAG,MACzD,CAGH,IAAMuC,EAFY,IAAI,KAAK,aAAavC,EAAM,OAAQ,CAAE,MAAOA,EAAM,KAAM,SAAUA,EAAM,SAAU,gBAAiBA,EAAM,eAAgB,CAAC,EAEjH,OAAO,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAElDiB,EAAQ,QAAU,IAAI,OAAOiB,EAAaK,CAAS,EAAG,GAAG,CAC7D,CAEA,OAAOtB,EAAQ,OACnB,EAEMe,GAAsB,IAAM,CAC9B,GAAIhC,EAAM,OACNgB,EAAQ,QAAU,IAAI,OAAOkB,EAAalC,EAAM,MAAM,EAAG,GAAG,MACzD,CAGH,IAAMwC,EAFY,IAAI,KAAK,aAAaxC,EAAM,OAAQ,CAAE,MAAOA,EAAM,KAAM,SAAUA,EAAM,SAAU,gBAAiBA,EAAM,gBAAiB,sBAAuB,EAAG,sBAAuB,EAAG,aAAcA,EAAM,YAAa,CAAC,EAEvM,OAAO,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAElDgB,EAAQ,QAAU,IAAI,OAAOkB,EAAaM,CAAS,EAAG,GAAG,CAC7D,CAEA,OAAOxB,EAAQ,OACnB,EAEMyB,EAAeC,GAA8C,CAC/D,GAAIA,GAAS,KAAM,CACf,GAAI,OAAOA,GAAU,UAAYA,IAAU,IAEvC,OAAOA,EAGX,GAAI1C,EAAM,OAAQ,CACd,IAAMoC,EAAY,IAAI,KAAK,aAAapC,EAAM,OAAQoB,EAAW,CAAC,EAC5DuB,EAAe,OAAOD,GAAU,SAAW,OAAOA,CAAK,EAAIA,EAC7DE,EAAiBR,EAAU,OAAOO,CAAY,EAElD,OAAI3C,EAAM,SACN4C,EAAiB5C,EAAM,OAAS4C,GAGhC5C,EAAM,SACN4C,EAAiBA,EAAiB5C,EAAM,QAGrC4C,CACX,CAEA,OAAOF,EAAM,SAAS,CAC1B,CAEA,MAAO,EACX,EAEMG,EAAcV,GAAiB,CAhL7C,IAAAd,EAiLY,IAAIyB,EAAYX,EACX,QAAQnB,EAAQ,SAAW,GAAI,EAAE,EACjC,QAAQC,EAAQ,SAAW,GAAI,EAAE,EACjC,KAAK,EACL,QAAQ,MAAO,EAAE,EACjB,QAAQH,EAAU,SAAW,GAAI,EAAE,EAExC,GAAIC,EAAS,SAAWF,EAAW,SAAWF,EAAS,QAAS,CAC5D,IAAMoC,EAAa,IAAI,OACnB,IAAI,CAAC,GAAG,IAAI,KAAK,aAAa/C,EAAM,OAAQ,CAAE,YAAa,EAAM,CAAC,EAAE,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,aAAaA,EAAM,MAAM,EAAE,OAAO,GAAG,EAAE,QAAQ,SAAU,EAAE,CAAC,GAAG,IAAI,KAAK,aAAaA,EAAM,MAAM,EAClN,OAAO,EAAE,EACT,QAAQ,SAAU,EAAE,CAAC,IAC1B,GACJ,EAEA8C,IAAYzB,EAAAyB,EAAU,MAAMC,CAAU,IAA1B,YAAA1B,EAA6B,KAAK,MAAO,EACzD,CAsBA,GApBIT,EAAO,UACPkC,EAAYA,EAAU,QAAQlC,EAAO,QAAS,EAAE,GAGhDC,EAAW,UACXiC,EAAYA,EAAU,QAAQjC,EAAW,QAAS,GAAG,GAGrDE,EAAS,UACT+B,EAAYA,EAAU,QAAQ/B,EAAS,QAAS,GAAG,GAGnDJ,EAAS,SAAWO,EAAO,UAC3B4B,EAAYA,EAAU,QAAQnC,EAAS,QAAUe,GAAM,CACnD,IAAMsB,EAAM9B,EAAO,QAAUA,EAAO,QAAQQ,CAAC,EAAI,OAEjD,OAAOsB,IAAQ,OAAYA,EAAI,SAAS,EAAI,EAChD,CAAC,GAGDF,EAAW,CACX,GAAIA,IAAc,IAAK,OAAOA,EAE9B,IAAMG,EAAc,CAACH,EAErB,OAAO,MAAMG,CAAW,EAAI,KAAOA,CACvC,CAEA,OAAO,IACX,EAEMC,EAAkB,IAA+B,CACnD,IAAMC,EAAoBC,GAA8L,CAnOpO,IAAA/B,EAAAC,EAAA+B,EAAAC,EAoOgB,OAAKF,EAED,YAAaA,GAAOA,EAAI,UAAY,QAC7BA,EAEH,aAAcA,KAAOC,GAAA/B,GAAAD,EAAA+B,EAAI,WAAJ,YAAA/B,EAAc,UAAd,YAAAC,EAAuB,aAAvB,MAAA+B,EAAmC,SACjDD,EAAI,SAAS,QAAQ,WAAW,QAGvC,eAAgBA,KAAOE,EAAAF,EAAI,aAAJ,MAAAE,EAAgB,SAChCF,EAAI,WAAW,QAIvB,KAdU,IAerB,EAEIG,EAAY,KAEZvD,EAAM,SACNuD,EAAY,YAAavD,EAAM,OAASA,EAAM,OAAO,QAAUA,EAAM,QAGzE,IAAMwD,EAAWD,GAAapD,EAAS,QAEvC,OAAOgD,EAAiBK,CAAQ,CACpC,EAEMC,GAAmB,CAACC,EAAcC,IAAsB,CAC1D,IAAMC,EAAUF,EAAK,SAAS,EACxBG,EAAUF,EAAU,SAAS,EAE7BG,EAAoBF,EAAQ,SAAS,GAAG,EAAIA,EAAQ,MAAM,GAAG,EAAE,CAAC,EAAE,OAAS,EAC3EG,EAAoBF,EAAQ,SAAS,GAAG,EAAIA,EAAQ,MAAM,GAAG,EAAE,CAAC,EAAE,OAAS,EAE3EG,EAAmB,KAAK,IAAIF,EAAmBC,CAAiB,EAChEE,EAAY,KAAK,IAAI,GAAID,CAAgB,EAE/C,OAAO,KAAK,OAAON,EAAOC,GAAaM,CAAS,EAAIA,CACxD,EAEMC,EAAS,CAACC,EAAkIC,EAA8BC,IAAgB,CAC5L,GAAIrE,EAAM,SACN,OAGJ,IAAM2B,EAAIyC,GAAY,IAEtBE,EAAW,EACXlE,EAAM,QAAU,WAAW,IAAM,CAC7B8D,EAAOC,EAAO,GAAIE,CAAG,CACzB,EAAG1C,CAAC,EAEJ4C,EAAKJ,EAAOE,CAAG,CACnB,EAEME,EAAO,CAACJ,EAAkIE,IAAgB,CA5RxK,IAAAhD,EA6RY,IAAMmD,EAAUtB,EAAgB,EAEhC,GAAIsB,EAAS,CACT,IAAMC,IAAQpD,EAAArB,EAAM,OAAN,KAAAqB,EAAc,GAAKgD,EAC3BK,EAAe7B,EAAW2B,EAAQ,KAAK,GAAK,EAC5CG,EAAWC,EAAcnB,GAAiBiB,EAAwBD,CAAI,CAAC,EAE7EI,GAAYF,EAAoB,KAAM,OAAQ,OAAOD,CAAY,CAAC,EAClEI,EAAYX,EAAOQ,CAAwC,EAC3DI,GAAcZ,EAAO,OAAOO,CAAY,EAAGC,CAAkB,CACjE,CACJ,EAEMhB,GAAY,CAACQ,EAA2HE,IAAgB,CA1StK,IAAAhD,EA2SY,GAAI,CAACrB,EAAM,SAAU,CACjB,IAAMwE,EAAUtB,EAAgB,EAE5BsB,GACAA,EAAQ,MAAM,EAGlBN,EAAOC,EAAO,QAAW9C,EAAAgD,GAAA,KAAAA,EAAOrE,EAAM,OAAb,KAAAqB,EAAqB,CAAC,EAC/C8C,EAAM,eAAe,CACzB,CACJ,EAEMa,GAAY,CAACb,EAA2HE,IAAgB,CAvTtK,IAAAhD,EAwTY,GAAI,CAACrB,EAAM,SAAU,CACjB,IAAMwE,EAAUtB,EAAgB,EAE5BsB,GACAA,EAAQ,MAAM,EAGlBN,EAAOC,EAAO,OAAWE,GAAA,KAAAA,IAAQhD,EAAArB,EAAM,OAAN,KAAAqB,EAAc,GAAK,EAAE,EACtD8C,EAAM,eAAe,CACzB,CACJ,EAEMc,GAAW,IAAM,CACdjF,EAAM,UACPsE,EAAW,CAEnB,EAEMY,GAAWf,GAA+C,CA1UxE,IAAA9C,EA2UgBrB,EAAM,UAAYA,EAAM,WAIxBU,EAAc,UACbyD,EAAM,OAA4B,OAAQ9C,EAAAhB,EAAU,UAAV,KAAAgB,EAAqB,IAGpEX,EAAc,QAAU,GAC5B,EAEMyE,GAAkBhB,GAAiD,CAtVjF,IAAA9C,EAAAC,EAAA+B,EAAAC,EAuVY,GAAItD,EAAM,SACN,OAGJ,IAAMoF,EAAejB,EAAM,OAE3B,GAAIA,EAAM,QAAUA,EAAM,SAAWA,EAAM,QAAS,CAChDzD,EAAc,QAAU,GACxBL,EAAU,QAAU+E,EAAa,MAEjC,MACJ,CAEA/E,EAAU,QAAU+E,EAAa,MAEjC,IAAIC,GAAiBhE,EAAA+D,EAAa,iBAAb,KAAA/D,EAA+B,EAC9CiE,GAAehE,EAAA8D,EAAa,eAAb,KAAA9D,EAA6B,EAC5CiE,EAAiBD,EAAeD,EAChCG,EAAaJ,EAAa,MAC5BK,EAAc,KAGlB,OAFatB,EAAM,MAAQA,EAAM,IAEnB,CACV,IAAK,UACDI,EAAKJ,EAAO,CAAC,EACbA,EAAM,eAAe,EACrB,MAEJ,IAAK,YACDI,EAAKJ,EAAO,EAAE,EACdA,EAAM,eAAe,EACrB,MAEJ,IAAK,YACD,GAAIoB,EAAiB,EAAG,CACpB,IAAMG,EAAiBC,EAAcH,EAAW,OAAOH,CAAc,CAAC,EAAIA,EAAiB,EAAIA,EAAiB,EAE/GlB,EAAM,OAA4B,kBAAkBuB,EAAgBA,CAAc,CACvF,MAAYC,EAAcH,EAAW,OAAOH,EAAiB,CAAC,CAAC,GAC3DlB,EAAM,eAAe,EAGzB,MAEJ,IAAK,aACD,GAAIoB,EAAiB,EAAG,CACpB,IAAMG,EAAiBJ,EAAe,EAErCnB,EAAM,OAA4B,kBAAkBuB,EAAgBA,CAAc,CACvF,MAAYC,EAAcH,EAAW,OAAOH,CAAc,CAAC,GACvDlB,EAAM,eAAe,EAGzB,MAEJ,IAAK,MACL,IAAK,QACL,IAAK,cACDsB,EAAcb,EAAc/B,EAAW2C,CAAU,CAAC,EACjDrB,EAAM,OAA4B,MAAQ1B,EAAYgD,CAAW,EACjEtB,EAAM,OAA4B,aAAa,gBAAiBsB,GAAe,KAAO,OAAOA,CAAW,EAAI,EAAE,EAC/GX,EAAYX,EAAOsB,CAAW,EAC9B,MAEJ,IAAK,YAAa,CAGd,GAFAtB,EAAM,eAAe,EAEjBkB,IAAmBC,EAAc,CAC7BD,GAAkBG,EAAW,QAAU/E,EAAW,UAAY,OAC9D4E,EAAiBG,EAAW,OAAS/E,EAAW,QAAQ,OACvD0D,EAAM,OAA4B,kBAAkBkB,EAAgBA,CAAc,GAGvF,IAAMO,EAAaJ,EAAW,OAAOH,EAAiB,CAAC,EACjD,CAAE,iBAAAQ,EAAkB,8BAAAC,CAA8B,EAAIC,GAAsBP,CAAU,EAE5F,GAAIG,EAAcC,CAAU,EAAG,CAC3B,IAAMI,EAAgBC,GAAiBT,CAAU,EAEjD,GAAI5E,EAAO,SAAWA,EAAO,QAAQ,KAAKgF,CAAU,EAChDhF,EAAO,QAAQ,UAAY,EAE3B6E,EAAcD,EAAW,MAAM,EAAGH,EAAiB,CAAC,EAAIG,EAAW,MAAMH,EAAiB,CAAC,UACpFtE,EAAS,SAAWA,EAAS,QAAQ,KAAK6E,CAAU,EACvD7E,EAAS,UACTA,EAAS,QAAQ,UAAY,GAG7BiF,EACC7B,EAAM,OAA4B,kBAAkBkB,EAAiB,EAAGA,EAAiB,CAAC,EAE3FI,EAAcD,EAAW,MAAM,EAAGH,EAAiB,CAAC,EAAIG,EAAW,MAAMH,CAAc,UAEpFQ,EAAmB,GAAKR,EAAiBQ,EAAkB,CAClE,IAAMK,EAAeC,GAAc,IAAMnG,EAAM,mBAAqB,GAAKgG,EAAgB,GAAK,IAE9FP,EAAcD,EAAW,MAAM,EAAGH,EAAiB,CAAC,EAAIa,EAAeV,EAAW,MAAMH,CAAc,CAC1G,SAAWS,IAAkC,EAAG,CAC5CL,EAAcD,EAAW,MAAM,EAAGH,EAAiB,CAAC,EAAI,IAAMG,EAAW,MAAMH,CAAc,EAC7F,IAAMe,EAASvD,EAAW4C,CAAW,EAErCA,EAAc,OAAOW,GAAW,UAAYA,EAAS,EAAIX,EAAc,EAC3E,MACIA,EAAcD,EAAW,MAAM,EAAGH,EAAiB,CAAC,EAAIG,EAAW,MAAMH,CAAc,CAE/F,CAEAgB,EAAYlC,EAAOsB,EAAuB,KAAM,eAAe,CACnE,MACIA,EAAca,GAAYd,EAAYH,EAAgBC,CAAY,EAClEe,EAAYlC,EAAOsB,EAAa,KAAM,cAAc,EAGxD,KACJ,CAEA,IAAK,SAGD,GAFAtB,EAAM,eAAe,EAEjBkB,IAAmBC,EAAc,CACjC,IAAMM,EAAaJ,EAAW,OAAOH,CAAc,EAC7C,CAAE,iBAAAQ,EAAkB,8BAAAC,CAA8B,EAAIC,GAAsBP,CAAU,EAE5F,GAAIG,EAAcC,CAAU,EAAG,CAC3B,IAAMI,EAAgBC,GAAiBT,CAAU,EAEjD,GAAI5E,EAAO,SAAWA,EAAO,QAAQ,KAAKgF,CAAU,EAChDhF,EAAO,QAAQ,UAAY,EAC3B6E,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAIG,EAAW,MAAMH,EAAiB,CAAC,UAChFtE,EAAS,SAAWA,EAAS,QAAQ,KAAK6E,CAAU,EAC3D7E,EAAS,QAAQ,UAAY,EAEzBiF,EACC7B,EAAM,OAA4B,kBAAkBkB,EAAiB,EAAGA,EAAiB,CAAC,EAE3FI,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAIG,EAAW,MAAMH,EAAiB,CAAC,UAEpFQ,EAAmB,GAAKR,EAAiBQ,EAAkB,CAClE,IAAMK,EAAeC,GAAc,IAAMnG,EAAM,mBAAqB,GAAKgG,EAAgB,GAAK,IAE9FP,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAIa,EAAeV,EAAW,MAAMH,EAAiB,CAAC,CAC1G,SAAWS,IAAkC,EAAG,CAC5CL,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAI,IAAMG,EAAW,MAAMH,EAAiB,CAAC,EAC7F,IAAMe,EAASvD,EAAW4C,CAAW,EAErCA,EAAc,OAAOW,GAAW,UAAYA,EAAS,EAAIX,EAAc,EAC3E,MACIA,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAIG,EAAW,MAAMH,EAAiB,CAAC,CAE/F,CAEAgB,EAAYlC,EAAOsB,EAAuB,KAAM,oBAAoB,CACxE,MACIA,EAAca,GAAYd,EAAYH,EAAgBC,CAAY,EAClEe,EAAYlC,EAAOsB,EAAa,KAAM,cAAc,EAGxD,MAEJ,IAAK,OACDtB,EAAM,eAAe,EAEjBoC,GAAWvG,EAAM,GAAG,GACpB8E,EAAYX,GAAOd,EAAArD,EAAM,MAAN,KAAAqD,EAAa,CAAC,EAGrC,MAEJ,IAAK,MACDc,EAAM,eAAe,EAEjBoC,GAAWvG,EAAM,GAAG,GACpB8E,EAAYX,GAAOb,EAAAtD,EAAM,MAAN,KAAAsD,EAAa,GAAG,EAGvC,MAEJ,QACI,KACR,CACJ,EAEMkD,GAAmBrC,GAAiD,CACtE,GAAInE,EAAM,SACN,OAGJ,IAAMyG,EAAOtC,EAAM,IACbuC,EAAgBC,GAAgBF,CAAI,EACpCG,EAAcC,GAAcJ,CAAI,EAElCtC,EAAM,OAAS,SACfA,EAAM,eAAe,GAGpB,OAAOsC,CAAI,GAAK,GAAK,OAAOA,CAAI,GAAK,GAAMG,GAAeF,IAC3DI,GAAO3C,EAAOsC,EAAM,CAAE,cAAAC,EAAe,YAAAE,CAAY,CAAC,CAE1D,EAEMG,GAAW5C,GAAkD,CA/hB3E,IAAA9C,EAgiBY,GAAIrB,EAAM,SACN,OAGJmE,EAAM,eAAe,EACrB,IAAM6C,GAAQ3F,EAAA8C,EAAM,eAAkB,OAAqD,gBAA7E,YAAA9C,EAA6F,QAAQ,QAEnH,GAAI2F,EAAM,CACN,IAAMC,EAAepE,EAAWmE,CAAI,EAEhCC,GAAgB,MAChBH,GAAO3C,EAAO8C,EAAa,SAAS,CAAC,CAE7C,CACJ,EAEMC,GAAiB,IACZlH,EAAM,MAAQ,QAAaA,EAAM,MAAQ,MAAQA,EAAM,IAAM,EAGlE6G,GAAiBJ,GACd5F,EAAW,SAAWA,EAAW,QAAQ,KAAK4F,CAAI,GAAMA,IAAS,KAC9D5F,EAAW,UACXA,EAAW,QAAQ,UAAY,GAG5B,IAGJ,GAGL8F,GAAmBF,GAAiB,CAhkBlD,IAAApF,EAikBY,OAAKA,EAAArB,EAAM,SAAN,MAAAqB,EAAc,SAAS,OAAS,CAAC,IAAK,GAAG,EAAE,SAASoF,CAAI,GAAO1F,EAAS,SAAWA,EAAS,QAAQ,KAAK0F,CAAI,GAC1G1F,EAAS,UACTA,EAAS,QAAQ,UAAY,GAG1B,IAGJ,EACX,EAEMoF,GAAgB,IACXnG,EAAM,OAAS,UAGpB+F,GAAyBoB,GAAgB,CAC3C,IAAMtB,EAAmB9E,EAAS,QAAUoG,EAAI,OAAOpG,EAAS,OAAO,EAAI,GAEvEA,EAAS,UACTA,EAAS,QAAQ,UAAY,GAGjC,IAAMqG,EAAcD,EACf,QAAQlG,EAAQ,SAAW,GAAI,EAAE,EACjC,KAAK,EACL,QAAQ,MAAO,EAAE,EACjB,QAAQH,EAAU,SAAW,GAAI,EAAE,EAClCgF,EAAgC/E,EAAS,QAAUqG,EAAY,OAAOrG,EAAS,OAAO,EAAI,GAEhG,OAAIA,EAAS,UACTA,EAAS,QAAQ,UAAY,GAG1B,CAAE,iBAAA8E,EAAkB,8BAAAC,CAA8B,CAC7D,EAEMuB,GAAkBF,GAAgB,CACpC,IAAMG,EAAuBC,GAAyB,CAC9CA,IACAA,EAAM,UAAY,EAE1B,EAEM1B,EAAmB9E,EAAS,QAAUoG,EAAI,OAAOpG,EAAS,OAAO,EAAI,GAE3EuG,EAAoBvG,EAAS,OAAO,EAEpC,IAAMyG,EAAiB3G,EAAW,QAAUsG,EAAI,OAAOtG,EAAW,OAAO,EAAI,GAE7EyG,EAAoBzG,EAAW,OAAO,EAEtC,IAAM4G,EAAkBzG,EAAQ,QAAUmG,EAAI,OAAOnG,EAAQ,OAAO,EAAI,GAExEsG,EAAoBtG,EAAQ,OAAO,EAEnC,IAAM0G,EAAoB5G,EAAU,QAAUqG,EAAI,OAAOrG,EAAU,OAAO,EAAI,GAE9E,OAAAwG,EAAoBxG,EAAU,OAAO,EAE9B,CAAE,iBAAA+E,EAAkB,eAAA2B,EAAgB,gBAAAC,EAAiB,kBAAAC,CAAkB,CAClF,EAEMZ,GAAS,CAAC3C,EAAuFhC,EAAcwF,EAAO,CAAE,cAAe,GAAO,YAAa,EAAM,IAAM,CA/nBrL,IAAAtG,EAAAC,EAAA+B,EAAAC,EAgoBY,IAAMsE,EAAuB/G,EAAW,QAAUsB,EAAK,OAAOtB,EAAW,OAAO,EAAI,GAMpF,GAJIA,EAAW,UACXA,EAAW,QAAQ,UAAY,GAG/B,CAACqG,GAAe,GAAKU,IAAyB,GAC9C,OAGJ,IAAMvC,GAAkBhE,EAAA8C,EAAM,OAA4B,iBAAlC,KAAA9C,EAAoD,EACtEiE,GAAgBhE,EAAA6C,EAAM,OAA4B,eAAlC,KAAA7C,EAAkD,EAClEkE,EAAcrB,EAAM,OAA4B,MAAM,KAAK,EAC3D,CAAE,iBAAA0B,EAAkB,eAAA2B,EAAgB,gBAAAC,EAAiB,kBAAAC,CAAkB,EAAIL,GAAe7B,CAAU,EACtGC,EAEJ,GAAIkC,EAAK,YAAa,CAClB,IAAME,EAAiBL,IAAmB,IAEtCnC,IAAmB,GAAKA,IAAmBqC,EAAoB,KAC/DjC,EAAcD,GAEVqC,GAAkBvC,IAAiB,KACnCG,EAAcqC,EAAWtC,EAAYrD,EAAM,EAAGmD,CAAY,GAG9De,EAAYlC,EAAOsB,EAAatD,EAAM,QAAQ,EAEtD,SAAWwF,EAAK,cACR9B,EAAmB,GAAKR,IAAmBQ,EAC3CQ,EAAYlC,EAAOqB,EAAYrD,EAAM,QAAQ,GACtC0D,EAAmBR,GAAkBQ,EAAmBP,GAGxDO,IAAqB,IAAM7F,EAAM,qBACxCyF,EAAcqC,EAAWtC,EAAYrD,EAAMkD,EAAgBC,CAAY,EACvEe,EAAYlC,EAAOsB,EAAatD,EAAM,QAAQ,OAE/C,CACH,IAAM4F,GAAoBzE,GAAAD,EAAA/C,EAAa,UAAb,YAAA+C,EAAsB,kBAAkB,wBAAxC,KAAAC,EAAiE,EACrF0E,EAAY3C,IAAmBC,EAAe,eAAiB,SAErE,GAAIO,EAAmB,GAAKR,EAAiBQ,GACzC,GAAIR,EAAiBlD,EAAK,QAAU0D,EAAmB,IAAMkC,EAAmB,CAC5E,IAAME,EAAYP,GAAqBrC,EAAiBqC,EAAoB,EAAID,GAAmBpC,EAAiBoC,EAAkBjC,EAAW,OAEjJC,EAAcD,EAAW,MAAM,EAAGH,CAAc,EAAIlD,EAAOqD,EAAW,MAAMH,EAAiBlD,EAAK,OAAQ8F,CAAS,EAAIzC,EAAW,MAAMyC,CAAS,EACjJ5B,EAAYlC,EAAOsB,EAAatD,EAAM6F,CAAS,CACnD,OAEAvC,EAAcqC,EAAWtC,EAAYrD,EAAMkD,EAAgBC,CAAY,EACvEe,EAAYlC,EAAOsB,EAAatD,EAAM6F,CAAS,CAEvD,CACJ,EAEMF,EAAa,CAACpF,EAAeP,EAAc+F,EAAeC,IAAgB,CAxrBxF,IAAA9G,EA2rBY,IAFkBc,IAAS,IAAMA,EAAOA,EAAK,MAAM,GAAG,GAExC,SAAW,EAAG,CACxB,IAAM0D,EAAmBnD,EAAM,MAAMwF,EAAOC,CAAG,EAAE,QAAO9G,EAAAN,EAAS,UAAT,KAAAM,EAAoB,EAAE,EAE9E,OAAIN,EAAS,UACTA,EAAS,QAAQ,UAAY,GAG1B8E,EAAmB,EAAInD,EAAM,MAAM,EAAGwF,CAAK,EAAIzF,EAAYN,CAAI,EAAIO,EAAM,MAAMyF,CAAG,EAAI1F,EAAYN,CAAI,GAAKO,CACtH,KAAO,QAAIyF,EAAMD,IAAUxF,EAAM,OACtBD,EAAYN,CAAI,EAChB+F,IAAU,EACV/F,EAAOO,EAAM,MAAMyF,CAAG,EACtBA,IAAQzF,EAAM,OACdA,EAAM,MAAM,EAAGwF,CAAK,EAAI/F,EAExBO,EAAM,MAAM,EAAGwF,CAAK,EAAI/F,EAAOO,EAAM,MAAMyF,CAAG,CAE7D,EAEM7B,GAAc,CAAC5D,EAAewF,EAAeC,IAAgB,CAC/D,IAAI1C,EAEJ,OAAI0C,EAAMD,IAAUxF,EAAM,OAAQ+C,EAAc,GACvCyC,IAAU,EAAGzC,EAAc/C,EAAM,MAAMyF,CAAG,EAC1CA,IAAQzF,EAAM,OAAQ+C,EAAc/C,EAAM,MAAM,EAAGwF,CAAK,EAC5DzC,EAAc/C,EAAM,MAAM,EAAGwF,CAAK,EAAIxF,EAAM,MAAMyF,CAAG,EAEnD1C,CACX,EAEM2C,EAAa,IAAM,CAztBjC,IAAA/G,EA0tBY,IAAMmD,EAAUtB,EAAgB,EAEhC,GAAI,CAACsB,EAAS,MAAO,GAErB,IAAIgB,EAAahB,EAAQ,MACrBa,GAAiBhE,EAAAmD,EAAQ,iBAAR,KAAAnD,EAA0B,EACzCgH,EAAc7C,EAAW,OAC3B/D,EAAQ,KAGN6G,GAAgB9H,EAAW,SAAW,IAAI,OAEhDgF,EAAaA,EAAW,QAAQhF,EAAW,SAAW,GAAI,EAAE,EAC5D6E,EAAiBA,EAAiBiD,EAElC,IAAI7B,EAAOjB,EAAW,OAAOH,CAAc,EAE3C,GAAIM,EAAcc,CAAI,EAClB,OAAOpB,EAAiBiD,EAI5B,IAAI3G,EAAI0D,EAAiB,EAEzB,KAAO1D,GAAK,GAGR,GAFA8E,EAAOjB,EAAW,OAAO7D,CAAC,EAEtBgE,EAAcc,CAAI,EAAG,CACrBhF,EAAQE,EAAI2G,EACZ,KACJ,MACI3G,IAIR,GAAIF,IAAU,KACN+C,EAAQ,mBAAmBA,EAAQ,kBAAkB/C,EAAQ,EAAGA,EAAQ,CAAC,MAC1E,CAGH,IAFAE,EAAI0D,EAEG1D,EAAI0G,GAGP,GAFA5B,EAAOjB,EAAW,OAAO7D,CAAC,EAEtBgE,EAAcc,CAAI,EAAG,CACrBhF,EAAQE,EAAI2G,EACZ,KACJ,MACI3G,IAIJF,IAAU,MACN+C,EAAQ,mBAAmBA,EAAQ,kBAAkB/C,EAAOA,CAAK,CAE7E,CAEA,OAAOA,GAAS,CACpB,EAEM8G,GAAe,IAAM,CACvB,IAAM/D,EAAUtB,EAAgB,EAEhC,GAAI,CAACsB,EAAS,OAEd,IAAME,EAAeF,EAAQ,MAEzB,CAACxE,EAAM,UAAY0E,IAAiB8D,GAAa,GACjDJ,EAAW,CAEnB,EAEMzC,EAAiBc,GACfA,EAAK,SAAW,IAAO9F,EAAS,SAAWA,EAAS,QAAQ,KAAK8F,CAAI,GAAO1F,EAAS,SAAWA,EAAS,QAAQ,KAAK0F,CAAI,GAAO7F,EAAO,SAAWA,EAAO,QAAQ,KAAK6F,CAAI,GAAO5F,EAAW,SAAWA,EAAW,QAAQ,KAAK4F,CAAI,IACpOgC,GAAW,EAEJ,IAGJ,GAGLA,GAAa,IAAM,CACjB9H,EAAS,UAASA,EAAS,QAAQ,UAAY,GAE/CI,EAAS,UAASA,EAAS,QAAQ,UAAY,GAE/CH,EAAO,UAASA,EAAO,QAAQ,UAAY,GAE3CC,EAAW,UAASA,EAAW,QAAQ,UAAY,EAC3D,EAEM6H,GAAc,IAAM,CArzBlC,IAAArH,EAAAC,EAszBY,IAAMqH,GAASrH,GAAAD,EAAArB,EAAM,QAAN,KAAAqB,EAAerB,EAAM,eAArB,KAAAsB,EAAqC,KAC9C6F,EAAMyB,GAAqBD,CAAM,EAEvCE,GAAiB1B,CAAG,EAEpB,IAAMxC,EAAWC,EAAc+D,CAAM,EAEjCA,IAAW,MAAQA,IAAWhE,GAC9BG,EAAY,KAAMH,CAAwC,CAElE,EAEM0B,EAAc,CAAClC,EAA6H2E,EAAkBC,EAAiCf,IAAsB,CACvN,IAAMtD,EAAgBP,EAAM,OAA4B,MACpDQ,EAAW,KAEXmE,GAAY,OACZnE,EAAW9B,EAAWiG,CAAQ,EAC9BnE,EAAW,CAACA,GAAY,CAAC3E,EAAM,WAAa,EAAI2E,EAEhDE,GAAYF,EAAUoE,EAAkBf,EAAWc,CAAQ,EAC3D/D,GAAcZ,EAAOO,EAAcC,CAAQ,EAEnD,EAEMqE,GAAiB,CAACtE,EAAsCC,IAAqC,CAC/F,GAAIA,IAAa,MAAQD,IAAiB,KACtC,MAAO,GAGX,GAAIC,GAAY,KAAM,CAClB,IAAMsE,EAAqB,OAAOvE,GAAiB,SAAW7B,EAAW6B,CAAY,EAAIA,EAEzF,OAAOC,IAAasE,CACxB,CAEA,MAAO,EACX,EAEMlE,GAAgB,CAClBZ,EACAO,EACAC,IACC,CACG3E,EAAM,UAAYgJ,GAAetE,EAAcC,CAAQ,GACvD3E,EAAM,SAAS,CACX,cAAemE,EACf,MAAOQ,CACX,CAAC,CAET,EAEMC,EAAiBlC,GACfA,IAAU,KAAOA,GAAS,KACnB,KAGP1C,EAAM,KAAO,MAAQ,OAAOA,EAAM,KAAQ,UAAY,OAAO0C,GAAU,UAAYA,EAAQ1C,EAAM,IAC1FA,EAAM,IAGbA,EAAM,KAAO,MAAQ,OAAOA,EAAM,KAAQ,UAAY,OAAO0C,GAAU,UAAYA,EAAQ1C,EAAM,IAC1FA,EAAM,IAGV0C,EAGLkG,GAAwBlG,GACtBwG,GAAQxG,CAAK,EACN,KAGP1C,EAAM,MAAQ,QAAaA,EAAM,MAAQ,MAAQ0C,IAAU,MAAQA,EAAQ1C,EAAM,IAC1EA,EAAM,IAGbA,EAAM,MAAQ,QAAaA,EAAM,MAAQ,MAAQ0C,IAAU,MAAQA,EAAQ1C,EAAM,IAC1EA,EAAM,IAGV0C,EAGLmC,GAAc,CAACnC,EAA+BqG,EAAiCf,EAAmBc,IAAqB,CA14BrI,IAAAzH,EAAAC,EA24BYyH,EAAmBA,GAAoB,GACvC,IAAMvE,EAAUtB,EAAgB,EAEhC,GAAI,CAACsB,EAAS,OAEd,IAAMgB,EAAahB,EAAQ,MAEvBG,EAAWlC,EAAYC,CAAK,EAC1ByG,EAAgB3D,EAAW,OAMjC,GAJIb,IAAamE,IACbnE,EAAWyE,GAAazE,EAAUmE,CAAQ,GAG1CK,IAAkB,EAAG,CACrB3E,EAAQ,MAAQG,EACZH,EAAQ,mBAAmBA,EAAQ,kBAAkB,EAAG,CAAC,EAG7D,IAAMc,EADQ8C,EAAW,EACIW,EAAiB,OAE1CvE,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,CACvF,KAAO,CACH,IAAMD,GAAiBhE,EAAAmD,EAAQ,iBAAR,KAAAnD,EAA0B,EAC7CiE,GAAehE,EAAAkD,EAAQ,eAAR,KAAAlD,EAAwB,EAE3CkD,EAAQ,MAAQG,EAChB,IAAM0E,EAAY1E,EAAS,OAE3B,GAAIqD,IAAc,eAAgB,CAC9B,IAAMsB,EAAazG,GAAY2C,GAAc,IAAI,MAAM,EAAGH,CAAc,CAAC,EAEnEkE,GADgBD,IAAe,KAAOA,EAAW,SAAS,EAAI,IACpC,MAAM,EAAE,EAAE,KAAK,IAAI/I,EAAU,OAAO,IAAI,EAClEiJ,EAAS,IAAI,OAAOD,EAAW,GAAG,EAExCC,EAAO,KAAK7E,CAAQ,EAEpB,IAAM8E,EAAQV,EAAiB,MAAM,EAAE,EAAE,KAAK,IAAIxI,EAAU,OAAO,IAAI,EACjEmJ,EAAS,IAAI,OAAOD,EAAO,GAAG,EAEpCC,EAAO,KAAK/E,EAAS,MAAM6E,EAAO,SAAS,CAAC,EAE5ClE,EAAekE,EAAO,UAAYE,EAAO,UACrClF,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,CACvF,SAAW+D,IAAcF,EACjBnB,IAAc,UAAYA,IAAc,qBACpCxD,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAe,EAAGA,EAAe,CAAC,EACpF0C,IAAc,gBACjBxD,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAe,EAAGA,EAAe,CAAC,GACpF0C,IAAc,gBAAkBA,IAAc,SACjDxD,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,UAEhF0C,IAAc,qBAAsB,CAC3C,IAAM2B,EAAWnE,EAAW,OAAOF,EAAe,CAAC,EAC7CsE,EAAWpE,EAAW,OAAOF,CAAY,EACzCuE,EAAOV,EAAgBE,EACvBS,EAAclJ,EAAO,QAAUA,EAAO,QAAQ,KAAKgJ,CAAQ,EAAI,GAEjEE,GAAeD,IAAS,EACxBvE,GAAgB,EACT,CAACwE,GAAenE,EAAcgE,CAAQ,IAC7CrE,GAAgB,GAAKuE,EAAO,GAG5BjJ,EAAO,UACPA,EAAO,QAAQ,UAAY,GAG3B4D,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,CACvF,SAAWE,IAAe,KAAOwC,IAAc,SAAU,CACjDxD,EAAQ,mBAAmBA,EAAQ,kBAAkB,EAAG,CAAC,EAG7D,IAAMc,EADQ8C,EAAW,EACIW,EAAiB,OAAS,EAEnDvE,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,CACvF,MACIA,EAAeA,GAAgB+D,EAAYF,GACvC3E,EAAQ,mBAAmBA,EAAQ,kBAAkBc,EAAcA,CAAY,CAE3F,CAEAd,EAAQ,aAAa,gBAAiB,OAAO9B,CAAK,CAAC,CACvD,EAEMqH,GAAiBpF,GAA2C,CAh+B1E,IAAAtD,EAi+BY,MAAO,CAACsD,GAAY,CAAC3E,EAAM,YAAcqB,EAAArB,EAAM,MAAN,KAAAqB,EAAa,EAAKsD,CAC/D,EAEMkE,GAAoBlE,GAA2C,CACjEA,EAAWoF,GAAcpF,CAAQ,EAEjC,IAAMH,EAAUtB,EAAgB,EAEhC,GAAI,CAACsB,EAAS,OAEd,IAAM9B,EAAQ8B,EAAQ,MAChBwF,EAAkBvH,EAAYkC,CAAQ,EAExCjC,IAAUsH,IACVxF,EAAQ,MAAQwF,EAChBxF,EAAQ,aAAa,gBAAiB,OAAOG,CAAQ,CAAC,EAE9D,EAEMyE,GAAe,CAACa,EAAcC,IAAiB,CACjD,GAAID,GAAQC,EAAM,CACd,IAAMC,EAAepJ,EAAS,QACxB8E,EAAmBsE,EAAeD,EAAK,OAAOC,CAAY,EAAI,GAMpE,GAJIA,IACAA,EAAa,UAAY,GAGzB1J,EAAW,QACX,OAAOoF,IAAqB,GAAKoE,EAAK,QAAQxJ,EAAW,QAAS,EAAE,EAAE,MAAM0J,GAAA,KAAAA,EAAgB,EAAE,EAAE,CAAC,EAAID,EAAK,QAAQzJ,EAAW,QAAS,EAAE,EAAE,MAAMoF,CAAgB,EAAIpF,EAAW,QAAUwJ,EACtL,GAAIzJ,EAAW,QAClB,OAAOqF,IAAqB,GAAKoE,EAAK,MAAME,GAAA,KAAAA,EAAgB,EAAE,EAAE,CAAC,EAAID,EAAK,MAAMrE,CAAgB,EAAIoE,CAE5G,CAEA,OAAOA,CACX,EAEMhE,GAAoBvD,GAAkB,CAvgCpD,IAAArB,EAAAC,EAAA+B,EAwgCY,GAAIX,EAAO,CACP,IAAM0H,EAAa1H,EAAM,OAAMrB,EAAAN,EAAS,UAAT,KAAAM,EAAoB,EAAE,EAErD,GAAI+I,EAAW,SAAW,EACtB,OAAOA,EAAW,CAAC,EACd,SAAQ9I,EAAAN,EAAQ,UAAR,KAAAM,EAAmB,GAAI,EAAE,EACjC,KAAK,EACL,QAAQ,MAAO,EAAE,EACjB,SAAQ+B,EAAAvC,EAAU,UAAV,KAAAuC,EAAqB,GAAI,EAAE,EAAE,MAElD,CAEA,MAAO,EACX,EAEMyB,EAAc,CAChBX,EACAzB,IACC,CACD,GAAI1C,EAAM,cAAe,CACrB,IAAIqK,EAEAlG,EACAkG,EAAgBlG,EAKhBkG,EAAgB,CAEZ,OAJYnH,EAAgB,CAKhC,EAGJlD,EAAM,cAAc,CAChB,cAAAqK,EACA,MAAO3H,CACX,CAAC,CACL,CACJ,EAEM4H,GAAgBnG,GAA8C,CAChEjE,EAAW,EAAI,EAEf,IAAMsE,EAAUtB,EAAgB,EAE5B,CAAClD,EAAM,UAAY,CAACA,EAAM,WAAYwE,GAAA,YAAAA,EAAS,SAAUgE,GAAa,GAAKxI,EAAM,kBACjFmE,EAAM,OAAO,OAAO,CAE5B,EAEMoG,GAAepG,GAA8C,CAC/DjE,EAAW,EAAK,EAEhB,IAAMsK,EAAQrG,EAAM,OACdQ,EAAWC,EAAc/B,EAAW2H,EAAM,KAAK,CAAC,EAEtDA,EAAM,MAAQ/H,EAAYkC,CAAQ,EAClC6F,EAAM,aAAa,gBAAiB,OAAO7F,CAAQ,CAAC,EACpDG,EAAYX,EAAOQ,CAAQ,EAEvB,CAAC3E,EAAM,UAAY,CAACA,EAAM,UAAYA,EAAM,kBAC5CyK,GAAe,CAEvB,EAEMnG,EAAa,IAAM,CACjBlE,EAAM,SACN,cAAcA,EAAM,OAAO,CAEnC,EAEMsK,GAAa,IAAM,CAhlCjC,IAAArJ,EAAAC,EAilCY,OAAOtB,EAAM,MAAQ,UAAcsB,GAAAD,EAAArB,EAAM,QAAN,KAAAqB,EAAerB,EAAM,eAArB,KAAAsB,EAAqC,IAAMtB,EAAM,GACxF,EAEM2K,GAAa,IAAM,CAplCjC,IAAAtJ,EAAAC,EAqlCY,OAAOtB,EAAM,MAAQ,UAAcsB,GAAAD,EAAArB,EAAM,QAAN,KAAAqB,EAAerB,EAAM,eAArB,KAAAsB,EAAqC,IAAMtB,EAAM,GACxF,EAEA,OAAA4K,GAAiB,IAAM,CACnBtG,EAAW,CACf,CAAC,EAEDuG,GAAe,IAAM,CA5lC7B,IAAAxJ,EAAAC,EA6lCYC,GAAgB,EAEhB,IAAMuJ,GAAexJ,GAAAD,EAAArB,EAAM,QAAN,KAAAqB,EAAerB,EAAM,eAArB,KAAAsB,EAAqC,KACpDqD,EAAWC,EAAckG,CAA6B,EAG5DjC,GAFsB,OAAOlE,GAAa,SAAWA,EAAW,IAElC,EAE1BmG,IAAiB,MAAQA,IAAiBnG,GAC1CG,EAAY,KAAMH,CAAkB,CAE5C,CAAC,EAEDoG,EAAgB,IAAM,CAClBxJ,GAAgB,EAChBmH,GAAY,CAChB,EAAG,CAAC1I,EAAM,OAAQA,EAAM,cAAeA,EAAM,KAAMA,EAAM,SAAUA,EAAM,gBAAiBA,EAAM,YAAaA,EAAM,kBAAmBA,EAAM,kBAAmBA,EAAM,OAAQA,EAAM,MAAM,CAAC,EAE1L+K,EAAgB,IAAM,CAClBrC,GAAY,CAChB,EAAG,CAAC1I,EAAM,MAAOA,EAAM,YAAY,CAAC,EAEpC+K,EAAgB,IAAM,CACd/K,EAAM,UACNsE,EAAW,CAEnB,EAAG,CAACtE,EAAM,QAAQ,CAAC,EAEZ,CACH,MAAAmB,GACA,SAAAhB,EAEA,SAAU+E,GACV,QAAAA,GACA,eAAAC,GACA,gBAAAqB,GACA,aAAA+B,GACA,QAAAxB,GACA,aAAAuD,GACA,YAAAC,GACA,cAAevK,EAAM,cACrB,WAAA0K,GACA,WAAAC,GACA,UAAAhH,GACA,UAAAqB,GACA,SAAAC,EACJ,CACJ,CACJ,CAAC","names":["withHeadless","useMountEffect","useUnmountEffect","useUpdateEffect","clearSelection","getSelection","isEmpty","isNotEmpty","React","defaultProps","useInputNumber","withHeadless","defaultProps","props","focused","setFocused","inputRef","timer","lastValue","numberFormat","groupChar","prefixChar","suffixChar","isSpecialChar","_numeral","_group","_minusSign","_currency","_decimal","_suffix","_prefix","_index","state","getOptions","_a","_b","constructParser","numerals","index","d","i","getGroupingExpression","getMinusSignExpression","getCurrencyExpression","getDecimalExpression","getSuffixExpression","getPrefixExpression","escapeRegExp","text","formatter","__spreadProps","__spreadValues","prefixStr","suffixStr","formatValue","value","numericValue","formattedValue","parseValue","cleanText","validChars","res","parsedValue","getInputElement","extractHTMLInput","ref","_c","_d","targetRef","refToUse","addWithPrecision","base","increment","baseStr","stepStr","baseDecimalPlaces","stepDecimalPlaces","maxDecimalPlaces","precision","repeat","event","interval","dir","clearTimer","spin","inputEl","step","currentValue","newValue","validateValue","updateInput","updateModel","handleOnInput","decrement","stopSpin","onInput","onInputKeyDown","inputElement","selectionStart","selectionEnd","selectionRange","inputValue","newValueStr","cursorPosition","isNumeralChar","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","getDecimalCharIndexes","decimalLength","getDecimalLength","insertedText","isDecimalMode","parsed","updateValue","deleteRange","isNotEmpty","onInputKeyPress","char","isDecimalSign","isDecimalSignFn","isMinusSign","isMinusSignFn","insert","onPaste","data","filteredData","allowMinusSign","val","filteredVal","getCharIndexes","resetRegexLastIndex","regex","minusCharIndex","suffixCharIndex","currencyCharIndex","sign","minusCharIndexOnText","isNewMinusSign","insertText","maxFractionDigits","operation","charIndex","start","end","initCursor","valueLength","prefixLength","onInputClick","getSelection","resetRegex","changeValue","_value","validateValueByLimit","updateInputValue","valueStr","insertedValueStr","isValueChanged","parsedCurrentValue","isEmpty","currentLength","concatValues","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupChar","evaluateEmpty","_formattedValue","val1","val2","decimalRegex","valueSplit","originalEvent","onInputFocus","onInputBlur","input","clearSelection","maxBoundry","minBoundry","useUnmountEffect","useMountEffect","initialValue","useUpdateEffect"]}
1
+ {"version":3,"sources":["../../src/inputnumber/useInputNumber.ts","../../src/inputnumber/useInputNumber.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState, useMountEffect, useNumberFormatter, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { UseInputNumberProps } from '@primereact/types/headless/inputnumber';\nimport { clearSelection, getSelection, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputNumber.props';\n\nexport const useInputNumber = withHeadless({\n name: 'useInputNumber',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const formatter = useNumberFormatter({\n value: valueState,\n locale: props.locale,\n localeMatcher: props.localeMatcher,\n mode: props.mode,\n currency: props.currency,\n currencyDisplay: props.currencyDisplay,\n useGrouping: props.useGrouping,\n minFractionDigits: props.minFractionDigits,\n maxFractionDigits: props.maxFractionDigits,\n roundingMode: props.roundingMode,\n prefix: props.prefix,\n suffix: props.suffix,\n min: props.min,\n format: props.format\n });\n\n const {\n formattedValue,\n formatValue,\n parseValue,\n addWithPrecision,\n isDecimalMode,\n isNumeralChar,\n isMinusSign: isMinusSignFn,\n isDecimalSign: isDecimalSignFn,\n allowMinusSign,\n getDecimalCharIndexes,\n getCharIndexes,\n getDecimalLength,\n concatValues,\n groupChar,\n prefixChar,\n suffixChar,\n resolvedOptions\n } = formatter;\n\n const timer = React.useRef<NodeJS.Timeout | null>(null);\n const lastValue = React.useRef<string | null>(null);\n const isSpecialChar = React.useRef<boolean | null>(null);\n const valueRef = React.useRef(valueState);\n\n valueRef.current = valueState;\n\n const state = {\n value: valueState,\n formattedValue\n };\n\n const spin = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n const step = (props.step ?? 1) * dir;\n\n if (event) {\n const currentValue = parseValue((event.currentTarget as HTMLInputElement).value) || 0;\n const newValue = validateValue(addWithPrecision(Number(currentValue), step));\n\n updateInput(event, newValue as number, null, 'spin', String(currentValue));\n updateModel(event, newValue as UseInputNumberProps['value']);\n handleOnInput(event, String(currentValue), newValue as number);\n } else {\n const currentValue = valueRef.current ?? 0;\n const newValue = validateValue(addWithPrecision(Number(currentValue), step));\n\n updateModel(null, newValue as UseInputNumberProps['value']);\n handleOnInput(null, String(currentValue), newValue as number);\n }\n };\n\n const repeat = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, interval: number | undefined, dir: number) => {\n if (props.readOnly) {\n return;\n }\n\n const i = interval || 500;\n\n clearTimer();\n timer.current = setTimeout(() => {\n repeat(event, 40, dir);\n }, i);\n\n spin(event, dir);\n };\n\n const increment = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n if (!props.disabled) {\n repeat(event, undefined, dir ?? props.step ?? 1);\n event?.preventDefault();\n }\n };\n\n const decrement = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n if (!props.disabled) {\n repeat(event, undefined, dir ?? (props.step ?? 1) * -1);\n event?.preventDefault();\n }\n };\n\n const stepUp = () => {\n increment(null, 1);\n };\n\n const stepDown = () => {\n decrement(null, -1);\n };\n\n const stopSpin = () => {\n if (!props.disabled) {\n clearTimer();\n }\n };\n\n const onInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (isSpecialChar.current) {\n event.currentTarget.value = lastValue.current ?? '';\n }\n\n isSpecialChar.current = false;\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const inputElement = event.currentTarget;\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n isSpecialChar.current = true;\n lastValue.current = inputElement.value;\n\n return;\n }\n\n lastValue.current = inputElement.value;\n\n let selectionStart = inputElement.selectionStart ?? 0;\n const selectionEnd = inputElement.selectionEnd ?? 0;\n const selectionRange = selectionEnd - selectionStart;\n const inputValue = inputElement.value;\n let newValueStr = null;\n const code = event.code || event.key;\n\n switch (code) {\n case 'ArrowUp':\n spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (selectionRange > 1) {\n const cursorPosition = isNumeralChar(inputValue.charAt(selectionStart)) ? selectionStart + 1 : selectionStart + 2;\n\n event.currentTarget.setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (selectionRange > 1) {\n const cursorPosition = selectionEnd - 1;\n\n event.currentTarget.setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = validateValue(parseValue(inputValue)) as UseInputNumberProps['value'];\n event.currentTarget.value = formatValue(newValueStr);\n event.currentTarget.setAttribute('aria-valuenow', newValueStr != null ? String(newValueStr) : '');\n updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n if (selectionStart >= inputValue.length && suffixChar !== null) {\n selectionStart = inputValue.length - suffixChar.length;\n event.currentTarget.setSelectionRange(selectionStart, selectionStart);\n }\n\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (groupChar && new RegExp(`[${groupChar}]`, 'g').test(deleteChar)) {\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (isDecimalSignFn(deleteChar)) {\n if (decimalLength) {\n event.currentTarget.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (groupChar && new RegExp(`[${groupChar}]`, 'g').test(deleteChar)) {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (isDecimalSignFn(deleteChar)) {\n if (decimalLength) {\n event.currentTarget.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-back-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(props.min)) {\n updateModel(event, props.min ?? 0);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(props.max)) {\n updateModel(event, props.max ?? 100);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const char = event.key;\n const isDecimalSign = isDecimalSignFn(char);\n const isMinusSign = isMinusSignFn(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n insert(event, char, { isDecimalSign, isMinusSign });\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n event.preventDefault();\n const data = (event.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('Text');\n\n if (data) {\n const filteredData = parseValue(data);\n\n if (filteredData != null) {\n insert(event, filteredData.toString());\n }\n }\n };\n\n const insert = (event: React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, text: string, sign = { isDecimalSign: false, isMinusSign: false }) => {\n const minusCharIndexOnText = text.search(/-/);\n\n if (!allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = (event.currentTarget as HTMLInputElement).selectionStart ?? 0;\n const selectionEnd = (event.currentTarget as HTMLInputElement).selectionEnd ?? 0;\n const inputValue = (event.currentTarget as HTMLInputElement).value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n const isNewMinusSign = minusCharIndex === -1;\n\n if (selectionStart === 0 || selectionStart === currencyCharIndex + 1) {\n newValueStr = inputValue;\n\n if (isNewMinusSign || selectionEnd !== 0) {\n newValueStr = insertText(inputValue, text, 0, selectionEnd);\n }\n\n updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && props.maxFractionDigits) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = resolvedOptions()?.maximumFractionDigits ?? 0;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, operation);\n }\n }\n };\n\n const insertText = (value: string, text: string, start: number, end: number) => {\n const textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(/[.,]/);\n\n return decimalCharIndex > 0 ? value.slice(0, start) + formatValue(text) + value.slice(end) : formatValue(text) || value;\n } else if (end - start === value.length) {\n return formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n };\n\n const deleteRange = (value: string, start: number, end: number) => {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n };\n\n const initCursor = (event: React.SyntheticEvent<HTMLInputElement | HTMLButtonElement>) => {\n const inputEl = event.currentTarget as HTMLInputElement;\n\n let inputValue = inputEl.value;\n let selectionStart = inputEl.selectionStart ?? 0;\n const valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n const prefixLength = (prefixChar || '').length;\n\n inputValue = inputValue.replace(prefixChar || '', '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n };\n\n const onClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (!props.readOnly && (event.currentTarget as HTMLInputElement).value !== getSelection()) {\n initCursor(event);\n }\n };\n\n const changeValue = () => {\n const _value = valueState ?? null;\n const val = validateValueByLimit(_value);\n\n updateInputValue(val);\n\n const newValue = validateValue(_value);\n\n if (_value !== null && _value !== newValue) {\n updateModel(null, newValue as UseInputNumberProps['value']);\n }\n };\n\n const updateValue = (event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, valueStr: string, insertedValueStr: string | null, operation: string) => {\n const currentValue = (event.currentTarget as HTMLInputElement).value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = parseValue(valueStr);\n newValue = !newValue && !props.allowEmpty ? 0 : newValue;\n\n updateInput(event, newValue, insertedValueStr, operation, valueStr);\n handleOnInput(event, currentValue, newValue);\n }\n };\n\n const isValueChanged = (currentValue: string | number | null, newValue: number | string | null) => {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n const parsedCurrentValue = typeof currentValue === 'string' ? parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n };\n\n const handleOnInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null,\n currentValue: string,\n newValue: number | string | null\n ) => {\n if (props.onChange && isValueChanged(currentValue, newValue)) {\n props.onChange({\n originalEvent: event,\n value: newValue as number\n });\n }\n };\n\n const validateValue = (value: number | string | null) => {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (props.min != null && typeof props.min === 'number' && typeof value === 'number' && value < props.min) {\n return props.min;\n }\n\n if (props.max != null && typeof props.max === 'number' && typeof value === 'number' && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const validateValueByLimit = (value: number | null) => {\n if (isEmpty(value)) {\n return null;\n }\n\n if (props.min !== undefined && props.min !== null && value !== null && value < props.min) {\n return props.min;\n }\n\n if (props.max !== undefined && props.max !== null && value !== null && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const updateInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>,\n value: number | string | null,\n insertedValueStr: string | null,\n operation: string,\n valueStr: string\n ) => {\n const inputEl = event.currentTarget as HTMLInputElement;\n const inputValue = inputEl.value ?? '';\n\n let newValue = formatValue(value);\n const currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n inputEl.value = newValue;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor(event);\n const selectionEnd = index + (insertedValueStr ? insertedValueStr.length : 0);\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n const selectionStart = inputEl.selectionStart ?? 0;\n let selectionEnd = inputEl.selectionEnd ?? 0;\n\n inputEl.value = newValue;\n const newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = parseValue(inputValue.slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = (insertedValueStr ?? '').split('').join(`(${groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n const prevChar = inputValue.charAt(selectionEnd - 1);\n const nextChar = inputValue.charAt(selectionEnd);\n const diff = currentLength - newLength;\n const isGroupCharacter = groupChar ? new RegExp(`[${groupChar}]`, 'g').test(nextChar) : false;\n\n if (isGroupCharacter && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupCharacter && isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor(event);\n const selectionEnd = index + (insertedValueStr ? insertedValueStr.length : 0) + 1;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n inputEl.setAttribute('aria-valuenow', String(value));\n };\n\n const evaluateEmpty = (newValue: UseInputNumberProps['value']) => {\n return !newValue && !props.allowEmpty ? (props.min ?? 0) : newValue;\n };\n\n const updateInputValue = (newValue: UseInputNumberProps['value']) => {\n const newValueEvaluated = evaluateEmpty(newValue);\n\n setValueState([\n newValueEvaluated,\n {\n value: newValueEvaluated as number\n }\n ]);\n };\n\n const updateModel = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | React.PointerEvent<HTMLButtonElement> | null,\n value: UseInputNumberProps['value']\n ) => {\n const originalEvent = event ?? null;\n\n setValueState([\n value,\n {\n originalEvent,\n value: value as number\n }\n ]);\n };\n\n const onFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (!props.disabled && !props.readOnly && event.currentTarget.value !== getSelection() && props.highlightOnFocus) {\n event.currentTarget.select();\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget as HTMLInputElement;\n const newValue = validateValue(parseValue(input.value)) as UseInputNumberProps['value'];\n\n updateModel(event, newValue);\n\n if (!props.disabled && !props.readOnly && props.highlightOnFocus) {\n clearSelection();\n }\n };\n\n const clearTimer = () => {\n if (timer.current) {\n clearInterval(timer.current);\n }\n };\n\n const maxBoundry = () => {\n return props.max !== undefined && (valueState ?? 0) >= props.max;\n };\n\n const minBoundry = () => {\n return props.min !== undefined && (valueState ?? 0) <= props.min;\n };\n\n useUnmountEffect(() => {\n clearTimer();\n });\n\n useMountEffect(() => {\n const newValue = validateValue(valueState as number | null);\n const valueForInput = typeof newValue === 'number' ? newValue : null;\n\n updateInputValue(valueForInput);\n\n if (valueState !== null && valueState !== newValue) {\n updateModel(null, newValue as number);\n }\n });\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.locale, props.localeMatcher, props.mode, props.currency, props.currencyDisplay, props.useGrouping, props.minFractionDigits, props.maxFractionDigits, props.suffix, props.prefix]);\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.value, props.defaultValue]);\n\n useUpdateEffect(() => {\n if (props.disabled) {\n clearTimer();\n }\n }, [props.disabled]);\n\n // prop getters\n const rootProps = {\n 'data-scope': 'inputnumber',\n 'data-part': 'root',\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 inputProps = {\n 'data-scope': 'inputnumber',\n 'data-part': 'input',\n role: 'spinbutton' as const,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': valueState ?? undefined,\n inputMode: (props.mode === 'decimal' && !props.minFractionDigits ? 'numeric' : 'decimal') as 'numeric' | 'decimal',\n disabled: !!props.disabled || undefined,\n readOnly: !!props.readOnly || undefined,\n onChange: onInput,\n onInput,\n onKeyDown,\n onKeyPress,\n onClick,\n onPaste,\n onFocus,\n onBlur,\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 incrementProps = {\n disabled: !!props.disabled || maxBoundry(),\n tabIndex: -1,\n onPointerDown: () => stepUp(),\n onPointerUp: () => stopSpin(),\n onPointerLeave: () => stopSpin(),\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') stepUp();\n },\n onKeyUp: () => stopSpin()\n };\n\n const decrementProps = {\n disabled: !!props.disabled || minBoundry(),\n tabIndex: -1,\n onPointerDown: () => stepDown(),\n onPointerUp: () => stopSpin(),\n onPointerLeave: () => stopSpin(),\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') stepDown();\n },\n onKeyUp: () => stopSpin()\n };\n\n return {\n state,\n // prop getters\n rootProps,\n inputProps,\n incrementProps,\n decrementProps,\n // methods\n maxBoundry,\n minBoundry,\n increment,\n decrement,\n stepUp,\n stepDown,\n stopSpin\n };\n }\n});\n","import type { UseInputNumberProps } from '@primereact/types/headless/inputnumber';\n\nexport const defaultProps: UseInputNumberProps = {\n value: undefined,\n defaultValue: undefined,\n format: true,\n locale: undefined,\n mode: 'decimal',\n prefix: undefined,\n suffix: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n useGrouping: true,\n minFractionDigits: undefined,\n maxFractionDigits: undefined,\n roundingMode: undefined,\n min: undefined,\n max: undefined,\n step: 1,\n allowEmpty: true,\n highlightOnFocus: false,\n onValueChange: undefined,\n onChange: undefined,\n invalid: undefined,\n disabled: undefined,\n readOnly: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","useMountEffect","useNumberFormatter","useUnmountEffect","useUpdateEffect","clearSelection","getSelection","isEmpty","isNotEmpty","React","defaultProps","useInputNumber","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","formatter","useNumberFormatter","formattedValue","formatValue","parseValue","addWithPrecision","isDecimalMode","isNumeralChar","isMinusSignFn","isDecimalSignFn","allowMinusSign","getDecimalCharIndexes","getCharIndexes","getDecimalLength","concatValues","groupChar","prefixChar","suffixChar","resolvedOptions","timer","lastValue","isSpecialChar","valueRef","state","spin","event","dir","_a","_b","step","currentValue","newValue","validateValue","updateInput","updateModel","handleOnInput","repeat","interval","i","clearTimer","increment","decrement","stepUp","stepDown","stopSpin","onInput","onKeyDown","_c","_d","inputElement","selectionStart","selectionEnd","selectionRange","inputValue","newValueStr","cursorPosition","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","decimalLength","insertedText","parsed","updateValue","deleteRange","isNotEmpty","onKeyPress","char","isDecimalSign","isMinusSign","insert","onPaste","data","filteredData","text","sign","minusCharIndexOnText","minusCharIndex","suffixCharIndex","currencyCharIndex","isNewMinusSign","insertText","maxFractionDigits","operation","charIndex","value","start","end","initCursor","inputEl","valueLength","index","prefixLength","onClick","getSelection","changeValue","_value","val","validateValueByLimit","updateInputValue","valueStr","insertedValueStr","isValueChanged","parsedCurrentValue","isEmpty","currentLength","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupCharacter","evaluateEmpty","newValueEvaluated","originalEvent","onFocus","onBlur","input","clearSelection","maxBoundry","minBoundry","useUnmountEffect","useMountEffect","useUpdateEffect","rootProps","__spreadValues","inputProps","incrementProps","decrementProps"]}