{"version":3,"file":"FormItemContext.cjs","sources":["../../../../../../packages/components/form/src/FormItemContext.ts"],"sourcesContent":["import type { ValidateStatus } from '@antdv/types';\nimport type { ComputedRef, ConcreteComponent, InjectionKey } from 'vue';\nimport { createContext } from '@antdv/hooks';\nimport { devWarning } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  inject,\n  onBeforeUnmount,\n  provide,\n  ref,\n  watch,\n} from 'vue';\n\nexport interface FormItemContext {\n  id: ComputedRef<string>\n  onFieldBlur: () => void\n  onFieldChange: () => void\n  clearValidate: () => void\n}\n\ninterface InternalFormItemContext {\n  addFormItemField: (key: symbol, type: ConcreteComponent) => void\n  removeFormItemField: (key: symbol) => void\n}\n\nconst ContextKey: InjectionKey<FormItemContext> = Symbol('ContextProps');\n\nconst InternalContextKey: InjectionKey<InternalFormItemContext> = Symbol('InternalContextProps');\n\nexport function useProvideFormItemContext(props: FormItemContext, useValidation: ComputedRef<boolean> = computed(() => true)) {\n  const formItemFields = ref(new Map<symbol, ConcreteComponent>());\n  const addFormItemField = (key: symbol, type: ConcreteComponent) => {\n    formItemFields.value.set(key, type);\n    formItemFields.value = new Map(formItemFields.value);\n  };\n  const removeFormItemField = (key: symbol) => {\n    formItemFields.value.delete(key);\n    formItemFields.value = new Map(formItemFields.value);\n  };\n  const instance = getCurrentInstance();\n  watch([useValidation, formItemFields], () => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (useValidation.value && formItemFields.value.size > 1) {\n        devWarning(\n          false,\n          'Form.Item',\n          `FormItem can only collect one field item, you haved set ${[\n            ...formItemFields.value.values(),\n          ]\n            .map(v => `\\`${v.name}\\``)\n            .join(', ')} ${formItemFields.value.size} field items.\n        You can set not need to be collected fields into \\`a-form-item-rest\\``,\n        );\n        let cur = instance;\n        while (cur.parent) {\n          console.warn('at', cur.type);\n          cur = cur.parent;\n        }\n      }\n    }\n  });\n  provide(ContextKey, props);\n  provide(InternalContextKey, {\n    addFormItemField,\n    removeFormItemField,\n  });\n}\n\nconst defaultContext: FormItemContext = {\n  id: computed(() => undefined),\n  onFieldBlur: () => {},\n  onFieldChange: () => {},\n  clearValidate: () => {},\n};\nconst defaultInternalContext: InternalFormItemContext = {\n  addFormItemField: () => {},\n  removeFormItemField: () => {},\n};\nexport function useInjectFormItemContext() {\n  const internalContext = inject(InternalContextKey, defaultInternalContext);\n  const formItemFieldKey = Symbol('FormItemFieldKey');\n  const instance = getCurrentInstance();\n  internalContext.addFormItemField(formItemFieldKey, instance.type);\n  onBeforeUnmount(() => {\n    internalContext.removeFormItemField(formItemFieldKey);\n  });\n  // We should prevent the passing of context for children\n  provide(InternalContextKey, defaultInternalContext);\n  provide(ContextKey, defaultContext);\n  return inject(ContextKey, defaultContext);\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'AFormItemRest',\n  setup(_, { slots }) {\n    provide(InternalContextKey, defaultInternalContext);\n    provide(ContextKey, defaultContext);\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n\nexport interface FormItemStatusContextProps {\n  isFormItemInput?: boolean\n  status?: ValidateStatus\n  hasFeedback?: boolean\n  feedbackIcon?: any\n}\n\nexport const FormItemInputContext = createContext<FormItemStatusContextProps>({});\n\nexport const NoFormStatus = defineComponent({\n  name: 'NoFormStatus',\n  setup(_, { slots }) {\n    FormItemInputContext.useProvide({});\n    return () => {\n      return slots.default?.();\n    };\n  },\n});\n"],"names":["computed","ref","getCurrentInstance","watch","devWarning","provide","inject","onBeforeUnmount","defineComponent","createContext"],"mappings":"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"}