Skip to content

Commit

Permalink
perf: prevent watching reactive props continously
Browse files Browse the repository at this point in the history
BREAKING CHANGE:
the composable `usePropsAsObjectProperties` which is used as foundation in all components has been refactored.
Props were watched always deeply and for lot's of components this was done multiple times since the components implement watchers by themselves.
However, even if not expected, this may cause some side effects with reactive changes which must be applied for individual components when not implemented and therefore considered as a breaking change.
Please check your app carefully when updating to the new major version.
  • Loading branch information
d-koppenhagen committed Apr 12, 2024
1 parent 4646392 commit 45f9326
Show file tree
Hide file tree
Showing 71 changed files with 90 additions and 103 deletions.
2 changes: 1 addition & 1 deletion src/components/animations/OlAnimationFeature.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const props = withDefaults(
const map = inject("map");
const vectorLayer = inject<Ref<VectorSource<Geometry>> | null>("vectorLayer");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
defineExpose({
map,
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlClusterSelectInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const props = withDefaults(defineProps<Options>(), {
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const select = computed(() => {
return new SelectCluster({
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlDragBoxInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(defineProps<Options>(), {});
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const dragbox = computed(() => {
const s = new DragBox({
Expand Down
6 changes: 2 additions & 4 deletions src/components/interaction/OlDragRotateInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@ const props = withDefaults(
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const dragrotate = computed(() => {
const s = new DragRotate({
...properties,
});
const s = new DragRotate(properties);
return s;
});
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlDragRotateZoomInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const props = withDefaults(
);
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const dragRotateZoom = computed(() => {
const OlDragRotateAndZoom = new DragRotateAndZoom({
...properties,
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlLinktInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const props = withDefaults(defineProps<Options>(), {
});
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const link = shallowRef(new Link(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlSelectInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const props = withDefaults(
);
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const select = computed(() => {
return new Select({
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlSnapInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const source = inject<Ref<VectorSource> | null>("vectorSource");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const createSnap = () => {
const olSnap = new Snap({
Expand Down
2 changes: 1 addition & 1 deletion src/components/interaction/OlTransformInteraction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ defineOptions({
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const transform = computed(() => {
const olTransform = new Transform({
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlAnimatedClusterLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const clusterSource = shallowRef(
new Cluster({
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlHeatmapLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const heatmapLayer = shallowRef(new HeatmapLayer(properties));
watch(
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlImageLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const imageLayer = ref(new ImageLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlLayerGroup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const props = withDefaults(
);
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const layerGroup = shallowRef(new LayerGroup(properties));
useOpenLayersEvents(layerGroup, [
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlTileLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const overViewMap = inject<Ref<OverviewMap | null> | null>("overviewMap", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const tileLayer = ref(new TileLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlVectorImageLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const vectorImageLayer = computed(() => new VectorImageLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlVectorLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const vectorLayer = computed(() => new VectorLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlVectorTileLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const vectorTileLayer = computed(() => new VectorTileLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlWebglTileLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const overViewMap = inject<Ref<OverviewMap | null> | null>("overviewMap", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const tileLayer = shallowRef(new TileLayer(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/layers/OlWebglVectorLayer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const props = withDefaults(
const map = inject<Map>("map");
const layerGroup = inject<LayerGroup | null>("layerGroup", null);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const webglVectorLayer = computed(() => {
return new WebGLVectorLayer({
Expand Down
2 changes: 1 addition & 1 deletion src/components/map/OlGeoLocation.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const props = withDefaults(defineProps<Options>(), {
}),
});
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const geoLoc = computed(() => new Geolocation(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/map/OlMap.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const emit = defineEmits([
"rendercomplete",
]);
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const mapRef = ref<string | HTMLElement | undefined>(undefined);
let map: Map | undefined = new Map(properties);
Expand Down
2 changes: 1 addition & 1 deletion src/components/map/OlOverlay.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const map = inject<Map>("map");
const htmlContent = ref<HTMLElement>();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const overlay = shallowRef(new Overlay(properties));
Expand Down
2 changes: 1 addition & 1 deletion src/components/map/OlView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const props = withDefaults(defineProps<ViewOptions>(), {
});
const map = inject<Map>("map");
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const createProp = () => {
return {
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlAttributionControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Attribution, properties, attrs);
defineExpose({
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlButtonControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Button, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlContextMenuControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ defineOptions({
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ContextMenu, properties, attrs);
useOpenLayersEvents(control, ["beforeopen", "open", "close", "add-menu-entry"]);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlControlBar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Bar, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlFullScreenControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(FullScreen, properties, attrs);
defineExpose({
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlLayerSwitcherControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const props = withDefaults(defineProps<Options>(), {
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(LayerSwitcher, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlLayerSwitcherImageControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const props = withDefaults(defineProps<Options>(), {
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(LayerSwitcherImage, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlMousePositionControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(MousePosition, properties, attrs);
defineExpose({
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlOverviewMapControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import usePropsAsObjectProperties from "@/composables/usePropsAsObjectProperties
const props = defineProps<Options>();
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(OverviewMap, properties, attrs);
provide("overviewMap", control);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlPrintDialogControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import usePropsAsObjectProperties from "@/composables/usePropsAsObjectProperties
const props = withDefaults(defineProps<Options>(), {});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(PrintDialog, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlProfileControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ defineOptions({
const props = withDefaults(defineProps<Options>(), {});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Profile, properties, attrs);
useOpenLayersEvents(control, [
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlRotateControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Rotate, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlScaleLineControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ScaleLine, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlSearchControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const props = withDefaults(defineProps<Options>(), {
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Search, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlSwipeControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Swipe, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlToggleControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import usePropsAsObjectProperties from "@/composables/usePropsAsObjectProperties
const props = withDefaults(defineProps<Options>(), {});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Toggle, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlVideoRecorderControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(defineProps<Options & { downloadName?: string }>(), {
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(VideoRecorder, properties, attrs);
useOpenLayersEvents(control, ["start", "stop", "pause", "resume"]);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlZoneControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(MapZone, properties, attrs);
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlZoomControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(defineProps<Options>(), {
});
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(Zoom, properties, attrs);
defineExpose({
Expand Down
2 changes: 1 addition & 1 deletion src/components/mapControls/OlZoomSliderControl.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const props = withDefaults(
);
const attrs = useAttrs();
const { properties } = usePropsAsObjectProperties(props);
const properties = usePropsAsObjectProperties(props);
const { control } = useControl(ZoomSlider, properties, attrs);
defineExpose({
Expand Down

0 comments on commit 45f9326

Please sign in to comment.