@openrails/contentkit-ui 0.90.3 → 0.92.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,9 +1,9 @@
1
1
  import { abrHlsConfig as e, capRung as t, classifyHlsError as n, classifyMediaError as r, expiryDelay as i, hlsConfig as a, initialEstimate as o, otherCodecLevels as s, refreshable as c, startRung as ee, statusKind as l } from "../client/playback.js";
2
- import { PLAYER_TRACKS_KEY as u, PLAYER_VOLUME_KEY as d, pickTrack as f, readTrackPrefs as p, readVolume as m, writeTrackPrefs as h } from "../client/player.js";
3
- import { useCallback as g, useEffect as _, useRef as v, useState as y } from "react";
2
+ import { PLAYER_TRACKS_KEY as u, PLAYER_VOLUME_KEY as d, pickTrack as f, readTrackPrefs as p, readVolume as te, writeTrackPrefs as m } from "../client/player.js";
3
+ import { useCallback as h, useEffect as g, useRef as _, useState as v } from "react";
4
4
  //#region src/react/gallery.ts
5
- var b = "ckui.media-gallery.view";
6
- function x(e) {
5
+ var y = "ckui.media-gallery.view";
6
+ function b(e) {
7
7
  if (e) try {
8
8
  let t = globalThis.localStorage?.getItem(e);
9
9
  return t === "grid" || t === "carousel" ? t : void 0;
@@ -11,8 +11,8 @@ function x(e) {
11
11
  return;
12
12
  }
13
13
  }
14
- function S({ view: e, defaultView: t = "carousel", onViewChange: n, storageKey: r = b } = {}) {
15
- let [i, a] = y(() => x(r) ?? t), o = g((e) => {
14
+ function x({ view: e, defaultView: t = "carousel", onViewChange: n, storageKey: r = y } = {}) {
15
+ let [i, a] = v(() => b(r) ?? t), o = h((e) => {
16
16
  if (a(e), r) try {
17
17
  globalThis.localStorage?.setItem(r, e);
18
18
  } catch {}
@@ -20,15 +20,15 @@ function S({ view: e, defaultView: t = "carousel", onViewChange: n, storageKey:
20
20
  }, [r, n]);
21
21
  return [e ?? i, o];
22
22
  }
23
- function C(e) {
23
+ function S(e) {
24
24
  let t = e.target;
25
25
  return t.closest?.("[data-ckui-noswipe]") ? !0 : !(t instanceof HTMLVideoElement) || !t.controls ? !1 : e.pointerType === "mouse" || e.clientY > t.getBoundingClientRect().bottom - 56;
26
26
  }
27
- function w({ count: e, index: t, defaultIndex: n = 0, onIndexChange: r }) {
28
- let [i, a] = y(n), o = Math.min(Math.max(0, t ?? i), Math.max(0, e - 1)), s = g((t) => {
27
+ function C({ count: e, index: t, defaultIndex: n = 0, onIndexChange: r }) {
28
+ let [i, a] = v(n), o = Math.min(Math.max(0, t ?? i), Math.max(0, e - 1)), s = h((t) => {
29
29
  let n = Math.min(Math.max(0, t), Math.max(0, e - 1));
30
30
  a(n), r?.(n);
31
- }, [e, r]), [c, ee] = y(0), [l, u] = y(!1), d = v(null), f = v(!1), p = (e, t) => {
31
+ }, [e, r]), [c, ee] = v(0), [l, u] = v(!1), d = _(null), f = _(!1), p = (e, t) => {
32
32
  let n = d.current;
33
33
  if (!n || n.id !== e.pointerId || (d.current = null, n.axis !== "x")) return;
34
34
  let r = e.clientX - n.x, i = Math.abs(r) / Math.max(1, e.timeStamp - n.t) > .5;
@@ -43,7 +43,7 @@ function w({ count: e, index: t, defaultIndex: n = 0, onIndexChange: r }) {
43
43
  dragging: l,
44
44
  swipe: {
45
45
  onPointerDown: (t) => {
46
- f.current = !1, !(e < 2 || t.pointerType === "mouse" && t.button !== 0 || C(t)) && (d.current = {
46
+ f.current = !1, !(e < 2 || t.pointerType === "mouse" && t.button !== 0 || S(t)) && (d.current = {
47
47
  id: t.pointerId,
48
48
  x: t.clientX,
49
49
  y: t.clientY,
@@ -83,42 +83,116 @@ function w({ count: e, index: t, defaultIndex: n = 0, onIndexChange: r }) {
83
83
  }
84
84
  };
85
85
  }
86
- var T = "ckui.player.quality", E = /* @__PURE__ */ new Map();
87
- function D(e, t) {
88
- _(() => {
86
+ var w = "ckui.player.quality", T = /* @__PURE__ */ new Map();
87
+ function E(e, t) {
88
+ g(() => {
89
89
  let n = i(e);
90
90
  if (n === null || !e || !t) return;
91
- let r = E.get(t);
91
+ let r = T.get(t);
92
92
  if (r?.expires !== e) {
93
93
  r && clearTimeout(r.timer);
94
94
  let i = {
95
95
  expires: e,
96
96
  subs: 0,
97
97
  timer: setTimeout(() => {
98
- E.get(t) === i && E.delete(t), Promise.resolve().then(t).catch(() => {});
98
+ T.get(t) === i && T.delete(t), Promise.resolve().then(t).catch(() => {});
99
99
  }, n)
100
100
  };
101
- E.set(t, r = i);
101
+ T.set(t, r = i);
102
102
  }
103
103
  let a = r;
104
104
  return a.subs++, () => {
105
- --a.subs > 0 || E.get(t) !== a || (clearTimeout(a.timer), E.delete(t));
105
+ --a.subs > 0 || T.get(t) !== a || (clearTimeout(a.timer), T.delete(t));
106
106
  };
107
107
  }, [e, t]);
108
108
  }
109
- var O = "application/vnd.apple.mpegurl", k = !1;
110
- function te() {
111
- k || typeof console > "u" || (k = !0, console.warn(`contentkit: video requests failed with no response (status 0). If media is served from another origin, media-gateway must allow this page: set MEDIA_GATEWAY_CORS_ORIGINS to include ${globalThis.location?.origin ?? "the app origin"}.`));
109
+ var ne = "application/vnd.apple.mpegurl", D = !1;
110
+ function re() {
111
+ D || typeof console > "u" || (D = !0, console.warn(`contentkit: video requests failed with no response (status 0). If media is served from another origin, media-gateway must allow this page: set MEDIA_GATEWAY_CORS_ORIGINS to include ${globalThis.location?.origin ?? "the app origin"}.`));
112
112
  }
113
- function ne(e, t) {
114
- return new Promise((n) => {
115
- let r = new XMLHttpRequest();
116
- Promise.resolve(t?.(r, e)).then(() => {
117
- r.readyState === 0 && r.open("GET", e, !0), r.onload = () => n(r.status), r.onerror = r.ontimeout = () => n(0), r.timeout = 8e3, r.send();
118
- }, () => n(0));
119
- });
113
+ var ie = (e, t, n) => e ? e.playlist(t, n) : fetch(t, { signal: n ?? null });
114
+ function ae(e, t) {
115
+ let n = new AbortController(), r = setTimeout(() => n.abort(), 8e3);
116
+ return ie(t, e, n.signal).then((e) => e.status, () => 0).finally(() => clearTimeout(r));
120
117
  }
121
- function re(e) {
118
+ function oe(e) {
119
+ return class {
120
+ context = null;
121
+ stats = {
122
+ aborted: !1,
123
+ loaded: 0,
124
+ retry: 0,
125
+ total: 0,
126
+ chunkCount: 0,
127
+ bwEstimate: 0,
128
+ loading: {
129
+ start: 0,
130
+ first: 0,
131
+ end: 0
132
+ },
133
+ parsing: {
134
+ start: 0,
135
+ end: 0
136
+ },
137
+ buffering: {
138
+ start: 0,
139
+ first: 0,
140
+ end: 0
141
+ }
142
+ };
143
+ ctrl = null;
144
+ timer;
145
+ headers = null;
146
+ callbacks = null;
147
+ load(t, n, r) {
148
+ let i = new AbortController();
149
+ Object.assign(this, {
150
+ context: t,
151
+ callbacks: r,
152
+ ctrl: i
153
+ });
154
+ let a = this.stats;
155
+ a.loading.start = performance.now();
156
+ let o = n.loadPolicy.maxLoadTimeMs;
157
+ o > 0 && Number.isFinite(o) && (this.timer = setTimeout(() => {
158
+ i.abort(), this.ctrl === i && r.onTimeout(a, t, null);
159
+ }, o)), e(t.url, i.signal).then(async (e) => {
160
+ a.loading.first = performance.now();
161
+ let n = await e.text();
162
+ if (!(this.ctrl !== i || i.signal.aborted)) {
163
+ if (clearTimeout(this.timer), this.headers = e.headers, a.loaded = a.total = n.length, a.loading.end = performance.now(), !e.ok) return r.onError({
164
+ code: e.status,
165
+ text: e.statusText
166
+ }, t, e, a);
167
+ r.onSuccess({
168
+ url: e.url || t.url,
169
+ data: n,
170
+ code: e.status
171
+ }, a, t, e);
172
+ }
173
+ }, (e) => {
174
+ this.ctrl !== i || i.signal.aborted || (clearTimeout(this.timer), r.onError({
175
+ code: 0,
176
+ text: String(e)
177
+ }, t, null, a));
178
+ });
179
+ }
180
+ abort() {
181
+ clearTimeout(this.timer), this.ctrl?.abort(), this.stats.aborted = !0, this.context && this.callbacks?.onAbort?.(this.stats, this.context, null);
182
+ }
183
+ destroy() {
184
+ clearTimeout(this.timer), this.ctrl?.abort(), this.ctrl = this.callbacks = this.context = null;
185
+ }
186
+ getResponseHeader(e) {
187
+ return this.headers?.get(e) ?? null;
188
+ }
189
+ getCacheAge() {
190
+ let e = this.headers?.get("age");
191
+ return e ? Number(e) : null;
192
+ }
193
+ };
194
+ }
195
+ function se(e) {
122
196
  if (!e) return null;
123
197
  try {
124
198
  let t = globalThis.localStorage?.getItem(e);
@@ -127,12 +201,12 @@ function re(e) {
127
201
  return null;
128
202
  }
129
203
  }
130
- function ie(e, t) {
204
+ function ce(e, t) {
131
205
  if (e) try {
132
206
  globalThis.localStorage?.setItem(e, String(t));
133
207
  } catch {}
134
208
  }
135
- var ae = (e) => Array.from(e.textTracks).filter((e) => e.kind === "subtitles" || e.kind === "captions"), A = (e) => e.map((e, t) => {
209
+ var le = (e) => Array.from(e.textTracks).filter((e) => e.kind === "subtitles" || e.kind === "captions"), O = (e) => e.map((e, t) => {
136
210
  let n = e.lang || e.language || void 0;
137
211
  return {
138
212
  index: t,
@@ -140,15 +214,15 @@ var ae = (e) => Array.from(e.textTracks).filter((e) => e.kind === "subtitles" ||
140
214
  lang: n,
141
215
  ...e.forced ? { forced: !0 } : {}
142
216
  };
143
- }), oe = 0;
144
- function se() {
217
+ }), ue = 0;
218
+ function de() {
145
219
  let e = globalThis.navigator?.connection;
146
220
  return e ? {
147
221
  downlink: e.downlink,
148
222
  saveData: e.saveData
149
223
  } : null;
150
224
  }
151
- function ce(e, n) {
225
+ function fe(e, n) {
152
226
  if (e) return class extends e {
153
227
  getMaxLevel(e) {
154
228
  let r = this.hls?.levels ?? [];
@@ -156,206 +230,207 @@ function ce(e, n) {
156
230
  }
157
231
  };
158
232
  }
159
- function le({ src: i, xhrSetup: b, refresh: x, expires: S, active: C = !0, stallTimeout: w = 1e4, abr: E, qualityKey: k = T, startAt: le, autoPlay: ue, audioLanguage: de, subtitleLanguage: fe, volumeKey: pe = d, trackKey: me = u }) {
160
- let [j, he] = y(null), [M, N] = y("idle"), [P, F] = y(), [I, ge] = y(!1), [_e, L] = y(!1), [ve, ye] = y(0), [be, xe] = y(!1), R = v(null), z = v(() => {}), B = v(!1), V = v(null), H = v(!1), U = v(0), W = v(0), [Se, Ce] = y([]), [we, Te] = y(-1), [Ee, De] = y(-1), G = v(() => {}), [Oe, ke] = y([]), [Ae, je] = y(-1), [Me, Ne] = y([]), [Pe, K] = y(-1), q = v(() => {}), J = v(() => {}), Fe = v(I);
161
- Fe.current = I;
162
- let Y = v(() => {}), X = v({
163
- xhrSetup: b,
164
- refresh: x,
165
- abr: E,
166
- qualityKey: k,
167
- startAt: le,
168
- audioLanguage: de,
169
- subtitleLanguage: fe,
170
- volumeKey: pe,
171
- trackKey: me
233
+ function pe({ src: i, loader: y, refresh: b, expires: x, active: S = !0, stallTimeout: C = 1e4, abr: T, qualityKey: D = w, startAt: pe, autoPlay: me, audioLanguage: he, subtitleLanguage: ge, volumeKey: _e = d, trackKey: ve = u }) {
234
+ let [k, ye] = v(null), [A, j] = v("idle"), [M, N] = v(), [P, be] = v(!1), [xe, F] = v(!1), [Se, I] = v(0), [Ce, L] = v(!1), R = _(null), z = _(() => {}), B = _(!1), V = _(null), H = _(!1), U = _(0), W = _(0), [we, Te] = v([]), [Ee, De] = v(-1), [Oe, ke] = v(-1), G = _(() => {}), [Ae, je] = v([]), [Me, Ne] = v(-1), [Pe, Fe] = v([]), [Ie, K] = v(-1), q = _(() => {}), J = _(() => {}), Le = _(P);
235
+ Le.current = P;
236
+ let Y = _(() => {}), X = _({
237
+ loader: y,
238
+ refresh: b,
239
+ abr: T,
240
+ qualityKey: D,
241
+ startAt: pe,
242
+ audioLanguage: he,
243
+ subtitleLanguage: ge,
244
+ volumeKey: _e,
245
+ trackKey: ve
172
246
  });
173
247
  X.current = {
174
- xhrSetup: b,
175
- refresh: x,
176
- abr: E,
177
- qualityKey: k,
178
- startAt: le,
179
- audioLanguage: de,
180
- subtitleLanguage: fe,
181
- volumeKey: pe,
182
- trackKey: me
248
+ loader: y,
249
+ refresh: b,
250
+ abr: T,
251
+ qualityKey: D,
252
+ startAt: pe,
253
+ audioLanguage: he,
254
+ subtitleLanguage: ge,
255
+ volumeKey: _e,
256
+ trackKey: ve
183
257
  };
184
- let Z = v(() => {});
185
- D(S, x);
186
- let Ie = v(S);
187
- _(() => {
188
- let e = Ie.current;
189
- Ie.current = S, S && e && S > e && Z.current();
190
- }, [S]), _(() => {
258
+ let Z = _(() => {});
259
+ E(x, b);
260
+ let Re = _(x);
261
+ g(() => {
262
+ let e = Re.current;
263
+ Re.current = x, x && e && x > e && Z.current();
264
+ }, [x]), g(() => {
191
265
  U.current = X.current.startAt ?? 0;
192
- }, [i]), _(() => {
193
- if (!j || !i || !_e) return;
194
- let u = !1, d = () => {}, m = 0, h = !1;
195
- F(void 0), Ce([]), Te(-1), De(-1), ke([]), je(-1), Ne([]), K(-1), G.current = () => {}, q.current = () => {}, J.current = () => {}, Y.current = () => {}, Z.current = () => {};
196
- let g = () => {
266
+ }, [i]), g(() => {
267
+ if (!k || !i || !xe) return;
268
+ let u = !1, d = () => {}, te = 0, m = !1;
269
+ N(void 0), Te([]), De(-1), ke(-1), je([]), Ne(-1), Fe([]), K(-1), G.current = () => {}, q.current = () => {}, J.current = () => {}, Y.current = () => {}, Z.current = () => {};
270
+ let h = () => {
197
271
  if (!u) {
198
272
  if (R.current !== null) return z.current();
199
- U.current = j.currentTime || 0, u = !0, d(), ye((e) => e + 1);
273
+ U.current = k.currentTime || 0, u = !0, d(), I((e) => e + 1);
200
274
  }
201
275
  };
202
- N(B.current ? "loading" : "idle");
203
- let _ = (e) => {
276
+ j(B.current ? "loading" : "idle");
277
+ let g = (e) => {
204
278
  if (u) return;
205
279
  let t = X.current.refresh;
206
280
  if (c(e) && t && !H.current) {
207
- H.current = !0, U.current = j.currentTime || 0, R.current !== null && (R.current = U.current || R.current), u = !0, d(), N("loading"), Promise.resolve().then(t).catch(() => {}).finally(() => ye((e) => e + 1));
281
+ H.current = !0, U.current = k.currentTime || 0, R.current !== null && (R.current = U.current || R.current), u = !0, d(), j("loading"), Promise.resolve().then(t).catch(() => {}).finally(() => I((e) => e + 1));
208
282
  return;
209
283
  }
210
284
  if (R.current !== null) return z.current();
211
- e.kind === "network" && te(), u = !0, d(), B.current = !1, F(e), N("error");
212
- }, v = () => h && _(r(j.error)), y = () => j.play().catch((e) => {
213
- u || e?.name !== "NotAllowedError" || (B.current = !1, N((e) => e === "error" ? e : Fe.current ? "paused" : "idle"));
214
- }), b = () => p(X.current.trackKey), x = (e) => {
215
- let t = b().subtitles;
285
+ e.kind === "network" && re(), u = !0, d(), B.current = !1, N(e), j("error");
286
+ }, _ = () => m && g(r(k.error)), v = () => k.play().catch((e) => {
287
+ u || e?.name !== "NotAllowedError" || (B.current = !1, j((e) => e === "error" ? e : Le.current ? "paused" : "idle"));
288
+ }), y = () => p(X.current.trackKey), b = (e) => {
289
+ let t = y().subtitles;
216
290
  return f(e.map((e) => ({ lang: e.lang || e.language })), t === "off" ? null : t ?? X.current.subtitleLanguage);
217
291
  };
218
- return j.addEventListener("error", v), import("hls.js").then(({ default: r }) => {
292
+ return k.addEventListener("error", _), import("hls.js").then(({ default: r }) => {
219
293
  if (!u) {
220
294
  if (r.isSupported()) {
221
- let c = !1, l = se(), p = l?.saveData ? {
295
+ let c = !1, l = de(), p = l?.saveData ? {
222
296
  ...X.current.abr,
223
297
  preferHighRes: !1
224
- } : X.current.abr, h = o(p, l, oe), v = new r({
298
+ } : X.current.abr, m = o(p, l, ue), _ = new r({
225
299
  ...a,
226
- ...e(p, h),
227
- capLevelController: ce(r.DefaultConfig.capLevelController, p),
300
+ ...e(p, m),
301
+ capLevelController: fe(r.DefaultConfig.capLevelController, p),
228
302
  autoStartLoad: !1,
229
- xhrSetup: (e, t) => X.current.xhrSetup?.(e, t)
303
+ pLoader: oe((e, t) => ie(X.current.loader, e, t)),
304
+ xhrSetup: (e, t) => X.current.loader?.segment(e, t)
230
305
  });
231
- d = () => v.destroy(), v.subtitleDisplay = !1;
232
- let S = () => {
233
- ke(A(v.audioTracks)), je(v.audioTrack);
234
- }, C = () => {
235
- Ne(A(v.subtitleTracks)), K(v.subtitleTrack);
306
+ d = () => _.destroy(), _.subtitleDisplay = !1;
307
+ let x = () => {
308
+ je(O(_.audioTracks)), Ne(_.audioTrack);
309
+ }, S = () => {
310
+ Fe(O(_.subtitleTracks)), K(_.subtitleTrack);
236
311
  };
237
- v.on(r.Events.AUDIO_TRACKS_UPDATED, () => {
238
- let e = f(v.audioTracks, b().audio ?? X.current.audioLanguage);
239
- e >= 0 && e !== v.audioTrack && (v.audioTrack = e), S();
240
- }), v.on(r.Events.AUDIO_TRACK_SWITCHED, S);
241
- let w = () => {
242
- R.current === null && v.subtitleTracks.length && (v.subtitleTrack = x(v.subtitleTracks));
312
+ _.on(r.Events.AUDIO_TRACKS_UPDATED, () => {
313
+ let e = f(_.audioTracks, y().audio ?? X.current.audioLanguage);
314
+ e >= 0 && e !== _.audioTrack && (_.audioTrack = e), x();
315
+ }), _.on(r.Events.AUDIO_TRACK_SWITCHED, x);
316
+ let C = () => {
317
+ R.current === null && _.subtitleTracks.length && (_.subtitleTrack = b(_.subtitleTracks));
243
318
  };
244
- v.on(r.Events.SUBTITLE_TRACKS_UPDATED, () => {
245
- C(), queueMicrotask(() => {
246
- u || (w(), C());
319
+ _.on(r.Events.SUBTITLE_TRACKS_UPDATED, () => {
320
+ S(), queueMicrotask(() => {
321
+ u || (C(), S());
247
322
  });
248
- }), v.on(r.Events.SUBTITLE_TRACK_SWITCH, C), q.current = (e) => {
249
- v.audioTrack = e;
323
+ }), _.on(r.Events.SUBTITLE_TRACK_SWITCH, S), q.current = (e) => {
324
+ _.audioTrack = e;
250
325
  }, J.current = (e) => {
251
- v.subtitleTrack = e, K(e);
252
- }, v.on(r.Events.ERROR, (e, t) => {
326
+ _.subtitleTrack = e, K(e);
327
+ }, _.on(r.Events.ERROR, (e, t) => {
253
328
  let r = n(t);
254
- (t.fatal || r.kind === "access" || r.kind === "not_found" || r.kind === "rate_limited" || r.kind === "network" && ++m >= 3) && _(r);
329
+ (t.fatal || r.kind === "access" || r.kind === "not_found" || r.kind === "rate_limited" || r.kind === "network" && ++te >= 3) && g(r);
255
330
  });
256
- let T = -1, E = () => {
257
- let e = j.getBoundingClientRect(), n = globalThis.devicePixelRatio || 1, r = t(v.levels, e.width * n, e.height * n, p);
258
- return ee(v.levels, v.bandwidthEstimate || h, r, l);
259
- }, D = !1, O = (e) => {
260
- D = !0, v.currentLevel = e;
331
+ let w = -1, T = () => {
332
+ let e = k.getBoundingClientRect(), n = globalThis.devicePixelRatio || 1, r = t(_.levels, e.width * n, e.height * n, p);
333
+ return ee(_.levels, _.bandwidthEstimate || m, r, l);
334
+ }, E = !1, ne = (e) => {
335
+ E = !0, _.currentLevel = e;
261
336
  };
262
- v.on(r.Events.BUFFER_FLUSHED, () => {
263
- D && (D = !1, j.currentTime = j.currentTime);
337
+ _.on(r.Events.BUFFER_FLUSHED, () => {
338
+ E && (E = !1, k.currentTime = k.currentTime);
264
339
  }), G.current = (e) => {
265
- T = e, Te(e), c && (e >= 0 ? O(e) : v.nextLevel = -1);
340
+ w = e, De(e), c && (e >= 0 ? ne(e) : _.nextLevel = -1);
266
341
  }, Y.current = () => {
267
- w(), c && (O(T), T < 0 && (v.nextAutoLevel = E()));
268
- }, v.on(r.Events.LEVEL_SWITCHED, (e, t) => De(t.level)), v.on(r.Events.FRAG_LOADED, () => {
269
- m = 0, W.current = Date.now(), oe = v.bandwidthEstimate;
342
+ C(), c && (ne(w), w < 0 && (_.nextAutoLevel = T()));
343
+ }, _.on(r.Events.LEVEL_SWITCHED, (e, t) => ke(t.level)), _.on(r.Events.FRAG_LOADED, () => {
344
+ te = 0, W.current = Date.now(), ue = _.bandwidthEstimate;
270
345
  });
271
- let k = () => v.levels.some((e) => /[?&]t=/.test(e.details?.fragments[0]?.url ?? ""));
346
+ let D = () => _.levels.some((e) => /[?&]t=/.test(e.details?.fragments[0]?.url ?? ""));
272
347
  Z.current = () => {
273
- c && k() && g();
348
+ c && D() && h();
274
349
  };
275
- let te = !1;
350
+ let re = !1;
276
351
  V.current = () => {
277
- if (te) {
352
+ if (re) {
278
353
  if (!c) {
279
354
  c = !0;
280
355
  let e = R.current;
281
- e === null ? (v.startLevel = T >= 0 ? T : E(), T >= 0 && (v.loadLevel = T), v.startLoad(U.current || -1)) : (v.startLevel = 0, v.startLoad(e)), U.current = 0;
356
+ e === null ? (_.startLevel = w >= 0 ? w : T(), w >= 0 && (_.loadLevel = w), _.startLoad(U.current || -1)) : (_.startLevel = 0, _.startLoad(e)), U.current = 0;
282
357
  }
283
- y();
358
+ v();
284
359
  }
285
- }, v.on(r.Events.MANIFEST_PARSED, () => {
286
- te = !0;
287
- for (let e of s(v.levels, v.firstLevel)) v.removeLevel(e);
288
- let e = p?.maxHeight ?? Infinity, t = v.levels.map((e, t) => ({
360
+ }, _.on(r.Events.MANIFEST_PARSED, () => {
361
+ re = !0;
362
+ for (let e of s(_.levels, _.firstLevel)) _.removeLevel(e);
363
+ let e = p?.maxHeight ?? Infinity, t = _.levels.map((e, t) => ({
289
364
  index: t,
290
365
  height: Math.min(e.width, e.height) || e.height,
291
366
  width: e.width,
292
367
  bitrate: e.bitrate
293
368
  })).filter((t) => t.height > 0 && t.height <= e);
294
- Ce(t);
295
- let n = re(X.current.qualityKey), r = typeof n == "number" ? t.find((e) => e.height === n) : void 0;
369
+ Te(t);
370
+ let n = se(X.current.qualityKey), r = typeof n == "number" ? t.find((e) => e.height === n) : void 0;
296
371
  r && G.current(r.index), B.current && V.current?.();
297
- }), v.loadSource(i), v.attachMedia(j);
372
+ }), _.loadSource(i), _.attachMedia(k);
298
373
  return;
299
374
  }
300
- if (!j.canPlayType(O)) return _({
375
+ if (!k.canPlayType(ne)) return g({
301
376
  kind: "unsupported",
302
377
  code: "no-hls"
303
378
  });
304
- ne(i, X.current.xhrSetup).then((e) => {
379
+ ae(i, X.current.loader).then((e) => {
305
380
  if (u) return;
306
- if (e < 200 || e >= 400) return _({
381
+ if (e < 200 || e >= 400) return g({
307
382
  kind: l(e),
308
383
  code: `probe/${e}`,
309
384
  status: e
310
385
  });
311
- h = !0, Z.current = g;
312
- let t = j.audioTracks, n = () => {
386
+ m = !0, Z.current = h;
387
+ let t = k.audioTracks, n = () => {
313
388
  let e = t ? Array.from(t) : [];
314
- ke(A(e)), je(e.findIndex((e) => e.enabled));
315
- let n = ae(j);
316
- Ne(A(n)), K(n.findIndex((e) => e.mode !== "disabled"));
389
+ je(O(e)), Ne(e.findIndex((e) => e.enabled));
390
+ let n = le(k);
391
+ Fe(O(n)), K(n.findIndex((e) => e.mode !== "disabled"));
317
392
  };
318
393
  q.current = (e) => {
319
394
  let r = t?.[e];
320
395
  r && (r.enabled = !0), n();
321
396
  };
322
397
  let r = !1, a = (e) => {
323
- ae(j).forEach((t, n) => t.mode = n === e ? "hidden" : "disabled"), n();
398
+ le(k).forEach((t, n) => t.mode = n === e ? "hidden" : "disabled"), n();
324
399
  };
325
400
  J.current = (e) => {
326
401
  r = !0, a(e);
327
402
  };
328
403
  let o = () => {
329
404
  if (r || R.current !== null) return n();
330
- a(x(A(ae(j))));
405
+ a(b(O(le(k))));
331
406
  }, s = () => {
332
- let e = t ? Array.from(t) : [], n = f(A(e), b().audio ?? X.current.audioLanguage);
407
+ let e = t ? Array.from(t) : [], n = f(O(e), y().audio ?? X.current.audioLanguage);
333
408
  n >= 0 && !e[n].enabled && (e[n].enabled = !0), o();
334
409
  };
335
- j.addEventListener("loadedmetadata", s, { once: !0 }), j.textTracks.addEventListener?.("addtrack", o), t?.addEventListener("change", n), j.src = i, R.current === null ? U.current && (j.currentTime = U.current) : j.currentTime = R.current, U.current = 0, d = () => {
336
- j.removeEventListener("loadedmetadata", s), j.textTracks.removeEventListener?.("addtrack", o), t?.removeEventListener("change", n), j.removeAttribute("src"), j.load();
337
- }, Y.current = o, V.current = () => void y(), B.current && V.current();
410
+ k.addEventListener("loadedmetadata", s, { once: !0 }), k.textTracks.addEventListener?.("addtrack", o), t?.addEventListener("change", n), k.src = i, R.current === null ? U.current && (k.currentTime = U.current) : k.currentTime = R.current, U.current = 0, d = () => {
411
+ k.removeEventListener("loadedmetadata", s), k.textTracks.removeEventListener?.("addtrack", o), t?.removeEventListener("change", n), k.removeAttribute("src"), k.load();
412
+ }, Y.current = o, V.current = () => void v(), B.current && V.current();
338
413
  });
339
414
  }
340
- }, () => _({
415
+ }, () => g({
341
416
  kind: "unsupported",
342
417
  code: "hls.js"
343
418
  })), () => {
344
- u = !0, Z.current = () => {}, V.current = null, j.removeEventListener("error", v), d();
419
+ u = !0, Z.current = () => {}, V.current = null, k.removeEventListener("error", _), d();
345
420
  };
346
421
  }, [
347
- j,
422
+ k,
348
423
  i,
349
- _e,
350
- ve
351
- ]), _(() => {
352
- if (!j) return;
353
- let e = (e) => () => N((t) => t === "error" ? t : e), t = {
424
+ xe,
425
+ Se
426
+ ]), g(() => {
427
+ if (!k) return;
428
+ let e = (e) => () => j((t) => t === "error" ? t : e), t = {
354
429
  playing: () => {
355
- R.current === null && ge(!0), H.current = !1, W.current = Date.now(), e("playing")();
430
+ R.current === null && be(!0), H.current = !1, W.current = Date.now(), e("playing")();
356
431
  },
357
432
  pause: () => {
358
- j.ended || e("paused")();
433
+ k.ended || e("paused")();
359
434
  },
360
435
  waiting: () => B.current && e("buffering")(),
361
436
  ended: () => R.current === null ? e("ended")() : z.current(),
@@ -364,114 +439,114 @@ function le({ src: i, xhrSetup: b, refresh: x, expires: S, active: C = !0, stall
364
439
  B.current = !0, W.current = Date.now();
365
440
  }
366
441
  };
367
- for (let [e, n] of Object.entries(t)) j.addEventListener(e, n);
442
+ for (let [e, n] of Object.entries(t)) k.addEventListener(e, n);
368
443
  return () => {
369
- for (let [e, n] of Object.entries(t)) j.removeEventListener(e, n);
444
+ for (let [e, n] of Object.entries(t)) k.removeEventListener(e, n);
370
445
  };
371
- }, [j]), _(() => {
372
- !C && j && !j.paused && j.pause(), C || (B.current = !1);
373
- }, [C, j]);
374
- let Le = M === "loading" || M === "buffering" || M === "playing";
375
- _(() => {
376
- if (!Le || !j) return;
377
- let e = j.currentTime;
446
+ }, [k]), g(() => {
447
+ !S && k && !k.paused && k.pause(), S || (B.current = !1);
448
+ }, [S, k]);
449
+ let ze = A === "loading" || A === "buffering" || A === "playing";
450
+ g(() => {
451
+ if (!ze || !k) return;
452
+ let e = k.currentTime;
378
453
  W.current = Math.max(W.current, Date.now());
379
454
  let t = setInterval(() => {
380
- if (B.current && !j.paused) {
381
- if (j.currentTime !== e) e = j.currentTime, W.current = Date.now();
382
- else if (Date.now() - W.current > w) {
455
+ if (B.current && !k.paused) {
456
+ if (k.currentTime !== e) e = k.currentTime, W.current = Date.now();
457
+ else if (Date.now() - W.current > C) {
383
458
  if (R.current !== null) return z.current();
384
- j.pause(), B.current = !1, F({
459
+ k.pause(), B.current = !1, N({
385
460
  kind: "stalled",
386
461
  code: "stall"
387
- }), N("error");
462
+ }), j("error");
388
463
  }
389
464
  }
390
465
  }, 1e3);
391
466
  return () => clearInterval(t);
392
467
  }, [
393
- Le,
394
- j,
395
- w
468
+ ze,
469
+ k,
470
+ C
396
471
  ]);
397
- let Re = g(() => {
398
- B.current = !0, H.current = !1, W.current = Date.now(), F(void 0), N("loading"), L(!0), ye((e) => e + 1);
399
- }, []), Q = g(() => {
400
- if (!j) return;
401
- let e = m(X.current.volumeKey);
402
- j.volume = e.volume, j.muted = e.muted;
403
- }, [j]), ze = g(() => {
404
- R.current !== null && (R.current = null, B.current = !1, xe(!1), L(!1), N("idle"), j && (j.pause(), Q()));
405
- }, [j, Q]);
406
- z.current = ze;
407
- let Be = g((e) => {
408
- !j || I || P || B.current || R.current !== null || (R.current = Math.max(0, e), j.muted = !0, B.current = !0, W.current = Date.now(), xe(!0), L(!0), V.current?.());
409
- }, [
410
- j,
411
- I,
412
- P
413
- ]), $ = g(() => {
414
- if (P) return Re();
415
- R.current === null ? Fe.current || Q() : (R.current = null, xe(!1), j && (Q(), j.currentTime = X.current.startAt ?? 0), Y.current(), ge(!0)), B.current = !0, W.current = Date.now(), N("loading"), L(!0), V.current?.();
472
+ let Be = h(() => {
473
+ B.current = !0, H.current = !1, W.current = Date.now(), N(void 0), j("loading"), F(!0), I((e) => e + 1);
474
+ }, []), Q = h(() => {
475
+ if (!k) return;
476
+ let e = te(X.current.volumeKey);
477
+ k.volume = e.volume, k.muted = e.muted;
478
+ }, [k]), Ve = h(() => {
479
+ R.current !== null && (R.current = null, B.current = !1, L(!1), F(!1), j("idle"), k && (k.pause(), Q()));
480
+ }, [k, Q]);
481
+ z.current = Ve;
482
+ let He = h((e) => {
483
+ !k || P || M || B.current || R.current !== null || (R.current = Math.max(0, e), k.muted = !0, B.current = !0, W.current = Date.now(), L(!0), F(!0), V.current?.());
416
484
  }, [
485
+ k,
417
486
  P,
418
- Re,
419
- j,
487
+ M
488
+ ]), $ = h(() => {
489
+ if (M) return Be();
490
+ R.current === null ? Le.current || Q() : (R.current = null, L(!1), k && (Q(), k.currentTime = X.current.startAt ?? 0), Y.current(), be(!0)), B.current = !0, W.current = Date.now(), j("loading"), F(!0), V.current?.();
491
+ }, [
492
+ M,
493
+ Be,
494
+ k,
420
495
  Q
421
- ]), Ve = v($);
422
- Ve.current = $;
423
- let He = v(ue);
424
- He.current = ue, _(() => {
425
- j && i && He.current && Ve.current();
426
- }, [j, i]);
427
- let Ue = v(Se);
428
- Ue.current = Se;
429
- let We = g((e) => {
496
+ ]), Ue = _($);
497
+ Ue.current = $;
498
+ let We = _(me);
499
+ We.current = me, g(() => {
500
+ k && i && We.current && Ue.current();
501
+ }, [k, i]);
502
+ let Ge = _(we);
503
+ Ge.current = we;
504
+ let Ke = h((e) => {
430
505
  G.current(e);
431
- let t = Ue.current.find((t) => t.index === e)?.height;
432
- ie(X.current.qualityKey, e === -1 || !t ? "auto" : t);
433
- }, []), Ge = v(Oe);
434
- Ge.current = Oe;
435
- let Ke = v(Me);
436
- Ke.current = Me;
437
- let qe = g((e) => {
506
+ let t = Ge.current.find((t) => t.index === e)?.height;
507
+ ce(X.current.qualityKey, e === -1 || !t ? "auto" : t);
508
+ }, []), qe = _(Ae);
509
+ qe.current = Ae;
510
+ let Je = _(Pe);
511
+ Je.current = Pe;
512
+ let Ye = h((e) => {
438
513
  q.current(e);
439
- let t = Ge.current[e]?.lang;
440
- t && h(X.current.trackKey, { audio: t });
441
- }, []), Je = g((e) => {
514
+ let t = qe.current[e]?.lang;
515
+ t && m(X.current.trackKey, { audio: t });
516
+ }, []), Xe = h((e) => {
442
517
  J.current(e);
443
- let t = e < 0 ? "off" : Ke.current[e]?.lang;
444
- t && h(X.current.trackKey, { subtitles: t });
518
+ let t = e < 0 ? "off" : Je.current[e]?.lang;
519
+ t && m(X.current.trackKey, { subtitles: t });
445
520
  }, []);
446
521
  return {
447
- ref: he,
448
- status: M,
449
- error: P,
450
- started: I,
522
+ ref: ye,
523
+ status: A,
524
+ error: M,
525
+ started: P,
451
526
  play: $,
452
- preview: Be,
453
- unload: ze,
454
- previewing: be,
455
- retry: Re,
527
+ preview: He,
528
+ unload: Ve,
529
+ previewing: Ce,
530
+ retry: Be,
456
531
  quality: {
457
- levels: Se,
458
- selected: we,
459
- current: Ee,
460
- select: We
532
+ levels: we,
533
+ selected: Ee,
534
+ current: Oe,
535
+ select: Ke
461
536
  },
462
537
  audio: {
463
- list: Oe,
464
- selected: Ae,
465
- select: qe
538
+ list: Ae,
539
+ selected: Me,
540
+ select: Ye
466
541
  },
467
542
  subtitles: {
468
- list: Me,
469
- selected: Pe,
470
- select: Je
543
+ list: Pe,
544
+ selected: Ie,
545
+ select: Xe
471
546
  }
472
547
  };
473
548
  }
474
549
  //#endregion
475
- export { b as GALLERY_VIEW_KEY, T as PLAYER_QUALITY_KEY, w as useCarousel, S as useGalleryView, le as useHlsPlayer, D as useRefreshBeforeExpiry };
550
+ export { y as GALLERY_VIEW_KEY, w as PLAYER_QUALITY_KEY, ie as fetchPlaylist, C as useCarousel, x as useGalleryView, pe as useHlsPlayer, E as useRefreshBeforeExpiry };
476
551
 
477
552
  //# sourceMappingURL=gallery.js.map