@webitel/ui-sdk 26.2.70 → 26.2.72

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 (97) hide show
  1. package/dist/{errors-DCJKAXTz.js → errors-CTL-RV3B.js} +1 -1
  2. package/dist/{index-B71drQtj.js → index-DWA4o3XJ.js} +4 -4
  3. package/dist/{index-cVwBpL1P.js → index-pMfSnCae.js} +1 -1
  4. package/dist/{install-BEn6vjFW.js → install-UIKG1ERr.js} +9496 -8874
  5. package/dist/{isObject-DB0eH0MA.js → isObject-B3V85Sws.js} +1 -1
  6. package/dist/prod-BoQuiIB3.js +973 -0
  7. package/dist/srt-parser-CsN7bp5E.js +26 -0
  8. package/dist/ssa-parser-BJOOPeQF.js +200 -0
  9. package/dist/ui-sdk.css +1 -1
  10. package/dist/ui-sdk.js +1 -1
  11. package/dist/ui-sdk.umd.cjs +464 -482
  12. package/dist/vidstack-Bq6c3Bam-pb8Xltql.js +425 -0
  13. package/dist/vidstack-D2pY00kU-DiDeMWBZ.js +135 -0
  14. package/dist/vidstack-DDXt6fpN-BJpO5v6W.js +50 -0
  15. package/dist/vidstack-D_-9AA6_-D9IZ6RtF.js +20 -0
  16. package/dist/{vidstack-Dm1xEU9Q-qSXq3AI-.js → vidstack-Dm1xEU9Q-CXHNvShT.js} +10 -11
  17. package/dist/vidstack-DqAw8m9J-R8izgrMK.js +22 -0
  18. package/dist/vidstack-audio-RReC5vyt.js +28 -0
  19. package/dist/vidstack-dash-DW7Ue8Mf.js +392 -0
  20. package/dist/vidstack-google-cast-C0U2wzqB.js +382 -0
  21. package/dist/vidstack-hls-BZgfDsGk.js +309 -0
  22. package/dist/vidstack-krOAtKMi-C50BTxmn.js +28 -0
  23. package/dist/vidstack-video-CI2rq89j.js +163 -0
  24. package/dist/vidstack-vimeo-CgwZpCSk.js +451 -0
  25. package/dist/vidstack-youtube-BYXk8CK9.js +232 -0
  26. package/dist/{wt-action-bar-ColV1kXE.js → wt-action-bar-DR8FqGoN.js} +1 -1
  27. package/dist/{wt-button-select-CfoSEYMj.js → wt-button-select-DZ_mMZr7.js} +1 -1
  28. package/dist/{wt-chat-emoji-Bgv9Viz-.js → wt-chat-emoji-Bx7YenHF.js} +6 -11
  29. package/dist/{wt-confirm-dialog-bVhuyR-Q.js → wt-confirm-dialog-Bmt7hVhO.js} +1 -1
  30. package/dist/{wt-context-menu-Cd8pgBRV.js → wt-context-menu-DEonPBI7.js} +1 -1
  31. package/dist/{wt-copy-action-jjp1mO2h.js → wt-copy-action-DQZ5qUUm.js} +1 -1
  32. package/dist/wt-datepicker-DRUiK--W.js +5660 -0
  33. package/dist/wt-display-chip-items-x25aFJxY.js +46 -0
  34. package/dist/{wt-dual-panel-DJsiR6RF.js → wt-dual-panel-0fDOCrlS.js} +1 -1
  35. package/dist/{wt-dummy-O94iGdZS.js → wt-dummy-CFcLvVwn.js} +1 -1
  36. package/dist/{wt-error-page-xgSWJ65z.js → wt-error-page-CebFt3Gg.js} +1 -1
  37. package/dist/{wt-expansion-panel-vzG02b62.js → wt-expansion-panel-cJWQaqAc.js} +1 -1
  38. package/dist/{wt-filters-panel-wrapper-h-UaAMuF.js → wt-filters-panel-wrapper-4-k7czbS.js} +1 -1
  39. package/dist/wt-galleria-Ds-HZvJq.js +322 -0
  40. package/dist/{wt-navigation-menu-Cu5Y9kua.js → wt-navigation-menu-DqnvQB3G.js} +2 -5
  41. package/dist/wt-notifications-bar-Bmww4vJb.js +79 -0
  42. package/dist/{wt-page-header-DlRrRzG7.js → wt-page-header-6lJKDnEs.js} +1 -1
  43. package/dist/{wt-pagination-CW46I4u2.js → wt-pagination-D7BhUkrI.js} +1 -1
  44. package/dist/{wt-player-3qh_Jzm2.js → wt-player-Bx_9-9R6.js} +1 -1
  45. package/dist/{wt-popover-BTG5bUP0.js → wt-popover-U7JE0uoX.js} +19 -22
  46. package/dist/{wt-search-bar-CTsNf7bp.js → wt-search-bar-BfHsofcU.js} +25 -28
  47. package/dist/{wt-selection-popup-DvaUvY4O.js → wt-selection-popup-B5Wt1WQk.js} +1 -1
  48. package/dist/{wt-start-page-CcN7JC_u.js → wt-start-page-8ywFCoUJ.js} +7 -7
  49. package/dist/{wt-status-select-C8t0cgTg.js → wt-status-select-CFdNgbIP.js} +1 -1
  50. package/dist/{wt-stepper-BLb42q2I.js → wt-stepper-59a_rP7o.js} +1 -1
  51. package/dist/{wt-table-9gmsV0Y9.js → wt-table-DuxjiiFi.js} +111 -114
  52. package/dist/{wt-table-actions-BB7AH7sR.js → wt-table-actions-CsrvF6d8.js} +1 -1
  53. package/dist/{wt-table-column-select-B3lrCEaV.js → wt-table-column-select-Zga4Zyfd.js} +28 -31
  54. package/dist/{wt-tabs-CCHi_E1a.js → wt-tabs-CMMlNgqE.js} +1 -1
  55. package/dist/{wt-tags-input-DLicKjv3.js → wt-tags-input-O1wer3-w.js} +56 -57
  56. package/dist/{wt-timepicker-B9ONDzNQ.js → wt-timepicker-BscP21YM.js} +1 -1
  57. package/dist/{wt-tree-cQlvJmh5.js → wt-tree-BRPd5QbE.js} +4 -5
  58. package/dist/{wt-tree-table-B89YKiMf.js → wt-tree-table-CZQ7xmja.js} +5 -5
  59. package/dist/{wt-type-extension-value-input-Da8FXLDs.js → wt-type-extension-value-input-DZqeSLGx.js} +214 -218
  60. package/dist/wt-vidstack-player-CA18U-L9.js +10229 -0
  61. package/package.json +5 -5
  62. package/src/components/wt-button/wt-button.vue +9 -13
  63. package/src/install.ts +0 -1
  64. package/src/locale/i18n.js +1 -1
  65. package/src/modules/Notifications/store/NotificationsStoreModule.js +1 -1
  66. package/src/modules/Userinfo/classes/ApplicationsAccess.ts +36 -3
  67. package/src/modules/Userinfo/scripts/utils.ts +2 -22
  68. package/src/modules/Userinfo/stores/accessStore.ts +20 -5
  69. package/src/modules/Userinfo/types/UserAccess.d.ts +11 -3
  70. package/types/locale/i18n.d.ts +1 -1
  71. package/types/modules/Notifications/store/NotificationsStoreModule.d.ts +1 -1
  72. package/types/modules/Userinfo/classes/ApplicationsAccess.d.ts +34 -243
  73. package/types/modules/Userinfo/scripts/utils.d.ts +1 -2
  74. package/types/modules/Userinfo/stores/accessStore.d.ts +1 -1
  75. package/types/modules/Userinfo/stores/userinfoStore.d.ts +21 -9
  76. package/dist/prod-DTLJXtPo.js +0 -994
  77. package/dist/srt-parser-CWqahKwO.js +0 -27
  78. package/dist/ssa-parser-BqjjKy4M.js +0 -209
  79. package/dist/vidstack-Bq6c3Bam-w5y-QQDX.js +0 -413
  80. package/dist/vidstack-D2pY00kU-BI5rYx7p.js +0 -138
  81. package/dist/vidstack-DDXt6fpN-QZPrP2dy.js +0 -60
  82. package/dist/vidstack-D_-9AA6_-Bo1xPN-G.js +0 -20
  83. package/dist/vidstack-DqAw8m9J-DL7LzrFt.js +0 -29
  84. package/dist/vidstack-audio-lX1O0fza.js +0 -32
  85. package/dist/vidstack-dash-BQkRGWe_.js +0 -403
  86. package/dist/vidstack-google-cast-C39n-PU1.js +0 -377
  87. package/dist/vidstack-hls-BCLhCuNJ.js +0 -324
  88. package/dist/vidstack-krOAtKMi-B4IZWKdc.js +0 -29
  89. package/dist/vidstack-video-BgayrEIC.js +0 -181
  90. package/dist/vidstack-vimeo-Lpe7iySs.js +0 -437
  91. package/dist/vidstack-youtube-Dmcz0xVm.js +0 -236
  92. package/dist/vuex.esm-bundler-tZVctzTj.js +0 -950
  93. package/dist/wt-datepicker-Cs3xDzVq.js +0 -5789
  94. package/dist/wt-display-chip-items-IqNMxa_X.js +0 -52
  95. package/dist/wt-galleria-cDjsiOcp.js +0 -324
  96. package/dist/wt-notifications-bar-KNH47kZ7.js +0 -80
  97. package/dist/wt-vidstack-player-BzFbIwCa.js +0 -10250
