feat(useZoomPanHelper) add setCenter func

This commit is contained in:
moklick
2020-12-22 14:11:28 +01:00
parent f49cae85c0
commit 869dcadae2
5 changed files with 18 additions and 3 deletions
+1
View File
@@ -7,3 +7,4 @@ cypress/screenshots
dist dist
.env .env
stats.html stats.html
.eslintcache
+3 -1
View File
@@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { useStoreState, useStoreActions } from 'react-flow-renderer'; import { useStoreState, useStoreActions } from 'react-flow-renderer';
export default () => { const Sidebar = () => {
const nodes = useStoreState((store) => store.nodes); const nodes = useStoreState((store) => store.nodes);
const transform = useStoreState((store) => store.transform); const transform = useStoreState((store) => store.transform);
const setSelectedElements = useStoreActions((actions) => actions.setSelectedElements); const setSelectedElements = useStoreActions((actions) => actions.setSelectedElements);
@@ -32,3 +32,5 @@ export default () => {
</aside> </aside>
); );
}; };
export default Sidebar;
+11
View File
@@ -12,6 +12,7 @@ const initialZoomPanHelper: ZoomPanHelperFunctions = {
zoomTo: (_: number) => {}, zoomTo: (_: number) => {},
transform: (_: FlowTransform) => {}, transform: (_: FlowTransform) => {},
fitView: (_: FitViewParams = { padding: 0.1 }) => {}, fitView: (_: FitViewParams = { padding: 0.1 }) => {},
setCenter: (_: number, __: number) => {},
initialized: false, initialized: false,
}; };
@@ -51,6 +52,16 @@ const usePanZoomHelper = (): ZoomPanHelperFunctions => {
d3Zoom.transform(d3Selection, transform); d3Zoom.transform(d3Selection, transform);
}, },
setCenter: (x: number, y: number, zoom?: number) => {
const { width, height, maxZoom } = store.getState();
const nextZoom = typeof zoom !== 'undefined' ? zoom : maxZoom;
const centerX = width / 2 - x * nextZoom;
const centerY = height / 2 - y * nextZoom;
const transform = zoomIdentity.translate(centerX, centerY).scale(nextZoom);
d3Zoom.transform(d3Selection, transform);
},
initialized: true, initialized: true,
}; };
} }
+1
View File
@@ -354,6 +354,7 @@ export interface ZoomPanHelperFunctions {
zoomTo: (zoomLevel: number) => void; zoomTo: (zoomLevel: number) => void;
transform: (transform: FlowTransform) => void; transform: (transform: FlowTransform) => void;
fitView: (params?: FitViewParams) => void; fitView: (params?: FitViewParams) => void;
setCenter: (x: number, y: number, zoom?: number) => void;
initialized: boolean; initialized: boolean;
} }