{"_id":"super-hover","_rev":"8-cd0c4ebe82a17d437c61c7fd063617e3","name":"super-hover","dist-tags":{"latest":"0.2.2"},"versions":{"0.0.1":{"name":"super-hover","version":"0.0.1","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.0.1","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"26e07bab4bdb5f22556010df51cd6ec70a0f07bb","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.0.1.tgz","fileCount":9,"integrity":"sha512-odOV6BgPks7NL0IGXu9tO/uKzari39Z3gDXqrC4hWnmBm4iuDN9jQozH+aZjMJurerytEtcWzNI0LtMvuwIoWA==","signatures":[{"sig":"MEQCIFBhCNLAWrfkadPUmwS/IaOL6+Zop9TIXxjQNO6WHtIEAiAxUTAVgVMmHe9aMExTxm3tSxmPQ1G3fWz6lcKTuQR0NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33217},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"}},"gitHead":"7d49928b32bd9a23cbfa8e26f44c3580a480babf","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"Hit-tested hover state that updates on every frame","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.0.1_1777549578050_0.3143670766422051","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"super-hover","version":"0.0.2","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.0.2","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"352850bdaf2029fbf52b6c3d4ce85d41be396bca","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.0.2.tgz","fileCount":16,"integrity":"sha512-QYy4zDyKbTMXVaIgwlxH4J2Oy9e6MYfhWjyrNX9psCngOS8sWTKnruV++dHwI4DOMohTFEDqf8fFqomg8RTrQA==","signatures":[{"sig":"MEUCIBSS9D726UJyKwxk3v3zaHJ357IRG3foeAszuBWI44iLAiEAlZFIzHQEVBTKHYKoJxFD/nCLkgz0GXgvroWAj46lzb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71389},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"gitHead":"dcf33740db45d8c20509f560b02a9e0258f2f4ce","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.0.2_1778398447871_0.5378252234598566","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"super-hover","version":"0.0.3","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.0.3","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"bbbfe46e020cd6441f5fcbb9524606ea0534557a","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.0.3.tgz","fileCount":16,"integrity":"sha512-1iwvmtKpXdbyXPjq7o3c3eXYjhVKl1vIIjqvIJMnF0k+0K/XlfjA8Qq3/l4f84j8pmHdXCP6/W3T5mNR/Phn1Q==","signatures":[{"sig":"MEQCIGdeNDP/5clB+IOJn3j3DLu2Owk1c7LcOeuEu8qnoSIWAiA6jzuoBHdY+TFw8sL/pQfhaPOmxVuhC+HQQVvPEz6SDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71403},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"gitHead":"3a0d5724bd5ff040c2cc181f9bfc6278b16222ae","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.0.3_1778416782277_0.19255010434154385","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"super-hover","version":"0.0.4","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.0.4","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"196cf4c33fefa679fc2573f9dd6052d125e3a716","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.0.4.tgz","fileCount":16,"integrity":"sha512-qjhTyHQTWrB2IjzZgJxslXl+92bt98GABj81CjP2xU7/peZy37kAeCC9dsJWQubsJg/erfYcN8kZUMqvKNWnsw==","signatures":[{"sig":"MEYCIQDLFLvd1HQFdUSGPnzDKdC5M/KKckAml7edrVXp1Ph/zgIhANvwsy59iHFXm8wODQUgWnxpSLLuX+G0PSNLCt4SWavU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"gitHead":"5af1b635463d995e20c647a6a03d31184300f070","scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.0.4_1779302773499_0.2886341309655853","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"super-hover","version":"0.1.0","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.1.0","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"993b485ba71bea8b43015a58f7e01b2abcf66c08","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.1.0.tgz","fileCount":16,"integrity":"sha512-p8yTNGe1ndhCcqsNjDonLLLh2jLiP4i29r/c8jbb7Eret5ixcBgdcCmXUnjLie6/5D2GzOqN0ljuFnPSt9Yb6A==","signatures":[{"sig":"MEYCIQCerf5XE7mslmnUPJ1rQ/cfSKab0UEpSRNdr5Rm7Erj7gIhAIrrHjrtA2e+3aGYAobmU5O6Cc/H97nSEnnRXq6jwACG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130013},"main":"./dist/index.js","type":"module","_from":"file:super-hover-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"scripts":{"test":"vitest run","build":"tsup"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"_resolved":"/private/var/folders/sf/bf08jd4s2490y6b6948fpjj80000gn/T/8dbcd8a570bf32877ec0083de177556b/super-hover-0.1.0.tgz","_integrity":"sha512-p8yTNGe1ndhCcqsNjDonLLLh2jLiP4i29r/c8jbb7Eret5ixcBgdcCmXUnjLie6/5D2GzOqN0ljuFnPSt9Yb6A==","repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.1.0_1779312179159_0.5898089032598481","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"super-hover","version":"0.1.2","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.1.2","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"6cc60ef238a15382e9f0427f59f49cdd548cd30c","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.1.2.tgz","fileCount":16,"integrity":"sha512-4aZT3zUS3B8hPM3mQUPpRZZ0l10mLcSJV3k0lmABcaFU4A05DhcjdRj+r8qwjgQ2/vWvB3PMyuw4fU48PmYBkw==","signatures":[{"sig":"MEQCIBVE+wZkngs1hP5u+mhadKhhO3bpsJmVASl/v0h+b5h5AiBJqyA19+kLXYlXdvUQZMRlxKWacvRutHsgDQky5Bh6/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146399},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"gitHead":"5f0b8076c757f54612ae94b1b4731596043b5e69","scripts":{"test":"vitest run --config vitest.config.ts","build":"tsup","test:watch":"vitest --config vitest.config.ts"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","jsdom":"^29.1.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.1.2_1780776734868_0.9748641867769727","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"super-hover","version":"0.2.1","keywords":["hover","scroll","pointer","dom"],"author":{"url":"https://github.com/danielpetho","name":"Daniel Petho"},"license":"MIT","_id":"super-hover@0.2.1","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"dist":{"shasum":"5f663abd95e9de5ca8e73c7621b41e89900ccadc","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.2.1.tgz","fileCount":16,"integrity":"sha512-YIIepFsZ/YAJv0umjczO/k80fR0yLS8zDP5dkESMGbgttPd5s68TmchXyfFw8zOCLGG/nVAH17nUCZSQgN3aTw==","signatures":[{"sig":"MEUCIQDZhGYgP/3HGAv+XQFKQt5vrYzRKqxoG+zKDWgVvFqUgAIgUzrEc5KLjBgjsb88iIgL3yFQqradHg0EujGQ27pJgfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291105},"main":"./dist/index.js","type":"module","_from":"file:super-hover-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"scripts":{"test":"vitest run --config vitest.config.ts","build":"tsup","test:watch":"vitest --config vitest.config.ts"},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"_resolved":"/private/var/folders/sf/bf08jd4s2490y6b6948fpjj80000gn/T/4e63db9a0f9d9102616ebac19b7b8de5/super-hover-0.2.1.tgz","_integrity":"sha512-YIIepFsZ/YAJv0umjczO/k80fR0yLS8zDP5dkESMGbgttPd5s68TmchXyfFw8zOCLGG/nVAH17nUCZSQgN3aTw==","repository":{"url":"git+https://github.com/danielpetho/super-hover.git","type":"git"},"_npmVersion":"10.8.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.4","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.5.1","jsdom":"^29.1.1","react":"^19.0.0","vitest":"^4.1.4","typescript":"^6.0.2","@types/node":"^25.6.0","@types/react":"^19.0.0"},"peerDependencies":{"vue":"^3.4.0","react":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/super-hover_0.2.1_1783276319422_0.9920647329542291","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"super-hover","version":"0.2.2","description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.js"},"./vue":{"types":"./dist/vue.d.ts","import":"./dist/vue.js"},"./svelte":{"types":"./dist/svelte.d.ts","import":"./dist/svelte.js"}},"sideEffects":false,"peerDependencies":{"react":"^18.0.0 || ^19.0.0","vue":"^3.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"vue":{"optional":true}},"keywords":["hover","scroll","pointer","dom"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/danielpetho/super-hover.git"},"author":{"name":"Daniel Petho","url":"https://github.com/danielpetho"},"homepage":"https://github.com/danielpetho/super-hover#readme","bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^25.6.0","@types/react":"^19.0.0","jsdom":"^29.1.1","react":"^19.0.0","tsup":"^8.5.1","typescript":"^6.0.2","vitest":"^4.1.4","vue":"^3.5.0"},"scripts":{"build":"tsup","test":"vitest run --config vitest.config.ts","test:watch":"vitest --config vitest.config.ts"},"_id":"super-hover@0.2.2","_integrity":"sha512-oqwg/qQIJdN1X519TAjYCIH5WrcFoBn1woMl6CODcwoZ4O5/zjJETin5R9Mk+6pDFiFpWwO7+ejxSUWXsnODAw==","_resolved":"/private/var/folders/sf/bf08jd4s2490y6b6948fpjj80000gn/T/0a4c60ea4560acf47be57d8c85f1bd06/super-hover-0.2.2.tgz","_from":"file:super-hover-0.2.2.tgz","_nodeVersion":"20.19.4","_npmVersion":"10.8.2","dist":{"integrity":"sha512-oqwg/qQIJdN1X519TAjYCIH5WrcFoBn1woMl6CODcwoZ4O5/zjJETin5R9Mk+6pDFiFpWwO7+ejxSUWXsnODAw==","shasum":"99f871d5825e9c69deb7d864b8f72c4a2c2ec032","tarball":"https://registry.npmjs.org/super-hover/-/super-hover-0.2.2.tgz","fileCount":16,"unpackedSize":303136,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIElIZYUniJlPxgIkNmBr+mPxgO+jg0eyJaOGCLd0J3NWAiBLit22oRdyp1GgUWKPueMKGYnuTkR/wKKmSB2gawXGng=="}]},"_npmUser":{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"},"directories":{},"maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/super-hover_0.2.2_1783366514496_0.62327203845049"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-30T11:46:17.922Z","modified":"2026-07-06T19:35:14.766Z","0.0.1":"2026-04-30T11:46:18.191Z","0.0.2":"2026-05-10T07:34:08.034Z","0.0.3":"2026-05-10T12:39:42.429Z","0.0.4":"2026-05-20T18:46:13.662Z","0.1.0":"2026-05-20T21:22:59.312Z","0.1.2":"2026-06-06T20:12:15.041Z","0.2.1":"2026-07-05T18:31:59.593Z","0.2.2":"2026-07-06T19:35:14.643Z"},"bugs":{"url":"https://github.com/danielpetho/super-hover/issues"},"author":{"name":"Daniel Petho","url":"https://github.com/danielpetho"},"license":"MIT","homepage":"https://github.com/danielpetho/super-hover#readme","keywords":["hover","scroll","pointer","dom"],"repository":{"type":"git","url":"git+https://github.com/danielpetho/super-hover.git"},"description":"A super tiny library that hit-tests hover every frame. Unlike native :hover, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.","maintainers":[{"name":"nonzeroexitcode","email":"kpethodaniel@gmail.com"}],"readme":"# Super Hover\n\nA super tiny library that hit-tests hover every frame. Unlike native `:hover`, it keeps tracking whatever sits under your pointer while you scroll or when things move on screen.\n\n## Why use this?\n\nWell, you probably shouldn't. While scrolling, browsers mostly skip updating `:hover` to prioritize other important rendering work, which in most cases is the desired behavior. But Super Hover recomputes a hover-like hit every frame, which opens up the possibility of some fun creative effects and interactions.\n\n## Install\n\n```bash\npnpm add super-hover\n# or npm / yarn\n```\n\nThe core **`super-hover`** package entry is framework-free. **`super-hover/react`**, **`super-hover/vue`**, and **`super-hover/svelte`** add small helpers. React and Vue are **optional** peer dependencies.\n\n## Usage\n\nWrap the area you care about, then mark the things that should act hoverable.\n\nThe active element gets `data-super-hover-active`, which is usually enough if you only want styling.\n\n```ts\nimport { createSuperHover } from \"super-hover\";\n\nconst root = document.querySelector<HTMLElement>(\"#list\")!;\n\nconst superHover = createSuperHover({ root });\n\n// later\nsuperHover.destroy();\n```\n\n```html\n<ul id=\"list\">\n  <li data-super-hover>Inbox</li>\n  <li data-super-hover>Projects</li>\n  <li data-super-hover>Settings</li>\n</ul>\n```\n\n## Events\n\nIf styling is not enough, you can run code when the active element changes. Super Hover can dispatch these custom events:\n\n- `superhoverenter` when an element becomes active, when enabled\n- `superhoverleave` when an element stops being active, when enabled\n- `superhovermove` while an element is active, when enabled\n\n```ts\nimport {\n  createSuperHover,\n  type SuperHoverEventDetail,\n} from \"super-hover\";\n\nconst root = document.querySelector<HTMLElement>(\"#list\")!;\n\nroot.addEventListener(\"superhoverenter\", (event) => {\n  const e = event as CustomEvent<SuperHoverEventDetail>;\n  console.log(\"entered\", e.detail.current);\n});\n\nconst superHover = createSuperHover({\n  root,\n  events: [\"enter\", \"leave\"],\n});\n```\n\nAll custom events are off by default in the core library. If you need events, pass `events: [\"enter\", \"leave\"]`; add `\"move\"` for high-frequency move events. Event type options only customize the event names.\n\n## Framework helpers\n\nReact:\n\n```tsx\nimport { useSuperHoverRef } from \"super-hover/react\";\n\nexport function Example() {\n  const rootRef = useSuperHoverRef({\n    onEnter(event) {\n      console.log(event.detail.current);\n    },\n  });\n\n  return <ul ref={rootRef}>{/* data-super-hover items */}</ul>;\n}\n```\n\nVue:\n\n```vue\n<script setup lang=\"ts\">\n  import { useSuperHover } from \"super-hover/vue\";\n\n  const rootRef = useSuperHover({\n    onEnter(event) {\n      console.log(event.detail.current);\n    },\n  });\n</script>\n\n<template>\n  <ul ref=\"rootRef\"><!-- data-super-hover items --></ul>\n</template>\n```\n\nSvelte:\n\nRequires Svelte 5.29 or newer.\n\n```svelte\n<script lang=\"ts\">\n  import { superHover } from \"super-hover/svelte\";\n\n  const hover = superHover({\n    onEnter(event) {\n      console.log(\"entered\", event.detail.current);\n    },\n    onLeave(event) {\n      console.log(\"left\", event.detail.previous);\n    },\n  });\n</script>\n\n<ul {@attach hover}>\n  <li data-super-hover>Inbox</li>\n  <li data-super-hover>Projects</li>\n  <li data-super-hover>Settings</li>\n</ul>\n```\n\nFramework helpers enable and listen for matching events when callbacks are passed. If you do not pass `onEnter`, `onLeave`, or `onMove` (and do not pass an explicit `events` option), helpers use attribute-only mode and skip event dispatch for you.\n\n## How it works\n\nThe library is very simple and short, so please read the [source code](https://github.com/danielpetho/super-hover/blob/main/packages/super-hover/src/index.ts) for the full details.\n\nIn short, Super Hover keeps track of the last pointer and when the pointer moves, the page scrolls, or the viewport changes, it schedules a hit-test with `requestAnimationFrame`. Multiple updates in the same frame are coalesced, so they only produce one hit-test.\n\nOn that frame, Super Hover calls `elementFromPoint(x, y)`, finds the closest element matching `[data-super-hover]`, and updates the active element.\n\nIf the active element changes, Super Hover removes `data-super-hover-active` from the old element, adds it to the new one, and dispatches any enabled custom events.\n\n## API\n\n### `SuperHoverOptions`\n\n| Option | Default | Purpose |\n| --- | --- | --- |\n| `enabled` | `true` | When `false`, starts paused and waits for `resume()`. |\n| `pointerTypes` | `[\"mouse\", \"pen\"]` | Pointer types allowed to update the tracked pointer position. Touch is off by default so finger scrolling does not create hover state. |\n| `disableWhilePointerDown` | `false` | When `true`, clears hover state while an allowed pointer is pressed, such as during text selection, and resumes hit-testing after release. |\n| `root` | omit, whole document | Optional boundary: the matched element must be inside this subtree. Can be a `Document` or `Element`, including same-origin iframe documents/elements. |\n| `selector` | `[data-super-hover]` | CSS selector passed to `element.closest` from the hit-tested node. Independent of `root`. |\n| `activeAttribute` | `data-super-hover-active` | Attribute toggled on the active matched element while active. |\n| `events` | `false` | Custom events to dispatch. Pass `true` for enter/leave, or an array like `[\"enter\", \"leave\", \"move\"]`. |\n| `enterEventType` | `superhoverenter` | Name for the enter custom event when `events` includes `\"enter\"`. |\n| `leaveEventType` | `superhoverleave` | Name for the leave custom event when `events` includes `\"leave\"`. |\n| `moveEventType` | `superhovermove` | Name for the move custom event when `events` includes `\"move\"`. |\n\n### `SuperHoverController`\n\n| Method | Purpose |\n| --- | --- |\n| `pause()` | Pauses hit-testing and clears the active element. |\n| `resume()` | Resumes hit-testing and schedules a fresh hit-test. |\n| `refresh()` | Schedules a fresh hit-test without changing the paused or destroyed state. |\n| `destroy()` | Removes listeners, cancels pending animation frames, and clears the active element. |\n\n### Event detail\n\nFor `superhoverenter` and `superhoverleave`, `event.detail` has:\n\n- `x` and `y`: the last pointer position, in viewport coordinates\n- `previous`: the element that was active before this change, or `null`\n- `current`: the element that is active after this change, or `null`\n\nFor `superhovermove`, `event.detail` has:\n\n- `x` and `y`: the last pointer position, in viewport coordinates\n- `current`: the currently active element\n\n## Links\n\n- **Docs:** [super-hover.danielpetho.com](https://super-hover.danielpetho.com)\n- **Repository:** [github.com/danielpetho/super-hover](https://github.com/danielpetho/super-hover)\n- **Issues:** [github.com/danielpetho/super-hover/issues](https://github.com/danielpetho/super-hover/issues)\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}