{"version":3,"file":"use-form-item.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/use-form-item.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentInstance,\n  inject,\n  onMounted,\n  onUnmounted,\n  ref,\n  toRef,\n  watch,\n} from 'vue'\nimport { useId } from '@hd-front-end/hooks/use-id'\nimport { formContextKey, formItemContextKey } from '../constants'\n\nimport type { ComputedRef, Ref, WatchStopHandle } from 'vue'\nimport type { FormItemContext } from '../types'\n\nexport const useFormItem = () => {\n  const form = inject(formContextKey, undefined)\n  const formItem = inject(formItemContextKey, undefined)\n  return {\n    form,\n    formItem,\n  }\n}\n\nexport type IUseFormItemInputCommonProps = {\n  id?: string\n  label?: string | number | boolean | Record<string, any>\n  ariaLabel?: string | number | boolean | Record<string, any>\n}\n\nexport const useFormItemInputId = (\n  props: Partial<IUseFormItemInputCommonProps>,\n  {\n    formItemContext,\n    disableIdGeneration,\n    disableIdManagement,\n  }: {\n    formItemContext?: FormItemContext\n    disableIdGeneration?: ComputedRef<boolean> | Ref<boolean>\n    disableIdManagement?: ComputedRef<boolean> | Ref<boolean>\n  }\n) => {\n  if (!disableIdGeneration) {\n    disableIdGeneration = ref<boolean>(false)\n  }\n  if (!disableIdManagement) {\n    disableIdManagement = ref<boolean>(false)\n  }\n\n  const instance = getCurrentInstance()\n\n  const inLabel = () => {\n    let parent = instance?.parent\n    while (parent) {\n      if (parent.type.name === 'ElFormItem') {\n        return false\n      }\n      if (parent.type.name === 'ElLabelWrap') {\n        return true\n      }\n      parent = parent.parent\n    }\n    return false\n  }\n\n  const inputId = ref<string>()\n  let idUnwatch: WatchStopHandle | undefined = undefined\n\n  const isLabeledByFormItem = computed<boolean>(() => {\n    return !!(\n      !(props.label || props.ariaLabel) &&\n      formItemContext &&\n      formItemContext.inputIds &&\n      formItemContext.inputIds?.length <= 1\n    )\n  })\n\n  // Generate id for ElFormItem label if not provided as prop\n  onMounted(() => {\n    idUnwatch = watch(\n      [toRef(props, 'id'), disableIdGeneration] as any,\n      ([id, disableIdGeneration]: [string, boolean]) => {\n        const newId = id ?? (!disableIdGeneration ? useId().value : undefined)\n        if (newId !== inputId.value) {\n          if (formItemContext?.removeInputId && !inLabel()) {\n            inputId.value && formItemContext.removeInputId(inputId.value)\n            if (!disableIdManagement?.value && !disableIdGeneration && newId) {\n              formItemContext.addInputId(newId)\n            }\n          }\n          inputId.value = newId\n        }\n      },\n      { immediate: true }\n    )\n  })\n\n  onUnmounted(() => {\n    idUnwatch && idUnwatch()\n    if (formItemContext?.removeInputId) {\n      inputId.value && formItemContext.removeInputId(inputId.value)\n    }\n  })\n\n  return {\n    isLabeledByFormItem,\n    inputId,\n  }\n}\n"],"names":["disableIdGeneration"],"mappings":";;;;AAgBO,MAAM,cAAc,MAAM;AAC/B,EAAM,MAAA,IAAA,GAAO,MAAO,CAAA,cAAA,EAAgB,KAAS,CAAA,CAAA,CAAA;AAC7C,EAAM,MAAA,QAAA,GAAW,MAAO,CAAA,kBAAA,EAAoB,KAAS,CAAA,CAAA,CAAA;AACrD,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,QAAA;AAAA,GACF,CAAA;AACF,EAAA;AAQa,MAAA,kBAAA,GAAqB,CAChC,KACA,EAAA;AAAA,EACE,eAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AACF,CAKG,KAAA;AACH,EAAA,IAAI,CAAC,mBAAqB,EAAA;AACxB,IAAA,mBAAA,GAAsB,IAAa,KAAK,CAAA,CAAA;AAAA,GAC1C;AACA,EAAA,IAAI,CAAC,mBAAqB,EAAA;AACxB,IAAA,mBAAA,GAAsB,IAAa,KAAK,CAAA,CAAA;AAAA,GAC1C;AAEA,EAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AAEpC,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,SAAS,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA;AACvB,IAAA,OAAO,MAAQ,EAAA;AACb,MAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,KAAS,YAAc,EAAA;AACrC,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,KAAS,aAAe,EAAA;AACtC,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,CAAA;AAAA,KAClB;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,UAAU,GAAY,EAAA,CAAA;AAC5B,EAAA,IAAI,SAAyC,GAAA,KAAA,CAAA,CAAA;AAE7C,EAAM,MAAA,mBAAA,GAAsB,SAAkB,MAAM;AArEtD,IAAA,IAAA,EAAA,CAAA;AAsEI,IAAA,OAAO,CAAC,EACN,EAAE,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,SACvB,CAAA,IAAA,eAAA,IACA,eAAgB,CAAA,QAAA,IAAA,CAAA,CAChB,EAAgB,GAAA,eAAA,CAAA,QAAA,KAAhB,mBAA0B,MAAU,KAAA,CAAA,CAAA,CAAA;AAAA,GAEvC,CAAA,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM;AACd,IAAY,SAAA,GAAA,KAAA;AAAA,MACV,CAAC,KAAA,CAAM,KAAO,EAAA,IAAI,GAAG,mBAAmB,CAAA;AAAA,MACxC,CAAC,CAAC,EAAIA,EAAAA,oBAAmB,CAAyB,KAAA;AAChD,QAAA,MAAM,QAAQ,EAAO,IAAA,IAAA,GAAA,EAAA,GAAA,CAACA,oBAAsB,GAAA,KAAA,GAAQ,KAAQ,GAAA,KAAA,CAAA,CAAA;AAC5D,QAAI,IAAA,KAAA,KAAU,QAAQ,KAAO,EAAA;AAC3B,UAAA,IAAA,CAAI,eAAiB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAA,aAAA,KAAiB,CAAC,OAAA,EAAW,EAAA;AAChD,YAAA,OAAA,CAAQ,KAAS,IAAA,eAAA,CAAgB,aAAc,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAC5D,YAAA,IAAI,EAAC,mBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAqB,KAAS,CAAA,IAAA,CAACA,wBAAuB,KAAO,EAAA;AAChE,cAAA,eAAA,CAAgB,WAAW,KAAK,CAAA,CAAA;AAAA,aAClC;AAAA,WACF;AACA,UAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAAA,SAClB;AAAA,OACF;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACpB,CAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,SAAA,IAAa,SAAU,EAAA,CAAA;AACvB,IAAA,IAAI,mDAAiB,aAAe,EAAA;AAClC,MAAA,OAAA,CAAQ,KAAS,IAAA,eAAA,CAAgB,aAAc,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,KAC9D;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,mBAAA;AAAA,IACA,OAAA;AAAA,GACF,CAAA;AACF;;;;"}