eb-player 2.1.5 → 2.3.0

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.
Files changed (183) hide show
  1. package/dist/build/ebplayer.bundle.js +206 -4
  2. package/dist/build/ebplayer.bundle.js.map +1 -1
  3. package/dist/build/types/src/core/lifecycle.d.ts +9 -0
  4. package/dist/build/types/src/core/lifecycle.d.ts.map +1 -1
  5. package/dist/build/types/src/eb-player.d.ts +4 -0
  6. package/dist/build/types/src/eb-player.d.ts.map +1 -1
  7. package/dist/build/types/src/skin/controls/settings-panel.d.ts.map +1 -1
  8. package/package.json +7 -4
  9. package/dist/build/theme-forja.js +0 -1
  10. package/dist/build/theme-radio.js +0 -1
  11. package/dist/build/theme-snrt.js +0 -1
  12. package/dist/build/types/config.d.ts +0 -139
  13. package/dist/build/types/config.d.ts.map +0 -1
  14. package/dist/build/types/core/command-handler.d.ts +0 -50
  15. package/dist/build/types/core/command-handler.d.ts.map +0 -1
  16. package/dist/build/types/core/config.d.ts +0 -187
  17. package/dist/build/types/core/config.d.ts.map +0 -1
  18. package/dist/build/types/core/css/theme-forja.entry.d.ts +0 -2
  19. package/dist/build/types/core/css/theme-forja.entry.d.ts.map +0 -1
  20. package/dist/build/types/core/css/theme-radio.entry.d.ts +0 -2
  21. package/dist/build/types/core/css/theme-radio.entry.d.ts.map +0 -1
  22. package/dist/build/types/core/css/theme-snrt.entry.d.ts +0 -2
  23. package/dist/build/types/core/css/theme-snrt.entry.d.ts.map +0 -1
  24. package/dist/build/types/core/engine-state-sync.d.ts +0 -38
  25. package/dist/build/types/core/engine-state-sync.d.ts.map +0 -1
  26. package/dist/build/types/core/event-bus.d.ts +0 -90
  27. package/dist/build/types/core/event-bus.d.ts.map +0 -1
  28. package/dist/build/types/core/fsm.d.ts +0 -30
  29. package/dist/build/types/core/fsm.d.ts.map +0 -1
  30. package/dist/build/types/core/i18n.d.ts +0 -51
  31. package/dist/build/types/core/i18n.d.ts.map +0 -1
  32. package/dist/build/types/core/index.d.ts +0 -23
  33. package/dist/build/types/core/index.d.ts.map +0 -1
  34. package/dist/build/types/core/lifecycle.d.ts +0 -96
  35. package/dist/build/types/core/lifecycle.d.ts.map +0 -1
  36. package/dist/build/types/core/player-state.d.ts +0 -15
  37. package/dist/build/types/core/player-state.d.ts.map +0 -1
  38. package/dist/build/types/core/types.d.ts +0 -85
  39. package/dist/build/types/core/types.d.ts.map +0 -1
  40. package/dist/build/types/eb-player-standalone.d.ts +0 -23
  41. package/dist/build/types/eb-player-standalone.d.ts.map +0 -1
  42. package/dist/build/types/eb-player.d.ts +0 -56
  43. package/dist/build/types/eb-player.d.ts.map +0 -1
  44. package/dist/build/types/engine-state-sync.d.ts +0 -38
  45. package/dist/build/types/engine-state-sync.d.ts.map +0 -1
  46. package/dist/build/types/engines/abr/dash.d.ts +0 -56
  47. package/dist/build/types/engines/abr/dash.d.ts.map +0 -1
  48. package/dist/build/types/engines/abr/hls.d.ts +0 -105
  49. package/dist/build/types/engines/abr/hls.d.ts.map +0 -1
  50. package/dist/build/types/engines/base-engine.d.ts +0 -72
  51. package/dist/build/types/engines/base-engine.d.ts.map +0 -1
  52. package/dist/build/types/engines/cdn-loader.d.ts +0 -20
  53. package/dist/build/types/engines/cdn-loader.d.ts.map +0 -1
  54. package/dist/build/types/engines/cdn-token-manager.d.ts +0 -137
  55. package/dist/build/types/engines/cdn-token-manager.d.ts.map +0 -1
  56. package/dist/build/types/engines/dash.d.ts +0 -79
  57. package/dist/build/types/engines/dash.d.ts.map +0 -1
  58. package/dist/build/types/engines/drm.d.ts +0 -54
  59. package/dist/build/types/engines/drm.d.ts.map +0 -1
  60. package/dist/build/types/engines/hls-discontinuity-patch.d.ts +0 -43
  61. package/dist/build/types/engines/hls-discontinuity-patch.d.ts.map +0 -1
  62. package/dist/build/types/engines/hls.d.ts +0 -53
  63. package/dist/build/types/engines/hls.d.ts.map +0 -1
  64. package/dist/build/types/engines/index.d.ts +0 -26
  65. package/dist/build/types/engines/index.d.ts.map +0 -1
  66. package/dist/build/types/engines/ios/hls.d.ts +0 -20
  67. package/dist/build/types/engines/ios/hls.d.ts.map +0 -1
  68. package/dist/build/types/engines/poster/hls.d.ts +0 -35
  69. package/dist/build/types/engines/poster/hls.d.ts.map +0 -1
  70. package/dist/build/types/engines/retry/dash.d.ts +0 -39
  71. package/dist/build/types/engines/retry/dash.d.ts.map +0 -1
  72. package/dist/build/types/engines/retry/hls.d.ts +0 -47
  73. package/dist/build/types/engines/retry/hls.d.ts.map +0 -1
  74. package/dist/build/types/engines/snapshot/dash.d.ts +0 -55
  75. package/dist/build/types/engines/snapshot/dash.d.ts.map +0 -1
  76. package/dist/build/types/engines/snapshot/hls.d.ts +0 -118
  77. package/dist/build/types/engines/snapshot/hls.d.ts.map +0 -1
  78. package/dist/build/types/engines/stall-watchdog.d.ts +0 -41
  79. package/dist/build/types/engines/stall-watchdog.d.ts.map +0 -1
  80. package/dist/build/types/event-bus.d.ts +0 -54
  81. package/dist/build/types/event-bus.d.ts.map +0 -1
  82. package/dist/build/types/fsm.d.ts +0 -27
  83. package/dist/build/types/fsm.d.ts.map +0 -1
  84. package/dist/build/types/i18n.d.ts +0 -51
  85. package/dist/build/types/i18n.d.ts.map +0 -1
  86. package/dist/build/types/index.d.ts +0 -21
  87. package/dist/build/types/index.d.ts.map +0 -1
  88. package/dist/build/types/integrations/ads-manager.d.ts +0 -37
  89. package/dist/build/types/integrations/ads-manager.d.ts.map +0 -1
  90. package/dist/build/types/integrations/chromecast-manager.d.ts +0 -50
  91. package/dist/build/types/integrations/chromecast-manager.d.ts.map +0 -1
  92. package/dist/build/types/integrations/epg-manager.d.ts +0 -22
  93. package/dist/build/types/integrations/epg-manager.d.ts.map +0 -1
  94. package/dist/build/types/integrations/index.d.ts +0 -7
  95. package/dist/build/types/integrations/index.d.ts.map +0 -1
  96. package/dist/build/types/integrations/intro-stream-manager.d.ts +0 -33
  97. package/dist/build/types/integrations/intro-stream-manager.d.ts.map +0 -1
  98. package/dist/build/types/integrations/p2p-manager.d.ts +0 -42
  99. package/dist/build/types/integrations/p2p-manager.d.ts.map +0 -1
  100. package/dist/build/types/integrations/playlist-manager.d.ts +0 -21
  101. package/dist/build/types/integrations/playlist-manager.d.ts.map +0 -1
  102. package/dist/build/types/lifecycle.d.ts +0 -64
  103. package/dist/build/types/lifecycle.d.ts.map +0 -1
  104. package/dist/build/types/player-state.d.ts +0 -15
  105. package/dist/build/types/player-state.d.ts.map +0 -1
  106. package/dist/build/types/skin/bars/bottom-bar.d.ts +0 -16
  107. package/dist/build/types/skin/bars/bottom-bar.d.ts.map +0 -1
  108. package/dist/build/types/skin/bars/middle-bar.d.ts +0 -16
  109. package/dist/build/types/skin/bars/middle-bar.d.ts.map +0 -1
  110. package/dist/build/types/skin/bars/top-bar.d.ts +0 -15
  111. package/dist/build/types/skin/bars/top-bar.d.ts.map +0 -1
  112. package/dist/build/types/skin/base-component.d.ts +0 -69
  113. package/dist/build/types/skin/base-component.d.ts.map +0 -1
  114. package/dist/build/types/skin/brand/forja-playlist-bar.d.ts +0 -15
  115. package/dist/build/types/skin/brand/forja-playlist-bar.d.ts.map +0 -1
  116. package/dist/build/types/skin/brand/snrt-radio-carousel.d.ts +0 -16
  117. package/dist/build/types/skin/brand/snrt-radio-carousel.d.ts.map +0 -1
  118. package/dist/build/types/skin/component-registry.d.ts +0 -16
  119. package/dist/build/types/skin/component-registry.d.ts.map +0 -1
  120. package/dist/build/types/skin/controllers/auto-hide.d.ts +0 -27
  121. package/dist/build/types/skin/controllers/auto-hide.d.ts.map +0 -1
  122. package/dist/build/types/skin/controllers/keyboard.d.ts +0 -29
  123. package/dist/build/types/skin/controllers/keyboard.d.ts.map +0 -1
  124. package/dist/build/types/skin/controls/cast-button.d.ts +0 -15
  125. package/dist/build/types/skin/controls/cast-button.d.ts.map +0 -1
  126. package/dist/build/types/skin/controls/channel-name.d.ts +0 -16
  127. package/dist/build/types/skin/controls/channel-name.d.ts.map +0 -1
  128. package/dist/build/types/skin/controls/forward-button.d.ts +0 -15
  129. package/dist/build/types/skin/controls/forward-button.d.ts.map +0 -1
  130. package/dist/build/types/skin/controls/fullscreen-button.d.ts +0 -30
  131. package/dist/build/types/skin/controls/fullscreen-button.d.ts.map +0 -1
  132. package/dist/build/types/skin/controls/info-button.d.ts +0 -10
  133. package/dist/build/types/skin/controls/info-button.d.ts.map +0 -1
  134. package/dist/build/types/skin/controls/live-sync-button.d.ts +0 -20
  135. package/dist/build/types/skin/controls/live-sync-button.d.ts.map +0 -1
  136. package/dist/build/types/skin/controls/pip-button.d.ts +0 -21
  137. package/dist/build/types/skin/controls/pip-button.d.ts.map +0 -1
  138. package/dist/build/types/skin/controls/play-pause-button.d.ts +0 -14
  139. package/dist/build/types/skin/controls/play-pause-button.d.ts.map +0 -1
  140. package/dist/build/types/skin/controls/rewind-button.d.ts +0 -15
  141. package/dist/build/types/skin/controls/rewind-button.d.ts.map +0 -1
  142. package/dist/build/types/skin/controls/seekbar.d.ts +0 -48
  143. package/dist/build/types/skin/controls/seekbar.d.ts.map +0 -1
  144. package/dist/build/types/skin/controls/settings-panel.d.ts +0 -53
  145. package/dist/build/types/skin/controls/settings-panel.d.ts.map +0 -1
  146. package/dist/build/types/skin/controls/share-button.d.ts +0 -11
  147. package/dist/build/types/skin/controls/share-button.d.ts.map +0 -1
  148. package/dist/build/types/skin/controls/time-display.d.ts +0 -19
  149. package/dist/build/types/skin/controls/time-display.d.ts.map +0 -1
  150. package/dist/build/types/skin/controls/volume-control.d.ts +0 -21
  151. package/dist/build/types/skin/controls/volume-control.d.ts.map +0 -1
  152. package/dist/build/types/skin/icons/icons-modern.d.ts +0 -10
  153. package/dist/build/types/skin/icons/icons-modern.d.ts.map +0 -1
  154. package/dist/build/types/skin/icons/icons.d.ts +0 -10
  155. package/dist/build/types/skin/icons/icons.d.ts.map +0 -1
  156. package/dist/build/types/skin/icons/sprite.d.ts +0 -39
  157. package/dist/build/types/skin/icons/sprite.d.ts.map +0 -1
  158. package/dist/build/types/skin/index.d.ts +0 -24
  159. package/dist/build/types/skin/index.d.ts.map +0 -1
  160. package/dist/build/types/skin/overlays/error-message.d.ts +0 -14
  161. package/dist/build/types/skin/overlays/error-message.d.ts.map +0 -1
  162. package/dist/build/types/skin/overlays/info-overlay.d.ts +0 -15
  163. package/dist/build/types/skin/overlays/info-overlay.d.ts.map +0 -1
  164. package/dist/build/types/skin/overlays/loading-spinner.d.ts +0 -17
  165. package/dist/build/types/skin/overlays/loading-spinner.d.ts.map +0 -1
  166. package/dist/build/types/skin/overlays/preroll-overlay.d.ts +0 -39
  167. package/dist/build/types/skin/overlays/preroll-overlay.d.ts.map +0 -1
  168. package/dist/build/types/skin/overlays/socials-overlay.d.ts +0 -17
  169. package/dist/build/types/skin/overlays/socials-overlay.d.ts.map +0 -1
  170. package/dist/build/types/skin/overlays/toast-notification.d.ts +0 -18
  171. package/dist/build/types/skin/overlays/toast-notification.d.ts.map +0 -1
  172. package/dist/build/types/skin/skin-root.d.ts +0 -88
  173. package/dist/build/types/skin/skin-root.d.ts.map +0 -1
  174. package/dist/build/types/types.d.ts +0 -41
  175. package/dist/build/types/types.d.ts.map +0 -1
  176. package/dist/build/types/utils/chapters.d.ts +0 -16
  177. package/dist/build/types/utils/chapters.d.ts.map +0 -1
  178. package/dist/build/types/utils/format-duration.d.ts +0 -9
  179. package/dist/build/types/utils/format-duration.d.ts.map +0 -1
  180. package/dist/build/types/utils/format-wall-clock.d.ts +0 -6
  181. package/dist/build/types/utils/format-wall-clock.d.ts.map +0 -1
  182. package/dist/build/types/utils/settings-helpers.d.ts +0 -41
  183. package/dist/build/types/utils/settings-helpers.d.ts.map +0 -1
