{"version":3,"file":"menu-item.cjs","sources":["../../../components/menu/menu-item.tsx"],"sourcesContent":["import { CollapseTransition } from '@/components/collapse-transition'\nimport { Icon } from '@/components/icon'\nimport { Popper } from '@/components/popper'\nimport { Tooltip } from '@/components/tooltip'\nimport { Renderer } from '@/components/renderer'\n\nimport {\n  computed,\n  defineAsyncComponent,\n  defineComponent,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  // onMounted,\n  provide,\n  reactive,\n  ref,\n  renderSlot,\n  toRef,\n  watch,\n} from 'vue'\n\nimport {\n  createIconProp,\n  emitEvent,\n  useHoverDelay,\n  useIcons,\n  useNameHelper,\n  useProps,\n} from '@vexip-ui/config'\nimport { useClickOutside, usePopper, useRtl, useSetTimeout } from '@vexip-ui/hooks'\nimport { callIfFunc } from '@vexip-ui/utils'\nimport { menuItemProps } from './props'\nimport { MENU_GROUP_STATE, MENU_ITEM_STATE, MENU_STATE } from './symbol'\n\n// For types build\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { PopperExposed } from '@/components/popper'\nimport type { Placement } from '@vexip-ui/hooks'\nimport type { MenuOptions } from './symbol'\n\nconst MenuGroup = defineAsyncComponent(() => import('./menu-group'))\n\nconst MenuItem = defineComponent({\n  name: 'MenuItem',\n  props: menuItemProps,\n  emits: [],\n  setup(_props, { slots, expose }) {\n    const props = useProps('menuItem', _props, {\n      label: {\n        default: null,\n        static: true,\n      },\n      icon: createIconProp(),\n      iconProps: null,\n      disabled: false,\n      transfer: null,\n      trigger: null,\n      transitionName: null,\n      meta: null,\n      children: {\n        default: () => [],\n        static: true,\n      },\n      route: null,\n      arrow: null,\n      slots: () => ({}),\n    })\n\n    const menuState = inject(MENU_STATE, null)\n    const parentItemState = inject(MENU_ITEM_STATE, null)\n    const groupState = inject(MENU_GROUP_STATE, null)\n\n    const nh = useNameHelper('menu')\n    const icons = useIcons()\n    const hoverDelay = useHoverDelay()\n\n    const { isRtl } = useRtl()\n\n    const baseClass = nh.be('item')\n    const placement = ref<Placement>(isRtl.value ? 'left-start' : 'right-start')\n    const groupExpanded = ref(false)\n    const selected = ref(false)\n    const sonSelected = ref(false)\n    const popperShow = ref(false)\n\n    const indent = computed(() => (parentItemState?.indent ?? 0) + 1)\n    const propTransfer = computed(() => props.transfer ?? menuState?.transfer ?? false)\n    const inTransfer = computed(() => (parentItemState ? parentItemState.transfer : false))\n    const transfer = computed(() => !inTransfer.value && propTransfer.value)\n    const markerType = computed(() => menuState?.markerType || 'right')\n\n    const wrapper = useClickOutside(handleClickOutside)\n    const popper = ref<PopperExposed>()\n    const { reference, transferTo, updatePopper } = usePopper({\n      placement,\n      transfer,\n      wrapper,\n      popper: computed(() => popper.value?.wrapper),\n      shift: { crossAxis: true },\n    })\n\n    const isGroup = computed(() => !!(slots.group || props.children?.length))\n    const showGroup = computed(() => isGroup.value && groupExpanded.value)\n    const className = computed(() => {\n      return {\n        [baseClass]: true,\n        [`${baseClass}--disabled`]: props.disabled,\n        [`${baseClass}--group-visible`]: showGroup.value,\n        [`${baseClass}--selected`]: selected.value,\n        [`${baseClass}--no-icon`]: !props.icon,\n        [`${baseClass}--son-selected`]: sonSelected.value,\n      }\n    })\n    const labelStyle = computed(() => {\n      if (menuState?.horizontal || parentItemState?.isUsePopper) {\n        return {}\n      }\n\n      const indentWidth = nh.gcv('indent-width')\n      const multiplier =\n        indent.value + (menuState?.isReduced ? 0 : (groupState?.indent ?? 0)) * 0.25\n\n      return {\n        paddingInlineStart:\n          parentItemState && parentItemState.isUsePopper\n            ? undefined\n            : `calc(${indentWidth} * ${multiplier})`,\n      }\n    })\n    const isUsePopper = computed(() => {\n      return (\n        (menuState && (menuState.horizontal || menuState.groupType === 'dropdown')) ||\n        (isGroup.value && menuState?.isReduced && !parentItemState) ||\n        !!parentItemState?.isUsePopper\n      )\n    })\n    const tooltipDisabled = computed(() => {\n      return (\n        isGroup.value || !!(parentItemState?.isUsePopper || (menuState && !menuState.isReduced))\n      )\n    })\n    const tooltipReverse = computed(() => !!menuState?.tooltipReverse)\n    const isHorizontal = computed(() => menuState?.horizontal && !parentItemState)\n    const transition = computed(() => {\n      return (props.transitionName ?? isHorizontal.value) ? nh.ns('drop') : nh.ns('zoom')\n    })\n    const dropTrigger = computed(() => props.trigger || menuState?.trigger || 'hover')\n\n    const itemState = reactive({\n      el: wrapper,\n      label: toRef(props, 'label'),\n      indent,\n      groupExpanded,\n      showGroup,\n      isUsePopper,\n      parentState: parentItemState,\n      transfer: computed(() => inTransfer.value || propTransfer.value),\n      cachedExpanded: groupExpanded.value,\n      updateSonSelected,\n      toggleGroupExpanded,\n      handleMouseEnter,\n      handleMouseLeave,\n    })\n\n    provide(MENU_ITEM_STATE, itemState)\n\n    watch(\n      showGroup,\n      value => {\n        if (value && isUsePopper.value) {\n          popperShow.value = true\n          updatePopper()\n        }\n      },\n      { immediate: true },\n    )\n    watch(selected, value => {\n      if (value) {\n        emitEvent(props.onSelect)\n      }\n\n      menuState?.doForEachItem(item => item.updateSonSelected(false, false))\n      value &&\n        nextTick(() => {\n          parentItemState?.updateSonSelected(value)\n        })\n    })\n    watch(groupExpanded, expanded => {\n      if (typeof menuState?.handleExpand === 'function') {\n        menuState.handleExpand(props.label, expanded, props.meta || {})\n      }\n    })\n    watch(\n      isHorizontal,\n      value => {\n        placement.value = value ? 'bottom' : isRtl.value ? 'left-start' : 'right-start'\n      },\n      { immediate: true },\n    )\n\n    if (menuState) {\n      watch(\n        [() => props.label, () => menuState.currentActive],\n        () => {\n          selected.value = props.label === menuState.currentActive\n        },\n        { immediate: true },\n      )\n\n      if (typeof menuState.increaseItem === 'function') {\n        menuState.increaseItem(itemState)\n      }\n    }\n\n    onBeforeUnmount(() => {\n      if (typeof menuState?.decreaseItem === 'function') {\n        menuState.decreaseItem(itemState)\n      }\n    })\n\n    expose({\n      groupExpanded,\n      isGroup,\n      showGroup,\n      isUsePopper,\n      handleSelect,\n      handleMouseEnter,\n      handleMouseLeave,\n    })\n\n    function updateSonSelected(selected: boolean, upstream = true) {\n      sonSelected.value = selected\n      upstream && parentItemState?.updateSonSelected(selected)\n    }\n\n    const { timer } = useSetTimeout()\n\n    function handleSelect() {\n      clearTimeout(timer.hover)\n\n      if (props.disabled) return\n\n      if (isGroup.value) {\n        if (isUsePopper.value && dropTrigger.value !== 'click') return\n\n        menuState?.doForEachItem(item => {\n          if (menuState.accordion) {\n            item.groupExpanded = false\n          }\n        })\n        groupExpanded.value = !groupExpanded.value\n      } else {\n        if (isUsePopper.value) {\n          toggleGroupExpanded(false, true)\n        }\n\n        if (menuState) {\n          menuState.handleSelect(props.label, props.meta || {}, props.route)\n        }\n\n        selected.value = true\n      }\n    }\n\n    function toggleGroupExpanded(expanded: boolean, upward = false) {\n      clearTimeout(timer.hover)\n\n      menuState?.doForEachItem(item => {\n        if (menuState.accordion) {\n          item.groupExpanded = false\n        }\n      })\n      groupExpanded.value = expanded\n\n      if (upward && typeof parentItemState?.toggleGroupExpanded === 'function') {\n        parentItemState.toggleGroupExpanded(expanded, upward)\n      }\n    }\n\n    let mouseInList = false\n    let reproduce = false\n\n    function handleMouseEnter() {\n      clearTimeout(timer.hover)\n\n      if (mouseInList || !isUsePopper.value || dropTrigger.value !== 'hover') return\n\n      if (!groupExpanded.value && popperShow.value) {\n        reproduce = true\n        return\n      }\n\n      if (typeof parentItemState?.handleMouseEnter === 'function') {\n        parentItemState.handleMouseEnter()\n      }\n\n      if (props.disabled || !isGroup.value) return\n\n      timer.hover = setTimeout(() => {\n        groupExpanded.value = true\n      }, hoverDelay.value)\n    }\n\n    function handleMouseLeave() {\n      clearTimeout(timer.hover)\n\n      if (mouseInList || !popperShow.value || !isUsePopper.value || dropTrigger.value !== 'hover') {\n        return\n      }\n\n      if (typeof parentItemState?.handleMouseLeave === 'function') {\n        parentItemState.handleMouseLeave()\n      }\n\n      if (props.disabled || !isGroup.value) return\n\n      timer.hover = setTimeout(() => {\n        groupExpanded.value = false\n      }, hoverDelay.value)\n    }\n\n    function handleClickOutside() {\n      if (isUsePopper.value && dropTrigger.value === 'click') {\n        nextTick(() => {\n          groupExpanded.value = false\n        })\n      }\n    }\n\n    function handlePopperHide() {\n      popperShow.value = false\n      groupExpanded.value = false\n\n      if (reproduce) {\n        reproduce = false\n\n        if (typeof parentItemState?.handleMouseEnter === 'function') {\n          parentItemState.handleMouseEnter()\n        }\n\n        if (props.disabled || !isGroup.value) return\n\n        groupExpanded.value = true\n      }\n    }\n\n    function handleKeySelect(event: KeyboardEvent) {\n      const key = event.code || event.key\n\n      if (key === 'Enter' || key === 'NumpadEnter') {\n        event.stopPropagation()\n        handleSelect()\n      } else if (key === 'Space') {\n        event.stopPropagation()\n        event.preventDefault()\n        handleSelect()\n      }\n    }\n\n    function renderChildren() {\n      if (!props.children?.length) {\n        return null\n      }\n\n      const renderItem = (item: MenuOptions) => (\n        <MenuItem\n          label={item.label}\n          icon={item.icon}\n          icon-props={item.iconProps}\n          disabled={item.disabled}\n          children={item.children}\n          route={item.route}\n          meta={item.meta}\n        >\n          {item.name ? callIfFunc(item.name) : item.label}\n        </MenuItem>\n      )\n\n      return props.children.map(child => {\n        if (child.group) {\n          return (\n            <MenuGroup key={child.label} label={child.name ? callIfFunc(child.name) : child.label}>\n              {child.children?.map(renderItem)}\n            </MenuGroup>\n          )\n        }\n\n        return renderItem(child)\n      })\n    }\n\n    function renderArrow() {\n      const params = { groupExpanded: groupExpanded.value, sonSelected: sonSelected.value }\n      const icon = props.arrow || menuState?.arrow || icons.value.angleDown.icon\n      const renderDefault = () => (\n        <Renderer renderer={props.slots.arrow} data={params}>\n          <Icon\n            {...icons.value.angleDown}\n            icon={icon}\n            class={{\n              [nh.be('arrow')]: true,\n              [nh.bem('arrow', 'visible')]: groupExpanded.value,\n              [nh.bem('arrow', 'son-selected')]: sonSelected.value,\n            }}\n          ></Icon>\n        </Renderer>\n      )\n\n      return menuState ? menuState.renderItemArrow(params, renderDefault) : renderDefault()\n    }\n\n    function renderLabel() {\n      return (\n        <Tooltip\n          placement={isRtl.value ? 'left' : 'right'}\n          reverse={tooltipReverse.value}\n          shift\n          transfer\n          disabled={tooltipDisabled.value}\n        >\n          {{\n            trigger: () => (\n              <div\n                ref={reference}\n                class={{\n                  [nh.be('label')]: true,\n                  [nh.bem('label', `marker-${markerType.value}`)]: true,\n                  [nh.bem('label', 'in-popper')]: parentItemState?.isUsePopper,\n                }}\n                role={'menuitem'}\n                tabindex={0}\n                aria-disabled={props.disabled ? 'true' : undefined}\n                style={labelStyle.value}\n                onClick={handleSelect}\n                onKeydown={handleKeySelect}\n                onMouseenter={handleMouseEnter}\n                onMouseleave={handleMouseLeave}\n              >\n                {(slots.icon || props.icon) && (\n                  <div class={nh.be('icon')}>\n                    {slots.icon ? (\n                      renderSlot(slots, 'icon')\n                    ) : (\n                      <Icon {...props.iconProps} icon={props.icon}></Icon>\n                    )}\n                  </div>\n                )}\n                <span\n                  class={{\n                    [nh.be('title')]: true,\n                    [nh.bem('title', 'in-group')]: !isHorizontal.value && isGroup.value,\n                  }}\n                >\n                  {slots.default ? renderSlot(slots, 'default') : props.label}\n                </span>\n                {isGroup.value &&\n                  renderSlot(\n                    slots,\n                    'arrow',\n                    { groupExpanded: groupExpanded.value, sonSelected: sonSelected.value },\n                    () => [renderArrow()],\n                  )}\n              </div>\n            ),\n            default: () => (\n              <span class={nh.be('tooltip-title')}>\n                {slots.default ? renderSlot(slots, 'default') : props.label}\n              </span>\n            ),\n          }}\n        </Tooltip>\n      )\n    }\n\n    return () => {\n      return (\n        <li ref={wrapper} class={className.value} role={'none'}>\n          {renderLabel()}\n          <CollapseTransition appear>\n            {isGroup.value && !isUsePopper.value && (\n              <ul v-show={showGroup.value} class={nh.be('list')}>\n                {slots.group ? renderSlot(slots, 'group') : renderChildren()}\n              </ul>\n            )}\n          </CollapseTransition>\n          {isGroup.value && isUsePopper.value && (\n            <Popper\n              ref={popper}\n              class={[\n                nh.be('popper'),\n                nh.bs('vars'),\n                isHorizontal.value && nh.bem('popper', 'drop'),\n              ]}\n              visible={popperShow.value && showGroup.value}\n              alive={!transferTo.value || popperShow.value}\n              to={transferTo.value}\n              transition={transition.value}\n              onAfterLeave={handlePopperHide}\n              onMouseenter={() => ((mouseInList = true), handleMouseEnter())}\n              onMouseleave={() => ((mouseInList = false), handleMouseLeave())}\n            >\n              <ul class={nh.be('list')}>\n                {slots.group ? renderSlot(slots, 'group') : renderChildren()}\n              </ul>\n            </Popper>\n          )}\n        </li>\n      )\n    }\n  },\n})\n\n// eslint-disable-next-line vue/require-direct-export\nexport default MenuItem\n"],"names":["MenuGroup","defineAsyncComponent","_interopNamespaceDefaultOnly","MenuItem","defineComponent","name","props","menuItemProps","emits","setup","_props","slots","expose","useProps","label","default","static","icon","createIconProp","iconProps","disabled","transfer","trigger","transitionName","meta","children","route","arrow","menuState","inject","MENU_STATE","parentItemState","MENU_ITEM_STATE","groupState","MENU_GROUP_STATE","nh","useNameHelper","icons","useIcons","hoverDelay","useHoverDelay","isRtl","useRtl","baseClass","be","placement","ref","value","groupExpanded","selected","sonSelected","popperShow","indent","computed","propTransfer","inTransfer","markerType","wrapper","useClickOutside","handleClickOutside","popper","reference","transferTo","updatePopper","usePopper","shift","crossAxis","isGroup","group","length","showGroup","className","labelStyle","horizontal","isUsePopper","indentWidth","gcv","multiplier","isReduced","paddingInlineStart","undefined","groupType","tooltipDisabled","tooltipReverse","isHorizontal","transition","ns","dropTrigger","itemState","reactive","el","toRef","parentState","cachedExpanded","updateSonSelected","toggleGroupExpanded","handleMouseEnter","handleMouseLeave","provide","watch","immediate","emitEvent","onSelect","doForEachItem","item","nextTick","expanded","handleExpand","currentActive","increaseItem","onBeforeUnmount","decreaseItem","handleSelect","upstream","timer","useSetTimeout","clearTimeout","hover","accordion","upward","mouseInList","reproduce","setTimeout","handlePopperHide","handleKeySelect","event","key","code","stopPropagation","preventDefault","renderChildren","renderItem","_createVNode","callIfFunc","map","child","renderArrow","params","angleDown","renderDefault","Renderer","Icon","_mergeProps","bem","renderItemArrow","renderLabel","Tooltip","renderSlot","CollapseTransition","_withDirectives","_vShow","Popper","bs","onMouseenter","onMouseleave"],"mappings":"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"}