{"version":3,"file":"mention2.js","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-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, { inputProps } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { isFunction } from '@element-plus/utils'\nimport { mentionEmits, mentionProps } from './mention'\nimport { getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\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})\n\nconst props = defineProps(mentionProps)\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 filteredOptions = computed(() => {\n  const { filterOption, options } = props\n  if (!mentionCtx.value || !filterOption) return options\n  return options.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:modelValue', value)\n  syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (e: KeyboardEvent | Event) => {\n  if (!('key' in e)) return\n  if (elInputRef.value?.isComposing) return\n  if (['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n    syncAfterCursorMove()\n  } else if (['ArrowUp', 'ArrowDown'].includes(e.key)) {\n    if (!visible.value) return\n    e.preventDefault()\n    const direction = e.key === 'ArrowUp' ? 'prev' : 'next'\n    dropdownRef.value?.navigateOptions(direction)\n  } else if (['Enter'].includes(e.key)) {\n    if (!visible.value) return\n    e.preventDefault()\n    if (dropdownRef.value?.hoverOption) {\n      dropdownRef.value?.selectHoverOption()\n    } else {\n      visible.value = false\n    }\n  } else if (['Escape'].includes(e.key)) {\n    if (!visible.value) return\n    e.preventDefault()\n    visible.value = false\n  } else if (['Backspace'].includes(e.key)) {\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 = props.options.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        e.preventDefault()\n        const newValue =\n          inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n        emit(UPDATE_MODEL_EVENT, newValue)\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  beforeFocus() {\n    return disabled.value\n  },\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\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('select', 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 elInputRect = elInputRef.value!.$el.getBoundingClientRect()\n\n  cursorStyle.value = {\n    position: 'absolute',\n    width: 0,\n    height: `${caretPosition.height}px`,\n    left: `${caretPosition.left + inputRect.left - elInputRect.left}px`,\n    top: `${caretPosition.top + inputRect.top - elInputRect.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})\n</script>\n"],"names":["computed","pick","inputProps","useNamespace","useFormDisabled","useId","ref","isFunction","UPDATE_MODEL_EVENT","nextTick","useFocusController","getCursorPosition","getMentionCtx"],"mappings":"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"}