{"_id":"@codemovie/code-movie-runtime","_rev":"8-0a246fb074d184df1a5145661d6b3f8b","name":"@codemovie/code-movie-runtime","dist-tags":{"latest":"2.4.0"},"versions":{"1.0.2":{"name":"@codemovie/code-movie-runtime","version":"1.0.2","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@1.0.2","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"homepage":"https://github.com/CodeMovie/code-movie-runtime","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"edb76ed6513bb89f87262e343c4d0cf3b68bc456","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-1.0.2.tgz","fileCount":17,"integrity":"sha512-DdgjEVvCkYu8bhqVxZKszw3xoxq7pR3YlIqsUZ4E2kX690w6Mu1f+Qf5Na/HRPJVQcasmSpilZmv7tVQbsRgdQ==","signatures":[{"sig":"MEYCIQDxgDcjsH60qCYo20bWZxK2Bj09O1Ddh4Kdus+Q3njiAQIhAIMbCrtP6lGMUl78Fog7ukaG7/2wUApJtAtrJZATYIFO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfiDMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3ahAAmuWGZFEYVtIOA56sRx0u0G0ud0ym8AJ6mvcC4dnve7i0hRnw\r\n2Xt0+Ba+XDeKRXCBE9CHyY8l1AjvKAifCNrIKcApNCLEdh6FCL4BZrSXzJvt\r\nQg4QgRW8uz1jymjOQGR5QGh0dlUz5ydXTMuGu8Z6yy9GOcz5g64gYdPIvZCF\r\nQD3V+r+xUi8tWlD88bGcG+2KnZEnRFWGkvzc43vpKkAVjh3nsC5UzOVebi28\r\nktNPjV90sBql4I2KlRnEeqw84vrF9bmLn299Izh/SE4lAWeIJInRtdoL9J+m\r\njgvv3iVzsWKpFr6m45Hg9J1y896WiuMmC/gvek9ZXLT4GZzj4CwNAHW7nyIO\r\nAw+YzzE5tOa/B82ltjJSzZIkOKW6eI+Keuz9o40uaNQYM85gC9Bh0Nk4cbB3\r\nHwETP3bIdVpb36ZgYWGeDGzM6jleCYY604GhNV2Kk3DEFyZghZB8JFolNU94\r\n/rOVmh6RsaI0Niielt9AJsmXzsqmU4/q4jf5cr+p/55Hb77z8Qn8EC/rJ/yJ\r\neOs3zrdX3xjtw05HNflC/7UOocBChMt9uIcMwMs3Xner5+jZ4Q4ljE5I5VMh\r\nmpkfLNHtdPZpqBTqhsaAkbzyi5I6HXDQ5EdIApYB4lmcxBLORUpO8NBM/X/o\r\n44urhPoP9nk8YMF07VDH+K5lNCWkZJbzaOw=\r\n=uadQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/module.js","types":"dist/index.d.ts","module":"dist/module.js","browser":"dist/bundle.js","gitHead":"42e470e2a9ba40f28ac96b8212e9cc476798754a","scripts":{"lint":"eslint .","test":"jest","build":"rm -rf dist && mkdir dist && npm run esbuild && npm run ts:types","esbuild":"npm run esbuild:browser && npm run esbuild:module","release":"release-it","ts:check":"tsc -p tsconfig.json --noEmit","ts:types":"tsc -p tsconfig.build.json","test:watch":"jest --watch","build:watch":"esbuild src/bundle.ts --bundle --sourcemap --target=es2020 --outfile=dist/index.js --watch","esbuild:module":"esbuild src/index.ts --format=esm --target=es2020 --outfile=dist/index.js","prepublishOnly":"npm run ts:check && npm run lint && npm run test && npm run build","esbuild:browser":"esbuild src/bundle.ts --bundle --minify --target=es2020 --outfile=dist/bundle.js"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"8.5.5","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"16.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.2","eslint":"^8.15.0","esbuild":"^0.14.47","ts-jest":"^28.0.5","prettier":"^2.6.2","release-it":"^15.5.0","typescript":"^4.6.4","@types/jest":"^28.1.4","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","jest-environment-jsdom":"^28.1.2","@typescript-eslint/parser":"^5.25.0","@typescript-eslint/eslint-plugin":"^5.25.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_1.0.2_1669210315911_0.2556723360133146","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@codemovie/code-movie-runtime","version":"1.0.3","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@1.0.3","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"homepage":"https://github.com/CodeMovie/code-movie-runtime","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"5b883c187db094f02706381fa110256a3859e37b","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-1.0.3.tgz","fileCount":17,"integrity":"sha512-QOiEnqKSltauLJGKrrZCNu18hf6sr6bw4onhrTHg/wkArB+0rcg3QiE7rKYn15kUErJWF/A0q6zwRryseKgP8A==","signatures":[{"sig":"MEYCIQDBO84Ou8ZnYOKDZFOKbIBr/vhVtk2YEdrNlF7O/Bm4RQIhAIV+8r32iM5X4I/5ZTm7wz//Sd/lU9Va1RFXihkvZBEl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjfiZ0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpvgg//fIVkUJFmQSFVizfYj6bkNvdvO1FWgXSBhq0iKlHigBYs4sm6\r\n8NY3J7HzTwDwJfQBrGoU00SQgaI3HBLKw7y0Ilb8Z00mQFNWrusDfHNsHmlu\r\nEYIKkMH0tJH8zO0carSl5UyWpT/n3A/3/d53GbimHo8SKDNYyTMR5arKXJG6\r\nNgi1NFHiXwkVS5Sfj1flS74HXLCICidpJr9aPKmVBOKwHBTzDN6tHi9AwHc1\r\nbYuCHjWCTfCckSKq4RmTJkfgWkFnnyetiEnwHJESLZivJ5nmAIHilJqLc1wN\r\nEQYcnAEs/vyz9HdyORpJUa0iqRRzN24dy2EQqBHOg9QnzhFS7pK+tCB7gb2Y\r\nhoO/zRdgFS3XDCYTSTQveYf6RSBN+mhMB9i906coRQulFGKYfh65tvlUyEF/\r\ndx1xYuLLHmt+4icgoP415Kn1mwk0DeXv2x4SqF3BZPtOACkCN2iWbphEF4B3\r\nTro95RvYXExFbZYYwunzcrFHV0Y/w7RV/gSl2UXfc93VuRAJAah8xym7AyKy\r\ndgYwCfWjBKLXaqRJYm1ex/93n7+tYXEZU3XX0wRgZuzaYLVIW88zFRPQy/eQ\r\nbL8wNPCw7wRuMCoVMIfV6f8jEuod2YpcF7ntbED5bMETO204BzXYRgP1hoa/\r\nHQaJbYUAAwEHoio5hiR+ynfmE8vN2goPMXU=\r\n=BW64\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/module.js","types":"dist/index.d.ts","module":"dist/module.js","browser":"dist/bundle.js","gitHead":"b4dd027a4783d71ef3d998e8e75f556b460be2a0","scripts":{"lint":"eslint .","test":"jest","build":"rm -rf dist && mkdir dist && npm run esbuild && npm run ts:types","esbuild":"npm run esbuild:browser && npm run esbuild:module","release":"release-it","ts:check":"tsc -p tsconfig.json --noEmit","ts:types":"tsc -p tsconfig.build.json","test:watch":"jest --watch","build:watch":"esbuild src/bundle.ts --bundle --sourcemap --target=es2020 --outfile=dist/index.js --watch","esbuild:module":"esbuild src/index.ts --format=esm --target=es2020 --outfile=dist/index.js","prepublishOnly":"npm run ts:check && npm run lint && npm run test && npm run build","esbuild:browser":"esbuild src/bundle.ts --bundle --minify --target=es2020 --outfile=dist/bundle.js"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"8.5.5","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"16.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.2","eslint":"^8.15.0","esbuild":"^0.14.47","ts-jest":"^28.0.5","prettier":"^2.6.2","release-it":"^15.5.0","typescript":"^4.6.4","@types/jest":"^28.1.4","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.0.0","jest-environment-jsdom":"^28.1.2","@typescript-eslint/parser":"^5.25.0","@typescript-eslint/eslint-plugin":"^5.25.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_1.0.3_1669211764319_0.5233704847278826","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@codemovie/code-movie-runtime","version":"2.0.0","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@2.0.0","homepage":"https://github.com/CodeMovie/code-movie-runtime","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"6750dd7ea565d09816129e8c42a2d71812b27689","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.0.0.tgz","fileCount":16,"integrity":"sha512-667SG/byhL4GyVtImQJCtvC3kNOsVHLqBrq223AZqUqFWmIiDd0AlHyd6NRm4mULVQipSxcfyxzvnaK0njBIdA==","signatures":[{"sig":"MEQCIDIHZqgk5Rwe5R6745jvsotkcO46iKgCGGm8tmjxKyLfAiB+XaXaw65NjXur5RyAzYcKWu99UFeGg9rEHDajh4hIug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22269},"main":"dist/module.js","type":"module","types":"dist/index.d.ts","gitHead":"f625e9d293e3dcc88b246e455b3eda8a5c06c69d","scripts":{"lint":"eslint && prettier . --check","test":"jest","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","types":"tsc -p tsconfig.types.json","release":"release-it","test-dev":"jest --watch","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"10.2.4","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"20.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","esbuild":"^0.21.5","ts-jest":"^29.1.5","prettier":"3.3.2","@eslint/js":"^9.5.0","release-it":"^17.4.0","typescript":"^5.5.2","@types/jest":"^29.5.12","@types/eslint__js":"^8.42.3","typescript-eslint":"^7.14.1","eslint-config-prettier":"^9.1.0","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_2.0.0_1719310007834_0.09133110745650397","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@codemovie/code-movie-runtime","version":"2.0.1","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@2.0.1","homepage":"https://github.com/CodeMovie/code-movie-runtime","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"73f0aa9d39442f485810ae7bd69f664ff792ca9d","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.0.1.tgz","fileCount":16,"integrity":"sha512-rSf4w87brN94sADsEjta5NVappkf0XlA3TlMXdylMbLIBsBY9PIW0MVMp5ECzNHqfuroSKL1jUIsguzFo7xKdA==","signatures":[{"sig":"MEYCIQCw162G4Q1X/a+GQJjQ1Mdt0MZlEh+gyA54UeUuyk0ohgIhAM48hY5VCDeytzNHj7PljJkJotlAB29YEkWcMNfH6q4u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22268},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"44c1c872dff86c607581e0b01d6d8109fcc49757","scripts":{"lint":"eslint && prettier . --check","test":"jest","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","types":"tsc -p tsconfig.types.json","release":"release-it","test-dev":"jest --watch","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"10.2.4","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"20.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","esbuild":"^0.21.5","ts-jest":"^29.1.5","prettier":"3.3.2","@eslint/js":"^9.5.0","release-it":"^17.4.0","typescript":"^5.5.2","@types/jest":"^29.5.12","@types/eslint__js":"^8.42.3","typescript-eslint":"^7.14.1","eslint-config-prettier":"^9.1.0","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_2.0.1_1719310335783_0.9401709347737717","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@codemovie/code-movie-runtime","version":"2.1.0","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@2.1.0","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"homepage":"https://github.com/CodeMovie/code-movie-runtime","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"7ae56b6bffdbfed0979646921d6ca73a2ed8166b","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.1.0.tgz","fileCount":17,"integrity":"sha512-dG56CfFH8ePVlsTdb4UaLi/EDnyIHrV8Aj9YzAYMWBg/PhGbmYpYJCQN8oDH07BUNljmtiSQOKvrPA1DCOOWTw==","signatures":[{"sig":"MEYCIQCJB8HodUa31TfSodFqUYRGjx53dDSY2OfODXNHw57x9wIhAM5YJJOclPtXwhqC/9OqTWXrQA1edWs8r1CBKHYqH364","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23276},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"641bf6df5fb47720c087701e4bc5dddfad57b396","scripts":{"lint":"eslint && prettier . --check","test":"jest","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","types":"tsc -p tsconfig.types.json","release":"release-it","test-dev":"jest --watch","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"10.8.2","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"20.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.57.0","esbuild":"^0.24.0","ts-jest":"^29.1.5","prettier":"^3.3.2","@eslint/js":"^9.5.0","release-it":"^17.4.0","typescript":"^5.5.2","@types/jest":"^29.5.12","@types/eslint__js":"^8.42.3","typescript-eslint":"^8.8.0","eslint-config-prettier":"^9.1.0","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_2.1.0_1728306239340_0.14555316611154234","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@codemovie/code-movie-runtime","version":"2.2.0","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@2.2.0","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"homepage":"https://code.movie/","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"089791b2197cec05cf4c3f8aaddfbe3c76b513a6","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.2.0.tgz","fileCount":17,"integrity":"sha512-BfC7A2n6HESabpG5KnHVbmXZJjODh/VThWm91KTc2k7BXlSyKF6+Vysr10CUMQ4JTxQKc0lPtcQkmEnonSnUKQ==","signatures":[{"sig":"MEYCIQCYJcWBifA17Vqb+4LmzTvt5qxOtFtxbL4CHrnluzMYcAIhAP+wGurSQQzT+TnKnGKyJPmr33XLf5Q0U2oyX1ocwFZ8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27274},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"a1954cf760528c0c9498284fa098a775be6763a8","scripts":{"lint":"prettier . --check && eslint src test","test":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers firefox chromium webkit","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","types":"tsc -p tsconfig.types.json","release":"release-it","test-dev":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers chromium","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"23.6.0","dependencies":{"@types/mocha":"^10.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sinon":"^19.0.0","eslint":"^9.0.0","esbuild":"^0.24.0","prettier":"^3.3.2","@eslint/js":"^9.5.0","release-it":"^18.0.0","typescript":"^5.5.2","@types/sinon":"^17.0.0","@esm-bundle/chai":"^4.3.4-fix.0","@web/test-runner":"^0.19.0","typescript-eslint":"^8.8.0","eslint-config-prettier":"^10.0.0","@web/dev-server-esbuild":"^1.0.3","@web/test-runner-playwright":"^0.11.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_2.2.0_1737386930294_0.1316484533044482","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@codemovie/code-movie-runtime","version":"2.3.0","author":{"name":"peter@peterkroener.de"},"license":"MIT","_id":"@codemovie/code-movie-runtime@2.3.0","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"homepage":"https://code.movie/","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"dist":{"shasum":"5dcfc595b1337f3cc274ba7f4033460c2cc43665","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.3.0.tgz","fileCount":17,"integrity":"sha512-mnRutSeFGXlyEHbnFLbJTVaJ77lLe6ItCAmDz02Gwe3kx+QFig0spTTeaG9QIlMKatobwJf29ViofEs/Urw0Kw==","signatures":[{"sig":"MEQCIFpbwDR6fI+bitlBijhjIxf/RQH5Mh1KjiLEs1o9kr9SAiAidYwFmcCn8RSMwG9zvQEAW8kK8mYjsHORt0GQw+SuLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28106},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","volta":{"node":"22.14.0"},"gitHead":"cea1ff5675d3032da9bf0065a7ef1ca2ac5dcebe","scripts":{"lint":"prettier . --check && eslint src test","test":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers firefox chromium webkit","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","types":"tsc -p tsconfig.types.json","release":"release-it","test-dev":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers chromium","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"repository":{"url":"git://github.com/CodeMovie/code-movie-runtime.git","type":"git"},"_npmVersion":"10.9.2","description":"Web runtime element for Code.Movie animations","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sinon":"^20.0.0","eslint":"^9.0.0","esbuild":"^0.25.0","prettier":"^3.3.2","@eslint/js":"^9.5.0","release-it":"^18.0.0","typescript":"^5.5.2","@types/mocha":"^10.0.10","@types/sinon":"^17.0.0","@esm-bundle/chai":"^4.3.4-fix.0","@web/test-runner":"^0.20.0","typescript-eslint":"^8.8.0","eslint-config-prettier":"^10.0.0","@web/dev-server-esbuild":"^1.0.3","@web/test-runner-playwright":"^0.11.0"},"_npmOperationalInternal":{"tmp":"tmp/code-movie-runtime_2.3.0_1743685144500_0.3819033983949951","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@codemovie/code-movie-runtime","description":"Web runtime element for Code.Movie animations","keywords":["highlight","syntax","animation","morph","diff","code"],"version":"2.4.0","type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"lint":"prettier . --check && eslint src test","types":"tsc -p tsconfig.types.json","build":"rm -rf dist && npm run types && esbuild src/index.ts --bundle --minify --format=esm --target=es2020 --outfile=dist/index.js ","build-dev":"esbuild src/index.ts --bundle --sourcemap --format=esm --target=es2020 --outfile=dist/index.js --watch","test":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers firefox chromium webkit","test-dev":"NODE_ENV=test wtr test/**/*.test.ts --playwright --browsers chromium","prepublishOnly":"npm run types && npm run lint && npm run test && npm run build","release":"release-it"},"author":{"name":"peter@peterkroener.de"},"license":"MIT","devDependencies":{"@eslint/js":"^9.5.0","@esm-bundle/chai":"^4.3.4-fix.0","@types/mocha":"^10.0.10","@types/sinon":"^20.0.0","@web/dev-server-esbuild":"^1.0.3","@web/test-runner":"^0.20.0","@web/test-runner-playwright":"^0.11.0","esbuild":"^0.27.0","eslint":"^9.0.0","eslint-config-prettier":"^10.0.0","prettier":"^3.3.2","release-it":"^19.0.0","sinon":"^21.0.0","typescript":"^5.5.2","typescript-eslint":"^8.8.0"},"repository":{"type":"git","url":"git://github.com/CodeMovie/code-movie-runtime.git"},"homepage":"https://code.movie/","bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"publishConfig":{"access":"public"},"volta":{"node":"22.14.0"},"_id":"@codemovie/code-movie-runtime@2.4.0","gitHead":"460ceb54a20ca6080ae5220a1a5bf0f32d3d3df4","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-bZVB2OVl8A8XYjXOe3IA5pqwQ41PhFlK3vhHMhLdZUMvMaYLZkPpqQlAwck9KmTZao/EuvupL0OpcQkzfL3Uzw==","shasum":"f503a2dd7d7d0d14381b12a47cae0e2a22a921f7","tarball":"https://registry.npmjs.org/@codemovie/code-movie-runtime/-/code-movie-runtime-2.4.0.tgz","fileCount":17,"unpackedSize":29335,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzaYchC8eL1lZc0uhZ0Vv2GmchSAIm/A8oB5F975OFUgIgWOhu2kfOQ6e8sA9gzKYD1yZAVqUadQqLLkeo9XSdHew="}]},"_npmUser":{"name":"sirpepe","email":"peter@peterkroener.de"},"directories":{},"maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/code-movie-runtime_2.4.0_1763042774472_0.7724976675018165"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-23T13:31:55.809Z","modified":"2025-11-13T14:06:14.839Z","1.0.2":"2022-11-23T13:31:56.130Z","1.0.3":"2022-11-23T13:56:04.512Z","2.0.0":"2024-06-25T10:06:48.003Z","2.0.1":"2024-06-25T10:12:15.967Z","2.1.0":"2024-10-07T13:03:59.522Z","2.2.0":"2025-01-20T15:28:50.542Z","2.3.0":"2025-04-03T12:59:04.691Z","2.4.0":"2025-11-13T14:06:14.659Z"},"bugs":{"url":"https://github.com/CodeMovie/code-movie-runtime/issues"},"author":{"name":"peter@peterkroener.de"},"license":"MIT","homepage":"https://code.movie/","repository":{"type":"git","url":"git://github.com/CodeMovie/code-movie-runtime.git"},"description":"Web runtime element for Code.Movie animations","maintainers":[{"name":"sirpepe","email":"peter@peterkroener.de"}],"readme":"# `<code-movie-runtime>` - Web runtime for [Code.Movie](https://code.movie/)\n\nConvenient wrapper for [Code.Movie](https://code.movie/) animations that provides a basic high-level UI and DOM API via the custom element `<code-movie-runtime>`.\n\n## Setup\n\nYou can install the library as `@codemovie/code-movie-runtime` from NPM, [download the latest release from GitHub](https://github.com/CodeMovie/code-movie-runtime/releases) or just grab `dist/index.js` [from the source code](https://github.com/CodeMovie/code-movie-runtime/tree/main/dist). The library exports the component class and auto-registers the tag name `code-movie-runtime`. You can throw the module into any web page without doing anything else and it will just work.\n\n<!-- prettier-ignore -->\n> [!IMPORTANT]\n> **This package does _not_ bundle the Code.Movie core library!** You have to either manually install [@codemovie/code-movie](https://www.npmjs.com/package/@codemovie/code-movie) or load the relevant files from a CDN like [jsDelivr](https://www.jsdelivr.com/) as shown in the examples below.\n\nThe element works by [slotting](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) another element (the animation) and switching classes on it. The element is extremely basic and meant to be used by other tools or hacked and extended by you, the user.\n\n## HTML API\n\n### General usage\n\nThe element `<code-movie-runtime>` is a custom HTML element with several slots, attributes, and DOM properties for customization. To get it working, just load `dist/index.js` as module in your web page! A minimal example:\n\n```html\n<script type=\"module\" src=\"dist/index.js\"></script>\n\n<code-movie-runtime controls keyframes=\"0 1 2 3\">\n  <div>Switch classes on me!</div>\n</code-movie-runtime>\n```\n\nThis will render twe buttons below the `<div>`. Clicking on them cycles classes on the `<div>` from `frame0` to `frame1` to `frame2` to `frame3`. The keyframes are defined as a whitespace-separated list of numbers in the `keyframes` attribute while the existence of the `controls` attribute provides basic forwards/backwards buttons.\n\nAttribute summary:\n\n- `controls`: Boolean attribute. When present, shows controls UI (by default just a pair of forwards/backwards buttons). Reflected by the DOM property `controls`.\n- `keyframes`: Defines the list of keyframes with a value of whitespace-separated positive integers. Values that are anything but a list of whitespace-separated integers are equal to the attribute missing (eg. there are no keyframes at all in this case). The list of keyframes is internally sorted in ascending order and cleared of any duplicates or non-numbers. Negative numbers are interpreted as positive numbers.\n- `current`: Indicates the current frame index. Can be set to another number to change the current frame. Reflected by the DOM property `current`. Values that are anything but a positive integer are treated as `0`.\n\n### Custom controls\n\nThe default control UI for the element is basic and ugly. There are three options to remedy this:\n\n#### 1. Wrap the element\n\nYou can wrap a `<code-movie-runtime>` element _without_ a `controls` attribute and add your own custom logic that uses the JavaScript API described below. This is probably the way to go for integration in frameworks like React.\n\n#### 2. Style the controls\n\nIf you just want to reposition and re-style the existing controls, you can use the following CSS [`::part()` selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/::part):\n\n- `code-movie-runtime::part(controls)`: The container element for the buttons\n- `code-movie-runtime::part(controls-prevBtn)`: The \"previous\" button\n- `code-movie-runtime::part(controls-nextBtn)`: The \"next\" button\n\nThe buttons are `<button>` elements with `<span>` elements inside.\n\n#### 3. Replace the controls\n\nThe default controls are actually just fallback content for a shadow DOM slot. This means that you can very easily add your own:\n\n```html\n<code-movie-runtime controls keyframes=\"0 1 2 3\">\n  <div>Switch classes on me!</div>\n  <div slot=\"controls\">\n    <div data-command=\"prev\">Back</div>\n    <div data-command=\"next\">Next</div>\n  </div>\n</code-movie-runtime>\n```\n\nAll you need to do to make your custom buttons (in this case, `<div>` elements) work is to add the attributes `data-command=\"prev\"` and `data-command=\"next\"` respectively. You can also build up your custom controls to do way more than just provide two buttons. See `demo/index.html` for an example.\n\n#### 4. Hack the element\n\nThe element's shadow root is open and most of the private properties on the `CodeMovieRuntime` class are not actually private. Go and mess with them!\n\n### Auxiliary content\n\nElements assigned to the slot named `aux` are styled to be only visible when their class name matches the currently active frame:\n\n```html\n<code-movie-runtime controls keyframes=\"0 1 2\">\n  <div>Switch classes on me!</div>\n  <p slot=\"aux\" class=\"frame0\">Only visible for step 0</p>\n  <p slot=\"aux\" class=\"frame1\">Only visible for step 1</p>\n  <p slot=\"aux\" class=\"frame2\">Only visible for step 2</p>\n</code-movie-runtime>\n```\n\n## JavaScript API\n\n### class `CodeMovieRuntime`\n\n#### static `with(length: number)` (CodeMovieRuntime)\n\nFactory function that takes a number of steps and returns an instance of `<code-movie-runtime>` with the `keyframes` attribute set accordingly. Example:\n\n```javascript\nlet instance = CodeMovieRuntime.with(4);\n// instance = <code-movie-runtime keyframes=\"0, 1, 2, 3\"></code-movie-runtime>\n```\n\n### Instances\n\nInstances of `<code-movie-runtime>` implement the following DOM APIs:\n\n#### getter/setter `controls` (boolean)\n\nReflects the HTML attribute `controls`. Setting this property to a falsy value removes the attribute and makes the control UI invisible. Note that this also affects custom control UI that has been slotted.\n\n#### getter/setter `current` (number)\n\nReflects and sets the current keyframe. The setter can be used to navigate to a specific keyframe. It coerces and rounds values to integers and clamps them to the range of available keyframes.\n\n#### getter `nextCurrent` (number | null)\n\nReflects the keyframe the element is about to switch to during an `cm-beforeframechange` event. This property is only set during this event and returns `null` at any other time. The property can be inspected when handling a `cm-beforeframechange` and its value can be used to decide if the event should be canceled.\n\n#### getter `maxFrame` (number)\n\nReturns the last keyframe.\n\n#### getter/setter `keyframes` (Array\\<number\\>)\n\nReflects the HTML attribute `keyframes`. Setting this property to anything but an array is equal to setting the property to an empty array. Non-numeric array contents is coerced to positive integers if possible and discarded otherwise.\n\n#### methods `next()` and `prev()`\n\nGo to the next or previous keyframe respectively, unless the corresponding `cm-beforeframechange` event gets cancelled. Returns a number indicating the new keyframe.\n\n#### method `go(value: number): number`\n\nSets the current keyframe to the specified value just like the setter for `current` does. Coerces and rounds input values to integers and clamps them to the range of available keyframes. Returns the current keyframe.\n\n#### Event `cm-beforeframechange` (bubbles, cancelable, not composed)\n\nFires before a frame change occurs. Call `preventDefault()` on the event to stop the frame change from happening. You can inspect the event target's `current` property to figure out the current frame and the event target's `nextCurrent` property to see what the next frame is going to be and then decide whether or not you want to to stop the frame change.\n\n#### Event `cm-afterframechange` (bubbles, not cancelable, not composed)\n\nAs the name suggests, this is fired after a frame change has occurred.\n\n## CSS API\n\nThe element uses its [custom state set](https://developer.mozilla.org/en-US/docs/Web/API/CustomStateSet) to track the current frame. If the current frame is 7 for example, the CSS selector `code-movie-runtime:state(frame7)` will match. There are also the custom states `hasNext` and `hasPrev`, which indicate if the element is at its first or last keyframe.\n\nThe default shadow DOM template by overriding the static method `_template`. The default template provides several [shadow parts](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_shadow_parts) for your CSS to hook into:\n\n- `wrapper`\n  - `controls-wrapper`\n    - `controls` (default controls, can be replaced entirely as explained above)\n      - `controls-prevBtn`\n      - `controls-nextBtn`\n  - `aux-wrapper`\n\n## Notes\n\nNeither dom properties nor HTML attributes for the events `cm-beforeframechange` and `cm-afterframechange` are implemented! You _must_ use `addEventListener()`, attributes or properties like `onCmAfterframechange = ...` are **not supported.**\n\n## Integrations\n\n### TypeScript\n\nThe module provides types for the element's class `CodeMovieRuntime` and adds its declarations into `HTMLElementTagNameMap`. This ensures that built-ins like `document.createElement()` know how to handle the new tag name `code-movie-runtime`. Unless you want to use another tag name or integrate with special HTML snowflakes like React, you don't have to do anything.\n","readmeFilename":"README.md","keywords":["highlight","syntax","animation","morph","diff","code"]}