tavi-video-tutor 0.1.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.
@@ -0,0 +1,2445 @@
1
+ import { i as e, n as t, o as n, r, t as i } from "./chunk-jwUa06l-.js";
2
+ import { createElement as a, forwardRef as o, useEffect as s, useRef as c, useState as l } from "react";
3
+ //#region node_modules/load-script/index.js
4
+ var u = /* @__PURE__ */ i(((e, t) => {
5
+ t.exports = function(e, t, a) {
6
+ var o = document.head || document.getElementsByTagName("head")[0], s = document.createElement("script");
7
+ typeof t == "function" && (a = t, t = {}), t ||= {}, a ||= function() {}, s.type = t.type || "text/javascript", s.charset = t.charset || "utf8", s.async = "async" in t ? !!t.async : !0, s.src = e, t.attrs && n(s, t.attrs), t.text && (s.text = "" + t.text), ("onload" in s ? r : i)(s, a), s.onload || r(s, a), o.appendChild(s);
8
+ };
9
+ function n(e, t) {
10
+ for (var n in t) e.setAttribute(n, t[n]);
11
+ }
12
+ function r(e, t) {
13
+ e.onload = function() {
14
+ this.onerror = this.onload = null, t(null, e);
15
+ }, e.onerror = function() {
16
+ this.onerror = this.onload = null, t(/* @__PURE__ */ Error("Failed to load " + this.src), e);
17
+ };
18
+ }
19
+ function i(e, t) {
20
+ e.onreadystatechange = function() {
21
+ this.readyState != "complete" && this.readyState != "loaded" || (this.onreadystatechange = null, t(null, e));
22
+ };
23
+ }
24
+ })), d = /* @__PURE__ */ i(((e, t) => {
25
+ var n = function(e) {
26
+ return r(e) && !i(e);
27
+ };
28
+ function r(e) {
29
+ return !!e && typeof e == "object";
30
+ }
31
+ function i(e) {
32
+ var t = Object.prototype.toString.call(e);
33
+ return t === "[object RegExp]" || t === "[object Date]" || o(e);
34
+ }
35
+ var a = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103;
36
+ function o(e) {
37
+ return e.$$typeof === a;
38
+ }
39
+ function s(e) {
40
+ return Array.isArray(e) ? [] : {};
41
+ }
42
+ function c(e, t) {
43
+ return t.clone !== !1 && t.isMergeableObject(e) ? g(s(e), e, t) : e;
44
+ }
45
+ function l(e, t, n) {
46
+ return e.concat(t).map(function(e) {
47
+ return c(e, n);
48
+ });
49
+ }
50
+ function u(e, t) {
51
+ if (!t.customMerge) return g;
52
+ var n = t.customMerge(e);
53
+ return typeof n == "function" ? n : g;
54
+ }
55
+ function d(e) {
56
+ return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(e).filter(function(t) {
57
+ return Object.propertyIsEnumerable.call(e, t);
58
+ }) : [];
59
+ }
60
+ function f(e) {
61
+ return Object.keys(e).concat(d(e));
62
+ }
63
+ function p(e, t) {
64
+ try {
65
+ return t in e;
66
+ } catch {
67
+ return !1;
68
+ }
69
+ }
70
+ function m(e, t) {
71
+ return p(e, t) && !(Object.hasOwnProperty.call(e, t) && Object.propertyIsEnumerable.call(e, t));
72
+ }
73
+ function h(e, t, n) {
74
+ var r = {};
75
+ return n.isMergeableObject(e) && f(e).forEach(function(t) {
76
+ r[t] = c(e[t], n);
77
+ }), f(t).forEach(function(i) {
78
+ m(e, i) || (p(e, i) && n.isMergeableObject(t[i]) ? r[i] = u(i, n)(e[i], t[i], n) : r[i] = c(t[i], n));
79
+ }), r;
80
+ }
81
+ function g(e, t, r) {
82
+ r ||= {}, r.arrayMerge = r.arrayMerge || l, r.isMergeableObject = r.isMergeableObject || n, r.cloneUnlessOtherwiseSpecified = c;
83
+ var i = Array.isArray(t);
84
+ return i === Array.isArray(e) ? i ? r.arrayMerge(e, t, r) : h(e, t, r) : c(t, r);
85
+ }
86
+ g.all = function(e, t) {
87
+ if (!Array.isArray(e)) throw Error("first argument should be an array");
88
+ return e.reduce(function(e, n) {
89
+ return g(e, n, t);
90
+ }, {});
91
+ }, t.exports = g;
92
+ })), f = /* @__PURE__ */ i(((t, n) => {
93
+ var r = Object.create, i = Object.defineProperty, a = Object.getOwnPropertyDescriptor, o = Object.getOwnPropertyNames, s = Object.getPrototypeOf, c = Object.prototype.hasOwnProperty, l = (e, t) => {
94
+ for (var n in t) i(e, n, {
95
+ get: t[n],
96
+ enumerable: !0
97
+ });
98
+ }, f = (e, t, n, r) => {
99
+ if (t && typeof t == "object" || typeof t == "function") for (let s of o(t)) !c.call(e, s) && s !== n && i(e, s, {
100
+ get: () => t[s],
101
+ enumerable: !(r = a(t, s)) || r.enumerable
102
+ });
103
+ return e;
104
+ }, p = (e, t, n) => (n = e == null ? {} : r(s(e)), f(t || !e || !e.__esModule ? i(n, "default", {
105
+ value: e,
106
+ enumerable: !0
107
+ }) : n, e)), m = (e) => f(i({}, "__esModule", { value: !0 }), e), h = {};
108
+ l(h, {
109
+ callPlayer: () => F,
110
+ getConfig: () => N,
111
+ getSDK: () => M,
112
+ isBlobUrl: () => L,
113
+ isMediaStream: () => I,
114
+ lazy: () => y,
115
+ omit: () => P,
116
+ parseEndTime: () => D,
117
+ parseStartTime: () => E,
118
+ queryString: () => k,
119
+ randomString: () => O,
120
+ supportsWebKitPresentationMode: () => R
121
+ }), n.exports = m(h);
122
+ var g = p(e("react")), _ = p(u()), v = p(d()), y = (e) => g.default.lazy(async () => {
123
+ let t = await e();
124
+ return typeof t.default == "function" ? t : t.default;
125
+ }), b = /[?&#](?:start|t)=([0-9hms]+)/, x = /[?&#]end=([0-9hms]+)/, S = /(\d+)(h|m|s)/g, C = /^\d+$/;
126
+ function w(e, t) {
127
+ if (e instanceof Array) return;
128
+ let n = e.match(t);
129
+ if (n) {
130
+ let e = n[1];
131
+ if (e.match(S)) return T(e);
132
+ if (C.test(e)) return parseInt(e);
133
+ }
134
+ }
135
+ function T(e) {
136
+ let t = 0, n = S.exec(e);
137
+ for (; n !== null;) {
138
+ let [, r, i] = n;
139
+ i === "h" && (t += parseInt(r, 10) * 60 * 60), i === "m" && (t += parseInt(r, 10) * 60), i === "s" && (t += parseInt(r, 10)), n = S.exec(e);
140
+ }
141
+ return t;
142
+ }
143
+ function E(e) {
144
+ return w(e, b);
145
+ }
146
+ function D(e) {
147
+ return w(e, x);
148
+ }
149
+ function O() {
150
+ return Math.random().toString(36).substr(2, 5);
151
+ }
152
+ function k(e) {
153
+ return Object.keys(e).map((t) => `${t}=${e[t]}`).join("&");
154
+ }
155
+ function A(e) {
156
+ return window[e] ? window[e] : window.exports && window.exports[e] ? window.exports[e] : window.module && window.module.exports && window.module.exports[e] ? window.module.exports[e] : null;
157
+ }
158
+ var j = {}, M = z(function(e, t, n = null, r = () => !0, i = _.default) {
159
+ let a = A(t);
160
+ return a && r(a) ? Promise.resolve(a) : new Promise((r, a) => {
161
+ if (j[e]) {
162
+ j[e].push({
163
+ resolve: r,
164
+ reject: a
165
+ });
166
+ return;
167
+ }
168
+ j[e] = [{
169
+ resolve: r,
170
+ reject: a
171
+ }];
172
+ let o = (t) => {
173
+ j[e].forEach((e) => e.resolve(t));
174
+ };
175
+ if (n) {
176
+ let e = window[n];
177
+ window[n] = function() {
178
+ e && e(), o(A(t));
179
+ };
180
+ }
181
+ i(e, (r) => {
182
+ r ? (j[e].forEach((e) => e.reject(r)), j[e] = null) : n || o(A(t));
183
+ });
184
+ });
185
+ });
186
+ function N(e, t) {
187
+ return (0, v.default)(t.config, e.config);
188
+ }
189
+ function P(e, ...t) {
190
+ let n = [].concat(...t), r = {}, i = Object.keys(e);
191
+ for (let t of i) n.indexOf(t) === -1 && (r[t] = e[t]);
192
+ return r;
193
+ }
194
+ function F(e, ...t) {
195
+ if (!this.player || !this.player[e]) {
196
+ let t = `ReactPlayer: ${this.constructor.displayName} player could not call %c${e}%c \u2013 `;
197
+ return this.player ? this.player[e] || (t += "The method was not available") : t += "The player was not available", console.warn(t, "font-weight: bold", ""), null;
198
+ }
199
+ return this.player[e](...t);
200
+ }
201
+ function I(e) {
202
+ return typeof window < "u" && window.MediaStream !== void 0 && e instanceof window.MediaStream;
203
+ }
204
+ function L(e) {
205
+ return /^blob:/.test(e);
206
+ }
207
+ function R(e = document.createElement("video")) {
208
+ let t = /iPhone|iPod/.test(navigator.userAgent) === !1;
209
+ return e.webkitSupportsPresentationMode && typeof e.webkitSetPresentationMode == "function" && t;
210
+ }
211
+ function z(e) {
212
+ return e;
213
+ }
214
+ })), p = /* @__PURE__ */ i(((e, t) => {
215
+ var n = Object.defineProperty, r = Object.getOwnPropertyDescriptor, i = Object.getOwnPropertyNames, a = Object.prototype.hasOwnProperty, o = (e, t) => {
216
+ for (var r in t) n(e, r, {
217
+ get: t[r],
218
+ enumerable: !0
219
+ });
220
+ }, s = (e, t, o, s) => {
221
+ if (t && typeof t == "object" || typeof t == "function") for (let c of i(t)) !a.call(e, c) && c !== o && n(e, c, {
222
+ get: () => t[c],
223
+ enumerable: !(s = r(t, c)) || s.enumerable
224
+ });
225
+ return e;
226
+ }, c = (e) => s(n({}, "__esModule", { value: !0 }), e), l = {};
227
+ o(l, {
228
+ AUDIO_EXTENSIONS: () => E,
229
+ DASH_EXTENSIONS: () => k,
230
+ FLV_EXTENSIONS: () => A,
231
+ HLS_EXTENSIONS: () => O,
232
+ MATCH_URL_DAILYMOTION: () => S,
233
+ MATCH_URL_FACEBOOK: () => g,
234
+ MATCH_URL_FACEBOOK_WATCH: () => _,
235
+ MATCH_URL_KALTURA: () => T,
236
+ MATCH_URL_MIXCLOUD: () => C,
237
+ MATCH_URL_MUX: () => h,
238
+ MATCH_URL_SOUNDCLOUD: () => p,
239
+ MATCH_URL_STREAMABLE: () => v,
240
+ MATCH_URL_TWITCH_CHANNEL: () => x,
241
+ MATCH_URL_TWITCH_VIDEO: () => b,
242
+ MATCH_URL_VIDYARD: () => w,
243
+ MATCH_URL_VIMEO: () => m,
244
+ MATCH_URL_WISTIA: () => y,
245
+ MATCH_URL_YOUTUBE: () => d,
246
+ VIDEO_EXTENSIONS: () => D,
247
+ canPlay: () => M
248
+ }), t.exports = c(l);
249
+ var u = f(), d = /(?:youtu\.be\/|youtube(?:-nocookie|education)?\.com\/(?:embed\/|v\/|watch\/|watch\?v=|watch\?.+&v=|shorts\/|live\/))((\w|-){11})|youtube\.com\/playlist\?list=|youtube\.com\/user\//, p = /(?:soundcloud\.com|snd\.sc)\/[^.]+$/, m = /vimeo\.com\/(?!progressive_redirect).+/, h = /stream\.mux\.com\/(?!\w+\.m3u8)(\w+)/, g = /^https?:\/\/(www\.)?facebook\.com.*\/(video(s)?|watch|story)(\.php?|\/).+$/, _ = /^https?:\/\/fb\.watch\/.+$/, v = /streamable\.com\/([a-z0-9]+)$/, y = /(?:wistia\.(?:com|net)|wi\.st)\/(?:medias|embed)\/(?:iframe\/)?([^?]+)/, b = /(?:www\.|go\.)?twitch\.tv\/videos\/(\d+)($|\?)/, x = /(?:www\.|go\.)?twitch\.tv\/([a-zA-Z0-9_]+)($|\?)/, S = /^(?:(?:https?):)?(?:\/\/)?(?:www\.)?(?:(?:dailymotion\.com(?:\/embed)?\/video)|dai\.ly)\/([a-zA-Z0-9]+)(?:_[\w_-]+)?(?:[\w.#_-]+)?/, C = /mixcloud\.com\/([^/]+\/[^/]+)/, w = /vidyard.com\/(?:watch\/)?([a-zA-Z0-9-_]+)/, T = /^https?:\/\/[a-zA-Z]+\.kaltura.(com|org)\/p\/([0-9]+)\/sp\/([0-9]+)00\/embedIframeJs\/uiconf_id\/([0-9]+)\/partner_id\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/, E = /\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\?)/i, D = /\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\d+]+)?($|\?)/i, O = /\.(m3u8)($|\?)/i, k = /\.(mpd)($|\?)/i, A = /\.(flv)($|\?)/i, j = (e) => {
250
+ if (e instanceof Array) {
251
+ for (let t of e) if (typeof t == "string" && j(t) || j(t.src)) return !0;
252
+ return !1;
253
+ }
254
+ return (0, u.isMediaStream)(e) || (0, u.isBlobUrl)(e) ? !0 : E.test(e) || D.test(e) || O.test(e) || k.test(e) || A.test(e);
255
+ }, M = {
256
+ youtube: (e) => e instanceof Array ? e.every((e) => d.test(e)) : d.test(e),
257
+ soundcloud: (e) => p.test(e) && !E.test(e),
258
+ vimeo: (e) => m.test(e) && !D.test(e) && !O.test(e),
259
+ mux: (e) => h.test(e),
260
+ facebook: (e) => g.test(e) || _.test(e),
261
+ streamable: (e) => v.test(e),
262
+ wistia: (e) => y.test(e),
263
+ twitch: (e) => b.test(e) || x.test(e),
264
+ dailymotion: (e) => S.test(e),
265
+ mixcloud: (e) => C.test(e),
266
+ vidyard: (e) => w.test(e),
267
+ kaltura: (e) => T.test(e),
268
+ file: j
269
+ };
270
+ })), m = /* @__PURE__ */ i(((e, t) => {
271
+ var r = Object.defineProperty, i = Object.getOwnPropertyDescriptor, a = Object.getOwnPropertyNames, o = Object.prototype.hasOwnProperty, s = (e, t) => {
272
+ for (var n in t) r(e, n, {
273
+ get: t[n],
274
+ enumerable: !0
275
+ });
276
+ }, c = (e, t, n, s) => {
277
+ if (t && typeof t == "object" || typeof t == "function") for (let c of a(t)) !o.call(e, c) && c !== n && r(e, c, {
278
+ get: () => t[c],
279
+ enumerable: !(s = i(t, c)) || s.enumerable
280
+ });
281
+ return e;
282
+ }, l = (e) => c(r({}, "__esModule", { value: !0 }), e), u = {};
283
+ s(u, { default: () => h }), t.exports = l(u);
284
+ var d = f(), m = p(), h = [
285
+ {
286
+ key: "youtube",
287
+ name: "YouTube",
288
+ canPlay: m.canPlay.youtube,
289
+ lazyPlayer: (0, d.lazy)(() => import(
290
+ /* webpackChunkName: 'reactPlayerYouTube' */
291
+ "./YouTube-rU9Ojhsi.js"
292
+ ).then((e) => /* @__PURE__ */ n(e.default)))
293
+ },
294
+ {
295
+ key: "soundcloud",
296
+ name: "SoundCloud",
297
+ canPlay: m.canPlay.soundcloud,
298
+ lazyPlayer: (0, d.lazy)(() => import(
299
+ /* webpackChunkName: 'reactPlayerSoundCloud' */
300
+ "./SoundCloud-DGxS5bS7.js"
301
+ ).then((e) => /* @__PURE__ */ n(e.default)))
302
+ },
303
+ {
304
+ key: "vimeo",
305
+ name: "Vimeo",
306
+ canPlay: m.canPlay.vimeo,
307
+ lazyPlayer: (0, d.lazy)(() => import(
308
+ /* webpackChunkName: 'reactPlayerVimeo' */
309
+ "./Vimeo-C4sqB4Bz.js"
310
+ ).then((e) => /* @__PURE__ */ n(e.default)))
311
+ },
312
+ {
313
+ key: "mux",
314
+ name: "Mux",
315
+ canPlay: m.canPlay.mux,
316
+ lazyPlayer: (0, d.lazy)(() => import(
317
+ /* webpackChunkName: 'reactPlayerMux' */
318
+ "./Mux-CKZpCL-G.js"
319
+ ).then((e) => /* @__PURE__ */ n(e.default)))
320
+ },
321
+ {
322
+ key: "facebook",
323
+ name: "Facebook",
324
+ canPlay: m.canPlay.facebook,
325
+ lazyPlayer: (0, d.lazy)(() => import(
326
+ /* webpackChunkName: 'reactPlayerFacebook' */
327
+ "./Facebook-C23fvfaA.js"
328
+ ).then((e) => /* @__PURE__ */ n(e.default)))
329
+ },
330
+ {
331
+ key: "streamable",
332
+ name: "Streamable",
333
+ canPlay: m.canPlay.streamable,
334
+ lazyPlayer: (0, d.lazy)(() => import(
335
+ /* webpackChunkName: 'reactPlayerStreamable' */
336
+ "./Streamable-CmxnxVKG.js"
337
+ ).then((e) => /* @__PURE__ */ n(e.default)))
338
+ },
339
+ {
340
+ key: "wistia",
341
+ name: "Wistia",
342
+ canPlay: m.canPlay.wistia,
343
+ lazyPlayer: (0, d.lazy)(() => import(
344
+ /* webpackChunkName: 'reactPlayerWistia' */
345
+ "./Wistia-DyPXYFTO.js"
346
+ ).then((e) => /* @__PURE__ */ n(e.default)))
347
+ },
348
+ {
349
+ key: "twitch",
350
+ name: "Twitch",
351
+ canPlay: m.canPlay.twitch,
352
+ lazyPlayer: (0, d.lazy)(() => import(
353
+ /* webpackChunkName: 'reactPlayerTwitch' */
354
+ "./Twitch-CKAIH_w4.js"
355
+ ).then((e) => /* @__PURE__ */ n(e.default)))
356
+ },
357
+ {
358
+ key: "dailymotion",
359
+ name: "DailyMotion",
360
+ canPlay: m.canPlay.dailymotion,
361
+ lazyPlayer: (0, d.lazy)(() => import(
362
+ /* webpackChunkName: 'reactPlayerDailyMotion' */
363
+ "./DailyMotion-CMzxQweS.js"
364
+ ).then((e) => /* @__PURE__ */ n(e.default)))
365
+ },
366
+ {
367
+ key: "mixcloud",
368
+ name: "Mixcloud",
369
+ canPlay: m.canPlay.mixcloud,
370
+ lazyPlayer: (0, d.lazy)(() => import(
371
+ /* webpackChunkName: 'reactPlayerMixcloud' */
372
+ "./Mixcloud-Dd0goOiG.js"
373
+ ).then((e) => /* @__PURE__ */ n(e.default)))
374
+ },
375
+ {
376
+ key: "vidyard",
377
+ name: "Vidyard",
378
+ canPlay: m.canPlay.vidyard,
379
+ lazyPlayer: (0, d.lazy)(() => import(
380
+ /* webpackChunkName: 'reactPlayerVidyard' */
381
+ "./Vidyard-CzPQtoyq.js"
382
+ ).then((e) => /* @__PURE__ */ n(e.default)))
383
+ },
384
+ {
385
+ key: "kaltura",
386
+ name: "Kaltura",
387
+ canPlay: m.canPlay.kaltura,
388
+ lazyPlayer: (0, d.lazy)(() => import(
389
+ /* webpackChunkName: 'reactPlayerKaltura' */
390
+ "./Kaltura-DX6mTYyf.js"
391
+ ).then((e) => /* @__PURE__ */ n(e.default)))
392
+ },
393
+ {
394
+ key: "file",
395
+ name: "FilePlayer",
396
+ canPlay: m.canPlay.file,
397
+ canEnablePIP: (e) => m.canPlay.file(e) && (document.pictureInPictureEnabled || (0, d.supportsWebKitPresentationMode)()) && !m.AUDIO_EXTENSIONS.test(e),
398
+ lazyPlayer: (0, d.lazy)(() => import(
399
+ /* webpackChunkName: 'reactPlayerFilePlayer' */
400
+ "./FilePlayer-CMqw_QL4.js"
401
+ ).then((e) => /* @__PURE__ */ n(e.default)))
402
+ }
403
+ ];
404
+ })), h = /* @__PURE__ */ r({ default: () => v });
405
+ function g(e, t) {
406
+ return !!(e === t || y(e) && y(t));
407
+ }
408
+ function _(e, t) {
409
+ if (e.length !== t.length) return !1;
410
+ for (var n = 0; n < e.length; n++) if (!g(e[n], t[n])) return !1;
411
+ return !0;
412
+ }
413
+ function v(e, t) {
414
+ t === void 0 && (t = _);
415
+ var n, r = [], i, a = !1;
416
+ function o() {
417
+ var o = [...arguments];
418
+ return a && n === this && t(o, r) ? i : (i = e.apply(this, o), a = !0, n = this, r = o, i);
419
+ }
420
+ return o;
421
+ }
422
+ var y, b = t((() => {
423
+ y = Number.isNaN || function(e) {
424
+ return typeof e == "number" && e !== e;
425
+ };
426
+ })), x = /* @__PURE__ */ i(((e, t) => {
427
+ var n = typeof Element < "u", r = typeof Map == "function", i = typeof Set == "function", a = typeof ArrayBuffer == "function" && !!ArrayBuffer.isView;
428
+ function o(e, t) {
429
+ if (e === t) return !0;
430
+ if (e && t && typeof e == "object" && typeof t == "object") {
431
+ if (e.constructor !== t.constructor) return !1;
432
+ var s, c, l;
433
+ if (Array.isArray(e)) {
434
+ if (s = e.length, s != t.length) return !1;
435
+ for (c = s; c-- !== 0;) if (!o(e[c], t[c])) return !1;
436
+ return !0;
437
+ }
438
+ var u;
439
+ if (r && e instanceof Map && t instanceof Map) {
440
+ if (e.size !== t.size) return !1;
441
+ for (u = e.entries(); !(c = u.next()).done;) if (!t.has(c.value[0])) return !1;
442
+ for (u = e.entries(); !(c = u.next()).done;) if (!o(c.value[1], t.get(c.value[0]))) return !1;
443
+ return !0;
444
+ }
445
+ if (i && e instanceof Set && t instanceof Set) {
446
+ if (e.size !== t.size) return !1;
447
+ for (u = e.entries(); !(c = u.next()).done;) if (!t.has(c.value[0])) return !1;
448
+ return !0;
449
+ }
450
+ if (a && ArrayBuffer.isView(e) && ArrayBuffer.isView(t)) {
451
+ if (s = e.length, s != t.length) return !1;
452
+ for (c = s; c-- !== 0;) if (e[c] !== t[c]) return !1;
453
+ return !0;
454
+ }
455
+ if (e.constructor === RegExp) return e.source === t.source && e.flags === t.flags;
456
+ if (e.valueOf !== Object.prototype.valueOf && typeof e.valueOf == "function" && typeof t.valueOf == "function") return e.valueOf() === t.valueOf();
457
+ if (e.toString !== Object.prototype.toString && typeof e.toString == "function" && typeof t.toString == "function") return e.toString() === t.toString();
458
+ if (l = Object.keys(e), s = l.length, s !== Object.keys(t).length) return !1;
459
+ for (c = s; c-- !== 0;) if (!Object.prototype.hasOwnProperty.call(t, l[c])) return !1;
460
+ if (n && e instanceof Element) return !1;
461
+ for (c = s; c-- !== 0;) if (!((l[c] === "_owner" || l[c] === "__v" || l[c] === "__o") && e.$$typeof) && !o(e[l[c]], t[l[c]])) return !1;
462
+ return !0;
463
+ }
464
+ return e !== e && t !== t;
465
+ }
466
+ t.exports = function(e, t) {
467
+ try {
468
+ return o(e, t);
469
+ } catch (e) {
470
+ if ((e.message || "").match(/stack|recursion/i)) return console.warn("react-fast-compare cannot handle circular refs"), !1;
471
+ throw e;
472
+ }
473
+ };
474
+ })), S = /* @__PURE__ */ i(((e) => {
475
+ var t = typeof Symbol == "function" && Symbol.for, n = t ? Symbol.for("react.element") : 60103, r = t ? Symbol.for("react.portal") : 60106, i = t ? Symbol.for("react.fragment") : 60107, a = t ? Symbol.for("react.strict_mode") : 60108, o = t ? Symbol.for("react.profiler") : 60114, s = t ? Symbol.for("react.provider") : 60109, c = t ? Symbol.for("react.context") : 60110, l = t ? Symbol.for("react.async_mode") : 60111, u = t ? Symbol.for("react.concurrent_mode") : 60111, d = t ? Symbol.for("react.forward_ref") : 60112, f = t ? Symbol.for("react.suspense") : 60113, p = t ? Symbol.for("react.suspense_list") : 60120, m = t ? Symbol.for("react.memo") : 60115, h = t ? Symbol.for("react.lazy") : 60116, g = t ? Symbol.for("react.block") : 60121, _ = t ? Symbol.for("react.fundamental") : 60117, v = t ? Symbol.for("react.responder") : 60118, y = t ? Symbol.for("react.scope") : 60119;
476
+ function b(e) {
477
+ if (typeof e == "object" && e) {
478
+ var t = e.$$typeof;
479
+ switch (t) {
480
+ case n: switch (e = e.type, e) {
481
+ case l:
482
+ case u:
483
+ case i:
484
+ case o:
485
+ case a:
486
+ case f: return e;
487
+ default: switch (e &&= e.$$typeof, e) {
488
+ case c:
489
+ case d:
490
+ case h:
491
+ case m:
492
+ case s: return e;
493
+ default: return t;
494
+ }
495
+ }
496
+ case r: return t;
497
+ }
498
+ }
499
+ }
500
+ function x(e) {
501
+ return b(e) === u;
502
+ }
503
+ e.AsyncMode = l, e.ConcurrentMode = u, e.ContextConsumer = c, e.ContextProvider = s, e.Element = n, e.ForwardRef = d, e.Fragment = i, e.Lazy = h, e.Memo = m, e.Portal = r, e.Profiler = o, e.StrictMode = a, e.Suspense = f, e.isAsyncMode = function(e) {
504
+ return x(e) || b(e) === l;
505
+ }, e.isConcurrentMode = x, e.isContextConsumer = function(e) {
506
+ return b(e) === c;
507
+ }, e.isContextProvider = function(e) {
508
+ return b(e) === s;
509
+ }, e.isElement = function(e) {
510
+ return typeof e == "object" && !!e && e.$$typeof === n;
511
+ }, e.isForwardRef = function(e) {
512
+ return b(e) === d;
513
+ }, e.isFragment = function(e) {
514
+ return b(e) === i;
515
+ }, e.isLazy = function(e) {
516
+ return b(e) === h;
517
+ }, e.isMemo = function(e) {
518
+ return b(e) === m;
519
+ }, e.isPortal = function(e) {
520
+ return b(e) === r;
521
+ }, e.isProfiler = function(e) {
522
+ return b(e) === o;
523
+ }, e.isStrictMode = function(e) {
524
+ return b(e) === a;
525
+ }, e.isSuspense = function(e) {
526
+ return b(e) === f;
527
+ }, e.isValidElementType = function(e) {
528
+ return typeof e == "string" || typeof e == "function" || e === i || e === u || e === o || e === a || e === f || e === p || typeof e == "object" && !!e && (e.$$typeof === h || e.$$typeof === m || e.$$typeof === s || e.$$typeof === c || e.$$typeof === d || e.$$typeof === _ || e.$$typeof === v || e.$$typeof === y || e.$$typeof === g);
529
+ }, e.typeOf = b;
530
+ })), C = /* @__PURE__ */ i(((e) => {
531
+ process.env.NODE_ENV !== "production" && (function() {
532
+ var t = typeof Symbol == "function" && Symbol.for, n = t ? Symbol.for("react.element") : 60103, r = t ? Symbol.for("react.portal") : 60106, i = t ? Symbol.for("react.fragment") : 60107, a = t ? Symbol.for("react.strict_mode") : 60108, o = t ? Symbol.for("react.profiler") : 60114, s = t ? Symbol.for("react.provider") : 60109, c = t ? Symbol.for("react.context") : 60110, l = t ? Symbol.for("react.async_mode") : 60111, u = t ? Symbol.for("react.concurrent_mode") : 60111, d = t ? Symbol.for("react.forward_ref") : 60112, f = t ? Symbol.for("react.suspense") : 60113, p = t ? Symbol.for("react.suspense_list") : 60120, m = t ? Symbol.for("react.memo") : 60115, h = t ? Symbol.for("react.lazy") : 60116, g = t ? Symbol.for("react.block") : 60121, _ = t ? Symbol.for("react.fundamental") : 60117, v = t ? Symbol.for("react.responder") : 60118, y = t ? Symbol.for("react.scope") : 60119;
533
+ function b(e) {
534
+ return typeof e == "string" || typeof e == "function" || e === i || e === u || e === o || e === a || e === f || e === p || typeof e == "object" && !!e && (e.$$typeof === h || e.$$typeof === m || e.$$typeof === s || e.$$typeof === c || e.$$typeof === d || e.$$typeof === _ || e.$$typeof === v || e.$$typeof === y || e.$$typeof === g);
535
+ }
536
+ function x(e) {
537
+ if (typeof e == "object" && e) {
538
+ var t = e.$$typeof;
539
+ switch (t) {
540
+ case n:
541
+ var p = e.type;
542
+ switch (p) {
543
+ case l:
544
+ case u:
545
+ case i:
546
+ case o:
547
+ case a:
548
+ case f: return p;
549
+ default:
550
+ var g = p && p.$$typeof;
551
+ switch (g) {
552
+ case c:
553
+ case d:
554
+ case h:
555
+ case m:
556
+ case s: return g;
557
+ default: return t;
558
+ }
559
+ }
560
+ case r: return t;
561
+ }
562
+ }
563
+ }
564
+ var S = l, C = u, w = c, T = s, E = n, D = d, O = i, k = h, A = m, j = r, M = o, N = a, P = f, F = !1;
565
+ function I(e) {
566
+ return F || (F = !0, console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")), L(e) || x(e) === l;
567
+ }
568
+ function L(e) {
569
+ return x(e) === u;
570
+ }
571
+ function R(e) {
572
+ return x(e) === c;
573
+ }
574
+ function z(e) {
575
+ return x(e) === s;
576
+ }
577
+ function B(e) {
578
+ return typeof e == "object" && !!e && e.$$typeof === n;
579
+ }
580
+ function V(e) {
581
+ return x(e) === d;
582
+ }
583
+ function ee(e) {
584
+ return x(e) === i;
585
+ }
586
+ function te(e) {
587
+ return x(e) === h;
588
+ }
589
+ function H(e) {
590
+ return x(e) === m;
591
+ }
592
+ function ne(e) {
593
+ return x(e) === r;
594
+ }
595
+ function re(e) {
596
+ return x(e) === o;
597
+ }
598
+ function ie(e) {
599
+ return x(e) === a;
600
+ }
601
+ function ae(e) {
602
+ return x(e) === f;
603
+ }
604
+ e.AsyncMode = S, e.ConcurrentMode = C, e.ContextConsumer = w, e.ContextProvider = T, e.Element = E, e.ForwardRef = D, e.Fragment = O, e.Lazy = k, e.Memo = A, e.Portal = j, e.Profiler = M, e.StrictMode = N, e.Suspense = P, e.isAsyncMode = I, e.isConcurrentMode = L, e.isContextConsumer = R, e.isContextProvider = z, e.isElement = B, e.isForwardRef = V, e.isFragment = ee, e.isLazy = te, e.isMemo = H, e.isPortal = ne, e.isProfiler = re, e.isStrictMode = ie, e.isSuspense = ae, e.isValidElementType = b, e.typeOf = x;
605
+ })();
606
+ })), w = /* @__PURE__ */ i(((e, t) => {
607
+ process.env.NODE_ENV === "production" ? t.exports = S() : t.exports = C();
608
+ })), T = /* @__PURE__ */ i(((e, t) => {
609
+ var n = Object.getOwnPropertySymbols, r = Object.prototype.hasOwnProperty, i = Object.prototype.propertyIsEnumerable;
610
+ function a(e) {
611
+ if (e == null) throw TypeError("Object.assign cannot be called with null or undefined");
612
+ return Object(e);
613
+ }
614
+ function o() {
615
+ try {
616
+ if (!Object.assign) return !1;
617
+ var e = /* @__PURE__ */ new String("abc");
618
+ if (e[5] = "de", Object.getOwnPropertyNames(e)[0] === "5") return !1;
619
+ for (var t = {}, n = 0; n < 10; n++) t["_" + String.fromCharCode(n)] = n;
620
+ if (Object.getOwnPropertyNames(t).map(function(e) {
621
+ return t[e];
622
+ }).join("") !== "0123456789") return !1;
623
+ var r = {};
624
+ return "abcdefghijklmnopqrst".split("").forEach(function(e) {
625
+ r[e] = e;
626
+ }), Object.keys(Object.assign({}, r)).join("") === "abcdefghijklmnopqrst";
627
+ } catch {
628
+ return !1;
629
+ }
630
+ }
631
+ t.exports = o() ? Object.assign : function(e, t) {
632
+ for (var o, s = a(e), c, l = 1; l < arguments.length; l++) {
633
+ for (var u in o = Object(arguments[l]), o) r.call(o, u) && (s[u] = o[u]);
634
+ if (n) {
635
+ c = n(o);
636
+ for (var d = 0; d < c.length; d++) i.call(o, c[d]) && (s[c[d]] = o[c[d]]);
637
+ }
638
+ }
639
+ return s;
640
+ };
641
+ })), E = /* @__PURE__ */ i(((e, t) => {
642
+ t.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
643
+ })), D = /* @__PURE__ */ i(((e, t) => {
644
+ t.exports = Function.call.bind(Object.prototype.hasOwnProperty);
645
+ })), O = /* @__PURE__ */ i(((e, t) => {
646
+ var n = function() {};
647
+ if (process.env.NODE_ENV !== "production") {
648
+ var r = E(), i = {}, a = D();
649
+ n = function(e) {
650
+ var t = "Warning: " + e;
651
+ typeof console < "u" && console.error(t);
652
+ try {
653
+ throw Error(t);
654
+ } catch {}
655
+ };
656
+ }
657
+ function o(e, t, o, s, c) {
658
+ if (process.env.NODE_ENV !== "production") {
659
+ for (var l in e) if (a(e, l)) {
660
+ var u;
661
+ try {
662
+ if (typeof e[l] != "function") {
663
+ var d = Error((s || "React class") + ": " + o + " type `" + l + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[l] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
664
+ throw d.name = "Invariant Violation", d;
665
+ }
666
+ u = e[l](t, l, s, o, null, r);
667
+ } catch (e) {
668
+ u = e;
669
+ }
670
+ if (u && !(u instanceof Error) && n((s || "React class") + ": type specification of " + o + " `" + l + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof u + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."), u instanceof Error && !(u.message in i)) {
671
+ i[u.message] = !0;
672
+ var f = c ? c() : "";
673
+ n("Failed " + o + " type: " + u.message + (f ?? ""));
674
+ }
675
+ }
676
+ }
677
+ }
678
+ o.resetWarningCache = function() {
679
+ process.env.NODE_ENV !== "production" && (i = {});
680
+ }, t.exports = o;
681
+ })), k = /* @__PURE__ */ i(((e, t) => {
682
+ var n = w(), r = T(), i = E(), a = D(), o = O(), s = function() {};
683
+ process.env.NODE_ENV !== "production" && (s = function(e) {
684
+ var t = "Warning: " + e;
685
+ typeof console < "u" && console.error(t);
686
+ try {
687
+ throw Error(t);
688
+ } catch {}
689
+ });
690
+ function c() {
691
+ return null;
692
+ }
693
+ t.exports = function(e, t) {
694
+ var l = typeof Symbol == "function" && Symbol.iterator, u = "@@iterator";
695
+ function d(e) {
696
+ var t = e && (l && e[l] || e[u]);
697
+ if (typeof t == "function") return t;
698
+ }
699
+ var f = "<<anonymous>>", p = {
700
+ array: _("array"),
701
+ bigint: _("bigint"),
702
+ bool: _("boolean"),
703
+ func: _("function"),
704
+ number: _("number"),
705
+ object: _("object"),
706
+ string: _("string"),
707
+ symbol: _("symbol"),
708
+ any: v(),
709
+ arrayOf: y,
710
+ element: b(),
711
+ elementType: x(),
712
+ instanceOf: S,
713
+ node: E(),
714
+ objectOf: w,
715
+ oneOf: C,
716
+ oneOfType: T,
717
+ shape: O,
718
+ exact: k
719
+ };
720
+ function m(e, t) {
721
+ return e === t ? e !== 0 || 1 / e == 1 / t : e !== e && t !== t;
722
+ }
723
+ function h(e, t) {
724
+ this.message = e, this.data = t && typeof t == "object" ? t : {}, this.stack = "";
725
+ }
726
+ h.prototype = Error.prototype;
727
+ function g(e) {
728
+ if (process.env.NODE_ENV !== "production") var n = {}, r = 0;
729
+ function a(a, o, c, l, u, d, p) {
730
+ if (l ||= f, d ||= c, p !== i) {
731
+ if (t) {
732
+ var m = /* @__PURE__ */ Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");
733
+ throw m.name = "Invariant Violation", m;
734
+ } else if (process.env.NODE_ENV !== "production" && typeof console < "u") {
735
+ var g = l + ":" + c;
736
+ !n[g] && r < 3 && (s("You are manually calling a React.PropTypes validation function for the `" + d + "` prop on `" + l + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."), n[g] = !0, r++);
737
+ }
738
+ }
739
+ return o[c] == null ? a ? o[c] === null ? new h("The " + u + " `" + d + "` is marked as required " + ("in `" + l + "`, but its value is `null`.")) : new h("The " + u + " `" + d + "` is marked as required in " + ("`" + l + "`, but its value is `undefined`.")) : null : e(o, c, l, u, d);
740
+ }
741
+ var o = a.bind(null, !1);
742
+ return o.isRequired = a.bind(null, !0), o;
743
+ }
744
+ function _(e) {
745
+ function t(t, n, r, i, a, o) {
746
+ var s = t[n];
747
+ if (M(s) !== e) {
748
+ var c = N(s);
749
+ return new h("Invalid " + i + " `" + a + "` of type " + ("`" + c + "` supplied to `" + r + "`, expected ") + ("`" + e + "`."), { expectedType: e });
750
+ }
751
+ return null;
752
+ }
753
+ return g(t);
754
+ }
755
+ function v() {
756
+ return g(c);
757
+ }
758
+ function y(e) {
759
+ function t(t, n, r, a, o) {
760
+ if (typeof e != "function") return new h("Property `" + o + "` of component `" + r + "` has invalid PropType notation inside arrayOf.");
761
+ var s = t[n];
762
+ if (!Array.isArray(s)) {
763
+ var c = M(s);
764
+ return new h("Invalid " + a + " `" + o + "` of type " + ("`" + c + "` supplied to `" + r + "`, expected an array."));
765
+ }
766
+ for (var l = 0; l < s.length; l++) {
767
+ var u = e(s, l, r, a, o + "[" + l + "]", i);
768
+ if (u instanceof Error) return u;
769
+ }
770
+ return null;
771
+ }
772
+ return g(t);
773
+ }
774
+ function b() {
775
+ function t(t, n, r, i, a) {
776
+ var o = t[n];
777
+ if (!e(o)) {
778
+ var s = M(o);
779
+ return new h("Invalid " + i + " `" + a + "` of type " + ("`" + s + "` supplied to `" + r + "`, expected a single ReactElement."));
780
+ }
781
+ return null;
782
+ }
783
+ return g(t);
784
+ }
785
+ function x() {
786
+ function e(e, t, r, i, a) {
787
+ var o = e[t];
788
+ if (!n.isValidElementType(o)) {
789
+ var s = M(o);
790
+ return new h("Invalid " + i + " `" + a + "` of type " + ("`" + s + "` supplied to `" + r + "`, expected a single ReactElement type."));
791
+ }
792
+ return null;
793
+ }
794
+ return g(e);
795
+ }
796
+ function S(e) {
797
+ function t(t, n, r, i, a) {
798
+ if (!(t[n] instanceof e)) {
799
+ var o = e.name || f, s = F(t[n]);
800
+ return new h("Invalid " + i + " `" + a + "` of type " + ("`" + s + "` supplied to `" + r + "`, expected ") + ("instance of `" + o + "`."));
801
+ }
802
+ return null;
803
+ }
804
+ return g(t);
805
+ }
806
+ function C(e) {
807
+ if (!Array.isArray(e)) return process.env.NODE_ENV !== "production" && (arguments.length > 1 ? s("Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).") : s("Invalid argument supplied to oneOf, expected an array.")), c;
808
+ function t(t, n, r, i, a) {
809
+ for (var o = t[n], s = 0; s < e.length; s++) if (m(o, e[s])) return null;
810
+ var c = JSON.stringify(e, function(e, t) {
811
+ return N(t) === "symbol" ? String(t) : t;
812
+ });
813
+ return new h("Invalid " + i + " `" + a + "` of value `" + String(o) + "` " + ("supplied to `" + r + "`, expected one of " + c + "."));
814
+ }
815
+ return g(t);
816
+ }
817
+ function w(e) {
818
+ function t(t, n, r, o, s) {
819
+ if (typeof e != "function") return new h("Property `" + s + "` of component `" + r + "` has invalid PropType notation inside objectOf.");
820
+ var c = t[n], l = M(c);
821
+ if (l !== "object") return new h("Invalid " + o + " `" + s + "` of type " + ("`" + l + "` supplied to `" + r + "`, expected an object."));
822
+ for (var u in c) if (a(c, u)) {
823
+ var d = e(c, u, r, o, s + "." + u, i);
824
+ if (d instanceof Error) return d;
825
+ }
826
+ return null;
827
+ }
828
+ return g(t);
829
+ }
830
+ function T(e) {
831
+ if (!Array.isArray(e)) return process.env.NODE_ENV !== "production" && s("Invalid argument supplied to oneOfType, expected an instance of array."), c;
832
+ for (var t = 0; t < e.length; t++) {
833
+ var n = e[t];
834
+ if (typeof n != "function") return s("Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + P(n) + " at index " + t + "."), c;
835
+ }
836
+ function r(t, n, r, o, s) {
837
+ for (var c = [], l = 0; l < e.length; l++) {
838
+ var u = e[l], d = u(t, n, r, o, s, i);
839
+ if (d == null) return null;
840
+ d.data && a(d.data, "expectedType") && c.push(d.data.expectedType);
841
+ }
842
+ var f = c.length > 0 ? ", expected one of type [" + c.join(", ") + "]" : "";
843
+ return new h("Invalid " + o + " `" + s + "` supplied to " + ("`" + r + "`" + f + "."));
844
+ }
845
+ return g(r);
846
+ }
847
+ function E() {
848
+ function e(e, t, n, r, i) {
849
+ return A(e[t]) ? null : new h("Invalid " + r + " `" + i + "` supplied to " + ("`" + n + "`, expected a ReactNode."));
850
+ }
851
+ return g(e);
852
+ }
853
+ function D(e, t, n, r, i) {
854
+ return new h((e || "React class") + ": " + t + " type `" + n + "." + r + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + i + "`.");
855
+ }
856
+ function O(e) {
857
+ function t(t, n, r, a, o) {
858
+ var s = t[n], c = M(s);
859
+ if (c !== "object") return new h("Invalid " + a + " `" + o + "` of type `" + c + "` " + ("supplied to `" + r + "`, expected `object`."));
860
+ for (var l in e) {
861
+ var u = e[l];
862
+ if (typeof u != "function") return D(r, a, o, l, N(u));
863
+ var d = u(s, l, r, a, o + "." + l, i);
864
+ if (d) return d;
865
+ }
866
+ return null;
867
+ }
868
+ return g(t);
869
+ }
870
+ function k(e) {
871
+ function t(t, n, o, s, c) {
872
+ var l = t[n], u = M(l);
873
+ if (u !== "object") return new h("Invalid " + s + " `" + c + "` of type `" + u + "` " + ("supplied to `" + o + "`, expected `object`."));
874
+ for (var d in r({}, t[n], e)) {
875
+ var f = e[d];
876
+ if (a(e, d) && typeof f != "function") return D(o, s, c, d, N(f));
877
+ if (!f) return new h("Invalid " + s + " `" + c + "` key `" + d + "` supplied to `" + o + "`.\nBad object: " + JSON.stringify(t[n], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(e), null, " "));
878
+ var p = f(l, d, o, s, c + "." + d, i);
879
+ if (p) return p;
880
+ }
881
+ return null;
882
+ }
883
+ return g(t);
884
+ }
885
+ function A(t) {
886
+ switch (typeof t) {
887
+ case "number":
888
+ case "string":
889
+ case "undefined": return !0;
890
+ case "boolean": return !t;
891
+ case "object":
892
+ if (Array.isArray(t)) return t.every(A);
893
+ if (t === null || e(t)) return !0;
894
+ var n = d(t);
895
+ if (n) {
896
+ var r = n.call(t), i;
897
+ if (n !== t.entries) {
898
+ for (; !(i = r.next()).done;) if (!A(i.value)) return !1;
899
+ } else for (; !(i = r.next()).done;) {
900
+ var a = i.value;
901
+ if (a && !A(a[1])) return !1;
902
+ }
903
+ } else return !1;
904
+ return !0;
905
+ default: return !1;
906
+ }
907
+ }
908
+ function j(e, t) {
909
+ return e === "symbol" ? !0 : t ? t["@@toStringTag"] === "Symbol" || typeof Symbol == "function" && t instanceof Symbol : !1;
910
+ }
911
+ function M(e) {
912
+ var t = typeof e;
913
+ return Array.isArray(e) ? "array" : e instanceof RegExp ? "object" : j(t, e) ? "symbol" : t;
914
+ }
915
+ function N(e) {
916
+ if (e == null) return "" + e;
917
+ var t = M(e);
918
+ if (t === "object") {
919
+ if (e instanceof Date) return "date";
920
+ if (e instanceof RegExp) return "regexp";
921
+ }
922
+ return t;
923
+ }
924
+ function P(e) {
925
+ var t = N(e);
926
+ switch (t) {
927
+ case "array":
928
+ case "object": return "an " + t;
929
+ case "boolean":
930
+ case "date":
931
+ case "regexp": return "a " + t;
932
+ default: return t;
933
+ }
934
+ }
935
+ function F(e) {
936
+ return !e.constructor || !e.constructor.name ? f : e.constructor.name;
937
+ }
938
+ return p.checkPropTypes = o, p.resetWarningCache = o.resetWarningCache, p.PropTypes = p, p;
939
+ };
940
+ })), A = /* @__PURE__ */ i(((e, t) => {
941
+ var n = E();
942
+ function r() {}
943
+ function i() {}
944
+ i.resetWarningCache = r, t.exports = function() {
945
+ function e(e, t, r, i, a, o) {
946
+ if (o !== n) {
947
+ var s = /* @__PURE__ */ Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");
948
+ throw s.name = "Invariant Violation", s;
949
+ }
950
+ }
951
+ e.isRequired = e;
952
+ function t() {
953
+ return e;
954
+ }
955
+ var a = {
956
+ array: e,
957
+ bigint: e,
958
+ bool: e,
959
+ func: e,
960
+ number: e,
961
+ object: e,
962
+ string: e,
963
+ symbol: e,
964
+ any: e,
965
+ arrayOf: t,
966
+ element: e,
967
+ elementType: e,
968
+ instanceOf: t,
969
+ node: e,
970
+ objectOf: t,
971
+ oneOf: t,
972
+ oneOfType: t,
973
+ shape: t,
974
+ exact: t,
975
+ checkPropTypes: i,
976
+ resetWarningCache: r
977
+ };
978
+ return a.PropTypes = a, a;
979
+ };
980
+ })), j = /* @__PURE__ */ i(((e, t) => {
981
+ if (process.env.NODE_ENV !== "production") {
982
+ var n = w();
983
+ t.exports = k()(n.isElement, !0);
984
+ } else t.exports = A()();
985
+ })), M = /* @__PURE__ */ i(((e, t) => {
986
+ var n = Object.create, r = Object.defineProperty, i = Object.getOwnPropertyDescriptor, a = Object.getOwnPropertyNames, o = Object.getPrototypeOf, s = Object.prototype.hasOwnProperty, c = (e, t) => {
987
+ for (var n in t) r(e, n, {
988
+ get: t[n],
989
+ enumerable: !0
990
+ });
991
+ }, l = (e, t, n, o) => {
992
+ if (t && typeof t == "object" || typeof t == "function") for (let c of a(t)) !s.call(e, c) && c !== n && r(e, c, {
993
+ get: () => t[c],
994
+ enumerable: !(o = i(t, c)) || o.enumerable
995
+ });
996
+ return e;
997
+ }, u = (e, t, i) => (i = e == null ? {} : n(o(e)), l(t || !e || !e.__esModule ? r(i, "default", {
998
+ value: e,
999
+ enumerable: !0
1000
+ }) : i, e)), d = (e) => l(r({}, "__esModule", { value: !0 }), e), f = {};
1001
+ c(f, {
1002
+ defaultProps: () => w,
1003
+ propTypes: () => S
1004
+ }), t.exports = d(f);
1005
+ var { string: p, bool: m, number: h, array: g, oneOfType: _, shape: v, object: y, func: b, node: x } = u(j()).default, S = {
1006
+ url: _([
1007
+ p,
1008
+ g,
1009
+ y
1010
+ ]),
1011
+ playing: m,
1012
+ loop: m,
1013
+ controls: m,
1014
+ volume: h,
1015
+ muted: m,
1016
+ playbackRate: h,
1017
+ width: _([p, h]),
1018
+ height: _([p, h]),
1019
+ style: y,
1020
+ progressInterval: h,
1021
+ playsinline: m,
1022
+ pip: m,
1023
+ stopOnUnmount: m,
1024
+ light: _([
1025
+ m,
1026
+ p,
1027
+ y
1028
+ ]),
1029
+ playIcon: x,
1030
+ previewTabIndex: h,
1031
+ previewAriaLabel: p,
1032
+ fallback: x,
1033
+ oEmbedUrl: p,
1034
+ wrapper: _([
1035
+ p,
1036
+ b,
1037
+ v({ render: b.isRequired })
1038
+ ]),
1039
+ config: v({
1040
+ soundcloud: v({ options: y }),
1041
+ youtube: v({
1042
+ playerVars: y,
1043
+ embedOptions: y,
1044
+ onUnstarted: b
1045
+ }),
1046
+ facebook: v({
1047
+ appId: p,
1048
+ version: p,
1049
+ playerId: p,
1050
+ attributes: y
1051
+ }),
1052
+ dailymotion: v({ params: y }),
1053
+ vimeo: v({
1054
+ playerOptions: y,
1055
+ title: p
1056
+ }),
1057
+ mux: v({
1058
+ attributes: y,
1059
+ version: p
1060
+ }),
1061
+ file: v({
1062
+ attributes: y,
1063
+ tracks: g,
1064
+ forceVideo: m,
1065
+ forceAudio: m,
1066
+ forceHLS: m,
1067
+ forceSafariHLS: m,
1068
+ forceDisableHls: m,
1069
+ forceDASH: m,
1070
+ forceFLV: m,
1071
+ hlsOptions: y,
1072
+ hlsVersion: p,
1073
+ dashVersion: p,
1074
+ flvVersion: p
1075
+ }),
1076
+ wistia: v({
1077
+ options: y,
1078
+ playerId: p,
1079
+ customControls: g
1080
+ }),
1081
+ mixcloud: v({ options: y }),
1082
+ twitch: v({
1083
+ options: y,
1084
+ playerId: p
1085
+ }),
1086
+ vidyard: v({ options: y })
1087
+ }),
1088
+ onReady: b,
1089
+ onStart: b,
1090
+ onPlay: b,
1091
+ onPause: b,
1092
+ onBuffer: b,
1093
+ onBufferEnd: b,
1094
+ onEnded: b,
1095
+ onError: b,
1096
+ onDuration: b,
1097
+ onSeek: b,
1098
+ onPlaybackRateChange: b,
1099
+ onPlaybackQualityChange: b,
1100
+ onProgress: b,
1101
+ onClickPreview: b,
1102
+ onEnablePIP: b,
1103
+ onDisablePIP: b
1104
+ }, C = () => {}, w = {
1105
+ playing: !1,
1106
+ loop: !1,
1107
+ controls: !1,
1108
+ volume: null,
1109
+ muted: !1,
1110
+ playbackRate: 1,
1111
+ width: "640px",
1112
+ height: "360px",
1113
+ style: {},
1114
+ progressInterval: 1e3,
1115
+ playsinline: !1,
1116
+ pip: !1,
1117
+ stopOnUnmount: !0,
1118
+ light: !1,
1119
+ fallback: null,
1120
+ wrapper: "div",
1121
+ previewTabIndex: 0,
1122
+ previewAriaLabel: "",
1123
+ oEmbedUrl: "https://noembed.com/embed?url={url}",
1124
+ config: {
1125
+ soundcloud: { options: {
1126
+ visual: !0,
1127
+ buying: !1,
1128
+ liking: !1,
1129
+ download: !1,
1130
+ sharing: !1,
1131
+ show_comments: !1,
1132
+ show_playcount: !1
1133
+ } },
1134
+ youtube: {
1135
+ playerVars: {
1136
+ playsinline: 1,
1137
+ showinfo: 0,
1138
+ rel: 0,
1139
+ iv_load_policy: 3,
1140
+ modestbranding: 1
1141
+ },
1142
+ embedOptions: {},
1143
+ onUnstarted: C
1144
+ },
1145
+ facebook: {
1146
+ appId: "1309697205772819",
1147
+ version: "v3.3",
1148
+ playerId: null,
1149
+ attributes: {}
1150
+ },
1151
+ dailymotion: { params: {
1152
+ api: 1,
1153
+ "endscreen-enable": !1
1154
+ } },
1155
+ vimeo: {
1156
+ playerOptions: {
1157
+ autopause: !1,
1158
+ byline: !1,
1159
+ portrait: !1,
1160
+ title: !1
1161
+ },
1162
+ title: null
1163
+ },
1164
+ mux: {
1165
+ attributes: {},
1166
+ version: "2"
1167
+ },
1168
+ file: {
1169
+ attributes: {},
1170
+ tracks: [],
1171
+ forceVideo: !1,
1172
+ forceAudio: !1,
1173
+ forceHLS: !1,
1174
+ forceDASH: !1,
1175
+ forceFLV: !1,
1176
+ hlsOptions: {},
1177
+ hlsVersion: "1.1.4",
1178
+ dashVersion: "3.1.3",
1179
+ flvVersion: "1.5.0",
1180
+ forceDisableHls: !1
1181
+ },
1182
+ wistia: {
1183
+ options: {},
1184
+ playerId: null,
1185
+ customControls: null
1186
+ },
1187
+ mixcloud: { options: { hide_cover: 1 } },
1188
+ twitch: {
1189
+ options: {},
1190
+ playerId: null
1191
+ },
1192
+ vidyard: { options: {} }
1193
+ },
1194
+ onReady: C,
1195
+ onStart: C,
1196
+ onPlay: C,
1197
+ onPause: C,
1198
+ onBuffer: C,
1199
+ onBufferEnd: C,
1200
+ onEnded: C,
1201
+ onError: C,
1202
+ onDuration: C,
1203
+ onSeek: C,
1204
+ onPlaybackRateChange: C,
1205
+ onPlaybackQualityChange: C,
1206
+ onProgress: C,
1207
+ onClickPreview: C,
1208
+ onEnablePIP: C,
1209
+ onDisablePIP: C
1210
+ };
1211
+ })), N = /* @__PURE__ */ i(((t, n) => {
1212
+ var r = Object.create, i = Object.defineProperty, a = Object.getOwnPropertyDescriptor, o = Object.getOwnPropertyNames, s = Object.getPrototypeOf, c = Object.prototype.hasOwnProperty, l = (e, t, n) => t in e ? i(e, t, {
1213
+ enumerable: !0,
1214
+ configurable: !0,
1215
+ writable: !0,
1216
+ value: n
1217
+ }) : e[t] = n, u = (e, t) => {
1218
+ for (var n in t) i(e, n, {
1219
+ get: t[n],
1220
+ enumerable: !0
1221
+ });
1222
+ }, d = (e, t, n, r) => {
1223
+ if (t && typeof t == "object" || typeof t == "function") for (let s of o(t)) !c.call(e, s) && s !== n && i(e, s, {
1224
+ get: () => t[s],
1225
+ enumerable: !(r = a(t, s)) || r.enumerable
1226
+ });
1227
+ return e;
1228
+ }, p = (e, t, n) => (n = e == null ? {} : r(s(e)), d(t || !e || !e.__esModule ? i(n, "default", {
1229
+ value: e,
1230
+ enumerable: !0
1231
+ }) : n, e)), m = (e) => d(i({}, "__esModule", { value: !0 }), e), h = (e, t, n) => (l(e, typeof t == "symbol" ? t : t + "", n), n), g = {};
1232
+ u(g, { default: () => C }), n.exports = m(g);
1233
+ var _ = p(e("react")), v = p(x()), y = M(), b = f(), S = 5e3, C = class extends _.Component {
1234
+ constructor() {
1235
+ super(...arguments), h(this, "mounted", !1), h(this, "isReady", !1), h(this, "isPlaying", !1), h(this, "isLoading", !0), h(this, "loadOnReady", null), h(this, "startOnPlay", !0), h(this, "seekOnPlay", null), h(this, "onDurationCalled", !1), h(this, "handlePlayerMount", (e) => {
1236
+ if (this.player) {
1237
+ this.progress();
1238
+ return;
1239
+ }
1240
+ this.player = e, this.player.load(this.props.url), this.progress();
1241
+ }), h(this, "getInternalPlayer", (e) => this.player ? this.player[e] : null), h(this, "progress", () => {
1242
+ if (this.props.url && this.player && this.isReady) {
1243
+ let e = this.getCurrentTime() || 0, t = this.getSecondsLoaded(), n = this.getDuration();
1244
+ if (n) {
1245
+ let r = {
1246
+ playedSeconds: e,
1247
+ played: e / n
1248
+ };
1249
+ t !== null && (r.loadedSeconds = t, r.loaded = t / n), (r.playedSeconds !== this.prevPlayed || r.loadedSeconds !== this.prevLoaded) && this.props.onProgress(r), this.prevPlayed = r.playedSeconds, this.prevLoaded = r.loadedSeconds;
1250
+ }
1251
+ }
1252
+ this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval);
1253
+ }), h(this, "handleReady", () => {
1254
+ if (!this.mounted) return;
1255
+ this.isReady = !0, this.isLoading = !1;
1256
+ let { onReady: e, playing: t, volume: n, muted: r } = this.props;
1257
+ e(), !r && n !== null && this.player.setVolume(n), this.loadOnReady ? (this.player.load(this.loadOnReady, !0), this.loadOnReady = null) : t && this.player.play(), this.handleDurationCheck();
1258
+ }), h(this, "handlePlay", () => {
1259
+ this.isPlaying = !0, this.isLoading = !1;
1260
+ let { onStart: e, onPlay: t, playbackRate: n } = this.props;
1261
+ this.startOnPlay &&= (this.player.setPlaybackRate && n !== 1 && this.player.setPlaybackRate(n), e(), !1), t(), this.seekOnPlay &&= (this.seekTo(this.seekOnPlay), null), this.handleDurationCheck();
1262
+ }), h(this, "handlePause", (e) => {
1263
+ this.isPlaying = !1, this.isLoading || this.props.onPause(e);
1264
+ }), h(this, "handleEnded", () => {
1265
+ let { activePlayer: e, loop: t, onEnded: n } = this.props;
1266
+ e.loopOnEnded && t && this.seekTo(0), t || (this.isPlaying = !1, n());
1267
+ }), h(this, "handleError", (...e) => {
1268
+ this.isLoading = !1, this.props.onError(...e);
1269
+ }), h(this, "handleDurationCheck", () => {
1270
+ clearTimeout(this.durationCheckTimeout);
1271
+ let e = this.getDuration();
1272
+ e ? this.onDurationCalled ||= (this.props.onDuration(e), !0) : this.durationCheckTimeout = setTimeout(this.handleDurationCheck, 100);
1273
+ }), h(this, "handleLoaded", () => {
1274
+ this.isLoading = !1;
1275
+ });
1276
+ }
1277
+ componentDidMount() {
1278
+ this.mounted = !0;
1279
+ }
1280
+ componentWillUnmount() {
1281
+ clearTimeout(this.progressTimeout), clearTimeout(this.durationCheckTimeout), this.isReady && this.props.stopOnUnmount && (this.player.stop(), this.player.disablePIP && this.player.disablePIP()), this.mounted = !1;
1282
+ }
1283
+ componentDidUpdate(e) {
1284
+ if (!this.player) return;
1285
+ let { url: t, playing: n, volume: r, muted: i, playbackRate: a, pip: o, loop: s, activePlayer: c, disableDeferredLoading: l } = this.props;
1286
+ if (!(0, v.default)(e.url, t)) {
1287
+ if (this.isLoading && !c.forceLoad && !l && !(0, b.isMediaStream)(t)) {
1288
+ console.warn(`ReactPlayer: the attempt to load ${t} is being deferred until the player has loaded`), this.loadOnReady = t;
1289
+ return;
1290
+ }
1291
+ this.isLoading = !0, this.startOnPlay = !0, this.onDurationCalled = !1, this.player.load(t, this.isReady);
1292
+ }
1293
+ !e.playing && n && !this.isPlaying && this.player.play(), e.playing && !n && this.isPlaying && this.player.pause(), !e.pip && o && this.player.enablePIP && this.player.enablePIP(), e.pip && !o && this.player.disablePIP && this.player.disablePIP(), e.volume !== r && r !== null && this.player.setVolume(r), e.muted !== i && (i ? this.player.mute() : (this.player.unmute(), r !== null && setTimeout(() => this.player.setVolume(r)))), e.playbackRate !== a && this.player.setPlaybackRate && this.player.setPlaybackRate(a), e.loop !== s && this.player.setLoop && this.player.setLoop(s);
1294
+ }
1295
+ getDuration() {
1296
+ return this.isReady ? this.player.getDuration() : null;
1297
+ }
1298
+ getCurrentTime() {
1299
+ return this.isReady ? this.player.getCurrentTime() : null;
1300
+ }
1301
+ getSecondsLoaded() {
1302
+ return this.isReady ? this.player.getSecondsLoaded() : null;
1303
+ }
1304
+ seekTo(e, t, n) {
1305
+ if (!this.isReady) {
1306
+ e !== 0 && (this.seekOnPlay = e, setTimeout(() => {
1307
+ this.seekOnPlay = null;
1308
+ }, S));
1309
+ return;
1310
+ }
1311
+ if (t ? t === "fraction" : e > 0 && e < 1) {
1312
+ let t = this.player.getDuration();
1313
+ if (!t) {
1314
+ console.warn("ReactPlayer: could not seek using fraction –\xA0duration not yet available");
1315
+ return;
1316
+ }
1317
+ this.player.seekTo(t * e, n);
1318
+ return;
1319
+ }
1320
+ this.player.seekTo(e, n);
1321
+ }
1322
+ render() {
1323
+ let e = this.props.activePlayer;
1324
+ return e ? /* @__PURE__ */ _.default.createElement(e, {
1325
+ ...this.props,
1326
+ onMount: this.handlePlayerMount,
1327
+ onReady: this.handleReady,
1328
+ onPlay: this.handlePlay,
1329
+ onPause: this.handlePause,
1330
+ onEnded: this.handleEnded,
1331
+ onLoaded: this.handleLoaded,
1332
+ onError: this.handleError
1333
+ }) : null;
1334
+ }
1335
+ };
1336
+ h(C, "displayName", "Player"), h(C, "propTypes", y.propTypes), h(C, "defaultProps", y.defaultProps);
1337
+ })), P = /* @__PURE__ */ i(((t, n) => {
1338
+ var r = Object.create, i = Object.defineProperty, a = Object.getOwnPropertyDescriptor, o = Object.getOwnPropertyNames, s = Object.getPrototypeOf, c = Object.prototype.hasOwnProperty, l = (e, t, n) => t in e ? i(e, t, {
1339
+ enumerable: !0,
1340
+ configurable: !0,
1341
+ writable: !0,
1342
+ value: n
1343
+ }) : e[t] = n, u = (e, t) => {
1344
+ for (var n in t) i(e, n, {
1345
+ get: t[n],
1346
+ enumerable: !0
1347
+ });
1348
+ }, p = (e, t, n, r) => {
1349
+ if (t && typeof t == "object" || typeof t == "function") for (let s of o(t)) !c.call(e, s) && s !== n && i(e, s, {
1350
+ get: () => t[s],
1351
+ enumerable: !(r = a(t, s)) || r.enumerable
1352
+ });
1353
+ return e;
1354
+ }, m = (e, t, n) => (n = e == null ? {} : r(s(e)), p(t || !e || !e.__esModule ? i(n, "default", {
1355
+ value: e,
1356
+ enumerable: !0
1357
+ }) : n, e)), g = (e) => p(i({}, "__esModule", { value: !0 }), e), _ = (e, t, n) => (l(e, typeof t == "symbol" ? t : t + "", n), n), v = {};
1358
+ u(v, { createReactPlayer: () => I }), n.exports = g(v);
1359
+ var y = m(e("react")), S = m(d()), C = m((b(), g(h))), w = m(x()), T = M(), E = f(), D = m(N()), O = (0, E.lazy)(() => import(
1360
+ /* webpackChunkName: 'reactPlayerPreview' */
1361
+ "./Preview-CJn6Bg2U.js"
1362
+ ).then((e) => /* @__PURE__ */ m(e.default))), k = typeof window < "u" && window.document && typeof document < "u", A = typeof global < "u" && global.window && global.window.document, j = Object.keys(T.propTypes), P = k || A ? y.Suspense : () => null, F = [], I = (e, t) => {
1363
+ var n;
1364
+ return n = class extends y.Component {
1365
+ constructor() {
1366
+ super(...arguments), _(this, "state", { showPreview: !!this.props.light }), _(this, "references", {
1367
+ wrapper: (e) => {
1368
+ this.wrapper = e;
1369
+ },
1370
+ player: (e) => {
1371
+ this.player = e;
1372
+ }
1373
+ }), _(this, "handleClickPreview", (e) => {
1374
+ this.setState({ showPreview: !1 }), this.props.onClickPreview(e);
1375
+ }), _(this, "showPreview", () => {
1376
+ this.setState({ showPreview: !0 });
1377
+ }), _(this, "getDuration", () => this.player ? this.player.getDuration() : null), _(this, "getCurrentTime", () => this.player ? this.player.getCurrentTime() : null), _(this, "getSecondsLoaded", () => this.player ? this.player.getSecondsLoaded() : null), _(this, "getInternalPlayer", (e = "player") => this.player ? this.player.getInternalPlayer(e) : null), _(this, "seekTo", (e, t, n) => {
1378
+ if (!this.player) return null;
1379
+ this.player.seekTo(e, t, n);
1380
+ }), _(this, "handleReady", () => {
1381
+ this.props.onReady(this);
1382
+ }), _(this, "getActivePlayer", (0, C.default)((n) => {
1383
+ for (let t of [...F, ...e]) if (t.canPlay(n)) return t;
1384
+ return t || null;
1385
+ })), _(this, "getConfig", (0, C.default)((e, t) => {
1386
+ let { config: n } = this.props;
1387
+ return S.default.all([
1388
+ T.defaultProps.config,
1389
+ T.defaultProps.config[t] || {},
1390
+ n,
1391
+ n[t] || {}
1392
+ ]);
1393
+ })), _(this, "getAttributes", (0, C.default)((e) => (0, E.omit)(this.props, j))), _(this, "renderActivePlayer", (e) => {
1394
+ if (!e) return null;
1395
+ let t = this.getActivePlayer(e);
1396
+ if (!t) return null;
1397
+ let n = this.getConfig(e, t.key);
1398
+ return /* @__PURE__ */ y.default.createElement(D.default, {
1399
+ ...this.props,
1400
+ key: t.key,
1401
+ ref: this.references.player,
1402
+ config: n,
1403
+ activePlayer: t.lazyPlayer || t,
1404
+ onReady: this.handleReady
1405
+ });
1406
+ });
1407
+ }
1408
+ shouldComponentUpdate(e, t) {
1409
+ return !(0, w.default)(this.props, e) || !(0, w.default)(this.state, t);
1410
+ }
1411
+ componentDidUpdate(e) {
1412
+ let { light: t } = this.props;
1413
+ !e.light && t && this.setState({ showPreview: !0 }), e.light && !t && this.setState({ showPreview: !1 });
1414
+ }
1415
+ renderPreview(e) {
1416
+ if (!e) return null;
1417
+ let { light: t, playIcon: n, previewTabIndex: r, oEmbedUrl: i, previewAriaLabel: a } = this.props;
1418
+ return /* @__PURE__ */ y.default.createElement(O, {
1419
+ url: e,
1420
+ light: t,
1421
+ playIcon: n,
1422
+ previewTabIndex: r,
1423
+ previewAriaLabel: a,
1424
+ oEmbedUrl: i,
1425
+ onClick: this.handleClickPreview
1426
+ });
1427
+ }
1428
+ render() {
1429
+ let { url: e, style: t, width: n, height: r, fallback: i, wrapper: a } = this.props, { showPreview: o } = this.state, s = this.getAttributes(e), c = typeof a == "string" ? this.references.wrapper : void 0;
1430
+ return /* @__PURE__ */ y.default.createElement(a, {
1431
+ ref: c,
1432
+ style: {
1433
+ ...t,
1434
+ width: n,
1435
+ height: r
1436
+ },
1437
+ ...s
1438
+ }, /* @__PURE__ */ y.default.createElement(P, { fallback: i }, o ? this.renderPreview(e) : this.renderActivePlayer(e)));
1439
+ }
1440
+ }, _(n, "displayName", "ReactPlayer"), _(n, "propTypes", T.propTypes), _(n, "defaultProps", T.defaultProps), _(n, "addCustomPlayer", (e) => {
1441
+ F.push(e);
1442
+ }), _(n, "removeCustomPlayers", () => {
1443
+ F.length = 0;
1444
+ }), _(n, "canPlay", (t) => {
1445
+ for (let n of [...F, ...e]) if (n.canPlay(t)) return !0;
1446
+ return !1;
1447
+ }), _(n, "canEnablePIP", (t) => {
1448
+ for (let n of [...F, ...e]) if (n.canEnablePIP && n.canEnablePIP(t)) return !0;
1449
+ return !1;
1450
+ }), n;
1451
+ };
1452
+ })), F = /* @__PURE__ */ i(((e, t) => {
1453
+ var n = Object.create, r = Object.defineProperty, i = Object.getOwnPropertyDescriptor, a = Object.getOwnPropertyNames, o = Object.getPrototypeOf, s = Object.prototype.hasOwnProperty, c = (e, t) => {
1454
+ for (var n in t) r(e, n, {
1455
+ get: t[n],
1456
+ enumerable: !0
1457
+ });
1458
+ }, l = (e, t, n, o) => {
1459
+ if (t && typeof t == "object" || typeof t == "function") for (let c of a(t)) !s.call(e, c) && c !== n && r(e, c, {
1460
+ get: () => t[c],
1461
+ enumerable: !(o = i(t, c)) || o.enumerable
1462
+ });
1463
+ return e;
1464
+ }, u = (e, t, i) => (i = e == null ? {} : n(o(e)), l(t || !e || !e.__esModule ? r(i, "default", {
1465
+ value: e,
1466
+ enumerable: !0
1467
+ }) : i, e)), d = (e) => l(r({}, "__esModule", { value: !0 }), e), f = {};
1468
+ c(f, { default: () => _ }), t.exports = d(f);
1469
+ var p = u(m()), h = P(), g = p.default[p.default.length - 1], _ = (0, h.createReactPlayer)(p.default, g);
1470
+ })), I = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), L = (...e) => e.filter((e, t, n) => !!e && n.indexOf(e) === t).join(" "), R = {
1471
+ xmlns: "http://www.w3.org/2000/svg",
1472
+ width: 24,
1473
+ height: 24,
1474
+ viewBox: "0 0 24 24",
1475
+ fill: "none",
1476
+ stroke: "currentColor",
1477
+ strokeWidth: 2,
1478
+ strokeLinecap: "round",
1479
+ strokeLinejoin: "round"
1480
+ }, z = o(({ color: e = "currentColor", size: t = 24, strokeWidth: n = 2, absoluteStrokeWidth: r, className: i = "", children: o, iconNode: s, ...c }, l) => a("svg", {
1481
+ ref: l,
1482
+ ...R,
1483
+ width: t,
1484
+ height: t,
1485
+ stroke: e,
1486
+ strokeWidth: r ? Number(n) * 24 / Number(t) : n,
1487
+ className: L("lucide", i),
1488
+ ...c
1489
+ }, [...s.map(([e, t]) => a(e, t)), ...Array.isArray(o) ? o : [o]])), B = (e, t) => {
1490
+ let n = o(({ className: n, ...r }, i) => a(z, {
1491
+ ref: i,
1492
+ iconNode: t,
1493
+ className: L(`lucide-${I(e)}`, n),
1494
+ ...r
1495
+ }));
1496
+ return n.displayName = `${e}`, n;
1497
+ }, V = B("FileJson", [
1498
+ ["path", {
1499
+ d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",
1500
+ key: "1rqfz7"
1501
+ }],
1502
+ ["path", {
1503
+ d: "M14 2v4a2 2 0 0 0 2 2h4",
1504
+ key: "tnqrlb"
1505
+ }],
1506
+ ["path", {
1507
+ d: "M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",
1508
+ key: "1oajmo"
1509
+ }],
1510
+ ["path", {
1511
+ d: "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",
1512
+ key: "mpwhp6"
1513
+ }]
1514
+ ]), ee = B("Mic", [
1515
+ ["path", {
1516
+ d: "M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z",
1517
+ key: "131961"
1518
+ }],
1519
+ ["path", {
1520
+ d: "M19 10v2a7 7 0 0 1-14 0v-2",
1521
+ key: "1vc78b"
1522
+ }],
1523
+ ["line", {
1524
+ x1: "12",
1525
+ x2: "12",
1526
+ y1: "19",
1527
+ y2: "22",
1528
+ key: "x3vr5v"
1529
+ }]
1530
+ ]), te = B("Pause", [["rect", {
1531
+ x: "14",
1532
+ y: "4",
1533
+ width: "4",
1534
+ height: "16",
1535
+ rx: "1",
1536
+ key: "zuxfzm"
1537
+ }], ["rect", {
1538
+ x: "6",
1539
+ y: "4",
1540
+ width: "4",
1541
+ height: "16",
1542
+ rx: "1",
1543
+ key: "1okwgv"
1544
+ }]]), H = B("Play", [["polygon", {
1545
+ points: "6 3 20 12 6 21 6 3",
1546
+ key: "1oa8hb"
1547
+ }]]), ne = B("RefreshCw", [
1548
+ ["path", {
1549
+ d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",
1550
+ key: "v9h5vc"
1551
+ }],
1552
+ ["path", {
1553
+ d: "M21 3v5h-5",
1554
+ key: "1q7to0"
1555
+ }],
1556
+ ["path", {
1557
+ d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",
1558
+ key: "3uifl3"
1559
+ }],
1560
+ ["path", {
1561
+ d: "M8 16H3v5",
1562
+ key: "1cv678"
1563
+ }]
1564
+ ]), re = B("RotateCcw", [["path", {
1565
+ d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
1566
+ key: "1357e3"
1567
+ }], ["path", {
1568
+ d: "M3 3v5h5",
1569
+ key: "1xhq8a"
1570
+ }]]), ie = B("RotateCw", [["path", {
1571
+ d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",
1572
+ key: "1p45f6"
1573
+ }], ["path", {
1574
+ d: "M21 3v5h-5",
1575
+ key: "1q7to0"
1576
+ }]]), ae = B("Send", [["path", {
1577
+ d: "m22 2-7 20-4-9-9-4Z",
1578
+ key: "1q3vgg"
1579
+ }], ["path", {
1580
+ d: "M22 2 11 13",
1581
+ key: "nzbqef"
1582
+ }]]), oe = B("Settings", [["path", {
1583
+ d: "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",
1584
+ key: "1qme2f"
1585
+ }], ["circle", {
1586
+ cx: "12",
1587
+ cy: "12",
1588
+ r: "3",
1589
+ key: "1v7zrd"
1590
+ }]]), se = B("Sparkles", [
1591
+ ["path", {
1592
+ d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",
1593
+ key: "4pj2yx"
1594
+ }],
1595
+ ["path", {
1596
+ d: "M20 3v4",
1597
+ key: "1olli1"
1598
+ }],
1599
+ ["path", {
1600
+ d: "M22 5h-4",
1601
+ key: "1gvqau"
1602
+ }],
1603
+ ["path", {
1604
+ d: "M4 17v2",
1605
+ key: "vumght"
1606
+ }],
1607
+ ["path", {
1608
+ d: "M5 18H3",
1609
+ key: "zchphs"
1610
+ }]
1611
+ ]), ce = B("User", [["path", {
1612
+ d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",
1613
+ key: "975kel"
1614
+ }], ["circle", {
1615
+ cx: "12",
1616
+ cy: "7",
1617
+ r: "4",
1618
+ key: "17ys0d"
1619
+ }]]), le = B("Volume2", [
1620
+ ["polygon", {
1621
+ points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5",
1622
+ key: "16drj5"
1623
+ }],
1624
+ ["path", {
1625
+ d: "M15.54 8.46a5 5 0 0 1 0 7.07",
1626
+ key: "ltjumu"
1627
+ }],
1628
+ ["path", {
1629
+ d: "M19.07 4.93a10 10 0 0 1 0 14.14",
1630
+ key: "1kegas"
1631
+ }]
1632
+ ]), ue = B("VolumeX", [
1633
+ ["polygon", {
1634
+ points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5",
1635
+ key: "16drj5"
1636
+ }],
1637
+ ["line", {
1638
+ x1: "22",
1639
+ x2: "16",
1640
+ y1: "9",
1641
+ y2: "15",
1642
+ key: "1ewh16"
1643
+ }],
1644
+ ["line", {
1645
+ x1: "16",
1646
+ x2: "22",
1647
+ y1: "9",
1648
+ y2: "15",
1649
+ key: "5ykzw1"
1650
+ }]
1651
+ ]), U = /* @__PURE__ */ i(((e) => {
1652
+ var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
1653
+ function r(e, n, r) {
1654
+ var i = null;
1655
+ if (r !== void 0 && (i = "" + r), n.key !== void 0 && (i = "" + n.key), "key" in n) for (var a in r = {}, n) a !== "key" && (r[a] = n[a]);
1656
+ else r = n;
1657
+ return n = r.ref, {
1658
+ $$typeof: t,
1659
+ type: e,
1660
+ key: i,
1661
+ ref: n === void 0 ? null : n,
1662
+ props: r
1663
+ };
1664
+ }
1665
+ e.Fragment = n, e.jsx = r, e.jsxs = r;
1666
+ })), W = /* @__PURE__ */ i(((t) => {
1667
+ process.env.NODE_ENV !== "production" && (function() {
1668
+ function n(e) {
1669
+ if (e == null) return null;
1670
+ if (typeof e == "function") return e.$$typeof === k ? null : e.displayName || e.name || null;
1671
+ if (typeof e == "string") return e;
1672
+ switch (e) {
1673
+ case v: return "Fragment";
1674
+ case b: return "Profiler";
1675
+ case y: return "StrictMode";
1676
+ case w: return "Suspense";
1677
+ case T: return "SuspenseList";
1678
+ case O: return "Activity";
1679
+ }
1680
+ if (typeof e == "object") switch (typeof e.tag == "number" && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), e.$$typeof) {
1681
+ case _: return "Portal";
1682
+ case S: return e.displayName || "Context";
1683
+ case x: return (e._context.displayName || "Context") + ".Consumer";
1684
+ case C:
1685
+ var t = e.render;
1686
+ return e = e.displayName, e ||= (e = t.displayName || t.name || "", e === "" ? "ForwardRef" : "ForwardRef(" + e + ")"), e;
1687
+ case E: return t = e.displayName || null, t === null ? n(e.type) || "Memo" : t;
1688
+ case D:
1689
+ t = e._payload, e = e._init;
1690
+ try {
1691
+ return n(e(t));
1692
+ } catch {}
1693
+ }
1694
+ return null;
1695
+ }
1696
+ function r(e) {
1697
+ return "" + e;
1698
+ }
1699
+ function i(e) {
1700
+ try {
1701
+ r(e);
1702
+ var t = !1;
1703
+ } catch {
1704
+ t = !0;
1705
+ }
1706
+ if (t) {
1707
+ t = console;
1708
+ var n = t.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
1709
+ return n.call(t, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", i), r(e);
1710
+ }
1711
+ }
1712
+ function a(e) {
1713
+ if (e === v) return "<>";
1714
+ if (typeof e == "object" && e && e.$$typeof === D) return "<...>";
1715
+ try {
1716
+ var t = n(e);
1717
+ return t ? "<" + t + ">" : "<...>";
1718
+ } catch {
1719
+ return "<...>";
1720
+ }
1721
+ }
1722
+ function o() {
1723
+ var e = A.A;
1724
+ return e === null ? null : e.getOwner();
1725
+ }
1726
+ function s() {
1727
+ return Error("react-stack-top-frame");
1728
+ }
1729
+ function c(e) {
1730
+ if (j.call(e, "key")) {
1731
+ var t = Object.getOwnPropertyDescriptor(e, "key").get;
1732
+ if (t && t.isReactWarning) return !1;
1733
+ }
1734
+ return e.key !== void 0;
1735
+ }
1736
+ function l(e, t) {
1737
+ function n() {
1738
+ P || (P = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", t));
1739
+ }
1740
+ n.isReactWarning = !0, Object.defineProperty(e, "key", {
1741
+ get: n,
1742
+ configurable: !0
1743
+ });
1744
+ }
1745
+ function u() {
1746
+ var e = n(this.type);
1747
+ return F[e] || (F[e] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")), e = this.props.ref, e === void 0 ? null : e;
1748
+ }
1749
+ function d(e, t, n, r, i, a) {
1750
+ var o = n.ref;
1751
+ return e = {
1752
+ $$typeof: g,
1753
+ type: e,
1754
+ key: t,
1755
+ props: n,
1756
+ _owner: r
1757
+ }, (o === void 0 ? null : o) === null ? Object.defineProperty(e, "ref", {
1758
+ enumerable: !1,
1759
+ value: null
1760
+ }) : Object.defineProperty(e, "ref", {
1761
+ enumerable: !1,
1762
+ get: u
1763
+ }), e._store = {}, Object.defineProperty(e._store, "validated", {
1764
+ configurable: !1,
1765
+ enumerable: !1,
1766
+ writable: !0,
1767
+ value: 0
1768
+ }), Object.defineProperty(e, "_debugInfo", {
1769
+ configurable: !1,
1770
+ enumerable: !1,
1771
+ writable: !0,
1772
+ value: null
1773
+ }), Object.defineProperty(e, "_debugStack", {
1774
+ configurable: !1,
1775
+ enumerable: !1,
1776
+ writable: !0,
1777
+ value: i
1778
+ }), Object.defineProperty(e, "_debugTask", {
1779
+ configurable: !1,
1780
+ enumerable: !1,
1781
+ writable: !0,
1782
+ value: a
1783
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
1784
+ }
1785
+ function f(e, t, r, a, s, u) {
1786
+ var f = t.children;
1787
+ if (f !== void 0) if (a) if (M(f)) {
1788
+ for (a = 0; a < f.length; a++) p(f[a]);
1789
+ Object.freeze && Object.freeze(f);
1790
+ } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
1791
+ else p(f);
1792
+ if (j.call(t, "key")) {
1793
+ f = n(e);
1794
+ var m = Object.keys(t).filter(function(e) {
1795
+ return e !== "key";
1796
+ });
1797
+ a = 0 < m.length ? "{key: someKey, " + m.join(": ..., ") + ": ...}" : "{key: someKey}", R[f + a] || (m = 0 < m.length ? "{" + m.join(": ..., ") + ": ...}" : "{}", console.error("A props object containing a \"key\" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />", a, f, m, f), R[f + a] = !0);
1798
+ }
1799
+ if (f = null, r !== void 0 && (i(r), f = "" + r), c(t) && (i(t.key), f = "" + t.key), "key" in t) for (var h in r = {}, t) h !== "key" && (r[h] = t[h]);
1800
+ else r = t;
1801
+ return f && l(r, typeof e == "function" ? e.displayName || e.name || "Unknown" : e), d(e, f, r, o(), s, u);
1802
+ }
1803
+ function p(e) {
1804
+ m(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e && e.$$typeof === D && (e._payload.status === "fulfilled" ? m(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
1805
+ }
1806
+ function m(e) {
1807
+ return typeof e == "object" && !!e && e.$$typeof === g;
1808
+ }
1809
+ var h = e("react"), g = Symbol.for("react.transitional.element"), _ = Symbol.for("react.portal"), v = Symbol.for("react.fragment"), y = Symbol.for("react.strict_mode"), b = Symbol.for("react.profiler"), x = Symbol.for("react.consumer"), S = Symbol.for("react.context"), C = Symbol.for("react.forward_ref"), w = Symbol.for("react.suspense"), T = Symbol.for("react.suspense_list"), E = Symbol.for("react.memo"), D = Symbol.for("react.lazy"), O = Symbol.for("react.activity"), k = Symbol.for("react.client.reference"), A = h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, j = Object.prototype.hasOwnProperty, M = Array.isArray, N = console.createTask ? console.createTask : function() {
1810
+ return null;
1811
+ };
1812
+ h = { react_stack_bottom_frame: function(e) {
1813
+ return e();
1814
+ } };
1815
+ var P, F = {}, I = h.react_stack_bottom_frame.bind(h, s)(), L = N(a(s)), R = {};
1816
+ t.Fragment = v, t.jsx = function(e, t, n) {
1817
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
1818
+ return f(e, t, n, !1, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
1819
+ }, t.jsxs = function(e, t, n) {
1820
+ var r = 1e4 > A.recentlyCreatedOwnerStacks++;
1821
+ return f(e, t, n, !0, r ? Error("react-stack-top-frame") : I, r ? N(a(e)) : L);
1822
+ };
1823
+ })();
1824
+ })), G = /* @__PURE__ */ i(((e, t) => {
1825
+ process.env.NODE_ENV === "production" ? t.exports = U() : t.exports = W();
1826
+ })), de = /* @__PURE__ */ n(F(), 1), K = G(), fe = ({ animationData: e }) => {
1827
+ let t = c(null);
1828
+ return s(() => {
1829
+ let n = t.current;
1830
+ if (!n) return;
1831
+ let r = n.getContext("2d"), i, a = 0, o = 0, s = () => {
1832
+ let e = n.getBoundingClientRect();
1833
+ n.width = e.width, n.height = e.height, a = e.width, o = e.height;
1834
+ };
1835
+ s(), window.addEventListener("resize", s);
1836
+ let c = 0, l = [], u = [
1837
+ {
1838
+ name: "main()",
1839
+ value: "?"
1840
+ },
1841
+ {
1842
+ name: "factorial(3)",
1843
+ value: "3 * factorial(2)"
1844
+ },
1845
+ {
1846
+ name: "factorial(2)",
1847
+ value: "2 * factorial(1)"
1848
+ },
1849
+ {
1850
+ name: "factorial(1)",
1851
+ value: "1 (Base Case)"
1852
+ }
1853
+ ], d = 0, f = 0;
1854
+ class p {
1855
+ constructor(e, t, n, r, i, a, o) {
1856
+ this.x = e, this.y = t, this.tx = n, this.ty = r, this.speed = i, this.color = a, this.size = o, this.alpha = 1;
1857
+ }
1858
+ update() {
1859
+ let e = this.tx - this.x, t = this.ty - this.y, n = Math.sqrt(e * e + t * t);
1860
+ return n < 2 ? (this.alpha -= .05, !1) : (this.x += e / n * this.speed, this.y += t / n * this.speed, !0);
1861
+ }
1862
+ draw(e) {
1863
+ e.save(), e.globalAlpha = Math.max(0, this.alpha), e.beginPath(), e.arc(this.x, this.y, this.size, 0, Math.PI * 2), e.fillStyle = this.color, e.shadowBlur = 10, e.shadowColor = this.color, e.fill(), e.restore();
1864
+ }
1865
+ }
1866
+ let m = () => {
1867
+ c++, r.clearRect(0, 0, a, o);
1868
+ let t = e?.state || "explaining", n = e?.topic || "recursion";
1869
+ if (r.save(), r.fillStyle = "rgba(13, 14, 18, 0.4)", r.fillRect(0, 0, a, o), r.strokeStyle = "rgba(99, 102, 241, 0.4)", r.lineWidth = 2, r.beginPath(), r.moveTo(15, o - 15 - 10), r.lineTo(15, o - 15), r.lineTo(25, o - 15), r.stroke(), r.beginPath(), r.moveTo(a - 15, o - 15 - 10), r.lineTo(a - 15, o - 15), r.lineTo(a - 15 - 10, o - 15), r.stroke(), r.font = "10px monospace", r.fillStyle = "rgba(255, 255, 255, 0.5)", r.fillText(`HUD // CONCEPT: ${n.toUpperCase()} // STATE: ${t.toUpperCase()}`, 30, o - 15 - 8), r.restore(), n === "recursion") {
1870
+ f++, f % 90 == 0 && (d = (d + 1) % (u.length + 3));
1871
+ let e = a * .45, t = a / 2 - e / 2, n = o * .7;
1872
+ r.fillStyle = "rgba(255, 255, 255, 0.3)", r.font = "10px monospace", r.fillText("CALL STACK MEMORY", t, n + 36), r.strokeStyle = "rgba(255,255,255,0.08)", r.strokeRect(t - 10, n - 120, e + 20, 140);
1873
+ for (let i = 0; i < u.length; i++) {
1874
+ let a = n - i * 30, o = u[i], s = !1, c = !1;
1875
+ if (d < u.length) s = i <= d;
1876
+ else {
1877
+ let e = d - u.length;
1878
+ s = i < u.length - e, c = i === u.length - e;
1879
+ }
1880
+ s && (r.save(), r.fillStyle = c ? "rgba(16, 185, 129, 0.25)" : "rgba(99, 102, 241, 0.15)", r.strokeStyle = c ? "#10b981" : "rgba(99, 102, 241, 0.6)", r.lineWidth = 1.5, r.shadowBlur = c ? 15 : 6, r.shadowColor = c ? "#10b981" : "#6366f1", r.fillRect(t, a, e, 22), r.strokeRect(t, a, e, 22), r.font = "bold 10px monospace", r.fillStyle = "#ffffff", r.fillText(o.name, t + 10, a + 15), r.font = "9px monospace", r.fillStyle = c ? "#34d399" : "rgba(255, 255, 255, 0.7)", r.fillText(c ? "returns value ✓" : o.value, t + e - 130, a + 15), r.restore());
1881
+ }
1882
+ } else if (n === "conditionals") {
1883
+ let e = a / 2, t = o / 2 - 10;
1884
+ if (r.save(), r.strokeStyle = "rgba(255, 255, 255, 0.1)", r.lineWidth = 3, r.beginPath(), r.moveTo(e - 120, t), r.lineTo(e - 35, t), r.stroke(), r.strokeStyle = "rgba(139, 92, 246, 0.6)", r.fillStyle = "rgba(139, 92, 246, 0.08)", r.beginPath(), r.moveTo(e, t - 25), r.lineTo(e + 35, t), r.lineTo(e, t + 25), r.lineTo(e - 35, t), r.closePath(), r.fill(), r.stroke(), r.font = "bold 9px monospace", r.fillStyle = "#ffffff", r.textAlign = "center", r.fillText("IF CONDITION", e, t + 3), r.strokeStyle = "rgba(255, 255, 255, 0.1)", r.beginPath(), r.moveTo(e + 35, t), r.lineTo(e + 65, t - 40), r.lineTo(e + 140, t - 40), r.stroke(), r.beginPath(), r.moveTo(e + 35, t), r.lineTo(e + 65, t + 40), r.lineTo(e + 140, t + 40), r.stroke(), r.font = "10px sans-serif", r.fillStyle = "#10b981", r.fillText("TRUE", e + 90, t - 46), r.fillStyle = "#ef4444", r.fillText("FALSE", e + 90, t + 34), c % 30 == 0) {
1885
+ let n = Math.random() > .5, r = [
1886
+ {
1887
+ x: e - 120,
1888
+ y: t
1889
+ },
1890
+ {
1891
+ x: e - 35,
1892
+ y: t
1893
+ },
1894
+ {
1895
+ x: e,
1896
+ y: t
1897
+ },
1898
+ {
1899
+ x: e + 65,
1900
+ y: n ? t - 40 : t + 40
1901
+ },
1902
+ {
1903
+ x: e + 140,
1904
+ y: n ? t - 40 : t + 40
1905
+ }
1906
+ ], i = 0, a = () => {
1907
+ if (i >= r.length - 1) return;
1908
+ let e = r[i], t = r[i + 1];
1909
+ l.push(new p(e.x, e.y, t.x, t.y, 3, n ? "#10b981" : "#ef4444", 3)), i++, setTimeout(() => a(), 300);
1910
+ };
1911
+ a();
1912
+ }
1913
+ r.restore();
1914
+ } else if (n === "base_case") {
1915
+ let e = a * .15, t = a * .75, n = o / 2;
1916
+ r.save(), r.strokeStyle = "rgba(255, 255, 255, 0.05)", r.lineWidth = 30, r.beginPath(), r.moveTo(e, n), r.lineTo(t, n), r.stroke(), r.font = "10px monospace", r.fillStyle = "rgba(255, 255, 255, 0.4)", r.fillText("Recursive Call Steps...", e + 20, n - 25), r.fillStyle = "rgba(239, 68, 68, 0.15)", r.strokeStyle = "#ef4444", r.lineWidth = 3, r.shadowBlur = 15, r.shadowColor = "#ef4444", r.fillRect(t, n - 30, 15, 60), r.strokeRect(t, n - 30, 15, 60), r.font = "bold 9px monospace", r.fillStyle = "#ffffff", r.textAlign = "center", r.fillText("B", t + 7, n - 15), r.fillText("A", t + 7, n - 5), r.fillText("S", t + 7, n + 5), r.fillText("E", t + 7, n + 15), c % 20 == 0 && l.push(new p(e, n + (Math.random() * 12 - 6), t, n, 3.5, "#a78bfa", 3)), r.restore();
1917
+ } else if (n === "functions") {
1918
+ let e = a / 2, t = o / 2;
1919
+ r.save(), r.fillStyle = "rgba(99, 102, 241, 0.08)", r.strokeStyle = "#6366f1", r.lineWidth = 2, r.shadowBlur = 10, r.shadowColor = "#6366f1", r.fillRect(e - 70 / 2, t - 70 / 2, 70, 70), r.strokeRect(e - 70 / 2, t - 70 / 2, 70, 70), r.font = "bold 10px monospace", r.fillStyle = "#ffffff", r.textAlign = "center", r.fillText("def func()", e, t + 4), r.strokeStyle = "rgba(255, 255, 255, 0.07)", r.lineWidth = 6, r.beginPath(), r.moveTo(e - 130, t), r.lineTo(e - 70 / 2, t), r.stroke(), r.beginPath(), r.moveTo(e + 70 / 2, t), r.lineTo(e + 130, t), r.stroke(), r.font = "9px monospace", r.fillStyle = "rgba(255, 255, 255, 0.5)", r.fillText("INPUT", e - 100, t - 10), r.fillText("RETURN", e + 100, t - 10), c % 45 == 0 && (l.push(new p(e - 130, t, e - 70 / 2, t, 2, "#60a5fa", 4)), setTimeout(() => {
1920
+ l.push(new p(e + 70 / 2, t, e + 130, t, 3, "#34d399", 4));
1921
+ }, 800)), r.restore();
1922
+ }
1923
+ for (let e = l.length - 1; e >= 0; e--) {
1924
+ let t = l[e];
1925
+ !t.update() || t.alpha <= 0 ? l.splice(e, 1) : t.draw(r);
1926
+ }
1927
+ i = requestAnimationFrame(m);
1928
+ };
1929
+ return m(), () => {
1930
+ window.removeEventListener("resize", s), cancelAnimationFrame(i);
1931
+ };
1932
+ }, [e]), /* @__PURE__ */ (0, K.jsx)("canvas", {
1933
+ ref: t,
1934
+ className: "tutor-whiteboard-overlay",
1935
+ style: {
1936
+ position: "absolute",
1937
+ top: 0,
1938
+ left: 0,
1939
+ width: "100%",
1940
+ height: "100%",
1941
+ pointerEvents: "none",
1942
+ zIndex: 10
1943
+ }
1944
+ });
1945
+ }, q = ({ src: e, backendUrl: t = "ws://localhost:8000/ws", resourcesUrl: n = "" }) => {
1946
+ let r = c(null), i = c(null), [a, o] = l(null), [u, d] = l([{
1947
+ role: "assistant",
1948
+ text: "Welcome! Play the lesson video below. When you have any doubt, click 'Interrupt Tutor' or type below, and we will pause the video to explain step-by-step!"
1949
+ }]), [f, p] = l(!1), [m, h] = l(""), [g, _] = l("recursion"), [v, y] = l("explaining"), [b, x] = l(n), [S, C] = l(""), [w, T] = l(!1), [E, D] = l(null), [O, k] = l(!1), [A, j] = l(0), [M, N] = l(0), [P, F] = l(1), [I, L] = l(!1), [R, z] = l("Auto"), [B, U] = l(1), [W, G] = l(!1), [q, J] = l(!1), [Y, X] = l("main"), [Z, Q] = l(!1);
1950
+ s(() => {
1951
+ let e = localStorage.getItem("ai_tutor_student_id");
1952
+ e || (e = "student_" + Math.random().toString(36).substring(2, 11), localStorage.setItem("ai_tutor_student_id", e)), C(e);
1953
+ }, []), s(() => {
1954
+ if (!S) return;
1955
+ console.log("AITutor: Connecting to WebSocket:", t);
1956
+ let e = new WebSocket(t);
1957
+ return e.onopen = () => {
1958
+ console.log("AITutor: WebSocket connection established."), T(!0);
1959
+ }, e.onmessage = (e) => {
1960
+ try {
1961
+ let t = JSON.parse(e.data);
1962
+ if (console.log("AITutor: Received message:", t), t.type === "TOKEN_STREAM" || t.type === "STATE_CHANGE") {
1963
+ let e = t.payload || {}, n = e.text || "", r = e.state || "explaining", i = e.concept || "recursion";
1964
+ y(r), e.concept && _(e.concept), d((e) => [...e, {
1965
+ role: "assistant",
1966
+ text: n
1967
+ }]), D({
1968
+ state: r,
1969
+ topic: i,
1970
+ timestamp: Date.now()
1971
+ });
1972
+ }
1973
+ } catch (e) {
1974
+ console.error("AITutor: Error parsing WebSocket message:", e);
1975
+ }
1976
+ }, e.onerror = (e) => {
1977
+ console.error("AITutor: WebSocket error:", e), T(!1);
1978
+ }, e.onclose = () => {
1979
+ console.log("AITutor: WebSocket connection closed."), T(!1);
1980
+ }, o(e), () => {
1981
+ e.close();
1982
+ };
1983
+ }, [t, S]), s(() => {
1984
+ i.current?.scrollIntoView({ behavior: "smooth" });
1985
+ }, [u]);
1986
+ let pe = () => {
1987
+ O ? k(!1) : (Z && Q(!1), k(!0));
1988
+ }, me = (e) => {
1989
+ if (Z || !r.current) return;
1990
+ let t = parseFloat(e.target.value);
1991
+ r.current.seekTo(t, "seconds"), j(t);
1992
+ }, he = () => {
1993
+ if (Z || !r.current) return;
1994
+ let e = Math.min(M, A + 10);
1995
+ r.current.seekTo(e, "seconds"), j(e);
1996
+ }, ge = () => {
1997
+ if (Z || !r.current) return;
1998
+ let e = Math.max(0, A - 10);
1999
+ r.current.seekTo(e, "seconds"), j(e);
2000
+ }, _e = (e) => {
2001
+ let t = parseFloat(e.target.value);
2002
+ F(t), L(t === 0);
2003
+ }, ve = () => {
2004
+ let e = !I;
2005
+ L(e), !e && P === 0 && F(.5);
2006
+ }, ye = (e) => {
2007
+ z(e), J(!1);
2008
+ }, be = (e) => {
2009
+ U(e), J(!1);
2010
+ }, xe = (e) => {
2011
+ G(e), J(!1);
2012
+ }, Se = (e) => {
2013
+ if (isNaN(e)) return "0:00";
2014
+ let t = Math.floor(e / 60), n = Math.floor(e % 60);
2015
+ return `${t}:${n < 10 ? "0" : ""}${n}`;
2016
+ }, Ce = () => W ? A < 25 ? "[Tutor] In this section, we will learn about functions, which are reusable blocks of code designed to perform a specific task." : A < 55 ? "[Tutor] Next, we have conditionals, which allow our code to make decisions using if-else statements." : A < 85 ? "[Tutor] Now let's explore the base case, which is the crucial stopping condition in any recursive process." : "[Tutor] Finally, recursion is when a function calls itself to break down a larger problem into smaller pieces." : "", $ = (e = m) => {
2017
+ !e.trim() || !a || a.readyState !== WebSocket.OPEN || (Z || (Q(!0), k(!1)), d((t) => [...t, {
2018
+ role: "user",
2019
+ text: e
2020
+ }]), a.send(JSON.stringify({
2021
+ type: "QUERY",
2022
+ student_id: S,
2023
+ topic: g,
2024
+ domain: "coding",
2025
+ query: e,
2026
+ timestamp: A,
2027
+ resources_url: b.trim() || null
2028
+ })), h(""));
2029
+ };
2030
+ return /* @__PURE__ */ (0, K.jsxs)("div", {
2031
+ className: `tutor-workspace-root ${Z ? "doubt-active" : ""}`,
2032
+ children: [
2033
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2034
+ className: "tutor-video-container",
2035
+ children: [
2036
+ /* @__PURE__ */ (0, K.jsx)(de.default, {
2037
+ ref: r,
2038
+ url: e,
2039
+ playing: O,
2040
+ volume: I ? 0 : P,
2041
+ playbackRate: B,
2042
+ width: "100%",
2043
+ height: "100%",
2044
+ progressInterval: 250,
2045
+ onProgress: (e) => j(e.playedSeconds),
2046
+ onDuration: (e) => N(e),
2047
+ onPlay: () => k(!0),
2048
+ onPause: () => k(!1),
2049
+ className: "tutor-video-element"
2050
+ }),
2051
+ W && !Z && /* @__PURE__ */ (0, K.jsx)("div", {
2052
+ className: "tutor-subtitle-overlay",
2053
+ children: /* @__PURE__ */ (0, K.jsx)("span", {
2054
+ className: "tutor-subtitle-text",
2055
+ children: Ce()
2056
+ })
2057
+ }),
2058
+ !O && !Z && /* @__PURE__ */ (0, K.jsx)("div", {
2059
+ className: "tutor-play-overlay",
2060
+ onClick: pe,
2061
+ children: /* @__PURE__ */ (0, K.jsx)("div", {
2062
+ className: "tutor-play-overlay-icon",
2063
+ children: /* @__PURE__ */ (0, K.jsx)(H, {
2064
+ size: 36,
2065
+ fill: "white"
2066
+ })
2067
+ })
2068
+ }),
2069
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2070
+ className: "tutor-player-controls",
2071
+ children: [/* @__PURE__ */ (0, K.jsx)("input", {
2072
+ type: "range",
2073
+ min: "0",
2074
+ max: M || 100,
2075
+ value: A,
2076
+ onChange: me,
2077
+ disabled: Z,
2078
+ className: "tutor-progress-bar"
2079
+ }), /* @__PURE__ */ (0, K.jsxs)("div", {
2080
+ className: "tutor-controls-row",
2081
+ children: [
2082
+ /* @__PURE__ */ (0, K.jsx)("button", {
2083
+ className: "tutor-control-btn",
2084
+ onClick: pe,
2085
+ children: O ? /* @__PURE__ */ (0, K.jsx)(te, {
2086
+ size: 18,
2087
+ fill: "white"
2088
+ }) : /* @__PURE__ */ (0, K.jsx)(H, {
2089
+ size: 18,
2090
+ fill: "white"
2091
+ })
2092
+ }),
2093
+ /* @__PURE__ */ (0, K.jsx)("button", {
2094
+ className: "tutor-control-btn",
2095
+ onClick: ge,
2096
+ disabled: Z,
2097
+ title: "Rewind 10s",
2098
+ children: /* @__PURE__ */ (0, K.jsx)(re, { size: 16 })
2099
+ }),
2100
+ /* @__PURE__ */ (0, K.jsx)("button", {
2101
+ className: "tutor-control-btn",
2102
+ onClick: he,
2103
+ disabled: Z,
2104
+ title: "Fast Forward 10s",
2105
+ children: /* @__PURE__ */ (0, K.jsx)(ie, { size: 16 })
2106
+ }),
2107
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2108
+ className: "tutor-volume-container",
2109
+ children: [/* @__PURE__ */ (0, K.jsx)("button", {
2110
+ className: "tutor-control-btn",
2111
+ onClick: ve,
2112
+ children: I || P === 0 ? /* @__PURE__ */ (0, K.jsx)(ue, { size: 18 }) : /* @__PURE__ */ (0, K.jsx)(le, { size: 18 })
2113
+ }), /* @__PURE__ */ (0, K.jsx)("input", {
2114
+ type: "range",
2115
+ min: "0",
2116
+ max: "1",
2117
+ step: "0.05",
2118
+ value: I ? 0 : P,
2119
+ onChange: _e,
2120
+ className: "tutor-volume-slider"
2121
+ })]
2122
+ }),
2123
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2124
+ className: "tutor-time-display",
2125
+ children: [
2126
+ Se(A),
2127
+ " / ",
2128
+ Se(M)
2129
+ ]
2130
+ }),
2131
+ /* @__PURE__ */ (0, K.jsx)("div", { style: { flexGrow: 1 } }),
2132
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2133
+ className: "tutor-settings-container",
2134
+ children: [/* @__PURE__ */ (0, K.jsx)("button", {
2135
+ className: "tutor-control-btn",
2136
+ onClick: () => {
2137
+ J(!q), X("main");
2138
+ },
2139
+ children: /* @__PURE__ */ (0, K.jsx)(oe, { size: 18 })
2140
+ }), q && /* @__PURE__ */ (0, K.jsxs)("div", {
2141
+ className: "tutor-quality-menu",
2142
+ children: [
2143
+ Y === "main" && /* @__PURE__ */ (0, K.jsxs)(K.Fragment, { children: [
2144
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2145
+ className: "tutor-quality-item",
2146
+ onClick: () => X("quality"),
2147
+ children: [/* @__PURE__ */ (0, K.jsx)("span", { children: "Quality" }), /* @__PURE__ */ (0, K.jsxs)("span", {
2148
+ style: { color: "rgba(255,255,255,0.4)" },
2149
+ children: [R, " >"]
2150
+ })]
2151
+ }),
2152
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2153
+ className: "tutor-quality-item",
2154
+ onClick: () => X("speed"),
2155
+ children: [/* @__PURE__ */ (0, K.jsx)("span", { children: "Speed" }), /* @__PURE__ */ (0, K.jsxs)("span", {
2156
+ style: { color: "rgba(255,255,255,0.4)" },
2157
+ children: [B, "x >"]
2158
+ })]
2159
+ }),
2160
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2161
+ className: "tutor-quality-item",
2162
+ onClick: () => X("subtitles"),
2163
+ children: [/* @__PURE__ */ (0, K.jsx)("span", { children: "Subtitles" }), /* @__PURE__ */ (0, K.jsxs)("span", {
2164
+ style: { color: "rgba(255,255,255,0.4)" },
2165
+ children: [W ? "On" : "Off", " >"]
2166
+ })]
2167
+ })
2168
+ ] }),
2169
+ Y === "quality" && /* @__PURE__ */ (0, K.jsxs)(K.Fragment, { children: [/* @__PURE__ */ (0, K.jsx)("div", {
2170
+ className: "tutor-quality-item header",
2171
+ onClick: () => X("main"),
2172
+ children: /* @__PURE__ */ (0, K.jsx)("span", {
2173
+ style: { fontWeight: "bold" },
2174
+ children: "< Back"
2175
+ })
2176
+ }), [
2177
+ "1080p",
2178
+ "720p",
2179
+ "480p",
2180
+ "Auto"
2181
+ ].map((e) => /* @__PURE__ */ (0, K.jsxs)("div", {
2182
+ className: `tutor-quality-item ${R === e ? "active" : ""}`,
2183
+ onClick: () => ye(e),
2184
+ children: [e, R === e && /* @__PURE__ */ (0, K.jsx)("span", {
2185
+ style: { fontSize: "10px" },
2186
+ children: "●"
2187
+ })]
2188
+ }, e))] }),
2189
+ Y === "speed" && /* @__PURE__ */ (0, K.jsxs)(K.Fragment, { children: [/* @__PURE__ */ (0, K.jsx)("div", {
2190
+ className: "tutor-quality-item header",
2191
+ onClick: () => X("main"),
2192
+ children: /* @__PURE__ */ (0, K.jsx)("span", {
2193
+ style: { fontWeight: "bold" },
2194
+ children: "< Back"
2195
+ })
2196
+ }), [
2197
+ .5,
2198
+ 1,
2199
+ 1.5,
2200
+ 2
2201
+ ].map((e) => /* @__PURE__ */ (0, K.jsxs)("div", {
2202
+ className: `tutor-quality-item ${B === e ? "active" : ""}`,
2203
+ onClick: () => be(e),
2204
+ children: [
2205
+ e,
2206
+ "x",
2207
+ B === e && /* @__PURE__ */ (0, K.jsx)("span", {
2208
+ style: { fontSize: "10px" },
2209
+ children: "●"
2210
+ })
2211
+ ]
2212
+ }, e))] }),
2213
+ Y === "subtitles" && /* @__PURE__ */ (0, K.jsxs)(K.Fragment, { children: [/* @__PURE__ */ (0, K.jsx)("div", {
2214
+ className: "tutor-quality-item header",
2215
+ onClick: () => X("main"),
2216
+ children: /* @__PURE__ */ (0, K.jsx)("span", {
2217
+ style: { fontWeight: "bold" },
2218
+ children: "< Back"
2219
+ })
2220
+ }), [!0, !1].map((e) => /* @__PURE__ */ (0, K.jsxs)("div", {
2221
+ className: `tutor-quality-item ${W === e ? "active" : ""}`,
2222
+ onClick: () => xe(e),
2223
+ children: [e ? "On" : "Off", W === e && /* @__PURE__ */ (0, K.jsx)("span", {
2224
+ style: { fontSize: "10px" },
2225
+ children: "●"
2226
+ })]
2227
+ }, e ? "on" : "off"))] })
2228
+ ]
2229
+ })]
2230
+ })
2231
+ ]
2232
+ })]
2233
+ })
2234
+ ]
2235
+ }),
2236
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2237
+ className: "tutor-whiteboard-container",
2238
+ children: [/* @__PURE__ */ (0, K.jsx)(fe, { animationData: E }), Z && /* @__PURE__ */ (0, K.jsxs)("div", {
2239
+ style: {
2240
+ position: "absolute",
2241
+ top: "16px",
2242
+ right: "16px",
2243
+ zIndex: 12,
2244
+ display: "flex",
2245
+ gap: "8px"
2246
+ },
2247
+ children: [/* @__PURE__ */ (0, K.jsxs)("button", {
2248
+ className: "tutor-btn",
2249
+ onClick: () => {
2250
+ Q(!1), k(!0);
2251
+ },
2252
+ style: {
2253
+ background: "linear-gradient(135deg, #10b981 0%, #059669 100%)",
2254
+ boxShadow: "0 0 10px rgba(16, 185, 129, 0.4)"
2255
+ },
2256
+ children: [/* @__PURE__ */ (0, K.jsx)(H, {
2257
+ size: 14,
2258
+ fill: "white"
2259
+ }), "Resume Video"]
2260
+ }), /* @__PURE__ */ (0, K.jsx)("button", {
2261
+ className: "tutor-btn",
2262
+ onClick: () => Q(!1),
2263
+ style: {
2264
+ background: "rgba(255,255,255,0.1)",
2265
+ color: "#fff",
2266
+ border: "1px solid rgba(255,255,255,0.15)"
2267
+ },
2268
+ children: "Close Board"
2269
+ })]
2270
+ })]
2271
+ }),
2272
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2273
+ className: "tutor-sidebar",
2274
+ children: [
2275
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2276
+ className: "tutor-header",
2277
+ children: [/* @__PURE__ */ (0, K.jsxs)("div", {
2278
+ style: {
2279
+ display: "flex",
2280
+ alignItems: "center",
2281
+ gap: "6px"
2282
+ },
2283
+ children: [/* @__PURE__ */ (0, K.jsx)(se, {
2284
+ size: 16,
2285
+ style: { color: "#a78bfa" }
2286
+ }), /* @__PURE__ */ (0, K.jsx)("span", {
2287
+ style: {
2288
+ fontWeight: 600,
2289
+ fontSize: "13px"
2290
+ },
2291
+ children: "Tutor Console"
2292
+ })]
2293
+ }), /* @__PURE__ */ (0, K.jsxs)("div", {
2294
+ className: "tutor-status-badge",
2295
+ children: [/* @__PURE__ */ (0, K.jsx)("span", { className: `tutor-status-indicator indicator-${v}` }), v]
2296
+ })]
2297
+ }),
2298
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2299
+ className: "tutor-chat-history",
2300
+ children: [u.map((e, t) => /* @__PURE__ */ (0, K.jsx)("div", {
2301
+ className: `tutor-message message-${e.role}`,
2302
+ children: e.text
2303
+ }, t)), /* @__PURE__ */ (0, K.jsx)("div", { ref: i })]
2304
+ }),
2305
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2306
+ className: "tutor-footer",
2307
+ children: [/* @__PURE__ */ (0, K.jsxs)("div", {
2308
+ className: "tutor-input-row",
2309
+ children: [/* @__PURE__ */ (0, K.jsx)("input", {
2310
+ type: "text",
2311
+ placeholder: Z ? "Answer the tutor or ask details..." : "Type doubt or click Interrupt...",
2312
+ value: m,
2313
+ onChange: (e) => h(e.target.value),
2314
+ onKeyDown: (e) => e.key === "Enter" && $(),
2315
+ className: "tutor-text-input"
2316
+ }), /* @__PURE__ */ (0, K.jsx)("button", {
2317
+ className: "tutor-btn",
2318
+ onClick: () => $(),
2319
+ style: { padding: "10px 12px" },
2320
+ children: /* @__PURE__ */ (0, K.jsx)(ae, { size: 16 })
2321
+ })]
2322
+ }), /* @__PURE__ */ (0, K.jsxs)("div", {
2323
+ style: {
2324
+ display: "flex",
2325
+ justifyContent: "space-between",
2326
+ fontSize: "11px",
2327
+ color: "rgba(255,255,255,0.4)",
2328
+ marginTop: "4px"
2329
+ },
2330
+ children: [/* @__PURE__ */ (0, K.jsxs)("span", {
2331
+ style: {
2332
+ display: "flex",
2333
+ alignItems: "center",
2334
+ gap: "4px"
2335
+ },
2336
+ children: [
2337
+ /* @__PURE__ */ (0, K.jsx)(ce, { size: 10 }),
2338
+ "ID: ",
2339
+ S ? S.substring(0, 12) : "Loading..."
2340
+ ]
2341
+ }), /* @__PURE__ */ (0, K.jsx)("span", {
2342
+ style: {
2343
+ marginLeft: "auto",
2344
+ color: w ? "#10b981" : "#ef4444"
2345
+ },
2346
+ children: w ? "Connected" : "Disconnected"
2347
+ })]
2348
+ })]
2349
+ }),
2350
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2351
+ style: {
2352
+ padding: "8px 16px",
2353
+ display: "flex",
2354
+ gap: "8px",
2355
+ borderTop: "1px solid rgba(255,255,255,0.05)"
2356
+ },
2357
+ children: [/* @__PURE__ */ (0, K.jsxs)("button", {
2358
+ className: "tutor-btn",
2359
+ onClick: () => {
2360
+ !a || a.readyState !== WebSocket.OPEN || (k(!1), Q(!0), a.send(JSON.stringify({
2361
+ type: "INTERRUPT",
2362
+ student_id: S,
2363
+ timestamp: A
2364
+ })), p(!0), setTimeout(() => {
2365
+ p(!1), $("wait, I don't understand this part");
2366
+ }, 1500));
2367
+ },
2368
+ style: {
2369
+ flexGrow: 1,
2370
+ background: "linear-gradient(135deg, #ef4444 0%, #dc2626 100%)",
2371
+ height: "36px"
2372
+ },
2373
+ children: [/* @__PURE__ */ (0, K.jsx)(ee, { size: 14 }), f ? "Listening..." : "Interrupt / Ask Doubt"]
2374
+ }), /* @__PURE__ */ (0, K.jsx)("button", {
2375
+ className: "tutor-btn",
2376
+ onClick: () => {
2377
+ localStorage.removeItem("ai_tutor_student_id");
2378
+ let e = "student_" + Math.random().toString(36).substring(2, 11);
2379
+ localStorage.setItem("ai_tutor_student_id", e), C(e), d([{
2380
+ role: "assistant",
2381
+ text: "Session has been reset. New Student ID generated. How can I help you?"
2382
+ }]), y("explaining"), Q(!1), D(null);
2383
+ },
2384
+ style: {
2385
+ background: "#27272a",
2386
+ padding: "0 10px",
2387
+ height: "36px"
2388
+ },
2389
+ title: "Reset Session",
2390
+ children: /* @__PURE__ */ (0, K.jsx)(ne, { size: 14 })
2391
+ })]
2392
+ })
2393
+ ]
2394
+ }),
2395
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2396
+ className: "tutor-resources-drawer",
2397
+ children: [
2398
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2399
+ style: {
2400
+ display: "flex",
2401
+ alignItems: "center",
2402
+ gap: "8px"
2403
+ },
2404
+ children: [/* @__PURE__ */ (0, K.jsx)(V, {
2405
+ size: 16,
2406
+ style: { color: "#818cf8" }
2407
+ }), /* @__PURE__ */ (0, K.jsx)("span", {
2408
+ style: {
2409
+ fontSize: "13px",
2410
+ fontWeight: 600
2411
+ },
2412
+ children: "Custom Course Syllabus (Optional)"
2413
+ })]
2414
+ }),
2415
+ /* @__PURE__ */ (0, K.jsx)("p", {
2416
+ style: {
2417
+ margin: 0,
2418
+ fontSize: "12px",
2419
+ color: "rgba(255,255,255,0.5)"
2420
+ },
2421
+ children: "Paste a JSON URL containing concept templates to train the Tutor on your slides or lecture materials."
2422
+ }),
2423
+ /* @__PURE__ */ (0, K.jsxs)("div", {
2424
+ className: "tutor-resources-input-group",
2425
+ children: [/* @__PURE__ */ (0, K.jsx)("input", {
2426
+ type: "text",
2427
+ placeholder: "https://example.com/course_material.json",
2428
+ value: b,
2429
+ onChange: (e) => x(e.target.value),
2430
+ style: { flexGrow: 1 },
2431
+ className: "tutor-text-input"
2432
+ }), /* @__PURE__ */ (0, K.jsx)("button", {
2433
+ className: "tutor-btn",
2434
+ onClick: () => $("Load these resources please"),
2435
+ style: { background: "#4f46e5" },
2436
+ children: "Load"
2437
+ })]
2438
+ })
2439
+ ]
2440
+ })
2441
+ ]
2442
+ });
2443
+ }, J = q;
2444
+ //#endregion
2445
+ export { q as AITutor, fe as Whiteboard, J as default, f as n, p as t };