{"version":3,"names":["actionMenuCss","CalciteActionMenuStyle0","SUPPORTED_MENU_NAV_KEYS","ActionMenu","this","actionElements","guid","menuId","menuButtonId","connectMenuButtonEl","open","label","menuButtonEl","slottedMenuButtonEl","defaultMenuButtonEl","disconnectMenuButtonEl","setTooltipReferenceElement","active","setAttribute","toAriaBoolean","id","text","addEventListener","menuButtonClick","menuButtonKeyDown","removeEventListener","setMenuButtonEl","event","actions","target","assignedElements","flatten","filter","el","matches","setDefaultMenuButtonEl","handleCalciteActionClick","setFocus","toggleOpen","updateTooltip","tooltips","tooltipEl","expanded","referenceElement","updateAction","action","index","activeMenuItemIndex","tabIndex","toggleAttribute","activeAttr","updateActions","forEach","handleDefaultSlotChange","reduce","previousValue","currentValue","push","concat","Array","from","querySelectorAll","disabled","hidden","key","length","isActivationKey","preventDefault","click","handleActionNavigation","isValidKey","currentIndex","getRoundRobinIndex","Math","max","toggleOpenEnd","value","handlePopoverOpen","handlePopoverClose","connectedCallback","componentWillLoad","setUpLoadableComponent","componentDidLoad","setComponentLoaded","disconnectedCallback","expandedHandler","openHandler","calciteActionMenuOpen","emit","activeMenuItemIndexHandler","componentFocusable","focusElement","renderMenuButton","appearance","scale","menuButtonSlot","h","name","SLOTS","trigger","onSlotchange","class","CSS","defaultTrigger","icon","ICONS","menu","ref","textEnabled","renderMenuItems","placement","overlayPositioning","flipPlacements","activeAction","activeDescendantId","autoClose","focusTrapDisabled","offsetDistance","onCalcitePopoverClose","onCalcitePopoverOpen","pointerDisabled","onClick","role","render","Fragment","tooltip","supportedKeys","find","k"],"sources":["src/components/action-menu/action-menu.scss?tag=calcite-action-menu&encapsulation=shadow","src/components/action-menu/action-menu.tsx"],"sourcesContent":["/**\n * CSS Custom Properties\n *\n * These properties can be overridden using the component's tag as selector.\n *\n * @prop --calcite-action-menu-items-space: Specifies the space between actions in the menu.\n *\n */\n\n:host {\n @apply text-1\n box-border\n flex\n flex-col;\n}\n\n::slotted(calcite-action-group:not(:last-of-type)) {\n border-block-end-width: var(--calcite-border-width-sm);\n}\n\n.default-trigger {\n @apply relative\n h-full\n flex-initial\n self-stretch;\n}\n\n@include slotted(\"trigger\", \"calcite-action\") {\n @apply relative\n h-full\n flex-initial\n self-stretch;\n}\n\n.menu {\n @apply flex\n flex-col\n flex-nowrap\n outline-none\n overflow-y-auto\n overflow-x-hidden\n max-h-menu;\n gap: var(--calcite-action-menu-items-space, 0);\n}\n\n@include base-component();\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { Fragment, VNode } from \"@stencil/core/internal\";\nimport { getRoundRobinIndex } from \"../../utils/array\";\nimport { focusElement, toAriaBoolean } from \"../../utils/dom\";\nimport { FlipPlacement, LogicalPlacement, OverlayPositioning } from \"../../utils/floating-ui\";\nimport { guid } from \"../../utils/guid\";\nimport { isActivationKey } from \"../../utils/key\";\nimport {\n componentFocusable,\n LoadableComponent,\n setComponentLoaded,\n setUpLoadableComponent,\n} from \"../../utils/loadable\";\nimport { Appearance, Scale } from \"../interfaces\";\nimport { activeAttr, CSS, ICONS, SLOTS } from \"./resources\";\n\nconst SUPPORTED_MENU_NAV_KEYS = [\"ArrowUp\", \"ArrowDown\", \"End\", \"Home\"];\n\n/**\n * @slot - A slot for adding `calcite-action`s.\n * @slot trigger - A slot for adding a `calcite-action` to trigger opening the menu.\n * @slot tooltip - A slot for adding an tooltip for the menu.\n */\n@Component({\n tag: \"calcite-action-menu\",\n styleUrl: \"action-menu.scss\",\n shadow: true,\n})\nexport class ActionMenu implements LoadableComponent {\n // --------------------------------------------------------------------------\n //\n // Lifecycle\n //\n // --------------------------------------------------------------------------\n\n connectedCallback(): void {\n this.connectMenuButtonEl();\n }\n\n componentWillLoad(): void {\n setUpLoadableComponent(this);\n }\n\n componentDidLoad(): void {\n setComponentLoaded(this);\n }\n\n disconnectedCallback(): void {\n this.disconnectMenuButtonEl();\n }\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n /** Specifies the appearance of the component. */\n @Prop({ reflect: true }) appearance: Extract<\"solid\" | \"transparent\", Appearance> = \"solid\";\n\n /**\n * When `true`, the component is expanded.\n */\n @Prop({ reflect: true }) expanded = false;\n\n @Watch(\"expanded\")\n expandedHandler(): void {\n this.open = false;\n this.setTooltipReferenceElement();\n }\n\n /**\n * Specifies the component's fallback slotted content `placement` when it's initial or specified `placement` has insufficient space available.\n */\n @Prop() flipPlacements: FlipPlacement[];\n\n /**\n * Specifies the text string for the component.\n */\n @Prop() label!: string;\n\n /**\n * When `true`, the component is open.\n */\n @Prop({ reflect: true, mutable: true }) open = false;\n\n @Watch(\"open\")\n openHandler(open: boolean): void {\n this.activeMenuItemIndex = this.open ? 0 : -1;\n if (this.menuButtonEl) {\n this.menuButtonEl.active = open;\n }\n this.calciteActionMenuOpen.emit();\n\n this.setTooltipReferenceElement();\n }\n\n /**\n * Determines the type of positioning to use for the overlaid content.\n *\n * Using `\"absolute\"` will work for most cases. The component will be positioned inside of overflowing parent containers and will affect the container's layout.\n * `\"fixed\"` should be used to escape an overflowing parent container, or when the reference element's `position` CSS property is `\"fixed\"`.\n *\n */\n @Prop({ reflect: true }) overlayPositioning: OverlayPositioning = \"absolute\";\n\n /**\n * Determines where the component will be positioned relative to the `referenceElement`.\n */\n @Prop({ reflect: true }) placement: LogicalPlacement = \"auto\";\n\n /**\n * Specifies the size of the component's trigger `calcite-action`.\n */\n @Prop({ reflect: true }) scale: Scale;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /**\n * Fires when the `open` property is toggled.\n *\n */\n @Event({ cancelable: false }) calciteActionMenuOpen: EventEmitter;\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n @Element() el: HTMLCalciteActionMenuElement;\n\n @State() menuButtonEl: HTMLCalciteActionElement;\n\n slottedMenuButtonEl: HTMLCalciteActionElement;\n\n defaultMenuButtonEl: HTMLCalciteActionElement;\n\n actionElements: HTMLCalciteActionElement[] = [];\n\n guid = `calcite-action-menu-${guid()}`;\n\n menuId = `${this.guid}-menu`;\n\n menuButtonId = `${this.guid}-menu-button`;\n\n tooltipEl: HTMLCalciteTooltipElement;\n\n @State() activeMenuItemIndex = -1;\n\n @Watch(\"activeMenuItemIndex\")\n activeMenuItemIndexHandler(): void {\n this.updateActions(this.actionElements);\n }\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n\n /** Sets focus on the component. */\n @Method()\n async setFocus(): Promise {\n await componentFocusable(this);\n\n return focusElement(this.menuButtonEl);\n }\n\n // --------------------------------------------------------------------------\n //\n // Component Methods\n //\n // --------------------------------------------------------------------------\n\n connectMenuButtonEl = (): void => {\n const { menuButtonId, menuId, open, label } = this;\n const menuButtonEl = this.slottedMenuButtonEl || this.defaultMenuButtonEl;\n\n if (this.menuButtonEl === menuButtonEl) {\n return;\n }\n\n this.disconnectMenuButtonEl();\n\n this.menuButtonEl = menuButtonEl;\n\n this.setTooltipReferenceElement();\n\n if (!menuButtonEl) {\n return;\n }\n\n menuButtonEl.active = open;\n menuButtonEl.setAttribute(\"aria-controls\", menuId);\n menuButtonEl.setAttribute(\"aria-expanded\", toAriaBoolean(open));\n menuButtonEl.setAttribute(\"aria-haspopup\", \"true\");\n\n if (!menuButtonEl.id) {\n menuButtonEl.id = menuButtonId;\n }\n\n if (!menuButtonEl.label) {\n menuButtonEl.label = label;\n }\n\n if (!menuButtonEl.text) {\n menuButtonEl.text = label;\n }\n\n menuButtonEl.addEventListener(\"click\", this.menuButtonClick);\n menuButtonEl.addEventListener(\"keydown\", this.menuButtonKeyDown);\n };\n\n disconnectMenuButtonEl = (): void => {\n const { menuButtonEl } = this;\n\n if (!menuButtonEl) {\n return;\n }\n\n menuButtonEl.removeEventListener(\"click\", this.menuButtonClick);\n menuButtonEl.removeEventListener(\"keydown\", this.menuButtonKeyDown);\n };\n\n setMenuButtonEl = (event: Event): void => {\n const actions = (event.target as HTMLSlotElement)\n .assignedElements({\n flatten: true,\n })\n .filter((el): el is HTMLCalciteActionElement => el?.matches(\"calcite-action\"));\n\n this.slottedMenuButtonEl = actions[0];\n this.connectMenuButtonEl();\n };\n\n setDefaultMenuButtonEl = (el: HTMLCalciteActionElement): void => {\n this.defaultMenuButtonEl = el;\n this.connectMenuButtonEl();\n };\n\n renderMenuButton(): VNode {\n const { appearance, label, scale, expanded } = this;\n\n const menuButtonSlot = (\n \n \n \n );\n\n return menuButtonSlot;\n }\n\n renderMenuItems(): VNode {\n const {\n actionElements,\n activeMenuItemIndex,\n open,\n menuId,\n menuButtonEl,\n label,\n placement,\n overlayPositioning,\n flipPlacements,\n } = this;\n\n const activeAction = actionElements[activeMenuItemIndex];\n const activeDescendantId = activeAction?.id || null;\n\n return (\n \n \n \n \n \n );\n }\n\n render(): VNode {\n return (\n \n {this.renderMenuButton()}\n {this.renderMenuItems()}\n \n \n );\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Methods\n //\n // --------------------------------------------------------------------------\n\n handleCalciteActionClick = (): void => {\n this.open = false;\n this.setFocus();\n };\n\n private menuButtonClick = (): void => {\n this.toggleOpen();\n };\n\n updateTooltip = (event: Event): void => {\n const tooltips = (event.target as HTMLSlotElement)\n .assignedElements({\n flatten: true,\n })\n .filter((el): el is HTMLCalciteTooltipElement => el?.matches(\"calcite-tooltip\"));\n\n this.tooltipEl = tooltips[0];\n this.setTooltipReferenceElement();\n };\n\n setTooltipReferenceElement = (): void => {\n const { tooltipEl, expanded, menuButtonEl, open } = this;\n\n if (tooltipEl) {\n tooltipEl.referenceElement = !expanded && !open ? menuButtonEl : null;\n }\n };\n\n updateAction = (action: HTMLCalciteActionElement, index: number): void => {\n const { guid, activeMenuItemIndex } = this;\n const id = `${guid}-action-${index}`;\n\n action.tabIndex = -1;\n action.setAttribute(\"role\", \"menuitem\");\n\n if (!action.id) {\n action.id = id;\n }\n\n // data attribute is used to style the \"activeMenuItemIndex\" action using token focus styling.\n action.toggleAttribute(activeAttr, index === activeMenuItemIndex);\n };\n\n updateActions = (actions: HTMLCalciteActionElement[]): void => {\n actions?.forEach(this.updateAction);\n };\n\n handleDefaultSlotChange = (event: Event): void => {\n const actions = (event.target as HTMLSlotElement)\n .assignedElements({\n flatten: true,\n })\n .reduce((previousValue, currentValue) => {\n if (currentValue?.matches(\"calcite-action\")) {\n previousValue.push(currentValue as HTMLCalciteActionElement);\n return previousValue;\n }\n\n if (currentValue?.matches(\"calcite-action-group\")) {\n return previousValue.concat(Array.from(currentValue.querySelectorAll(\"calcite-action\")));\n }\n\n return previousValue;\n }, []);\n\n this.actionElements = actions.filter((action) => !action.disabled && !action.hidden);\n };\n\n isValidKey(key: string, supportedKeys: string[]): boolean {\n return !!supportedKeys.find((k) => k === key);\n }\n\n menuButtonKeyDown = (event: KeyboardEvent): void => {\n const { key } = event;\n const { actionElements, activeMenuItemIndex, open } = this;\n\n if (!actionElements.length) {\n return;\n }\n\n if (isActivationKey(key)) {\n event.preventDefault();\n\n if (!open) {\n this.toggleOpen();\n return;\n }\n\n const action = actionElements[activeMenuItemIndex];\n action ? action.click() : this.toggleOpen(false);\n }\n\n if (key === \"Tab\") {\n this.open = false;\n return;\n }\n\n if (key === \"Escape\") {\n this.toggleOpen(false);\n event.preventDefault();\n return;\n }\n\n this.handleActionNavigation(event, key, actionElements);\n };\n\n handleActionNavigation = (\n event: KeyboardEvent,\n key: string,\n actions: HTMLCalciteActionElement[],\n ): void => {\n if (!this.isValidKey(key, SUPPORTED_MENU_NAV_KEYS)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.open) {\n this.toggleOpen();\n\n if (key === \"Home\" || key === \"ArrowDown\") {\n this.activeMenuItemIndex = 0;\n }\n\n if (key === \"End\" || key === \"ArrowUp\") {\n this.activeMenuItemIndex = actions.length - 1;\n }\n\n return;\n }\n\n if (key === \"Home\") {\n this.activeMenuItemIndex = 0;\n }\n\n if (key === \"End\") {\n this.activeMenuItemIndex = actions.length - 1;\n }\n\n const currentIndex = this.activeMenuItemIndex;\n\n if (key === \"ArrowUp\") {\n this.activeMenuItemIndex = getRoundRobinIndex(Math.max(currentIndex - 1, -1), actions.length);\n }\n\n if (key === \"ArrowDown\") {\n this.activeMenuItemIndex = getRoundRobinIndex(currentIndex + 1, actions.length);\n }\n };\n\n toggleOpenEnd = (): void => {\n this.setFocus();\n this.el.removeEventListener(\"calcitePopoverOpen\", this.toggleOpenEnd);\n };\n\n toggleOpen = (value = !this.open): void => {\n this.el.addEventListener(\"calcitePopoverOpen\", this.toggleOpenEnd);\n this.open = value;\n };\n\n private handlePopoverOpen = (): void => {\n this.open = true;\n };\n\n private handlePopoverClose = (): void => {\n this.open = false;\n };\n}\n"],"mappings":";;;;;kXAAA,MAAMA,EAAgB,6rBACtB,MAAAC,EAAeD,ECyBf,MAAME,EAA0B,CAAC,UAAW,YAAa,MAAO,Q,MAYnDC,EAAU,M,sFAkHrBC,KAAAC,eAA6C,GAE7CD,KAAAE,KAAO,uBAAuBA,MAE9BF,KAAAG,OAAS,GAAGH,KAAKE,YAEjBF,KAAAI,aAAe,GAAGJ,KAAKE,mBA+BvBF,KAAAK,oBAAsB,KACpB,MAAMD,aAAEA,EAAYD,OAAEA,EAAMG,KAAEA,EAAIC,MAAEA,GAAUP,KAC9C,MAAMQ,EAAeR,KAAKS,qBAAuBT,KAAKU,oBAEtD,GAAIV,KAAKQ,eAAiBA,EAAc,CACtC,M,CAGFR,KAAKW,yBAELX,KAAKQ,aAAeA,EAEpBR,KAAKY,6BAEL,IAAKJ,EAAc,CACjB,M,CAGFA,EAAaK,OAASP,EACtBE,EAAaM,aAAa,gBAAiBX,GAC3CK,EAAaM,aAAa,gBAAiBC,EAAcT,IACzDE,EAAaM,aAAa,gBAAiB,QAE3C,IAAKN,EAAaQ,GAAI,CACpBR,EAAaQ,GAAKZ,C,CAGpB,IAAKI,EAAaD,MAAO,CACvBC,EAAaD,MAAQA,C,CAGvB,IAAKC,EAAaS,KAAM,CACtBT,EAAaS,KAAOV,C,CAGtBC,EAAaU,iBAAiB,QAASlB,KAAKmB,iBAC5CX,EAAaU,iBAAiB,UAAWlB,KAAKoB,kBAAkB,EAGlEpB,KAAAW,uBAAyB,KACvB,MAAMH,aAAEA,GAAiBR,KAEzB,IAAKQ,EAAc,CACjB,M,CAGFA,EAAaa,oBAAoB,QAASrB,KAAKmB,iBAC/CX,EAAaa,oBAAoB,UAAWrB,KAAKoB,kBAAkB,EAGrEpB,KAAAsB,gBAAmBC,IACjB,MAAMC,EAAWD,EAAME,OACpBC,iBAAiB,CAChBC,QAAS,OAEVC,QAAQC,GAAuCA,GAAIC,QAAQ,oBAE9D9B,KAAKS,oBAAsBe,EAAQ,GACnCxB,KAAKK,qBAAqB,EAG5BL,KAAA+B,uBAA0BF,IACxB7B,KAAKU,oBAAsBmB,EAC3B7B,KAAKK,qBAAqB,EAqF5BL,KAAAgC,yBAA2B,KACzBhC,KAAKM,KAAO,MACZN,KAAKiC,UAAU,EAGTjC,KAAAmB,gBAAkB,KACxBnB,KAAKkC,YAAY,EAGnBlC,KAAAmC,cAAiBZ,IACf,MAAMa,EAAYb,EAAME,OACrBC,iBAAiB,CAChBC,QAAS,OAEVC,QAAQC,GAAwCA,GAAIC,QAAQ,qBAE/D9B,KAAKqC,UAAYD,EAAS,GAC1BpC,KAAKY,4BAA4B,EAGnCZ,KAAAY,2BAA6B,KAC3B,MAAMyB,UAAEA,EAASC,SAAEA,EAAQ9B,aAAEA,EAAYF,KAAEA,GAASN,KAEpD,GAAIqC,EAAW,CACbA,EAAUE,kBAAoBD,IAAahC,EAAOE,EAAe,I,GAIrER,KAAAwC,aAAe,CAACC,EAAkCC,KAChD,MAAMxC,KAAEA,EAAIyC,oBAAEA,GAAwB3C,KACtC,MAAMgB,EAAK,GAAGd,YAAewC,IAE7BD,EAAOG,UAAY,EACnBH,EAAO3B,aAAa,OAAQ,YAE5B,IAAK2B,EAAOzB,GAAI,CACdyB,EAAOzB,GAAKA,C,CAIdyB,EAAOI,gBAAgBC,EAAYJ,IAAUC,EAAoB,EAGnE3C,KAAA+C,cAAiBvB,IACfA,GAASwB,QAAQhD,KAAKwC,aAAa,EAGrCxC,KAAAiD,wBAA2B1B,IACzB,MAAMC,EAAWD,EAAME,OACpBC,iBAAiB,CAChBC,QAAS,OAEVuB,QAAmC,CAACC,EAAeC,KAClD,GAAIA,GAActB,QAAQ,kBAAmB,CAC3CqB,EAAcE,KAAKD,GACnB,OAAOD,C,CAGT,GAAIC,GAActB,QAAQ,wBAAyB,CACjD,OAAOqB,EAAcG,OAAOC,MAAMC,KAAKJ,EAAaK,iBAAiB,mB,CAGvE,OAAON,CAAa,GACnB,IAELnD,KAAKC,eAAiBuB,EAAQI,QAAQa,IAAYA,EAAOiB,WAAajB,EAAOkB,QAAO,EAOtF3D,KAAAoB,kBAAqBG,IACnB,MAAMqC,IAAEA,GAAQrC,EAChB,MAAMtB,eAAEA,EAAc0C,oBAAEA,EAAmBrC,KAAEA,GAASN,KAEtD,IAAKC,EAAe4D,OAAQ,CAC1B,M,CAGF,GAAIC,EAAgBF,GAAM,CACxBrC,EAAMwC,iBAEN,IAAKzD,EAAM,CACTN,KAAKkC,aACL,M,CAGF,MAAMO,EAASxC,EAAe0C,GAC9BF,EAASA,EAAOuB,QAAUhE,KAAKkC,WAAW,M,CAG5C,GAAI0B,IAAQ,MAAO,CACjB5D,KAAKM,KAAO,MACZ,M,CAGF,GAAIsD,IAAQ,SAAU,CACpB5D,KAAKkC,WAAW,OAChBX,EAAMwC,iBACN,M,CAGF/D,KAAKiE,uBAAuB1C,EAAOqC,EAAK3D,EAAe,EAGzDD,KAAAiE,uBAAyB,CACvB1C,EACAqC,EACApC,KAEA,IAAKxB,KAAKkE,WAAWN,EAAK9D,GAA0B,CAClD,M,CAGFyB,EAAMwC,iBAEN,IAAK/D,KAAKM,KAAM,CACdN,KAAKkC,aAEL,GAAI0B,IAAQ,QAAUA,IAAQ,YAAa,CACzC5D,KAAK2C,oBAAsB,C,CAG7B,GAAIiB,IAAQ,OAASA,IAAQ,UAAW,CACtC5D,KAAK2C,oBAAsBnB,EAAQqC,OAAS,C,CAG9C,M,CAGF,GAAID,IAAQ,OAAQ,CAClB5D,KAAK2C,oBAAsB,C,CAG7B,GAAIiB,IAAQ,MAAO,CACjB5D,KAAK2C,oBAAsBnB,EAAQqC,OAAS,C,CAG9C,MAAMM,EAAenE,KAAK2C,oBAE1B,GAAIiB,IAAQ,UAAW,CACrB5D,KAAK2C,oBAAsByB,EAAmBC,KAAKC,IAAIH,EAAe,GAAI,GAAI3C,EAAQqC,O,CAGxF,GAAID,IAAQ,YAAa,CACvB5D,KAAK2C,oBAAsByB,EAAmBD,EAAe,EAAG3C,EAAQqC,O,GAI5E7D,KAAAuE,cAAgB,KACdvE,KAAKiC,WACLjC,KAAK6B,GAAGR,oBAAoB,qBAAsBrB,KAAKuE,cAAc,EAGvEvE,KAAAkC,WAAa,CAACsC,GAASxE,KAAKM,QAC1BN,KAAK6B,GAAGX,iBAAiB,qBAAsBlB,KAAKuE,eACpDvE,KAAKM,KAAOkE,CAAK,EAGXxE,KAAAyE,kBAAoB,KAC1BzE,KAAKM,KAAO,IAAI,EAGVN,KAAA0E,mBAAqB,KAC3B1E,KAAKM,KAAO,KAAK,E,gBAlbiE,Q,cAKhD,M,6DAqBW,M,wBAoBmB,W,eAKX,O,2EA2CvB,C,CArHhC,iBAAAqE,GACE3E,KAAKK,qB,CAGP,iBAAAuE,GACEC,EAAuB7E,K,CAGzB,gBAAA8E,GACEC,EAAmB/E,K,CAGrB,oBAAAgF,GACEhF,KAAKW,wB,CAkBP,eAAAsE,GACEjF,KAAKM,KAAO,MACZN,KAAKY,4B,CAmBP,WAAAsE,CAAY5E,GACVN,KAAK2C,oBAAsB3C,KAAKM,KAAO,GAAK,EAC5C,GAAIN,KAAKQ,aAAc,CACrBR,KAAKQ,aAAaK,OAASP,C,CAE7BN,KAAKmF,sBAAsBC,OAE3BpF,KAAKY,4B,CA6DP,0BAAAyE,GACErF,KAAK+C,cAAc/C,KAAKC,e,CAW1B,cAAMgC,SACEqD,EAAmBtF,MAEzB,OAAOuF,EAAavF,KAAKQ,a,CA2E3B,gBAAAgF,GACE,MAAMC,WAAEA,EAAUlF,MAAEA,EAAKmF,MAAEA,EAAKpD,SAAEA,GAAatC,KAE/C,MAAM2F,EACJC,EAAA,QAAMC,KAAMC,EAAMC,QAASC,aAAchG,KAAKsB,iBAC5CsE,EAAA,kBACEH,WAAYA,EACZQ,MAAOC,EAAIC,eACXC,KAAMC,EAAMC,KACZC,IAAKvG,KAAK+B,uBACV2D,MAAOA,EACPzE,KAAMV,EACNiG,YAAalE,KAKnB,OAAOqD,C,CAGT,eAAAc,GACE,MAAMxG,eACJA,EAAc0C,oBACdA,EAAmBrC,KACnBA,EAAIH,OACJA,EAAMK,aACNA,EAAYD,MACZA,EAAKmG,UACLA,EAASC,mBACTA,EAAkBC,eAClBA,GACE5G,KAEJ,MAAM6G,EAAe5G,EAAe0C,GACpC,MAAMmE,EAAqBD,GAAc7F,IAAM,KAE/C,OACE4E,EAAA,mBACEmB,UAAW,KACXH,eAAgBA,EAChBI,kBAAmB,KACnBzG,MAAOA,EACP0G,eAAgB,EAChBC,sBAAuBlH,KAAK0E,mBAC5ByC,qBAAsBnH,KAAKyE,kBAC3BnE,KAAMA,EACNqG,mBAAoBA,EACpBD,UAAWA,EACXU,gBAAiB,KACjB7E,iBAAkB/B,GAElBoF,EAAA,+BACyBkB,EAAkB,kBACxBtG,GAAcQ,GAC/BiF,MAAOC,EAAII,KACXtF,GAAIb,EACJkH,QAASrH,KAAKgC,yBACdsF,KAAK,OACL1E,UAAW,GAEXgD,EAAA,QAAMI,aAAchG,KAAKiD,2B,CAMjC,MAAAsE,GACE,OACE3B,EAAC4B,EAAQ,CAAA5D,IAAA,4CACN5D,KAAKwF,mBACLxF,KAAKyG,kBACNb,EAAA,QAAAhC,IAAA,2CAAMiC,KAAMC,EAAM2B,QAASzB,aAAchG,KAAKmC,gB,CA+EpD,UAAA+B,CAAWN,EAAa8D,GACtB,QAASA,EAAcC,MAAMC,GAAMA,IAAMhE,G","ignoreList":[]}