UNPKG

vue3-openlayers

Version:
33 lines (32 loc) 848 B
import { inject, computed, watch, onMounted, onUnmounted } from "vue"; import usePropsAsObjectProperties from "./usePropsAsObjectProperties.js"; function useGeometry(GeometryType, props) { const feature = inject("feature"); const properties = usePropsAsObjectProperties(props); const geometry = computed(() => { const parameters = Object.values(properties); return new GeometryType( ...parameters ); }); watch(properties, () => { feature?.value?.setGeometry(geometry.value); feature?.value?.changed(); }); watch( () => feature, () => { feature?.value?.setGeometry(geometry.value); } ); onMounted(() => { feature?.value?.setGeometry(geometry.value); }); onUnmounted(() => { feature?.value?.setGeometry(void 0); }); return geometry; } export { useGeometry as default };