@servicetitan/anvil2 3.16.1 → 3.18.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 (395) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/{AiMark-BfmK30vL.js → AiMark-Ca7WmL-9.js} +114 -33
  3. package/dist/AiMark-Ca7WmL-9.js.map +1 -0
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-lLo1N7Tj.js → Alert-BOqBFMUV.js} +3 -3
  6. package/dist/{Alert-lLo1N7Tj.js.map → Alert-BOqBFMUV.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{Announcement-PfnsVVz1.js → Announcement-AN9HnhZ-.js} +2 -2
  9. package/dist/{Announcement-PfnsVVz1.js.map → Announcement-AN9HnhZ-.js.map} +1 -1
  10. package/dist/Announcement.js +1 -1
  11. package/dist/{AnvilProvider-DagOuc9c.js → AnvilProvider-BVTxXzoS.js} +3 -3
  12. package/dist/{AnvilProvider-DagOuc9c.js.map → AnvilProvider-BVTxXzoS.js.map} +1 -1
  13. package/dist/AnvilProvider.js +1 -1
  14. package/dist/{Breadcrumbs-RdL4Fvmu.js → Breadcrumbs-1MCqy-gU.js} +2 -2
  15. package/dist/{Breadcrumbs-RdL4Fvmu.js.map → Breadcrumbs-1MCqy-gU.js.map} +1 -1
  16. package/dist/Breadcrumbs.js +1 -1
  17. package/dist/{Button-Dn6-01xl.js → Button-B_E6ybA-.js} +3 -3
  18. package/dist/{Button-Dn6-01xl.js.map → Button-B_E6ybA-.js.map} +1 -1
  19. package/dist/Button.js +1 -1
  20. package/dist/{ButtonToggle-BSU8GBxr.js → ButtonToggle-D0eXySEM.js} +2 -2
  21. package/dist/{ButtonToggle-BSU8GBxr.js.map → ButtonToggle-D0eXySEM.js.map} +1 -1
  22. package/dist/ButtonToggle.js +1 -1
  23. package/dist/{luxon-wpz4A-OQ.js → Calendar-BcsuV4Xv.js} +1761 -3
  24. package/dist/Calendar-BcsuV4Xv.js.map +1 -0
  25. package/dist/{Calendar-DoLRAWLp.js → Calendar-oBRbQqnG.js} +2 -2
  26. package/dist/{Calendar-DoLRAWLp.js.map → Calendar-oBRbQqnG.js.map} +1 -1
  27. package/dist/Calendar.js +2 -2
  28. package/dist/{Checkbox-U-kuWhgc.js → Checkbox-BCaUzwF_.js} +2 -2
  29. package/dist/{Checkbox-U-kuWhgc.js.map → Checkbox-BCaUzwF_.js.map} +1 -1
  30. package/dist/{Checkbox-CVxbe-iN.js → Checkbox-BocPrjKC.js} +4 -4
  31. package/dist/{Checkbox-CVxbe-iN.js.map → Checkbox-BocPrjKC.js.map} +1 -1
  32. package/dist/Checkbox.js +1 -1
  33. package/dist/{Chip-2OydLs66.js → Chip-BWqgUX71.js} +11 -24
  34. package/dist/Chip-BWqgUX71.js.map +1 -0
  35. package/dist/Chip.js +1 -1
  36. package/dist/Combobox.js +1 -1
  37. package/dist/{DataTable-DIXP9-Bx.js → DataTableEditColumnsDrawer-C7OHRsJU.js} +1373 -289
  38. package/dist/DataTableEditColumnsDrawer-C7OHRsJU.js.map +1 -0
  39. package/dist/{DataTable.css → DataTableEditColumnsDrawer.css} +90 -33
  40. package/dist/{DateFieldRange-X2jdOTYY.js → DateFieldRange-BPcsS6TW.js} +6 -7
  41. package/dist/{DateFieldRange-X2jdOTYY.js.map → DateFieldRange-BPcsS6TW.js.map} +1 -1
  42. package/dist/DateFieldRange.js +1 -1
  43. package/dist/{DateFieldSingle-BJ16tpOz.js → DateFieldSingle-BRMhe0OM.js} +6 -7
  44. package/dist/{DateFieldSingle-BJ16tpOz.js.map → DateFieldSingle-BRMhe0OM.js.map} +1 -1
  45. package/dist/DateFieldSingle.js +1 -1
  46. package/dist/{DateFieldYearless-CMm8vtz_.js → DateFieldYearless-NOgDKzrJ.js} +6 -6
  47. package/dist/{DateFieldYearless-CMm8vtz_.js.map → DateFieldYearless-NOgDKzrJ.js.map} +1 -1
  48. package/dist/DateFieldYearless.js +1 -1
  49. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js → DateFieldYearlessRange-ChvypgXC.js} +5 -5
  50. package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js.map → DateFieldYearlessRange-ChvypgXC.js.map} +1 -1
  51. package/dist/DateFieldYearlessRange.js +1 -1
  52. package/dist/{DaysOfTheWeek-BHXxs0Bo.js → DaysOfTheWeek-nYitIKnQ.js} +4 -4
  53. package/dist/{DaysOfTheWeek-BHXxs0Bo.js.map → DaysOfTheWeek-nYitIKnQ.js.map} +1 -1
  54. package/dist/DaysOfTheWeek.js +1 -1
  55. package/dist/Details-B2F3auTX.js +216 -0
  56. package/dist/Details-B2F3auTX.js.map +1 -0
  57. package/dist/{Details-BxqP-5vp.js → Details-DQ-_Mg4o.js} +3 -3
  58. package/dist/{Details-BxqP-5vp.js.map → Details-DQ-_Mg4o.js.map} +1 -1
  59. package/dist/Details.css +92 -68
  60. package/dist/Details.js +1 -1
  61. package/dist/Details2.css +137 -0
  62. package/dist/{Dialog-_tHqOsbr.js → Dialog-BgWoV2on.js} +10 -7
  63. package/dist/Dialog-BgWoV2on.js.map +1 -0
  64. package/dist/Dialog.js +1 -1
  65. package/dist/{DialogCancelButton-C0r8hJ8Z.js → DialogCancelButton-CplrFu69.js} +2 -2
  66. package/dist/{DialogCancelButton-C0r8hJ8Z.js.map → DialogCancelButton-CplrFu69.js.map} +1 -1
  67. package/dist/Dnd.js +2 -2
  68. package/dist/{DndHandleButton-BRlodkDO.js → DndHandleButton-BJqj2hc0.js} +6 -4
  69. package/dist/DndHandleButton-BJqj2hc0.js.map +1 -0
  70. package/dist/DndSort.js +2 -2
  71. package/dist/{Drawer-D-ThWNp0.js → Drawer-BVBLtGn_.js} +12 -9
  72. package/dist/Drawer-BVBLtGn_.js.map +1 -0
  73. package/dist/Drawer.js +1 -1
  74. package/dist/DrillDown.css +41 -34
  75. package/dist/DrillDown.js +1 -1
  76. package/dist/DrillDown.module-BFE5BcJB.js +28 -0
  77. package/dist/DrillDown.module-BFE5BcJB.js.map +1 -0
  78. package/dist/{EditCard-B6l2vhBS.js → EditCard-hivZDPZh.js} +3 -3
  79. package/dist/{EditCard-B6l2vhBS.js.map → EditCard-hivZDPZh.js.map} +1 -1
  80. package/dist/EditCard.js +1 -1
  81. package/dist/{FieldLabel-ThEmUiAq.js → FieldLabel-Cn559Brf.js} +8 -58
  82. package/dist/FieldLabel-Cn559Brf.js.map +1 -0
  83. package/dist/FieldLabel.css +1 -12
  84. package/dist/FieldLabel.js +1 -1
  85. package/dist/FieldMessage.js +1 -1
  86. package/dist/{FilterBar-CGsDg6Hy.js → FilterBar-COd38Ent.js} +7 -7
  87. package/dist/{FilterBar-CGsDg6Hy.js.map → FilterBar-COd38Ent.js.map} +1 -1
  88. package/dist/FilterBar.js +1 -1
  89. package/dist/InlineMarkdown-CL1tKR01.js +87 -0
  90. package/dist/InlineMarkdown-CL1tKR01.js.map +1 -0
  91. package/dist/InlineMarkdown.css +12 -0
  92. package/dist/{InputMask-BQigi5oW.js → InputMask-DICWdeiF.js} +3 -3
  93. package/dist/{InputMask-BQigi5oW.js.map → InputMask-DICWdeiF.js.map} +1 -1
  94. package/dist/InputMask.js +1 -1
  95. package/dist/{ListView-YJscfG4x.js → ListView-BeGBn5Vk.js} +87 -108
  96. package/dist/ListView-BeGBn5Vk.js.map +1 -0
  97. package/dist/ListView.js +1 -1
  98. package/dist/{Listbox-CD9ZptSZ.js → Listbox-n1CmJ2gh.js} +2 -2
  99. package/dist/{Listbox-CD9ZptSZ.js.map → Listbox-n1CmJ2gh.js.map} +1 -1
  100. package/dist/Listbox.js +1 -1
  101. package/dist/{Menu-Da2OEN0o.js → Menu-DqP7YQgE.js} +2 -2
  102. package/dist/{Menu-Da2OEN0o.js.map → Menu-DqP7YQgE.js.map} +1 -1
  103. package/dist/Menu.js +1 -1
  104. package/dist/{MenuFooter-D__gg92C.js → MenuFooter-Dzhv0EfD.js} +2 -2
  105. package/dist/{MenuFooter-D__gg92C.js.map → MenuFooter-Dzhv0EfD.js.map} +1 -1
  106. package/dist/MultiSelectField.js +1 -1
  107. package/dist/{MultiSelectFieldSync-Cq5sena6.js → MultiSelectFieldSync-CWsOdu-o.js} +45 -63
  108. package/dist/MultiSelectFieldSync-CWsOdu-o.js.map +1 -0
  109. package/dist/MultiSelectFieldSync.css +107 -69
  110. package/dist/MultiSelectMenu.js +1 -1
  111. package/dist/{MultiSelectMenuSync-BhNXsgAN.js → MultiSelectMenuSync-AVcf8ZUZ.js} +17 -30
  112. package/dist/MultiSelectMenuSync-AVcf8ZUZ.js.map +1 -0
  113. package/dist/{useNumberField-CXFYUZ_n.js → NumberField-DjOvcCa1.js} +251 -5
  114. package/dist/NumberField-DjOvcCa1.js.map +1 -0
  115. package/dist/NumberField.js +1 -1
  116. package/dist/{Page-ZSHNJs7z.js → Page-_dh-JesM.js} +134 -85
  117. package/dist/Page-_dh-JesM.js.map +1 -0
  118. package/dist/Page.css +85 -80
  119. package/dist/Page.js +1 -1
  120. package/dist/{Pagination-Bsl99RRI.js → Pagination-CsSpaTCs.js} +5 -5
  121. package/dist/{Pagination-Bsl99RRI.js.map → Pagination-CsSpaTCs.js.map} +1 -1
  122. package/dist/Pagination.js +1 -1
  123. package/dist/{Popover-CIh1CsoJ.js → Popover-CEKl0WY3.js} +4 -4
  124. package/dist/{Popover-CIh1CsoJ.js.map → Popover-CEKl0WY3.js.map} +1 -1
  125. package/dist/Popover.js +1 -1
  126. package/dist/{ProgressBar-zPKYv4Il.js → ProgressBar-ubCKKewC.js} +3 -3
  127. package/dist/{ProgressBar-zPKYv4Il.js.map → ProgressBar-ubCKKewC.js.map} +1 -1
  128. package/dist/ProgressBar.js +1 -1
  129. package/dist/{Radio-C1VnatcL.js → Radio-DkB6zFsS.js} +2 -2
  130. package/dist/{Radio-C1VnatcL.js.map → Radio-DkB6zFsS.js.map} +1 -1
  131. package/dist/{Radio-BYowelK2.js → Radio-q1Vp_ZQG.js} +4 -4
  132. package/dist/{Radio-BYowelK2.js.map → Radio-q1Vp_ZQG.js.map} +1 -1
  133. package/dist/Radio.js +1 -1
  134. package/dist/{RichTextEditor-DcAVqd2d.js → RichTextEditor-BHt6sWMA.js} +11 -11
  135. package/dist/{RichTextEditor-DcAVqd2d.js.map → RichTextEditor-BHt6sWMA.js.map} +1 -1
  136. package/dist/RichTextEditor.js +1 -1
  137. package/dist/{SavedFiltersButton-BLvi8j1T.js → SavedFiltersButton-Cl58iHZe.js} +10 -10
  138. package/dist/{SavedFiltersButton-BLvi8j1T.js.map → SavedFiltersButton-Cl58iHZe.js.map} +1 -1
  139. package/dist/SavedFiltersButton.js +1 -1
  140. package/dist/{SearchField-ChoNtw8w.js → SearchField-Bk-Ltu4v.js} +2 -2
  141. package/dist/{SearchField-ChoNtw8w.js.map → SearchField-Bk-Ltu4v.js.map} +1 -1
  142. package/dist/{SearchField-DX8hZyo2.js → SearchField-INVftpNM.js} +2 -2
  143. package/dist/{SearchField-DX8hZyo2.js.map → SearchField-INVftpNM.js.map} +1 -1
  144. package/dist/SearchField.js +1 -1
  145. package/dist/{SegmentedControl-BHVJmmTH.js → SegmentedControl-BCqWq65N.js} +3 -3
  146. package/dist/{SegmentedControl-BHVJmmTH.js.map → SegmentedControl-BCqWq65N.js.map} +1 -1
  147. package/dist/SegmentedControl.js +1 -1
  148. package/dist/{SelectCard-DrmMU_GD.js → SelectCard-DeAUW1bL.js} +3 -3
  149. package/dist/{SelectCard-DrmMU_GD.js.map → SelectCard-DeAUW1bL.js.map} +1 -1
  150. package/dist/SelectCard.js +1 -1
  151. package/dist/SelectField.js +1 -1
  152. package/dist/{SelectFieldLabel-BxsKvfqo.js → SelectFieldLabel-DaXwIFZj.js} +2 -2
  153. package/dist/{SelectFieldLabel-BxsKvfqo.js.map → SelectFieldLabel-DaXwIFZj.js.map} +1 -1
  154. package/dist/{SelectFieldSync-CeazN-gI.js → SelectFieldSync-DpZL4wDo.js} +48 -69
  155. package/dist/SelectFieldSync-DpZL4wDo.js.map +1 -0
  156. package/dist/SelectMenu.js +1 -1
  157. package/dist/{SelectMenuSync-CPpE6vUG.js → SelectMenuSync-Klna2oqs.js} +17 -36
  158. package/dist/SelectMenuSync-Klna2oqs.js.map +1 -0
  159. package/dist/{SelectOptions-BDAu_9dv.js → SelectOptions-DGYYFU8i.js} +2 -2
  160. package/dist/{SelectOptions-BDAu_9dv.js.map → SelectOptions-DGYYFU8i.js.map} +1 -1
  161. package/dist/{SelectTrigger-B4OUTO9S.js → SelectTrigger-DKY7rpZn.js} +2 -2
  162. package/dist/{SelectTrigger-B4OUTO9S.js.map → SelectTrigger-DKY7rpZn.js.map} +1 -1
  163. package/dist/SelectTrigger.js +1 -1
  164. package/dist/{SelectTriggerBase-BTWSaiQ-.js → SelectTriggerBase-DUYq_L-6.js} +6 -6
  165. package/dist/{SelectTriggerBase-BTWSaiQ-.js.map → SelectTriggerBase-DUYq_L-6.js.map} +1 -1
  166. package/dist/SelectTriggerBase.css +94 -56
  167. package/dist/SelectTriggerBase.module-C-NmZbg4.js +41 -0
  168. package/dist/SelectTriggerBase.module-C-NmZbg4.js.map +1 -0
  169. package/dist/{Stepper-l_P6VPOv.js → Stepper-D3SHXfX1.js} +3 -3
  170. package/dist/{Stepper-l_P6VPOv.js.map → Stepper-D3SHXfX1.js.map} +1 -1
  171. package/dist/Stepper.js +1 -1
  172. package/dist/{Switch-1iNdXTik.js → Switch-C9yQgF4w.js} +2 -2
  173. package/dist/{Switch-1iNdXTik.js.map → Switch-C9yQgF4w.js.map} +1 -1
  174. package/dist/Switch.js +1 -1
  175. package/dist/{Tab-DR5YYXkq.js → Tab-CXwVQ5-G.js} +11 -7
  176. package/dist/Tab-CXwVQ5-G.js.map +1 -0
  177. package/dist/Tab.js +1 -1
  178. package/dist/Table.js +1 -1
  179. package/dist/{Text-rihxXHSe.js → Text-D4SWT4u-.js} +2 -2
  180. package/dist/{Text-rihxXHSe.js.map → Text-D4SWT4u-.js.map} +1 -1
  181. package/dist/Text.js +1 -1
  182. package/dist/{TextField-vuS7xeo-.js → TextField-CKXSxube.js} +5 -5
  183. package/dist/{TextField-vuS7xeo-.js.map → TextField-CKXSxube.js.map} +1 -1
  184. package/dist/{TextField-Bxd-Qzoi.js → TextField-DmdT2k0w.js} +2 -2
  185. package/dist/{TextField-Bxd-Qzoi.js.map → TextField-DmdT2k0w.js.map} +1 -1
  186. package/dist/TextField.css +38 -23
  187. package/dist/TextField.js +1 -1
  188. package/dist/TextField.module-B3y6caP9.js +25 -0
  189. package/dist/TextField.module-B3y6caP9.js.map +1 -0
  190. package/dist/{Textarea-ppapJUwh.js → Textarea-Dv__veBJ.js} +11 -11
  191. package/dist/{Textarea-ppapJUwh.js.map → Textarea-Dv__veBJ.js.map} +1 -1
  192. package/dist/Textarea.css +26 -11
  193. package/dist/Textarea.js +1 -1
  194. package/dist/{ThemeProvider-DW-Mflv6.js → ThemeProvider-DS2aL89d.js} +2 -2
  195. package/dist/{ThemeProvider-DW-Mflv6.js.map → ThemeProvider-DS2aL89d.js.map} +1 -1
  196. package/dist/ThemeProvider.css +6 -4
  197. package/dist/ThemeProvider.js +1 -1
  198. package/dist/ThemeProvider.module-BkKwAw2f.js +8 -0
  199. package/dist/ThemeProvider.module-BkKwAw2f.js.map +1 -0
  200. package/dist/{TimeField-Hwt_oRbg.js → TimeField-De9qBimk.js} +49 -11
  201. package/dist/TimeField-De9qBimk.js.map +1 -0
  202. package/dist/TimeField.js +1 -1
  203. package/dist/{TimezoneMessage-BrKB_psP.js → TimezoneMessage-DEJX87S3.js} +2 -2
  204. package/dist/{TimezoneMessage-BrKB_psP.js.map → TimezoneMessage-DEJX87S3.js.map} +1 -1
  205. package/dist/Toast.js +2 -2
  206. package/dist/{Toaster-dVGVVcat.js → Toaster-BlwTxTLf.js} +2 -2
  207. package/dist/{Toaster-dVGVVcat.js.map → Toaster-BlwTxTLf.js.map} +1 -1
  208. package/dist/{Toaster-SqkX0Kes.js → Toaster-sO16N9b5.js} +26 -14
  209. package/dist/Toaster-sO16N9b5.js.map +1 -0
  210. package/dist/{Toolbar-DGHZpFi9.js → Toolbar-BhrHuIN7.js} +7 -7
  211. package/dist/{Toolbar-DGHZpFi9.js.map → Toolbar-BhrHuIN7.js.map} +1 -1
  212. package/dist/{Toolbar-CMulzswf.js → Toolbar-Buq2zze0.js} +6 -6
  213. package/dist/{Toolbar-CMulzswf.js.map → Toolbar-Buq2zze0.js.map} +1 -1
  214. package/dist/Toolbar.js +2 -2
  215. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js → ToolbarButtonToggle-CNIaqVWl.js} +3 -3
  216. package/dist/{ToolbarButtonToggle-T8YnSJ5x.js.map → ToolbarButtonToggle-CNIaqVWl.js.map} +1 -1
  217. package/dist/{Tooltip-C_VcYS9P.js → Tooltip-CsTkZqMg.js} +3 -3
  218. package/dist/{Tooltip-C_VcYS9P.js.map → Tooltip-CsTkZqMg.js.map} +1 -1
  219. package/dist/Tooltip.js +1 -1
  220. package/dist/TreeSelectField.js +1 -1
  221. package/dist/{TreeSelectFieldSync-DT6uZ3Ca.js → TreeSelectFieldSync-B7w31kbz.js} +23 -23
  222. package/dist/{TreeSelectFieldSync-DT6uZ3Ca.js.map → TreeSelectFieldSync-B7w31kbz.js.map} +1 -1
  223. package/dist/TreeSelectFieldSync.css +57 -34
  224. package/dist/TreeSelectMenu.js +1 -1
  225. package/dist/{TreeSelectMenuSync-D2TvKxP-.js → TreeSelectMenuSync-EjxlvDZp.js} +5 -5
  226. package/dist/{TreeSelectMenuSync-D2TvKxP-.js.map → TreeSelectMenuSync-EjxlvDZp.js.map} +1 -1
  227. package/dist/{TypeaheadTextField-DgazozK7.js → TypeaheadTextField-DTOkaJda.js} +3 -3
  228. package/dist/{TypeaheadTextField-DgazozK7.js.map → TypeaheadTextField-DTOkaJda.js.map} +1 -1
  229. package/dist/TypeaheadTextField.js +1 -1
  230. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js → YearlessDateInputWithPicker-DJUQypnF.js} +4 -4
  231. package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js.map → YearlessDateInputWithPicker-DJUQypnF.js.map} +1 -1
  232. package/dist/assets/icons/st/gnav_messages_active.svg +1 -0
  233. package/dist/assets/icons/st/gnav_messages_inactive.svg +1 -0
  234. package/dist/assets/icons/st.ts +2 -0
  235. package/dist/beta.js +19 -18
  236. package/dist/beta.js.map +1 -1
  237. package/dist/{bulkActionTypes-SukoplGV.js → bulkActionTypes-bznuvizE.js} +2 -2
  238. package/dist/{bulkActionTypes-SukoplGV.js.map → bulkActionTypes-bznuvizE.js.map} +1 -1
  239. package/dist/{filter-state-D3-SYfuy.js → filter-state-DxwL15y1.js} +25 -25
  240. package/dist/{filter-state-D3-SYfuy.js.map → filter-state-DxwL15y1.js.map} +1 -1
  241. package/dist/{index-C2dOrf4N.js → index-Bn56UnMm.js} +2 -2
  242. package/dist/{index-C2dOrf4N.js.map → index-Bn56UnMm.js.map} +1 -1
  243. package/dist/{index-Bldaza5t.js → index-CyN5oapA.js} +2 -2
  244. package/dist/{index-Bldaza5t.js.map → index-CyN5oapA.js.map} +1 -1
  245. package/dist/index-DfZCfS0S.js +36 -0
  246. package/dist/index-DfZCfS0S.js.map +1 -0
  247. package/dist/{index.esm-C2ZhC_8d.js → index.esm-CQXMoq5w.js} +2 -2
  248. package/dist/{index.esm-C2ZhC_8d.js.map → index.esm-CQXMoq5w.js.map} +1 -1
  249. package/dist/index.js +171 -127
  250. package/dist/index.js.map +1 -1
  251. package/dist/index2.css +78 -73
  252. package/dist/{portalScopeClassNames-DA28LrXe.js → portalScopeClassNames-CMdDYHE0.js} +2 -2
  253. package/dist/{portalScopeClassNames-DA28LrXe.js.map → portalScopeClassNames-CMdDYHE0.js.map} +1 -1
  254. package/dist/{react-ORV84FjM.js → react-CG1BUt2y.js} +5 -38
  255. package/dist/react-CG1BUt2y.js.map +1 -0
  256. package/dist/src/beta/components/Details/Details.d.ts +25 -0
  257. package/dist/src/beta/components/Details/DetailsSummary.d.ts +121 -0
  258. package/dist/src/beta/components/Details/index.d.ts +4 -0
  259. package/dist/src/beta/components/Details/internal/DetailsArrow.d.ts +11 -0
  260. package/dist/src/beta/components/Details/internal/DetailsSummaryCells.d.ts +5 -0
  261. package/dist/src/beta/components/Page/Page.d.ts +1 -0
  262. package/dist/src/beta/components/Page/PageSidebar.d.ts +12 -0
  263. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +31 -4
  264. package/dist/src/beta/components/Table/DataTable/DataTableEditColumnsDrawer.d.ts +18 -0
  265. package/dist/src/beta/components/Table/DataTable/index.d.ts +1 -0
  266. package/dist/src/beta/components/Table/DataTable/internal/DataTableAddRow.d.ts +11 -0
  267. package/dist/src/beta/components/Table/DataTable/internal/DataTableBulkActionBar.d.ts +23 -0
  268. package/dist/src/beta/components/Table/DataTable/internal/DataTableFilterToolbar.d.ts +12 -0
  269. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +3 -3
  270. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/EditColumnsDrawer.d.ts +29 -0
  271. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/columnLayout.d.ts +43 -0
  272. package/dist/src/beta/components/Table/DataTable/internal/columnEditing/toEditColumnsSection.d.ts +7 -0
  273. package/dist/src/beta/components/Table/DataTable/internal/context/tabbables/CellTabbablesQueue.d.ts +23 -0
  274. package/dist/src/beta/components/Table/DataTable/parts.d.ts +17 -0
  275. package/dist/src/beta/components/Table/DataTable/types.d.ts +256 -2
  276. package/dist/src/beta/components/Table/types.d.ts +6 -0
  277. package/dist/src/beta/components/deprecatedReexports/MultiSelectField.d.ts +4 -4
  278. package/dist/src/beta/components/deprecatedReexports/MultiSelectMenu.d.ts +4 -4
  279. package/dist/src/beta/components/deprecatedReexports/SelectField.d.ts +4 -4
  280. package/dist/src/beta/components/deprecatedReexports/SelectMenu.d.ts +4 -4
  281. package/dist/src/beta/components/index.d.ts +1 -0
  282. package/dist/src/components/DrillDown/DrillDownHeader.d.ts +11 -2
  283. package/dist/src/components/DrillDown/index.d.ts +1 -1
  284. package/dist/src/components/DrillDown/internal/DrillDownContext.d.ts +7 -2
  285. package/dist/src/components/DrillDown/internal/useDrillDownContextState.d.ts +6 -3
  286. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  287. package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  288. package/dist/src/components/MultiSelectField/internal/types.d.ts +0 -1
  289. package/dist/src/components/Page/Page.d.ts +1 -0
  290. package/dist/src/components/Page/PageSidebar.d.ts +12 -0
  291. package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  292. package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  293. package/dist/src/hooks/usePrefersReducedMotion/index.d.ts +2 -0
  294. package/dist/src/hooks/usePrefersReducedMotion/prefersReducedMotion.d.ts +6 -0
  295. package/dist/src/hooks/usePrefersReducedMotion/useReducedMotion.d.ts +5 -0
  296. package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +8 -1
  297. package/dist/src/internal/components/InlineMarkdown/index.d.ts +1 -1
  298. package/dist/src/internal/components/Popover/Popover.d.ts +10 -5
  299. package/dist/src/internal/components/Popover/internal/verticalPlacement.d.ts +9 -0
  300. package/dist/src/internal/contexts/DisableConditionalUnmountWarningContext.d.ts +6 -0
  301. package/dist/src/internal/contexts/SuppressPanelSwapWarningContext.d.ts +13 -0
  302. package/dist/src/internal/functions/inlineMarkdown.d.ts +5 -2
  303. package/dist/src/internal/functions/stripInlineMarkdown.d.ts +4 -2
  304. package/dist/src/internal/hooks/index.d.ts +1 -0
  305. package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +9 -1
  306. package/dist/src/internal/hooks/useSelectOrchestration.d.ts +0 -1
  307. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/index.d.ts +1 -0
  308. package/dist/src/internal/hooks/useWarnOnConditionalUnmount/useWarnOnConditionalUnmount.d.ts +1 -0
  309. package/dist/src/internal/testing/keepMutationObserversAlive.d.ts +9 -0
  310. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +0 -1
  311. package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  312. package/dist/stripInlineMarkdown-BV12XXzl.js +35 -0
  313. package/dist/stripInlineMarkdown-BV12XXzl.js.map +1 -0
  314. package/dist/{syncFilterUtils-SMop8ckR.js → syncFilterUtils-BNbAB0jz.js} +110 -39
  315. package/dist/syncFilterUtils-BNbAB0jz.js.map +1 -0
  316. package/dist/token/core/component-variables.scss +52 -49
  317. package/dist/token/core/component.d.ts +2 -0
  318. package/dist/token/core/component.js +66 -49
  319. package/dist/token/core/component.scss +42 -40
  320. package/dist/token/core/semantic-variables.scss +2 -0
  321. package/dist/token/core/semantic.d.ts +1 -0
  322. package/dist/token/core/semantic.js +13 -0
  323. package/dist/token/core/semantic.scss +1 -0
  324. package/dist/token.js +82 -49
  325. package/dist/token.js.map +1 -1
  326. package/dist/{treeSync-B38r1dRQ.js → treeSync-BELsX1gY.js} +3 -3
  327. package/dist/{treeSync-B38r1dRQ.js.map → treeSync-BELsX1gY.js.map} +1 -1
  328. package/dist/{use-reduced-motion-yYB9Tb0D.js → use-reduced-motion-CUshwaEW.js} +2 -2
  329. package/dist/{use-reduced-motion-yYB9Tb0D.js.map → use-reduced-motion-CUshwaEW.js.map} +1 -1
  330. package/dist/{useDrillDownContext-D5_NjqY4.js → useDrillDownContext-BLDjyNEt.js} +2 -2
  331. package/dist/{useDrillDownContext-D5_NjqY4.js.map → useDrillDownContext-BLDjyNEt.js.map} +1 -1
  332. package/dist/{useDrilldown-BOeeNUsy.js → useDrilldown-B8pIhfWa.js} +55 -22
  333. package/dist/{useDrilldown-BOeeNUsy.js.map → useDrilldown-B8pIhfWa.js.map} +1 -1
  334. package/dist/{useInfiniteCombobox-ynkeFngn.js → useInfiniteCombobox-ZZalag0-.js} +4 -4
  335. package/dist/{useInfiniteCombobox-ynkeFngn.js.map → useInfiniteCombobox-ZZalag0-.js.map} +1 -1
  336. package/dist/{useInitialFocus-CGybEc6x.js → useInitialFocus-KdirjHEb.js} +51 -16
  337. package/dist/useInitialFocus-KdirjHEb.js.map +1 -0
  338. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js → useInvalidateOnOptionsChange-ChrPmbtS.js} +6 -6
  339. package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js.map → useInvalidateOnOptionsChange-ChrPmbtS.js.map} +1 -1
  340. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  341. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  342. package/dist/{usePrefersReducedMotion-DR9B_D6w.js → usePrefersReducedMotion-BLoVFiJL.js} +11 -3
  343. package/dist/usePrefersReducedMotion-BLoVFiJL.js.map +1 -0
  344. package/dist/usePrefersReducedMotion.js +2 -1
  345. package/dist/usePrefersReducedMotion.js.map +1 -1
  346. package/dist/{utils-CM48ODEJ.js → utils-DwLrXpmt.js} +2 -2
  347. package/dist/{utils-CM48ODEJ.js.map → utils-DwLrXpmt.js.map} +1 -1
  348. package/package.json +4 -4
  349. package/dist/AiMark-BfmK30vL.js.map +0 -1
  350. package/dist/Calendar-IzXG1aJw.js +0 -1761
  351. package/dist/Calendar-IzXG1aJw.js.map +0 -1
  352. package/dist/Chip-2OydLs66.js.map +0 -1
  353. package/dist/DataTable-DIXP9-Bx.js.map +0 -1
  354. package/dist/Dialog-_tHqOsbr.js.map +0 -1
  355. package/dist/DndHandleButton-BRlodkDO.js.map +0 -1
  356. package/dist/Drawer-D-ThWNp0.js.map +0 -1
  357. package/dist/DrillDown.module-1VBKDZRA.js +0 -27
  358. package/dist/DrillDown.module-1VBKDZRA.js.map +0 -1
  359. package/dist/FieldLabel-ThEmUiAq.js.map +0 -1
  360. package/dist/Lato.css +0 -24
  361. package/dist/ListView-YJscfG4x.js.map +0 -1
  362. package/dist/MultiSelectFieldSync-Cq5sena6.js.map +0 -1
  363. package/dist/MultiSelectMenuSync-BhNXsgAN.js.map +0 -1
  364. package/dist/NumberField-CxmJx4gs.js +0 -252
  365. package/dist/NumberField-CxmJx4gs.js.map +0 -1
  366. package/dist/Page-ZSHNJs7z.js.map +0 -1
  367. package/dist/SelectFieldSync-CeazN-gI.js.map +0 -1
  368. package/dist/SelectMenuSync-CPpE6vUG.js.map +0 -1
  369. package/dist/SelectTriggerBase.module-Dt4-6YvC.js +0 -40
  370. package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +0 -1
  371. package/dist/Tab-DR5YYXkq.js.map +0 -1
  372. package/dist/TextField.module-DklyLNKz.js +0 -25
  373. package/dist/TextField.module-DklyLNKz.js.map +0 -1
  374. package/dist/ThemeProvider.module-B9qgsQ8S.js +0 -8
  375. package/dist/ThemeProvider.module-B9qgsQ8S.js.map +0 -1
  376. package/dist/TimeField-Hwt_oRbg.js.map +0 -1
  377. package/dist/Toaster-SqkX0Kes.js.map +0 -1
  378. package/dist/app-css.379821199ec8105f2efd.bundle.css +0 -57579
  379. package/dist/bugfix-71.1orion.css +0 -491
  380. package/dist/design-system.859a127fc3b66175f0f0.bundle.css +0 -34599
  381. package/dist/drag_indicator-BRHAPLSJ.js +0 -6
  382. package/dist/drag_indicator-BRHAPLSJ.js.map +0 -1
  383. package/dist/favicon.ico +0 -0
  384. package/dist/kendo-css.ed976099efbbcc8b0639.bundle.css +0 -20601
  385. package/dist/luxon-wpz4A-OQ.js.map +0 -1
  386. package/dist/main.e26f249642be9a4bd747.bundle.css +0 -50386
  387. package/dist/react-ORV84FjM.js.map +0 -1
  388. package/dist/stripInlineMarkdown-BhYLEiXu.js +0 -25
  389. package/dist/stripInlineMarkdown-BhYLEiXu.js.map +0 -1
  390. package/dist/sui.a9dc22e36a27b7ea1ee8.bundle.css +0 -41149
  391. package/dist/syncFilterUtils-SMop8ckR.js.map +0 -1
  392. package/dist/useInitialFocus-CGybEc6x.js.map +0 -1
  393. package/dist/useNumberField-CXFYUZ_n.js.map +0 -1
  394. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +0 -1
  395. package/dist/vite.svg +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"syncFilterUtils-SMop8ckR.js","sources":["../src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.ts","../src/internal/components/SelectOption.tsx","../src/internal/hooks/useFocusReturnOnUnmount.ts","../src/internal/components/LoadMoreSlot.tsx","../src/internal/hooks/useAutoLoadMore.ts","../src/internal/hooks/useOptionsSections.ts","../src/internal/components/OptionsPanel.tsx","../src/internal/components/VirtualizedOptionsPanel.tsx","../src/internal/hooks/usePinnedOptions.ts","../src/internal/hooks/useGroupedOptions.ts","../src/internal/hooks/useProcessedOptions.ts","../src/internal/functions/buildSelectItems.ts","../src/internal/types/addNewItemTypes.ts","../src/internal/components/AddNewItemButton.tsx","../src/internal/hooks/useSelectOrchestration.ts","../src/internal/functions/syncFilterUtils.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport type {\n SelectFieldOption,\n SelectFieldPageLazyResult,\n SelectFieldOffsetLazyResult,\n SelectFieldGroupLazyResult,\n SelectFieldPropsLazyPage,\n SelectFieldPropsLazyOffset,\n SelectFieldPropsLazyGroup,\n SelectFieldPropsEager,\n} from \"../../../components/SelectField/types\";\nimport { isThenable } from \"../../functions/isThenable\";\n\nexport const DEFAULT_PAGE_SIZE = 20;\nconst DEFAULT_CACHE_MAX_SIZE = 15;\n\n/**\n * Cache policy for per-search snapshots. Stays on unless `enabled` is `false`.\n */\nexport type CacheConfig = {\n /** Off only when `false`. Defaults to on. */\n enabled?: boolean;\n /** Distinct search keys kept. Exceeding this wipes the map. Defaults to `15`. */\n maxSize?: number;\n};\n\ntype CachedSearchState<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n hasMore: boolean;\n previousPage: number;\n previousOffset: number;\n previousGroup: string | number | null;\n};\n\ntype UseSelectFieldLoadingConfigLazyPage<TID extends string | number> = Pick<\n SelectFieldPropsLazyPage<TID>,\n \"lazy\" | \"loadOptions\"\n> & {\n pageSize: number;\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigLazyOffset<TID extends string | number> = Pick<\n SelectFieldPropsLazyOffset<TID>,\n \"lazy\" | \"loadOptions\"\n> & {\n limit: number;\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigLazyGroup<TID extends string | number> = Pick<\n SelectFieldPropsLazyGroup<TID>,\n \"lazy\" | \"loadOptions\"\n> & {\n cache?: CacheConfig;\n};\n\ntype UseSelectFieldLoadingConfigEager<TID extends string | number> = Pick<\n SelectFieldPropsEager<TID>,\n \"lazy\" | \"loadOptions\"\n> & {\n cache?: CacheConfig;\n};\n\n/**\n * Discriminated by `lazy`: omitted/`false` is eager; `\"page\"` needs `pageSize`;\n * `\"offset\"` needs `limit`; `\"group\"` pages by option `group`.\n */\nexport type UseSelectFieldLoadingConfig<TID extends string | number> =\n | UseSelectFieldLoadingConfigLazyPage<TID>\n | UseSelectFieldLoadingConfigLazyOffset<TID>\n | UseSelectFieldLoadingConfigLazyGroup<TID>\n | UseSelectFieldLoadingConfigEager<TID>;\n\nexport type UseSelectFieldLoadingReturn<TID extends string | number> = {\n /** Replaced on `{ initial: true }`; appended on load-more. Empty until the first load. */\n options: SelectFieldOption<TID>[];\n /** True only while an initial fetch is in flight. Sync eager loads skip this. */\n loading: boolean;\n /** True while a continuation fetch is in flight. */\n loadingMore: boolean;\n /** From the last lazy result; stays `false` in eager mode. */\n hasMore: boolean;\n /**\n * `{ initial: true }` replaces options (or restores a cache hit). Otherwise\n * appends.\n */\n loadOptions: (\n searchValue: string,\n options?: { initial?: boolean },\n ) => Promise<void>;\n /** Same as `loadOptions(searchValue, { initial: false })`. */\n loadMore: (searchValue: string) => Promise<void>;\n /** Clears options, pagination, and busy flags. Does not call `clearCache`. */\n reset: () => void;\n /** Drops cached searches. In-memory options stay. */\n clearCache: () => void;\n};\n\n/**\n * Loads SelectField options for eager or lazy (`page` / `offset` / `group`)\n * modes. Starts empty; callers must invoke `loadOptions`.\n */\nexport function useSelectFieldLoading<TID extends string | number>(\n config: UseSelectFieldLoadingConfig<TID>,\n): UseSelectFieldLoadingReturn<TID> {\n const { lazy, loadOptions: loadOptionsProp, cache: cacheConfig } = config;\n\n const cacheEnabled = cacheConfig?.enabled !== false;\n const cacheMaxSize = cacheConfig?.maxSize ?? DEFAULT_CACHE_MAX_SIZE;\n\n const [options, setOptions] = useState<SelectFieldOption<TID>[]>([]);\n const [hasMoreToLoad, setHasMoreToLoad] = useState(false);\n const [previousGroup, setPreviousGroup] = useState<string | number | null>(\n null,\n );\n const [previousPage, setPreviousPage] = useState<number>(0);\n const [previousOffset, setPreviousOffset] = useState<number>(0);\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [stateCache, setStateCache] = useState<\n Map<string, CachedSearchState<TID>>\n >(() => new Map());\n const currentSearchValueRef = useRef<string>(\"\");\n // Distinguishes \"never loaded\" empty from an empty API result so the cache\n // effect does not snapshot the first paint.\n const hasCompletedLoadRef = useRef(false);\n\n const appendOptions = useCallback((newOptions: SelectFieldOption<TID>[]) => {\n setOptions((prevOptions) => prevOptions.concat(newOptions));\n }, []);\n\n const pageSize =\n lazy === \"page\"\n ? (config as UseSelectFieldLoadingConfigLazyPage<TID>).pageSize\n : DEFAULT_PAGE_SIZE;\n const limit =\n lazy === \"offset\"\n ? (config as UseSelectFieldLoadingConfigLazyOffset<TID>).limit\n : DEFAULT_PAGE_SIZE;\n\n const restoreFromCache = useCallback((cached: CachedSearchState<TID>) => {\n setOptions(cached.options);\n setHasMoreToLoad(cached.hasMore);\n setPreviousPage(cached.previousPage);\n setPreviousOffset(cached.previousOffset);\n setPreviousGroup(cached.previousGroup);\n }, []);\n\n // Runs after batched load updates so the snapshot includes options + cursor.\n useEffect(() => {\n if (!cacheEnabled) return;\n const searchValue = currentSearchValueRef.current;\n if (!hasCompletedLoadRef.current) return;\n\n setStateCache((prev) => {\n // Not LRU: at capacity, every snapshot write wipes the map first.\n if (prev.size >= cacheMaxSize) {\n prev.clear();\n }\n\n prev.set(searchValue, {\n options,\n hasMore: hasMoreToLoad,\n previousPage,\n previousOffset,\n previousGroup,\n });\n return new Map(prev);\n });\n }, [\n cacheEnabled,\n cacheMaxSize,\n options,\n hasMoreToLoad,\n previousPage,\n previousOffset,\n previousGroup,\n ]);\n\n const loadOptions = useCallback(\n async (\n searchValue: string,\n options?: { initial?: boolean },\n ): Promise<void> => {\n const isInitial = !!options?.initial;\n\n if (isInitial && cacheEnabled) {\n const cached = stateCache.get(searchValue);\n if (cached) {\n currentSearchValueRef.current = searchValue;\n restoreFromCache(cached);\n return;\n }\n }\n\n if (isInitial) {\n currentSearchValueRef.current = searchValue;\n }\n\n const setBusy = isInitial ? setLoading : setLoadingMore;\n\n const applyEagerResult = (resolved: SelectFieldOption<TID>[]) => {\n (isInitial ? setOptions : appendOptions)(resolved);\n hasCompletedLoadRef.current = true;\n };\n\n if (!lazy) {\n const result = loadOptionsProp(searchValue);\n if (!isThenable(result)) {\n // Yield so this commit's cache effect does not snapshot empty options.\n await Promise.resolve();\n applyEagerResult(result);\n return;\n }\n\n setBusy(true);\n try {\n const awaited = await result;\n applyEagerResult(Array.isArray(awaited) ? awaited : await awaited);\n } finally {\n setBusy(false);\n }\n return;\n }\n\n setBusy(true);\n try {\n let result:\n | SelectFieldPageLazyResult<TID>\n | SelectFieldOffsetLazyResult<TID>\n | SelectFieldGroupLazyResult<TID>;\n\n if (lazy === \"page\") {\n const page = isInitial ? 0 : previousPage;\n result = await loadOptionsProp(searchValue, page, pageSize);\n setPreviousPage(isInitial ? 1 : page + 1);\n } else if (lazy === \"offset\") {\n const offset = isInitial ? 0 : previousOffset;\n result = await loadOptionsProp(searchValue, offset, limit);\n setPreviousOffset(isInitial ? limit : offset + limit);\n } else if (lazy === \"group\") {\n const group = isInitial ? null : previousGroup;\n result = await loadOptionsProp(searchValue, group);\n setPreviousGroup(\n result.options[result.options.length - 1]?.group ?? null,\n );\n } else {\n throw new Error(\n `Invalid lazy mode: ${lazy}. Expected 'page', 'offset', or 'group'.`,\n );\n }\n\n setHasMoreToLoad(result.hasMore ?? false);\n (isInitial ? setOptions : appendOptions)(result.options);\n hasCompletedLoadRef.current = true;\n } finally {\n setBusy(false);\n }\n },\n [\n lazy,\n pageSize,\n limit,\n loadOptionsProp,\n appendOptions,\n previousPage,\n previousOffset,\n previousGroup,\n cacheEnabled,\n stateCache,\n restoreFromCache,\n ],\n );\n\n const loadMore = useCallback(\n async (searchValue: string): Promise<void> => {\n await loadOptions(searchValue, { initial: false });\n },\n [loadOptions],\n );\n\n const reset = useCallback(() => {\n setOptions([]);\n setHasMoreToLoad(false);\n setPreviousGroup(null);\n setPreviousPage(0);\n setPreviousOffset(0);\n setLoading(false);\n setLoadingMore(false);\n }, []);\n\n const clearCache = useCallback(() => {\n setStateCache(new Map());\n }, []);\n\n return {\n options,\n loading,\n loadingMore,\n hasMore: hasMoreToLoad,\n loadOptions,\n loadMore,\n reset,\n clearCache,\n };\n}\n","import type { SelectItem } from \"../types/selectFieldInternalTypes\";\nimport Icon from \"../../components/Icon\";\nimport styles from \"./SelectOption.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport cx from \"classnames\";\nimport type { CheckState } from \"../../types\";\nimport type { GetItemPropsFn } from \"../types/selectFieldInternalTypes\";\nimport { OptionCheckbox } from \"./OptionCheckbox\";\nimport { OptionContentArea } from \"./OptionContentArea\";\nimport { OptionRow, OptionRowSideContent } from \"./OptionRow\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../constants/anvParts\";\n\nexport type SelectOptionProps = {\n item: SelectItem;\n /** Position passed to the host's item-prop getter. */\n index: number;\n /** Whether the host currently highlights this row. */\n highlighted: boolean;\n /** Applies disabled row styling. */\n disabled: boolean;\n /** Supplies the host listbox's interaction and accessibility props. */\n getItemProps: GetItemPropsFn;\n /** Chooses a leading checkbox or trailing selected checkmark. */\n selectionType: \"single\" | \"multiple\";\n /** Selection state shown by the row indicator. */\n checked: CheckState;\n /** Adds separation styling to sticky bulk-action rows after scrolling. */\n isListScrolled?: boolean;\n};\n\n/** Renders a select item with its content and selection indicator. */\nexport const SelectOption = ({\n item,\n index,\n highlighted,\n disabled,\n getItemProps,\n selectionType,\n checked,\n isListScrolled = false,\n}: SelectOptionProps) => {\n const isBulkAction =\n item.type === \"select-all\" || item.type === \"select-filtered\";\n const isSingleSelected = selectionType === \"single\" && checked === \"checked\";\n\n return (\n <OptionRow\n key={item.id}\n data-item-index={index}\n disabled={disabled}\n {...getItemProps({\n item,\n index,\n \"data-type\": item.type,\n [ANV_PART_ATTR]: COMMON_PART.option,\n className: cx(styles[\"select-option\"], {\n [styles.highlighted]: highlighted && !isSingleSelected,\n [styles[\"single-selected\"]]: isSingleSelected && !highlighted,\n [styles[\"single-selected-highlighted\"]]:\n isSingleSelected && highlighted,\n [styles[\"bulk-action\"]]: isBulkAction,\n [styles.floating]: isBulkAction && isListScrolled,\n }),\n })}\n >\n {selectionType === \"multiple\" && (\n <OptionRowSideContent>\n <OptionCheckbox checkState={checked} />\n </OptionRowSideContent>\n )}\n <OptionContentArea\n label={item.original.label}\n content={item.original.content}\n />\n {selectionType === \"single\" && checked === \"checked\" && (\n <OptionRowSideContent>\n <Icon\n aria-hidden=\"true\"\n size=\"medium\"\n svg={Check}\n className={styles[\"checkmark\"]}\n />\n </OptionRowSideContent>\n )}\n </OptionRow>\n );\n};\n","import { type FocusEvent, useCallback, useRef } from \"react\";\n\n/**\n * Returns focus to where it came from when the element unmounts while focused.\n * Chromium fires focusout with a null `relatedTarget` when a focused node is\n * removed, which a popover reads as focus leaving it.\n */\nexport function useFocusReturnOnUnmount<T extends HTMLElement>() {\n const nodeRef = useRef<T | null>(null);\n const returnToRef = useRef<HTMLElement | null>(null);\n\n // React detaches refs before it removes the node, so the outgoing node still\n // holds focus here and moving focus now prevents the null-target focusout.\n const ref = useCallback((node: T | null) => {\n const previous = nodeRef.current;\n nodeRef.current = node;\n if (node || !previous) return;\n // Inside a shadow root the document reports the host as active.\n const root = previous.getRootNode() as Document | ShadowRoot;\n if (previous !== root.activeElement) return;\n const returnTo = returnToRef.current;\n if (returnTo?.isConnected) returnTo.focus({ preventScroll: true });\n }, []);\n\n // Keep the last real origin: programmatic focus and window refocus arrive\n // with a null relatedTarget.\n const onFocus = useCallback((event: FocusEvent<T>) => {\n if (event.relatedTarget instanceof HTMLElement) {\n returnToRef.current = event.relatedTarget;\n }\n }, []);\n\n return { ref, onFocus };\n}\n","import { useEffect, useRef } from \"react\";\nimport Button from \"../../components/Button\";\nimport Spinner from \"../../components/Spinner\";\nimport { SrOnly } from \"../../components\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../constants/anvParts\";\nimport { useFocusReturnOnUnmount } from \"../hooks/useFocusReturnOnUnmount\";\n\ntype LoadMoreSlotProps = {\n /** Shows the spinner in place of the button. */\n loadingMore: boolean;\n onLoadMore: () => void;\n /** Reports whether the button has focus, including `false` when it unmounts. */\n onFocusChange: (focused: boolean) => void;\n};\n\n/**\n * Content of the option panels' load-more slot: the Load more button, or a\n * spinner while a page loads.\n */\nexport const LoadMoreSlot = ({\n loadingMore,\n ...buttonProps\n}: LoadMoreSlotProps) =>\n loadingMore ? (\n <>\n <Spinner size=\"small\" />\n <SrOnly>Loading more...</SrOnly>\n </>\n ) : (\n <LoadMoreButton {...buttonProps} />\n );\n\nconst LoadMoreButton = ({\n onLoadMore,\n onFocusChange,\n}: Omit<LoadMoreSlotProps, \"loadingMore\">) => {\n const focus = useFocusReturnOnUnmount<HTMLButtonElement>();\n const onFocusChangeRef = useRef(onFocusChange);\n onFocusChangeRef.current = onFocusChange;\n useEffect(() => () => onFocusChangeRef.current(false), []);\n\n return (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n // It unmounts as soon as it starts a load (virtualized: also once it\n // scrolls out of range), so a click must not focus it; after keyboard\n // activation, useFocusReturnOnUnmount hands focus back first.\n onMouseDown={(e) => e.preventDefault()}\n ref={focus.ref}\n onFocus={(e) => {\n focus.onFocus(e);\n onFocusChange(true);\n }}\n onBlur={() => onFocusChange(false)}\n onClick={onLoadMore}\n {...{ [ANV_PART_ATTR]: COMMON_PART.loadMoreButton }}\n >\n Load more\n </Button>\n );\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype Keyed = { id: string | number };\n\ntype AutoLoadMoreState = {\n isOpen: boolean;\n hasMore: boolean;\n loading: boolean;\n loadingMore: boolean;\n disableAutoLoadMore?: boolean;\n items: readonly Keyed[];\n};\n\n/**\n * Decides when a lazy option list may request its next page on its own.\n *\n * `canAutoLoad` is false while the list is closed, out of pages, loading, or\n * opted out, and while Load more has focus: focusing it scrolls it into view,\n * and auto-loading then would swap it for the spinner under a keyboard user\n * and send their Enter to the input. Feed `onLoadMoreFocusChange` from the\n * button.\n *\n * `isStalled` reports that the last load-more page added no rows, as a\n * rejected or empty load does. Auto-load stops while it holds so a failing\n * loader is not retried in a loop; the Load more button still retries, and\n * closing the list clears it, so opening it again retries too. It is keyed to\n * the rows (count and last id) rather than to request flags: any new rows, from\n * a successful retry or a new search, re-arm auto-load, even when a loader that\n * resolves in a microtask batches `loadingMore` true and false into one render.\n *\n * Call it before the effect that auto-loads: effects run in call order, so the\n * stall state is current by the time that effect reads it in the same commit.\n * `rowsKey` changes whenever the rows do, for effects that must re-run on a\n * new page or result set.\n */\nexport function useAutoLoadMore({\n isOpen,\n hasMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n items,\n}: AutoLoadMoreState) {\n const rowsKey = `${items.length}:${items[items.length - 1]?.id ?? \"\"}`;\n const rowsKeyRef = useRef(rowsKey);\n rowsKeyRef.current = rowsKey;\n const stalledAtRef = useRef<string | null>(null);\n const keyAtStartRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (loading) {\n stalledAtRef.current = null;\n keyAtStartRef.current = null;\n return;\n }\n if (loadingMore) {\n keyAtStartRef.current ??= rowsKey;\n return;\n }\n if (keyAtStartRef.current === null) return;\n stalledAtRef.current = rowsKey === keyAtStartRef.current ? rowsKey : null;\n keyAtStartRef.current = null;\n }, [loading, loadingMore, rowsKey]);\n\n useEffect(() => {\n if (isOpen) return;\n stalledAtRef.current = null;\n keyAtStartRef.current = null;\n }, [isOpen]);\n\n const isStalled = useCallback(\n () => stalledAtRef.current === rowsKeyRef.current,\n [],\n );\n\n const [loadMoreFocused, setLoadMoreFocused] = useState(false);\n const canAutoLoad =\n isOpen &&\n hasMore &&\n !loading &&\n !loadingMore &&\n !disableAutoLoadMore &&\n !loadMoreFocused;\n\n return {\n canAutoLoad,\n isStalled,\n rowsKey,\n onLoadMoreFocusChange: setLoadMoreFocused,\n };\n}\n","import { useMemo } from \"react\";\nimport type {\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type SectionItem = { item: SelectItem; index: number };\n\nexport type PinnedSection = {\n type: \"pinned\";\n label: string;\n items: SectionItem[];\n loading?: boolean;\n};\n\nexport type GroupSection = {\n type: \"group\";\n label: string;\n items: SectionItem[];\n};\n\nexport type FlatSection = {\n type: \"flat\";\n items: SectionItem[];\n};\n\nexport type Section = PinnedSection | GroupSection | FlatSection;\n\nexport type VirtualRow =\n | { type: \"item\"; item: SelectItem; index: number }\n | { type: \"header\"; label: string; sectionIndex: number }\n | { type: \"divider\"; sectionIndex: number }\n | { type: \"load-more\" };\n\n/**\n * Partitions a flat item list into indexed pinned, grouped, and unsectioned\n * ranges.\n */\nexport const useOptionsSections = (\n items: SelectItem[],\n sectionsMeta: SectionMeta[],\n): Section[] => {\n return useMemo((): Section[] => {\n if (sectionsMeta.length === 0) {\n return [\n {\n type: \"flat\",\n items: items.map((item, index) => ({ item, index })),\n },\n ];\n }\n\n const result: Section[] = [];\n\n const firstSectionStartIndex = Math.min(\n ...sectionsMeta.map((s) => s.startIndex),\n );\n\n if (firstSectionStartIndex > 0) {\n const flatItems: SectionItem[] = [];\n for (let i = 0; i < firstSectionStartIndex; i++) {\n if (items[i]) {\n flatItems.push({ item: items[i], index: i });\n }\n }\n if (flatItems.length > 0) {\n result.push({ type: \"flat\", items: flatItems });\n }\n }\n\n sectionsMeta.forEach((meta) => {\n const sectionItems: SectionItem[] = [];\n for (let i = meta.startIndex; i < meta.endIndex; i++) {\n if (items[i]) {\n sectionItems.push({ item: items[i], index: i });\n }\n }\n if (meta.type === \"pinned\") {\n if (sectionItems.length > 0 || meta.loading) {\n result.push({\n type: \"pinned\",\n label: meta.label,\n items: sectionItems,\n loading: meta.loading,\n });\n }\n } else if (sectionItems.length > 0) {\n result.push({\n type: \"group\",\n label: meta.label,\n items: sectionItems,\n });\n }\n });\n\n const lastSectionIndex =\n sectionsMeta.length > 0\n ? Math.max(...sectionsMeta.map((s) => s.endIndex))\n : 0;\n\n if (lastSectionIndex < items.length) {\n const flatItems: SectionItem[] = [];\n for (let i = lastSectionIndex; i < items.length; i++) {\n flatItems.push({ item: items[i], index: i });\n }\n if (flatItems.length > 0) {\n result.push({ type: \"flat\", items: flatItems });\n }\n }\n\n return result;\n }, [items, sectionsMeta]);\n};\n\n/**\n * Builds virtual rows and index metadata, marking bulk-action rows as sticky\n * and appending a load-more row when requested.\n */\nexport function flattenSectionsToVirtualRows(\n sections: Section[],\n hasMore: boolean,\n): {\n virtualRows: VirtualRow[];\n downshiftIndexToVirtualRowIndex: Record<number, number>;\n stickyIndices: number[];\n} {\n const virtualRows: VirtualRow[] = [];\n const downshiftIndexToVirtualRowIndex: Record<number, number> = {};\n const stickyIndices: number[] = [];\n\n sections.forEach((section, sectionIndex) => {\n const isLastSection = sectionIndex === sections.length - 1;\n\n if (section.type === \"pinned\" || section.type === \"group\") {\n virtualRows.push({\n type: \"header\",\n label: section.label,\n sectionIndex,\n });\n\n section.items.forEach(({ item, index }) => {\n downshiftIndexToVirtualRowIndex[index] = virtualRows.length;\n virtualRows.push({ type: \"item\", item, index });\n });\n\n if (!isLastSection) {\n virtualRows.push({ type: \"divider\", sectionIndex });\n }\n } else {\n section.items.forEach(({ item, index }) => {\n const isBulkAction =\n item.type === \"select-all\" || item.type === \"select-filtered\";\n if (isBulkAction) {\n stickyIndices.push(virtualRows.length);\n }\n downshiftIndexToVirtualRowIndex[index] = virtualRows.length;\n virtualRows.push({ type: \"item\", item, index });\n });\n }\n });\n\n if (hasMore) {\n virtualRows.push({ type: \"load-more\" });\n }\n\n return { virtualRows, downshiftIndexToVirtualRowIndex, stickyIndices };\n}\n","import type { SelectItem } from \"../types/selectFieldInternalTypes\";\nimport Spinner from \"../../components/Spinner\";\nimport styles from \"./SelectOptions.module.scss\";\nimport cx from \"classnames\";\nimport {\n type CSSProperties,\n forwardRef,\n type ReactNode,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { SelectOption } from \"./SelectOption\";\nimport { LoadMoreSlot } from \"./LoadMoreSlot\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../constants/anvParts\";\nimport { Text } from \"../../components/Text\";\nimport Divider from \"../../components/Divider\";\nimport type { CheckState } from \"../../types\";\nimport type {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n} from \"../types/selectFieldInternalTypes\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { useAutoLoadMore } from \"../hooks/useAutoLoadMore\";\nimport { useOptionsSections } from \"../hooks/useOptionsSections\";\n\nexport type OptionsPanelHandle = {\n scrollToTop: () => void;\n /** Scrolls the row at `index` into view. `<= 0` shows a leading group header. */\n scrollToIndex: (index: number) => void;\n};\n\nexport type OptionsPanelProps = {\n /** When false, option rows stay unmounted inside the menu scroller. */\n isOpen: boolean;\n /** Flattened option, pinned/group, and bulk-action rows. */\n items: SelectItem[];\n /** Downshift getter for the menu scroller. */\n getMenuProps: GetMenuPropsFn;\n /** Downshift getter for each option row. */\n getItemProps: GetItemPropsFn;\n /** Host highlight index into `items`. */\n highlightedIndex: number;\n /** Selection indicator shown on each row. */\n getCheckedState: (item: SelectItem) => CheckState;\n /** Leading checkbox vs trailing selected checkmark. */\n selectionType: \"single\" | \"multiple\";\n /** When true, shows the load-more control. */\n hasMore: boolean;\n /** Fetches the next page of options. */\n onLoadMore: () => void;\n /** Replaces the list with a spinner while the current page loads. */\n loading: boolean;\n /** Spinner in the load-more slot. */\n loadingMore: boolean;\n /** Skips automatic next-page fetch; the Load more button remains. */\n disableAutoLoadMore?: boolean;\n /** Disables every row, in addition to per-item `disabled`. */\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n /** Pinned and group ranges over `items`. */\n sectionsMeta?: SectionMeta[];\n};\n\n/** Non-virtualized option list scroller. */\nexport const OptionsPanel = forwardRef<OptionsPanelHandle, OptionsPanelProps>(\n (\n {\n isOpen,\n items,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n getCheckedState,\n selectionType,\n hasMore,\n onLoadMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n disabled,\n className,\n style,\n sectionsMeta = [],\n },\n ref,\n ) => {\n const baseId = useId();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const scrollerRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n\n useImperativeHandle(ref, () => ({\n scrollToTop: () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = 0;\n }\n },\n scrollToIndex: (index: number) => {\n if (!scrollerRef.current) return;\n if (index <= 0) {\n // Nearest-item scroll would clip a leading group header.\n scrollerRef.current.scrollTop = 0;\n return;\n }\n const item = scrollerRef.current.querySelector(\n `[data-item-index=\"${index}\"]`,\n );\n if (item) {\n item.scrollIntoView({ block: \"nearest\" });\n }\n },\n }));\n\n // Sentinel leaving the scroller means sticky bulk rows should show a shadow.\n useEffect(() => {\n if (!isOpen) {\n setIsScrolled(false);\n return;\n }\n if (!scrollSentinelRef.current) return;\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n setIsScrolled(!entry.isIntersecting);\n });\n },\n { threshold: 0, root: scrollerRef.current },\n );\n observer.observe(scrollSentinelRef.current);\n return () => observer.disconnect();\n }, [isOpen]);\n\n // Keep the full-panel spinner so an empty pinned placeholder does not collapse the list.\n const anyPinnedLoading = sectionsMeta.some(\n (s) => s.type === \"pinned\" && s.loading,\n );\n\n const loadMoreSentinelRef = useRef<HTMLDivElement>(null);\n\n const { canAutoLoad, isStalled, rowsKey, onLoadMoreFocusChange } =\n useAutoLoadMore({\n isOpen,\n hasMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n items,\n });\n\n // Read in the observer callback, which can fire after a render that flips\n // these but before the effect below disconnects the observer.\n const onLoadMoreRef = useRef(onLoadMore);\n onLoadMoreRef.current = onLoadMore;\n const canAutoLoadRef = useRef(canAutoLoad);\n canAutoLoadRef.current = canAutoLoad;\n\n // Rooted at the options scroller, not the viewport, so the sentinel still\n // reports when the popover is clamped to the bottom of the screen.\n //\n // Re-created around every load, not only on open:\n // - an initial reload (`loading`, e.g. a new search) unmounts the sentinel\n // and mounts a fresh node, which an observer attached on open never sees;\n // - a page that lands without pushing the sentinel out of view changes no\n // intersection state, so only a fresh observer's initial entry chains the\n // next page (`rowsKey` also re-runs it when `loadingMore` never renders).\n useEffect(() => {\n if (!canAutoLoad || isStalled()) return;\n const sentinel = loadMoreSentinelRef.current;\n const scroller = scrollerRef.current;\n if (!sentinel || !scroller) return;\n // disconnect() does not drop a notification already queued, so a\n // superseded observer's callback checks `active` before requesting.\n let active = true;\n const observer = new IntersectionObserver(\n (entries) => {\n if (!active) return;\n const visible = entries.some((entry) => entry.isIntersecting);\n if (visible && canAutoLoadRef.current && !isStalled()) {\n // One request per observer.\n active = false;\n observer.disconnect();\n onLoadMoreRef.current();\n }\n },\n { threshold: 0, root: scroller },\n );\n observer.observe(sentinel);\n return () => {\n active = false;\n observer.disconnect();\n };\n }, [canAutoLoad, rowsKey, isStalled]);\n\n const sections = useOptionsSections(items, sectionsMeta);\n\n const renderItem = (item: SelectItem, index: number): ReactNode => (\n <SelectOption\n key={item.id}\n item={item}\n index={index}\n getItemProps={getItemProps}\n selectionType={selectionType}\n checked={getCheckedState(item)}\n highlighted={highlightedIndex === index}\n disabled={(disabled || item.disabled) ?? false}\n isListScrolled={isScrolled}\n />\n );\n\n const renderSections = (): ReactNode[] => {\n const result: ReactNode[] = [];\n\n sections.forEach((section, sectionIndex) => {\n const isLastSection = sectionIndex === sections.length - 1;\n\n if (section.type === \"pinned\" || section.type === \"group\") {\n const labelId = `${baseId}-section-${sectionIndex}`;\n\n result.push(\n <div\n key={`section-${sectionIndex}`}\n role=\"group\"\n aria-labelledby={labelId}\n className={styles[\"pinned-section\"]}\n >\n <span id={labelId} className={styles[\"pinned-section-header\"]}>\n <Text variant=\"eyebrow\">{section.label}</Text>\n </span>\n <div className={styles[\"pinned-section-list\"]}>\n {section.items.map(({ item, index }) =>\n renderItem(item, index),\n )}\n </div>\n </div>,\n );\n if (!isLastSection) {\n result.push(\n // Visual only; role=group and aria-labelledby already name the sections.\n <div\n key={`divider-${sectionIndex}`}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={styles[\"divider\"]}\n >\n <Divider />\n </div>,\n );\n }\n } else {\n section.items.forEach(({ item, index }) => {\n result.push(renderItem(item, index));\n });\n }\n });\n\n return result;\n };\n\n const menuProps = getMenuProps({\n className: cx(styles[\"scroller\"], className),\n style,\n [ANV_PART_ATTR]: COMMON_PART.menu,\n });\n\n const menuRef = useMergeRefs([menuProps.ref, scrollerRef]);\n\n return (\n <div {...menuProps} ref={menuRef}>\n <div className={styles[\"select-field-list\"]}>\n {isOpen && (\n <div\n ref={scrollSentinelRef}\n className={styles[\"scroll-sentinel\"]}\n role=\"presentation\"\n aria-hidden=\"true\"\n />\n )}\n {isOpen && (\n <>\n {loading || anyPinnedLoading ? (\n <div role=\"presentation\" className={styles[\"empty\"]}>\n <Spinner size=\"medium\" />\n </div>\n ) : items.length > 0 ? (\n renderSections()\n ) : (\n <div role=\"presentation\" className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n )}\n </>\n )}\n {hasMore && !loading ? (\n <div role=\"presentation\">\n <div\n ref={loadMoreSentinelRef}\n className={styles[\"scroll-sentinel\"]}\n role=\"presentation\"\n aria-hidden=\"true\"\n />\n <div className={styles[\"load-more\"]}>\n <LoadMoreSlot\n loadingMore={loadingMore}\n onLoadMore={onLoadMore}\n onFocusChange={onLoadMoreFocusChange}\n />\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nOptionsPanel.displayName = \"OptionsPanel\";\n","import Spinner from \"../../components/Spinner\";\nimport styles from \"./SelectOptions.module.scss\";\nimport cx from \"classnames\";\nimport {\n forwardRef,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { SelectOption } from \"./SelectOption\";\nimport { LoadMoreSlot } from \"./LoadMoreSlot\";\nimport { Text } from \"../../components/Text\";\nimport Divider from \"../../components/Divider\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { useAutoLoadMore } from \"../hooks/useAutoLoadMore\";\nimport {\n useOptionsSections,\n flattenSectionsToVirtualRows,\n type VirtualRow,\n} from \"../hooks/useOptionsSections\";\nimport { defaultRangeExtractor, useVirtualizer } from \"@tanstack/react-virtual\";\nimport type { Range } from \"@tanstack/react-virtual\";\nimport type { OptionsPanelProps, OptionsPanelHandle } from \"./OptionsPanel\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../constants/anvParts\";\n\nconst EST_PADDING_BLOCK = 16; // $size-2 * 2\nconst EST_LINE_HEIGHT = 18; // $size-4 + $size-half\nconst EST_CHIP_ROW_HEIGHT = 28; // $size-1 + chip\nconst EST_SIDE_CONTENT_HEIGHT = 40; // $size-10\nconst EST_HEADER_HEIGHT = 32;\nconst EST_DIVIDER_HEIGHT = 17;\nconst EST_LOAD_MORE_HEIGHT = 40;\nconst EST_BASE_ITEM_HEIGHT = EST_PADDING_BLOCK + EST_LINE_HEIGHT;\n\nfunction estimateRowHeight(row: VirtualRow): number {\n if (row.type === \"header\") return EST_HEADER_HEIGHT;\n if (row.type === \"divider\") return EST_DIVIDER_HEIGHT;\n if (row.type === \"load-more\") return EST_LOAD_MORE_HEIGHT;\n\n const content = row.item.original.content;\n if (!content) return EST_BASE_ITEM_HEIGHT;\n\n let contentHeight = EST_LINE_HEIGHT;\n if (content.description) contentHeight += EST_LINE_HEIGHT;\n if (content.chips?.length) contentHeight += EST_CHIP_ROW_HEIGHT;\n if (content.avatar || content.icon)\n contentHeight = Math.max(contentHeight, EST_SIDE_CONTENT_HEIGHT);\n\n return EST_PADDING_BLOCK + contentHeight;\n}\n\n/** Virtualized {@link OptionsPanel} scroller. */\nexport const VirtualizedOptionsPanel = forwardRef<\n OptionsPanelHandle,\n OptionsPanelProps\n>(\n (\n {\n isOpen,\n items,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n getCheckedState,\n selectionType,\n hasMore,\n onLoadMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n disabled,\n className,\n style,\n sectionsMeta = [],\n },\n ref,\n ) => {\n const baseId = useId();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const scrollerRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n\n // Sentinel leaving the scroller means sticky bulk rows should show a shadow.\n useEffect(() => {\n if (!isOpen) {\n setIsScrolled(false);\n return;\n }\n if (!scrollSentinelRef.current) return;\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n setIsScrolled(!entry.isIntersecting);\n });\n },\n { threshold: 0, root: scrollerRef.current },\n );\n observer.observe(scrollSentinelRef.current);\n return () => observer.disconnect();\n }, [isOpen]);\n\n // Keep the full-panel spinner so an empty pinned placeholder does not collapse the list.\n const anyPinnedLoading = sectionsMeta.some(\n (s) => s.type === \"pinned\" && s.loading,\n );\n\n const sections = useOptionsSections(items, sectionsMeta);\n\n const { virtualRows, downshiftIndexToVirtualRowIndex, stickyIndices } =\n useMemo(\n () => flattenSectionsToVirtualRows(sections, hasMore),\n [sections, hasMore],\n );\n\n const stickyHeightRef = useRef(EST_BASE_ITEM_HEIGHT);\n\n // Keep the stuck header in the measured range so it is not virtualized away.\n const rangeExtractor = useCallback(\n (range: Range) => {\n if (stickyIndices.length === 0) {\n return defaultRangeExtractor(range);\n }\n const activeStickyIndex =\n [...stickyIndices]\n .reverse()\n .find((index) => range.startIndex >= index) ?? 0;\n\n const next = new Set([\n activeStickyIndex,\n ...defaultRangeExtractor(range),\n ]);\n\n return [...next].sort((a, b) => a - b);\n },\n [stickyIndices],\n );\n\n const virtualizer = useVirtualizer({\n count: virtualRows.length,\n getScrollElement: () => scrollerRef.current,\n estimateSize: (index) => estimateRowHeight(virtualRows[index]),\n overscan: 5,\n rangeExtractor,\n // Keep scrolled-to rows from landing under the stuck header.\n scrollPaddingStart:\n stickyIndices.length > 0 ? stickyHeightRef.current : 0,\n enabled: isOpen,\n getItemKey: (index) => {\n const row = virtualRows[index];\n if (row.type === \"item\") return row.item.id;\n if (row.type === \"header\") return `header-${row.sectionIndex}`;\n if (row.type === \"divider\") return `divider-${row.sectionIndex}`;\n return \"load-more\";\n },\n });\n\n const virtualItems = virtualizer.getVirtualItems();\n\n if (stickyIndices.length > 0) {\n const stickyItem = virtualItems.find((vi) =>\n stickyIndices.includes(vi.index),\n );\n if (stickyItem) {\n stickyHeightRef.current = stickyItem.size;\n }\n }\n\n const downshiftMapRef = useRef(downshiftIndexToVirtualRowIndex);\n downshiftMapRef.current = downshiftIndexToVirtualRowIndex;\n\n const virtualizerRef = useRef(virtualizer);\n virtualizerRef.current = virtualizer;\n\n useImperativeHandle(ref, () => ({\n scrollToTop: () => {\n if (virtualizerRef.current) {\n virtualizerRef.current.scrollToOffset(0);\n }\n },\n scrollToIndex: (index: number) => {\n if (index <= 0) {\n // Nearest-item scroll would clip a leading group header.\n virtualizerRef.current.scrollToOffset(0);\n return;\n }\n const virtualRowIndex = downshiftMapRef.current[index];\n if (virtualRowIndex != null) {\n virtualizerRef.current.scrollToIndex(virtualRowIndex, {\n align: \"auto\",\n });\n }\n },\n }));\n\n const onLoadMoreRef = useRef(onLoadMore);\n onLoadMoreRef.current = onLoadMore;\n\n const { canAutoLoad, isStalled, rowsKey, onLoadMoreFocusChange } =\n useAutoLoadMore({\n isOpen,\n hasMore,\n loading,\n loadingMore,\n disableAutoLoadMore,\n items,\n });\n\n // Synchronous in-flight guard: useVirtualizer's measureElement can trigger\n // flushSync renders that re-run the effect below before the `loadingMore`\n // state prop commits, causing duplicate onLoadMore calls. Cleared when a\n // page lands (`rowsKey`, for a loader whose `loadingMore` never renders),\n // and on open and close, since an empty page from such a loader changes\n // nothing else. Declared before the trigger effect so a landed page clears\n // it before that effect reads it.\n const loadMoreInFlightRef = useRef(false);\n useEffect(() => {\n if (!loadingMore) loadMoreInFlightRef.current = false;\n }, [isOpen, loadingMore, rowsKey]);\n\n // Last rendered virtual row standing in for the non-virtual load-more sentinel.\n useEffect(() => {\n if (!canAutoLoad || loadMoreInFlightRef.current || isStalled()) return;\n const lastItem = virtualItems[virtualItems.length - 1];\n if (!lastItem) return;\n if (lastItem.index >= virtualRows.length - 1) {\n loadMoreInFlightRef.current = true;\n onLoadMoreRef.current();\n }\n }, [canAutoLoad, virtualItems, virtualRows.length]);\n\n const isSticky = useCallback(\n (index: number) => stickyIndices.includes(index),\n [stickyIndices],\n );\n\n const renderVirtualRow = (row: VirtualRow): ReactNode => {\n if (row.type === \"item\") {\n return (\n <SelectOption\n item={row.item}\n index={row.index}\n getItemProps={getItemProps}\n selectionType={selectionType}\n checked={getCheckedState(row.item)}\n highlighted={highlightedIndex === row.index}\n disabled={(disabled || row.item.disabled) ?? false}\n isListScrolled={isScrolled}\n />\n );\n }\n\n if (row.type === \"header\") {\n const labelId = `${baseId}-section-${row.sectionIndex}`;\n return (\n // Flattened virtual rows cannot wrap a labelled group.\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n className={styles[\"pinned-section-header\"]}\n >\n <span id={labelId}>\n <Text variant=\"eyebrow\">{row.label}</Text>\n </span>\n </div>\n );\n }\n\n if (row.type === \"divider\") {\n return (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n className={styles[\"divider\"]}\n >\n <Divider />\n </div>\n );\n }\n\n if (row.type === \"load-more\") {\n return (\n <div role=\"presentation\" className={styles[\"load-more\"]}>\n <LoadMoreSlot\n loadingMore={loadingMore}\n onLoadMore={onLoadMore}\n onFocusChange={onLoadMoreFocusChange}\n />\n </div>\n );\n }\n\n return null;\n };\n\n const menuProps = getMenuProps({\n className: cx(styles[\"scroller\"], className),\n style,\n [ANV_PART_ATTR]: COMMON_PART.menu,\n });\n\n const menuRef = useMergeRefs([menuProps.ref, scrollerRef]);\n\n return (\n <div {...menuProps} ref={menuRef}>\n <div className={styles[\"select-field-list\"]}>\n {isOpen && (\n <div\n ref={scrollSentinelRef}\n className={styles[\"scroll-sentinel\"]}\n role=\"presentation\"\n aria-hidden=\"true\"\n />\n )}\n {isOpen && (\n <>\n {loading || anyPinnedLoading ? (\n <div role=\"presentation\" className={styles[\"empty\"]}>\n <Spinner size=\"medium\" />\n </div>\n ) : items.length > 0 ? (\n <div\n role=\"presentation\"\n aria-hidden=\"true\"\n style={{\n height: virtualizer.getTotalSize(),\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {virtualItems.map((virtualItem) => {\n const row = virtualRows[virtualItem.index];\n const sticky = isSticky(virtualItem.index);\n\n return (\n <div\n key={virtualItem.key}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n style={\n sticky\n ? {\n position: \"sticky\",\n top: 0,\n zIndex: 1,\n }\n : {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${virtualItem.start}px)`,\n }\n }\n >\n {renderVirtualRow(row)}\n </div>\n );\n })}\n </div>\n ) : (\n <div role=\"presentation\" className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n },\n);\n\nVirtualizedOptionsPanel.displayName = \"VirtualizedOptionsPanel\";\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type {\n SelectFieldOption,\n SelectFieldPinnedOptions,\n SelectFieldPinnedOptionsSection,\n} from \"../../components/SelectField/types\";\n\nconst DEFAULT_CACHE_SIZE = 15;\nconst STATIC_CACHE_KEY = \"__static__\";\n\n/** A pinned section normalized for item building. */\nexport type NormalizedPinnedSection<TID extends string | number> = {\n label: string;\n options: SelectFieldOption<TID>[];\n loading?: boolean;\n};\n\ntype UsePinnedOptionsResult<TID extends string | number> = {\n pinnedSections: NormalizedPinnedSection<TID>[];\n};\n\ntype SectionConfig<TID extends string | number> = {\n label: string;\n isDynamic: boolean;\n searchReactive: boolean;\n cacheSize: number;\n staticOptions: SelectFieldOption<TID>[] | undefined;\n loader:\n | ((\n sv: string,\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>)\n | undefined;\n};\n\n/**\n * Writes a cache entry and evicts the least-recently written entries over the\n * limit.\n */\nfunction cacheSet(\n sectionCache: Map<string, SelectFieldOption[]>,\n key: string,\n value: SelectFieldOption[],\n maxSize: number,\n): void {\n // Re-insert so this key is newest; Map.set preserves its existing order.\n if (sectionCache.has(key)) {\n sectionCache.delete(key);\n }\n sectionCache.set(key, value);\n while (sectionCache.size > maxSize) {\n const oldest = sectionCache.keys().next().value;\n if (oldest !== undefined) {\n sectionCache.delete(oldest);\n }\n }\n}\n\n/**\n * Normalizes static and loaded pinned sections, caching dynamic results by\n * section and search value. Non-reactive loaders run once with an empty search;\n * unresolved sections are returned empty with `loading: true`.\n */\nexport function usePinnedOptions<TID extends string | number>(\n pinned: SelectFieldPinnedOptions<TID> | undefined,\n searchValue: string,\n): UsePinnedOptionsResult<TID> {\n const [dynamicResults, setDynamicResults] = useState<\n Record<number, SelectFieldOption<TID>[]>\n >({});\n const [loadingSet, setLoadingSet] = useState<Set<number>>(new Set());\n\n const latestSearchValueRef = useRef(searchValue);\n latestSearchValueRef.current = searchValue;\n\n const cacheRef = useRef<Map<number, Map<string, SelectFieldOption<TID>[]>>>(\n new Map(),\n );\n\n // Prevent duplicate non-reactive loads while the first request is pending.\n const nonReactiveTriggeredRef = useRef<Set<number>>(new Set());\n\n const sections = useMemo((): SelectFieldPinnedOptionsSection<TID>[] => {\n if (!pinned) return [];\n return Array.isArray(pinned) ? pinned : [pinned];\n }, [pinned]);\n\n const sectionConfig = useMemo((): SectionConfig<TID>[] => {\n return sections.map((section) => {\n const isDynamic = typeof section.options === \"function\";\n return {\n label: section.label,\n isDynamic,\n searchReactive: section.searchReactive ?? true,\n cacheSize: section.cacheSize ?? DEFAULT_CACHE_SIZE,\n staticOptions: isDynamic\n ? undefined\n : (section.options as SelectFieldOption<TID>[]),\n loader: isDynamic\n ? (section.options as (\n sv: string,\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>)\n : undefined,\n };\n });\n }, [sections]);\n\n // Reset before the loader effect can read the previous configuration's cache.\n useEffect(() => {\n cacheRef.current = new Map();\n nonReactiveTriggeredRef.current = new Set();\n }, [sectionConfig]);\n\n const getSectionCache = useCallback(\n (index: number): Map<string, SelectFieldOption<TID>[]> => {\n let sectionCache = cacheRef.current.get(index);\n if (!sectionCache) {\n sectionCache = new Map();\n cacheRef.current.set(index, sectionCache);\n }\n return sectionCache;\n },\n [],\n );\n\n const loadSection = useCallback(\n (config: SectionConfig<TID>, index: number, loaderArg: string) => {\n const cacheKey = config.searchReactive ? loaderArg : STATIC_CACHE_KEY;\n\n const handleResult = (options: SelectFieldOption<TID>[]) => {\n // Reactive results expire when search moves on; non-reactive always apply.\n if (\n !config.searchReactive ||\n latestSearchValueRef.current === loaderArg\n ) {\n const sectionCache = getSectionCache(index);\n cacheSet(sectionCache, cacheKey, options, config.cacheSize);\n setDynamicResults((prev) => ({ ...prev, [index]: options }));\n setLoadingSet((prev) => {\n const next = new Set(prev);\n next.delete(index);\n return next;\n });\n }\n };\n\n const handleError = (error: unknown) => {\n console.error(\"Failed to load pinned options:\", error);\n if (\n !config.searchReactive ||\n latestSearchValueRef.current === loaderArg\n ) {\n setDynamicResults((prev) => ({ ...prev, [index]: [] }));\n setLoadingSet((prev) => {\n const next = new Set(prev);\n next.delete(index);\n return next;\n });\n }\n };\n\n try {\n Promise.resolve(config.loader!(loaderArg))\n .then(handleResult)\n .catch(handleError);\n } catch (error) {\n handleError(error);\n }\n },\n [getSectionCache],\n );\n\n useEffect(() => {\n const dynamicEntries = sectionConfig\n .map((config, index) => ({ config, index }))\n .filter(({ config }) => config.isDynamic);\n\n if (dynamicEntries.length === 0) return;\n\n const toLoad: { config: SectionConfig<TID>; index: number }[] = [];\n const preResolved: Record<number, SelectFieldOption<TID>[]> = {};\n\n dynamicEntries.forEach(({ config, index }) => {\n const sectionCache = getSectionCache(index);\n\n if (config.searchReactive) {\n const cached = sectionCache.get(searchValue);\n if (cached) {\n preResolved[index] = cached;\n } else {\n toLoad.push({ config, index });\n }\n } else {\n const cached = sectionCache.get(STATIC_CACHE_KEY);\n if (cached) {\n preResolved[index] = cached;\n } else if (!nonReactiveTriggeredRef.current.has(index)) {\n nonReactiveTriggeredRef.current.add(index);\n toLoad.push({ config, index });\n }\n // Omitting an in-flight section preserves the empty, loading fallback.\n }\n });\n\n if (toLoad.length === 0) {\n setDynamicResults(preResolved);\n setLoadingSet(new Set());\n return;\n }\n\n const loadingIndices = toLoad.map(({ index }) => index);\n setDynamicResults(preResolved);\n setLoadingSet(new Set(loadingIndices));\n\n toLoad.forEach(({ config, index }) => {\n const loaderArg = config.searchReactive ? searchValue : \"\";\n loadSection(config, index, loaderArg);\n });\n }, [sectionConfig, searchValue, loadSection, getSectionCache]);\n\n const pinnedSections = useMemo((): NormalizedPinnedSection<TID>[] => {\n return sectionConfig.map((config, index) => {\n if (!config.isDynamic) {\n return { label: config.label, options: config.staticOptions! };\n }\n if (!loadingSet.has(index) && index in dynamicResults) {\n return {\n label: config.label,\n options: dynamicResults[index],\n };\n }\n return { label: config.label, options: [], loading: true };\n });\n }, [sectionConfig, dynamicResults, loadingSet]);\n\n return { pinnedSections };\n}\n","import { useMemo } from \"react\";\nimport type {\n SelectFieldGroupByValue,\n SelectFieldOption,\n} from \"../../components/SelectField/types\";\nimport type { SelectItem } from \"../types/selectFieldInternalTypes\";\n\n/** A group label and its options, normalized for section rendering. */\nexport type NormalizedGroupSection<TID extends string | number> = {\n label: string;\n options: SelectFieldOption<TID>[];\n};\n\ntype UseGroupedOptionsResult<TID extends string | number> = {\n groupedItems: SelectItem<TID>[];\n ungroupedItems: SelectItem<TID>[];\n groupSections: NormalizedGroupSection<TID>[];\n};\n\n/**\n * Partitions options into Downshift items and group sections, preserving\n * first-seen group order.\n */\nexport function useGroupedOptions<TID extends string | number>(\n options: SelectFieldOption<TID>[],\n groupToString?: (groupValue: SelectFieldGroupByValue) => string,\n): UseGroupedOptionsResult<TID> {\n return useMemo(() => {\n const groupedItems: SelectItem<TID>[] = [];\n const ungroupedItems: SelectItem<TID>[] = [];\n const groupSections: NormalizedGroupSection<TID>[] = [];\n\n const groupMap = new Map<\n SelectFieldGroupByValue,\n { label: string; options: SelectFieldOption<TID>[] }\n >();\n\n options.forEach((option) => {\n if (option.group !== undefined) {\n const groupValue = option.group;\n\n if (!groupMap.has(groupValue)) {\n const label = groupToString\n ? groupToString(groupValue)\n : String(groupValue);\n groupMap.set(groupValue, { label, options: [] });\n }\n\n groupMap.get(groupValue)!.options.push(option);\n\n groupedItems.push({\n id: option.id,\n type: \"grouped-option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n } else {\n ungroupedItems.push({\n id: option.id,\n type: \"option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n }\n });\n\n groupMap.forEach(({ label, options: groupOptions }) => {\n groupSections.push({ label, options: groupOptions });\n });\n\n return { groupedItems, ungroupedItems, groupSections };\n }, [options, groupToString]);\n}\n\n/**\n * Returns group sections sorted by each section's first option group value.\n */\nexport function sortGroupSections<TID extends string | number>(\n sections: NormalizedGroupSection<TID>[],\n groupSorter: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number,\n): NormalizedGroupSection<TID>[] {\n return [...sections].sort((a, b) => {\n const groupA = a.options[0]?.group;\n const groupB = b.options[0]?.group;\n if (groupA === undefined || groupB === undefined) return 0;\n return groupSorter(groupA, groupB);\n });\n}\n","import { useMemo } from \"react\";\nimport type {\n SelectFieldGroupByValue,\n SelectFieldOption,\n SelectFieldPinnedOptions,\n} from \"../../components/SelectField/types\";\nimport { usePinnedOptions } from \"./usePinnedOptions\";\nimport { sortGroupSections, useGroupedOptions } from \"./useGroupedOptions\";\n\ntype UseProcessedOptionsParams<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n pinned?: SelectFieldPinnedOptions<TID>;\n searchValue: string;\n groupToString?: (groupValue: SelectFieldGroupByValue) => string;\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n};\n\n/**\n * Combines pinned-option loading with grouped and ungrouped option\n * normalization, then optionally sorts the groups.\n */\nexport const useProcessedOptions = <TID extends string | number>({\n options,\n pinned,\n searchValue,\n groupToString,\n groupSorter,\n}: UseProcessedOptionsParams<TID>) => {\n const { pinnedSections } = usePinnedOptions(pinned, searchValue);\n\n const { ungroupedItems, groupSections: rawGroupSections } = useGroupedOptions(\n options,\n groupToString,\n );\n\n const groupSections = useMemo(() => {\n if (groupSorter && rawGroupSections.length > 0) {\n return sortGroupSections(rawGroupSections, groupSorter);\n }\n return rawGroupSections;\n }, [rawGroupSections, groupSorter]);\n\n return { pinnedSections, ungroupedItems, groupSections };\n};\n","import type { SelectFieldOption } from \"../../components/SelectField/types\";\nimport type {\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\nimport type { NormalizedPinnedSection } from \"../hooks/usePinnedOptions\";\nimport type { NormalizedGroupSection } from \"../hooks/useGroupedOptions\";\n\nexport function toSelectItem<TID extends string | number>(\n option: SelectFieldOption<TID>,\n): SelectItem<TID> {\n return {\n id: option.id,\n type: \"option\",\n disabled: option.disabled ?? false,\n original: option,\n };\n}\n\ntype BuildSelectItemsParams<TID extends string | number> = {\n prefixItems?: SelectItem[];\n pinnedSections: NormalizedPinnedSection<TID>[];\n groupSections: NormalizedGroupSection<TID>[];\n ungroupedItems: SelectItem<TID>[];\n};\n\n/**\n * Flattens normalized select sections into render items and indexed section\n * metadata.\n */\nexport function buildSelectItems<TID extends string | number>({\n prefixItems,\n pinnedSections,\n groupSections,\n ungroupedItems,\n}: BuildSelectItemsParams<TID>): {\n items: SelectItem<TID>[];\n sectionsMeta: SectionMeta[];\n} {\n const items: SelectItem<TID>[] = [];\n const meta: SectionMeta[] = [];\n\n if (prefixItems) {\n items.push(...(prefixItems as SelectItem<TID>[]));\n }\n\n pinnedSections.forEach((section) => {\n const startIndex = items.length;\n\n section.options.forEach((option) => {\n items.push({\n id: option.id + \"-pinned\",\n type: \"pinned-option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n });\n\n const endIndex = items.length;\n\n if (endIndex > startIndex || section.loading) {\n meta.push({\n type: \"pinned\",\n label: section.label,\n startIndex,\n endIndex,\n loading: section.loading,\n });\n }\n });\n\n groupSections.forEach((section) => {\n const startIndex = items.length;\n\n section.options.forEach((option) => {\n items.push({\n id: option.id,\n type: \"grouped-option\",\n original: option,\n disabled: option.disabled ?? false,\n });\n });\n\n const endIndex = items.length;\n\n if (endIndex > startIndex) {\n meta.push({\n type: \"group\",\n label: section.label,\n startIndex,\n endIndex,\n });\n }\n });\n\n items.push(...ungroupedItems);\n\n return { items, sectionsMeta: meta };\n}\n","import type { ReactNode } from \"react\";\n\n/**\n * Shared \"Add new item\" affordance. The button mounts when `onAddNewItem` is\n * set and {@link resolveAddItemLabel} returns a node.\n */\nexport type AddNewItemProps = {\n /**\n * Button label. A callback receives the current search text and may return\n * `null`/`undefined` to hide the button. Omitted static labels fall back to\n * `\"Add new item\"`.\n */\n addItemLabel?: ReactNode | ((searchText: string) => ReactNode);\n /**\n * Called with the current search text after the host menu closes. Consumers\n * own overlay, list, and selection updates.\n */\n onAddNewItem?: (searchText: string) => void;\n};\n\n/** Resolves the add-new button label for the current search text. */\nexport function resolveAddItemLabel(\n addItemLabel: AddNewItemProps[\"addItemLabel\"],\n searchText: string,\n): ReactNode | null {\n if (typeof addItemLabel === \"function\") {\n return addItemLabel(searchText) ?? null;\n }\n return addItemLabel ?? \"Add new item\";\n}\n\n/**\n * Whether the add-new button should mount. Hosts use this so an empty footer\n * (and its divider) is not rendered when a label callback hides the button.\n */\nexport function shouldShowAddNewItem(\n onAddNewItem: AddNewItemProps[\"onAddNewItem\"],\n addItemLabel: AddNewItemProps[\"addItemLabel\"],\n searchText: string,\n): boolean {\n return (\n onAddNewItem != null &&\n resolveAddItemLabel(addItemLabel, searchText) != null\n );\n}\n","import Button from \"../../components/Button\";\nimport Add from \"@servicetitan/hammer-icon/mdi/round/add.svg\";\nimport {\n type AddNewItemProps,\n resolveAddItemLabel,\n} from \"../types/addNewItemTypes\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../constants/anvParts\";\n\nexport type AddNewItemButtonProps = AddNewItemProps & {\n /** Passed to the label callback and add-item handler. */\n searchText: string;\n /** Closes the host menu before the add-item handler runs. */\n onCloseMenu?: () => void;\n};\n\n/**\n * Add-new affordance for select menus. It remains unmounted without a handler\n * or when the label callback returns `null`/`undefined`.\n */\nexport const AddNewItemButton = ({\n searchText,\n addItemLabel,\n onAddNewItem,\n onCloseMenu,\n}: AddNewItemButtonProps) => {\n if (!onAddNewItem) return null;\n\n const resolvedLabel = resolveAddItemLabel(addItemLabel, searchText);\n if (resolvedLabel == null) return null;\n\n return (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n icon={{ before: Add }}\n // Safari does not focus buttons on mousedown; without preventDefault the\n // popover's focusout listener fires with relatedTarget=null and closes\n // the menu before the click handler runs.\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n onCloseMenu?.();\n onAddNewItem(searchText);\n }}\n style={{ width: \"100%\" }}\n {...{ [ANV_PART_ATTR]: COMMON_PART.addNewItemButton }}\n >\n {resolvedLabel}\n </Button>\n );\n};\n\nAddNewItemButton.displayName = \"AddNewItemButton\";\n","import {\n type ForwardedRef,\n useImperativeHandle,\n useMemo,\n useState,\n} from \"react\";\nimport {\n useSelectFieldLoading,\n DEFAULT_PAGE_SIZE,\n} from \"./useSelectFieldLoading\";\nimport { useAdaptiveView } from \"../../beta/hooks/useAdaptiveView\";\n\nexport type UseSelectOrchestrationConfig = {\n lazy: false | \"page\" | \"offset\" | \"group\" | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n loadOptions: any;\n cache?: { enabled?: boolean; maxSize?: number };\n lazyOptions?: { pageSize?: number; limit?: number };\n initialLoad?: \"auto\" | \"immediate\" | \"open\";\n displayMenuAs?: \"auto\" | \"popover\" | \"dialog\";\n ref: ForwardedRef<{ clearCache: () => void; invalidate: () => void }>;\n};\n\n/**\n * Resolves menu surface and initial-load mode, then wires option loading and\n * an imperative `clearCache` / `invalidate` handle. `displayMenuAs: \"auto\"` is\n * dialog on mobile and popover otherwise; `initialLoad: \"auto\"` is immediate.\n * `invalidate` also resets `initialLoadPerformed`.\n */\nexport function useSelectOrchestration<TID extends string | number>(\n config: UseSelectOrchestrationConfig,\n) {\n const {\n lazy,\n loadOptions: loadOptionsProp,\n cache,\n lazyOptions,\n initialLoad: initialLoadProp = \"auto\",\n displayMenuAs: displayMenuAsProp = \"auto\",\n ref,\n } = config;\n\n const [initialLoadPerformed, setInitialLoadPerformed] = useState(false);\n\n const { isMobile } = useAdaptiveView();\n const displayAs =\n displayMenuAsProp === \"auto\"\n ? isMobile\n ? \"dialog\"\n : \"popover\"\n : displayMenuAsProp;\n\n const initialLoad =\n initialLoadProp === \"auto\" ? \"immediate\" : initialLoadProp;\n\n const pageSize =\n lazy === \"page\"\n ? (lazyOptions?.pageSize ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n const limit =\n lazy === \"offset\"\n ? (lazyOptions?.limit ?? DEFAULT_PAGE_SIZE)\n : DEFAULT_PAGE_SIZE;\n\n const loadingHookConfig = useMemo(() => {\n const cacheConfig = {\n enabled: cache?.enabled,\n maxSize: cache?.maxSize,\n };\n if (lazy === \"page\")\n return {\n lazy: \"page\" as const,\n loadOptions: loadOptionsProp,\n pageSize,\n cache: cacheConfig,\n };\n if (lazy === \"offset\")\n return {\n lazy: \"offset\" as const,\n loadOptions: loadOptionsProp,\n limit,\n cache: cacheConfig,\n };\n if (lazy === \"group\")\n return {\n lazy: \"group\" as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n return {\n lazy: false as const,\n loadOptions: loadOptionsProp,\n cache: cacheConfig,\n };\n }, [lazy, loadOptionsProp, pageSize, limit, cache?.enabled, cache?.maxSize]);\n\n const {\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n clearCache,\n } = useSelectFieldLoading<TID>(loadingHookConfig);\n\n useImperativeHandle(\n ref,\n () => ({\n clearCache,\n invalidate: () => {\n clearCache();\n setInitialLoadPerformed(false);\n },\n }),\n [clearCache],\n );\n\n return {\n displayAs,\n initialLoad,\n initialLoadPerformed,\n setInitialLoadPerformed,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n };\n}\n","import { matchSorter, type MatchSorterOptions } from \"match-sorter\";\nimport type {\n SelectFieldOption,\n SelectFieldGroupByValue,\n} from \"../../components/SelectField/types\";\n\nexport type SyncFilterFn<\n TID extends string | number = string | number,\n T extends SelectFieldOption<TID> = SelectFieldOption<TID>,\n> = (options: T[], searchValue: string) => T[];\n\n/** Filters by label and search text, preserving input order for equal matches. */\nexport const defaultSyncFilter = <\n TID extends string | number,\n T extends SelectFieldOption<TID> = SelectFieldOption<TID>,\n>(\n options: T[],\n searchValue: string,\n) =>\n matchSorter(options, searchValue, {\n keys: [\"label\", \"searchText\"],\n baseSort: (a, b) => a.index - b.index,\n });\n\n/** Normalizes a filter function or match-sorter options into a sync filter. */\nexport const toSyncFilterFn = <\n TID extends string | number,\n T extends SelectFieldOption<TID> = SelectFieldOption<TID>,\n>(\n filter: SyncFilterFn<TID, T> | MatchSorterOptions<T>,\n): SyncFilterFn<TID, T> =>\n typeof filter === \"function\"\n ? filter\n : (options, searchValue) =>\n matchSorter(options, searchValue, {\n baseSort: (a, b) => a.index - b.index,\n ...filter,\n });\n\n/**\n * Orders groups with the comparator, keeps options stable within each group,\n * and places ungrouped options last.\n */\nexport const sortByGroup = <\n TID extends string | number,\n T extends SelectFieldOption<TID> = SelectFieldOption<TID>,\n>(\n options: T[],\n groupSorter: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number,\n): T[] => {\n const groupOrder = new Map<SelectFieldGroupByValue | undefined, number>();\n const uniqueGroups: (SelectFieldGroupByValue | undefined)[] = [];\n options.forEach((opt) => {\n if (!groupOrder.has(opt.group)) {\n groupOrder.set(opt.group, uniqueGroups.length);\n uniqueGroups.push(opt.group);\n }\n });\n\n uniqueGroups.sort((a, b) => {\n if (a === undefined && b === undefined) return 0;\n if (a === undefined) return 1;\n if (b === undefined) return -1;\n return groupSorter(a, b);\n });\n\n uniqueGroups.forEach((group, index) => {\n groupOrder.set(group, index);\n });\n\n return [...options].sort((a, b) => {\n const orderA = groupOrder.get(a.group) ?? Infinity;\n const orderB = groupOrder.get(b.group) ?? Infinity;\n return orderA - orderB;\n });\n};\n"],"names":["options","Check","styles","Add"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInitialFocus-CGybEc6x.js","sources":["../src/internal/hooks/useDialogTransitionStates/useDialogTransitionStates.ts","../src/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.ts","../src/components/DrillDown/internal/useDrillDownContextState.ts","../src/components/Dialog/internal/useInitialFocus.ts"],"sourcesContent":["import { type RefObject, useCallback } from \"react\";\nimport {\n useOpenCloseTransitionStates,\n type OpenCloseTransitionStateEffects,\n} from \"../useOpenCloseTransitionStates\";\n\n/**\n * Coordinates a dialog's modal lifecycle with its CSS opening and closing\n * animations.\n */\nexport const useDialogTransitionStates = (\n ref: RefObject<HTMLDialogElement>,\n openProp: boolean | undefined,\n options: OpenCloseTransitionStateEffects = {},\n) => {\n const { onOpenAnimationStart, onCloseAnimationComplete } = options;\n\n const getDurationMs = useCallback(() => {\n if (!ref.current || !window) return 0;\n const duration = window.getComputedStyle(ref.current).animationDuration;\n return parseFloat(duration) * 1000;\n }, [ref]);\n\n const handleOpenAnimationStart = useCallback(() => {\n if (!ref.current) return;\n ref.current.showModal();\n onOpenAnimationStart?.();\n }, [ref, onOpenAnimationStart]);\n\n const handleCloseAnimationComplete = useCallback(() => {\n if (!ref.current) return;\n ref.current.close();\n onCloseAnimationComplete?.();\n }, [ref, onCloseAnimationComplete]);\n\n return useOpenCloseTransitionStates(openProp, {\n ...options,\n onOpenAnimationStart: handleOpenAnimationStart,\n onCloseAnimationComplete: handleCloseAnimationComplete,\n durationMs: getDurationMs,\n });\n};\n","import { type RefObject, useEffect, useRef, useState } from \"react\";\nimport { type FocusableElement, tabbable } from \"tabbable\";\n\ntype OptionProps =\n | {\n observeChange: false;\n }\n | {\n observeChange: true;\n attributes?: boolean;\n characterData?: boolean;\n childList?: boolean;\n subtree?: boolean;\n };\n\n/** Tracks tabbable descendants within a container as its DOM changes. */\nexport const useKeyboardFocusables = (\n element: RefObject<HTMLElement> | HTMLElement | undefined,\n options: OptionProps = {\n observeChange: true,\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n },\n) => {\n const [focusables, setFocusables] = useState<FocusableElement[] | null>(null);\n const observerRef = useRef<MutationObserver>();\n\n useEffect(() => {\n const target = element instanceof HTMLElement ? element : element?.current;\n if (!target) return;\n if (!options.observeChange && !focusables) {\n setFocusables(tabbable(target as Element));\n return;\n }\n\n const mutationCallback = () => {\n const targetArr = tabbable(target as Element);\n if (targetArr.length === 0) return;\n setFocusables(targetArr);\n };\n\n const observer = new MutationObserver(mutationCallback);\n observerRef.current = observer;\n observer.observe(target, {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [element, options, focusables]);\n\n return { focusables };\n};\n","import { useState, useCallback, useRef, type MutableRefObject } from \"react\";\nimport type { DrillDownContextProps } from \"./DrillDownContext\";\n\nconst getActiveHTMLElement = () => {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n};\n\ntype useDrillDownContextStateParams = {\n /**\n * Screen opened by the first `next()` from a closed stack, and restored when\n * the host closes after a drilldown session. Defaults to `0`.\n */\n defaultDrillDownIndex?: number;\n};\n\nexport function useDrillDownContextState({\n defaultDrillDownIndex = 0,\n}: useDrillDownContextStateParams) {\n // Closed until `next()` or `setIndex`; `defaultDrillDownIndex` is not the first paint.\n const [drillDownIndex, setDrillDownIndex] =\n useState<DrillDownContextProps[\"index\"]>(undefined);\n const [registeredIndices, setRegisteredIndices] = useState<\n DrillDownContextProps[\"registeredIndices\"]\n >([]);\n const drillDownPath = useRef<number[]>([]);\n const [onClose, setOnClose] = useState<(() => void)[]>([]);\n const navigationTriggerFocusRef = useRef<HTMLElement | null>(null);\n const hostTriggerFocusRef = useRef<HTMLElement | null>(null);\n const shouldRestoreHostFocusRef = useRef(false);\n const hasActiveDrillDownRef = useRef(false);\n\n const restoreFocus = useCallback(\n (focusRef: MutableRefObject<HTMLElement | null>) => {\n requestAnimationFrame(() => {\n focusRef.current?.focus();\n focusRef.current = null;\n });\n },\n [],\n );\n\n const restoreNavigationFocus = useCallback(() => {\n restoreFocus(navigationTriggerFocusRef);\n }, [restoreFocus]);\n\n const restoreHostFocus = useCallback(() => {\n restoreFocus(hostTriggerFocusRef);\n }, [restoreFocus]);\n\n const back = useCallback(() => {\n const newIndex = drillDownPath.current.pop();\n // An empty path closes the stack and restores the opener.\n if (newIndex == null && navigationTriggerFocusRef.current) {\n setDrillDownIndex(undefined);\n restoreNavigationFocus();\n return;\n }\n setDrillDownIndex(newIndex);\n }, [setDrillDownIndex, drillDownPath, restoreNavigationFocus]);\n\n const next = useCallback(() => {\n if (drillDownIndex == null) {\n // Capture the opener so later close can restore it.\n navigationTriggerFocusRef.current = getActiveHTMLElement();\n drillDownPath.current = [];\n setDrillDownIndex(defaultDrillDownIndex);\n return;\n }\n if (registeredIndices && registeredIndices[drillDownIndex + 1] == null) {\n // No later registered screen: close rather than no-op.\n drillDownPath.current = [];\n setDrillDownIndex(undefined);\n restoreNavigationFocus();\n return;\n }\n drillDownPath.current.push(drillDownIndex);\n setDrillDownIndex(drillDownIndex + 1);\n }, [\n drillDownIndex,\n setDrillDownIndex,\n defaultDrillDownIndex,\n drillDownPath,\n registeredIndices,\n restoreNavigationFocus,\n ]);\n\n const setIndexWithinBounds = useCallback(\n (index: number | undefined) => {\n // Out of bounds or unregistered: close rather than clamp.\n if (\n index == null ||\n index < 0 ||\n (registeredIndices && registeredIndices[index] == null)\n ) {\n setDrillDownIndex(undefined);\n restoreNavigationFocus();\n return;\n }\n if (drillDownIndex === undefined) {\n navigationTriggerFocusRef.current = getActiveHTMLElement();\n drillDownPath.current = [];\n } else {\n // Jumps from an open screen still push so `back()` retraces this visit.\n drillDownPath.current.push(drillDownIndex);\n }\n setDrillDownIndex(index);\n },\n [\n drillDownIndex,\n setDrillDownIndex,\n drillDownPath,\n registeredIndices,\n restoreNavigationFocus,\n ],\n );\n\n const setHostTrigger = useCallback((element: HTMLElement | null) => {\n // First non-null host trigger wins for restore-after-close.\n if (element == null || hostTriggerFocusRef.current != null) return;\n hostTriggerFocusRef.current = element;\n }, []);\n\n const onHostCloseHandler = useCallback(() => {\n // Host close restores `defaultDrillDownIndex`, not a cleared stack.\n const shouldResetToDefault =\n drillDownIndex != null || hasActiveDrillDownRef.current;\n\n drillDownPath.current = [];\n navigationTriggerFocusRef.current = null;\n shouldRestoreHostFocusRef.current = true;\n hasActiveDrillDownRef.current = false;\n\n if (shouldResetToDefault) {\n setDrillDownIndex(defaultDrillDownIndex);\n }\n }, [defaultDrillDownIndex, drillDownIndex]);\n\n const onHostClosedHandler = useCallback(() => {\n if (!shouldRestoreHostFocusRef.current) return;\n\n shouldRestoreHostFocusRef.current = false;\n restoreHostFocus();\n }, [restoreHostFocus]);\n\n // Sticky so host close still resets after the index has already gone undefined.\n if (drillDownIndex != null) {\n hasActiveDrillDownRef.current = true;\n }\n\n const setOnCloseForIndex = useCallback(\n (fn: () => void, index: number) => {\n setOnClose((arr) => {\n const nextOnClose = [...arr];\n nextOnClose[index] = () => {\n fn();\n setDrillDownIndex(undefined);\n restoreNavigationFocus();\n };\n return nextOnClose;\n });\n },\n [restoreNavigationFocus],\n );\n\n return {\n index: drillDownIndex,\n setIndex: setIndexWithinBounds,\n back,\n next,\n registeredIndices,\n setRegisteredIndices,\n onClose,\n setOnClose: setOnCloseForIndex,\n hostIsInteractive: true,\n setHostTrigger,\n onHostClose: onHostCloseHandler,\n onHostClosed: onHostClosedHandler,\n };\n}\n","import { type RefObject, useEffect } from \"react\";\nimport { type FocusableElement, tabbable } from \"tabbable\";\n\nexport type InitialFocusOptions = {\n /** Selects a target from the dialog's tabbable elements. */\n computeFocus?: (focusables: FocusableElement[]) => FocusableElement;\n};\n\n/** Moves focus into a dialog when its native `open` attribute is set. */\nexport const useInitialFocus = (\n dialogRef: RefObject<HTMLDialogElement>,\n { computeFocus }: InitialFocusOptions,\n) => {\n useEffect(() => {\n if (!dialogRef.current) {\n return () => {};\n }\n // Waiting for the native attribute ensures `tabbable` runs after `showModal()`.\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.attributeName === \"open\" &&\n mutation.target === dialogRef.current &&\n mutation.target instanceof HTMLDialogElement &&\n mutation.target.open === true\n ) {\n const focusables = tabbable(dialogRef.current);\n const target = computeFocus?.(focusables) || focusables[0];\n target?.focus();\n }\n });\n });\n observer.observe(dialogRef.current, {\n attributes: true,\n attributeFilter: [\"open\"],\n });\n return () => {\n observer.disconnect();\n };\n }, [dialogRef, computeFocus]);\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"file":"usePrefersReducedMotion-DR9B_D6w.js","sources":["../src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Tracks whether the user has requested reduced motion at the system level.\n * Reports `false` until the media query is read after mount.\n */\nexport const usePrefersReducedMotion = (): {\n prefersReducedMotion: boolean;\n} => {\n const [prefersReducedMotion, setPrefersReducedMotion] =\n useState<boolean>(false);\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n\n const sync = () => {\n setPrefersReducedMotion(mediaQuery.matches);\n };\n\n sync();\n\n const handleModern = (event: MediaQueryListEvent) => {\n setPrefersReducedMotion(event.matches);\n };\n\n if (typeof mediaQuery.addEventListener === \"function\") {\n mediaQuery.addEventListener(\"change\", handleModern);\n return () => {\n mediaQuery.removeEventListener(\"change\", handleModern);\n };\n }\n\n const handleLegacy = () => {\n sync();\n };\n\n mediaQuery.addListener(handleLegacy);\n return () => {\n mediaQuery.removeListener(handleLegacy);\n };\n }, []);\n\n return {\n prefersReducedMotion,\n };\n};\n"],"names":[],"mappings":";;AAMO,MAAM,0BAA0B,MAElC;AACH,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClD,SAAkB,KAAK,CAAA;AAEzB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA;AAEvE,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,uBAAA,CAAwB,WAAW,OAAO,CAAA;AAAA,IAC5C,CAAA;AAEA,IAAA,IAAA,EAAK;AAEL,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+B;AACnD,MAAA,uBAAA,CAAwB,MAAM,OAAO,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,IAAI,OAAO,UAAA,CAAW,gBAAA,KAAqB,UAAA,EAAY;AACrD,MAAA,UAAA,CAAW,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAClD,MAAA,OAAO,MAAM;AACX,QAAA,UAAA,CAAW,mBAAA,CAAoB,UAAU,YAAY,CAAA;AAAA,MACvD,CAAA;AAAA,IACF;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAA,EAAK;AAAA,IACP,CAAA;AAEA,IAAA,UAAA,CAAW,YAAY,YAAY,CAAA;AACnC,IAAA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,eAAe,YAAY,CAAA;AAAA,IACxC,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;;;;"}
package/dist/vite.svg DELETED
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>