{"version":3,"file":"useForm2.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/useForm.ts"],"sourcesContent":["import { nextTick, onUnmounted, ref, unref, watch } from 'vue'\nimport { getDynamicProps } from '@tav-ui/utils/basic'\nimport { error } from '@tav-ui/utils/log'\nimport type { NamePath } from 'ant-design-vue/lib/form/interface'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { FormActionType, FormProps, FormSchema, UseFormReturnType } from '../types/form'\n\ntype Recordable<T = any> = Record<string, T>\ntype Nullable<T> = T | null\ntype DynamicProps<T> = {\n  [P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>\n}\nconst isProdMode = () => true\n\nexport declare type ValidateFields = (nameList?: NamePath[]) => Promise<Recordable>\n\ntype Props = Partial<DynamicProps<FormProps>>\n\nexport function useForm(props?: Props): UseFormReturnType {\n  const formRef = ref<Nullable<FormActionType>>(null)\n  const loadedRef = ref<Nullable<boolean>>(false)\n\n  async function getForm() {\n    const form = unref(formRef)\n    if (!form) {\n      error(\n        'The form instance has not been obtained, please make sure that the form has been rendered when performing the form operation!'\n      )\n    }\n    await nextTick()\n    return form as FormActionType\n  }\n\n  function register(instance: FormActionType) {\n    isProdMode() &&\n      onUnmounted(() => {\n        formRef.value = null\n        loadedRef.value = null\n      })\n    if (unref(loadedRef) && isProdMode() && instance === unref(formRef)) return\n\n    formRef.value = instance\n    loadedRef.value = true\n\n    watch(\n      () => props,\n      () => {\n        props && instance.setProps(getDynamicProps(props))\n      },\n      {\n        immediate: true,\n        deep: true,\n      }\n    )\n  }\n\n  const methods: FormActionType = {\n    scrollToField: async (name: NamePath, options?: ScrollOptions | undefined) => {\n      const form = await getForm()\n      form.scrollToField(name, options)\n    },\n    setProps: async (formProps: Partial<FormProps>) => {\n      const form = await getForm()\n      form.setProps(formProps)\n    },\n\n    updateSchema: async (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n      const form = await getForm()\n      form.updateSchema(data)\n    },\n\n    resetSchema: async (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n      const form = await getForm()\n      form.resetSchema(data)\n    },\n\n    clearValidate: async (name?: string | string[]) => {\n      const form = await getForm()\n      form.clearValidate(name)\n    },\n\n    resetFields: async () => {\n      getForm().then(async (form) => {\n        await form.resetFields()\n      })\n    },\n\n    removeSchemaByFiled: async (field: string | string[]) => {\n      unref(formRef)?.removeSchemaByFiled(field)\n    },\n\n    // TODO promisify\n    getFieldsValue: <T>() => {\n      return unref(formRef)?.getFieldsValue() as T\n    },\n\n    setFieldsValue: async <T>(values: T, useValidate = true) => {\n      const form = await getForm()\n      form.setFieldsValue<T>(values, useValidate)\n    },\n\n    appendSchemaByField: async (\n      schema: FormSchema,\n      prefixField: string | undefined,\n      first?: boolean\n    ) => {\n      const form = await getForm()\n      form.appendSchemaByField(schema, prefixField!, first)\n    },\n\n    submit: async (): Promise<any> => {\n      const form = await getForm()\n      return form.submit()\n    },\n\n    validate: async (nameList?: NamePath[]): Promise<Recordable> => {\n      const form = await getForm()\n      return form.validate(nameList)\n    },\n\n    validateFields: async (nameList?: NamePath[]): Promise<Recordable> => {\n      const form = await getForm()\n      return form.validateFields(nameList)\n    },\n  }\n\n  return [register, methods]\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;AACvB,SAAS,OAAO,CAAC,KAAK,EAAE;AAC/B,EAAE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,EAAE,eAAe,OAAO,GAAG;AAC3B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,KAAK,CAAC,+HAA+H,CAAC,CAAC;AAC7I,KAAK;AACL,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrB,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,QAAQ,CAAC,QAAQ,EAAE;AAC9B,IAAI,UAAU,EAAE,IAAI,WAAW,CAAC,MAAM;AACtC,MAAM,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,MAAM,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,EAAE,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,CAAC;AACvE,MAAM,OAAO;AACb,IAAI,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC7B,IAAI,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,MAAM;AAC7B,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD,KAAK,EAAE;AACP,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,aAAa,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK;AAC5C,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,QAAQ,EAAE,OAAO,SAAS,KAAK;AACnC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,YAAY,EAAE,OAAO,IAAI,KAAK;AAClC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,WAAW,EAAE,OAAO,IAAI,KAAK;AACjC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,aAAa,EAAE,OAAO,IAAI,KAAK;AACnC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,WAAW,EAAE,YAAY;AAC7B,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;AACrC,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,mBAAmB,EAAE,OAAO,KAAK,KAAK;AAC1C,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,cAAc,EAAE,MAAM;AAC1B,MAAM,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;AAC9C,KAAK;AACL,IAAI,cAAc,EAAE,OAAO,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK;AAC1D,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,mBAAmB,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK;AAC/D,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,MAAM,EAAE,YAAY;AACxB,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B,KAAK;AACL,IAAI,QAAQ,EAAE,OAAO,QAAQ,KAAK;AAClC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,cAAc,EAAE,OAAO,QAAQ,KAAK;AACxC,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;AACnC,MAAM,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC3C,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7B;;;;"}