{"version":3,"file":"input.mjs","sources":["../../../../../../../packages/components/input/src/input.ts"],"sourcesContent":["import {\n  buildProps,\n  definePropType,\n  iconPropType,\n  isString,\n  mutable,\n} from '@hd-front-end/utils'\nimport { UPDATE_MODEL_EVENT } from '@hd-front-end/constants'\nimport { useAriaProps, useSizeProp } from '@hd-front-end/hooks'\nimport { CircleClose } from '@element-plus/icons-vue'\n\nimport type {\n  ExtractPropTypes,\n  HTMLAttributes,\n  StyleValue,\n  __ExtractPublicPropTypes,\n} from 'vue'\n\nexport type InputAutoSize = { minRows?: number; maxRows?: number } | boolean\n\nexport const inputProps = buildProps({\n  /**\n   * @description native input id\n   */\n  id: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description input box size\n   */\n  size: useSizeProp,\n  /**\n   * @description whether to disable\n   */\n  disabled: Boolean,\n  /**\n   * @description binding value\n   */\n  modelValue: {\n    type: definePropType<string | number | null | undefined>([\n      String,\n      Number,\n      Object,\n    ]),\n    default: '',\n  },\n  /**\n   * @description same as `maxlength` in native input\n   */\n  maxlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description same as `minlength` in native input\n   */\n  minlength: {\n    type: [String, Number],\n  },\n  /**\n   * @description type of input\n   */\n  type: {\n    type: String,\n    default: 'text',\n  },\n  /**\n   * @description control the resizability\n   */\n  resize: {\n    type: String,\n    values: ['none', 'both', 'horizontal', 'vertical'],\n  },\n  /**\n   * @description whether textarea has an adaptive height\n   */\n  autosize: {\n    type: definePropType<InputAutoSize>([Boolean, Object]),\n    default: false,\n  },\n  /**\n   * @description native input autocomplete\n   */\n  autocomplete: {\n    type: definePropType<HTMLInputElement['autocomplete']>(String),\n    default: 'off',\n  },\n  /**\n   * @description format content\n   */\n  formatter: {\n    type: Function,\n  },\n  /**\n   * @description parse content\n   */\n  parser: {\n    type: Function,\n  },\n  /**\n   * @description placeholder\n   */\n  placeholder: {\n    type: String,\n  },\n  /**\n   * @description native input form\n   */\n  form: {\n    type: String,\n  },\n  /**\n   * @description native input readonly\n   */\n  readonly: Boolean,\n  /**\n   * @description whether to show clear button\n   */\n  clearable: Boolean,\n  /**\n   * @description custom clear icon component\n   */\n  clearIcon: {\n    type: iconPropType,\n    default: CircleClose,\n  },\n  /**\n   * @description toggleable password input\n   */\n  showPassword: Boolean,\n  /**\n   * @description word count\n   */\n  showWordLimit: Boolean,\n  /**\n   * @description suffix icon\n   */\n  suffixIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description prefix icon\n   */\n  prefixIcon: {\n    type: iconPropType,\n  },\n  /**\n   * @description container role, internal properties provided for use by the picker component\n   */\n  containerRole: {\n    type: String,\n    default: undefined,\n  },\n  /**\n   * @description input tabindex\n   */\n  tabindex: {\n    type: [String, Number],\n    default: 0,\n  },\n  /**\n   * @description whether to trigger form validation\n   */\n  validateEvent: {\n    type: Boolean,\n    default: true,\n  },\n  /**\n   * @description input or textarea element style\n   */\n  inputStyle: {\n    type: definePropType<StyleValue>([Object, Array, String]),\n    default: () => mutable({} as const),\n  },\n  /**\n   * @description native input autofocus\n   */\n  autofocus: Boolean,\n  rows: {\n    type: Number,\n    default: 2,\n  },\n  ...useAriaProps(['ariaLabel']),\n  /**\n   * @description native input mode for virtual keyboards\n   */\n  inputmode: {\n    type: definePropType<HTMLAttributes['inputmode']>(String),\n    default: undefined,\n  },\n  /**\n   * @description same as `name` in native input\n   */\n  name: String,\n} as const)\nexport type InputProps = ExtractPropTypes<typeof inputProps>\nexport type InputPropsPublic = __ExtractPublicPropTypes<typeof inputProps>\n\nexport const inputEmits = {\n  [UPDATE_MODEL_EVENT]: (value: string) => isString(value),\n  input: (value: string) => isString(value),\n  change: (value: string) => isString(value),\n  focus: (evt: FocusEvent) => evt instanceof FocusEvent,\n  blur: (evt: FocusEvent) => evt instanceof FocusEvent,\n  clear: () => true,\n  mouseleave: (evt: MouseEvent) => evt instanceof MouseEvent,\n  mouseenter: (evt: MouseEvent) => evt instanceof MouseEvent,\n  // NOTE: when autofill by browser, the keydown event is instanceof Event, not KeyboardEvent\n  // relative bug report https://github.com/element-plus/element-plus/issues/6665\n  keydown: (evt: KeyboardEvent | Event) => evt instanceof Event,\n  compositionstart: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionupdate: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n  compositionend: (evt: CompositionEvent) => evt instanceof CompositionEvent,\n}\nexport type InputEmits = typeof inputEmits\n"],"names":[],"mappings":"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"}