@servicetitan/anvil2 1.46.11 → 1.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/{Alert-CPOBY6O5.js → Alert-BoJUAPue.js} +4 -4
- package/dist/{Alert-CPOBY6O5.js.map → Alert-BoJUAPue.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-BvzAEdx8.js → Announcement-DtMAQ0Xc.js} +4 -4
- package/dist/{Announcement-BvzAEdx8.js.map → Announcement-DtMAQ0Xc.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-DkHInQRh.js → AnvilProvider-BhQklhtR.js} +8 -20
- package/dist/AnvilProvider-BhQklhtR.js.map +1 -0
- package/dist/AnvilProvider.js +2 -1
- package/dist/AnvilProvider.js.map +1 -1
- package/dist/AnvilProviderContext-B5CU2cEi.js +18 -0
- package/dist/AnvilProviderContext-B5CU2cEi.js.map +1 -0
- package/dist/{Avatar-3d5Kv2CF.js → Avatar-BWw31pcL.js} +2 -2
- package/dist/{Avatar-3d5Kv2CF.js.map → Avatar-BWw31pcL.js.map} +1 -1
- package/dist/{Avatar-DJ3oJNsv.js → Avatar-C0FuFDK4.js} +2 -2
- package/dist/{Avatar-DJ3oJNsv.js.map → Avatar-C0FuFDK4.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Badge-DCA9mfc2.js → Badge-DniZR2GC.js} +2 -2
- package/dist/{Badge-DCA9mfc2.js.map → Badge-DniZR2GC.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs-C4_PEolS.js → Breadcrumbs-0Yx3iLZ8.js} +5 -5
- package/dist/{Breadcrumbs-C4_PEolS.js.map → Breadcrumbs-0Yx3iLZ8.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-VNQQgZ45.js → Button-Bm-YMdkp.js} +5 -5
- package/dist/{Button-VNQQgZ45.js.map → Button-Bm-YMdkp.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonCompound-BbPK-Xjj.js → ButtonCompound-BA95JQGP.js} +2 -2
- package/dist/{ButtonCompound-BbPK-Xjj.js.map → ButtonCompound-BA95JQGP.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CqR1F5Wn.js → ButtonLink-BiFzqDml.js} +5 -5
- package/dist/{ButtonLink-CqR1F5Wn.js.map → ButtonLink-BiFzqDml.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-PCeSG-5D.js → ButtonToggle-BO9HLpIW.js} +3 -3
- package/dist/{ButtonToggle-PCeSG-5D.js.map → ButtonToggle-BO9HLpIW.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/Calendar-B3YJQo6Y.js +10 -0
- package/dist/Calendar-B3YJQo6Y.js.map +1 -0
- package/dist/{Calendar-DaVJ96Hp.js → Calendar-BE9JCFwy.js} +5 -6
- package/dist/Calendar-BE9JCFwy.js.map +1 -0
- package/dist/Calendar.js +2 -2
- package/dist/{Card-vTYeSkxt.js → Card-TyKjI6d8.js} +2 -2
- package/dist/{Card-vTYeSkxt.js.map → Card-TyKjI6d8.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-Dv01A09v.js → Checkbox-Bib3kQcl.js} +5 -5
- package/dist/{Checkbox-Dv01A09v.js.map → Checkbox-Bib3kQcl.js.map} +1 -1
- package/dist/{Checkbox-B5VTqylq.js → Checkbox-DdDtsKg7.js} +2 -2
- package/dist/{Checkbox-B5VTqylq.js.map → Checkbox-DdDtsKg7.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Chip-DLU13qe-.js → Chip-DRw9cu1_.js} +5 -7
- package/dist/Chip-DRw9cu1_.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-C9-VQHxv.js → Combobox-BWGxdcGI.js} +442 -185
- package/dist/Combobox-BWGxdcGI.js.map +1 -0
- package/dist/Combobox.css +59 -28
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-B17y3l8v.js → DataTable-ApkEFfCX.js} +11 -11
- package/dist/{DataTable-B17y3l8v.js.map → DataTable-ApkEFfCX.js.map} +1 -1
- package/dist/{DateField-CKI7Zk4E.js → DateField-ynB9Nkku.js} +6 -6
- package/dist/{DateField-CKI7Zk4E.js.map → DateField-ynB9Nkku.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-DIycPI0Y.js → DateFieldRange-DwUXExjQ.js} +6 -6
- package/dist/{DateFieldRange-DIycPI0Y.js.map → DateFieldRange-DwUXExjQ.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-BdkVUPvB.js → DateFieldSingle-ipxhv1fi.js} +6 -6
- package/dist/{DateFieldSingle-BdkVUPvB.js.map → DateFieldSingle-ipxhv1fi.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DvbW4vgm.js → DateFieldYearless-BH3Kdx-c.js} +2 -2
- package/dist/{DateFieldYearless-DvbW4vgm.js.map → DateFieldYearless-BH3Kdx-c.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BcyYG7dD.js → DaysOfTheWeek-GHPO3u2J.js} +6 -6
- package/dist/{DaysOfTheWeek-BcyYG7dD.js.map → DaysOfTheWeek-GHPO3u2J.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-CF8DImjw.js → Details-clBN4oi5.js} +3 -3
- package/dist/{Details-CF8DImjw.js.map → Details-clBN4oi5.js.map} +1 -1
- package/dist/Details.js +1 -1
- package/dist/{Dialog-BLFx4TRs.js → Dialog-Drw33nrV.js} +20 -9
- package/dist/Dialog-Drw33nrV.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{Divider-DJe8kLf2.js → Divider-Dx2AV2jM.js} +2 -2
- package/dist/{Divider-DJe8kLf2.js.map → Divider-Dx2AV2jM.js.map} +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +32 -28
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-DPM-jPb7.js → Drawer-BDShECnc.js} +22 -13
- package/dist/Drawer-BDShECnc.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/{EditCard-CZzL0nx7.js → EditCard-1KcrWvsY.js} +6 -6
- package/dist/{EditCard-CZzL0nx7.js.map → EditCard-1KcrWvsY.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-C6XZKglC.js → FieldLabel-NOjvQkOa.js} +3 -3
- package/dist/{FieldLabel-C6XZKglC.js.map → FieldLabel-NOjvQkOa.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FieldMessage-B7uQ8vmr.js → FieldMessage-D0Z4yMMm.js} +2 -2
- package/dist/{FieldMessage-B7uQ8vmr.js.map → FieldMessage-D0Z4yMMm.js.map} +1 -1
- package/dist/FieldMessage.js +1 -1
- package/dist/{Flex-BdQMekvA.js → Flex-DdOpCJf2.js} +2 -2
- package/dist/{Flex-BdQMekvA.js.map → Flex-DdOpCJf2.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-MGUC698u.js → Grid-M1Gq9b-a.js} +2 -2
- package/dist/{Grid-MGUC698u.js.map → Grid-M1Gq9b-a.js.map} +1 -1
- package/dist/Grid.js +1 -1
- package/dist/{Helper-BkIDJqgA.js → Helper-BTXu4PCQ.js} +2 -2
- package/dist/{Helper-BkIDJqgA.js.map → Helper-BTXu4PCQ.js.map} +1 -1
- package/dist/{Icon-D8SPKeO4.js → Icon-CB-34pME.js} +2 -2
- package/dist/{Icon-D8SPKeO4.js.map → Icon-CB-34pME.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-DkNgXdFO.js → InputMask-D1Uushxa.js} +2 -2
- package/dist/{InputMask-DkNgXdFO.js.map → InputMask-D1Uushxa.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-eRsLWPaQ.js → Link-BYvAKMcm.js} +3 -3
- package/dist/{Link-eRsLWPaQ.js.map → Link-BYvAKMcm.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{LinkButton-2lXfrVoU.js → LinkButton-DFJqMz7w.js} +2 -2
- package/dist/{LinkButton-2lXfrVoU.js.map → LinkButton-DFJqMz7w.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-DYKwVASE.js → ListView-DG9YJ3DU.js} +3 -3
- package/dist/{ListView-DYKwVASE.js.map → ListView-DG9YJ3DU.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CWi30Cwg.js → Listbox-CMg3B6Nd.js} +11 -7
- package/dist/Listbox-CMg3B6Nd.js.map +1 -0
- package/dist/Listbox.js +1 -1
- package/dist/{LocalizationProvider-DEZyjW5d.js → LocalizationProvider-Dgx0sOZg.js} +2 -2
- package/dist/{LocalizationProvider-DEZyjW5d.js.map → LocalizationProvider-Dgx0sOZg.js.map} +1 -1
- package/dist/LocalizationProvider.js +1 -1
- package/dist/{Menu-D22YbM7y.js → Menu-WuNO2Rbu.js} +5 -5
- package/dist/{Menu-D22YbM7y.js.map → Menu-WuNO2Rbu.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-B1hQ8jRn.js → NumberField-BUo30AOa.js} +8 -8
- package/dist/NumberField-BUo30AOa.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +2 -2
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-DwBcDxi2.js → Page-BtkspWJj.js} +15 -15
- package/dist/{Page-DwBcDxi2.js.map → Page-BtkspWJj.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-B7uvkLb3.js → Pagination-D6y_imDK.js} +7 -7
- package/dist/{Pagination-B7uvkLb3.js.map → Pagination-D6y_imDK.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-BuhxFt5z.js → Popover-CSj2mv66.js} +5 -5
- package/dist/Popover-CSj2mv66.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{PortalProvider-9lXkQ0xY.js → PortalProvider-Pa5srbPi.js} +4 -6
- package/dist/PortalProvider-Pa5srbPi.js.map +1 -0
- package/dist/PortalProvider.js +2 -1
- package/dist/PortalProvider.js.map +1 -1
- package/dist/PortalProviderContext-B28f2L_g.js +8 -0
- package/dist/PortalProviderContext-B28f2L_g.js.map +1 -0
- package/dist/{ProgressBar-Bq8indkz.js → ProgressBar-BPIta_9F.js} +6 -6
- package/dist/{ProgressBar-Bq8indkz.js.map → ProgressBar-BPIta_9F.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-57ck6GTm.js → Radio-0WGmwHGs.js} +2 -2
- package/dist/{Radio-57ck6GTm.js.map → Radio-0WGmwHGs.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-CcRLdoAl.js → RadioGroup-BARdP9VP.js} +5 -5
- package/dist/{RadioGroup-CcRLdoAl.js.map → RadioGroup-BARdP9VP.js.map} +1 -1
- package/dist/{SearchField-DqV9-0wR.js → SearchField-DTdrOWbb.js} +3 -3
- package/dist/{SearchField-DqV9-0wR.js.map → SearchField-DTdrOWbb.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CLDdes8W.js → SegmentedControl-DVSlMI3w.js} +3 -3
- package/dist/{SegmentedControl-CLDdes8W.js.map → SegmentedControl-DVSlMI3w.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-dEhb5KAL.js → SelectCard-Db-CNnMe.js} +6 -5
- package/dist/SelectCard-Db-CNnMe.js.map +1 -0
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-A96aYNm-.js → SelectTrigger-CcCiccEp.js} +5 -5
- package/dist/{SelectTrigger-A96aYNm-.js.map → SelectTrigger-CcCiccEp.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-I4Qo37zM.js → SelectTriggerBase-DtLWrsm7.js} +21 -7
- package/dist/SelectTriggerBase-DtLWrsm7.js.map +1 -0
- package/dist/{SideNav-nqq5sAwz.js → SideNav-B-rd3esD.js} +50 -42
- package/dist/SideNav-B-rd3esD.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/Spinner-xEFwsq8_.js +127 -0
- package/dist/Spinner-xEFwsq8_.js.map +1 -0
- package/dist/Spinner.css +22 -19
- package/dist/Spinner.js +1 -1
- package/dist/{Stepper-DQ_Hm-AI.js → Stepper-CrqRl7BV.js} +5 -5
- package/dist/{Stepper-DQ_Hm-AI.js.map → Stepper-CrqRl7BV.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-C2ddZcr9.js → Switch-Dt8kun__.js} +5 -5
- package/dist/{Switch-C2ddZcr9.js.map → Switch-Dt8kun__.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-BQ5tMHlN.js → Tab-D8fMPPzs.js} +4 -4
- package/dist/{Tab-BQ5tMHlN.js.map → Tab-D8fMPPzs.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BqvcbXyp.js → Text-Bbi-LKog.js} +2 -2
- package/dist/{Text-BqvcbXyp.js.map → Text-Bbi-LKog.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-DLIaLKT1.js → TextField-BNIVbKWT.js} +2 -2
- package/dist/{TextField-DLIaLKT1.js.map → TextField-BNIVbKWT.js.map} +1 -1
- package/dist/{TextField-CP5kL2j7.js → TextField-gFol8RuR.js} +6 -6
- package/dist/{TextField-CP5kL2j7.js.map → TextField-gFol8RuR.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-Kb-RF4rR.js → Textarea-Ddnqj2Qt.js} +4 -4
- package/dist/{Textarea-Kb-RF4rR.js.map → Textarea-Ddnqj2Qt.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-7X1D1GxO.js → ThemeProvider-Bo2JRqGq.js} +2 -2
- package/dist/{ThemeProvider-7X1D1GxO.js.map → ThemeProvider-Bo2JRqGq.js.map} +1 -1
- package/dist/ThemeProvider.js +1 -1
- package/dist/{TimeField-6OSTzIYV.js → TimeField-Dc0CfW4e.js} +6 -6
- package/dist/{TimeField-6OSTzIYV.js.map → TimeField-Dc0CfW4e.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-BVM24YZG.js → Toaster-BGqW3sq1.js} +2 -2
- package/dist/{Toaster-BVM24YZG.js.map → Toaster-BGqW3sq1.js.map} +1 -1
- package/dist/{Toaster-Du0zf4b-.js → Toaster-DEV2FFN2.js} +4 -4
- package/dist/{Toaster-Du0zf4b-.js.map → Toaster-DEV2FFN2.js.map} +1 -1
- package/dist/{Toolbar-BGaVd-fy.js → Toolbar-DsBKx1eB.js} +21 -21
- package/dist/{Toolbar-BGaVd-fy.js.map → Toolbar-DsBKx1eB.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-Dp9gWa2P.js → Tooltip-CmsYVHVU.js} +4 -4
- package/dist/Tooltip-CmsYVHVU.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/TrackingProvider-Co4lyoI9.js +18 -0
- package/dist/TrackingProvider-Co4lyoI9.js.map +1 -0
- package/dist/TrackingProvider.js +2 -2
- package/dist/{TrackingProvider-BtSjkmpM.js → TrackingProviderContext-CrVA7KHv.js} +2 -15
- package/dist/TrackingProviderContext-CrVA7KHv.js.map +1 -0
- package/dist/beta.js +4 -4
- package/dist/components/Combobox/ComboboxContent.d.ts +2 -2
- package/dist/components/Combobox/ComboboxMockData.d.ts +1 -1
- package/dist/components/Combobox/ComboboxTypes.d.ts +10 -2
- package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +0 -1
- package/dist/components/Combobox/internal/ComboboxGroupList.d.ts +8 -0
- package/dist/components/Combobox/internal/ComboboxGroupProvider.d.ts +1 -0
- package/dist/components/Combobox/internal/ComboboxItemVisual.d.ts +12 -0
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacy.d.ts +2 -32
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyContent.d.ts +2 -2
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyMockData.d.ts +1 -1
- package/dist/components/Combobox/internal/ComboboxLegacy/ComboboxLegacyUtils.d.ts +34 -1
- package/dist/components/Combobox/internal/ComboboxLegacy/index.d.ts +2 -1
- package/dist/components/Combobox/internal/ComboboxMockData.d.ts +1 -1
- package/dist/components/Combobox/internal/ComboboxSelectAll.d.ts +4 -0
- package/dist/components/Combobox/internal/ComboboxUtils.d.ts +2 -0
- package/dist/components/Combobox/internal/useCombobox.d.ts +7 -0
- package/dist/components/Dialog/Dialog.d.ts +19 -1
- package/dist/components/DndSort/internal/DndSortContext.d.ts +2 -9
- package/dist/components/DndSort/internal/DndSortContextProvider.d.ts +11 -0
- package/dist/components/DndSort/internal/DndSortZoneContext.d.ts +1 -12
- package/dist/components/DndSort/internal/DndSortZoneContextProvider.d.ts +13 -0
- package/dist/components/Drawer/Drawer.d.ts +13 -1
- package/dist/components/Popover/internal/PopoverLegacy/PopoverLegacyTrigger.d.ts +2 -2
- package/dist/components/SelectCard/SelectCardGroup.d.ts +1 -1
- package/dist/components/SelectCard/internal/SelectCardContext.d.ts +55 -0
- package/dist/components/SelectCard/internal/SelectCardProvider.d.ts +2 -54
- package/dist/components/SideNav/SideNav.d.ts +0 -32
- package/dist/components/SideNav/SideNavContext.d.ts +26 -0
- package/dist/components/SideNav/internal/SideNavContext.d.ts +20 -0
- package/dist/components/SideNav/internal/SideNavProvider.d.ts +0 -19
- package/dist/components/SideNav/internal/utils.d.ts +1 -1
- package/dist/components/SideNav/useSideNav.d.ts +6 -0
- package/dist/components/Spinner/Spinner.d.ts +10 -0
- package/dist/{index-DrM3iid4.js → index-CVqRZ_4L.js} +3 -3
- package/dist/{index-DrM3iid4.js.map → index-CVqRZ_4L.js.map} +1 -1
- package/dist/index.js +74 -72
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +1 -1
- package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +6 -1
- package/dist/internal/utils/index.d.ts +1 -0
- package/dist/internal/utils/layerManager.d.ts +43 -0
- package/dist/{primitive-BoyEHaOo.js → primitive-BByug0kD.js} +2 -2
- package/dist/{primitive-BoyEHaOo.js.map → primitive-BByug0kD.js.map} +1 -1
- package/dist/providers/AnvilProvider/AnvilProvider.d.ts +1 -32
- package/dist/providers/AnvilProvider/AnvilProviderContext.d.ts +32 -0
- package/dist/providers/AnvilProvider/index.d.ts +2 -1
- package/dist/providers/PortalProvider/PortalProvider.d.ts +1 -9
- package/dist/providers/PortalProvider/PortalProviderContext.d.ts +9 -0
- package/dist/providers/PortalProvider/index.d.ts +2 -1
- package/dist/providers/TrackingProvider/TrackingProvider.d.ts +2 -12
- package/dist/providers/TrackingProvider/TrackingProviderContext.d.ts +13 -0
- package/dist/providers/TrackingProvider/index.d.ts +2 -1
- package/dist/providers/TrackingProvider/useTrackingContext.d.ts +1 -1
- package/dist/token.js +1 -1
- package/dist/types/props.d.ts +1 -1
- package/dist/useBreakpoint-6KK6MJ9g.js +55 -0
- package/dist/useBreakpoint-6KK6MJ9g.js.map +1 -0
- package/dist/useBreakpoint.js +1 -1
- package/dist/useFocusWithin-hi77jsrB.js.map +1 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
- package/dist/{useInitialFocus-CAFMgbJG.js → useInitialFocus-Cl_Txu7W.js} +2 -2
- package/dist/{useInitialFocus-CAFMgbJG.js.map → useInitialFocus-Cl_Txu7W.js.map} +1 -1
- package/dist/{useLayoutPropsUtil-DjD5IMh0.js → useLayoutPropsUtil-DLrhehwU.js} +3 -3
- package/dist/{useLayoutPropsUtil-DjD5IMh0.js.map → useLayoutPropsUtil-DLrhehwU.js.map} +1 -1
- package/dist/{useOnClickOutside-C5AZE_I6.js → useOnClickOutside-BDzuUjmY.js} +40 -7
- package/dist/useOnClickOutside-BDzuUjmY.js.map +1 -0
- package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
- package/dist/{useTrackingContext-DRwDL8DE.js → useTrackingContext-C522P4sv.js} +2 -2
- package/dist/useTrackingContext-C522P4sv.js.map +1 -0
- package/dist/useTrackingId.js +1 -1
- package/dist/{utils-CEgTTa9_.js → utils-wis6GReX.js} +2 -2
- package/dist/{utils-CEgTTa9_.js.map → utils-wis6GReX.js.map} +1 -1
- package/package.json +2 -2
- package/dist/AnvilProvider-DkHInQRh.js.map +0 -1
- package/dist/Calendar-DaVJ96Hp.js.map +0 -1
- package/dist/Calendar-l4NbwEr5.js +0 -9
- package/dist/Calendar-l4NbwEr5.js.map +0 -1
- package/dist/Chip-DLU13qe-.js.map +0 -1
- package/dist/Combobox-C9-VQHxv.js.map +0 -1
- package/dist/Dialog-BLFx4TRs.js.map +0 -1
- package/dist/Drawer-DPM-jPb7.js.map +0 -1
- package/dist/Listbox-CWi30Cwg.js.map +0 -1
- package/dist/NumberField-B1hQ8jRn.js.map +0 -1
- package/dist/Popover-BuhxFt5z.js.map +0 -1
- package/dist/PortalProvider-9lXkQ0xY.js.map +0 -1
- package/dist/SelectCard-dEhb5KAL.js.map +0 -1
- package/dist/SelectTriggerBase-I4Qo37zM.js.map +0 -1
- package/dist/SideNav-nqq5sAwz.js.map +0 -1
- package/dist/Spinner-wmO8Epw0.js +0 -25
- package/dist/Spinner-wmO8Epw0.js.map +0 -1
- package/dist/Tooltip-Dp9gWa2P.js.map +0 -1
- package/dist/TrackingProvider-BtSjkmpM.js.map +0 -1
- package/dist/useBreakpoint-Cv5fnZxs.js +0 -50
- package/dist/useBreakpoint-Cv5fnZxs.js.map +0 -1
- package/dist/useOnClickOutside-C5AZE_I6.js.map +0 -1
- package/dist/useTrackingContext-DRwDL8DE.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog-BLFx4TRs.js","sources":["../src/components/Dialog/internal/useDialogContext.ts","../src/components/Dialog/DialogCancelButton.tsx","../src/components/Dialog/DialogHeader.tsx","../src/components/Dialog/DialogFooter.tsx","../src/components/Dialog/DialogContent.tsx","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport function useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"useDialogContext must be used within a DialogContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DialogCancelButton component\n * @extends ButtonProps\n */\nexport type DialogCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\nexport const DialogCancelButton = forwardRef<\n HTMLButtonElement,\n DialogCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDialogContext();\n const data = {\n title: props.title,\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DialogCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close dialog\"\n data-anv=\"dialog-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDialogCancelButton.displayName = \"DialogCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport cx from \"classnames\";\n\nimport { Text } from \"../Text\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\n/**\n * Props for the DialogHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DialogHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n (props: DialogHeaderProps, ref) => {\n const { children, className, ...rest } = props;\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Dialog\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const headerClassNames = cx(className, styles[\"header\"]);\n\n return (\n <header\n className={headerClassNames}\n data-anv=\"dialog-header\"\n data-tracking-id={trackingId}\n ref={ref}\n {...rest}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDialogHeader.displayName = \"DialogHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\nexport const DialogFooter = forwardRef<HTMLElement, DialogFooterProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n\n const footerClassNames = cx(styles[\"footer\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={footerClassNames}\n data-anv=\"dialog-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDialogFooter.displayName = \"DialogFooter\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DialogContentProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (props, ref) => {\n const { children, className, ...rest } = props;\n\n const contentClassNames = cx(styles[\"content\"], className);\n\n return (\n <div\n className={contentClassNames}\n data-anv=\"dialog-content\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport { DisableCloseOnEscapeOrClickProps, Size } from \"../../types\";\nimport { DialogContext, DialogContextProps } from \"./internal/DialogContext\";\nimport styles from \"./Dialog.module.scss\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\n\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\nimport { useInitialFocus } from \"./internal/useInitialFocus\";\nimport { FocusableElement } from \"tabbable\";\n\n/**\n * Props for the Dialog component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DialogProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * @default false\n */\n fullScreen?: boolean;\n /**\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n\n /**\n * @default false\n */\n open?: boolean;\n onClose?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when clicking outside the dialog\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n };\n\nexport const DialogElement = forwardRef<HTMLDialogElement, DialogProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onOpenChange,\n onClose,\n onKeyDown,\n fullScreen = false,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size,\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const [hasOpenPopover, setHasOpenPopover] =\n useState<DialogContextProps[\"hasOpenPopover\"]>(false);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n // DEPRECATED\n const initial = useRef(true);\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n } else {\n onOpenChange?.(isOpenOrOpening);\n }\n }, [id, onOpenChange, isOpenOrOpening]);\n\n const classNames = cx([styles[\"dialog\"]], className, {\n [styles[\"closing\"]]: state === \"closing\",\n [styles[\"fullscreen\"]]: fullScreen,\n [styles[\"large\"]]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: true,\n });\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n });\n\n const computeFocus = useCallback((focusables: FocusableElement[]) => {\n return (\n focusables.find(\n (focusable) => focusable.dataset.anv !== \"dialog-cancel-button\",\n ) || focusables[0]\n );\n }, []);\n\n useInitialFocus(elRef, {\n computeFocus,\n });\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\") {\n e.preventDefault();\n if (disableCloseOnEscape) return;\n if (hasOpenPopover) return;\n onClose?.();\n return;\n }\n\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === focusables?.[0]) {\n e.preventDefault();\n (focusables[focusables.length - 1] as HTMLElement)?.focus();\n return;\n }\n if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {\n e.preventDefault();\n focusables[0].focus();\n return;\n }\n }\n };\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <dialog\n className={classNames}\n data-anv=\"dialog\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={useMergeRefs([ref, elRef])}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={open}>\n <ToasterPopover>\n <ToasterContent id=\"dialog-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DialogContext.Provider\n value={{\n close: () => onClose?.(),\n ref: elRef,\n hasOpenPopover,\n setHasOpenPopover,\n }}\n >\n <section\n ref={contentRef}\n className={styles[\"container\"]}\n data-open={open}\n >\n {children}\n </section>\n </DialogContext.Provider>\n </dialog>\n );\n },\n);\n\nDialogElement.displayName = \"Dialog\";\n\n/**\n * Dialog component for creating modal dialogs and overlays.\n *\n * Features:\n * - Modal dialog with backdrop overlay\n * - Controlled and uncontrolled open state\n * - Smooth open/close animations\n * - Keyboard navigation and focus management\n * - Escape key and click outside to close\n * - Multiple size variants (medium, large, fullscreen)\n * - Scroll chaining support\n * - Toast integration for notifications\n * - Compound component pattern with Header, Footer, Content, and CancelButton sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog open={isOpen} onClose={() => setIsOpen(false)}>\n * <Dialog.Header>Confirm Action</Dialog.Header>\n * <Dialog.Content>Are you sure you want to proceed?</Dialog.Content>\n * <Dialog.Footer>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Confirm</Button>\n * </Dialog.Footer>\n * </Dialog>\n */\nexport const Dialog = Object.assign(DialogElement, {\n /**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\n Header: DialogHeader,\n /**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\n Footer: DialogFooter,\n /**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\n Content: DialogContent,\n /**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\n CancelButton: DialogCancelButton,\n});\n"],"names":["Close","focusables"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer-DPM-jPb7.js","sources":["../src/components/Drawer/internal/useDrawerContext.ts","../src/components/Drawer/DrawerCancelButton.tsx","../src/components/Drawer/DrawerHeader.tsx","../src/components/Drawer/DrawerFooter.tsx","../src/components/Drawer/DrawerContent.tsx","../src/components/Drawer/Drawer.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DrawerContext } from \"./DrawerContext\";\n\n/**\n * Hook to access the drawer context.\n *\n * @returns The drawer context containing close function and ref\n * @throws Error if used outside of a DrawerContextProvider\n */\nexport function useDrawerContext() {\n const context = useContext(DrawerContext);\n if (!context) {\n throw new Error(\n \"useDrawerContext must be used within a DrawerContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { DataTrackingId } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { useDrawerContext } from \"./internal/useDrawerContext\";\n\n/**\n * Props for the DrawerCancelButton component\n * @extends ButtonProps\n */\nexport type DrawerCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * A button component that automatically closes the drawer when clicked.\n *\n * Features:\n * - Automatically closes the drawer when clicked\n * - Extends Button component functionality\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard button props\n * - Proper focus management\n * - Can be used anywhere within the drawer context\n *\n * @example\n * <DrawerCancelButton appearance=\"ghost\" size=\"small\">\n * Cancel\n * </DrawerCancelButton>\n */\nexport const DrawerCancelButton = forwardRef<\n HTMLButtonElement,\n DrawerCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDrawerContext();\n const data = {\n children: childrenToString(props.children),\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DrawerCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close drawer\"\n data-anv=\"drawer-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDrawerCancelButton.displayName = \"DrawerCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport styles from \"./Drawer.module.scss\";\nimport { Text } from \"../Text\";\nimport { DrawerCancelButton } from \"./DrawerCancelButton\";\nimport cx from \"classnames\";\nimport { DataTrackingId } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DrawerHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DrawerHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * Header component for the drawer that displays a title and close button.\n *\n * Features:\n * - Displays the drawer title as a headline\n * - Includes an accessible close button\n * - Sticky positioning at the top of the drawer\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Automatic close functionality\n *\n * @example\n * <Drawer.Header>Settings</Drawer.Header>\n */\nexport const DrawerHeader = forwardRef<HTMLHeadElement, DrawerHeaderProps>(\n (props, ref) => {\n const { className, children } = props;\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"DrawerHeader\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const drawerHeaderClasses = cx(styles.header, className);\n\n return (\n <header\n className={drawerHeaderClasses}\n data-anv=\"drawer-header\"\n data-tracking-id={trackingId}\n ref={ref}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DrawerCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close drawer\"\n data-anv=\"drawer-header-close-button\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Drawer.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DrawerFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DrawerFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * When true, the footer will stick to the bottom of the drawer.\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * Footer component for the drawer that displays action buttons and controls.\n *\n * Features:\n * - Flexible layout for action buttons and controls\n * - Optional sticky positioning at the bottom\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard footer element props\n * - Responsive design that adapts to content\n *\n * @example\n * <Drawer.Footer sticky>\n * <Button onClick={handleSave}>Save</Button>\n * <Button onClick={handleCancel}>Cancel</Button>\n * </Drawer.Footer>\n */\nexport const DrawerFooter = forwardRef<HTMLElement, DrawerFooterProps>(\n (props, ref) => {\n const { className, children, sticky = false, ...rest } = props;\n const drawerFooterClasses = cx(styles.footer, className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={drawerFooterClasses}\n data-anv=\"drawer-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDrawerFooter.displayName = \"DrawerFooter\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport styles from \"./Drawer.module.scss\";\nimport cx from \"classnames\";\n\n/**\n * Props for the DrawerContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DrawerContentProps = ComponentPropsWithoutRef<\"div\">;\n\n/**\n * Content container for the drawer that holds the main content area.\n *\n * Features:\n * - Flexible content area with proper spacing\n * - Scrollable content when needed\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard div element props\n * - Responsive design that adapts to content\n * - Proper focus management\n *\n * @example\n * <Drawer.Content>\n * <p>This is the main content of the drawer.</p>\n * <p>It can contain any type of content.</p>\n * </Drawer.Content>\n */\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (props, ref) => {\n const { className, children, ...rest } = props;\n const drawerContentClasses = cx(styles.content, className);\n\n return (\n <div\n className={drawerContentClasses}\n data-anv=\"drawer-content\"\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n","import styles from \"./Drawer.module.scss\";\nimport {\n ComponentPropsWithoutRef,\n forwardRef,\n useRef,\n useId,\n useCallback,\n SyntheticEvent,\n KeyboardEvent,\n useMemo,\n} from \"react\";\nimport { DrawerHeader } from \"./DrawerHeader\";\nimport { DrawerFooter } from \"./DrawerFooter\";\nimport { DrawerContent } from \"./DrawerContent\";\nimport { DrawerCancelButton } from \"./DrawerCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport { DisableCloseOnEscapeOrClickProps, Size } from \"../../types\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\nimport { DrawerContext } from \"./internal/DrawerContext\";\nimport { FocusableElement } from \"tabbable\";\nimport { useInitialFocus } from \"../Dialog/internal/useInitialFocus\";\n\n/**\n * Props for the Drawer component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DrawerProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * The size of the drawer.\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n /**\n * Controls whether the drawer is open or closed.\n * @default false\n */\n open?: boolean;\n /**\n * Callback function called after the drawer is animated closed.\n */\n onClose?: () => void;\n /**\n * Callback function called when the drawer opens.\n * @deprecated Use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * Callback when clicking outside the drawer\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining behavior.\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n };\n\nconst DrawerElement = forwardRef<HTMLDialogElement, DrawerProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onClose,\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars --\n onCancel is destructured so that it is not passed to the dialog in ...rest\n */\n onCancel,\n onKeyDown,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size = \"medium\",\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([elRef, ref]);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n const classNames = cx([styles.drawer], className, {\n [styles.remove]: state === \"closing\",\n [styles.large]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: false,\n });\n const firstFocusable = focusables?.[0];\n const lastFocusable = focusables?.[focusables.length - 1];\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n const computeFocus = useCallback((focusables: FocusableElement[]) => {\n return (\n focusables.find(\n (focusable) => focusable.dataset.anv !== \"drawer-header-close-button\",\n ) || focusables[0]\n );\n }, []);\n\n useInitialFocus(elRef, {\n computeFocus,\n });\n\n const onCancelHandler = (e: SyntheticEvent<HTMLDialogElement>) => {\n e.preventDefault();\n\n if (disableCloseOnEscape) return;\n onClose?.();\n };\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n });\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === firstFocusable) {\n e.preventDefault();\n (lastFocusable as HTMLElement)?.focus();\n return;\n }\n if (e.target === lastFocusable && !e.shiftKey) {\n e.preventDefault();\n (firstFocusable as HTMLElement)?.focus();\n return;\n }\n }\n };\n\n const contextValue = useMemo(() => {\n return { close: () => onClose?.() };\n }, [onClose]);\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n <dialog\n className={classNames}\n data-anv=\"drawer\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={combinedRef}\n onCancel={onCancelHandler}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={isOpenOrOpening}>\n <ToasterPopover>\n <ToasterContent id=\"drawer-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DrawerContext.Provider value={contextValue}>\n <section\n ref={contentRef}\n className={styles.container}\n data-open={isOpenOrOpening}\n >\n {children}\n </section>\n </DrawerContext.Provider>\n </dialog>\n );\n },\n);\nDrawerElement.displayName = \"Drawer\";\n\n/**\n * A slide-out drawer component that provides a modal-like experience from the side of the screen.\n *\n * Features:\n * - Slide-in animation from the side of the screen\n * - Keyboard navigation with focus trapping\n * - Escape key and click outside to close\n * - Configurable size variants (medium, large)\n * - Built-in toast support for notifications\n * - Automatic scroll locking when open\n * - Accessible with proper ARIA attributes\n * - Compound component structure with Header, Footer, Content, and CancelButton\n * - Transition state callbacks for animation control\n * - Optional scroll chaining support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Drawer open={isOpen} onClose={handleClose} size=\"medium\">\n * <Drawer.Header>Settings</Drawer.Header>\n * <Drawer.Content>Drawer content goes here</Drawer.Content>\n * <Drawer.Footer>\n * <Button onClick={handleSave}>Save</Button>\n * <Drawer.CancelButton>Cancel</Drawer.CancelButton>\n * </Drawer.Footer>\n * </Drawer>\n */\nexport const Drawer = Object.assign(DrawerElement, {\n /**\n * Header component for the drawer that displays a title and close button.\n *\n * Features:\n * - Displays the drawer title as a headline\n * - Includes an accessible close button\n * - Sticky positioning at the top of the drawer\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Automatic close functionality\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Drawer.Header>Settings</Drawer.Header>\n */\n Header: DrawerHeader,\n /**\n * Footer component for the drawer that displays action buttons and controls.\n *\n * Features:\n * - Flexible layout for action buttons and controls\n * - Optional sticky positioning at the bottom\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard footer element props\n * - Responsive design that adapts to content\n *\n * @example\n * <Drawer.Footer sticky>\n * <Button onClick={handleSave}>Save</Button>\n * <Drawer.CancelButton>Cancel</Drawer.CancelButton>\n * </Drawer.Footer>\n */\n Footer: DrawerFooter,\n /**\n * Content container for the drawer that holds the main content area.\n *\n * Features:\n * - Flexible content area with proper spacing\n * - Scrollable content when needed\n * - Proper semantic HTML structure\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard div element props\n * - Responsive design that adapts to content\n * - Proper focus management\n *\n * @example\n * <Drawer.Content>\n * <p>This is the main content of the drawer.</p>\n * <p>It can contain any type of content.</p>\n * </Drawer.Content>\n */\n Content: DrawerContent,\n /**\n * A button component that automatically closes the drawer when clicked.\n *\n * Features:\n * - Automatically closes the drawer when clicked\n * - Extends Button component functionality\n * - Accessible with proper ARIA attributes\n * - Consistent styling with the design system\n * - Supports all standard button props\n * - Proper focus management\n * - Can be used anywhere within the drawer context\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Drawer.CancelButton appearance=\"ghost\" size=\"small\">\n * Cancel\n * </Drawer.CancelButton>\n */\n CancelButton: DrawerCancelButton,\n});\n"],"names":["Close","focusables"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Listbox-CWi30Cwg.js","sources":["../src/internal/hooks/useTypeAhead/useTypeAhead.tsx","../src/components/Listbox/internal/ListboxContext.tsx","../src/components/Listbox/internal/ListboxOptionGroupContext.tsx","../src/components/Listbox/ListboxOption.tsx","../src/components/Listbox/internal/utils.ts","../src/components/Listbox/ListboxOptionGroup.tsx","../src/components/Listbox/Listbox.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\n/**\n * Custom hook for implementing type-ahead functionality.\n *\n * Features:\n * - Accumulates typed characters with automatic timeout clearing\n * - Provides type-ahead string for keyboard navigation\n * - Automatically resets after specified timeout period\n * - Supports customizable timeout duration\n * - Uses useEffect for automatic cleanup\n * - Optimized for keyboard navigation in lists and menus\n *\n * @param timeout - Timeout duration in milliseconds before clearing the type-ahead string\n * @returns Tuple containing current type-ahead string and function to update it\n */\nexport const useTypeAhead = (\n timeout = 750,\n): [string, (char: string) => void] => {\n const [typeAhead, setTypeAhead] = useState(\"\");\n\n useEffect(() => {\n const timer = setTimeout(() => setTypeAhead(\"\"), timeout);\n return () => clearTimeout(timer);\n }, [typeAhead, timeout]);\n\n const updateTypeAhead = (char: string) => setTypeAhead((prev) => prev + char);\n\n return [typeAhead, updateTypeAhead];\n};\n","import { createContext, Dispatch, SetStateAction, useContext } from \"react\";\nimport { ListboxProps } from \"../Listbox\";\n\n/**\n * Context properties for the Listbox component\n * @template T - The type of additional properties for items\n */\nexport type ListboxContextProps<T> = {\n /** ID of the currently focused option */\n currentFocus?: string;\n /** Function to set the currently focused option */\n setCurrentFocus: Dispatch<\n SetStateAction<ListboxContextProps<T>[\"currentFocus\"]>\n >;\n /** Currently selected option(s) */\n selected: ListboxProps<T>[\"defaultSelected\"];\n /** Function to set the selected option(s) */\n setSelected: Dispatch<SetStateAction<ListboxContextProps<T>[\"selected\"]>>;\n /** List of available option elements */\n options: NodeListOf<HTMLElement> | undefined;\n /** Current selection mode */\n selectionMode: Exclude<ListboxProps<T>[\"selectionMode\"], undefined>;\n /** Callback when selection changes */\n onSelectionChange: ListboxProps<T>[\"onSelectionChange\"];\n /** Whether auto-select on focus is disabled */\n disableAutoSelectOnFocus: boolean;\n /** Array of items if using items prop */\n items?: unknown[];\n /** Whether the component is controlled */\n controlled?: boolean;\n};\n\n/**\n * Context for sharing listbox state between components\n */\nexport const ListboxContext = createContext<ListboxContextProps<any> | null>(\n null,\n);\n\n/**\n * Hook to access the listbox context\n * @returns The listbox context\n * @throws Error if used outside of a Listbox component\n */\nexport const useListbox = () => {\n const context = useContext(ListboxContext);\n\n if (context == null) {\n throw new Error(\"useListbox must be wrapped in <Listbox />\");\n }\n\n return context;\n};\n","import { createContext } from \"react\";\n\ntype ListboxOptionGroupContextProps = {\n disabled?: boolean;\n};\n\nexport const ListboxOptionGroupContext =\n createContext<ListboxOptionGroupContextProps>({});\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useContext,\n MouseEvent,\n} from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Flex, FlexProps } from \"../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { DataTrackingId } from \"../../types\";\nimport { useListbox } from \"./internal/ListboxContext\";\nimport { useTrackingId } from \"../../hooks\";\nimport { ListboxOptionGroupContext } from \"./internal/ListboxOptionGroupContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Listbox.module.scss\";\n\ntype ItemType = {\n label: string;\n [key: string]: unknown;\n};\n\n/**\n * Props for the ListboxOption component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type ListboxOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** The value of the option */\n value?: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n /** Flex alignment for items */\n alignItems?: FlexProps[\"alignItems\"];\n /** Flex justification for items */\n justifyItems?: FlexProps[\"justifyItems\"];\n /** Flex alignment for content */\n alignContent?: FlexProps[\"alignContent\"];\n /** Flex justification for content */\n justifyContent?: FlexProps[\"justifyContent\"];\n /** Flex place-items property */\n placeItems?: FlexProps[\"placeItems\"];\n /** Flex place-content property */\n placeContent?: FlexProps[\"placeContent\"];\n} & (\n | {\n /** The item object when using items prop */\n item: ItemType;\n /** The display label for the option (optional if item is provided) */\n label?: string;\n }\n | {\n /** The display label for the option */\n label: string;\n /** No item object when using label directly */\n item?: never;\n }\n ) &\n DataTrackingId;\n\n/**\n * ListboxOption component for individual selectable items within a listbox.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <ListboxOption value=\"option1\" label=\"Option 1\" />\n */\nexport const ListboxOption = forwardRef<HTMLLIElement, ListboxOptionProps>(\n (props, ref) => {\n const {\n className,\n children,\n disabled: disabledProp,\n onClick,\n label: labelProp,\n item,\n value,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const {\n setCurrentFocus,\n currentFocus,\n selected,\n setSelected,\n selectionMode,\n onSelectionChange,\n controlled,\n } = useListbox();\n\n const label = labelProp || item?.label || \"\";\n\n const { disabled: groupDisabled } = useContext(ListboxOptionGroupContext);\n const disabled =\n groupDisabled || disabledProp || (item?.disabled as boolean) || false;\n\n const isSelected = () => {\n if (selectionMode === \"single\") {\n if (item) {\n return selected?.label === label;\n }\n return selected === label;\n }\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected)\n ? selected\n : selected\n ? [selected]\n : [];\n if (item) {\n return selectedItems.some(\n (selectedItem) => selectedItem.label === label,\n );\n }\n return selectedItems.includes(label);\n }\n return false;\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n if (disabled) return;\n\n onClick?.(e);\n setCurrentFocus?.(label);\n\n if (selectionMode === \"single\") {\n if (\n (!item && selected === label) ||\n (item && selected?.label === label)\n ) {\n if (!controlled) {\n setSelected?.(undefined);\n }\n onSelectionChange?.(undefined);\n return;\n }\n\n if (item) {\n if (!controlled) {\n setSelected?.(item);\n }\n onSelectionChange?.(item);\n return;\n }\n\n if (!item) {\n if (!controlled) {\n setSelected?.(label);\n }\n onSelectionChange?.(label);\n return;\n }\n }\n\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected)\n ? selected\n : selected\n ? [selected]\n : [];\n if (\n item &&\n selectedItems.some((selectedItem) => selectedItem.label === label)\n ) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem.label !== label,\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n\n if (!item && selectedItems.includes(label)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== label,\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n }\n\n if (item) {\n const selectedItemsWithItemAdded = [...selectedItems, item];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n\n if (!item) {\n const selectedItemsWithItemAdded = [...selectedItems, label];\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n };\n\n const data = {\n value: props.value,\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListboxOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const ListboxOptionClassNames = cx(styles[\"option\"], className, {});\n\n return (\n <li // eslint-disable-line jsx-a11y/click-events-have-key-events\n data-tracking-id={trackingId}\n className={ListboxOptionClassNames}\n data-anv=\"listbox-option\"\n role=\"option\"\n aria-disabled={disabled}\n data-focused={currentFocus === label}\n aria-selected={isSelected()}\n id={label}\n onClick={onClickHandler}\n ref={ref}\n value={value ?? label}\n {...rest}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected() ? 1 : 0 }}\n />\n </li>\n );\n },\n);\n\nListboxOption.displayName = \"ListboxOption\";\n","import { KeyboardEvent } from \"react\";\nimport { ListboxContextProps } from \"./ListboxContext\";\n\nexport const scrollToOption = (node: HTMLElement | undefined) => {\n node?.scrollIntoView({\n block: \"nearest\",\n inline: \"center\",\n });\n};\n\nexport const onListboxKeyDown = (\n e: KeyboardEvent<HTMLUListElement>,\n context: ListboxContextProps<any>,\n) => {\n const {\n options,\n currentFocus,\n selectionMode,\n onSelectionChange,\n selected,\n setSelected,\n items,\n controlled,\n } = context;\n\n if (!options) return;\n\n const currentNode = Array.from(options).find(\n (node) => node.id === currentFocus,\n ) as HTMLElement;\n\n const currentIndex = Array.from(options).indexOf(currentNode);\n\n switch (e.code) {\n case \"ArrowDown\":\n e.preventDefault();\n if (currentIndex === options.length - 1) {\n goTo(options[0], 0, context);\n } else {\n goTo(options[currentIndex + 1], currentIndex + 1, context);\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (currentIndex === 0) {\n goTo(options[options.length - 1], options.length - 1, context);\n } else {\n goTo(options[currentIndex - 1], currentIndex - 1, context);\n }\n break;\n case \"Home\":\n e.preventDefault();\n goTo(options[0], 0, context);\n break;\n case \"End\":\n e.preventDefault();\n goTo(options[options.length - 1], options.length - 1, context);\n break;\n\n case \"Enter\":\n case \"Space\":\n e.preventDefault();\n\n if (!currentFocus) return;\n if (controlled) return;\n\n if (selectionMode === \"single\") {\n if (\n typeof selected === \"object\"\n ? selected.label === currentFocus\n : selected === currentFocus\n ) {\n setSelected?.(undefined);\n onSelectionChange?.(undefined);\n return;\n }\n\n if (items) {\n const enabledItems = items.filter((item) => !(item as any)?.disabled);\n setSelected?.(enabledItems[currentIndex]);\n onSelectionChange?.(enabledItems[currentIndex]);\n return;\n }\n\n if (!items) {\n setSelected?.(currentFocus);\n onSelectionChange?.(currentFocus);\n return;\n }\n }\n\n if (selectionMode === \"multiple\") {\n const selectedItems = Array.isArray(selected) ? selected : [selected];\n\n if (items) {\n const focusedItem = items.find(\n (item) => (item as any).label === currentFocus,\n );\n\n if (selectedItems.includes(focusedItem)) {\n const selectedItemsWithItemRemoved = selectedItems.filter(\n (selectedItem) => selectedItem !== focusedItem,\n );\n setSelected?.(selectedItemsWithItemRemoved);\n onSelectionChange?.(selectedItemsWithItemRemoved);\n return;\n } else {\n const selectedItemsWithItemAdded = [...selectedItems, focusedItem];\n\n setSelected?.(selectedItemsWithItemAdded);\n onSelectionChange?.(selectedItemsWithItemAdded);\n return;\n }\n }\n\n if (!items) {\n if (selectedItems.includes(currentFocus)) {\n setSelected?.(\n selectedItems.filter((item) => item !== currentFocus),\n );\n onSelectionChange?.(\n selectedItems.filter((item) => item !== currentFocus),\n );\n return;\n }\n setSelected?.([...selectedItems, currentFocus]);\n onSelectionChange?.([...selectedItems, currentFocus]);\n }\n }\n break;\n\n default:\n break;\n }\n};\n\nconst goTo = (\n option: HTMLElement,\n index: number,\n context: ListboxContextProps<any>,\n) => {\n const {\n setCurrentFocus,\n setSelected,\n selectionMode,\n disableAutoSelectOnFocus,\n onSelectionChange,\n items,\n controlled,\n } = context;\n\n scrollToOption(option);\n if (disableAutoSelectOnFocus || selectionMode === \"multiple\") {\n setCurrentFocus(option?.id);\n return;\n }\n\n setCurrentFocus(option?.id);\n\n if (controlled) return;\n\n if (items) {\n const enabledItems = items.filter((item) => !(item as any)?.disabled);\n setSelected(enabledItems[index]);\n onSelectionChange?.(enabledItems[index]);\n } else {\n setSelected(option?.id);\n onSelectionChange?.(option?.id);\n }\n};\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { Text } from \"../Text\";\nimport { ListboxOptionGroupContext } from \"./internal/ListboxOptionGroupContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./Listbox.module.scss\";\n\n/**\n * Props for the ListboxOptionGroup component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListboxOptionGroupProps = ComponentPropsWithoutRef<\"div\"> & {\n /** Whether the group is disabled */\n disabled?: boolean;\n /** The label for the option group */\n label: string;\n};\n\n/**\n * ListboxOptionGroup component for grouping related options within a listbox.\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <ListboxOptionGroup label=\"Fruits\">\n * <ListboxOption value=\"apple\">Apple</ListboxOption>\n * <ListboxOption value=\"banana\">Banana</ListboxOption>\n * </ListboxOptionGroup>\n */\nexport const ListboxOptionGroup = forwardRef<\n HTMLDivElement,\n ListboxOptionGroupProps\n>((props, ref) => {\n const { className, children, disabled, label, ...rest } = props;\n\n const optionGroupCx = cx(styles[\"option-group\"], className);\n\n const labelCx = cx(styles[\"label\"], {\n [styles[\"disabled\"]]: disabled,\n });\n\n return (\n <ListboxOptionGroupContext.Provider value={{ disabled }}>\n <div\n data-anv=\"listbox-option-group\"\n className={optionGroupCx}\n ref={ref}\n {...rest}\n >\n <Text variant=\"eyebrow\" className={labelCx}>\n {label}\n </Text>\n\n {children}\n </div>\n </ListboxOptionGroupContext.Provider>\n );\n});\n\nListboxOptionGroup.displayName = \"ListboxOptionGroup\";\n","import {\n Ref,\n forwardRef,\n ReactNode,\n ComponentPropsWithoutRef,\n useRef,\n useState,\n useEffect,\n KeyboardEvent,\n FocusEvent,\n useMemo,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { ListboxOption } from \"./ListboxOption\";\nimport { ListboxContext, ListboxContextProps } from \"./internal/ListboxContext\";\nimport { onListboxKeyDown, scrollToOption } from \"./internal/utils\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { ListboxOptionGroup } from \"./ListboxOptionGroup\";\n\nimport cx from \"classnames\";\nimport styles from \"./Listbox.module.scss\";\nimport { useLayoutPropsUtil, useTypeAhead } from \"../../internal/hooks\";\n\n/**\n * Represents an item in the listbox with a label and optional disabled state.\n * @template T - The type of additional properties for the item\n */\nexport type ListboxItemType<T> = T & {\n /** The display label for the item */\n label: string;\n /** Whether the item is disabled and cannot be selected */\n disabled?: boolean;\n};\n\n/**\n * Props for single selection mode without items array\n */\ntype SingleWithoutItems = {\n /** Selection mode for single item selection */\n selectionMode?: \"single\";\n /** Whether to disable automatic selection when focusing on an option */\n disableAutoSelectOnFocus?: boolean;\n /** Currently selected item (controlled) */\n selected?: string;\n /** Default selected item (uncontrolled) */\n defaultSelected?: string;\n /** Callback when selection changes */\n onSelectionChange?: (selected: string | undefined) => void;\n /** Items array - not allowed in this mode */\n items?: never;\n /** Child elements to render */\n children: ReactNode;\n};\n\n/**\n * Props for multiple selection mode without items array\n */\ntype MultipleWithoutItems = {\n /** Selection mode for multiple item selection */\n selectionMode: \"multiple\";\n /** Auto-select on focus is not available in multiple mode */\n disableAutoSelectOnFocus?: never;\n /** Currently selected items (controlled) */\n selected?: string[];\n /** Default selected items (uncontrolled) */\n defaultSelected?: string[];\n /** Callback when selection changes */\n onSelectionChange?: (selected: string[] | undefined) => void;\n /** Items array - not allowed in this mode */\n items?: never;\n /** Child elements to render */\n children: ReactNode;\n};\n\n/**\n * Props for single selection mode with items array\n * @template T - The type of additional properties for items\n */\ntype SingleWithItems<T> = {\n /** Selection mode for single item selection */\n selectionMode?: \"single\";\n /** Whether to disable automatic selection when focusing on an option */\n disableAutoSelectOnFocus?: boolean;\n /** Currently selected item (controlled) */\n selected?: ListboxItemType<T>;\n /** Default selected item (uncontrolled) */\n defaultSelected?: ListboxItemType<T>;\n /** Callback when selection changes */\n onSelectionChange?: (selected: ListboxItemType<T> | undefined) => void;\n /** Array of items to render */\n items: ListboxItemType<T>[];\n /** Optional render function for items */\n children?: ({ items }: { items: ListboxItemType<T>[] }) => ReactNode;\n};\n\n/**\n * Props for multiple selection mode with items array\n * @template T - The type of additional properties for items\n */\ntype MultipleWithItems<T> = {\n /** Selection mode for multiple item selection */\n selectionMode?: \"multiple\";\n /** Auto-select on focus is not available in multiple mode */\n disableAutoSelectOnFocus?: never;\n /** Currently selected items (controlled) */\n selected?: ListboxItemType<T>[];\n /** Default selected items (uncontrolled) */\n defaultSelected?: ListboxItemType<T>[];\n /** Callback when selection changes */\n onSelectionChange?: (selected: ListboxItemType<T>[] | undefined) => void;\n /** Array of items to render */\n items: ListboxItemType<T>[];\n /** Optional render function for items */\n children?: ({ items }: { items: ListboxItemType<T>[] }) => ReactNode;\n};\n\n/**\n * Props for the Listbox component\n * @template T - The type of additional properties for items\n * @extends ComponentPropsWithoutRef<\"ul\">\n * @extends LayoutUtilProps\n */\nexport type ListboxProps<T> = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps &\n (\n | SingleWithoutItems\n | MultipleWithoutItems\n | SingleWithItems<T>\n | MultipleWithItems<T>\n );\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nconst ListboxElement = function <T>(\n props: ListboxProps<T>,\n ref: Ref<HTMLUListElement>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n selectionMode = \"single\",\n items,\n children,\n onKeyDown,\n onFocus,\n onSelectionChange,\n selected: selectedProp,\n defaultSelected,\n disableAutoSelectOnFocus,\n style,\n ...rest\n } = componentProps;\n\n const listboxRef = useRef<HTMLUListElement>(null);\n const [selected, setSelected] = useState<ListboxProps<T>[\"defaultSelected\"]>(\n selectedProp || defaultSelected,\n );\n const [options, setOptions] = useState<NodeListOf<HTMLElement>>();\n const [typeAhead, updateTypeAhead] = useTypeAhead();\n const [currentFocus, setCurrentFocus] = useState<\n ListboxContextProps<T>[\"currentFocus\"]\n >(\n Array.isArray(selected)\n ? typeof selected[0] === \"object\"\n ? (selected as ListboxItemType<T>[])[0].label\n : (selected as string[])[0]\n : typeof selected === \"object\"\n ? (selected as ListboxItemType<T>)?.label\n : (selected as string),\n );\n\n const ListboxClassNames = cx(styles[\"listbox\"], className, {});\n\n const controlled = selectedProp !== undefined;\n\n useEffect(() => {\n if (listboxRef.current) {\n setOptions(\n listboxRef.current.querySelectorAll(\n \"[role=option]:not([aria-disabled='true'])\",\n ),\n );\n }\n }, [items, listboxRef, selectionMode]);\n\n useEffect(\n () => {\n if (\"selected\" in componentProps) {\n setSelected(selectedProp);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selectedProp],\n );\n\n useEffect(() => {\n if (!typeAhead.length) {\n return;\n }\n const lowerTypeAhead = typeAhead.toLowerCase();\n const nodes =\n options &&\n Array.from(options).filter((node) =>\n node.innerText.toLowerCase().startsWith(lowerTypeAhead),\n );\n\n if (!nodes?.length) {\n return;\n }\n\n let node = nodes[0];\n\n if (lowerTypeAhead.length === 1 && nodes.length > 1) {\n // Select next matching item on first key press if the list of matches contains our current selection WITH looping\n const focusIndex = currentFocus\n ? nodes.map((node) => node.id).indexOf(currentFocus)\n : -1;\n if (focusIndex > -1) {\n let nextFocusIndex = focusIndex + 1;\n if (nextFocusIndex === nodes.length) {\n nextFocusIndex = 0;\n }\n node = nodes[nextFocusIndex];\n }\n }\n\n setCurrentFocus(node.id);\n scrollToOption(node);\n\n if (controlled) return;\n\n if (selectionMode === \"single\") {\n if (items) {\n if (disableAutoSelectOnFocus) {\n const focusedItem = items.find(\n (item) => (item as ListboxItemType<T>).label === currentFocus,\n );\n setSelected?.(focusedItem);\n onSelectionChange?.(focusedItem);\n }\n return;\n }\n\n if (!items) {\n if (disableAutoSelectOnFocus) {\n setSelected(node.id);\n onSelectionChange?.(node.id);\n }\n return;\n }\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [typeAhead]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLUListElement>) => {\n onKeyDown?.(e);\n\n if (new RegExp(/^[a-zA-Z0-9]$/i).test(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n updateTypeAhead(e.key);\n return;\n }\n\n onListboxKeyDown(e, {\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n items,\n });\n };\n\n const onFocusHandler = (e: FocusEvent<HTMLUListElement>) => {\n onFocus?.(e);\n\n if (!options) return;\n\n if (selectionMode === \"single\") {\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus,\n );\n\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n if (currentFocusExists) {\n setCurrentFocus(selected as string);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus((selected as ListboxItemType<T>)?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n\n if (selectionMode === \"multiple\") {\n const selectedArr = Array.isArray(selected) ? selected : [selected];\n const currentFocusExists = Array.from(options).some(\n (item) => item.id === currentFocus,\n );\n\n if (currentFocus && currentFocusExists) return;\n if (!items) {\n console.log({ currentFocus, currentFocusExists });\n if (currentFocusExists) {\n setCurrentFocus((selectedArr as ListboxItemType<T>[])[0].label);\n return;\n }\n setCurrentFocus(options[0].id);\n return;\n }\n if (currentFocusExists) {\n setCurrentFocus((selectedArr as ListboxItemType<T>[])[0]?.label);\n return;\n }\n setCurrentFocus(items?.[0].label);\n return;\n }\n\n setCurrentFocus(options[0].id);\n };\n\n const mergeRef = useMergeRefs([ref, listboxRef]);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const value = useMemo(\n () => ({\n setCurrentFocus,\n currentFocus,\n setSelected,\n selected,\n selectionMode,\n items,\n options,\n onSelectionChange,\n disableAutoSelectOnFocus: !!disableAutoSelectOnFocus,\n controlled,\n }),\n [\n currentFocus,\n disableAutoSelectOnFocus,\n onSelectionChange,\n options,\n selected,\n selectionMode,\n items,\n controlled,\n ],\n );\n\n return (\n <ListboxContext.Provider value={value}>\n <ul\n tabIndex={0}\n role=\"listbox\"\n style={styleCombined}\n aria-multiselectable={selectionMode === \"multiple\" ? \"true\" : \"false\"}\n aria-activedescendant={currentFocus}\n className={ListboxClassNames}\n data-anv=\"listbox\"\n onKeyDown={onKeyDownHandler}\n onFocus={onFocusHandler}\n {...rest}\n ref={mergeRef}\n >\n {items ? children?.({ items }) : children}\n </ul>\n </ListboxContext.Provider>\n );\n};\n\n/**\n * Listbox component for selecting one or more items from a list\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys and type-ahead\n * - Optional auto-selection on focus\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Supports custom item rendering\n * - Option grouping for organization\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @template T - The type of additional properties for items\n * @example\n * <Listbox selectionMode=\"single\" onSelectionChange={handleSelection}>\n * <Listbox.Option value=\"option1\">Option 1</Listbox.Option>\n * <Listbox.Option value=\"option2\">Option 2</Listbox.Option>\n * </Listbox>\n */\nexport const Listbox = Object.assign(\n forwardRef(ListboxElement) as <T>(\n props: ListboxProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListboxElement>,\n {\n /**\n * ListboxOption component for individual selectable items within a listbox\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Automatic tracking ID generation for analytics\n * - Accessible with screen reader support\n *\n * @example\n * <Listbox.Option value=\"option1\" label=\"Option 1\" />\n */\n Option: ListboxOption,\n /**\n * ListboxOptionGroup component for grouping related options within a listbox\n *\n * Features:\n * - Groups related options with a descriptive label\n * - Maintains proper ARIA structure for accessibility\n * - Supports keyboard navigation within groups\n * - Visual separation of option categories\n *\n * @example\n * <Listbox.OptionGroup label=\"Fruits\">\n * <Listbox.Option value=\"apple\">Apple</Listbox.Option>\n * <Listbox.Option value=\"banana\">Banana</Listbox.Option>\n * </Listbox.OptionGroup>\n */\n OptionGroup: ListboxOptionGroup,\n },\n);\n"],"names":["styles","Check","node"],"mappings":";;;;;;;;;;;;AAgBO,MAAM,YAAA,GAAe,CAC1B,OAAA,GAAU,GAAA,KAC2B;AACrC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,EAAE,CAAA;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,YAAA,CAAa,EAAE,GAAG,OAAO,CAAA;AACxD,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,SAAA,EAAW,OAAO,CAAC,CAAA;AAEvB,EAAA,MAAM,kBAAkB,CAAC,IAAA,KAAiB,aAAa,CAAC,IAAA,KAAS,OAAO,IAAI,CAAA;AAE5E,EAAA,OAAO,CAAC,WAAW,eAAe,CAAA;AACpC,CAAA;;ACMO,MAAM,cAAA,GAAiB,aAAA;AAAA,EAC5B;AACF,CAAA;AAOO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,OAAA,GAAU,WAAW,cAAc,CAAA;AAEzC,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,EAC7D;AAEA,EAAA,OAAO,OAAA;AACT,CAAA;;AC9CO,MAAM,yBAAA,GACX,aAAA,CAA8C,EAAE,CAAA;;ACgE3C,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,OAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM;AAAA,MACJ,eAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,QACE,UAAA,EAAW;AAEf,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,IAAA,EAAM,KAAA,IAAS,EAAA;AAE1C,IAAA,MAAM,EAAE,QAAA,EAAU,aAAA,EAAc,GAAI,WAAW,yBAAyB,CAAA;AACxE,IAAA,MAAM,QAAA,GACJ,aAAA,IAAiB,YAAA,IAAiB,IAAA,EAAM,QAAA,IAAwB,KAAA;AAElE,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,OAAO,UAAU,KAAA,KAAU,KAAA;AAAA,QAC7B;AACA,QAAA,OAAO,QAAA,KAAa,KAAA;AAAA,MACtB;AACA,MAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GACxC,WACA,QAAA,GACE,CAAC,QAAQ,CAAA,GACT,EAAC;AACP,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,OAAO,aAAA,CAAc,IAAA;AAAA,YACnB,CAAC,YAAA,KAAiB,YAAA,CAAa,KAAA,KAAU;AAAA,WAC3C;AAAA,QACF;AACA,QAAA,OAAO,aAAA,CAAc,SAAS,KAAK,CAAA;AAAA,MACrC;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAiC;AACvD,MAAA,IAAI,QAAA,EAAU;AAEd,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,eAAA,GAAkB,KAAK,CAAA;AAEvB,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,IACG,CAAC,IAAA,IAAQ,QAAA,KAAa,SACtB,IAAA,IAAQ,QAAA,EAAU,UAAU,KAAA,EAC7B;AACA,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,WAAA,GAAc,MAAS,CAAA;AAAA,UACzB;AACA,UAAA,iBAAA,GAAoB,MAAS,CAAA;AAC7B,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,WAAA,GAAc,IAAI,CAAA;AAAA,UACpB;AACA,UAAA,iBAAA,GAAoB,IAAI,CAAA;AACxB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,IAAI,CAAC,UAAA,EAAY;AACf,YAAA,WAAA,GAAc,KAAK,CAAA;AAAA,UACrB;AACA,UAAA,iBAAA,GAAoB,KAAK,CAAA;AACzB,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GACxC,WACA,QAAA,GACE,CAAC,QAAQ,CAAA,GACT,EAAC;AACP,QAAA,IACE,IAAA,IACA,cAAc,IAAA,CAAK,CAAC,iBAAiB,YAAA,CAAa,KAAA,KAAU,KAAK,CAAA,EACjE;AACA,UAAA,MAAM,+BAA+B,aAAA,CAAc,MAAA;AAAA,YACjD,CAAC,YAAA,KAAiB,YAAA,CAAa,KAAA,KAAU;AAAA,WAC3C;AACA,UAAA,WAAA,GAAc,4BAA4B,CAAA;AAC1C,UAAA,iBAAA,GAAoB,4BAA4B,CAAA;AAChD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,IAAA,IAAQ,aAAA,CAAc,QAAA,CAAS,KAAK,CAAA,EAAG;AAC1C,UAAA,MAAM,+BAA+B,aAAA,CAAc,MAAA;AAAA,YACjD,CAAC,iBAAiB,YAAA,KAAiB;AAAA,WACrC;AACA,UAAA,WAAA,GAAc,4BAA4B,CAAA;AAC1C,UAAA,iBAAA,GAAoB,4BAA4B,CAAA;AAChD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,MAAM,0BAAA,GAA6B,CAAC,GAAG,aAAA,EAAe,IAAI,CAAA;AAC1D,UAAA,WAAA,GAAc,0BAA0B,CAAA;AACxC,UAAA,iBAAA,GAAoB,0BAA0B,CAAA;AAC9C,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,MAAM,0BAAA,GAA6B,CAAC,GAAG,aAAA,EAAe,KAAK,CAAA;AAC3D,UAAA,WAAA,GAAc,0BAA0B,CAAA;AACxC,UAAA,iBAAA,GAAoB,0BAA0B,CAAA;AAC9C,UAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,OAAO,MAAA,IAAU,KAAA,GAAQ,KAAA,CAAM,IAAA,EAAM,QAAQ,KAAA,CAAM;AAAA,KACrD;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,eAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,0BAA0B,EAAA,CAAGA,aAAA,CAAO,QAAQ,CAAA,EAAG,SAAA,EAAW,EAAE,CAAA;AAElE,IAAA,uBACE,IAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,kBAAA,EAAkB,UAAA;AAAA,QAClB,SAAA,EAAW,uBAAA;AAAA,QACX,UAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAe,QAAA;AAAA,QACf,gBAAc,YAAA,KAAiB,KAAA;AAAA,QAC/B,iBAAe,UAAA,EAAW;AAAA,QAC1B,EAAA,EAAI,KAAA;AAAA,QACJ,OAAA,EAAS,cAAA;AAAA,QACT,GAAA;AAAA,QACA,OAAO,KAAA,IAAS,KAAA;AAAA,QACf,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWA,cAAO,UAAU,CAAA;AAAA,cAC5B,IAAA,EAAM,CAAA;AAAA,cACN,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cACA,cAAA;AAAA,cACA,UAAA;AAAA,cACA,YAAA;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,0BACA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAW,IAAA;AAAA,cACX,GAAA,EAAKC,QAAA;AAAA,cACL,OAAA,EAAO,IAAA;AAAA,cACP,SAAA,EAAWD,cAAO,MAAM,CAAA;AAAA,cACxB,OAAO,EAAE,OAAA,EAAS,UAAA,EAAW,GAAI,IAAI,CAAA;AAAE;AAAA;AACzC;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;ACjQrB,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAkC;AAC/D,EAAA,IAAA,EAAM,cAAA,CAAe;AAAA,IACnB,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACT,CAAA;AACH,CAAA;AAEO,MAAM,gBAAA,GAAmB,CAC9B,CAAA,EACA,OAAA,KACG;AACH,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,OAAA;AAEJ,EAAA,IAAI,CAAC,OAAA,EAAS;AAEd,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,IACtC,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO;AAAA,GACxB;AAEA,EAAA,MAAM,eAAe,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,QAAQ,WAAW,CAAA;AAE5D,EAAA,QAAQ,EAAE,IAAA;AAAM,IACd,KAAK,WAAA;AACH,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,YAAA,KAAiB,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACvC,QAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,CAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,QAAQ,YAAA,GAAe,CAAC,CAAA,EAAG,YAAA,GAAe,GAAG,OAAO,CAAA;AAAA,MAC3D;AACA,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,iBAAiB,CAAA,EAAG;AACtB,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAQ,MAAA,GAAS,CAAC,GAAG,OAAA,CAAQ,MAAA,GAAS,GAAG,OAAO,CAAA;AAAA,MAC/D,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,QAAQ,YAAA,GAAe,CAAC,CAAA,EAAG,YAAA,GAAe,GAAG,OAAO,CAAA;AAAA,MAC3D;AACA,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,CAAA;AAC3B,MAAA;AAAA,IACF,KAAK,KAAA;AACH,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAA,CAAK,OAAA,CAAQ,QAAQ,MAAA,GAAS,CAAC,GAAG,OAAA,CAAQ,MAAA,GAAS,GAAG,OAAO,CAAA;AAC7D,MAAA;AAAA,IAEF,KAAK,OAAA;AAAA,IACL,KAAK,OAAA;AACH,MAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,IAAI,UAAA,EAAY;AAEhB,MAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,QAAA,IACE,OAAO,QAAA,KAAa,QAAA,GAChB,SAAS,KAAA,KAAU,YAAA,GACnB,aAAa,YAAA,EACjB;AACA,UAAA,WAAA,GAAc,MAAS,CAAA;AACvB,UAAA,iBAAA,GAAoB,MAAS,CAAA;AAC7B,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,CAAE,MAAc,QAAQ,CAAA;AACpE,UAAA,WAAA,GAAc,YAAA,CAAa,YAAY,CAAC,CAAA;AACxC,UAAA,iBAAA,GAAoB,YAAA,CAAa,YAAY,CAAC,CAAA;AAC9C,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,WAAA,GAAc,YAAY,CAAA;AAC1B,UAAA,iBAAA,GAAoB,YAAY,CAAA;AAChC,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,QAAA,MAAM,gBAAgB,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,GAAW,CAAC,QAAQ,CAAA;AAEpE,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,cAAc,KAAA,CAAM,IAAA;AAAA,YACxB,CAAC,IAAA,KAAU,IAAA,CAAa,KAAA,KAAU;AAAA,WACpC;AAEA,UAAA,IAAI,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA,EAAG;AACvC,YAAA,MAAM,+BAA+B,aAAA,CAAc,MAAA;AAAA,cACjD,CAAC,iBAAiB,YAAA,KAAiB;AAAA,aACrC;AACA,YAAA,WAAA,GAAc,4BAA4B,CAAA;AAC1C,YAAA,iBAAA,GAAoB,4BAA4B,CAAA;AAChD,YAAA;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAM,0BAAA,GAA6B,CAAC,GAAG,aAAA,EAAe,WAAW,CAAA;AAEjE,YAAA,WAAA,GAAc,0BAA0B,CAAA;AACxC,YAAA,iBAAA,GAAoB,0BAA0B,CAAA;AAC9C,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,IAAI,aAAA,CAAc,QAAA,CAAS,YAAY,CAAA,EAAG;AACxC,YAAA,WAAA;AAAA,cACE,aAAA,CAAc,MAAA,CAAO,CAAC,IAAA,KAAS,SAAS,YAAY;AAAA,aACtD;AACA,YAAA,iBAAA;AAAA,cACE,aAAA,CAAc,MAAA,CAAO,CAAC,IAAA,KAAS,SAAS,YAAY;AAAA,aACtD;AACA,YAAA;AAAA,UACF;AACA,UAAA,WAAA,GAAc,CAAC,GAAG,aAAA,EAAe,YAAY,CAAC,CAAA;AAC9C,UAAA,iBAAA,GAAoB,CAAC,GAAG,aAAA,EAAe,YAAY,CAAC,CAAA;AAAA,QACtD;AAAA,MACF;AACA,MAAA;AAGA;AAEN,CAAA;AAEA,MAAM,IAAA,GAAO,CACX,MAAA,EACA,KAAA,EACA,OAAA,KACG;AACH,EAAA,MAAM;AAAA,IACJ,eAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,OAAA;AAEJ,EAAA,cAAA,CAAe,MAAM,CAAA;AACrB,EAAA,IAAI,wBAAA,IAA4B,kBAAkB,UAAA,EAAY;AAC5D,IAAA,eAAA,CAAgB,QAAQ,EAAE,CAAA;AAC1B,IAAA;AAAA,EACF;AAEA,EAAA,eAAA,CAAgB,QAAQ,EAAE,CAAA;AAE1B,EAAA,IAAI,UAAA,EAAY;AAEhB,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS,CAAE,MAAc,QAAQ,CAAA;AACpE,IAAA,WAAA,CAAY,YAAA,CAAa,KAAK,CAAC,CAAA;AAC/B,IAAA,iBAAA,GAAoB,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,EACzC,CAAA,MAAO;AACL,IAAA,WAAA,CAAY,QAAQ,EAAE,CAAA;AACtB,IAAA,iBAAA,GAAoB,QAAQ,EAAE,CAAA;AAAA,EAChC;AACF,CAAA;;ACxIO,MAAM,kBAAA,GAAqB,UAAA,CAGhC,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,UAAU,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AAE1D,EAAA,MAAM,aAAA,GAAgB,EAAA,CAAGA,aAAA,CAAO,cAAc,GAAG,SAAS,CAAA;AAE1D,EAAA,MAAM,OAAA,GAAU,EAAA,CAAGA,aAAA,CAAO,OAAO,CAAA,EAAG;AAAA,IAClC,CAACA,aAAA,CAAO,UAAU,CAAC,GAAG;AAAA,GACvB,CAAA;AAED,EAAA,2BACG,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,EAAE,UAAS,EACpD,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAS,sBAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAW,SAChC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,QAEC;AAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,oBAAA;;ACyFjC,MAAM,cAAA,GAAiB,SACrB,KAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,aAAA,GAAgB,QAAA;AAAA,IAChB,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA,EAAU,YAAA;AAAA,IACV,eAAA;AAAA,IACA,wBAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,UAAA,GAAa,OAAyB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA;AAAA,IAC9B,YAAA,IAAgB;AAAA,GAClB;AACA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,QAAA,EAAkC;AAChE,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAI,YAAA,EAAa;AAClD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAAA;AAAA,IAGtC,KAAA,CAAM,QAAQ,QAAQ,CAAA,GAClB,OAAO,QAAA,CAAS,CAAC,MAAM,QAAA,GACpB,QAAA,CAAkC,CAAC,CAAA,CAAE,KAAA,GACrC,SAAsB,CAAC,CAAA,GAC1B,OAAO,QAAA,KAAa,QAAA,GACjB,UAAiC,KAAA,GACjC;AAAA,GACT;AAEA,EAAA,MAAM,oBAAoB,EAAA,CAAGA,aAAA,CAAO,SAAS,CAAA,EAAG,SAAA,EAAW,EAAE,CAAA;AAE7D,EAAA,MAAM,aAAa,YAAA,KAAiB,MAAA;AAEpC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,UAAA;AAAA,QACE,WAAW,OAAA,CAAQ,gBAAA;AAAA,UACjB;AAAA;AACF,OACF;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,UAAA,EAAY,aAAa,CAAC,CAAA;AAErC,EAAA,SAAA;AAAA,IACE,MAAM;AACJ,MAAA,IAAI,cAAc,cAAA,EAAgB;AAChC,QAAA,WAAA,CAAY,YAAY,CAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA;AAAA,IAEA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAU,MAAA,EAAQ;AACrB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,cAAA,GAAiB,UAAU,WAAA,EAAY;AAC7C,IAAA,MAAM,KAAA,GACJ,OAAA,IACA,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA;AAAA,MAAO,CAACE,KAAAA,KAC1BA,KAAAA,CAAK,UAAU,WAAA,EAAY,CAAE,WAAW,cAAc;AAAA,KACxD;AAEF,IAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,GAAO,MAAM,CAAC,CAAA;AAElB,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,SAAS,CAAA,EAAG;AAEnD,MAAA,MAAM,UAAA,GAAa,YAAA,GACf,KAAA,CAAM,GAAA,CAAI,CAACA,KAAAA,KAASA,KAAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,YAAY,CAAA,GACjD,EAAA;AACJ,MAAA,IAAI,aAAa,EAAA,EAAI;AACnB,QAAA,IAAI,iBAAiB,UAAA,GAAa,CAAA;AAClC,QAAA,IAAI,cAAA,KAAmB,MAAM,MAAA,EAAQ;AACnC,UAAA,cAAA,GAAiB,CAAA;AAAA,QACnB;AACA,QAAA,IAAA,GAAO,MAAM,cAAc,CAAA;AAAA,MAC7B;AAAA,IACF;AAEA,IAAA,eAAA,CAAgB,KAAK,EAAE,CAAA;AACvB,IAAA,cAAA,CAAe,IAAI,CAAA;AAEnB,IAAA,IAAI,UAAA,EAAY;AAEhB,IAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,IAAI,wBAAA,EAA0B;AAC5B,UAAA,MAAM,cAAc,KAAA,CAAM,IAAA;AAAA,YACxB,CAAC,IAAA,KAAU,IAAA,CAA4B,KAAA,KAAU;AAAA,WACnD;AACA,UAAA,WAAA,GAAc,WAAW,CAAA;AACzB,UAAA,iBAAA,GAAoB,WAAW,CAAA;AAAA,QACjC;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,IAAI,wBAAA,EAA0B;AAC5B,UAAA,WAAA,CAAY,KAAK,EAAE,CAAA;AACnB,UAAA,iBAAA,GAAoB,KAAK,EAAE,CAAA;AAAA,QAC7B;AACA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EAGF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAuC;AAC/D,IAAA,SAAA,GAAY,CAAC,CAAA;AAEb,IAAA,IAAI,IAAI,MAAA,CAAO,gBAAgB,EAAE,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG;AAC5C,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,eAAA,CAAgB,EAAE,GAAG,CAAA;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,gBAAA,CAAiB,CAAA,EAAG;AAAA,MAClB,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA,wBAAA,EAA0B,CAAC,CAAC,wBAAA;AAAA,MAC5B;AAAA,KACD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAoC;AAC1D,IAAA,OAAA,GAAU,CAAC,CAAA;AAEX,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,IAAI,kBAAkB,QAAA,EAAU;AAC9B,MAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,QAC7C,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO;AAAA,OACxB;AAEA,MAAA,IAAI,gBAAgB,kBAAA,EAAoB;AACxC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,IAAI,kBAAA,EAAoB;AACtB,UAAA,eAAA,CAAgB,QAAkB,CAAA;AAClC,UAAA;AAAA,QACF;AACA,QAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAE,CAAA;AAC7B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,eAAA,CAAiB,UAAiC,KAAK,CAAA;AACvD,QAAA;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAK,CAAA;AAChC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,kBAAkB,UAAA,EAAY;AAChC,MAAA,MAAM,cAAc,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GAAI,QAAA,GAAW,CAAC,QAAQ,CAAA;AAClE,MAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA;AAAA,QAC7C,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO;AAAA,OACxB;AAEA,MAAA,IAAI,gBAAgB,kBAAA,EAAoB;AACxC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAA,CAAQ,GAAA,CAAI,EAAE,YAAA,EAAc,kBAAA,EAAoB,CAAA;AAChD,QAAA,IAAI,kBAAA,EAAoB;AACtB,UAAA,eAAA,CAAiB,WAAA,CAAqC,CAAC,CAAA,CAAE,KAAK,CAAA;AAC9D,UAAA;AAAA,QACF;AACA,QAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAE,CAAA;AAC7B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,kBAAA,EAAoB;AACtB,QAAA,eAAA,CAAiB,WAAA,CAAqC,CAAC,CAAA,EAAG,KAAK,CAAA;AAC/D,QAAA;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAK,CAAA;AAChC,MAAA;AAAA,IACF;AAEA,IAAA,eAAA,CAAgB,OAAA,CAAQ,CAAC,CAAA,CAAE,EAAE,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,YAAA,CAAa,CAAC,GAAA,EAAK,UAAU,CAAC,CAAA;AAE/C,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA,wBAAA,EAA0B,CAAC,CAAC,wBAAA;AAAA,MAC5B;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,YAAA;AAAA,MACA,wBAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,cAAA,CAAe,QAAA,EAAf,EAAwB,KAAA,EACvB,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,CAAA;AAAA,MACV,IAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAO,aAAA;AAAA,MACP,sBAAA,EAAsB,aAAA,KAAkB,UAAA,GAAa,MAAA,GAAS,OAAA;AAAA,MAC9D,uBAAA,EAAuB,YAAA;AAAA,MACvB,SAAA,EAAW,iBAAA;AAAA,MACX,UAAA,EAAS,SAAA;AAAA,MACT,SAAA,EAAW,gBAAA;AAAA,MACX,OAAA,EAAS,cAAA;AAAA,MACR,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,QAAA;AAAA,MAEJ,QAAA,EAAA,KAAA,GAAQ,QAAA,GAAW,EAAE,KAAA,EAAO,CAAA,GAAI;AAAA;AAAA,GACnC,EACF,CAAA;AAEJ,CAAA;AAuBO,MAAM,UAAU,MAAA,CAAO,MAAA;AAAA,EAC5B,WAAW,cAAc,CAAA;AAAA,EAGzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcE,MAAA,EAAQ,aAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBR,WAAA,EAAa;AAAA;AAEjB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NumberField-B1hQ8jRn.js","sources":["../src/internal/hooks/usePlatform/usePlatform.ts","../src/internal/hooks/useNumberField/internal/useNumberFieldInputMode.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","../../hammer-icon/mdi/round/add.svg","../../hammer-icon/mdi/round/remove.svg","../src/components/NumberField/NumberField.tsx"],"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 = /iPhone/.test(userAgent) && !(window as any).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","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 maskitoNumberOptionsGenerator,\n maskitoStringifyNumber,\n} from \"@maskito/kit\";\nimport useNumberFieldKeys from \"./internal/useNumberFieldKeys\";\nimport Big from \"big.js\";\nimport { usePrevious } from \"../usePrevious\";\n\nconst DEFAULT_MIN_VALUE = 0;\n// This value is somewhat arbitrary, but it's a large enough value that it shouldn't present any practical issues.\n// If we need to support larger values, we can address that as the need arises.\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: React.InputHTMLAttributes<HTMLInputElement>;\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 // In a situation where the maximum fraction digits is less than the minimum fraction digits,\n // the minimum fraction digits takes precedence over the maximum fraction digits.\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 = maskitoNumberOptionsGenerator(params);\n\n const [isBeginningNegativeEntry, setIsBeginningNegativeEntry] =\n useState(false);\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) return config.onChange?.(null);\n const parsedValue = maskitoParseNumber(value, params);\n const nanSafeValue = isNaN(parsedValue) ? null : parsedValue;\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 useEffect(() => {\n if (previousMinimumFractionDigits === minimumFractionDigits) return;\n // If minimumFractionDigits changes, we need to update the input state.\n // E.g. if the user changes the minimumFractionDigits from 0 to 2, and the value is 10 we need to update the input state to 10.00.\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 if (e.target.value === \"\") {\n setInputValue(null);\n } else {\n setInputValue(e.target.value);\n }\n };\n\n return {\n value: computedValue?.toNumber() ?? null,\n inputRef: combinedInputRef,\n inputProps: {\n value: isBeginningNegativeEntry ? \"-\" : (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","import * as React from \"react\";\nconst SvgAdd = (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: \"M18 13h-5v5c0 .55-.45 1-1 1s-1-.45-1-1v-5H6c-.55 0-1-.45-1-1s.45-1 1-1h5V6c0-.55.45-1 1-1s1 .45 1 1v5h5c.55 0 1 .45 1 1s-.45 1-1 1z\" }));\nexport default SvgAdd;\n","import * as React from \"react\";\nconst SvgRemove = (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: \"M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z\" }));\nexport default SvgRemove;\n","import {\n ReactElement,\n forwardRef,\n ComponentPropsWithoutRef,\n useId,\n useState,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { Spinner } from \"../Spinner\";\nimport textFieldStyles from \"../TextField/TextField.module.scss\";\nimport numberFieldStyles from \"./NumberField.module.scss\";\nimport { Helper, HelperProps } from \"../../internal/components\";\nimport { LayoutUtilProps, Size, DataTrackingId } from \"../../types\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport IconAdd from \"@servicetitan/hammer-icon/mdi/round/add.svg\";\nimport IconRemove from \"@servicetitan/hammer-icon/mdi/round/remove.svg\";\nimport {\n useFocusWithin,\n useLayoutPropsUtil,\n useNumberField,\n} from \"../../internal/hooks\";\nimport { childrenToString } from \"../../internal/functions\";\nimport FieldLabel from \"../FieldLabel\";\nimport { FieldLabelProps } from \"../../internal/types\";\n\nexport type NumberFieldProps = Omit<\n ComponentPropsWithoutRef<\"input\">,\n | \"size\"\n | \"prefix\"\n | \"type\"\n | \"inputMode\"\n | \"value\"\n | \"defaultValue\"\n | \"onFocus\"\n | \"onBlur\"\n | \"onChange\"\n> &\n LayoutUtilProps &\n FieldLabelProps & {\n error?: ReactElement | string | boolean;\n label?: string;\n prefix?: string;\n suffix?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n description?: HelperProps[\"description\"];\n errorAriaLive?: HelperProps[\"errorAriaLive\"];\n hint?: HelperProps[\"hint\"];\n loading?: boolean;\n disabled?: boolean;\n minValue?: number;\n maxValue?: number;\n maximumFractionDigits?: number;\n minimumFractionDigits?: number;\n step?: number;\n value?: number | null;\n defaultValue?: number | null;\n onChange?: (value: number | null) => void;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n hideControls?: boolean;\n } & DataTrackingId;\n\nexport const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n error,\n errorAriaLive: errorAriaLiveProp = \"assertive\",\n defaultValue: defaultValueProp,\n value: valueProp,\n label,\n moreInfo,\n prefix,\n suffix,\n size,\n required,\n onChange: onChangeProp,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n id: idProp,\n description,\n hint,\n loading,\n disabled,\n readOnly,\n labelProps,\n style,\n placeholder,\n minValue,\n maxValue,\n maximumFractionDigits = 0,\n minimumFractionDigits = 0,\n step = 1,\n hideControls = false,\n ...rest\n } = componentProps;\n const numberFieldRef = useRef<HTMLDivElement>(null);\n\n const [openInfo, setOpenInfo] = useState(false);\n const [errorAriaLive, setErrorAriaLive] =\n useState<HelperProps[\"errorAriaLive\"]>(\"off\");\n\n const { props: wrapperProps } = useFocusWithin({\n onFocus: (e) => {\n setOpenInfo(true);\n setErrorAriaLive(errorAriaLiveProp);\n onFocusProp?.(e);\n },\n onBlur: (e) => {\n setOpenInfo(false);\n setErrorAriaLive(\"off\");\n onBlurProp?.(e);\n },\n });\n\n const { inputProps, inputRef, incrementButtonProps, decrementButtonProps } =\n useNumberField({\n minValue,\n maxValue,\n maximumFractionDigits,\n minimumFractionDigits,\n step,\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n label,\n });\n\n const combinedInputRef = useMergeRefs([numberFieldRef, inputRef, ref]);\n\n const labelUid = useId();\n const id = idProp ?? labelUid;\n const prefixUid = useId();\n const suffixUid = useId();\n const helperUid = useId();\n\n const errorMessage = typeof error !== \"boolean\" ? error : undefined;\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const data = {\n label: childrenToString(props.label),\n prefix: childrenToString(props.prefix),\n suffix: childrenToString(props.suffix),\n description: childrenToString(props.description),\n size: props.size,\n minValue: props.minValue,\n maxValue: props.maxValue,\n step: props.step,\n maximumFractionDigits: props.maximumFractionDigits,\n minimumFractionDigits: props.minimumFractionDigits,\n };\n\n const trackingId = useTrackingId({\n name: \"NumberField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"], className)}\n data-anv=\"number-field\"\n style={styleCombined}\n {...wrapperProps}\n >\n {label && (\n <FieldLabel\n moreInfo={moreInfo}\n openMoreInfo={openInfo}\n required={required}\n htmlFor={id}\n {...labelProps}\n >\n {label}\n </FieldLabel>\n )}\n <div\n className={cx(textFieldStyles[\"input-wrapper\"], {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [numberFieldStyles[\"small\"]]: size === \"small\",\n [numberFieldStyles[\"large\"]]: size === \"large\",\n })}\n role=\"presentation\"\n onClick={() => numberFieldRef.current?.focus()}\n >\n {prefix ? (\n <div\n aria-hidden\n className={textFieldStyles[\"prefix\"]}\n id={`prefix${prefixUid}`}\n >\n {prefix}\n </div>\n ) : null}\n <input\n id={id}\n className={cx(textFieldStyles[\"input\"], {\n [textFieldStyles[\"error\"]]: error,\n })}\n data-tracking-id={trackingId}\n {...rest}\n {...inputProps}\n required={required}\n placeholder={placeholder}\n readOnly={readOnly}\n disabled={disabled}\n ref={combinedInputRef}\n aria-label={label ? undefined : placeholder}\n aria-describedby={helperUid}\n aria-invalid={error ? !!error : undefined}\n />\n {loading ? (\n <div\n className={textFieldStyles[\"loading-spinner-wrapper\"]}\n data-testid=\"spinner\"\n >\n <Spinner />\n </div>\n ) : null}\n {suffix ? (\n <div\n className={textFieldStyles[\"suffix\"]}\n aria-hidden\n id={`suffix${suffixUid}`}\n >\n {suffix}\n </div>\n ) : null}\n {!hideControls && !disabled && !readOnly && (\n <div className={numberFieldStyles[\"stepper-buttons\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n {...decrementButtonProps}\n >\n <Icon svg={IconRemove} />\n </Button>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n {...incrementButtonProps}\n >\n <Icon svg={IconAdd} />\n </Button>\n </div>\n )}\n </div>\n {hint || errorMessage || description ? (\n <Helper\n id={helperUid}\n hint={hint}\n showCounter={false}\n errorMessage={errorMessage}\n errorAriaLive={errorAriaLive}\n description={description}\n />\n ) : null}\n </div>\n );\n },\n);\n\nNumberField.displayName = \"NumberField\";\n"],"names":["IconRemove","IconAdd"],"mappings":"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","x_google_ignoreList":[3]}
|