strataplayer 1.2.8 → 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"hls.cjs.js","sources":["../plugins/HlsPlugin.ts"],"sourcesContent":["\nimport { StrataCore, IPlugin } from '../core/StrataCore';\nimport * as HlsModule from 'hls.js';\n\n// Handle environment differences where Hls might be a default export or module export\nconst Hls = (HlsModule as any).default || HlsModule;\n\nexport class HlsPlugin implements IPlugin {\n name = 'HlsPlugin';\n private hls: any = null;\n private core: StrataCore | null = null;\n\n init(core: StrataCore) {\n this.core = core;\n\n // Listen for load requests\n this.core.events.on('load', (data: { url: string, type: string }) => {\n // Only proceed if type matches HLS\n if (data.type === 'hls' || data.url.includes('.m3u8')) {\n if (Hls.isSupported()) {\n this.loadHls(data.url);\n } else if (this.core!.video.canPlayType('application/vnd.apple.mpegurl')) {\n // Native HLS fallback (Safari) - Core sets src, we do nothing\n // Core already handles setting video.src if standard\n this.core!.video.src = data.url;\n }\n } else {\n // If we had an active HLS instance but switched to MP4, destroy it\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n }\n });\n\n // Listen for quality changes from UI\n this.core.events.on('quality-request', (index: number) => {\n if (this.hls) {\n this.hls.currentLevel = index;\n }\n });\n\n // Listen for audio track changes from UI\n this.core.events.on('audio-track-request', (index: number) => {\n if (this.hls) {\n this.hls.audioTrack = index;\n }\n });\n }\n\n private loadHls(url: string) {\n if (this.hls) {\n this.hls.destroy();\n }\n\n this.hls = new Hls({\n autoStartLoad: true,\n startLevel: -1, // Auto\n capLevelToPlayerSize: true, // Performance opt\n });\n\n this.hls.loadSource(url);\n this.hls.attachMedia(this.core!.video);\n\n this.hls.on(Hls.Events.MANIFEST_PARSED, (event: any, data: any) => {\n const levels = data.levels.map((lvl: any, idx: number) => ({\n height: lvl.height,\n bitrate: lvl.bitrate,\n index: idx\n }));\n this.core!.store.setState({ qualityLevels: levels });\n });\n\n // Handle Audio Tracks\n this.hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, (event: any, data: any) => {\n const tracks = data.audioTracks.map((track: any, idx: number) => ({\n label: track.name || track.lang || `Audio ${idx + 1}`,\n language: track.lang || '',\n index: idx\n }));\n this.core!.store.setState({\n audioTracks: tracks,\n currentAudioTrack: this.hls!.audioTrack\n });\n });\n\n this.hls.on(Hls.Events.LEVEL_SWITCHED, (event: any, data: any) => {\n // Update current quality only if in auto mode to show what's playing\n // If manual, state is already set\n });\n\n this.hls.on(Hls.Events.ERROR, (event: any, data: any) => {\n if (data.fatal) {\n // Pass fatal errors to Core to handle the retry loop visibly\n const msg = data.details || 'Unknown HLS Error';\n this.core!.triggerError(msg, true);\n\n // Cleanup if needed, but core.load() will eventually destroy and re-init this plugin\n }\n });\n }\n\n destroy() {\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n }\n}\n"],"names":["Hls","HlsModule","HlsPlugin","__publicField","core","data","index","url","event","levels","lvl","idx","tracks","track","msg"],"mappings":"wiBAKMA,EAAOC,EAAkB,SAAWA,EAEnC,MAAMC,CAA6B,CAAnC,cACLC,EAAA,YAAO,aACCA,EAAA,WAAW,MACXA,EAAA,YAA0B,MAElC,KAAKC,EAAkB,CACrB,KAAK,KAAOA,EAGZ,KAAK,KAAK,OAAO,GAAG,OAASC,GAAwC,CAE/DA,EAAK,OAAS,OAASA,EAAK,IAAI,SAAS,OAAO,EAC9CL,EAAI,cACN,KAAK,QAAQK,EAAK,GAAG,EACZ,KAAK,KAAM,MAAM,YAAY,+BAA+B,IAGrE,KAAK,KAAM,MAAM,IAAMA,EAAK,KAI1B,KAAK,MACP,KAAK,IAAI,QAAA,EACT,KAAK,IAAM,KAGjB,CAAC,EAGD,KAAK,KAAK,OAAO,GAAG,kBAAoBC,GAAkB,CACpD,KAAK,MACP,KAAK,IAAI,aAAeA,EAE5B,CAAC,EAGD,KAAK,KAAK,OAAO,GAAG,sBAAwBA,GAAkB,CACxD,KAAK,MACP,KAAK,IAAI,WAAaA,EAE1B,CAAC,CACH,CAEQ,QAAQC,EAAa,CACvB,KAAK,KACP,KAAK,IAAI,QAAA,EAGX,KAAK,IAAM,IAAIP,EAAI,CACjB,cAAe,GACf,WAAY,GACZ,qBAAsB,EAAA,CACvB,EAED,KAAK,IAAI,WAAWO,CAAG,EACvB,KAAK,IAAI,YAAY,KAAK,KAAM,KAAK,EAErC,KAAK,IAAI,GAAGP,EAAI,OAAO,gBAAiB,CAACQ,EAAYH,IAAc,CACjE,MAAMI,EAASJ,EAAK,OAAO,IAAI,CAACK,EAAUC,KAAiB,CACzD,OAAQD,EAAI,OACZ,QAASA,EAAI,QACb,MAAOC,CAAA,EACP,EACF,KAAK,KAAM,MAAM,SAAS,CAAE,cAAeF,EAAQ,CACrD,CAAC,EAGD,KAAK,IAAI,GAAGT,EAAI,OAAO,qBAAsB,CAACQ,EAAYH,IAAc,CACtE,MAAMO,EAASP,EAAK,YAAY,IAAI,CAACQ,EAAYF,KAAiB,CAChE,MAAOE,EAAM,MAAQA,EAAM,MAAQ,SAASF,EAAM,CAAC,GACnD,SAAUE,EAAM,MAAQ,GACxB,MAAOF,CAAA,EACP,EACF,KAAK,KAAM,MAAM,SAAS,CACxB,YAAaC,EACb,kBAAmB,KAAK,IAAK,UAAA,CAC9B,CACH,CAAC,EAED,KAAK,IAAI,GAAGZ,EAAI,OAAO,eAAgB,CAACQ,EAAYH,IAAc,CAGlE,CAAC,EAED,KAAK,IAAI,GAAGL,EAAI,OAAO,MAAO,CAACQ,EAAYH,IAAc,CACvD,GAAIA,EAAK,MAAO,CAEd,MAAMS,EAAMT,EAAK,SAAW,oBAC5B,KAAK,KAAM,aAAaS,EAAK,EAAI,CAGnC,CACF,CAAC,CACH,CAEA,SAAU,CACJ,KAAK,MACP,KAAK,IAAI,QAAA,EACT,KAAK,IAAM,KAEf,CACF"}
1
+ {"version":3,"file":"hls.cjs.js","sources":["../plugins/HlsPlugin.ts"],"sourcesContent":["\r\nimport { StrataCore, IPlugin } from '../core/StrataCore';\r\nimport * as HlsModule from 'hls.js';\r\n\r\n// Handle environment differences where Hls might be a default export or module export\r\nconst Hls = (HlsModule as any).default || HlsModule;\r\n\r\nexport class HlsPlugin implements IPlugin {\r\n name = 'HlsPlugin';\r\n private hls: any = null;\r\n private core: StrataCore | null = null;\r\n\r\n init(core: StrataCore) {\r\n this.core = core;\r\n\r\n // Listen for load requests\r\n this.core.events.on('load', (data: { url: string, type: string }) => {\r\n // Only proceed if type matches HLS\r\n if (data.type === 'hls' || data.url.includes('.m3u8')) {\r\n if (Hls.isSupported()) {\r\n this.loadHls(data.url);\r\n } else if (this.core!.video.canPlayType('application/vnd.apple.mpegurl')) {\r\n // Native HLS fallback (Safari) - Core sets src, we do nothing\r\n // Core already handles setting video.src if standard\r\n this.core!.video.src = data.url;\r\n }\r\n } else {\r\n // If we had an active HLS instance but switched to MP4, destroy it\r\n if (this.hls) {\r\n this.hls.destroy();\r\n this.hls = null;\r\n }\r\n }\r\n });\r\n\r\n // Listen for quality changes from UI\r\n this.core.events.on('quality-request', (index: number) => {\r\n if (this.hls) {\r\n this.hls.currentLevel = index;\r\n }\r\n });\r\n\r\n // Listen for audio track changes from UI\r\n this.core.events.on('audio-track-request', (index: number) => {\r\n if (this.hls) {\r\n this.hls.audioTrack = index;\r\n }\r\n });\r\n }\r\n\r\n private loadHls(url: string) {\r\n if (this.hls) {\r\n this.hls.destroy();\r\n }\r\n\r\n this.hls = new Hls({\r\n autoStartLoad: true,\r\n startLevel: -1, // Auto\r\n capLevelToPlayerSize: true, // Performance opt\r\n });\r\n\r\n this.hls.loadSource(url);\r\n this.hls.attachMedia(this.core!.video);\r\n\r\n this.hls.on(Hls.Events.MANIFEST_PARSED, (event: any, data: any) => {\r\n const levels = data.levels.map((lvl: any, idx: number) => ({\r\n height: lvl.height,\r\n bitrate: lvl.bitrate,\r\n index: idx\r\n }));\r\n this.core!.store.setState({ qualityLevels: levels });\r\n });\r\n\r\n // Handle Audio Tracks\r\n this.hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, (event: any, data: any) => {\r\n const tracks = data.audioTracks.map((track: any, idx: number) => ({\r\n label: track.name || track.lang || `Audio ${idx + 1}`,\r\n language: track.lang || '',\r\n index: idx\r\n }));\r\n this.core!.store.setState({\r\n audioTracks: tracks,\r\n currentAudioTrack: this.hls!.audioTrack\r\n });\r\n });\r\n\r\n this.hls.on(Hls.Events.LEVEL_SWITCHED, (event: any, data: any) => {\r\n // Update current quality only if in auto mode to show what's playing\r\n // If manual, state is already set\r\n });\r\n\r\n this.hls.on(Hls.Events.ERROR, (event: any, data: any) => {\r\n if (data.fatal) {\r\n // Pass fatal errors to Core to handle the retry loop visibly\r\n const msg = data.details || 'Unknown HLS Error';\r\n this.core!.triggerError(msg, true);\r\n\r\n // Cleanup if needed, but core.load() will eventually destroy and re-init this plugin\r\n }\r\n });\r\n }\r\n\r\n destroy() {\r\n if (this.hls) {\r\n this.hls.destroy();\r\n this.hls = null;\r\n }\r\n }\r\n}\r\n"],"names":["Hls","HlsModule","HlsPlugin","__publicField","core","data","index","url","event","levels","lvl","idx","tracks","track","msg"],"mappings":"wiBAKMA,EAAOC,EAAkB,SAAWA,EAEnC,MAAMC,CAA6B,CAAnC,cACLC,EAAA,YAAO,aACCA,EAAA,WAAW,MACXA,EAAA,YAA0B,MAElC,KAAKC,EAAkB,CACrB,KAAK,KAAOA,EAGZ,KAAK,KAAK,OAAO,GAAG,OAASC,GAAwC,CAE/DA,EAAK,OAAS,OAASA,EAAK,IAAI,SAAS,OAAO,EAC9CL,EAAI,cACN,KAAK,QAAQK,EAAK,GAAG,EACZ,KAAK,KAAM,MAAM,YAAY,+BAA+B,IAGrE,KAAK,KAAM,MAAM,IAAMA,EAAK,KAI1B,KAAK,MACP,KAAK,IAAI,QAAA,EACT,KAAK,IAAM,KAGjB,CAAC,EAGD,KAAK,KAAK,OAAO,GAAG,kBAAoBC,GAAkB,CACpD,KAAK,MACP,KAAK,IAAI,aAAeA,EAE5B,CAAC,EAGD,KAAK,KAAK,OAAO,GAAG,sBAAwBA,GAAkB,CACxD,KAAK,MACP,KAAK,IAAI,WAAaA,EAE1B,CAAC,CACH,CAEQ,QAAQC,EAAa,CACvB,KAAK,KACP,KAAK,IAAI,QAAA,EAGX,KAAK,IAAM,IAAIP,EAAI,CACjB,cAAe,GACf,WAAY,GACZ,qBAAsB,EAAA,CACvB,EAED,KAAK,IAAI,WAAWO,CAAG,EACvB,KAAK,IAAI,YAAY,KAAK,KAAM,KAAK,EAErC,KAAK,IAAI,GAAGP,EAAI,OAAO,gBAAiB,CAACQ,EAAYH,IAAc,CACjE,MAAMI,EAASJ,EAAK,OAAO,IAAI,CAACK,EAAUC,KAAiB,CACzD,OAAQD,EAAI,OACZ,QAASA,EAAI,QACb,MAAOC,CAAA,EACP,EACF,KAAK,KAAM,MAAM,SAAS,CAAE,cAAeF,EAAQ,CACrD,CAAC,EAGD,KAAK,IAAI,GAAGT,EAAI,OAAO,qBAAsB,CAACQ,EAAYH,IAAc,CACtE,MAAMO,EAASP,EAAK,YAAY,IAAI,CAACQ,EAAYF,KAAiB,CAChE,MAAOE,EAAM,MAAQA,EAAM,MAAQ,SAASF,EAAM,CAAC,GACnD,SAAUE,EAAM,MAAQ,GACxB,MAAOF,CAAA,EACP,EACF,KAAK,KAAM,MAAM,SAAS,CACxB,YAAaC,EACb,kBAAmB,KAAK,IAAK,UAAA,CAC9B,CACH,CAAC,EAED,KAAK,IAAI,GAAGZ,EAAI,OAAO,eAAgB,CAACQ,EAAYH,IAAc,CAGlE,CAAC,EAED,KAAK,IAAI,GAAGL,EAAI,OAAO,MAAO,CAACQ,EAAYH,IAAc,CACvD,GAAIA,EAAK,MAAO,CAEd,MAAMS,EAAMT,EAAK,SAAW,oBAC5B,KAAK,KAAM,aAAaS,EAAK,EAAI,CAGnC,CACF,CAAC,CACH,CAEA,SAAU,CACJ,KAAK,MACP,KAAK,IAAI,QAAA,EACT,KAAK,IAAM,KAEf,CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hls.es.js","sources":["../plugins/HlsPlugin.ts"],"sourcesContent":["\nimport { StrataCore, IPlugin } from '../core/StrataCore';\nimport * as HlsModule from 'hls.js';\n\n// Handle environment differences where Hls might be a default export or module export\nconst Hls = (HlsModule as any).default || HlsModule;\n\nexport class HlsPlugin implements IPlugin {\n name = 'HlsPlugin';\n private hls: any = null;\n private core: StrataCore | null = null;\n\n init(core: StrataCore) {\n this.core = core;\n\n // Listen for load requests\n this.core.events.on('load', (data: { url: string, type: string }) => {\n // Only proceed if type matches HLS\n if (data.type === 'hls' || data.url.includes('.m3u8')) {\n if (Hls.isSupported()) {\n this.loadHls(data.url);\n } else if (this.core!.video.canPlayType('application/vnd.apple.mpegurl')) {\n // Native HLS fallback (Safari) - Core sets src, we do nothing\n // Core already handles setting video.src if standard\n this.core!.video.src = data.url;\n }\n } else {\n // If we had an active HLS instance but switched to MP4, destroy it\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n }\n });\n\n // Listen for quality changes from UI\n this.core.events.on('quality-request', (index: number) => {\n if (this.hls) {\n this.hls.currentLevel = index;\n }\n });\n\n // Listen for audio track changes from UI\n this.core.events.on('audio-track-request', (index: number) => {\n if (this.hls) {\n this.hls.audioTrack = index;\n }\n });\n }\n\n private loadHls(url: string) {\n if (this.hls) {\n this.hls.destroy();\n }\n\n this.hls = new Hls({\n autoStartLoad: true,\n startLevel: -1, // Auto\n capLevelToPlayerSize: true, // Performance opt\n });\n\n this.hls.loadSource(url);\n this.hls.attachMedia(this.core!.video);\n\n this.hls.on(Hls.Events.MANIFEST_PARSED, (event: any, data: any) => {\n const levels = data.levels.map((lvl: any, idx: number) => ({\n height: lvl.height,\n bitrate: lvl.bitrate,\n index: idx\n }));\n this.core!.store.setState({ qualityLevels: levels });\n });\n\n // Handle Audio Tracks\n this.hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, (event: any, data: any) => {\n const tracks = data.audioTracks.map((track: any, idx: number) => ({\n label: track.name || track.lang || `Audio ${idx + 1}`,\n language: track.lang || '',\n index: idx\n }));\n this.core!.store.setState({\n audioTracks: tracks,\n currentAudioTrack: this.hls!.audioTrack\n });\n });\n\n this.hls.on(Hls.Events.LEVEL_SWITCHED, (event: any, data: any) => {\n // Update current quality only if in auto mode to show what's playing\n // If manual, state is already set\n });\n\n this.hls.on(Hls.Events.ERROR, (event: any, data: any) => {\n if (data.fatal) {\n // Pass fatal errors to Core to handle the retry loop visibly\n const msg = data.details || 'Unknown HLS Error';\n this.core!.triggerError(msg, true);\n\n // Cleanup if needed, but core.load() will eventually destroy and re-init this plugin\n }\n });\n }\n\n destroy() {\n if (this.hls) {\n this.hls.destroy();\n this.hls = null;\n }\n }\n}\n"],"names":["Hls","HlsModule","HlsPlugin","__publicField","core","data","index","url","event","levels","lvl","idx","tracks","track","msg"],"mappings":";;;;AAKA,MAAMA,IAAOC,EAAkB,WAAWA;AAEnC,MAAMC,EAA6B;AAAA,EAAnC;AACL,IAAAC,EAAA,cAAO;AACC,IAAAA,EAAA,aAAW;AACX,IAAAA,EAAA,cAA0B;AAAA;AAAA,EAElC,KAAKC,GAAkB;AACrB,SAAK,OAAOA,GAGZ,KAAK,KAAK,OAAO,GAAG,QAAQ,CAACC,MAAwC;AAEnE,MAAIA,EAAK,SAAS,SAASA,EAAK,IAAI,SAAS,OAAO,IAC9CL,EAAI,gBACN,KAAK,QAAQK,EAAK,GAAG,IACZ,KAAK,KAAM,MAAM,YAAY,+BAA+B,MAGrE,KAAK,KAAM,MAAM,MAAMA,EAAK,OAI1B,KAAK,QACP,KAAK,IAAI,QAAA,GACT,KAAK,MAAM;AAAA,IAGjB,CAAC,GAGD,KAAK,KAAK,OAAO,GAAG,mBAAmB,CAACC,MAAkB;AACxD,MAAI,KAAK,QACP,KAAK,IAAI,eAAeA;AAAA,IAE5B,CAAC,GAGD,KAAK,KAAK,OAAO,GAAG,uBAAuB,CAACA,MAAkB;AAC5D,MAAI,KAAK,QACP,KAAK,IAAI,aAAaA;AAAA,IAE1B,CAAC;AAAA,EACH;AAAA,EAEQ,QAAQC,GAAa;AAC3B,IAAI,KAAK,OACP,KAAK,IAAI,QAAA,GAGX,KAAK,MAAM,IAAIP,EAAI;AAAA,MACjB,eAAe;AAAA,MACf,YAAY;AAAA;AAAA,MACZ,sBAAsB;AAAA;AAAA,IAAA,CACvB,GAED,KAAK,IAAI,WAAWO,CAAG,GACvB,KAAK,IAAI,YAAY,KAAK,KAAM,KAAK,GAErC,KAAK,IAAI,GAAGP,EAAI,OAAO,iBAAiB,CAACQ,GAAYH,MAAc;AACjE,YAAMI,IAASJ,EAAK,OAAO,IAAI,CAACK,GAAUC,OAAiB;AAAA,QACzD,QAAQD,EAAI;AAAA,QACZ,SAASA,EAAI;AAAA,QACb,OAAOC;AAAA,MAAA,EACP;AACF,WAAK,KAAM,MAAM,SAAS,EAAE,eAAeF,GAAQ;AAAA,IACrD,CAAC,GAGD,KAAK,IAAI,GAAGT,EAAI,OAAO,sBAAsB,CAACQ,GAAYH,MAAc;AACtE,YAAMO,IAASP,EAAK,YAAY,IAAI,CAACQ,GAAYF,OAAiB;AAAA,QAChE,OAAOE,EAAM,QAAQA,EAAM,QAAQ,SAASF,IAAM,CAAC;AAAA,QACnD,UAAUE,EAAM,QAAQ;AAAA,QACxB,OAAOF;AAAA,MAAA,EACP;AACF,WAAK,KAAM,MAAM,SAAS;AAAA,QACxB,aAAaC;AAAA,QACb,mBAAmB,KAAK,IAAK;AAAA,MAAA,CAC9B;AAAA,IACH,CAAC,GAED,KAAK,IAAI,GAAGZ,EAAI,OAAO,gBAAgB,CAACQ,GAAYH,MAAc;AAAA,IAGlE,CAAC,GAED,KAAK,IAAI,GAAGL,EAAI,OAAO,OAAO,CAACQ,GAAYH,MAAc;AACvD,UAAIA,EAAK,OAAO;AAEd,cAAMS,IAAMT,EAAK,WAAW;AAC5B,aAAK,KAAM,aAAaS,GAAK,EAAI;AAAA,MAGnC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,UAAU;AACR,IAAI,KAAK,QACP,KAAK,IAAI,QAAA,GACT,KAAK,MAAM;AAAA,EAEf;AACF;"}
1
+ {"version":3,"file":"hls.es.js","sources":["../plugins/HlsPlugin.ts"],"sourcesContent":["\r\nimport { StrataCore, IPlugin } from '../core/StrataCore';\r\nimport * as HlsModule from 'hls.js';\r\n\r\n// Handle environment differences where Hls might be a default export or module export\r\nconst Hls = (HlsModule as any).default || HlsModule;\r\n\r\nexport class HlsPlugin implements IPlugin {\r\n name = 'HlsPlugin';\r\n private hls: any = null;\r\n private core: StrataCore | null = null;\r\n\r\n init(core: StrataCore) {\r\n this.core = core;\r\n\r\n // Listen for load requests\r\n this.core.events.on('load', (data: { url: string, type: string }) => {\r\n // Only proceed if type matches HLS\r\n if (data.type === 'hls' || data.url.includes('.m3u8')) {\r\n if (Hls.isSupported()) {\r\n this.loadHls(data.url);\r\n } else if (this.core!.video.canPlayType('application/vnd.apple.mpegurl')) {\r\n // Native HLS fallback (Safari) - Core sets src, we do nothing\r\n // Core already handles setting video.src if standard\r\n this.core!.video.src = data.url;\r\n }\r\n } else {\r\n // If we had an active HLS instance but switched to MP4, destroy it\r\n if (this.hls) {\r\n this.hls.destroy();\r\n this.hls = null;\r\n }\r\n }\r\n });\r\n\r\n // Listen for quality changes from UI\r\n this.core.events.on('quality-request', (index: number) => {\r\n if (this.hls) {\r\n this.hls.currentLevel = index;\r\n }\r\n });\r\n\r\n // Listen for audio track changes from UI\r\n this.core.events.on('audio-track-request', (index: number) => {\r\n if (this.hls) {\r\n this.hls.audioTrack = index;\r\n }\r\n });\r\n }\r\n\r\n private loadHls(url: string) {\r\n if (this.hls) {\r\n this.hls.destroy();\r\n }\r\n\r\n this.hls = new Hls({\r\n autoStartLoad: true,\r\n startLevel: -1, // Auto\r\n capLevelToPlayerSize: true, // Performance opt\r\n });\r\n\r\n this.hls.loadSource(url);\r\n this.hls.attachMedia(this.core!.video);\r\n\r\n this.hls.on(Hls.Events.MANIFEST_PARSED, (event: any, data: any) => {\r\n const levels = data.levels.map((lvl: any, idx: number) => ({\r\n height: lvl.height,\r\n bitrate: lvl.bitrate,\r\n index: idx\r\n }));\r\n this.core!.store.setState({ qualityLevels: levels });\r\n });\r\n\r\n // Handle Audio Tracks\r\n this.hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, (event: any, data: any) => {\r\n const tracks = data.audioTracks.map((track: any, idx: number) => ({\r\n label: track.name || track.lang || `Audio ${idx + 1}`,\r\n language: track.lang || '',\r\n index: idx\r\n }));\r\n this.core!.store.setState({\r\n audioTracks: tracks,\r\n currentAudioTrack: this.hls!.audioTrack\r\n });\r\n });\r\n\r\n this.hls.on(Hls.Events.LEVEL_SWITCHED, (event: any, data: any) => {\r\n // Update current quality only if in auto mode to show what's playing\r\n // If manual, state is already set\r\n });\r\n\r\n this.hls.on(Hls.Events.ERROR, (event: any, data: any) => {\r\n if (data.fatal) {\r\n // Pass fatal errors to Core to handle the retry loop visibly\r\n const msg = data.details || 'Unknown HLS Error';\r\n this.core!.triggerError(msg, true);\r\n\r\n // Cleanup if needed, but core.load() will eventually destroy and re-init this plugin\r\n }\r\n });\r\n }\r\n\r\n destroy() {\r\n if (this.hls) {\r\n this.hls.destroy();\r\n this.hls = null;\r\n }\r\n }\r\n}\r\n"],"names":["Hls","HlsModule","HlsPlugin","__publicField","core","data","index","url","event","levels","lvl","idx","tracks","track","msg"],"mappings":";;;;AAKA,MAAMA,IAAOC,EAAkB,WAAWA;AAEnC,MAAMC,EAA6B;AAAA,EAAnC;AACL,IAAAC,EAAA,cAAO;AACC,IAAAA,EAAA,aAAW;AACX,IAAAA,EAAA,cAA0B;AAAA;AAAA,EAElC,KAAKC,GAAkB;AACrB,SAAK,OAAOA,GAGZ,KAAK,KAAK,OAAO,GAAG,QAAQ,CAACC,MAAwC;AAEnE,MAAIA,EAAK,SAAS,SAASA,EAAK,IAAI,SAAS,OAAO,IAC9CL,EAAI,gBACN,KAAK,QAAQK,EAAK,GAAG,IACZ,KAAK,KAAM,MAAM,YAAY,+BAA+B,MAGrE,KAAK,KAAM,MAAM,MAAMA,EAAK,OAI1B,KAAK,QACP,KAAK,IAAI,QAAA,GACT,KAAK,MAAM;AAAA,IAGjB,CAAC,GAGD,KAAK,KAAK,OAAO,GAAG,mBAAmB,CAACC,MAAkB;AACxD,MAAI,KAAK,QACP,KAAK,IAAI,eAAeA;AAAA,IAE5B,CAAC,GAGD,KAAK,KAAK,OAAO,GAAG,uBAAuB,CAACA,MAAkB;AAC5D,MAAI,KAAK,QACP,KAAK,IAAI,aAAaA;AAAA,IAE1B,CAAC;AAAA,EACH;AAAA,EAEQ,QAAQC,GAAa;AAC3B,IAAI,KAAK,OACP,KAAK,IAAI,QAAA,GAGX,KAAK,MAAM,IAAIP,EAAI;AAAA,MACjB,eAAe;AAAA,MACf,YAAY;AAAA;AAAA,MACZ,sBAAsB;AAAA;AAAA,IAAA,CACvB,GAED,KAAK,IAAI,WAAWO,CAAG,GACvB,KAAK,IAAI,YAAY,KAAK,KAAM,KAAK,GAErC,KAAK,IAAI,GAAGP,EAAI,OAAO,iBAAiB,CAACQ,GAAYH,MAAc;AACjE,YAAMI,IAASJ,EAAK,OAAO,IAAI,CAACK,GAAUC,OAAiB;AAAA,QACzD,QAAQD,EAAI;AAAA,QACZ,SAASA,EAAI;AAAA,QACb,OAAOC;AAAA,MAAA,EACP;AACF,WAAK,KAAM,MAAM,SAAS,EAAE,eAAeF,GAAQ;AAAA,IACrD,CAAC,GAGD,KAAK,IAAI,GAAGT,EAAI,OAAO,sBAAsB,CAACQ,GAAYH,MAAc;AACtE,YAAMO,IAASP,EAAK,YAAY,IAAI,CAACQ,GAAYF,OAAiB;AAAA,QAChE,OAAOE,EAAM,QAAQA,EAAM,QAAQ,SAASF,IAAM,CAAC;AAAA,QACnD,UAAUE,EAAM,QAAQ;AAAA,QACxB,OAAOF;AAAA,MAAA,EACP;AACF,WAAK,KAAM,MAAM,SAAS;AAAA,QACxB,aAAaC;AAAA,QACb,mBAAmB,KAAK,IAAK;AAAA,MAAA,CAC9B;AAAA,IACH,CAAC,GAED,KAAK,IAAI,GAAGZ,EAAI,OAAO,gBAAgB,CAACQ,GAAYH,MAAc;AAAA,IAGlE,CAAC,GAED,KAAK,IAAI,GAAGL,EAAI,OAAO,OAAO,CAACQ,GAAYH,MAAc;AACvD,UAAIA,EAAK,OAAO;AAEd,cAAMS,IAAMT,EAAK,WAAW;AAC5B,aAAK,KAAM,aAAaS,GAAK,EAAI;AAAA,MAGnC;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,UAAU;AACR,IAAI,KAAK,QACP,KAAK,IAAI,QAAA,GACT,KAAK,MAAM;AAAA,EAEf;AACF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strataplayer",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "description": "A modern, framework-agnostic media engine for the web. Supports HLS, DASH, MPEG-TS, and WebTorrent with a plugin-based architecture and React integration.",
5
5
  "type": "module",
6
6
  "main": "./dist/strataplayer.cjs.js",
@@ -64,6 +64,25 @@
64
64
  },
65
65
  "./style.css": "./dist/style.css"
66
66
  },
67
+ "typesVersions": {
68
+ "*": {
69
+ "dash": [
70
+ "./dist/dash.d.ts"
71
+ ],
72
+ "hls": [
73
+ "./dist/hls.d.ts"
74
+ ],
75
+ "mpegts": [
76
+ "./dist/mpegts.d.ts"
77
+ ],
78
+ "webtorrent": [
79
+ "./dist/webtorrent.d.ts"
80
+ ],
81
+ "*": [
82
+ "./dist/index.d.ts"
83
+ ]
84
+ }
85
+ },
67
86
  "scripts": {
68
87
  "dev": "vite",
69
88
  "build": "tsc && vite build --mode lib && vite build --mode demo",