react-svg-pan-zoom
react-svg-pan-zoom is a React component that adds pan and zoom features to the SVG images. It helps to display big SVG images in a small space.
Live Demo
available at http://chrvadala.github.io/react-svg-pan-zoom/
Features
This component can work in four different modes depending on the selected tool:
- With the tool pan the user can move the image and drag it around within the viewer, but can't interact with SVG child elements.
- With the tool zoom the user can scale the image either with a point click or selecting a region to zoom the specified area, but can't interact with SVG child elements.
- With the tool none the user can interact with SVG child elements and trigger events.
- With the tool auto the user can interact with SVG child elements, perform pan (dragging the image), zoom in (double click), zoom out (double click + shift).
Documentation
Install
NPM
npm install --save react-svg-pan-zoom
UMD
<script src="https://unpkg.com/react-svg-pan-zoom@2"></script>
Usage examples
- Basic - This project show how to use the component in a scenario when is not required a full control on the internal state. This is the easist React SVG Pan Zoom usage.
-
Controlled state - This advanced project show a scenario in which the parent component has a full control of the svg viewer. The state is owned by the parent and injected on the viewer throught
props
. Any state change request is performed by two callbacksonChangeValue(value)
andonChangeTool(tool)
. This demo apply the same pattern of an<input>
tag (React Controlled Components). - Redux - This advanced project show a scenario in which a redux store handle the state. Each component can dispatch a Redux action and edit the current view of the viewer.
- JSFiddle - This is a JSFiddle demo that uses UMD bundle.
Changelog
- v2.0 - Project refactor. Follow this guide for migration instructions.
-
v2.1 - Adds
setPointOnViewerCenter
,reset
methods andclassName
,style
props -
v2.2 - Introduce tool
auto
, improve default toolbar - v2.3 - Adds touch events support
- v2.4 - Adds es:next support, deploy new website
-
v2.5 - Adds
preventPanOutside
andscaleFactor
props - v2.6 - Introduce transformation-matrix that reduce bundle size thanks to three shaking, Fix pan limit behaviour, Replaces toolbar links with buttons, minor improvements
- v2.7 - Adds miniature feature, Adds PropTypes support
- v2.8 - Adds storybook demo, Remove bower support, Adds pinch to zoom feature, Fix miniature size
-
v2.9 - Reinvents miniature and introduce props
miniatureBackground
,miniatureHeight
, Minor improvements & fix
Some projects using react-svg-pan-zoom
- React Planner
- Others...
- Pull request your project!
Contributors
- chrvadala (author)
- UtkuBelemir
- pellebjerkestrand