@servicetitan/anvil2 3.0.1 → 3.0.3
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.
- package/CHANGELOG.md +43 -0
- package/README.md +8 -6
- package/dist/{AiMark-B1-M3ZgP.js → AiMark-DiMotaq3.js} +3 -3
- package/dist/{AiMark-B1-M3ZgP.js.map → AiMark-DiMotaq3.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-C04WIw7A.js → Alert-DhhVURcl.js} +2 -2
- package/dist/{Alert-C04WIw7A.js.map → Alert-DhhVURcl.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Breadcrumbs-CAJMeA1D.js → Breadcrumbs-vvKOtFwN.js} +2 -2
- package/dist/{Breadcrumbs-CAJMeA1D.js.map → Breadcrumbs-vvKOtFwN.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BAbAagIx.js → Calendar-CMzwTBdD.js} +2 -2
- package/dist/{Calendar-BAbAagIx.js.map → Calendar-CMzwTBdD.js.map} +1 -1
- package/dist/{Calendar-CaCMa_jq.js → Calendar-DCO_y5QZ.js} +3 -3
- package/dist/{Calendar-CaCMa_jq.js.map → Calendar-DCO_y5QZ.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-BSAS8-DM.js → Checkbox-BngBrjEV.js} +3 -3
- package/dist/{Checkbox-BSAS8-DM.js.map → Checkbox-BngBrjEV.js.map} +1 -1
- package/dist/{Checkbox-Ckl8EFpF.js → Checkbox-lSwl_u26.js} +2 -2
- package/dist/{Checkbox-Ckl8EFpF.js.map → Checkbox-lSwl_u26.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-Da8c7tKP.js → Chip-DBn3KRak.js} +2 -2
- package/dist/{Chip-Da8c7tKP.js.map → Chip-DBn3KRak.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-CBLaT1lU.js → Combobox-BwItJKgY.js} +5 -5
- package/dist/{Combobox-CBLaT1lU.js.map → Combobox-BwItJKgY.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BDXdCF7J.js → DataTable-CME7SbPc.js} +1237 -149
- package/dist/DataTable-CME7SbPc.js.map +1 -0
- package/dist/DataTable.css +259 -103
- package/dist/{DateFieldRange-DPTC3EZz.js → DateFieldRange-U-5bf9og.js} +4 -4
- package/dist/{DateFieldRange-DPTC3EZz.js.map → DateFieldRange-U-5bf9og.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-w1G-zd9G.js → DateFieldSingle-BKG9sqiM.js} +4 -4
- package/dist/{DateFieldSingle-w1G-zd9G.js.map → DateFieldSingle-BKG9sqiM.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DHNVc7Sd.js → DateFieldYearless-DSqjzJu1.js} +4 -4
- package/dist/{DateFieldYearless-DHNVc7Sd.js.map → DateFieldYearless-DSqjzJu1.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-C5ktVUgG.js → DateFieldYearlessRange-CTvEP2-M.js} +3 -3
- package/dist/{DateFieldYearlessRange-C5ktVUgG.js.map → DateFieldYearlessRange-CTvEP2-M.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BubWkBZ0.js → DaysOfTheWeek-BkvgTLLI.js} +4 -4
- package/dist/{DaysOfTheWeek-BubWkBZ0.js.map → DaysOfTheWeek-BkvgTLLI.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-ByTyuybu.js → Dialog-BG9oFx5p.js} +4 -4
- package/dist/{Dialog-ByTyuybu.js.map → Dialog-BG9oFx5p.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Dnd.js +2 -1
- package/dist/Dnd.js.map +1 -1
- package/dist/DndHandleButton-Dgt9G-dF.js +43 -0
- package/dist/DndHandleButton-Dgt9G-dF.js.map +1 -0
- package/dist/DndHandleButton.css +22 -0
- package/dist/DndSort.js +3 -2
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CwyfBcwt.js → Drawer-CmoV9FWV.js} +4 -4
- package/dist/{Drawer-CwyfBcwt.js.map → Drawer-CmoV9FWV.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-DqLSnkih.js → EditCard-DFBjxF9l.js} +2 -2
- package/dist/{EditCard-DqLSnkih.js.map → EditCard-DFBjxF9l.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-DZWu5dMp.js → FieldLabel-rHPbiyR3.js} +3 -3
- package/dist/{FieldLabel-DZWu5dMp.js.map → FieldLabel-rHPbiyR3.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-BU8StPPd.js → FilterBar-Cr0Tiw-y.js} +14 -14
- package/dist/{FilterBar-BU8StPPd.js.map → FilterBar-Cr0Tiw-y.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/{Flex-DOUtHiPi.js → Flex-_orhvoxS.js} +3 -3
- package/dist/{Flex-DOUtHiPi.js.map → Flex-_orhvoxS.js.map} +1 -1
- package/dist/Flex.css +4 -20
- package/dist/Flex.js +1 -1
- package/dist/{Grid-B1VVssDD.js → Grid-_-rtwanf.js} +4 -4
- package/dist/{Grid-B1VVssDD.js.map → Grid-_-rtwanf.js.map} +1 -1
- package/dist/Grid.css +6 -22
- package/dist/Grid.js +1 -1
- package/dist/{InputMask-EwEJlW-t.js → InputMask-DxbFpzo7.js} +3 -3
- package/dist/{InputMask-EwEJlW-t.js.map → InputMask-DxbFpzo7.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/InteractiveCard-KGs2b_al.js +119 -0
- package/dist/InteractiveCard-KGs2b_al.js.map +1 -0
- package/dist/InteractiveCard.css +21 -28
- package/dist/InteractiveCard.js +1 -1
- package/dist/{ListView-DBO9Bl1H.js → ListView-CYkuvkAy.js} +2 -2
- package/dist/{ListView-DBO9Bl1H.js.map → ListView-CYkuvkAy.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-C0tjQFDF.js → Listbox-DbSr9FiH.js} +3 -3
- package/dist/{Listbox-C0tjQFDF.js.map → Listbox-DbSr9FiH.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-ueey5UBM.js → MultiSelectFieldSync-CSTBMpZC.js} +29 -13
- package/dist/MultiSelectFieldSync-CSTBMpZC.js.map +1 -0
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-D7hqugcQ.js → MultiSelectMenuSync-DKt2MBno.js} +3 -3
- package/dist/{MultiSelectMenuSync-D7hqugcQ.js.map → MultiSelectMenuSync-DKt2MBno.js.map} +1 -1
- package/dist/{NumberField-DJbdyatF.js → NumberField-BDoMHzQ4.js} +7 -7
- package/dist/NumberField-BDoMHzQ4.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +2 -2
- package/dist/{Page-DbK-JKyB.js → Page-3UxH97bm.js} +10 -10
- package/dist/{Page-DbK-JKyB.js.map → Page-3UxH97bm.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Bg5Nsdik.js → Pagination-8JccjxhO.js} +3 -3
- package/dist/{Pagination-Bg5Nsdik.js.map → Pagination-8JccjxhO.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CyB7yzSf.js → Popover-C_XdNvAZ.js} +2 -2
- package/dist/{Popover-CyB7yzSf.js.map → Popover-C_XdNvAZ.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-DSrjgLTx.js → ProgressBar-Cpf78iq6.js} +3 -3
- package/dist/{ProgressBar-DSrjgLTx.js.map → ProgressBar-Cpf78iq6.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CQaXJ72d.js → Radio-DJ6KgfcS.js} +2 -2
- package/dist/{Radio-CQaXJ72d.js.map → Radio-DJ6KgfcS.js.map} +1 -1
- package/dist/{Radio-DO4UhbBE.js → Radio-IksHWkBl.js} +3 -3
- package/dist/{Radio-DO4UhbBE.js.map → Radio-IksHWkBl.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/RichTextEditor-DUz-bi8H.js +30852 -0
- package/dist/RichTextEditor-DUz-bi8H.js.map +1 -0
- package/dist/RichTextEditor.css +178 -0
- package/dist/RichTextEditor.d.ts +2 -0
- package/dist/RichTextEditor.js +2 -0
- package/dist/RichTextEditor.js.map +1 -0
- package/dist/{SelectCard-CtXwY8FZ.js → SelectCard-E-13CjHS.js} +3 -3
- package/dist/{SelectCard-CtXwY8FZ.js.map → SelectCard-E-13CjHS.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-DLT5dKbx.js → SelectFieldLabel-DznBaE99.js} +4 -2
- package/dist/SelectFieldLabel-DznBaE99.js.map +1 -0
- package/dist/{SelectFieldSync-W_-jTf7z.js → SelectFieldSync-Ci9k35TH.js} +27 -11
- package/dist/SelectFieldSync-Ci9k35TH.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-QcjbQtCO.js → SelectMenuSync-s2IzEHug.js} +3 -3
- package/dist/{SelectMenuSync-QcjbQtCO.js.map → SelectMenuSync-s2IzEHug.js.map} +1 -1
- package/dist/{SelectOptions-BsX0f22q.js → SelectOptions-5zgSQ6Xs.js} +2 -2
- package/dist/{SelectOptions-BsX0f22q.js.map → SelectOptions-5zgSQ6Xs.js.map} +1 -1
- package/dist/{SelectTrigger-BaDvF9JD.js → SelectTrigger-Ce9SHhQ9.js} +2 -2
- package/dist/{SelectTrigger-BaDvF9JD.js.map → SelectTrigger-Ce9SHhQ9.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-kMRqbXwu.js → SelectTriggerBase-BqTVE7Jr.js} +4 -4
- package/dist/{SelectTriggerBase-kMRqbXwu.js.map → SelectTriggerBase-BqTVE7Jr.js.map} +1 -1
- package/dist/{Switch-DeBu4Ucg.js → Switch-DTOkt0oQ.js} +3 -3
- package/dist/{Switch-DeBu4Ucg.js.map → Switch-DTOkt0oQ.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BH8gglCL.js → Text-C0F8AkvH.js} +2 -2
- package/dist/{Text-BH8gglCL.js.map → Text-C0F8AkvH.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-CRDTnuUN.js → TextField-CLZEj0aI.js} +3 -3
- package/dist/{TextField-CRDTnuUN.js.map → TextField-CLZEj0aI.js.map} +1 -1
- package/dist/{TextField-YlMkDHp-.js → TextField-yL52fx5R.js} +2 -2
- package/dist/{TextField-YlMkDHp-.js.map → TextField-yL52fx5R.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-CxXmr_Gx.js → Textarea-CGgyvnM8.js} +3 -3
- package/dist/{Textarea-CxXmr_Gx.js.map → Textarea-CGgyvnM8.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Cz4tMYb3.js → TimeField-B6a5M2IF.js} +4 -4
- package/dist/{TimeField-Cz4tMYb3.js.map → TimeField-B6a5M2IF.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-DYGDohJT.js → Toaster-BFqaSgtk.js} +2 -2
- package/dist/{Toaster-DYGDohJT.js.map → Toaster-BFqaSgtk.js.map} +1 -1
- package/dist/{Toaster-BV8RjmIN.js → Toaster-r2MSja0X.js} +3 -3
- package/dist/{Toaster-BV8RjmIN.js.map → Toaster-r2MSja0X.js.map} +1 -1
- package/dist/{Toolbar-Dzj2KMEy.js → Toolbar-B3gBBULy.js} +6 -6
- package/dist/{Toolbar-Dzj2KMEy.js.map → Toolbar-B3gBBULy.js.map} +1 -1
- package/dist/Toolbar-DVRr_0JF.js +780 -0
- package/dist/Toolbar-DVRr_0JF.js.map +1 -0
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle--2Ka05N8.js → ToolbarButtonToggle-Ch0SH4oH.js} +5 -4
- package/dist/ToolbarButtonToggle-Ch0SH4oH.js.map +1 -0
- package/dist/{Tooltip-BlStOXN3.js → Tooltip-lBmgi5ZB.js} +7 -6
- package/dist/Tooltip-lBmgi5ZB.js.map +1 -0
- package/dist/Tooltip.css +7 -6
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-DyytWt0x.js → YearlessDateInputWithPicker-DA2bOjrc.js} +3 -3
- package/dist/{YearlessDateInputWithPicker-DyytWt0x.js.map → YearlessDateInputWithPicker-DA2bOjrc.js.map} +1 -1
- package/dist/add-BcQkAUip.js +6 -0
- package/dist/add-BcQkAUip.js.map +1 -0
- package/dist/assets/css-utils/a2-border.css +23 -53
- package/dist/assets/css-utils/a2-color.css +221 -449
- package/dist/assets/css-utils/a2-font.css +21 -47
- package/dist/assets/css-utils/a2-spacing.css +238 -481
- package/dist/assets/css-utils/a2-utils.css +497 -1002
- package/dist/assets/css-utils/border.css +23 -53
- package/dist/assets/css-utils/color.css +221 -449
- package/dist/assets/css-utils/font.css +21 -47
- package/dist/assets/css-utils/spacing.css +238 -481
- package/dist/assets/css-utils/utils.css +497 -1002
- package/dist/beta/components/InteractiveCard/InteractiveCard.d.ts +3 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/MultiSelectField/internal/types.d.ts +3 -1
- package/dist/beta/components/MultiSelectField/types.d.ts +5 -1
- package/dist/beta/components/RichTextEditor/RichTextEditor.d.ts +27 -0
- package/dist/beta/components/RichTextEditor/index.d.ts +2 -0
- package/dist/beta/components/RichTextEditor/internal/LinkPopover.d.ts +14 -0
- package/dist/beta/components/RichTextEditor/internal/MentionList.d.ts +14 -0
- package/dist/beta/components/RichTextEditor/internal/MentionNodeView.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/MentionPopover.d.ts +16 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorContext.d.ts +57 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorDragHandle.d.ts +6 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorMockData.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorProvider.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
- package/dist/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +3 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +18 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +32 -0
- package/dist/beta/components/RichTextEditor/types.d.ts +103 -0
- package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +3 -1
- package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/SelectField/types.d.ts +5 -1
- package/dist/beta/components/Table/DataTable/DataTable.d.ts +40 -1
- package/dist/beta/components/Table/DataTable/internal/DataTableBody.d.ts +22 -0
- package/dist/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +18 -1
- package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +16 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +8 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +49 -0
- package/dist/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +9 -5
- package/dist/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +3 -0
- package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -1
- package/dist/beta/components/Table/createColumnHelper.d.ts +48 -22
- package/dist/beta/components/Table/internal/getCommonPinningClasses.d.ts +1 -1
- package/dist/beta/components/Table/types.d.ts +311 -7
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta.js +13 -12
- package/dist/beta.js.map +1 -1
- package/dist/components/Toolbar/internal/utils/accessibility.d.ts +5 -0
- package/dist/getKeyboardFocusableElements-B_U9rt6y.js +11 -0
- package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -0
- package/dist/index-CqesQXSt.js +17044 -0
- package/dist/index-CqesQXSt.js.map +1 -0
- package/dist/index-DtsM4pjR.js +71 -0
- package/dist/index-DtsM4pjR.js.map +1 -0
- package/dist/index.css +1 -22
- package/dist/index.js +47 -811
- package/dist/index.js.map +1 -1
- package/dist/internal/components/Surface/Surface.d.ts +141 -0
- package/dist/internal/components/Surface/index.d.ts +1 -0
- package/dist/internal/components/index.d.ts +1 -0
- package/dist/internal/functions/getKeyboardFocusableElements.d.ts +11 -0
- package/dist/internal/hooks/useNumberField/internal/useNumberFieldKeys.d.ts +2 -0
- package/dist/internal/hooks/useNumberField/useNumberField.d.ts +5 -0
- package/dist/internal/types/selectFieldInternalTypes.d.ts +3 -1
- package/dist/{stripInlineMarkdown-BWbMy7r_.js → stripInlineMarkdown-BOi-eJO3.js} +2 -2
- package/dist/{stripInlineMarkdown-BWbMy7r_.js.map → stripInlineMarkdown-BOi-eJO3.js.map} +1 -1
- package/dist/{syncFilterUtils-nJS_tCsu.js → syncFilterUtils-BCxA8KSW.js} +5 -5
- package/dist/{syncFilterUtils-nJS_tCsu.js.map → syncFilterUtils-BCxA8KSW.js.map} +1 -1
- package/dist/token/core/css-utils/a2-border.css +0 -30
- package/dist/token/core/css-utils/a2-color.css +0 -228
- package/dist/token/core/css-utils/a2-font.css +1 -27
- package/dist/token/core/css-utils/a2-spacing.css +1 -244
- package/dist/token/core/css-utils/a2-utils.css +0 -505
- package/dist/token/core/css-utils/border.css +0 -30
- package/dist/token/core/css-utils/color.css +0 -228
- package/dist/token/core/css-utils/font.css +1 -27
- package/dist/token/core/css-utils/spacing.css +1 -244
- package/dist/token/core/css-utils/utils.css +0 -505
- package/dist/{useDrilldown-DwzT0Fse.js → useDrilldown-DWqp5gyZ.js} +4 -4
- package/dist/{useDrilldown-DwzT0Fse.js.map → useDrilldown-DWqp5gyZ.js.map} +1 -1
- package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
- package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
- package/dist/{useNumberField-eMyk7MB8.js → useNumberField-D_ic9i2q.js} +4 -2
- package/dist/useNumberField-D_ic9i2q.js.map +1 -0
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
- package/dist/{useToggleSelection-CAwGOeXk.js → useToggleSelection-DLH87UOP.js} +2 -2
- package/dist/{useToggleSelection-CAwGOeXk.js.map → useToggleSelection-DLH87UOP.js.map} +1 -1
- package/package.json +18 -3
- package/dist/DataTable-BDXdCF7J.js.map +0 -1
- package/dist/InteractiveCard-CnW0m_F-.js +0 -87
- package/dist/InteractiveCard-CnW0m_F-.js.map +0 -1
- package/dist/MultiSelectFieldSync-ueey5UBM.js.map +0 -1
- package/dist/NumberField-DJbdyatF.js.map +0 -1
- package/dist/SelectFieldLabel-DLT5dKbx.js.map +0 -1
- package/dist/SelectFieldSync-W_-jTf7z.js.map +0 -1
- package/dist/ToolbarButtonToggle--2Ka05N8.js.map +0 -1
- package/dist/Tooltip-BlStOXN3.js.map +0 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js +0 -12
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +0 -1
- package/dist/index-ByMdotWU.js +0 -107
- package/dist/index-ByMdotWU.js.map +0 -1
- package/dist/useNumberField-eMyk7MB8.js.map +0 -1
- /package/dist/{index2.css → Toolbar2.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolbarButtonToggle--2Ka05N8.js","sources":["../src/beta/components/Toolbar/internal/ToolbarContext.tsx","../src/beta/components/Toolbar/internal/utils/accessibility.ts","../src/beta/components/Toolbar/internal/ToolbarItemWrapper.tsx","../src/beta/components/Toolbar/internal/ToolbarItemOverflowContext.tsx","../src/beta/components/Toolbar/ToolbarButtonToggle.tsx"],"sourcesContent":["import { createContext, RefObject, useContext } from \"react\";\nimport { ToolbarItemProps, ToolbarOverflowTypes, ToolbarSize } from \"../types\";\n\n/**\n * Context for sharing toolbar state with child components\n */\nexport type ToolbarContextProps = {\n /**\n * Array of toolbar items that should appear in the overflow menu\n */\n overflowItems: ToolbarItemProps[];\n /**\n * Function to add an item to the overflow menu\n */\n addItem: (element: ToolbarItemProps) => void;\n /**\n * Function to remove an item from the overflow menu\n */\n removeItem: (element: ToolbarItemProps) => void;\n /**\n * Reference to the toolbar container element\n */\n toolbarRef: RefObject<HTMLDivElement>;\n /**\n * Array of item IDs in their original order\n */\n orderedIds?: string[];\n /**\n * Overflow behavior type (wrap or collapse)\n */\n overflow: ToolbarOverflowTypes;\n /**\n * Size of toolbar child components\n */\n size: ToolbarSize;\n};\n\n/**\n * Context for managing toolbar state including overflow and size\n */\nexport const ToolbarContext = createContext<ToolbarContextProps>({\n overflowItems: [],\n addItem: () => {\n return;\n },\n removeItem: () => {\n return;\n },\n toolbarRef: { current: null },\n orderedIds: [],\n overflow: \"wrap\",\n size: \"xsmall\",\n});\n\n/**\n * Hook to access the toolbar size from context\n * @returns The current toolbar size\n */\nexport const useToolbarSize = (): ToolbarSize =>\n useContext(ToolbarContext).size;\n","import { KeyboardEvent } from \"react\";\nimport { getKeyboardFocusableElements } from \"../../../../../internal/functions\";\n\n/**\n * Gets all visible focusable elements for a specific toolbar instance.\n * Filters out hidden items and includes the overflow trigger if present.\n */\nexport function getToolbarElements(toolbarElement: HTMLElement) {\n const toolbarContent = toolbarElement.querySelector<HTMLElement>(\n '[data-anv=\"toolbar-content\"]',\n );\n\n const mainItems = getKeyboardFocusableElements(toolbarContent).filter(\n (item) => {\n // Only include visible items that are explicitly marked as toolbar items\n const isHidden = !item.closest('[aria-hidden=\"true\"]');\n const isInDrawer = !item.closest('[data-anv=\"filter-group-drawer\"]');\n const isInPopover = !item.closest('[data-anv=\"popover-content\"]');\n return isHidden && isInDrawer && isInPopover;\n },\n );\n\n const overflowTrigger = toolbarElement.querySelector<HTMLElement>(\n '[data-anv=\"toolbar-overflow-trigger\"]',\n );\n\n return overflowTrigger ? [...mainItems, overflowTrigger] : mainItems;\n}\n\n/**\n * Updates tabindex values for all items in a toolbar.\n * Sets tabindex=\"0\" for the active item and tabindex=\"-1\" for all others.\n */\nexport function updateToolbarItemsTabIndex(\n toolbarElement: HTMLElement,\n activeItem?: Element | number,\n) {\n if (!toolbarElement) return;\n\n // Get all toolbar items\n const items = getToolbarElements(toolbarElement);\n if (!items.length) return;\n\n // Determine the active index - default to the first item\n let activeIndex = 0;\n\n if (typeof activeItem === \"number\") {\n // If activeItem is a number, use it directly\n activeIndex = Math.max(0, Math.min(activeItem, items.length - 1));\n } else if (activeItem instanceof Element) {\n // If activeItem is an element, find its index\n const foundIndex = items.indexOf(activeItem);\n if (foundIndex !== -1) {\n activeIndex = foundIndex;\n }\n }\n\n // Update tabindex values\n items.forEach((item, index) => {\n item.setAttribute(\"tabindex\", index === activeIndex ? \"0\" : \"-1\");\n });\n\n return items[activeIndex];\n}\n\n/**\n * Handles keyboard navigation within the toolbar component following ARIA practices.\n *\n * Navigation behavior:\n * - Left/Right arrows move focus in horizontal toolbars\n * - Up/Down arrows move focus in vertical toolbars\n * - Home/End move to first/last items\n * - Navigation wraps around at the ends\n * - Only visible items are included in navigation\n */\nexport function handleToolbarKeyDown(\n event: KeyboardEvent<HTMLElement>,\n toolbarElement: HTMLElement,\n) {\n if (!toolbarElement || event.altKey || event.ctrlKey || event.metaKey) return;\n\n const items = getToolbarElements(toolbarElement);\n if (!items.length) return;\n\n const activeElement = event.target as HTMLElement;\n if (!toolbarElement.contains(activeElement)) return;\n\n const activeItem = items.find(\n (item) =>\n item === activeElement ||\n Array.from(item.children).some((child) => child === activeElement),\n );\n\n const activeIndex = activeItem ? items.indexOf(activeItem) : -1;\n if (activeIndex === -1) return;\n\n let nextIndex = activeIndex;\n const isVertical =\n toolbarElement.getAttribute(\"aria-orientation\") === \"vertical\";\n\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n if (\n (isVertical && event.key === \"ArrowUp\") ||\n (!isVertical && event.key === \"ArrowLeft\")\n ) {\n nextIndex = activeIndex <= 0 ? items.length - 1 : activeIndex - 1;\n }\n break;\n\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n if (\n (isVertical && event.key === \"ArrowDown\") ||\n (!isVertical && event.key === \"ArrowRight\")\n ) {\n nextIndex = activeIndex >= items.length - 1 ? 0 : activeIndex + 1;\n }\n break;\n\n case \"Home\":\n event.preventDefault();\n nextIndex = 0;\n break;\n\n case \"End\":\n event.preventDefault();\n nextIndex = items.length - 1;\n break;\n\n default:\n return;\n }\n\n updateToolbarItemsTabIndex(toolbarElement, nextIndex);\n (items[nextIndex] as HTMLElement)?.focus();\n}\n\n/**\n * Handles keyboard navigation within overflow menu using arrow keys\n */\nexport const handleMenuKeyboardNavigation = (\n event: KeyboardEvent<HTMLUListElement>,\n) => {\n const menuItems = Array.from(\n event.currentTarget.querySelectorAll('[role=\"menuitem\"]'),\n ).map((menuItem) => {\n // Get first focusable element or fallback to menuitem itself\n return getKeyboardFocusableElements(menuItem as HTMLElement)[0] || menuItem;\n });\n\n if (!menuItems.length) return;\n\n const currentIndex = menuItems.indexOf(document.activeElement as HTMLElement);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n const isModifierKey = event.altKey || event.ctrlKey || event.metaKey;\n\n if (isModifierKey) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowUp\": {\n event.preventDefault();\n const direction = event.key === \"ArrowDown\" ? 1 : -1;\n nextIndex =\n (currentIndex + direction + menuItems.length) % menuItems.length;\n break;\n }\n case \"Home\":\n event.preventDefault();\n nextIndex = 0;\n break;\n case \"End\":\n event.preventDefault();\n nextIndex = menuItems.length - 1;\n break;\n default:\n return;\n }\n\n (menuItems[nextIndex] as HTMLElement)?.focus();\n};\n","import { useContext, useEffect, useId, useRef, useCallback } from \"react\";\nimport { ToolbarItemProps } from \"../types\";\nimport { ToolbarContext } from \"./ToolbarContext\";\nimport { useIntersectionObserver } from \"../../../../internal/hooks\";\nimport { updateToolbarItemsTabIndex } from \"./utils/accessibility\";\n\nimport cx from \"classnames\";\nimport styles from \"../Toolbar.module.scss\";\n\n/**\n * Props for the ToolbarItemWrapper component\n */\nexport type ToolbarItemWrapperProps = {\n /**\n * Toolbar item configuration without ID (ID is generated internally)\n */\n item: Omit<ToolbarItemProps, \"id\">;\n /**\n * The toolbar item component to wrap\n */\n children: React.ReactNode;\n /** Optional override for the intersection observer root element */\n observerRoot?: Element | null;\n /** Optional override for visibility change handling */\n onVisibilityChange?: (isVisible: boolean) => void;\n /** Optional margin offset for the intersection observer root */\n rootMargin?: string;\n /** Optional class name to apply to the wrapper element */\n className?: string;\n};\n\n/**\n * ToolbarItemWrapper manages item visibility and focus behavior within a toolbar.\n *\n * Features:\n * - Intersection observation for overflow detection\n * - Automatic overflow menu integration in collapse mode\n * - Focus management and keyboard navigation\n * - ARIA compliance for accessibility\n * - Visibility state management\n * - Proper tab index handling\n * - Context integration with toolbar state\n *\n * @example\n * <ToolbarItemWrapper item={{ itemType: \"button\", itemProps: buttonProps }}>\n * <ToolbarButton {...buttonProps} />\n * </ToolbarItemWrapper>\n */\nexport const ToolbarItemWrapper = ({\n item,\n children,\n observerRoot,\n onVisibilityChange,\n rootMargin,\n className,\n}: ToolbarItemWrapperProps) => {\n const { addItem, removeItem, toolbarRef, overflow } =\n useContext(ToolbarContext);\n const itemId = useId();\n const elementRef = useRef<HTMLDivElement | null>(null);\n const isCollapseMode = overflow === \"collapse\";\n const prevIntersectingRef = useRef<boolean>(true); // Start as visible\n\n /**\n * Handles visibility changes from intersection observer in collapse mode\n * In collapse mode:\n * - When item becomes visible, removes it from overflow menu\n * - When item becomes hidden, adds it to overflow menu\n */\n const handleVisibilityChange = useCallback(\n (isVisible: boolean) => {\n if (!isCollapseMode || prevIntersectingRef.current === isVisible) return;\n\n if (onVisibilityChange) {\n onVisibilityChange(isVisible);\n } else if (item) {\n const itemWithId = { ...item, id: itemId };\n if (isVisible) {\n removeItem(itemWithId);\n } else {\n addItem(itemWithId);\n }\n }\n prevIntersectingRef.current = isVisible;\n },\n [isCollapseMode, onVisibilityChange, item, itemId, addItem, removeItem],\n );\n\n const { isIntersecting, ref } = useIntersectionObserver({\n root: isCollapseMode ? (observerRoot ?? toolbarRef.current) : null,\n threshold: 1,\n initialIsIntersecting: true, // Start as visible\n onChange: handleVisibilityChange,\n rootMargin,\n });\n\n const setRefCallback = useCallback(\n (node: HTMLDivElement | null) => {\n elementRef.current = node;\n // Only set up intersection observer in collapse mode\n if (isCollapseMode) {\n ref(node);\n }\n },\n [ref, isCollapseMode],\n );\n\n /**\n * Manages focus behavior between toolbar items using accessibility utils\n * - Uses updateToolbarItemsTabIndex to manage focus state\n * - Ensures proper keyboard navigation support\n * - Maintains ARIA compliance for focus management\n */\n const handleFocusOrClick = useCallback(() => {\n if (!toolbarRef.current || !elementRef.current) return;\n\n const currentElement = elementRef.current.querySelector(\"button, a, input\");\n if (!currentElement) return;\n\n updateToolbarItemsTabIndex(toolbarRef.current, currentElement);\n }, [toolbarRef]);\n\n // Set up focus management\n useEffect(() => {\n const interactiveEl = elementRef.current?.querySelector(\"button, a, input\");\n if (!interactiveEl) return;\n\n interactiveEl.addEventListener(\"focus\", handleFocusOrClick);\n interactiveEl.addEventListener(\"click\", handleFocusOrClick);\n\n return () => {\n interactiveEl.removeEventListener(\"focus\", handleFocusOrClick);\n interactiveEl.removeEventListener(\"click\", handleFocusOrClick);\n };\n }, [handleFocusOrClick]);\n\n const toolbarItemClassName = cx(styles[\"toolbar-item\"], className);\n const isHidden = isCollapseMode && !isIntersecting;\n\n return (\n <div\n ref={setRefCallback}\n className={toolbarItemClassName}\n style={{ visibility: isHidden ? \"hidden\" : \"visible\" }}\n aria-hidden={isHidden}\n {...{ inert: isHidden ? \"\" : undefined }}\n data-id={itemId}\n data-anv=\"toolbar-item\"\n >\n {children}\n </div>\n );\n};\n","import { createContext, useContext } from \"react\";\n\n/**\n * Context for denoting if the current item is rendered in the overflow menu\n */\ntype OverflowItemContextType = {\n /**\n * Whether the current item is rendered inside the overflow menu\n */\n isInOverflowMenu: boolean;\n};\n\n/**\n * Context for managing overflow menu state\n */\nexport const OverflowItemContext = createContext<OverflowItemContextType>({\n isInOverflowMenu: false,\n});\n\n/**\n * Hook for accessing overflow menu context\n * @returns OverflowItemContextType - The overflow menu context\n */\nexport const useOverFlowItemContext = () => useContext(OverflowItemContext);\n","import { forwardRef } from \"react\";\nimport ButtonToggle, {\n ButtonToggleProps,\n} from \"../../../components/ButtonToggle\";\nimport { WithAriaLabelEnforcement } from \"./types\";\nimport { DataTrackingId } from \"../../../types\";\nimport { useOverFlowItemContext } from \"./internal/ToolbarItemOverflowContext\";\nimport Tooltip from \"../../../components/Tooltip\";\nimport { ToolbarItemWrapper } from \"./internal/ToolbarItemWrapper\";\nimport { useTrackingId } from \"../../../hooks\";\nimport { useToolbarSize } from \"./internal/ToolbarContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Toolbar.module.scss\";\n\n/**\n * Base props for the ToolbarButtonToggle component\n * @extends Omit<ButtonToggleProps, \"aria-label\" | \"children\">\n */\ntype ToolbarButtonToggleBaseProps = Omit<\n ButtonToggleProps,\n \"aria-label\" | \"children\"\n> & {\n /**\n * Is this toolbar control a filter?\n */\n isFilter?: boolean;\n};\n\n/**\n * Props for the ToolbarButtonToggle component\n * @extends WithAriaLabelEnforcement<ToolbarButtonToggleBaseProps>\n */\nexport type ToolbarButtonToggleProps =\n WithAriaLabelEnforcement<ToolbarButtonToggleBaseProps> & DataTrackingId;\n\n/**\n * ToolbarButtonToggle component for toggleable actions within a toolbar.\n *\n * Features:\n * - Toggle state management (on/off)\n * - Designed specifically for toolbar integration\n * - Consistent styling with other toolbar items\n * - Automatic tooltip for icon-only toggles\n * - Overflow menu support\n * - Accessibility enforcement for aria-labels\n * - Visual feedback for toggle state\n * - Proper ARIA attributes for toggle semantics\n *\n * @example\n * <ToolbarButtonToggle icon={BoldIcon} aria-label=\"Bold\" checked={isBold} />\n *\n * @example\n * <ToolbarButtonToggle checked={isItalic}>\n * Italic\n * </ToolbarButtonToggle>\n */\nexport const ToolbarButtonToggle = forwardRef<\n HTMLButtonElement,\n ToolbarButtonToggleProps\n>((props, _ref) => {\n const { className, children, isFilter, ...rest } = props;\n\n // Checks if this component is rendered inside the overflow menu and fallbacks when the context is unavailable\n const { isInOverflowMenu = false } = useOverFlowItemContext?.() || {};\n const size = useToolbarSize();\n\n const trackingId = useTrackingId({\n name: \"ToolbarButtonToggle\",\n data: {\n checked: props.checked,\n disabled: props.disabled,\n \"aria-label\": props[\"aria-label\"],\n children: props.children,\n },\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const buttonToggleClassNames = cx(\n className,\n styles[\"toolbar-button-item\"],\n styles[\"toolbar-button-toggle-item\"],\n );\n\n const item = children ? (\n <ButtonToggle\n data-tracking-id={trackingId}\n size={size}\n data-anv=\"toolbar-button-toggle\"\n className={buttonToggleClassNames}\n {...rest}\n >\n {children}\n </ButtonToggle>\n ) : (\n <Tooltip>\n <Tooltip.Trigger>\n <ButtonToggle\n data-tracking-id={trackingId}\n size={size}\n data-anv=\"toolbar-button-toggle\"\n className={buttonToggleClassNames}\n {...rest}\n />\n </Tooltip.Trigger>\n <Tooltip.Content>{rest[\"aria-label\"]}</Tooltip.Content>\n </Tooltip>\n );\n\n if (isInOverflowMenu || isFilter) {\n return item;\n }\n\n return (\n <ToolbarItemWrapper item={{ itemProps: props, itemType: \"buttonToggle\" }}>\n {item}\n </ToolbarItemWrapper>\n );\n});\n\nToolbarButtonToggle.displayName = \"ToolbarButtonToggle\";\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip-BlStOXN3.js","sources":["../src/components/Tooltip/internal/TooltipContext.ts","../src/components/Tooltip/internal/useTooltipContext.tsx","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/internal/isNonInteractiveTrigger.ts","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import {\n Dispatch,\n SetStateAction,\n CSSProperties,\n RefObject,\n createContext,\n} from \"react\";\nimport { Placement } from \"@floating-ui/react-dom\";\n\nimport { TooltipProps } from \"../Tooltip\";\n\n/**\n * Context props for the Tooltip component\n */\nexport type TooltipContextProps = {\n /**\n * Unique identifier for the tooltip\n */\n tooltipId: string;\n /**\n * Function to set the tooltip ID\n */\n setTooltipId: Dispatch<SetStateAction<string>>;\n /**\n * The trigger element reference\n */\n invoker?: HTMLElement;\n /**\n * Function to set the trigger element\n */\n setInvoker?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The tooltip content element reference\n */\n popover?: HTMLElement;\n /**\n * Function to set the tooltip content element\n */\n setTooltip?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The root node for the tooltip\n */\n rootNode?: HTMLElement;\n /**\n * Function to set the root node\n */\n setRootNode?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The arrow element reference\n */\n arrowElement?: HTMLSpanElement;\n /**\n * Function to set the arrow element\n */\n setArrowElement?: Dispatch<SetStateAction<HTMLSpanElement | undefined>>;\n /**\n * Current open state of the tooltip\n */\n openState: boolean;\n /**\n * Function to set the open state\n */\n setOpenState: Dispatch<SetStateAction<boolean>>;\n /**\n * Inline styles for the tooltip\n */\n tooltipStyle?: CSSProperties;\n /**\n * Placement of the tooltip\n */\n placement?: Placement;\n /**\n * Function to open the tooltip\n */\n openTooltip: () => void;\n /**\n * Function to close the tooltip\n */\n closeTooltip: (replacementFn?: () => void) => void;\n /**\n * Whether the tooltip is controlled\n */\n controlled: boolean;\n /**\n * Whether to disable flip fallback\n */\n disableFlipFallback: TooltipProps[\"disableFlipFallback\"];\n /**\n * Reference to the arrow element\n */\n arrowRef: RefObject<HTMLSpanElement>;\n /**\n * Key for resetting the tooltip\n */\n resetKey: number;\n};\n\n/**\n * React context for sharing tooltip state and functions between components\n */\nexport const TooltipContext = createContext<TooltipContextProps | null>(null);\n","import { useRef, useContext, useLayoutEffect, KeyboardEvent } from \"react\";\n\nimport { TooltipContext } from \"./TooltipContext\";\n\nexport type dataStateType = \"open\" | \"closed\";\n\n/**\n * Custom hook for managing tooltip context and interactions.\n *\n * Features:\n * - Manages tooltip trigger and content refs\n * - Handles mouse and keyboard interactions\n * - Provides ARIA attributes for accessibility\n * - Manages controlled and uncontrolled states\n * - Handles tooltip positioning and visibility\n * - Provides event handlers for trigger and content\n * - Manages arrow element positioning\n *\n * @returns Object containing tooltip context, refs, and event handlers\n */\nexport function useTooltipContext() {\n const context = useContext(TooltipContext);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLSpanElement>(null);\n\n useLayoutEffect(() => {\n if (!invokerRef.current) return;\n context?.setInvoker?.(invokerRef.current);\n if (!context?.openState) return;\n if (!context?.controlled) return;\n context.openTooltip();\n }, [context, invokerRef]);\n\n useLayoutEffect(() => {\n if (!popoverRef.current) return;\n context?.setTooltip?.(popoverRef.current);\n context?.setRootNode?.(popoverRef.current.getRootNode() as HTMLElement);\n if (!arrowRef.current) return;\n context?.setArrowElement?.(arrowRef.current);\n }, [context, popoverRef]);\n\n const onMouseEnterHandler = () => {\n if (context?.controlled) return;\n context?.openTooltip();\n };\n const onMouseLeaveHandler = () => {\n if (context?.controlled) return;\n context?.closeTooltip();\n };\n\n const onFocusHandler = () => {\n if (context?.controlled) return;\n context?.openTooltip();\n };\n const onBlurHandler = () => {\n if (context?.controlled) return;\n context?.closeTooltip();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent) => {\n if (!context?.openState) return;\n if (e.code === \"Escape\" && !context.controlled) {\n context?.closeTooltip();\n return;\n }\n };\n\n if (!context || !invokerRef || !popoverRef) return;\n return {\n invoker: {\n ref: invokerRef,\n element: context.invoker,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n \"aria-haspopup\": true,\n \"aria-details\": context.tooltipId,\n \"data-state\": context.openState ? \"open\" : (\"closed\" as dataStateType),\n \"aria-describedby\": context.tooltipId,\n },\n tooltip: {\n ref: popoverRef,\n element: context.popover,\n id: context.tooltipId,\n setId: context.setTooltipId,\n show: context.openTooltip,\n close: context.closeTooltip,\n style: context.tooltipStyle,\n arrowRef: arrowRef,\n key: context.resetKey,\n },\n setOpen: context.setOpenState,\n open: context.openState,\n controlled: context.controlled,\n placement: context.placement,\n disableFlipFallback: context.disableFlipFallback,\n };\n}\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEvent,\n KeyboardEvent,\n useLayoutEffect,\n useRef,\n FocusEvent,\n useContext,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { getKeyboardFocusableElements } from \"../../internal/functions\";\nimport { ThemeProvider } from \"../../providers\";\nimport { ThemeProviderContext } from \"../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport { useTooltipContext } from \"./internal/useTooltipContext\";\n\nimport styles from \"./Tooltip.module.scss\";\n\n/**\n * Props for the TooltipContent component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"popover\">\n */\nexport type TooltipContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"popover\"\n>;\n\nconst TooltipContentElement = forwardRef<HTMLDivElement, TooltipContentProps>(\n function TooltipContent(props, ref) {\n const {\n children,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n onFocus,\n onBlur,\n id,\n ...rest\n } = props;\n const context = useTooltipContext();\n const { mode: currentMode } = useContext(ThemeProviderContext);\n const tooltipClassNames = cx(className, styles[\"content\"]);\n const childrenRef = useRef<HTMLDivElement>(null);\n const focusItems = useRef<Element[]>();\n const combinedStyles = {\n ...style,\n ...context?.tooltip.style,\n };\n\n // Determine the opposite mode for the tooltip\n const tooltipMode = currentMode === \"dark\" ? \"light\" : \"dark\";\n\n // TODO: getFocusableElement is not reliable\n // Need update!!!!! https://servicetitan.atlassian.net/browse/ANV-2605\n useLayoutEffect(() => {\n if (!childrenRef.current) return;\n const focusElements = getKeyboardFocusableElements(childrenRef.current);\n focusItems.current = focusElements;\n }, [childrenRef, children, context?.open]);\n\n useLayoutEffect(() => {\n if (id) {\n context?.tooltip.setId(id);\n }\n }, [id, context?.tooltip.setId, context?.tooltip]);\n\n const onMouseEnterHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (context?.controlled) return;\n context?.tooltip.show();\n };\n const onMouseLeaveHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseLeave?.(e);\n if (context?.controlled) return;\n context?.tooltip.close();\n };\n const onFocusHandler = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (context?.controlled) return;\n context?.tooltip.show();\n };\n const onBlurHandler = (e: FocusEvent<HTMLDivElement>) => {\n onBlur?.(e);\n if (context?.controlled) return;\n context?.tooltip.close();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (!context?.open) return;\n if (e.code === \"Escape\") {\n context?.tooltip.close();\n }\n };\n\n const hasSimpleContent = typeof children === \"string\";\n const role = hasSimpleContent ? \"tooltip\" : \"region\";\n const tooltipWrapperRef = useMergeRefs([context?.tooltip.ref, ref]);\n\n return (\n <div\n popover=\"manual\"\n data-anv=\"tooltip-content\"\n className={tooltipClassNames}\n ref={tooltipWrapperRef}\n style={combinedStyles}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n role={role}\n id={context?.tooltip.id}\n {...rest}\n >\n <div\n className={styles.scroller}\n role=\"presentation\"\n tabIndex={-1}\n ref={childrenRef}\n key={context?.tooltip.key}\n onKeyDown={onKeyDownHandler}\n >\n {hasSimpleContent ? (\n children\n ) : (\n <ThemeProvider mode={tooltipMode} data-anv=\"tooltip-content-theme\">\n {children}\n </ThemeProvider>\n )}\n </div>\n <span className={styles[\"arrow\"]} ref={context?.tooltip.arrowRef}>\n <svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\">\n <path stroke=\"none\" d=\"M0,0 H14 L7,7 Q7,7 7,7 Z\"></path>\n <clipPath id=\":r9:\">\n <rect x=\"0\" y=\"0\" width=\"14\" height=\"14\"></rect>\n </clipPath>\n </svg>\n </span>\n </div>\n );\n },\n);\n\n/**\n * TooltipContent component that displays the tooltip content.\n *\n * Features:\n * - Displays the tooltip content with proper positioning\n * - Includes an arrow pointing to the trigger element\n * - Supports keyboard navigation and escape key to close\n * - Handles mouse interactions for hover behavior\n * - Accessible with proper ARIA roles\n * - Supports all standard div element props\n * - Automatic focus management for keyboard navigation\n * - Real-time position updates\n * - Handles both string and complex content\n *\n * @example\n * <Tooltip.Content>\n * This tooltip provides helpful context\n * </Tooltip.Content>\n */\nexport const TooltipContent = forwardRef<HTMLDivElement, TooltipContentProps>(\n function TooltipContent(props, ref) {\n return <TooltipContentElement {...props} ref={ref} />;\n },\n);\n","import { isValidElement } from \"react\";\n\nconst INTERACTIVE_ELEMENTS = [\"button\", \"a\", \"input\", \"textarea\", \"select\"];\n\nexport function isNonInteractiveElement(element: React.ReactElement) {\n if (!isValidElement(element)) return false;\n const type = element.type as string;\n return typeof type === \"string\" && !INTERACTIVE_ELEMENTS.includes(type);\n}\n","import {\n KeyboardEvent,\n FocusEvent,\n cloneElement,\n HTMLProps,\n forwardRef,\n ReactElement,\n isValidElement,\n useMemo,\n Fragment,\n useLayoutEffect,\n Ref,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { isNonInteractiveElement } from \"./internal/isNonInteractiveTrigger\";\nimport { useTooltipContext } from \"./internal/useTooltipContext\";\n\nimport styles from \"./Tooltip.module.scss\";\n\n/**\n * Props for the TooltipTrigger component\n * @extends HTMLProps<HTMLElement>\n */\nexport type TooltipTriggerProps = HTMLProps<HTMLElement> & {\n /**\n * The element that triggers the tooltip\n */\n children: ReactElement;\n} & DataTrackingId;\n\nconst TooltipTriggerElement = forwardRef<HTMLElement, TooltipTriggerProps>(\n function TooltipTrigger(props, propRef) {\n const { children, className, onKeyDown, onFocus, onBlur, ...rest } = props;\n const context = useTooltipContext();\n\n // verify if the child can accept a ref\n const childCanAcceptRef = useMemo(\n () =>\n isValidElement(children) &&\n children.type !== Fragment &&\n typeof children.type !== \"function\",\n [children],\n );\n\n const refs = useMergeRefs([\n (children as unknown as { ref: Ref<HTMLElement> })?.ref,\n context?.invoker.ref,\n ]);\n\n // either pass to cloned children, or a span if child doesn't accept a ref\n const childProps = useMemo(() => {\n const baseProps = {\n ref: refs,\n \"aria-haspopup\": context?.invoker[\"aria-haspopup\"],\n \"aria-details\": context?.invoker[\"aria-details\"],\n \"data-state\": context?.invoker[\"data-state\"],\n \"aria-describedby\": context?.invoker[\"aria-describedby\"],\n };\n\n if (isNonInteractiveElement(children)) {\n if (!(\"tabIndex\" in (children.props || {}))) {\n (baseProps as HTMLProps<HTMLElement>).tabIndex = 0;\n }\n if (!(\"role\" in (children.props || {}))) {\n (baseProps as HTMLProps<HTMLElement>).role = \"button\";\n }\n }\n\n return baseProps;\n }, [context?.invoker, refs, children]);\n\n const child = childCanAcceptRef ? (\n cloneElement(children as ReactElement, childProps)\n ) : (\n <span {...childProps}>{children}</span>\n );\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n onKeyDown?.(e);\n context?.invoker.onKeyDown(e);\n };\n\n const onFocusHandler = (e: FocusEvent<HTMLElement>) => {\n onFocus?.(e);\n context?.invoker.onFocus();\n };\n\n const onBlurHandler = (e: FocusEvent<HTMLElement>) => {\n onBlur?.(e);\n context?.invoker.onBlur();\n };\n\n useLayoutEffect(() => {\n const onMouseEnterHandler = () => {\n context?.invoker.onMouseEnter();\n };\n const onMouseLeaveHandler = () => {\n context?.invoker.onMouseLeave();\n };\n context?.invoker.ref.current?.addEventListener(\n \"mouseleave\",\n onMouseLeaveHandler,\n );\n context?.invoker.ref.current?.addEventListener(\n \"mouseenter\",\n onMouseEnterHandler,\n );\n return () => {\n context?.invoker.ref.current?.removeEventListener(\n \"mouseleave\",\n onMouseLeaveHandler,\n );\n context?.invoker.ref.current?.removeEventListener(\n \"mouseenter\",\n onMouseEnterHandler,\n );\n };\n }, [context?.invoker]);\n\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"TooltipTrigger\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <span\n className={cx([styles[\"trigger\"]], className)}\n data-anv=\"tooltip-trigger\"\n data-tracking-id={trackingId}\n ref={propRef}\n onKeyDown={onKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n role=\"presentation\"\n {...rest}\n >\n {child}\n </span>\n );\n },\n);\n\n/**\n * TooltipTrigger component that wraps the element that triggers the tooltip.\n *\n * Features:\n * - Wraps any React element to make it a tooltip trigger\n * - Handles mouse and keyboard interactions\n * - Provides proper ARIA attributes for accessibility\n * - Supports all standard HTML element props\n * - Automatically clones child elements with proper refs\n * - Handles both focusable and non-focusable children\n * - Manages mouse enter/leave events for hover behavior\n *\n * @example\n * <Tooltip.Trigger>\n * <Button>Click me</Button>\n * </Tooltip.Trigger>\n */\nexport const TooltipTrigger = forwardRef<HTMLElement, TooltipTriggerProps>(\n function TooltipTrigger(props, propRef) {\n return <TooltipTriggerElement {...props} ref={propRef} />;\n },\n);\n","import {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n} from \"react\";\nimport {\n Placement,\n UseFloatingOptions,\n arrow,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\n\nimport { safeHidePopover, safeShowPopover } from \"../../internal/functions\";\n\nimport { TooltipContent } from \"./TooltipContent\";\nimport { TooltipContext, TooltipContextProps } from \"./internal/TooltipContext\";\nimport { TooltipTrigger } from \"./TooltipTrigger\";\n\n/**\n * Props for the Tooltip component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TooltipProps = {\n /**\n * The content to be wrapped by the tooltip\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * Unique identifier for the tooltip\n */\n id?: ComponentPropsWithoutRef<\"div\">[\"id\"];\n /**\n * Disables the shift of floating element\n * @internal\n */\n disableShift?: boolean;\n /**\n * Disables the flip of floating element\n * @internal\n */\n disableFlip?: boolean;\n /**\n * Disables the flip cross-axis fallback of floating element\n * @internal\n */\n disableFlipFallback?: boolean;\n /**\n * Changes interaction to use hover\n */\n openOnHover?: boolean;\n /**\n * Changes height and positioning for select/combobox\n * @default top\n */\n placement?: Placement;\n /**\n * Controls the open state of the tooltip\n */\n open?: boolean;\n /**\n * Default open state of the tooltip\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: UseFloatingOptions[\"onOpenChange\"];\n /**\n * Delay before showing the tooltip\n * @default 100\n */\n delay?: number;\n /**\n * Offset distance from the trigger element\n * @default 5\n */\n offset?: number;\n /**\n * Fallback placement options\n */\n fallbackPlacements?: Placement[];\n};\n\n/**\n * Tooltip component for displaying contextual information on hover or focus.\n *\n * Features:\n * - Displays contextual information when hovering over or focusing on elements\n * - Supports multiple placement options (top, bottom, left, right)\n * - Automatic positioning with fallback placements\n * - Accessible with proper ARIA roles and keyboard navigation\n * - Supports controlled and uncontrolled open states\n * - Configurable delay and offset settings\n * - Automatic arrow positioning and rotation\n * - Real-time position updates during scroll and resize\n *\n * @example\n * <Tooltip placement=\"top\" delay={200}>\n * <Tooltip.Trigger>\n * <Button>Hover me</Button>\n * </Tooltip.Trigger>\n * <Tooltip.Content>This is helpful information</Tooltip.Content>\n * </Tooltip>\n */\nexport const Tooltip = Object.assign(\n function TooltipInner(props: TooltipProps) {\n const {\n children,\n delay = 100,\n placement = \"top\",\n open,\n defaultOpen = false,\n disableShift,\n disableFlip,\n disableFlipFallback,\n id,\n offset: offsetProp = 5,\n fallbackPlacements,\n } = props;\n const uid = useId();\n const [invoker, setInvoker] =\n useState<TooltipContextProps[\"invoker\"]>(undefined);\n const [tooltip, setTooltip] =\n useState<TooltipContextProps[\"invoker\"]>(undefined);\n const [rootNode, setRootNode] = useState<TooltipContextProps[\"rootNode\"]>();\n const [arrowElement, setArrowElement] =\n useState<TooltipContextProps[\"arrowElement\"]>(undefined);\n const [openState, setOpenState] = useState<\n TooltipContextProps[\"openState\"]\n >(open ?? defaultOpen);\n const arrowRef = useRef<HTMLSpanElement>(null);\n const [tooltipId, setTooltipId] = useState<\n TooltipContextProps[\"tooltipId\"]\n >(id ?? `tooltip-${uid.replace(/:/g, \"\")}`);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invoker || !tooltip) return;\n // disable position update when closing\n if (!openState) return;\n computePosition(invoker, tooltip, {\n placement: placement,\n middleware: [\n offset(offsetProp),\n flip({\n mainAxis: !disableFlip,\n crossAxis: false,\n fallbackAxisSideDirection: disableFlipFallback ? \"none\" : \"end\",\n fallbackPlacements,\n padding: 5,\n }),\n shift({\n padding: 5,\n mainAxis: !disableShift,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !disableShift,\n }),\n }),\n arrow({\n element: arrowElement ? arrowElement : null,\n padding: 5,\n }),\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n const side = placement.split(\"-\")[0];\n\n const staticSide = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\",\n }[side];\n\n const arrowDeg = () => {\n if (staticSide === \"top\") return 180;\n if (staticSide === \"bottom\") return 0;\n if (staticSide === \"left\") return 90;\n return 270;\n };\n\n Object.assign(tooltip.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n if (middlewareData.arrow && arrowElement) {\n const { x, y } = middlewareData.arrow;\n Object.assign(arrowElement.style, {\n left: x != null ? `${x}px` : \"\",\n top: y != null ? `${y}px` : \"\",\n right: \"\",\n bottom: \"\",\n [staticSide as string]: `${-arrowElement.offsetWidth + 2}px`,\n transform: `rotate(${arrowDeg()}deg)`,\n });\n }\n });\n }, [\n invoker,\n tooltip,\n openState,\n placement,\n offsetProp,\n disableFlip,\n disableFlipFallback,\n fallbackPlacements,\n disableShift,\n arrowElement,\n ]);\n\n const resetKey = useRef(0);\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!tooltip || !invoker) return;\n if (!openState) {\n resetKey.current += 1;\n return;\n }\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invoker, tooltip, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [invoker, tooltip, updatePosition, openState]);\n // Stryker restore all\n\n const isControlled = typeof open !== \"undefined\";\n const openTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n const closeTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n\n // Main function to open tooltip\n const openTooltip = useCallback(() => {\n clearTimeout(closeTimeoutRef.current as number | undefined);\n clearTimeout(openTimeoutRef.current as number | undefined);\n if (!tooltip || !rootNode?.querySelector(`#${tooltipId}`)) return;\n openTimeoutRef.current = setTimeout(() => {\n safeShowPopover(tooltip);\n setOpenState(true);\n }, delay);\n }, [tooltip, rootNode, tooltipId, delay]);\n\n // Main function to close tooltip\n const closeTooltip = useCallback(\n (fn?: () => void) => {\n clearTimeout(openTimeoutRef.current as number | undefined);\n clearTimeout(closeTimeoutRef.current as number | undefined);\n if (!tooltip || !openState) return;\n closeTimeoutRef.current = setTimeout(() => {\n fn?.();\n setOpenState(false);\n safeHidePopover(tooltip);\n }, 100);\n },\n [openState, tooltip],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(closeTimeoutRef.current as number | undefined);\n clearTimeout(openTimeoutRef.current as number | undefined);\n };\n }, []);\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n if (!openState || isControlled) {\n initialRender.current = false;\n return;\n }\n // For defaultOpen: wait until tooltip element is available before opening\n if (!tooltip) return;\n openTooltip();\n initialRender.current = false;\n return;\n }\n }, [openTooltip, openState, isControlled, tooltip]);\n\n // Updating openness for controlled\n useEffect(() => {\n if (!isControlled) return;\n if (open) {\n openTooltip();\n } else {\n closeTooltip();\n }\n }, [closeTooltip, isControlled, open, openTooltip]);\n\n const value = useMemo(() => {\n updatePosition();\n return {\n tooltipId,\n setTooltipId,\n invoker,\n setInvoker,\n tooltip,\n setTooltip,\n arrowElement,\n setArrowElement,\n openTooltip,\n closeTooltip,\n placement,\n openState,\n setOpenState,\n disableFlipFallback,\n controlled: isControlled,\n arrowRef,\n resetKey: resetKey.current,\n rootNode,\n setRootNode,\n };\n }, [\n updatePosition,\n tooltipId,\n setTooltipId,\n invoker,\n tooltip,\n arrowElement,\n openTooltip,\n closeTooltip,\n placement,\n openState,\n disableFlipFallback,\n isControlled,\n rootNode,\n ]);\n\n return (\n <TooltipContext.Provider value={value}>\n {children}\n </TooltipContext.Provider>\n );\n },\n {\n /**\n * TooltipTrigger component that wraps the element that triggers the tooltip.\n *\n * Features:\n * - Wraps any React element to make it a tooltip trigger\n * - Handles mouse and keyboard interactions\n * - Provides proper ARIA attributes for accessibility\n * - Supports all standard HTML element props\n * - Automatically clones child elements with proper refs\n * - Handles both focusable and non-focusable children\n * - Manages mouse enter/leave events for hover behavior\n *\n * @example\n * <Tooltip.Trigger>\n * <Button>Click me</Button>\n * </Tooltip.Trigger>\n */\n Trigger: TooltipTrigger,\n /**\n * TooltipContent component that displays the tooltip content.\n *\n * Features:\n * - Displays the tooltip content with proper positioning\n * - Includes an arrow pointing to the trigger element\n * - Supports keyboard navigation and escape key to close\n * - Handles mouse interactions for hover behavior\n * - Accessible with proper ARIA roles\n * - Supports all standard div element props\n * - Automatic focus management for keyboard navigation\n * - Real-time position updates\n * - Handles both string and complex content\n *\n * @example\n * <Tooltip.Content>\n * This tooltip provides helpful context\n * </Tooltip.Content>\n */\n Content: TooltipContent,\n },\n);\n"],"names":["TooltipContent","TooltipTrigger","arrow","placement","x","y"],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
function getKeyboardFocusableElements(element) {
|
|
2
|
-
if (!element) return [];
|
|
3
|
-
const elements = element.querySelectorAll(
|
|
4
|
-
'a[href], button, input, textarea, select, details,[tabindex]:not([tabindex="-1"])'
|
|
5
|
-
);
|
|
6
|
-
return Array.from(elements).filter(
|
|
7
|
-
(el) => !el.hasAttribute("disabled") && !el.getAttribute("aria-hidden") && !el.getAttribute("inert") && !(globalThis.getComputedStyle(el).display === "none")
|
|
8
|
-
);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { getKeyboardFocusableElements as g };
|
|
12
|
-
//# sourceMappingURL=getKeyboardFocusableElements-QqcABz0D.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getKeyboardFocusableElements-QqcABz0D.js","sources":["../src/internal/functions/getKeyboardFocusableElements.ts"],"sourcesContent":["/**\n * Retrieves all keyboard focusable elements within a given container element.\n *\n * Features:\n * - Finds all elements that can receive keyboard focus\n * - Filters out disabled, hidden, and inert elements\n * - Respects ARIA attributes for accessibility\n * - Checks computed styles for visibility\n * - Supports all standard focusable elements (links, buttons, inputs, etc.)\n * - Handles null and undefined input gracefully\n * - Returns array of focusable HTMLElements\n * - Excludes elements with tabindex=\"-1\"\n *\n * Focusable Elements Detected:\n * - Links with href attributes\n * - Buttons (all types)\n * - Form inputs (text, checkbox, radio, etc.)\n * - Textareas and select elements\n * - Details elements\n * - Elements with positive tabindex values\n *\n * @param element - The container element to search for focusable elements\n * @returns Array of focusable HTMLElements, or empty array if no element provided\n */\nexport function getKeyboardFocusableElements(element?: HTMLElement | null) {\n if (!element) return [];\n const elements = element.querySelectorAll(\n 'a[href], button, input, textarea, select, details,[tabindex]:not([tabindex=\"-1\"])',\n );\n\n return Array.from(elements).filter(\n (el) =>\n !el.hasAttribute(\"disabled\") &&\n !el.getAttribute(\"aria-hidden\") &&\n !el.getAttribute(\"inert\") &&\n !(globalThis.getComputedStyle(el).display === \"none\"),\n );\n}\n"],"names":[],"mappings":"AAwBO,SAAS,6BAA6B,OAAA,EAA8B;AACzE,EAAA,IAAI,CAAC,OAAA,EAAS,OAAO,EAAC;AACtB,EAAA,MAAM,WAAW,OAAA,CAAQ,gBAAA;AAAA,IACvB;AAAA,GACF;AAEA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA;AAAA,IAC1B,CAAC,OACC,CAAC,EAAA,CAAG,aAAa,UAAU,CAAA,IAC3B,CAAC,EAAA,CAAG,YAAA,CAAa,aAAa,KAC9B,CAAC,EAAA,CAAG,aAAa,OAAO,CAAA,IACxB,EAAE,UAAA,CAAW,gBAAA,CAAiB,EAAE,CAAA,CAAE,OAAA,KAAY,MAAA;AAAA,GAClD;AACF;;;;"}
|
package/dist/index-ByMdotWU.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { I as Icon } from './Icon-BMMbp40n.js';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { forwardRef } from 'react';
|
|
5
|
-
import { c as cx } from './index-De1g9FRV.js';
|
|
6
|
-
import { B as ButtonCompound } from './ButtonCompound-DsrK7G3q.js';
|
|
7
|
-
|
|
8
|
-
import './index.css';const SvgDragIndicator = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }));
|
|
9
|
-
|
|
10
|
-
const handle = "_handle_1e7c4_2";
|
|
11
|
-
const active = "_active_1e7c4_25";
|
|
12
|
-
const handleStyles = {
|
|
13
|
-
handle: handle,
|
|
14
|
-
"handle-button": "_handle-button_1e7c4_10",
|
|
15
|
-
active: active
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
function DndHandle({ className }) {
|
|
19
|
-
const handleClasses = cx(handleStyles.handle, className);
|
|
20
|
-
return /* @__PURE__ */ jsx(Icon, { svg: SvgDragIndicator, className: handleClasses, role: "presentation" });
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const DndHandleButton = forwardRef(({ isActive = false, className, ...props }, ref) => {
|
|
24
|
-
const handleButtonClasses = cx(className, handleStyles["handle-button"], {
|
|
25
|
-
[handleStyles["active"]]: isActive
|
|
26
|
-
});
|
|
27
|
-
return /* @__PURE__ */ jsx(
|
|
28
|
-
ButtonCompound,
|
|
29
|
-
{
|
|
30
|
-
ref,
|
|
31
|
-
className: handleButtonClasses,
|
|
32
|
-
type: "button",
|
|
33
|
-
shape: "rounded",
|
|
34
|
-
"aria-label": "Drag handle",
|
|
35
|
-
...props,
|
|
36
|
-
children: /* @__PURE__ */ jsx(DndHandle, {})
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
DndHandleButton.displayName = "DndHandleButton";
|
|
41
|
-
|
|
42
|
-
const styles = {
|
|
43
|
-
"drag-preview": "_drag-preview_1uufp_2",
|
|
44
|
-
"drop-line": "_drop-line_1uufp_12",
|
|
45
|
-
"orientation-horizontal": "_orientation-horizontal_1uufp_44",
|
|
46
|
-
"orientation-vertical": "_orientation-vertical_1uufp_53",
|
|
47
|
-
"drop-zone": "_drop-zone_1uufp_62",
|
|
48
|
-
"position-before": "_position-before_1uufp_69",
|
|
49
|
-
"position-after": "_position-after_1uufp_74",
|
|
50
|
-
"can-be-dropped": "_can-be-dropped_1uufp_88",
|
|
51
|
-
"active-not-over": "_active-not-over_1uufp_95",
|
|
52
|
-
"over-valid": "_over-valid_1uufp_101",
|
|
53
|
-
"over-invalid": "_over-invalid_1uufp_106"
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const DndSortLine = ({
|
|
57
|
-
offset,
|
|
58
|
-
orientation,
|
|
59
|
-
position,
|
|
60
|
-
...rest
|
|
61
|
-
}) => {
|
|
62
|
-
const classes = cx(
|
|
63
|
-
styles["drop-line"],
|
|
64
|
-
styles[`orientation-${orientation}`],
|
|
65
|
-
styles[`position-${position}`]
|
|
66
|
-
);
|
|
67
|
-
return /* @__PURE__ */ jsx(
|
|
68
|
-
"div",
|
|
69
|
-
{
|
|
70
|
-
"aria-hidden": true,
|
|
71
|
-
className: classes,
|
|
72
|
-
style: { "--a2-inline-drop-line-offset": offset },
|
|
73
|
-
...rest
|
|
74
|
-
}
|
|
75
|
-
);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const DndZone = forwardRef(
|
|
79
|
-
({
|
|
80
|
-
el: Component = "div",
|
|
81
|
-
children,
|
|
82
|
-
className,
|
|
83
|
-
isDragging,
|
|
84
|
-
isOver,
|
|
85
|
-
isValid,
|
|
86
|
-
...rest
|
|
87
|
-
}, ref) => {
|
|
88
|
-
const classes = cx(className, {
|
|
89
|
-
[styles["drop-zone"]]: true,
|
|
90
|
-
[styles["over-valid"]]: isDragging && isOver && isValid,
|
|
91
|
-
[styles["over-invalid"]]: isDragging && isOver && !isValid,
|
|
92
|
-
[styles["active-not-over"]]: isDragging && !isOver
|
|
93
|
-
});
|
|
94
|
-
return /* @__PURE__ */ jsx(Component, { ref, className: classes, ...rest, children });
|
|
95
|
-
}
|
|
96
|
-
);
|
|
97
|
-
DndZone.displayName = "DndZoneBase";
|
|
98
|
-
|
|
99
|
-
const Dnd = {
|
|
100
|
-
Handle: DndHandle,
|
|
101
|
-
HandleButton: DndHandleButton,
|
|
102
|
-
SortLine: DndSortLine,
|
|
103
|
-
Zone: DndZone
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
export { Dnd as D, DndSortLine as a, DndHandleButton as b, DndHandle as c, styles as s };
|
|
107
|
-
//# sourceMappingURL=index-ByMdotWU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-ByMdotWU.js","sources":["../../hammer-icon/mdi/round/drag_indicator.svg","../src/components/Dnd/DndHandle.tsx","../src/components/Dnd/DndHandleButton.tsx","../src/components/Dnd/DndSortLine.tsx","../src/components/Dnd/DndZone.tsx","../src/components/Dnd/index.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgDragIndicator = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" }));\nexport default SvgDragIndicator;\n","import { Icon } from \"../Icon\";\nimport DragIndicator from \"@servicetitan/hammer-icon/mdi/round/drag_indicator.svg\";\nimport styles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DndHandle component\n */\nexport type DndHandleProps = {\n /**\n * Additional CSS class names to apply to the drag handle.\n */\n className?: string;\n};\n\n/**\n * A reusable drag handle icon component for drag and drop interactions.\n *\n * Features:\n * - Standardized drag indicator icon\n * - Accessible with proper ARIA attributes\n * - Customizable styling through className prop\n * - Consistent visual appearance across applications\n * - Lightweight and performant\n * - Supports all standard HTML element props\n *\n * @example\n * <DndHandle className=\"custom-drag-handle\" />\n */\nexport function DndHandle({ className }: { className?: string }) {\n const handleClasses = cx(styles.handle, className);\n return (\n <Icon svg={DragIndicator} className={handleClasses} role=\"presentation\" />\n );\n}\n","import { ButtonCompound } from \"../ButtonCompound\";\nimport handleStyles from \"./DndHandle.module.scss\";\nimport cx from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { DndHandle } from \"./DndHandle\";\n\n/**\n * Props for the DndHandleButton component\n * @extends React.ComponentPropsWithoutRef<typeof ButtonCompound>\n */\nexport interface DndHandleButtonProps\n extends React.ComponentPropsWithoutRef<typeof ButtonCompound> {\n /**\n * Indicates whether the handle is currently being dragged.\n * @default false\n */\n isActive?: boolean;\n}\n\n/**\n * A reusable drag handle button component for drag and drop functionality.\n *\n * Features:\n * - Interactive button with drag handle icon\n * - Visual feedback for active drag state\n * - Accessible with proper ARIA attributes (defaults to \"Drag handle\")\n * - Extends ButtonCompound functionality\n * - Customizable styling through className prop\n * - Supports all standard button props\n * - Consistent visual appearance across applications\n *\n * @example\n * <DndHandleButton\n * isActive={isDragging}\n * aria-label=\"Drag task item\"\n * className=\"custom-handle-button\"\n * onClick={handleClick}\n * />\n */\nexport const DndHandleButton = forwardRef<\n HTMLButtonElement,\n DndHandleButtonProps\n>(({ isActive = false, className, ...props }, ref) => {\n const handleButtonClasses = cx(className, handleStyles[\"handle-button\"], {\n [handleStyles[\"active\"]]: isActive,\n });\n\n return (\n <ButtonCompound\n ref={ref}\n className={handleButtonClasses}\n type=\"button\"\n shape=\"rounded\"\n aria-label=\"Drag handle\"\n {...props}\n >\n <DndHandle />\n </ButtonCompound>\n );\n});\n\nDndHandleButton.displayName = \"DndHandleButton\";\n","import cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\nimport { CSSProperties } from \"react\";\n\n/**\n * Props for the DndSortLine component\n * @extends React.ComponentPropsWithoutRef<\"div\">\n */\nexport type SortLineProps = React.ComponentPropsWithoutRef<\"div\"> & {\n /**\n * The offset of the line from the item. This is a CSS value, typically negative.\n */\n offset: string;\n /**\n * The orientation of the sort - Note this may be counterintuitive, as the line is rendered perpendicular to the sort.\n */\n orientation: \"horizontal\" | \"vertical\";\n /**\n * The position of the line relative to a target item.\n */\n position: \"before\" | \"after\";\n};\n\n/**\n * A visual indicator line that shows where an item will be dropped during drag and drop operations.\n *\n * Features:\n * - Visual feedback for drop positioning\n * - Configurable orientation (horizontal/vertical)\n * - Adjustable positioning (before/after)\n * - Customizable offset for precise placement\n * - Accessible with proper ARIA attributes\n * - Automatic CSS class management\n * - Supports all standard HTML div props\n *\n * @example\n * <DndSortLine\n * offset=\"-10px\"\n * orientation=\"vertical\"\n * position=\"after\"\n * className=\"custom-drop-line\"\n * />\n */\nexport const DndSortLine = ({\n offset,\n orientation,\n position,\n ...rest\n}: SortLineProps) => {\n const classes = cx(\n styles[\"drop-line\"],\n styles[`orientation-${orientation}`],\n styles[`position-${position}`],\n );\n\n return (\n <div\n aria-hidden\n className={classes}\n style={{ \"--a2-inline-drop-line-offset\": offset } as CSSProperties}\n {...rest}\n />\n );\n};\n","import { ElementType, forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dnd.module.scss\";\n\n/**\n * Props for the DndZone component\n * @extends Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">\n */\nexport type DndZoneProps<T extends ElementType = \"div\"> = {\n /**\n * The HTML element type to render. Can be any valid HTML element or React component.\n * @default \"div\"\n */\n el?: T;\n /**\n * The content to be rendered inside the drop zone.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names to apply to the drop zone.\n */\n className?: string;\n /**\n * Indicates whether a draggable item is currently over this drop zone.\n */\n isOver: boolean;\n /**\n * Indicates whether the current drag operation is valid for this drop zone.\n */\n isValid: boolean;\n /**\n * Indicates whether any item is currently being dragged.\n */\n isDragging: boolean;\n} & Omit<React.ComponentPropsWithoutRef<T>, \"el\" | \"ref\">;\n\n/**\n * Base styling component for drop zones that handles visual states and styling.\n *\n * Features:\n * - Configurable HTML element rendering with the 'el' prop\n * - Visual feedback for drag states (over, valid, dragging)\n * - Automatic CSS class management based on drag state\n * - Supports all standard HTML element props\n * - Accessible with proper ARIA attributes\n * - Flexible styling through className prop\n * - Responsive design that adapts to container\n *\n * @example\n * <DndZone\n * isOver={isOver}\n * isValid={isValid}\n * isDragging={isDragging}\n * className=\"custom-drop-zone\"\n * >\n * Drop items here\n * </DndZone>\n */\nexport const DndZone = forwardRef<HTMLDivElement, DndZoneProps<ElementType>>(\n (\n {\n el: Component = \"div\" as ElementType,\n children,\n className,\n isDragging,\n isOver,\n isValid,\n ...rest\n },\n ref,\n ) => {\n const classes = cx(className, {\n [styles[\"drop-zone\"]]: true,\n [styles[\"over-valid\"]]: isDragging && isOver && isValid,\n [styles[\"over-invalid\"]]: isDragging && isOver && !isValid,\n [styles[\"active-not-over\"]]: isDragging && !isOver,\n });\n\n return (\n <Component ref={ref} className={classes} {...rest}>\n {children}\n </Component>\n );\n },\n);\n\nDndZone.displayName = \"DndZoneBase\";\n","import { DndHandle } from \"./DndHandle\";\nimport { DndHandleButton } from \"./DndHandleButton\";\nimport { DndSortLine } from \"./DndSortLine\";\nimport { DndZone } from \"./DndZone\";\n\nexport const Dnd = {\n Handle: DndHandle,\n HandleButton: DndHandleButton,\n SortLine: DndSortLine,\n Zone: DndZone,\n};\n"],"names":["styles","DragIndicator"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useNumberField-eMyk7MB8.js","sources":["../src/internal/hooks/usePlatform/usePlatform.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.ts","../src/internal/hooks/useNumberField/internal/numberMaskUtils.ts","../src/internal/hooks/useNumberField/internal/createTrailingDecimalHandlers.ts","../src/internal/hooks/useNumberField/internal/createTrailingZerosHandlers.ts","../src/internal/hooks/useNumberField/internal/createNumberMaskOptions.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldKeys.ts","../../../node_modules/.pnpm/big.js@7.0.1/node_modules/big.js/big.mjs","../src/internal/hooks/useNumberField/useNumberField.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface UsePlatformReturnValue {\n /** True if the user is on an iPhone */\n isIPhone: boolean;\n /** True if the user is on an iPad */\n isIPad: boolean;\n /** True if the user is on any iOS device (iPhone or iPad) */\n isIOS: boolean;\n /** True if the user is on a Mac computer */\n isMac: boolean;\n /** True if the user is on any Apple device (iPhone, iPad, or Mac) */\n isAppleDevice: boolean;\n /** True if the browser is WebKit-based (Safari, Chrome, etc.) */\n isWebKit: boolean;\n /** True if the browser is Chrome */\n isChrome: boolean;\n /** True if the browser is Firefox */\n isFirefox: boolean;\n /** True if the user is on an Android device */\n isAndroid: boolean;\n}\n\n/**\n * Custom hook for detecting the user's platform and browser.\n *\n * This hook provides platform and browser detection capabilities for implementing\n * platform-specific behavior in components. It detects:\n * - iOS devices (iPhone, iPad)\n * - macOS computers\n * - Android devices\n * - WebKit-based browsers (Safari, Chrome)\n * - Specific browsers (Chrome, Firefox)\n *\n * @internal This hook is not exported because it hasn't been rigorously tested.\n *\n * @returns Object containing boolean flags for different platforms and browsers\n *\n * @example\n * const {\n * isIPhone,\n * isIPad,\n * isIOS,\n * isMac,\n * isAppleDevice,\n * isWebKit,\n * isChrome,\n * isFirefox,\n * isAndroid\n * } = usePlatform();\n *\n * if (isIOS) {\n * // Handle iOS-specific logic\n * }\n */\nexport function usePlatform(): UsePlatformReturnValue {\n const [platform, setPlatform] =\n useState<UsePlatformReturnValue>(detectPlatform());\n\n useEffect(() => {\n setPlatform(detectPlatform());\n }, []);\n return platform;\n}\n\n/**\n * Detects the current platform and browser based on user agent and platform information.\n *\n * This function analyzes the navigator.userAgent and navigator.platform to determine\n * the user's device type and browser. It handles edge cases like:\n * - MSStream detection for Windows Phone\n * - iPad detection using maxTouchPoints\n * - WebKit vs Chrome differentiation\n *\n * @returns Object containing boolean flags for different platforms and browsers\n */\nexport function detectPlatform(): UsePlatformReturnValue {\n // Check if we're in a browser environment\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return {\n isIPhone: false,\n isIPad: false,\n isIOS: false,\n isMac: false,\n isAppleDevice: false,\n isWebKit: false,\n isChrome: false,\n isFirefox: false,\n isAndroid: false,\n };\n }\n\n const userAgent = navigator.userAgent;\n const platform = navigator.platform;\n\n // iOS Detection\n const isIPhone =\n /iPhone/.test(userAgent) &&\n !(window as Window & typeof globalThis & { MSStream: Blob }).MSStream;\n const isIPad =\n /iPad/.test(userAgent) ||\n (!!navigator.maxTouchPoints &&\n navigator.maxTouchPoints > 2 &&\n /MacIntel/.test(platform));\n const isIOS = isIPhone || isIPad;\n\n // Mac Detection\n const isMac = /Mac/.test(platform) && !isIOS;\n\n // Apple Device Detection\n const isAppleDevice = isIOS || isMac;\n\n // WebKit Detection\n const isWebKit = /WebKit/.test(userAgent) && !/Chrome/.test(userAgent);\n\n // Browser Detection\n const isChrome =\n /Chrome/.test(userAgent) &&\n !/Edge/.test(userAgent) &&\n !/Edg/.test(userAgent);\n const isFirefox = /Firefox/.test(userAgent);\n\n // Android Detection\n const isAndroid = /Android/.test(userAgent);\n\n return {\n isIPhone,\n isIPad,\n isIOS,\n isMac,\n isAppleDevice,\n isWebKit,\n isChrome,\n isFirefox,\n isAndroid,\n };\n}\n","import { useMemo } from \"react\";\nimport { usePlatform } from \"../../usePlatform\";\n\nexport type InputMode = \"decimal\" | \"numeric\" | \"text\";\n\n/**\n * Custom hook that determines the optimal inputMode attribute for number fields based on platform and requirements.\n *\n * The inputMode attribute tells the device what type of software keyboard to show.\n * There are inconsistencies in what each software keyboard includes across different platforms:\n * - iPhone lacks a minus sign in both numeric and decimal keyboards\n * - Android numeric keyboard has both decimal point and minus sign\n * - iPad has different keyboard behavior than iPhone\n *\n * @param hasDecimals - Whether the number field allows decimal values\n * @param hasNegative - Whether the number field allows negative values\n * @returns The optimal inputMode attribute to use on the number field\n *\n * @example\n * const inputMode = useNumberFieldInputMode({\n * hasDecimals: true,\n * hasNegative: false\n * });\n */\nexport const useNumberFieldInputMode = ({\n hasDecimals,\n hasNegative,\n}: {\n hasDecimals: boolean;\n hasNegative: boolean;\n}) => {\n const platform = usePlatform();\n\n const inputMode: InputMode = useMemo(() => {\n let value: InputMode = \"decimal\";\n\n if (platform.isIPhone) {\n // iPhone only. iPad has a different software keyboard.\n if (hasNegative) {\n // iPhone lacks a minus sign in both numeric and decimal. So we use text.\n value = \"text\";\n } else if (hasDecimals) {\n value = \"decimal\";\n }\n } else if (platform.isAndroid) {\n if (hasNegative) {\n // Android numeric has both a decimal point and a minus sign so it's safe to use in all cases.\n value = \"numeric\";\n } else if (hasDecimals) {\n // If we don't have negative numbers, we can use decimal (which does not have a minus sign).\n value = \"decimal\";\n }\n }\n\n return value;\n }, [hasDecimals, hasNegative, platform.isAndroid, platform.isIPhone]);\n\n return inputMode;\n};\n","/**\n * Utility predicates for number mask processing.\n */\n\n/** Returns true if the string contains one or more zeros and nothing else. */\nexport const isAllZeros = (str: string): boolean => /^0+$/.test(str);\n\n/** Returns true if the string is empty or contains only zeros. */\nexport const isEmptyOrAllZeros = (str: string): boolean =>\n str === \"\" || /^0*$/.test(str);\n\n/** Returns true if the string is a single non-zero digit (1-9). */\nexport const isNonZeroDigit = (str: string): boolean => /^[1-9]$/.test(str);\n","import type { MaskitoPostprocessor, MaskitoPreprocessor } from \"@maskito/core\";\n\nimport { isAllZeros } from \"./numberMaskUtils\";\n\nexport interface TrailingDecimalHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n}\n\n/**\n * Creates processors to preserve trailing decimals during input.\n *\n * When `minimumFractionDigits` is 0, Maskito rejects trailing decimals (\"123.\").\n * This factory returns processors that temporarily append \"0\" to pass validation,\n * then trim it for display.\n */\nexport function createTrailingDecimalHandlers(): TrailingDecimalHandlers {\n /**\n * Appends \"0\" to trailing decimals so Maskito accepts them.\n * The postprocessor then trims this \"0\" for display.\n */\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n\n // Typing \".\" that would result in trailing decimal\n if (data === \".\" && actionType === \"insert\") {\n const afterCursor = value.slice(selStart);\n if (!afterCursor || !/^\\d/.test(afterCursor)) {\n return { elementState, data: \".0\" };\n }\n }\n\n // Deletion that would result in trailing decimal\n if (actionType === \"deleteBackward\" || actionType === \"deleteForward\") {\n let simulatedValue: string;\n let newCursorPos: number;\n let charBeingDeleted: string;\n\n if (actionType === \"deleteBackward\") {\n if (selStart === selEnd && selStart > 0) {\n charBeingDeleted = value[selStart - 1];\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n newCursorPos = selStart - 1;\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n newCursorPos = selStart;\n }\n } else {\n if (selStart === selEnd && selStart < value.length) {\n charBeingDeleted = value[selStart];\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n charBeingDeleted = value.slice(selStart, selEnd);\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n }\n newCursorPos = selStart;\n }\n\n // Append \"0\" unless user is explicitly deleting trailing zeros\n if (simulatedValue.endsWith(\".\")) {\n const decimalIndex = value.indexOf(\".\");\n const afterDecimal =\n decimalIndex !== -1 ? value.slice(decimalIndex + 1) : \"\";\n const isDeletingTrailingZeros =\n isAllZeros(afterDecimal) && isAllZeros(charBeingDeleted);\n\n if (!isDeletingTrailingZeros) {\n return {\n elementState: {\n value: simulatedValue + \"0\",\n selection: [newCursorPos, newCursorPos] as const,\n },\n data: \"\",\n };\n }\n }\n }\n\n return { elementState, data };\n };\n\n /**\n * Trims \".0\" back to \".\" when the preprocessor added \"0\" to pass the mask.\n * Only applies when the initial value didn't already end with \".0\".\n */\n const postprocessor: MaskitoPostprocessor = (\n { value, selection },\n initialElementState,\n ) => {\n const initialValue = initialElementState.value;\n\n if (value.endsWith(\".0\")) {\n const initialDecimalIndex = initialValue.indexOf(\".\");\n const hasDigitsAfterDecimal =\n initialDecimalIndex !== -1 &&\n initialValue.slice(initialDecimalIndex + 1).length > 0;\n\n if (!initialValue.includes(\".\") || hasDigitsAfterDecimal) {\n return {\n value: value.slice(0, -1),\n selection: [selection[0], selection[1]],\n };\n }\n }\n\n return { value, selection };\n };\n\n return {\n preprocessor,\n postprocessor,\n };\n}\n","import type {\n MaskitoPlugin,\n MaskitoPostprocessor,\n MaskitoPreprocessor,\n} from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\n\nimport {\n isAllZeros,\n isEmptyOrAllZeros,\n isNonZeroDigit,\n} from \"./numberMaskUtils\";\n\n/**\n * State for tracking trailing zeros across Maskito's multi-pass validation.\n *\n * This state coordinates between the preprocessor (which detects trailing zero\n * scenarios) and postprocessor (which restores stripped zeros) to preserve\n * user-typed trailing zeros until they leave the field.\n */\ninterface TrailingZerosState {\n /**\n * The target value to restore if Maskito strips trailing zeros.\n */\n expectedValue: string | null;\n /**\n * Whether to preserve trailing zeros until the input loses focus.\n */\n preserveUntilBlur: boolean;\n}\n\nexport interface TrailingZerosHandlers {\n preprocessor: MaskitoPreprocessor;\n postprocessor: MaskitoPostprocessor;\n blurPlugin: MaskitoPlugin;\n}\n\n/**\n * Creates processors to preserve trailing zeros during decimal input.\n *\n * When `minimumFractionDigits` is 0, Maskito's multi-pass validation strips\n * trailing zeros (e.g., \"123.0\" → \"123.\"). This factory returns coordinated\n * processors that detect and restore trailing zeros, using closure state to\n * support multiple NumberField instances.\n */\nexport function createTrailingZerosHandlers(\n params: Pick<\n MaskitoNumberParams,\n \"minimumFractionDigits\" | \"maximumFractionDigits\"\n >,\n): TrailingZerosHandlers {\n const maximumFractionDigits = params.maximumFractionDigits ?? 0;\n\n const state: TrailingZerosState = {\n expectedValue: null,\n preserveUntilBlur: false,\n };\n\n /** Detects trailing zero scenarios during user input. */\n const preprocessor: MaskitoPreprocessor = (\n { elementState, data },\n actionType,\n ) => {\n const { value, selection } = elementState;\n const [selStart, selEnd] = selection;\n const decimalIndex = value.indexOf(\".\");\n\n // Typing \"0\" after decimal with only zeros or nothing after it\n if (actionType === \"insert\" && data === \"0\" && decimalIndex !== -1) {\n const afterDecimal = value.slice(decimalIndex + 1);\n\n if (isEmptyOrAllZeros(afterDecimal)) {\n const zerosNeeded = afterDecimal.length + 1;\n if (zerosNeeded <= maximumFractionDigits) {\n state.expectedValue =\n value.slice(0, decimalIndex + 1) + \"0\".repeat(zerosNeeded);\n state.preserveUntilBlur = true;\n }\n }\n }\n\n // Deletion that results in trailing zeros\n if (\n (actionType === \"deleteBackward\" || actionType === \"deleteForward\") &&\n decimalIndex !== -1\n ) {\n let simulatedValue: string;\n\n if (selStart !== selEnd) {\n simulatedValue = value.slice(0, selStart) + value.slice(selEnd);\n } else if (actionType === \"deleteBackward\" && selStart > 0) {\n simulatedValue = value.slice(0, selStart - 1) + value.slice(selStart);\n } else if (actionType === \"deleteForward\" && selStart < value.length) {\n simulatedValue = value.slice(0, selStart) + value.slice(selStart + 1);\n } else {\n return { elementState, data };\n }\n\n const simDecimalIndex = simulatedValue.indexOf(\".\");\n if (simDecimalIndex !== -1) {\n const simAfterDecimal = simulatedValue.slice(simDecimalIndex + 1);\n const currentAfterDecimal = value.slice(decimalIndex + 1);\n\n const deletionCreatesTrailingZeros = isAllZeros(simAfterDecimal);\n const deletionRemovesAllTrailingZeros =\n simAfterDecimal === \"\" && isAllZeros(currentAfterDecimal);\n\n if (deletionCreatesTrailingZeros) {\n // Deleting a non-zero digit leaves trailing zeros (e.g., \"123.50\" → \"123.0\")\n // Preserve them so user can continue editing\n state.expectedValue = simulatedValue;\n state.preserveUntilBlur = true;\n } else if (deletionRemovesAllTrailingZeros) {\n // Deleting the last trailing zero (e.g., \"456.0\" → \"456.\")\n // Clear preservation since user is intentionally removing zeros\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n }\n }\n\n // Clear state on non-zero digit input\n if (actionType === \"insert\" && isNonZeroDigit(data)) {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n }\n\n return { elementState, data };\n };\n\n /** Restores trailing zeros if Maskito stripped them. */\n const postprocessor: MaskitoPostprocessor = ({ value, selection }) => {\n if (state.expectedValue !== null && state.preserveUntilBlur) {\n const targetValue = state.expectedValue;\n\n if (\n targetValue.startsWith(value) ||\n value.startsWith(targetValue.replace(/0+$/, \"\"))\n ) {\n return {\n value: targetValue,\n selection: [targetValue.length, targetValue.length],\n };\n }\n }\n\n return { value, selection };\n };\n\n /** Clears preservation state on blur. */\n const blurPlugin: MaskitoPlugin = (element) => {\n const onBlur = () => {\n state.expectedValue = null;\n state.preserveUntilBlur = false;\n };\n\n element.addEventListener(\"blur\", onBlur);\n\n return () => {\n element.removeEventListener(\"blur\", onBlur);\n };\n };\n\n return {\n preprocessor,\n postprocessor,\n blurPlugin,\n };\n}\n","import type { MaskitoOptions } from \"@maskito/core\";\nimport type { MaskitoNumberParams } from \"@maskito/kit\";\nimport { maskitoNumberOptionsGenerator } from \"@maskito/kit\";\n\nimport { createTrailingDecimalHandlers } from \"./createTrailingDecimalHandlers\";\nimport { createTrailingZerosHandlers } from \"./createTrailingZerosHandlers\";\n\n/**\n * Creates Maskito options for number input with trailing decimal and zero support.\n *\n * When `minimumFractionDigits` is 0, Maskito rejects trailing decimals (\"123.\")\n * and strips trailing zeros (\"123.0\" → \"123.\"). This extends the base options\n * with processors to allow natural decimal input during typing.\n */\nexport function createNumberMaskOptions(\n params: MaskitoNumberParams,\n): MaskitoOptions {\n const baseOptions = maskitoNumberOptionsGenerator(params);\n const minimumFractionDigits = params.minimumFractionDigits ?? 0;\n\n // When minimumFractionDigits > 0, Maskito handles everything correctly\n if (minimumFractionDigits > 0) {\n return baseOptions;\n }\n\n // Only add custom processors when minimumFractionDigits is 0\n const trailingDecimalHandlers = createTrailingDecimalHandlers();\n const trailingZerosHandlers = createTrailingZerosHandlers(params);\n\n return {\n ...baseOptions,\n preprocessors: [\n trailingDecimalHandlers.preprocessor,\n trailingZerosHandlers.preprocessor,\n ...(baseOptions.preprocessors ?? []),\n ],\n postprocessors: [\n ...(baseOptions.postprocessors ?? []),\n trailingDecimalHandlers.postprocessor,\n trailingZerosHandlers.postprocessor,\n ],\n plugins: [...(baseOptions.plugins ?? []), trailingZerosHandlers.blurPlugin],\n };\n}\n","import { useRef, useEffect } from \"react\";\n\n/**\n * Configuration for the useNumberFieldKeys hook\n */\nexport type UseNumberFieldKeysConfig = {\n /** Function to increment the value by a specified amount */\n increment: (amount: number) => void;\n /** Function to decrement the value by a specified amount */\n decrement: (amount: number) => void;\n /** Function to set the value to the minimum allowed value */\n setToMin: () => void;\n /** Function to set the value to the maximum allowed value */\n setToMax: () => void;\n /** The step value for increment/decrement operations */\n step: number;\n /** Multiplier for large step operations (PageUp/PageDown) */\n largeStepMultiplier: number;\n};\n\n/**\n * Custom hook that handles keyboard interactions for number fields.\n *\n * This hook provides keyboard navigation support for number input fields:\n * - Arrow Up/Down: Increment/decrement by step value\n * - Page Up/Down: Increment/decrement by step * largeStepMultiplier\n * - Home: Set to minimum value\n * - End: Set to maximum value\n *\n * @param config - Configuration object containing increment/decrement functions and step values\n * @returns Object containing the input ref to attach to the input element\n *\n * @example\n * const { inputRef } = useNumberFieldKeys({\n * increment: (amount) => setValue(prev => prev + amount),\n * decrement: (amount) => setValue(prev => prev - amount),\n * setToMin: () => setValue(minValue),\n * setToMax: () => setValue(maxValue),\n * step: 1,\n * largeStepMultiplier: 10\n * });\n */\nfunction useNumberFieldKeys(config: UseNumberFieldKeysConfig) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Handle keyboard interactions (Up/Down arrows, PageUp/PageDown, Home/End)\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n 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 MaskitoNumberParams,\n maskitoParseNumber,\n maskitoStringifyNumber,\n} from \"@maskito/kit\";\nimport { createNumberMaskOptions } from \"./internal/createNumberMaskOptions\";\nimport useNumberFieldKeys from \"./internal/useNumberFieldKeys\";\nimport Big from \"big.js\";\nimport { usePrevious } from \"../usePrevious\";\n\nconst DEFAULT_MIN_VALUE = 0;\nconst DEFAULT_MAX_VALUE = 100_000_000_000_000;\n\n/**\n * Configuration options for the useNumberField hook\n */\nexport type UseNumberFieldConfig = {\n /**\n * The label for the number field.\n * Important for accessibility and button labeling.\n */\n label?: string;\n /**\n * The minimum value for the number field.\n * @default 0\n */\n minValue?: number;\n /**\n * The maximum value for the number field.\n * @default 100000000000000\n */\n maxValue?: number;\n /**\n * The step value for the number field.\n * @default 1\n */\n step?: number;\n /**\n * The controlled value for the number field.\n */\n value?: number | null;\n /**\n * The default (uncontrolled) value for the number field.\n */\n defaultValue?: number | null;\n /**\n * The maximum number of decimal places for the number field.\n * @default 0\n */\n maximumFractionDigits?: number;\n /**\n * The minimum number of decimal places for the number field.\n * @default 0\n */\n minimumFractionDigits?: number;\n /**\n * A callback that is called when the value changes.\n * @param value The new numeric value or null if invalid/empty\n */\n onChange?: (value: number | null) => void;\n};\n\n/**\n * Return value from the useNumberField hook\n */\nexport type UseNumberFieldReturnValue = {\n /** The current numeric value of the number field. */\n value: number | null;\n /** A ref that should be attached to the input element. */\n inputRef: React.RefObject<HTMLInputElement>;\n /** The props to pass to the input element. */\n inputProps: Pick<\n React.InputHTMLAttributes<HTMLInputElement>,\n | \"value\"\n | \"onChange\"\n | \"inputMode\"\n | \"aria-valuenow\"\n | \"aria-valuemin\"\n | \"aria-valuemax\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"role\"\n | \"pattern\"\n | \"type\"\n | \"autoComplete\"\n >;\n /** The props to pass to the increment button. */\n incrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n /** The props to pass to the decrement button. */\n decrementButtonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;\n};\n\n/**\n * Custom hook that provides the functionality for number input fields with increment and decrement controls.\n *\n * This hook handles:\n * - Precise decimal arithmetic using Big.js\n * - Number formatting with thousand separators and decimal precision\n * - Input validation and value clamping\n * - Keyboard navigation (arrows, PageUp/Down, Home/End)\n * - Platform-specific input modes for mobile devices\n * - Accessibility attributes and button states\n * - Controlled and uncontrolled value management\n *\n * @param config - Configuration options for the number field\n * @returns Object containing the current value, input ref, and props for input and buttons\n *\n * @example\n * const { value, inputRef, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField({\n * label: \"Quantity\",\n * minValue: 0,\n * maxValue: 100,\n * step: 1,\n * onChange: (value) => console.log(value)\n * });\n */\nexport const useNumberField = (config: UseNumberFieldConfig) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const {\n minValue = DEFAULT_MIN_VALUE,\n maxValue = DEFAULT_MAX_VALUE,\n label = \"\",\n } = config;\n\n const step = config.step ? Math.abs(config.step) : 1;\n\n const minimumFractionDigits = Math.abs(config.minimumFractionDigits ?? 0);\n const maximumFractionDigits = Math.max(\n Math.abs(config.maximumFractionDigits ?? 0),\n minimumFractionDigits,\n );\n\n const previousMinimumFractionDigits = usePrevious(\n minimumFractionDigits,\n minimumFractionDigits,\n );\n\n const params: MaskitoNumberParams = useMemo(\n () => ({\n decimalSeparator: \".\",\n thousandSeparator: \",\",\n minusSign: \"-\",\n minimumFractionDigits,\n maximumFractionDigits,\n }),\n [minimumFractionDigits, maximumFractionDigits],\n );\n const options = useMemo(() => createNumberMaskOptions(params), [params]);\n\n const [isBeginningNegativeEntry, setIsBeginningNegativeEntry] =\n useState(false);\n\n // Tracks values like \"123.\" or \"123.0\" that would lose precision on controlled round-trip\n const [isIncompleteDecimalEntry, setIsIncompleteDecimalEntry] =\n useState(false);\n const [incompleteDecimalValue, setIncompleteDecimalValue] = useState<\n string | null\n >(null);\n\n const [inputValue, setInputValue] = useOptionallyControlledState<\n string | null\n >({\n controlledValue: convertValueProp(config.value, { maskitoParams: params }),\n defaultValue:\n convertValueProp(config.defaultValue, { maskitoParams: params }) ?? null,\n onChange: (value) => {\n if (value === \"-\") {\n setIsBeginningNegativeEntry(true);\n return;\n }\n setIsBeginningNegativeEntry(false);\n if (value === null) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n return config.onChange?.(null);\n }\n const parsedValue = maskitoParseNumber(value, params);\n const nanSafeValue = isNaN(parsedValue) ? null : parsedValue;\n\n // Detect incomplete decimal entries that would lose precision on round-trip\n if (\n minimumFractionDigits === 0 &&\n value.includes(\".\") &&\n nanSafeValue !== null\n ) {\n const formatted = maskitoStringifyNumber(nanSafeValue, params);\n if (formatted !== value) {\n setIsIncompleteDecimalEntry(true);\n setIncompleteDecimalValue(value);\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n } else {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n\n config.onChange?.(nanSafeValue);\n },\n });\n const previousInputValue = usePrevious(inputValue, inputValue);\n\n useEffect(() => {\n if (isBeginningNegativeEntry && previousInputValue !== inputValue) {\n setIsBeginningNegativeEntry(false);\n }\n }, [isBeginningNegativeEntry, inputValue, previousInputValue]);\n\n // Clear incomplete decimal state when controlled value changes externally\n useEffect(() => {\n if (isIncompleteDecimalEntry && incompleteDecimalValue) {\n const incompleteNumeric = maskitoParseNumber(\n incompleteDecimalValue,\n params,\n );\n const currentNumeric = inputValue\n ? maskitoParseNumber(inputValue, params)\n : null;\n\n const incompleteNanSafe = isNaN(incompleteNumeric)\n ? null\n : incompleteNumeric;\n if (incompleteNanSafe !== currentNumeric) {\n setIsIncompleteDecimalEntry(false);\n setIncompleteDecimalValue(null);\n }\n }\n }, [isIncompleteDecimalEntry, incompleteDecimalValue, inputValue, params]);\n\n // Reformat when minimumFractionDigits changes (e.g., 10 → 10.00)\n useEffect(() => {\n if (previousMinimumFractionDigits === minimumFractionDigits) return;\n setInputValue((previous) => {\n if (previous === null || previous === undefined) return null;\n const parsedValue = maskitoParseNumber(previous, params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n return maskitoStringifyNumber(nanSafeValue, params);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [minimumFractionDigits, previousMinimumFractionDigits]);\n\n const maskedInputRef = useMaskito({\n options,\n });\n\n const computedValue: Big | null = useMemo(() => {\n if (inputValue === null) return null;\n const parsedValue = maskitoParseNumber(inputValue, params);\n if (isNaN(parsedValue)) {\n return null;\n }\n const bigValue = new Big(parsedValue);\n return bigValue;\n }, [inputValue, params]);\n\n const clamp = useCallback(\n (value: number) => {\n return Math.min(Math.max(value, minValue), maxValue);\n },\n [minValue, maxValue],\n );\n\n const increment = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const incrementedValue = new Big(nanSafeValue).plus(amount);\n const clampedValue = clamp(incrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const decrement = useCallback(\n (amount: number) => {\n setInputValue((prevValue) => {\n const parsedValue = maskitoParseNumber(prevValue ?? \"0\", params);\n const nanSafeValue = isNaN(parsedValue) ? 0 : parsedValue;\n const decrementedValue = new Big(nanSafeValue).minus(amount);\n const clampedValue = clamp(decrementedValue.toNumber());\n return maskitoStringifyNumber(clampedValue, params);\n });\n },\n [clamp, params, setInputValue],\n );\n\n const setToMin = useCallback(() => {\n setInputValue(maskitoStringifyNumber(minValue, params));\n }, [minValue, params, setInputValue]);\n\n const setToMax = useCallback(() => {\n setInputValue(maskitoStringifyNumber(maxValue, params));\n }, [maxValue, params, setInputValue]);\n\n const { inputRef: keysInputRef } = useNumberFieldKeys({\n increment,\n decrement,\n setToMin,\n setToMax,\n step,\n largeStepMultiplier: 10,\n });\n\n const combinedInputRef = useMergeRefs([\n inputRef,\n maskedInputRef,\n keysInputRef,\n ]);\n\n const hasDecimals = minimumFractionDigits > 0 || maximumFractionDigits > 0;\n const hasNegative = minValue < 0;\n\n const inputMode = useNumberFieldInputMode({\n hasDecimals,\n hasNegative,\n });\n\n const pattern = useMemo(() => {\n if (hasNegative) {\n return `-?[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n if (hasDecimals) {\n return `[0-9]*(.[0-9]{0,${maximumFractionDigits}})?`;\n }\n return \"[0-9]*\";\n }, [maximumFractionDigits, hasDecimals, hasNegative]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n if (newValue === \"\") {\n setInputValue(null);\n } else {\n setInputValue(newValue);\n }\n };\n\n return {\n value: computedValue?.toNumber() ?? null,\n inputRef: combinedInputRef,\n inputProps: {\n value: isBeginningNegativeEntry\n ? \"-\"\n : isIncompleteDecimalEntry\n ? (incompleteDecimalValue ?? \"\")\n : (inputValue ?? \"\"),\n onChange: handleInputChange,\n inputMode,\n \"aria-valuenow\": computedValue?.toNumber() ?? undefined,\n \"aria-valuemin\": minValue,\n \"aria-valuemax\": maxValue,\n min: minValue,\n max: maxValue,\n step,\n role: \"spinbutton\",\n pattern,\n type: \"text\",\n autoComplete: \"off\",\n },\n incrementButtonProps: {\n onClick: () => increment(step),\n disabled: computedValue?.gte(maxValue),\n tabIndex: -1,\n \"aria-label\": `Increment ${label ?? \"\"}`,\n },\n decrementButtonProps: {\n onClick: () => decrement(step),\n disabled: computedValue?.lte(minValue),\n tabIndex: -1,\n \"aria-label\": `Decrement ${label ?? \"\"}`,\n },\n };\n};\n\n/**\n * Converts a numeric value to a formatted string using Maskito parameters.\n *\n * @param v - The numeric value to convert\n * @param maskitoParams - Maskito configuration parameters for formatting\n * @returns Formatted string representation of the value, or null/undefined if input is null/undefined\n */\nfunction convertValueProp(\n v: number | null | undefined,\n { maskitoParams }: { maskitoParams: MaskitoNumberParams },\n): string | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n let bigValue: Big;\n try {\n bigValue = new Big(v);\n } catch (_) {\n bigValue = new Big(0);\n }\n return maskitoStringifyNumber(\n bigValue.round(maskitoParams.maximumFractionDigits).toNumber(),\n maskitoParams,\n );\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[7]}
|
|
File without changes
|