0.6.5 ā€¢ Published 2 years ago

use-pan-and-zoom v0.6.5

Weekly downloads
27,085
License
MIT
Repository
github
Last release
2 years ago

use-pan-and-zoom

šŸ‘†+šŸ”Ž React hook for panning and zooming a container.

Supports touch devices since version 0.4.0.

Installation

yarn add use-pan-and-zoom / npm install use-pan-and-zoom --save

Requirements

This package is a React Hook and therefor requires React 16.8 or newer.

Quick Start

import usePanZoom from "use-pan-and-zoom";

export default function Demo() {
  const { transform, setContainer, panZoomHandlers } = usePanZoom();

  return (
    <div
      ref={(el) => setContainer(el)}
      style={{ touchAction: "none" }}
      {...panZoomHandlers}
    >
      <div style={{ transform }}>
        <p>Drag to šŸ‘† and scroll / pinch to šŸ”Ž me!</p>
      </div>
    </div>
  );
}

Edit use-pan-and-zoom example

Parameters

All parameters are optional

ParameterTypeDefault
enablePanbooleantrue
enableZoombooleantrue
requireCtrlToZoombooleanfalse
disableWheelbooleanfalse
panOnDragbooleantrue
preventClickOnPanbooleantrue
zoomSensitivitynumber0.01
minZoomnumber0
maxZoomnumberInfinity
minXnumber-Infinity
maxXnumberInfinity
minYnumber-Infinity
maxYnumberInfinity
initialZoomnumber1
initialPanposition{ x: 0, y: 0 }
onPanStart(touches: position[], transform: transform) => void() => {}
onPan(touches: position[], transform: transform) => void() => {}
onPanEnd() => void() => {}
onZoom(transform: transform) => void() => {}

Where:

  • position = { x: number, y: number }
  • transform = { x: number, y: number, zoom: number }

Output

FieldTypeDescription
containerHTMLElement \| nullCurrent container element
setContainer(HTMLElement \| null) => voidSets the container element
transformstringCSS string determining the transform
centerpositionCenter of container element
panpositionCurrent pixels panned
zoomnumberCurrent zoom
setPan(pan: position) => voidSet pan imperatively
setZoom(zoom: number) => voidSet zoom imperatively
panZoomHandlers{ ...EventHandler }Pass to container element to listen to relevant events
0.6.3

2 years ago

0.6.5

2 years ago

0.6.4

2 years ago

0.6.2

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.0

4 years ago

0.5.1

4 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago