{"version":3,"file":"mention.mjs","sources":["../../../../../../../packages/components/mention/src/mention.ts"],"sourcesContent":["import {\n  buildProps,\n  definePropType,\n  isFunction,\n  isObject,\n  isString,\n} from '@hd-front-end/utils'\nimport { UPDATE_MODEL_EVENT } from '@hd-front-end/constants'\nimport { inputProps } from '@hd-front-end/components/input'\nimport { filterOption } from './helper'\n\nimport type { ExtractPropTypes, __ExtractPublicPropTypes } from 'vue'\nimport type Mention from './mention.vue'\nimport type { MentionOption } from './types'\nimport type { Options } from '@hd-front-end/components/popper'\n\nexport const mentionProps = buildProps({\n  ...inputProps,\n  /**\n   * @description mention options list\n   */\n  options: {\n    type: definePropType<MentionOption[]>(Array),\n    default: () => [],\n  },\n  /**\n   * @description prefix character to trigger mentions. The string length must be exactly 1.\n   */\n  prefix: {\n    type: definePropType<string | string[]>([String, Array]),\n    default: '@',\n    validator: (val: string | string[]) => {\n      if (isString(val)) return val.length === 1\n      return val.every((v) => isString(v) && v.length === 1)\n    },\n  },\n  /**\n   * @description character to split mentions. The string length must be exactly 1.\n   */\n  split: {\n    type: String,\n    default: ' ',\n    validator: (val: string) => val.length === 1,\n  },\n  /**\n   * @description customize filter option logic.\n   */\n  filterOption: {\n    type: definePropType<false | typeof filterOption>([Boolean, Function]),\n    default: () => filterOption,\n    validator: (val) => {\n      if (val === false) return true\n      return isFunction(val)\n    },\n  },\n  /**\n   * @description set popup placement\n   */\n  placement: {\n    type: definePropType<'bottom' | 'top'>(String),\n    default: 'bottom',\n  },\n  /**\n   * @description whether the dropdown panel has an arrow\n   */\n  showArrow: Boolean,\n  /**\n   * @description offset of the dropdown panel\n   */\n  offset: {\n    type: Number,\n    default: 0,\n  },\n  /**\n   * @description when backspace is pressed to delete, whether the mention content is deleted as a whole\n   */\n  whole: Boolean,\n  /**\n   * @description when backspace is pressed to delete, check if the mention is a whole\n   */\n  checkIsWhole: {\n    type: definePropType<(pattern: string, prefix: string) => boolean>(\n      Function\n    ),\n  },\n  /**\n   * @description input value\n   */\n  modelValue: String,\n  /**\n   * @description whether the dropdown panel of mentions is in a loading state.\n   */\n  loading: Boolean,\n  /**\n   * @description custom class name for dropdown panel\n   */\n  popperClass: {\n    type: String,\n    default: '',\n  },\n  /**\n   * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n   */\n  popperOptions: {\n    type: definePropType<Partial<Options>>(Object),\n    default: () => ({} as Partial<Options>),\n  },\n  /**\n   * @description configuration options\n   */\n  props: {\n    type: definePropType<MentionOptionProps>(Object),\n    default: () => mentionDefaultProps,\n  },\n})\n\nexport const mentionEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n  'whole-remove': (pattern: string, prefix: string) =>\n    isString(pattern) && isString(prefix),\n  input: (value: string) => isString(value),\n  search: (pattern: string, prefix: string) =>\n    isString(pattern) && isString(prefix),\n  select: (option: MentionOption, prefix: string) =>\n    isObject(option) && isString(prefix),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n}\n\nexport type MentionEmits = typeof mentionEmits\nexport type MentionProps = ExtractPropTypes<typeof mentionProps>\nexport type MentionPropsPublic = __ExtractPublicPropTypes<typeof mentionProps>\nexport type MentionInstance = InstanceType<typeof Mention> & unknown\n\nexport type { MentionOption } from './types'\n\nexport type MentionOptionProps = {\n  value?: string\n  label?: string\n  disabled?: string\n  [key: string]: string | undefined\n}\n\nexport const mentionDefaultProps: Required<MentionOptionProps> = {\n  value: 'value',\n  label: 'label',\n  disabled: 'disabled',\n}\n"],"names":[],"mappings":"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"}