@servicetitan/anvil2 1.46.1 → 1.46.2
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 +24 -0
- package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
- package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
- package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
- package/dist/Avatar-CyGjhToG.js.map +1 -1
- package/dist/Avatar-D07f9NH_.js.map +1 -1
- package/dist/Badge-DCA9mfc2.js.map +1 -1
- package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
- package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
- package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
- package/dist/Button.css +48 -48
- package/dist/Button.js +1 -1
- package/dist/Button.module-C1g9rrJs.js +25 -0
- package/dist/Button.module-C1g9rrJs.js.map +1 -0
- package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
- package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
- package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
- package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BQ5F2ENO.js → Calendar-X9qUi6Vx.js} +269 -123
- package/dist/Calendar-X9qUi6Vx.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/Card-vTYeSkxt.js.map +1 -1
- package/dist/{Checkbox-DDrmVC-u.js → Checkbox-BDohwHXQ.js} +2 -2
- package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-BDohwHXQ.js.map} +1 -1
- package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-CcYtto5f.js} +2 -2
- package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-CcYtto5f.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/Chip-Bz-vlQ4D.js.map +1 -1
- package/dist/{Combobox-B9nesJuc.js → Combobox-DQmW8Tyl.js} +144 -53
- package/dist/Combobox-DQmW8Tyl.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-DXxPsRtf.js → DateField-C43nfkbx.js} +7 -7
- package/dist/{DateField-DXxPsRtf.js.map → DateField-C43nfkbx.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-g7n5QYww.js} +8 -8
- package/dist/{DateFieldRange-Xauviu1w.js.map → DateFieldRange-g7n5QYww.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-D3tneqeG.js} +8 -8
- package/dist/{DateFieldSingle-yLnwpVzd.js.map → DateFieldSingle-D3tneqeG.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-3JBVj3wn.js} +4 -4
- package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-3JBVj3wn.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-RcPgDoM3.js} +4 -4
- package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-RcPgDoM3.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/Details-CF8DImjw.js.map +1 -1
- package/dist/{Dialog-CgkrvrQu.js → Dialog-FNJ16gY6.js} +6 -6
- package/dist/{Dialog-CgkrvrQu.js.map → Dialog-FNJ16gY6.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Divider-DJe8kLf2.js.map +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +2 -2
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CM4ZbAro.js → Drawer-DT31CMRd.js} +6 -6
- package/dist/{Drawer-CM4ZbAro.js.map → Drawer-DT31CMRd.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
- package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
- package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
- package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-BP8QK5UR.js} +2 -2
- package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-BP8QK5UR.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
- package/dist/Flex-BdQMekvA.js.map +1 -1
- package/dist/Grid-MGUC698u.js.map +1 -1
- package/dist/Helper-BkIDJqgA.js.map +1 -1
- package/dist/Icon-D8SPKeO4.js.map +1 -1
- package/dist/{InputMask-_F139qFu.js → InputMask-CPuYMcw9.js} +3 -3
- package/dist/{InputMask-_F139qFu.js.map → InputMask-CPuYMcw9.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/Layout-CUUb2PVr.js.map +1 -1
- package/dist/Link-eRsLWPaQ.js.map +1 -1
- package/dist/LinkButton-2lXfrVoU.js.map +1 -1
- package/dist/{ListView-pb3rIcze.js → ListView-BJI8BQJ-.js} +2 -2
- package/dist/{ListView-pb3rIcze.js.map → ListView-BJI8BQJ-.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/Listbox-CUhMbFm2.js.map +1 -1
- package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
- package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
- package/dist/{Menu-DEVZz9xZ.js → Menu-t_11BIhU.js} +3 -3
- package/dist/{Menu-DEVZz9xZ.js.map → Menu-t_11BIhU.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-CkZZrkYC.js → NumberField-Bjf9Tyvf.js} +6 -6
- package/dist/{NumberField-CkZZrkYC.js.map → NumberField-Bjf9Tyvf.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-BMDkbDcU.js → Page-BAyXnhz2.js} +9 -9
- package/dist/Page-BAyXnhz2.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BJsCppgW.js → Pagination-DCBic619.js} +47 -23
- package/dist/Pagination-DCBic619.js.map +1 -0
- package/dist/Pagination.css +6 -6
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-r26xMIfm.js → Popover-CrksxqKk.js} +11 -5
- package/dist/Popover-CrksxqKk.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
- package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-CgsAW2d8.js} +2 -2
- package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-CgsAW2d8.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C89VCMXd.js → Radio-C_rvxw74.js} +2 -2
- package/dist/{Radio-C89VCMXd.js.map → Radio-C_rvxw74.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-DxBblSrx.js} +2 -2
- package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-DxBblSrx.js.map} +1 -1
- package/dist/SearchField-Bb0uObwG.js.map +1 -1
- package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-DC4BpdH5.js} +3 -3
- package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-DC4BpdH5.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-BTYZg9TG.js → SelectCard-DunNE9R3.js} +3 -3
- package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-DunNE9R3.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-BYysLREL.js} +2 -2
- package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-BYysLREL.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-DqUpJgzk.js} +3 -3
- package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-DqUpJgzk.js.map} +1 -1
- package/dist/{SideNav-CBAzYyML.js → SideNav-B9AWmF_H.js} +2 -2
- package/dist/SideNav-B9AWmF_H.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Spinner-wmO8Epw0.js.map +1 -1
- package/dist/SrOnly-CTsYSuby.js.map +1 -1
- package/dist/{Stepper-D-fOH9TF.js → Stepper-DHTrvfXw.js} +3 -3
- package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DHTrvfXw.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/Switch-C2ddZcr9.js.map +1 -1
- package/dist/{Tab-wNucMTgo.js → Tab-0zx9hsw8.js} +44 -36
- package/dist/Tab-0zx9hsw8.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Text-BqvcbXyp.js.map +1 -1
- package/dist/{TextField-D8fow9j7.js → TextField-CFWs3lm9.js} +2 -2
- package/dist/{TextField-D8fow9j7.js.map → TextField-CFWs3lm9.js.map} +1 -1
- package/dist/{TextField-BiHxlzE3.js → TextField-Cge6IRo5.js} +2 -2
- package/dist/{TextField-BiHxlzE3.js.map → TextField-Cge6IRo5.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-BdVJJlbP.js → Textarea-CXd3NKkW.js} +2 -2
- package/dist/{Textarea-BdVJJlbP.js.map → Textarea-CXd3NKkW.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
- package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
- package/dist/{TimeField-CmbErrsZ.js → TimeField-4v5aCwiG.js} +345 -355
- package/dist/TimeField-4v5aCwiG.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-9cpG_tWR.js → Toaster-D-rNSLTq.js} +17 -17
- package/dist/{Toaster-9cpG_tWR.js.map → Toaster-D-rNSLTq.js.map} +1 -1
- package/dist/{Toaster-B7zUwJOt.js → Toaster-bON5Xc1P.js} +2 -2
- package/dist/{Toaster-B7zUwJOt.js.map → Toaster-bON5Xc1P.js.map} +1 -1
- package/dist/{Toolbar-D4zuUFhb.js → Toolbar-B2Jsuptz.js} +14 -14
- package/dist/{Toolbar-D4zuUFhb.js.map → Toolbar-B2Jsuptz.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BI3Xs75X.js → Tooltip-CtCLw_vx.js} +8 -2
- package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-CtCLw_vx.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
- package/dist/beta.js +1 -1
- package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
- package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
- package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
- package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
- package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
- package/dist/components/TimeField/TimeField.d.ts +4 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
- package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
- package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
- package/dist/index-tZvMCc77.js.map +1 -1
- package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
- package/dist/index.esm-BwMVvxTV.js.map +1 -0
- package/dist/index.js +45 -45
- package/dist/index.js.map +1 -1
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
- package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
- package/dist/proxy-BbFHSE6L.js.map +1 -0
- package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
- package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
- package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
- package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
- package/dist/{useDateFieldOrchestration-BNJCsRkS.js → useDateFieldOrchestration-DyAc3gPJ.js} +3 -3
- package/dist/{useDateFieldOrchestration-BNJCsRkS.js.map → useDateFieldOrchestration-DyAc3gPJ.js.map} +1 -1
- package/dist/{useDialogTransitionStates-2NaE_noq.js → useDialogTransitionStates-C1TtiwA_.js} +3 -3
- package/dist/{useDialogTransitionStates-2NaE_noq.js.map → useDialogTransitionStates-C1TtiwA_.js.map} +1 -1
- package/dist/useFocusWithin-BhhgRXdZ.js.map +1 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
- package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
- package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
- package/dist/useMergeRefs-Bde85AWI.js.map +1 -1
- package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-B1ddwORK.js} +5 -2
- package/dist/useOnClickOutside-B1ddwORK.js.map +1 -0
- package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +1 -1
- package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
- package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
- package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
- package/dist/usePrevious-Bvq-5auG.js.map +1 -1
- package/dist/useSize.js.map +1 -1
- package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
- package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
- package/dist/useSwipe.js +1 -1
- package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
- package/dist/useTrackingId.js.map +1 -1
- package/package.json +12 -18
- package/dist/Button.module-pUNSKoVC.js +0 -25
- package/dist/Button.module-pUNSKoVC.js.map +0 -1
- package/dist/Calendar-BQ5F2ENO.js.map +0 -1
- package/dist/Combobox-B9nesJuc.js.map +0 -1
- package/dist/DrawerContext-DboTgTmo.js.map +0 -1
- package/dist/Page-BMDkbDcU.js.map +0 -1
- package/dist/Pagination-BJsCppgW.js.map +0 -1
- package/dist/Popover-r26xMIfm.js.map +0 -1
- package/dist/SideNav-CBAzYyML.js.map +0 -1
- package/dist/Tab-wNucMTgo.js.map +0 -1
- package/dist/TimeField-CmbErrsZ.js.map +0 -1
- package/dist/index.esm-D889iexm.js.map +0 -1
- package/dist/proxy-CreWmH-e.js.map +0 -1
- package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
- package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu-DEVZz9xZ.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../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 * 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 { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\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 { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\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 }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\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, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\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 * - Legacy popover support with fallback\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 if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\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 {\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 const timeoutId = setTimeout(() => {\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;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${availableHeight - 16}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 }, 50);\n return () => clearTimeout(timeoutId);\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 setMenuHeight(newHeight);\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\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\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 nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\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 forwardRef,\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 {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\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\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\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 const timeoutId = setTimeout(() => {\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;\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(availableHeight - 16, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${availableHeight - 16}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 }, 50);\n return () => clearTimeout(timeoutId);\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 setMenuHeight(newHeight);\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\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\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) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\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();\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();\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 (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\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 \"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\nMenuElement.displayName = \"Menu\";\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 * - Popover API support with legacy fallback\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(MenuElement, {\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"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu-t_11BIhU.js","sources":["../../hammer-icon/mdi/round/arrow_drop_up.svg","../src/components/Menu/internal/MenuContext.ts","../../hammer-icon/mdi/round/navigate_next.svg","../src/components/Menu/internal/MenuLegacy/MenuLegacyContext.ts","../src/components/Menu/internal/MenuLegacy/MenuLegacyItem.tsx","../src/components/Menu/internal/MenuLegacy/MenuLegacy.tsx","../src/components/Menu/MenuItem.tsx","../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 * 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 { Dispatch, HTMLProps, SetStateAction, createContext } from \"react\";\n\nimport { PopoverControlProps } from \"./MenuLegacy\";\n\nexport const MenuLegacyContext = createContext<\n {\n getItemProps: (\n userProps?: HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n activeIndex: number | null;\n setActiveIndex?: Dispatch<SetStateAction<number | null>>;\n setHasFocusInside?: Dispatch<SetStateAction<boolean>>;\n isOpen: boolean;\n } & PopoverControlProps\n>({\n getItemProps: () => ({}),\n activeIndex: null,\n isOpen: false,\n});\n","import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport {\n ButtonHTMLAttributes,\n MouseEvent,\n forwardRef,\n useContext,\n FocusEvent,\n ComponentPropsWithoutRef,\n ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString } from \"../../../../internal/functions\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type MenuLegacyItemProps = {\n icon?: IconProps[\"svg\"];\n label: ReactNode;\n disabled?: boolean;\n} & ComponentPropsWithoutRef<\"button\">;\n\nexport const MenuLegacyItem = forwardRef<\n HTMLButtonElement,\n MenuLegacyItemProps & ButtonHTMLAttributes<HTMLButtonElement>\n>(({ label, disabled, icon, className, ...props }, forwardedRef) => {\n const MenuLegacy = useContext(MenuLegacyContext);\n const item = useListItem({\n label: disabled ? null : childrenToString(label),\n });\n const tree = useFloatingTree();\n const isActive = item.index === MenuLegacy.activeIndex;\n const itemCx = cx([styles[\"item\"]], className);\n return (\n <button\n {...props}\n ref={useMergeRefs([item.ref, forwardedRef])}\n type=\"button\"\n role=\"menuitem\"\n data-anv=\"menu-item\"\n className={itemCx}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n {...MenuLegacy.getItemProps({\n onClick(event: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(event);\n tree?.events.emit(\"click\");\n },\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n MenuLegacy.setHasFocusInside?.(true);\n },\n })}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {label}\n </button>\n );\n});\n\nMenuLegacyItem.displayName = \"MenuLegacyItem\";\n","import {\n autoUpdate,\n flip,\n FloatingFocusManager,\n FloatingList,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n offset,\n shift,\n size,\n useHover,\n safePolygon,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useInteractions,\n useListItem,\n useListNavigation,\n useRole,\n useTypeahead,\n limitShift,\n Placement,\n} from \"@floating-ui/react\";\nimport {\n forwardRef,\n HTMLProps,\n useContext,\n useEffect,\n useRef,\n useState,\n FocusEvent,\n MouseEvent,\n AriaAttributes,\n ReactElement,\n useMemo,\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 { Button, ButtonProps } from \"../../../Button\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\nimport { Icon, IconProps } from \"../../../Icon\";\nimport { ThemeProvider, PortalProviderContext } from \"../../../../providers\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nimport { MenuLegacyItem } from \"./MenuLegacyItem\";\nimport { MenuLegacyContext } from \"./MenuLegacyContext\";\n\nimport styles from \"./MenuLegacy.module.scss\";\n\nexport type PopoverControlProps = {\n disableAutoHeight?: boolean;\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n placement?: \"bottom-start\" | \"top-start\" | \"bottom-end\" | \"top-end\";\n};\n\ntype TriggerReturnProps = {\n \"data-open\"?: boolean;\n \"data-focus-inside\"?: boolean;\n \"aria-controls\"?: AriaAttributes[\"aria-controls\"];\n \"aria-expanded\"?: AriaAttributes[\"aria-expanded\"];\n \"aria-haspopup\"?: AriaAttributes[\"aria-haspopup\"];\n id?: string;\n onClick?: () => void;\n onFocus?: () => void;\n onKeyDown?: () => void;\n onKeyUp?: () => void;\n onMouseDown?: () => void;\n onPointerDown?: () => void;\n ref?: ((instance: HTMLElement | null) => void) | null;\n};\n\ntype DefaultTriggerProps = {\n trigger?: never;\n open?: boolean;\n icon?: IconProps[\"svg\"];\n} & (\n | {\n label: string;\n }\n | {\n \"aria-label\": string;\n }\n | {\n \"aria-labellbedby\": string;\n }\n) &\n Omit<ButtonProps, \"icon\"> &\n PopoverControlProps;\n\ntype CustomTriggerProps = {\n trigger: (props: TriggerReturnProps) => ReactElement;\n icon?: IconProps[\"svg\"];\n label?: never;\n open?: boolean;\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & Omit<HTMLProps<any>, \"ref\"> &\n PopoverControlProps;\n\nexport type MenuLegacyProps = DefaultTriggerProps | CustomTriggerProps;\n\nexport const MenuLegacyComponent = forwardRef<HTMLElement, MenuLegacyProps>(\n (\n {\n children,\n disableAutoHeight,\n open,\n icon,\n root,\n placement = \"bottom-start\",\n ...props\n },\n forwardedRef,\n ) => {\n const [isOpen, setIsOpen] = useState(!!open || false);\n const [hasFocusInside, setHasFocusInside] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [menuHeight, setMenuLegacyHeight] = useState<number | null>(null);\n const [arrowStart, setArrowStart] = useState(false);\n const [arrowEnd, setArrowEnd] = useState(false);\n\n const elementsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const labelsRef = useRef<Array<string | null>>([]);\n const parent = useContext(MenuLegacyContext);\n const { root: portalRoot } = useContext(PortalProviderContext);\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const item = useListItem();\n\n const isNested = parentId != null;\n\n const { theme, mode = \"light\" } = useContext(ThemeProviderContext);\n\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const fallbackArr = () => {\n if (!isNested) {\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 }\n\n return parent.disableAutoHeight\n ? [\"right-start\"]\n : [\"right-start\", \"right-end\", \"left-start\", \"left-end\"];\n };\n\n const handleIsOpenChange = (internalOpen: boolean) => {\n if (typeof open === \"boolean\") {\n setIsOpen(open);\n return;\n }\n setIsOpen(internalOpen);\n };\n\n const { floatingStyles, refs, context } = useFloating<HTMLButtonElement>({\n nodeId,\n open: isOpen,\n onOpenChange: handleIsOpenChange,\n placement: isNested ? \"right-start\" : placement,\n middleware: [\n offset({\n mainAxis: isNested ? 0 : 4,\n alignmentAxis: isNested ? -4 : 0,\n }),\n flip({\n fallbackStrategy: \"bestFit\",\n fallbackPlacements: fallbackArr() as Placement[],\n }),\n shift({\n mainAxis: !parent.disableAutoHeight,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !parent.disableAutoHeight,\n }),\n }),\n size({\n padding: 8,\n apply({ availableWidth, availableHeight, elements }) {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n setMenuLegacyHeight(availableHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth}px`,\n maxHeight: `${availableHeight}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const [hoverEnabled, setHoverEnabled] = useState(false);\n const hover = useHover(context, {\n enabled: hoverEnabled,\n delay: { open: 75 },\n handleClose: safePolygon({ blockPointerEvents: true }),\n });\n const click = useClick(context, {\n event: \"mousedown\",\n toggle: !isNested,\n ignoreMouse: isNested,\n });\n const role = useRole(context, { role: \"menu\" });\n const dismiss = useDismiss(context, { bubbles: true });\n const listNavigation = useListNavigation(context, {\n listRef: elementsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n });\n const typeahead = useTypeahead(context, {\n listRef: labelsRef,\n onMatch: isOpen ? setActiveIndex : undefined,\n activeIndex,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([hover, click, role, dismiss, listNavigation, typeahead]);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(!!open || false);\n }\n\n function onSubMenuLegacyOpen(event: {\n nodeId: string;\n parentId: string;\n }) {\n if (event.nodeId === nodeId || event.parentId !== parentId) {\n return;\n }\n setIsOpen(!!open || false);\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuLegacyOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuLegacyOpen);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (disableAutoHeight ?? parent.disableAutoHeight) return;\n if (!isOpen) {\n setMenuLegacyHeight(null);\n return;\n }\n setTimeout(() => {\n if (!scrollRef.current || !refs.floating.current) return;\n setMenuLegacyHeight(refs.floating.current.clientHeight);\n const isOverflow =\n scrollRef.current.scrollHeight > refs.floating.current.clientHeight;\n if (!isOverflow) return;\n const showTop = scrollRef.current.scrollTop > 0;\n const showBottom =\n scrollRef.current.scrollHeight -\n refs.floating.current.clientHeight -\n scrollTop -\n 16 >\n 0;\n setArrowStart(showTop);\n setArrowEnd(showBottom);\n }, 0);\n }, [\n disableAutoHeight,\n isOpen,\n parent.disableAutoHeight,\n refs.floating,\n scrollTop,\n ]);\n\n useEffect(() => {\n if (!isOpen || !tree) return;\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }, [tree, isOpen, nodeId, parentId]);\n\n const menuComponentCX = cx({\n [styles[\"nested-menu\"]]: isNested,\n [styles[\"item\"]]: !isNested,\n });\n\n const menuRefs = useMergeRefs([refs.setReference, item.ref, forwardedRef]);\n\n const triggerProps: TriggerReturnProps = {\n \"data-open\": isOpen,\n \"data-focus-inside\": hasFocusInside,\n ref: menuRefs,\n ...getReferenceProps(\n parent.getItemProps({\n ...props,\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onFocus(event: FocusEvent<any>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n // This is to allow any type of element to be used as a custom trigger element\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as HTMLProps<any>),\n ),\n };\n\n const value = useMemo(\n () => ({\n activeIndex,\n setActiveIndex,\n getItemProps,\n setHasFocusInside,\n isOpen,\n disableAutoHeight: disableAutoHeight ?? parent.disableAutoHeight,\n }),\n [\n activeIndex,\n disableAutoHeight,\n getItemProps,\n isOpen,\n parent.disableAutoHeight,\n ],\n );\n\n return (\n <FloatingNode id={nodeId}>\n {isNested ? (\n <button\n ref={menuRefs}\n tabIndex={parent.activeIndex === item.index ? 0 : -1}\n role=\"menuitem\"\n data-anv=\"menu-item\"\n data-open={isOpen ? \"\" : undefined}\n data-nested=\"\"\n data-focus-inside={hasFocusInside ? \"\" : undefined}\n className={menuComponentCX}\n {...getReferenceProps(\n parent.getItemProps({\n ...props,\n onFocus(event: FocusEvent<HTMLButtonElement>) {\n props.onFocus?.(event);\n setHasFocusInside(false);\n parent.setHasFocusInside?.(true);\n },\n onMouseEnter: () => setHoverEnabled(true),\n } as HTMLProps<HTMLButtonElement>),\n )}\n >\n {icon ? <Icon inherit aria-hidden svg={icon} /> : null}\n {\"label\" in props && props.label}\n <div style={{ flexGrow: 1 }} />\n <Icon aria-hidden svg={Next} />\n </button>\n ) : \"trigger\" in props ? (\n props.trigger?.(triggerProps)\n ) : (\n <Button\n {...(props as ButtonProps)}\n {...(triggerProps as DefaultTriggerProps)}\n {...getReferenceProps({\n onFocus: (event) => props.onFocus?.(event),\n } as HTMLProps<HTMLButtonElement>)}\n icon={icon}\n data-anv=\"menu\"\n >\n {\"label\" in props && props.label}\n </Button>\n )}\n\n <MenuLegacyContext.Provider value={value}>\n <FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>\n {isOpen &&\n (dialogContext == null ||\n dialogContext?.ref?.current != null) && (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot\n }\n >\n <FloatingFocusManager\n context={context}\n modal={false}\n initialFocus={isNested ? -1 : 0}\n returnFocus={!isNested}\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={refs.setFloating}\n className={styles[\"menu\"]}\n style={floatingStyles}\n {...getFloatingProps({\n onMouseEnter: () => {\n setHoverEnabled(false);\n },\n onKeyDown: (e) => {\n if (\n e.code === \"ArrowLeft\" ||\n e.code === \"ArrowRight\"\n ) {\n e.stopPropagation();\n }\n },\n })}\n >\n {arrowStart && (\n <div className={styles[\"arrow-up\"]} aria-hidden>\n <Icon\n svg={Up}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n <div\n ref={scrollRef}\n className={styles[\"scroll\"]}\n style={{\n position: \"relative\",\n maxHeight: menuHeight ?? \"inherit\",\n }}\n onScroll={(e: MouseEvent<HTMLDivElement>) =>\n setScrollTop(e.currentTarget.scrollTop)\n }\n >\n {children}\n </div>\n {arrowEnd && (\n <div className={styles[\"arrow-down\"]} aria-hidden>\n <Icon\n svg={Down}\n size=\"xlarge\"\n className={styles[\"arrow-icon\"]}\n />\n </div>\n )}\n </div>\n </ThemeProvider>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingList>\n </MenuLegacyContext.Provider>\n </FloatingNode>\n );\n },\n);\n\nMenuLegacyComponent.displayName = \"MenuLegacyComponent\";\n\nconst MenuLegacyElement = forwardRef<HTMLElement, MenuLegacyProps>(\n (props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuLegacyComponent {...props} ref={ref} />\n </FloatingTree>\n );\n }\n\n return <MenuLegacyComponent {...props} ref={ref} />;\n },\n);\n\nMenuLegacyElement.displayName = \"MenuLegacy\";\n\nexport const MenuLegacy = Object.assign(MenuLegacyElement, {\n Item: MenuLegacyItem,\n});\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, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { Icon, IconProps } from \"../Icon\";\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { MenuLegacyItem } from \"./internal/MenuLegacy\";\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 * - Legacy popover support with fallback\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 if (!supportsPopover())\n return (\n <MenuLegacyItem data-tracking-id={trackingId} {...props} ref={ref} />\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 {\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 const timeoutId = setTimeout(() => {\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;\n if (Math.abs((menuHeight ?? 0) - newHeight) > 1) {\n setMenuHeight(newHeight);\n Object.assign(elements.floating.style, {\n maxWidth: `${availableWidth - 16}px`,\n maxHeight: `${availableHeight - 16}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 }, 50);\n return () => clearTimeout(timeoutId);\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 setMenuHeight(newHeight);\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\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\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 nestedContainer.addEventListener(\"focusin\", (_e) => {\n openMenu();\n });\n nestedContainer.addEventListener(\"focusout\", () => closeMenu());\n return () => {\n nestedContainer.removeEventListener(\"focusin\", () => openMenu());\n nestedContainer.removeEventListener(\"focusout\", () => closeMenu());\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 forwardRef,\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 {\n supportsPopover,\n safeHidePopover,\n safeShowPopover,\n} from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\n\nimport { MenuContext } from \"./internal/MenuContext\";\nimport { MenuItem } from \"./MenuItem\";\nimport {\n MenuLegacy as MenuLegacyComponent,\n MenuLegacyProps,\n} from \"./internal/MenuLegacy\";\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\nconst MenuElement = forwardRef<HTMLElement, MenuProps>(\n (props: MenuProps, ref) => {\n const {\n children,\n placement = \"bottom-start\",\n open,\n defaultOpen = false,\n disableAutoHeight,\n label,\n onOutsidePress,\n trigger,\n root,\n contentClassName,\n maxHeight,\n ...rest\n } = props;\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 const timeoutId = setTimeout(() => {\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;\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(availableHeight - 16, typeof maxHeight === \"number\" ? maxHeight : parseInt(maxHeight.toString()))}px`\n : `${availableHeight - 16}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 }, 50);\n return () => clearTimeout(timeoutId);\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 setMenuHeight(newHeight);\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\n const cleanup = autoUpdate(invokerRef.current, menuRef.current, () => {\n updatePosition();\n });\n\n return () => {\n cleanup();\n };\n }, [updatePosition]);\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) => {\n if (!menuRef.current || !openState) return;\n fn?.();\n setOpenState(false);\n safeHidePopover(menuRef.current);\n dialogContext?.setHasOpenPopover?.(false);\n invokerRef.current?.focus();\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();\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();\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 (!supportsPopover())\n return (\n <MenuLegacyComponent\n data-tracking-id={trackingId}\n {...(props as MenuLegacyProps)}\n ref={ref}\n />\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 \"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\nMenuElement.displayName = \"Menu\";\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 * - Popover API support with legacy fallback\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(MenuElement, {\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"],"names":["styles","Next","Up","Down","MenuLegacyComponent"],"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;;AChBtE,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;;ACGtX,MAAM,oBAAoB,aAAA,CAU/B;AAAA,EACA,YAAA,EAAc,OAAO,EAAC,CAAA;AAAA,EACtB,WAAA,EAAa,IAAA;AAAA,EACb,MAAA,EAAQ;AACV,CAAC,CAAA;;;;;;;;;;;;;;ACQM,MAAM,cAAA,GAAiB,UAAA,CAG5B,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,YAAA,KAAiB;AAClE,EAAA,MAAM,UAAA,GAAa,WAAW,iBAAiB,CAAA;AAC/C,EAAA,MAAM,OAAO,WAAA,CAAY;AAAA,IACvB,KAAA,EAAO,QAAA,GAAW,IAAA,GAAO,gBAAA,CAAiB,KAAK;AAAA,GAChD,CAAA;AACD,EAAA,MAAM,OAAO,eAAA,EAAgB;AAC7B,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,KAAU,UAAA,CAAW,WAAA;AAC3C,EAAA,MAAM,SAAS,EAAA,CAAG,CAACA,SAAO,MAAM,CAAC,GAAG,SAAS,CAAA;AAC7C,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,KAAK,YAAA,CAAa,CAAC,IAAA,CAAK,GAAA,EAAK,YAAY,CAAC,CAAA;AAAA,MAC1C,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,UAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,MAAA;AAAA,MACX,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,MACzB,QAAA;AAAA,MACC,GAAG,WAAW,YAAA,CAAa;AAAA,QAC1B,QAAQ,KAAA,EAAsC;AAC5C,UAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AACrB,UAAA,IAAA,EAAM,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,QAC3B,CAAA;AAAA,QACA,QAAQ,KAAA,EAAsC;AAC5C,UAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AACrB,UAAA,UAAA,CAAW,oBAAoB,IAAI,CAAA;AAAA,QACrC;AAAA,OACD,CAAA;AAAA,MAEA,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,cAAA,CAAe,WAAA,GAAc,gBAAA;;AC8CtB,MAAM,mBAAA,GAAsB,UAAA;AAAA,EACjC,CACE;AAAA,IACE,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA,GAAY,cAAA;AAAA,IACZ,GAAG;AAAA,KAEL,YAAA,KACG;AACH,IAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAI,SAAS,CAAC,CAAC,QAAQ,KAAK,CAAA;AACpD,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1D,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAwB,IAAI,CAAA;AAElE,IAAA,MAAM,SAAA,GAAY,OAAuB,IAAI,CAAA;AAC7C,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,CAAC,CAAA;AAC5C,IAAA,MAAM,CAAC,UAAA,EAAY,mBAAmB,CAAA,GAAI,SAAwB,IAAI,CAAA;AACtE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAE9C,IAAA,MAAM,WAAA,GAAc,MAAA,CAAwC,EAAE,CAAA;AAC9D,IAAA,MAAM,SAAA,GAAY,MAAA,CAA6B,EAAE,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,WAAW,iBAAiB,CAAA;AAC3C,IAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAI,WAAW,qBAAqB,CAAA;AAE7D,IAAA,MAAM,OAAO,eAAA,EAAgB;AAC7B,IAAA,MAAM,SAAS,iBAAA,EAAkB;AACjC,IAAA,MAAM,WAAW,uBAAA,EAAwB;AACzC,IAAA,MAAM,OAAO,WAAA,EAAY;AAEzB,IAAA,MAAM,WAAW,QAAA,IAAY,IAAA;AAE7B,IAAA,MAAM,EAAE,KAAA,EAAO,IAAA,GAAO,OAAA,EAAQ,GAAI,WAAW,oBAAoB,CAAA;AAEjE,IAAA,MAAM,aAAA,GAAgB,WAAW,aAAa,CAAA;AAC9C,IAAA,MAAM,aAAA,GAAgB,WAAW,aAAa,CAAA;AAE9C,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,IAAI,SAAA,CAAU,UAAA,CAAW,KAAK,CAAA,EAAG;AAC/B,UAAA,OAAO,oBACH,SAAA,GACA,CAAC,WAAA,EAAa,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAAA,QAC3D;AACA,QAAA,OAAO,oBACH,SAAA,GACA,CAAC,cAAA,EAAgB,YAAA,EAAc,aAAa,SAAS,CAAA;AAAA,MAC3D;AAEA,MAAA,OAAO,MAAA,CAAO,oBACV,CAAC,aAAa,IACd,CAAC,aAAA,EAAe,WAAA,EAAa,YAAA,EAAc,UAAU,CAAA;AAAA,IAC3D,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,YAAA,KAA0B;AACpD,MAAA,IAAI,OAAO,SAAS,SAAA,EAAW;AAC7B,QAAA,SAAA,CAAU,IAAI,CAAA;AACd,QAAA;AAAA,MACF;AACA,MAAA,SAAA,CAAU,YAAY,CAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,EAAE,cAAA,EAAgB,IAAA,EAAM,OAAA,KAAY,WAAA,CAA+B;AAAA,MACvE,MAAA;AAAA,MACA,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,kBAAA;AAAA,MACd,SAAA,EAAW,WAAW,aAAA,GAAgB,SAAA;AAAA,MACtC,UAAA,EAAY;AAAA,QACV,MAAA,CAAO;AAAA,UACL,QAAA,EAAU,WAAW,CAAA,GAAI,CAAA;AAAA,UACzB,aAAA,EAAe,WAAW,EAAA,GAAK;AAAA,SAChC,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,MAAA,CAAO,iBAAA;AAAA,UAClB,SAAA,EAAW,KAAA;AAAA,UACX,SAAS,UAAA,CAAW;AAAA,YAClB,QAAA,EAAU,CAAC,MAAA,CAAO;AAAA,WACnB;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,iBAAA,IAAqB,OAAO,iBAAA,EAAmB;AACnD,YAAA,mBAAA,CAAoB,eAAe,CAAA;AACnC,YAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,cACrC,QAAA,EAAU,GAAG,cAAc,CAAA,EAAA,CAAA;AAAA,cAC3B,SAAA,EAAW,GAAG,eAAe,CAAA,EAAA;AAAA,aAC9B,CAAA;AAAA,UACH;AAAA,SACD;AAAA,OACH;AAAA,MACA,oBAAA,EAAsB;AAAA,KACvB,CAAA;AACD,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,EAAS;AAAA,MAC9B,OAAA,EAAS,YAAA;AAAA,MACT,KAAA,EAAO,EAAE,IAAA,EAAM,EAAA,EAAG;AAAA,MAClB,WAAA,EAAa,WAAA,CAAY,EAAE,kBAAA,EAAoB,MAAM;AAAA,KACtD,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,EAAS;AAAA,MAC9B,KAAA,EAAO,WAAA;AAAA,MACP,QAAQ,CAAC,QAAA;AAAA,MACT,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA,EAAS,EAAE,IAAA,EAAM,QAAQ,CAAA;AAC9C,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA,EAAS,EAAE,OAAA,EAAS,MAAM,CAAA;AACrD,IAAA,MAAM,cAAA,GAAiB,kBAAkB,OAAA,EAAS;AAAA,MAChD,OAAA,EAAS,WAAA;AAAA,MACT,WAAA;AAAA,MACA,MAAA,EAAQ,QAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACb,CAAA;AACD,IAAA,MAAM,SAAA,GAAY,aAAa,OAAA,EAAS;AAAA,MACtC,OAAA,EAAS,SAAA;AAAA,MACT,OAAA,EAAS,SAAS,cAAA,GAAiB,MAAA;AAAA,MACnC;AAAA,KACD,CAAA;AAED,IAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAkB,YAAA,EAAa,GACxD,eAAA,CAAgB,CAAC,KAAA,EAAO,KAAA,EAAO,IAAA,EAAM,OAAA,EAAS,cAAA,EAAgB,SAAS,CAAC,CAAA;AAK1E,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,SAAS,eAAA,GAAkB;AACzB,QAAA,SAAA,CAAU,CAAC,CAAC,IAAA,IAAQ,KAAK,CAAA;AAAA,MAC3B;AAEA,MAAA,SAAS,oBAAoB,KAAA,EAG1B;AACD,QAAA,IAAI,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,KAAA,CAAM,aAAa,QAAA,EAAU;AAC1D,UAAA;AAAA,QACF;AACA,QAAA,SAAA,CAAU,CAAC,CAAC,IAAA,IAAQ,KAAK,CAAA;AAAA,MAC3B;AAEA,MAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,eAAe,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,UAAA,EAAY,mBAAmB,CAAA;AAE9C,MAAA,OAAO,MAAM;AACX,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,eAAe,CAAA;AACxC,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,mBAAmB,CAAA;AAAA,MACjD,CAAA;AAAA,IAEF,CAAA,EAAG,CAAC,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAE3B,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,iBAAA,IAAqB,OAAO,iBAAA,EAAmB;AACnD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,QAAA;AAAA,MACF;AACA,MAAA,UAAA,CAAW,MAAM;AACf,QAAA,IAAI,CAAC,SAAA,CAAU,OAAA,IAAW,CAAC,IAAA,CAAK,SAAS,OAAA,EAAS;AAClD,QAAA,mBAAA,CAAoB,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,YAAY,CAAA;AACtD,QAAA,MAAM,aACJ,SAAA,CAAU,OAAA,CAAQ,YAAA,GAAe,IAAA,CAAK,SAAS,OAAA,CAAQ,YAAA;AACzD,QAAA,IAAI,CAAC,UAAA,EAAY;AACjB,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,CAAQ,SAAA,GAAY,CAAA;AAC9C,QAAA,MAAM,UAAA,GACJ,UAAU,OAAA,CAAQ,YAAA,GAChB,KAAK,QAAA,CAAS,OAAA,CAAQ,YAAA,GACtB,SAAA,GACA,EAAA,GACF,CAAA;AACF,QAAA,aAAA,CAAc,OAAO,CAAA;AACrB,QAAA,WAAA,CAAY,UAAU,CAAA;AAAA,MACxB,GAAG,CAAC,CAAA;AAAA,IACN,CAAA,EAAG;AAAA,MACD,iBAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA,CAAO,iBAAA;AAAA,MACP,IAAA,CAAK,QAAA;AAAA,MACL;AAAA,KACD,CAAA;AAED,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,IAAA,EAAM;AACtB,MAAA,IAAA,CAAK,OAAO,IAAA,CAAK,UAAA,EAAY,EAAE,QAAA,EAAU,QAAQ,CAAA;AAAA,IACnD,GAAG,CAAC,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAEnC,IAAA,MAAM,kBAAkB,EAAA,CAAG;AAAA,MACzB,CAACA,QAAA,CAAO,aAAa,CAAC,GAAG,QAAA;AAAA,MACzB,CAACA,QAAA,CAAO,MAAM,CAAC,GAAG,CAAC;AAAA,KACpB,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,aAAa,CAAC,IAAA,CAAK,cAAc,IAAA,CAAK,GAAA,EAAK,YAAY,CAAC,CAAA;AAEzE,IAAA,MAAM,YAAA,GAAmC;AAAA,MACvC,WAAA,EAAa,MAAA;AAAA,MACb,mBAAA,EAAqB,cAAA;AAAA,MACrB,GAAA,EAAK,QAAA;AAAA,MACL,GAAG,iBAAA;AAAA,QACD,OAAO,YAAA,CAAa;AAAA,UAClB,GAAG,KAAA;AAAA;AAAA;AAAA,UAGH,QAAQ,KAAA,EAAwB;AAC9B,YAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AACrB,YAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,YAAA,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAAA,UACjC;AAAA;AAAA;AAAA,SAGiB;AAAA;AACrB,KACF;AAEA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,MACZ,OAAO;AAAA,QACL,WAAA;AAAA,QACA,cAAA;AAAA,QACA,YAAA;AAAA,QACA,iBAAA;AAAA,QACA,MAAA;AAAA,QACA,iBAAA,EAAmB,qBAAqB,MAAA,CAAO;AAAA,OACjD,CAAA;AAAA,MACA;AAAA,QACE,WAAA;AAAA,QACA,iBAAA;AAAA,QACA,YAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA,CAAO;AAAA;AACT,KACF;AAEA,IAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,EAAA,EAAI,MAAA,EACf,QAAA,EAAA;AAAA,MAAA,QAAA,mBACC,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,MAAA,CAAO,WAAA,KAAgB,IAAA,CAAK,QAAQ,CAAA,GAAI,EAAA;AAAA,UAClD,IAAA,EAAK,UAAA;AAAA,UACL,UAAA,EAAS,WAAA;AAAA,UACT,WAAA,EAAW,SAAS,EAAA,GAAK,MAAA;AAAA,UACzB,aAAA,EAAY,EAAA;AAAA,UACZ,mBAAA,EAAmB,iBAAiB,EAAA,GAAK,MAAA;AAAA,UACzC,SAAA,EAAW,eAAA;AAAA,UACV,GAAG,iBAAA;AAAA,YACF,OAAO,YAAA,CAAa;AAAA,cAClB,GAAG,KAAA;AAAA,cACH,QAAQ,KAAA,EAAsC;AAC5C,gBAAA,KAAA,CAAM,UAAU,KAAK,CAAA;AACrB,gBAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,gBAAA,MAAA,CAAO,oBAAoB,IAAI,CAAA;AAAA,cACjC,CAAA;AAAA,cACA,YAAA,EAAc,MAAM,eAAA,CAAgB,IAAI;AAAA,aACT;AAAA,WACnC;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,IAAA,mBAAO,GAAA,CAAC,QAAK,OAAA,EAAO,IAAA,EAAC,eAAW,IAAA,EAAC,GAAA,EAAK,MAAM,CAAA,GAAK,IAAA;AAAA,YACjD,OAAA,IAAW,SAAS,KAAA,CAAM,KAAA;AAAA,gCAC1B,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,GAAE,EAAG,CAAA;AAAA,4BAC7B,GAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,KAAKC,eAAA,EAAM;AAAA;AAAA;AAAA,UAE7B,SAAA,IAAa,KAAA,GACf,KAAA,CAAM,OAAA,GAAU,YAAY,CAAA,mBAE5B,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACE,GAAI,KAAA;AAAA,UACJ,GAAI,YAAA;AAAA,UACJ,GAAG,iBAAA,CAAkB;AAAA,YACpB,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,UAAU,KAAK;AAAA,WACV,CAAA;AAAA,UACjC,IAAA;AAAA,UACA,UAAA,EAAS,MAAA;AAAA,UAER,QAAA,EAAA,OAAA,IAAW,SAAS,KAAA,CAAM;AAAA;AAAA,OAC7B;AAAA,sBAGF,GAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,OAC1B,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,WAAA,EAA0B,SAAA,EACrC,qBACE,aAAA,IAAiB,IAAA,IAChB,aAAA,EAAe,GAAA,EAAK,WAAW,IAAA,CAAA,oBAC/B,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MACE,IAAA,IACA,aAAA,EAAe,KAAK,OAAA,IACpB,aAAA,EAAe,KAAK,OAAA,IACpB,UAAA;AAAA,UAGF,QAAA,kBAAA,GAAA;AAAA,YAAC,oBAAA;AAAA,YAAA;AAAA,cACC,OAAA;AAAA,cACA,KAAA,EAAO,KAAA;AAAA,cACP,YAAA,EAAc,WAAW,EAAA,GAAK,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cAEd,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,IAAA,EAC3B,QAAA,kBAAA,IAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAK,IAAA,CAAK,WAAA;AAAA,kBACV,SAAA,EAAWD,SAAO,MAAM,CAAA;AAAA,kBACxB,KAAA,EAAO,cAAA;AAAA,kBACN,GAAG,gBAAA,CAAiB;AAAA,oBACnB,cAAc,MAAM;AAClB,sBAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,oBACvB,CAAA;AAAA,oBACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,sBAAA,IACE,CAAA,CAAE,IAAA,KAAS,WAAA,IACX,CAAA,CAAE,SAAS,YAAA,EACX;AACA,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,sBACpB;AAAA,oBACF;AAAA,mBACD,CAAA;AAAA,kBAEA,QAAA,EAAA;AAAA,oBAAA,UAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,SAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,GAAA,EAAKE,cAAA;AAAA,wBACL,IAAA,EAAK,QAAA;AAAA,wBACL,SAAA,EAAWF,SAAO,YAAY;AAAA;AAAA,qBAChC,EACF,CAAA;AAAA,oCAEF,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,GAAA,EAAK,SAAA;AAAA,wBACL,SAAA,EAAWA,SAAO,QAAQ,CAAA;AAAA,wBAC1B,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,UAAA;AAAA,0BACV,WAAW,UAAA,IAAc;AAAA,yBAC3B;AAAA,wBACA,UAAU,CAAC,CAAA,KACT,YAAA,CAAa,CAAA,CAAE,cAAc,SAAS,CAAA;AAAA,wBAGvC;AAAA;AAAA,qBACH;AAAA,oBACC,QAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAWA,SAAO,YAAY,CAAA,EAAG,eAAW,IAAA,EAC/C,QAAA,kBAAA,GAAA;AAAA,sBAAC,IAAA;AAAA,sBAAA;AAAA,wBACC,GAAA,EAAKG,gBAAA;AAAA,wBACL,IAAA,EAAK,QAAA;AAAA,wBACL,SAAA,EAAWH,SAAO,YAAY;AAAA;AAAA,qBAChC,EACF;AAAA;AAAA;AAAA,eAEJ,EACF;AAAA;AAAA;AACF;AAAA,SAGR,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAElC,MAAM,iBAAA,GAAoB,UAAA;AAAA,EACxB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,WAAW,uBAAA,EAAwB;AAEzC,IAAA,IAAI,aAAa,IAAA,EAAM;AACrB,MAAA,2BACG,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,uBAAqB,GAAG,KAAA,EAAO,KAAU,CAAA,EAC5C,CAAA;AAAA,IAEJ;AAEA,IAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAqB,GAAG,KAAA,EAAO,GAAA,EAAU,CAAA;AAAA,EACnD;AACF,CAAA;AAEA,iBAAA,CAAkB,WAAA,GAAc,YAAA;AAEzB,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,iBAAA,EAAmB;AAAA,EACzD,IAAA,EAAM;AACR,CAAC,CAAA;;;;;;;;;;;;;AChbM,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,CAAC,OAAO,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,IAAI,CAAC,eAAA,EAAgB;AACnB,IAAA,2BACG,cAAA,EAAA,EAAe,kBAAA,EAAkB,UAAA,EAAa,GAAG,OAAO,GAAA,EAAU,CAAA;AAGvE,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;AAED,QAAA,CAAS,WAAA,GAAc,UAAA;;AChEhB,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,MAAM,SAAA,GAAY,WAAW,MAAM;AACjC,MAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAC7C,MAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,QACnD,SAAA,EAAW,aAAA;AAAA,QACX,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;AAAY,WACjC,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,aAAa,iBAAA,EAAmB;AACpC,cAAA,MAAM,SAAA,GAAY,eAAA;AAClB,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,SAAA,EAAW,CAAA,EAAG,eAAA,GAAkB,EAAE,CAAA,EAAA;AAAA,iBACnC,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,CAAA,EAAG,CAAA,GAAI,CAAC,CAAA,EAAA;AAAA,SACd,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,GAAG,EAAE,CAAA;AACL,IAAA,OAAO,MAAM,aAAa,SAAS,CAAA;AAAA,EACrC,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,aAAA,CAAc,SAAS,CAAA;AACvB,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;AAE7C,IAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,MAAA,cAAA,EAAe;AAAA,IACjB,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,EAAQ;AAAA,IACV,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAGnB,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,eAAA,CAAgB,gBAAA,CAAiB,SAAA,EAAW,CAAC,EAAA,KAAO;AAClD,MAAA,QAAA,EAAS;AAAA,IACX,CAAC,CAAA;AACD,IAAA,eAAA,CAAgB,gBAAA,CAAiB,UAAA,EAAY,MAAM,SAAA,EAAW,CAAA;AAC9D,IAAA,OAAO,MAAM;AACX,MAAA,eAAA,CAAgB,mBAAA,CAAoB,SAAA,EAAW,MAAM,QAAA,EAAU,CAAA;AAC/D,MAAA,eAAA,CAAgB,mBAAA,CAAoB,UAAA,EAAY,MAAM,SAAA,EAAW,CAAA;AAAA,IACnE,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,CAAC,OAAO,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,WAAW,MAAA,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,EAAW,OAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKC,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAW,MAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,MAAA,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,WAAW,MAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKC,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAW,MAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ,CAAA;;AC3ZA,MAAM,WAAA,GAAc,UAAA;AAAA,EAClB,CAAC,OAAkB,GAAA,KAAQ;AACzB,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,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AACJ,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,oBACH,SAAA,GACA,CAAC,WAAA,EAAa,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAAA,MAC3D;AACA,MAAA,OAAO,oBACH,SAAA,GACA,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;AAC7C,MAAA,MAAM,SAAA,GAAY,WAAW,MAAM;AACjC,QAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,QAAQ,OAAA,EAAS;AAE7C,QAAA,eAAA,CAAgB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS;AAAA,UACnD,SAAA;AAAA,UACA,UAAA,EAAY;AAAA,YACV,MAAA,CAAO;AAAA,cACL,QAAA,EAAU,CAAA;AAAA,cACV,aAAA,EAAe;AAAA,aAChB,CAAA;AAAA,YACD,IAAA,CAAK;AAAA,cACH,gBAAA,EAAkB,SAAA;AAAA,cAClB,oBAAoB,WAAA,EAAY;AAAA,cAChC,OAAA,EAAS;AAAA;AAAA,aACV,CAAA;AAAA,YACD,KAAA,CAAM;AAAA,cACJ,QAAA,EAAU,CAAC,WAAA,EAAa,iBAAA;AAAA,cACxB,SAAA,EAAW,KAAA;AAAA,cACX,SAAS,UAAA,CAAW;AAAA,gBAClB,QAAA,EAAU,CAAC,WAAA,EAAa;AAAA,eACzB;AAAA,aACF,CAAA;AAAA,YACD,IAAA,CAAK;AAAA,cACH,OAAA,EAAS,CAAA;AAAA,cACT,KAAA,CAAM,EAAE,cAAA,EAAgB,eAAA,EAAiB,UAAS,EAAG;AACnD,gBAAA,IAAI,iBAAA,IAAqB,aAAa,iBAAA,EAAmB;AACzD,gBAAA,MAAM,SAAA,GAAY,eAAA;AAClB,gBAAA,IAAI,KAAK,GAAA,CAAA,CAAK,UAAA,IAAc,CAAA,IAAK,SAAS,IAAI,CAAA,EAAG;AAC/C,kBAAA,aAAA,CAAc,SAAS,CAAA;AACvB,kBAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,oBACrC,QAAA,EAAU,CAAA,EAAG,cAAA,GAAiB,EAAE,CAAA,EAAA,CAAA;AAAA,oBAChC,SAAA,EAAW,YACP,CAAA,EAAG,IAAA,CAAK,IAAI,eAAA,GAAkB,EAAA,EAAI,OAAO,SAAA,KAAc,QAAA,GAAW,YAAY,QAAA,CAAS,SAAA,CAAU,UAAU,CAAC,CAAC,CAAA,EAAA,CAAA,GAC7G,CAAA,EAAG,kBAAkB,EAAE,CAAA,EAAA;AAAA,mBAC5B,CAAA;AAAA,gBACH;AAAA,cACF;AAAA,aACD;AAAA;AACH,SACD,CAAA,CAAE,IAAA,CAAK,CAAC,EAAE,CAAA,EAAG,GAAE,KAAM;AACpB,UAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACtB,UAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAA,EAAO;AAAA,YACnC,IAAA,EAAM,GAAG,CAAC,CAAA,EAAA,CAAA;AAAA,YACV,GAAA,EAAK,GAAG,CAAC,CAAA,EAAA;AAAA,WACV,CAAA;AACD,UAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,UAAA,GAAa,MAAA;AAAA,QACvC,CAAC,CAAA;AAAA,MACH,GAAG,EAAE,CAAA;AACL,MAAA,OAAO,MAAM,aAAa,SAAS,CAAA;AAAA,IACrC,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,aAAA,CAAc,SAAS,CAAA;AACvB,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;AAE7C,MAAA,MAAM,UAAU,UAAA,CAAW,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,SAAS,MAAM;AACpE,QAAA,cAAA,EAAe;AAAA,MACjB,CAAC,CAAA;AAED,MAAA,OAAO,MAAM;AACX,QAAA,OAAA,EAAQ;AAAA,MACV,CAAA;AAAA,IACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAOnB,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,EAAA,KAAoB;AACzB,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,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,MAC5B,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,EAAU;AAAA,MACZ;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,EAAU;AAAA,QACZ;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,CAAC,eAAA,EAAgB;AACnB,MAAA,uBACE,GAAA;AAAA,QAACC,UAAA;AAAA,QAAA;AAAA,UACC,kBAAA,EAAkB,UAAA;AAAA,UACjB,GAAI,KAAA;AAAA,UACL;AAAA;AAAA,OACF;AAGJ,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,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,CAAG,MAAA,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,EAAW,OAAO,UAAU,CAAA,EAAG,eAAW,IAAA,EAC7C,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAKF,gBAAI,IAAA,EAAK,QAAA,EAAS,WAAW,MAAA,CAAO,YAAY,GAAG,CAAA,EAChE,CAAA;AAAA,4BAEF,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,WAAW,MAAA,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,WAAW,MAAA,CAAO,YAAY,GAAG,aAAA,EAAW,IAAA,EAC/C,8BAAC,IAAA,EAAA,EAAK,GAAA,EAAKC,kBAAM,IAAA,EAAK,QAAA,EAAS,WAAW,MAAA,CAAO,YAAY,GAAG,CAAA,EAClE;AAAA;AAAA;AAAA;AAEJ,KAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,MAAA;AA8BnB,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoB7C,IAAA,EAAM;AACR,CAAC;;;;"}
|
package/dist/Menu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as Menu, a as MenuItem, M as default } from './Menu-
|
|
1
|
+
export { M as Menu, a as MenuItem, M as default } from './Menu-t_11BIhU.js';
|
|
2
2
|
//# sourceMappingURL=Menu.js.map
|
|
@@ -4,10 +4,10 @@ import { useState, useEffect, useMemo, useRef, useCallback, forwardRef, useId }
|
|
|
4
4
|
import { c as cx } from './index-tZvMCc77.js';
|
|
5
5
|
import { S as Spinner } from './Spinner-wmO8Epw0.js';
|
|
6
6
|
import { t as textfieldStyles } from './TextField.module-EkKlj66e.js';
|
|
7
|
-
import { B as Button } from './Button-
|
|
7
|
+
import { B as Button } from './Button-VNQQgZ45.js';
|
|
8
8
|
import { I as Icon } from './Icon-D8SPKeO4.js';
|
|
9
|
-
import { F as FieldLabel } from './FieldLabel-
|
|
10
|
-
import { d as maskitoNumberOptionsGenerator, e as maskitoParseNumber, f as maskitoStringifyNumber, u as useMaskito } from './index.esm-
|
|
9
|
+
import { F as FieldLabel } from './FieldLabel-BP8QK5UR.js';
|
|
10
|
+
import { d as maskitoNumberOptionsGenerator, e as maskitoParseNumber, f as maskitoStringifyNumber, u as useMaskito } from './index.esm-BwMVvxTV.js';
|
|
11
11
|
import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
|
|
12
12
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
13
13
|
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
|
|
@@ -870,7 +870,7 @@ P.pow = function (n) {
|
|
|
870
870
|
y = one,
|
|
871
871
|
isneg = n < 0;
|
|
872
872
|
|
|
873
|
-
if (n !== ~~n || n < -
|
|
873
|
+
if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {
|
|
874
874
|
throw Error(INVALID + 'exponent');
|
|
875
875
|
}
|
|
876
876
|
|
|
@@ -913,7 +913,7 @@ P.prec = function (sd, rm) {
|
|
|
913
913
|
*/
|
|
914
914
|
P.round = function (dp, rm) {
|
|
915
915
|
if (dp === UNDEFINED) dp = 0;
|
|
916
|
-
else if (dp !== ~~dp || dp < -
|
|
916
|
+
else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {
|
|
917
917
|
throw Error(INVALID_DP);
|
|
918
918
|
}
|
|
919
919
|
return round(new this.constructor(this), dp + this.e + 1, rm);
|
|
@@ -1562,4 +1562,4 @@ const NumberField = forwardRef(
|
|
|
1562
1562
|
NumberField.displayName = "NumberField";
|
|
1563
1563
|
|
|
1564
1564
|
export { NumberField as N };
|
|
1565
|
-
//# sourceMappingURL=NumberField-
|
|
1565
|
+
//# sourceMappingURL=NumberField-Bjf9Tyvf.js.map
|