@linktr.ee/messaging-react 1.26.1 → 1.28.0-rc-1776225927
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.
- package/dist/Creator-D38dWn2X.js +318 -0
- package/dist/Creator-D38dWn2X.js.map +1 -0
- package/dist/MediaPlayer-DE9MC6k6.js +599 -0
- package/dist/MediaPlayer-DE9MC6k6.js.map +1 -0
- package/dist/Preview-DqAv16NS.js +87 -0
- package/dist/Preview-DqAv16NS.js.map +1 -0
- package/dist/Visitor-BG-9-3HU.js +199 -0
- package/dist/Visitor-BG-9-3HU.js.map +1 -0
- package/dist/dash.all.min-Duv4lvGS.js +18858 -0
- package/dist/dash.all.min-Duv4lvGS.js.map +1 -0
- package/dist/hls-Bogc7CBn.js +21710 -0
- package/dist/hls-Bogc7CBn.js.map +1 -0
- package/dist/index-Da-xN4Yq.js +16142 -0
- package/dist/index-Da-xN4Yq.js.map +1 -0
- package/dist/index-Dj9rqWcU.js +69 -0
- package/dist/index-Dj9rqWcU.js.map +1 -0
- package/dist/index.d.ts +74 -10
- package/dist/index.js +979 -934
- package/dist/index.js.map +1 -1
- package/dist/mixin-B6jYfIcp.js +808 -0
- package/dist/mixin-B6jYfIcp.js.map +1 -0
- package/dist/react-BxlQMOfz.js +419 -0
- package/dist/react-BxlQMOfz.js.map +1 -0
- package/dist/react-COAP-MIW.js +377 -0
- package/dist/react-COAP-MIW.js.map +1 -0
- package/dist/react-Cn4WlMcl.js +3108 -0
- package/dist/react-Cn4WlMcl.js.map +1 -0
- package/dist/react-CwTJArKY.js +459 -0
- package/dist/react-CwTJArKY.js.map +1 -0
- package/dist/react-DkfS_atT.js +373 -0
- package/dist/react-DkfS_atT.js.map +1 -0
- package/dist/react-Pea5fum1.js +286 -0
- package/dist/react-Pea5fum1.js.map +1 -0
- package/dist/react-RiBbsUDd.js +534 -0
- package/dist/react-RiBbsUDd.js.map +1 -0
- package/dist/react-dS1WBxxz.js +238 -0
- package/dist/react-dS1WBxxz.js.map +1 -0
- package/package.json +2 -1
- package/src/components/ChannelView.tsx +12 -2
- package/src/components/CustomMessage/CustomMessage.stories.tsx +173 -41
- package/src/components/CustomMessage/MessageTag.tsx +5 -0
- package/src/components/CustomMessage/index.tsx +43 -4
- package/src/components/LockedAttachment/LockedAttachment.stories.tsx +343 -0
- package/src/components/LockedAttachment/components/Creator.tsx +469 -0
- package/src/components/LockedAttachment/components/MediaPlayer.tsx +359 -0
- package/src/components/LockedAttachment/components/Visitor.tsx +356 -0
- package/src/components/LockedAttachment/index.tsx +39 -0
- package/src/components/LockedAttachment/types.ts +17 -0
- package/src/components/LockedAttachment/utils/icons.ts +53 -0
- package/src/components/LockedAttachment/utils/mimeType.test.ts +119 -0
- package/src/components/LockedAttachment/utils/mimeType.ts +37 -0
- package/src/components/ParticipantPicker/index.tsx +8 -1
- package/src/hooks/useParticipants.ts +3 -2
- package/src/index.ts +4 -0
- package/src/stories/decorators/storyUser.tsx +37 -0
- package/src/stream-custom-data.ts +9 -3
- package/src/types.ts +20 -1
- package/src/utils/isDevBuild.ts +10 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
var it = Object.defineProperty;
|
|
2
|
+
var W = (e) => {
|
|
3
|
+
throw TypeError(e);
|
|
4
|
+
};
|
|
5
|
+
var nt = (e, n, t) => n in e ? it(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
|
|
6
|
+
var M = (e, n, t) => nt(e, typeof n != "symbol" ? n + "" : n, t), V = (e, n, t) => n.has(e) || W("Cannot " + t);
|
|
7
|
+
var c = (e, n, t) => (V(e, n, "read from private field"), t ? t.call(e) : n.get(e)), m = (e, n, t) => n.has(e) ? W("Cannot add the same private member more than once") : n instanceof WeakSet ? n.add(e) : n.set(e, t), l = (e, n, t, i) => (V(e, n, "write to private field"), i ? i.call(e, t) : n.set(e, t), t), q = (e, n, t) => (V(e, n, "access private method"), t);
|
|
8
|
+
import st from "react";
|
|
9
|
+
import { M as ot } from "./index-Dj9rqWcU.js";
|
|
10
|
+
const rt = "https://www.youtube.com/embed", at = "https://www.youtube-nocookie.com/embed", lt = "https://www.youtube.com/iframe_api", ut = "YT", ct = "onYouTubeIframeAPIReady", z = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|shorts\/|live\/))((\w|-){11})/, dt = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/.*?[?&]list=)([\w_-]+)/;
|
|
11
|
+
function ht(e) {
|
|
12
|
+
if (!e) return;
|
|
13
|
+
const n = e.match(/[?&]t=([\dms]+)/i);
|
|
14
|
+
if (!n) return;
|
|
15
|
+
const t = n[1].toLowerCase();
|
|
16
|
+
let i = 0, s = !1;
|
|
17
|
+
const u = t.match(/(\d+)m/);
|
|
18
|
+
u && (i += parseInt(u[1], 10) * 60, s = !0);
|
|
19
|
+
const d = t.match(/(\d+)s?$/);
|
|
20
|
+
return d && (i += parseInt(d[1], 10), s = !0), s ? i : void 0;
|
|
21
|
+
}
|
|
22
|
+
function J(e, n = {}) {
|
|
23
|
+
var t;
|
|
24
|
+
const i = {
|
|
25
|
+
src: Z(e, n),
|
|
26
|
+
frameborder: 0,
|
|
27
|
+
width: "100%",
|
|
28
|
+
height: "100%",
|
|
29
|
+
allow: "accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
|
30
|
+
};
|
|
31
|
+
return (t = n.config) != null && t.referrerpolicy && (i.referrerpolicy = n.config.referrerpolicy), n.config && (i["data-config"] = JSON.stringify(n.config)), /*html*/
|
|
32
|
+
`
|
|
33
|
+
<style>
|
|
34
|
+
:host {
|
|
35
|
+
display: inline-block;
|
|
36
|
+
line-height: 0;
|
|
37
|
+
position: relative;
|
|
38
|
+
min-width: 300px;
|
|
39
|
+
min-height: 150px;
|
|
40
|
+
}
|
|
41
|
+
iframe {
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
}
|
|
46
|
+
</style>
|
|
47
|
+
<iframe${ft(i)}></iframe>
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
function Z(e, n) {
|
|
51
|
+
if (!e.src) return;
|
|
52
|
+
const t = e.src.includes("-nocookie") ? at : rt, i = {
|
|
53
|
+
// ?controls=true is enabled by default in the iframe
|
|
54
|
+
controls: e.controls === "" ? null : 0,
|
|
55
|
+
autoplay: e.autoplay,
|
|
56
|
+
loop: e.loop,
|
|
57
|
+
mute: e.muted,
|
|
58
|
+
playsinline: e.playsinline,
|
|
59
|
+
preload: e.preload ?? "metadata",
|
|
60
|
+
// https://developers.google.com/youtube/player_parameters#Parameters
|
|
61
|
+
// origin: globalThis.location?.origin,
|
|
62
|
+
enablejsapi: 1,
|
|
63
|
+
cc_load_policy: 1,
|
|
64
|
+
showinfo: 0,
|
|
65
|
+
rel: 0,
|
|
66
|
+
iv_load_policy: 3,
|
|
67
|
+
modestbranding: 1,
|
|
68
|
+
start: ht(e.src),
|
|
69
|
+
...n.config
|
|
70
|
+
};
|
|
71
|
+
if (z.test(e.src)) {
|
|
72
|
+
const g = e.src.match(z), b = g && g[1];
|
|
73
|
+
return `${t}/${b}?${K(i)}`;
|
|
74
|
+
}
|
|
75
|
+
const s = e.src.match(dt), d = {
|
|
76
|
+
listType: "playlist",
|
|
77
|
+
list: s && s[1],
|
|
78
|
+
...i
|
|
79
|
+
};
|
|
80
|
+
return `${t}?${K(d)}`;
|
|
81
|
+
}
|
|
82
|
+
var S, C, _, T, y, N, R, P, L, $, tt;
|
|
83
|
+
class x extends ot(globalThis.HTMLElement ?? class {
|
|
84
|
+
}) {
|
|
85
|
+
constructor() {
|
|
86
|
+
super();
|
|
87
|
+
m(this, $);
|
|
88
|
+
M(this, "loadComplete", new F());
|
|
89
|
+
m(this, S);
|
|
90
|
+
m(this, C);
|
|
91
|
+
m(this, _, 0);
|
|
92
|
+
m(this, T, !1);
|
|
93
|
+
m(this, y);
|
|
94
|
+
M(this, "isLoaded", !1);
|
|
95
|
+
m(this, N, null);
|
|
96
|
+
m(this, R, null);
|
|
97
|
+
m(this, P, null);
|
|
98
|
+
m(this, L, 1);
|
|
99
|
+
q(this, $, tt).call(this, "config");
|
|
100
|
+
}
|
|
101
|
+
get config() {
|
|
102
|
+
return c(this, R);
|
|
103
|
+
}
|
|
104
|
+
set config(t) {
|
|
105
|
+
l(this, R, t);
|
|
106
|
+
}
|
|
107
|
+
async load() {
|
|
108
|
+
if (c(this, S)) return;
|
|
109
|
+
this.shadowRoot || this.attachShadow({ mode: "open" });
|
|
110
|
+
const t = !c(this, C);
|
|
111
|
+
c(this, C) && (this.loadComplete = new F(), this.isLoaded = !1), l(this, C, !0), await l(this, S, Promise.resolve()), l(this, S, null), l(this, _, 0), this.dispatchEvent(new Event("emptied"));
|
|
112
|
+
let i = this.api;
|
|
113
|
+
if (this.api = null, !this.src) {
|
|
114
|
+
i == null || i.destroy();
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
l(this, P, document.createElement("video")), this.textTracks = c(this, P).textTracks, this.textTracks.addEventListener("change", () => {
|
|
118
|
+
var o;
|
|
119
|
+
const f = Array.from(this.textTracks).find((p) => p.mode === "showing");
|
|
120
|
+
(o = this.api) == null || o.setOption("captions", "track", f ? { languageCode: f.language } : {});
|
|
121
|
+
}), this.dispatchEvent(new Event("loadstart"));
|
|
122
|
+
let s = this.shadowRoot.querySelector("iframe"), u = vt(this.attributes);
|
|
123
|
+
t && s && l(this, R, JSON.parse(s.getAttribute("data-config") || "{}")), (!(s != null && s.src) || s.src !== Z(u, this)) && (this.shadowRoot.innerHTML = J(u, this), s = this.shadowRoot.querySelector("iframe"));
|
|
124
|
+
const d = await mt(lt, ut, ct);
|
|
125
|
+
this.api = new d.Player(s, {
|
|
126
|
+
events: {
|
|
127
|
+
onReady: () => {
|
|
128
|
+
var o;
|
|
129
|
+
l(this, _, 1), this.dispatchEvent(new Event("loadedmetadata")), this.dispatchEvent(new Event("durationchange")), c(this, L) !== 1 && ((o = this.api) == null || o.setVolume(c(this, L) * 100)), this.dispatchEvent(new Event("volumechange")), this.dispatchEvent(new Event("loadcomplete")), this.isLoaded = !0, this.loadComplete.resolve();
|
|
130
|
+
},
|
|
131
|
+
onError: (o) => {
|
|
132
|
+
console.error(o), l(this, N, {
|
|
133
|
+
code: o.data,
|
|
134
|
+
message: `YouTube iframe player error #${o.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`
|
|
135
|
+
}), this.dispatchEvent(new Event("error"));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
let g = !1;
|
|
140
|
+
this.api.addEventListener("onStateChange", (o) => {
|
|
141
|
+
var f;
|
|
142
|
+
const p = o.data;
|
|
143
|
+
if ((p === d.PlayerState.PLAYING || p === d.PlayerState.BUFFERING) && (g || (g = !0, this.dispatchEvent(new Event("play"))), (this.api.getOption("captions", "tracklist") || []).forEach((k) => {
|
|
144
|
+
[...this.textTracks].some((O) => O.language === k.languageCode) || c(this, P).addTextTrack("subtitles", k.displayName, k.languageCode), this.textTracks = c(this, P).textTracks;
|
|
145
|
+
}), this.dispatchEvent(new Event("loadstart"))), p === d.PlayerState.PLAYING)
|
|
146
|
+
this.seeking && (l(this, T, !1), (f = c(this, y)) == null || f.resolve(), this.dispatchEvent(new Event("seeked"))), l(this, _, 3), this.dispatchEvent(new Event("playing"));
|
|
147
|
+
else if (p === d.PlayerState.PAUSED) {
|
|
148
|
+
const v = Math.abs(this.currentTime - b);
|
|
149
|
+
!this.seeking && v > 0.1 && (l(this, T, !0), this.dispatchEvent(new Event("seeking"))), g = !1, this.dispatchEvent(new Event("pause"));
|
|
150
|
+
}
|
|
151
|
+
p === d.PlayerState.ENDED && (g = !1, this.dispatchEvent(new Event("pause")), this.dispatchEvent(new Event("ended")), this.loop && this.play());
|
|
152
|
+
}), this.api.addEventListener("onPlaybackRateChange", () => {
|
|
153
|
+
this.dispatchEvent(new Event("ratechange"));
|
|
154
|
+
}), this.api.addEventListener("onVolumeChange", () => {
|
|
155
|
+
var o;
|
|
156
|
+
const f = ((o = this.api) == null ? void 0 : o.getVolume()) / 100;
|
|
157
|
+
l(this, L, f), this.dispatchEvent(new Event("volumechange"));
|
|
158
|
+
}), this.api.addEventListener("onVideoProgress", () => {
|
|
159
|
+
this.dispatchEvent(new Event("timeupdate"));
|
|
160
|
+
}), await this.loadComplete;
|
|
161
|
+
let b = 0;
|
|
162
|
+
setInterval(() => {
|
|
163
|
+
var o;
|
|
164
|
+
const f = Math.abs(this.currentTime - b), p = this.buffered.end(this.buffered.length - 1);
|
|
165
|
+
this.seeking && p > 0.1 ? (l(this, T, !1), (o = c(this, y)) == null || o.resolve(), this.dispatchEvent(new Event("seeked"))) : !this.seeking && f > 0.1 && (l(this, T, !0), this.dispatchEvent(new Event("seeking"))), b = this.currentTime;
|
|
166
|
+
}, 50);
|
|
167
|
+
let I;
|
|
168
|
+
const B = setInterval(() => {
|
|
169
|
+
const o = this.buffered.end(this.buffered.length - 1);
|
|
170
|
+
o >= this.duration && (clearInterval(B), l(this, _, 4)), I != o && (I = o, this.dispatchEvent(new Event("progress")));
|
|
171
|
+
}, 100);
|
|
172
|
+
}
|
|
173
|
+
async attributeChangedCallback(t, i, s) {
|
|
174
|
+
if (i !== s)
|
|
175
|
+
switch (t) {
|
|
176
|
+
case "src":
|
|
177
|
+
case "autoplay":
|
|
178
|
+
case "controls":
|
|
179
|
+
case "loop":
|
|
180
|
+
case "playsinline":
|
|
181
|
+
this.load();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async play() {
|
|
185
|
+
var t;
|
|
186
|
+
return l(this, y, null), await this.loadComplete, (t = this.api) == null || t.playVideo(), bt(this);
|
|
187
|
+
}
|
|
188
|
+
async pause() {
|
|
189
|
+
var t;
|
|
190
|
+
return await this.loadComplete, (t = this.api) == null ? void 0 : t.pauseVideo();
|
|
191
|
+
}
|
|
192
|
+
get seeking() {
|
|
193
|
+
return c(this, T);
|
|
194
|
+
}
|
|
195
|
+
get readyState() {
|
|
196
|
+
return c(this, _);
|
|
197
|
+
}
|
|
198
|
+
get src() {
|
|
199
|
+
return this.getAttribute("src");
|
|
200
|
+
}
|
|
201
|
+
set src(t) {
|
|
202
|
+
this.src != t && this.setAttribute("src", t);
|
|
203
|
+
}
|
|
204
|
+
get error() {
|
|
205
|
+
return c(this, N);
|
|
206
|
+
}
|
|
207
|
+
/* onStateChange
|
|
208
|
+
-1 (unstarted)
|
|
209
|
+
0 (ended)
|
|
210
|
+
1 (playing)
|
|
211
|
+
2 (paused)
|
|
212
|
+
3 (buffering)
|
|
213
|
+
5 (video cued).
|
|
214
|
+
*/
|
|
215
|
+
get paused() {
|
|
216
|
+
var t, i;
|
|
217
|
+
return this.isLoaded ? [-1, 0, 2, 5].includes((i = (t = this.api) == null ? void 0 : t.getPlayerState) == null ? void 0 : i.call(t)) : !this.autoplay;
|
|
218
|
+
}
|
|
219
|
+
get duration() {
|
|
220
|
+
var t, i;
|
|
221
|
+
return ((i = (t = this.api) == null ? void 0 : t.getDuration) == null ? void 0 : i.call(t)) ?? NaN;
|
|
222
|
+
}
|
|
223
|
+
get autoplay() {
|
|
224
|
+
return this.hasAttribute("autoplay");
|
|
225
|
+
}
|
|
226
|
+
set autoplay(t) {
|
|
227
|
+
this.autoplay != t && this.toggleAttribute("autoplay", !!t);
|
|
228
|
+
}
|
|
229
|
+
get buffered() {
|
|
230
|
+
var t, i;
|
|
231
|
+
if (!this.isLoaded) return Y();
|
|
232
|
+
const s = ((t = this.api) == null ? void 0 : t.getVideoLoadedFraction()) * ((i = this.api) == null ? void 0 : i.getDuration());
|
|
233
|
+
return s > 0 ? Y(0, s) : Y();
|
|
234
|
+
}
|
|
235
|
+
get controls() {
|
|
236
|
+
return this.hasAttribute("controls");
|
|
237
|
+
}
|
|
238
|
+
set controls(t) {
|
|
239
|
+
this.controls != t && this.toggleAttribute("controls", !!t);
|
|
240
|
+
}
|
|
241
|
+
get currentTime() {
|
|
242
|
+
var t, i;
|
|
243
|
+
return ((i = (t = this.api) == null ? void 0 : t.getCurrentTime) == null ? void 0 : i.call(t)) ?? 0;
|
|
244
|
+
}
|
|
245
|
+
set currentTime(t) {
|
|
246
|
+
this.currentTime != t && (l(this, y, new F()), this.loadComplete.then(() => {
|
|
247
|
+
var i, s;
|
|
248
|
+
(i = this.api) == null || i.seekTo(t, !0), this.paused && ((s = c(this, y)) == null || s.then(() => {
|
|
249
|
+
var u;
|
|
250
|
+
c(this, y) && ((u = this.api) == null || u.pauseVideo());
|
|
251
|
+
}));
|
|
252
|
+
}));
|
|
253
|
+
}
|
|
254
|
+
set defaultMuted(t) {
|
|
255
|
+
this.defaultMuted != t && this.toggleAttribute("muted", !!t);
|
|
256
|
+
}
|
|
257
|
+
get defaultMuted() {
|
|
258
|
+
return this.hasAttribute("muted");
|
|
259
|
+
}
|
|
260
|
+
get loop() {
|
|
261
|
+
return this.hasAttribute("loop");
|
|
262
|
+
}
|
|
263
|
+
set loop(t) {
|
|
264
|
+
this.loop != t && this.toggleAttribute("loop", !!t);
|
|
265
|
+
}
|
|
266
|
+
set muted(t) {
|
|
267
|
+
this.muted != t && this.loadComplete.then(() => {
|
|
268
|
+
var i, s;
|
|
269
|
+
t ? (i = this.api) == null || i.mute() : (s = this.api) == null || s.unMute();
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
get muted() {
|
|
273
|
+
var t, i;
|
|
274
|
+
return this.isLoaded ? (i = (t = this.api) == null ? void 0 : t.isMuted) == null ? void 0 : i.call(t) : this.defaultMuted;
|
|
275
|
+
}
|
|
276
|
+
get playbackRate() {
|
|
277
|
+
var t, i;
|
|
278
|
+
return ((i = (t = this.api) == null ? void 0 : t.getPlaybackRate) == null ? void 0 : i.call(t)) ?? 1;
|
|
279
|
+
}
|
|
280
|
+
set playbackRate(t) {
|
|
281
|
+
this.playbackRate != t && this.loadComplete.then(() => {
|
|
282
|
+
var i;
|
|
283
|
+
(i = this.api) == null || i.setPlaybackRate(t);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
get playsInline() {
|
|
287
|
+
return this.hasAttribute("playsinline");
|
|
288
|
+
}
|
|
289
|
+
set playsInline(t) {
|
|
290
|
+
this.playsInline != t && this.toggleAttribute("playsinline", !!t);
|
|
291
|
+
}
|
|
292
|
+
get poster() {
|
|
293
|
+
return this.getAttribute("poster");
|
|
294
|
+
}
|
|
295
|
+
set poster(t) {
|
|
296
|
+
this.poster != t && this.setAttribute("poster", `${t}`);
|
|
297
|
+
}
|
|
298
|
+
set volume(t) {
|
|
299
|
+
this.volume != t && (l(this, L, t), this.loadComplete.then(() => {
|
|
300
|
+
var i;
|
|
301
|
+
(i = this.api) == null || i.setVolume(t * 100);
|
|
302
|
+
}));
|
|
303
|
+
}
|
|
304
|
+
get volume() {
|
|
305
|
+
var t;
|
|
306
|
+
return this.isLoaded ? ((t = this.api) == null ? void 0 : t.getVolume()) / 100 : c(this, L);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
S = new WeakMap(), C = new WeakMap(), _ = new WeakMap(), T = new WeakMap(), y = new WeakMap(), N = new WeakMap(), R = new WeakMap(), P = new WeakMap(), L = new WeakMap(), $ = new WeakSet(), // This is a pattern to update property values that are set before
|
|
310
|
+
// the custom element is upgraded.
|
|
311
|
+
// https://web.dev/custom-elements-best-practices/#make-properties-lazy
|
|
312
|
+
tt = function(t) {
|
|
313
|
+
if (Object.prototype.hasOwnProperty.call(this, t)) {
|
|
314
|
+
const i = this[t];
|
|
315
|
+
delete this[t], this[t] = i;
|
|
316
|
+
}
|
|
317
|
+
}, M(x, "getTemplateHTML", J), M(x, "shadowRootOptions", { mode: "open" }), M(x, "observedAttributes", [
|
|
318
|
+
"autoplay",
|
|
319
|
+
"controls",
|
|
320
|
+
"crossorigin",
|
|
321
|
+
"loop",
|
|
322
|
+
"muted",
|
|
323
|
+
"playsinline",
|
|
324
|
+
"poster",
|
|
325
|
+
"preload",
|
|
326
|
+
"src"
|
|
327
|
+
]);
|
|
328
|
+
function ft(e) {
|
|
329
|
+
let n = "";
|
|
330
|
+
for (const t in e) {
|
|
331
|
+
const i = e[t];
|
|
332
|
+
i === "" ? n += ` ${D(t)}` : n += ` ${D(t)}="${D(`${i}`)}"`;
|
|
333
|
+
}
|
|
334
|
+
return n;
|
|
335
|
+
}
|
|
336
|
+
function D(e) {
|
|
337
|
+
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/`/g, "`");
|
|
338
|
+
}
|
|
339
|
+
function K(e) {
|
|
340
|
+
return String(new URLSearchParams(pt(e)));
|
|
341
|
+
}
|
|
342
|
+
function pt(e) {
|
|
343
|
+
let n = {};
|
|
344
|
+
for (let t in e) {
|
|
345
|
+
let i = e[t];
|
|
346
|
+
i === !0 || i === "" ? n[t] = 1 : i === !1 ? n[t] = 0 : i != null && (n[t] = i);
|
|
347
|
+
}
|
|
348
|
+
return n;
|
|
349
|
+
}
|
|
350
|
+
function vt(e) {
|
|
351
|
+
let n = {};
|
|
352
|
+
for (let t of e)
|
|
353
|
+
n[t.name] = t.value;
|
|
354
|
+
return n;
|
|
355
|
+
}
|
|
356
|
+
const j = {};
|
|
357
|
+
async function mt(e, n, t) {
|
|
358
|
+
return j[e] ? j[e] : self[n] ? (await gt(0), self[n]) : j[e] = new Promise(function(i, s) {
|
|
359
|
+
const u = document.createElement("script");
|
|
360
|
+
u.src = e;
|
|
361
|
+
const d = () => i(self[n]);
|
|
362
|
+
self[t] = d, u.onload = () => !t, u.onerror = s, document.head.append(u);
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
const gt = (e) => new Promise((n) => setTimeout(n, e));
|
|
366
|
+
function yt(e) {
|
|
367
|
+
return (...n) => new Promise((t) => {
|
|
368
|
+
e(...n, (...i) => {
|
|
369
|
+
i.length > 1 ? t(i) : t(i[0]);
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
function bt(e) {
|
|
374
|
+
return yt((n, t) => {
|
|
375
|
+
let i;
|
|
376
|
+
e.addEventListener(
|
|
377
|
+
n,
|
|
378
|
+
i = () => {
|
|
379
|
+
e.removeEventListener(n, i), t();
|
|
380
|
+
}
|
|
381
|
+
);
|
|
382
|
+
})("playing");
|
|
383
|
+
}
|
|
384
|
+
class F extends Promise {
|
|
385
|
+
constructor(n = () => {
|
|
386
|
+
}) {
|
|
387
|
+
let t, i;
|
|
388
|
+
super((s, u) => {
|
|
389
|
+
n(s, u), t = s, i = u;
|
|
390
|
+
}), this.resolve = t, this.reject = i;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
function Y(e, n) {
|
|
394
|
+
return Array.isArray(e) ? G(e) : e == null || n == null || e === 0 && n === 0 ? G([[0, 0]]) : G([[e, n]]);
|
|
395
|
+
}
|
|
396
|
+
function G(e) {
|
|
397
|
+
return Object.defineProperties(e, {
|
|
398
|
+
start: {
|
|
399
|
+
value: (n) => e[n][0]
|
|
400
|
+
},
|
|
401
|
+
end: {
|
|
402
|
+
value: (n) => e[n][1]
|
|
403
|
+
}
|
|
404
|
+
}), e;
|
|
405
|
+
}
|
|
406
|
+
globalThis.customElements && !globalThis.customElements.get("youtube-video") && globalThis.customElements.define("youtube-video", x);
|
|
407
|
+
var Et = x, wt = /* @__PURE__ */ new Set([
|
|
408
|
+
"style",
|
|
409
|
+
"children",
|
|
410
|
+
"ref",
|
|
411
|
+
"key",
|
|
412
|
+
"suppressContentEditableWarning",
|
|
413
|
+
"suppressHydrationWarning",
|
|
414
|
+
"dangerouslySetInnerHTML"
|
|
415
|
+
]), _t = {
|
|
416
|
+
className: "class",
|
|
417
|
+
htmlFor: "for"
|
|
418
|
+
};
|
|
419
|
+
function et(e) {
|
|
420
|
+
return e.toLowerCase();
|
|
421
|
+
}
|
|
422
|
+
function Q(e) {
|
|
423
|
+
if (typeof e == "boolean") return e ? "" : void 0;
|
|
424
|
+
if (typeof e != "function" && !(typeof e == "object" && e !== null))
|
|
425
|
+
return e;
|
|
426
|
+
}
|
|
427
|
+
function Tt({
|
|
428
|
+
react: e,
|
|
429
|
+
tagName: n,
|
|
430
|
+
elementClass: t,
|
|
431
|
+
events: i,
|
|
432
|
+
displayName: s,
|
|
433
|
+
defaultProps: u,
|
|
434
|
+
toAttributeName: d = et,
|
|
435
|
+
toAttributeValue: g = Q
|
|
436
|
+
}) {
|
|
437
|
+
const b = Number.parseInt(e.version) >= 19, I = e.forwardRef((B, o) => {
|
|
438
|
+
var f, p;
|
|
439
|
+
const v = e.useRef(null), k = e.useRef(/* @__PURE__ */ new Map()), O = {}, U = {}, E = {}, H = {};
|
|
440
|
+
for (const [r, a] of Object.entries(B)) {
|
|
441
|
+
if (wt.has(r)) {
|
|
442
|
+
E[r] = a;
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
445
|
+
const h = d(_t[r] ?? r);
|
|
446
|
+
if (t.prototype && r in t.prototype && !(r in (((f = globalThis.HTMLElement) == null ? void 0 : f.prototype) ?? {})) && !((p = t.observedAttributes) != null && p.some((A) => A === h))) {
|
|
447
|
+
H[r] = a;
|
|
448
|
+
continue;
|
|
449
|
+
}
|
|
450
|
+
if (r.startsWith("on")) {
|
|
451
|
+
O[r] = a;
|
|
452
|
+
continue;
|
|
453
|
+
}
|
|
454
|
+
const w = g(a);
|
|
455
|
+
if (h && w != null && (U[h] = String(w), b || (E[h] = w)), h && b) {
|
|
456
|
+
const A = Q(a);
|
|
457
|
+
w !== A ? E[h] = w : E[h] = a;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (typeof window < "u") {
|
|
461
|
+
for (const r in O) {
|
|
462
|
+
const a = O[r], h = r.endsWith("Capture"), w = ((i == null ? void 0 : i[r]) ?? r.slice(2).toLowerCase()).slice(
|
|
463
|
+
0,
|
|
464
|
+
h ? -7 : void 0
|
|
465
|
+
);
|
|
466
|
+
e.useLayoutEffect(() => {
|
|
467
|
+
const A = v == null ? void 0 : v.current;
|
|
468
|
+
if (!(!A || typeof a != "function"))
|
|
469
|
+
return A.addEventListener(w, a, h), () => {
|
|
470
|
+
A.removeEventListener(w, a, h);
|
|
471
|
+
};
|
|
472
|
+
}, [v == null ? void 0 : v.current, a]);
|
|
473
|
+
}
|
|
474
|
+
e.useLayoutEffect(() => {
|
|
475
|
+
if (v.current === null) return;
|
|
476
|
+
const r = /* @__PURE__ */ new Map();
|
|
477
|
+
for (const a in H)
|
|
478
|
+
X(v.current, a, H[a]), k.current.delete(a), r.set(a, H[a]);
|
|
479
|
+
for (const [a, h] of k.current)
|
|
480
|
+
X(v.current, a, void 0);
|
|
481
|
+
k.current = r;
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
if (typeof window > "u" && (t != null && t.getTemplateHTML) && (t != null && t.shadowRootOptions)) {
|
|
485
|
+
const { mode: r, delegatesFocus: a } = t.shadowRootOptions, h = e.createElement("template", {
|
|
486
|
+
shadowrootmode: r,
|
|
487
|
+
shadowrootdelegatesfocus: a,
|
|
488
|
+
dangerouslySetInnerHTML: {
|
|
489
|
+
__html: t.getTemplateHTML(U, B)
|
|
490
|
+
},
|
|
491
|
+
key: "ce-la-react-ssr-template-shadow-root"
|
|
492
|
+
});
|
|
493
|
+
E.children = [h, E.children];
|
|
494
|
+
}
|
|
495
|
+
return e.createElement(n, {
|
|
496
|
+
...u,
|
|
497
|
+
...E,
|
|
498
|
+
ref: e.useCallback(
|
|
499
|
+
(r) => {
|
|
500
|
+
v.current = r, typeof o == "function" ? o(r) : o !== null && (o.current = r);
|
|
501
|
+
},
|
|
502
|
+
[o]
|
|
503
|
+
)
|
|
504
|
+
}, E.children);
|
|
505
|
+
});
|
|
506
|
+
return I.displayName = s ?? t.name, I;
|
|
507
|
+
}
|
|
508
|
+
function X(e, n, t) {
|
|
509
|
+
var i;
|
|
510
|
+
e[n] = t, t == null && n in (((i = globalThis.HTMLElement) == null ? void 0 : i.prototype) ?? {}) && e.removeAttribute(n);
|
|
511
|
+
}
|
|
512
|
+
var Pt = Tt({
|
|
513
|
+
react: st,
|
|
514
|
+
tagName: "youtube-video",
|
|
515
|
+
elementClass: Et,
|
|
516
|
+
toAttributeName(e) {
|
|
517
|
+
return e === "muted" ? "" : e === "defaultMuted" ? "muted" : et(e);
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
/*! Bundled license information:
|
|
521
|
+
|
|
522
|
+
ce-la-react/dist/ce-la-react.js:
|
|
523
|
+
(**
|
|
524
|
+
* @license
|
|
525
|
+
* Copyright 2018 Google LLC
|
|
526
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
527
|
+
*
|
|
528
|
+
* Modified version of `@lit/react` for vanilla custom elements with support for SSR.
|
|
529
|
+
*)
|
|
530
|
+
*/
|
|
531
|
+
export {
|
|
532
|
+
Pt as default
|
|
533
|
+
};
|
|
534
|
+
//# sourceMappingURL=react-RiBbsUDd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-RiBbsUDd.js","sources":["../../../node_modules/youtube-video-element/dist/youtube-video-element.js","../../../node_modules/youtube-video-element/dist/react.js"],"sourcesContent":["import { MediaPlayedRangesMixin } from \"media-played-ranges-mixin\";\nconst EMBED_BASE = \"https://www.youtube.com/embed\";\nconst EMBED_BASE_NOCOOKIE = \"https://www.youtube-nocookie.com/embed\";\nconst API_URL = \"https://www.youtube.com/iframe_api\";\nconst API_GLOBAL = \"YT\";\nconst API_GLOBAL_READY = \"onYouTubeIframeAPIReady\";\nconst VIDEO_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})/;\nconst PLAYLIST_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/.*?[?&]list=)([\\w_-]+)/;\nfunction parseStartTime(url) {\n if (!url) return;\n const tMatch = url.match(/[?&]t=([\\dms]+)/i);\n if (!tMatch) return;\n const tValue = tMatch[1].toLowerCase();\n let totalSeconds = 0;\n let hasValue = false;\n const minutesMatch = tValue.match(/(\\d+)m/);\n if (minutesMatch) {\n totalSeconds += parseInt(minutesMatch[1], 10) * 60;\n hasValue = true;\n }\n const secondsMatch = tValue.match(/(\\d+)s?$/);\n if (secondsMatch) {\n totalSeconds += parseInt(secondsMatch[1], 10);\n hasValue = true;\n }\n return hasValue ? totalSeconds : void 0;\n}\nfunction getTemplateHTML(attrs, props = {}) {\n var _a;\n const iframeAttrs = {\n src: serializeIframeUrl(attrs, props),\n frameborder: 0,\n width: \"100%\",\n height: \"100%\",\n allow: \"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n };\n if ((_a = props.config) == null ? void 0 : _a.referrerpolicy) {\n iframeAttrs.referrerpolicy = props.config.referrerpolicy;\n }\n if (props.config) {\n iframeAttrs[\"data-config\"] = JSON.stringify(props.config);\n }\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-block;\n line-height: 0;\n position: relative;\n min-width: 300px;\n min-height: 150px;\n }\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n }\n </style>\n <iframe${serializeAttributes(iframeAttrs)}></iframe>\n `\n );\n}\nfunction serializeIframeUrl(attrs, props) {\n if (!attrs.src) return;\n const embedBase = attrs.src.includes(\"-nocookie\") ? EMBED_BASE_NOCOOKIE : EMBED_BASE;\n const params = {\n // ?controls=true is enabled by default in the iframe\n controls: attrs.controls === \"\" ? null : 0,\n autoplay: attrs.autoplay,\n loop: attrs.loop,\n mute: attrs.muted,\n playsinline: attrs.playsinline,\n preload: attrs.preload ?? \"metadata\",\n // https://developers.google.com/youtube/player_parameters#Parameters\n // origin: globalThis.location?.origin,\n enablejsapi: 1,\n cc_load_policy: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1,\n start: parseStartTime(attrs.src),\n ...props.config\n };\n if (VIDEO_MATCH_SRC.test(attrs.src)) {\n const matches2 = attrs.src.match(VIDEO_MATCH_SRC);\n const srcId = matches2 && matches2[1];\n return `${embedBase}/${srcId}?${serialize(params)}`;\n }\n const matches = attrs.src.match(PLAYLIST_MATCH_SRC);\n const playlistId = matches && matches[1];\n const extendedParams = {\n listType: \"playlist\",\n list: playlistId,\n ...params\n };\n return `${embedBase}?${serialize(extendedParams)}`;\n}\nclass YoutubeVideoElement extends MediaPlayedRangesMixin(globalThis.HTMLElement ?? class {\n}) {\n static getTemplateHTML = getTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static observedAttributes = [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\"\n ];\n loadComplete = new PublicPromise();\n #loadRequested;\n #hasLoaded;\n #readyState = 0;\n #seeking = false;\n #seekComplete;\n isLoaded = false;\n #error = null;\n #config = null;\n #textTracksVideo = null;\n #initialVolume = 1;\n constructor() {\n super();\n this.#upgradeProperty(\"config\");\n }\n get config() {\n return this.#config;\n }\n set config(value) {\n this.#config = value;\n }\n async load() {\n if (this.#loadRequested) return;\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n }\n const isFirstLoad = !this.#hasLoaded;\n if (this.#hasLoaded) {\n this.loadComplete = new PublicPromise();\n this.isLoaded = false;\n }\n this.#hasLoaded = true;\n await (this.#loadRequested = Promise.resolve());\n this.#loadRequested = null;\n this.#readyState = 0;\n this.dispatchEvent(new Event(\"emptied\"));\n let oldApi = this.api;\n this.api = null;\n if (!this.src) {\n oldApi == null ? void 0 : oldApi.destroy();\n return;\n }\n this.#textTracksVideo = document.createElement(\"video\");\n this.textTracks = this.#textTracksVideo.textTracks;\n this.textTracks.addEventListener(\"change\", () => {\n var _a;\n const active = Array.from(this.textTracks).find((t) => t.mode === \"showing\");\n (_a = this.api) == null ? void 0 : _a.setOption(\"captions\", \"track\", active ? { languageCode: active.language } : {});\n });\n this.dispatchEvent(new Event(\"loadstart\"));\n let iframe = this.shadowRoot.querySelector(\"iframe\");\n let attrs = namedNodeMapToObject(this.attributes);\n if (isFirstLoad && iframe) {\n this.#config = JSON.parse(iframe.getAttribute(\"data-config\") || \"{}\");\n }\n if (!(iframe == null ? void 0 : iframe.src) || iframe.src !== serializeIframeUrl(attrs, this)) {\n this.shadowRoot.innerHTML = getTemplateHTML(attrs, this);\n iframe = this.shadowRoot.querySelector(\"iframe\");\n }\n const YT = await loadScript(API_URL, API_GLOBAL, API_GLOBAL_READY);\n this.api = new YT.Player(iframe, {\n events: {\n onReady: () => {\n var _a;\n this.#readyState = 1;\n this.dispatchEvent(new Event(\"loadedmetadata\"));\n this.dispatchEvent(new Event(\"durationchange\"));\n if (this.#initialVolume !== 1) {\n (_a = this.api) == null ? void 0 : _a.setVolume(this.#initialVolume * 100);\n }\n this.dispatchEvent(new Event(\"volumechange\"));\n this.dispatchEvent(new Event(\"loadcomplete\"));\n this.isLoaded = true;\n this.loadComplete.resolve();\n },\n onError: (error) => {\n console.error(error);\n this.#error = {\n code: error.data,\n message: `YouTube iframe player error #${error.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`\n };\n this.dispatchEvent(new Event(\"error\"));\n }\n }\n });\n let playFired = false;\n this.api.addEventListener(\"onStateChange\", (event) => {\n var _a;\n const state = event.data;\n if (state === YT.PlayerState.PLAYING || state === YT.PlayerState.BUFFERING) {\n if (!playFired) {\n playFired = true;\n this.dispatchEvent(new Event(\"play\"));\n }\n const captionList = this.api.getOption(\"captions\", \"tracklist\") || [];\n captionList.forEach((t) => {\n if (![...this.textTracks].some((tt) => tt.language === t.languageCode)) {\n this.#textTracksVideo.addTextTrack(\"subtitles\", t.displayName, t.languageCode);\n }\n this.textTracks = this.#textTracksVideo.textTracks;\n });\n this.dispatchEvent(new Event(\"loadstart\"));\n }\n if (state === YT.PlayerState.PLAYING) {\n if (this.seeking) {\n this.#seeking = false;\n (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n this.dispatchEvent(new Event(\"seeked\"));\n }\n this.#readyState = 3;\n this.dispatchEvent(new Event(\"playing\"));\n } else if (state === YT.PlayerState.PAUSED) {\n const diff = Math.abs(this.currentTime - lastCurrentTime);\n if (!this.seeking && diff > 0.1) {\n this.#seeking = true;\n this.dispatchEvent(new Event(\"seeking\"));\n }\n playFired = false;\n this.dispatchEvent(new Event(\"pause\"));\n }\n if (state === YT.PlayerState.ENDED) {\n playFired = false;\n this.dispatchEvent(new Event(\"pause\"));\n this.dispatchEvent(new Event(\"ended\"));\n if (this.loop) {\n this.play();\n }\n }\n });\n this.api.addEventListener(\"onPlaybackRateChange\", () => {\n this.dispatchEvent(new Event(\"ratechange\"));\n });\n this.api.addEventListener(\"onVolumeChange\", () => {\n var _a;\n const apiVolume = ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n this.#initialVolume = apiVolume;\n this.dispatchEvent(new Event(\"volumechange\"));\n });\n this.api.addEventListener(\"onVideoProgress\", () => {\n this.dispatchEvent(new Event(\"timeupdate\"));\n });\n await this.loadComplete;\n let lastCurrentTime = 0;\n setInterval(() => {\n var _a;\n const diff = Math.abs(this.currentTime - lastCurrentTime);\n const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n if (this.seeking && bufferedEnd > 0.1) {\n this.#seeking = false;\n (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n this.dispatchEvent(new Event(\"seeked\"));\n } else if (!this.seeking && diff > 0.1) {\n this.#seeking = true;\n this.dispatchEvent(new Event(\"seeking\"));\n }\n lastCurrentTime = this.currentTime;\n }, 50);\n let lastBufferedEnd;\n const progressInterval = setInterval(() => {\n const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n if (bufferedEnd >= this.duration) {\n clearInterval(progressInterval);\n this.#readyState = 4;\n }\n if (lastBufferedEnd != bufferedEnd) {\n lastBufferedEnd = bufferedEnd;\n this.dispatchEvent(new Event(\"progress\"));\n }\n }, 100);\n }\n async attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (attrName) {\n case \"src\":\n case \"autoplay\":\n case \"controls\":\n case \"loop\":\n case \"playsinline\": {\n this.load();\n }\n }\n }\n async play() {\n var _a;\n this.#seekComplete = null;\n await this.loadComplete;\n (_a = this.api) == null ? void 0 : _a.playVideo();\n return createPlayPromise(this);\n }\n async pause() {\n var _a;\n await this.loadComplete;\n return (_a = this.api) == null ? void 0 : _a.pauseVideo();\n }\n get seeking() {\n return this.#seeking;\n }\n get readyState() {\n return this.#readyState;\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(val) {\n if (this.src == val) return;\n this.setAttribute(\"src\", val);\n }\n get error() {\n return this.#error;\n }\n /* onStateChange\n -1 (unstarted)\n 0 (ended)\n 1 (playing)\n 2 (paused)\n 3 (buffering)\n 5 (video cued).\n */\n get paused() {\n var _a, _b;\n if (!this.isLoaded) return !this.autoplay;\n return [-1, 0, 2, 5].includes((_b = (_a = this.api) == null ? void 0 : _a.getPlayerState) == null ? void 0 : _b.call(_a));\n }\n get duration() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getDuration) == null ? void 0 : _b.call(_a)) ?? NaN;\n }\n get autoplay() {\n return this.hasAttribute(\"autoplay\");\n }\n set autoplay(val) {\n if (this.autoplay == val) return;\n this.toggleAttribute(\"autoplay\", Boolean(val));\n }\n get buffered() {\n var _a, _b;\n if (!this.isLoaded) return createTimeRanges();\n const progress = ((_a = this.api) == null ? void 0 : _a.getVideoLoadedFraction()) * ((_b = this.api) == null ? void 0 : _b.getDuration());\n if (progress > 0) {\n return createTimeRanges(0, progress);\n }\n return createTimeRanges();\n }\n get controls() {\n return this.hasAttribute(\"controls\");\n }\n set controls(val) {\n if (this.controls == val) return;\n this.toggleAttribute(\"controls\", Boolean(val));\n }\n get currentTime() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getCurrentTime) == null ? void 0 : _b.call(_a)) ?? 0;\n }\n set currentTime(val) {\n if (this.currentTime == val) return;\n this.#seekComplete = new PublicPromise();\n this.loadComplete.then(() => {\n var _a, _b;\n (_a = this.api) == null ? void 0 : _a.seekTo(val, true);\n if (this.paused) {\n (_b = this.#seekComplete) == null ? void 0 : _b.then(() => {\n var _a2;\n if (!this.#seekComplete) return;\n (_a2 = this.api) == null ? void 0 : _a2.pauseVideo();\n });\n }\n });\n }\n set defaultMuted(val) {\n if (this.defaultMuted == val) return;\n this.toggleAttribute(\"muted\", Boolean(val));\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n get loop() {\n return this.hasAttribute(\"loop\");\n }\n set loop(val) {\n if (this.loop == val) return;\n this.toggleAttribute(\"loop\", Boolean(val));\n }\n set muted(val) {\n if (this.muted == val) return;\n this.loadComplete.then(() => {\n var _a, _b;\n val ? (_a = this.api) == null ? void 0 : _a.mute() : (_b = this.api) == null ? void 0 : _b.unMute();\n });\n }\n get muted() {\n var _a, _b;\n if (!this.isLoaded) return this.defaultMuted;\n return (_b = (_a = this.api) == null ? void 0 : _a.isMuted) == null ? void 0 : _b.call(_a);\n }\n get playbackRate() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getPlaybackRate) == null ? void 0 : _b.call(_a)) ?? 1;\n }\n set playbackRate(val) {\n if (this.playbackRate == val) return;\n this.loadComplete.then(() => {\n var _a;\n (_a = this.api) == null ? void 0 : _a.setPlaybackRate(val);\n });\n }\n get playsInline() {\n return this.hasAttribute(\"playsinline\");\n }\n set playsInline(val) {\n if (this.playsInline == val) return;\n this.toggleAttribute(\"playsinline\", Boolean(val));\n }\n get poster() {\n return this.getAttribute(\"poster\");\n }\n set poster(val) {\n if (this.poster == val) return;\n this.setAttribute(\"poster\", `${val}`);\n }\n set volume(val) {\n if (this.volume == val) return;\n this.#initialVolume = val;\n this.loadComplete.then(() => {\n var _a;\n (_a = this.api) == null ? void 0 : _a.setVolume(val * 100);\n });\n }\n get volume() {\n var _a;\n if (!this.isLoaded) {\n return this.#initialVolume;\n }\n return ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n }\n // This is a pattern to update property values that are set before\n // the custom element is upgraded.\n // https://web.dev/custom-elements-best-practices/#make-properties-lazy\n #upgradeProperty(prop) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n const value = this[prop];\n delete this[prop];\n this[prop] = value;\n }\n }\n}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n const value = attrs[key];\n if (value === \"\") html += ` ${escapeHtml(key)}`;\n else html += ` ${escapeHtml(key)}=\"${escapeHtml(`${value}`)}\"`;\n }\n return html;\n}\nfunction escapeHtml(str) {\n return str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\").replace(/`/g, \"`\");\n}\nfunction serialize(props) {\n return String(new URLSearchParams(boolToBinary(props)));\n}\nfunction boolToBinary(props) {\n let p = {};\n for (let key in props) {\n let val = props[key];\n if (val === true || val === \"\") p[key] = 1;\n else if (val === false) p[key] = 0;\n else if (val != null) p[key] = val;\n }\n return p;\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nconst loadScriptCache = {};\nasync function loadScript(src, globalName, readyFnName) {\n if (loadScriptCache[src]) return loadScriptCache[src];\n if (globalName && self[globalName]) {\n await delay(0);\n return self[globalName];\n }\n return loadScriptCache[src] = new Promise(function(resolve, reject) {\n const script = document.createElement(\"script\");\n script.src = src;\n const ready = () => resolve(self[globalName]);\n if (readyFnName) self[readyFnName] = ready;\n script.onload = () => !readyFnName && ready();\n script.onerror = reject;\n document.head.append(script);\n });\n}\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nfunction promisify(fn) {\n return (...args) => new Promise((resolve) => {\n fn(...args, (...res) => {\n if (res.length > 1) resolve(res);\n else resolve(res[0]);\n });\n });\n}\nfunction createPlayPromise(player) {\n return promisify((event, cb) => {\n let fn;\n player.addEventListener(\n event,\n fn = () => {\n player.removeEventListener(event, fn);\n cb();\n }\n );\n })(\"playing\");\n}\nclass PublicPromise extends Promise {\n constructor(executor = () => {\n }) {\n let res, rej;\n super((resolve, reject) => {\n executor(resolve, reject);\n res = resolve;\n rej = reject;\n });\n this.resolve = res;\n this.reject = rej;\n }\n}\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start == null || end == null || start === 0 && end === 0) {\n return createTimeRangesObj([[0, 0]]);\n }\n return createTimeRangesObj([[start, end]]);\n}\nfunction createTimeRangesObj(ranges) {\n Object.defineProperties(ranges, {\n start: {\n value: (i) => ranges[i][0]\n },\n end: {\n value: (i) => ranges[i][1]\n }\n });\n return ranges;\n}\nif (globalThis.customElements && !globalThis.customElements.get(\"youtube-video\")) {\n globalThis.customElements.define(\"youtube-video\", YoutubeVideoElement);\n}\nvar youtube_video_element_default = YoutubeVideoElement;\nexport {\n youtube_video_element_default as default\n};\n","\"use client\";\n\n// dist/react.ts\nimport React from \"react\";\nimport CustomMediaElement from \"./youtube-video-element.js\";\n\n// ../../node_modules/ce-la-react/dist/ce-la-react.js\nvar reservedReactProps = /* @__PURE__ */ new Set([\n \"style\",\n \"children\",\n \"ref\",\n \"key\",\n \"suppressContentEditableWarning\",\n \"suppressHydrationWarning\",\n \"dangerouslySetInnerHTML\"\n]);\nvar reactPropToAttrNameMap = {\n className: \"class\",\n htmlFor: \"for\"\n};\nfunction defaultToAttributeName(propName) {\n return propName.toLowerCase();\n}\nfunction defaultToAttributeValue(propValue) {\n if (typeof propValue === \"boolean\") return propValue ? \"\" : void 0;\n if (typeof propValue === \"function\") return void 0;\n if (typeof propValue === \"object\" && propValue !== null) return void 0;\n return propValue;\n}\nfunction createComponent({\n react: React2,\n tagName,\n elementClass,\n events,\n displayName,\n defaultProps,\n toAttributeName = defaultToAttributeName,\n toAttributeValue = defaultToAttributeValue\n}) {\n const IS_REACT_19_OR_NEWER = Number.parseInt(React2.version) >= 19;\n const ReactComponent = React2.forwardRef((props, ref) => {\n var _a, _b;\n const elementRef = React2.useRef(null);\n const prevElemPropsRef = React2.useRef(/* @__PURE__ */ new Map());\n const eventProps = {};\n const attrs = {};\n const reactProps = {};\n const elementProps = {};\n for (const [k, v] of Object.entries(props)) {\n if (reservedReactProps.has(k)) {\n reactProps[k] = v;\n continue;\n }\n const attrName = toAttributeName(reactPropToAttrNameMap[k] ?? k);\n if (elementClass.prototype && k in elementClass.prototype && !(k in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) && !((_b = elementClass.observedAttributes) == null ? void 0 : _b.some((attr) => attr === attrName))) {\n elementProps[k] = v;\n continue;\n }\n if (k.startsWith(\"on\")) {\n eventProps[k] = v;\n continue;\n }\n const attrValue = toAttributeValue(v);\n if (attrName && attrValue != null) {\n attrs[attrName] = String(attrValue);\n if (!IS_REACT_19_OR_NEWER) {\n reactProps[attrName] = attrValue;\n }\n }\n if (attrName && IS_REACT_19_OR_NEWER) {\n const attrValueFromDefault = defaultToAttributeValue(v);\n if (attrValue !== attrValueFromDefault) {\n reactProps[attrName] = attrValue;\n } else {\n reactProps[attrName] = v;\n }\n }\n }\n if (typeof window !== \"undefined\") {\n for (const propName in eventProps) {\n const callback = eventProps[propName];\n const useCapture = propName.endsWith(\"Capture\");\n const eventName = ((events == null ? void 0 : events[propName]) ?? propName.slice(2).toLowerCase()).slice(\n 0,\n useCapture ? -7 : void 0\n );\n React2.useLayoutEffect(() => {\n const eventTarget = elementRef == null ? void 0 : elementRef.current;\n if (!eventTarget || typeof callback !== \"function\") return;\n eventTarget.addEventListener(eventName, callback, useCapture);\n return () => {\n eventTarget.removeEventListener(eventName, callback, useCapture);\n };\n }, [elementRef == null ? void 0 : elementRef.current, callback]);\n }\n React2.useLayoutEffect(() => {\n if (elementRef.current === null) return;\n const newElemProps = /* @__PURE__ */ new Map();\n for (const key in elementProps) {\n setProperty(elementRef.current, key, elementProps[key]);\n prevElemPropsRef.current.delete(key);\n newElemProps.set(key, elementProps[key]);\n }\n for (const [key, _value] of prevElemPropsRef.current) {\n setProperty(elementRef.current, key, void 0);\n }\n prevElemPropsRef.current = newElemProps;\n });\n }\n if (typeof window === \"undefined\" && (elementClass == null ? void 0 : elementClass.getTemplateHTML) && (elementClass == null ? void 0 : elementClass.shadowRootOptions)) {\n const { mode, delegatesFocus } = elementClass.shadowRootOptions;\n const templateShadowRoot = React2.createElement(\"template\", {\n shadowrootmode: mode,\n shadowrootdelegatesfocus: delegatesFocus,\n dangerouslySetInnerHTML: {\n __html: elementClass.getTemplateHTML(attrs, props)\n },\n key: \"ce-la-react-ssr-template-shadow-root\"\n });\n reactProps.children = [templateShadowRoot, reactProps.children];\n }\n return React2.createElement(tagName, {\n ...defaultProps,\n ...reactProps,\n ref: React2.useCallback(\n (node) => {\n elementRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n },\n [ref]\n )\n }, reactProps.children);\n });\n ReactComponent.displayName = displayName ?? elementClass.name;\n return ReactComponent;\n}\nfunction setProperty(node, name, value) {\n var _a;\n node[name] = value;\n if (value == null && name in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) {\n node.removeAttribute(name);\n }\n}\n\n// dist/react.ts\nvar react_default = createComponent({\n react: React,\n tagName: \"youtube-video\",\n elementClass: CustomMediaElement,\n toAttributeName(propName) {\n if (propName === \"muted\") return \"\";\n if (propName === \"defaultMuted\") return \"muted\";\n return defaultToAttributeName(propName);\n }\n});\nexport {\n react_default as default\n};\n/*! Bundled license information:\n\nce-la-react/dist/ce-la-react.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Modified version of `@lit/react` for vanilla custom elements with support for SSR.\n *)\n*/\n"],"names":["EMBED_BASE","EMBED_BASE_NOCOOKIE","API_URL","API_GLOBAL","API_GLOBAL_READY","VIDEO_MATCH_SRC","PLAYLIST_MATCH_SRC","parseStartTime","url","tMatch","tValue","totalSeconds","hasValue","minutesMatch","secondsMatch","getTemplateHTML","attrs","props","_a","iframeAttrs","serializeIframeUrl","serializeAttributes","embedBase","params","matches2","srcId","serialize","matches","extendedParams","YoutubeVideoElement","MediaPlayedRangesMixin","__privateAdd","_YoutubeVideoElement_instances","__publicField","PublicPromise","_loadRequested","_hasLoaded","_readyState","_seeking","_seekComplete","_error","_config","_textTracksVideo","_initialVolume","__privateMethod","upgradeProperty_fn","__privateGet","value","__privateSet","isFirstLoad","oldApi","active","t","iframe","namedNodeMapToObject","YT","loadScript","error","playFired","event","state","tt","diff","lastCurrentTime","apiVolume","bufferedEnd","lastBufferedEnd","progressInterval","attrName","oldValue","newValue","createPlayPromise","val","_b","createTimeRanges","progress","_a2","prop","html","key","escapeHtml","str","boolToBinary","p","namedNodeMap","obj","attr","loadScriptCache","src","globalName","readyFnName","delay","resolve","reject","script","ready","ms","promisify","fn","args","res","player","cb","executor","rej","start","end","createTimeRangesObj","ranges","i","youtube_video_element_default","reservedReactProps","reactPropToAttrNameMap","defaultToAttributeName","propName","defaultToAttributeValue","propValue","createComponent","React2","tagName","elementClass","events","displayName","defaultProps","toAttributeName","toAttributeValue","IS_REACT_19_OR_NEWER","ReactComponent","ref","elementRef","prevElemPropsRef","eventProps","reactProps","elementProps","k","v","attrValue","attrValueFromDefault","callback","useCapture","eventName","eventTarget","newElemProps","setProperty","_value","mode","delegatesFocus","templateShadowRoot","node","name","react_default","React","CustomMediaElement"],"mappings":"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","x_google_ignoreList":[0,1]}
|