{"version":3,"file":"Mentions.cjs","sources":["../../../../../../packages/components/mentions/src/Mentions.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { MentionsOptionProps } from './interface';\nimport {\n  classNames,\n  devWarning,\n  flattenChildren,\n  getMergedStatus,\n  getOptionProps,\n  getStatusClassNames,\n  omit,\n} from '@antdv/utils';\nimport { VcMentions } from '@antdv/vue-components';\nimport { computed, defineComponent, shallowRef, watch } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { FormItemInputContext, useInjectFormItemContext } from '../../form/src/FormItemContext';\nimport { useProvideOverride } from '../../menu';\nimport Spin from '../../spin';\nimport useStyle from '../style';\nimport { mentionsProps } from './props';\n\nfunction loadingFilterOption() {\n  return true;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AMentions',\n  inheritAttrs: false,\n  props: mentionsProps(),\n  slots: Object as CustomSlotsType<{\n    notFoundContent?: any\n    option?: any\n    default?: any\n  }>,\n  setup(props, { slots, emit, attrs, expose }) {\n    // =================== Warning =====================\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !flattenChildren(slots.default?.() || []).length,\n        'Mentions',\n        '`Mentions.Option` is deprecated. Please use `options` instead.',\n      );\n    }\n    const { prefixCls, renderEmpty, direction } = useConfigInject('mentions', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const focused = shallowRef(false);\n    const vcMentions = shallowRef(null);\n    const value = shallowRef(props.value ?? props.defaultValue ?? '');\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    useProvideOverride({\n      prefixCls: computed(() => `${prefixCls.value}-menu`),\n      mode: computed(() => 'vertical'),\n      selectable: computed(() => false),\n      onClick: () => {},\n      validator: ({ mode }) => {\n        // Warning if use other mode\n        devWarning(\n          !mode || mode === 'vertical',\n          'Mentions',\n          `mode=\"${mode}\" is not supported for Mentions's Menu.`,\n        );\n      },\n    });\n    watch(\n      () => props.value,\n      (val) => {\n        value.value = val;\n      },\n    );\n    const handleFocus = (e: FocusEvent) => {\n      focused.value = true;\n      emit('focus', e);\n    };\n\n    const handleBlur = (e: FocusEvent) => {\n      focused.value = false;\n      emit('blur', e);\n      formItemContext.onFieldBlur();\n    };\n\n    const handleSelect = (...args: [MentionsOptionProps, string]) => {\n      emit('select', ...args);\n      focused.value = true;\n    };\n\n    const handleChange = (val: string) => {\n      if (props.value === undefined)\n        value.value = val;\n\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n\n    const getNotFoundContent = () => {\n      const notFoundContent = props.notFoundContent;\n      if (notFoundContent !== undefined)\n        return notFoundContent;\n\n      if (slots.notFoundContent)\n        return slots.notFoundContent();\n\n      return renderEmpty('Select');\n    };\n\n    const getOptions = () => {\n      return flattenChildren(slots.default?.() || []).map((item) => {\n        return { ...getOptionProps(item), label: (item.children as any)?.default?.() };\n      });\n    };\n\n    const focus = () => {\n      (vcMentions.value as HTMLTextAreaElement).focus();\n    };\n\n    const blur = () => {\n      (vcMentions.value as HTMLTextAreaElement).blur();\n    };\n\n    expose({ focus, blur });\n    const mentionsfilterOption = computed(() =>\n      props.loading ? loadingFilterOption : props.filterOption,\n    );\n    return () => {\n      const {\n        disabled,\n        getPopupContainer,\n        rows = 1,\n        id = formItemContext.id.value,\n        ...restProps\n      } = props;\n      const { hasFeedback, feedbackIcon } = formItemInputContext;\n      const { class: className, ...otherAttrs } = attrs;\n      const otherProps = omit(restProps, ['defaultValue', 'onUpdate:value', 'prefixCls']);\n\n      const mergedClassName = classNames(\n        {\n          [`${prefixCls.value}-disabled`]: disabled,\n          [`${prefixCls.value}-focused`]: focused.value,\n          [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        },\n        getStatusClassNames(prefixCls.value, mergedStatus.value),\n        !hasFeedback && className,\n        hashId.value,\n      );\n\n      const getMentionsProps = {\n        prefixCls: prefixCls.value,\n        ...otherProps,\n        disabled,\n        direction: direction.value,\n        filterOption: mentionsfilterOption.value,\n        getPopupContainer,\n        options: props.loading\n          ? [\n              {\n                value: 'ANTDV_SEARCHING',\n                disabled: true,\n                label: <Spin size=\"small\" />,\n              },\n            ]\n          : props.options || getOptions(),\n        class: mergedClassName,\n        ...otherAttrs,\n        rows,\n        onChange: handleChange,\n        onSelect: handleSelect,\n        onFocus: handleFocus,\n        onBlur: handleBlur,\n        ref: vcMentions,\n        value: value.value,\n        id,\n      };\n      const mentions = (\n        <VcMentions\n          {...getMentionsProps}\n          dropdownClassName={hashId.value}\n          v-slots={{ notFoundContent: getNotFoundContent, option: slots.option }}\n        >\n        </VcMentions>\n      );\n      if (hasFeedback) {\n        return wrapSSR(\n          <div\n            class={classNames(\n              `${prefixCls.value}-affix-wrapper`,\n              getStatusClassNames(\n                `${prefixCls.value}-affix-wrapper`,\n                mergedStatus.value,\n                hasFeedback,\n              ),\n              className,\n              hashId.value,\n            )}\n          >\n            {mentions}\n            <span class={`${prefixCls.value}-suffix`}>{feedbackIcon}</span>\n          </div>,\n        );\n      }\n      return wrapSSR(mentions);\n    };\n  },\n});\n"],"names":["loadingFilterOption","defineComponent","compatConfig","MODE","name","inheritAttrs","props","mentionsProps","slots","Object","setup","emit","attrs","expose","process","env","NODE_ENV","devWarning","flattenChildren","default","length","prefixCls","renderEmpty","direction","useConfigInject","wrapSSR","hashId","useStyle","focused","shallowRef","vcMentions","value","defaultValue","formItemContext","useInjectFormItemContext","formItemInputContext","FormItemInputContext","useInject","mergedStatus","computed","getMergedStatus","status","useProvideOverride","mode","selectable","onClick","validator","watch","val","handleFocus","e","handleBlur","onFieldBlur","handleSelect","args","handleChange","undefined","onFieldChange","getNotFoundContent","notFoundContent","getOptions","map","item","getOptionProps","label","children","focus","blur","mentionsfilterOption","loading","filterOption","disabled","getPopupContainer","rows","id","restProps","hasFeedback","feedbackIcon","class","className","otherAttrs","otherProps","omit","mergedClassName","classNames","getStatusClassNames","getMentionsProps","options","_createVNode","Spin","onChange","onSelect","onFocus","onBlur","ref","mentions","VcMentions","option"],"mappings":"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"}