A zero dependency way to convert DOM To SVG
https://npmjs.com/package/@gdscnits/dts
- JavaScript 62.9%
- TypeScript 33.8%
- HTML 3.3%
| docs | ||
| src | ||
| tests | ||
| types | ||
| .eslintignore | ||
| .eslintrc | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.json | ||
| esbuild.config.mjs | ||
| jest.config.mjs | ||
| jsdoc.conf.json | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| tsconfig.json | ||
dts
DOM To SVG
Convert a DOM Node to SVG Element.
Try on CodePen
Usage:
For running in Client side, simply use the CDN script:
import dts from "https://cdn.jsdelivr.net/npm/@gdscnits/dts/dist/index.min.js";
const elem = document.getElementById("main")
// console.log(dts(elem)); // to get URI
console.log(dts(elem, false)); // to get svg
For Installing locally:
npm i @gdscnits/dts
// File: index.js
import dts from "@gdscnits/dts";
const elem = document.getElementById("main")
// console.log(dts(elem)); // to get URI
console.log(dts(elem, false)); // to get svg
Build the script using esbuild and browserify(Install them as dependencies). In package.json,
put the following lines:
"scripts": {
"bundle": "esbuild index.js --bundle --sourcemap --target=chrome58,firefox57,safari11,edge16 --outfile=bundle.js"
},
"type": "module"
In the HTML file, include bundle.js as script.
<script src="./bundle.js"></script>
For React components, create a ref for the div whose SVG is needed.
import dts from "@gdscnits/dts";
import { useRef } from "react";
const Component = () => {
const divref = useRef(null);
const getSVG = () => {
if(divref == null) return;
// const svg = dts(divref) // to get URI
const svg = dts(divref, false) // to get SVG
console.log(svg)
}
return (
<div className="main">
{/* Click on this button to console log the SVG for divref */}
<button onClick={getSVG}>
Click me to get SVG
</button>
<div className="div_whose_SVG_is_needed" ref={divref}>
<div className="styling">
{/*...*/}
</div>
</div>
</div>
)
}
Setup Locally
- Clone the repository
git clone https://github.com/gdsc-nits-org/dts.git
- Install dependencies(this project uses pnpm, but you can use your favourite package manager)
pnpm install
- Build the project
pnpm esbuild
Additional
- View Docs
pnpm docs
- Build Docs
pnpm run docs
- Run test
pnpm test
TODO:
- Replace rollup with esbuild
- Make it asynchronous
- Setup simple-git-hooks
- Border Radius applied in image
Box Shadows are not rendered properly(Box Shadows not feasable with SVG)- Make it work with React components
- Publish to NPM registry
- Setup tests
- Test all helpers
- Fix some broken testcases
- Document codebase and usage