@servicetitan/anvil2 3.0.9 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/{AiMark-CS6MvraM.js → AiMark-D6ScGfyP.js} +7 -7
- package/dist/{AiMark-CS6MvraM.js.map → AiMark-D6ScGfyP.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-CNDLoh6b.js → Alert-Dgq96HR4.js} +4 -4
- package/dist/{Alert-CNDLoh6b.js.map → Alert-Dgq96HR4.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CgTqDU8A.js → Announcement-DXF8slQf.js} +4 -4
- package/dist/{Announcement-CgTqDU8A.js.map → Announcement-DXF8slQf.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-BFK29dL5.js → AnvilProvider-Cw_zTBqJ.js} +5 -5
- package/dist/{AnvilProvider-BFK29dL5.js.map → AnvilProvider-Cw_zTBqJ.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar-Bl-Dxbhf.js → Avatar-CoQcOHWU.js} +2 -2
- package/dist/{Avatar-Bl-Dxbhf.js.map → Avatar-CoQcOHWU.js.map} +1 -1
- package/dist/{Avatar-CdAIJ5VK.js → Avatar-DX96Mxe7.js} +2 -2
- package/dist/{Avatar-CdAIJ5VK.js.map → Avatar-DX96Mxe7.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Badge-DtUI2AEk.js → Badge-BNrYBFiU.js} +2 -2
- package/dist/{Badge-DtUI2AEk.js.map → Badge-BNrYBFiU.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs--Xt6l_2L.js → Breadcrumbs-CklKFLSl.js} +5 -5
- package/dist/{Breadcrumbs--Xt6l_2L.js.map → Breadcrumbs-CklKFLSl.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-C_V2xQAs.js → Button-ChQARW0y.js} +3 -3
- package/dist/{Button-C_V2xQAs.js.map → Button-ChQARW0y.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonCompound-BQb2gfAl.js → ButtonCompound-_0ddykI_.js} +2 -2
- package/dist/{ButtonCompound-BQb2gfAl.js.map → ButtonCompound-_0ddykI_.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-UhLks0vM.js → ButtonLink-CWbYzTTz.js} +3 -3
- package/dist/{ButtonLink-UhLks0vM.js.map → ButtonLink-CWbYzTTz.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-jnDMPSyK.js → ButtonToggle-BVv94C4U.js} +3 -3
- package/dist/{ButtonToggle-jnDMPSyK.js.map → ButtonToggle-BVv94C4U.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-rITorBvD.js → Calendar-DWyW5gvQ.js} +5 -5
- package/dist/{Calendar-rITorBvD.js.map → Calendar-DWyW5gvQ.js.map} +1 -1
- package/dist/{Calendar-5mAxtdNh.js → Calendar-Qlnpl3zR.js} +2 -2
- package/dist/{Calendar-5mAxtdNh.js.map → Calendar-Qlnpl3zR.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Card-fBqg853U.js → Card-Bt0F6RTq.js} +2 -2
- package/dist/{Card-fBqg853U.js.map → Card-Bt0F6RTq.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-BYWhkYoK.js → Checkbox-BE8Jmz3t.js} +2 -2
- package/dist/{Checkbox-BYWhkYoK.js.map → Checkbox-BE8Jmz3t.js.map} +1 -1
- package/dist/{Checkbox-DTzoDcJl.js → Checkbox-QIaS16gS.js} +5 -5
- package/dist/{Checkbox-DTzoDcJl.js.map → Checkbox-QIaS16gS.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-CyMNyEPR.js → Chip-BYK1b3lZ.js} +5 -5
- package/dist/{Chip-CyMNyEPR.js.map → Chip-BYK1b3lZ.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-FG0Kjx0d.js → DataTable-D_ZP3kZw.js} +187 -124
- package/dist/DataTable-D_ZP3kZw.js.map +1 -0
- package/dist/DataTable.css +40 -19
- package/dist/{DateFieldRange-BUug1tUy.js → DateFieldRange-OiVF8sye.js} +5 -5
- package/dist/{DateFieldRange-BUug1tUy.js.map → DateFieldRange-OiVF8sye.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DR7faQGD.js → DateFieldSingle-CSCcHt9Z.js} +5 -5
- package/dist/{DateFieldSingle-DR7faQGD.js.map → DateFieldSingle-CSCcHt9Z.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-7MFcR7L6.js → DateFieldYearless-DU9No74i.js} +6 -6
- package/dist/{DateFieldYearless-7MFcR7L6.js.map → DateFieldYearless-DU9No74i.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-DGtdyISH.js → DateFieldYearlessRange-BkXIgh59.js} +6 -6
- package/dist/{DateFieldYearlessRange-DGtdyISH.js.map → DateFieldYearlessRange-BkXIgh59.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-C7oN9nIe.js → DaysOfTheWeek-BYw91Qr-.js} +5 -5
- package/dist/{DaysOfTheWeek-C7oN9nIe.js.map → DaysOfTheWeek-BYw91Qr-.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-s2pVu-YL.js → Details-Xb49PJ-r.js} +10 -10
- package/dist/{Details-s2pVu-YL.js.map → Details-Xb49PJ-r.js.map} +1 -1
- package/dist/Details.css +16 -15
- package/dist/Details.js +1 -1
- package/dist/{Dialog-dE9c90iR.js → Dialog-DMR_uvde.js} +4 -4
- package/dist/{Dialog-dE9c90iR.js.map → Dialog-DMR_uvde.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-DcidFC38.js → DialogCancelButton-lAq4bhHS.js} +2 -2
- package/dist/{DialogCancelButton-DcidFC38.js.map → DialogCancelButton-lAq4bhHS.js.map} +1 -1
- package/dist/{Divider-Dz27DFuE.js → Divider-C7fp5Xb6.js} +2 -2
- package/dist/{Divider-Dz27DFuE.js.map → Divider-C7fp5Xb6.js.map} +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +2 -2
- package/dist/{DndHandleButton-BW9xLWQm.js → DndHandleButton-Cj7pIegT.js} +3 -3
- package/dist/{DndHandleButton-BW9xLWQm.js.map → DndHandleButton-Cj7pIegT.js.map} +1 -1
- package/dist/DndSort.js +6 -6
- package/dist/{Drawer-Dk0MsaOU.js → Drawer-vxmKqraS.js} +4 -4
- package/dist/{Drawer-Dk0MsaOU.js.map → Drawer-vxmKqraS.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-DV2N7zWr.js → EditCard-h7sDGB-x.js} +6 -6
- package/dist/{EditCard-DV2N7zWr.js.map → EditCard-h7sDGB-x.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-VVn8GR64.js → FieldLabel-tFSfJ7OJ.js} +4 -4
- package/dist/{FieldLabel-VVn8GR64.js.map → FieldLabel-tFSfJ7OJ.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-B3c_VGDk.js → FilterBar-l8aCxO9c.js} +10 -10
- package/dist/{FilterBar-B3c_VGDk.js.map → FilterBar-l8aCxO9c.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/{Flex-_orhvoxS.js → Flex-Bb3iHExM.js} +2 -2
- package/dist/{Flex-_orhvoxS.js.map → Flex-Bb3iHExM.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-BAN8WD_V.js → Grid-ho1pGJ5L.js} +2 -2
- package/dist/{Grid-BAN8WD_V.js.map → Grid-ho1pGJ5L.js.map} +1 -1
- package/dist/Grid.js +1 -1
- package/dist/{Icon-feeG7gXA.js → Icon-BEwHECSM.js} +2 -2
- package/dist/{Icon-feeG7gXA.js.map → Icon-BEwHECSM.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-VBHWGZGN.js → InputMask-r8vH_Gh3.js} +3 -3
- package/dist/{InputMask-VBHWGZGN.js.map → InputMask-r8vH_Gh3.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{InteractiveCard-Pu0j2qJd.js → InteractiveCard-CyUR_VLW.js} +2 -2
- package/dist/{InteractiveCard-Pu0j2qJd.js.map → InteractiveCard-CyUR_VLW.js.map} +1 -1
- package/dist/InteractiveCard.js +1 -1
- package/dist/{Link-D8A_WT94.js → Link-DI4eVVdI.js} +3 -3
- package/dist/{Link-D8A_WT94.js.map → Link-DI4eVVdI.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{LinkButton-DxYsWiXB.js → LinkButton-C0wps8r1.js} +2 -2
- package/dist/{LinkButton-DxYsWiXB.js.map → LinkButton-C0wps8r1.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{List-GPS-GqH7.js → List-BvzfZ9TW.js} +2 -2
- package/dist/{List-GPS-GqH7.js.map → List-BvzfZ9TW.js.map} +1 -1
- package/dist/List.js +1 -1
- package/dist/{ListView-BUrfz75g.js → ListView-D_xAfZD-.js} +3 -3
- package/dist/{ListView-BUrfz75g.js.map → ListView-D_xAfZD-.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CRY-0BkS.js → Listbox-iUUghImt.js} +5 -5
- package/dist/{Listbox-CRY-0BkS.js.map → Listbox-iUUghImt.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{LocalizationProvider-CO8fQGqs.js → LocalizationProvider-BPcOU7YX.js} +2 -2
- package/dist/{LocalizationProvider-CO8fQGqs.js.map → LocalizationProvider-BPcOU7YX.js.map} +1 -1
- package/dist/LocalizationProvider.js +1 -1
- package/dist/{Menu-DNJ0YqjA.js → Menu-qcHhgf-t.js} +16 -26
- package/dist/{Menu-DNJ0YqjA.js.map → Menu-qcHhgf-t.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/Menu.module-CoyI86tZ.js +13 -0
- package/dist/Menu.module-CoyI86tZ.js.map +1 -0
- package/dist/{MenuFooter-CrsZdXvN.js → MenuFooter-Dtckm9vY.js} +2 -2
- package/dist/{MenuFooter-CrsZdXvN.js.map → MenuFooter-Dtckm9vY.js.map} +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-CzHj9Qvy.js → MultiSelectFieldSync-DNJ1TBf8.js} +47 -31
- package/dist/MultiSelectFieldSync-DNJ1TBf8.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +65 -63
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BGcrYjby.js → MultiSelectMenuSync-LD931FAV.js} +7 -6
- package/dist/{MultiSelectMenuSync-BGcrYjby.js.map → MultiSelectMenuSync-LD931FAV.js.map} +1 -1
- package/dist/{NumberField-bgYX7JGs.js → NumberField-CFYbODNe.js} +9 -7
- package/dist/NumberField-CFYbODNe.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +2 -2
- package/dist/{Page-BSHydn4p.js → Page-DgSimS7u.js} +89 -89
- package/dist/Page-DgSimS7u.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-CAeyJ7Pl.js → Pagination-DQ2fjkmT.js} +7 -7
- package/dist/{Pagination-CAeyJ7Pl.js.map → Pagination-DQ2fjkmT.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-Cq5tirFz.js → Popover-DeBxKuqc.js} +4 -4
- package/dist/{Popover-Cq5tirFz.js.map → Popover-DeBxKuqc.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-ByR50ln7.js → ProgressBar-BFvc2jm3.js} +5 -5
- package/dist/{ProgressBar-ByR50ln7.js.map → ProgressBar-BFvc2jm3.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-WlsZFRzX.js → Radio-BV4SflBA.js} +5 -5
- package/dist/{Radio-WlsZFRzX.js.map → Radio-BV4SflBA.js.map} +1 -1
- package/dist/{Radio-CPuctRpl.js → Radio-v3lT3AoB.js} +2 -2
- package/dist/{Radio-CPuctRpl.js.map → Radio-v3lT3AoB.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-FSWAVmTe.js → RichTextEditor-Cm29o9RK.js} +14 -14
- package/dist/{RichTextEditor-FSWAVmTe.js.map → RichTextEditor-Cm29o9RK.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-Cr829guv.js → SavedFiltersButton-3VadkBsA.js} +12 -12
- package/dist/{SavedFiltersButton-Cr829guv.js.map → SavedFiltersButton-3VadkBsA.js.map} +1 -1
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SearchField-BMHJCVFu.js → SearchField-BfOMhmIc.js} +2 -2
- package/dist/{SearchField-BMHJCVFu.js.map → SearchField-BfOMhmIc.js.map} +1 -1
- package/dist/{SearchField-fXc_vWEr.js → SearchField-D9ZMOcbo.js} +4 -4
- package/dist/{SearchField-fXc_vWEr.js.map → SearchField-D9ZMOcbo.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-PwLdTdrd.js → SegmentedControl-fBjqazBR.js} +3 -3
- package/dist/{SegmentedControl-PwLdTdrd.js.map → SegmentedControl-fBjqazBR.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-DLWLHi_i.js → SelectCard-CkZEENl6.js} +5 -5
- package/dist/{SelectCard-DLWLHi_i.js.map → SelectCard-CkZEENl6.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-vemffdmu.js → SelectFieldLabel-CvJhwy_6.js} +2 -2
- package/dist/{SelectFieldLabel-vemffdmu.js.map → SelectFieldLabel-CvJhwy_6.js.map} +1 -1
- package/dist/{SelectFieldSync-C65VFWGm.js → SelectFieldSync-z_kyrBvL.js} +24 -10
- package/dist/SelectFieldSync-z_kyrBvL.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-CF49L12-.js → SelectMenuSync-BD8oedGs.js} +7 -6
- package/dist/{SelectMenuSync-CF49L12-.js.map → SelectMenuSync-BD8oedGs.js.map} +1 -1
- package/dist/{SelectOptions-C7skDFj2.js → SelectOptions-CBSsSyFd.js} +2 -2
- package/dist/{SelectOptions-C7skDFj2.js.map → SelectOptions-CBSsSyFd.js.map} +1 -1
- package/dist/{SelectTrigger-BbneVXMz.js → SelectTrigger-BtmYsL2p.js} +5 -5
- package/dist/{SelectTrigger-BbneVXMz.js.map → SelectTrigger-BtmYsL2p.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BjIOERXr.js → SelectTriggerBase-CyyzAOmG.js} +6 -6
- package/dist/{SelectTriggerBase-BjIOERXr.js.map → SelectTriggerBase-CyyzAOmG.js.map} +1 -1
- package/dist/SelectTriggerBase.css +48 -46
- package/dist/SelectTriggerBase.module-Brmw1nYG.js +39 -0
- package/dist/SelectTriggerBase.module-Brmw1nYG.js.map +1 -0
- package/dist/{SideNav-JzIIZSK_.js → SideNav-BFkruKa4.js} +3 -3
- package/dist/{SideNav-JzIIZSK_.js.map → SideNav-BFkruKa4.js.map} +1 -1
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/{Stepper-lYywxPU5.js → Stepper-BXgMeUHu.js} +5 -5
- package/dist/{Stepper-lYywxPU5.js.map → Stepper-BXgMeUHu.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-B6bKmpwN.js → Switch-DibokoJL.js} +5 -5
- package/dist/{Switch-B6bKmpwN.js.map → Switch-DibokoJL.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-CIY6BO2e.js → Tab-FOIali7o.js} +4 -4
- package/dist/{Tab-CIY6BO2e.js.map → Tab-FOIali7o.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-w2gWn4K6.js → Text-BTCfqeSr.js} +3 -3
- package/dist/{Text-w2gWn4K6.js.map → Text-BTCfqeSr.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-BQsCh5Nb.js → TextField-CqJ9s4SG.js} +2 -2
- package/dist/{TextField-BQsCh5Nb.js.map → TextField-CqJ9s4SG.js.map} +1 -1
- package/dist/{TextField-DJ3gEIP6.js → TextField-KZkRXCbH.js} +8 -6
- package/dist/TextField-KZkRXCbH.js.map +1 -0
- package/dist/TextField.css +24 -22
- package/dist/TextField.js +1 -1
- package/dist/TextField.module-DklyLNKz.js +25 -0
- package/dist/TextField.module-DklyLNKz.js.map +1 -0
- package/dist/{Textarea-BK4Vf84K.js → Textarea-DlvbIRKO.js} +4 -4
- package/dist/{Textarea-BK4Vf84K.js.map → Textarea-DlvbIRKO.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-BC6wbuLU.js → ThemeProvider-Sd8LK0A9.js} +3 -3
- package/dist/{ThemeProvider-BC6wbuLU.js.map → ThemeProvider-Sd8LK0A9.js.map} +1 -1
- package/dist/ThemeProvider.css +16 -4
- package/dist/ThemeProvider.js +1 -1
- package/dist/ThemeProvider.module-_7m6Tav-.js +8 -0
- package/dist/ThemeProvider.module-_7m6Tav-.js.map +1 -0
- package/dist/{TimeField-B4IW2B_o.js → TimeField-bdJArRXM.js} +6 -6
- package/dist/{TimeField-B4IW2B_o.js.map → TimeField-bdJArRXM.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-DTF9qnTy.js → Toaster-DW9Bx-5k.js} +2 -2
- package/dist/{Toaster-DTF9qnTy.js.map → Toaster-DW9Bx-5k.js.map} +1 -1
- package/dist/{Toaster-BGY2IzF5.js → Toaster-De3dmRbW.js} +6 -6
- package/dist/{Toaster-BGY2IzF5.js.map → Toaster-De3dmRbW.js.map} +1 -1
- package/dist/{Toolbar-DObrJ_S5.js → Toolbar-DksrjUsE.js} +9 -9
- package/dist/{Toolbar-DObrJ_S5.js.map → Toolbar-DksrjUsE.js.map} +1 -1
- package/dist/{Toolbar-DRJGKk8D.js → Toolbar-j9Y2YleC.js} +11 -11
- package/dist/{Toolbar-DRJGKk8D.js.map → Toolbar-j9Y2YleC.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-BCKgA8FE.js → ToolbarButtonToggle-CywNpsGX.js} +3 -3
- package/dist/{ToolbarButtonToggle-BCKgA8FE.js.map → ToolbarButtonToggle-CywNpsGX.js.map} +1 -1
- package/dist/{Tooltip-DqS6xDUf.js → Tooltip-BC8lnFhe.js} +4 -4
- package/dist/{Tooltip-DqS6xDUf.js.map → Tooltip-BC8lnFhe.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-Do5ffU0b.js → TreeSelectFieldSync-CB1H4ZTC.js} +14 -9
- package/dist/TreeSelectFieldSync-CB1H4ZTC.js.map +1 -0
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-s05Ly6lj.js → TreeSelectMenuSync-D4l3zik4.js} +5 -5
- package/dist/{TreeSelectMenuSync-s05Ly6lj.js.map → TreeSelectMenuSync-D4l3zik4.js.map} +1 -1
- package/dist/TypeaheadTextField-BJrrlLjP.js +319 -0
- package/dist/TypeaheadTextField-BJrrlLjP.js.map +1 -0
- package/dist/TypeaheadTextField.css +16 -0
- package/dist/TypeaheadTextField.d.ts +1 -0
- package/dist/TypeaheadTextField.js +2 -0
- package/dist/TypeaheadTextField.js.map +1 -0
- package/dist/{YearlessDateInputWithPicker-BHfFjCqE.js → YearlessDateInputWithPicker-BmRkNzK0.js} +6 -6
- package/dist/{YearlessDateInputWithPicker-BHfFjCqE.js.map → YearlessDateInputWithPicker-BmRkNzK0.js.map} +1 -1
- package/dist/beta.js +17 -16
- package/dist/beta.js.map +1 -1
- package/dist/{filter-state-CE8t3-Q7.js → filter-state-C-4lebJG.js} +23 -23
- package/dist/{filter-state-CE8t3-Q7.js.map → filter-state-C-4lebJG.js.map} +1 -1
- package/dist/{floating-ui.react-dom-BIKT960u.js → floating-ui.react-dom-CyrxPiI-.js} +2 -2
- package/dist/{floating-ui.react-dom-BIKT960u.js.map → floating-ui.react-dom-CyrxPiI-.js.map} +1 -1
- package/dist/{index-CKdC7x1S.js → index-iTige6rD.js} +2 -2
- package/dist/{index-CKdC7x1S.js.map → index-iTige6rD.js.map} +1 -1
- package/dist/{index-DN_iqxhF.js → index-mKaF0gwp.js} +2 -2
- package/dist/{index-DN_iqxhF.js.map → index-mKaF0gwp.js.map} +1 -1
- package/dist/index.js +65 -65
- package/dist/{portalScopeClassNames-jlZkdug_.js → portalScopeClassNames-BTyv0FY8.js} +2 -2
- package/dist/{portalScopeClassNames-jlZkdug_.js.map → portalScopeClassNames-BTyv0FY8.js.map} +1 -1
- package/dist/{primitive-DXlHdTFb.js → primitive-BXgYQTTw.js} +61 -1
- package/dist/{primitive-DXlHdTFb.js.map → primitive-BXgYQTTw.js.map} +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +3 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +2 -1
- package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +1 -0
- package/dist/src/beta/components/MultiSelectField/types.d.ts +5 -0
- package/dist/src/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/beta/components/SelectField/internal/SelectFieldInput.d.ts +3 -1
- package/dist/src/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/src/beta/components/SelectField/internal/SelectFieldTrigger.d.ts +2 -1
- package/dist/src/beta/components/SelectField/types.d.ts +5 -0
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +20 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.d.ts +10 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.d.ts +19 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.d.ts +1 -0
- package/dist/src/beta/components/Table/internal/TruncateChips.d.ts +5 -15
- package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +1 -0
- package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +4 -1
- package/dist/src/beta/components/TreeSelectField/types.d.ts +15 -0
- package/dist/src/beta/components/TypeaheadTextField/TypeaheadTextField.d.ts +67 -0
- package/dist/src/beta/components/TypeaheadTextField/index.d.ts +1 -0
- package/dist/src/beta/components/TypeaheadTextField/internal/SuggestionItem.d.ts +29 -0
- package/dist/src/beta/components/index.d.ts +1 -0
- package/dist/src/components/NumberField/NumberField.d.ts +10 -0
- package/dist/src/components/Page/Page.d.ts +2 -2
- package/dist/src/components/Page/pageBreakpoint.d.ts +26 -0
- package/dist/src/components/TextField/internal/TextField.d.ts +5 -0
- package/dist/src/integration-testing/page-resize-loop.spec.d.ts +1 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +1 -0
- package/dist/{stripInlineMarkdown-C0bVmYgG.js → stripInlineMarkdown-CQCRopqY.js} +2 -2
- package/dist/{stripInlineMarkdown-C0bVmYgG.js.map → stripInlineMarkdown-CQCRopqY.js.map} +1 -1
- package/dist/{syncFilterUtils-CgHB-l6A.js → syncFilterUtils-JUsufAHA.js} +7 -36
- package/dist/syncFilterUtils-JUsufAHA.js.map +1 -0
- package/dist/token/core/primitive-variables.scss +12 -0
- package/dist/token/core/primitive.d.ts +12 -0
- package/dist/token/core/primitive.js +48 -0
- package/dist/token/core/primitive.scss +12 -0
- package/dist/token.js +1 -1
- package/dist/{treeSync-Cz3H08cr.js → treeSync-CXMjwQ4X.js} +4 -4
- package/dist/{treeSync-Cz3H08cr.js.map → treeSync-CXMjwQ4X.js.map} +1 -1
- package/dist/{useAdaptiveView-CeYKH0Me.js → useAdaptiveView-BdzXyicd.js} +10 -10
- package/dist/{useAdaptiveView-CeYKH0Me.js.map → useAdaptiveView-BdzXyicd.js.map} +1 -1
- package/dist/{useBreakpoint-CeaUyHxh.js → useBreakpoint-BBNRlMGZ.js} +2 -2
- package/dist/{useBreakpoint-CeaUyHxh.js.map → useBreakpoint-BBNRlMGZ.js.map} +1 -1
- package/dist/useBreakpoint.js +1 -1
- package/dist/useDebouncedCallback-DLkapjcP.js +33 -0
- package/dist/useDebouncedCallback-DLkapjcP.js.map +1 -0
- package/dist/{useDrilldown-BJ2dHHKV.js → useDrilldown-CWNTo5uR.js} +4 -4
- package/dist/{useDrilldown-BJ2dHHKV.js.map → useDrilldown-CWNTo5uR.js.map} +1 -1
- package/dist/{useInfiniteCombobox-BqJm-CdN.js → useInfiniteCombobox-D6FRVziM.js} +9 -9
- package/dist/{useInfiniteCombobox-BqJm-CdN.js.map → useInfiniteCombobox-D6FRVziM.js.map} +1 -1
- package/dist/{useLayoutPropsUtil-CB_zHDbW.js → useLayoutPropsUtil-DjqeAJZ9.js} +3 -3
- package/dist/{useLayoutPropsUtil-CB_zHDbW.js.map → useLayoutPropsUtil-DjqeAJZ9.js.map} +1 -1
- package/dist/{useToggleSelection-BGc5OiZF.js → useToggleSelection-a18uaSE7.js} +2 -2
- package/dist/{useToggleSelection-BGc5OiZF.js.map → useToggleSelection-a18uaSE7.js.map} +1 -1
- package/package.json +2 -2
- package/dist/DataTable-FG0Kjx0d.js.map +0 -1
- package/dist/MultiSelectFieldSync-CzHj9Qvy.js.map +0 -1
- package/dist/NumberField-bgYX7JGs.js.map +0 -1
- package/dist/Page-BSHydn4p.js.map +0 -1
- package/dist/SelectFieldSync-C65VFWGm.js.map +0 -1
- package/dist/SelectTriggerBase.module-DsPvTQE7.js +0 -37
- package/dist/SelectTriggerBase.module-DsPvTQE7.js.map +0 -1
- package/dist/TextField-DJ3gEIP6.js.map +0 -1
- package/dist/TextField.module-C8FsjTpx.js +0 -23
- package/dist/TextField.module-C8FsjTpx.js.map +0 -1
- package/dist/ThemeProvider.module-D9pNGYjP.js +0 -8
- package/dist/ThemeProvider.module-D9pNGYjP.js.map +0 -1
- package/dist/TreeSelectFieldSync-Do5ffU0b.js.map +0 -1
- package/dist/syncFilterUtils-CgHB-l6A.js.map +0 -1
|
@@ -3,30 +3,20 @@ import * as React from 'react';
|
|
|
3
3
|
import { createContext, forwardRef, useContext, useId, useRef, useState, useCallback, useLayoutEffect, useEffect, useMemo } from 'react';
|
|
4
4
|
import { c as cx } from './index-De1g9FRV.js';
|
|
5
5
|
import { S as SvgArrowDropDown } from './arrow_drop_down-ChAdBDux.js';
|
|
6
|
-
import { B as Button } from './Button-
|
|
6
|
+
import { B as Button } from './Button-ChQARW0y.js';
|
|
7
7
|
import { D as DialogContext } from './DialogContext-DBgtApl9.js';
|
|
8
|
-
import { I as Icon } from './Icon-
|
|
8
|
+
import { I as Icon } from './Icon-BEwHECSM.js';
|
|
9
|
+
import { m as menuStyles } from './Menu.module-CoyI86tZ.js';
|
|
9
10
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
10
11
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
11
12
|
import { useTrackingId } from './useTrackingId.js';
|
|
12
|
-
import { c as computePosition, o as offset, f as flip,
|
|
13
|
+
import { c as computePosition, o as offset, f as flip, s as shift, a as size, l as limitShift, b as autoUpdate, d as safeShowPopover, e as safeHidePopover } from './floating-ui.react-dom-CyrxPiI-.js';
|
|
13
14
|
import { g as getActiveElement } from './getActiveElement-BcSyVE7S.js';
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
const SvgArrowDropUp = (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: "M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z" }));
|
|
16
17
|
|
|
17
18
|
const MenuContext = createContext(null);
|
|
18
19
|
|
|
19
|
-
const content = "_content_1mjgd_1";
|
|
20
|
-
const scroller = "_scroller_1mjgd_54";
|
|
21
|
-
const item = "_item_1mjgd_69";
|
|
22
|
-
const styles = {
|
|
23
|
-
content: content,
|
|
24
|
-
scroller: scroller,
|
|
25
|
-
item: item,
|
|
26
|
-
"arrow-down": "_arrow-down_1mjgd_117",
|
|
27
|
-
"arrow-up": "_arrow-up_1mjgd_118",
|
|
28
|
-
"arrow-icon": "_arrow-icon_1mjgd_132"};
|
|
29
|
-
|
|
30
20
|
const MenuItem = forwardRef((props, ref) => {
|
|
31
21
|
const {
|
|
32
22
|
label,
|
|
@@ -43,7 +33,7 @@ const MenuItem = forwardRef((props, ref) => {
|
|
|
43
33
|
const buttonRef = useRef(null);
|
|
44
34
|
const combinedRef = useMergeRefs([buttonRef, ref]);
|
|
45
35
|
const [tabIndex, setTabIndex] = useState(-1);
|
|
46
|
-
const itemCx = cx([
|
|
36
|
+
const itemCx = cx([menuStyles["item"]], className);
|
|
47
37
|
const onClickHandler = (e) => {
|
|
48
38
|
if (disabled) {
|
|
49
39
|
e.preventDefault();
|
|
@@ -365,7 +355,7 @@ const MenuNested = (props) => {
|
|
|
365
355
|
if (isControlled) return;
|
|
366
356
|
openMenu();
|
|
367
357
|
};
|
|
368
|
-
const itemCx = cx([
|
|
358
|
+
const itemCx = cx([menuStyles["item"]], className);
|
|
369
359
|
return /* @__PURE__ */ jsxs("div", { ref: containerRef, "data-nested": "true", children: [
|
|
370
360
|
/* @__PURE__ */ jsxs(
|
|
371
361
|
"button",
|
|
@@ -401,16 +391,16 @@ const MenuNested = (props) => {
|
|
|
401
391
|
popover: "auto",
|
|
402
392
|
id: `menu-${uid.replace(/:/g, "")}`,
|
|
403
393
|
"data-anv": "menu-content",
|
|
404
|
-
className:
|
|
394
|
+
className: menuStyles.content,
|
|
405
395
|
ref: menuRef,
|
|
406
396
|
role: "presentation",
|
|
407
397
|
onKeyDown: onKeyDownHandler,
|
|
408
398
|
children: [
|
|
409
|
-
arrowStart && /* @__PURE__ */ jsx("div", { className:
|
|
399
|
+
arrowStart && /* @__PURE__ */ jsx("div", { className: menuStyles["arrow-up"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropUp, size: "xlarge", className: menuStyles["arrow-icon"] }) }),
|
|
410
400
|
/* @__PURE__ */ jsx(
|
|
411
401
|
"div",
|
|
412
402
|
{
|
|
413
|
-
className:
|
|
403
|
+
className: menuStyles.scroller,
|
|
414
404
|
tabIndex: -1,
|
|
415
405
|
ref: childrenRef,
|
|
416
406
|
style: {
|
|
@@ -423,7 +413,7 @@ const MenuNested = (props) => {
|
|
|
423
413
|
children
|
|
424
414
|
}
|
|
425
415
|
),
|
|
426
|
-
arrowEnd && /* @__PURE__ */ jsx("div", { className:
|
|
416
|
+
arrowEnd && /* @__PURE__ */ jsx("div", { className: menuStyles["arrow-down"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropDown, size: "xlarge", className: menuStyles["arrow-icon"] }) })
|
|
427
417
|
]
|
|
428
418
|
}
|
|
429
419
|
)
|
|
@@ -789,16 +779,16 @@ const Menu = Object.assign(
|
|
|
789
779
|
popover: "manual",
|
|
790
780
|
id: `menu-${uid.replace(/:/g, "")}`,
|
|
791
781
|
"data-anv": "menu-content",
|
|
792
|
-
className: cx(
|
|
782
|
+
className: cx(menuStyles.content, contentClassName),
|
|
793
783
|
onKeyDown: onKeyDownHandler,
|
|
794
784
|
ref: menuRef,
|
|
795
785
|
role: "presentation",
|
|
796
786
|
children: [
|
|
797
|
-
arrowStart && /* @__PURE__ */ jsx("div", { className:
|
|
787
|
+
arrowStart && /* @__PURE__ */ jsx("div", { className: menuStyles["arrow-up"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropUp, size: "xlarge", className: menuStyles["arrow-icon"] }) }),
|
|
798
788
|
/* @__PURE__ */ jsx(
|
|
799
789
|
"div",
|
|
800
790
|
{
|
|
801
|
-
className:
|
|
791
|
+
className: menuStyles.scroller,
|
|
802
792
|
tabIndex: -1,
|
|
803
793
|
ref: childrenRef,
|
|
804
794
|
style: {
|
|
@@ -811,7 +801,7 @@ const Menu = Object.assign(
|
|
|
811
801
|
children
|
|
812
802
|
}
|
|
813
803
|
),
|
|
814
|
-
arrowEnd && /* @__PURE__ */ jsx("div", { className:
|
|
804
|
+
arrowEnd && /* @__PURE__ */ jsx("div", { className: menuStyles["arrow-down"], "aria-hidden": true, children: /* @__PURE__ */ jsx(Icon, { svg: SvgArrowDropDown, size: "xlarge", className: menuStyles["arrow-icon"] }) })
|
|
815
805
|
]
|
|
816
806
|
}
|
|
817
807
|
)
|
|
@@ -842,4 +832,4 @@ const Menu = Object.assign(
|
|
|
842
832
|
);
|
|
843
833
|
|
|
844
834
|
export { Menu as M };
|
|
845
|
-
//# sourceMappingURL=Menu-
|
|
835
|
+
//# sourceMappingURL=Menu-qcHhgf-t.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu-DNJ0YqjA.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../src/components/Menu/MenuItem.tsx","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (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: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import * as React from \"react\";\nconst SvgNavigateNext = (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: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n const handleFocusIn = () => {\n openMenu();\n };\n const handleFocusOut = () => {\n closeMenu();\n };\n nestedContainer.addEventListener(\"focusin\", handleFocusIn);\n nestedContainer.addEventListener(\"focusout\", handleFocusOut);\n return () => {\n nestedContainer.removeEventListener(\"focusin\", handleFocusIn);\n nestedContainer.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { safeHidePopover, safeShowPopover } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(\n function MenuInner(props: MenuProps) {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void, options?: { skipInvokerRefocus?: boolean }) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n if (!options?.skipInvokerRefocus) {\n invokerRef.current?.focus();\n }\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n },\n);\n"],"names":["Next","Up","Down"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu-qcHhgf-t.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../src/components/Menu/MenuItem.tsx","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuNested.tsx","../src/components/Menu/Menu.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgArrowDropUp = (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: \"M8.71 12.29 11.3 9.7a.996.996 0 0 1 1.41 0l2.59 2.59c.63.63.18 1.71-.71 1.71H9.41c-.89 0-1.33-1.08-.7-1.71z\" }));\nexport default SvgArrowDropUp;\n","import { createContext } from \"react\";\n\nimport { MenuProps } from \"../Menu\";\n\n/**\n * Context props for Menu components\n */\nexport type MenuContextProps = {\n /**\n * Function to close the root menu\n */\n closeRootMenu: () => void;\n /**\n * Whether auto height is disabled\n */\n disableAutoHeight: MenuProps[\"disableAutoHeight\"];\n};\nexport const MenuContext = createContext<MenuContextProps | null>(null);\n","import {\n ButtonHTMLAttributes,\n forwardRef,\n useContext,\n ComponentPropsWithoutRef,\n ReactNode,\n MouseEvent,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the MenuItem component\n * @extends ComponentPropsWithoutRef<\"button\">\n */\nexport type MenuItemProps = {\n /**\n * Icon to display next to the menu item label\n */\n icon?: IconProps[\"svg\"];\n /**\n * The label text or content for the menu item\n */\n label: ReactNode;\n /**\n * Whether the menu item is disabled\n * @default false\n */\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\"> &\n DataTrackingId;\n\n/**\n * MenuItem component for individual menu options within a Menu.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <MenuItem\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\nexport const MenuItem = forwardRef<\n HTMLButtonElement,\n MenuItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>((props, ref) => {\n const {\n label,\n disabled,\n icon,\n className,\n onClick,\n onMouseEnter,\n id: idProp,\n ...rest\n } = props;\n const menuContext = useContext(MenuContext);\n const uid = useId();\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useMergeRefs([buttonRef, ref]);\n const [tabIndex, setTabIndex] = useState(-1);\n const itemCx = cx([styles[\"item\"]], className);\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n menuContext?.closeRootMenu();\n };\n const onMouseEnterHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onMouseEnter?.(e);\n buttonRef.current?.focus();\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"MenuItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <button\n data-tracking-id={trackingId}\n {...rest}\n ref={combinedRef}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n id={idProp ?? `menuitem-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n aria-disabled={disabled}\n onClick={onClickHandler}\n onMouseEnter={onMouseEnterHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","import * as React from \"react\";\nconst SvgNavigateNext = (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: \"M9.31 6.71a.996.996 0 0 0 0 1.41L13.19 12l-3.88 3.88a.996.996 0 1 0 1.41 1.41l4.59-4.59a.996.996 0 0 0 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z\" }));\nexport default SvgNavigateNext;\n","import {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useLayoutEffect,\n useCallback,\n useContext,\n MouseEvent,\n KeyboardEvent,\n} from \"react\";\nimport cx from \"classnames\";\nimport Next from \"@servicetitan/hammer-icon/mdi/round/navigate_next.svg\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport {\n getActiveElement,\n safeHidePopover,\n safeShowPopover,\n} from \"../../../internal/functions\";\nimport { Icon, IconProps } from \"../../Icon\";\n\nimport { MenuCommonProps } from \"../types\";\nimport { MenuContext } from \"./MenuContext\";\n\nimport styles from \"../Menu.module.scss\";\n\n/**\n * Props for the MenuNested component\n * @extends ComponentPropsWithoutRef<\"button\">\n * @extends MenuCommonProps\n */\nexport type MenuNestedProps = ComponentPropsWithoutRef<\"button\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the nested menu button\n */\n icon?: IconProps[\"svg\"];\n };\n\n/**\n * MenuNested component for creating nested submenus within a Menu.\n *\n * Features:\n * - Hover-based menu opening and closing\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys\n * - Scroll indicators for overflow content\n * - Automatic height adjustment\n * - Focus management and accessibility\n * - Popover API support with legacy fallback\n * - Smooth transitions and animations\n * - Context integration with parent menus\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n * </Menu>\n */\nexport const MenuNested = (props: MenuNestedProps) => {\n const { children, open, defaultOpen = false, label, className, icon } = props;\n const uid = useId();\n const [tabIndex, setTabIndex] = useState(-1);\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const fallbackArr = useCallback(() => {\n return menuContext?.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n }, [menuContext?.disableAutoHeight]);\n\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n }, [fallbackArr, menuContext?.disableAutoHeight, menuHeight]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 100); // Shorter debounce for nested menu\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n const popoverHoverTriggered = useRef<boolean>();\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n popoverHoverTriggered.current = true;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (\n !popoverHoverTriggered.current ||\n !menuRef.current ||\n !childrenRef.current\n )\n return;\n\n // Show the menu but keep it transparent\n menuRef.current.style.opacity = \"0\";\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: \"right-start\",\n middleware: [\n offset({\n mainAxis: 0,\n alignmentAxis: -4,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y + 8}px`,\n });\n });\n\n setOpenState(true);\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n\n // Make the menu visible with a short delay to ensure smooth transition\n requestAnimationFrame(() => {\n if (!menuRef.current) return;\n menuRef.current.style.opacity = \"1\";\n });\n }, [uid, fallbackArr, menuContext?.disableAutoHeight]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows menu to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(async (fn?: () => void) => {\n popoverHoverTriggered.current = false;\n await new Promise((resolve) => setTimeout(resolve, 100));\n if (popoverHoverTriggered.current || !menuRef.current) return;\n fn?.();\n safeHidePopover(menuRef.current);\n setOpenState(false);\n }, []);\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n setOpenState(open);\n if (open) {\n openMenu();\n } else {\n closeMenu();\n }\n }, [closeMenu, isControlled, open, openMenu]);\n\n useEffect(() => {\n if (!containerRef.current) return;\n const nestedContainer = containerRef.current;\n const handleFocusIn = () => {\n openMenu();\n };\n const handleFocusOut = () => {\n closeMenu();\n };\n nestedContainer.addEventListener(\"focusin\", handleFocusIn);\n nestedContainer.addEventListener(\"focusout\", handleFocusOut);\n return () => {\n nestedContainer.removeEventListener(\"focusin\", handleFocusIn);\n nestedContainer.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, [closeMenu, openMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current) return;\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"Escape\") {\n menuContext?.closeRootMenu();\n }\n if (e.code === \"ArrowLeft\") {\n e.stopPropagation();\n e.preventDefault();\n invokerRef.current?.focus();\n closeMenu();\n }\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const onFocusHandler = () => {\n setTabIndex(0);\n };\n const onBlurHandler = () => {\n setTabIndex(-1);\n };\n\n const MenuButtonOnKeyDownHandler = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowRight\") {\n e.stopPropagation();\n e.preventDefault();\n openMenu();\n const firstItem = menuRef.current?.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n )[0];\n (firstItem as HTMLButtonElement).focus();\n }\n };\n\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n openMenu();\n };\n\n const itemCx = cx([styles[\"item\"]], className);\n\n return (\n <div ref={containerRef} data-nested=\"true\">\n <button\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-state={openState ? \"open\" : \"close\"}\n ref={invokerRef}\n id={`menuitem-${uid.replace(/:/g, \"\")}`}\n aria-expanded={openState}\n onMouseEnter={(e) => {\n e.currentTarget.focus();\n }}\n onKeyDown={MenuButtonOnKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onClick={MenuButtonOnClick}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n className={itemCx}\n tabIndex={tabIndex}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n <div\n popover=\"auto\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={styles.content}\n ref={menuRef}\n role=\"presentation\"\n onKeyDown={onKeyDownHandler}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </div>\n );\n};\n","import {\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n useContext,\n KeyboardEvent,\n MouseEvent,\n} from \"react\";\nimport {\n Placement,\n size,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\nimport cx from \"classnames\";\nimport Up from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_up.svg\";\nimport Down from \"@servicetitan/hammer-icon/mdi/round/arrow_drop_down.svg\";\n\nimport { Button, ButtonProps } from \"../Button\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { DialogContext } from \"../Dialog/internal/DialogContext\";\nimport { getActiveElement } from \"../../internal/functions\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { safeHidePopover, safeShowPopover } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuNested } from \"./internal/MenuNested\";\nimport { MenuCommonProps } from \"./types\";\n\nimport styles from \"./Menu.module.scss\";\n\n/**\n * Props for the Menu component\n * @extends Omit<ButtonProps, \"icon\">\n * @extends MenuCommonProps\n */\nexport type MenuProps = Omit<ButtonProps, \"icon\"> &\n MenuCommonProps & {\n /**\n * Icon to display on the menu button\n */\n icon?: IconProps[\"svg\"];\n } & DataTrackingId;\n\n/**\n * Menu component for displaying dropdown menus with navigation and actions.\n *\n * Features:\n * - Supports both controlled and uncontrolled modes\n * - Automatic positioning with fallback strategies\n * - Keyboard navigation with arrow keys and escape\n * - Custom trigger elements\n * - Nested menu support\n * - Automatic height adjustment\n * - Scroll indicators for overflow content\n * - Fully accessible with proper ARIA attributes\n * - Outside click detection and handling\n *\n * @example\n * <Menu label=\"Edit\">\n * <Menu.Item label=\"Cut\" onClick={() => console.log('Cut clicked')} />\n * <Menu.Item label=\"Copy\" onClick={() => console.log('Copy clicked')} />\n * <Menu label=\"Copy as\">\n * <Menu.Item label=\"Text\" onClick={() => console.log('Copy as Text')} />\n * <Menu.Item label=\"Video\" onClick={() => console.log('Copy as Video')} />\n * <Menu label=\"Image\">\n * <Menu.Item label=\".png\" onClick={() => console.log('Copy as PNG')} />\n * <Menu.Item label=\".jpg\" onClick={() => console.log('Copy as JPG')} />\n * </Menu>\n * </Menu>\n */\nexport const Menu = Object.assign(\n function MenuInner(props: MenuProps) {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\n\n const uid = useId();\n const [openState, setOpenState] = useState<boolean>(open ?? defaultOpen);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const childrenRef = useRef<HTMLDivElement>(null);\n const [focusItems, setFocusItems] = useState<HTMLElement[]>();\n const dialogContext = useContext(DialogContext);\n const menuContext = useContext(MenuContext);\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n const fallbackArr = useCallback(() => {\n if (placement.startsWith(\"top\")) {\n return disableAutoHeight\n ? [placement]\n : [\"top-start\", \"top-end\", \"bottom-start\", \"bottom-end\"];\n }\n return disableAutoHeight\n ? [placement]\n : [\"bottom-start\", \"bottom-end\", \"top-start\", \"top-end\"];\n }, [disableAutoHeight, placement]);\n\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invokerRef.current || !menuRef.current) return;\n\n computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? menuContext?.disableAutoHeight) return;\n const newHeight = availableHeight - 16;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: maxHeight\n ? `${Math.min(newHeight, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${newHeight}px`,\n });\n }\n },\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n }, [\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n disableAutoHeight,\n menuHeight,\n maxHeight,\n ]);\n\n const menuReference = useRef<HTMLDivElement | null>(null);\n\n useLayoutEffect(() => {\n if (!openState) {\n setMenuHeight(null);\n setScrollTop(0);\n return;\n }\n if (!menuRef.current) return;\n menuReference.current = menuRef.current;\n\n let resizeTimeout: number | null = null;\n const lastDimensions = {\n height: menuReference.current.clientHeight,\n scrollHeight: childrenRef.current?.scrollHeight ?? 0,\n };\n\n const updateArrows = (height: number, scrollHeight: number) => {\n if (!childrenRef.current) return;\n const isOverflow = scrollHeight > height;\n setArrowStart(isOverflow && childrenRef.current.scrollTop > 0);\n setArrowEnd(isOverflow && scrollHeight - height - scrollTop - 16 > 0);\n };\n\n const observer = new ResizeObserver(() => {\n if (!childrenRef.current || !menuReference.current) return;\n\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = window.setTimeout(() => {\n const newHeight = menuReference.current?.clientHeight ?? 0;\n const newScrollHeight = childrenRef.current?.scrollHeight ?? 0;\n\n if (!newHeight) return;\n\n lastDimensions.height = newHeight;\n lastDimensions.scrollHeight = newScrollHeight;\n\n updateArrows(newHeight, newScrollHeight);\n }, 150);\n });\n\n if (menuReference.current) {\n observer.observe(menuReference.current);\n }\n\n return () => {\n if (resizeTimeout) {\n window.clearTimeout(resizeTimeout);\n }\n if (menuReference.current) {\n observer.unobserve(menuReference.current);\n }\n observer.disconnect();\n };\n }, [openState, scrollTop]);\n\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!menuRef.current || !invokerRef.current) return;\n if (!openState) return;\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [updatePosition, openState]);\n // Stryker restore all\n\n // Main function to open menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows cursor jump from invoker to menu\n // without closing\n const openMenu = useCallback(async () => {\n if (!menuRef.current || !childrenRef.current) return;\n\n safeShowPopover(menuRef.current);\n\n // Position the menu before showing it\n if (!invokerRef.current || !menuRef.current) return;\n\n await computePosition(invokerRef.current, menuRef.current, {\n placement: placement,\n middleware: [\n offset({\n mainAxis: 5,\n alignmentAxis: 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n padding: 50, // Setting to 50px as it is the size of menu with 1 item in it\n }),\n shift({\n mainAxis: !menuContext?.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !menuContext?.disableAutoHeight,\n }),\n }),\n ],\n }).then(({ x, y }) => {\n if (!menuRef.current) return;\n Object.assign(menuRef.current.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n menuRef.current.dataset.positioned = \"true\";\n });\n\n setOpenState(true);\n\n // Wait for next frame to ensure DOM is updated\n requestAnimationFrame(() => {\n if (!childrenRef.current) return;\n const focusables = Array.from(\n childrenRef.current.querySelectorAll(\n `#scroller-${uid.replace(/:/g, \"\")} > button, #scroller-${uid.replace(/:/g, \"\")} > div[data-nested=\"true\"] > button, #scroller-${uid.replace(/:/g, \"\")} > a[href]`,\n ),\n ) as HTMLElement[];\n setFocusItems(focusables);\n });\n\n dialogContext?.setHasOpenPopover?.(true);\n }, [\n dialogContext,\n uid,\n placement,\n fallbackArr,\n menuContext?.disableAutoHeight,\n ]);\n\n // Main function to close menu\n // This gets canceled if close is called before the promise is resolved\n // Ex) Allows popover to be kept closed when cursor\n // moves out of the invoker and menu\n const closeMenu = useCallback(\n async (fn?: () => void, options?: { skipInvokerRefocus?: boolean }) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n if (!options?.skipInvokerRefocus) {\n invokerRef.current?.focus();\n }\n },\n [openState, dialogContext],\n );\n\n const isControlled = typeof open !== \"undefined\";\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (!isControlled) return;\n if (initialRender.current === true) {\n if (open && menuRef.current) {\n openMenu();\n }\n initialRender.current = false;\n return;\n }\n if (open) {\n openMenu();\n } else {\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n // open ? openMenu() : closeMenu();\n }, [closeMenu, isControlled, open, openMenu, dialogContext]);\n\n // Effect to attach eventListener for reading click state from\n // globalThis.MouseEvent for composedPath to detect if target is\n // part of the composedPath, then to attempt to close\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n let isClosable = false;\n const onMouseDownHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n onOutsidePress?.(e);\n isClosable = true;\n }\n };\n const onMouseUpHandler = (e: globalThis.MouseEvent) => {\n if (!invokerRef.current || !menuRef.current) return;\n const isInvoker = e.composedPath().includes(invokerRef.current);\n const isPopover = e.composedPath().includes(menuRef.current);\n if (!isInvoker && !isPopover && openState) {\n if (isControlled || !isClosable || !openState) return;\n\n closeMenu(undefined, { skipInvokerRefocus: true });\n }\n };\n\n document.addEventListener(\"mousedown\", onMouseDownHandler);\n document.addEventListener(\"mouseup\", onMouseUpHandler);\n return () => {\n document.removeEventListener(\"mousedown\", onMouseDownHandler);\n document.removeEventListener(\"mouseup\", onMouseUpHandler);\n };\n }, [isControlled, openState, onOutsidePress, closeMenu]);\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!openState || !childrenRef.current || menuContext) return;\n if (e.code === \"Escape\") {\n e.stopPropagation();\n e.preventDefault();\n closeMenu();\n }\n\n const currentActiveIndex = focusItems?.findIndex(\n (item) => item.id === getActiveElement(document)?.id,\n );\n\n const firstItem = focusItems?.[0] as HTMLElement;\n const lastItem = focusItems?.[focusItems.length - 1] as HTMLElement;\n\n if (e.code === \"ArrowDown\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === (focusItems?.length ?? 0) - 1) {\n firstItem.focus();\n return;\n }\n const nextItem = focusItems?.[\n (currentActiveIndex ?? 0) + 1\n ] as HTMLElement;\n nextItem.focus();\n return;\n }\n if (e.code === \"ArrowUp\") {\n e.stopPropagation();\n e.preventDefault();\n if (currentActiveIndex === 0) {\n lastItem.focus();\n return;\n }\n const prevItem = focusItems?.[\n (currentActiveIndex ?? 0) - 1\n ] as HTMLElement;\n prevItem.focus();\n return;\n }\n };\n\n const value = useMemo(() => {\n return {\n disableAutoHeight,\n closeRootMenu: menuContext?.closeRootMenu ?? closeMenu,\n };\n }, [disableAutoHeight, menuContext, closeMenu]);\n\n const MenuButtonOnKeyDownHandler = (\n e: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (e.code === \"ArrowDown\") {\n focusItems?.[0].focus();\n e.stopPropagation();\n e.preventDefault();\n }\n };\n const MenuButtonOnClick = () => {\n if (isControlled) return;\n if (openState) {\n closeMenu();\n return;\n }\n openMenu();\n };\n\n const data = {\n label: childrenToString(props.label),\n };\n\n const trackingId = useTrackingId({\n name: \"Menu\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (menuContext) {\n return (\n <MenuContext.Provider value={value}>\n <MenuNested\n data-tracking-id={trackingId}\n open={open}\n defaultOpen={defaultOpen}\n className={props.className}\n icon={props.icon}\n label={label}\n >\n {children}\n </MenuNested>\n </MenuContext.Provider>\n );\n }\n return (\n <MenuContext.Provider value={value}>\n {trigger ? (\n trigger({\n ref: invokerRef,\n onClick: () => MenuButtonOnClick(),\n onKeyDown: MenuButtonOnKeyDownHandler,\n \"aria-haspopup\": true,\n \"aria-controls\": `menu-${uid.replace(/:/g, \"\")}`,\n \"aria-expanded\": openState,\n \"data-state\": openState ? \"open\" : \"close\",\n })\n ) : (\n <Button\n ref={invokerRef}\n onClick={MenuButtonOnClick}\n onKeyDown={MenuButtonOnKeyDownHandler}\n aria-haspopup={true}\n aria-controls={`menu-${uid.replace(/:/g, \"\")}`}\n data-state={openState ? \"open\" : \"close\"}\n aria-expanded={openState}\n {...rest}\n >\n {label}\n </Button>\n )}\n <div\n popover=\"manual\"\n id={`menu-${uid.replace(/:/g, \"\")}`}\n data-anv=\"menu-content\"\n className={cx(styles.content, contentClassName)}\n onKeyDown={onKeyDownHandler}\n ref={menuRef}\n role=\"presentation\"\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon svg={Up} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n <div\n className={styles.scroller}\n tabIndex={-1}\n ref={childrenRef}\n style={{\n position: \"relative\",\n maxHeight: maxHeight\n ? `${Math.min(menuHeight ?? Infinity, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : (menuHeight ?? \"inherit\"),\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n role=\"menu\"\n id={`scroller-${uid.replace(/:/g, \"\")}`}\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon svg={Down} size=\"xlarge\" className={styles[\"arrow-icon\"]} />\n </div>\n )}\n </div>\n </MenuContext.Provider>\n );\n },\n {\n /**\n * MenuItem component for individual menu options.\n *\n * Features:\n * - Supports icons and labels\n * - Keyboard navigation support\n * - Disabled state handling\n * - Automatic menu closing on selection\n * - Fully accessible with proper ARIA attributes\n * - Focus management and tab index handling\n * - Click and mouse enter event handling\n *\n * @example\n * <Menu.Item\n * label=\"Edit Profile\"\n * icon={EditIcon}\n * onClick={() => console.log('Edit profile clicked')}\n * />\n */\n Item: MenuItem,\n },\n);\n"],"names":["styles","Next","Up","Down"],"mappings":";;;;;;;;;;;;;;;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6GAA6G,EAAE,CAAC,CAAC;;ACgB9U,MAAM,WAAA,GAAc,cAAuC,IAAI,CAAA;;AC4C/D,MAAM,QAAA,GAAW,UAAA,CAGtB,CAAC,KAAA,EAAO,GAAA,KAAQ;AAChB,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,EAAA,EAAI,MAAA;AAAA,IACJ,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAC1C,EAAA,MAAM,MAAM,KAAA,EAAM;AAClB,EAAA,MAAM,SAAA,GAAY,OAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,CAAC,SAAA,EAAW,GAAG,CAAC,CAAA;AACjD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,SAAS,EAAA,CAAG,CAACA,WAAO,MAAM,CAAC,GAAG,SAAS,CAAA;AAC7C,EAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAqC;AAC3D,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA;AAAA,IACF;AACA,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAA,WAAA,EAAa,aAAA,EAAc;AAAA,EAC7B,CAAA;AACA,EAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAqC;AAChE,IAAA,YAAA,GAAe,CAAC,CAAA;AAChB,IAAA,SAAA,CAAU,SAAS,KAAA,EAAM;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,WAAA,CAAY,CAAC,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK;AAAA,GACrC;AAEA,EAAA,MAAM,aAAa,aAAA,CAAc;AAAA,IAC/B,IAAA,EAAM,UAAA;AAAA,IACN,IAAA;AAAA,IACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,GACxC,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,kBAAA,EAAkB,UAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MACJ,GAAA,EAAK,WAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,UAAA,EAAS,WAAA;AAAA,MACT,IAAI,MAAA,IAAU,CAAA,SAAA,EAAY,IAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,MAC/C,SAAA,EAAW,MAAA;AAAA,MACX,QAAA;AAAA,MACA,eAAA,EAAe,QAAA;AAAA,MACf,OAAA,EAAS,cAAA;AAAA,MACT,YAAA,EAAc,mBAAA;AAAA,MACd,OAAA,EAAS,cAAA;AAAA,MACT,MAAA,EAAQ,aAAA;AAAA,MAEP,QAAA,EAAA;AAAA,QAAA,IAAA,mBAAO,GAAA,CAAC,QAAK,OAAA,EAAO,IAAA,EAAC,eAAW,IAAA,EAAC,GAAA,EAAK,MAAM,CAAA,GAAK,IAAA;AAAA,QACjD;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,QAAA,CAAS,WAAA,GAAc,UAAA;;ACtIvB,MAAM,eAAe,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oJAAoJ,EAAE,CAAC,CAAC;;AC8EtX,MAAM,UAAA,GAAa,CAAC,KAAA,KAA2B;AACpD,EAAA,MAAM,EAAE,UAAU,IAAA,EAAM,WAAA,GAAc,OAAO,KAAA,EAAO,SAAA,EAAW,MAAK,GAAI,KAAA;AACxE,EAAA,MAAM,MAAM,KAAA,EAAM;AAClB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAAkB,QAAQ,WAAW,CAAA;AACvE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,EAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,EAAwB;AAC5D,EAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAK1C,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,OAAO,WAAA,EAAa,oBAChB,CAAC,aAAa,IACd,CAAC,aAAA,EAAe,WAAA,EAAa,YAAA,EAAc,UAAU,CAAA;AAAA,EAC3D,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAEnC,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,IAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,MACnD,SAAA,EAAW,aAAA;AAAA,MACX,UAAA,EAAY;AAAA,QACV,MAAA,CAAO;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,aAAA,EAAe;AAAA,SAChB,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,gBAAA,EAAkB,SAAA;AAAA,UAClB,oBAAoB,WAAA;AAAY,SACjC,CAAA;AAAA,QACD,KAAA,CAAM;AAAA,UACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,UACxB,SAAA,EAAW,KAAA;AAAA,UACX,SAAS,UAAA,CAAW;AAAA,YAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,WACzB;AAAA,SACF,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,OAAA,EAAS,CAAA;AAAA,UACT,KAAA,CAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,UAAS,EAAG;AACnD,YAAA,IAAI,aAAa,iBAAA,EAAmB;AACpC,YAAA,MAAM,YAAY,eAAA,GAAkB,EAAA;AACpC,YAAA,IAAI,KAAK,GAAA,CAAA,CAAK,UAAA,IAAc,CAAA,IAAK,SAAS,IAAI,CAAA,EAAG;AAC/C,cAAA,aAAA,CAAc,SAAS,CAAA;AACvB,cAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,gBACrC,QAAA,EAAU,CAAA,EAAG,cAAA,GAAiB,EAAE,CAAA,EAAA,CAAA;AAAA,gBAChC,SAAA,EAAW,GAAG,SAAS,CAAA,EAAA;AAAA,eACxB,CAAA;AAAA,YACH;AAAA,UACF;AAAA,SACD;AAAA;AACH,KACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,QACV,GAAA,EAAK,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA;AAAA,OACd,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,GAAG,CAAC,WAAA,EAAa,WAAA,EAAa,iBAAA,EAAmB,UAAU,CAAC,CAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,OAA8B,IAAI,CAAA;AACxD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,aAAA,CAAc,IAAI,CAAA;AAClB,MAAA,YAAA,CAAa,CAAC,CAAA;AACd,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,IAAA,aAAA,CAAc,UAAU,OAAA,CAAQ,OAAA;AAEhC,IAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,KAAuB;AAAA,MACrB,MAAA,EAAQ,cAAc,OAAA,CAAQ,YAAA;AAAA,MAC9B,YAAA,EAAc,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB;AAAA;AAGrD,IAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAgB,YAAA,KAAyB;AAC7D,MAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,MAAA,MAAM,aAAa,YAAA,GAAe,MAAA;AAClC,MAAA,aAAA,CAAc,UAAA,IAAc,WAAA,CAAY,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAC7D,MAAA,WAAA,CAAY,UAAA,IAAc,YAAA,GAAe,MAAA,GAAS,SAAA,GAAY,KAAK,CAAC,CAAA;AAAA,IACtE,CAAA;AAEA,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,MAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,cAAc,OAAA,EAAS;AAEpD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,MACnC;AAEA,MAAA,aAAA,GAAgB,MAAA,CAAO,WAAW,MAAM;AACtC,QAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,EAAS,YAAA,IAAgB,CAAA;AACzD,QAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB,CAAA;AAE7D,QAAA,IAAI,CAAC,SAAA,EAAW;AAKhB,QAAA,YAAA,CAAa,WAAW,eAAe,CAAA;AAAA,MACzC,GAAG,GAAG,CAAA;AAAA,IACR,CAAC,CAAA;AAED,IAAA,IAAI,cAAc,OAAA,EAAS;AACzB,MAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,IACxC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,MACnC;AACA,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,QAAA,CAAS,SAAA,CAAU,cAAc,OAAO,CAAA;AAAA,MAC1C;AACA,MAAA,QAAA,CAAS,UAAA,EAAW;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAIzB,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAC7C,IAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,IAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,IAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,MAAA,SAAA,GAAY,sBAAsB,cAAc,CAAA;AAAA,IAClD,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,SAAA,uBAAgC,SAAS,CAAA;AAC7C,MAAA,OAAA,EAAQ;AAAA,IACV,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,cAAA,EAAgB,SAAS,CAAC,CAAA;AAG9B,EAAA,MAAM,wBAAwB,MAAA,EAAgB;AAM9C,EAAA,MAAM,QAAA,GAAW,YAAY,YAAY;AACvC,IAAA,qBAAA,CAAsB,OAAA,GAAU,IAAA;AAChC,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAG,CAAC,CAAA;AACvD,IAAA,IACE,CAAC,qBAAA,CAAsB,OAAA,IACvB,CAAC,OAAA,CAAQ,OAAA,IACT,CAAC,WAAA,CAAY,OAAA;AAEb,MAAA;AAGF,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,OAAA,GAAU,GAAA;AAChC,IAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAG/B,IAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,IAAA,MAAM,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,MACzD,SAAA,EAAW,aAAA;AAAA,MACX,UAAA,EAAY;AAAA,QACV,MAAA,CAAO;AAAA,UACL,QAAA,EAAU,CAAA;AAAA,UACV,aAAA,EAAe;AAAA,SAChB,CAAA;AAAA,QACD,IAAA,CAAK;AAAA,UACH,gBAAA,EAAkB,SAAA;AAAA,UAClB,oBAAoB,WAAA;AAAY,SACjC,CAAA;AAAA,QACD,KAAA,CAAM;AAAA,UACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,UACxB,SAAA,EAAW,KAAA;AAAA,UACX,SAAS,UAAA,CAAW;AAAA,YAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,WACzB;AAAA,SACF;AAAA;AACH,KACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,QACV,GAAA,EAAK,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA;AAAA,OACd,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,MACvB,YAAY,OAAA,CAAQ,gBAAA;AAAA,QAClB,aAAa,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,qBAAA,EAAwB,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,+CAAA,EAAkD,IAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,UAAA;AAAA;AACxJ,KACF;AACA,IAAA,aAAA,CAAc,UAAU,CAAA;AAGxB,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,OAAA,CAAQ,OAAA,CAAQ,MAAM,OAAA,GAAU,GAAA;AAAA,IAClC,CAAC,CAAA;AAAA,EACH,GAAG,CAAC,GAAA,EAAK,WAAA,EAAa,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAMrD,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,OAAO,EAAA,KAAoB;AACvD,IAAA,qBAAA,CAAsB,OAAA,GAAU,KAAA;AAChC,IAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,GAAG,CAAC,CAAA;AACvD,IAAA,IAAI,qBAAA,CAAsB,OAAA,IAAW,CAAC,OAAA,CAAQ,OAAA,EAAS;AACvD,IAAA,EAAA,IAAK;AACL,IAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAC/B,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,WAAA;AAGrC,EAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAA,EAAc;AACnB,IAAA,IAAI,aAAA,CAAc,YAAY,IAAA,EAAM;AAClC,MAAA,IAAI,IAAA,IAAQ,QAAQ,OAAA,EAAS;AAC3B,QAAA,QAAA,EAAS;AAAA,MACX;AACA,MAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,MAAA;AAAA,IACF;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,QAAA,EAAS;AAAA,IACX,CAAA,MAAO;AACL,MAAA,SAAA,EAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,YAAA,EAAc,IAAA,EAAM,QAAQ,CAAC,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,kBAAkB,YAAA,CAAa,OAAA;AACrC,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AACA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA;AACA,IAAA,eAAA,CAAgB,gBAAA,CAAiB,WAAW,aAAa,CAAA;AACzD,IAAA,eAAA,CAAgB,gBAAA,CAAiB,YAAY,cAAc,CAAA;AAC3D,IAAA,OAAO,MAAM;AACX,MAAA,eAAA,CAAgB,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAC5D,MAAA,eAAA,CAAgB,mBAAA,CAAoB,YAAY,cAAc,CAAA;AAAA,IAChE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAExB,EAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAqC;AAC7D,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAA,CAAY,OAAA,EAAS;AAExC,IAAA,MAAM,qBAAqB,UAAA,EAAY,SAAA;AAAA,MACrC,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAAA,KACpD;AAEA,IAAA,MAAM,SAAA,GAAY,aAAa,CAAC,CAAA;AAChC,IAAA,MAAM,QAAA,GAAW,UAAA,GAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEnD,IAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,MAAA,WAAA,EAAa,aAAA,EAAc;AAAA,IAC7B;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAC1B,MAAA,SAAA,EAAU;AAAA,IACZ;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,kBAAA,KAAA,CAAwB,UAAA,EAAY,MAAA,IAAU,CAAA,IAAK,CAAA,EAAG;AACxD,QAAA,SAAA,CAAU,KAAA,EAAM;AAChB,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,MAAA,QAAA,CAAS,KAAA,EAAM;AACf,MAAA;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,WAAA,CAAY,CAAC,CAAA;AAAA,EACf,CAAA;AACA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,WAAA,CAAY,EAAE,CAAA;AAAA,EAChB,CAAA;AAEA,EAAA,MAAM,0BAAA,GAA6B,CAAC,CAAA,KAAwC;AAC1E,IAAA,IAAI,CAAA,CAAE,SAAS,YAAA,EAAc;AAC3B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,EAAS;AACT,MAAA,MAAM,SAAA,GAAY,QAAQ,OAAA,EAAS,gBAAA;AAAA,QACjC,CAAA,UAAA,EAAa,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,qBAAA,EAAwB,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,UAAA;AAAA,QAC/E,CAAC,CAAA;AACH,MAAC,UAAgC,KAAA,EAAM;AAAA,IACzC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,YAAA,EAAc;AAClB,IAAA,QAAA,EAAS;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,SAAS,EAAA,CAAG,CAACA,WAAO,MAAM,CAAC,GAAG,SAAS,CAAA;AAE7C,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,eAAY,MAAA,EAClC,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,UAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAY,YAAY,MAAA,GAAS,OAAA;AAAA,QACjC,GAAA,EAAK,UAAA;AAAA,QACL,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QACrC,eAAA,EAAe,SAAA;AAAA,QACf,YAAA,EAAc,CAAC,CAAA,KAAM;AACnB,UAAA,CAAA,CAAE,cAAc,KAAA,EAAM;AAAA,QACxB,CAAA;AAAA,QACA,SAAA,EAAW,0BAAA;AAAA,QACX,OAAA,EAAS,cAAA;AAAA,QACT,MAAA,EAAQ,aAAA;AAAA,QACR,OAAA,EAAS,iBAAA;AAAA,QACT,eAAA,EAAe,IAAA;AAAA,QACf,iBAAe,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QAC5C,SAAA,EAAW,MAAA;AAAA,QACX,QAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,mBAAO,GAAA,CAAC,QAAK,OAAA,EAAO,IAAA,EAAC,eAAW,IAAA,EAAC,GAAA,EAAK,MAAM,CAAA,GAAK,IAAA;AAAA,UACjD,KAAA;AAAA,8BACA,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,GAAE,EAAG,CAAA;AAAA,0BAC7B,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,KAAKC,eAAA,EAAM;AAAA;AAAA;AAAA,KAC/B;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,MAAA;AAAA,QACR,IAAI,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QACjC,UAAA,EAAS,cAAA;AAAA,QACT,WAAWD,UAAA,CAAO,OAAA;AAAA,QAClB,GAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAK,cAAA;AAAA,QACL,SAAA,EAAW,gBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,UAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,WAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKE,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAWF,UAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAWA,UAAA,CAAO,QAAA;AAAA,cAClB,QAAA,EAAU,EAAA;AAAA,cACV,GAAA,EAAK,WAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,WAAW,UAAA,IAAc;AAAA,eAC3B;AAAA,cACA,UAAU,CAAC,CAAA,KACT,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,cAExC,IAAA,EAAK,MAAA;AAAA,cACL,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,cAEpC;AAAA;AAAA,WACH;AAAA,UACC,4BACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAWA,UAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKG,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAWH,UAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ,CAAA;;AC3YO,MAAM,OAAO,MAAA,CAAO,MAAA;AAAA,EACzB,SAAS,UAAU,KAAA,EAAkB;AACnC,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA,GAAY,cAAA;AAAA,MACZ,IAAA;AAAA,MACA,WAAA,GAAc,KAAA;AAAA,MACd,iBAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,MAAM,KAAA,EAAM;AAClB,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,QAAA,CAAkB,QAAQ,WAAW,CAAA;AACvE,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAwB,IAAI,CAAA;AAChE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAC9C,IAAA,MAAM,UAAA,GAAa,OAA0B,IAAI,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,IAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAC/C,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,EAAwB;AAC5D,IAAA,MAAM,aAAA,GAAgB,WAAW,aAAa,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,WAAW,WAAW,CAAA;AAI1C,IAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,MAAA,IAAI,SAAA,CAAU,UAAA,CAAW,KAAK,CAAA,EAAG;AAC/B,QAAA,OAAO,iBAAA,GACH,CAAC,SAAS,CAAA,GACV,CAAC,WAAA,EAAa,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAAA,MAC3D;AACA,MAAA,OAAO,iBAAA,GACH,CAAC,SAAS,CAAA,GACV,CAAC,cAAA,EAAgB,YAAA,EAAc,aAAa,SAAS,CAAA;AAAA,IAC3D,CAAA,EAAG,CAAC,iBAAA,EAAmB,SAAS,CAAC,CAAA;AAGjC,IAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,MAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,QACnD,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,UACV,MAAA,CAAO;AAAA,YACL,QAAA,EAAU,CAAA;AAAA,YACV,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,gBAAA,EAAkB,SAAA;AAAA,YAClB,oBAAoB,WAAA,EAAY;AAAA,YAChC,OAAA,EAAS;AAAA;AAAA,WACV,CAAA;AAAA,UACD,KAAA,CAAM;AAAA,YACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,YACxB,SAAA,EAAW,KAAA;AAAA,YACX,SAAS,UAAA,CAAW;AAAA,cAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,aACzB;AAAA,WACF,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,OAAA,EAAS,CAAA;AAAA,YACT,KAAA,CAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,UAAS,EAAG;AACnD,cAAA,IAAI,iBAAA,IAAqB,aAAa,iBAAA,EAAmB;AACzD,cAAA,MAAM,YAAY,eAAA,GAAkB,EAAA;AACpC,cAAA,IAAI,KAAK,GAAA,CAAA,CAAK,UAAA,IAAc,CAAA,IAAK,SAAS,IAAI,CAAA,EAAG;AAC/C,gBAAA,aAAA,CAAc,SAAS,CAAA;AACvB,gBAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,kBACrC,QAAA,EAAU,CAAA,EAAG,cAAA,GAAiB,EAAE,CAAA,EAAA,CAAA;AAAA,kBAChC,WAAW,SAAA,GACP,CAAA,EAAG,KAAK,GAAA,CAAI,SAAA,EAAW,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,QAAA,CAAS,UAAU,QAAA,EAAU,CAAC,CAAC,CAAA,EAAA,CAAA,GAClG,GAAG,SAAS,CAAA,EAAA;AAAA,iBACjB,CAAA;AAAA,cACH;AAAA,YACF;AAAA,WACD;AAAA;AACH,OACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,UACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,UACV,GAAA,EAAK,GAAG,CAAC,CAAA,EAAA;AAAA,SACV,CAAA;AACD,QAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,UAAA,GAAa,MAAA;AAAA,MACvC,CAAC,CAAA;AAAA,IACH,CAAA,EAAG;AAAA,MACD,SAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAa,iBAAA;AAAA,MACb,iBAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB,OAA8B,IAAI,CAAA;AAExD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,YAAA,CAAa,CAAC,CAAA;AACd,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,MAAA,aAAA,CAAc,UAAU,OAAA,CAAQ,OAAA;AAEhC,MAAA,IAAI,aAAA,GAA+B,IAAA;AACnC,OAAuB;AAAA,QACrB,MAAA,EAAQ,cAAc,OAAA,CAAQ,YAAA;AAAA,QAC9B,YAAA,EAAc,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB;AAAA;AAGrD,MAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAgB,YAAA,KAAyB;AAC7D,QAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,QAAA,MAAM,aAAa,YAAA,GAAe,MAAA;AAClC,QAAA,aAAA,CAAc,UAAA,IAAc,WAAA,CAAY,OAAA,CAAQ,SAAA,GAAY,CAAC,CAAA;AAC7D,QAAA,WAAA,CAAY,UAAA,IAAc,YAAA,GAAe,MAAA,GAAS,SAAA,GAAY,KAAK,CAAC,CAAA;AAAA,MACtE,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM;AACxC,QAAA,IAAI,CAAC,WAAA,CAAY,OAAA,IAAW,CAAC,cAAc,OAAA,EAAS;AAEpD,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,QACnC;AAEA,QAAA,aAAA,GAAgB,MAAA,CAAO,WAAW,MAAM;AACtC,UAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAA,EAAS,YAAA,IAAgB,CAAA;AACzD,UAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,OAAA,EAAS,YAAA,IAAgB,CAAA;AAE7D,UAAA,IAAI,CAAC,SAAA,EAAW;AAKhB,UAAA,YAAA,CAAa,WAAW,eAAe,CAAA;AAAA,QACzC,GAAG,GAAG,CAAA;AAAA,MACR,CAAC,CAAA;AAED,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,MACxC;AAEA,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,aAAA,EAAe;AACjB,UAAA,MAAA,CAAO,aAAa,aAAa,CAAA;AAAA,QACnC;AACA,QAAA,IAAI,cAAc,OAAA,EAAS;AACzB,UAAA,QAAA,CAAS,SAAA,CAAU,cAAc,OAAO,CAAA;AAAA,QAC1C;AACA,QAAA,QAAA,CAAS,UAAA,EAAW;AAAA,MACtB,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAIzB,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAC7C,MAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,MAAA,IAAI,SAAA,GAA2B,IAAA;AAC/B,MAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,QAAA,SAAA,GAAY,sBAAsB,cAAc,CAAA;AAAA,MAClD,CAAC,CAAA;AAED,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,SAAA,uBAAgC,SAAS,CAAA;AAC7C,QAAA,OAAA,EAAQ;AAAA,MACV,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,cAAA,EAAgB,SAAS,CAAC,CAAA;AAO9B,IAAA,MAAM,QAAA,GAAW,YAAY,YAAY;AACvC,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,YAAY,OAAA,EAAS;AAE9C,MAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAG/B,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,MAAA,MAAM,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,QACzD,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,UACV,MAAA,CAAO;AAAA,YACL,QAAA,EAAU,CAAA;AAAA,YACV,aAAA,EAAe;AAAA,WAChB,CAAA;AAAA,UACD,IAAA,CAAK;AAAA,YACH,gBAAA,EAAkB,SAAA;AAAA,YAClB,oBAAoB,WAAA,EAAY;AAAA,YAChC,OAAA,EAAS;AAAA;AAAA,WACV,CAAA;AAAA,UACD,KAAA,CAAM;AAAA,YACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,YACxB,SAAA,EAAW,KAAA;AAAA,YACX,SAAS,UAAA,CAAW;AAAA,cAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,aACzB;AAAA,WACF;AAAA;AACH,OACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,QAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,UACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,UACV,GAAA,EAAK,GAAG,CAAC,CAAA,EAAA;AAAA,SACV,CAAA;AACD,QAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,UAAA,GAAa,MAAA;AAAA,MACvC,CAAC,CAAA;AAED,MAAA,YAAA,CAAa,IAAI,CAAA;AAGjB,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,CAAC,YAAY,OAAA,EAAS;AAC1B,QAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,UACvB,YAAY,OAAA,CAAQ,gBAAA;AAAA,YAClB,aAAa,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,qBAAA,EAAwB,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,+CAAA,EAAkD,IAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,UAAA;AAAA;AACxJ,SACF;AACA,QAAA,aAAA,CAAc,UAAU,CAAA;AAAA,MAC1B,CAAC,CAAA;AAED,MAAA,aAAA,EAAe,oBAAoB,IAAI,CAAA;AAAA,IACzC,CAAA,EAAG;AAAA,MACD,aAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AAMD,IAAA,MAAM,SAAA,GAAY,WAAA;AAAA,MAChB,OAAO,IAAiB,OAAA,KAA+C;AACrE,QAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAC,SAAA,EAAW;AACpC,QAAA,EAAA,IAAK;AACL,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,eAAA,CAAgB,QAAQ,OAAO,CAAA;AAC/B,QAAA,aAAA,EAAe,oBAAoB,KAAK,CAAA;AACxC,QAAA,IAAI,CAAC,SAAS,kBAAA,EAAoB;AAChC,UAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,QAC5B;AAAA,MACF,CAAA;AAAA,MACA,CAAC,WAAW,aAAa;AAAA,KAC3B;AAEA,IAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAAS,WAAA;AAGrC,IAAA,MAAM,aAAA,GAAgB,OAAO,IAAI,CAAA;AACjC,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,IAAI,aAAA,CAAc,YAAY,IAAA,EAAM;AAClC,QAAA,IAAI,IAAA,IAAQ,QAAQ,OAAA,EAAS;AAC3B,UAAA,QAAA,EAAS;AAAA,QACX;AACA,QAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AACxB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,QAAA,EAAS;AAAA,MACX,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,MAAA,EAAW,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA;AAAA,MACnD;AAAA,IAEF,GAAG,CAAC,SAAA,EAAW,cAAc,IAAA,EAAM,QAAA,EAAU,aAAa,CAAC,CAAA;AAK3D,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,MAAA,IAAI,UAAA,GAAa,KAAA;AACjB,MAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAA6B;AACvD,QAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,QAAA,MAAM,YAAY,CAAA,CAAE,YAAA,EAAa,CAAE,QAAA,CAAS,WAAW,OAAO,CAAA;AAC9D,QAAA,MAAM,YAAY,CAAA,CAAE,YAAA,EAAa,CAAE,QAAA,CAAS,QAAQ,OAAO,CAAA;AAC3D,QAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,IAAa,SAAA,EAAW;AACzC,UAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,UAAA,UAAA,GAAa,IAAA;AAAA,QACf;AAAA,MACF,CAAA;AACA,MAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAA6B;AACrD,QAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,QAAA,MAAM,YAAY,CAAA,CAAE,YAAA,EAAa,CAAE,QAAA,CAAS,WAAW,OAAO,CAAA;AAC9D,QAAA,MAAM,YAAY,CAAA,CAAE,YAAA,EAAa,CAAE,QAAA,CAAS,QAAQ,OAAO,CAAA;AAC3D,QAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,IAAa,SAAA,EAAW;AACzC,UAAA,IAAI,YAAA,IAAgB,CAAC,UAAA,IAAc,CAAC,SAAA,EAAW;AAE/C,UAAA,SAAA,CAAU,MAAA,EAAW,EAAE,kBAAA,EAAoB,IAAA,EAAM,CAAA;AAAA,QACnD;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,gBAAgB,CAAA;AACrD,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAC5D,QAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,gBAAgB,CAAA;AAAA,MAC1D,CAAA;AAAA,IACF,GAAG,CAAC,YAAA,EAAc,SAAA,EAAW,cAAA,EAAgB,SAAS,CAAC,CAAA;AAEvD,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAqC;AAC7D,MAAA,IAAI,CAAC,SAAA,IAAa,CAAC,WAAA,CAAY,WAAW,WAAA,EAAa;AACvD,MAAA,IAAI,CAAA,CAAE,SAAS,QAAA,EAAU;AACvB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,SAAA,EAAU;AAAA,MACZ;AAEA,MAAA,MAAM,qBAAqB,UAAA,EAAY,SAAA;AAAA,QACrC,CAAC,IAAA,KAAS,IAAA,CAAK,EAAA,KAAO,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAAA,OACpD;AAEA,MAAA,MAAM,SAAA,GAAY,aAAa,CAAC,CAAA;AAChC,MAAA,MAAM,QAAA,GAAW,UAAA,GAAa,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEnD,MAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,kBAAA,KAAA,CAAwB,UAAA,EAAY,MAAA,IAAU,CAAA,IAAK,CAAA,EAAG;AACxD,UAAA,SAAA,CAAU,KAAA,EAAM;AAChB,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,SAAS,SAAA,EAAW;AACxB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,uBAAuB,CAAA,EAAG;AAC5B,UAAA,QAAA,CAAS,KAAA,EAAM;AACf,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,UAAA,GAAA,CACd,kBAAA,IAAsB,CAAA,IAAK,CAC9B,CAAA;AACA,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM;AAC1B,MAAA,OAAO;AAAA,QACL,iBAAA;AAAA,QACA,aAAA,EAAe,aAAa,aAAA,IAAiB;AAAA,OAC/C;AAAA,IACF,CAAA,EAAG,CAAC,iBAAA,EAAmB,WAAA,EAAa,SAAS,CAAC,CAAA;AAE9C,IAAA,MAAM,0BAAA,GAA6B,CACjC,CAAA,KACG;AACH,MAAA,IAAI,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1B,QAAA,UAAA,GAAa,CAAC,EAAE,KAAA,EAAM;AACtB,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,CAAA,CAAE,cAAA,EAAe;AAAA,MACnB;AAAA,IACF,CAAA;AACA,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,IAAI,YAAA,EAAc;AAClB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,SAAA,EAAU;AACV,QAAA;AAAA,MACF;AACA,MAAA,QAAA,EAAS;AAAA,IACX,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,KAAA,EAAO,gBAAA,CAAiB,KAAA,CAAM,KAAK;AAAA,KACrC;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,MAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,uBACE,GAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAkB,UAAA;AAAA,UAClB,IAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAW,KAAA,CAAM,SAAA;AAAA,UACjB,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,KAAA;AAAA,UAEC;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,uBACE,IAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EACnB,QAAA,EAAA;AAAA,MAAA,OAAA,GACC,OAAA,CAAQ;AAAA,QACN,GAAA,EAAK,UAAA;AAAA,QACL,OAAA,EAAS,MAAM,iBAAA,EAAkB;AAAA,QACjC,SAAA,EAAW,0BAAA;AAAA,QACX,eAAA,EAAiB,IAAA;AAAA,QACjB,iBAAiB,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,QAC9C,eAAA,EAAiB,SAAA;AAAA,QACjB,YAAA,EAAc,YAAY,MAAA,GAAS;AAAA,OACpC,CAAA,mBAED,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,UAAA;AAAA,UACL,OAAA,EAAS,iBAAA;AAAA,UACT,SAAA,EAAW,0BAAA;AAAA,UACX,eAAA,EAAe,IAAA;AAAA,UACf,iBAAe,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,UAC5C,YAAA,EAAY,YAAY,MAAA,GAAS,OAAA;AAAA,UACjC,eAAA,EAAe,SAAA;AAAA,UACd,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBAEF,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,QAAA;AAAA,UACR,IAAI,CAAA,KAAA,EAAQ,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,UACjC,UAAA,EAAS,cAAA;AAAA,UACT,SAAA,EAAW,EAAA,CAAGA,UAAA,CAAO,OAAA,EAAS,gBAAgB,CAAA;AAAA,UAC9C,SAAA,EAAW,gBAAA;AAAA,UACX,GAAA,EAAK,OAAA;AAAA,UACL,IAAA,EAAK,cAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,YAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,WAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKE,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAWF,UAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,4BAEF,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,WAAWA,UAAA,CAAO,QAAA;AAAA,gBAClB,QAAA,EAAU,EAAA;AAAA,gBACV,GAAA,EAAK,WAAA;AAAA,gBACL,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,UAAA;AAAA,kBACV,WAAW,SAAA,GACP,CAAA,EAAG,KAAK,GAAA,CAAI,UAAA,IAAc,UAAU,OAAO,SAAA,KAAc,QAAA,GAAW,SAAA,GAAY,SAAS,SAAA,CAAU,QAAA,EAAU,CAAC,CAAC,OAC9G,UAAA,IAAc;AAAA,iBACrB;AAAA,gBACA,UAAU,CAAC,CAAA,KACT,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,gBAExC,IAAA,EAAK,MAAA;AAAA,gBACL,IAAI,CAAA,SAAA,EAAY,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAAA,gBAEpC;AAAA;AAAA,aACH;AAAA,YACC,4BACC,GAAA,CAAC,KAAA,EAAA,EAAI,WAAWA,UAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKG,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAWH,UAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAoBE,IAAA,EAAM;AAAA;AAEV;;;;"}
|
package/dist/Menu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as Menu, M as default } from './Menu-
|
|
1
|
+
export { M as Menu, M as default } from './Menu-qcHhgf-t.js';
|
|
2
2
|
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import './Menu.css';const content = "_content_1mjgd_1";
|
|
2
|
+
const scroller = "_scroller_1mjgd_54";
|
|
3
|
+
const item = "_item_1mjgd_69";
|
|
4
|
+
const menuStyles = {
|
|
5
|
+
content: content,
|
|
6
|
+
scroller: scroller,
|
|
7
|
+
item: item,
|
|
8
|
+
"arrow-down": "_arrow-down_1mjgd_117",
|
|
9
|
+
"arrow-up": "_arrow-up_1mjgd_118",
|
|
10
|
+
"arrow-icon": "_arrow-icon_1mjgd_132"};
|
|
11
|
+
|
|
12
|
+
export { menuStyles as m };
|
|
13
|
+
//# sourceMappingURL=Menu.module-CoyI86tZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.module-CoyI86tZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { B as Button } from './Button-
|
|
2
|
+
import { B as Button } from './Button-ChQARW0y.js';
|
|
3
3
|
|
|
4
4
|
import './MenuFooter.css';const stack = "_stack_o8ro5_1";
|
|
5
5
|
const leading = "_leading_o8ro5_26";
|
|
@@ -112,4 +112,4 @@ const MenuFooter = ({
|
|
|
112
112
|
MenuFooter.displayName = "MenuFooter";
|
|
113
113
|
|
|
114
114
|
export { MenuFooter as M };
|
|
115
|
-
//# sourceMappingURL=MenuFooter-
|
|
115
|
+
//# sourceMappingURL=MenuFooter-Dtckm9vY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuFooter-
|
|
1
|
+
{"version":3,"file":"MenuFooter-Dtckm9vY.js","sources":["../src/internal/components/MenuFooter/MenuFooter.tsx"],"sourcesContent":["import { MouseEvent, ReactNode } from \"react\";\nimport Button from \"../../../components/Button\";\nimport styles from \"./MenuFooter.module.scss\";\n\n// Safari does not focus buttons on mousedown the way Chrome / Firefox do.\n// Combined with the popover's focusout listener, that means clicking a footer\n// button can fire focusout with relatedTarget=null and close the popover\n// before the click handler runs. Preventing the default on mousedown keeps the\n// previously focused element focused, sidestepping the focusout entirely.\nconst preventBlur = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n};\n\nexport type MenuFooterClearConfig = {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n};\n\nexport type MenuFooterConfirmationConfig = {\n onApply: () => void;\n onCancel: () => void;\n applyLabel?: string;\n cancelLabel?: string;\n applyDisabled?: boolean;\n};\n\nexport type MenuFooterProps = {\n /** Clear-selection button config. Omit to suppress. */\n clear?: MenuFooterClearConfig;\n /** Apply/Cancel pair config. Omit when not in confirmation mode. */\n confirmation?: MenuFooterConfirmationConfig;\n /**\n * Pre-rendered add-new affordance (AddNewItemButton or similar). Layout owns\n * its row vs. inline placement; the caller just provides the node.\n */\n addNew?: ReactNode;\n};\n\nconst ClearButton = ({\n onClick,\n label = \"Clear\",\n disabled,\n fullWidth,\n}: MenuFooterClearConfig & { fullWidth?: boolean }) => (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onClick}\n disabled={disabled}\n className={fullWidth ? styles[\"clear-full\"] : undefined}\n >\n {label}\n </Button>\n);\n\n/**\n * Single justified-flex row containing the Apply/Cancel pair, with an optional\n * leading element on the opposite side.\n */\nconst ConfirmationRow = ({\n applyLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n onApply,\n onCancel,\n applyDisabled,\n leading,\n}: MenuFooterConfirmationConfig & { leading?: ReactNode }) => (\n <div className={styles[\"confirmation-row\"]}>\n {leading ? <div className={styles[\"leading\"]}>{leading}</div> : null}\n <div className={styles[\"trailing\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onCancel}\n >\n {cancelLabel}\n </Button>\n <Button\n appearance=\"primary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onApply}\n disabled={applyDisabled}\n >\n {applyLabel}\n </Button>\n </div>\n </div>\n);\n\n/**\n * MenuFooter composes the footer of a menu popover/dialog from up to three\n * optional pieces: a clear-selection button, an Apply/Cancel pair, and an\n * add-new affordance.\n *\n * Layout rules:\n * - clear + confirmation + addNew → [addNew full-width row] / [clear | apply cancel]\n * - clear + confirmation → [clear | apply cancel]\n * - clear + addNew → [addNew] / [clear] (stacked, both full-width)\n * - clear → [clear] (full-width)\n * - confirmation + addNew → [addNew | apply cancel] (addNew on the leading side)\n * - confirmation → [apply | cancel]\n * - addNew → [addNew]\n * - (none) → null\n */\nexport const MenuFooter = ({\n clear,\n confirmation,\n addNew,\n}: MenuFooterProps) => {\n // Branches with confirmation\n if (confirmation) {\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n </div>\n );\n }\n if (clear) {\n return (\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n );\n }\n return <ConfirmationRow {...confirmation} leading={addNew} />;\n }\n\n // Branches without confirmation\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n </div>\n );\n }\n if (clear) {\n return (\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n );\n }\n if (addNew) {\n return <>{addNew}</>;\n }\n return null;\n};\n\nMenuFooter.displayName = \"MenuFooter\";\n"],"names":[],"mappings":"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"}
|
package/dist/MultiSelectField.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-
|
|
1
|
+
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-DNJ1TBf8.js';
|
|
2
2
|
//# sourceMappingURL=MultiSelectField.js.map
|