{"_id":"@adam26davidson/char-matrix-fx","_rev":"8-951cc6b1ae434c43a01662db242e91a3","name":"@adam26davidson/char-matrix-fx","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.1","_id":"@adam26davidson/char-matrix-fx@0.0.1","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"6e064746c8214694b79716004e76b3ce67aeeb68","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.1.tgz","fileCount":130,"integrity":"sha512-78jOogbT8KL8mWqqdogXDZuUjbFknOKUPh35kl9CKyxtL3vN6i0NC1mGwPpQ8/JlAZCwFHmGgTjG5YFobSUUrA==","signatures":[{"sig":"MEUCIB9mGPVfGWFKyHAwzAWfT/k3M008IAvQkzVwmeJ5rDYWAiEA6xUHmKWJTwW/hWDRpWAYGwv1bXHxrw122Ww6l7kocWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3218567},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"922a51e01522f71506e65ff0e81bf9a60d164dee","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"22.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.1_1774900838466_0.3376085359093126","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.2","_id":"@adam26davidson/char-matrix-fx@0.0.2","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"3844032a4d44541488ed03ae94ae1518acd95d3b","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.2.tgz","fileCount":130,"integrity":"sha512-m6Q1QQYfP6bY6qF/4EJ3v10QWthnBgkhz1i4ZZRYqhLn0dpEPxbfPf/+9eBSH42PnhxeHi9oNY6t91zEfR274A==","signatures":[{"sig":"MEUCIQC3Yy+r3L1ENCPS9CtCgwBiRB6QW9+00mgWReM8RlDSfgIgKQVUy6r13dx1e8Rlh1tTpxntmwPeidSDNl28J6olfLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3218571},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0533befdd5dc0ca4aa893917af58c4c8d1e29e29","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.4","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.2_1774985809659_0.8337155578124038","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.3","_id":"@adam26davidson/char-matrix-fx@0.0.3","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"66eac33de8f721a071f8a7d8e2ee54fbd508db3e","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.3.tgz","fileCount":42,"integrity":"sha512-oGccy5FYT+zKiVcJQClm7Tj3nC/ZFhHuR/vSBz+OWydj14v7UwCnQ/67/sh/UK7eET0Xnj6kwMb2aaEAz4Jblg==","signatures":[{"sig":"MEQCIB3zsI092+2/TxOACTf7UO1+3qdG42QRBmqNmBP2BTOyAiB/nKRz5astbT6Kulu18Pgf3hV3DEVU1AidWMELrjZK9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3784243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"df8ad5483ca261e5de6622664fb86313a1c97c41","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.7","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.3_1775196438128_0.027064076897273415","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.4","_id":"@adam26davidson/char-matrix-fx@0.0.4","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"55f20581a389141a475141c3759b5f1b35ee1f18","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.4.tgz","fileCount":42,"integrity":"sha512-3ZihTFy8IVTl5td5ecqu42XbMVqUziOOA4/yYZJnKV2j+y3kyeur8e/RoYeSGoJUfhTrps3V3FpGzasV9AIQCQ==","signatures":[{"sig":"MEQCIASbBRATzdJ5vge5037xPjqL0qu1EzD+FakjGGeGnHq3AiBKaCP/L4zDR+GKmCRxbNnM1gyq1Py++Ec+FSWh6FxDQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4046072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"95d22cc28be342885fc96185c1420d2dfce909cb","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.4","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.4_1775222170760_0.3857552078725115","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.5","_id":"@adam26davidson/char-matrix-fx@0.0.5","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"2946c5f2750379460faf839a8a628ddb87afd693","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.5.tgz","fileCount":42,"integrity":"sha512-wgbdEzpjL6NDCWsjEeAZhAqe+3WzC9Mpv9SMm/hlnuiS5HT5RtFHh/DP1ZYA3zCR4D73OpFIaij7jcf+5aodeg==","signatures":[{"sig":"MEQCIBdLISASuIBuG19jL5I4uhzGl+JYU2wXKRCD+dsMZrrhAiAY0jO0QUFbJdaf0ooYkBSouuTAeIp4c4M35kcz2nTkgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4046444},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"925649612c024145a7386f51507c36cd865e3763","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.7","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.5_1775241919151_0.9916099569707977","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.6","_id":"@adam26davidson/char-matrix-fx@0.0.6","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"23d54ffbc99dd50092c8ad6fbf030f19186bcb4e","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.6.tgz","fileCount":43,"integrity":"sha512-0KT4uXfqMZQoBrhzRaJJcq9upgkO1MjuG4ZuBzqz8KNvM5VmuLtlk1h2O3wj+0AhHHYnC3ZUMovcaVs22a8mSA==","signatures":[{"sig":"MEYCIQCSdKSsvv/1ftAXUSJ6iDkwu0V5mLeDjl16Bk1YBjV2NQIhAIQaxfWRaPXJ3heI8OmAtfjgwvBblo4/l5N5oU84vJ2m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4048152},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ec9720a0be1c849faa4e6aa8ed76b7a345e2db7d","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.7","description":"Animations, physics simulation, and surface transforms for [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix).","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.6_1775291677771_0.9627942292453548","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@adam26davidson/char-matrix-fx","version":"0.0.7","_id":"@adam26davidson/char-matrix-fx@0.0.7","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"dist":{"shasum":"2a6024d3259735781e53a0a3ba12ca011c196b43","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-0.0.7.tgz","fileCount":43,"integrity":"sha512-quAdczGFRYOd2URpjm025QaLcZ+yHzv1D7MRuBi//9qQ0Yv6xcN4vEK/P4fzO01Otbz60n0+9sNvWULY2W7ftQ==","signatures":[{"sig":"MEUCICchjxSE4qbNmS/EvTygIT17qjztcU792/tmcv4Oi+QhAiEApPnHa6vS1Fd43l8GA05jc9qPBxHTwO+EmZIdAW8vRXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4049468},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7dd34bdaa918ff5eeec2b62f6e47ba82f6e95305","scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"_npmVersion":"10.9.7","description":"Animations, physics simulation, and surface transforms for [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix).","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.2.2"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"_npmOperationalInternal":{"tmp":"tmp/char-matrix-fx_0.0.7_1775413300757_0.17177496862152308","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@adam26davidson/char-matrix-fx","version":"1.0.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && tsc","clean":"rm -rf dist"},"peerDependencies":{"@adam26davidson/char-matrix":"*"},"devDependencies":{"typescript":"^5.2.2"},"_id":"@adam26davidson/char-matrix-fx@1.0.0","gitHead":"483a627b55a2cb30dd5030a3e0b84653e9d149f2","description":"Animations, physics simulation, and surface transforms for [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix).","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-aUgmvS2a3AKcEqYA6WcOswXCZ9UjqQ1kWSEUPgG2sAV4irrpDAvRKulpFxSJA6oFhwvk1x0LQ2fApn3ju6HrNg==","shasum":"3c84a44b66b6806124584594261d1a6a9e26ea44","tarball":"https://registry.npmjs.org/@adam26davidson/char-matrix-fx/-/char-matrix-fx-1.0.0.tgz","fileCount":43,"unpackedSize":4049468,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDQyunHkehYZr9G7UIARO89kDSvhRsT7D4BOTwVElaKWAiARy8aw/g2MnZXfiB+IxnhEo1Qk/LVsn9hgMiNIJkuGiw=="}]},"_npmUser":{"name":"adam26davidson","email":"adam26davidson@gmail.com"},"directories":{},"maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/char-matrix-fx_1.0.0_1776010606824_0.23450061280782708"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-30T20:00:38.382Z","modified":"2026-04-12T16:16:47.173Z","0.0.1":"2026-03-30T20:00:38.668Z","0.0.2":"2026-03-31T19:36:49.922Z","0.0.3":"2026-04-03T06:07:18.328Z","0.0.4":"2026-04-03T13:16:11.011Z","0.0.5":"2026-04-03T18:45:19.465Z","0.0.6":"2026-04-04T08:34:38.000Z","0.0.7":"2026-04-05T18:21:41.012Z","1.0.0":"2026-04-12T16:16:47.058Z"},"description":"Animations, physics simulation, and surface transforms for [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix).","maintainers":[{"name":"adam26davidson","email":"adam26davidson@gmail.com"}],"readme":"# @adam26davidson/char-matrix-fx\n\nAnimations, physics simulation, and surface transforms for [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix).\n\n## Features\n\n- **Animation system** — `DiagonalSwipeAnimation`, `RowTracerAnimation`, and extensible base classes (`Animation`, `HeadBasedAnimation`) for building custom entrance/exit effects\n- **DefaultAnimationHandler** — Drop-in animation manager for elements with configurable animation types\n- **SpringLattice** — 2D spring-mesh physics simulation for mouse/touch-reactive character displacement\n- **SpringLatticeSurfaceTransform** — Applies spring lattice displacement as a post-render surface transform\n- **Character similarity** — Precomputed visual similarity data for smooth character morphing effects\n\n## Install\n\n```bash\nnpm install @adam26davidson/char-matrix-fx @adam26davidson/char-matrix\n```\n\n## Usage\n\nAdd animations to elements:\n\n```ts\nimport { DefaultAnimationHandler } from \"@adam26davidson/char-matrix-fx\";\n\nconst handler = new DefaultAnimationHandler(null, view, {\n  entrance: {\n    type: \"rowTracer\",\n    config: { tailLength: 20, headSpeed: 3, randomizationRange: 5, use: \"entrance\" },\n  },\n  exit: {\n    type: \"diagonalSwipe\",\n    config: { slant: 4, tailLength: 30, headSpeed: 3, randomizationRange: 5, use: \"exit\" },\n  },\n});\n\nconst element = new TextElement({\n  key: \"greeting\",\n  view: myRenderTarget,\n  text: \"Hello!\",\n  animationHandler: handler,\n});\nhandler.setElement(element);\n```\n\nAdd spring lattice physics:\n\n```ts\nimport {\n  SpringLattice,\n  SpringLatticeSurfaceTransform,\n} from \"@adam26davidson/char-matrix-fx\";\n\nconst lattice = new SpringLattice();\nlattice.initialize(width, height, 3000);\nmyView.addSurfaceTransform(new SpringLatticeSurfaceTransform(lattice));\n\n// Update physics on a 20ms interval\nsetInterval(() => lattice.update(), 20);\n\n// Set attractor position on mouse interaction\nlattice.setAttractorPosition(x, y);\nlattice.setAttractorOn();\n```\n\n## Peer dependencies\n\n- `@adam26davidson/char-matrix`\n\n## Related packages\n\n- [`@adam26davidson/char-matrix`](https://www.npmjs.com/package/@adam26davidson/char-matrix) — Core layout and rendering engine\n- [`@adam26davidson/char-matrix-react`](https://www.npmjs.com/package/@adam26davidson/char-matrix-react) — Embed React components inside a character matrix layout\n- [`@adam26davidson/char-matrix-react-renderer`](https://www.npmjs.com/package/@adam26davidson/char-matrix-react-renderer) — Declarative React JSX renderer for char-matrix element trees\n","readmeFilename":"README.md"}