@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 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 * pendingZoomFactor), pendingZoomAnchor)
835
+ core.zoomAtScreenPoint(camera, core.clampZoom(camera.z * appliedFactor), pendingZoomAnchor)
821
836
  );
822
- pendingZoomFactor = 1;
823
- pendingZoomAnchor = null;
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");