33 lines
731 B
TypeScript
33 lines
731 B
TypeScript
/**
|
|
* Composable for managing build data with automatic trimming
|
|
* Handles deep cloning and tree manipulation
|
|
*/
|
|
import { deepClone } from '~/utils/helpers'
|
|
import { trimBuilds, trimLateGameItems } from '~/utils/buildHelpers'
|
|
|
|
export const useBuilds = (buildsProp: Ref<Builds>) => {
|
|
const builds = ref<Builds>(deepClone(buildsProp.value))
|
|
|
|
function trimBuildData(): void {
|
|
trimBuilds(builds.value)
|
|
trimLateGameItems(builds.value)
|
|
}
|
|
|
|
// Watch for changes and rebuild
|
|
watch(
|
|
() => buildsProp.value,
|
|
newBuilds => {
|
|
builds.value = deepClone(newBuilds)
|
|
trimBuildData()
|
|
},
|
|
{ deep: true }
|
|
)
|
|
|
|
// Initial trim on mount
|
|
onMounted(() => {
|
|
trimBuildData()
|
|
})
|
|
|
|
return { builds }
|
|
}
|