@sapia-ai/chatbot-v3 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/EmbeddedVideoPlayer-SaMMfDIW.js +1277 -0
  2. package/dist/EmbeddedVideoPlayer-SaMMfDIW.js.map +1 -0
  3. package/dist/Preview-Db-hgkTh.js +83 -0
  4. package/dist/Preview-Db-hgkTh.js.map +1 -0
  5. package/dist/api/client.d.ts +60 -0
  6. package/dist/api/config.d.ts +18 -0
  7. package/dist/api/constants.d.ts +5 -0
  8. package/dist/api/index.d.ts +5 -0
  9. package/dist/api/sse.d.ts +12 -0
  10. package/dist/api/types/branding.d.ts +17 -0
  11. package/dist/api/types/messages.d.ts +148 -0
  12. package/dist/api/types/responses.d.ts +106 -0
  13. package/dist/api.js +2 -0
  14. package/dist/classPrivateFieldSet2-DtQPURVD.js +32 -0
  15. package/dist/core/bubbles/convert.d.ts +18 -0
  16. package/dist/core/bubbles/types.d.ts +55 -0
  17. package/dist/core/constants.d.ts +14 -0
  18. package/dist/core/events.d.ts +44 -0
  19. package/dist/core/i18n/fallback.d.ts +2 -0
  20. package/dist/core/i18n/languages.d.ts +11 -0
  21. package/dist/core/i18n/translator.d.ts +13 -0
  22. package/dist/core/interview.d.ts +207 -0
  23. package/dist/core/media/mimeTypes.d.ts +10 -0
  24. package/dist/core/media/recorder.d.ts +61 -0
  25. package/dist/core/persistence.d.ts +4 -0
  26. package/dist/core/store.d.ts +49 -0
  27. package/dist/core/theme/branding.d.ts +6 -0
  28. package/dist/core/theme/cssVariables.d.ts +16 -0
  29. package/dist/core/theme/types.d.ts +11 -0
  30. package/dist/core/validation/phoneCountries.d.ts +21 -0
  31. package/dist/core/validation/pii.d.ts +30 -0
  32. package/dist/dash.all.min-DZ1yEcJk.js +27302 -0
  33. package/dist/dash.all.min-DZ1yEcJk.js.map +1 -0
  34. package/dist/defineProperty-DiFpLzd2.js +39 -0
  35. package/dist/dist-BSi28_cP.js +702 -0
  36. package/dist/dist-BSi28_cP.js.map +1 -0
  37. package/dist/dist-DGBYKC8c.js +14327 -0
  38. package/dist/dist-DGBYKC8c.js.map +1 -0
  39. package/dist/dist-FvHBWiRa.js +76 -0
  40. package/dist/dist-FvHBWiRa.js.map +1 -0
  41. package/dist/embed/compat.d.ts +82 -0
  42. package/dist/embed/constants.d.ts +2 -0
  43. package/dist/embed/createChatbot.d.ts +22 -0
  44. package/dist/fix-webm-duration-BW9Fbdzt.js +1057 -0
  45. package/dist/fix-webm-duration-BW9Fbdzt.js.map +1 -0
  46. package/dist/hls-mBncGwsE.js +18657 -0
  47. package/dist/hls-mBncGwsE.js.map +1 -0
  48. package/dist/index.d.ts +7 -0
  49. package/dist/index.js +4428 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/max-Btet1snX.js +12212 -0
  52. package/dist/max-Btet1snX.js.map +1 -0
  53. package/dist/messages-C4jqrtSG.js +187 -0
  54. package/dist/messages-C4jqrtSG.js.map +1 -0
  55. package/dist/react/AnswerInput.d.ts +21 -0
  56. package/dist/react/SapiaChatbot.d.ts +23 -0
  57. package/dist/react/bubbleViewModel.d.ts +50 -0
  58. package/dist/react/strings.d.ts +98 -0
  59. package/dist/react/useBeforeUnload.d.ts +5 -0
  60. package/dist/react/useVideoRecorder.d.ts +24 -0
  61. package/dist/react-BGJ7Szvq.js +216 -0
  62. package/dist/react-BGJ7Szvq.js.map +1 -0
  63. package/dist/react-BMxM8TWJ.js +192 -0
  64. package/dist/react-BMxM8TWJ.js.map +1 -0
  65. package/dist/react-BVzcquey.js +457 -0
  66. package/dist/react-BVzcquey.js.map +1 -0
  67. package/dist/react-BrCGR7Ca.js +2208 -0
  68. package/dist/react-BrCGR7Ca.js.map +1 -0
  69. package/dist/react-Bujo1aK5.js +334 -0
  70. package/dist/react-Bujo1aK5.js.map +1 -0
  71. package/dist/react-CRTg4gz8.js +367 -0
  72. package/dist/react-CRTg4gz8.js.map +1 -0
  73. package/dist/react-GXf8sbzf.js +311 -0
  74. package/dist/react-GXf8sbzf.js.map +1 -0
  75. package/dist/react-lp7yfM94.js +371 -0
  76. package/dist/react-lp7yfM94.js.map +1 -0
  77. package/dist/sapia-chatbot.css +3 -0
  78. package/dist/sapia.d.ts +4 -0
  79. package/dist/ui/chat/ChatBubble/ChatBubble.d.ts +47 -0
  80. package/dist/ui/chat/ChatLog/ChatLog.d.ts +33 -0
  81. package/dist/ui/chat/TypingIndicator/TypingIndicator.d.ts +17 -0
  82. package/dist/ui/chat/types.d.ts +71 -0
  83. package/dist/ui/constants.d.ts +2 -0
  84. package/dist/ui/inputs/DropdownInput/DropdownInput.d.ts +18 -0
  85. package/dist/ui/inputs/OptionList/OptionList.d.ts +18 -0
  86. package/dist/ui/inputs/PhoneAnswerInput/PhoneAnswerInput.d.ts +19 -0
  87. package/dist/ui/inputs/SliderInput/SliderInput.d.ts +19 -0
  88. package/dist/ui/inputs/TextAnswerInput/TextAnswerInput.d.ts +32 -0
  89. package/dist/ui/inputs/VideoRecorder/VideoRecorder.d.ts +54 -0
  90. package/dist/ui/media/EmbeddedVideo/EmbeddedVideo.d.ts +11 -0
  91. package/dist/ui/media/EmbeddedVideo/EmbeddedVideoPlayer.d.ts +16 -0
  92. package/dist/ui/media/EmbeddedVideo/VimeoPlayer.d.ts +20 -0
  93. package/dist/ui/media/UploadProgress/UploadProgress.d.ts +7 -0
  94. package/dist/ui/media/VideoPlayer/VideoPlayer.d.ts +13 -0
  95. package/dist/ui/primitives/Button/Button.d.ts +6 -0
  96. package/dist/ui/primitives/Dialog/Dialog.d.ts +16 -0
  97. package/dist/ui/richText.d.ts +6 -0
  98. package/dist/ui/shell/AccessVerificationForm/AccessVerificationForm.d.ts +21 -0
  99. package/dist/ui/shell/CopyLinkButton/CopyLinkButton.d.ts +11 -0
  100. package/dist/ui/shell/DoneScreen/DoneScreen.d.ts +15 -0
  101. package/dist/ui/shell/Header/Header.d.ts +13 -0
  102. package/dist/ui/shell/PreparingScreen/PreparingScreen.d.ts +9 -0
  103. package/dist/ui/shell/ProgressBar/ProgressBar.d.ts +9 -0
  104. package/dist/ui/shell/WelcomeScreen/WelcomeScreen.d.ts +22 -0
  105. package/dist/ui/shell/WidgetRoot/WidgetRoot.d.ts +12 -0
  106. package/dist-umd/sapia-chatbot.umd.js +3655 -0
  107. package/dist-umd/sapia-chatbot.umd.js.map +1 -0
  108. package/package.json +94 -0
