{"_id":"@codewithahsan/ngx-quill-ink","_rev":"2-0bab1785ff6445b0c06b2d6ab479cf07","name":"@codewithahsan/ngx-quill-ink","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@codewithahsan/ngx-quill-ink","version":"0.1.0","keywords":["handwriting","canvas","animation","streaming","llm","ink","angular","quill"],"license":"MIT","_id":"@codewithahsan/ngx-quill-ink@0.1.0","maintainers":[{"name":"ahsanayaz","email":"ahsan.ubitian@gmail.com"}],"homepage":"https://github.com/codewithahsan/ngx-quill-ink#readme","bugs":{"url":"https://github.com/codewithahsan/ngx-quill-ink/issues"},"dist":{"shasum":"6dd3aeb509f1fc9a36b7f26ba91d9b7627056d2d","tarball":"https://registry.npmjs.org/@codewithahsan/ngx-quill-ink/-/ngx-quill-ink-0.1.0.tgz","fileCount":6,"integrity":"sha512-8pt0XvQHjVeC4pCk3af7DtBJBUimi0ZrZxctosb/oReGjKEVPQjC5nqLCBg28F2w8AwD2Q1qnCS7X7UkgywSag==","signatures":[{"sig":"MEUCIQC0v2oH573Br0OmbQKKYtRUXUSihfsBmYgDG3ecxpqOJwIgT3TsxcVKssl+W4jbJ0YfDv+GfEJVvg6MYAqz7xEvtPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40460},"type":"module","module":"fesm2022/codewithahsan-ngx-quill-ink.mjs","exports":{".":{"types":"./types/codewithahsan-ngx-quill-ink.d.ts","default":"./fesm2022/codewithahsan-ngx-quill-ink.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"77f67de900088b46a3caf29a37f0a2fc812d1bda","typings":"types/codewithahsan-ngx-quill-ink.d.ts","_npmUser":{"name":"ahsanayaz","email":"ahsan.ubitian@gmail.com"},"repository":{"url":"git+https://github.com/codewithahsan/ngx-quill-ink.git","type":"git"},"_npmVersion":"11.13.0","description":"Angular wrapper for quill-ink: streaming text as animated handwriting, signals-first.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"tslib":"^2.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^22.0.0","@codewithahsan/quill-ink-core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ngx-quill-ink_0.1.0_1784929606886_0.6957649916448816","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@codewithahsan/ngx-quill-ink","version":"0.1.1","peerDependencies":{"@angular/core":"^22.0.0","@codewithahsan/quill-ink-core":"^0.1.0"},"sideEffects":false,"license":"MIT","description":"Angular wrapper for quill-ink: streaming text as animated handwriting, signals-first.","repository":{"type":"git","url":"git+https://github.com/AhsanAyaz/ngx-quill-ink.git"},"bugs":{"url":"https://github.com/AhsanAyaz/ngx-quill-ink/issues"},"homepage":"https://github.com/AhsanAyaz/ngx-quill-ink#readme","publishConfig":{"access":"public"},"keywords":["handwriting","canvas","animation","streaming","llm","ink","angular","quill"],"module":"fesm2022/codewithahsan-ngx-quill-ink.mjs","typings":"types/codewithahsan-ngx-quill-ink.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./types/codewithahsan-ngx-quill-ink.d.ts","default":"./fesm2022/codewithahsan-ngx-quill-ink.mjs"}},"type":"module","dependencies":{"tslib":"^2.3.0"},"gitHead":"aafaadc022234c77654812c4f411d942607d8ea6","_id":"@codewithahsan/ngx-quill-ink@0.1.1","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-EkZ8i8WYVt/E07yjpZ6GH+DXVenxp2zf9NNzFH4DwEuLxoCnBd1ERqu3yJms26DZXjFQQq/BGUJ/L2Vdc+RO3g==","shasum":"a3c50ba9d31eb0249b9194eb24f31f98e667de50","tarball":"https://registry.npmjs.org/@codewithahsan/ngx-quill-ink/-/ngx-quill-ink-0.1.1.tgz","fileCount":6,"unpackedSize":40448,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDttgbUHZHVRwqBdMfTCLhisshZQVXfELxNoSIIR6chuQIgPzCYPqdAZn5e9ZFbSDu+X1wOURGkyjN2tgmgTa8990k="}]},"_npmUser":{"name":"ahsanayaz","email":"ahsan.ubitian@gmail.com"},"directories":{},"maintainers":[{"name":"ahsanayaz","email":"ahsan.ubitian@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ngx-quill-ink_0.1.1_1784930657744_0.16099480363999064"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-24T21:46:46.712Z","modified":"2026-07-24T22:04:18.080Z","0.1.0":"2026-07-24T21:46:47.037Z","0.1.1":"2026-07-24T22:04:17.906Z"},"bugs":{"url":"https://github.com/AhsanAyaz/ngx-quill-ink/issues"},"license":"MIT","homepage":"https://github.com/AhsanAyaz/ngx-quill-ink#readme","keywords":["handwriting","canvas","animation","streaming","llm","ink","angular","quill"],"repository":{"type":"git","url":"git+https://github.com/AhsanAyaz/ngx-quill-ink.git"},"description":"Angular wrapper for quill-ink: streaming text as animated handwriting, signals-first.","maintainers":[{"name":"ahsanayaz","email":"ahsan.ubitian@gmail.com"}],"readme":"# @codewithahsan/ngx-quill-ink\n\nAngular wrapper for [quill-ink](https://www.npmjs.com/package/@codewithahsan/quill-ink-core): **streaming text as animated handwriting**, signals-first, zoneless-ready, SSR-safe.\n\n## Install\n\n```bash\nnpm i @codewithahsan/ngx-quill-ink @codewithahsan/quill-ink-core @codewithahsan/quill-ink-fonts\n```\n\n## Setup\n\n```ts\nimport { provideQuillInk } from '@codewithahsan/ngx-quill-ink';\nimport { caveat } from '@codewithahsan/quill-ink-fonts/caveat';\n\nexport const appConfig: ApplicationConfig = {\n  providers: [\n    provideQuillInk({ font: 'caveat', inkColor: '#1a2b4a', packs: [caveat] }),\n  ],\n};\n```\n\n## Use\n\n```html\n<!-- signal text: growing values animate only the appended suffix -->\n<quill-ink [text]=\"answer()\" [options]=\"{ penSpeed: 1100 }\" (writeDone)=\"onDone()\" />\n\n<!-- or feed a token stream (AsyncIterable or Observable of string) -->\n<quill-ink [stream]=\"tokenStream\" />\n\n<!-- capture handwriting for a vision LLM -->\n<quill-ink [captureMode]=\"true\" (inkCommitted)=\"onInk($event)\" />\n```\n\n`[text]` diffs by common prefix: perfect for `resource()`/streaming HTTP —\neach signal update writes only the new suffix. A shrink or mid-string edit\ntriggers a clean rewrite.\n\n- **Zoneless**: no NgZone dependency anywhere.\n- **SSR**: the surface initializes in `afterNextRender`; server renders a\n  plain `<canvas>` and hydrates cleanly.\n- `[text]` and `[stream]` are mutually exclusive (dev-mode error).\n\n## Out of scope for v1\n\nRTL and CJK scripts, stylus pressure (v2), React/Vue wrappers (core is\nframework-free — contributions welcome).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}