{"_id":"@ejoyful/airhbb-player","_rev":"4-d9e68d6060c1aa90b66018d365ba3c46","name":"@ejoyful/airhbb-player","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@ejoyful/airhbb-player","version":"1.0.0","keywords":["hbbtv","video-player","react","hls","broadcast","interactive-tv","streaming","video","player","component"],"author":{"url":"https://ejoyful.com","name":"Ejoyful","email":"ali@ejoyful.com"},"license":"MIT","_id":"@ejoyful/airhbb-player@1.0.0","maintainers":[{"name":"ejoyful","email":"ali@ejoyful.com"}],"homepage":"https://github.com/ejoyful/airhbb-player#readme","bugs":{"url":"https://github.com/ejoyful/airhbb-player/issues"},"dist":{"shasum":"9aa14096e1e45a910d7f31836aca41cda30ca1b1","tarball":"https://registry.npmjs.org/@ejoyful/airhbb-player/-/airhbb-player-1.0.0.tgz","fileCount":6,"integrity":"sha512-41h8H08NIYbqLbkSOqFKjWH+nU2X+My1ydC5nRPSUa7dTFTmj/VHvhEnlJ4tam87Fu6lxAxWTXufSQW0L+fE4w==","signatures":[{"sig":"MEUCID5KBvauVLh+PT5au4HJgcIClymZpej9UTkB7QWggimGAiEA0nXDws95KKBPrajqOznilLSPuQ+weyxtYBm+xiClrk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1341371},"main":"./dist/airhbb-player.umd.js","type":"module","module":"./dist/airhbb-player.es.js","exports":{".":{"import":"./dist/airhbb-player.es.js","require":"./dist/airhbb-player.umd.js"},"./styles":"./dist/style.css"},"gitHead":"69620b8eb578359dfe7541d5919da6b761c7c98a","scripts":{"dev":"vite","build":"vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"ejoyful","email":"ali@ejoyful.com"},"repository":{"url":"git+https://github.com/ejoyful/airhbb-player.git","type":"git"},"_npmVersion":"11.6.2","description":"HbbTV-enabled video player for React with live streaming and interactive broadcast applications","directories":{},"_nodeVersion":"25.2.0","dependencies":{"hls.js":"^1.5.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","react":"^19.2.0","react-dom":"^19.2.0","@types/react":"^19.2.5","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/airhbb-player_1.0.0_1764032262423_0.31052437600948446","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@ejoyful/airhbb-player","version":"1.0.1","keywords":["hbbtv","video-player","react","hls","broadcast","interactive-tv","streaming","video","player","component"],"author":{"url":"https://ejoyful.com","name":"Ejoyful","email":"ali@ejoyful.com"},"license":"MIT","_id":"@ejoyful/airhbb-player@1.0.1","maintainers":[{"name":"ejoyful","email":"ali@ejoyful.com"}],"homepage":"https://github.com/ejoyful/airhbb-player#readme","bugs":{"url":"https://github.com/ejoyful/airhbb-player/issues"},"dist":{"shasum":"df009560ff61b126ec8abc983828721d5407cac5","tarball":"https://registry.npmjs.org/@ejoyful/airhbb-player/-/airhbb-player-1.0.1.tgz","fileCount":6,"integrity":"sha512-4eRfzs8GzoG1JO9XUr63XMsXyfhYW4khMLsxapDwBK94E+vNLt1upXELjepJFlHP00u+R7jl4ngiEr1sWmqi/Q==","signatures":[{"sig":"MEMCH2pnWiCmo7fgBL6j3PrJ7S6n/c5qbQzplQrk2sF+o4YCIGbT187euo9Dq3d+2M+P6MiQ6rkzbsjX7XMduL97dXtc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1348439},"main":"./dist/airhbb-player.umd.js","type":"module","module":"./dist/airhbb-player.es.js","exports":{".":{"import":"./dist/airhbb-player.es.js","require":"./dist/airhbb-player.umd.js"},"./styles":"./dist/style.css"},"gitHead":"94b688f21555308789808337fc2b0a381a57f302","scripts":{"dev":"vite","build":"vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"ejoyful","email":"ali@ejoyful.com"},"repository":{"url":"git+https://github.com/ejoyful/airhbb-player.git","type":"git"},"_npmVersion":"11.6.2","description":"HbbTV-enabled video player for React with live streaming and interactive broadcast applications","directories":{},"_nodeVersion":"25.2.0","dependencies":{"hls.js":"^1.5.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","react":"^19.2.0","react-dom":"^19.2.0","@types/react":"^19.2.5","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.1"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/airhbb-player_1.0.1_1764111189995_0.5841091943882915","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@ejoyful/airhbb-player","version":"1.0.2","description":"HbbTV-enabled video player for React with live streaming and interactive broadcast applications","type":"module","main":"./dist/airhbb-player.umd.js","module":"./dist/airhbb-player.es.js","exports":{".":{"import":"./dist/airhbb-player.es.js","require":"./dist/airhbb-player.umd.js"},"./styles":"./dist/style.css"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/ejoyful/airhbb-player.git"},"bugs":{"url":"https://github.com/ejoyful/airhbb-player/issues"},"homepage":"https://github.com/ejoyful/airhbb-player#readme","keywords":["hbbtv","video-player","react","hls","broadcast","interactive-tv","streaming","video","player","component"],"author":{"name":"Ejoyful","email":"ali@ejoyful.com","url":"https://ejoyful.com"},"license":"MIT","publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"hls.js":"^1.5.15"},"devDependencies":{"@types/react":"^19.2.5","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.1","react":"^19.2.0","react-dom":"^19.2.0","vite":"^7.2.4"},"gitHead":"b55674e2cfe7065824d6313746d83acc985595de","_id":"@ejoyful/airhbb-player@1.0.2","_nodeVersion":"25.2.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-QMBhlBg9tcOPZ8Kd1oIF/tJ6elvK+febRM3ZWaA58gVMGTr98FCROQ1y0038Jaglbmomnnxf3so4BJjF2fMdzA==","shasum":"08ddaf04673ddf2cb24b193ea85ed4db6f8c035b","tarball":"https://registry.npmjs.org/@ejoyful/airhbb-player/-/airhbb-player-1.0.2.tgz","fileCount":6,"unpackedSize":1354450,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCJtR5fYehQ08Hb0AkG5XRrAeZ46JGoxJG/xQMPMzGxYQIhALOrvMyb+pGQtNj9L3cAjg0lrTUWdHieaOX0gDtFojWT"}]},"_npmUser":{"name":"ejoyful","email":"ali@ejoyful.com"},"directories":{},"maintainers":[{"name":"ejoyful","email":"ali@ejoyful.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/airhbb-player_1.0.2_1764116421663_0.18227949638014884"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-25T00:57:42.008Z","modified":"2025-11-26T00:20:22.086Z","1.0.0":"2025-11-25T00:57:42.621Z","1.0.1":"2025-11-25T22:53:10.206Z","1.0.2":"2025-11-26T00:20:21.899Z"},"bugs":{"url":"https://github.com/ejoyful/airhbb-player/issues"},"author":{"name":"Ejoyful","email":"ali@ejoyful.com","url":"https://ejoyful.com"},"license":"MIT","homepage":"https://github.com/ejoyful/airhbb-player#readme","keywords":["hbbtv","video-player","react","hls","broadcast","interactive-tv","streaming","video","player","component"],"repository":{"type":"git","url":"git+https://github.com/ejoyful/airhbb-player.git"},"description":"HbbTV-enabled video player for React with live streaming and interactive broadcast applications","maintainers":[{"name":"ejoyful","email":"ali@ejoyful.com"}],"readme":"# @ejoyful/airhbb-player\n\nHbbTV-enabled video player for React with live streaming and interactive broadcast applications.\n\n## Features\n\n- 🎥 HLS adaptive streaming with quality selection\n- 📺 HbbTV (Hybrid broadcast broadband TV) support\n- 🎮 Interactive broadcast applications\n- 🎨 Customizable player controls\n- 📱 Picture-in-Picture support\n- 🎮 Samsung Tizen & LG webOS TV remote control support\n- ⚡ Built with React and HLS.js\n\n## Installation\n\n```bash\nnpm install @ejoyful/airhbb-player\n```\n\n## Usage\n\n```jsx\nimport { HbbTVPlayer } from '@ejoyful/airhbb-player';\nimport '@ejoyful/airhbb-player/styles';\n\nfunction App() {\n  return (\n    <HbbTVPlayer\n      hlsUrl=\"https://example.com/stream.m3u8\"\n      uuid=\"019abc77-7198-7c99-b101-5954f9753b7e\"\n      autoPlay={true}\n    />\n  );\n}\n```\n\nHide colored buttons for embedded layouts:\n\n```jsx\n<HbbTVPlayer\n  hlsUrl=\"https://example.com/stream.m3u8\"\n  uuid=\"019abc77-7198-7c99-b101-5954f9753b7e\"\n  showColoredButtons={false}\n/>\n```\n\nCustomize button colors:\n\n```jsx\n<HbbTVPlayer\n  hlsUrl=\"https://example.com/stream.m3u8\"\n  uuid=\"019abc77-7198-7c99-b101-5954f9753b7e\"\n  buttonColors={{\n    red: '#ff0000',\n    green: '#00ff00',\n    yellow: '#ffff00',\n    blue: '#0000ff'\n  }}\n/>\n```\n\nAdvanced configuration with callbacks:\n\n```jsx\n<HbbTVPlayer\n  hlsUrl=\"https://example.com/stream.m3u8\"\n  uuid=\"019abc77-7198-7c99-b101-5954f9753b7e\"\n  muted={false}\n  loop={true}\n  defaultQuality={2}\n  playbackSpeed={1.25}\n  aspectRatio=\"21/9\"\n  controlsTimeout={5000}\n  onPlay={() => console.log('Video started')}\n  onQualityChange={(level, info) => console.log('Quality changed to', info.height + 'p')}\n  onColoredButtonClick={(color, keyCode) => console.log(`${color} button pressed`)}\n  onHbbtvLoad={() => console.log('HbbTV app loaded')}\n/>\n```\n\nMinimal player without HbbTV and buttons:\n\n```jsx\n<HbbTVPlayer\n  hlsUrl=\"https://example.com/stream.m3u8\"\n  uuid=\"019abc77-7198-7c99-b101-5954f9753b7e\"\n  showHbbtvOverlay={false}\n  showColoredButtons={false}\n  showCustomControls={false}\n/>\n```\n\n## Props\n\n### Required Props\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `hlsUrl` | `string` | required | URL of the HLS stream |\n| `uuid` | `string` | required | UUID to fetch HbbTV URL from database |\n\n### Video Controls & Behavior\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `autoPlay` | `boolean` | `true` | Auto-play video on load |\n| `muted` | `boolean` | `true` | Start video muted |\n| `loop` | `boolean` | `false` | Loop video playback |\n| `preload` | `string` | `'auto'` | Video preload attribute ('auto', 'metadata', 'none') |\n| `poster` | `string` | `''` | Poster image URL |\n\n### HbbTV Overlay\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `showHbbtvOverlay` | `boolean` | `true` | Show/hide HbbTV overlay iframe |\n\n### Player UI Controls\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `showNativeControls` | `boolean` | `true` | Show native video controls |\n| `showCustomControls` | `boolean` | `true` | Show custom player controls overlay |\n| `controlsTimeout` | `number` | `3000` | Time in ms before controls auto-hide |\n\n### Colored Buttons Customization\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `showColoredButtons` | `boolean` | `true` | Show HbbTV colored buttons (Red/Green/Yellow/Blue) |\n| `buttonColors` | `object` | `{ red: 'red', green: 'green', yellow: 'yellow', blue: 'blue' }` | Customize button colors |\n| `buttonHeight` | `string` | `'10px'` | Height of colored buttons |\n| `buttonPadding` | `string` | `'5px'` | Padding around button container |\n| `buttonGap` | `string` | `'5px'` | Gap between buttons |\n| `buttonBorderRadius` | `string` | `'4px'` | Border radius of buttons |\n\n### Quality & Performance\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `defaultQuality` | `number` | `-1` | Default quality level index (-1 for auto) |\n\n### Playback Speed\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `playbackSpeed` | `number` | `1` | Initial playback speed |\n| `playbackSpeedOptions` | `array` | `[0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]` | Available playback speed options |\n\n### Visual Customization\n\n| Prop | Type | Default | Description |\n|------|------|---------|-------------|\n| `aspectRatio` | `string` | `'16/9'` | Video container aspect ratio |\n| `videoObjectFit` | `string` | `'fill'` | CSS object-fit for video element |\n| `className` | `string` | `''` | Additional CSS class |\n| `style` | `object` | `{}` | Additional inline styles |\n\n### Event Callbacks\n\n| Prop | Type | Description |\n|------|------|-------------|\n| `onPlay` | `function` | Called when video starts playing |\n| `onPause` | `function` | Called when video is paused |\n| `onEnded` | `function` | Called when video ends |\n| `onError` | `function` | Called on video or HLS errors |\n| `onQualityChange` | `function` | Called when quality level changes: `(level, levelInfo) => {}` |\n| `onHbbtvLoad` | `function` | Called when HbbTV overlay loads |\n| `onColoredButtonClick` | `function` | Called when colored button clicked: `(color, keyCode) => {}` |\n\n## Requirements\n\nThis player requires a proxy server to load HbbTV applications. See [@ejoyful/airhbb-proxy](https://npmjs.com/package/@ejoyful/airhbb-proxy) for the companion proxy server.\n\n## TV Remote Control Support\n\nThe player includes built-in support for Samsung Tizen and LG webOS TV remote controls, including:\n- Colored buttons (Red, Green, Yellow, Blue)\n- Media controls (Play, Pause, Stop, Rewind, Fast Forward)\n- Navigation keys\n\nFor detailed information about testing and deploying to smart TVs, see [TV_REMOTE_SUPPORT.md](TV_REMOTE_SUPPORT.md).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}