GithubHelp home page GithubHelp logo

sczadzeck / react-zoom-pan-pinch Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bettertyped/react-zoom-pan-pinch

0.0 0.0 0.0 6 MB

React library to support easy zoom, pan, pinch on various html dom elements like images and divs

License: MIT License

HTML 1.74% JavaScript 22.21% CSS 17.58% TypeScript 58.48%

react-zoom-pan-pinch's Introduction

react-zoom-pan-pinch

NPM npm bundle size JavaScript Style Guide NPM npm GitHub stars

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

DEMO EXAMPLE

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 (
      <TransformWrapper
        defaultScale={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

Props Default Type
scale 1 number
positionX auto number
positionY auto number
defaultPositionX null number
defaultPositionY null number
defaultScale null number
options {...} object
wheel {...} object
pan {...} object
pinch {...} object
zoomIn {...} object
zoomOut {...} object
doubleClick {...} object
reset {...} object
scalePadding {...} object
onWheelStart null Function
onWheel null Function
onWheelStop null Function
onPanningStart null Function
onPanning null Function
onPanningStop null Function
onPinchingStart null Function
onPinching null Function
onPinchingStop null Function
onZoomChange null Function
enablePadding true Boolean
enablePanPadding true Boolean

Options prop elements

Props Default Type
disabled false boolean
transformEnabled true boolean
minPositionX null null, number
maxPositionX null null, number
minPositionY null null, number
maxPositionY null null, number
minScale 1 number
maxScale 8 number
limitToBounds true boolean
limitToWrapper false boolean
centerContent true boolean

scalePadding prop elements

Props Default Type
disabled false boolean
size 0.45 number
animationTime 200 number
animationType easeOut string

Wheel prop elements

Props Default Type
disabled false boolean
step 6.5 number
wheelEnabled true boolean
touchPadEnabled true boolean
limitsOnWheel true boolean

Pan prop elements

Props Default Type
disabled false boolean
disableOnTarget [] array of class names or node tags (div,span...)
lockAxisX false boolean
lockAxisY false boolean
velocity false boolean
velocityEqualToMove false boolean
velocitySensitivity 1 number
velocityMinSpeed 1.2 number
velocityBaseTime 1800 number
velocityAnimationType easeOut string
padding true boolean
paddingSize 40 number
animationTime 200 number
animationType easeOut string

Pinch prop elements

Props Default Type
disabled false boolean

zoomIn prop elements

Props Default Type
disabled false boolean
step 70 number
animation true boolean
animationTime 200 number
animationType easeOut string

zoomOut prop elements

Props Default Type
disabled false boolean
step 70 number
animation true boolean
animationTime 200 number
animationType easeOut string

doubleClick prop elements

Props Default Type
disabled false boolean
step 70 number
animation true boolean
animationTime 200 number
animationType easeOut string
mode zoomIn zoomIn / zoomOut / reset

reset prop elements

Props Default Type
disabled false boolean
animation true boolean
animationTime 200 number
animationType easeOut string

Animations types

Value
easeOut
linear
easeInQuad
easeOutQuad
easeInOutQuad
easeInCubic
easeOutCubic
easeInOutCubic
easeInQuart
easeOutQuart
easeInOutQuart
easeInQuint
easeOutQuint
easeInOutQuint

Double click modes

Value
zoomIn
zoomOut
reset

Values returned from TransformWrapper component

Value Description Type
setScale(scale, animationTime, animationType) Sets scale Number
setPositionX(positionX, animationTime, animationType) Sets position x Number
setPositionY(positionY, animationTime, animationType) Sets position y Number
zoomIn() Zooming in function, used for controls button ---
zoomOut() Zooming out function, used for controls button ---
setTransform(positionX, positionY, scale, animationTime, animationType) Sets transformations of content Number or null
resetTransform() Reset transformations to the initial values Number

License

MIT ยฉ prc5

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


Maciej Pyrc

๐Ÿ‘€ ๐Ÿ’ป ๐Ÿš‡ ๐Ÿšง ๐Ÿ’ก ๐Ÿ’ฌ

Shaneeza

๐Ÿ›

gabrielfmp

๐Ÿ’ป

Pablo Vega Uceta

๐Ÿ’ป

Selvam M

๐Ÿ’ป

David Liu

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!

react-zoom-pan-pinch's People

Contributors

allcontributors[bot] avatar davidlky avatar jpl16 avatar mindouro avatar mpyrc avatar prc5 avatar selvambe23 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.