{"_id":"@adamlockhart/draw-view","_rev":"2-4d5459277eda414b9ee29c461ca3f64b","name":"@adamlockhart/draw-view","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@adamlockhart/draw-view","version":"1.0.0","license":"MIT","_id":"@adamlockhart/draw-view@1.0.0","maintainers":[{"name":"adamlockhart","email":"adamlockhart12@gmail.com"}],"dist":{"shasum":"1e45316afd7713534b093e5d5e5d46a76ce14989","tarball":"https://registry.npmjs.org/@adamlockhart/draw-view/-/draw-view-1.0.0.tgz","fileCount":3,"integrity":"sha512-fktPBnsmmnOhQP0ewqqbsZ38QSR2idpFAuHtoJLwmdzvBY+esLG2QZoNjFNPCzx6Ig1vgVT/cIHQvABxs8qqCA==","signatures":[{"sig":"MEUCIQDb0L24mFVetPs2wUbrM4Ge9boubYeM/e+3Lc32Heh/XgIgIw98advmlqX+CV3dvg6DFvQ3BZBiiM1GY7lY6cuiRlU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18052},"main":"./dist/draw-view.umd.cjs","type":"module","module":"./dist/draw-view.js","exports":{".":{"import":"./dist/draw-view.js","require":"./dist/draw-view.umd.cjs"}},"gitHead":"8338bceb70262aa460ff2eadc254425abdf91d47","scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"adamlockhart","email":"adamlockhart12@gmail.com"},"_npmVersion":"10.9.4","description":"Real-time stroke smoothing and curve-fitting engine for canvas drawing","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5"},"_npmOperationalInternal":{"tmp":"tmp/draw-view_1.0.0_1784827725930_0.7860185138864635","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adamlockhart/draw-view","version":"1.0.1","description":"Real-time stroke smoothing and curve-fitting engine for canvas drawing","type":"module","main":"./dist/draw-view.umd.cjs","module":"./dist/draw-view.js","exports":{".":{"import":"./dist/draw-view.js","require":"./dist/draw-view.umd.cjs"}},"scripts":{"build":"vite build","dev":"vite build --watch"},"devDependencies":{"vite":"^6.3.5"},"license":"MIT","publishConfig":{"access":"public"},"_id":"@adamlockhart/draw-view@1.0.1","gitHead":"1fb800cca13493231f84ce50dc9b89a895a67b90","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-OoBrZpV7LH3+dLFNlUst1Q7Rgf9Dw7lZmlQe+Zg1pyrHOnVc0URqeLkZV148Mves8+Crml51Hwl899a8BmZ4Tw==","shasum":"9cd890c36ef4497e9d98e61f593d04788dc1df4d","tarball":"https://registry.npmjs.org/@adamlockhart/draw-view/-/draw-view-1.0.1.tgz","fileCount":4,"unpackedSize":19585,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEC2zTpJ30aGaRRQ/xpAjdntmtuwlJSIF5mCiDPQv013AiBLp8/J99sQCS/r+QUhwJJLmYVIqErv1B39ET/2eKTH5A=="}]},"_npmUser":{"name":"adamlockhart","email":"adamlockhart12@gmail.com"},"directories":{},"maintainers":[{"name":"adamlockhart","email":"adamlockhart12@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/draw-view_1.0.1_1784832985774_0.6708360940529161"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-23T17:28:45.831Z","modified":"2026-07-23T18:56:26.091Z","1.0.0":"2026-07-23T17:28:46.090Z","1.0.1":"2026-07-23T18:56:25.919Z"},"license":"MIT","description":"Real-time stroke smoothing and curve-fitting engine for canvas drawing","maintainers":[{"name":"adamlockhart","email":"adamlockhart12@gmail.com"}],"readme":"# @adamlockhart/draw-view\n\nReal-time stroke-smoothing and curve-fitting engine for HTML5 Canvas drawing.\n\n[Live demo](https://practicube.com/draw/index.html)\n\n## Install\n\n```sh\nnpm install @adamlockhart/draw-view\n```\n\n## Usage\n\n```js\nimport { DrawEngine } from '@adamlockhart/draw-view';\n\nconst canvas = document.querySelector('canvas');\nconst ctx = canvas.getContext('2d');\nconst engine = new DrawEngine({ ctx });\n\n// On pointer down:\nengine.strokeStart(x, y);\n\n// On pointer move:\nengine.strokeMove(x, y);\n\n// On pointer up:\nconst stroke = engine.strokeEnd();\n```\n\n## API\n\n### `new DrawEngine(options)`\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `ctx` | `CanvasRenderingContext2D` | required | Canvas context to draw on |\n| `strokeRadius` | `number` | `3` | Radius of the stroke |\n| `maxError` | `number` | `5` | Error tolerance for knot removal |\n| `color` | `{ r, g, b }` | `{ r: 0, g: 0, b: 0 }` | Stroke color |\n\n### Methods\n\n- `strokeStart(x, y)` — begin a stroke\n- `strokeMove(x, y)` — continue a stroke\n- `strokeEnd()` — finish a stroke, returns the completed stroke object\n- `strokeTap(x, y)` — draw a single dot\n- `setColor(r, g, b)` — change stroke color\n- `redraw()` — clear and re-render all strokes\n- `clear()` — clear canvas and reset document\n- `getDocument()` — get serializable document\n- `setDocument(doc)` — load and render a document\n- `popStroke()` — remove last stroke (undo)\n- `pushStroke(stroke)` — add a stroke back (redo)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}