UNPKG

react-blueprint-svg

Version:

Pannable, zoomable SVG with menu of displaying options inspired by maker.js.

89 lines (58 loc) 2.41 kB
# react-blueprint-svg > Pannable, zoomable SVG with menu of displaying options inspired by [maker.js](https://maker.js.org). [![NPM](https://img.shields.io/npm/v/react-blueprint-svg.svg)](https://www.npmjs.com/package/react-blueprint-svg) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) <img alt="Example Illustration" src="/Screenshots/recording.gif?raw=true" width="75%"> [Link to Demo](https://bersaelor.github.io/react-blueprint-svg/) ## Install ```bash npm install --save react-blueprint-svg ``` or ```bash yarn add react-blueprint-svg ``` ## Usage ```tsx import React from 'react' import Blueprint from 'react-blueprint-svg' function App() { let smile = new SmileModel(); return <div className="container"> <Blueprint model={smile} /> </div> } ``` You can also add children elements to the header of the blueprint area, to give it a title or a headline with a link to download your CNC file: ```tsx const filename = "output.dxf" const file = makerjs.exporter.toDXF(model) <Blueprint model={model}> <h3><a href={file}>{filename}</a></h3> </Blueprint> ``` ## Input The model property may either be `makerjs.IModel` object or `*.svg` data supplied as a string. When putting in a plain string, advanced display options like path names and flow are disabled, as those rely on `makerjs` to convert the model into annotated `<svg>`. ```tsx var model = { models: { ring1: new makerjs.models.Ring(40, 100), bc1: new makerjs.models.BoltCircle(90, 4, 10), bc2: new makerjs.models.BoltCircle(55, 7, 6, 30) } } return <Blueprint model={model} /> // no automatic sizing or path flow annotation ``` Output: <img alt="Example Bolts" src="/Screenshots/bolts.jpg?raw=true"> ```tsx let svg = '<svg height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />' return <Blueprint model={svg} /> // no automatic sizing or path flow annotation ``` Output: <img alt="SVG Example" src="/Screenshots/circle.jpg?raw=true"> ## TODO * multitouch support for Zooming & Panning, and therefore also React Native support ## Contact Post an [issue](https://github.com/Bersaelor/react-blueprint-svg/issues) or contact me on [twitter](https://twitter.com/bersaelor). ## License MIT © [Bersaelor](https://github.com/Bersaelor)