|
@@ -1426,14 +1426,17 @@ class App extends React.Component<ExcalidrawProps, AppState> {
|
|
|
|
|
|
private onGestureChange = withBatchedUpdates((event: GestureEvent) => {
|
|
|
event.preventDefault();
|
|
|
- this.setState(({ zoom, offsetLeft, offsetTop }) => ({
|
|
|
- zoom: getNewZoom(
|
|
|
- getNormalizedZoom(gesture.initialScale! * event.scale),
|
|
|
- zoom,
|
|
|
- { left: offsetLeft, top: offsetTop },
|
|
|
- { x: cursorX, y: cursorY },
|
|
|
- ),
|
|
|
- }));
|
|
|
+ const initialScale = gesture.initialScale;
|
|
|
+ if (initialScale) {
|
|
|
+ this.setState(({ zoom, offsetLeft, offsetTop }) => ({
|
|
|
+ zoom: getNewZoom(
|
|
|
+ getNormalizedZoom(initialScale * event.scale),
|
|
|
+ zoom,
|
|
|
+ { left: offsetLeft, top: offsetTop },
|
|
|
+ { x: cursorX, y: cursorY },
|
|
|
+ ),
|
|
|
+ }));
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
private onGestureEnd = withBatchedUpdates((event: GestureEvent) => {
|
|
@@ -1745,20 +1748,26 @@ class App extends React.Component<ExcalidrawProps, AppState> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- if (gesture.pointers.size === 2) {
|
|
|
+ const initialScale = gesture.initialScale;
|
|
|
+ if (
|
|
|
+ gesture.pointers.size === 2 &&
|
|
|
+ gesture.lastCenter &&
|
|
|
+ initialScale &&
|
|
|
+ gesture.initialDistance
|
|
|
+ ) {
|
|
|
const center = getCenter(gesture.pointers);
|
|
|
- const deltaX = center.x - gesture.lastCenter!.x;
|
|
|
- const deltaY = center.y - gesture.lastCenter!.y;
|
|
|
+ const deltaX = center.x - gesture.lastCenter.x;
|
|
|
+ const deltaY = center.y - gesture.lastCenter.y;
|
|
|
gesture.lastCenter = center;
|
|
|
|
|
|
const distance = getDistance(Array.from(gesture.pointers.values()));
|
|
|
- const scaleFactor = distance / gesture.initialDistance!;
|
|
|
+ const scaleFactor = distance / gesture.initialDistance;
|
|
|
|
|
|
this.setState(({ zoom, scrollX, scrollY, offsetLeft, offsetTop }) => ({
|
|
|
scrollX: normalizeScroll(scrollX + deltaX / zoom.value),
|
|
|
scrollY: normalizeScroll(scrollY + deltaY / zoom.value),
|
|
|
zoom: getNewZoom(
|
|
|
- getNormalizedZoom(gesture.initialScale! * scaleFactor),
|
|
|
+ getNormalizedZoom(initialScale * scaleFactor),
|
|
|
zoom,
|
|
|
{ left: offsetLeft, top: offsetTop },
|
|
|
center,
|