@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.js CHANGED
@@ -813,12 +813,27 @@ var usePanZoom = (ref, store, tool) => {
813
813
  scheduled = false;
814
814
  rafId = 0;
815
815
  if (pendingZoomFactor !== 1 && pendingZoomAnchor) {
816
+ const MAX_PER_FRAME = 2;
817
+ const MIN_PER_FRAME = 0.5;
818
+ let appliedFactor = pendingZoomFactor;
819
+ let drained = true;
820
+ if (appliedFactor > MAX_PER_FRAME) {
821
+ appliedFactor = MAX_PER_FRAME;
822
+ pendingZoomFactor = pendingZoomFactor / MAX_PER_FRAME;
823
+ drained = false;
824
+ } else if (appliedFactor < MIN_PER_FRAME) {
825
+ appliedFactor = MIN_PER_FRAME;
826
+ pendingZoomFactor = pendingZoomFactor / MIN_PER_FRAME;
827
+ drained = false;
828
+ } else {
829
+ pendingZoomFactor = 1;
830
+ }
816
831
  const camera = store.getCamera();
817
832
  store.setCamera(
818
- zoomAtScreenPoint(camera, clampZoom(camera.z * pendingZoomFactor), pendingZoomAnchor)
833
+ zoomAtScreenPoint(camera, clampZoom(camera.z * appliedFactor), pendingZoomAnchor)
819
834
  );
820
- pendingZoomFactor = 1;
821
- pendingZoomAnchor = null;
835
+ if (drained) pendingZoomAnchor = null;
836
+ else schedule();
822
837
  }
823
838
  if (pendingDx !== 0 || pendingDy !== 0) {
824
839
  const camera = store.getCamera();
@@ -855,7 +870,7 @@ var usePanZoom = (ref, store, tool) => {
855
870
  if (isEditing()) return;
856
871
  e.preventDefault();
857
872
  if (e.ctrlKey || e.metaKey) {
858
- const factor = Math.exp(-e.deltaY * 0.01);
873
+ const factor = Math.abs(e.deltaY) >= 100 ? e.deltaY > 0 ? 1 / 1.1 : 1.1 : Math.exp(-e.deltaY * 0.01);
859
874
  pendingZoomFactor *= factor;
860
875
  pendingZoomAnchor = screenFromClient(e.clientX, e.clientY);
861
876
  pulseMotion("zooming");