{"version":3,"file":"head-menu.mjs","sources":["../../../components/menu/head-menu.tsx"],"sourcesContent":["import {\n  defineComponent,\n  computed,\n  provide,\n  ref,\n  reactive,\n  watch,\n  onMounted,\n  watchEffect,\n  toRefs,\n  h,\n  VNode,\n  Component,\n  getCurrentInstance,\n} from 'vue';\nimport { EllipsisIcon } from 'tdesign-icons-vue-next';\nimport { isArray, isFunction } from 'lodash-es';\n\nimport log from '@tdesign/common-js/log/log';\nimport props from './head-menu-props';\nimport { MenuValue } from './type';\nimport { TdMenuInterface, TdOpenType } from './types';\nimport { Tabs, TabPanel } from '../tabs';\nimport Submenu from './submenu';\nimport { VMenu } from './utils';\n\nimport { useVModel, usePrefixClass, useDefaultValue } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n  name: 'THeadMenu',\n  props,\n  setup(props, ctx) {\n    const classPrefix = usePrefixClass();\n    const { proxy } = getCurrentInstance();\n    watchEffect(() => {\n      if (ctx.slots.options) {\n        log.warnOnce('TMenu', '`options` slot is going to be deprecated, please use `operations` for slot instead.');\n      }\n    });\n    const { value, modelValue, expanded } = toRefs(props);\n    const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n    const [expandValues, setExpanded] = useDefaultValue(expanded, props.defaultExpanded, props.onExpand, 'expanded');\n    const activeValues = ref([]);\n    const theme = computed(() => props.theme);\n    const menuClass = computed(() => [\n      `${classPrefix.value}-menu`,\n      `${classPrefix.value}-head-menu`,\n      `${classPrefix.value}-menu--${props.theme}`,\n    ]);\n    const mode = ref(props.expandType);\n    const submenu = reactive([]);\n    const vMenu = new VMenu({ isMutex: true, expandValues: expandValues.value });\n\n    provide<TdMenuInterface>('TdMenu', {\n      mode,\n      theme,\n      vMenu,\n      isHead: true,\n      expandValues,\n      activeValue,\n      activeValues,\n      select: (value: MenuValue) => {\n        setActiveValue(value);\n      },\n      open: (value: MenuValue, type: TdOpenType) => {\n        const expanded = [...expandValues.value];\n        const index = expanded.indexOf(value);\n\n        if (mode.value === 'popup') {\n          if (type === 'add') {\n            if (index === -1) {\n              // 可能初始expanded里包含了该value\n              expanded.push(value);\n            }\n          } else if (type === 'remove') {\n            expanded.splice(index, 1);\n          }\n        } else if (mode.value === 'normal' && value !== undefined) {\n          expanded.splice(0, 1);\n          if (index === -1) {\n            expanded.push(value);\n          }\n        }\n        setExpanded(expanded);\n      },\n    });\n\n    // methods\n    const handleTabChange = (value: MenuValue) => {\n      setActiveValue(value);\n      handleClickSubMenuItem(value);\n    };\n\n    const handleSubmenuExpand = (value: MenuValue) => {\n      const ans = vMenu.getChild(value);\n      submenu.length = 0;\n      submenu.push(...ans);\n    };\n\n    // watch\n    watch(expandValues, (value) => {\n      if (mode.value === 'normal') {\n        handleSubmenuExpand(value[0]);\n      }\n    });\n    const updateActiveValues = (value: MenuValue) => {\n      activeValues.value = vMenu.select(value);\n    };\n    watch(activeValue, updateActiveValues);\n    watch(\n      () => props.expandType,\n      (value) => {\n        mode.value = value;\n      },\n    );\n\n    onMounted(() => {\n      activeValues.value = vMenu.select(activeValue.value);\n      if (expandValues.value?.length > 0) {\n        handleSubmenuExpand(expandValues.value[0]); // 顶部导航只能同时展开一个子菜单\n      }\n    });\n\n    const handleClickSubMenuItem = (value: MenuValue) => {\n      const activeMenuItem = submenu.find((v) => v.value === value);\n      activeMenuItem.onClick?.({ value });\n      const { to, href, replace } = activeMenuItem;\n      if (href) {\n        window.location.href = activeMenuItem.href;\n      }\n      // @ts-ignore: TODO\n      const router = activeMenuItem.router || proxy.$router;\n      if (to && router) {\n        replace ? router.replace(to) : router.push(to);\n      }\n    };\n    // setup返回的render函数中无法访问methods属性中的类容，移动此方法到setup中\n    const renderNormalSubmenu = () => {\n      if (submenu.length === 0) return null;\n      return (\n        <ul class={[`${classPrefix.value}-head-menu__submenu`, `${classPrefix.value}-submenu`]}>\n          {\n            <Tabs value={activeValue.value} onChange={handleTabChange}>\n              {submenu.map((item) => (\n                <TabPanel value={item.value} label={item.vnode()[0]?.children} />\n              ))}\n            </Tabs>\n          }\n        </ul>\n      );\n    };\n\n    const menuRef = ref<HTMLUListElement>();\n    const innerRef = ref<HTMLDivElement>();\n    const logoRef = ref<HTMLDivElement>();\n    const operationRef = ref<HTMLDivElement>();\n\n    const getComputedCss = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n      getComputedStyle(el)[cssProperty] ?? '';\n\n    const getComputedCssValue = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n      Number.parseInt(String(getComputedCss(el, cssProperty)), 10);\n\n    const calcMenuWidth = () => {\n      const menuPaddingLeft = getComputedCssValue(menuRef.value, 'paddingLeft');\n      const menuPaddingRight = getComputedCssValue(menuRef.value, 'paddingRight');\n      let totalWidth = innerRef.value.clientWidth;\n      if (logoRef.value) {\n        const logoMarginLeft = getComputedCssValue(logoRef.value, 'marginLeft');\n        const logoMarginRight = getComputedCssValue(logoRef.value, 'marginRight');\n        totalWidth = totalWidth - logoRef.value.offsetWidth - logoMarginLeft - logoMarginRight;\n      }\n\n      if (operationRef.value) {\n        const operationMarginLeft = getComputedCssValue(operationRef.value, 'marginLeft');\n        const operationMarginRight = getComputedCssValue(operationRef.value, 'marginRight');\n        totalWidth = totalWidth - operationRef.value.offsetWidth - operationMarginLeft - operationMarginRight;\n      }\n\n      return totalWidth - menuPaddingLeft - menuPaddingRight;\n    };\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const formatContent = () => {\n      let slot = ctx.slots.default?.() || ctx.slots.content?.() || [];\n\n      if (menuRef.value && innerRef.value) {\n        const validNodes = Array.from(menuRef.value.childNodes ?? []).filter(\n          (item) => item.nodeName !== '#text' || item.nodeValue,\n        ) as HTMLElement[];\n\n        const menuWidth = calcMenuWidth();\n        const menuItemMinWidth = 104;\n\n        let remainWidth = menuWidth;\n        let sliceIndex = validNodes.length;\n\n        for (let index = 0; index < validNodes.length; index++) {\n          const element = validNodes[index];\n          remainWidth -= element.offsetWidth || 0;\n          if (remainWidth < menuItemMinWidth) {\n            sliceIndex = index;\n            break;\n          }\n        }\n\n        const defaultSlot = slot.slice(0, sliceIndex);\n        const subMore = slot.slice(sliceIndex);\n\n        if (subMore.length) {\n          slot = defaultSlot.concat(\n            <Submenu expandType=\"popup\" title={() => <EllipsisIcon />}>\n              {subMore}\n            </Submenu>,\n          );\n        }\n      }\n      return slot;\n    };\n\n    const initVMenu = (slots: VNode[], parentValue?: string) => {\n      slots.forEach((node) => {\n        const nodeValue = node.props?.value;\n        if ((node.type as Component)?.name === 'TSubmenu' || (node.type as Component)?.name === 'TMenuItem') {\n          vMenu.add({ value: nodeValue, parent: parentValue, vnode: (node.children as any).default, ...node.props });\n        }\n        if (isFunction((node.children as any)?.default)) {\n          initVMenu((node.children as any).default(), nodeValue);\n          return;\n        }\n        if (isArray(node.children)) {\n          initVMenu(node.children as VNode[], nodeValue);\n        }\n      });\n    };\n\n    return () => {\n      const logo = props.logo?.(h) || ctx.slots.logo?.();\n      const operations = props.operations?.(h) || ctx.slots.operations?.() || ctx.slots.options?.();\n\n      // TODO: 判断逻辑不够完善 影响封装组件的子菜单样式渲染 暂时先不执行 待调整实现方案\n      // const content = formatContent();\n      const content = ctx.slots.default?.() || ctx.slots.content?.() || [];\n      initVMenu(content);\n\n      return (\n        <div class={menuClass.value}>\n          <div class={`${classPrefix.value}-head-menu__inner`} ref={innerRef}>\n            {logo && (\n              <div class={`${classPrefix.value}-menu__logo`} ref={logoRef}>\n                {logo}\n              </div>\n            )}\n            <ul class={`${classPrefix.value}-menu`} ref={menuRef}>\n              {content}\n            </ul>\n            {operations && (\n              <div class={`${classPrefix.value}-menu__operations`} ref={operationRef}>\n                {operations}\n              </div>\n            )}\n          </div>\n          {mode.value === 'normal' && renderNormalSubmenu()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","setup","ctx","classPrefix","usePrefixClass","_getCurrentInstance","getCurrentInstance","proxy","watchEffect","slots","options","log","warnOnce","_toRefs","toRefs","value","modelValue","expanded","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","activeValue","setActiveValue","_useDefaultValue","useDefaultValue","defaultExpanded","onExpand","_useDefaultValue2","expandValues","setExpanded","activeValues","ref","theme","computed","menuClass","concat","mode","expandType","submenu","reactive","vMenu","VMenu","isMutex","provide","isHead","select","open","type","_toConsumableArray","index","indexOf","push","splice","handleTabChange","handleClickSubMenuItem","handleSubmenuExpand","ans","getChild","length","apply","watch","updateActiveValues","onMounted","_expandValues$value","_activeMenuItem$onCli","activeMenuItem","find","v","onClick","to","href","replace","window","location","router","$router","renderNormalSubmenu","_slot","_createVNode","map","item","_item$vnode$","TabPanel","vnode","children","_default","menuRef","innerRef","logoRef","operationRef","getComputedCss","el","cssProperty","getComputedStyle","_getComputedStyle$css","getComputedCssValue","Number","parseInt","String","calcMenuWidth","menuPaddingLeft","menuPaddingRight","totalWidth","clientWidth","logoMarginLeft","logoMarginRight","offsetWidth","operationMarginLeft","operationMarginRight","formatContent","_ctx$slots$default","_ctx$slots","_ctx$slots$content","_ctx$slots2","slot","content","_menuRef$value$childN","validNodes","Array","from","childNodes","filter","nodeName","nodeValue","menuWidth","menuItemMinWidth","remainWidth","sliceIndex","element","defaultSlot","slice","subMore","Submenu","title","EllipsisIcon","initVMenu","parentValue","forEach","node","_node$props","_node$type","_node$type2","_node$children","add","_objectSpread","parent","isFunction","isArray","_props2$logo","_ctx$slots$logo","_ctx$slots3","_props2$operations","_ctx$slots$operations","_ctx$slots4","_ctx$slots$options","_ctx$slots5","_ctx$slots$default2","_ctx$slots6","_ctx$slots$content2","_ctx$slots7","logo","h","operations"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B2D,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAA,KAAA,UAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,IAAA,CAAAJ,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,OAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAE3D,gBAAeM,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,WAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAA,WAAAA,KAAAA,CAAMD,QAAOE,GAAK,EAAA;AAChB,IAAA,IAAMC,cAAcC,cAAe,EAAA,CAAA;AAC7B,IAAA,IAAAC,mBAAA,GAAYC,kBAAmB,EAAA;MAA7BC,KAAM,GAAAF,mBAAA,CAANE,KAAM,CAAA;AACdC,IAAAA,WAAA,CAAY,YAAM;AACZ,MAAA,IAAAN,GAAA,CAAIO,MAAMC,OAAS,EAAA;AACjBC,QAAAA,GAAA,CAAAC,QAAA,CAAS,SAAS,qFAAqF,CAAA,CAAA;AAC7G,OAAA;AACF,KAAC,CAAA,CAAA;AACD,IAAA,IAAAC,OAAA,GAAwCC,OAAOd,MAAK,CAAA;MAA5Ce,KAAO,GAAAF,OAAA,CAAPE,KAAO;MAAAC,UAAA,GAAAH,OAAA,CAAAG,UAAA;MAAYC,QAAS,GAAAJ,OAAA,CAATI,QAAS,CAAA;AAC9B,IAAA,IAAAC,UAAA,GAAgCC,SAAA,CAAUJ,OAAOC,UAAYhB,EAAAA,MAAAA,CAAMoB,YAAcpB,EAAAA,MAAAA,CAAMqB,QAAQ,CAAA;MAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAA9FM,MAAAA,WAAa,GAAAF,WAAA,CAAA,CAAA,CAAA;AAAAG,MAAAA,cAAc,GAAAH,WAAA,CAAA,CAAA,CAAA,CAAA;AAC5B,IAAA,IAAAI,gBAAA,GAA8BC,eAAA,CAAgBV,UAAUjB,MAAM,CAAA4B,eAAA,EAAiB5B,MAAM,CAAA6B,QAAA,EAAU,UAAU,CAAA;MAAAC,iBAAA,GAAAP,cAAA,CAAAG,gBAAA,EAAA,CAAA,CAAA;AAAxGK,MAAAA,YAAc,GAAAD,iBAAA,CAAA,CAAA,CAAA;AAAAE,MAAAA,WAAW,GAAAF,iBAAA,CAAA,CAAA,CAAA,CAAA;AAC1B,IAAA,IAAAG,YAAA,GAAeC,GAAI,CAAA,EAAE,CAAA,CAAA;IAC3B,IAAMC,KAAQ,GAAAC,QAAA,CAAS,YAAA;MAAA,OAAMpC,MAAAA,CAAMmC,KAAK,CAAA;KAAA,CAAA,CAAA;IAClC,IAAAE,SAAA,GAAYD,SAAS,YAAA;MAAA,OAAM,CAAA,EAAA,CAAAE,MAAA,CAC5BnC,WAAY,CAAAY,KAAA,EAAAuB,OAAAA,CAAAA,EAAAA,EAAAA,CAAAA,MAAA,CACZnC,WAAY,CAAAY,KAAA,oBAAAuB,MAAA,CACZnC,WAAY,CAAAY,KAAA,EAAA,SAAA,CAAA,CAAAuB,MAAA,CAAetC,MAAM,CAAAmC,KAAA,CACrC,CAAA,CAAA;KAAA,CAAA,CAAA;AACK,IAAA,IAAAI,IAAA,GAAOL,GAAIlC,CAAAA,MAAAA,CAAMwC,UAAU,CAAA,CAAA;AAC3B,IAAA,IAAAC,OAAA,GAAUC,QAAS,CAAA,EAAE,CAAA,CAAA;AACrB,IAAA,IAAAC,KAAA,GAAQ,IAAIC,KAAM,CAAA;AAAEC,MAAAA,SAAS,IAAM;MAAAd,YAAA,EAAcA,YAAa,CAAAhB,KAAAA;AAAM,KAAC,CAAA,CAAA;IAE3E+B,OAAA,CAAyB,QAAU,EAAA;AACjCP,MAAAA,IAAA,EAAAA,IAAA;AACAJ,MAAAA,KAAA,EAAAA,KAAA;AACAQ,MAAAA,KAAA,EAAAA,KAAA;AACAI,MAAAA,MAAQ,EAAA,IAAA;AACRhB,MAAAA,YAAA,EAAAA,YAAA;AACAP,MAAAA,WAAA,EAAAA,WAAA;AACAS,MAAAA,YAAA,EAAAA,YAAA;AACAe,MAAAA,MAAA,EAAQ,SAARA,MAAAA,CAASjC,MAAqB,EAAA;QAC5BU,cAAA,CAAeV,MAAK,CAAA,CAAA;OACtB;AACAkC,MAAAA,IAAA,EAAM,SAANA,IAAAA,CAAOlC,MAAAA,EAAkBmC,IAAqB,EAAA;AAC5C,QAAA,IAAMjC,SAAW,GAAAkC,kBAAA,CAAIpB,YAAA,CAAahB,KAAK,CAAA,CAAA;AACjC,QAAA,IAAAqC,KAAA,GAAQnC,SAAS,CAAAoC,OAAA,CAAQtC,MAAK,CAAA,CAAA;AAEhC,QAAA,IAAAwB,IAAA,CAAKxB,UAAU,OAAS,EAAA;UAC1B,IAAImC,SAAS,KAAO,EAAA;AAClB,YAAA,IAAIE,UAAU,CAAI,CAAA,EAAA;AAEhBnC,cAAAA,SAAAA,CAASqC,KAAKvC,MAAK,CAAA,CAAA;AACrB,aAAA;AACF,WAAA,MAAA,IAAWmC,SAAS,QAAU,EAAA;AAC5BjC,YAAAA,SAAAA,CAASsC,MAAO,CAAAH,KAAA,EAAO,CAAC,CAAA,CAAA;AAC1B,WAAA;AACF,SAAW,MAAA,IAAAb,IAAA,CAAKxB,KAAU,KAAA,QAAA,IAAYA,WAAU,KAAW,CAAA,EAAA;AACzDE,UAAAA,SAAAA,CAASsC,MAAO,CAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AACpB,UAAA,IAAIH,UAAU,CAAI,CAAA,EAAA;AAChBnC,YAAAA,SAAAA,CAASqC,KAAKvC,MAAK,CAAA,CAAA;AACrB,WAAA;AACF,SAAA;QACAiB,WAAA,CAAYf,SAAQ,CAAA,CAAA;AACtB,OAAA;AACF,KAAC,CAAA,CAAA;AAGK,IAAA,IAAAuC,eAAA,GAAkB,SAAlBA,eAAAA,CAAmBzC,MAAqB,EAAA;MAC5CU,cAAA,CAAeV,MAAK,CAAA,CAAA;MACpB0C,sBAAA,CAAuB1C,MAAK,CAAA,CAAA;KAC9B,CAAA;AAEM,IAAA,IAAA2C,mBAAA,GAAsB,SAAtBA,mBAAAA,CAAuB3C,MAAqB,EAAA;AAC1C,MAAA,IAAA4C,GAAA,GAAMhB,KAAM,CAAAiB,QAAA,CAAS7C,MAAK,CAAA,CAAA;MAChC0B,OAAA,CAAQoB,MAAS,GAAA,CAAA,CAAA;MACTpB,OAAA,CAAAa,IAAA,CAAAQ,KAAA,CAAArB,OAAA,EAAAU,kBAAA,CAAQQ,GAAG,CAAA,CAAA,CAAA;KACrB,CAAA;AAGMI,IAAAA,KAAA,CAAAhC,YAAA,EAAc,UAAChB,MAAU,EAAA;AACzB,MAAA,IAAAwB,IAAA,CAAKxB,UAAU,QAAU,EAAA;AAC3B2C,QAAAA,mBAAA,CAAoB3C,OAAM,CAAE,CAAA,CAAA,CAAA;AAC9B,OAAA;AACF,KAAC,CAAA,CAAA;AACK,IAAA,IAAAiD,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBjD,MAAqB,EAAA;MAClCkB,YAAA,CAAAlB,KAAA,GAAQ4B,KAAM,CAAAK,MAAA,CAAOjC,MAAK,CAAA,CAAA;KACzC,CAAA;AACAgD,IAAAA,KAAA,CAAMvC,aAAawC,kBAAkB,CAAA,CAAA;AACrCD,IAAAA,KAAA,CACE,YAAA;MAAA,OAAM/D,MAAM,CAAAwC,UAAA,CAAA;KACZ,EAAA,UAACzB,MAAU,EAAA;MACTwB,IAAA,CAAKxB,KAAQA,GAAAA,MAAAA,CAAAA;AACf,KACF,CAAA,CAAA;AAEAkD,IAAAA,SAAA,CAAU,YAAM;AAAA,MAAA,IAAAC,mBAAA,CAAA;MACdjC,YAAA,CAAalB,KAAQ,GAAA4B,KAAA,CAAMK,MAAO,CAAAxB,WAAA,CAAYT,KAAK,CAAA,CAAA;AAC/C,MAAA,IAAA,CAAAmD,CAAAA,mBAAA,GAAAnC,YAAA,CAAahB,KAAO,MAAA,IAAA,IAAAmD,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApBA,mBAAA,CAAoBL,MAAA,IAAS,CAAG,EAAA;AACdH,QAAAA,mBAAA,CAAA3B,YAAA,CAAahB,MAAM,CAAE,CAAA,CAAA,CAAA;AAC3C,OAAA;AACF,KAAC,CAAA,CAAA;AAEK,IAAA,IAAA0C,sBAAA,GAAyB,SAAzBA,sBAAAA,CAA0B1C,MAAqB,EAAA;AAAA,MAAA,IAAAoD,qBAAA,CAAA;AACnD,MAAA,IAAMC,iBAAiB3B,OAAQ,CAAA4B,IAAA,CAAK,UAACC,CAAM,EAAA;AAAA,QAAA,OAAAA,CAAA,CAAEvD,UAAUA,MAAK,CAAA;OAAA,CAAA,CAAA;AAC5D,MAAA,CAAAoD,qBAAA,GAAAC,cAAA,CAAeG,OAAU,MAAA,IAAA,IAAAJ,qBAAA,KAAA,KAAA,CAAA,IAAzBA,qBAAA,CAAAvE,IAAA,CAAAwE,cAAA,EAAyB;AAAErD,QAAAA,KAAAA,EAAAA,MAAAA;AAAM,OAAC,CAAA,CAAA;AAClC,MAAA,IAAQyD,EAAA,GAAsBJ,cAAA,CAAtBI,EAAA;QAAIC,IAAM,GAAYL,cAAA,CAAlBK,IAAM;QAAAC,OAAA,GAAYN,cAAA,CAAZM,OAAA,CAAA;AAClB,MAAA,IAAID,IAAM,EAAA;AACDE,QAAAA,MAAA,CAAAC,QAAA,CAASH,OAAOL,cAAe,CAAAK,IAAA,CAAA;AACxC,OAAA;MAEM,IAAAI,MAAA,GAAST,cAAe,CAAAS,MAAA,IAAUtE,KAAM,CAAAuE,OAAA,CAAA;MAC9C,IAAIN,MAAMK,MAAQ,EAAA;AAChBH,QAAAA,OAAA,GAAUG,OAAOH,OAAQ,CAAAF,EAAE,CAAI,GAAAK,MAAA,CAAOvB,KAAKkB,EAAE,CAAA,CAAA;AAC/C,OAAA;KACF,CAAA;AAEA,IAAA,IAAMO,sBAAsB,SAAtBA,sBAA4B;AAAA,MAAA,IAAAC,KAAA,CAAA;AAChC,MAAA,IAAIvC,QAAQoB,MAAW,KAAA,CAAA,EAAU,OAAA,IAAA,CAAA;AACjC,MAAA,OAAAoB,WAAA,CAAA,IAAA,EAAA;QAAA,OACa,EAAA,CAAA,EAAA,CAAA3C,MAAA,CAAInC,YAAYY,KAA4B,EAAA,qBAAA,CAAA,EAAA,EAAA,CAAAuB,MAAA,CAAGnC,WAAY,CAAAY,KAAA,EAAA,UAAA,CAAA,CAAA;;eAErDS,EAAAA,WAAA,CAAYT;kBAAiByC,EAAAA,eAAAA;OAAAjE,EAAAA,OAAA,CAAAyF,KAAA,GACvCvC,OAAQ,CAAAyC,GAAA,CAAI,UAACC,IACZ,EAAA;AAAA,QAAA,IAAAC,YAAA,CAAA;QAAA,OAAAH,WAAA,CAAAI,QAAA,EAAA;UAAA,OAAiBF,EAAAA,KAAKpE,KAAO;AAAA,UAAA,OAAA,EAAA,CAAAqE,YAAA,GAAOD,IAAK,CAAAG,KAAA,GAAQ,CAAI,CAAA,MAAA,IAAA,IAAAF,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,YAAA,CAAiBG,QAAAA;AAAA,SAAA,EAAA,IAAA,CAAA,CAAA;OACtD,CACH,IAAAP,KAAA,GAAA;AAAA,QAAA,SAAA,EAAA,SAAAQ,QAAA,GAAA;AAAA,UAAA,OAAA,CAAAR,KAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA,CAAA,CAAA;KAIR,CAAA;AAEA,IAAA,IAAMS,UAAUvD,GAAsB,EAAA,CAAA;AACtC,IAAA,IAAMwD,WAAWxD,GAAoB,EAAA,CAAA;AACrC,IAAA,IAAMyD,UAAUzD,GAAoB,EAAA,CAAA;AACpC,IAAA,IAAM0D,eAAe1D,GAAoB,EAAA,CAAA;AAEzC,IAAA,IAAM2D,iBAAiB,SAAjBA,eAAkBC,EAAA,EAAaC;;sCACnCC,gBAAiB,CAAAF,EAAE,EAAEC,WAAgB,CAAA,MAAAE,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAEvC,IAAA,IAAMC,mBAAsB,GAAA,SAAtBA,mBAAsBA,CAACJ,EAAa,EAAAC,WAAA,EAAA;AAAA,MAAA,OACxCI,MAAO,CAAAC,QAAA,CAASC,MAAO,CAAAR,cAAA,CAAeC,EAAI,EAAAC,WAAW,CAAC,CAAA,EAAG,EAAE,CAAA,CAAA;AAAA,KAAA,CAAA;AAE7D,IAAA,IAAMO,gBAAgB,SAAhBA,gBAAsB;MAC1B,IAAMC,eAAkB,GAAAL,mBAAA,CAAoBT,OAAQ,CAAA1E,KAAA,EAAO,aAAa,CAAA,CAAA;MACxE,IAAMyF,gBAAmB,GAAAN,mBAAA,CAAoBT,OAAQ,CAAA1E,KAAA,EAAO,cAAc,CAAA,CAAA;AACtE,MAAA,IAAA0F,UAAA,GAAaf,SAAS3E,KAAM,CAAA2F,WAAA,CAAA;MAChC,IAAIf,QAAQ5E,KAAO,EAAA;QACjB,IAAM4F,cAAiB,GAAAT,mBAAA,CAAoBP,OAAQ,CAAA5E,KAAA,EAAO,YAAY,CAAA,CAAA;QACtE,IAAM6F,eAAkB,GAAAV,mBAAA,CAAoBP,OAAQ,CAAA5E,KAAA,EAAO,aAAa,CAAA,CAAA;QACxE0F,UAAA,GAAaA,UAAa,GAAAd,OAAA,CAAQ5E,KAAM,CAAA8F,WAAA,GAAcF,cAAiB,GAAAC,eAAA,CAAA;AACzE,OAAA;MAEA,IAAIhB,aAAa7E,KAAO,EAAA;QACtB,IAAM+F,mBAAsB,GAAAZ,mBAAA,CAAoBN,YAAa,CAAA7E,KAAA,EAAO,YAAY,CAAA,CAAA;QAChF,IAAMgG,oBAAuB,GAAAb,mBAAA,CAAoBN,YAAa,CAAA7E,KAAA,EAAO,aAAa,CAAA,CAAA;QAClF0F,UAAA,GAAaA,UAAa,GAAAb,YAAA,CAAa7E,KAAM,CAAA8F,WAAA,GAAcC,mBAAsB,GAAAC,oBAAA,CAAA;AACnF,OAAA;AAEA,MAAA,OAAON,aAAaF,eAAkB,GAAAC,gBAAA,CAAA;KACxC,CAAA;AAGA,IAAA,IAAMQ,gBAAgB,SAAhBA,gBAAsB;AAAA,MAAA,IAAAC,kBAAA,EAAAC,UAAA,EAAAC,kBAAA,EAAAC,WAAA,CAAA;AACtB,MAAA,IAAAC,IAAA,GAAO,CAAA,CAAAJ,kBAAA,GAAAC,CAAAA,UAAA,GAAAhH,IAAIO,KAAM,EAAA,SAAA,CAAA,cAAAwG,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAVA,kBAAA,CAAArH,IAAA,CAAAsH,UAAoB,6BAAK,CAAAE,WAAA,GAAAlH,GAAI,CAAAO,KAAA,EAAM6G,OAAU,cAAAH,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApBA,kBAAA,CAAAvH,IAAA,CAAAwH,WAAoB,CAAA,KAAK,EAAC,CAAA;AAE1D,MAAA,IAAA3B,OAAA,CAAQ1E,KAAS,IAAA2E,QAAA,CAAS3E,KAAO,EAAA;AAAA,QAAA,IAAAwG,qBAAA,CAAA;QAC7B,IAAAC,UAAA,GAAaC,MAAMC,IAAK,EAAAH,qBAAA,GAAA9B,OAAA,CAAQ1E,MAAM4G,UAAc,MAAAJ,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAA,EAAE,CAAE,CAAAK,MAAA,CAC5D,UAACzC,IAAA,EAAA;UAAA,OAASA,IAAK,CAAA0C,QAAA,KAAa,WAAW1C,IAAK,CAAA2C,SAAA,CAAA;AAAA,SAC9C,CAAA,CAAA;AAEA,QAAA,IAAMC,YAAYzB,aAAc,EAAA,CAAA;QAChC,IAAM0B,gBAAmB,GAAA,GAAA,CAAA;QAEzB,IAAIC,WAAc,GAAAF,SAAA,CAAA;AAClB,QAAA,IAAIG,aAAaV,UAAW,CAAA3D,MAAA,CAAA;AAE5B,QAAA,KAAA,IAAST,KAAQ,GAAA,CAAA,EAAGA,KAAQ,GAAAoE,UAAA,CAAW3D,QAAQT,KAAS,EAAA,EAAA;AACtD,UAAA,IAAM+E,UAAUX,UAAW,CAAApE,KAAA,CAAA,CAAA;AAC3B6E,UAAAA,WAAA,IAAeE,QAAQtB,WAAe,IAAA,CAAA,CAAA;UACtC,IAAIoB,cAAcD,gBAAkB,EAAA;AACrBE,YAAAA,UAAA,GAAA9E,KAAA,CAAA;AACb,YAAA,MAAA;AACF,WAAA;AACF,SAAA;QAEA,IAAMgF,WAAc,GAAAf,IAAA,CAAKgB,KAAM,CAAA,CAAA,EAAGH,UAAU,CAAA,CAAA;AACtC,QAAA,IAAAI,OAAA,GAAUjB,IAAK,CAAAgB,KAAA,CAAMH,UAAU,CAAA,CAAA;QAErC,IAAII,QAAQzE,MAAQ,EAAA;AAClBwD,UAAAA,IAAA,GAAOe,WAAY,CAAA9F,MAAA,CAAA2C,WAAA,CAAAsD,QAAA,EAAA;AAAA,YAAA,YAAA,EAAA,OAAA;AAAA,YAAA,OAAA,EACkB,SAAAC,KAAA,GAAA;cAAA,OAAAvD,WAAA,CAAAwD,YAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAAA,aAAA;AAChC,WAAA,EAAAlJ,OAAA,CAAA+I,OAAA,CAAA,GAAAA,OAAA,GAAA;AAAA,YAAA,SAAA,EAAA,SAAA9C,QAAA,GAAA;AAAA,cAAA,OAAA,CAAA8C,OAAA,CAAA,CAAA;AAAA,aAAA;AAAA,WAAA,CAEL,CAAA,CAAA;AACF,SAAA;AACF,OAAA;AACO,MAAA,OAAAjB,IAAA,CAAA;KACT,CAAA;IAEM,IAAAqB,UAAA,GAAY,SAAZA,SAAAA,CAAajI,KAAA,EAAgBkI,WAAyB,EAAA;AACpDlI,MAAAA,KAAA,CAAAmI,OAAA,CAAQ,UAACC,IAAS,EAAA;AAAA,QAAA,IAAAC,WAAA,EAAAC,UAAA,EAAAC,WAAA,EAAAC,cAAA,CAAA;AAChB,QAAA,IAAAnB,SAAA,GAAA,CAAAgB,WAAA,GAAYD,KAAK7I,KAAO,MAAA,IAAA,IAAA8I,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAZA,WAAA,CAAY/H,KAAA,CAAA;AAC9B,QAAA,IAAK,CAAAgI,CAAAA,UAAA,GAAAF,KAAK3F,IAAoB,MAAA6F,IAAAA,IAAAA,UAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAA,CAAyBhJ,IAAA,MAAS,cAAe,CAAA,CAAAiJ,WAAA,GAAAH,IAAK,CAAA3F,IAAA,MAAA,IAAA,IAAA8F,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAALA,WAAA,CAAyBjJ,UAAS,WAAa,EAAA;UACnG4C,KAAA,CAAMuG,GAAI,CAAAC,aAAA,CAAA;AAAEpI,YAAAA,KAAO,EAAA+G,SAAA;AAAWsB,YAAAA,MAAQ,EAAAT,WAAA;YAAarD,KAAQ,EAAAuD,IAAA,CAAKtD,QAAiB,CAAA,SAAA,CAAA;AAAA,WAAA,EAAYsD,IAAA,CAAK7I,MAAO,CAAA,CAAA;AAC3G,SAAA;AACA,QAAA,IAAIqJ,UAAY,CAAA,CAAAJ,cAAA,GAAAJ,IAAA,CAAKtD,QAAkB,MAAA,IAAA,IAAA0D,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAvBA,cAAA,CAAA,SAAA,CAA8B,CAAG,EAAA;UAC/CP,UAAA,CAAWG,IAAK,CAAAtD,QAAA,WAAyB,EAAA,EAAGuC,SAAS,CAAA,CAAA;AACrD,UAAA,OAAA;AACF,SAAA;AACI,QAAA,IAAAwB,OAAA,CAAQT,IAAK,CAAAtD,QAAQ,CAAG,EAAA;AAChBmD,UAAAA,UAAA,CAAAG,IAAA,CAAKtD,UAAqBuC,SAAS,CAAA,CAAA;AAC/C,SAAA;AACF,OAAC,CAAA,CAAA;KACH,CAAA;AAEA,IAAA,OAAO,YAAM;MAAA,IAAAyB,YAAA,EAAAC,eAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,qBAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,WAAA,EAAAC,mBAAA,EAAAC,WAAA,EAAAC,mBAAA,EAAAC,WAAA,CAAA;AACX,MAAA,IAAMC,OAAOnK,CAAAA,CAAAA,YAAAA,GAAAA,MAAM,CAAAmK,IAAA,MAAAZ,IAAAA,IAAAA,YAAA,uBAANvJ,YAAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAOoK,CAAC,CAAK,MAAAZ,CAAAA,eAAA,GAAA,CAAAC,WAAA,GAAAvJ,GAAA,CAAIO,OAAM0J,IAAO,MAAA,IAAA,IAAAX,eAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAA5J,IAAA,CAAA6J,WAAiB,CAAA,CAAA,CAAA;MAC3C,IAAAY,UAAA,GAAarK,CAAAA,CAAAA,kBAAAA,GAAAA,MAAM,CAAAqK,UAAA,MAAA,IAAA,IAAAX,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN1J,kBAAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAaoK,CAAC,CAAA,MAAAT,CAAAA,qBAAA,GAAK,CAAAC,WAAA,GAAA1J,GAAI,CAAAO,KAAA,EAAM4J,UAAa,MAAAV,IAAAA,IAAAA,qBAAA,KAAvBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAA/J,IAAA,CAAAgK,WAAuB,CAAA,CAAA,KAAA,CAAAC,kBAAA,GAAK,CAAAC,WAAA,GAAA5J,GAAI,CAAAO,KAAA,EAAMC,OAAU,MAAAmJ,IAAAA,IAAAA,kBAAA,KAApBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAAjK,IAAA,CAAAkK,WAAoB,CAAA,CAAA,CAAA;AAItF,MAAA,IAAAxC,OAAA,GAAU,CAAA,CAAAyC,mBAAA,GAAAC,CAAAA,WAAA,GAAA9J,IAAIO,KAAM,EAAA,SAAA,CAAA,cAAAsJ,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAVA,mBAAA,CAAAnK,IAAA,CAAAoK,WAAoB,8BAAK,CAAAE,WAAA,GAAAhK,GAAI,CAAAO,KAAA,EAAM6G,OAAU,cAAA2C,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApBA,mBAAA,CAAArK,IAAA,CAAAsK,WAAoB,CAAA,KAAK,EAAC,CAAA;MACnExB,UAAA,CAAUpB,OAAO,CAAA,CAAA;AAGf,MAAA,OAAArC,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAY5C,SAAU,CAAAtB,KAAAA;AAAA,OAAA,EAAA,CAAAkE,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA3C,MAAA,CACLnC,WAAA,CAAYY;aAA+B2E,EAAAA,QAAAA;OACvDyE,EAAAA,CAAAA,IAAA,IAAAlF,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA3C,MAAA,CACgBnC,YAAYY,KAAoB,EAAA,aAAA,CAAA;QAAA,KAAK4E,EAAAA,OAAAA;OACjDwE,EAAAA,CAAAA,IAAA,CADF,CAAA,EAAAlF,WAAA,CAAA,IAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA3C,MAAA,CAIWnC,YAAYY,KAAc,EAAA,OAAA,CAAA;QAAA,KAAK0E,EAAAA,OAAAA;AAC1C,OAAA,EAAA,CAAA6B,OAAA,CAAA,CAAA,EAEF+C,UAAA,IAAApF,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA3C,MAAA,CACgBnC,YAAYY,KAA0B,EAAA,mBAAA,CAAA;QAAA,KAAK6E,EAAAA,YAAAA;OACvDyE,EAAAA,CAAAA,UAAA,CADF,CAAA,CAAA,CAAA,EAKJ9H,IAAA,CAAKxB,KAAU,KAAA,QAAA,IAAYgE,mBAAoB,EAAA,CAAA,CAAA,CAAA;KAGtD,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}