@@ -4,7 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EBPlayer = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- var __EB_PLAYER_VERSION__ = "2.1.5";
7
+ var __EB_PLAYER_VERSION__ = "2.3.0";
8
8
 
9
9
  /**
10
10
  * Finite State Machine for player playback state transitions.
@@ -1866,7 +1866,9 @@
1866
1866
  }
1867
1867
  if (mode === 'audio') {
1868
1868
  const tracks = this.state.audioTracks;
1869
- if (tracks.length === 0)
1869
+ // A single track offers no choice, so its raw descriptor (often a bare
1870
+ // 3-letter code like "ara") is noise — show the localized "Default".
1871
+ if (tracks.length <= 1)
1870
1872
  return i18n.t('settings.default');
1871
1873
  const current = this.state.currentAudioTrack;
1872
1874
  const track = tracks[current];
@@ -1950,7 +1952,9 @@
1950
1952
  renderAudioMenu() {
1951
1953
  const tracks = this.state.audioTracks;
1952
1954
  const currentTrack = this.state.currentAudioTrack;
1953
- const items = tracks.length > 0
1955
+ // Single track (or none) collapses to one localized "Default" entry rather
1956
+ // than echoing a bare language code — matches currentValueLabel('audio').
1957
+ const items = tracks.length > 1
1954
1958
  ? getAudioItems(tracks, currentTrack)
1955
1959
  : [{ label: this.i18n.t('settings.default'), value: 0, selected: true }];
1956
1960
  return this.renderSubMenu(this.i18n.t('settings.audio'), items, (item) => {
@@ -4384,6 +4388,170 @@
4384
4388
  };
4385
4389
  }
4386
4390
 
4391
+ var subtitlesParserVtt = {exports: {}};
4392
+
4393
+ var hasRequiredSubtitlesParserVtt;
4394
+
4395
+ function requireSubtitlesParserVtt () {
4396
+ if (hasRequiredSubtitlesParserVtt) return subtitlesParserVtt.exports;
4397
+ hasRequiredSubtitlesParserVtt = 1;
4398
+ (function (module, exports) {
4399
+ var parser = (function () {
4400
+ var pItems = {};
4401
+
4402
+ /**
4403
+ * Converts SubRip subtitles into array of objects
4404
+ * [{
4405
+ * id: `Number of subtitle`
4406
+ * startTime: `Start time of subtitle`
4407
+ * endTime: `End time of subtitle
4408
+ * text: `Text of subtitle`
4409
+ * }]
4410
+ *
4411
+ * @param {String} data SubRip suntitles string
4412
+ * @param {Boolean} ms Optional: use milliseconds for startTime and endTime
4413
+ * @return {Array}
4414
+ */
4415
+ pItems.fromVtt = function (data, timeFormat, isYoutubeAutoTranscript) {
4416
+ var useYoutubeAutoTranscript = isYoutubeAutoTranscript ? true : false;
4417
+ data = data.replace(/\r/g, "");
4418
+ var regex = /(\d+)?\n?(\d{2}:\d{2}:\d{2}[,.]\d{3}) --> (\d{2}:\d{2}:\d{2}[,.]\d{3}).*\n/g;
4419
+ data = data.split(regex);
4420
+ data.shift();
4421
+ var items = [];
4422
+ for (var i = 0; i < data.length; i += 4) {
4423
+ var text = data[i + 3];
4424
+ if (useYoutubeAutoTranscript) {
4425
+ text = text.split("\n");
4426
+ text.shift();
4427
+ text = text.join("\n");
4428
+ }
4429
+ if (text.trim().length === 0) continue;
4430
+ items.push({
4431
+ id: data[i] ? +data[i].trim() : items.length + 1,
4432
+ startTime: changeTimeFormat(data[i + 1].trim(), timeFormat),
4433
+ endTime: changeTimeFormat(data[i + 2].trim(), timeFormat),
4434
+ text: text.trim(),
4435
+ });
4436
+ }
4437
+ return items;
4438
+ };
4439
+
4440
+ /**
4441
+ * Converts Array of objects created by this module to SubRip subtitles
4442
+ * @param {Array} data
4443
+ * @return {String} SubRip subtitles string
4444
+ */
4445
+ pItems.toVtt = function (data) {
4446
+ if (!data instanceof Array) return "";
4447
+ var res = "";
4448
+
4449
+ for (var i = 0; i < data.length; i++) {
4450
+ var s = data[i];
4451
+
4452
+ if (!isNaN(s.startTime) && !isNaN(s.endTime)) {
4453
+ s.startTime = msTime(parseInt(s.startTime, 10));
4454
+ s.endTime = msTime(parseInt(s.endTime, 10));
4455
+ }
4456
+
4457
+ res += s.id + "\r\n";
4458
+ res += s.startTime + " --> " + s.endTime + "\r\n";
4459
+ res += s.text.replace("\n", "\r\n") + "\r\n\r\n";
4460
+ }
4461
+
4462
+ return res;
4463
+ };
4464
+
4465
+ var changeTimeFormat = function (time, format) {
4466
+ if (format === "ms") {
4467
+ return timeMs(time);
4468
+ } else if (format === "s") {
4469
+ return timeMs(time) / 1000;
4470
+ } else {
4471
+ return time;
4472
+ }
4473
+ };
4474
+
4475
+ var timeMs = function (val) {
4476
+ var regex = /(\d+):(\d{2}):(\d{2})[,.](\d{3})/;
4477
+ var parts = regex.exec(val);
4478
+
4479
+ if (parts === null) {
4480
+ return 0;
4481
+ }
4482
+
4483
+ for (var i = 1; i < 5; i++) {
4484
+ parts[i] = parseInt(parts[i], 10);
4485
+ if (isNaN(parts[i])) parts[i] = 0;
4486
+ }
4487
+
4488
+ // hours + minutes + seconds + ms
4489
+ return parts[1] * 3600000 + parts[2] * 60000 + parts[3] * 1000 + parts[4];
4490
+ };
4491
+
4492
+ var msTime = function (val) {
4493
+ var measures = [3600000, 60000, 1000];
4494
+ var time = [];
4495
+
4496
+ for (var i in measures) {
4497
+ var res = ((val / measures[i]) >> 0).toString();
4498
+
4499
+ if (res.length < 2) res = "0" + res;
4500
+ val %= measures[i];
4501
+ time.push(res);
4502
+ }
4503
+
4504
+ var ms = val.toString();
4505
+ if (ms.length < 3) {
4506
+ for (i = 0; i <= 3 - ms.length; i++) ms = "0" + ms;
4507
+ }
4508
+
4509
+ return time.join(":") + "," + ms;
4510
+ };
4511
+
4512
+ return pItems;
4513
+ })();
4514
+
4515
+ // ignore exports for browser
4516
+ {
4517
+ module.exports = parser;
4518
+ }
4519
+ } (subtitlesParserVtt));
4520
+ return subtitlesParserVtt.exports;
4521
+ }
4522
+
4523
+ var subtitlesParserVttExports = requireSubtitlesParserVtt();
4524
+
4525
+ /**
4526
+ * Parses a WebVTT string into an array of ChapterMark objects.
4527
+ * Returns an empty array if the content is empty or contains no parseable cues.
4528
+ */
4529
+ function parseChapters(vttContent) {
4530
+ if (!vttContent || !vttContent.trim()) {
4531
+ return [];
4532
+ }
4533
+ const cues = subtitlesParserVttExports.fromVtt(vttContent, 's');
4534
+ return cues.map((cue) => ({
4535
+ title: cue.text,
4536
+ startTime: cue.startTime,
4537
+ endTime: cue.endTime
4538
+ }));
4539
+ }
4540
+ /**
4541
+ * Fetches a WebVTT chapters file from a URL and parses it.
4542
+ * Returns an empty array if the fetch or parse fails.
4543
+ */
4544
+ async function fetchChapters(url) {
4545
+ try {
4546
+ const response = await fetch(url);
4547
+ const text = await response.text();
4548
+ return parseChapters(text);
4549
+ }
4550
+ catch {
4551
+ return [];
4552
+ }
4553
+ }
4554
+
4387
4555
  /**
4388
4556
  * PlayerController manages the complete lifecycle of a player instance.
4389
4557
  *
@@ -4584,6 +4752,25 @@
4584
4752
  // CRITICAL: AbortController is one-shot. Create a fresh one for re-mount.
4585
4753
  this.abortController = new AbortController();
4586
4754
  }
4755
+ /**
4756
+ * Populate state.chapters from config.chapters.
4757
+ *
4758
+ * The value is either an inline WebVTT string or an http(s) URL pointing at a
4759
+ * .vtt file. A remote fetch is fire-and-forget and non-critical: fetchChapters
4760
+ * resolves to an empty array on failure, and a result arriving after dispose()
4761
+ * is discarded rather than written into a torn-down state.
4762
+ */
4763
+ loadChapters(source, state, signal) {
4764
+ if (/^https?:\/\//i.test(source.trim())) {
4765
+ void fetchChapters(source).then((chapters) => {
4766
+ if (!signal.aborted) {
4767
+ state.chapters = chapters;
4768
+ }
4769
+ });
4770
+ return;
4771
+ }
4772
+ state.chapters = parseChapters(source);
4773
+ }
4587
4774
  /**
4588
4775
  * Initialize integration managers based on config flags.
4589
4776
  * All integrations are async and non-critical — errors are caught and logged.
@@ -4626,6 +4813,10 @@
4626
4813
  });
4627
4814
  }
4628
4815
  }
4816
+ // Chapters: skip when config.chapters is not set
4817
+ if (config.chapters) {
4818
+ this.loadChapters(config.chapters, state, signal);
4819
+ }
4629
4820
  // IntroStreamManager: skip when config.preroll is false (D-02)
4630
4821
  if (config.preroll && this.skinRoot !== null) {
4631
4822
  const introManager = new IntroStreamManager();
@@ -8110,7 +8301,15 @@
8110
8301
  if (typeof window !== 'undefined') {
8111
8302
  console.info(`%cEBPlayer v${VERSION}`, 'color: #1FA9DD; font-weight: bold');
8112
8303
  const win = window;
8113
- win.EBPlayer = { start, stop, destroy, AVAILABLE_THEMES, THEME_LAYOUTS, version: VERSION };
8304
+ // Augment a pre-existing window.EBPlayer in place instead of replacing it.
8305
+ // Rollup's UMD wrapper calls factory(global.EBPlayer = {}), so in the UMD
8306
+ // build the global IS the exports object Rollup writes start/stop/destroy
8307
+ // onto — replacing it here orphaned that object, leaving a 6-key
8308
+ // window.EBPlayer beside a 3-key module surface (`import`/`require`).
8309
+ // `?? {}` keeps a hypothetical non-UMD build working.
8310
+ const api = win.EBPlayer ?? {};
8311
+ Object.assign(api, { start, stop, destroy, AVAILABLE_THEMES, THEME_LAYOUTS, version: VERSION });
8312
+ win.EBPlayer = api;
8114
8313
  }
8115
8314
 
8116
8315
  /**
@@ -8515,9 +8714,12 @@
8515
8714
  createHlsAbrController: createHlsAbrController
8516
8715
  });
8517
8716
 
8717
+ exports.AVAILABLE_THEMES = AVAILABLE_THEMES;
8718
+ exports.THEME_LAYOUTS = THEME_LAYOUTS;
8518
8719
  exports.destroy = destroy;
8519
8720
  exports.start = start;
8520
8721
  exports.stop = stop;
8722
+ exports.version = VERSION;
8521
8723
 
8522
8724
  }));
8523
8725
  //# sourceMappingURL=ebplayer.bundle.js.map