{"version":3,"file":"form-label-wrap.mjs","sources":["../../../../../../packages/components/form/src/form-label-wrap.tsx"],"sourcesContent":["import {\n  Fragment,\n  computed,\n  defineComponent,\n  inject,\n  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  onUpdated,\n  ref,\n  watch,\n} from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { throwError } from '@lit-element/utils'\nimport { useNamespace } from '@lit-element/hooks'\nimport { formContextKey, formItemContextKey } from './constants'\n\nimport type { CSSProperties } from 'vue'\n\nconst COMPONENT_NAME = 'LtLabelWrap'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  props: {\n    isAutoWidth: Boolean,\n    updateAll: Boolean,\n  },\n\n  setup(props, { slots }) {\n    const formContext = inject(formContextKey, undefined)\n    const formItemContext = inject(formItemContextKey)\n    if (!formItemContext)\n      throwError(\n        COMPONENT_NAME,\n        'usage: <lt-form-item><label-wrap /></lt-form-item>'\n      )\n\n    const ns = useNamespace('form')\n\n    const el = ref<HTMLElement>()\n    const computedWidth = ref(0)\n\n    const getLabelWidth = () => {\n      if (el.value?.firstElementChild) {\n        const width = window.getComputedStyle(el.value.firstElementChild).width\n        return Math.ceil(Number.parseFloat(width))\n      } else {\n        return 0\n      }\n    }\n\n    const updateLabelWidth = (action: 'update' | 'remove' = 'update') => {\n      nextTick(() => {\n        if (slots.default && props.isAutoWidth) {\n          if (action === 'update') {\n            computedWidth.value = getLabelWidth()\n          } else if (action === 'remove') {\n            formContext?.deregisterLabelWidth(computedWidth.value)\n          }\n        }\n      })\n    }\n    const updateLabelWidthFn = () => updateLabelWidth('update')\n\n    onMounted(() => {\n      updateLabelWidthFn()\n    })\n    onBeforeUnmount(() => {\n      updateLabelWidth('remove')\n    })\n    onUpdated(() => updateLabelWidthFn())\n\n    watch(computedWidth, (val, oldVal) => {\n      if (props.updateAll) {\n        formContext?.registerLabelWidth(val, oldVal)\n      }\n    })\n\n    useResizeObserver(\n      computed(\n        () => (el.value?.firstElementChild ?? null) as HTMLElement | null\n      ),\n      updateLabelWidthFn\n    )\n\n    return () => {\n      if (!slots) return null\n\n      const { isAutoWidth } = props\n      if (isAutoWidth) {\n        const autoLabelWidth = formContext?.autoLabelWidth\n        const hasLabel = formItemContext?.hasLabel\n        const style: CSSProperties = {}\n        if (hasLabel && autoLabelWidth && autoLabelWidth !== 'auto') {\n          const marginWidth = Math.max(\n            0,\n            Number.parseInt(autoLabelWidth, 10) - computedWidth.value\n          )\n          const labelPosition =\n            formItemContext.labelPosition || formContext.labelPosition\n\n          const marginPosition =\n            labelPosition === 'left' ? 'marginRight' : 'marginLeft'\n\n          if (marginWidth) {\n            style[marginPosition] = `${marginWidth}px`\n          }\n        }\n        return (\n          <div ref={el} class={[ns.be('item', 'label-wrap')]} style={style}>\n            {slots.default?.()}\n          </div>\n        )\n      } else {\n        return <Fragment ref={el}>{slots.default?.()}</Fragment>\n      }\n    }\n  },\n})\n"],"names":["COMPONENT_NAME","defineComponent","name","props","isAutoWidth","Boolean","updateAll","setup","slots","formContext","inject","formContextKey","undefined","formItemContext","formItemContextKey","el","ref","computedWidth","getLabelWidth","Math","Number","nextTick","action","value","deregisterLabelWidth","onMounted","updateLabelWidthFn","onBeforeUnmount","updateLabelWidth","onUpdated","watch","useResizeObserver","autoLabelWidth","style","hasLabel","marginWidth","labelPosition","marginPosition","default","_createVNode"],"mappings":"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"}