{"_id":"@ekg.training/ekg-video-player","_rev":"22-25377f7542c4e5ebe41ad0b105851b48","name":"@ekg.training/ekg-video-player","dist-tags":{"latest":"1.4.3"},"versions":{"1.0.3":{"name":"@ekg.training/ekg-video-player","version":"1.0.3","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.3","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"67984bc08a3210670dc9905a2fdf01546f735827","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.3.tgz","fileCount":8,"integrity":"sha512-HkGhuMBvk4ndDYk5vdY2wHx/gS7DPhK9D+CyqOhagQ2Wx0YRf5whhpD/AFD+7Wv4/1adtAsWqwJG3WJgfVa0bA==","signatures":[{"sig":"MEYCIQCgq3ASd1OeK4dzVNr2q4wwbeRS+1ZaMKBNToV6msImzAIhALScinyYyFmxoLMzFD26qFz6fQ6w1lPDqVMOWy+XOS4U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":905011},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b1af65121039b571ee3191f1e6f64dd837b982f8","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.3_1756297406987_0.0637864451299448","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@ekg.training/ekg-video-player","version":"1.0.4","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.4","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"198fcb88fd0ef63b73aa8247888a290c577b2aeb","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.4.tgz","fileCount":8,"integrity":"sha512-v3OPS+RZac/Y+IHgaBCjF78zbtgIsCz/JytOzWWviEoPjgs/P7aJpLfH2RWo/8a+MdMFHP5TqsoGyWjbMg+8Cw==","signatures":[{"sig":"MEUCIQCSdD5MELlFnJ91WUYIYGYn61VYeJ60i2T/COiAyVazdAIgTmLXip2GsNhPWJSjeibCeu5PatyhUJhOVPDkCeaZyDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":910052},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"947814cbdf212c197bc6f940c8ed34d2eac6f3e6","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.4","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.4_1756389227049_0.03210996057364257","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@ekg.training/ekg-video-player","version":"1.0.5","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.5","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"21984181636b9f372805ed1dc00cfddbe4dd4a26","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.5.tgz","fileCount":8,"integrity":"sha512-tkUAoNA5JGqOj6qqmBFGYDVWQ4qx08Y9kz0Nru9qfVybUZExCKz5XtKXH98pa/Q+jCMzQUHcS6r+7B2t8qQchw==","signatures":[{"sig":"MEYCIQCbfPXzMwkUIbR71y77yckmP3uo1W1efj6rmlO+nJEHugIhANe7/79/KP0sXP/x4SdQOMGU/ahv1a3W2RhZ35lnfmVo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":922405},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"5fa18906d2644f19b79bed4de7314f897608bc01","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.5_1758819567931_0.7262324828926674","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@ekg.training/ekg-video-player","version":"1.0.6","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.6","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"27785b05903f24d26768971372c82f531ffabc51","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.6.tgz","fileCount":8,"integrity":"sha512-SspUrCWVu5aMQ24ahNxjpcR0rN6TXV/ZC8iCclTHLxNI/5Ko7ES1yC3LAyANw1VIJm+mIrNFh2HwkUc1m3jMJQ==","signatures":[{"sig":"MEYCIQC0DRzeK+snirq9jLbNaDDOJayZNnYyrMElz33da6kriAIhALKCYTH0/U+2z1U0AoPHtrUdGSzg6qrZ8XoMMmtZzbud","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":922865},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"932fb59a767d5738a84d2fa8f3e60e46dbc71e7b","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.6_1759142036737_0.5727157465602257","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@ekg.training/ekg-video-player","version":"1.0.7","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.7","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"b66699dc7c4aa3a9cdb06eee347b1cf178f2ec1b","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.7.tgz","fileCount":8,"integrity":"sha512-dI4dWX7nhfQg+ZVnh1xvfkK1TjJ4qq3Oap8gJpQ44AXs/OGxJD3OqYWBDZ259iYmrbWO+Mhg8lLMjfnZI1rD5g==","signatures":[{"sig":"MEQCIH3olRVnLi+81UUgl9OWIR+82dQ9SpkHHRORZR40ZjJCAiBPZjxEAc6up+hW1W63sOMi/Qj7/mJ2nVG2LWfys0howw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":921016},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"82aa6b3891790a40c523191103eb7bc8a1bc7198","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.7_1760013679628_0.8620103674696087","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@ekg.training/ekg-video-player","version":"1.0.8","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.8","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"b94ec2843952977e28a8150b15c7af9780d762d1","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.8.tgz","fileCount":8,"integrity":"sha512-CeH2+BH+32rcopeGn/mhFT5Y0nxyvtHwX/BbpnBlat6d6J4ICtfVzJVVMPM4dDOQBiq5K0PtMwcmZMQlcwaEtg==","signatures":[{"sig":"MEUCIFa0JOuZraSxnWZqffOFpXztOb8CijIIMoxANcErBAwJAiEA7DKG4RIguSE+qtrdH0tbnnrUx7WJOaEH8pnXe0t66Gc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":927927},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"80ddcb7d73acdd768dbc7c8df0b169298eefa9c0","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.8_1760720585254_0.7833058487916615","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@ekg.training/ekg-video-player","version":"1.0.9","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.0.9","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"82e829360ec9441e3c269bbe3698d8dbdc7bb492","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.0.9.tgz","fileCount":8,"integrity":"sha512-ocTi2sMr2cOwFCsrjoK7bPD5mKZPAU2zM3dAGa0lcSv1E+md+e+z9E8dFcxTi3MX2nbhRdBuWCWoWWiZ0Mk0jQ==","signatures":[{"sig":"MEUCIC83L44JiLoMCp+cFA5dBHoWcf/68pVBZeUbLh08tuk6AiEA2vA3hwCRtJUt4lsratpQ/nGOavjPTBiu8Vu1NkZPguc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":928107},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"d6dff726043466478747fb8331c4824884c9bfb2","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.0.9_1760725852254_0.814731180708965","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ekg.training/ekg-video-player","version":"1.1.0","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.1.0","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"51312985f2d1a66e567fc339444c599fbfe20807","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.1.0.tgz","fileCount":8,"integrity":"sha512-jU+jd57zrSmXT0NGjOm494pBBkfSbvdyc6E6F1pU0UGXu1Xq/a61VTVG6erDoYEr0TL4e3RoSK0zvCvynYWymg==","signatures":[{"sig":"MEQCIGxjjupTDOY2XxfVcqRUvmiU1aUa3IHqPLfTe8CP5VLEAiBT4XMw2mk9Bas288lBvnCd1JMruxYtMpRWSr3vYnAUVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1037862},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"60c1ae021aa69836231102a187f47c5981f5dd64","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.1.0_1762424732962_0.32497106474089166","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@ekg.training/ekg-video-player","version":"1.1.1","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.1.1","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"db6352a856eef500f94bcf773f4951847fa4a15c","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.1.1.tgz","fileCount":8,"integrity":"sha512-4ftjMeTsYxxWGGRmY0v+6jBIg1LgzqhqUAzreDPtEbnzd63pbQP02+gR8wBGXLsteSggRQSP59WI0VFfa5p4hA==","signatures":[{"sig":"MEUCIQCJBjEzjZ/afo2uun9GLOowjVWeKJK8M4QUw8MMjwBRugIgCf4tlOayCxxZCKXoiCkYWjEcueYa19QCtMRV4pyPYiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038077},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"105fdcb7ca53ca49ec9038af09484652a9cd0591","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.1.1_1763639850566_0.2954023506831309","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ekg.training/ekg-video-player","version":"1.2.0","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.2.0","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"186fa0778fc4c6022b463ce1fb388fe2e6cdecfa","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.2.0.tgz","fileCount":8,"integrity":"sha512-5/ktAxUXBWB6z2DRS6zzacUitBqvb1eHbLzBqRmdD7/x9SgBeQlojupHGVRA0U59gPo0xEhSejeRtDh4s8zRlw==","signatures":[{"sig":"MEYCIQD/1Y72Nlg4LlU6tH6e03F2SYQ4qISpj+dPXnvDdOSEOAIhAMAkaWYIoB3F1kP+0fMY0xlO+Yp6OVcF2Rg7tc8R8kFY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1070636},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"8509fc7ecd5bb9eb25cf4ecd3cb3c22b08bbb6cc","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.2.0_1765601195936_0.7477605165289705","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@ekg.training/ekg-video-player","version":"1.3.0","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.3.0","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"73c7acb9b529ed803e818ff6325619e8e577e233","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.3.0.tgz","fileCount":8,"integrity":"sha512-sIMrxBZam60W+wScV3iXTfIFlyzTXgH94FgIUPUYkHkKFUuvSEuBzLy//0QKmgcuXtDd+KAhE+aLkohpzGFfdQ==","signatures":[{"sig":"MEUCIAOhcGGFmoPGz/AIRajQBpNLiMOWuXzcHgXwwKnFEy06AiEApTQs04CcVXtnwrO6iSR+JbKD8/Yd/DjEkwutzznXjsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1262516},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"5946463cac058e39c9114ddaa795e5e38240d1ca","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"dev.ekg.training","email":"dev@ekg.training"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.3.0_1767769838450_0.9994013090546228","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@ekg.training/ekg-video-player","version":"1.3.1","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.3.1","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"c473046e541f3d6186ec992933812b3092a4efca","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.3.1.tgz","fileCount":8,"integrity":"sha512-g/C6LzjidKX1QUKzM2ljuKrTSGFKcQ8ghJ5MYoPaCKKlMLb5GR1tnhm2XPMeK0yKw2sHWtTLRzZK3do2ld0B5w==","signatures":[{"sig":"MEUCIQCwP1+q43oV6tXX3jfgHP08trwZVew+w8X98Y7pDM6dUAIgZrDaCg0JNX8uYAuF6yPZ0Qla85npOLYqIbGpAP80e7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1266320},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"ac7086ce5bc837b785aca976856efbb571081f3e","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.3.1_1768973876215_0.6617615272360267","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@ekg.training/ekg-video-player","version":"1.3.2","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.3.2","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"78cd7940ecc5b28bbd6269d97337c68e499277ac","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.3.2.tgz","fileCount":8,"integrity":"sha512-jKAic79R2/St7i8ngjeaYowQvaih8LnKLOBbXpfmMWsbVdj0jx4REITvDeoFOkpYbJ/51WCg+e13JFGUig7+NQ==","signatures":[{"sig":"MEYCIQCLbRznCO0uOyxWM/QnRrXVdyd/qIKfDJnjvztYrjvZhQIhANf2yOx9aBynXdwBPzASPJDh2mTXLv6rwdObSARumK1K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1270228},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"1efbfd6fc885dec91d413d28b717e604314b6225","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.3.2_1770269191522_0.6229877309863987","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@ekg.training/ekg-video-player","version":"1.3.3","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.3.3","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"3231c4c834fce0102b608eace202e414d8140380","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.3.3.tgz","fileCount":8,"integrity":"sha512-bwSlSynfm5Q83ucDPBs+Og3eg9M0ZkeqCIQnknu3TCIsiz82Yu32OmTZN1CARIVu6TSye3bFNurTlWpFAdfWDA==","signatures":[{"sig":"MEUCIATeeNwdRJYYM045eUHjkhIqiQcgvz+XblleEzB++dg8AiEAhmnbIMWyK1S+1smFVcYBBsdkUeDlaOZJWDokfAMwAyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1270489},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"fe400eedee31626661fa165c5d117b27fb42a3f0","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.3.3_1771053448346_0.49071386930679006","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@ekg.training/ekg-video-player","version":"1.4.0","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.4.0","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"b6cc23cb08c80a44a60c3b7f1fc828142f8c3b43","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.4.0.tgz","fileCount":8,"integrity":"sha512-6Lwn6fFA2dwsXcxMdortLLITiT6yPEQglNLceUZ96uIh2xKbFpE4c8xDCMq9Y+fGHgTgdNTl3Oq22+wuHnZTHQ==","signatures":[{"sig":"MEUCIQCxPXk+iTzEQ23aVZbYhdnepR3seJynmXrrjlw8SFcBXgIgaH/z1J9FiXxkM27SxZHpolbFVN6XE4muz1CYiN3qpI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1309063},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"443612777bca64de76b2807a1bcf028d7eb252ce","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.4.0_1774465221655_0.9357852860007996","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@ekg.training/ekg-video-player","version":"1.4.1","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.4.1","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"b40b6963403864214021e5f40d9a3f6724c35552","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.4.1.tgz","fileCount":8,"integrity":"sha512-w8ENkI5LzUuDLXcYFYuPizZ6Hq27GcPc8LwdLSKeEzFmzAXucBRAU4t5Mb2w/PgiFWjBzr90W+ob0x9SXQzhHQ==","signatures":[{"sig":"MEYCIQC4ZNWCaI0Z0IrUrR73aJ3Ocolg12zbuiDUIIeUDUSg4AIhAKaose6cJeILc5WEqBW+s1Oil1ttBCpAQyLxEYe2iWxo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1318401},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"2dad725d50bd8470eebb03424efdd49c1ab9ff8e","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.4.1_1776686837830_0.04072801322636299","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@ekg.training/ekg-video-player","version":"1.4.2","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","license":"Apache-2.0","_id":"@ekg.training/ekg-video-player@1.4.2","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"homepage":"https://github.com/close2realtraining/ekg-video-player#readme","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"dist":{"shasum":"359d8deba2e8bf34030d8642023bd73b6b9294e9","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.4.2.tgz","fileCount":8,"integrity":"sha512-c0fIUOrkWShr7l51YNJw6OpmE10kDvQSfum3a12zr0xSv7cZCByBVIjoWrv23IHSRbmLsjuzLVLcf8qyTsxyOQ==","signatures":[{"sig":"MEQCIE3gqv5y+Z6F9ILpa267CwyG7sl3cS/8gsCMwIStXHwqAiAz9LvA3nurlrdkJuhMVzH0fg4Cbv/icK4DjUDvwTmOCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1318411},"main":"dist/ekg_video_player.bundle.js","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b81456c12a8026f2a880a886e7079954e96d6755","scripts":{"demo":"webpack serve --config webpack.demo.js --open","build":"npm run clean && webpack --config webpack.config.js --env=production","clean":"rm -rf dist","start":"webpack serve --config webpack.config.js --open --mode development --env=development","watch":"webpack --config webpack.config.js --watch","prepare":"npm run build","prepublishOnly":"echo \"Preparing before build...\""},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"repository":{"url":"git+https://github.com/close2realtraining/ekg-video-player.git","type":"git"},"_npmVersion":"10.8.2","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@vidstack/react":"^1.12.13","@types/react-dom":"^19.1.4","react-zoom-pan-pinch":"^3.7.0","react-responsive-carousel":"^3.2.23","@amplitude/analytics-browser":"^2.32.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.1.0","postcss":"^8.4.0","webpack":"^5.99.8","react-dom":"^19.1.0","css-loader":"^7.1.2","typescript":"^5.8.3","@babel/core":"^7.27.1","media-icons":"^1.1.5","tailwindcss":"^3.0.0","webpack-cli":"^6.0.1","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","style-loader":"^4.0.0","@svgr/webpack":"^8.1.0","postcss-loader":"^8.1.1","@babel/preset-env":"^7.27.2","tailwind-scrollbar":"^3.1.0","webpack-dev-server":"^5.2.1","@babel/preset-react":"^7.27.1","html-webpack-plugin":"^5.6.3","tailwindcss-animate":"^1.0.7","@tailwindcss/postcss":"^4.1.10","license-webpack-plugin":"^4.0.2","@babel/preset-typescript":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/ekg-video-player_1.4.2_1776692647245_0.9633795728496513","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@ekg.training/ekg-video-player","version":"1.4.3","description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","main":"dist/ekg_video_player.bundle.js","scripts":{"clean":"rm -rf dist","build":"npm run clean && webpack --config webpack.config.js --env=production","prepublishOnly":"echo \"Preparing before build...\"","watch":"webpack --config webpack.config.js --watch","start":"webpack serve --config webpack.config.js --open --mode development --env=development","prepare":"npm run build","demo":"webpack serve --config webpack.demo.js --open"},"keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"author":"","homepage":"https://github.com/close2realtraining/ekg-video-player#readme","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/close2realtraining/ekg-video-player.git"},"publishConfig":{"access":"public"},"devDependencies":{"@babel/core":"^7.27.1","@babel/preset-env":"^7.27.2","@babel/preset-react":"^7.27.1","@babel/preset-typescript":"^7.27.1","@svgr/webpack":"^8.1.0","@tailwindcss/postcss":"^4.1.10","@types/react":"^19.1.8","autoprefixer":"^10.4.21","babel-loader":"^10.0.0","css-loader":"^7.1.2","html-webpack-plugin":"^5.6.3","license-webpack-plugin":"^4.0.2","media-icons":"^1.1.5","postcss":"^8.4.0","postcss-loader":"^8.1.1","react":"^19.1.0","react-dom":"^19.1.0","style-loader":"^4.0.0","tailwind-scrollbar":"^3.1.0","tailwindcss":"^3.0.0","tailwindcss-animate":"^1.0.7","typescript":"^5.8.3","webpack":"^5.99.8","webpack-cli":"^6.0.1","webpack-dev-server":"^5.2.1"},"dependencies":{"@amplitude/analytics-browser":"^2.32.1","@types/react-dom":"^19.1.4","@vidstack/react":"^1.12.13","react-responsive-carousel":"^3.2.23","react-zoom-pan-pinch":"^3.7.0"},"engines":{"node":">=18.0.0","npm":">=8.0.0"},"_id":"@ekg.training/ekg-video-player@1.4.3","gitHead":"4e2ce5aa30d911c4ecf0ff2e1114b7dafddc7034","bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-WU4l+sKHixOf2g4whKbsGPMpNOdp0AFd05oCXgl1Vj3dLTiPRx0mX0caSVPDEmy62cNQgdHVEf2xxd8+UP5hFw==","shasum":"7b13fc5fe2b56bf4e2f6ce0fd8b98b8c7af0e6e7","tarball":"https://registry.npmjs.org/@ekg.training/ekg-video-player/-/ekg-video-player-1.4.3.tgz","fileCount":8,"unpackedSize":1322465,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCKLCe0pXNW/9M5Fgo8STs5b7j51ee2sutt3CUX2QJ7FQIgOfw09VF0fnXH0bbjDPlD0vCKQK2uCeMk0dh+jx13Ejc="}]},"_npmUser":{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},"directories":{},"maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ekg-video-player_1.4.3_1777732623998_0.23412330929449054"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-27T12:23:26.886Z","modified":"2026-05-02T14:37:04.327Z","1.0.0":"2025-08-14T18:11:41.280Z","1.0.1":"2025-08-17T13:20:57.632Z","1.0.2":"2025-08-17T14:37:22.234Z","1.0.3":"2025-08-27T12:23:27.259Z","1.0.4":"2025-08-28T13:53:47.296Z","1.0.5":"2025-09-25T16:59:28.148Z","1.0.6":"2025-09-29T10:33:56.966Z","1.0.7":"2025-10-09T12:41:19.818Z","1.0.8":"2025-10-17T17:03:05.498Z","1.0.9":"2025-10-17T18:30:52.474Z","1.1.0":"2025-11-06T10:25:33.223Z","1.1.1":"2025-11-20T11:57:30.802Z","1.2.0":"2025-12-13T04:46:36.152Z","1.3.0":"2026-01-07T07:10:38.687Z","1.3.1":"2026-01-21T05:37:56.390Z","1.3.2":"2026-02-05T05:26:31.759Z","1.3.3":"2026-02-14T07:17:28.570Z","1.4.0":"2026-03-25T19:00:21.935Z","1.4.1":"2026-04-20T12:07:17.990Z","1.4.2":"2026-04-20T13:44:07.424Z","1.4.3":"2026-05-02T14:37:04.172Z"},"bugs":{"url":"https://github.com/close2realtraining/ekg-video-player/issues"},"license":"Apache-2.0","homepage":"https://github.com/close2realtraining/ekg-video-player#readme","keywords":["video","player","react","media","ekg","video player","javascript","typescript","customizable","education","ekg.training"],"repository":{"type":"git","url":"git+https://github.com/close2realtraining/ekg-video-player.git"},"description":"EkgVideoPlayer is a customizable React-based video player library, bundled with Webpack. It supports both direct React integration and plain JavaScript usage.","maintainers":[{"name":"hariomv","email":"hariom.vishwakarma@focalworks.in"},{"name":"dev.ekg.training","email":"dev@ekg.training"}],"readme":"# @ekg.training/ekg-video-player\n\n![npm version](https://img.shields.io/npm/v/@ekg.training/ekg-video-player?style=flat-square)\n![license](https://img.shields.io/npm/l/@ekg.training/ekg-video-player?style=flat-square)\n![build](https://github.com/close2realtraining/ekg-video-player/actions/workflows/publish-on-release.yml/badge.svg)\n\nA customizable React-based video player library, supporting both React and plain JavaScript usage. Built on top of [@vidstack/react](https://vidstack.io/docs/player/getting-started/react).\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n    - [React](#react)\n    - [ESM (Browser)](#esm-browser)\n    - [UMD (Browser)](#umd-browser)\n- [Limitations](#limitations)\n- [Player Props Reference](#player-props-reference)\n    - [Top-level Config Object](#top-level-config-object)\n    - [mediaPlayerProps (object)](#mediaplayerprops-object)\n    - [posterProps (object)](#posterprops-object)\n    - [subtitleTracks / chapterTracks (array)](#subtitletracks--chaptertracks-array)\n    - [videoLayoutProps (object)](#videolayoutprops-object)\n    - [audioLayoutProps (object)](#audiolayoutprops-object)\n    - [videoWrapperProps (object)](#videowrapperprops-object)\n    - [translations (object)](#translations-object)\n- [Documentation & Examples](#documentation--examples)\n- [License](#license)\n\n## Installation\n\n```sh\nnpm install @ekg.training/ekg-video-player\n# or\nyarn add @ekg.training/ekg-video-player\n```\n\n## Usage\n\nBelow html is common and required for all examples, in which, evp-root class is neccessary to load tailwind styles used by the ekg video player\n\n```html\n<div id=\"root\" class=\"evp-root\"></div>\n```\n\n### React\n\n```js\nimport { VideoPlayer } from '@ekg.training/ekg-video-player';\n\nuseEffect(() => {\n    const player = new VideoPlayer('root', { mediaPlayerProps: { src: '...', poster: '...' } });\n    player.init();\n}, []);\n```\n\n### ESM (Browser)\n\n```html\n<script src=\"https://unpkg.com/@ekg.training/ekg-video-player@latest/dist/ekg_video_player.bundle.js\"></script>\n<script type=\"module\">\n    const player = new EkgVideoPlayer.VideoPlayer('root', {\n        mediaPlayerProps: { src: '...', poster: '...' },\n    });\n    player.init();\n</script>\n```\n\n### UMD (Browser)\n\n```html\n<script src=\"https://unpkg.com/@ekg.training/ekg-video-player@latest/dist/ekg_video_player.bundle.js\"></script>\n<script>\n    document.addEventListener('DOMContentLoaded', () => {\n        const player = new EkgVideoPlayer.VideoPlayer('root', {\n            mediaPlayerProps: { src: '...', poster: '...' },\n        });\n        player.init();\n    });\n</script>\n```\n\n## Limitations\n\n1. No UI support for youtube videos.\n\n## Player Props Reference\n\nThe configuration object passed to `new VideoPlayer('root', config)` (standalone JS) or as props in React usage supports the following keys. The same structure is used in both approaches.\n\nFor a full working config, see [examples/React/src/App.js](https://github.com/close2realtraining/ekg-video-player/blob/main/examples/React/src/App.js) for React usage, or [examples/Javascript/main.js](https://github.com/close2realtraining/ekg-video-player/blob/main/examples/Javascript/main.js) for plain JS usage.\n\n### Top-level Config Object\n\n- **mediaPlayerProps** (object, required): Main video/audio player options (see below)\n- **posterProps** (object, optional): Poster image options\n- **subtitleTracks** (array, optional): Subtitle track objects (see below)\n- **chapterTracks** (array, optional): Chapter track objects (see below)\n- **videoLayoutProps** (object, optional): Video layout customization (see below)\n- **audioLayoutProps** (object, optional): Audio layout customization\n- **videoWrapperProps** (object, optional): Advanced wrapper options (see [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx))\n- **translations** (object, optional): Custom UI translations\n\n### mediaPlayerProps (object)\n\n- `src` (string): Video/audio source URL (required)\n- `poster` (string): Poster image URL\n- `title` (string): Media title\n- `rewindBy` (number): Amount (seconds) to rewind\n- `clipStartTime` (number): Start time for clip\n- `clipEndTime` (number|null): End time for clip\n- `viewType` (string): 'video' or 'audio'\n- `streamType` (string): e.g. 'on-demand'\n- `logLevel` (string): Logging level\n- `crossOrigin` (boolean): Set crossorigin attribute\n- `playsInline` (boolean): Play inline on mobile\n- `trackUserPreferences` (boolean): Enable/disable tracking of user preferences\n- `saveUserPreferences` (function): Callback function with user preferences as an argument, which gets called whenever setting changes.\n- `userPreferences` (object): User preference from database\n- `loop` (boolean): Loop playback\n- `onPause`, `onPlay`, `onPlaying`, `onLoopChange`, `onTimeUpdate`, `onLoad` (function): Event handlers\n\n### userPreferences (object)\n\nThe order at which preference will be used,\n\n1. mediaPlayerProps.userPreferences object\n2. preference values stored in localstorage\n3. default values as per below table\n\n- `ekg-video-storage` (object): Preference object for custom features (eg. { thumbnails: true, isSkipQuiz: false })\n- `custom-pref-storage` (object): Preference object for default features (eg. { volume: 0.38,muted: false, audioGain: null, lang: 'en-US', captions: true, rate: 0.8, quality: null })\n\nDefault behaviour of features if this object is not passed and not changed:\n\n| Feature              | Default Value                   |\n| -------------------- | ------------------------------- |\n| isSkipQuiz           | true                            |\n| showThumbnails       | true                            |\n| autoDetectThumbnail  | true                            |\n| volume               | 100%                            |\n| muted                | false                           |\n| allowAnalytics       | false                           |\n| allowPiP             | false                           |\n| rewindBy             | 3                               |\n| clip                 | false                           |\n| loop                 | false                           |\n| trackUserPreferences | false                           |\n| playbackRates        | { min: 0.5, max: 2, step: 0.1 } |\n| explanation_start    | 0                               |\n| captions             | true                            |\n\n### posterProps (object)\n\n- `src` (string): Poster image URL\n- `alt` (string): Alt text\n- `crossOrigin` (boolean): Set crossorigin attribute\n\n### subtitleTracks / chapterTracks (array)\n\nEach track is an object with at least:\n\n```js\n{\n    src: 'https://files.vidstack.io/sprite-fight/subs/english.vtt',\n    label: 'English',\n    language: 'en-US',\n    kind: 'subtitles' | 'chapters',\n    default: true // optional\n}\n```\n\nSee [`examples/React/src/App.js`](examples/React/src/App.js) or [`examples/Javascript/main.js`](examples/Javascript/main.js) for more examples.\n\n### videoLayoutProps (object)\n\n- `thumbnails` (object): Thumbnail visibillity & VTT file URL for thumbnails\n- `playbackRates` (object): `{ min, max, step }` for playback speed\n  `handouts` (array): Downloadable handout objects (`{ language, title, url }`)\n  `quizzes` (array): Quiz objects (see [`examples/React/src/App.js`](examples/React/src/App.js))\n- `isSkipQuiz` (boolean): Enable/disable quiz skipping\n  **Order in which factors are affecting visibility of quiz** - 1. mediaPlayerProps.trackUserPreferences if this flag is true, then isSkipQuiz value in 'custom-pref-storage' localstorage 2. videoLayoutProps.isSkipQuiz 3. default is true (i.e Quiz will not be visible)\n- `isPseudoFullscreen` (boolean): iOS fullscreen workaround\n- `toggleSkipQuiz`, `toggleIphoneFullScreen`, `toggleInfo` (function): UI toggles\n- `isQuizOpen`, `isInfoOpen` (boolean): UI state\n- `chapterTracks`, `subtitleTracks` (array): Track arrays (see above)\n- `windowProps` (object): Window size/orientation\n- `translations` (object): UI translations\n- `infoLink` (string): The link (image or video) to player information (e.g. instructions to use player)\n- `ecgLinks` (string or array): Array of an ECG image links or url of single ECG image link\n- `ecgNotes` (object): `{ title, content }` for ECG Notes\n- `allowPiP` (boolean): Enable/disable availability of PIP feature\n- `allowAnalytics` (boolean): Enable/disable Analytics to track user interaction with the video player by using Amplitude\n- `amplitudeApiKey` (string): API key for Amplitude\n\n### thumbnails (object)\n\n- `showThumbnails` (boolean): Enable/disable visibility of thumbnails over seek bar (default_value: true)\n- `customUrl` (string): VTT file URL\n- `autoDetectThumbnail` (boolean): Enable/disable feature of searching for VTT file in the same folder the video is present. (eg. video URL: https://storage.googleapis.com/muxdemofiles/mux.mp4, thumbnail URL: https://storage.googleapis.com/muxdemofiles/thumbnail/mux.vtt) (default_value: true)\n  For this prop to work, It needs thumbnail vtt URL to be publically available.\n\n### audioLayoutProps (object)\n\n**Coming soon:** Audio layout customization is not yet implemented.\n\n### videoWrapperProps (object)\n\n    Advanced options for wrapper (see [examples/React/src/App.js](https://github.com/close2realtraining/ekg-video-player/blob/main/examples/React/src/App.js) for example usage)\n\n### translations (object)\n\nThe `translations` object allows you to customize UI text labels and messages. Available keys:\n\n| Key                         | Description                                 |\n| --------------------------- | ------------------------------------------- |\n| playInstruction             | Message shown to rotate device to landscape |\n| playButtonLabel             | Play button text                            |\n| continueButtonLabel         | Continue video button text                  |\n| skipQuizButtonLabel         | Skip quiz button text                       |\n| submitAnswerButtonLabel     | Submit answer button text                   |\n| watchExplanationButtonLabel | Watch explanation button text               |\n| settingsLabel               | Settings menu label                         |\n| playbackSpeedLabel          | Playback speed label                        |\n| customLabel                 | Custom speed label                          |\n| normalLabel                 | Normal speed label                          |\n| captionsLabel               | Captions menu label                         |\n| playLabel                   | Play label                                  |\n| pauseLabel                  | Pause label                                 |\n| unmuteLabel                 | Unmute label                                |\n| muteLabel                   | Mute label                                  |\n| showQuizLabel               | Show quiz label                             |\n| skipQuizLabel               | Skip quiz label                             |\n| closedCaptionsOffLabel      | Closed captions off label                   |\n| closedCaptionsOnLabel       | Closed captions on label                    |\n| exitPipLabel                | Exit picture-in-picture label               |\n| enterPipLabel               | Enter picture-in-picture label              |\n| exitFullscreenLabel         | Exit fullscreen label                       |\n| enterFullscreenLabel        | Enter fullscreen label                      |\n| downloadLabel               | Download label                              |\n| downloadHandoutsLabel       | Download handouts label                     |\n| allhandoutsDownloadedLabel  | All handouts downloaded label               |\n| chaptersLabel               | Chapters label                              |\n| inVideoQuiz                 | In-video quiz label                         |\n| minLabel                    | Minutes label                               |\n| showInfoLabel               | Show toolbar info label                     |\n| hideInfoLabel               | Hide toolbar info label                     |\n| hideECGLabel                | Hide ECG                                    |\n| showECGLabel                | Show ECG                                    |\n| ekgGraphLabel               | ECG                                         |\n| openECGNotesLbl             | Open Notes                                  |\n| closeECGNotesLbl            | Close Notes                                 |\n| warningLabel                | WARNING text                                |\n| slowInternetSpeedWarning    | Slow internet speed warning                 |\n| popupBlockedWarning         | Popup or redirects blocked warning          |\n| pipBlockedWarning           | PiP blocked warning                         |\n| thumbnailsLabel             | Thumbnails                                  |\n| onLabel                     | On                                          |\n| offLabel                    | Off                                         |\n\nSee [examples/React/src/App.js](https://github.com/close2realtraining/ekg-video-player/blob/main/examples/React/src/App.js) and [src/index.tsx](https://github.com/close2realtraining/ekg-video-player/blob/main/src/index.tsx) for real-world usage.\n\n### Amplitude for Product Analytics\n\n- `cc_text_toggled` (boolean): tracks whether closed captions (CC) are toggled on or off.\n- `thumbnail_toggled` (boolean): tracks whether the thumbnail preview is toggled on or off.\n- `info_popup_toggled` (boolean): tracks whether the info popup is opened or closed.\n- `in_vid_quiz_toggled` (boolean): tracks whether in-video quizzes are toggled on or off.\n- `ecg_popup_toggled` (boolean): tracks whether the ECG popup is opened or closed.\n- `ecg_notes_toggled` (boolean): tracks whether ECG notes visibility is toggled on or off.\n- `chapter_popup_toggled` (boolean): tracks whether the chapter popup is opened or closed.\n- `chapter_changed` (string): tracks the name of the chapter the user switched to.\n- `pip_mode_toggled` (boolean): tracks whether Picture-in-Picture (PiP) mode is toggled on or off.\n- `fullscreen_mode_toggled` (boolean): tracks whether fullscreen mode is toggled on or off.\n- `handout_popup_toggled` (boolean): tracks whether the handout popup is opened or closed.\n- `handout_file` (string): tracks which handout file the user clicked.\n- `settings_popup_toggled` (boolean): tracks whether the settings popup is opened or closed.\n- `playback_speed_changed` (number): tracks the playback speed chosen by the user.\n- `volume_level_changed` (number): tracks the volume level set by the user.\n\n### ecgNotes (object)\n\n#### Extended ECG Notes Format (With JSON-driven UI Support)\n\nThe `ecgNotes.content` field supports a dynamic JSON structure used by **ContentDrivenUI**.\n\nExample supported keys inside `content`:\n\n- **text**: WhatsApp-style rich text (`*bold*`, `_italic_`, `~strike~`, code blocks, links, `\n`, `\t`)\n- **html**: Raw HTML rendered using `dangerouslySetInnerHTML`\n- **tabs**: Array of tab objects (`{ id, label, content }`)\n- **accordion**: Accordion sections (`{ head, content }`)\n- **content**: Nested container enabling recursive structure (content → tabs → accordion → content → …)\n\nExample:\n\n```json\n{\n    \"ecgNotes\": {\n        \"title\": \"ECG Interpretation Notes\",\n        \"content\": {\n            \"text\": \"*Bold text*, _italic_, and a link: https://example.com\",\n            \"html\": \"<div style='color:red'>Important alert</div>\",\n            \"tabs\": [\n                {\n                    \"id\": \"tab1\",\n                    \"label\": \"Overview\",\n                    \"content\": { \"text\": \"Overview content\" }\n                }\n            ],\n            \"accordion\": {\n                \"head\": \"Detailed Analysis\",\n                \"content\": {\n                    \"text\": \"Nested details\",\n                    \"html\": \"<span>More info</span>\"\n                }\n            }\n        }\n    }\n}\n```\n\n<details>\n<summary><strong>WhatsApp Text Markup Reference</strong></summary>\n\n### WhatsApp-style Markup Table\n\n| Format        | Example      | Output     |\n| ------------- | ------------ | ---------- |\n| Bold          | `*text*`     | **text**   |\n| Italic        | `_text_`     | _text_     |\n| Strikethrough | `~text~`     | ~~text~~   |\n| Inline Code   | `` `code` `` | `code`     |\n| Newline       | `\\n`         | line break |\n| Tab           | `\\t`         | 4 spaces   |\n\n---\n\n**Example 1 — Links**\n\n```\nCheck this: https://example.com\nOr visit [Google](https://google.com)\nOr [[https://openai.com|OpenAI]]\n```\n\nOutput: <br/>\nCheck this: https://example.com\nOr visit [Google](https://google.com)\nOr [OpenAI](https://openai.com)\n\n---\n\n**Example 2 — Newlines & Tabs**\n\n```\nLine 1\\nLine 2\\n\\tIndented Line\n```\n\nOutput:\n\n```\nLine 1\nLine 2\n    Indented Line\n```\n\n</details>\n\n---\n\n## Documentation & Examples\n\n- See [GitHub repository](https://github.com/close2realtraining/ekg-video-player) for full documentation, advanced usage, and examples.\n- Example configs: `examples/React/src/App.js`, `examples/Javascript/main.js`\n\n## License\n\nApache-2.0\n","readmeFilename":"README.npm.md"}