@canvas-harness/react 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +19 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -815,12 +815,27 @@ var usePanZoom = (ref, store, tool) => {
|
|
|
815
815
|
scheduled = false;
|
|
816
816
|
rafId = 0;
|
|
817
817
|
if (pendingZoomFactor !== 1 && pendingZoomAnchor) {
|
|
818
|
+
const MAX_PER_FRAME = 2;
|
|
819
|
+
const MIN_PER_FRAME = 0.5;
|
|
820
|
+
let appliedFactor = pendingZoomFactor;
|
|
821
|
+
let drained = true;
|
|
822
|
+
if (appliedFactor > MAX_PER_FRAME) {
|
|
823
|
+
appliedFactor = MAX_PER_FRAME;
|
|
824
|
+
pendingZoomFactor = pendingZoomFactor / MAX_PER_FRAME;
|
|
825
|
+
drained = false;
|
|
826
|
+
} else if (appliedFactor < MIN_PER_FRAME) {
|
|
827
|
+
appliedFactor = MIN_PER_FRAME;
|
|
828
|
+
pendingZoomFactor = pendingZoomFactor / MIN_PER_FRAME;
|
|
829
|
+
drained = false;
|
|
830
|
+
} else {
|
|
831
|
+
pendingZoomFactor = 1;
|
|
832
|
+
}
|
|
818
833
|
const camera = store.getCamera();
|
|
819
834
|
store.setCamera(
|
|
820
|
-
core.zoomAtScreenPoint(camera, core.clampZoom(camera.z *
|
|
835
|
+
core.zoomAtScreenPoint(camera, core.clampZoom(camera.z * appliedFactor), pendingZoomAnchor)
|
|
821
836
|
);
|
|
822
|
-
|
|
823
|
-
|
|
837
|
+
if (drained) pendingZoomAnchor = null;
|
|
838
|
+
else schedule();
|
|
824
839
|
}
|
|
825
840
|
if (pendingDx !== 0 || pendingDy !== 0) {
|
|
826
841
|
const camera = store.getCamera();
|
|
@@ -857,7 +872,7 @@ var usePanZoom = (ref, store, tool) => {
|
|
|
857
872
|
if (isEditing()) return;
|
|
858
873
|
e.preventDefault();
|
|
859
874
|
if (e.ctrlKey || e.metaKey) {
|
|
860
|
-
const factor = Math.exp(-e.deltaY * 0.01);
|
|
875
|
+
const factor = Math.abs(e.deltaY) >= 100 ? e.deltaY > 0 ? 1 / 1.1 : 1.1 : Math.exp(-e.deltaY * 0.01);
|
|
861
876
|
pendingZoomFactor *= factor;
|
|
862
877
|
pendingZoomAnchor = screenFromClient(e.clientX, e.clientY);
|
|
863
878
|
pulseMotion("zooming");
|