{"version":3,"file":"head-menu.mjs","sources":["../../src/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 isFunction from 'lodash/isFunction';\nimport isArray from 'lodash/isArray';\n\nimport log from '../_common/js/log/log';\nimport props from './head-menu-props';\nimport { MenuValue } from './type';\nimport { TdMenuInterface, TdOpenType } from './const';\nimport { Tabs, TabPanel } from '../tabs';\nimport Submenu from './submenu';\nimport VMenu from './v-menu';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useVModel from '../hooks/useVModel';\nimport useDefaultValue from '../hooks/useDefaultValue';\n\nexport default defineComponent({\n  name: 'XHeadMenu',\n  props: { ...props },\n  setup(props, ctx) {\n    const classPrefix = usePrefixClass();\n    const { proxy } = getCurrentInstance();\n    watchEffect(() => {\n      if (ctx.slots.options) {\n        log.warnOnce('XMenu', '`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      const router = activeMenuItem.router || proxy.$root.$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={() => <icon-ri-more-line />}>\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 === 'XSubmenu' || (node.type as Component)?.name === 'XMenuItem') {\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    initVMenu(ctx.slots.default?.() || ctx.slots.content?.() || []);\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\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":["_isVNode","name","props","setup","watchEffect","log","activeValue","setActiveValue","expandValues","setExpanded","isMutex","mode","theme","vMenu","isHead","activeValues","select","open","expanded","watch","handleSubmenuExpand","onMounted","value","window","replace","_createVNode","remainWidth","sliceIndex","slot","_resolveComponent","slots","parent","isFunction","isArray","initVMenu"],"mappings":"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"}