{"version":3,"file":"BaseInput.cjs","sources":["../../../../../../packages/vue-components/vc-input/src/BaseInput.tsx"],"sourcesContent":["import type { MouseEventHandler } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport { classNames, cloneElement } from '@antdv/utils';\nimport { defineComponent, ref } from 'vue';\nimport { baseInputProps } from './inputProps';\nimport { hasAddon, hasPrefixSuffix } from './utils/commonUtils';\n\nexport default defineComponent({\n  name: 'BaseInput',\n  inheritAttrs: false,\n  props: baseInputProps(),\n  setup(props, { slots, attrs }) {\n    const containerRef = ref();\n    const onInputMouseDown: MouseEventHandler = (e) => {\n      if (containerRef.value?.contains(e.target as Element)) {\n        const { triggerFocus } = props;\n        triggerFocus?.();\n      }\n    };\n    const getClearIcon = () => {\n      const {\n        allowClear,\n        value,\n        disabled,\n        readonly,\n        handleReset,\n        suffix = slots.suffix,\n        prefixCls,\n      } = props;\n      if (!allowClear)\n        return null;\n\n      const needClear = !disabled && !readonly && value;\n      const className = `${prefixCls}-clear-icon`;\n      const iconNode = slots.clearIcon?.() || '*';\n      return (\n        <span\n          onClick={handleReset}\n          // Do not trigger onBlur when clear input\n          onMousedown={e => e.preventDefault()}\n          class={classNames(\n            {\n              [`${className}-hidden`]: !needClear,\n              [`${className}-has-suffix`]: !!suffix,\n            },\n            className,\n          )}\n          role=\"button\"\n          tabindex={-1}\n        >\n          {iconNode}\n        </span>\n      );\n    };\n\n    return () => {\n      const {\n        focused,\n        value,\n\n        disabled,\n        allowClear,\n        readonly,\n        hidden,\n        prefixCls,\n        prefix = slots.prefix?.(),\n        suffix = slots.suffix?.(),\n        addonAfter = slots.addonAfter,\n        addonBefore = slots.addonBefore,\n        inputElement,\n        affixWrapperClassName,\n        wrapperClassName,\n        groupClassName,\n      } = props;\n      let element = cloneElement(inputElement, {\n        value,\n        hidden,\n      });\n      // ================== Prefix & Suffix ================== //\n      if (hasPrefixSuffix({ prefix, suffix, allowClear })) {\n        const affixWrapperPrefixCls = `${prefixCls}-affix-wrapper`;\n        const affixWrapperCls = classNames(\n          affixWrapperPrefixCls,\n          {\n            [`${affixWrapperPrefixCls}-disabled`]: disabled,\n            [`${affixWrapperPrefixCls}-focused`]: focused,\n            [`${affixWrapperPrefixCls}-readonly`]: readonly,\n            [`${affixWrapperPrefixCls}-input-with-clear-btn`]: suffix && allowClear && value,\n          },\n          !hasAddon({ addonAfter, addonBefore }) && attrs.class,\n          affixWrapperClassName,\n        );\n\n        const suffixNode = (suffix || allowClear) && (\n          <span class={`${prefixCls}-suffix`}>\n            {getClearIcon()}\n            {suffix}\n          </span>\n        );\n\n        element = (\n          <span\n            class={affixWrapperCls}\n            style={attrs.style as CSSProperties}\n            hidden={!hasAddon({ addonAfter, addonBefore }) && hidden}\n            onMousedown={onInputMouseDown}\n            ref={containerRef}\n          >\n            {prefix && <span class={`${prefixCls}-prefix`}>{prefix}</span>}\n            {cloneElement(inputElement, {\n              style: null,\n              value,\n              hidden: null,\n            })}\n            {suffixNode}\n          </span>\n        );\n      }\n      // ================== Addon ================== //\n      if (hasAddon({ addonAfter, addonBefore })) {\n        const wrapperCls = `${prefixCls}-group`;\n        const addonCls = `${wrapperCls}-addon`;\n\n        const mergedWrapperClassName = classNames(\n          `${prefixCls}-wrapper`,\n          wrapperCls,\n          wrapperClassName,\n        );\n\n        const mergedGroupClassName = classNames(\n          `${prefixCls}-group-wrapper`,\n          attrs.class,\n          groupClassName,\n        );\n\n        // Need another wrapper for changing display:table to display:inline-block\n        // and put style prop in wrapper\n        return (\n          <span class={mergedGroupClassName} style={attrs.style as CSSProperties} hidden={hidden}>\n            <span class={mergedWrapperClassName}>\n              {addonBefore && <span class={addonCls}>{addonBefore}</span>}\n              {cloneElement(element, { style: null, hidden: null })}\n              {addonAfter && <span class={addonCls}>{addonAfter}</span>}\n            </span>\n          </span>\n        );\n      }\n      return element;\n    };\n  },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","baseInputProps","setup","slots","attrs","containerRef","ref","onInputMouseDown","e","value","contains","target","triggerFocus","getClearIcon","allowClear","disabled","readonly","handleReset","suffix","prefixCls","needClear","className","iconNode","clearIcon","_createVNode","preventDefault","classNames","focused","hidden","prefix","addonAfter","addonBefore","inputElement","affixWrapperClassName","wrapperClassName","groupClassName","element","cloneElement","hasPrefixSuffix","affixWrapperPrefixCls","affixWrapperCls","hasAddon","class","suffixNode","style","wrapperCls","addonCls","mergedWrapperClassName","mergedGroupClassName"],"mappings":"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"}