import { reset } from '../data-utils'
import { useAccessorMap } from './accessor-map'
export function useProps(generateAccessor: ReturnType<typeof useAccessorMap>['generateAccessor']) {
const props = {}
const setProps = (data: Record<string, any>, clear = false) => {
if (clear) {
reset(props)
}
Object.assign(props, data)
}
const initProps = (properties = []) => {
const props: Record<string, any> = {}
const accessorFunctions: Array<ReturnType<typeof generateAccessor>> = []
properties.forEach(({ content = [] }) => {
content.forEach(({ defaultValue, property, accessor }) => {
props[property] = defaultValue
if (accessor?.getter?.value) {
accessorFunctions.push(generateAccessor('getter', accessor, property))
}
if (accessor?.setter?.value) {
accessorFunctions.push(generateAccessor('setter', accessor, property))
}
})
})
setProps(props, true)
return accessorFunctions
}
return {
props,
initProps,
setProps
}
}