{"version":3,"file":"input2.mjs","sources":["../../../../../../packages/components/input/src/input.vue"],"sourcesContent":["<template>\r\n  <div\r\n    v-show=\"attrs.type !== 'hidden'\"\r\n    :class=\"[\r\n      attrs.type === 'textarea' ? nsTextarea.b() : nsInput.b(),\r\n      nsInput.m(inputSize),\r\n      nsInput.is('disabled', inputDisabled as boolean),\r\n      nsInput.is('exceed', inputExceed),\r\n      {\r\n        [nsInput.b('group')]: $slots.prepend || $slots.append,\r\n        [nsInput.bm('group', 'append')]: $slots.append,\r\n        [nsInput.bm('group', 'prepend')]: $slots.prepend,\r\n        [nsInput.m('prefix')]: $slots.prefix,\r\n        [nsInput.m('suffix')]:\r\n          $slots.suffix || clearable || canSee,\r\n        [nsInput.m('suffix--password-clear')]: clearable && canSee,\r\n      },\r\n      $attrs.class,\r\n    ]\"\r\n    :style=\"containerStyle\"\r\n    @mouseenter=\"onMouseEnter\"\r\n    @mouseleave=\"onMouseLeave\"\r\n  >\r\n    <!-- input -->\r\n    <template v-if=\"attrs.type !== 'textarea'\">\r\n      <!-- prepend slot -->\r\n      <div v-if=\"$slots.prepend\" :class=\"nsInput.be('group', 'prepend')\">\r\n        <slot name=\"prepend\" />\r\n      </div>\r\n\r\n      <input\r\n        ref=\"input\"\r\n        :class=\"[nsInput.e('inner')]\"\r\n        v-bind=\"attrs\"\r\n        :type=\"canSee ? (passwordVisible ? 'text' : 'password') : (attrs.type as string | undefined ) \"\r\n        :disabled=\"(inputDisabled as boolean)\"\r\n        @compositionstart=\"handleCompositionStart\"\r\n        @compositionupdate=\"handleCompositionUpdate\"\r\n        @compositionend=\"handleCompositionEnd\"\r\n        @input=\"handleInput\"\r\n        @blur=\"handleBlur\"\r\n        @change=\"handleChange\"\r\n        @focus=\"handleFocus\"\r\n      />\r\n\r\n      <!-- prefix slot -->\r\n      <span v-if=\"$slots.prefix\" :class=\"nsInput.e('prefix')\">\r\n        <span :class=\"nsInput.e('prefix-inner')\">\r\n          <slot name=\"prefix\"></slot>\r\n        </span>\r\n      </span>\r\n\r\n      <!-- suffix slot -->\r\n      <span v-if=\"suffixVisible\" :class=\"nsInput.e('suffix')\">\r\n        <span :class=\"nsInput.e('suffix-inner')\">\r\n          <template v-if=\"!showClear || !showSearch || !showPwdVisible || !isWordLimitVisible\">\r\n            <slot name=\"suffix\"></slot>\r\n          </template>\r\n          <sg-icon\r\n            v-if=\"showClear\"\r\n            :class=\"[nsInput.e('icon'), nsInput.e('clear')]\"\r\n            @mousedown.prevent\r\n            @click=\"clear\"\r\n          >\r\n            <Close />\r\n          </sg-icon>\r\n          <sg-icon\r\n            v-if=\"showSearch\"\r\n            :class=\"[nsInput.e('icon'), nsInput.e('search')]\"\r\n            @mousedown.prevent\r\n          >\r\n            <IconSearch />\r\n          </sg-icon>\r\n          <sg-icon\r\n            v-if=\"showPwdVisible\"\r\n            :class=\"[nsInput.e('icon'), nsInput.e('clear'), nsInput.e('password')] \"\r\n            @click=\"handlePasswordVisible\"\r\n          >\r\n            <IconView />\r\n          </sg-icon>\r\n          <span v-if=\"isWordLimitVisible\" :class=\"nsInput.e('count')\">\r\n            <span :class=\"nsInput.e('count-inner')\">\r\n              {{ textLength }} / {{ attrs.maxlength }}\r\n            </span>\r\n          </span>\r\n        </span>\r\n        <sg-icon\r\n          v-if=\"validateState && validateIcon && needStatusIcon\"\r\n          :class=\"[nsInput.e('icon'), nsInput.e('validateIcon')]\"\r\n        >\r\n          <component :is=\"validateIcon\" />\r\n        </sg-icon>\r\n      </span>\r\n\r\n      <!-- append slot -->\r\n      <div v-if=\"$slots.append\" :class=\"nsInput.be('group', 'append')\">\r\n        <slot name=\"append\" />\r\n      </div>\r\n    </template>\r\n\r\n    <!-- textarea -->\r\n    <template v-else>\r\n      <textarea\r\n        ref=\"textarea\"\r\n        :class=\"nsTextarea.e('inner')\"\r\n        v-bind=\"attrs\"\r\n        :disabled=\"(inputDisabled as boolean)\"\r\n        :style=\"computedTextareaStyle\"\r\n        @compositionstart=\"handleCompositionStart\"\r\n        @compositionupdate=\"handleCompositionUpdate\"\r\n        @compositionend=\"handleCompositionEnd\"\r\n        @input=\"handleInput\"\r\n        @blur=\"handleBlur\"\r\n        @change=\"handleChange\"\r\n        @focus=\"handleFocus\"\r\n      />\r\n      <span v-if=\"isWordLimitVisible\" :class=\"nsInput.e('count')\">\r\n        {{ textLength }} / {{ attrs.maxlength }}\r\n      </span>\r\n    </template>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  defineComponent,\r\n  computed,\r\n  watch,\r\n  nextTick,\r\n  getCurrentInstance,\r\n  ref,\r\n  shallowRef,\r\n  onMounted,\r\n  onUpdated,\r\n} from 'vue'\r\nimport { isClient } from '@vueuse/core'\r\nimport { SgIcon } from '@sgui-plus/components/icon'\r\nimport { View as IconView, Close, Search as IconSearch } from '@sgui-plus/icons-vue'\r\nimport { ValidateComponentsMap } from '@sgui-plus/utils/icon'\r\nimport {\r\n  useAttrs,\r\n  useDisabled,\r\n  useFormItem,\r\n  useSize,\r\n  useNamespace,\r\n} from '@sgui-plus/hooks'\r\nimport { UPDATE_MODEL_EVENT } from '@sgui-plus/utils/constants'\r\nimport { isObject } from '@sgui-plus/utils/util'\r\nimport { isKorean } from '@sgui-plus/utils/isDef'\r\nimport { debugWarn } from '@sgui-plus/utils/error'\r\nimport { calcTextareaHeight } from './calc-textarea-height'\r\nimport { inputProps, inputEmits } from './input'\r\n\r\nimport type { StyleValue } from '@sgui-plus/utils/types'\r\n\r\ntype TargetElement = HTMLInputElement | HTMLTextAreaElement\r\n\r\nconst PENDANT_MAP = {\r\n  suffix: 'append',\r\n  prefix: 'prepend',\r\n} as const\r\n\r\nexport default defineComponent({\r\n  name: 'SgInput',\r\n\r\n  components: { SgIcon, IconView, Close, IconSearch },\r\n\r\n  inheritAttrs: false,\r\n\r\n  props: inputProps,\r\n  emits: inputEmits,\r\n\r\n  setup(props, { slots, emit, attrs: rawAttrs }) {\r\n    const instance = getCurrentInstance()!\r\n    const attrs = useAttrs()\r\n    const { form, formItem } = useFormItem()\r\n    const inputSize = useSize()\r\n    const inputDisabled = useDisabled()\r\n    const nsInput = useNamespace('input')\r\n    const nsTextarea = useNamespace('textarea')\r\n\r\n    const input = ref<HTMLInputElement>()\r\n    const textarea = ref<HTMLTextAreaElement>()\r\n    const focused = ref(false)\r\n    const hovering = ref(false)\r\n    const isComposing = ref(false)\r\n    const passwordVisible = ref(false)\r\n    const _textareaCalcStyle = shallowRef()\r\n\r\n    const inputOrTextarea = computed(() => input.value || textarea.value)\r\n    const needStatusIcon = computed(() => form?.statusIcon ?? false)\r\n    const validateState = computed(() => formItem?.validateState || '')\r\n    const validateIcon = computed(\r\n      () => ValidateComponentsMap[validateState.value]\r\n    )\r\n    const containerStyle = computed(() => rawAttrs.style as StyleValue)\r\n    const computedTextareaStyle = computed<StyleValue>(() => [\r\n      _textareaCalcStyle.value,\r\n      { resize: attrs.value.resize },\r\n    ])\r\n    const nativeInputValue = computed(() =>\r\n      props.modelValue === null || props.modelValue === undefined\r\n        ? ''\r\n        : String(props.modelValue)\r\n    )\r\n    const showClear = computed(\r\n      () =>\r\n        props.clearable &&\r\n        !inputDisabled.value &&\r\n        !attrs.value.readonly &&\r\n        !!nativeInputValue.value &&\r\n        (focused.value || hovering.value)\r\n    )\r\n    const showPwdVisible = computed(\r\n      () =>\r\n        props.canSee &&\r\n        !inputDisabled.value &&\r\n        !attrs.value.readonly &&\r\n        (!!nativeInputValue.value || focused.value)\r\n    )\r\n    const isWordLimitVisible = computed(\r\n      () =>\r\n        props.showWordLimit &&\r\n        !!attrs.value.maxlength &&\r\n        (attrs.value.type === 'text' || attrs.value.type === 'textarea') &&\r\n        !inputDisabled.value &&\r\n        !attrs.value.readonly &&\r\n        !props.canSee\r\n    )\r\n    const textLength = computed(() => Array.from(nativeInputValue.value).length)\r\n    const inputExceed = computed(\r\n      () =>\r\n        // show exceed style if length of initial value greater then maxlength\r\n        !!isWordLimitVisible.value &&\r\n        textLength.value > Number(attrs.value.maxlength)\r\n    )\r\n\r\n    const resizeTextarea = () => {\r\n      const { type } = attrs.value\r\n      const { autosize } = props\r\n      if (!isClient || type !== 'textarea') return\r\n\r\n      if (autosize) {\r\n        const minRows = isObject(autosize) ? autosize.minRows : undefined\r\n        const maxRows = isObject(autosize) ? autosize.maxRows : undefined\r\n        _textareaCalcStyle.value = {\r\n          ...calcTextareaHeight(textarea.value!, minRows, maxRows),\r\n        }\r\n      } else {\r\n        _textareaCalcStyle.value = {\r\n          minHeight: calcTextareaHeight(textarea.value!).minHeight,\r\n        }\r\n      }\r\n    }\r\n\r\n    const setNativeInputValue = () => {\r\n      const input = inputOrTextarea.value\r\n      if (!input || input.value === nativeInputValue.value) return\r\n      input.value = nativeInputValue.value\r\n    }\r\n\r\n    const calcIconOffset = (place: 'prefix' | 'suffix') => {\r\n      const { el } = instance.vnode\r\n      if (!el) return\r\n      const elList: HTMLSpanElement[] = Array.from(\r\n        el.querySelectorAll(`.${nsInput.e(place)}`)\r\n      )\r\n      const target = elList.find((item) => item.parentNode === el)\r\n\r\n      if (!target) return\r\n\r\n      const pendant = PENDANT_MAP[place]\r\n\r\n      if (slots[pendant]) {\r\n        target.style.transform = `translateX(${place === 'suffix' ? '-' : ''}${\r\n          el.querySelector(`.${nsInput.be('group', pendant)}`).offsetWidth\r\n        }px)`\r\n      } else {\r\n        target.removeAttribute('style')\r\n      }\r\n    }\r\n\r\n    const updateIconOffset = () => {\r\n      calcIconOffset('prefix')\r\n      calcIconOffset('suffix')\r\n    }\r\n\r\n    const handleInput = (event: Event) => {\r\n\r\n      const { value } = event.target as TargetElement\r\n      // should not emit input during composition\r\n      // see: https://github.com/ElemeFE/element/issues/10516\r\n      if (isComposing.value) return\r\n\r\n      // hack for https://github.com/ElemeFE/element/issues/8548\r\n      // should remove the following line when we don't support IE\r\n      if (value === nativeInputValue.value) return\r\n      emit(UPDATE_MODEL_EVENT, value)\r\n      emit('onInput', value)\r\n\r\n      // ensure native input value is controlled\r\n      // see: https://github.com/ElemeFE/element/issues/12850\r\n      nextTick(setNativeInputValue)\r\n    }\r\n\r\n    const handleChange = (event: Event) => {\r\n      emit('onChange', (event.target as TargetElement).value)\r\n    }\r\n\r\n    const focus = () => {\r\n      // see: https://github.com/ElemeFE/element/issues/18573\r\n      nextTick(() => {\r\n        inputOrTextarea.value?.focus()\r\n      })\r\n    }\r\n\r\n    const blur = () => {\r\n      inputOrTextarea.value?.blur()\r\n    }\r\n\r\n\r\n    const handleFocus = (event: FocusEvent) => {\r\n      focused.value = true\r\n      emit('onFocus', event)\r\n    }\r\n\r\n    const handleBlur = (event: FocusEvent) => {\r\n      focused.value = false\r\n      emit('onBlur', event)\r\n      if (props.validateEvent) {\r\n        formItem?.validate?.('blur').catch((err) => debugWarn(err))\r\n      }\r\n    }\r\n\r\n    const select = () => {\r\n      inputOrTextarea.value?.select()\r\n    }\r\n\r\n    const handleCompositionStart = (event: CompositionEvent) => {\r\n      emit('compositionstart', event)\r\n      isComposing.value = true\r\n    }\r\n\r\n    const handleCompositionUpdate = (event: CompositionEvent) => {\r\n      emit('compositionupdate', event)\r\n      const text = (event.target as HTMLInputElement)?.value\r\n      const lastCharacter = text[text.length - 1] || ''\r\n      isComposing.value = !isKorean(lastCharacter)\r\n    }\r\n\r\n    const handleCompositionEnd = (event: CompositionEvent) => {\r\n      emit('compositionend', event)\r\n      if (isComposing.value) {\r\n        isComposing.value = false\r\n        handleInput(event)\r\n      }\r\n    }\r\n\r\n    const clear = () => {\r\n      emit(UPDATE_MODEL_EVENT, '')\r\n      emit('onClear')\r\n      emit('onInput', '')\r\n    }\r\n\r\n    const handlePasswordVisible = () => {\r\n      passwordVisible.value = !passwordVisible.value\r\n      focus()\r\n    }\r\n\r\n    const suffixVisible = computed(\r\n      () =>\r\n        !!slots.suffix ||\r\n        showClear.value ||\r\n        props.showSearch ||\r\n        props.canSee ||\r\n        isWordLimitVisible.value ||\r\n        (!!validateState.value && needStatusIcon.value)\r\n    )\r\n\r\n    watch(\r\n      () => props.modelValue,\r\n      () => {\r\n        nextTick(() => resizeTextarea())\r\n        if (props.validateEvent) {\r\n          formItem?.validate?.('change').catch((err) => debugWarn(err))\r\n        }\r\n      }\r\n    )\r\n\r\n    // native input value is set explicitly\r\n    // do not use v-model / :value in template\r\n    // see: https://github.com/ElemeFE/element/issues/14521\r\n    watch(nativeInputValue, () => setNativeInputValue())\r\n\r\n    // when change between <input> and <textarea>,\r\n    // update DOM dependent value and styles\r\n    // https://github.com/ElemeFE/element/issues/14857\r\n    watch(\r\n      () => attrs.value.type,\r\n      () => {\r\n        nextTick(() => {\r\n          setNativeInputValue()\r\n          resizeTextarea()\r\n          updateIconOffset()\r\n        })\r\n      }\r\n    )\r\n\r\n    onMounted(() => {\r\n      setNativeInputValue()\r\n      updateIconOffset()\r\n      nextTick(resizeTextarea)\r\n    })\r\n\r\n    onUpdated(() => {\r\n      nextTick(updateIconOffset)\r\n    })\r\n\r\n    const onMouseLeave = (evt: MouseEvent) => {\r\n      hovering.value = false\r\n      emit('mouseleave', evt)\r\n    }\r\n\r\n    const onMouseEnter = (evt: MouseEvent) => {\r\n      hovering.value = true\r\n      emit('mouseenter', evt)\r\n    }\r\n    return {\r\n      input,\r\n      textarea,\r\n      attrs,\r\n      inputSize,\r\n      validateState,\r\n      validateIcon,\r\n      containerStyle,\r\n      computedTextareaStyle,\r\n      inputDisabled,\r\n      showClear,\r\n      showPwdVisible,\r\n      isWordLimitVisible,\r\n      textLength,\r\n      hovering,\r\n      inputExceed,\r\n      passwordVisible,\r\n      inputOrTextarea,\r\n      suffixVisible,\r\n      needStatusIcon,\r\n\r\n      resizeTextarea,\r\n      handleInput,\r\n      handleChange,\r\n      handleFocus,\r\n      handleBlur,\r\n      handleCompositionStart,\r\n      handleCompositionUpdate,\r\n      handleCompositionEnd,\r\n      handlePasswordVisible,\r\n      clear,\r\n      select,\r\n      focus,\r\n      blur,\r\n      onMouseLeave,\r\n      onMouseEnter,\r\n      nsInput,\r\n      nsTextarea,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_resolveComponent","_withDirectives","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createCommentVNode","_Fragment","_createElementVNode","_mergeProps","_renderSlot","_withModifiers","_createBlock"],"mappings":"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"}