import {type WritableComputedRef} from 'vue'; import {useVModel} from '@vueuse/core'; import {generateFieldId} from '../../utils'; import {type ElementInstance, type PdkElementEmits, type PdkElementProps} from '../../types'; export type ElementContext = { id: string; model: WritableComputedRef; }; export const useElementContext = < T1 = unknown, T2 = T1, Props extends PdkElementProps = PdkElementProps, Emits extends PdkElementEmits = PdkElementEmits, >( props: Props, emit: Emits, ): ElementContext => { const id = generateFieldId(props.element as ElementInstance); const model = useVModel(props, undefined, emit) as WritableComputedRef; return { id, model, }; };