@servicetitan/anvil2 3.13.7 → 3.14.0

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 (404) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/{AiMark-D8dx3b1Q.js → AiMark-CWufA6pV.js} +7 -62
  3. package/dist/{AiMark-D8dx3b1Q.js.map → AiMark-CWufA6pV.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-N-Es76Om.js → Alert-RkvFtmRP.js} +2 -2
  6. package/dist/{Alert-N-Es76Om.js.map → Alert-RkvFtmRP.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{AnvilProvider-D8msiELo.js → AnvilProvider-DagOuc9c.js} +2 -3
  9. package/dist/AnvilProvider-DagOuc9c.js.map +1 -0
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/Avatar-DZxHhMTP.js.map +1 -1
  12. package/dist/{Breadcrumbs-Di0HJmcH.js → Breadcrumbs-DbOrdao2.js} +2 -2
  13. package/dist/{Breadcrumbs-Di0HJmcH.js.map → Breadcrumbs-DbOrdao2.js.map} +1 -1
  14. package/dist/Breadcrumbs.js +1 -1
  15. package/dist/Button-Dwh_Nd4l.js.map +1 -1
  16. package/dist/{Calendar-kSH8F7gx.js → Calendar-CK-AAaSG.js} +2 -2
  17. package/dist/Calendar-CK-AAaSG.js.map +1 -0
  18. package/dist/{Calendar-DV149Rqb.js → Calendar-DLnn6dJE.js} +2 -2
  19. package/dist/{Calendar-DV149Rqb.js.map → Calendar-DLnn6dJE.js.map} +1 -1
  20. package/dist/Calendar.js +2 -2
  21. package/dist/{Checkbox-CknwM231.js → Checkbox-CboZhOtU.js} +3 -3
  22. package/dist/{Checkbox-CknwM231.js.map → Checkbox-CboZhOtU.js.map} +1 -1
  23. package/dist/{Checkbox-FvMXGsgi.js → Checkbox-Cn4iNLW_.js} +2 -2
  24. package/dist/{Checkbox-FvMXGsgi.js.map → Checkbox-Cn4iNLW_.js.map} +1 -1
  25. package/dist/Checkbox.js +1 -1
  26. package/dist/{Chip-COkotNvt.js → Chip-UbrxYEqs.js} +2 -2
  27. package/dist/{Chip-COkotNvt.js.map → Chip-UbrxYEqs.js.map} +1 -1
  28. package/dist/Chip.js +1 -1
  29. package/dist/Combobox.js +1 -1
  30. package/dist/{DataTable-D0YlJ7IA.js → DataTable-COExZbOC.js} +10 -22
  31. package/dist/DataTable-COExZbOC.js.map +1 -0
  32. package/dist/{DateFieldRange-B7-z7KXC.js → DateFieldRange-CpTxlASD.js} +5 -5
  33. package/dist/{DateFieldRange-B7-z7KXC.js.map → DateFieldRange-CpTxlASD.js.map} +1 -1
  34. package/dist/DateFieldRange.js +1 -1
  35. package/dist/{DateFieldSingle-B3aY-9vO.js → DateFieldSingle-DR2kfrzh.js} +5 -5
  36. package/dist/{DateFieldSingle-B3aY-9vO.js.map → DateFieldSingle-DR2kfrzh.js.map} +1 -1
  37. package/dist/DateFieldSingle.js +1 -1
  38. package/dist/{DateFieldYearless-BYwWvHXD.js → DateFieldYearless-4mS_2Mgw.js} +5 -5
  39. package/dist/{DateFieldYearless-BYwWvHXD.js.map → DateFieldYearless-4mS_2Mgw.js.map} +1 -1
  40. package/dist/DateFieldYearless.js +1 -1
  41. package/dist/{DateFieldYearlessRange-cyDptr2S.js → DateFieldYearlessRange-C-yvKBkJ.js} +4 -4
  42. package/dist/{DateFieldYearlessRange-cyDptr2S.js.map → DateFieldYearlessRange-C-yvKBkJ.js.map} +1 -1
  43. package/dist/DateFieldYearlessRange.js +1 -1
  44. package/dist/{DaysOfTheWeek-Re26vN8g.js → DaysOfTheWeek-Bo4w8SsT.js} +2 -2
  45. package/dist/{DaysOfTheWeek-Re26vN8g.js.map → DaysOfTheWeek-Bo4w8SsT.js.map} +1 -1
  46. package/dist/DaysOfTheWeek.js +1 -1
  47. package/dist/{Dialog-BMPFoRQh.js → Dialog-Ds25dKQp.js} +4 -4
  48. package/dist/{Dialog-BMPFoRQh.js.map → Dialog-Ds25dKQp.js.map} +1 -1
  49. package/dist/Dialog.js +1 -1
  50. package/dist/{Drawer-BCw_ZHSD.js → Drawer-Da-bj_6o.js} +4 -4
  51. package/dist/{Drawer-BCw_ZHSD.js.map → Drawer-Da-bj_6o.js.map} +1 -1
  52. package/dist/Drawer.js +1 -1
  53. package/dist/DrillDown.js +1 -1
  54. package/dist/{EditCard-CTEk64eN.js → EditCard-CocV93gS.js} +2 -2
  55. package/dist/{EditCard-CTEk64eN.js.map → EditCard-CocV93gS.js.map} +1 -1
  56. package/dist/EditCard.js +1 -1
  57. package/dist/{FieldLabel-CYCk2rz-.js → FieldLabel-6aFKQfyD.js} +2 -2
  58. package/dist/FieldLabel-6aFKQfyD.js.map +1 -0
  59. package/dist/FieldLabel.js +1 -1
  60. package/dist/{FilterBar-CrIPZKvL.js → FilterBar-CZT1ryz_.js} +6 -7
  61. package/dist/FilterBar-CZT1ryz_.js.map +1 -0
  62. package/dist/FilterBar.js +1 -1
  63. package/dist/Helper-BHpOgh7k.js.map +1 -1
  64. package/dist/Icon-B5zwN7GD.js.map +1 -1
  65. package/dist/{InputMask-Bm7ZYtQy.js → InputMask-CNV0Ucli.js} +3 -3
  66. package/dist/{InputMask-Bm7ZYtQy.js.map → InputMask-CNV0Ucli.js.map} +1 -1
  67. package/dist/InputMask.js +1 -1
  68. package/dist/{ListView-Bkv1ZCSu.js → ListView-DFAWrwzi.js} +2 -2
  69. package/dist/ListView-DFAWrwzi.js.map +1 -0
  70. package/dist/ListView.js +1 -1
  71. package/dist/{Listbox-BWy_uBqm.js → Listbox-BErqErNN.js} +2 -2
  72. package/dist/Listbox-BErqErNN.js.map +1 -0
  73. package/dist/Listbox.js +1 -1
  74. package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
  75. package/dist/LocalizationProvider-BPcOU7YX.js.map +1 -1
  76. package/dist/{MenuFooter--lBF8OjJ.js → MenuFooter-fGSZYh8e.js} +2 -2
  77. package/dist/MenuFooter-fGSZYh8e.js.map +1 -0
  78. package/dist/MultiSelectField.js +1 -1
  79. package/dist/{MultiSelectFieldSync-gH-TQnq3.js → MultiSelectFieldSync-CqWUidCm.js} +8 -8
  80. package/dist/MultiSelectFieldSync-CqWUidCm.js.map +1 -0
  81. package/dist/MultiSelectMenu.js +1 -1
  82. package/dist/{MultiSelectMenuSync-QmhjWA05.js → MultiSelectMenuSync-DG3rKyQc.js} +6 -6
  83. package/dist/{MultiSelectMenuSync-QmhjWA05.js.map → MultiSelectMenuSync-DG3rKyQc.js.map} +1 -1
  84. package/dist/{NumberField-BOLMhpdk.js → NumberField-DRYYJHec.js} +3 -3
  85. package/dist/{NumberField-BOLMhpdk.js.map → NumberField-DRYYJHec.js.map} +1 -1
  86. package/dist/NumberField.js +1 -1
  87. package/dist/{Page-D4RYSd8t.js → Page-BmpojvuI.js} +8 -8
  88. package/dist/{Page-D4RYSd8t.js.map → Page-BmpojvuI.js.map} +1 -1
  89. package/dist/Page.js +1 -1
  90. package/dist/{Pagination-Hjalx9ZX.js → Pagination-Bc4fhdNm.js} +3 -3
  91. package/dist/{Pagination-Hjalx9ZX.js.map → Pagination-Bc4fhdNm.js.map} +1 -1
  92. package/dist/Pagination.js +1 -1
  93. package/dist/{Popover-BQ-R2hs0.js → Popover-BgVOsP4J.js} +2 -2
  94. package/dist/{Popover-BQ-R2hs0.js.map → Popover-BgVOsP4J.js.map} +1 -1
  95. package/dist/Popover.js +1 -1
  96. package/dist/PortalProvider-Cj_y3gbC.js.map +1 -1
  97. package/dist/{ProgressBar-BUmYFa81.js → ProgressBar-Chb0uKfL.js} +2 -2
  98. package/dist/{ProgressBar-BUmYFa81.js.map → ProgressBar-Chb0uKfL.js.map} +1 -1
  99. package/dist/ProgressBar.js +1 -1
  100. package/dist/{Radio-BgbBIhPS.js → Radio-DcNlFfSu.js} +3 -3
  101. package/dist/{Radio-BgbBIhPS.js.map → Radio-DcNlFfSu.js.map} +1 -1
  102. package/dist/{Radio-C2pWQ84U.js → Radio-gpMEsFss.js} +2 -2
  103. package/dist/{Radio-C2pWQ84U.js.map → Radio-gpMEsFss.js.map} +1 -1
  104. package/dist/Radio.js +1 -1
  105. package/dist/{RichTextEditor-Chzl-zeW.js → RichTextEditor-DeO4p-S-.js} +8 -8
  106. package/dist/{RichTextEditor-Chzl-zeW.js.map → RichTextEditor-DeO4p-S-.js.map} +1 -1
  107. package/dist/RichTextEditor.js +1 -1
  108. package/dist/{SavedFiltersButton-D0J5KTsI.js → SavedFiltersButton-Cvf1mJk8.js} +10 -10
  109. package/dist/{SavedFiltersButton-D0J5KTsI.js.map → SavedFiltersButton-Cvf1mJk8.js.map} +1 -1
  110. package/dist/SavedFiltersButton.js +1 -1
  111. package/dist/{SelectCard-BGTB3ay0.js → SelectCard-bp5hRyHK.js} +3 -3
  112. package/dist/{SelectCard-BGTB3ay0.js.map → SelectCard-bp5hRyHK.js.map} +1 -1
  113. package/dist/SelectCard.js +1 -1
  114. package/dist/SelectField.js +1 -1
  115. package/dist/{SelectFieldLabel-CcX2GAym.js → SelectFieldLabel-DZqxaZsp.js} +2 -2
  116. package/dist/SelectFieldLabel-DZqxaZsp.js.map +1 -0
  117. package/dist/{SelectFieldSync-BjJN7FC3.js → SelectFieldSync-Wkx6DGpg.js} +7 -7
  118. package/dist/{SelectFieldSync-BjJN7FC3.js.map → SelectFieldSync-Wkx6DGpg.js.map} +1 -1
  119. package/dist/SelectMenu.js +1 -1
  120. package/dist/{SelectMenuSync-iZsNTote.js → SelectMenuSync-O55TODxn.js} +6 -6
  121. package/dist/{SelectMenuSync-iZsNTote.js.map → SelectMenuSync-O55TODxn.js.map} +1 -1
  122. package/dist/{SelectOptions-BeehD5VV.js → SelectOptions-0A8BYx1q.js} +2 -2
  123. package/dist/SelectOptions-0A8BYx1q.js.map +1 -0
  124. package/dist/{SelectTrigger-BQAVMm3E.js → SelectTrigger-BfJ7DWYq.js} +2 -2
  125. package/dist/{SelectTrigger-BQAVMm3E.js.map → SelectTrigger-BfJ7DWYq.js.map} +1 -1
  126. package/dist/SelectTrigger.js +1 -1
  127. package/dist/{SelectTriggerBase-BV-QNhII.js → SelectTriggerBase-DvsI-kSG.js} +3 -3
  128. package/dist/{SelectTriggerBase-BV-QNhII.js.map → SelectTriggerBase-DvsI-kSG.js.map} +1 -1
  129. package/dist/StatusIcon-BqorkNJf.js.map +1 -1
  130. package/dist/{Switch-DWaFomvP.js → Switch-CrDmBj4D.js} +2 -2
  131. package/dist/{Switch-DWaFomvP.js.map → Switch-CrDmBj4D.js.map} +1 -1
  132. package/dist/Switch.js +1 -1
  133. package/dist/Table.js +1 -1
  134. package/dist/{Text-D2TIPmZ2.js → Text-CZccJAnm.js} +2 -2
  135. package/dist/{Text-D2TIPmZ2.js.map → Text-CZccJAnm.js.map} +1 -1
  136. package/dist/Text.js +1 -1
  137. package/dist/{TextField-wIc7ic0E.js → TextField-D0f9LwgQ.js} +3 -3
  138. package/dist/{TextField-wIc7ic0E.js.map → TextField-D0f9LwgQ.js.map} +1 -1
  139. package/dist/{TextField-DJaBZ4Je.js → TextField-DX5qyWPo.js} +2 -2
  140. package/dist/{TextField-DJaBZ4Je.js.map → TextField-DX5qyWPo.js.map} +1 -1
  141. package/dist/TextField.js +1 -1
  142. package/dist/{Textarea-D4c6VjNs.js → Textarea-CdTcekFd.js} +3 -3
  143. package/dist/{Textarea-D4c6VjNs.js.map → Textarea-CdTcekFd.js.map} +1 -1
  144. package/dist/Textarea.js +1 -1
  145. package/dist/ThemeProvider-DW-Mflv6.js.map +1 -1
  146. package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
  147. package/dist/{TimeField-DpnX_t31.js → TimeField-BxNglWQt.js} +4 -4
  148. package/dist/TimeField-BxNglWQt.js.map +1 -0
  149. package/dist/TimeField.js +1 -1
  150. package/dist/Toast.js +2 -2
  151. package/dist/{Toaster-Cl9BSxHs.js → Toaster-C-Z_FMbW.js} +3 -3
  152. package/dist/{Toaster-Cl9BSxHs.js.map → Toaster-C-Z_FMbW.js.map} +1 -1
  153. package/dist/{Toaster-11pmgwx5.js → Toaster-nyQgF9Ki.js} +2 -2
  154. package/dist/{Toaster-11pmgwx5.js.map → Toaster-nyQgF9Ki.js.map} +1 -1
  155. package/dist/{Toolbar-C9_Z1wAt.js → Toolbar-BUbMtBVz.js} +4 -4
  156. package/dist/{Toolbar-C9_Z1wAt.js.map → Toolbar-BUbMtBVz.js.map} +1 -1
  157. package/dist/{Toolbar-Dq9KOJoH.js → Toolbar-BxAFPvbn.js} +5 -5
  158. package/dist/{Toolbar-Dq9KOJoH.js.map → Toolbar-BxAFPvbn.js.map} +1 -1
  159. package/dist/Toolbar.js +2 -2
  160. package/dist/{ToolbarButtonToggle-BGnYIt6-.js → ToolbarButtonToggle-NSJ2XfXT.js} +2 -2
  161. package/dist/{ToolbarButtonToggle-BGnYIt6-.js.map → ToolbarButtonToggle-NSJ2XfXT.js.map} +1 -1
  162. package/dist/TrackingProvider-Co4lyoI9.js.map +1 -1
  163. package/dist/TrackingProviderContext-CrVA7KHv.js.map +1 -1
  164. package/dist/TreeSelectField.js +1 -1
  165. package/dist/{TreeSelectFieldSync-CoWxg7tA.js → TreeSelectFieldSync-DpvwlM7B.js} +6 -6
  166. package/dist/{TreeSelectFieldSync-CoWxg7tA.js.map → TreeSelectFieldSync-DpvwlM7B.js.map} +1 -1
  167. package/dist/TreeSelectMenu.js +1 -1
  168. package/dist/{TreeSelectMenuSync-CmJa0lyW.js → TreeSelectMenuSync-BDitYX_k.js} +5 -5
  169. package/dist/{TreeSelectMenuSync-CmJa0lyW.js.map → TreeSelectMenuSync-BDitYX_k.js.map} +1 -1
  170. package/dist/{TypeaheadTextField-2kW-oCMo.js → TypeaheadTextField-Cj09sEji.js} +3 -3
  171. package/dist/{TypeaheadTextField-2kW-oCMo.js.map → TypeaheadTextField-Cj09sEji.js.map} +1 -1
  172. package/dist/TypeaheadTextField.js +1 -1
  173. package/dist/{YearlessDateInputWithPicker-C0FwNBKR.js → YearlessDateInputWithPicker-CoomgSEK.js} +3 -3
  174. package/dist/{YearlessDateInputWithPicker-C0FwNBKR.js.map → YearlessDateInputWithPicker-CoomgSEK.js.map} +1 -1
  175. package/dist/anvParts-DFVq7-Cm.js +25 -0
  176. package/dist/anvParts-DFVq7-Cm.js.map +1 -0
  177. package/dist/arrayIdsEqual-DnevhwqN.js.map +1 -1
  178. package/dist/assets/icons/st/gnav_automations_active.svg +1 -0
  179. package/dist/assets/icons/st/gnav_automations_inactive.svg +1 -0
  180. package/dist/assets/icons/st/gnav_command_center_active.svg +1 -0
  181. package/dist/assets/icons/st/gnav_command_center_inactive.svg +1 -0
  182. package/dist/assets/icons/st.ts +4 -0
  183. package/dist/beta.js +17 -17
  184. package/dist/{bulkActionTypes-Ct2cwT7b.js → bulkActionTypes-DAo3_ECS.js} +2 -2
  185. package/dist/bulkActionTypes-DAo3_ECS.js.map +1 -0
  186. package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
  187. package/dist/confirmationTypes-DeRtO_Cw.js.map +1 -1
  188. package/dist/{downshift.esm-xtSnQp44.js → downshift.esm-U4VMqrF-.js} +3 -1
  189. package/dist/downshift.esm-U4VMqrF-.js.map +1 -0
  190. package/dist/{filter-state-lWKlYjeQ.js → filter-state-CZcczj37.js} +21 -21
  191. package/dist/{filter-state-lWKlYjeQ.js.map → filter-state-CZcczj37.js.map} +1 -1
  192. package/dist/floating-ui.react-dom-BIKT960u.js.map +1 -1
  193. package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
  194. package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -1
  195. package/dist/{index-BHztJ8H6.js → index-BFxzUzoz.js} +2 -2
  196. package/dist/{index-BHztJ8H6.js.map → index-BFxzUzoz.js.map} +1 -1
  197. package/dist/index.js +42 -43
  198. package/dist/index.js.map +1 -1
  199. package/dist/portalScopeClassNames-DA28LrXe.js.map +1 -1
  200. package/dist/src/hooks/useAccessibleColor/useAccessibleColor.d.ts +3 -28
  201. package/dist/src/hooks/useBreakpoint/useBreakpoint.d.ts +15 -60
  202. package/dist/src/hooks/useMergeRefs/useMergeRefs.d.ts +3 -20
  203. package/dist/src/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts +2 -11
  204. package/dist/src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +2 -10
  205. package/dist/src/hooks/useSize/index.d.ts +2 -13
  206. package/dist/src/hooks/useSwipe/useSwipe.d.ts +3 -20
  207. package/dist/src/hooks/useTrackingId/index.d.ts +6 -17
  208. package/dist/src/internal/components/AddNewItemButton.d.ts +4 -30
  209. package/dist/src/internal/components/Helper/Helper.d.ts +12 -8
  210. package/dist/src/internal/components/InView.d.ts +4 -24
  211. package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +2 -19
  212. package/dist/src/internal/components/Label/Label.d.ts +12 -51
  213. package/dist/src/internal/components/ManualTestLayout/ManualTestLayout.d.ts +3 -2
  214. package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +11 -17
  215. package/dist/src/internal/components/MultiSelectOptions.d.ts +15 -0
  216. package/dist/src/internal/components/OptionCheckbox.d.ts +2 -0
  217. package/dist/src/internal/components/OptionContentArea.d.ts +4 -0
  218. package/dist/src/internal/components/OptionRow.d.ts +4 -0
  219. package/dist/src/internal/components/OptionsDialog/OptionsDialog.d.ts +13 -1
  220. package/dist/src/internal/components/OptionsPanel.d.ts +16 -0
  221. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +9 -14
  222. package/dist/src/internal/components/Popover/Popover.d.ts +45 -180
  223. package/dist/src/internal/components/Popover/PopoverButton.d.ts +0 -20
  224. package/dist/src/internal/components/Popover/PopoverClose.d.ts +0 -20
  225. package/dist/src/internal/components/Popover/PopoverContent.d.ts +4 -25
  226. package/dist/src/internal/components/Popover/PopoverTrigger.d.ts +1 -23
  227. package/dist/src/internal/components/Popover/internal/PopoverContext.d.ts +0 -21
  228. package/dist/src/internal/components/Popover/internal/usePopoverContext.d.ts +1 -3
  229. package/dist/src/internal/components/SelectOption.d.ts +8 -0
  230. package/dist/src/internal/components/SelectOptions.d.ts +15 -0
  231. package/dist/src/internal/components/Shadow/Shadow.d.ts +1 -0
  232. package/dist/src/internal/components/StatusIcon/StatusIcon.d.ts +4 -33
  233. package/dist/src/internal/components/Surface/Surface.d.ts +40 -73
  234. package/dist/src/internal/components/Surface/surfaceGeometry.d.ts +12 -0
  235. package/dist/src/internal/components/VirtualizedOptionsPanel.d.ts +1 -0
  236. package/dist/src/internal/components/YearSelector/YearSelector.d.ts +14 -48
  237. package/dist/src/internal/components/YearSelector/internal/YearItem.d.ts +1 -0
  238. package/dist/src/internal/components/YearSelector/internal/useYearSelectorKeys.d.ts +4 -0
  239. package/dist/src/internal/constants/anvParts.d.ts +3 -55
  240. package/dist/src/internal/flubber/a2c.d.ts +0 -4
  241. package/dist/src/internal/flubber/arc.d.ts +0 -4
  242. package/dist/src/internal/flubber/bezier.d.ts +0 -4
  243. package/dist/src/internal/flubber/errors.d.ts +0 -4
  244. package/dist/src/internal/flubber/index.d.ts +0 -4
  245. package/dist/src/internal/flubber/interpolate.d.ts +3 -0
  246. package/dist/src/internal/flubber/linear.d.ts +0 -4
  247. package/dist/src/internal/flubber/parse.d.ts +0 -4
  248. package/dist/src/internal/flubber/path-properties.d.ts +0 -4
  249. package/dist/src/internal/functions/areOptionsValueEqual.d.ts +2 -5
  250. package/dist/src/internal/functions/buildSelectItems.d.ts +2 -4
  251. package/dist/src/internal/functions/childrenToString.d.ts +3 -21
  252. package/dist/src/internal/functions/getActiveElement.d.ts +4 -0
  253. package/dist/src/internal/functions/getInitial.d.ts +3 -13
  254. package/dist/src/internal/functions/getKeyboardFocusableElements.d.ts +6 -30
  255. package/dist/src/internal/functions/inlineMarkdown.d.ts +3 -16
  256. package/dist/src/internal/functions/isThenable.d.ts +1 -1
  257. package/dist/src/internal/functions/kebabize.d.ts +3 -13
  258. package/dist/src/internal/functions/mapOrder.d.ts +4 -0
  259. package/dist/src/internal/functions/popoverTargetDomProps.d.ts +1 -1
  260. package/dist/src/internal/functions/portalScopeClassNames.d.ts +6 -13
  261. package/dist/src/internal/functions/safePopover.d.ts +2 -0
  262. package/dist/src/internal/functions/sizeToToken.d.ts +1 -0
  263. package/dist/src/internal/functions/stripInlineMarkdown.d.ts +3 -5
  264. package/dist/src/internal/functions/syncFilterUtils.d.ts +4 -2
  265. package/dist/src/internal/functions/warnOnce.d.ts +1 -2
  266. package/dist/src/internal/hooks/useBulkActionRunner.d.ts +4 -27
  267. package/dist/src/internal/hooks/useCommitSelectionIfChanged.d.ts +7 -14
  268. package/dist/src/internal/hooks/useConfirmationDraft.d.ts +4 -4
  269. package/dist/src/internal/hooks/useContainerQuery/useContainerQuery.d.ts +2 -33
  270. package/dist/src/internal/hooks/useDebouncedCallback/useDebouncedCallback.d.ts +3 -25
  271. package/dist/src/internal/hooks/useDialogScrollLock/useDialogScrollLock.d.ts +6 -31
  272. package/dist/src/internal/hooks/useDialogTransitionStates/useDialogTransitionStates.d.ts +2 -27
  273. package/dist/src/internal/hooks/useDownshiftEnvironment/useDownshiftEnvironment.d.ts +8 -24
  274. package/dist/src/internal/hooks/useFocusWithin/useFocusWithin.d.ts +3 -14
  275. package/dist/src/internal/hooks/useGroupedOptions.d.ts +4 -22
  276. package/dist/src/internal/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +4 -47
  277. package/dist/src/internal/hooks/useInvalidateOnOptionsChange.d.ts +2 -7
  278. package/dist/src/internal/hooks/useIsScrollable/useIsScrollable.d.ts +1 -5
  279. package/dist/src/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +1 -38
  280. package/dist/src/internal/hooks/useLayoutPropsUtil/useLayoutPropsUtil.d.ts +2 -38
  281. package/dist/src/internal/hooks/useNumberField/internal/createNumberMaskOptions.d.ts +2 -5
  282. package/dist/src/internal/hooks/useNumberField/internal/createTrailingZerosHandlers.d.ts +1 -2
  283. package/dist/src/internal/hooks/useNumberField/internal/numberMaskUtils.d.ts +0 -6
  284. package/dist/src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.d.ts +2 -17
  285. package/dist/src/internal/hooks/useNumberField/internal/useNumberFieldKeys.d.ts +4 -30
  286. package/dist/src/internal/hooks/useNumberField/useNumberField.d.ts +19 -65
  287. package/dist/src/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -33
  288. package/dist/src/internal/hooks/useOpenCloseTransitionStates/useOpenCloseTransitionStates.d.ts +4 -28
  289. package/dist/src/internal/hooks/useOptionallyControlledState/useOptionallyControlledState.d.ts +2 -46
  290. package/dist/src/internal/hooks/useOptionsSections.d.ts +4 -9
  291. package/dist/src/internal/hooks/usePinnedOptions.d.ts +4 -24
  292. package/dist/src/internal/hooks/usePlatform/usePlatform.d.ts +3 -50
  293. package/dist/src/internal/hooks/usePopoverCloseDelayWorkaround/usePopoverCloseDelayWorkaround.d.ts +4 -0
  294. package/dist/src/internal/hooks/usePopoverTransitionStates/usePopoverTransitionStates.d.ts +1 -21
  295. package/dist/src/internal/hooks/usePrevious/usePrevious.d.ts +1 -0
  296. package/dist/src/internal/hooks/useProcessedOptions.d.ts +2 -3
  297. package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +18 -61
  298. package/dist/src/internal/hooks/useSelectOrchestration.d.ts +4 -3
  299. package/dist/src/internal/hooks/useToggleSelection.d.ts +3 -3
  300. package/dist/src/internal/hooks/useTypeAhead/useTypeAhead.d.ts +3 -11
  301. package/dist/src/internal/testing/anvPartsContract.d.ts +9 -9
  302. package/dist/src/internal/testing/reactHostProps.d.ts +2 -2
  303. package/dist/src/internal/types/addNewItemTypes.d.ts +14 -16
  304. package/dist/src/internal/types/argTypes.d.ts +2 -0
  305. package/dist/src/internal/types/bulkActionTypes.d.ts +12 -41
  306. package/dist/src/internal/types/confirmationTypes.d.ts +6 -7
  307. package/dist/src/internal/types/optionContent.d.ts +6 -9
  308. package/dist/src/internal/types/props.d.ts +6 -1
  309. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +10 -12
  310. package/dist/src/internal/utils/arrayIdsEqual.d.ts +1 -5
  311. package/dist/src/internal/utils/generateChromaticStickersheetProps.d.ts +4 -8
  312. package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +0 -4
  313. package/dist/src/internal/utils/layerManager.d.ts +5 -28
  314. package/dist/src/internal/utils/uniquifySvgDomIds.d.ts +0 -2
  315. package/dist/src/providers/AnvilProvider/AnvilProvider.d.ts +4 -0
  316. package/dist/src/providers/AnvilProvider/AnvilProviderContext.d.ts +16 -6
  317. package/dist/src/providers/LocalizationProvider/LocalizationContext.d.ts +7 -0
  318. package/dist/src/providers/LocalizationProvider/LocalizationProvider.d.ts +6 -0
  319. package/dist/src/providers/LocalizationProvider/LocalizationStoryWrapper.d.ts +1 -0
  320. package/dist/src/providers/LocalizationProvider/useTranslations.d.ts +6 -0
  321. package/dist/src/providers/PortalProvider/PortalProvider.d.ts +1 -0
  322. package/dist/src/providers/PortalProvider/PortalProviderContext.d.ts +3 -0
  323. package/dist/src/providers/ThemeProvider/ThemeProvider.d.ts +16 -0
  324. package/dist/src/providers/ThemeProvider/index.d.ts +1 -1
  325. package/dist/src/providers/ThemeProvider/internal/ThemeProviderContext.d.ts +2 -0
  326. package/dist/src/providers/ThemeProvider/themeToCssVars.d.ts +3 -4
  327. package/dist/src/providers/ThemeProvider/useTheme.d.ts +5 -0
  328. package/dist/src/providers/TrackingProvider/TrackingProvider.d.ts +1 -0
  329. package/dist/src/providers/TrackingProvider/TrackingProviderContext.d.ts +7 -0
  330. package/dist/src/providers/TrackingProvider/useTrackingContext.d.ts +5 -0
  331. package/dist/src/themes/carto.d.ts +3 -43
  332. package/dist/src/types/DataTrackingId.d.ts +1 -0
  333. package/dist/src/types/DistributiveOmit.d.ts +1 -14
  334. package/dist/src/types/MaxLengthCounterProps.d.ts +4 -0
  335. package/dist/src/types/PassThroughProps.d.ts +3 -0
  336. package/dist/src/types/ai-marks.d.ts +14 -45
  337. package/dist/src/types/ianaZones.d.ts +2 -0
  338. package/dist/src/types/locales.d.ts +1 -0
  339. package/dist/src/types/props.d.ts +14 -16
  340. package/dist/{stripInlineMarkdown-82hVO9EP.js → stripInlineMarkdown-CosQSmBr.js} +2 -2
  341. package/dist/stripInlineMarkdown-CosQSmBr.js.map +1 -0
  342. package/dist/{syncFilterUtils-CKXbRZG8.js → syncFilterUtils-_uwyt6FD.js} +20 -19
  343. package/dist/syncFilterUtils-_uwyt6FD.js.map +1 -0
  344. package/dist/themes.js.map +1 -1
  345. package/dist/token/core/component-variables.scss +156 -0
  346. package/dist/token/core/component.d.ts +78 -0
  347. package/dist/token/core/component.js +1018 -0
  348. package/dist/token/core/component.scss +82 -0
  349. package/dist/token.js +1096 -0
  350. package/dist/token.js.map +1 -1
  351. package/dist/{treeSync-ONC4TbTR.js → treeSync-Bp80Xduj.js} +4 -4
  352. package/dist/{treeSync-ONC4TbTR.js.map → treeSync-Bp80Xduj.js.map} +1 -1
  353. package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
  354. package/dist/useBreakpoint-BBNRlMGZ.js.map +1 -1
  355. package/dist/useDebouncedCallback-DLkapjcP.js.map +1 -1
  356. package/dist/useDialogScrollLock-BW-aVboo.js.map +1 -1
  357. package/dist/{useDrilldown-CicFEJpD.js → useDrilldown-D5XGfAUT.js} +3 -3
  358. package/dist/{useDrilldown-CicFEJpD.js.map → useDrilldown-D5XGfAUT.js.map} +1 -1
  359. package/dist/useFocusWithin-hi77jsrB.js.map +1 -1
  360. package/dist/{useInfiniteCombobox-DJoVEIk6.js → useInfiniteCombobox-ORhH44Rp.js} +6 -6
  361. package/dist/{useInfiniteCombobox-DJoVEIk6.js.map → useInfiniteCombobox-ORhH44Rp.js.map} +1 -1
  362. package/dist/{useInitialFocus-BIvXK1Rp.js → useInitialFocus-CGybEc6x.js} +2 -6
  363. package/dist/useInitialFocus-CGybEc6x.js.map +1 -0
  364. package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
  365. package/dist/{useInvalidateOnOptionsChange-C6tF7696.js → useInvalidateOnOptionsChange-ieSgbkwT.js} +4 -4
  366. package/dist/useInvalidateOnOptionsChange-ieSgbkwT.js.map +1 -0
  367. package/dist/useLayoutPropsUtil-DjqeAJZ9.js.map +1 -1
  368. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -1
  369. package/dist/useNumberField-CXFYUZ_n.js.map +1 -1
  370. package/dist/useOnClickOutside-Zw5vzxSq.js.map +1 -1
  371. package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
  372. package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
  373. package/dist/usePopoverTransitionStates-CDXCdyKa.js.map +1 -0
  374. package/dist/usePrefersColorScheme-CwOF0TjZ.js.map +1 -1
  375. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -1
  376. package/dist/usePrevious-Bvq-5auG.js.map +1 -1
  377. package/dist/useSize.js.map +1 -1
  378. package/dist/useSwipe-Cp-CJxLU.js.map +1 -1
  379. package/dist/useTheme-B4i6a3bM.js.map +1 -1
  380. package/dist/useTrackingContext-C522P4sv.js.map +1 -1
  381. package/dist/useTrackingId.js.map +1 -1
  382. package/dist/warnOnce-Y9PRHcU4.js.map +1 -1
  383. package/package.json +2 -2
  384. package/dist/AnvilProvider-D8msiELo.js.map +0 -1
  385. package/dist/Calendar-kSH8F7gx.js.map +0 -1
  386. package/dist/DataTable-D0YlJ7IA.js.map +0 -1
  387. package/dist/FieldLabel-CYCk2rz-.js.map +0 -1
  388. package/dist/FilterBar-CrIPZKvL.js.map +0 -1
  389. package/dist/ListView-Bkv1ZCSu.js.map +0 -1
  390. package/dist/Listbox-BWy_uBqm.js.map +0 -1
  391. package/dist/MenuFooter--lBF8OjJ.js.map +0 -1
  392. package/dist/MultiSelectFieldSync-gH-TQnq3.js.map +0 -1
  393. package/dist/SelectFieldLabel-CcX2GAym.js.map +0 -1
  394. package/dist/SelectOptions-BeehD5VV.js.map +0 -1
  395. package/dist/TimeField-DpnX_t31.js.map +0 -1
  396. package/dist/anvParts-BGg5dgfl.js +0 -43
  397. package/dist/anvParts-BGg5dgfl.js.map +0 -1
  398. package/dist/bulkActionTypes-Ct2cwT7b.js.map +0 -1
  399. package/dist/downshift.esm-xtSnQp44.js.map +0 -1
  400. package/dist/stripInlineMarkdown-82hVO9EP.js.map +0 -1
  401. package/dist/syncFilterUtils-CKXbRZG8.js.map +0 -1
  402. package/dist/useInitialFocus-BIvXK1Rp.js.map +0 -1
  403. package/dist/useInvalidateOnOptionsChange-C6tF7696.js.map +0 -1
  404. package/dist/usePopoverTransitionStates-B1opfxxn.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useNumberField-CXFYUZ_n.js","sources":["../src/internal/hooks/usePlatform/usePlatform.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.ts","../src/internal/hooks/useNumberField/internal/numberMaskUtils.ts","../src/internal/hooks/useNumberField/internal/createTrailingDecimalHandlers.ts","../src/internal/hooks/useNumberField/internal/createTrailingZerosHandlers.ts","../src/internal/hooks/useNumberField/internal/createNumberMaskOptions.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldKeys.ts","../../../node_modules/.pnpm/big.js@7.0.1/node_modules/big.js/big.mjs","../src/internal/hooks/useNumberField/useNumberField.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface UsePlatformReturnValue {\n /** True if the user is on an iPhone */\n isIPhone: boolean;\n /** True if the user is on an iPad */\n isIPad: boolean;\n /** True if the user is on any iOS device (iPhone or iPad) */\n isIOS: boolean;\n /** True if the user is on a Mac computer */\n isMac: boolean;\n /** True if the user is on any Apple device (iPhone, iPad, or Mac) */\n isAppleDevice: boolean;\n /** True if the browser is WebKit-based (Safari, Chrome, etc.) */\n isWebKit: boolean;\n /** True if the browser is Chrome */\n isChrome: boolean;\n /** True if the browser is Firefox */\n isFirefox: boolean;\n /** True if the user is on an Android device */\n isAndroid: boolean;\n}\n\n/**\n * Custom hook for detecting the user's platform and browser.\n *\n * This hook provides platform and browser detection capabilities for implementing\n * platform-specific behavior in components. It detects:\n * - iOS devices (iPhone, iPad)\n * - macOS computers\n * - Android devices\n * - WebKit-based browsers (Safari, Chrome)\n * - Specific browsers (Chrome, Firefox)\n *\n * @internal This hook is not exported because it hasn't been rigorously tested.\n *\n * @returns Object containing boolean flags for different platforms and browsers\n *\n * @example\n * const {\n * isIPhone,\n * isIPad,\n * isIOS,\n * isMac,\n * isAppleDevice,\n * isWebKit,\n * isChrome,\n * isFirefox,\n * isAndroid\n * } = usePlatform();\n *\n * if (isIOS) {\n * // Handle iOS-specific logic\n * }\n */\nexport function usePlatform(): UsePlatformReturnValue {\n const [platform, setPlatform] = useState<UsePlatformReturnValue>(\n detectPlatform(),\n );\n\n useEffect(() => {\n setPlatform(detectPlatform());\n }, []);\n return platform;\n}\n\n/**\n * Detects the current platform and browser based on user agent and platform information.\n *\n * This function analyzes the navigator.userAgent and navigator.platform to determine\n * the user's device type and browser. It handles edge cases like:\n * - MSStream detection for Windows Phone\n * - iPad detection using maxTouchPoints\n * - WebKit vs Chrome differentiation\n *\n * @returns Object containing boolean flags for different platforms and browsers\n */\nexport function detectPlatform(): UsePlatformReturnValue {\n // Check if we're in a browser environment\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return {\n isIPhone: false,\n isIPad: false,\n isIOS: false,\n isMac: false,\n isAppleDevice: false,\n isWebKit: false,\n isChrome: false,\n isFirefox: false,\n isAndroid: false,\n };\n }\n\n const userAgent = navigator.userAgent;\n const platform = navigator.platform;\n\n // iOS Detection\n const isIPhone =\n /iPhone/.test(userAgent) &&\n !(window as Window & typeof globalThis & { MSStream: Blob }).MSStream;\n const isIPad =\n /iPad/.test(userAgent) ||\n (!!navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(platform));\n const isIOS = isIPhone || isIPad;\n\n // Mac Detection\n const isMac = /Mac/.test(platform) && !isIOS;\n\n // Apple Device Detection\n const isAppleDevice = isIOS || isMac;\n\n // WebKit Detection\n const isWebKit = /WebKit/.test(userAgent) && !/Chrome/.test(userAgent);\n\n // Browser Detection\n const isChrome =\n /Chrome/.test(userAgent) &&\n !/Edge/.test(userAgent) &&\n !/Edg/.test(userAgent);\n const isFirefox = /Firefox/.test(userAgent);\n\n // Android Detection\n const isAndroid = /Android/.test(userAgent);\n\n return {\n isIPhone,\n isIPad,\n isIOS,\n isMac,\n isAppleDevice,\n isWebKit,\n isChrome,\n isFirefox,\n isAndroid,\n };\n}\n","import { useMemo } from \"react\";\nimport { usePlatform } from \"../../usePlatform\";\n\nexport type InputMode = \"decimal\" | \"numeric\" | \"text\";\n\n/**\n * Custom hook that determines the optimal inputMode attribute for number fields based on platform and requirements.\n *\n * The inputMode attribute tells the device what type of software keyboard to show.\n * There are inconsistencies in what each software keyboard includes across different platforms:\n * - iPhone lacks a minus sign in both numeric and decimal keyboards\n * - Android numeric keyboard has both decimal point and minus sign\n * - iPad has different keyboard behavior than iPhone\n *\n * @param hasDecimals - Whether the number field allows decimal values\n * @param hasNegative - Whether the number field allows negative values\n * @returns The optimal inputMode attribute to use on the number field\n *\n * @example\n * const inputMode = useNumberFieldInputMode({\n * hasDecimals: true,\n * hasNegative: false\n * });\n */\nexport const useNumberFieldInputMode = ({\n hasDecimals,\n hasNegative,\n}: {\n hasDecimals: boolean;\n hasNegative: boolean;\n}) => {\n const platform = usePlatform();\n\n const inputMode: InputMode = useMemo(() => {\n let value: InputMode = \"decimal\";\n\n if (platform.isIPhone) {\n // iPhone only. iPad has a different software keyboard.\n if (hasNegative) {\n // iPhone lacks a minus sign in both numeric and decimal. So we use text.\n value = \"text\";\n } else if (hasDecimals) {\n value = \"decimal\";\n }\n } else if (platform.isAndroid) {\n if (hasNegative) {\n // Android numeric has both a decimal point and a minus sign so it's safe to use in all cases.\n value = \"numeric\";\n } else if (hasDecimals) {\n // If we don't have negative numbers, we can use decimal (which does not have a minus sign).\n value = \"decimal\";\n }\n }\n\n return value;\n }, [hasDecimals, hasNegative, platform.isAndroid, platform.isIPhone]);\n\n return inputMode;\n};\n","/**\n * Utility predicates for number mask processing.\n */\n\n/** Returns true if the string contains one or more zeros and nothing else. */\nexport const isAllZeros = (str: string): boolean => /^0+$/.test(str);\n\n/** Returns true if the string is empty or contains only zeros. */\nexport const isEmptyOrAllZeros = (str: string): boolean =>\n str === \"\" || /^0*$/.test(str);\n\n/** Returns true if the string is a single non-zero digit (1-9). */\nexport const isNonZeroDigit = (str: string): boolean => /^[1-9]$/.test(str);\n","import type { MaskitoPostprocessor, MaskitoPreprocessor } from \"@maskito/core\";\n\nimport { isAllZeros } from \"./numberMaskUtils\";\n\nexport interface TrailingDecimalHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n}\n\n/**\n * Creates processors to preserve trailing decimals during input.\n *\n * When `minimumFractionDigits` is 0, Maskito rejects trailing decimals (\"123.\").\n * This factory returns processors that temporarily append \"0\" to pass validation,\n * then trim it for display.\n */\nexport function createTrailingDecimalHandlers(): TrailingDecimalHandlers {\n /**\n * Appends \"0\" to trailing decimals so Maskito accepts them.\n * The postprocessor then trims this \"0\" for display.\n */\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n\n // Typing \".\" that would result in trailing decimal\n if (data === \".\" && actionType === \"insert\") {\n const afterCursor = value.slice(selStart);\n if (!afterCursor || !/^\\d/.test(afterCursor)) {\n return { elementState, data: \".0\" };\n }\n }\n\n // Deletion that would result in trailing decimal\n if (actionType === \"deleteBackward\" || actionType === \"deleteForward\") {\n let simulatedValue: string;\n let newCursorPos: number;\n let charBeingDeleted: string;\n\n if (actionType === \"deleteBackward\") {\n if (selStart === selEnd && selStart > 0) {\n charBeingDeleted = value[selStart - 1];\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n newCursorPos = selStart - 1;\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n newCursorPos = selStart;\n }\n } else {\n if (selStart === selEnd && selStart < value.length) {\n charBeingDeleted = value[selStart];\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n }\n newCursorPos = selStart;\n }\n\n // Append \"0\" unless user is explicitly deleting trailing zeros\n if (simulatedValue.endsWith(\".\")) {\n const decimalIndex = value.indexOf(\".\");\n const afterDecimal =\n decimalIndex !== -1 ? value.slice(decimalIndex + 1) : \"\";\n const isDeletingTrailingZeros =\n isAllZeros(afterDecimal) && isAllZeros(charBeingDeleted);\n\n if (!isDeletingTrailingZeros) {\n return {\n elementState: {\n value: simulatedValue + \"0\",\n selection: [newCursorPos, newCursorPos] as const,\n },\n data: \"\",\n };\n }\n }\n }\n\n return { elementState, data };\n };\n\n /**\n * Trims \".0\" back to \".\" when the preprocessor added \"0\" to pass the mask.\n * Only applies when the initial value didn't already end with \".0\".\n */\n const postprocessor: MaskitoPostprocessor = (\n { value, selection },\n initialElementState,\n ) => {\n const initialValue = initialElementState.value;\n\n if (value.endsWith(\".0\")) {\n const initialDecimalIndex = initialValue.indexOf(\".\");\n const hasDigitsAfterDecimal =\n initialDecimalIndex !== -1 &&\n initialValue.slice(initialDecimalIndex + 1).length > 0;\n\n if (!initialValue.includes(\".\") || hasDigitsAfterDecimal) {\n return {\n value: value.slice(0, -1),\n selection: [selection[0], selection[1]],\n };\n }\n }\n\n return { value, selection };\n };\n\n return {\n preprocessor,\n postprocessor,\n };\n}\n","import type {\n MaskitoPlugin,\n MaskitoPostprocessor,\n MaskitoPreprocessor,\n} from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\n\nimport {\n isAllZeros,\n isEmptyOrAllZeros,\n isNonZeroDigit,\n} from \"./numberMaskUtils\";\n\n/**\n * State for tracking trailing zeros across Maskito's multi-pass validation.\n *\n * This state coordinates between the preprocessor (which detects trailing zero\n * scenarios) and postprocessor (which restores stripped zeros) to preserve\n * user-typed trailing zeros until they leave the field.\n */\ninterface TrailingZerosState {\n /**\n * The target value to restore if Maskito strips trailing zeros.\n */\n expectedValue: string | null;\n /**\n * Whether to preserve trailing zeros until the input loses focus.\n */\n preserveUntilBlur: boolean;\n}\n\nexport interface TrailingZerosHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n blurPlugin: MaskitoPlugin;\n}\n\n/**\n * Creates processors to preserve trailing zeros during decimal input.\n *\n * When `minimumFractionDigits` is 0, Maskito's multi-pass validation strips\n * trailing zeros (e.g., \"123.0\" → \"123.\"). This factory returns coordinated\n * processors that detect and restore trailing zeros, using closure state to\n * support multiple NumberField instances.\n */\nexport function createTrailingZerosHandlers(\n params: Pick<\n MaskitoNumberParams,\n \"minimumFractionDigits\" | \"maximumFractionDigits\"\n >,\n): TrailingZerosHandlers {\n const maximumFractionDigits = params.maximumFractionDigits ?? 0;\n\n const state: TrailingZerosState = {\n expectedValue: null,\n preserveUntilBlur: false,\n };\n\n /** Detects trailing zero scenarios during user input. */\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n const decimalIndex = value.indexOf(\".\");\n\n // Typing \"0\" after decimal with only zeros or nothing after it\n if (actionType === \"insert\" && data === \"0\" && decimalIndex !== -1) {\n const afterDecimal = value.slice(decimalIndex + 1);\n\n if (isEmptyOrAllZeros(afterDecimal)) {\n const zerosNeeded = afterDecimal.length + 1;\n if (zerosNeeded <= maximumFractionDigits) {\n state.expectedValue =\n value.slice(0, decimalIndex + 1) + \"0\".repeat(zerosNeeded);\n state.preserveUntilBlur = true;\n }\n }\n }\n\n // Deletion that results in trailing zeros\n if (\n (actionType === \"deleteBackward\" || actionType === \"deleteForward\") &&\n decimalIndex !== -1\n ) {\n let simulatedValue: string;\n\n if (selStart !== selEnd) {\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n } else if (actionType === \"deleteBackward\" && selStart > 0) {\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n } else if (actionType === \"deleteForward\" && selStart < value.length) {\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n return { elementState, data };\n }\n\n const simDecimalIndex = simulatedValue.indexOf(\".\");\n if (simDecimalIndex !== -1) {\n const simAfterDecimal = simulatedValue.slice(simDecimalIndex + 1);\n const currentAfterDecimal = value.slice(decimalIndex + 1);\n\n const deletionCreatesTrailingZeros = isAllZeros(simAfterDecimal);\n const deletionRemovesAllTrailingZeros =\n simAfterDecimal === \"\" && isAllZeros(currentAfterDecimal);\n\n if (deletionCreatesTrailingZeros) {\n // Deleting a non-zero digit leaves trailing zeros (e.g., \"123.50\" → \"123.0\")\n // Preserve them so user can continue editing\n state.expectedValue = simulatedValue;\n state.preserveUntilBlur = true;\n } else if (deletionRemovesAllTrailingZeros) {\n // Deleting the last trailing zero (e.g., \"456.0\" → \"456.\")\n // Clear preservation since user is intentionally removing zeros\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n }\n }\n\n // Clear state on non-zero digit input\n if (actionType === \"insert\" && isNonZeroDigit(data)) {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n\n return { elementState, data };\n };\n\n /** Restores trailing zeros if Maskito stripped them. */\n const postprocessor: MaskitoPostprocessor = ({ value, selection }) => {\n if (state.expectedValue !== null && state.preserveUntilBlur) {\n const targetValue = state.expectedValue;\n\n if (\n targetValue.startsWith(value) ||\n value.startsWith(targetValue.replace(/0+$/, \"\"))\n ) {\n return {\n value: targetValue,\n selection: [targetValue.length, targetValue.length],\n };\n }\n }\n\n return { value, selection };\n };\n\n /** Clears preservation state on blur. */\n const blurPlugin: MaskitoPlugin = (element) => {\n const onBlur = () => {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n };\n\n element.addEventListener(\"blur\", onBlur);\n\n return () => {\n element.removeEventListener(\"blur\", onBlur);\n };\n };\n\n return {\n preprocessor,\n postprocessor,\n blurPlugin,\n };\n}\n","import type { MaskitoOptions } from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\nimport { maskitoNumberOptionsGenerator } from \"@maskito/kit\";\n\nimport { createTrailingDecimalHandlers } from \"./createTrailingDecimalHandlers\";\nimport { createTrailingZerosHandlers } from \"./createTrailingZerosHandlers\";\n\n/**\n * Creates Maskito options for number input with trailing decimal and zero support.\n *\n * When `minimumFractionDigits` is 0, Maskito rejects trailing decimals (\"123.\")\n * and strips trailing zeros (\"123.0\" → \"123.\"). This extends the base options\n * with processors to allow natural decimal input during typing.\n */\nexport function createNumberMaskOptions(\n params: MaskitoNumberParams,\n): MaskitoOptions {\n const baseOptions = maskitoNumberOptionsGenerator(params);\n const minimumFractionDigits = params.minimumFractionDigits ?? 0;\n\n // When minimumFractionDigits > 0, Maskito handles everything correctly\n if (minimumFractionDigits > 0) {\n return baseOptions;\n }\n\n // Only add custom processors when minimumFractionDigits is 0\n const trailingDecimalHandlers = createTrailingDecimalHandlers();\n const trailingZerosHandlers = createTrailingZerosHandlers(params);\n\n return {\n ...baseOptions,\n preprocessors: [\n trailingDecimalHandlers.preprocessor,\n trailingZerosHandlers.preprocessor,\n ...(baseOptions.preprocessors ?? []),\n ],\n postprocessors: [\n ...(baseOptions.postprocessors ?? []),\n trailingDecimalHandlers.postprocessor,\n trailingZerosHandlers.postprocessor,\n ],\n plugins: [...(baseOptions.plugins ?? []), trailingZerosHandlers.blurPlugin],\n };\n}\n","import { useRef, useEffect } from \"react\";\n\n/**\n * Configuration for the useNumberFieldKeys hook\n */\nexport type UseNumberFieldKeysConfig = {\n /** Function to increment the value by a specified amount */\n increment: (amount: number) => void;\n /** Function to decrement the value by a specified amount */\n decrement: (amount: number) => void;\n /** Function to set the value to the minimum allowed value */\n setToMin: () => void;\n /** Function to set the value to the maximum allowed value */\n setToMax: () => void;\n /** The step value for increment/decrement operations */\n step: number;\n /** Multiplier for large step operations (PageUp/PageDown) */\n largeStepMultiplier: number;\n /** When true, keyboard interactions that would mutate the value are ignored */\n readOnly?: boolean;\n};\n\n/**\n * Custom hook that handles keyboard interactions for number fields.\n *\n * This hook provides keyboard navigation support for number input fields:\n * - Arrow Up/Down: Increment/decrement by step value\n * - Page Up/Down: Increment/decrement by step * largeStepMultiplier\n * - Home: Set to minimum value\n * - End: Set to maximum value\n *\n * @param config - Configuration object containing increment/decrement functions and step values\n * @returns Object containing the input ref to attach to the input element\n *\n * @example\n * const { inputRef } = useNumberFieldKeys({\n * increment: (amount) => setValue(prev => prev + amount),\n * decrement: (amount) => setValue(prev => prev - amount),\n * setToMin: () => setValue(minValue),\n * setToMax: () => setValue(maxValue),\n * step: 1,\n * largeStepMultiplier: 10\n * });\n */\nfunction useNumberFieldKeys(config: UseNumberFieldKeysConfig) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Handle keyboard interactions (Up/Down arrows, PageUp/PageDown, Home/End)\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (config.readOnly) return;\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n config.increment(config.step);\n break;\n case \"ArrowDown\":\n event.preventDefault();\n config.decrement(config.step);\n break;\n case \"PageUp\":\n event.preventDefault();\n config.increment(config.step * config.largeStepMultiplier);\n break;\n case \"PageDown\":\n event.preventDefault();\n config.decrement(config.step * config.largeStepMultiplier);\n break;\n case \"Home\":\n event.preventDefault();\n config.setToMin();\n break;\n case \"End\":\n event.preventDefault();\n config.setToMax();\n break;\n default:\n break;\n }\n };\n\n const inputElement = inputRef.current;\n if (inputElement) {\n inputElement.addEventListener(\"keydown\", handleKeyDown);\n }\n return () => {\n if (inputElement) {\n inputElement.removeEventListener(\"keydown\", handleKeyDown);\n }\n };\n }, [config]);\n\n return {\n inputRef,\n };\n}\n\nexport default useNumberFieldKeys;\n","/*\r\n * big.js v7.0.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2025 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) {\r\n return n === UNDEFINED && arguments.length === 0 ? _Big_() : new Big(n);\r\n }\r\n\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(+stringify(x, true, true));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\nif (typeof Symbol !== \"undefined\") {\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON;\r\n}\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitive number.\r\n */\r\nP.toNumber = function () {\r\n var n = +stringify(this, true, true);\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// <reference types=\"https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/big.js/index.d.ts\" />\r\nexport default Big;\r\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { useOptionallyControlledState } from \"../useOptionallyControlledState\";\nimport { useNumberFieldInputMode } from \"./internal/useNumberFieldInputMode\";\nimport { useMaskito } from \"@maskito/react\";\nimport {\n type MaskitoNumberParams,\n maskitoParseNumber,\n maskitoStringifyNumber,\n} from \"@maskito/kit\";\nimport { createNumberMaskOptions } from \"./internal/createNumberMaskOptions\";\nimport useNumberFieldKeys from \"./internal/useNumberFieldKeys\";\nimport Big from \"big.js\";\nimport { usePrevious } from \"../usePrevious\";\n\nconst DEFAULT_MIN_VALUE = 0;\nconst DEFAULT_MAX_VALUE = 100_000_000_000_000;\n\n/**\n * Configuration options for the useNumberField hook\n */\nexport type UseNumberFieldConfig = {\n /**\n * The label for the number field.\n * Important for accessibility and button labeling.\n */\n label?: string;\n /**\n * The minimum value for the number field.\n * @default 0\n */\n minValue?: number;\n /**\n * The maximum value for the number field.\n * @default 100000000000000\n */\n maxValue?: number;\n /**\n * The step value for the number field.\n * @default 1\n */\n step?: number;\n /**\n * The controlled value for the number field.\n */\n value?: number | null;\n /**\n * The default (uncontrolled) value for the number field.\n */\n defaultValue?: number | null;\n /**\n * The maximum number of decimal places for the number field.\n * @default 0\n */\n maximumFractionDigits?: number;\n /**\n * The minimum number of decimal places for the number field.\n * @default 0\n */\n minimumFractionDigits?: number;\n /**\n * A callback that is called when the value changes.\n * @param value The new numeric value or null if invalid/empty\n */\n onChange?: (value: number | null) => void;\n /**\n * When `true`, disables keyboard interactions that would change the value\n * (Arrow keys, PageUp/PageDown, Home, End).\n */\n readOnly?: boolean;\n};\n\n/**\n * Return value from the useNumberField hook\n */\nexport type UseNumberFieldReturnValue = {\n /** The current numeric value of the number field. */\n value: number | null;\n /** A ref that should be attached to the input element. */\n inputRef: React.RefObject<HTMLInputElement>;\n /** The props to pass to the input element. */\n inputProps: Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n | \"value\"\n | \"onChange\"\n | \"inputMode\"\n | \"aria-valuenow\"\n | \"aria-valuemin\"\n | \"aria-valuemax\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"role\"\n | \"pattern\"\n | \"type\"\n | \"autoComplete\"\n >;\n /** The props to pass to the increment button. */\n incrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** The props to pass to the decrement button. */\n decrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\n/**\n * Custom hook that provides the functionality for number input fields with increment and decrement controls.\n *\n * This hook handles:\n * - Precise decimal arithmetic using Big.js\n * - Number formatting with thousand separators and decimal precision\n * - Input validation and value clamping\n * - Keyboard navigation (arrows, PageUp/Down, Home/End)\n * - Platform-specific input modes for mobile devices\n * - Accessibility attributes and button states\n * - Controlled and uncontrolled value management\n *\n * @param config - Configuration options for the number field\n * @returns Object containing the current value, input ref, and props for input and buttons\n *\n * @example\n * const { value, inputRef, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField({\n * label: \"Quantity\",\n * minValue: 0,\n * maxValue: 100,\n * step: 1,\n * onChange: (value) => console.log(value)\n * });\n */\nexport const useNumberField = (config: UseNumberFieldConfig) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const {\n minValue = DEFAULT_MIN_VALUE,\n maxValue = DEFAULT_MAX_VALUE,\n label = \"\",\n } = config;\n\n const step = config.step ? Math.abs(config.step) : 1;\n\n const minimumFractionDigits = Math.abs(config.minimumFractionDigits ?? 0);\n const maximumFractionDigits = Math.max(\n Math.abs(config.maximumFractionDigits ?? 0),\n minimumFractionDigits,\n );\n\n const previousMinimumFractionDigits = usePrevious(\n minimumFractionDigits,\n minimumFractionDigits,\n );\n\n const params: MaskitoNumberParams = useMemo(\n () => ({\n decimalSeparator: \".\",\n thousandSeparator: \",\",\n minusSign: \"-\",\n minimumFractionDigits,\n maximumFractionDigits,\n }),\n [minimumFractionDigits, maximumFractionDigits],\n );\n const options = useMemo(() => createNumberMaskOptions(params), [params]);\n\n const [isBeginningNegativeEntry, setIsBeginningNegativeEntry] =\n useState(false);\n\n // Tracks values like \"123.\" or \"123.0\" that would lose precision on controlled round-trip\n const [isIncompleteDecimalEntry, setIsIncompleteDecimalEntry] =\n useState(false);\n const [incompleteDecimalValue, setIncompleteDecimalValue] = useState<\n string | null\n >(null);\n\n const [inputValue, setInputValue] = useOptionallyControlledState<\n string | null\n >({\n controlledValue: convertValueProp(config.value, { maskitoParams: params }),\n defaultValue:\n convertValueProp(config.defaultValue, { maskitoParams: params }) ?? null,\n onChange: (value) => {\n if (value === \"-\") {\n setIsBeginningNegativeEntry(true);\n return;\n }\n setIsBeginningNegativeEntry(false);\n if (value === null) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n return config.onChange?.(null);\n }\n const parsedValue = maskitoParseNumber(value, params);\n const nanSafeValue = isNaN(parsedValue) ? null : parsedValue;\n\n // Detect incomplete decimal entries that would lose precision on round-trip\n if (\n minimumFractionDigits === 0 &&\n value.includes(\".\") &&\n nanSafeValue !== null\n ) {\n const formatted = maskitoStringifyNumber(nanSafeValue, params);\n if (formatted !== value) {\n setIsIncompleteDecimalEntry(true);\n setIncompleteDecimalValue(value);\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n\n config.onChange?.(nanSafeValue);\n },\n });\n const previousInputValue = usePrevious(inputValue, inputValue);\n\n useEffect(() => {\n if (isBeginningNegativeEntry && previousInputValue !== inputValue) {\n setIsBeginningNegativeEntry(false);\n }\n }, [isBeginningNegativeEntry, inputValue, previousInputValue]);\n\n // Clear incomplete decimal state when controlled value changes externally\n useEffect(() => {\n if (isIncompleteDecimalEntry && incompleteDecimalValue) {\n const incompleteNumeric = maskitoParseNumber(\n incompleteDecimalValue,\n params,\n );\n const currentNumeric = inputValue\n ? maskitoParseNumber(inputValue, params)\n : null;\n\n const incompleteNanSafe = isNaN(incompleteNumeric)\n ? null\n : incompleteNumeric;\n if (incompleteNanSafe !== currentNumeric) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n }\n }, [isIncompleteDecimalEntry, incompleteDecimalValue, inputValue, params]);\n\n // Reformat when minimumFractionDigits changes (e.g., 10 → 10.00)\n useEffect(() => {\n if (previousMinimumFractionDigits === minimumFractionDigits) return;\n setInputValue((previous) => {\n if (previous === null || previous === undefined) return null;\n const parsedValue = maskitoParseNumber(previous, params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n return maskitoStringifyNumber(nanSafeValue, params);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [minimumFractionDigits, previousMinimumFractionDigits]);\n\n const maskedInputRef = useMaskito({\n options,\n });\n\n const computedValue: Big | null = useMemo(() => {\n if (inputValue === null) return null;\n const parsedValue = maskitoParseNumber(inputValue, params);\n if (isNaN(parsedValue)) {\n return null;\n }\n const bigValue = new Big(parsedValue);\n return bigValue;\n }, [inputValue, params]);\n\n const clamp = useCallback(\n (value: number) => {\n return Math.min(Math.max(value, minValue), maxValue);\n },\n [minValue, maxValue],\n );\n\n const increment = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const incrementedValue = new Big(nanSafeValue).plus(amount);\n const clampedValue = clamp(incrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const decrement = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const decrementedValue = new Big(nanSafeValue).minus(amount);\n const clampedValue = clamp(decrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const setToMin = useCallback(() => {\n setInputValue(maskitoStringifyNumber(minValue, params));\n }, [minValue, params, setInputValue]);\n\n const setToMax = useCallback(() => {\n setInputValue(maskitoStringifyNumber(maxValue, params));\n }, [maxValue, params, setInputValue]);\n\n const { inputRef: keysInputRef } = useNumberFieldKeys({\n increment,\n decrement,\n setToMin,\n setToMax,\n step,\n largeStepMultiplier: 10,\n readOnly: config.readOnly,\n });\n\n const combinedInputRef = useMergeRefs([\n inputRef,\n maskedInputRef,\n keysInputRef,\n ]);\n\n const hasDecimals = minimumFractionDigits > 0 || maximumFractionDigits > 0;\n const hasNegative = minValue < 0;\n\n const inputMode = useNumberFieldInputMode({\n hasDecimals,\n hasNegative,\n });\n\n const pattern = useMemo(() => {\n if (hasNegative) {\n return `-?[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n if (hasDecimals) {\n return `[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n return \"[0-9]*\";\n }, [maximumFractionDigits, hasDecimals, hasNegative]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n if (newValue === \"\") {\n setInputValue(null);\n } else {\n setInputValue(newValue);\n }\n };\n\n return {\n value: computedValue?.toNumber() ?? null,\n inputRef: combinedInputRef,\n inputProps: {\n value: isBeginningNegativeEntry\n ? \"-\"\n : isIncompleteDecimalEntry\n ? (incompleteDecimalValue ?? \"\")\n : (inputValue ?? \"\"),\n onChange: handleInputChange,\n inputMode,\n \"aria-valuenow\": computedValue?.toNumber() ?? undefined,\n \"aria-valuemin\": minValue,\n \"aria-valuemax\": maxValue,\n min: minValue,\n max: maxValue,\n step,\n role: \"spinbutton\",\n pattern,\n type: \"text\",\n autoComplete: \"off\",\n },\n incrementButtonProps: {\n onClick: () => increment(step),\n disabled: computedValue?.gte(maxValue),\n tabIndex: -1,\n \"aria-label\": `Increment ${label ?? \"\"}`,\n },\n decrementButtonProps: {\n onClick: () => decrement(step),\n disabled: computedValue?.lte(minValue),\n tabIndex: -1,\n \"aria-label\": `Decrement ${label ?? \"\"}`,\n },\n };\n};\n\n/**\n * Converts a numeric value to a formatted string using Maskito parameters.\n *\n * @param v - The numeric value to convert\n * @param maskitoParams - Maskito configuration parameters for formatting\n * @returns Formatted string representation of the value, or null/undefined if input is null/undefined\n */\nfunction convertValueProp(\n v: number | null | undefined,\n { maskitoParams }: { maskitoParams: MaskitoNumberParams },\n): string | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n let bigValue: Big;\n try {\n bigValue = new Big(v);\n } catch (_) {\n bigValue = new Big(0);\n }\n return maskitoStringifyNumber(\n bigValue.round(maskitoParams.maximumFractionDigits).toNumber(),\n maskitoParams,\n );\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[7]}
1
+ {"version":3,"file":"useNumberField-CXFYUZ_n.js","sources":["../src/internal/hooks/usePlatform/usePlatform.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.ts","../src/internal/hooks/useNumberField/internal/numberMaskUtils.ts","../src/internal/hooks/useNumberField/internal/createTrailingDecimalHandlers.ts","../src/internal/hooks/useNumberField/internal/createTrailingZerosHandlers.ts","../src/internal/hooks/useNumberField/internal/createNumberMaskOptions.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldKeys.ts","../../../node_modules/.pnpm/big.js@7.0.1/node_modules/big.js/big.mjs","../src/internal/hooks/useNumberField/useNumberField.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface UsePlatformReturnValue {\n isIPhone: boolean;\n isIPad: boolean;\n isIOS: boolean;\n isMac: boolean;\n isAppleDevice: boolean;\n isWebKit: boolean;\n isChrome: boolean;\n isFirefox: boolean;\n isAndroid: boolean;\n}\n\n/**\n * Platform flags from {@link detectPlatform}. First render matches that helper\n * (all false without `window`); an effect re-runs it after mount.\n */\nexport function usePlatform(): UsePlatformReturnValue {\n const [platform, setPlatform] = useState<UsePlatformReturnValue>(\n detectPlatform(),\n );\n\n useEffect(() => {\n setPlatform(detectPlatform());\n }, []);\n return platform;\n}\n\n/** Without `window`/`navigator`, every flag is false. */\nexport function detectPlatform(): UsePlatformReturnValue {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return {\n isIPhone: false,\n isIPad: false,\n isIOS: false,\n isMac: false,\n isAppleDevice: false,\n isWebKit: false,\n isChrome: false,\n isFirefox: false,\n isAndroid: false,\n };\n }\n\n const userAgent = navigator.userAgent;\n const platform = navigator.platform;\n\n // Windows Phone spoofed iPhone in the UA; `MSStream` marks that browser.\n const isIPhone =\n /iPhone/.test(userAgent) &&\n !(window as Window & typeof globalThis & { MSStream: Blob }).MSStream;\n // iPadOS Safari reports as MacIntel; touch points distinguish iPad from Mac.\n const isIPad =\n /iPad/.test(userAgent) ||\n (!!navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(platform));\n const isIOS = isIPhone || isIPad;\n\n const isMac = /Mac/.test(platform) && !isIOS;\n\n const isAppleDevice = isIOS || isMac;\n\n // Chrome (and Chromium) also match /WebKit/.\n const isWebKit = /WebKit/.test(userAgent) && !/Chrome/.test(userAgent);\n\n // Chromium Edge includes Chrome in the UA.\n const isChrome =\n /Chrome/.test(userAgent) &&\n !/Edge/.test(userAgent) &&\n !/Edg/.test(userAgent);\n const isFirefox = /Firefox/.test(userAgent);\n\n const isAndroid = /Android/.test(userAgent);\n\n return {\n isIPhone,\n isIPad,\n isIOS,\n isMac,\n isAppleDevice,\n isWebKit,\n isChrome,\n isFirefox,\n isAndroid,\n };\n}\n","import { useMemo } from \"react\";\nimport { usePlatform } from \"../../usePlatform\";\n\nexport type InputMode = \"decimal\" | \"numeric\" | \"text\";\n\n/**\n * Selects a software-keyboard hint that keeps the required decimal and minus\n * keys available on iPhone and Android.\n */\nexport const useNumberFieldInputMode = ({\n hasDecimals,\n hasNegative,\n}: {\n hasDecimals: boolean;\n hasNegative: boolean;\n}) => {\n const platform = usePlatform();\n\n const inputMode: InputMode = useMemo(() => {\n let value: InputMode = \"decimal\";\n\n if (platform.isIPhone) {\n // iPad keyboards differ; this fallback is required only on iPhone.\n if (hasNegative) {\n // iPhone numeric and decimal keyboards omit the minus key.\n value = \"text\";\n } else if (hasDecimals) {\n value = \"decimal\";\n }\n } else if (platform.isAndroid) {\n if (hasNegative) {\n // Android's numeric keyboard includes both decimal and minus keys.\n value = \"numeric\";\n } else if (hasDecimals) {\n value = \"decimal\";\n }\n }\n\n return value;\n }, [hasDecimals, hasNegative, platform.isAndroid, platform.isIPhone]);\n\n return inputMode;\n};\n","export const isAllZeros = (str: string): boolean => /^0+$/.test(str);\n\nexport const isEmptyOrAllZeros = (str: string): boolean =>\n str === \"\" || /^0*$/.test(str);\n\nexport const isNonZeroDigit = (str: string): boolean => /^[1-9]$/.test(str);\n","import type { MaskitoPostprocessor, MaskitoPreprocessor } from \"@maskito/core\";\n\nimport { isAllZeros } from \"./numberMaskUtils\";\n\nexport interface TrailingDecimalHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n}\n\n/**\n * Creates processors to preserve trailing decimals during input.\n *\n * When `minimumFractionDigits` is 0, Maskito rejects trailing decimals (\"123.\").\n * This factory returns processors that temporarily append \"0\" to pass validation,\n * then trim it for display.\n */\nexport function createTrailingDecimalHandlers(): TrailingDecimalHandlers {\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n\n if (data === \".\" && actionType === \"insert\") {\n const afterCursor = value.slice(selStart);\n if (!afterCursor || !/^\\d/.test(afterCursor)) {\n return { elementState, data: \".0\" };\n }\n }\n\n if (actionType === \"deleteBackward\" || actionType === \"deleteForward\") {\n let simulatedValue: string;\n let newCursorPos: number;\n let charBeingDeleted: string;\n\n if (actionType === \"deleteBackward\") {\n if (selStart === selEnd && selStart > 0) {\n charBeingDeleted = value[selStart - 1];\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n newCursorPos = selStart - 1;\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n newCursorPos = selStart;\n }\n } else {\n if (selStart === selEnd && selStart < value.length) {\n charBeingDeleted = value[selStart];\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n }\n newCursorPos = selStart;\n }\n\n if (simulatedValue.endsWith(\".\")) {\n const decimalIndex = value.indexOf(\".\");\n const afterDecimal =\n decimalIndex !== -1 ? value.slice(decimalIndex + 1) : \"\";\n const isDeletingTrailingZeros =\n isAllZeros(afterDecimal) && isAllZeros(charBeingDeleted);\n\n if (!isDeletingTrailingZeros) {\n return {\n elementState: {\n value: simulatedValue + \"0\",\n selection: [newCursorPos, newCursorPos] as const,\n },\n data: \"\",\n };\n }\n }\n }\n\n return { elementState, data };\n };\n\n const postprocessor: MaskitoPostprocessor = (\n { value, selection },\n initialElementState,\n ) => {\n const initialValue = initialElementState.value;\n\n if (value.endsWith(\".0\")) {\n const initialDecimalIndex = initialValue.indexOf(\".\");\n const hasDigitsAfterDecimal =\n initialDecimalIndex !== -1 &&\n initialValue.slice(initialDecimalIndex + 1).length > 0;\n\n if (!initialValue.includes(\".\") || hasDigitsAfterDecimal) {\n return {\n value: value.slice(0, -1),\n selection: [selection[0], selection[1]],\n };\n }\n }\n\n return { value, selection };\n };\n\n return {\n preprocessor,\n postprocessor,\n };\n}\n","import type {\n MaskitoPlugin,\n MaskitoPostprocessor,\n MaskitoPreprocessor,\n} from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\n\nimport {\n isAllZeros,\n isEmptyOrAllZeros,\n isNonZeroDigit,\n} from \"./numberMaskUtils\";\n\ninterface TrailingZerosState {\n expectedValue: string | null;\n preserveUntilBlur: boolean;\n}\n\nexport interface TrailingZerosHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n blurPlugin: MaskitoPlugin;\n}\n\n/**\n * Creates processors to preserve trailing zeros during decimal input.\n *\n * When `minimumFractionDigits` is 0, Maskito's multi-pass validation strips\n * trailing zeros (e.g., \"123.0\" → \"123.\"). This factory returns coordinated\n * processors that preserve the user's intermediate text until blur.\n */\nexport function createTrailingZerosHandlers(\n params: Pick<\n MaskitoNumberParams,\n \"minimumFractionDigits\" | \"maximumFractionDigits\"\n >,\n): TrailingZerosHandlers {\n const maximumFractionDigits = params.maximumFractionDigits ?? 0;\n\n const state: TrailingZerosState = {\n expectedValue: null,\n preserveUntilBlur: false,\n };\n\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n const decimalIndex = value.indexOf(\".\");\n\n if (actionType === \"insert\" && data === \"0\" && decimalIndex !== -1) {\n const afterDecimal = value.slice(decimalIndex + 1);\n\n if (isEmptyOrAllZeros(afterDecimal)) {\n const zerosNeeded = afterDecimal.length + 1;\n if (zerosNeeded <= maximumFractionDigits) {\n state.expectedValue =\n value.slice(0, decimalIndex + 1) + \"0\".repeat(zerosNeeded);\n state.preserveUntilBlur = true;\n }\n }\n }\n\n if (\n (actionType === \"deleteBackward\" || actionType === \"deleteForward\") &&\n decimalIndex !== -1\n ) {\n let simulatedValue: string;\n\n if (selStart !== selEnd) {\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n } else if (actionType === \"deleteBackward\" && selStart > 0) {\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n } else if (actionType === \"deleteForward\" && selStart < value.length) {\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n return { elementState, data };\n }\n\n const simDecimalIndex = simulatedValue.indexOf(\".\");\n if (simDecimalIndex !== -1) {\n const simAfterDecimal = simulatedValue.slice(simDecimalIndex + 1);\n const currentAfterDecimal = value.slice(decimalIndex + 1);\n\n const deletionCreatesTrailingZeros = isAllZeros(simAfterDecimal);\n const deletionRemovesAllTrailingZeros =\n simAfterDecimal === \"\" && isAllZeros(currentAfterDecimal);\n\n if (deletionCreatesTrailingZeros) {\n state.expectedValue = simulatedValue;\n state.preserveUntilBlur = true;\n } else if (deletionRemovesAllTrailingZeros) {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n }\n }\n\n if (actionType === \"insert\" && isNonZeroDigit(data)) {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n\n return { elementState, data };\n };\n\n const postprocessor: MaskitoPostprocessor = ({ value, selection }) => {\n if (state.expectedValue !== null && state.preserveUntilBlur) {\n const targetValue = state.expectedValue;\n\n if (\n targetValue.startsWith(value) ||\n value.startsWith(targetValue.replace(/0+$/, \"\"))\n ) {\n return {\n value: targetValue,\n selection: [targetValue.length, targetValue.length],\n };\n }\n }\n\n return { value, selection };\n };\n\n const blurPlugin: MaskitoPlugin = (element) => {\n const onBlur = () => {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n };\n\n element.addEventListener(\"blur\", onBlur);\n\n return () => {\n element.removeEventListener(\"blur\", onBlur);\n };\n };\n\n return {\n preprocessor,\n postprocessor,\n blurPlugin,\n };\n}\n","import type { MaskitoOptions } from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\nimport { maskitoNumberOptionsGenerator } from \"@maskito/kit\";\n\nimport { createTrailingDecimalHandlers } from \"./createTrailingDecimalHandlers\";\nimport { createTrailingZerosHandlers } from \"./createTrailingZerosHandlers\";\n\n/**\n * Extends Maskito's number options with in-progress decimal processors when\n * `minimumFractionDigits` is 0.\n */\nexport function createNumberMaskOptions(\n params: MaskitoNumberParams,\n): MaskitoOptions {\n const baseOptions = maskitoNumberOptionsGenerator(params);\n const minimumFractionDigits = params.minimumFractionDigits ?? 0;\n\n if (minimumFractionDigits > 0) {\n return baseOptions;\n }\n\n const trailingDecimalHandlers = createTrailingDecimalHandlers();\n const trailingZerosHandlers = createTrailingZerosHandlers(params);\n\n return {\n ...baseOptions,\n preprocessors: [\n trailingDecimalHandlers.preprocessor,\n trailingZerosHandlers.preprocessor,\n ...(baseOptions.preprocessors ?? []),\n ],\n postprocessors: [\n ...(baseOptions.postprocessors ?? []),\n trailingDecimalHandlers.postprocessor,\n trailingZerosHandlers.postprocessor,\n ],\n plugins: [...(baseOptions.plugins ?? []), trailingZerosHandlers.blurPlugin],\n };\n}\n","import { useRef, useEffect } from \"react\";\n\nexport type UseNumberFieldKeysConfig = {\n increment: (amount: number) => void;\n decrement: (amount: number) => void;\n setToMin: () => void;\n setToMax: () => void;\n step: number;\n /** Applied to `step` for Page Up and Page Down. */\n largeStepMultiplier: number;\n /** Ignores all handled keys when `true`. */\n readOnly?: boolean;\n};\n\n/**\n * Attaches spinbutton keyboard controls: arrows step, Page Up/Down take a large\n * step, and Home/End move to the bounds.\n */\nfunction useNumberFieldKeys(config: UseNumberFieldKeysConfig) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (config.readOnly) return;\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n config.increment(config.step);\n break;\n case \"ArrowDown\":\n event.preventDefault();\n config.decrement(config.step);\n break;\n case \"PageUp\":\n event.preventDefault();\n config.increment(config.step * config.largeStepMultiplier);\n break;\n case \"PageDown\":\n event.preventDefault();\n config.decrement(config.step * config.largeStepMultiplier);\n break;\n case \"Home\":\n event.preventDefault();\n config.setToMin();\n break;\n case \"End\":\n event.preventDefault();\n config.setToMax();\n break;\n default:\n break;\n }\n };\n\n const inputElement = inputRef.current;\n if (inputElement) {\n inputElement.addEventListener(\"keydown\", handleKeyDown);\n }\n return () => {\n if (inputElement) {\n inputElement.removeEventListener(\"keydown\", handleKeyDown);\n }\n };\n }, [config]);\n\n return {\n inputRef,\n };\n}\n\nexport default useNumberFieldKeys;\n","/*\r\n * big.js v7.0.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2025 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) {\r\n return n === UNDEFINED && arguments.length === 0 ? _Big_() : new Big(n);\r\n }\r\n\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(+stringify(x, true, true));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\nif (typeof Symbol !== \"undefined\") {\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON;\r\n}\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitive number.\r\n */\r\nP.toNumber = function () {\r\n var n = +stringify(this, true, true);\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// <reference types=\"https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/master/types/big.js/index.d.ts\" />\r\nexport default Big;\r\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport { useOptionallyControlledState } from \"../useOptionallyControlledState\";\nimport { useNumberFieldInputMode } from \"./internal/useNumberFieldInputMode\";\nimport { useMaskito } from \"@maskito/react\";\nimport {\n type MaskitoNumberParams,\n maskitoParseNumber,\n maskitoStringifyNumber,\n} from \"@maskito/kit\";\nimport { createNumberMaskOptions } from \"./internal/createNumberMaskOptions\";\nimport useNumberFieldKeys from \"./internal/useNumberFieldKeys\";\nimport Big from \"big.js\";\nimport { usePrevious } from \"../usePrevious\";\n\nconst DEFAULT_MIN_VALUE = 0;\nconst DEFAULT_MAX_VALUE = 100_000_000_000_000;\n\nexport type UseNumberFieldConfig = {\n /** Included in the increment and decrement buttons' accessible names. */\n label?: string;\n /** Lower bound for stepping with the buttons or keyboard. Defaults to `0`. */\n minValue?: number;\n /**\n * Upper bound for stepping with the buttons or keyboard.\n * Defaults to `100000000000000`.\n */\n maxValue?: number;\n /** Magnitude used for button and arrow-key changes. Zero falls back to `1`. */\n step?: number;\n /** Numeric value to format when controlling the field. */\n value?: number | null;\n /** Initial numeric value when the field is uncontrolled. */\n defaultValue?: number | null;\n /**\n * Limits and rounds decimal input. Raised to `minimumFractionDigits` when lower.\n */\n maximumFractionDigits?: number;\n /** Pads the displayed value with trailing zeros. Defaults to `0`. */\n minimumFractionDigits?: number;\n /** Receives `null` for empty or unparseable input; a lone minus does not notify. */\n onChange?: (value: number | null) => void;\n /**\n * Ignores step, Page Up/Down, Home, and End keys without disabling text entry\n * or buttons.\n */\n readOnly?: boolean;\n};\n\nexport type UseNumberFieldReturnValue = {\n /** Parsed number, or `null` while empty, a lone minus, or unparseable. */\n value: number | null;\n /** Attach to the input to enable masking and keyboard controls. */\n inputRef: React.RefObject<HTMLInputElement>;\n /** Masked spinbutton props for the input. */\n inputProps: Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n | \"value\"\n | \"onChange\"\n | \"inputMode\"\n | \"aria-valuenow\"\n | \"aria-valuemin\"\n | \"aria-valuemax\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"role\"\n | \"pattern\"\n | \"type\"\n | \"autoComplete\"\n >;\n /** Props for a non-tabbable increment button. */\n incrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** Props for a non-tabbable decrement button. */\n decrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\n/**\n * Builds masked spinbutton and stepper-control props while preserving incomplete\n * negative and decimal input that cannot round-trip through a numeric value.\n */\nexport const useNumberField = (config: UseNumberFieldConfig) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const {\n minValue = DEFAULT_MIN_VALUE,\n maxValue = DEFAULT_MAX_VALUE,\n label = \"\",\n } = config;\n\n const step = config.step ? Math.abs(config.step) : 1;\n\n const minimumFractionDigits = Math.abs(config.minimumFractionDigits ?? 0);\n const maximumFractionDigits = Math.max(\n Math.abs(config.maximumFractionDigits ?? 0),\n minimumFractionDigits,\n );\n\n const previousMinimumFractionDigits = usePrevious(\n minimumFractionDigits,\n minimumFractionDigits,\n );\n\n const params: MaskitoNumberParams = useMemo(\n () => ({\n decimalSeparator: \".\",\n thousandSeparator: \",\",\n minusSign: \"-\",\n minimumFractionDigits,\n maximumFractionDigits,\n }),\n [minimumFractionDigits, maximumFractionDigits],\n );\n const options = useMemo(() => createNumberMaskOptions(params), [params]);\n\n const [isBeginningNegativeEntry, setIsBeginningNegativeEntry] =\n useState(false);\n\n // Controlled numeric values cannot represent in-progress text such as\n // \"123.\" or \"123.0\".\n const [isIncompleteDecimalEntry, setIsIncompleteDecimalEntry] =\n useState(false);\n const [incompleteDecimalValue, setIncompleteDecimalValue] = useState<\n string | null\n >(null);\n\n const [inputValue, setInputValue] = useOptionallyControlledState<\n string | null\n >({\n controlledValue: convertValueProp(config.value, { maskitoParams: params }),\n defaultValue:\n convertValueProp(config.defaultValue, { maskitoParams: params }) ?? null,\n onChange: (value) => {\n if (value === \"-\") {\n setIsBeginningNegativeEntry(true);\n return;\n }\n setIsBeginningNegativeEntry(false);\n if (value === null) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n return config.onChange?.(null);\n }\n const parsedValue = maskitoParseNumber(value, params);\n const nanSafeValue = isNaN(parsedValue) ? null : parsedValue;\n\n if (\n minimumFractionDigits === 0 &&\n value.includes(\".\") &&\n nanSafeValue !== null\n ) {\n const formatted = maskitoStringifyNumber(nanSafeValue, params);\n if (formatted !== value) {\n setIsIncompleteDecimalEntry(true);\n setIncompleteDecimalValue(value);\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n\n config.onChange?.(nanSafeValue);\n },\n });\n const previousInputValue = usePrevious(inputValue, inputValue);\n\n useEffect(() => {\n if (isBeginningNegativeEntry && previousInputValue !== inputValue) {\n setIsBeginningNegativeEntry(false);\n }\n }, [isBeginningNegativeEntry, inputValue, previousInputValue]);\n\n // Preserve in-progress text only while its parsed value still matches the\n // controlled value.\n useEffect(() => {\n if (isIncompleteDecimalEntry && incompleteDecimalValue) {\n const incompleteNumeric = maskitoParseNumber(\n incompleteDecimalValue,\n params,\n );\n const currentNumeric = inputValue\n ? maskitoParseNumber(inputValue, params)\n : null;\n\n const incompleteNanSafe = isNaN(incompleteNumeric)\n ? null\n : incompleteNumeric;\n if (incompleteNanSafe !== currentNumeric) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n }\n }, [isIncompleteDecimalEntry, incompleteDecimalValue, inputValue, params]);\n\n useEffect(() => {\n if (previousMinimumFractionDigits === minimumFractionDigits) return;\n setInputValue((previous) => {\n if (previous === null || previous === undefined) return null;\n const parsedValue = maskitoParseNumber(previous, params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n return maskitoStringifyNumber(nanSafeValue, params);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [minimumFractionDigits, previousMinimumFractionDigits]);\n\n const maskedInputRef = useMaskito({\n options,\n });\n\n const computedValue: Big | null = useMemo(() => {\n if (inputValue === null) return null;\n const parsedValue = maskitoParseNumber(inputValue, params);\n if (isNaN(parsedValue)) {\n return null;\n }\n const bigValue = new Big(parsedValue);\n return bigValue;\n }, [inputValue, params]);\n\n const clamp = useCallback(\n (value: number) => {\n return Math.min(Math.max(value, minValue), maxValue);\n },\n [minValue, maxValue],\n );\n\n const increment = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const incrementedValue = new Big(nanSafeValue).plus(amount);\n const clampedValue = clamp(incrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const decrement = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const decrementedValue = new Big(nanSafeValue).minus(amount);\n const clampedValue = clamp(decrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const setToMin = useCallback(() => {\n setInputValue(maskitoStringifyNumber(minValue, params));\n }, [minValue, params, setInputValue]);\n\n const setToMax = useCallback(() => {\n setInputValue(maskitoStringifyNumber(maxValue, params));\n }, [maxValue, params, setInputValue]);\n\n const { inputRef: keysInputRef } = useNumberFieldKeys({\n increment,\n decrement,\n setToMin,\n setToMax,\n step,\n largeStepMultiplier: 10,\n readOnly: config.readOnly,\n });\n\n const combinedInputRef = useMergeRefs([\n inputRef,\n maskedInputRef,\n keysInputRef,\n ]);\n\n const hasDecimals = minimumFractionDigits > 0 || maximumFractionDigits > 0;\n const hasNegative = minValue < 0;\n\n const inputMode = useNumberFieldInputMode({\n hasDecimals,\n hasNegative,\n });\n\n const pattern = useMemo(() => {\n if (hasNegative) {\n return `-?[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n if (hasDecimals) {\n return `[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n return \"[0-9]*\";\n }, [maximumFractionDigits, hasDecimals, hasNegative]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n if (newValue === \"\") {\n setInputValue(null);\n } else {\n setInputValue(newValue);\n }\n };\n\n return {\n value: computedValue?.toNumber() ?? null,\n inputRef: combinedInputRef,\n inputProps: {\n value: isBeginningNegativeEntry\n ? \"-\"\n : isIncompleteDecimalEntry\n ? (incompleteDecimalValue ?? \"\")\n : (inputValue ?? \"\"),\n onChange: handleInputChange,\n inputMode,\n \"aria-valuenow\": computedValue?.toNumber() ?? undefined,\n \"aria-valuemin\": minValue,\n \"aria-valuemax\": maxValue,\n min: minValue,\n max: maxValue,\n step,\n role: \"spinbutton\",\n pattern,\n type: \"text\",\n autoComplete: \"off\",\n },\n incrementButtonProps: {\n onClick: () => increment(step),\n disabled: computedValue?.gte(maxValue),\n tabIndex: -1,\n \"aria-label\": `Increment ${label ?? \"\"}`,\n },\n decrementButtonProps: {\n onClick: () => decrement(step),\n disabled: computedValue?.lte(minValue),\n tabIndex: -1,\n \"aria-label\": `Decrement ${label ?? \"\"}`,\n },\n };\n};\n\n/**\n * Formats an incoming value to the configured precision, falling back to zero\n * if invalid.\n */\nfunction convertValueProp(\n v: number | null | undefined,\n { maskitoParams }: { maskitoParams: MaskitoNumberParams },\n): string | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n let bigValue: Big;\n try {\n bigValue = new Big(v);\n } catch (_) {\n bigValue = new Big(0);\n }\n return maskitoStringifyNumber(\n bigValue.round(maskitoParams.maximumFractionDigits).toNumber(),\n maskitoParams,\n );\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[7]}
@@ -1 +1 @@
1
- {"version":3,"file":"useOnClickOutside-Zw5vzxSq.js","sources":["../src/internal/utils/layerManager.ts","../src/internal/hooks/useOnClickOutside/useOnClickOutside.ts"],"sourcesContent":["/**\n * Global layer manager for tracking overlay component stacking order.\n * Uses window-level state to support cross-bundle communication (e.g., MFEs).\n *\n * When multiple Dialog/Drawer components are open, only the topmost layer\n * should respond to outside click events. This manager tracks the z-order\n * to enable that behavior.\n */\n\nconst WINDOW_PROPERTY_LAYER_STACK = \"__ANVIL_LAYER_MANAGER__\" as const;\n\n// Declare global window property (matches DndSort pattern)\ndeclare global {\n interface Window {\n [WINDOW_PROPERTY_LAYER_STACK]?: string[];\n }\n}\n\n/**\n * Get or initialize the global layer stack on the window object.\n * This ensures all instances of the design system share the same layer stack,\n * even across different bundles (e.g., base app + MFEs).\n *\n * @returns The global layers array\n */\nconst getGlobalLayers = (): string[] => {\n // SSR safety check (matches usePrefersColorScheme pattern)\n if (typeof window === \"undefined\") {\n return [];\n }\n\n if (!window[WINDOW_PROPERTY_LAYER_STACK]) {\n window[WINDOW_PROPERTY_LAYER_STACK] = [];\n }\n\n return window[WINDOW_PROPERTY_LAYER_STACK];\n};\n\n/**\n * Register a new layer in the stack.\n * If the layer is already registered, this is a no-op.\n *\n * @param id - Unique identifier for the layer\n */\nexport const registerLayer = (id: string): void => {\n const layers = getGlobalLayers();\n if (!layers.includes(id)) {\n layers.push(id);\n }\n};\n\n/**\n * Unregister a layer from the stack.\n * If the layer is not found, this is a no-op.\n *\n * @param id - Unique identifier for the layer\n */\nexport const unregisterLayer = (id: string): void => {\n const layers = getGlobalLayers();\n const index = layers.indexOf(id);\n if (index !== -1) {\n layers.splice(index, 1);\n }\n};\n\n/**\n * Check if a layer is the topmost layer in the stack.\n *\n * @param id - Unique identifier for the layer\n * @returns True if the layer is on top, false otherwise\n */\nexport const isTopLayer = (id: string): boolean => {\n const layers = getGlobalLayers();\n return layers[layers.length - 1] === id;\n};\n\n/**\n * Get all registered layers in order (bottom to top).\n * Returns a readonly copy for debugging purposes.\n *\n * @returns Readonly array of layer IDs\n */\nexport const getLayers = (): readonly string[] => {\n const layers = getGlobalLayers();\n return [...layers];\n};\n","import { useEffect, useRef } from \"react\";\nimport { isTopLayer } from \"../../utils\";\n\n/**\n * Props for the useOnClickOutside hook\n */\ntype UseOnClickOutsideProps = {\n /**\n * Callback fired when a click begins outside target elements (on pointerdown)\n */\n onClickOutsideBegin?: (e: PointerEvent) => void;\n /**\n * Callback fired when a click completes outside target elements (on pointerup),\n * but only if the click also began outside the targets\n */\n onClickOutside?: (e: PointerEvent) => void;\n /**\n * Array of target elements to monitor\n */\n targets: (HTMLElement | undefined)[];\n /**\n * Whether to disable the useOnClickOutside hook\n */\n disable?: boolean;\n /**\n * Optional layer ID for stacking management. When provided, callbacks will only\n * fire if this layer is the topmost layer in the stack.\n */\n layerId?: string;\n};\n\n/**\n * Custom hook for detecting clicks outside of specified target elements.\n *\n * Features:\n * - Detects clicks outside of multiple target elements\n * - Supports both pointerdown and pointerup event handling (works for mouse and touch)\n * - Provides separate callbacks for click begin and complete actions\n * - Handles SSR environments gracefully\n * - Automatically cleans up event listeners\n * - Uses composedPath for accurate event target detection\n * - Supports optional callbacks for flexible usage\n *\n * @param props - Configuration object containing targets and optional callbacks\n * @returns void\n */\nexport const useOnClickOutside = ({\n onClickOutsideBegin,\n targets,\n onClickOutside,\n disable,\n layerId,\n}: UseOnClickOutsideProps) => {\n const pressStartedOutsideRef = useRef(false);\n\n useEffect(() => {\n if (disable || typeof document === \"undefined\") return;\n\n const isOutsideTargets = (e: PointerEvent) => {\n const path = e.composedPath();\n return !targets.some((el) => el && path.includes(el));\n };\n\n const handlePointerDown = (e: PointerEvent) => {\n const isOutside = isOutsideTargets(e);\n pressStartedOutsideRef.current = isOutside;\n\n if (isOutside && (!layerId || isTopLayer(layerId))) {\n onClickOutsideBegin?.(e);\n }\n };\n\n const handlePointerUp = (e: PointerEvent) => {\n const startedOutside = pressStartedOutsideRef.current;\n pressStartedOutsideRef.current = false; // Reset for next interaction\n\n if (startedOutside && isOutsideTargets(e)) {\n if (!layerId || isTopLayer(layerId)) {\n onClickOutside?.(e);\n }\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"pointerup\", handlePointerUp);\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [onClickOutside, onClickOutsideBegin, targets, disable, layerId]);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useOnClickOutside-Zw5vzxSq.js","sources":["../src/internal/utils/layerManager.ts","../src/internal/hooks/useOnClickOutside/useOnClickOutside.ts"],"sourcesContent":["/** Window key shared by separately bundled Anvil2 instances. */\nconst WINDOW_PROPERTY_LAYER_STACK = \"__ANVIL_LAYER_MANAGER__\" as const;\n\ndeclare global {\n interface Window {\n [WINDOW_PROPERTY_LAYER_STACK]?: string[];\n }\n}\n\nconst getGlobalLayers = (): string[] => {\n if (typeof window === \"undefined\") {\n return [];\n }\n\n if (!window[WINDOW_PROPERTY_LAYER_STACK]) {\n window[WINDOW_PROPERTY_LAYER_STACK] = [];\n }\n\n return window[WINDOW_PROPERTY_LAYER_STACK];\n};\n\n/**\n * Adds an unregistered layer to the top of the global stack.\n */\nexport const registerLayer = (id: string): void => {\n const layers = getGlobalLayers();\n if (!layers.includes(id)) {\n layers.push(id);\n }\n};\n\n/**\n * Removes a registered layer without disturbing the remaining order.\n */\nexport const unregisterLayer = (id: string): void => {\n const layers = getGlobalLayers();\n const index = layers.indexOf(id);\n if (index !== -1) {\n layers.splice(index, 1);\n }\n};\n\n/** Checks whether a layer is currently at the top of the global stack. */\nexport const isTopLayer = (id: string): boolean => {\n const layers = getGlobalLayers();\n return layers[layers.length - 1] === id;\n};\n\n/** Returns a bottom-to-top snapshot of the registered layer IDs. */\nexport const getLayers = (): readonly string[] => {\n const layers = getGlobalLayers();\n return [...layers];\n};\n","import { useEffect, useRef } from \"react\";\nimport { isTopLayer } from \"../../utils\";\n\ntype UseOnClickOutsideProps = {\n /** Pointerdown outside `targets`. */\n onClickOutsideBegin?: (e: PointerEvent) => void;\n /** Pointerup outside `targets`, only if that press also started outside. */\n onClickOutside?: (e: PointerEvent) => void;\n targets: (HTMLElement | undefined)[];\n disable?: boolean;\n /** When set, callbacks fire only if this layer is top of the overlay stack. */\n layerId?: string;\n};\n\n/**\n * Listens on `document`. Outside-ness uses `composedPath`, so shadow-tree\n * clicks still count as inside a target.\n */\nexport const useOnClickOutside = ({\n onClickOutsideBegin,\n targets,\n onClickOutside,\n disable,\n layerId,\n}: UseOnClickOutsideProps) => {\n const pressStartedOutsideRef = useRef(false);\n\n useEffect(() => {\n if (disable || typeof document === \"undefined\") return;\n\n const isOutsideTargets = (e: PointerEvent) => {\n const path = e.composedPath();\n return !targets.some((el) => el && path.includes(el));\n };\n\n const handlePointerDown = (e: PointerEvent) => {\n const isOutside = isOutsideTargets(e);\n pressStartedOutsideRef.current = isOutside;\n\n if (isOutside && (!layerId || isTopLayer(layerId))) {\n onClickOutsideBegin?.(e);\n }\n };\n\n const handlePointerUp = (e: PointerEvent) => {\n const startedOutside = pressStartedOutsideRef.current;\n pressStartedOutsideRef.current = false;\n\n if (startedOutside && isOutsideTargets(e)) {\n if (!layerId || isTopLayer(layerId)) {\n onClickOutside?.(e);\n }\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"pointerup\", handlePointerUp);\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [onClickOutside, onClickOutsideBegin, targets, disable, layerId]);\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOptionallyControlledState-DbDuos5L.js","sources":["../src/internal/hooks/useOptionallyControlledState/useOptionallyControlledState.ts"],"sourcesContent":["import {\n useState,\n useCallback,\n type SetStateAction,\n type Dispatch,\n} from \"react\";\n\n/**\n * Props for the useOptionallyControlledState hook\n */\ntype UseOptionallyControlledStateProps<T> = {\n /**\n * The controlled value of the state.\n * When provided, the component becomes controlled.\n */\n controlledValue?: T;\n /**\n * The default value of the state.\n * Used when the component is uncontrolled.\n */\n defaultValue?: T;\n /**\n * A function that is called when the value changes.\n * @param value The new value\n */\n onChange?: (value: T) => void;\n};\n\n/**\n * Custom hook for managing optionally controlled state.\n *\n * Features:\n * - Supports both controlled and uncontrolled state management\n * - Automatically switches between controlled and uncontrolled modes\n * - Provides consistent API regardless of control mode\n * - Handles onChange callbacks for both modes\n * - Uses useCallback for optimized setter function\n * - Supports generic types for flexible state values\n *\n * @param props - Configuration object containing controlled value, default value, and onChange callback\n * @returns Tuple containing current value and setter function\n */\n/**\n * Custom hook that manages state that can be either controlled or uncontrolled.\n *\n * This hook provides a unified interface for managing component state that can be\n * controlled externally or managed internally. It automatically detects whether\n * the component should be controlled based on the presence of a controlledValue.\n *\n * @param controlledValue - The controlled value (makes component controlled when provided)\n * @param defaultValue - The default value for uncontrolled mode\n * @param onChange - Callback function called when the value changes\n * @returns Tuple containing the current value and a setter function\n *\n * @example\n * const [value, setValue] = useOptionallyControlledState({\n * controlledValue: props.value,\n * defaultValue: 0,\n * onChange: props.onChange\n * });\n */\nexport function useOptionallyControlledState<T>({\n controlledValue,\n defaultValue,\n onChange,\n}: UseOptionallyControlledStateProps<T>): [\n T,\n Dispatch<SetStateAction<T | undefined>>,\n] {\n const [internalValue, setInternalValue] = useState<T | undefined>(\n defaultValue,\n );\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (newValue: SetStateAction<T | undefined>) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n if (typeof newValue === \"function\") {\n onChange?.(\n (newValue as (prevState: T | undefined) => T | undefined)(value) ??\n (value as T),\n );\n } else {\n onChange?.(newValue as T);\n }\n },\n [isControlled, onChange, value],\n );\n\n return [value as T, setValue];\n}\n"],"names":[],"mappings":";;AA6DO,SAAS,4BAAA,CAAgC;AAAA,EAC9C,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAGE;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA;AAAA,IACxC;AAAA,GACF;AAEA,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,aAAA;AAE/C,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,QAAA,KAA4C;AAC3C,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AACA,MAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AAClC,QAAA,QAAA;AAAA,UACG,QAAA,CAAyD,KAAK,CAAA,IAC5D;AAAA,SACL;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,QAAa,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,KAAK;AAAA,GAChC;AAEA,EAAA,OAAO,CAAC,OAAY,QAAQ,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"useOptionallyControlledState-DbDuos5L.js","sources":["../src/internal/hooks/useOptionallyControlledState/useOptionallyControlledState.ts"],"sourcesContent":["import {\n useState,\n useCallback,\n type SetStateAction,\n type Dispatch,\n} from \"react\";\n\ntype UseOptionallyControlledStateProps<T> = {\n controlledValue?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n};\n\n/**\n * Uses a defined controlled value when provided; otherwise stores state from\n * the default value. Setters notify `onChange` in either mode.\n */\nexport function useOptionallyControlledState<T>({\n controlledValue,\n defaultValue,\n onChange,\n}: UseOptionallyControlledStateProps<T>): [\n T,\n Dispatch<SetStateAction<T | undefined>>,\n] {\n const [internalValue, setInternalValue] = useState<T | undefined>(\n defaultValue,\n );\n\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (newValue: SetStateAction<T | undefined>) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n if (typeof newValue === \"function\") {\n onChange?.(\n (newValue as (prevState: T | undefined) => T | undefined)(value) ??\n (value as T),\n );\n } else {\n onChange?.(newValue as T);\n }\n },\n [isControlled, onChange, value],\n );\n\n return [value as T, setValue];\n}\n"],"names":[],"mappings":";;AAiBO,SAAS,4BAAA,CAAgC;AAAA,EAC9C,eAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAGE;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA;AAAA,IACxC;AAAA,GACF;AAEA,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,aAAA;AAE/C,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,QAAA,KAA4C;AAC3C,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,MAC3B;AACA,MAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AAClC,QAAA,QAAA;AAAA,UACG,QAAA,CAAyD,KAAK,CAAA,IAC5D;AAAA,SACL;AAAA,MACF,CAAA,MAAO;AACL,QAAA,QAAA,GAAW,QAAa,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAA,EAAc,QAAA,EAAU,KAAK;AAAA,GAChC;AAEA,EAAA,OAAO,CAAC,OAAY,QAAQ,CAAA;AAC9B;;;;"}
@@ -68,6 +68,7 @@ const useOpenCloseTransitionStates = (openProp, options = {
68
68
  * tabbable 6.4.0
69
69
  * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
70
70
  */
71
+
71
72
  // NOTE: separate `:not()` selectors has broader browser support than the newer
72
73
  // `:not([inert], [inert] *)` (Feb 2023)
73
74
  var candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];
@@ -681,4 +682,4 @@ const usePopoverTransitionStates = (popover, openProp, options = {}) => {
681
682
  };
682
683
 
683
684
  export { usePopoverTransitionStates as a, isFocusable as b, index_esm as c, focusable as f, getTabIndex as g, isTabbable as i, tabbable as t, useOpenCloseTransitionStates as u };
684
- //# sourceMappingURL=usePopoverTransitionStates-B1opfxxn.js.map
685
+ //# sourceMappingURL=usePopoverTransitionStates-CDXCdyKa.js.map