import { inject, ref, getCurrentInstance, computed, onMounted, watch, toRef, onUnmounted } from 'vue'; import { useId } from '../../../../hooks/use-id/index.mjs'; import { formContextKey, formItemContextKey } from '../constants.mjs'; const useFormItem = () => { const form = inject(formContextKey, void 0); const formItem = inject(formItemContextKey, void 0); return { form, formItem }; }; const useFormItemInputId = (props, { formItemContext, disableIdGeneration, disableIdManagement }) => { if (!disableIdGeneration) { disableIdGeneration = ref(false); } if (!disableIdManagement) { disableIdManagement = ref(false); } const instance = getCurrentInstance(); const inLabel = () => { let parent = instance == null ? void 0 : instance.parent; while (parent) { if (parent.type.name === "ElFormItem") { return false; } if (parent.type.name === "ElLabelWrap") { return true; } parent = parent.parent; } return false; }; const inputId = ref(); let idUnwatch = void 0; const isLabeledByFormItem = computed(() => { var _a; return !!(!(props.label || props.ariaLabel) && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1); }); onMounted(() => { idUnwatch = watch([toRef(props, "id"), disableIdGeneration], ([id, disableIdGeneration2]) => { const newId = id != null ? id : !disableIdGeneration2 ? useId().value : void 0; if (newId !== inputId.value) { if ((formItemContext == null ? void 0 : formItemContext.removeInputId) && !inLabel()) { inputId.value && formItemContext.removeInputId(inputId.value); if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) { formItemContext.addInputId(newId); } } inputId.value = newId; } }, { immediate: true }); }); onUnmounted(() => { idUnwatch && idUnwatch(); if (formItemContext == null ? void 0 : formItemContext.removeInputId) { inputId.value && formItemContext.removeInputId(inputId.value); } }); return { isLabeledByFormItem, inputId }; }; export { useFormItem, useFormItemInputId }; //# sourceMappingURL=use-form-item.mjs.map