{"version":3,"file":"use-input-tag-dom.mjs","sources":["../../../../../../../packages/components/input-tag/src/composables/use-input-tag-dom.ts"],"sourcesContent":["import { computed, reactive, ref, useAttrs, useSlots } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { MINIMUM_INPUT_WIDTH } from '@element-plus/constants'\nimport { useResizeObserver } from '@vueuse/core'\n\nimport type { ComputedRef, Ref, StyleValue } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { IconComponent } from '@element-plus/utils'\nimport type { InputTagProps } from '../input-tag'\n\ninterface UseInputTagDomOptions {\n  props: InputTagProps\n  isFocused: Ref<boolean>\n  hovering: Ref<boolean>\n  disabled: ComputedRef<boolean>\n  inputValue: Ref<string | undefined>\n  size: ComputedRef<ComponentSize>\n  validateState: ComputedRef<string>\n  validateIcon: ComputedRef<'' | IconComponent>\n  needStatusIcon: ComputedRef<boolean>\n}\n\nexport function useInputTagDom({\n  props,\n  isFocused,\n  hovering,\n  disabled,\n  inputValue,\n  size,\n  validateState,\n  validateIcon,\n  needStatusIcon,\n}: UseInputTagDomOptions) {\n  const attrs = useAttrs()\n  const slots = useSlots()\n  const ns = useNamespace('input-tag')\n  const nsInput = useNamespace('input')\n\n  const collapseItemRef = ref<HTMLElement>()\n  const innerRef = ref<HTMLElement>()\n\n  const containerKls = computed(() => [\n    ns.b(),\n    ns.is('focused', isFocused.value),\n    ns.is('hovering', hovering.value),\n    ns.is('disabled', disabled.value),\n    ns.m(size.value),\n    ns.e('wrapper'),\n    attrs.class,\n  ])\n  const containerStyle = computed<StyleValue>(() => [attrs.style as StyleValue])\n  const innerKls = computed(() => [\n    ns.e('inner'),\n    ns.is('draggable', props.draggable),\n    ns.is('left-space', !props.modelValue?.length && !slots.prefix),\n    ns.is('right-space', !props.modelValue?.length && !showSuffix.value),\n  ])\n  const showClear = computed(() => {\n    return (\n      props.clearable &&\n      !disabled.value &&\n      !props.readonly &&\n      (props.modelValue?.length || inputValue.value) &&\n      (isFocused.value || hovering.value)\n    )\n  })\n  const showSuffix = computed(() => {\n    return (\n      slots.suffix ||\n      showClear.value ||\n      (validateState.value && validateIcon.value && needStatusIcon.value)\n    )\n  })\n\n  const states = reactive({\n    innerWidth: 0,\n    collapseItemWidth: 0,\n  })\n\n  const getGapWidth = () => {\n    if (!innerRef.value) return 0\n    const style = window.getComputedStyle(innerRef.value)\n    return Number.parseFloat(style.gap || '6px')\n  }\n\n  const resetInnerWidth = () => {\n    states.innerWidth = Number.parseFloat(\n      window.getComputedStyle(innerRef.value!).width\n    )\n  }\n\n  const resetCollapseItemWidth = () => {\n    states.collapseItemWidth =\n      collapseItemRef.value!.getBoundingClientRect().width\n  }\n\n  const tagStyle = computed(() => {\n    if (!props.collapseTags) return {}\n    const gapWidth = getGapWidth()\n\n    const inputSlotWidth = gapWidth + MINIMUM_INPUT_WIDTH\n\n    const maxWidth =\n      collapseItemRef.value && props.maxCollapseTags === 1\n        ? states.innerWidth -\n          states.collapseItemWidth -\n          gapWidth -\n          inputSlotWidth\n        : states.innerWidth - inputSlotWidth\n\n    return { maxWidth: `${Math.max(maxWidth, 0)}px` }\n  })\n\n  useResizeObserver(innerRef, resetInnerWidth)\n  useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n  return {\n    ns,\n    nsInput,\n    containerKls,\n    containerStyle,\n    innerKls,\n    showClear,\n    showSuffix,\n    tagStyle,\n    collapseItemRef,\n    innerRef,\n  }\n}\n"],"names":[],"mappings":"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"}