{"version":3,"file":"mention.vue2.mjs","sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n  <div ref=\"wrapperRef\" :class=\"ns.b()\">\n    <el-input\n      v-bind=\"mergeProps(passInputProps, $attrs)\"\n      ref=\"elInputRef\"\n      :model-value=\"modelValue\"\n      :disabled=\"disabled\"\n      :role=\"dropdownVisible ? 'combobox' : undefined\"\n      :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n      :aria-controls=\"dropdownVisible ? contentId : undefined\"\n      :aria-expanded=\"dropdownVisible || undefined\"\n      :aria-label=\"ariaLabel\"\n      :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n      :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n      @input=\"handleInputChange\"\n      @keydown=\"handleInputKeyDown\"\n      @mousedown=\"handleInputMouseDown\"\n    >\n      <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n        <slot :name=\"name\" v-bind=\"slotProps\" />\n      </template>\n    </el-input>\n    <el-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropdownVisible\"\n      :popper-class=\"[ns.e('popper'), popperClass!]\"\n      :popper-style=\"popperStyle\"\n      :popper-options=\"popperOptions\"\n      :placement=\"computedPlacement\"\n      :fallback-placements=\"computedFallbackPlacements\"\n      effect=\"light\"\n      pure\n      :offset=\"offset\"\n      :show-arrow=\"showArrow\"\n    >\n      <template #default>\n        <div :style=\"cursorStyle\" />\n      </template>\n      <template #content>\n        <el-mention-dropdown\n          ref=\"dropdownRef\"\n          :options=\"filteredOptions\"\n          :disabled=\"disabled\"\n          :loading=\"loading\"\n          :content-id=\"contentId\"\n          :aria-label=\"ariaLabel\"\n          @select=\"handleSelect\"\n          @click.stop=\"elInputRef?.focus()\"\n        >\n          <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n            <slot :name=\"name\" v-bind=\"slotProps\" />\n          </template>\n        </el-mention-dropdown>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, {\n  inputProps,\n  inputPropsDefaults,\n} from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n  EVENT_CODE,\n  INPUT_EVENT,\n  UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { getEventCode, isFunction } from '@element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n  name: 'ElMention',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps>(), {\n  ...inputPropsDefaults,\n  options: () => [],\n  prefix: '@',\n  split: ' ',\n  filterOption: () => filterOption,\n  placement: 'bottom',\n  offset: 0,\n  popperOptions: () => ({}),\n  props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n  props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n  props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n  ...mentionDefaultProps,\n  ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n  const base = {\n    label: option[aliasProps.value.label],\n    value: option[aliasProps.value.value],\n    disabled: option[aliasProps.value.disabled],\n  }\n  return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n  const { filterOption } = props\n  if (!mentionCtx.value || !filterOption) return options.value\n  return options.value.filter((option) =>\n    filterOption(mentionCtx.value!.pattern, option)\n  )\n})\n\nconst dropdownVisible = computed(() => {\n  return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n  return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(INPUT_EVENT, value)\n  syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n  if (elInputRef.value?.isComposing) return\n  const code = getEventCode(event as KeyboardEvent)\n\n  switch (code) {\n    case EVENT_CODE.left:\n    case EVENT_CODE.right:\n      syncAfterCursorMove()\n      break\n    case EVENT_CODE.up:\n    case EVENT_CODE.down:\n      if (!visible.value) return\n      event.preventDefault()\n      dropdownRef.value?.navigateOptions(\n        code === EVENT_CODE.up ? 'prev' : 'next'\n      )\n      break\n    case EVENT_CODE.enter:\n    case EVENT_CODE.numpadEnter:\n      if (!visible.value) {\n        props.type !== 'textarea' && syncAfterCursorMove()\n        return\n      }\n      event.preventDefault()\n      if (dropdownRef.value?.hoverOption) {\n        dropdownRef.value?.selectHoverOption()\n      } else {\n        visible.value = false\n      }\n      break\n    case EVENT_CODE.esc:\n      if (!visible.value) return\n      event.preventDefault()\n      visible.value = false\n      break\n    case EVENT_CODE.backspace:\n      if (props.whole && mentionCtx.value) {\n        const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n          mentionCtx.value\n        const inputEl = getInputEl()\n        if (!inputEl) return\n        const inputValue = inputEl.value\n        const matchOption = options.value.find((item) => item.value === pattern)\n        const isWhole = isFunction(props.checkIsWhole)\n          ? props.checkIsWhole(pattern, prefix)\n          : matchOption\n        if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n          event.preventDefault()\n          const newValue =\n            inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n          emit(UPDATE_MODEL_EVENT, newValue)\n          emit(INPUT_EVENT, newValue)\n          emit('whole-remove', pattern, prefix)\n\n          const newSelectionEnd = prefixIndex\n          nextTick(() => {\n            // input value is updated\n            inputEl.selectionStart = newSelectionEnd\n            inputEl.selectionEnd = newSelectionEnd\n            syncDropdownVisible()\n          })\n        }\n      }\n  }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n  disabled,\n  afterFocus() {\n    syncAfterCursorMove()\n  },\n  beforeBlur(event) {\n    return tooltipRef.value?.isFocusInsideContent(event)\n  },\n  afterBlur() {\n    visible.value = false\n  },\n})\n\nconst handleInputMouseDown = () => {\n  syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n  return props.options.find((option: MentionOption) => {\n    return mentionOption.value === option[aliasProps.value.value]\n  })\n}\n\nconst handleSelect = (item: MentionOption) => {\n  if (!mentionCtx.value) return\n  const inputEl = getInputEl()\n  if (!inputEl) return\n  const inputValue = inputEl.value\n  const { split } = props\n\n  const newEndPart = inputValue.slice(mentionCtx.value.end)\n  const alreadySeparated = newEndPart.startsWith(split)\n  const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n  const newValue =\n    inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n  emit(UPDATE_MODEL_EVENT, newValue)\n  emit(INPUT_EVENT, newValue)\n  emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n  const newSelectionEnd =\n    mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n  nextTick(() => {\n    // input value is updated\n    inputEl.selectionStart = newSelectionEnd\n    inputEl.selectionEnd = newSelectionEnd\n    inputEl.focus()\n    syncDropdownVisible()\n  })\n}\n\nconst getInputEl = () =>\n  props.type === 'textarea'\n    ? elInputRef.value?.textarea\n    : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n  // can't use nextTick(), get cursor position will be wrong\n  setTimeout(() => {\n    syncCursor()\n    syncDropdownVisible()\n    nextTick(() => tooltipRef.value?.updatePopper())\n  }, 0)\n}\n\nconst syncCursor = () => {\n  const inputEl = getInputEl()\n  if (!inputEl) return\n\n  const caretPosition = getCursorPosition(inputEl)\n  const inputRect = inputEl.getBoundingClientRect()\n  const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n  cursorStyle.value = {\n    position: 'absolute',\n    width: 0,\n    height: `${caretPosition.height}px`,\n    left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n    top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n  }\n}\n\nconst syncDropdownVisible = () => {\n  const inputEl = getInputEl()\n  if (document.activeElement !== inputEl) {\n    visible.value = false\n    return\n  }\n  const { prefix, split } = props\n  mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n  if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n    visible.value = true\n    emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n    return\n  }\n  visible.value = false\n}\n\ndefineExpose({\n  input: elInputRef,\n  tooltip: tooltipRef,\n  dropdownVisible,\n})\n</script>\n"],"names":["filterOption","_createElementBlock","_normalizeClass","_unref","_createVNode","_mergeProps","$attrs","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","ElMentionDropdown","_withModifiers"],"mappings":"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"}