@@ -0,0 +1,382 @@
1
+ import { b as g, K as n, U as l, o as k, D as u, p as h, l as m, e as y, V as p, L as C } from "./wt-vidstack-player-CA18U-L9.js";
2
+ import { R as E } from "./vidstack-DqAw8m9J-R8izgrMK.js";
3
+ import { g as v, a as L, b as f, h as T, l as S, c as A } from "./vidstack-D2pY00kU-DiDeMWBZ.js";
4
+ class I {
5
+ #t;
6
+ constructor(t) {
7
+ this.#t = new chrome.cast.media.MediaInfo(t.src, t.type);
8
+ }
9
+ build() {
10
+ return this.#t;
11
+ }
12
+ setStreamType(t) {
13
+ return t.includes("live") ? this.#t.streamType = chrome.cast.media.StreamType.LIVE : this.#t.streamType = chrome.cast.media.StreamType.BUFFERED, this;
14
+ }
15
+ setTracks(t) {
16
+ return this.#t.tracks = t.map(this.#e), this;
17
+ }
18
+ setMetadata(t, e) {
19
+ return this.#t.metadata = new chrome.cast.media.GenericMediaMetadata(), this.#t.metadata.title = t, this.#t.metadata.images = [{ url: e }], this;
20
+ }
21
+ #e(t, e) {
22
+ const s = new chrome.cast.media.Track(e, chrome.cast.media.TrackType.TEXT);
23
+ return s.name = t.label, s.trackContentId = t.src, s.trackContentType = "text/vtt", s.language = t.language, s.subtype = t.kind.toUpperCase(), s;
24
+ }
25
+ }
26
+ class b {
27
+ #t;
28
+ #e;
29
+ #i;
30
+ constructor(t, e, s) {
31
+ this.#t = t, this.#e = e, this.#i = s;
32
+ }
33
+ setup() {
34
+ const t = this.syncRemoteActiveIds.bind(this);
35
+ m(this.#e.audioTracks, "change", t), m(this.#e.textTracks, "mode-change", t), y(this.#o.bind(this));
36
+ }
37
+ getLocalTextTracks() {
38
+ return this.#e.$state.textTracks().filter((t) => t.src && t.type === "vtt");
39
+ }
40
+ #a() {
41
+ return this.#e.$state.audioTracks();
42
+ }
43
+ #r(t) {
44
+ const e = this.#t.mediaInfo?.tracks ?? [];
45
+ return t ? e.filter((s) => s.type === t) : e;
46
+ }
47
+ #l() {
48
+ const t = [], e = this.#a().find((i) => i.selected), s = this.getLocalTextTracks().filter((i) => i.mode === "showing");
49
+ if (e) {
50
+ const i = this.#r(chrome.cast.media.TrackType.AUDIO), r = this.#d(i, e);
51
+ r && t.push(r.trackId);
52
+ }
53
+ if (s?.length) {
54
+ const i = this.#r(chrome.cast.media.TrackType.TEXT);
55
+ if (i.length)
56
+ for (const r of s) {
57
+ const a = this.#d(i, r);
58
+ a && t.push(a.trackId);
59
+ }
60
+ }
61
+ return t;
62
+ }
63
+ #o() {
64
+ const t = this.getLocalTextTracks();
65
+ if (!this.#t.isMediaLoaded) return;
66
+ const e = this.#r(chrome.cast.media.TrackType.TEXT);
67
+ for (const s of t)
68
+ if (!this.#d(e, s)) {
69
+ p(() => this.#i?.());
70
+ break;
71
+ }
72
+ }
73
+ syncRemoteTracks(t) {
74
+ if (!this.#t.isMediaLoaded) return;
75
+ const e = this.#a(), s = this.getLocalTextTracks(), i = this.#r(chrome.cast.media.TrackType.AUDIO), r = this.#r(chrome.cast.media.TrackType.TEXT);
76
+ for (const a of i) {
77
+ if (this.#h(e, a)) continue;
78
+ const o = {
79
+ id: a.trackId.toString(),
80
+ label: a.name,
81
+ language: a.language,
82
+ kind: a.subtype ?? "main",
83
+ selected: !1
84
+ };
85
+ this.#e.audioTracks[C.add](o, t);
86
+ }
87
+ for (const a of r) {
88
+ if (this.#h(s, a)) continue;
89
+ const o = {
90
+ id: a.trackId.toString(),
91
+ src: a.trackContentId,
92
+ label: a.name,
93
+ language: a.language,
94
+ kind: a.subtype.toLowerCase()
95
+ };
96
+ this.#e.textTracks.add(o, t);
97
+ }
98
+ }
99
+ syncRemoteActiveIds(t) {
100
+ if (!this.#t.isMediaLoaded) return;
101
+ const e = this.#l(), s = new chrome.cast.media.EditTracksInfoRequest(e);
102
+ this.#c(s).catch((i) => {
103
+ });
104
+ }
105
+ #c(t) {
106
+ const e = f();
107
+ return new Promise((s, i) => e?.editTracksInfo(t, s, i));
108
+ }
109
+ #h(t, e) {
110
+ return t.find((s) => this.#s(s, e));
111
+ }
112
+ #d(t, e) {
113
+ return t.find((s) => this.#s(e, s));
114
+ }
115
+ // Note: we can't rely on id matching because they will differ between local/remote. A local
116
+ // track id might not even exist.
117
+ #s(t, e) {
118
+ return e.name === t.label && e.language === t.language && e.subtype.toLowerCase() === t.kind.toLowerCase();
119
+ }
120
+ }
121
+ class D {
122
+ $$PROVIDER_TYPE = "GOOGLE_CAST";
123
+ scope = g();
124
+ #t;
125
+ #e;
126
+ #i;
127
+ #a = null;
128
+ #r = "disconnected";
129
+ #l = 0;
130
+ #o = 0;
131
+ #c = new n(0, 0);
132
+ #h = new E(this.#b.bind(this));
133
+ #d;
134
+ #s = null;
135
+ #u = !1;
136
+ constructor(t, e) {
137
+ this.#t = t, this.#e = e, this.#i = new b(t, e, this.#G.bind(this));
138
+ }
139
+ get type() {
140
+ return "google-cast";
141
+ }
142
+ get currentSrc() {
143
+ return this.#a;
144
+ }
145
+ /**
146
+ * The Google Cast remote player.
147
+ *
148
+ * @see {@link https://developers.google.com/cast/docs/reference/web_sender/cast.framework.RemotePlayer}
149
+ */
150
+ get player() {
151
+ return this.#t;
152
+ }
153
+ /**
154
+ * @see {@link https://developers.google.com/cast/docs/reference/web_sender/cast.framework.CastContext}
155
+ */
156
+ get cast() {
157
+ return v();
158
+ }
159
+ /**
160
+ * @see {@link https://developers.google.com/cast/docs/reference/web_sender/cast.framework.CastSession}
161
+ */
162
+ get session() {
163
+ return L();
164
+ }
165
+ /**
166
+ * @see {@link https://developers.google.com/cast/docs/reference/web_sender/chrome.cast.media.Media}
167
+ */
168
+ get media() {
169
+ return f();
170
+ }
171
+ /**
172
+ * Whether the current Google Cast session belongs to this provider.
173
+ */
174
+ get hasActiveSession() {
175
+ return T(this.#a);
176
+ }
177
+ setup() {
178
+ this.#L(), this.#S(), this.#i.setup(), this.#e.notify("provider-setup", this);
179
+ }
180
+ #L() {
181
+ S(
182
+ cast.framework.CastContextEventType.CAST_STATE_CHANGED,
183
+ this.#f.bind(this)
184
+ );
185
+ }
186
+ #S() {
187
+ const t = cast.framework.RemotePlayerEventType, e = {
188
+ [t.IS_CONNECTED_CHANGED]: this.#f,
189
+ [t.IS_MEDIA_LOADED_CHANGED]: this.#g,
190
+ [t.CAN_CONTROL_VOLUME_CHANGED]: this.#k,
191
+ [t.CAN_SEEK_CHANGED]: this.#y,
192
+ [t.DURATION_CHANGED]: this.#D,
193
+ [t.IS_MUTED_CHANGED]: this.#p,
194
+ [t.VOLUME_LEVEL_CHANGED]: this.#p,
195
+ [t.IS_PAUSED_CHANGED]: this.#N,
196
+ [t.LIVE_SEEKABLE_RANGE_CHANGED]: this.#C,
197
+ [t.PLAYER_STATE_CHANGED]: this.#P
198
+ };
199
+ this.#d = e;
200
+ const s = this.#R.bind(this);
201
+ for (const i of l(e))
202
+ this.#t.controller.addEventListener(i, s);
203
+ k(() => {
204
+ for (const i of l(e))
205
+ this.#t.controller.removeEventListener(i, s);
206
+ });
207
+ }
208
+ async play() {
209
+ if (!(!this.#t.isPaused && !this.#u)) {
210
+ if (this.#u) {
211
+ await this.#v(!1, 0);
212
+ return;
213
+ }
214
+ this.#t.controller?.playOrPause();
215
+ }
216
+ }
217
+ async pause() {
218
+ this.#t.isPaused || this.#t.controller?.playOrPause();
219
+ }
220
+ getMediaStatus(t) {
221
+ return new Promise((e, s) => {
222
+ this.media?.getStatus(t, e, s);
223
+ });
224
+ }
225
+ setMuted(t) {
226
+ (t && !this.#t.isMuted || !t && this.#t.isMuted) && this.#t.controller?.muteOrUnmute();
227
+ }
228
+ setCurrentTime(t) {
229
+ this.#t.currentTime = t, this.#e.notify("seeking", t), this.#t.controller?.seek();
230
+ }
231
+ setVolume(t) {
232
+ this.#t.volumeLevel = t, this.#t.controller?.setVolumeLevel();
233
+ }
234
+ async loadSource(t) {
235
+ if (this.#s?.src !== t && (this.#s = null), T(t)) {
236
+ this.#A(), this.#a = t;
237
+ return;
238
+ }
239
+ this.#e.notify("load-start");
240
+ const e = this.#x(t), s = await this.session.loadMedia(e);
241
+ if (s) {
242
+ this.#a = null, this.#e.notify("error", Error(A(s)));
243
+ return;
244
+ }
245
+ this.#a = t;
246
+ }
247
+ destroy() {
248
+ this.#m(), this.#T();
249
+ }
250
+ #m() {
251
+ this.#s || (this.#o = 0, this.#c = new n(0, 0)), this.#h.stop(), this.#l = 0, this.#s = null;
252
+ }
253
+ #A() {
254
+ const t = new u("resume-session", { detail: this.session });
255
+ this.#g(t);
256
+ const { muted: e, volume: s, savedState: i } = this.#e.$state, r = i();
257
+ this.setCurrentTime(Math.max(this.#t.currentTime, r?.currentTime ?? 0)), this.setMuted(e()), this.setVolume(s()), r?.paused === !1 && this.play();
258
+ }
259
+ #T() {
260
+ this.cast.endCurrentSession(!0);
261
+ const { remotePlaybackLoader: t } = this.#e.$state;
262
+ t.set(null);
263
+ }
264
+ #I() {
265
+ const { savedState: t } = this.#e.$state;
266
+ t.set({
267
+ paused: this.#t.isPaused,
268
+ currentTime: this.#t.currentTime
269
+ }), this.#T();
270
+ }
271
+ #b() {
272
+ this.#M();
273
+ }
274
+ #R(t) {
275
+ this.#d[t.type].call(this, t);
276
+ }
277
+ #f(t) {
278
+ const e = this.cast.getCastState(), s = e === cast.framework.CastState.CONNECTED ? "connected" : e === cast.framework.CastState.CONNECTING ? "connecting" : "disconnected";
279
+ if (this.#r === s) return;
280
+ const i = { type: "google-cast", state: s }, r = this.#n(t);
281
+ this.#r = s, this.#e.notify("remote-playback-change", i, r), s === "disconnected" && this.#I();
282
+ }
283
+ #g(t) {
284
+ if (!!!this.#t.isMediaLoaded) return;
285
+ const s = h(this.#e.$state.source);
286
+ Promise.resolve().then(() => {
287
+ if (s !== h(this.#e.$state.source) || !this.#t.isMediaLoaded) return;
288
+ this.#m();
289
+ const i = this.#t.duration;
290
+ this.#c = new n(0, i);
291
+ const r = {
292
+ provider: this,
293
+ duration: i,
294
+ buffered: new n(0, 0),
295
+ seekable: this.#E()
296
+ }, a = this.#n(t);
297
+ this.#e.notify("loaded-metadata", void 0, a), this.#e.notify("loaded-data", void 0, a), this.#e.notify("can-play", r, a), this.#k(), this.#y(t);
298
+ const { volume: c, muted: o } = this.#e.$state;
299
+ this.setVolume(c()), this.setMuted(o()), this.#h.start(), this.#i.syncRemoteTracks(a), this.#i.syncRemoteActiveIds(a);
300
+ });
301
+ }
302
+ #k() {
303
+ this.#e.$state.canSetVolume.set(this.#t.canControlVolume);
304
+ }
305
+ #y(t) {
306
+ const e = this.#n(t);
307
+ this.#e.notify("stream-type-change", this.#w(), e);
308
+ }
309
+ #w() {
310
+ return this.#t.mediaInfo?.streamType === chrome.cast.media.StreamType.LIVE ? this.#t.canSeek ? "live:dvr" : "live" : "on-demand";
311
+ }
312
+ #M() {
313
+ if (this.#s) return;
314
+ const t = this.#t.currentTime;
315
+ t !== this.#l && (this.#e.notify("time-change", t), t > this.#o && (this.#o = t, this.#C()), this.#e.$state.seeking() && this.#e.notify("seeked", t), this.#l = t);
316
+ }
317
+ #D(t) {
318
+ if (!this.#t.isMediaLoaded || this.#s) return;
319
+ const e = this.#t.duration, s = this.#n(t);
320
+ this.#c = new n(0, e), this.#e.notify("duration-change", e, s);
321
+ }
322
+ #p(t) {
323
+ if (!this.#t.isMediaLoaded) return;
324
+ const e = {
325
+ muted: this.#t.isMuted,
326
+ volume: this.#t.volumeLevel
327
+ }, s = this.#n(t);
328
+ this.#e.notify("volume-change", e, s);
329
+ }
330
+ #N(t) {
331
+ const e = this.#n(t);
332
+ this.#t.isPaused ? this.#e.notify("pause", void 0, e) : this.#e.notify("play", void 0, e);
333
+ }
334
+ #C(t) {
335
+ const e = {
336
+ seekable: this.#E(),
337
+ buffered: new n(0, this.#o)
338
+ }, s = t ? this.#n(t) : void 0;
339
+ this.#e.notify("progress", e, s);
340
+ }
341
+ #P(t) {
342
+ const e = this.#t.playerState, s = chrome.cast.media.PlayerState;
343
+ if (this.#u = e === s.IDLE, e === s.PAUSED) return;
344
+ const i = this.#n(t);
345
+ switch (e) {
346
+ case s.PLAYING:
347
+ this.#e.notify("playing", void 0, i);
348
+ break;
349
+ case s.BUFFERING:
350
+ this.#e.notify("waiting", void 0, i);
351
+ break;
352
+ case s.IDLE:
353
+ this.#h.stop(), this.#e.notify("pause"), this.#e.notify("end");
354
+ break;
355
+ }
356
+ }
357
+ #E() {
358
+ return this.#t.liveSeekableRange ? new n(this.#t.liveSeekableRange.start, this.#t.liveSeekableRange.end) : this.#c;
359
+ }
360
+ #n(t) {
361
+ return t instanceof Event ? t : new u(t.type, { detail: t });
362
+ }
363
+ #_(t) {
364
+ const { streamType: e, title: s, poster: i } = this.#e.$state;
365
+ return new I(t).setMetadata(s(), i()).setStreamType(e()).setTracks(this.#i.getLocalTextTracks()).build();
366
+ }
367
+ #x(t) {
368
+ const e = this.#_(t), s = new chrome.cast.media.LoadRequest(e), i = this.#e.$state.savedState();
369
+ return s.autoplay = (this.#s?.paused ?? i?.paused) === !1, s.currentTime = this.#s?.time ?? i?.currentTime ?? 0, s;
370
+ }
371
+ async #v(t, e) {
372
+ const s = h(this.#e.$state.source);
373
+ this.#s = { src: s, paused: t, time: e }, await this.loadSource(s);
374
+ }
375
+ #G() {
376
+ this.#v(this.#t.isPaused, this.#t.currentTime).catch((t) => {
377
+ });
378
+ }
379
+ }
380
+ export {
381
+ D as GoogleCastProvider
382
+ };
@@ -0,0 +1,309 @@
1
+ import { x as S, f as l, y as E, p as f, Q as v, l as y, e as T, D as d, z as b, T as m, w as g, L as u, A as k, q as L, B as w, C as x, F as D } from "./wt-vidstack-player-CA18U-L9.js";
2
+ import { VideoProvider as C } from "./vidstack-video-CI2rq89j.js";
3
+ import { R as A } from "./vidstack-DqAw8m9J-R8izgrMK.js";
4
+ const I = (r) => b(r);
5
+ class H {
6
+ #e;
7
+ #t;
8
+ #i = null;
9
+ #n = null;
10
+ config = {};
11
+ #r = /* @__PURE__ */ new Set();
12
+ get instance() {
13
+ return this.#i;
14
+ }
15
+ constructor(t, i) {
16
+ this.#e = t, this.#t = i;
17
+ }
18
+ setup(t) {
19
+ const { streamType: i } = this.#t.$state, e = f(i).includes("live"), s = f(i).includes("ll-");
20
+ this.#i = new t({
21
+ lowLatencyMode: s,
22
+ backBufferLength: s ? 4 : e ? 8 : void 0,
23
+ renderTextTracksNatively: !1,
24
+ ...this.config
25
+ });
26
+ const o = this.#h.bind(this);
27
+ for (const n of Object.values(t.Events)) this.#i.on(n, o);
28
+ this.#i.on(t.Events.ERROR, this.#v.bind(this));
29
+ for (const n of this.#r) n(this.#i);
30
+ this.#t.player.dispatch("hls-instance", {
31
+ detail: this.#i
32
+ }), this.#i.attachMedia(this.#e), this.#i.on(t.Events.AUDIO_TRACK_SWITCHED, this.#l.bind(this)), this.#i.on(t.Events.LEVEL_SWITCHED, this.#u.bind(this)), this.#i.on(t.Events.LEVEL_LOADED, this.#f.bind(this)), this.#i.on(t.Events.LEVEL_UPDATED, this.#p.bind(this)), this.#i.on(t.Events.NON_NATIVE_TEXT_TRACKS_FOUND, this.#c.bind(this)), this.#i.on(t.Events.CUES_PARSED, this.#d.bind(this)), this.#t.qualities[v.enableAuto] = this.#g.bind(this), y(this.#t.qualities, "change", this.#L.bind(this)), y(this.#t.audioTracks, "change", this.#S.bind(this)), this.#n = T(this.#o.bind(this));
33
+ }
34
+ #s(t, i) {
35
+ return new d(I(t), { detail: i });
36
+ }
37
+ #o() {
38
+ if (!this.#t.$state.live()) return;
39
+ const t = new A(this.#a.bind(this));
40
+ return t.start(), t.stop.bind(t);
41
+ }
42
+ #a() {
43
+ this.#t.$state.liveSyncPosition.set(this.#i?.liveSyncPosition ?? 1 / 0);
44
+ }
45
+ #h(t, i) {
46
+ this.#t.player?.dispatch(this.#s(t, i));
47
+ }
48
+ #c(t, i) {
49
+ const e = this.#s(t, i);
50
+ let s = -1;
51
+ for (let o = 0; o < i.tracks.length; o++) {
52
+ const n = i.tracks[o], h = n.subtitleTrack ?? n.closedCaptions, c = new m({
53
+ id: `hls-${n.kind}-${o}`,
54
+ src: h?.url,
55
+ label: n.label,
56
+ language: h?.lang,
57
+ kind: n.kind,
58
+ default: n.default
59
+ });
60
+ c[g.readyState] = 2, c[g.onModeChange] = () => {
61
+ c.mode === "showing" ? (this.#i.subtitleTrack = o, s = o) : s === o && (this.#i.subtitleTrack = -1, s = -1);
62
+ }, this.#t.textTracks.add(c, e);
63
+ }
64
+ }
65
+ #d(t, i) {
66
+ const e = this.#i?.subtitleTrack, s = this.#t.textTracks.getById(`hls-${i.type}-${e}`);
67
+ if (!s) return;
68
+ const o = this.#s(t, i);
69
+ for (const n of i.cues)
70
+ n.positionAlign = "auto", s.addCue(n, o);
71
+ }
72
+ #l(t, i) {
73
+ const e = this.#t.audioTracks[i.id];
74
+ if (e) {
75
+ const s = this.#s(t, i);
76
+ this.#t.audioTracks[u.select](e, !0, s);
77
+ }
78
+ }
79
+ #u(t, i) {
80
+ const e = this.#t.qualities[i.level];
81
+ if (e) {
82
+ const s = this.#s(t, i);
83
+ this.#t.qualities[u.select](e, !0, s);
84
+ }
85
+ }
86
+ #p(t, i) {
87
+ i.details.totalduration > 0 && this.#t.$state.inferredLiveDVRWindow.set(i.details.totalduration);
88
+ }
89
+ #f(t, i) {
90
+ if (this.#t.$state.canPlay()) return;
91
+ const { type: e, live: s, totalduration: o, targetduration: n } = i.details, h = this.#s(t, i);
92
+ this.#t.notify(
93
+ "stream-type-change",
94
+ s ? e === "EVENT" && Number.isFinite(o) && n >= 10 ? "live:dvr" : "live" : "on-demand",
95
+ h
96
+ ), this.#t.notify("duration-change", o, h);
97
+ const c = this.#i.media;
98
+ this.#i.currentLevel === -1 && this.#t.qualities[v.setAuto](!0, h);
99
+ for (const a of this.#i.audioTracks) {
100
+ const p = {
101
+ id: a.id.toString(),
102
+ label: a.name,
103
+ language: a.lang || "",
104
+ kind: "main"
105
+ };
106
+ this.#t.audioTracks[u.add](p, h);
107
+ }
108
+ for (const a of this.#i.levels) {
109
+ const p = {
110
+ id: a.id?.toString() ?? a.height + "p",
111
+ width: a.width,
112
+ height: a.height,
113
+ codec: a.codecSet,
114
+ bitrate: a.bitrate
115
+ };
116
+ this.#t.qualities[u.add](p, h);
117
+ }
118
+ c.dispatchEvent(new d("canplay", { trigger: h }));
119
+ }
120
+ #v(t, i) {
121
+ i.fatal && (i.type === "mediaError" ? this.#i?.recoverMediaError() : this.#y(i.error));
122
+ }
123
+ #y(t) {
124
+ this.#t.notify("error", {
125
+ message: t.message,
126
+ code: 1,
127
+ error: t
128
+ });
129
+ }
130
+ #g() {
131
+ this.#i && (this.#i.currentLevel = -1);
132
+ }
133
+ #L() {
134
+ const { qualities: t } = this.#t;
135
+ !this.#i || t.auto || (this.#i[t.switch + "Level"] = t.selectedIndex, k && (this.#e.currentTime = this.#e.currentTime));
136
+ }
137
+ #S() {
138
+ const { audioTracks: t } = this.#t;
139
+ this.#i && this.#i.audioTrack !== t.selectedIndex && (this.#i.audioTrack = t.selectedIndex);
140
+ }
141
+ onInstance(t) {
142
+ return this.#r.add(t), () => this.#r.delete(t);
143
+ }
144
+ loadSource(t) {
145
+ l(t.src) && this.#i?.loadSource(t.src);
146
+ }
147
+ destroy() {
148
+ this.#i?.destroy(), this.#i = null, this.#n?.(), this.#n = null;
149
+ }
150
+ }
151
+ class _ {
152
+ #e;
153
+ #t;
154
+ #i;
155
+ constructor(t, i, e) {
156
+ this.#e = t, this.#t = i, this.#i = e, this.#n();
157
+ }
158
+ async #n() {
159
+ const t = {
160
+ onLoadStart: this.#r.bind(this),
161
+ onLoaded: this.#s.bind(this),
162
+ onLoadError: this.#o.bind(this)
163
+ };
164
+ let i = await R(this.#e, t);
165
+ if (L(i) && !l(this.#e) && (i = await $(this.#e, t)), !i) return null;
166
+ if (!i.isSupported()) {
167
+ const e = "[vidstack] `hls.js` is not supported in this environment";
168
+ return this.#t.player.dispatch(new d("hls-unsupported")), this.#t.notify("error", { message: e, code: 4 }), null;
169
+ }
170
+ return i;
171
+ }
172
+ #r() {
173
+ this.#t.player.dispatch(new d("hls-lib-load-start"));
174
+ }
175
+ #s(t) {
176
+ this.#t.player.dispatch(
177
+ new d("hls-lib-loaded", {
178
+ detail: t
179
+ })
180
+ ), this.#i(t);
181
+ }
182
+ #o(t) {
183
+ const i = w(t);
184
+ this.#t.player.dispatch(
185
+ new d("hls-lib-load-error", {
186
+ detail: i
187
+ })
188
+ ), this.#t.notify("error", {
189
+ message: i.message,
190
+ code: 4,
191
+ error: i
192
+ });
193
+ }
194
+ }
195
+ async function $(r, t = {}) {
196
+ if (!L(r)) {
197
+ if (t.onLoadStart?.(), r.prototype && r.prototype !== Function)
198
+ return t.onLoaded?.(r), r;
199
+ try {
200
+ const i = (await r())?.default;
201
+ if (i && i.isSupported)
202
+ t.onLoaded?.(i);
203
+ else
204
+ throw Error(
205
+ ""
206
+ );
207
+ return i;
208
+ } catch (i) {
209
+ t.onLoadError?.(i);
210
+ }
211
+ }
212
+ }
213
+ async function R(r, t = {}) {
214
+ if (l(r)) {
215
+ t.onLoadStart?.();
216
+ try {
217
+ if (await x(r), !D(window.Hls))
218
+ throw Error(
219
+ ""
220
+ );
221
+ const i = window.Hls;
222
+ return t.onLoaded?.(i), i;
223
+ } catch (i) {
224
+ t.onLoadError?.(i);
225
+ }
226
+ }
227
+ }
228
+ const O = "https://cdn.jsdelivr.net";
229
+ class V extends C {
230
+ $$PROVIDER_TYPE = "HLS";
231
+ #e = null;
232
+ #t = new H(this.video, this.ctx);
233
+ /**
234
+ * The `hls.js` constructor.
235
+ */
236
+ get ctor() {
237
+ return this.#e;
238
+ }
239
+ /**
240
+ * The current `hls.js` instance.
241
+ */
242
+ get instance() {
243
+ return this.#t.instance;
244
+ }
245
+ /**
246
+ * Whether `hls.js` is supported in this environment.
247
+ */
248
+ static supported = S();
249
+ get type() {
250
+ return "hls";
251
+ }
252
+ get canLiveSync() {
253
+ return !0;
254
+ }
255
+ #i = `${O}/npm/hls.js@^1.5.0/dist/hls.min.js`;
256
+ /**
257
+ * The `hls.js` configuration object.
258
+ *
259
+ * @see {@link https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning}
260
+ */
261
+ get config() {
262
+ return this.#t.config;
263
+ }
264
+ set config(t) {
265
+ this.#t.config = t;
266
+ }
267
+ /**
268
+ * The `hls.js` constructor (supports dynamic imports) or a URL of where it can be found.
269
+ *
270
+ * @defaultValue `https://cdn.jsdelivr.net/npm/hls.js@^1.0.0/dist/hls.min.js`
271
+ */
272
+ get library() {
273
+ return this.#i;
274
+ }
275
+ set library(t) {
276
+ this.#i = t;
277
+ }
278
+ preconnect() {
279
+ l(this.#i) && E(this.#i);
280
+ }
281
+ setup() {
282
+ super.setup(), new _(this.#i, this.ctx, (t) => {
283
+ this.#e = t, this.#t.setup(t), this.ctx.notify("provider-setup", this);
284
+ const i = f(this.ctx.$state.source);
285
+ i && this.loadSource(i);
286
+ });
287
+ }
288
+ async loadSource(t, i) {
289
+ if (!l(t.src)) {
290
+ this.removeSource();
291
+ return;
292
+ }
293
+ this.media.preload = i || "", this.appendSource(t, "application/x-mpegurl"), this.#t.loadSource(t), this.currentSrc = t;
294
+ }
295
+ /**
296
+ * The given callback is invoked when a new `hls.js` instance is created and right before it's
297
+ * attached to media.
298
+ */
299
+ onInstance(t) {
300
+ const i = this.#t.instance;
301
+ return i && t(i), this.#t.onInstance(t);
302
+ }
303
+ destroy() {
304
+ this.#t.destroy();
305
+ }
306
+ }
307
+ export {
308
+ V as HLSProvider
309
+ };
@@ -0,0 +1,28 @@
1
+ const p = /(?:https:\/\/)?(?:player\.)?vimeo(?:\.com)?\/(?:video\/)?(\d+)(?:(?:\?hash=|\?h=|\/)(.*))?/, c = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
2
+ function u(e) {
3
+ const n = e.match(p);
4
+ return { videoId: n?.[1], hash: n?.[2] };
5
+ }
6
+ async function f(e, n, s) {
7
+ if (c.has(e)) return c.get(e);
8
+ if (o.has(e)) return o.get(e);
9
+ let i = `https://vimeo.com/api/oembed.json?url=https://player.vimeo.com/video/${e}`;
10
+ s && (i = i.concat(`?h=${s}`));
11
+ const r = window.fetch(i, {
12
+ mode: "cors",
13
+ signal: n.signal
14
+ }).then((t) => t.json()).then((t) => {
15
+ const a = /vimeocdn.com\/video\/(.*)?_/, h = t?.thumbnail_url?.match(a)?.[1], l = h ? `https://i.vimeocdn.com/video/${h}_1920x1080.webp` : "", m = {
16
+ title: t?.title ?? "",
17
+ duration: t?.duration ?? 0,
18
+ poster: l,
19
+ pro: t.account_type !== "basic"
20
+ };
21
+ return c.set(e, m), m;
22
+ }).finally(() => o.delete(e));
23
+ return o.set(e, r), r;
24
+ }
25
+ export {
26
+ f as getVimeoVideoInfo,
27
+ u as resolveVimeoVideoId
28
+ };