React library to implement Zoom, Pan, Pinch on HTML Elements

TIKAM CHAND
TIKAM CHAND

31 May 2021

JavaScriptLibrariesReact

React library to support easy Zoom, Pan, Pinch on various html dom elements like Images and Div's. It is a Super fast and light react npm package for Zooming, Panning and Pinching html elements in easy way.

Features

  • Fast and easy to use
  • Light, without external dependencies
  • Mobile gestures, touchpad gestures and desktop mouse events support
  • Powerful context usage, which gives you a lot of freedom
  • Highly customizable
  • Animations and many options

Demo

Github

Install

npm install --save react-zoom-pan-pinch

OR

yarn add react-zoom-pan-pinch

Usage

import React, { Component } from "react";
import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch";

class Example extends Component { render() { return ( <TransformWrapper><TransformComponent><img src="image.jpg" alt="test" /></TransformComponent></TransformWrapper> ); } }

OR

import React, { Component } from "react";
import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch";

class Example extends Component { render() { return ( <TransformWrapperdefaultScale={1}defaultPositionX={200}defaultPositionY={100} > {({ zoomIn, zoomOut, resetTransform, ...rest }) => ( <React.Fragment><div className="tools"><button onClick={zoomIn}>+</button><button onClick={zoomOut}>-</button><button onClick={resetTransform}>x</button></div><TransformComponent><img src="image.jpg" alt="test" /><div>Example text</div></TransformComponent></React.Fragment> )} </TransformWrapper> ); } }

Props of TransformWrapper

PropsDefaultTypescale1numberpositionXautonumberpositionYautonumberdefaultPositionXnullnumberdefaultPositionYnullnumberdefaultScalenullnumberoptions{...}objectwheel{...}objectpan{...}objectpinch{...}objectzoomIn{...}objectzoomOut{...}objectdoubleClick{...}objectreset{...}objectscalePadding{...}objectonWheelStartnullFunctiononWheelnullFunctiononWheelStopnullFunctiononPanningStartnullFunctiononPanningnullFunctiononPanningStopnullFunctiononPinchingStartnullFunctiononPinchingnullFunctiononPinchingStopnullFunctiononZoomChangenullFunctionenablePaddingtrueBooleanenablePanPaddingtrueBoolean

Options prop elements

PropsDefaultTypedisabledfalsebooleantransformEnabledtruebooleanminPositionXnullnull, numbermaxPositionXnullnull, numberminPositionYnullnull, numbermaxPositionYnullnull, numberminScale1numbermaxScale8numberlimitToBoundstruebooleanlimitToWrapperfalsebooleancenterContenttrueboolean

scalePadding prop elements

PropsDefaultTypedisabledfalsebooleansize0.45numberanimationTime200numberanimationTypeeaseOutstring

Wheel prop elements

PropsDefaultTypedisabledfalsebooleanstep6.5numberwheelEnabledtruebooleantouchPadEnabledtruebooleanlimitsOnWheeltrueboolean

Pan prop elements

PropsDefaultTypedisabledfalsebooleandisableOnTarget[]array of class names or node tags (div,span...)lockAxisXfalsebooleanlockAxisYfalsebooleanvelocityfalsebooleanvelocityEqualToMovefalsebooleanvelocitySensitivity1numbervelocityMinSpeed1.2numbervelocityBaseTime1800numbervelocityAnimationTypeeaseOutstringpaddingtruebooleanpaddingSize40numberanimationTime200numberanimationTypeeaseOutstring

Pinch prop elements

PropsDefaultTypedisabledfalseboolean

zoomIn prop elements

PropsDefaultTypedisabledfalsebooleanstep70numberanimationtruebooleananimationTime200numberanimationTypeeaseOutstring

zoomOut prop elements

PropsDefaultTypedisabledfalsebooleanstep70numberanimationtruebooleananimationTime200numberanimationTypeeaseOutstring

doubleClick prop elements

PropsDefaultTypedisabledfalsebooleanstep70numberanimationtruebooleananimationTime200numberanimationTypeeaseOutstringmodezoomInzoomIn / zoomOut / reset

reset prop elements

PropsDefaultTypedisabledfalsebooleananimationtruebooleananimationTime200numberanimationTypeeaseOutstring

Animations types

ValueeaseOutlineareaseInQuadeaseOutQuadeaseInOutQuadeaseInCubiceaseOutCubiceaseInOutCubiceaseInQuarteaseOutQuarteaseInOutQuarteaseInQuinteaseOutQuinteaseInOutQuint

Double click modes

ValuezoomInzoomOutreset

Values returned from TransformWrapper component

ValueDescriptionTypesetScale(scale, animationTime, animationType)Sets scaleNumbersetPositionX(positionX, animationTime, animationType)Sets position xNumbersetPositionY(positionY, animationTime, animationType)Sets position yNumberzoomIn()Zooming in function, used for controls button---zoomOut()Zooming out function, used for controls button---setTransform(positionX, positionY, scale, animationTime, animationType)Sets transformations of contentNumber or nullresetTransform()Reset transformations to the initial valuesNumber

License

MIT © prc5

That's it. Feel free to leave a comment.



Comments

(0)
We have temporarily disabled the comment posting feature. It will be enabled soon—please check back later!

    Recent posts

    TIKAM CHAND
    Shadow DOM in JavaScript
    How ToJavaScript
    1
    101
    2