{"_id":"@cristianobleve/player","_rev":"5-67ecf4a9052667111417f9a92c9c733e","name":"@cristianobleve/player","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@cristianobleve/player","version":"1.0.0","keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"author":{"name":"Cristiano Bleve"},"license":"MIT","_id":"@cristianobleve/player@1.0.0","maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"dist":{"shasum":"c31a10a69ec2b297b6c3484ab22ca61d3e811878","tarball":"https://registry.npmjs.org/@cristianobleve/player/-/player-1.0.0.tgz","fileCount":24,"integrity":"sha512-9Pj7XtleI8BALaSsxowHw7iDjd5PiDl6Au3uL6QBh569GIYwl1jz2Tr8nZ6yR18RaSZsti+3WvjV0WqARiW1bA==","signatures":[{"sig":"MEQCIA7eUG7nmRwF/oHCGc+gDt4355bwm/t17ybWfrM/0UYeAiBMz5aDDAfvV661JqZq1YIOZ/SM7nQwLJh3BwGk3uN0pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8404556},"main":"./dist/ext-player.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/ext-player.min.js","module":"./dist/ext-player.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/ext-player.js","require":"./dist/ext-player.cjs"},"./css":"./dist/ext-player.css"},"scripts":{"dev":"vite","build":"npx vite build && npx tsc --noEmit false --emitDeclarationOnly --declaration --outDir dist","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"},"jsdelivr":"./dist/ext-player.min.js","_npmVersion":"11.16.0","description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","directories":{},"sideEffects":["*.css","./dist/ext-player.css"],"_nodeVersion":"24.18.0","dependencies":{"hls.js":"^1.6.18","react-icons":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.4","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/player_1.0.0_1786529921569_0.16807548746815426","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@cristianobleve/player","version":"1.0.1","keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"author":{"name":"Cristiano Bleve"},"license":"MIT","_id":"@cristianobleve/player@1.0.1","maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"dist":{"shasum":"68de0a01cad9e21626db39ef7f6d57ce935f05ef","tarball":"https://registry.npmjs.org/@cristianobleve/player/-/player-1.0.1.tgz","fileCount":24,"integrity":"sha512-uEwu2hdwKmnVUqEGZJYFHRszqwJztZoVkHlzvA/tnvEeVqkGGGT3iPGG4KU029FfJ1FfV2JuGgY90lIC1Zg48g==","signatures":[{"sig":"MEYCIQDvPMa27FmM/wJ97hbtW0jvFCNIQdBvb2L2eiHa9q50/AIhAJnY/16ONXxB8Gw4g7dqpVmTPXNMWCYVvARsiUGDaaZO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8404672},"main":"./dist/ext-player.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/ext-player.min.js","module":"./dist/ext-player.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/ext-player.js","require":"./dist/ext-player.cjs"},"./css":"./dist/ext-player.css"},"scripts":{"dev":"vite","build":"npx vite build && npx tsc --noEmit false --emitDeclarationOnly --declaration --outDir dist","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"},"jsdelivr":"./dist/ext-player.min.js","_npmVersion":"11.16.0","description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","directories":{},"sideEffects":["*.css","./dist/ext-player.css"],"_nodeVersion":"24.18.0","dependencies":{"hls.js":"^1.6.18","react-icons":"^5.7.0","@cristianobleve/player":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.4","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/player_1.0.1_1786534834006_0.21411281107852154","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@cristianobleve/player","version":"1.0.2","keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"author":{"name":"Cristiano Bleve"},"license":"MIT","_id":"@cristianobleve/player@1.0.2","maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"dist":{"shasum":"5f97356b5ce41845926df1eafc9e78a9f0623370","tarball":"https://registry.npmjs.org/@cristianobleve/player/-/player-1.0.2.tgz","fileCount":26,"integrity":"sha512-/wqHFzFw9q6Aw1/sJmQkFIW9f6OqItyd+c9BvCTjbO2G9fRYfrT+XJt7PLxr56nuWxgbTsTDNb/p09kvsm59wQ==","signatures":[{"sig":"MEUCIBXZzrso9XwaPCeOjTnJDBX6bt7FXDgeAD9Ij/NRYCQjAiEAnhz8olOIF6rpEjG+QFFz4Cve1xZqfxVwaGeUopIJDrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8436119},"main":"./dist/ext-player.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/ext-player.min.js","module":"./dist/ext-player.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/ext-player.js","require":"./dist/ext-player.cjs"},"./css":"./dist/ext-player.css"},"gitHead":"a45257290942cac47ce29d470670d277f621f165","scripts":{"dev":"vite","build":"npx vite build && npx tsc --noEmit false --emitDeclarationOnly --declaration --outDir dist","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"},"jsdelivr":"./dist/ext-player.min.js","_npmVersion":"11.16.0","description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","directories":{},"sideEffects":["*.css","./dist/ext-player.css"],"_nodeVersion":"24.18.0","dependencies":{"hls.js":"^1.6.18","react-icons":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.4","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/player_1.0.2_1786549954263_0.44086295084507254","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@cristianobleve/player","version":"1.0.3","keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"author":{"name":"Cristiano Bleve"},"license":"MIT","_id":"@cristianobleve/player@1.0.3","maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"dist":{"shasum":"e6e98b00d08e5336aaff3fba533238d01dc5222c","tarball":"https://registry.npmjs.org/@cristianobleve/player/-/player-1.0.3.tgz","fileCount":26,"integrity":"sha512-vJz3E9YBYkzejypzzxrUeXWphp73TQ9bVEo0enYwrZz0Ud4tHWqn7yV8GXJROWZQP0VDKplF5zK4tSzpeGus2Q==","signatures":[{"sig":"MEQCIFOm8UuRjOn74ggxjQU1AcIsUEbQ0og6ku2tNoq7GpcqAiBi6aSRqcu2JtbbMp2YmEM4cPEURVbKbVCN4hdcQa2xTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8437077},"main":"./dist/ext-player.cjs","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/ext-player.min.js","module":"./dist/ext-player.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/ext-player.js","require":"./dist/ext-player.cjs"},"./css":"./dist/ext-player.css"},"gitHead":"d602a7f09d5de52b1c43fdcf4ea60e43025d73d5","scripts":{"dev":"vite","build":"npx vite build && npx tsc --noEmit false --emitDeclarationOnly --declaration --outDir dist","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"},"jsdelivr":"./dist/ext-player.min.js","_npmVersion":"11.16.0","description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","directories":{},"sideEffects":["*.css","./dist/ext-player.css"],"_nodeVersion":"24.18.0","dependencies":{"hls.js":"^1.6.18","react-icons":"^5.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.4","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/player_1.0.3_1786551284629_0.04772499767312732","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@cristianobleve/player","version":"1.0.8","description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","type":"module","main":"./dist/ext-player.cjs","module":"./dist/ext-player.js","unpkg":"./dist/ext-player.min.js","jsdelivr":"./dist/ext-player.min.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/ext-player.js","require":"./dist/ext-player.cjs"},"./css":"./dist/ext-player.css"},"publishConfig":{"access":"public"},"sideEffects":["*.css","./dist/ext-player.css"],"scripts":{"dev":"vite","build":"npx vite build && npx tsc --noEmit false --emitDeclarationOnly --declaration --outDir dist","release":"node scripts/release.js","release:patch":"node scripts/release.js","release:publish":"node scripts/release.js --publish","prepublishOnly":"npm run build","preview":"vite preview"},"keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"author":{"name":"Cristiano Bleve"},"license":"MIT","devDependencies":{"typescript":"^5.3.3","vite":"^5.1.4"},"dependencies":{"hls.js":"^1.6.18","react-icons":"^5.7.0"},"gitHead":"5123fae6d752aa130ec92c262a264fa63b0a3aee","_id":"@cristianobleve/player@1.0.8","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-GvNMBtBFf6ZU+j9vbbzvx87kYB1DOLUhzgV5+ZURCJ4qzVFgfe1qmmbugNB/uQ+dl4N07gsgvvypLYy5bCdJqg==","shasum":"dba902cdb3bc4bbf2992f9cf6f134ec658bac63c","tarball":"https://registry.npmjs.org/@cristianobleve/player/-/player-1.0.8.tgz","fileCount":62,"unpackedSize":9228382,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCSkN0lVCO4vfOmXiuqFKEfn2ozulYYIfvTUKvnLsHscgIhAIHKV+jHEFMDFcFsqcYBGMnBREfTWJ+96b9XhbarQQ6I"}]},"_npmUser":{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"},"directories":{},"maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/player_1.0.8_1786725560467_0.7406633087736101"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T10:18:41.378Z","modified":"2026-08-14T16:39:21.106Z","1.0.0":"2026-08-12T10:18:41.798Z","1.0.1":"2026-08-12T11:40:34.216Z","1.0.2":"2026-08-12T15:52:34.529Z","1.0.3":"2026-08-12T16:14:44.834Z","1.0.8":"2026-08-14T16:39:20.818Z"},"author":{"name":"Cristiano Bleve"},"license":"MIT","keywords":["video-player","html5-player","drm","eme","hls","dash","glassmorphism","extpackets","video","player","media"],"description":"Ultra-modular, modern Glassmorphism HTML5 Video Player with DRM, Themes, and Plugin support","maintainers":[{"name":"cristianobleve","email":"blevecristiano2018@gmail.com"}],"readme":"# @cristianobleve/player 🎬\n\n![ExtPlayer Banner](https://img.cristianobleve.com/img/pictures/ext_v1.png)\n\n> Next-generation, ultra-modular, modern Geometric Dark HTML5 Video Player with YouTube / Vimeo Embeds, HLS Streaming, DRM, and Auto-Poster Frame Extraction.\n\n[![npm version](https://img.shields.io/npm/v/@cristianobleve/player.svg?style=flat-square)](https://www.npmjs.com/package/@cristianobleve/player)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](./LICENSE)\n\n---\n\n## ✨ Features\n\n- 🖤 **Geometric Dark Aesthetics**: Modern pitch-black (`#000000`) theme with high-contrast sharp 6px geometry and monochrome controls.\n- 🌐 **Universal Provider Resolution**: Native support for **YouTube**, **Vimeo**, **Dailymotion**, **Twitch**, **Google Drive**, **Dropbox**, and **AWS S3 / R2**.\n- 📡 **Adaptive HLS & Multi-Bitrate**: Built-in `HLS.js` integration with automatic quality level switching.\n- 🖼️ **Auto-Poster Frame Extraction**: Automatically extracts a high-quality video snapshot if no custom poster image is provided.\n- 🤖 **Smart Autoplay Policy Handler**: Automatically falls back to muted playback with a tap-to-unmute banner if unmuted autoplay is blocked.\n- 📐 **Mobile & Responsive First**: Smooth controls scaling from tiny 320px mobile screens to 1440px+ 4K displays.\n- 🔒 **DRM EME Hooks**: Widevine, FairPlay, and PlayReady Encrypted Media Extensions support.\n\n---\n\n## 📦 Installation\n\n### Via NPM\n\n```bash\nnpm install @cristianobleve/player\n```\n\n```javascript\nimport ExtPlayer from '@cristianobleve/player';\nimport '@cristianobleve/player/css';\n\n// Initialize player\nconst player = new ExtPlayer('#video-container', {\n  src: 'https://media.w3.org/2010/05/sintel/trailer.mp4',\n  title: '🎬 Sintel Movie Trailer',\n  theme: 'monochrome', // 'monochrome' | 'obsidian' | 'cinema' | 'nordic'\n  autoplay: false\n});\n```\n\n### Via CDN (Browser Script Tag)\n\n```html\n<!-- ExtPlayer Stylesheet -->\n<link rel=\"stylesheet\" href=\"https://cdn.cristianobleve.com/packets/player/latest/ext-player.css\">\n\n<!-- ExtPlayer Script -->\n<script src=\"https://cdn.cristianobleve.com/packets/player/latest/ext-player.min.js\"></script>\n\n<div id=\"player-target\"></div>\n\n<script>\n  new ExtPlayer('#player-target', {\n    src: 'https://www.youtube.com/watch?v=L_LUpnjgPso', // Works with YouTube!\n    title: 'YouTube Embed Demo'\n  });\n</script>\n```\n\n---\n\n## 💻 Code Examples\n\n### 1. Direct MP4 Video\n```javascript\nconst player = new ExtPlayer('#video', {\n  src: 'https://vjs.zencdn.net/v/oceans.mp4',\n  title: '🌊 Oceans Wildlife',\n  theme: 'monochrome'\n});\n```\n\n### 2. YouTube / Vimeo Video\n```javascript\nconst player = new ExtPlayer('#video', {\n  src: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n  title: 'YouTube Stream'\n});\n```\n\n### 3. Adaptive HLS (`.m3u8`) Streaming\n```javascript\nconst player = new ExtPlayer('#video', {\n  src: 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8',\n  title: '📡 Live HLS Stream'\n});\n```\n\n---\n\n## 🛠️ Methods & API\n\n```javascript\n// Controls\nplayer.play();\nplayer.pause();\nplayer.togglePlay();\nplayer.seek(30); // Seek to 30s\nplayer.setVolume(0.8);\nplayer.setMuted(true);\nplayer.toggleFullscreen();\n\n// Events\nplayer.on('play', () => console.log('Video started'));\nplayer.on('pause', () => console.log('Video paused'));\nplayer.on('ended', () => console.log('Playback completed'));\nplayer.on('timeupdate', ({ currentTime, duration }) => {\n  console.log(`Progress: ${currentTime} / ${duration}`);\n});\n```\n\n---\n\n## ⚙️ Options Reference\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `target` | `string \\| HTMLElement` | *(required)* | Selector or DOM container element |\n| `src` | `string` | `''` | Video source URL (MP4, YouTube, Vimeo, HLS `.m3u8`, Cloud links) |\n| `poster` | `string` | `''` | Custom poster image URL |\n| `autoPoster` | `boolean` | `true` | Auto-extract thumbnail frame from video if poster is missing |\n| `title` | `string` | `''` | Title string overlay displayed in top left bar |\n| `showTitle` | `boolean` | `true` | Show or hide top header title bar |\n| `theme` | `'monochrome' \\| 'obsidian' \\| 'cinema' \\| 'nordic'` | `'monochrome'` | Built-in theme preset |\n| `autoplay` | `boolean \\| 'muted' \\| 'play'` | `false` | Smart Autoplay with automatic muted fallback |\n| `loop` | `boolean` | `false` | Loop video playback |\n| `muted` | `boolean` | `false` | Start muted |\n| `volume` | `number` | `1.0` | Initial volume level (0.0 to 1.0) |\n\n---\n\n## 📄 License\n\nMIT © [Cristiano Bleve](https://github.com/cristianobleve)\n","readmeFilename":"README.md"}