{"version":3,"file":"sub-menu.mjs","names":[],"sources":["../../../../../../packages/components/menu/src/sub-menu.ts"],"sourcesContent":["import {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  vShow,\n  watch,\n  withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n  buildProps,\n  definePropType,\n  focusElement,\n  iconPropType,\n  isString,\n  isUndefined,\n  throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n  CSSProperties,\n  ExtractPropTypes,\n  ExtractPublicPropTypes,\n  VNodeArrayChildren,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n  /**\n   * @description unique identification\n   */\n  index: {\n    type: String,\n    required: true,\n  },\n  /**\n   * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n   */\n  showTimeout: Number,\n  /**\n   * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n   */\n  hideTimeout: Number,\n  /**\n   * @description custom class name for the popup menu\n   */\n  popperClass: String,\n  /**\n   * @description custom style for the popup menu\n   */\n  popperStyle: {\n    type: definePropType<string | CSSProperties>([String, Object]),\n  },\n  /**\n   * @description whether the sub-menu is disabled\n   */\n  disabled: Boolean,\n  /**\n   * @description whether popup menu is teleported to the body\n   */\n  teleported: {\n    type: Boolean,\n    default: undefined,\n  },\n  /**\n   * @description offset of the popper (overrides the `popper` of menu)\n   */\n  popperOffset: Number,\n  /**\n   * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n   */\n  expandCloseIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n   */\n  expandOpenIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n   */\n  collapseCloseIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n   */\n  collapseOpenIcon: {\n    type: iconPropType,\n  },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\nexport type SubMenuPropsPublic = ExtractPublicPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'ElSubMenu'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  props: subMenuProps,\n\n  setup(props, { slots, expose }) {\n    const instance = getCurrentInstance()!\n    const { indexPath, parentMenu } = useMenu(\n      instance,\n      computed(() => props.index)\n    )\n    const nsMenu = useNamespace('menu')\n    const nsSubMenu = useNamespace('sub-menu')\n\n    // inject\n    const rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\n    if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n    const subMenu = inject<SubMenuProvider>(\n      `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n    )\n    if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n    const items = ref<MenuProvider['items']>({})\n    const subMenus = ref<MenuProvider['subMenus']>({})\n\n    let timeout: (() => void) | undefined\n    const mouseInChild = ref(false)\n    const verticalTitleRef = ref<HTMLDivElement>()\n    const vPopper = ref<TooltipInstance>()\n\n    // computed\n    const isFirstLevel = computed(() => subMenu.level === 0)\n    const currentPlacement = computed<Placement>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? 'bottom-start'\n        : 'right-start'\n    )\n    const subMenuTitleIcon = computed(() => {\n      const isExpandedMode =\n        (mode.value === 'horizontal' && isFirstLevel.value) ||\n        (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n      if (isExpandedMode) {\n        if (props.expandCloseIcon && props.expandOpenIcon) {\n          return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n        }\n        return ArrowDown\n      } else {\n        if (props.collapseCloseIcon && props.collapseOpenIcon) {\n          return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n        }\n        return ArrowRight\n      }\n    })\n\n    const appendToBody = computed(() => {\n      const value = props.teleported\n      return isUndefined(value) ? isFirstLevel.value : value\n    })\n    const menuTransitionName = computed(() =>\n      rootMenu.props.collapse\n        ? `${nsMenu.namespace.value}-zoom-in-left`\n        : `${nsMenu.namespace.value}-zoom-in-top`\n    )\n    const fallbackPlacements = computed<Placement[]>(() =>\n      mode.value === 'horizontal' && isFirstLevel.value\n        ? [\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n            'right-start',\n            'left-start',\n          ]\n        : [\n            'right-start',\n            'right',\n            'right-end',\n            'left-start',\n            'bottom-start',\n            'bottom-end',\n            'top-start',\n            'top-end',\n          ]\n    )\n    const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n    const active = computed(() =>\n      [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n        ({ active }) => active\n      )\n    )\n\n    const mode = computed(() => rootMenu.props.mode)\n    const persistent = computed(() => rootMenu.props.persistent)\n    const item = reactive({\n      index: props.index,\n      indexPath,\n      active,\n    })\n\n    const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n    const subMenuPopperOffset = computed(\n      () => props.popperOffset ?? rootMenu.props.popperOffset\n    )\n\n    const subMenuPopperClass = computed(\n      () => props.popperClass ?? rootMenu.props.popperClass\n    )\n\n    const subMenuPopperStyle = computed(\n      () => props.popperStyle ?? rootMenu.props.popperStyle\n    )\n\n    const subMenuShowTimeout = computed(\n      () => props.showTimeout ?? rootMenu.props.showTimeout\n    )\n\n    const subMenuHideTimeout = computed(\n      () => props.hideTimeout ?? rootMenu.props.hideTimeout\n    )\n\n    // methods\n    const doDestroy = () =>\n      vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n    const handleCollapseToggle = (value: boolean) => {\n      if (!value) {\n        doDestroy()\n      }\n    }\n\n    const handleClick = () => {\n      if (\n        (rootMenu.props.menuTrigger === 'hover' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      )\n        return\n\n      rootMenu.handleSubMenuClick({\n        index: props.index,\n        indexPath: indexPath.value,\n        active: active.value,\n      })\n    }\n\n    const handleMouseenter = (\n      event: MouseEvent | FocusEvent,\n      showTimeout = subMenuShowTimeout.value\n    ) => {\n      if (event.type === 'focus') return\n\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n        props.disabled\n      ) {\n        subMenu.mouseInChild.value = true\n        return\n      }\n      subMenu.mouseInChild.value = true\n\n      timeout?.()\n      ;({ stop: timeout } = useTimeoutFn(() => {\n        rootMenu.openMenu(props.index, indexPath.value)\n      }, showTimeout))\n\n      if (appendToBody.value) {\n        parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n      }\n\n      if (event.type === 'mouseenter' && event.target) {\n        nextTick(() => {\n          focusElement(event.target as HTMLElement, { preventScroll: true })\n        })\n      }\n    }\n\n    const handleMouseleave = (deepDispatch = false) => {\n      if (\n        (rootMenu.props.menuTrigger === 'click' &&\n          rootMenu.props.mode === 'horizontal') ||\n        (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n      ) {\n        subMenu.mouseInChild.value = false\n        return\n      }\n      timeout?.()\n      subMenu.mouseInChild.value = false\n      ;({ stop: timeout } = useTimeoutFn(\n        () =>\n          !mouseInChild.value &&\n          rootMenu.closeMenu(props.index, indexPath.value),\n        subMenuHideTimeout.value\n      ))\n\n      if (appendToBody.value && deepDispatch) {\n        subMenu.handleMouseleave?.(true)\n      }\n    }\n\n    watch(\n      () => rootMenu.props.collapse,\n      (value) => handleCollapseToggle(Boolean(value))\n    )\n\n    // provide\n    {\n      const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n        subMenus.value[item.index] = item\n      }\n      const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n        delete subMenus.value[item.index]\n      }\n      provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n        addSubMenu,\n        removeSubMenu,\n        handleMouseleave,\n        mouseInChild,\n        level: subMenu.level + 1,\n      })\n    }\n\n    // expose\n    expose({\n      opened,\n    })\n\n    // lifecycle\n    onMounted(() => {\n      rootMenu.addSubMenu(item)\n      subMenu.addSubMenu(item)\n    })\n\n    onBeforeUnmount(() => {\n      subMenu.removeSubMenu(item)\n      rootMenu.removeSubMenu(item)\n    })\n\n    return () => {\n      const titleTag: VNodeArrayChildren = [\n        slots.title?.(),\n        h(\n          ElIcon,\n          {\n            class: nsSubMenu.e('icon-arrow'),\n            style: {\n              transform: opened.value\n                ? (props.expandCloseIcon && props.expandOpenIcon) ||\n                  (props.collapseCloseIcon &&\n                    props.collapseOpenIcon &&\n                    rootMenu.props.collapse)\n                  ? 'none'\n                  : 'rotateZ(180deg)'\n                : 'none',\n            },\n          },\n          {\n            default: () =>\n              isString(subMenuTitleIcon.value)\n                ? h(instance.appContext.components[subMenuTitleIcon.value])\n                : h(subMenuTitleIcon.value),\n          }\n        ),\n      ]\n\n      // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n      const child = rootMenu.isMenuPopup\n        ? h(\n            ElTooltip,\n            {\n              ref: vPopper,\n              visible: opened.value,\n              effect: 'light',\n              pure: true,\n              offset: subMenuPopperOffset.value,\n              showArrow: false,\n              persistent: persistent.value,\n              popperClass: subMenuPopperClass.value,\n              popperStyle: subMenuPopperStyle.value,\n              placement: currentPlacement.value,\n              teleported: appendToBody.value,\n              fallbackPlacements: fallbackPlacements.value,\n              transition: menuTransitionName.value,\n              gpuAcceleration: false,\n            },\n            {\n              content: () =>\n                h(\n                  'div',\n                  {\n                    class: [\n                      nsMenu.m(mode.value),\n                      nsMenu.m('popup-container'),\n                      subMenuPopperClass.value,\n                    ],\n                    onMouseenter: (evt: MouseEvent) =>\n                      handleMouseenter(evt, 100),\n                    onMouseleave: () => handleMouseleave(true),\n                    onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n                  },\n                  [\n                    h(\n                      'ul',\n                      {\n                        class: [\n                          nsMenu.b(),\n                          nsMenu.m('popup'),\n                          nsMenu.m(`popup-${currentPlacement.value}`),\n                        ],\n                        style: ulStyle.value,\n                      },\n                      [slots.default?.()]\n                    ),\n                  ]\n                ),\n              default: () =>\n                h(\n                  'div',\n                  {\n                    class: nsSubMenu.e('title'),\n                    onClick: handleClick,\n                  },\n                  titleTag\n                ),\n            }\n          )\n        : h(Fragment, {}, [\n            h(\n              'div',\n              {\n                class: nsSubMenu.e('title'),\n                ref: verticalTitleRef,\n                onClick: handleClick,\n              },\n              titleTag\n            ),\n            h(\n              ElCollapseTransition,\n              {},\n              {\n                default: () =>\n                  withDirectives(\n                    h(\n                      'ul',\n                      {\n                        role: 'menu',\n                        class: [nsMenu.b(), nsMenu.m('inline')],\n                        style: ulStyle.value,\n                      },\n                      [slots.default?.()]\n                    ),\n                    [[vShow, opened.value]]\n                  ),\n              }\n            ),\n          ])\n\n      return h(\n        'li',\n        {\n          class: [\n            nsSubMenu.b(),\n            nsSubMenu.is('active', active.value),\n            nsSubMenu.is('opened', opened.value),\n            nsSubMenu.is('disabled', props.disabled),\n          ],\n          role: 'menuitem',\n          ariaHaspopup: true,\n          ariaExpanded: opened.value,\n          onMouseenter: handleMouseenter,\n          onMouseleave: () => handleMouseleave(),\n          onFocus: handleMouseenter,\n        },\n        [child]\n      )\n    }\n  },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;AA8CA,MAAa,eAAe,WAAW;CAIrC,OAAO;EACL,MAAM;EACN,UAAU;EACX;CAID,aAAa;CAIb,aAAa;CAIb,aAAa;CAIb,aAAa,EACX,MAAM,eAAuC,CAAC,QAAQ,OAAO,CAAC,EAC/D;CAID,UAAU;CAIV,YAAY;EACV,MAAM;EACN,SAAS;EACV;CAID,cAAc;CAId,iBAAiB,EACf,MAAM,cACP;CAID,gBAAgB,EACd,MAAM,cACP;CAID,mBAAmB,EACjB,MAAM,cACP;CAID,kBAAkB,EAChB,MAAM,cACP;CACF,CAAU;AAIX,MAAM,iBAAiB;AACvB,uBAAe,gBAAgB;CAC7B,MAAM;CACN,OAAO;CAEP,MAAM,OAAO,EAAE,OAAO,UAAU;EAC9B,MAAM,WAAW,oBAAoB;EACrC,MAAM,EAAE,WAAW,eAAe,QAChC,UACA,eAAe,MAAM,MAAM,CAC5B;EACD,MAAM,SAAS,aAAa,OAAO;EACnC,MAAM,YAAY,aAAa,WAAW;EAG1C,MAAM,WAAW,OAAqB,mBAAmB;AACzD,MAAI,CAAC,SAAU,YAAW,gBAAgB,2BAA2B;EAErE,MAAM,UAAU,OACd,GAAG,yBAAyB,WAAW,MAAO,MAC/C;AACD,MAAI,CAAC,QAAS,YAAW,gBAAgB,0BAA0B;EAEnE,MAAM,QAAQ,IAA2B,EAAE,CAAC;EAC5C,MAAM,WAAW,IAA8B,EAAE,CAAC;EAElD,IAAI;EACJ,MAAM,eAAe,IAAI,MAAM;EAC/B,MAAM,mBAAmB,KAAqB;EAC9C,MAAM,UAAU,KAAsB;EAGtC,MAAM,eAAe,eAAe,QAAQ,UAAU,EAAE;EACxD,MAAM,mBAAmB,eACvB,KAAK,UAAU,gBAAgB,aAAa,QACxC,iBACA,cACL;EACD,MAAM,mBAAmB,eAAe;AAKtC,OAHG,KAAK,UAAU,gBAAgB,aAAa,SAC5C,KAAK,UAAU,cAAc,CAAC,SAAS,MAAM,UAE5B;AAClB,QAAI,MAAM,mBAAmB,MAAM,eACjC,QAAO,OAAO,QAAQ,MAAM,iBAAiB,MAAM;AAErD,WAAO;UACF;AACL,QAAI,MAAM,qBAAqB,MAAM,iBACnC,QAAO,OAAO,QAAQ,MAAM,mBAAmB,MAAM;AAEvD,WAAO;;IAET;EAEF,MAAM,eAAe,eAAe;GAClC,MAAM,QAAQ,MAAM;AACpB,UAAO,YAAY,MAAM,GAAG,aAAa,QAAQ;IACjD;EACF,MAAM,qBAAqB,eACzB,SAAS,MAAM,WACX,GAAG,OAAO,UAAU,MAAM,iBAC1B,GAAG,OAAO,UAAU,MAAM,cAC/B;EACD,MAAM,qBAAqB,eACzB,KAAK,UAAU,gBAAgB,aAAa,QACxC;GACE;GACA;GACA;GACA;GACA;GACA;GACD,GACD;GACE;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CACN;EACD,MAAM,SAAS,eAAe,SAAS,YAAY,SAAS,MAAM,MAAM,CAAC;EACzE,MAAM,SAAS,eACb,CAAC,GAAG,OAAO,OAAO,MAAM,MAAM,EAAE,GAAG,OAAO,OAAO,SAAS,MAAM,CAAC,CAAC,MAC/D,EAAE,aAAa,OACjB,CACF;EAED,MAAM,OAAO,eAAe,SAAS,MAAM,KAAK;EAChD,MAAM,aAAa,eAAe,SAAS,MAAM,WAAW;EAC5D,MAAM,OAAO,SAAS;GACpB,OAAO,MAAM;GACb;GACA;GACD,CAAC;EAEF,MAAM,UAAU,cAAc,SAAS,OAAO,QAAQ,QAAQ,EAAE;EAEhE,MAAM,sBAAsB,eACpB,MAAM,gBAAgB,SAAS,MAAM,aAC5C;EAED,MAAM,qBAAqB,eACnB,MAAM,eAAe,SAAS,MAAM,YAC3C;EAED,MAAM,qBAAqB,eACnB,MAAM,eAAe,SAAS,MAAM,YAC3C;EAED,MAAM,qBAAqB,eACnB,MAAM,eAAe,SAAS,MAAM,YAC3C;EAED,MAAM,qBAAqB,eACnB,MAAM,eAAe,SAAS,MAAM,YAC3C;EAGD,MAAM,kBACJ,QAAQ,OAAO,WAAW,mBAAmB,SAAS;EAExD,MAAM,wBAAwB,UAAmB;AAC/C,OAAI,CAAC,MACH,YAAW;;EAIf,MAAM,oBAAoB;AACxB,OACG,SAAS,MAAM,gBAAgB,WAC9B,SAAS,MAAM,SAAS,gBACzB,SAAS,MAAM,YAAY,SAAS,MAAM,SAAS,cACpD,MAAM,SAEN;AAEF,YAAS,mBAAmB;IAC1B,OAAO,MAAM;IACb,WAAW,UAAU;IACrB,QAAQ,OAAO;IAChB,CAAC;;EAGJ,MAAM,oBACJ,OACA,cAAc,mBAAmB,UAC9B;AACH,OAAI,MAAM,SAAS,QAAS;AAE5B,OACG,SAAS,MAAM,gBAAgB,WAC9B,SAAS,MAAM,SAAS,gBACzB,CAAC,SAAS,MAAM,YAAY,SAAS,MAAM,SAAS,cACrD,MAAM,UACN;AACA,YAAQ,aAAa,QAAQ;AAC7B;;AAEF,WAAQ,aAAa,QAAQ;AAE7B,cAAW;AACV,IAAC,CAAE,MAAM,WAAY,mBAAmB;AACvC,aAAS,SAAS,MAAM,OAAO,UAAU,MAAM;MAC9C,YAAY;AAEf,OAAI,aAAa,MACf,YAAW,MAAM,MAAM,IAAI,cAAc,IAAI,WAAW,aAAa,CAAC;AAGxE,OAAI,MAAM,SAAS,gBAAgB,MAAM,OACvC,gBAAe;AACb,iBAAa,MAAM,QAAuB,EAAE,eAAe,MAAM,CAAC;KAClE;;EAIN,MAAM,oBAAoB,eAAe,UAAU;AACjD,OACG,SAAS,MAAM,gBAAgB,WAC9B,SAAS,MAAM,SAAS,gBACzB,CAAC,SAAS,MAAM,YAAY,SAAS,MAAM,SAAS,YACrD;AACA,YAAQ,aAAa,QAAQ;AAC7B;;AAEF,cAAW;AACX,WAAQ,aAAa,QAAQ;AAC5B,IAAC,CAAE,MAAM,WAAY,mBAElB,CAAC,aAAa,SACd,SAAS,UAAU,MAAM,OAAO,UAAU,MAAM,EAClD,mBAAmB,MACpB;AAED,OAAI,aAAa,SAAS,aACxB,SAAQ,mBAAmB,KAAK;;AAIpC,cACQ,SAAS,MAAM,WACpB,UAAU,qBAAqB,QAAQ,MAAM,CAAC,CAChD;EAGD;GACE,MAAM,cAA6C,SAAS;AAC1D,aAAS,MAAM,KAAK,SAAS;;GAE/B,MAAM,iBAAmD,SAAS;AAChE,WAAO,SAAS,MAAM,KAAK;;AAE7B,WAAyB,GAAG,yBAAyB,SAAS,OAAO;IACnE;IACA;IACA;IACA;IACA,OAAO,QAAQ,QAAQ;IACxB,CAAC;;AAIJ,SAAO,EACL,QACD,CAAC;AAGF,kBAAgB;AACd,YAAS,WAAW,KAAK;AACzB,WAAQ,WAAW,KAAK;IACxB;AAEF,wBAAsB;AACpB,WAAQ,cAAc,KAAK;AAC3B,YAAS,cAAc,KAAK;IAC5B;AAEF,eAAa;GACX,MAAM,WAA+B,CACnC,MAAM,SAAS,EACf,EACE,QACA;IACE,OAAO,UAAU,EAAE,aAAa;IAChC,OAAO,EACL,WAAW,OAAO,QACb,MAAM,mBAAmB,MAAM,kBAC/B,MAAM,qBACL,MAAM,oBACN,SAAS,MAAM,WACf,SACA,oBACF,QACL;IACF,EACD,EACE,eACE,SAAS,iBAAiB,MAAM,GAC5B,EAAE,SAAS,WAAW,WAAW,iBAAiB,OAAO,GACzD,EAAE,iBAAiB,MAAM,EAChC,CACF,CACF;GAGD,MAAM,QAAQ,SAAS,cACnB,EACE,WACA;IACE,KAAK;IACL,SAAS,OAAO;IAChB,QAAQ;IACR,MAAM;IACN,QAAQ,oBAAoB;IAC5B,WAAW;IACX,YAAY,WAAW;IACvB,aAAa,mBAAmB;IAChC,aAAa,mBAAmB;IAChC,WAAW,iBAAiB;IAC5B,YAAY,aAAa;IACzB,oBAAoB,mBAAmB;IACvC,YAAY,mBAAmB;IAC/B,iBAAiB;IAClB,EACD;IACE,eACE,EACE,OACA;KACE,OAAO;MACL,OAAO,EAAE,KAAK,MAAM;MACpB,OAAO,EAAE,kBAAkB;MAC3B,mBAAmB;MACpB;KACD,eAAe,QACb,iBAAiB,KAAK,IAAI;KAC5B,oBAAoB,iBAAiB,KAAK;KAC1C,UAAU,QAAoB,iBAAiB,KAAK,IAAI;KACzD,EACD,CACE,EACE,MACA;KACE,OAAO;MACL,OAAO,GAAG;MACV,OAAO,EAAE,QAAQ;MACjB,OAAO,EAAE,SAAS,iBAAiB,QAAQ;MAC5C;KACD,OAAO,QAAQ;KAChB,EACD,CAAC,MAAM,WAAW,CAAC,CACpB,CACF,CACF;IACH,eACE,EACE,OACA;KACE,OAAO,UAAU,EAAE,QAAQ;KAC3B,SAAS;KACV,EACD,SACD;IACJ,CACF,GACD,EAAE,UAAU,EAAE,EAAE,CACd,EACE,OACA;IACE,OAAO,UAAU,EAAE,QAAQ;IAC3B,KAAK;IACL,SAAS;IACV,EACD,SACD,EACD,EACE,sBACA,EAAE,EACF,EACE,eACE,eACE,EACE,MACA;IACE,MAAM;IACN,OAAO,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;IACvC,OAAO,QAAQ;IAChB,EACD,CAAC,MAAM,WAAW,CAAC,CACpB,EACD,CAAC,CAAC,OAAO,OAAO,MAAM,CAAC,CACxB,EACJ,CACF,CACF,CAAC;AAEN,UAAO,EACL,MACA;IACE,OAAO;KACL,UAAU,GAAG;KACb,UAAU,GAAG,UAAU,OAAO,MAAM;KACpC,UAAU,GAAG,UAAU,OAAO,MAAM;KACpC,UAAU,GAAG,YAAY,MAAM,SAAS;KACzC;IACD,MAAM;IACN,cAAc;IACd,cAAc,OAAO;IACrB,cAAc;IACd,oBAAoB,kBAAkB;IACtC,SAAS;IACV,EACD,CAAC,MAAM,CACR;;;CAGN,CAAC"}