@@ -0,0 +1,457 @@
1
+ import { a as e, i as t, n, r, t as i } from "./classPrivateFieldSet2-DtQPURVD.js";
2
+ import { t as a } from "./defineProperty-DiFpLzd2.js";
3
+ import { t as o } from "./dist-FvHBWiRa.js";
4
+ import s from "react";
5
+ //#region ../../node_modules/.pnpm/youtube-video-element@1.9.0/node_modules/youtube-video-element/dist/youtube-video-element.js
6
+ var c, l = "https://www.youtube.com/embed", u = "https://www.youtube-nocookie.com/embed", d = "https://www.youtube.com/iframe_api", f = "YT", p = "onYouTubeIframeAPIReady", m = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|shorts\/|live\/))((\w|-){11})/, h = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/.*?[?&]list=)([\w_-]+)/;
7
+ function g(e) {
8
+ if (!e) return;
9
+ let t = e.match(/[?&]t=([\dms]+)/i);
10
+ if (!t) return;
11
+ let n = t[1].toLowerCase(), r = 0, i = !1, a = n.match(/(\d+)m/);
12
+ a && (r += parseInt(a[1], 10) * 60, i = !0);
13
+ let o = n.match(/(\d+)s?$/);
14
+ return o && (r += parseInt(o[1], 10), i = !0), i ? r : void 0;
15
+ }
16
+ function _(e, t = {}) {
17
+ var n;
18
+ let r = {
19
+ src: v(e, t),
20
+ frameborder: 0,
21
+ width: "100%",
22
+ height: "100%",
23
+ allow: "accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
24
+ };
25
+ return (n = t.config) != null && n.referrerpolicy && (r.referrerpolicy = t.config.referrerpolicy), t.config && (r["data-config"] = JSON.stringify(t.config)), `
26
+ <style>
27
+ :host {
28
+ display: inline-block;
29
+ line-height: 0;
30
+ position: relative;
31
+ min-width: 300px;
32
+ min-height: 150px;
33
+ }
34
+ iframe {
35
+ position: absolute;
36
+ top: 0;
37
+ left: 0;
38
+ }
39
+ </style>
40
+ <iframe${j(r)}></iframe>
41
+ `;
42
+ }
43
+ function v(e, t) {
44
+ var n;
45
+ if (!e.src) return;
46
+ let r = e.src.includes("-nocookie") ? u : l, i = {
47
+ controls: e.controls === "" ? null : 0,
48
+ autoplay: e.autoplay,
49
+ loop: e.loop,
50
+ mute: e.muted,
51
+ playsinline: e.playsinline,
52
+ preload: (n = e.preload) == null ? "metadata" : n,
53
+ enablejsapi: 1,
54
+ cc_load_policy: 1,
55
+ showinfo: 0,
56
+ rel: 0,
57
+ iv_load_policy: 3,
58
+ modestbranding: 1,
59
+ start: g(e.src),
60
+ ...t.config
61
+ };
62
+ if (m.test(e.src)) {
63
+ let t = e.src.match(m);
64
+ return `${r}/${t && t[1]}?${N(i)}`;
65
+ }
66
+ let a = e.src.match(h);
67
+ return `${r}?${N({
68
+ listType: "playlist",
69
+ list: a && a[1],
70
+ ...i
71
+ })}`;
72
+ }
73
+ var y = /* @__PURE__ */ new WeakMap(), b = /* @__PURE__ */ new WeakMap(), x = /* @__PURE__ */ new WeakMap(), S = /* @__PURE__ */ new WeakMap(), C = /* @__PURE__ */ new WeakMap(), w = /* @__PURE__ */ new WeakMap(), T = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), D = /* @__PURE__ */ new WeakMap(), O = /* @__PURE__ */ new WeakSet(), k = class extends o((c = globalThis.HTMLElement) == null ? class {} : c) {
74
+ constructor() {
75
+ super(), e(this, O), a(this, "loadComplete", new V()), t(this, y, void 0), t(this, b, void 0), t(this, x, 0), t(this, S, !1), t(this, C, void 0), a(this, "isLoaded", !1), t(this, w, null), t(this, T, null), t(this, E, null), t(this, D, 1), r(O, this, A).call(this, "config");
76
+ }
77
+ get config() {
78
+ return n(T, this);
79
+ }
80
+ set config(e) {
81
+ i(T, this, e);
82
+ }
83
+ async load() {
84
+ if (n(y, this)) return;
85
+ this.shadowRoot || this.attachShadow({ mode: "open" });
86
+ let e = !n(b, this);
87
+ n(b, this) && (this.loadComplete = new V(), this.isLoaded = !1), i(b, this, !0), await i(y, this, Promise.resolve()), i(y, this, null), i(x, this, 0), this.dispatchEvent(new Event("emptied"));
88
+ let t = this.api;
89
+ if (this.api = null, !this.src) {
90
+ t == null || t.destroy();
91
+ return;
92
+ }
93
+ i(E, this, document.createElement("video")), this.textTracks = n(E, this).textTracks, this.textTracks.addEventListener("change", () => {
94
+ var e;
95
+ let t = Array.from(this.textTracks).find((e) => e.mode === "showing");
96
+ (e = this.api) == null || e.setOption("captions", "track", t ? { languageCode: t.language } : {});
97
+ }), this.dispatchEvent(new Event("loadstart"));
98
+ let r = this.shadowRoot.querySelector("iframe"), a = F(this.attributes);
99
+ e && r && i(T, this, JSON.parse(r.getAttribute("data-config") || "{}")), (!(r != null && r.src) || r.src !== v(a, this)) && (this.shadowRoot.innerHTML = _(a, this), r = this.shadowRoot.querySelector("iframe"));
100
+ let o = await L(d, f, p);
101
+ this.api = new o.Player(r, { events: {
102
+ onReady: () => {
103
+ var e;
104
+ i(x, this, 1), this.dispatchEvent(new Event("loadedmetadata")), this.dispatchEvent(new Event("durationchange")), n(D, this) !== 1 && ((e = this.api) == null || e.setVolume(n(D, this) * 100)), this.dispatchEvent(new Event("volumechange")), this.dispatchEvent(new Event("loadcomplete")), this.isLoaded = !0, this.loadComplete.resolve();
105
+ },
106
+ onError: (e) => {
107
+ console.error(e), i(w, this, {
108
+ code: e.data,
109
+ message: `YouTube iframe player error #${e.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`
110
+ }), this.dispatchEvent(new Event("error"));
111
+ }
112
+ } });
113
+ let s = !1;
114
+ this.api.addEventListener("onStateChange", (e) => {
115
+ var t;
116
+ let r = e.data;
117
+ if ((r === o.PlayerState.PLAYING || r === o.PlayerState.BUFFERING) && (s || (s = !0, this.dispatchEvent(new Event("play"))), (this.api.getOption("captions", "tracklist") || []).forEach((e) => {
118
+ [...this.textTracks].some((t) => t.language === e.languageCode) || n(E, this).addTextTrack("subtitles", e.displayName, e.languageCode), this.textTracks = n(E, this).textTracks;
119
+ }), this.dispatchEvent(new Event("loadstart"))), r === o.PlayerState.PLAYING) this.seeking && (i(S, this, !1), (t = n(C, this)) == null || t.resolve(), this.dispatchEvent(new Event("seeked"))), i(x, this, 3), this.dispatchEvent(new Event("playing"));
120
+ else if (r === o.PlayerState.PAUSED) {
121
+ let e = Math.abs(this.currentTime - c);
122
+ !this.seeking && e > .1 && (i(S, this, !0), this.dispatchEvent(new Event("seeking"))), s = !1, this.dispatchEvent(new Event("pause"));
123
+ }
124
+ r === o.PlayerState.ENDED && (s = !1, this.dispatchEvent(new Event("pause")), this.dispatchEvent(new Event("ended")), this.loop && this.play());
125
+ }), this.api.addEventListener("onPlaybackRateChange", () => {
126
+ this.dispatchEvent(new Event("ratechange"));
127
+ }), this.api.addEventListener("onVolumeChange", () => {
128
+ var e;
129
+ let t = ((e = this.api) == null ? void 0 : e.getVolume()) / 100;
130
+ i(D, this, t), this.dispatchEvent(new Event("volumechange"));
131
+ }), this.api.addEventListener("onVideoProgress", () => {
132
+ this.dispatchEvent(new Event("timeupdate"));
133
+ }), await this.loadComplete;
134
+ let c = 0;
135
+ setInterval(() => {
136
+ var e;
137
+ let t = Math.abs(this.currentTime - c), r = this.buffered.end(this.buffered.length - 1);
138
+ this.seeking && r > .1 ? (i(S, this, !1), (e = n(C, this)) == null || e.resolve(), this.dispatchEvent(new Event("seeked"))) : !this.seeking && t > .1 && (i(S, this, !0), this.dispatchEvent(new Event("seeking"))), c = this.currentTime;
139
+ }, 50);
140
+ let l, u = setInterval(() => {
141
+ let e = this.buffered.end(this.buffered.length - 1);
142
+ e >= this.duration && (clearInterval(u), i(x, this, 4)), l != e && (l = e, this.dispatchEvent(new Event("progress")));
143
+ }, 100);
144
+ }
145
+ async attributeChangedCallback(e, t, n) {
146
+ if (t !== n) switch (e) {
147
+ case "src":
148
+ case "autoplay":
149
+ case "controls":
150
+ case "loop":
151
+ case "playsinline": this.load();
152
+ }
153
+ }
154
+ async play() {
155
+ var e;
156
+ return i(C, this, null), await this.loadComplete, (e = this.api) == null || e.playVideo(), B(this);
157
+ }
158
+ async pause() {
159
+ var e;
160
+ return await this.loadComplete, (e = this.api) == null ? void 0 : e.pauseVideo();
161
+ }
162
+ get seeking() {
163
+ return n(S, this);
164
+ }
165
+ get readyState() {
166
+ return n(x, this);
167
+ }
168
+ get src() {
169
+ return this.getAttribute("src");
170
+ }
171
+ set src(e) {
172
+ this.src != e && this.setAttribute("src", e);
173
+ }
174
+ get error() {
175
+ return n(w, this);
176
+ }
177
+ get paused() {
178
+ var e, t;
179
+ return this.isLoaded ? [
180
+ -1,
181
+ 0,
182
+ 2,
183
+ 5
184
+ ].includes((t = (e = this.api) == null ? void 0 : e.getPlayerState) == null ? void 0 : t.call(e)) : !this.autoplay;
185
+ }
186
+ get duration() {
187
+ var e, t, n;
188
+ return (e = (n = (t = this.api) == null ? void 0 : t.getDuration) == null ? void 0 : n.call(t)) == null ? NaN : e;
189
+ }
190
+ get autoplay() {
191
+ return this.hasAttribute("autoplay");
192
+ }
193
+ set autoplay(e) {
194
+ this.autoplay != e && this.toggleAttribute("autoplay", !!e);
195
+ }
196
+ get buffered() {
197
+ var e, t;
198
+ if (!this.isLoaded) return H();
199
+ let n = ((e = this.api) == null ? void 0 : e.getVideoLoadedFraction()) * ((t = this.api) == null ? void 0 : t.getDuration());
200
+ return n > 0 ? H(0, n) : H();
201
+ }
202
+ get controls() {
203
+ return this.hasAttribute("controls");
204
+ }
205
+ set controls(e) {
206
+ this.controls != e && this.toggleAttribute("controls", !!e);
207
+ }
208
+ get currentTime() {
209
+ var e, t, n;
210
+ return (e = (n = (t = this.api) == null ? void 0 : t.getCurrentTime) == null ? void 0 : n.call(t)) == null ? 0 : e;
211
+ }
212
+ set currentTime(e) {
213
+ this.currentTime != e && (i(C, this, new V()), this.loadComplete.then(() => {
214
+ var t, r;
215
+ (t = this.api) == null || t.seekTo(e, !0), this.paused && ((r = n(C, this)) == null || r.then(() => {
216
+ var e;
217
+ n(C, this) && ((e = this.api) == null || e.pauseVideo());
218
+ }));
219
+ }));
220
+ }
221
+ set defaultMuted(e) {
222
+ this.defaultMuted != e && this.toggleAttribute("muted", !!e);
223
+ }
224
+ get defaultMuted() {
225
+ return this.hasAttribute("muted");
226
+ }
227
+ get loop() {
228
+ return this.hasAttribute("loop");
229
+ }
230
+ set loop(e) {
231
+ this.loop != e && this.toggleAttribute("loop", !!e);
232
+ }
233
+ set muted(e) {
234
+ this.muted != e && this.loadComplete.then(() => {
235
+ var t, n;
236
+ e ? (t = this.api) == null || t.mute() : (n = this.api) == null || n.unMute();
237
+ });
238
+ }
239
+ get muted() {
240
+ var e, t;
241
+ return this.isLoaded ? (t = (e = this.api) == null ? void 0 : e.isMuted) == null ? void 0 : t.call(e) : this.defaultMuted;
242
+ }
243
+ get playbackRate() {
244
+ var e, t, n;
245
+ return (e = (n = (t = this.api) == null ? void 0 : t.getPlaybackRate) == null ? void 0 : n.call(t)) == null ? 1 : e;
246
+ }
247
+ set playbackRate(e) {
248
+ this.playbackRate != e && this.loadComplete.then(() => {
249
+ var t;
250
+ (t = this.api) == null || t.setPlaybackRate(e);
251
+ });
252
+ }
253
+ get playsInline() {
254
+ return this.hasAttribute("playsinline");
255
+ }
256
+ set playsInline(e) {
257
+ this.playsInline != e && this.toggleAttribute("playsinline", !!e);
258
+ }
259
+ get poster() {
260
+ return this.getAttribute("poster");
261
+ }
262
+ set poster(e) {
263
+ this.poster != e && this.setAttribute("poster", `${e}`);
264
+ }
265
+ set volume(e) {
266
+ this.volume != e && (i(D, this, e), this.loadComplete.then(() => {
267
+ var t;
268
+ (t = this.api) == null || t.setVolume(e * 100);
269
+ }));
270
+ }
271
+ get volume() {
272
+ var e;
273
+ return this.isLoaded ? ((e = this.api) == null ? void 0 : e.getVolume()) / 100 : n(D, this);
274
+ }
275
+ };
276
+ function A(e) {
277
+ if (Object.prototype.hasOwnProperty.call(this, e)) {
278
+ let t = this[e];
279
+ delete this[e], this[e] = t;
280
+ }
281
+ }
282
+ a(k, "getTemplateHTML", _), a(k, "shadowRootOptions", { mode: "open" }), a(k, "observedAttributes", [
283
+ "autoplay",
284
+ "controls",
285
+ "crossorigin",
286
+ "loop",
287
+ "muted",
288
+ "playsinline",
289
+ "poster",
290
+ "preload",
291
+ "src"
292
+ ]);
293
+ function j(e) {
294
+ let t = "";
295
+ for (let n in e) {
296
+ let r = e[n];
297
+ r === "" ? t += ` ${M(n)}` : t += ` ${M(n)}="${M(`${r}`)}"`;
298
+ }
299
+ return t;
300
+ }
301
+ function M(e) {
302
+ return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/`/g, "&#x60;");
303
+ }
304
+ function N(e) {
305
+ return String(new URLSearchParams(P(e)));
306
+ }
307
+ function P(e) {
308
+ let t = {};
309
+ for (let n in e) {
310
+ let r = e[n];
311
+ r === !0 || r === "" ? t[n] = 1 : r === !1 ? t[n] = 0 : r != null && (t[n] = r);
312
+ }
313
+ return t;
314
+ }
315
+ function F(e) {
316
+ let t = {};
317
+ for (let n of e) t[n.name] = n.value;
318
+ return t;
319
+ }
320
+ var I = {};
321
+ async function L(e, t, n) {
322
+ return I[e] ? I[e] : t && self[t] ? (await R(0), self[t]) : I[e] = new Promise(function(r, i) {
323
+ let a = document.createElement("script");
324
+ a.src = e;
325
+ let o = () => r(self[t]);
326
+ n && (self[n] = o), a.onload = () => !n && o(), a.onerror = i, document.head.append(a);
327
+ });
328
+ }
329
+ var R = (e) => new Promise((t) => setTimeout(t, e));
330
+ function z(e) {
331
+ return (...t) => new Promise((n) => {
332
+ e(...t, (...e) => {
333
+ e.length > 1 ? n(e) : n(e[0]);
334
+ });
335
+ });
336
+ }
337
+ function B(e) {
338
+ return z((t, n) => {
339
+ let r;
340
+ e.addEventListener(t, r = () => {
341
+ e.removeEventListener(t, r), n();
342
+ });
343
+ })("playing");
344
+ }
345
+ var V = class extends Promise {
346
+ constructor(e = () => {}) {
347
+ let t, n;
348
+ super((r, i) => {
349
+ e(r, i), t = r, n = i;
350
+ }), this.resolve = t, this.reject = n;
351
+ }
352
+ };
353
+ function H(e, t) {
354
+ return U(Array.isArray(e) ? e : e == null || t == null || e === 0 && t === 0 ? [[0, 0]] : [[e, t]]);
355
+ }
356
+ function U(e) {
357
+ return Object.defineProperties(e, {
358
+ start: { value: (t) => e[t][0] },
359
+ end: { value: (t) => e[t][1] }
360
+ }), e;
361
+ }
362
+ globalThis.customElements && !globalThis.customElements.get("youtube-video") && globalThis.customElements.define("youtube-video", k);
363
+ var W = k, G = /* @__PURE__ */ new Set([
364
+ "style",
365
+ "children",
366
+ "ref",
367
+ "key",
368
+ "suppressContentEditableWarning",
369
+ "suppressHydrationWarning",
370
+ "dangerouslySetInnerHTML"
371
+ ]), K = {
372
+ className: "class",
373
+ htmlFor: "for"
374
+ };
375
+ function q(e) {
376
+ return e.toLowerCase();
377
+ }
378
+ function J(e) {
379
+ if (typeof e == "boolean") return e ? "" : void 0;
380
+ if (typeof e != "function" && !(typeof e == "object" && e)) return e;
381
+ }
382
+ function Y({ react: e, tagName: t, elementClass: n, events: r, displayName: i, defaultProps: a, toAttributeName: o = q, toAttributeValue: s = J }) {
383
+ let c = Number.parseInt(e.version) >= 19, l = e.forwardRef((i, l) => {
384
+ var u, d;
385
+ let f = e.useRef(null), p = e.useRef(/* @__PURE__ */ new Map()), m = {}, h = {}, g = {}, _ = {};
386
+ for (let [e, t] of Object.entries(i)) {
387
+ var v, y;
388
+ if (G.has(e)) {
389
+ g[e] = t;
390
+ continue;
391
+ }
392
+ let r = o((v = K[e]) == null ? e : v);
393
+ if (n.prototype && e in n.prototype && !(e in ((y = (u = globalThis.HTMLElement) == null ? void 0 : u.prototype) == null ? {} : y)) && !((d = n.observedAttributes) != null && d.some((e) => e === r))) {
394
+ _[e] = t;
395
+ continue;
396
+ }
397
+ if (e.startsWith("on")) {
398
+ m[e] = t;
399
+ continue;
400
+ }
401
+ let i = s(t);
402
+ r && i != null && (h[r] = String(i), c || (g[r] = i)), r && c && (i === J(t) ? g[r] = t : g[r] = i);
403
+ }
404
+ if (typeof window < "u") {
405
+ for (let t in m) {
406
+ var b;
407
+ let n = m[t], i = t.endsWith("Capture"), a = ((b = r == null ? void 0 : r[t]) == null ? t.slice(2).toLowerCase() : b).slice(0, i ? -7 : void 0);
408
+ e.useLayoutEffect(() => {
409
+ let e = f == null ? void 0 : f.current;
410
+ if (!(!e || typeof n != "function")) return e.addEventListener(a, n, i), () => {
411
+ e.removeEventListener(a, n, i);
412
+ };
413
+ }, [f == null ? void 0 : f.current, n]);
414
+ }
415
+ e.useLayoutEffect(() => {
416
+ if (f.current === null) return;
417
+ let e = /* @__PURE__ */ new Map();
418
+ for (let t in _) X(f.current, t, _[t]), p.current.delete(t), e.set(t, _[t]);
419
+ for (let [e, t] of p.current) X(f.current, e, void 0);
420
+ p.current = e;
421
+ });
422
+ }
423
+ if (typeof window > "u" && n != null && n.getTemplateHTML && n != null && n.shadowRootOptions) {
424
+ let { mode: t, delegatesFocus: r } = n.shadowRootOptions;
425
+ g.children = [e.createElement("template", {
426
+ shadowrootmode: t,
427
+ shadowrootdelegatesfocus: r,
428
+ dangerouslySetInnerHTML: { __html: n.getTemplateHTML(h, i) },
429
+ key: "ce-la-react-ssr-template-shadow-root"
430
+ }), g.children];
431
+ }
432
+ return e.createElement(t, {
433
+ ...a,
434
+ ...g,
435
+ ref: e.useCallback((e) => {
436
+ f.current = e, typeof l == "function" ? l(e) : l !== null && (l.current = e);
437
+ }, [l])
438
+ }, g.children);
439
+ });
440
+ return l.displayName = i == null ? n.name : i, l;
441
+ }
442
+ function X(e, t, n) {
443
+ var r, i;
444
+ e[t] = n, n == null && t in ((r = (i = globalThis.HTMLElement) == null ? void 0 : i.prototype) == null ? {} : r) && e.removeAttribute(t);
445
+ }
446
+ var Z = Y({
447
+ react: s,
448
+ tagName: "youtube-video",
449
+ elementClass: W,
450
+ toAttributeName(e) {
451
+ return e === "muted" ? "" : e === "defaultMuted" ? "muted" : q(e);
452
+ }
453
+ });
454
+ //#endregion
455
+ export { Z as default };
456
+
457
+ //# sourceMappingURL=react-BVzcquey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-BVzcquey.js","names":["CustomMediaElement"],"sources":["../../../node_modules/.pnpm/youtube-video-element@1.9.0/node_modules/youtube-video-element/dist/youtube-video-element.js","../../../node_modules/.pnpm/youtube-video-element@1.9.0/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, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\").replace(/`/g, \"&#x60;\");\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"],"x_google_ignoreList":[0,1],"mappings":"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"}