import { provide, reactive, toRef, inject, Ref } from 'vue' import { FormItemContext, FormContext, formContextKey, formItemContextKey } from 'element-plus' import { IAnyObject } from '../utils' interface FormInject { labelPosition?: string equipment?: string uploadQueue?: Record } export const useFormProvide = (props: IAnyObject, uploadQueue?: Ref>) => { const cipFormProvide: FormInject = reactive({ labelPosition: toRef(props, 'labelPosition') as Ref, equipment: toRef(props, 'equipment') as Ref, uploadQueue }) provide('cipForm', cipFormProvide) } export const useFormInject = () => { const cipForm = inject>('cipForm', {}) return cipForm } export const useElFormItemInject = () => { const elFormItem = inject(formItemContextKey, {} as FormItemContext) return elFormItem } export const useElFormInject = () => { const elForm = inject(formContextKey, {} as FormContext) return elForm }