{"_id":"@arkturian/canvas-engine","_rev":"2-2290d04db849ce632379a9b9e60eb69b","name":"@arkturian/canvas-engine","dist-tags":{"latest":"1.1.23"},"versions":{"1.0.0":{"name":"@arkturian/canvas-engine","version":"1.0.0","keywords":["canvas","rendering","engine","zoom","pan","viewport","layout","react","typescript","2d","graphics","interactive"],"author":{"name":"Arkturian","email":"hello@arkturian.com"},"license":"MIT","_id":"@arkturian/canvas-engine@1.0.0","maintainers":[{"name":"alexander_popovic","email":"apopovic.aut@gmail.com"}],"homepage":"https://github.com/apopovic77/canvas-engine#readme","bugs":{"url":"https://github.com/apopovic77/canvas-engine/issues"},"dist":{"shasum":"e2b19f296cad4c12a2d9fbf471196291eeb9d2e2","tarball":"https://registry.npmjs.org/@arkturian/canvas-engine/-/canvas-engine-1.0.0.tgz","fileCount":299,"integrity":"sha512-CyBWr8NLnP5p1roYZ+MHXI5A8stnDmKdDuqFkyA6OI2Kl3JBa6LVbaD0bHXBYoRckA8nAhglrR/0K+f3sETu3Q==","signatures":[{"sig":"MEQCIGcPhBoh0EXJuKhKQEXtVjZL124Egn9BtCkA1Hsdm3URAiA401bUy7s2siQgZJ0jxgMWrwTsbIZEl6RIjIauiMbHXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1590818},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5482c56945e7c5f3819c03da9f99d3ffcacc322f","scripts":{"dev":"tsc --watch","test":"echo \"No tests yet\" && exit 0","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"alexander_popovic","email":"apopovic.aut@gmail.com"},"repository":{"url":"git+https://github.com/apopovic77/canvas-engine.git","type":"git"},"_npmVersion":"11.6.0","description":"High-performance canvas-based rendering engine with zoom, pan, and layout system","directories":{},"_nodeVersion":"24.8.0","dependencies":{"arkturian-typescript-utils":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"~5.9.3","@types/react":"^19.1.16","@types/react-dom":"^19.1.9"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/canvas-engine_1.0.0_1763208161481_0.20133935905222833","host":"s3://npm-registry-packages-npm-production"}},"1.1.23":{"name":"@arkturian/canvas-engine","version":"1.1.23","description":"High-performance canvas-based rendering engine with zoom, pan, and layout system","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","test":"echo \"No tests yet\" && exit 0","prepublishOnly":"npm run build"},"keywords":["canvas","rendering","engine","zoom","pan","viewport","layout","react","typescript","2d","graphics","interactive"],"author":{"name":"Arkturian","email":"hello@arkturian.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/apopovic77/canvas-engine.git"},"publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"arkturian-typescript-utils":"^1.0.0"},"devDependencies":{"@types/react":"^19.1.16","@types/react-dom":"^19.1.9","typescript":"~5.9.3"},"_id":"@arkturian/canvas-engine@1.1.23","gitHead":"a4deb19706041799512893acff5cfc13976201ec","bugs":{"url":"https://github.com/apopovic77/canvas-engine/issues"},"homepage":"https://github.com/apopovic77/canvas-engine#readme","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-w4L5q6+CLslorh6t5pzMg9wXMOaq+2M0ljsOHjEvAIf7cH5PPFi5ItX4rr7UKjbYluk/yeHMlJbWRsgjEe7yWQ==","shasum":"b26e7252eeeed75c7535a4a42a47b1f4eff48338","tarball":"https://registry.npmjs.org/@arkturian/canvas-engine/-/canvas-engine-1.1.23.tgz","fileCount":424,"unpackedSize":1928456,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCZGXq6ioAp/eQ3N87WDvsTYHTqBROVI52v0xX9wTtrQIgOTs5lDzbBF/e26NLozmbe02sOw19vtGQk3fIWXeZqz0="}]},"_npmUser":{"name":"alexander_popovic","email":"apopovic.aut@gmail.com"},"directories":{},"maintainers":[{"name":"alexander_popovic","email":"apopovic.aut@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/canvas-engine_1.1.23_1779367835915_0.11266293374883807"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-15T12:02:41.420Z","modified":"2026-05-21T12:50:37.573Z","1.0.0":"2025-11-15T12:02:41.679Z","1.1.23":"2026-05-21T12:50:37.474Z"},"bugs":{"url":"https://github.com/apopovic77/canvas-engine/issues"},"author":{"name":"Arkturian","email":"hello@arkturian.com"},"license":"MIT","homepage":"https://github.com/apopovic77/canvas-engine#readme","keywords":["canvas","rendering","engine","zoom","pan","viewport","layout","react","typescript","2d","graphics","interactive"],"repository":{"type":"git","url":"git+https://github.com/apopovic77/canvas-engine.git"},"description":"High-performance canvas-based rendering engine with zoom, pan, and layout system","maintainers":[{"name":"alexander_popovic","email":"apopovic.aut@gmail.com"}],"readme":"# arkturian-canvas-engine\n\nHigh-performance canvas-based rendering engine with viewport transform, layout system, and interactive controls.\n\n## Features\n\n- **Canvas Renderer**: Optimized 2D canvas rendering with LOD support\n- **Viewport Transform**: Smooth zoom/pan with mouse wheel and touch gestures\n- **Layout System**: Flexible layout algorithms (Pivot, Hero modes)\n- **Interpolation**: Smooth property animations\n- **Touch Support**: Full gesture support (pinch-to-zoom, pan)\n- **TypeScript**: Fully typed API\n\n## Installation\n\n```bash\nnpm install arkturian-canvas-engine\n```\n\n## Quick Start\n\n```tsx\nimport {\n  ViewportTransform,\n  CanvasRenderer,\n  LayoutService\n} from 'arkturian-canvas-engine';\n\n// Initialize viewport\nconst canvas = document.getElementById('myCanvas') as HTMLCanvasElement;\nconst viewport = new ViewportTransform(canvas);\n\n// Initialize renderer\nconst renderer = new CanvasRenderer(canvas, products, viewport);\n\n// Render loop\nfunction render() {\n  viewport.update();\n  renderer.render();\n  requestAnimationFrame(render);\n}\nrender();\n```\n\n## Core APIs\n\n### ViewportTransform\nManages viewport zoom, pan, and bounds:\n\n```typescript\nconst viewport = new ViewportTransform(canvas);\nviewport.setContentBounds(bounds);\nviewport.reset(); // Fit to content\nviewport.centerOn(x, y, scale); // Center on position\n```\n\n### CanvasRenderer\nHigh-performance canvas rendering:\n\n```typescript\nconst renderer = new CanvasRenderer<Product>(\n  canvas,\n  products,\n  viewport,\n  layoutService,\n  viewportService,\n  onProductClick\n);\n```\n\n### LayoutService\nLayout orchestration system:\n\n```typescript\nconst layoutService = new LayoutService(engine);\nlayoutService.layout(products, viewport.viewportWidth, viewport.viewportHeight);\n```\n\n## Viewport Controls\n\n- **Zoom**: Mouse wheel or pinch gesture\n- **Pan**: Right-click drag, middle-click drag, or Ctrl+drag\n- **Touch**: Single finger pan, two-finger zoom\n\n## TypeScript\n\nFull TypeScript support with type definitions included.\n\n## License\n\nMIT\n\n## Author\n\nArkturian <hello@arkturian.com>\n","readmeFilename":"README.md"}