eb-player 2.0.0 → 2.0.1

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":"eb-player.d.ts","sourceRoot":"","sources":["../../../src/eb-player.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,uEAAuE;IACvE,KAAK,IAAI,IAAI,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAC5B;AA4DD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,eAAe,CAuJ3E;AAED;;;GAGG;AACH,wBAAgB,IAAI,IAAI,IAAI,CAK3B;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAU9B"}
1
+ {"version":3,"file":"eb-player.d.ts","sourceRoot":"","sources":["../../../src/eb-player.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,uEAAuE;IACvE,KAAK,IAAI,IAAI,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;CAC5B;AA4DD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,eAAe,CAiK3E;AAED;;;GAGG;AACH,wBAAgB,IAAI,IAAI,IAAI,CAK3B;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAU9B"}
@@ -82,8 +82,12 @@ export declare class HlsSnapshotHandler {
82
82
  /**
83
83
  * Initialize the snapshot Hls instance using the CDN-loaded Hls constructor.
84
84
  * Creates a separate Hls instance with minimal buffering for thumbnail generation.
85
+ *
86
+ * Returns a promise that resolves once the manifest is loaded and the snapshot
87
+ * handler is ready to serve seek thumbnails — matching the legacy Vue 2 behaviour
88
+ * where the handler only resolved after MANIFEST_LOADED.
85
89
  */
86
- init(HlsConstructor: SnapshotHlsConstructor): void;
90
+ init(HlsConstructor: SnapshotHlsConstructor): Promise<void>;
87
91
  /**
88
92
  * Seek the snapshot player to the specified time.
89
93
  * Throttled to avoid excessive seeks (250ms minimum interval).
@@ -1 +1 @@
1
- {"version":3,"file":"hls.d.ts","sourceRoot":"","sources":["../../../../../src/engines/snapshot/hls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hls.d.ts","sourceRoot":"","sources":["../../../../../src/engines/snapshot/hls.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"seekbar.d.ts","sourceRoot":"","sources":["../../../../../src/skin/controls/seekbar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAQ,SAAQ,aAAa;IACxC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAE5D,SAAS,CAAC,SAAS,IAAI,IAAI;IAwB3B,OAAO,CAAC,cAAc;IAWtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,iBAAiB;IA6BzB,SAAS,CAAC,QAAQ,IAAI,cAAc;CA2FrC"}
1
+ {"version":3,"file":"seekbar.d.ts","sourceRoot":"","sources":["../../../../../src/skin/controls/seekbar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAQ,SAAQ,aAAa;IACxC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAE5D,SAAS,CAAC,SAAS,IAAI,IAAI;IAwB3B,OAAO,CAAC,cAAc;IAWtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,iBAAiB;IA6BzB,SAAS,CAAC,QAAQ,IAAI,cAAc;CA2FrC"}
@@ -1392,7 +1392,6 @@ var EBPlayerBundle = (function (exports) {
1392
1392
  if (this.snapshotTake !== null) {
1393
1393
  this.snapshotTake(this.tooltipTime);
1394
1394
  }
1395
- // Preview video element is set via 'snapshot-handler-ready' event — no creation needed here
1396
1395
  this.render();
1397
1396
  }
1398
1397
  // ---- Chapter helpers ----
@@ -2051,16 +2050,16 @@ var EBPlayerBundle = (function (exports) {
2051
2050
  };
2052
2051
 
2053
2052
  // eslint-disable-next-line import/no-mutable-exports
2054
- let screenfull = {
2053
+ let screenfull$1 = {
2055
2054
  // eslint-disable-next-line default-param-last
2056
2055
  request(element = document.documentElement, options) {
2057
2056
  return new Promise((resolve, reject) => {
2058
2057
  const onFullScreenEntered = () => {
2059
- screenfull.off('change', onFullScreenEntered);
2058
+ screenfull$1.off('change', onFullScreenEntered);
2060
2059
  resolve();
2061
2060
  };
2062
2061
 
2063
- screenfull.on('change', onFullScreenEntered);
2062
+ screenfull$1.on('change', onFullScreenEntered);
2064
2063
 
2065
2064
  const returnPromise = element[nativeAPI.requestFullscreen](options);
2066
2065
 
@@ -2071,17 +2070,17 @@ var EBPlayerBundle = (function (exports) {
2071
2070
  },
2072
2071
  exit() {
2073
2072
  return new Promise((resolve, reject) => {
2074
- if (!screenfull.isFullscreen) {
2073
+ if (!screenfull$1.isFullscreen) {
2075
2074
  resolve();
2076
2075
  return;
2077
2076
  }
2078
2077
 
2079
2078
  const onFullScreenExit = () => {
2080
- screenfull.off('change', onFullScreenExit);
2079
+ screenfull$1.off('change', onFullScreenExit);
2081
2080
  resolve();
2082
2081
  };
2083
2082
 
2084
- screenfull.on('change', onFullScreenExit);
2083
+ screenfull$1.on('change', onFullScreenExit);
2085
2084
 
2086
2085
  const returnPromise = document[nativeAPI.exitFullscreen]();
2087
2086
 
@@ -2091,13 +2090,13 @@ var EBPlayerBundle = (function (exports) {
2091
2090
  });
2092
2091
  },
2093
2092
  toggle(element, options) {
2094
- return screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);
2093
+ return screenfull$1.isFullscreen ? screenfull$1.exit() : screenfull$1.request(element, options);
2095
2094
  },
2096
2095
  onchange(callback) {
2097
- screenfull.on('change', callback);
2096
+ screenfull$1.on('change', callback);
2098
2097
  },
2099
2098
  onerror(callback) {
2100
- screenfull.on('error', callback);
2099
+ screenfull$1.on('error', callback);
2101
2100
  },
2102
2101
  on(event, callback) {
2103
2102
  const eventName = eventNameMap[event];
@@ -2114,7 +2113,7 @@ var EBPlayerBundle = (function (exports) {
2114
2113
  raw: nativeAPI,
2115
2114
  };
2116
2115
 
2117
- Object.defineProperties(screenfull, {
2116
+ Object.defineProperties(screenfull$1, {
2118
2117
  isFullscreen: {
2119
2118
  get: () => Boolean(document[nativeAPI.fullscreenElement]),
2120
2119
  },
@@ -2130,10 +2129,10 @@ var EBPlayerBundle = (function (exports) {
2130
2129
  });
2131
2130
 
2132
2131
  if (!nativeAPI) {
2133
- screenfull = {isEnabled: false};
2132
+ screenfull$1 = {isEnabled: false};
2134
2133
  }
2135
2134
 
2136
- var screenfull$1 = screenfull;
2135
+ var screenfull = screenfull$1;
2137
2136
 
2138
2137
  /**
2139
2138
  * Fullscreen toggle button.
@@ -2150,31 +2149,31 @@ var EBPlayerBundle = (function (exports) {
2150
2149
  }
2151
2150
  onConnect() {
2152
2151
  this.state.on('isFullscreen', () => this.render(), { signal: this.signal });
2153
- if (screenfull$1.isEnabled) {
2152
+ if (screenfull.isEnabled) {
2154
2153
  this.changeHandler = () => {
2155
- this.state.isFullscreen = screenfull$1.isFullscreen;
2154
+ this.state.isFullscreen = screenfull.isFullscreen;
2156
2155
  this.render();
2157
2156
  };
2158
- screenfull$1.on('change', this.changeHandler);
2157
+ screenfull.on('change', this.changeHandler);
2159
2158
  // Unsubscribe when signal aborts (on disconnect)
2160
2159
  this.signal.addEventListener('abort', () => {
2161
- screenfull$1.off('change', this.changeHandler);
2160
+ screenfull.off('change', this.changeHandler);
2162
2161
  this.changeHandler = null;
2163
2162
  });
2164
2163
  }
2165
2164
  this.render();
2166
2165
  }
2167
2166
  handleClick() {
2168
- if (!screenfull$1.isEnabled)
2167
+ if (!screenfull.isEnabled)
2169
2168
  return;
2170
2169
  // Use the closest .eb-player ancestor as the fullscreen target,
2171
2170
  // falling back to this component's own element.
2172
2171
  // this.el is always non-null when this handler is called from a mounted button.
2173
2172
  const container = (this.el.closest('.eb-player') ?? this.el);
2174
- screenfull$1.toggle(container);
2173
+ screenfull.toggle(container);
2175
2174
  }
2176
2175
  template() {
2177
- if (!screenfull$1.isEnabled) {
2176
+ if (!screenfull.isEnabled) {
2178
2177
  return b `<button class="eb-fullscreen" hidden aria-hidden="true">${icon('fullscreen')}</button>`;
2179
2178
  }
2180
2179
  const isFullscreen = this.state.isFullscreen;
@@ -5770,6 +5769,10 @@ var EBPlayerBundle = (function (exports) {
5770
5769
  /**
5771
5770
  * Initialize the snapshot Hls instance using the CDN-loaded Hls constructor.
5772
5771
  * Creates a separate Hls instance with minimal buffering for thumbnail generation.
5772
+ *
5773
+ * Returns a promise that resolves once the manifest is loaded and the snapshot
5774
+ * handler is ready to serve seek thumbnails — matching the legacy Vue 2 behaviour
5775
+ * where the handler only resolved after MANIFEST_LOADED.
5773
5776
  */
5774
5777
  init(HlsConstructor) {
5775
5778
  // Create an off-screen video element for the snapshot player
@@ -5820,6 +5823,16 @@ var EBPlayerBundle = (function (exports) {
5820
5823
  if (this.config.src) {
5821
5824
  driver.loadSource(this.config.src);
5822
5825
  }
5826
+ // Wait for the manifest to load before resolving — the snapshot handler is only
5827
+ // useful once hls.js knows about the available levels and can seek to segments.
5828
+ // This matches the legacy Vue 2 code which resolved after MANIFEST_LOADED and
5829
+ // forced loadLevel = 0 to pin the lowest quality for thumbnails.
5830
+ return new Promise((resolve) => {
5831
+ driver.once(HlsConstructor.Events.MANIFEST_LOADED, () => {
5832
+ driver['loadLevel'] = 0;
5833
+ resolve();
5834
+ });
5835
+ });
5823
5836
  }
5824
5837
  /**
5825
5838
  * Seek the snapshot player to the specified time.
@@ -6111,8 +6124,8 @@ var EBPlayerBundle = (function (exports) {
6111
6124
  activeSnapshotDestroy = null;
6112
6125
  }
6113
6126
  const isDash = src.includes('.mpd') && mergedConfig.dashjs !== false;
6114
- // Defer init until CDN script is loaded (engine's onAttach loads CDN script async)
6115
- setTimeout(() => {
6127
+ // Wait for engine driver to be ready (CDN script loaded) before initializing snapshot
6128
+ engine.driverReady.then(() => {
6116
6129
  if (isDash) {
6117
6130
  const win = window;
6118
6131
  if (win.dashjs) {
@@ -6131,15 +6144,25 @@ var EBPlayerBundle = (function (exports) {
6131
6144
  const win = window;
6132
6145
  if (win.Hls) {
6133
6146
  const handler = new HlsSnapshotHandler({ src, engineSettings: mergedConfig.engineSettings }, null);
6134
- handler.init(win.Hls);
6135
- activeSnapshotDestroy = () => handler.destroy();
6136
- const snapshotVideo = handler.getVideo();
6137
- if (snapshotVideo !== null) {
6138
- controller.bus.emit('snapshot-handler-ready', { take: (time) => handler.take(time), video: snapshotVideo });
6139
- }
6147
+ handler.init(win.Hls)
6148
+ .then(() => {
6149
+ activeSnapshotDestroy = () => handler.destroy();
6150
+ const snapshotVideo = handler.getVideo();
6151
+ if (snapshotVideo !== null) {
6152
+ controller.bus.emit('snapshot-handler-ready', { take: (time) => handler.take(time), video: snapshotVideo });
6153
+ }
6154
+ })
6155
+ .catch((error) => {
6156
+ console.warn('EBPlayer: HlsSnapshotHandler init failed:', error);
6157
+ });
6158
+ }
6159
+ else {
6160
+ console.warn('EBPlayer: window.Hls not available after driverReady — snapshot preview disabled');
6140
6161
  }
6141
6162
  }
6142
- }, 500);
6163
+ }).catch((error) => {
6164
+ console.warn('EBPlayer: Snapshot handler init failed:', error);
6165
+ });
6143
6166
  }
6144
6167
  },
6145
6168
  close() {