202008 该项目改造 https://github.com/chrvadala/react-svg-pan-zoom ,加上一些需要的基础功能。
相关项目:
shape-reviewer-v1 : react based app.
在 props 中加入 onSelect(start, end) 回调函数,可以对选择框行为作出相应。其参数 表示选择的起点和终点
在 toolbarProps 中添加三个回调,可以响应 保存、删除、和 边框设定 三个按钮被点击的事件。
toolbarProps:{ onSave, onDelete, onBorderSet, onUndo, onRedo }
详见 shape-reviewer-v1 项目中 mainView.js中的使用细节。
yarn run library:build:commonjs
左中右三键 按下 event中 button分别为 0 1 2 松开 event中 button分别为 0 1 2 buttons为掩码,左中右分别对应 1 4 2,鼠标事件中 buttons为其相应按下按键的码和。
以下是原 README
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.
available at http://chrvadala.github.io/react-svg-pan-zoom/
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).
npm install --save react-svg-pan-zoom
yarn add react-svg-pan-zoom
<script src="https://unpkg.com/prop-types@15/prop-types.js"></script>
<script src="https://unpkg.com/react-svg-pan-zoom@3"></script>
- Basic - Basic usage of
<ReactSVGPanZoom>
. - Uncontrolled Component - Basic usage of
<UncontrolledReactSVGPanZoom>
. - Advanced usage - Complex usage of
<ReactSVGPanZoom>
that uses some advanced features. - JSFiddle - This is a JSFiddle demo that uses UMD bundle.
- CodeSandbox - This is a CodeSandbox demo.
- v2.0 - Project refactor. Follow this guide for migration instructions.
- v2.1 - Adds
setPointOnViewerCenter
,reset
methods andclassName
,style
props - v2.2 - Introduces tool
auto
, improves 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 - Introduces transformation-matrix that reduces bundle size thanks to three shaking, Fixes 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, Fixes miniature size
- v2.9 - Reinvents miniature and introduce props
miniatureBackground
,miniatureHeight
, Minor improvements & fix - v2.10 - Introduces prop
disableDoubleClickZoomWithToolAuto
- v2.11 - Improves docs, updates deps
- v2.12 - Exports miniature to allow customization
- v2.13 - Fixes resize issues (#58), Upgrades deps
- v2.14 - Introduces prop
scaleFactorOnWheel
, Upgrades deps - v2.15 - Improves autopan feature (#71), adds
scaleFactorMax
,scaleFactorMin
props (#71), Upgrades deps - v2.16 - Adds
onPan
andonZoom
callbacks, Upgrade deps, Fixes boundaries feature - v2.17 - Upgrades deps
- v2.18 - Introduces
toolbarProps.SVGAlignX
andtoolbarProps.SVGAlignY
props. Adds alignment configuration infitToViewer(SVGAlignX = "left", SVGAlignY = "top")
method (#120). Upgrades deps. - v3.0 - Upgrades to babel 7 and storybook 4; Introduces
<UncontrolledReactSVGPanZoom />
component and makes<ReactSVGPanZoom>
a stateless component (except for some optimizations); Moves props related to miniature and toolbar, respectively into theminiatureProp
andtoolbarProp
props. Migration guide is available here. - v3.1 - Upgrades to storybook 5 and transformation-matrix 2; Fixes some Babel configuration issues
- v3.2 - Upgrades deps
- v3.3 - Adds SVG viewbox prop support #150
- v3.4 - Upgrades deps and increases code quality (fixing eslint warnings)
- v3.5 - Handles wheel event as passive #158, upgrades deps
- v3.6 - Adds some unit tests, Fixes #161, upgrades deps
- v3.7 - Adds some more unit tests, upgrades deps
- v3.8 - Adds cover option on
fitToViewer
method #167, addsactiveToolColor
property #168, upgrades deps
- Learn Anything
- React Planner
- Python extension for vscode
- Others...
- Pull request your project!