{"_id":"@underlying/scroll","_rev":"27-6367e348bb2debdb5d88c93fd233cb3f","name":"@underlying/scroll","dist-tags":{"beta":"1.2.0-beta.8","latest":"1.2.1"},"versions":{"0.1.0-beta.1":{"name":"@underlying/scroll","version":"0.1.0-beta.1","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.1","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"1d4336bb28b73df36b014c5ad5ddf049e53fd978","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.1.tgz","fileCount":35,"integrity":"sha512-47qWpKE+YCowJ7tM4I2Hl9tykckaCPA6LEDiWgBrIgRcey2sjNv5ysUh5lQZsIQvmO3Tb4LD9eFoG+3L2F/wqg==","signatures":[{"sig":"MEUCIDzaZ9InLKM1X4WKZRqYl6GCigLZ5exg6NiYHVZDqESPAiEArA8bJTq8sE/Ad766GODhJwJQua2kHdKfhJPtM+ReqN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174967},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"225fd3a4775ff5cbb34edd8454ef69ee0ed99deb","scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"},"deprecated":"broken dependency spec (workspace:*); use 0.1.0-beta.2","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"10.9.8","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","dependencies":{"@underlying/core":"workspace:*"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.1_1781428622902_0.8461447861691171","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@underlying/scroll","version":"0.1.0-beta.2","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.2","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"47a6bd043ed8c10c78631a557c805a9666651f6a","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.2.tgz","fileCount":37,"integrity":"sha512-qLTrbJhhRLI/BzpQFWB4vXHc0cPeJrmPd2P44reEcUlNwIMIzFCGFjaN/L3EkuR2Zlx+JMRLUVc9nLXeM3J4cA==","signatures":[{"sig":"MEYCIQCoH8FUlGFpi7uRK+8L5h5vdmyTpIZVxZDsSf//TtHrSgIhALcalpTf3oPDcXd/LrgLjoGCsa533/B8nQgYStLfiXkE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181928},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/a1bddda506c12260e32d915300d56d8d/underlying-scroll-0.1.0-beta.2.tgz","_integrity":"sha512-qLTrbJhhRLI/BzpQFWB4vXHc0cPeJrmPd2P44reEcUlNwIMIzFCGFjaN/L3EkuR2Zlx+JMRLUVc9nLXeM3J4cA==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.2_1781430894232_0.326582729809878","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@underlying/scroll","version":"0.1.0-beta.3","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.3","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"ffd8e113153b5862fc7e1471c297cf36c423987e","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.3.tgz","fileCount":37,"integrity":"sha512-ZYiS/Z8WKDEpGXXEKyHNpVBLWWWXxg6YR6XiTuuSbljYS9TsDzQ0MW3LqMKrKqWdezEIAeA+n/yn/xrcXekh7A==","signatures":[{"sig":"MEYCIQDe4B9jrx2GeRoS6vBokkNCjobJIfNpwANVszEmUMss7AIhAP6xRSi6v7EqXMTGrvZ5UrMAsT8TS3DA4vyRwfWeKBo6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181928},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/b16d9886d061cdd6a8789793c93caa16/underlying-scroll-0.1.0-beta.3.tgz","_integrity":"sha512-ZYiS/Z8WKDEpGXXEKyHNpVBLWWWXxg6YR6XiTuuSbljYS9TsDzQ0MW3LqMKrKqWdezEIAeA+n/yn/xrcXekh7A==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.3_1781463121098_0.9305850584471089","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.4":{"name":"@underlying/scroll","version":"0.1.0-beta.4","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.4","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"37439795e45cf4cbf5f5a00ac5c1200d31624a4f","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.4.tgz","fileCount":37,"integrity":"sha512-lG2IAPi0s1HrzlwN8COrduFqc9tjc9MTJaX5JPjeVLdbV3LxIRcL6H47dEUNfXMsGDKoi4oxnHi7mWu2Yqzuog==","signatures":[{"sig":"MEUCIGragcxCovVpAqLxkj6wbNzxdIIFK3YavOjFOJ2eDPxOAiEAvBNX81eZFXqXc7vfmGYRFF6UwXXU7w4bLXjt9hQPtr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181928},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/7b855a81c5bcc836426ad76e5da3bd0a/underlying-scroll-0.1.0-beta.4.tgz","_integrity":"sha512-lG2IAPi0s1HrzlwN8COrduFqc9tjc9MTJaX5JPjeVLdbV3LxIRcL6H47dEUNfXMsGDKoi4oxnHi7mWu2Yqzuog==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.4_1781556879889_0.12961024310359015","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.5":{"name":"@underlying/scroll","version":"0.1.0-beta.5","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.5","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"5df401f1a0b929823ec874e20eb859fa78c4e26c","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.5.tgz","fileCount":37,"integrity":"sha512-iMiqvaxjww/M5d50sv9BNNbGjMs4FeFrjQ2ZSVIbtbw1L/1J+/pvl4jDyHWfjrQxgfN64DRemrH+dIiqAyTGFA==","signatures":[{"sig":"MEQCIBlxk823TbeORcXehhU7+pbujl/Sg3j9bbrlc9qOdbLAAiBUQoWHkTDJR4XSGZRrnrlY01XsFFnvkBiikTCVfbAJZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181928},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/9eaeacbe619e6edfc5b428f656640b7c/underlying-scroll-0.1.0-beta.5.tgz","_integrity":"sha512-iMiqvaxjww/M5d50sv9BNNbGjMs4FeFrjQ2ZSVIbtbw1L/1J+/pvl4jDyHWfjrQxgfN64DRemrH+dIiqAyTGFA==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.5_1781637049465_0.8426854138665825","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.6":{"name":"@underlying/scroll","version":"0.1.0-beta.6","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.6","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"f1a9d01d35b14858e4d0b72b56b9b6f2a4503320","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.6.tgz","fileCount":37,"integrity":"sha512-DdQVdM6E/Wjl9pR7YraHOOK3QYCZl/z093n7GAzHz8/WbzV6otn83PVgMnpdPT+0jyJ3hWmICohUOU88uf3v5A==","signatures":[{"sig":"MEUCIQD5sgW3FZKjAmX1UFZO1ycrMfzuCD0mrTMNUFPczn8JWQIgVDX4xk0KhtHiMM5proNJ101EzY7u3bApFgS94dGu8i4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":181928},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/c8d36ea27ec9a29008f93f5da57872e0/underlying-scroll-0.1.0-beta.6.tgz","_integrity":"sha512-DdQVdM6E/Wjl9pR7YraHOOK3QYCZl/z093n7GAzHz8/WbzV6otn83PVgMnpdPT+0jyJ3hWmICohUOU88uf3v5A==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.6_1781640224393_0.8590188148927436","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.7":{"name":"@underlying/scroll","version":"0.1.0-beta.7","keywords":["animation","scroll","scrolltrigger","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.7","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"ab7aae32ff8ddb9598e095698ae0129c1a5dd95b","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.7.tgz","fileCount":41,"integrity":"sha512-FFLpXHsX4MdY8q6DEP50dTCM1BQWALE2i+2jqAVjLfgpv+lQ4tCEbSetk1esKk49O3GUvh/n4bsYHIjY2PoxuQ==","signatures":[{"sig":"MEUCIQCzd1Vca0Bm12zOVnXAP2gY0SzIc30H/oVW8KsYh4C6OgIgQ+mLriQxvR7tZ8ty80sDRhsx7of0OIXWofKOMKaUaUI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":247327},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/4310112f2c2f9f9829150bd9bfc0ff55/underlying-scroll-0.1.0-beta.7.tgz","_integrity":"sha512-FFLpXHsX4MdY8q6DEP50dTCM1BQWALE2i+2jqAVjLfgpv+lQ4tCEbSetk1esKk49O3GUvh/n4bsYHIjY2PoxuQ==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.7_1781695950114_0.8591190250469558","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.8":{"name":"@underlying/scroll","version":"0.1.0-beta.8","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@0.1.0-beta.8","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"8abd6febcb43eca8114da1e11fdc005dff412a00","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-0.1.0-beta.8.tgz","fileCount":41,"integrity":"sha512-SXULrRbsEQ25CRMbavvlhcQ2qG7Zmr2NSSh950WANgZv5ONLWBH6p2whfJMBGK7VopCiJJeq75hTYzUyX29/Rg==","signatures":[{"sig":"MEUCIQDCEAF1YDaExjRKM+rAK9nAfZtaEzI2SErfXZfjAihbJwIgLrK+JG2t2GlrCxAYtw0/eoLbiPd9o3ZAYSFBIZePWL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@0.1.0-beta.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":247258},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-0.1.0-beta.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/81c8c0e6ea28d1209b7e6b08b2cf1bf5/underlying-scroll-0.1.0-beta.8.tgz","_integrity":"sha512-SXULrRbsEQ25CRMbavvlhcQ2qG7Zmr2NSSh950WANgZv5ONLWBH6p2whfJMBGK7VopCiJJeq75hTYzUyX29/Rg==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"0.1.0-beta.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_0.1.0-beta.8_1781697226706_0.44958423410818926","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@underlying/scroll","version":"1.0.0","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.0.0","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"1b68e03f35cf447432688ea65e37faf44d7bff9e","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.0.0.tgz","fileCount":41,"integrity":"sha512-O1RrIhDkHKLo2frV5TojarTD72Zafi9ItxOnPVp5wKWWxalmMPfAiJmfUqQWRZ8Pi4mcXfNYKlD/z9JFRbdtGQ==","signatures":[{"sig":"MEQCIBIBZaMspV982HEbGsAi6w/Ow33U+MEAcWBoLVa3lY+vAiA0dktJdbqYq3jg69PGVVEM3daeBZyRC5ima6EjMyolWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":249977},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/f45f7bf18f99a583ec26d1df967aacf4/underlying-scroll-1.0.0.tgz","_integrity":"sha512-O1RrIhDkHKLo2frV5TojarTD72Zafi9ItxOnPVp5wKWWxalmMPfAiJmfUqQWRZ8Pi4mcXfNYKlD/z9JFRbdtGQ==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"1.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.0.0_1781729902508_0.44558142637319076","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.0":{"name":"@underlying/scroll","version":"1.1.0-beta.0","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0-beta.0","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"5d4e8a2fb87410d914859f6de07cbbf855240733","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0-beta.0.tgz","fileCount":43,"integrity":"sha512-Upot081zF7KUHGT25qf3JOOD9ADtHkIZ7hGjwK6/glabA3uf59nQTVbcFnUXjxWRgentBGh9p8KGY/ItX441PQ==","signatures":[{"sig":"MEYCIQDtKLrPPXxDZrwE/BONsIoOiIYdjZWjPRH3t/lyPRdB7wIhALgzlq4caUI2+eS4QeHU60FS+wZYXx0lXqIWQEqBHdPx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0-beta.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269235},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0-beta.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/b8799189e5fee42eef4c735280fa2eec/underlying-scroll-1.1.0-beta.0.tgz","_integrity":"sha512-Upot081zF7KUHGT25qf3JOOD9ADtHkIZ7hGjwK6/glabA3uf59nQTVbcFnUXjxWRgentBGh9p8KGY/ItX441PQ==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"1.1.0-beta.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0-beta.0_1781812694496_0.540882443769076","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.1":{"name":"@underlying/scroll","version":"1.1.0-beta.1","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0-beta.1","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"40d038b2d734adcf7d8570c76c982593a94b035c","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0-beta.1.tgz","fileCount":45,"integrity":"sha512-9r7/YIEjO4NIe65TcqUJaKJQeXXnD8Fhq1FV87bb0kQP7dEHGcZomxAzvUo72D78e5a6EOAKEDPgE24V6UD+Yg==","signatures":[{"sig":"MEQCICiuTKj50IREcqCSc+ok9IJLmy8ukNJ79K/kWRHvWPouAiAA+U/LQk90Uk5dUW3sXK2YiTWVyf4XTIo3BFHGpFzdew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":327297},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0-beta.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/1a714fb9487365ad828439817c60b71e/underlying-scroll-1.1.0-beta.1.tgz","_integrity":"sha512-9r7/YIEjO4NIe65TcqUJaKJQeXXnD8Fhq1FV87bb0kQP7dEHGcZomxAzvUo72D78e5a6EOAKEDPgE24V6UD+Yg==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"1.1.0-beta.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0-beta.1_1781948030662_0.5685121477445028","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.2":{"name":"@underlying/scroll","version":"1.1.0-beta.2","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0-beta.2","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"2093cf10333386b45af9c9aaaff18d2a39f6cada","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0-beta.2.tgz","fileCount":47,"integrity":"sha512-wzq2R7Vm8CyWCjwHuqd3ZHq8gr8WWykaVNhgRVYPvlreig83Nl9m7pzbdjyuiHRfsdIBTBTROk76AvfFofPkgg==","signatures":[{"sig":"MEYCIQC3+IjOqEiWJW1hnFaRtIce7FVATSC5aXpu/dfv/QjVqwIhAKG4uF3UImKd/BVB9dmYvfDMvHFVS+1q2ZLDd+OPfIMY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0-beta.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/834208f02834e8a92de50a7e8c9dc463/underlying-scroll-1.1.0-beta.2.tgz","_integrity":"sha512-wzq2R7Vm8CyWCjwHuqd3ZHq8gr8WWykaVNhgRVYPvlreig83Nl9m7pzbdjyuiHRfsdIBTBTROk76AvfFofPkgg==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"1.1.0-beta.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0-beta.2_1781950645047_0.9193148131746951","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.3":{"name":"@underlying/scroll","version":"1.1.0-beta.3","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0-beta.3","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"2525bdcaf81544c5bf79145eeb996d56781c9282","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0-beta.3.tgz","fileCount":47,"integrity":"sha512-fkT/fEROj4kDPCPC638ulDXzRtLu8rDuTYyETHp8jtNGvizng2KjjXfBS9qhl9aVolgjeIZApuzBx5modsGZOw==","signatures":[{"sig":"MEYCIQDNKUMs37MxLwUuGAEAkfIcMedTRCk2ricihmnuDz6IVgIhANzQp9AkNM776YB+uLbMXfH0AMUlNzU1BkqXBInCT+M+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0-beta.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0-beta.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/cd6bff69040a03834aa0b2e460620a78/underlying-scroll-1.1.0-beta.3.tgz","_integrity":"sha512-fkT/fEROj4kDPCPC638ulDXzRtLu8rDuTYyETHp8jtNGvizng2KjjXfBS9qhl9aVolgjeIZApuzBx5modsGZOw==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@underlying/core":"1.1.0-beta.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0-beta.3_1781962916573_0.9148246248756653","host":"s3://npm-registry-packages-npm-production"}},"1.1.0-beta.4":{"name":"@underlying/scroll","version":"1.1.0-beta.4","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0-beta.4","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"460fb32a8043eeba051f0f653b6512033c01165e","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0-beta.4.tgz","fileCount":47,"integrity":"sha512-prhJziloNNxR/R9zQeewphGvuZ3aL7c7539iFwaqBFS1Ltyo98LHWO/etynKuEvEqYEtJ+mALz4p0o/BClQ+1w==","signatures":[{"sig":"MEYCIQDJfMJ7HcEne6hUCQf84dgpYG9F1FUkTpnzXbyvBSGP3wIhAJvrhaglJRGF0X7xeIYv2DmDQne9C2oB15Q2znp+dbAh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0-beta.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0-beta.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/7a61e83e6603580d03b6427a8340b411/underlying-scroll-1.1.0-beta.4.tgz","_integrity":"sha512-prhJziloNNxR/R9zQeewphGvuZ3aL7c7539iFwaqBFS1Ltyo98LHWO/etynKuEvEqYEtJ+mALz4p0o/BClQ+1w==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@underlying/core":"1.1.0-beta.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0-beta.4_1782504867405_0.655822285283469","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@underlying/scroll","version":"1.1.0","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.1.0","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"a18e8f6988bef7444048bd79af0b1ae46c3b07dc","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.1.0.tgz","fileCount":47,"integrity":"sha512-UF1huAxpJATBJWC8v3qSOK7ZJklFldVZxqSLQOr1D4ORzy+/2CWaPIwLGce2Pdbb5R8IqulzOy91PWZXnlCY5A==","signatures":[{"sig":"MEUCIAXHOkun7TbjXBapPCSKHeM6nrYi4zsqz+AuD4sr8q6nAiEAjgqyO8EXs/XoM71uv9Zx0h4vQIQPAWslpsD3OmD1bJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363225},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/09b8b1934da1974492baa8908928d895/underlying-scroll-1.1.0.tgz","_integrity":"sha512-UF1huAxpJATBJWC8v3qSOK7ZJklFldVZxqSLQOr1D4ORzy+/2CWaPIwLGce2Pdbb5R8IqulzOy91PWZXnlCY5A==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@underlying/core":"1.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.1.0_1782505556729_0.3995455384336062","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.0":{"name":"@underlying/scroll","version":"1.2.0-beta.0","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.0","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"f8d91f31a3cbe782603cf5da387569b4cdaf2db8","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.0.tgz","fileCount":47,"integrity":"sha512-ApBDEPuybFaovKD8m78kTLE4ODEygpFoq44bDUtVt/79zk+B46yMAXiosgG6lHspheySTt6wZC01ZUUFCakhtw==","signatures":[{"sig":"MEUCIAt8eH12l567iT4zH7Cz7bV1S48RXEvD9SOa4l5xAJAyAiEAl4kkAGJPk1N2pg+tLHLOxANWg+g/ud5LEyS5pJmTs9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/f3002a8ca39afdd0ecc60e05adf13743/underlying-scroll-1.2.0-beta.0.tgz","_integrity":"sha512-ApBDEPuybFaovKD8m78kTLE4ODEygpFoq44bDUtVt/79zk+B46yMAXiosgG6lHspheySTt6wZC01ZUUFCakhtw==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@underlying/core":"1.2.0-beta.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.0_1782582110970_0.38864013567432076","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.1":{"name":"@underlying/scroll","version":"1.2.0-beta.1","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.1","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"eaca731fb3fa8224f443fe23f8f25e09fa238c00","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.1.tgz","fileCount":47,"integrity":"sha512-kqreND+ETcCq+bTj1cQ6yNGHmALufbJE2aHqQrDCG0FULo3OK/Oj7MwmtWowgroPl7ou88AHe32kKjJUirnO3w==","signatures":[{"sig":"MEUCIQDSrYFh34MAgrFtrKSTD753fLr7DrqkTYJGDVeriIuWAwIgUtxkkWOa9dHBH+0/GOiiyNQP/nST1SspX24NQA2qDAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/7769f984ce6dbdbbfa719465a5b62110/underlying-scroll-1.2.0-beta.1.tgz","_integrity":"sha512-kqreND+ETcCq+bTj1cQ6yNGHmALufbJE2aHqQrDCG0FULo3OK/Oj7MwmtWowgroPl7ou88AHe32kKjJUirnO3w==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@underlying/core":"1.2.0-beta.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.1_1782588064961_0.6115384000119422","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.2":{"name":"@underlying/scroll","version":"1.2.0-beta.2","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.2","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"fe58e1ffd59c1049ad1440922f4b6adcc7cc30cd","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.2.tgz","fileCount":47,"integrity":"sha512-5M5w80OleM1TOTJZjSCIeUbndTmR/EmpLR28aS6Rru5JAwaX6az4XU16oFcTsBDgwb3vCRxMRHcqBQF4+dRlMw==","signatures":[{"sig":"MEUCIFeKqls75Q6gEbfhETEehjJ4p4GIDe5GuD8TH5akNWXcAiEAjBnk+nTUXzQwYTXdLYBUDgom0lDJ9Ze6GoaM8tpaHgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/cec94adf5fb6645f23499ed6594ef7b4/underlying-scroll-1.2.0-beta.2.tgz","_integrity":"sha512-5M5w80OleM1TOTJZjSCIeUbndTmR/EmpLR28aS6Rru5JAwaX6az4XU16oFcTsBDgwb3vCRxMRHcqBQF4+dRlMw==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.17.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.17.0","dependencies":{"@underlying/core":"1.2.0-beta.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.2_1782647477532_0.9087555967192349","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.3":{"name":"@underlying/scroll","version":"1.2.0-beta.3","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.3","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"da447baeb433c7f0a03fdc6cf26c791779cc367c","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.3.tgz","fileCount":47,"integrity":"sha512-LXwb5DG8rG6/wElIi/Kr6UUSNfM8ax6+0jsJnfNs16BmIpvrZM5HKTWeMXy41XTEUV5jJ6ORDon+xSL57gl02w==","signatures":[{"sig":"MEUCIBFq6em5gL7n4j6lhcj3POfeQyKpAU4NKYiz6SxX1k1/AiEAurFZayXlMwVig7EZ5+/KtTv5wH8QO77cZeClTmPtm/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/95dc1d465c29ba59d7468e7542dc26ff/underlying-scroll-1.2.0-beta.3.tgz","_integrity":"sha512-LXwb5DG8rG6/wElIi/Kr6UUSNfM8ax6+0jsJnfNs16BmIpvrZM5HKTWeMXy41XTEUV5jJ6ORDon+xSL57gl02w==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.3_1783164972683_0.044453457424295406","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.4":{"name":"@underlying/scroll","version":"1.2.0-beta.4","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.4","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"aee2acd2647ff10ef27e8efb56ec918b02ecb8c6","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.4.tgz","fileCount":47,"integrity":"sha512-erbwjL4si7gYw+1SFp8+efvLVLsMh/it9mAxnYcxkDwIztfbLpcnMfvr2ZbW9J8t2fODY1q5t/VfNUikFA5hLQ==","signatures":[{"sig":"MEUCIQDZagS8QCixyBylvvDoa9ffmaVnKTLRYq6DTQi2Z4NHigIgF6hZThl/egkOTwK/VxtBTJv+utruS9aYzJbYDHh1u4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/fc1151822721336c99b1f5769f07825e/underlying-scroll-1.2.0-beta.4.tgz","_integrity":"sha512-erbwjL4si7gYw+1SFp8+efvLVLsMh/it9mAxnYcxkDwIztfbLpcnMfvr2ZbW9J8t2fODY1q5t/VfNUikFA5hLQ==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.4_1783169115538_0.0893350701631419","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.5":{"name":"@underlying/scroll","version":"1.2.0-beta.5","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.5","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"e5d164839ed2b8cabe0b0d26788029947dc9a77c","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.5.tgz","fileCount":47,"integrity":"sha512-Bc/LqZduX/0n4xNH/R6JYYerK6qBHPKw2BQvuFuxvccQ3pbydYlo/g9ru7KUl3aXadiiGs4Eo2Pj0fqItXpY2Q==","signatures":[{"sig":"MEUCIQDWSGZrSEfK5tz3i6A+2E42N3F/dVQNWgLOM85m6DbhKgIgIc/zVSJjZen2JKuq6FvKaSNX7uVSWVLri3B8/OcL5ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/33e758ec1943c1c845d9fcd3aa2b8cb0/underlying-scroll-1.2.0-beta.5.tgz","_integrity":"sha512-Bc/LqZduX/0n4xNH/R6JYYerK6qBHPKw2BQvuFuxvccQ3pbydYlo/g9ru7KUl3aXadiiGs4Eo2Pj0fqItXpY2Q==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.5_1783181582122_0.34144973499970055","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.6":{"name":"@underlying/scroll","version":"1.2.0-beta.6","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.6","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"3cfbf753c238530c121261ff6de141012a593e68","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.6.tgz","fileCount":47,"integrity":"sha512-oSxyt3vBekva4eN3+zZdkLsGeDpt8rsl/uO5ZN47D+aWa4rP7ofe51pGNu3Lqtis7qL+Jd0r9uYH2KjpR1Pa/g==","signatures":[{"sig":"MEQCIHdIiY5LRqJvGe0ehx54muvY1uXGQYbjktBnnbzUMqUFAiALck0lnFI031T2VogPwCEufyJSx8tiYDo3fXe85djCGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.6.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/f1528d31443590f5c12049ce8e56d4c4/underlying-scroll-1.2.0-beta.6.tgz","_integrity":"sha512-oSxyt3vBekva4eN3+zZdkLsGeDpt8rsl/uO5ZN47D+aWa4rP7ofe51pGNu3Lqtis7qL+Jd0r9uYH2KjpR1Pa/g==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.6_1783241023465_0.002987583871772115","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.7":{"name":"@underlying/scroll","version":"1.2.0-beta.7","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.7","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"816dff7dea8fb072503ec0646010d6f5d85109d8","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.7.tgz","fileCount":47,"integrity":"sha512-t7e4T+jZ7ki8+uH+L41Y8eXtA7N+hbo3VLcfkFQcw/zVKc/EEPs7yQ4Sdb8IX/TMDw6xIh67zJqfEP4Aabl1iQ==","signatures":[{"sig":"MEYCIQDAzQjnG3WhrGEnhoDUKYkFBHppVmibnwnrJRHUlpGnkAIhANeEvbIuVFKPLioMqpuzfF+ZKc63LYEH8ZOEWgIRsIDY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.7.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/47e4b8de616f8ae9e0660d41e7f2b4a9/underlying-scroll-1.2.0-beta.7.tgz","_integrity":"sha512-t7e4T+jZ7ki8+uH+L41Y8eXtA7N+hbo3VLcfkFQcw/zVKc/EEPs7yQ4Sdb8IX/TMDw6xIh67zJqfEP4Aabl1iQ==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.7"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.7_1783260095868_0.6480562748252225","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.8":{"name":"@underlying/scroll","version":"1.2.0-beta.8","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0-beta.8","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"3f1f9ccb95fec0ae9dffd03cffd8b99a2500e856","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0-beta.8.tgz","fileCount":47,"integrity":"sha512-hLRyn7cM8XydDQu9o/jfi+N9ye1mBDDmkGyiFbjU5DtQt2aCbbsqJKwi4n5CPczPkgQDCOm7vUfKUGHCKGI+sw==","signatures":[{"sig":"MEYCIQCVyogVaLBMy8bSeHq5Ug6AtJmAWOsyZVm7TZtfPXKXkwIhAPv1PzuVrR6XiZJ3BPVPa09nCc7KAZzzIb8SW058R/dB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0-beta.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363239},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0-beta.8.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/01d05e8bfe439804c38ccff45294c16f/underlying-scroll-1.2.0-beta.8.tgz","_integrity":"sha512-hLRyn7cM8XydDQu9o/jfi+N9ye1mBDDmkGyiFbjU5DtQt2aCbbsqJKwi4n5CPczPkgQDCOm7vUfKUGHCKGI+sw==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0-beta.8"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0-beta.8_1783270167558_0.9767976692267124","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@underlying/scroll","version":"1.2.0","keywords":["animation","scroll","parallax","pin","scrub","physics"],"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","_id":"@underlying/scroll@1.2.0","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"dist":{"shasum":"79b8282ba17ccda54cf57b8cfb5f967350f0f562","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.0.tgz","fileCount":47,"integrity":"sha512-CxoJ1GO8qjMyFTJ98rJTCKPJUutfkz+pkg7f98YGw+VDSdh+y3gh9fIiP871c4Pw0HxrTJ2W6Kcczy3IHuW15Q==","signatures":[{"sig":"MEUCIHxPYvMrxGHLQK19ECytGFWyLqyjum81l57I/zFdI56yAiEAhqcjIBE4HFE3T6kxmZ+SQZH6vN2z6p2PtvgOv2Aru+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363225},"main":"./dist/index.cjs","type":"module","_from":"file:underlying-scroll-1.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"node scripts/check-size.mjs","test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"_resolved":"/tmp/8b7902c6aa8e04585c8c3b78a4cb693b/underlying-scroll-1.2.0.tgz","_integrity":"sha512-CxoJ1GO8qjMyFTJ98rJTCKPJUutfkz+pkg7f98YGw+VDSdh+y3gh9fIiP871c4Pw0HxrTJ2W6Kcczy3IHuW15Q==","repository":{"url":"git+https://github.com/underlyingjs/underlying.git","type":"git","directory":"packages/scroll"},"_npmVersion":"11.18.0","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@underlying/core":"1.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.0","typescript":"^5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/scroll_1.2.0_1783276384859_0.9095050426351743","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@underlying/scroll","version":"1.2.1","description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","license":"MIT","author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"keywords":["animation","scroll","parallax","pin","scrub","physics"],"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+https://github.com/underlyingjs/underlying.git","directory":"packages/scroll"},"homepage":"https://github.com/underlyingjs/underlying#readme","bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"engines":{"node":">=20"},"dependencies":{"@underlying/core":"^1.2.1"},"devDependencies":{"esbuild":"^0.25.0","jsdom":"^26.1.0","typescript":"^5.8.3","vite":"^6.3.5","vitest":"^3.2.4"},"scripts":{"test":"vitest run","test:watch":"vitest","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","size":"node scripts/check-size.mjs"},"_id":"@underlying/scroll@1.2.1","_integrity":"sha512-4z/x73/tJboRvIe67uYeuoNoeerOErGorD0O6S9uywyQFwmlExx6jWlbHlol4/Gg3B35W+MRFeXXahF0P2PyKg==","_resolved":"/tmp/8933ac99e910563d45dd69c8027a5798/underlying-scroll-1.2.1.tgz","_from":"file:underlying-scroll-1.2.1.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-4z/x73/tJboRvIe67uYeuoNoeerOErGorD0O6S9uywyQFwmlExx6jWlbHlol4/Gg3B35W+MRFeXXahF0P2PyKg==","shasum":"48dfa052b4326c46d78563123af147a80eee6385","tarball":"https://registry.npmjs.org/@underlying/scroll/-/scroll-1.2.1.tgz","fileCount":48,"unpackedSize":374625,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@underlying%2fscroll@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCSVp20PXRix8RqDJ07QX+TE/u7W9u++9P0ZBOkDsbiJwIgLb8HgdWr4b0pQb2Df+vGs7pVupTL7XmPGeQ2mRD9d4A="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbd6e0e1-f0d4-4593-a118-45539b04202c"}},"directories":{},"maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scroll_1.2.1_1783280637994_0.7444503167543544"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-14T09:17:02.701Z","modified":"2026-07-05T19:43:58.419Z","0.1.0-beta.1":"2026-06-14T09:17:03.060Z","0.1.0-beta.2":"2026-06-14T09:54:54.373Z","0.1.0-beta.3":"2026-06-14T18:52:01.235Z","0.1.0-beta.4":"2026-06-15T20:54:40.024Z","0.1.0-beta.5":"2026-06-16T19:10:49.598Z","0.1.0-beta.6":"2026-06-16T20:03:44.546Z","0.1.0-beta.7":"2026-06-17T11:32:30.254Z","0.1.0-beta.8":"2026-06-17T11:53:46.863Z","1.0.0":"2026-06-17T20:58:22.642Z","1.1.0-beta.0":"2026-06-18T19:58:14.653Z","1.1.0-beta.1":"2026-06-20T09:33:50.807Z","1.1.0-beta.2":"2026-06-20T10:17:25.206Z","1.1.0-beta.3":"2026-06-20T13:41:56.724Z","1.1.0-beta.4":"2026-06-26T20:14:27.537Z","1.1.0":"2026-06-26T20:25:56.857Z","1.2.0-beta.0":"2026-06-27T17:41:51.121Z","1.2.0-beta.1":"2026-06-27T19:21:05.123Z","1.2.0-beta.2":"2026-06-28T11:51:17.725Z","1.2.0-beta.3":"2026-07-04T11:36:12.850Z","1.2.0-beta.4":"2026-07-04T12:45:15.676Z","1.2.0-beta.5":"2026-07-04T16:13:02.255Z","1.2.0-beta.6":"2026-07-05T08:43:43.616Z","1.2.0-beta.7":"2026-07-05T14:01:35.986Z","1.2.0-beta.8":"2026-07-05T16:49:27.721Z","1.2.0":"2026-07-05T18:33:04.993Z","1.2.1":"2026-07-05T19:43:58.141Z"},"bugs":{"url":"https://github.com/underlyingjs/underlying/issues"},"author":{"name":"underlyi.ng","email":"contact@underlyi.ng"},"license":"MIT","homepage":"https://github.com/underlyingjs/underlying#readme","keywords":["animation","scroll","parallax","pin","scrub","physics"],"repository":{"type":"git","url":"git+https://github.com/underlyingjs/underlying.git","directory":"packages/scroll"},"description":"Scroll-driven animation for @underlying/core: scrub, pin, parallax, snap. Physics-first, no scroll-jacking.","maintainers":[{"name":"erwansoubeyrand","email":"erwansbd@gmail.com"}],"readme":"<p align=\"center\">\n  <img alt=\"underlying\" src=\"https://underlyi.ng/wordmark-sapin.svg\" width=\"280\" />\n</p>\n\n<p align=\"center\">\n  <strong>Scroll-driven animation, physics-first.</strong> Scroll is a source, not an engine -\n  <br />locked or momentum scrub, parallax, scroll-velocity, pin, snap, and triggers, on the one rAF loop.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://underlyi.ng\"><img alt=\"docs\" src=\"https://img.shields.io/badge/docs-underlyi.ng-1C3426\" /></a>\n  <img alt=\"scroll gzip\" src=\"https://img.shields.io/badge/scroll-5.50%20kB%20gzip-1C3426\" />\n  <img alt=\"built on\" src=\"https://img.shields.io/badge/built%20on-%40underlying%2Fcore-1C3426\" />\n  <img alt=\"license\" src=\"https://img.shields.io/badge/license-MIT-1C3426\" />\n</p>\n\n> Part of [underlying](https://github.com/underlyingjs/underlying), a physics-first motion library with first-class framework adapters (Angular first).\n\n## Why\n\n- **Scroll as a source, not an engine.** This package owns the three browser concerns `@underlying/core` refuses - one `IntersectionObserver`, one passive scroll/resize listener, and `getBoundingClientRect` - turns scroll into a normalized `0..1`, and fans it onto the core's existing seams. No physics is re-implemented.\n- **Locked or momentum, one field.** `smooth: false` locks the playhead to the scroll frame-for-frame (reversible, deterministic). A number routes through `follow()`, so the motion lags the scroll by that many seconds with conserved velocity.\n- **Composed, not bolted on.** Scrub drives the seekable `PlaybackHandle.progress()`; parallax returns a `bindStyle`-ready `Animatable`; everything runs on the same scheduler tick as the rest of your motion.\n- **Accessible by default.** One reduced-motion policy: momentum scrub collapses to locked, parallax is disabled, momentum snap goes instant - re-routed live when the OS preference changes.\n- **SSR-safe and lazy.** Nothing touches browser globals at import; the source is created on the first `track()`/builder call. Never scroll-jacking.\n\n## Install\n\n```sh\nnpm install @underlying/scroll\n```\n\n`@underlying/core` comes with it as a dependency; scroll shares its one rAF loop and value model.\n\n## Quick start\n\n```ts\nimport { createScroll } from '@underlying/scroll'\nimport { animatable, bindStyle, linear } from '@underlying/core'\nimport { playable } from '@underlying/core/playback'\n\nconst scroll = createScroll() // viewport, y-axis, shared scheduler\n\n// Locked scrub: scroll position drives a seekable handle, frame-for-frame.\n// A linear tween maps the scroll straight to progress (no ease-in on top).\nconst x = animatable(0)\nbindStyle(panel, { x })\nconst clip = playable(x).to(600, { paused: true, easing: linear })\nscroll.scrub(clip, { target: panel })            // smooth: false (default)\n```\n\n## Smooth scroll - inertia takes over the page\n\nPass `{ smooth: true }` and a spring takes over the scroll: wheel, touch (opt-in) and keys re-aim it and it glides to rest instead of stopping dead. It drives **native** scroll - no transform, no wrapper - so the scrollbar, in-page anchors, `position: sticky` and find-in-page keep working, and every other effect here (scrub, parallax, velocity, pin, snap, `scrollTo`) reads the smoothed position with no extra wiring.\n\n```ts\nconst scroll = createScroll({ smooth: { smooth: 0.12 } }) // catch-up time constant, seconds\n\nconst lean = scroll.velocity({ map: v => Math.max(-10, Math.min(10, v * 0.03)) })\nbindStyle(card, { skewY: lean })   // leans with the smoothed speed, for free\nscroll.scrollTo(section)           // springs through the engine's one shared spring\n```\n\nOptions (`createScroll({ smooth })` or `controller.smooth()`): `smooth` (catch-up seconds, default 0.1, the same `stiffnessFor` mapping scrub/parallax use), `spring`, `wheelMultiplier` (1), `touchMultiplier` (2), `keyboard` (default on - Space/PageUp-Down/Home/End/Arrows, never stealing a form field), `touch` (default **off** - intercepting touchmove kills iOS native momentum and pull-to-refresh, so native touch is the honest default). The engine is lazy and one-per-controller; `controller.smooth()` returns a handle (`enabled()`, `target()`, `velocity()`, `setTarget()`). A user scroll the engine did not drive (scrollbar, anchor, keyboard) is adopted, not fought. **Off under reduced motion** - native scroll runs raw.\n\n## Scrub - locked or momentum\n\n```ts\n// Momentum: the handle trails the scroll by ~0.2s, velocity conserved.\nscroll.scrub(clip, { target: panel, smooth: 0.2 })\n\n// A live spring is seekable only after bake(); scrub does it once at link time.\nconst spring = playable(y).spring(800, { paused: true })\nscroll.scrub(spring, { target: hero, smooth: 0.3 })\n\n// A raw callback is always locked (nothing to seek).\nscroll.scrub((p) => { label.textContent = `${(p * 100) | 0}%` })\n```\n\n## Parallax\n\n```ts\n// Returns an Animatable - hand it straight to bindStyle.\nconst bgY = scroll.parallax({ target: section, output: [-120, 120] })\nbindStyle(bg, { y: bgY })\n\nconst lead = scroll.parallax({ target: section, output: [60, -60], smooth: 0.15 })\nbindStyle(foreground, { y: lead })\n```\n\n## Velocity - lean with scroll speed\n\n`velocity()` exposes how fast the scroller is moving as one `bindStyle`-ready value (px/s, signed), smoothed through a spring so it ramps and eases back to rest the moment you stop. Map it to a few degrees of skew, a scale, or a blur for the speed-reactive lean.\n\n```ts\n// raw signed px/s -> a few degrees, clamped; relaxes to 0 when scrolling stops\nconst skew = scroll.velocity({ map: (v) => Math.max(-8, Math.min(8, v * 0.02)) })\nbindStyle(content, { skewY: skew })\n```\n\nPhysics-first: a spring owns the relax, so a fresh flick mid-relax re-aims it with velocity conserved, never a restart. `smooth` (seconds) tunes the ramp/relax; `spring` overrides the follow config. Disabled under reduced motion (held at `map(0)`).\n\n## Marquee - a seamless looping ticker\n\n`marquee()` is a standalone helper (no controller needed). It clones a track's children just enough to fill the container, drifts the strip at a constant speed, and wraps at exactly one content period so there's no seam. Hand it `scroll.velocity()` and it speeds up and reverses with the scroll - the agency ticker.\n\n```ts\nimport { createScroll, marquee } from '@underlying/scroll'\n\nconst scroll = createScroll()\nmarquee(track, {\n  speed: 60,                   // base drift, px/s\n  velocity: scroll.velocity(), // + the live scroll speed -> reacts to scrolling\n  pauseOnHover: true,\n})\n```\n\nThe container needs `overflow: hidden`; the `track` (its child holding the items) is what scrolls. Options: `speed`, `direction` (1 / -1), `axis` (`'x'` / `'y'`), `velocity` (a signed-px/s `Animatable` to add), `velocityFactor`, `pauseOnHover` (eases the drift to a stop via a spring), `spring`. The loop sleeps while the container is off-screen (IntersectionObserver) and sits still under reduced motion. Clones are `aria-hidden` + `inert`; `dispose()` removes them and restores the element.\n\n## Pin\n\n```ts\n// Wrap in a spacer, position:fixed across the range. pin.track is the progress\n// THROUGH the pinned span - feed it to a nested scrub.\nconst pin = scroll.pin(panel, { range: ['start start', 'bottom bottom'] })\n\nconst cap = animatable(0)\nbindStyle(caption, { opacity: cap })\nscroll.scrub(playable(cap).to(1, { paused: true, easing: linear }), { track: pin.track })\n```\n\n## Triggers\n\n```ts\nimport { playable } from '@underlying/core/playback'\n\n// Enter/leave via IntersectionObserver; direction read from the entry geometry.\nscroll.trigger(card, {\n  onEnter: () => card.classList.add('in'),\n  onLeaveBack: () => card.classList.remove('in'),\n})\n\n// Or drive a PlaybackHandle with toggleActions verbs\n// [onEnter, onLeave, onEnterBack, onLeaveBack].\nscroll.trigger(card, { toggle: clip, toggleActions: ['play', 'pause', 'resume', 'reverse'] })\n```\n\n## scrollTo - spring the scroller to a target\n\n```ts\n// Spring the scroller to an absolute px position or an element brought into\n// view. Returns a ScrollToHandle - { finished, cancel() }.\nconst handle = scroll.scrollTo(section, { offset: -80 })  // land 80px below the top\nawait handle.finished                                     // resolves on arrival\n\n// align picks which '<elementEdge> <viewportEdge>' pair to bring together.\n// Default 'start start' - the section's top lands at the viewport top.\nscroll.scrollTo(section, { align: 'center center', offset: -44 })\n\n// One follow() is shared across calls, so a scrollTo issued mid-flight RE-AIMS\n// the spring already in motion - velocity conserved, no restart jolt. Pass your\n// own spring, or immediate for a hard jump (always on under reduced motion).\nscroll.scrollTo(1200, { spring: { stiffness: 120 } })\nscroll.scrollTo(0, { immediate: true })\n\nhandle.cancel()  // freeze the scroller where it is; finished resolves\n```\n\n`scrollTo()` never aims past the reachable range, and the handle's `finished`\nnever rejects - it resolves on arrival, or when the scroll is canceled or\nsuperseded by a later call.\n\n## Snap\n\n```ts\n// Opt-in momentum snap. On scroll-idle it springs to the nearest stop in the\n// direction you were scrolling. CSS scroll-snap stays the recommended default.\nscroll.snap({ to: 0.25 })                          // a stop every 25%\nscroll.snap({ to: [0, 0.4, 1] })                   // explicit stops\nscroll.snap({ to: (p, direction) => /* ... */ })   // custom resolver\n```\n\n## Track - the raw primitive\n\n```ts\n// Everything above composes from this: normalized 0..1 over a range, deduped.\nconst t = scroll.track({ target: section })\nt.progress()                 // read synchronously\nt.on((p) => render(p))       // or subscribe\n\nscroll.dispose()             // tears down the loop, observers, and every binding\n```\n\n## More on the controller\n\n```ts\n// markers(): dev-only overlay for a range. Solid lines travel with the content\n// (the element's enter/leave edges); dashed lines are the fixed scroller\n// positions they fire against. When a solid meets a dashed of the same colour,\n// that edge fires. Reads the DOM live - never ship it on.\nconst m = scroll.markers({ target: section, label: 'hero' })\nm.dispose()\n\n// progress(): whole-scroller progress 0..1 (scrollPos / maxScroll), read\n// synchronously. Cheaper than a track() when you only need the page fraction.\nscroll.progress()\n\n// refresh(): re-measure every registered track. Call after a layout change the\n// controller can't observe (a font swap, an image load, a panel that expands).\nscroll.refresh()\n```\n\n## SSR and tests\n\nNothing touches browser globals at import, and the DOM source is created lazily\non the first builder call. For server rendering or a headless test, inject a\ndeterministic source with `createManualScrollSource()` and drive it by hand -\nthe same seam the core exposes with its manual driver.\n\n```ts\nimport { createScroll, createManualScrollSource } from '@underlying/scroll'\n\nconst source = createManualScrollSource({ viewportSize: 800, maxScroll: 2000 })\nconst scroll = createScroll({ source })\n\nsource.setBox(section, { start: 1000, size: 600 }) // place an element (content coords)\nsource.emitScroll(500)                             // move the scroll, fire listeners\nsource.emitResize()                                // trigger a re-measure pass\nscroll.progress()                                  // assert against a known number\n```\n\n## The offset grammar\n\nRanges use the `[element edge] [viewport edge]` offset model. The\ndefault is `['start end', 'end start']` - progress `0` when the element's start\nedge meets the viewport's end, `1` when its end edge meets the viewport's start.\n\n```ts\nscroll.track({ target: el, range: ['start center', 'end center'] })\n```\n\n## Reduced motion\n\nHonored automatically (consulting the core's `prefers-reduced-motion` state): a\nlocked scrub stays (it is user-driven and safe), a momentum scrub collapses to\nlocked, parallax is disabled at its resting transform, and a momentum snap\nbecomes an instant jump. The policy re-routes live when the preference changes.\n\n## License\n\nMIT © underlyi.ng\n","readmeFilename":"README.md"}