{"_id":"style-observer","_rev":"14-4883fac7d4d2edc6ac55997905b2806e","name":"style-observer","dist-tags":{"latest":"0.1.2"},"versions":{"0.0.0":{"name":"style-observer","version":"0.0.0","keywords":[],"author":{"name":"Lea Verou"},"license":"MIT","_id":"style-observer@0.0.0","maintainers":[{"name":"leaverou","email":"lea@verou.me"}],"dist":{"shasum":"11649ac2e5827d93cbb5dc6200cedea8abfe33bc","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.0.tgz","fileCount":2,"integrity":"sha512-+EbLq0r7PD/LjG3yfXTAc/XP8ngQJTMTYbEN7I46j96EZJdqr6Iq3WlJkwfy9asQqcIiXkLm01rxJh9yoEN2NA==","signatures":[{"sig":"MEUCIFSyN2aBMA44sRZHQF9PKy6st8PdE6gncmntbQH+Z/IjAiEAq9QtqBDxjwEDwZ7Kv89jxGHmhgR0MUls6LWrx/yCcN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":569},"main":"src/index.js","type":"module","gitHead":"530a82eb94ec441ff72512ff9c5eb907803665c8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"_npmVersion":"11.0.0","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"release-it":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.0_1736219830661_0.2623906558888025","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"style-observer","version":"0.0.1","keywords":[],"license":"MIT","_id":"style-observer@0.0.1","maintainers":[{"name":"leaverou","email":"lea@verou.me"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://github.com/LeaVerou/style-observer#readme","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"b35f110c26ec3f3dce80f7e8177641d6183ce900","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.1.tgz","fileCount":19,"integrity":"sha512-PA2idKFBS2Q6NHGb0VnrlAhvt/l31Z2bOMXqpviX6qc0Jzzi0rZn5UdQ3hFNfMDFDemmX3xLxapZ/wWI63MP9w==","signatures":[{"sig":"MEUCIQCBMWfnGtCJgFHGECg0/cRMJeWth615Kz0P7Rtv/LzCRQIgCSdDwMWqEbecR7bE1bt/XQoCMicpTf1kjd4tb2QUF4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28580},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"72f3f78e415aadd849a4bac3993d0e60aa6dbd0a","scripts":{"test":"open tests/index.html","release":"release-it"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.0.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"release-it":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.1_1737970610526_0.6189914240527539","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"style-observer","version":"0.0.2","keywords":[],"license":"MIT","_id":"style-observer@0.0.2","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"e041063bb1aa2d6f8534862a99dd40c4386cad3c","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.2.tgz","fileCount":27,"integrity":"sha512-qYTLVJjj96JPKEQnfLJJKyQ+5LejRtLjtVyjgU6B1A9n0aZKBsuQdeX8mCovCx8qw02BhXSBJcjVWUyMfNKqeA==","signatures":[{"sig":"MEUCIQDZKAB/MsIwOeXwd7eI28qvlNA+NsmDpk2/fmdZ+gO8wgIgP+7pKSM44wtiajD4uT3Cu1h8lUtyhp11QPVfPK0kN1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69405},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"ee71cb0895c41b9ccbdf1d7a010a80a5aa4d707e","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.0.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.27.6","htest.dev":"^0.0.17","release-it":"^18.0.0","@11ty/eleventy":"^3.0.0","typedoc-plugin-rename-defaults":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.2_1739266946230_0.7492991493518208","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"style-observer","version":"0.0.3","keywords":[],"license":"MIT","_id":"style-observer@0.0.3","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"71d5553898607e0387228fc94faccb4d4a3bcc65","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.3.tgz","fileCount":12,"integrity":"sha512-6wqyjLz/azzLpCt1ZDLfpkNu8AzEu/4FC73vz/Zxo4Bgw7uJ0hWos/AQ2+k2vho/FQxiOPwoVmEOWettZo3sGw==","signatures":[{"sig":"MEQCIGhCh3UB9wuRKKNzY4IQagrLs6ZnMwZXfIJk/K2TfNLhAiBv7Drt+P6Mq5AXFCShcEiFvc56F8ltPOVs1+m5wMHuJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28707},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"be0ccda423416630b4496235b8b17f1f55fc51a5","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.0.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.27.6","htest.dev":"^0.0.17","release-it":"^18.0.0","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","typedoc-plugin-rename-defaults":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.3_1739356992079_0.2689469869166019","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"style-observer","version":"0.0.4","keywords":[],"license":"MIT","_id":"style-observer@0.0.4","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"5cdf2bcd6c29d934719407a91b7312abe4524648","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.4.tgz","fileCount":12,"integrity":"sha512-bKvTV6i2T8q656YkF+WWbj8pSEyjPTyO0h+i6jZVDk7Bq/MN3l7SW4W3u8u9puJvzHzBRaWb5oT/FzQA1PizQQ==","signatures":[{"sig":"MEYCIQDCAw6XRQI4xBdRv+NY+Vkgf6+Oi4MzPQKWPeb4t8IINAIhAJuAaE6cbIfYLoIX0iu96Rna7MFMvvN99y3Ivyw6pESu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30897},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"4eea414537a8b280eef82fde8fed78f0b81e37c9","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.0.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.27.6","htest.dev":"^0.0.17","release-it":"^18.0.0","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","typedoc-plugin-rename-defaults":"^0.7.2"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.4_1739373099650_0.7871003871901248","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"style-observer","version":"0.0.5","keywords":[],"license":"MIT","_id":"style-observer@0.0.5","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"2efbac9a6ebb4bf926c18862ef61f1cd0873a1bb","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.5.tgz","fileCount":16,"integrity":"sha512-d5ieqbpC6URZmZlemdYDUcGSh6hCqIODWppBCGUfJDylVprE20hqAo9aHetb43kCrHc/1kNaikrQgbE5+kBWkA==","signatures":[{"sig":"MEYCIQDphKfGXXLNR8zuZag+VL4keSIJroS6mWFPJNr9af+46gIhAKo8pUOrAuYZsqxnmVDh5pngDezgV56zRVHg770uBfNc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33209},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"1a6cd5294f49704731fe80f34c1d7a1e877593ee","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput"},"_npmUser":{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"10.9.2","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.27.6","htest.dev":"^0.0.17","release-it":"^18.0.0","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.2","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.2","prettier-plugin-space-before-function-paren":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.5_1740042101640_0.19271537691095375","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"style-observer","version":"0.0.6","keywords":[],"license":"MIT","_id":"style-observer@0.0.6","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"a5276994a33b582d7f596f4c25d6c7aeedc07737","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.6.tgz","fileCount":17,"integrity":"sha512-fHEcwwuH2s93YHM1byMCxp7cGakEh1ad/SPJQjcgaLyjANa7QNt/xZgv153OLBoaRGnqJ+b4Vfrf64s8ORExzw==","signatures":[{"sig":"MEYCIQCRFkiQSJIY7iyaszfaREIKGHbacmvxUEG73rIfsD61xgIhAPQmETYntKCWCOrEhYgFjNpTW9pltFgYl+7aGopT4k9u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33903},"main":"index.js","type":"module","exports":{".":"./index.js"},"gitHead":"eb29d51aa789ad0fa8e7c93736ca6d2de045290c","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.2.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.27.6","htest.dev":"^0.0.17","release-it":"^18.0.0","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.2","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.2","prettier-plugin-space-before-function-paren":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.6_1744149201018_0.3296056620394763","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"style-observer","version":"0.0.7","keywords":[],"license":"MIT","_id":"style-observer@0.0.7","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"8071ebb48e8cc1378dcac12b49e8ecfbfd12c1f3","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.7.tgz","fileCount":29,"integrity":"sha512-t75H3CRy+vd5q3yqyrf/De4tkz33hPQTiCcfh0NTesI5G7kJnZ227LEYTwqjKTtaFOCJvqZcYFHpJlF8bsk3bQ==","signatures":[{"sig":"MEYCIQDaWDTENJYC0nLmWhpb3a9zB8ol0HB+J/AkC2LD78GozAIhAMzY7Z434zhLvhH8V7Wwayq7Esf02RP6+d+pRg9nStTz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46626},"main":"index.js","type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"gitHead":"18238f9fc54562a8665a58172a84cd07a532b114","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","prepublishOnly":"npm run build:types"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.2.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.28.2","htest.dev":"^0.0.17","release-it":"^18.0.0","typescript":"^5.8.3","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.2","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.7_1744353855298_0.99396748426273","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"style-observer","version":"0.0.8","keywords":[],"license":"MIT","_id":"style-observer@0.0.8","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"5ff099563323215f62a729cc3b1c7ffe8bacc43e","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.8.tgz","fileCount":30,"integrity":"sha512-UaIPn33Sx4BJ+goia51Q++VFWoplWK1995VdxQYzwwbFa+FUNLKlG+aiIdG2Vw7VyzIUBi8tqu8mTyg0Ppu6Yg==","signatures":[{"sig":"MEYCIQCMPscwoZp5wQYxj0C1KkpgUm34mB1DN3efo0oG4O5Z9wIhAOzDEn/vyEYrNJ545wd3RmeWagc45bOAzJOOdG+6Dsk/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48518},"main":"index.js","type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"funding":[{"url":"https://github.com/sponsors/LeaVerou","type":"individual"},{"url":"https://opencollective.com/leaverou","type":"opencollective"}],"gitHead":"aa0435c844319af66f6ac4cbface6907b6c59ad2","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","prepublishOnly":"npm run build:types"},"_npmUser":{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.3.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.28.2","htest.dev":"^0.0.17","release-it":"^18.0.0","typescript":"^5.8.3","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.2","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.8_1745423338610_0.8927797541561655","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"style-observer","version":"0.0.9","keywords":[],"license":"MIT","_id":"style-observer@0.0.9","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"42d45a022e3d80e6eb7a7d9e40ab1bb5ea0c06f7","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.0.9.tgz","fileCount":30,"integrity":"sha512-edg2P6ojHKgybSzkgDB8HlB/7CK7PQvKBBo8gD9hyVQUCHgK6JF1uHoPyCtSBhJdfLTFwZyboXhQ1dHc76eVAA==","signatures":[{"sig":"MEUCIQCPYDDv7nlq3X0OP3wYoC4O0cSriF3CdCZC00GO304/7gIgC5KIOku4VACownnhuEzmM1cwNdNLpsrZldu1MxlQkfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47723},"main":"index.js","type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./index.js"}},"funding":[{"url":"https://github.com/sponsors/LeaVerou","type":"individual"},{"url":"https://opencollective.com/leaverou","type":"opencollective"}],"gitHead":"6c6f39d1189f820bd2160270e6cf5e42cc407a9e","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","prepublishOnly":"npm run build:types"},"_npmUser":{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.3.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.28.2","htest.dev":"^0.0.17","release-it":"^18.0.0","typescript":"^5.8.3","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.3","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.0.9_1747255038894_0.9840517697209081","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"style-observer","version":"0.1.0","keywords":[],"license":"MIT","_id":"style-observer@0.1.0","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"6de7e084f6f8d79103c9e6db8dfc93837a836ae8","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.1.0.tgz","fileCount":30,"integrity":"sha512-lvXM5VFMg93w4yB4S8eyMjSXOKPUQJTD95aTFmODUSiM5Slyk/3Hc+B5+d6dai1FpIxQ6Dlv0v9BTV7KhWrOHw==","signatures":[{"sig":"MEQCIAtyuEKBmmVT5aNPR/5W03zyIzYVNVNkycirp92YM5PLAiB7KB1klAh79IKpBXALBEg4H053rCNTod71LN923hPdMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54150},"main":"index.js","type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./index.js","require":"./index.js"}},"funding":[{"url":"https://github.com/sponsors/LeaVerou","type":"individual"},{"url":"https://opencollective.com/leaverou","type":"opencollective"}],"gitHead":"4efd9f38edf2c9e2381c43e7c2e1762c6a7e6f65","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","prepublishOnly":"npm run build:types"},"_npmUser":{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.4.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.28.2","htest.dev":"^0.0.17","release-it":"^18.0.0","typescript":"^5.8.3","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.3","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.1.0_1747936877674_0.6607213979414845","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"style-observer","version":"0.1.1","keywords":[],"license":"MIT","_id":"style-observer@0.1.1","maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"dist":{"shasum":"d0fb381c72fc4b303345a617d6129cc6ee6c95b4","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.1.1.tgz","fileCount":32,"integrity":"sha512-QkHPOiJZTC05uYcHrmp6aykAuoiVC5JqVL18QqlwzcOEFFjXFwpnJs76DpDS1mI4eX40WiE2SENJxBq4nSVUjw==","signatures":[{"sig":"MEYCIQDjUULTE3XW6aBzHXC4Rn42mcXTWC76M/41U+U7d5fq9QIhAIv0pYX18bAVxHrIW9uYWTaKd98wJPYI47V3k2LLByEj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58007},"main":"index.js","type":"module","exports":{".":{"types":"./types/index.d.ts","import":"./index.js","default":"./index.js","require":"./index.js"}},"funding":[{"url":"https://github.com/sponsors/LeaVerou","type":"individual"},{"url":"https://opencollective.com/leaverou","type":"opencollective"}],"gitHead":"86b5c308411d53fdc000346cbfb10af971b833e1","scripts":{"test":"open tests/index.html","build":"npm run build:html & npm run build:apidocs","watch":"npm run watch:html & npm run watch:apidocs","release":"release-it","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build:apidocs":"npx typedoc","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","prepublishOnly":"npm run build:types"},"_npmUser":{"name":"leaverou","email":"lea@verou.me"},"repository":{"url":"git+https://github.com/LeaVerou/style-observer.git","type":"git"},"_npmVersion":"11.2.0","description":"Observe CSS property changes on any elements","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"devDependencies":{"typedoc":"^0.28.2","htest.dev":"^0.0.17","release-it":"^18.0.0","typescript":"^5.8.3","@11ty/eleventy":"^3.0.0","markdown-it-anchor":"^9.2.0","prettier-plugin-merge":"^0.7.3","prettier-plugin-brace-style":"^0.7.2","typedoc-plugin-rename-defaults":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.8"},"_npmOperationalInternal":{"tmp":"tmp/style-observer_0.1.1_1748808148044_0.09790937232755792","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"style-observer","description":"Observe CSS property changes on any elements","version":"0.1.2","main":"index.js","exports":{".":{"import":"./index.js","require":"./index.js","types":"./types/index.d.ts","default":"./index.js"}},"scripts":{"test":"open tests/index.html","release":"release-it","build:apidocs":"npx typedoc","build:html":"npx @11ty/eleventy --config=_build/eleventy.js --quiet","build:types":"tsc --allowJs --emitDeclarationOnly --outDir types --declaration index.js","build":"npm run build:html & npm run build:apidocs","watch:apidocs":"npx typedoc --watch --preserveWatchOutput","watch:html":"npx @11ty/eleventy --config=_build/eleventy.js --serve --quiet","watch":"npm run watch:html & npm run watch:apidocs","prepublishOnly":"npm run build:types"},"keywords":[],"contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"homepage":"https://observe.style","repository":{"type":"git","url":"git+https://github.com/LeaVerou/style-observer.git"},"bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"funding":[{"type":"individual","url":"https://github.com/sponsors/LeaVerou"},{"type":"opencollective","url":"https://opencollective.com/leaverou"}],"license":"MIT","type":"module","devDependencies":{"@11ty/eleventy":"^3.0.0","htest.dev":"^0.0.17","markdown-it-anchor":"^9.2.0","prettier-plugin-brace-style":"^0.7.2","prettier-plugin-merge":"^0.7.3","prettier-plugin-space-before-function-paren":"^0.0.8","release-it":"^18.0.0","typedoc":"^0.28.2","typedoc-plugin-rename-defaults":"^0.7.3","typescript":"^5.8.3"},"_id":"style-observer@0.1.2","gitHead":"f3c2c509049bef5417f6d1cc81ca4b547c163cc3","_nodeVersion":"22.14.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-VdGkVx7dGqEzosau63CI33vRJsAGKPJCXyS9f5ze7gFbgsXm0wt5liXUNB9+YjyfhMyD+iTwNa7sM4cvpP3N9Q==","shasum":"d07f5fd9fd57ab26fc6d22c8d9896d142ad9b155","tarball":"https://registry.npmjs.org/style-observer/-/style-observer-0.1.2.tgz","fileCount":39,"unpackedSize":65242,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICcMN5T3/BYrqj9cPxGzKH5DFRRCADwSr3P6K+wTOX7wAiEA4AyTavOoz6v6e+pyJjd3sX3u467uWjdhsSBLQnRtB2M="}]},"_npmUser":{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"},"directories":{},"maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/style-observer_0.1.2_1759915271295_0.3059510529581524"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-07T03:17:10.660Z","modified":"2025-10-08T09:21:11.699Z","0.0.0":"2025-01-07T03:17:10.850Z","0.0.1":"2025-01-27T09:36:50.703Z","0.0.2":"2025-02-11T09:42:26.426Z","0.0.3":"2025-02-12T10:43:12.301Z","0.0.4":"2025-02-12T15:11:39.860Z","0.0.5":"2025-02-20T09:01:41.817Z","0.0.6":"2025-04-08T21:53:21.235Z","0.0.7":"2025-04-11T06:44:15.576Z","0.0.8":"2025-04-23T15:48:58.799Z","0.0.9":"2025-05-14T20:37:19.137Z","0.1.0":"2025-05-22T18:01:17.893Z","0.1.1":"2025-06-01T20:02:28.224Z","0.1.2":"2025-10-08T09:21:11.508Z"},"bugs":{"url":"https://github.com/LeaVerou/style-observer/issues"},"license":"MIT","homepage":"https://observe.style","keywords":[],"repository":{"type":"git","url":"git+https://github.com/LeaVerou/style-observer.git"},"description":"Observe CSS property changes on any elements","contributors":[{"name":"Lea Verou"},{"name":"Dmitry Sharabin"}],"maintainers":[{"name":"leaverou","email":"lea@verou.me"},{"name":"dmitrysharabin","email":"dmitrysharabin@gmail.com"}],"readme":"<header class=\"wa-split\">\n\n<h1 data-version=\"{{ pkg.version }}\"><img src=\"assets/logo.svg\" class=\"logo\" width=\"60\"> Style <span>Observer</span></h1>\n\n<nav>\n\t<a href=\"/api\">API</a>\n\t<span class=\"readme-only\">·</span>\n\t<a href=\"/tests\">Tests</a>\n\t<a href=\"https://github.com/leaverou/style-observer\" target=\"_blank\">\n\t\t<i class=\"fab fa-github\"></i>\n\t</a>\n\t<hr class=\"readme-only\" />\n</nav>\n\n</header>\n<div class=\"page\">\n<aside>\n\n- [Install](#install)\n- [Usage](#usage)\n- [Future Work](#future-work)\n- [Limitations & Caveats](#limitations-%26-caveats)\n- [Prior Art](#prior-art)\n\n</aside>\n<main>\n\n<p class=\"blurb\">\nA robust, production-ready library to observe CSS property changes.\nDetects browser bugs and works around them, so you don't have to.\n</p>\n\n[![npm](https://img.shields.io/npm/v/style-observer)](https://www.npmjs.com/package/style-observer)\n[![gzip size](https://badgen.net/bundlephobia/minzip/style-observer)](https://bundlephobia.com/package/style-observer)\n\n- <span>✅</span> Observe changes to custom properties\n- <span>✅</span> Observe changes to standard properties (except `transition` and `animation`)\n- <span>✅</span> Observe changes on any element (including those in Shadow DOM)\n- <span>✅</span> [Lightweight](https://bundlephobia.com/package/style-observer), ESM-only code, with no dependencies\n- <span>✅</span> [200+ unit tests](tests) you can run in your browser of choice\n- <span>✅</span> Throttling per element\n- <span>✅</span> Does not overwrite existing transitions\n\n## Compatibility\n\n<div class=\"scrollable\">\n<table>\n<thead>\n<tr>\n\t<th>Feature</th>\n\t<th><i class=\"fab fa-chrome\"></i> Chrome</th>\n\t<th><i class=\"fab fa-safari\"></i> Safari</th>\n\t<th><i class=\"fab fa-firefox\"></i> Firefox</th>\n\t<th>% of global users</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n\t<td>Custom properties</td>\n\t<td>117</td>\n\t<td>17.4</td>\n\t<td>129</td>\n\t<td><a href=\"https://caniuse.com/mdn-css_properties_transition-behavior\">89%</a></td>\n</tr>\n<tr>\n\t<td>Custom properties (registered with an animatable type)</td>\n\t<td>97</td>\n\t<td>16.4</td>\n\t<td>128</td>\n\t<td><a href=\"https://caniuse.com/mdn-api_css_registerproperty_static\">93%</a></td>\n</tr>\n<tr>\n\t<td>Standard properties (discrete)\n\t<br><small class=\"compat wa-caption-s\">Except <code>transition</code>, <code>animation</code></small>\n\t</td>\n\t<td>117</td>\n\t<td>17.4</td>\n\t<td>129</td>\n\t<td><a href=\"https://caniuse.com/mdn-css_properties_transition-behavior\">89%</a></td>\n</tr>\n<tr>\n\t<td>Standard properties (animatable)</td>\n\t<td>97</td>\n\t<td>15.4</td>\n\t<td>104</td>\n\t<td>95%</td>\n</tr>\n</tbody>\n</table>\n</div>\n\n## Install\n\nThe quickest way is to just include straight from the [Netlify](https://www.netlify.com/) CDN:\n\n```js\nimport StyleObserver from \"https://observe.style/index.js\";\n```\n\nThis will always point to the latest version, so it may be a good idea to eventually switch to a local version that you can control.\nE.g. you can use npm:\n\n```sh\nnpm install style-observer\n```\n\nand then, if you use a bundler like Rollup or Webpack:\n\n```js\nimport StyleObserver from \"style-observer\";\n```\n\nand if you don’t:\n\n```js\nimport StyleObserver from \"node_modules/style-observer/dist/index.js\";\n```\n\n## Usage\n\nYou can first create the observer instance and then observe, like a `MutationObserver`.\nThe simplest use is observing a single property on a single element:\n\n```js\nconst observer = new StyleObserver(records => console.log(records));\nobserver.observe(document.querySelector(\"#my-element\"), \"--my-custom-property\");\n```\n\nYou can also observe multiple properties on multiple elements:\n\n```js\nconst observer = new StyleObserver(records => console.log(records));\nconst properties = [\"color\", \"--my-custom-property\"];\nconst targets = document.querySelectorAll(\".my-element\");\nobserver.observe(targets, properties);\n```\n\nYou can also provide both targets and properties when creating the observer,\nwhich will also call `observe()` for you:\n\n```js\nimport StyleObserver from \"style-observer\";\n\nconst observer = new StyleObserver(callback, {\n\ttargets: document.querySelectorAll(\".my-element\"),\n\tproperties: [\"color\", \"--my-custom-property\"],\n});\n```\n\nBoth targets and properties can be either a single value or an iterable.\n\nNote that the observer will not fire immediately for the initial state of the elements (i.e. it behaves like `MutationObserver`, not like `ResizeObserver`).\n\n### Records\n\nJust like other observers, changes that happen too close together (set the `throttle` option to configure) will only invoke the callback once,\nwith an array of records, one for each change.\n\nEach record is an object with the following properties:\n\n- `target`: The element that changed\n- `property`: The property that changed\n- `value`: The new value of the property\n- `oldValue`: The previous value of the property\n\n## Future Work\n\n- Observe pseudo-elements\n- `immediate` convenience option that fires the callback immediately for every observed element\n\n## Limitations & Caveats\n\n- You cannot observe changes on elements **not connected to a document**. However, once the elements become connected again, the observer will pick up any changes that happened while they were disconnected.\n- You cannot observe changes to `transition` and `animation` properties (and their constituent properties).\n- You cannot observe changes **caused by CSS animations** (follow [#87](https://github.com/LeaVerou/style-observer/issues/87) for updates).\n- Changes caused due to a slotted element being moved to a different slot will not be picked up.\n\n### Changing `transition` properties after observing\n\nIf you change the `transition`/`transition-*` properties dynamically on elements you are observing after you start observing them,\nthe easiest way to ensure the observer continues working as expected is to call `observer.updateTransition(targets)` to regenerate the `transition` property the observer uses to detect changes.\n\nIf running JS is not an option, you can also do it manually:\n\n1. Add `, var(--style-observer-transition, --style-observer-noop)` at the end of your `transition` property.\n   E.g. if instead of `transition: 1s background` you'd set `transition: 1s background, var(--style-observer-transition, --style-observer-noop)`.\n2. Make sure to also set `transition-behavior: allow-discrete;`.\n\n## Prior Art\n\nThe quest for a JS style observer has been long and torturous.\n\n- Early attempts used polling. Notable examples were [`ComputedStyleObserver` by Keith Clark](https://github.com/keithclark/ComputedStyleObserver)\n  and [`StyleObserver` by PixelsCommander](https://github.com/PixelsCommander/StyleObserver)\n- [Jane Ori](https://propjockey.io) was the first to do better than polling, her [css-var-listener](https://github.com/propjockey/css-var-listener) using a combination of observers and events.\n- [css-variable-observer](https://github.com/fluorumlabs/css-variable-observer) by [Artem Godin](https://github.com/fluorumlabs) pioneered using transition events to observe property changes, and used an ingenious hack based on `font-variation-settings` to observe CSS property changes.\n- Four years later, [Bramus Van Damme](https://github.com/bramus) pioneered a way to do it \"properly\" in [style-observer](https://github.com/bramus/style-observer),\n  thanks to [`transition-behavior: allow-discrete`](https://caniuse.com/mdn-css_properties_transition-behavior) becoming Baseline and even [blogged about all the bugs he encountered along the way](https://www.bram.us/2024/08/31/introducing-bramus-style-observer-a-mutationobserver-for-css/).\n\nWhile `StyleObserver` builds on this body of work, it is not a fork of any of them.\nIt was written from scratch with the explicit goal of extending browser support and robustness.\n[Read the blog post](https://lea.verou.me/2025/style-observer/) for more details.\n\n</main>\n</div>\n<footer>\n<hr class=\"readme-only\" />\n\nBy [Lea Verou](https://lea.verou.me/) and [Dmitry Sharabin](https://d12n.me/).\n\n</footer>\n","readmeFilename":"README.md"}