{"version":3,"file":"DropdownMenu.cjs","sources":["../../../../../../packages/vue-components/vc-mentions/src/DropdownMenu.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport type { OptionProps } from './Option';\nimport Menu, { Item as MenuItem } from '@antdv/components/menu';\nimport Spin from '@antdv/components/spin';\nimport { defineComponent, inject, onBeforeUnmount, shallowRef } from 'vue';\nimport MentionsContextKey from './MentionsContext';\n\nfunction noop() {}\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'DropdownMenu',\n  props: {\n    prefixCls: String,\n    options: {\n      type: Array as PropType<OptionProps[]>,\n      default: () => [],\n    },\n  },\n  setup(props, { slots }) {\n    const {\n      activeIndex,\n      setActiveIndex,\n      selectOption,\n      onFocus = noop,\n      loading,\n    } = inject(MentionsContextKey, {\n      activeIndex: shallowRef(),\n      loading: shallowRef(false),\n    });\n    let timeoutId: any;\n    const onMousedown = (e: MouseEvent) => {\n      clearTimeout(timeoutId);\n      timeoutId = setTimeout(() => {\n        onFocus(e);\n      });\n    };\n    onBeforeUnmount(() => {\n      clearTimeout(timeoutId);\n    });\n    return () => {\n      const { prefixCls, options } = props;\n      const activeOption = options[activeIndex.value] || {};\n\n      return (\n        <Menu\n          prefixCls={`${prefixCls}-menu`}\n          activeKey={activeOption.value}\n          onSelect={({ key }) => {\n            const option = options.find(({ value }) => value === key);\n            selectOption(option);\n          }}\n          onMousedown={onMousedown}\n        >\n          {!loading.value\n            && options.map((option, index) => {\n              const { value, disabled, label = option.value, class: className, style } = option;\n              return (\n                <MenuItem\n                  key={value}\n                  disabled={disabled}\n                  onMouseenter={() => {\n                    setActiveIndex(index);\n                  }}\n                  class={className}\n                  style={style}\n                >\n                  {slots.option?.(option) ?? (typeof label === 'function' ? label(option) : label)}\n                </MenuItem>\n              );\n            })}\n          {!loading.value && options.length === 0\n            ? (\n                <MenuItem key=\"notFoundContent\" disabled>\n                  {slots.notFoundContent?.()}\n                </MenuItem>\n              )\n            : null}\n          {loading.value && (\n            <MenuItem key=\"loading\" disabled>\n              <Spin size=\"small\" />\n            </MenuItem>\n          )}\n        </Menu>\n      );\n    };\n  },\n});\n"],"names":["noop","defineComponent","compatConfig","MODE","name","props","prefixCls","String","options","type","Array","default","setup","slots","activeIndex","setActiveIndex","selectOption","onFocus","loading","inject","MentionsContextKey","shallowRef","timeoutId","onMousedown","e","clearTimeout","setTimeout","onBeforeUnmount","activeOption","value","_createVNode","Menu","onSelect","key","option","find","map","index","disabled","label","class","className","style","MenuItem","onMouseenter","length","notFoundContent","Spin"],"mappings":"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"}