canvu-react 0.3.22 → 0.3.24

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
@@ -561,16 +561,23 @@ function distanceBetween(a, b) {
561
561
  function midpoint(a, b) {
562
562
  return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 };
563
563
  }
564
- function wheelDeltaYPixels(e) {
565
- switch (e.deltaMode) {
564
+ function wheelDeltaPixels(delta, deltaMode) {
565
+ switch (deltaMode) {
566
566
  case WheelEvent.DOM_DELTA_LINE:
567
- return e.deltaY * 16;
567
+ return delta * 16;
568
568
  case WheelEvent.DOM_DELTA_PAGE:
569
- return e.deltaY * 400;
569
+ return delta * 400;
570
570
  default:
571
- return e.deltaY;
571
+ return delta;
572
572
  }
573
573
  }
574
+ var TRACKPAD_MAX_DELTA = 20;
575
+ var MOUSE_WHEEL_DAMPING = 0.4;
576
+ function softenWheelDelta(d) {
577
+ const a = Math.abs(d);
578
+ if (a <= TRACKPAD_MAX_DELTA) return d;
579
+ return Math.sign(d) * (TRACKPAD_MAX_DELTA + (a - TRACKPAD_MAX_DELTA) * MOUSE_WHEEL_DAMPING);
580
+ }
574
581
  function attachViewportInput(options) {
575
582
  const {
576
583
  element,
@@ -593,8 +600,8 @@ function attachViewportInput(options) {
593
600
  const onWheel = (e) => {
594
601
  if (e.ctrlKey || e.metaKey) {
595
602
  e.preventDefault();
596
- const dy = wheelDeltaYPixels(e);
597
- const normDy = Math.abs(dy) < 20 ? dy * 12 : dy;
603
+ const dy = wheelDeltaPixels(e.deltaY, e.deltaMode);
604
+ const normDy = Math.abs(dy) < TRACKPAD_MAX_DELTA ? dy * 12 : dy;
598
605
  const factor = Math.exp(-normDy * wheelZoomSensitivity);
599
606
  const rect = element.getBoundingClientRect();
600
607
  camera.setZoom(camera.zoom * factor, {
@@ -605,8 +612,10 @@ function attachViewportInput(options) {
605
612
  return;
606
613
  }
607
614
  e.preventDefault();
608
- camera.x -= e.deltaX * wheelPanSensitivity / camera.zoom;
609
- camera.y -= e.deltaY * wheelPanSensitivity / camera.zoom;
615
+ const panDx = softenWheelDelta(wheelDeltaPixels(e.deltaX, e.deltaMode));
616
+ const panDy = softenWheelDelta(wheelDeltaPixels(e.deltaY, e.deltaMode));
617
+ camera.x -= panDx * wheelPanSensitivity / camera.zoom;
618
+ camera.y -= panDy * wheelPanSensitivity / camera.zoom;
610
619
  onUpdate();
611
620
  };
612
621
  const onPointerDown = (e) => {