Merge pull request #5012 from xyflow/refactor/screentoflow
chore(screenToflowPosition): use correct defaults add snapGrid
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'@xyflow/react': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add snapGrid option to screenToFlowPosition and set snapToGrid to false
|
||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
type XYPosition,
|
type XYPosition,
|
||||||
rendererPointToPoint,
|
rendererPointToPoint,
|
||||||
getDimensions,
|
getDimensions,
|
||||||
|
SnapGrid,
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
import { useStoreApi } from '../hooks/useStore';
|
import { useStoreApi } from '../hooks/useStore';
|
||||||
@@ -119,21 +120,25 @@ const useViewportHelper = (): ViewportHelperFunctions => {
|
|||||||
|
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
},
|
},
|
||||||
screenToFlowPosition: (clientPosition: XYPosition, options: { snapToGrid: boolean } = { snapToGrid: true }) => {
|
screenToFlowPosition: (
|
||||||
const { transform, snapGrid, domNode } = store.getState();
|
clientPosition: XYPosition,
|
||||||
|
options: { snapToGrid?: boolean; snapGrid?: SnapGrid } = {}
|
||||||
|
) => {
|
||||||
|
const { transform, snapGrid, snapToGrid, domNode } = store.getState();
|
||||||
|
|
||||||
if (!domNode) {
|
if (!domNode) {
|
||||||
return clientPosition;
|
return clientPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { x: domX, y: domY } = domNode.getBoundingClientRect();
|
const { x: domX, y: domY } = domNode.getBoundingClientRect();
|
||||||
|
|
||||||
const correctedPosition = {
|
const correctedPosition = {
|
||||||
x: clientPosition.x - domX,
|
x: clientPosition.x - domX,
|
||||||
y: clientPosition.y - domY,
|
y: clientPosition.y - domY,
|
||||||
};
|
};
|
||||||
|
const _snapGrid = options.snapGrid ?? snapGrid;
|
||||||
|
const _snapToGrid = options.snapToGrid ?? snapToGrid;
|
||||||
|
|
||||||
return pointToRendererPoint(correctedPosition, transform, options.snapToGrid, snapGrid);
|
return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid);
|
||||||
},
|
},
|
||||||
flowToScreenPosition: (flowPosition: XYPosition) => {
|
flowToScreenPosition: (flowPosition: XYPosition) => {
|
||||||
const { transform, domNode } = store.getState();
|
const { transform, domNode } = store.getState();
|
||||||
|
|||||||
Reference in New Issue
Block a user