classicy 0.6.16 → 0.6.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/Preview-DFWgeXbD.js +87 -0
  2. package/dist/Preview-DFWgeXbD.js.map +1 -0
  3. package/dist/classicy.css +1 -0
  4. package/dist/classicy.es.js +34154 -0
  5. package/dist/classicy.es.js.map +1 -0
  6. package/dist/classicy.umd.js +3619 -0
  7. package/dist/classicy.umd.js.map +1 -0
  8. package/dist/dash.all.min-DWS2dLrE.js +18789 -0
  9. package/dist/dash.all.min-DWS2dLrE.js.map +1 -0
  10. package/dist/hls-BoR3u0PC.js +21705 -0
  11. package/dist/hls-BoR3u0PC.js.map +1 -0
  12. package/dist/index-Cd0v-WM7.js +15697 -0
  13. package/dist/index-Cd0v-WM7.js.map +1 -0
  14. package/dist/mixin-CkMUTfmX.js +731 -0
  15. package/dist/mixin-CkMUTfmX.js.map +1 -0
  16. package/dist/react-BnzwZp9T.js +357 -0
  17. package/dist/react-BnzwZp9T.js.map +1 -0
  18. package/dist/react-BzHiAeII.js +402 -0
  19. package/dist/react-BzHiAeII.js.map +1 -0
  20. package/dist/react-Ct5L317G.js +217 -0
  21. package/dist/react-Ct5L317G.js.map +1 -0
  22. package/dist/react-DY0DOTNY.js +356 -0
  23. package/dist/react-DY0DOTNY.js.map +1 -0
  24. package/dist/react-D_7TFUvN.js +437 -0
  25. package/dist/react-D_7TFUvN.js.map +1 -0
  26. package/dist/react-Ql_PNI5h.js +267 -0
  27. package/dist/react-Ql_PNI5h.js.map +1 -0
  28. package/dist/react-_-oMoy3X.js +503 -0
  29. package/dist/react-_-oMoy3X.js.map +1 -0
  30. package/dist/react-b5Gp0-6S.js +3067 -0
  31. package/dist/react-b5Gp0-6S.js.map +1 -0
  32. package/dist/sounds/platinum/platinum.ac3 +0 -0
  33. package/dist/sounds/platinum/platinum.caf +0 -0
  34. package/dist/sounds/platinum/platinum.json +174 -0
  35. package/dist/sounds/platinum/platinum.m4a +0 -0
  36. package/dist/sounds/platinum/platinum.mp3 +0 -0
  37. package/dist/sounds/platinum/platinum.ogg +0 -0
  38. package/dist/sounds/platinum/platinum.wav +0 -0
  39. package/dist/types/assets/sounds/platinum/platinum.json.d.ts +176 -0
  40. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManager.d.ts +98 -0
  41. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManager.d.ts.map +1 -0
  42. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManagerContext.d.ts +9 -0
  43. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManagerContext.d.ts.map +1 -0
  44. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManagerUtils.d.ts +7 -0
  45. package/dist/types/src/SystemFolder/ControlPanels/AppManager/ClassicyAppManagerUtils.d.ts.map +1 -0
  46. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyAppearance.d.ts +120 -0
  47. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyAppearance.d.ts.map +1 -0
  48. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyAppearanceManager.d.ts +3 -0
  49. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyAppearanceManager.d.ts.map +1 -0
  50. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyColors.d.ts +3 -0
  51. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicyColors.d.ts.map +1 -0
  52. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicySize.d.ts +5 -0
  53. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/ClassicySize.d.ts.map +1 -0
  54. package/dist/types/src/SystemFolder/ControlPanels/AppearanceManager/styles/themes.json.d.ts +1433 -0
  55. package/dist/types/src/SystemFolder/ControlPanels/ClassicyControlPanels.d.ts +2 -0
  56. package/dist/types/src/SystemFolder/ControlPanels/ClassicyControlPanels.d.ts.map +1 -0
  57. package/dist/types/src/SystemFolder/ControlPanels/DateAndTimeManager/ClassicyDateAndTimeManager.d.ts +3 -0
  58. package/dist/types/src/SystemFolder/ControlPanels/DateAndTimeManager/ClassicyDateAndTimeManager.d.ts.map +1 -0
  59. package/dist/types/src/SystemFolder/ControlPanels/DateAndTimeManager/ClassicyDateAndTimeManagerUtils.d.ts +3 -0
  60. package/dist/types/src/SystemFolder/ControlPanels/DateAndTimeManager/ClassicyDateAndTimeManagerUtils.d.ts.map +1 -0
  61. package/dist/types/src/SystemFolder/ControlPanels/SoundManager/ClassicySoundManager.d.ts +3 -0
  62. package/dist/types/src/SystemFolder/ControlPanels/SoundManager/ClassicySoundManager.d.ts.map +1 -0
  63. package/dist/types/src/SystemFolder/ControlPanels/SoundManager/ClassicySoundManagerContext.d.ts +79 -0
  64. package/dist/types/src/SystemFolder/ControlPanels/SoundManager/ClassicySoundManagerContext.d.ts.map +1 -0
  65. package/dist/types/src/SystemFolder/ControlPanels/SoundManager/ClassicySoundManagerLabels.json.d.ts +185 -0
  66. package/dist/types/src/SystemFolder/Finder/Finder.d.ts +2 -0
  67. package/dist/types/src/SystemFolder/Finder/Finder.d.ts.map +1 -0
  68. package/dist/types/src/SystemFolder/Finder/FinderContext.d.ts +3 -0
  69. package/dist/types/src/SystemFolder/Finder/FinderContext.d.ts.map +1 -0
  70. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayer.d.ts +3 -0
  71. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayer.d.ts.map +1 -0
  72. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayerContext.d.ts +16 -0
  73. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayerContext.d.ts.map +1 -0
  74. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayerUtils.d.ts +14 -0
  75. package/dist/types/src/SystemFolder/QuickTime/MoviePlayer/MoviePlayerUtils.d.ts.map +1 -0
  76. package/dist/types/src/SystemFolder/QuickTime/PictureViewer/PictureViewer.d.ts +13 -0
  77. package/dist/types/src/SystemFolder/QuickTime/PictureViewer/PictureViewer.d.ts.map +1 -0
  78. package/dist/types/src/SystemFolder/QuickTime/PictureViewer/PictureViewerContext.d.ts +10 -0
  79. package/dist/types/src/SystemFolder/QuickTime/PictureViewer/PictureViewerContext.d.ts.map +1 -0
  80. package/dist/types/src/SystemFolder/SystemResources/AboutWindow/ClassicyAboutWindow.d.ts +11 -0
  81. package/dist/types/src/SystemFolder/SystemResources/AboutWindow/ClassicyAboutWindow.d.ts.map +1 -0
  82. package/dist/types/src/SystemFolder/SystemResources/AboutWindow/ClassicyAboutWindowUtils.d.ts +3 -0
  83. package/dist/types/src/SystemFolder/SystemResources/AboutWindow/ClassicyAboutWindowUtils.d.ts.map +1 -0
  84. package/dist/types/src/SystemFolder/SystemResources/Analytics/useClassicyAnalytics.d.ts +27 -0
  85. package/dist/types/src/SystemFolder/SystemResources/Analytics/useClassicyAnalytics.d.ts.map +1 -0
  86. package/dist/types/src/SystemFolder/SystemResources/App/ClassicyApp.d.ts +13 -0
  87. package/dist/types/src/SystemFolder/SystemResources/App/ClassicyApp.d.ts.map +1 -0
  88. package/dist/types/src/SystemFolder/SystemResources/App/ClassicyAppUtils.d.ts +21 -0
  89. package/dist/types/src/SystemFolder/SystemResources/App/ClassicyAppUtils.d.ts.map +1 -0
  90. package/dist/types/src/SystemFolder/SystemResources/Boot/ClassicyBoot.d.ts +3 -0
  91. package/dist/types/src/SystemFolder/SystemResources/Boot/ClassicyBoot.d.ts.map +1 -0
  92. package/dist/types/src/SystemFolder/SystemResources/Button/ClassicyButton.d.ts +12 -0
  93. package/dist/types/src/SystemFolder/SystemResources/Button/ClassicyButton.d.ts.map +1 -0
  94. package/dist/types/src/SystemFolder/SystemResources/Checkbox/ClassicyCheckbox.d.ts +12 -0
  95. package/dist/types/src/SystemFolder/SystemResources/Checkbox/ClassicyCheckbox.d.ts.map +1 -0
  96. package/dist/types/src/SystemFolder/SystemResources/ContextualMenu/ClassicyContextualMenu.d.ts +10 -0
  97. package/dist/types/src/SystemFolder/SystemResources/ContextualMenu/ClassicyContextualMenu.d.ts.map +1 -0
  98. package/dist/types/src/SystemFolder/SystemResources/ControlGroup/ClassicyControlGroup.d.ts +9 -0
  99. package/dist/types/src/SystemFolder/SystemResources/ControlGroup/ClassicyControlGroup.d.ts.map +1 -0
  100. package/dist/types/src/SystemFolder/SystemResources/ControlLabel/ClassicyControlLabel.d.ts +17 -0
  101. package/dist/types/src/SystemFolder/SystemResources/ControlLabel/ClassicyControlLabel.d.ts.map +1 -0
  102. package/dist/types/src/SystemFolder/SystemResources/DatePicker/ClassicyDatePicker.d.ts +14 -0
  103. package/dist/types/src/SystemFolder/SystemResources/DatePicker/ClassicyDatePicker.d.ts.map +1 -0
  104. package/dist/types/src/SystemFolder/SystemResources/DatePicker/ClassicyDatePickerUtils.d.ts +3 -0
  105. package/dist/types/src/SystemFolder/SystemResources/DatePicker/ClassicyDatePickerUtils.d.ts.map +1 -0
  106. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktop.d.ts +7 -0
  107. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktop.d.ts.map +1 -0
  108. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopIcon.d.ts +14 -0
  109. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopIcon.d.ts.map +1 -0
  110. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopIconContext.d.ts +5 -0
  111. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopIconContext.d.ts.map +1 -0
  112. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopManager.d.ts +30 -0
  113. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopManager.d.ts.map +1 -0
  114. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopWindowManagerContext.d.ts +108 -0
  115. package/dist/types/src/SystemFolder/SystemResources/Desktop/ClassicyDesktopWindowManagerContext.d.ts.map +1 -0
  116. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/ClassicyDesktopMenuBar.d.ts +3 -0
  117. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/ClassicyDesktopMenuBar.d.ts.map +1 -0
  118. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/Widgets/Sound/ClassicyDesktopMenuWidgetSound.d.ts +7 -0
  119. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/Widgets/Sound/ClassicyDesktopMenuWidgetSound.d.ts.map +1 -0
  120. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/Widgets/Time/ClassicyDesktopMenuWidgetTime.d.ts +3 -0
  121. package/dist/types/src/SystemFolder/SystemResources/Desktop/MenuBar/Widgets/Time/ClassicyDesktopMenuWidgetTime.d.ts.map +1 -0
  122. package/dist/types/src/SystemFolder/SystemResources/Disclosure/ClassicyDisclosure.d.ts +10 -0
  123. package/dist/types/src/SystemFolder/SystemResources/Disclosure/ClassicyDisclosure.d.ts.map +1 -0
  124. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowser.d.ts +13 -0
  125. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowser.d.ts.map +1 -0
  126. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserUtils.d.ts +7 -0
  127. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserUtils.d.ts.map +1 -0
  128. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserViewIcons.d.ts +12 -0
  129. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserViewIcons.d.ts.map +1 -0
  130. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserViewTable.d.ts +14 -0
  131. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileBrowserViewTable.d.ts.map +1 -0
  132. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileSystem.d.ts +29 -0
  133. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileSystem.d.ts.map +1 -0
  134. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileSystemModel.d.ts +37 -0
  135. package/dist/types/src/SystemFolder/SystemResources/File/ClassicyFileSystemModel.d.ts.map +1 -0
  136. package/dist/types/src/SystemFolder/SystemResources/File/DefaultClassicyFileSystem.d.ts +94 -0
  137. package/dist/types/src/SystemFolder/SystemResources/File/DefaultClassicyFileSystem.d.ts.map +1 -0
  138. package/dist/types/src/SystemFolder/SystemResources/Icon/ClassicyIcon.d.ts +14 -0
  139. package/dist/types/src/SystemFolder/SystemResources/Icon/ClassicyIcon.d.ts.map +1 -0
  140. package/dist/types/src/SystemFolder/SystemResources/Input/ClassicyInput.d.ts +15 -0
  141. package/dist/types/src/SystemFolder/SystemResources/Input/ClassicyInput.d.ts.map +1 -0
  142. package/dist/types/src/SystemFolder/SystemResources/Menu/ClassicyMenu.d.ts +29 -0
  143. package/dist/types/src/SystemFolder/SystemResources/Menu/ClassicyMenu.d.ts.map +1 -0
  144. package/dist/types/src/SystemFolder/SystemResources/PopUpMenu/ClassicyPopUpMenu.d.ts +18 -0
  145. package/dist/types/src/SystemFolder/SystemResources/PopUpMenu/ClassicyPopUpMenu.d.ts.map +1 -0
  146. package/dist/types/src/SystemFolder/SystemResources/ProgressBar/ClassicyProgressBar.d.ts +1 -0
  147. package/dist/types/src/SystemFolder/SystemResources/ProgressBar/ClassicyProgressBar.d.ts.map +1 -0
  148. package/dist/types/src/SystemFolder/SystemResources/QuickTime/QuickTimeMovieEmbed.d.ts +16 -0
  149. package/dist/types/src/SystemFolder/SystemResources/QuickTime/QuickTimeMovieEmbed.d.ts.map +1 -0
  150. package/dist/types/src/SystemFolder/SystemResources/QuickTime/QuickTimeUtils.d.ts +3 -0
  151. package/dist/types/src/SystemFolder/SystemResources/QuickTime/QuickTimeUtils.d.ts.map +1 -0
  152. package/dist/types/src/SystemFolder/SystemResources/RadioInput/ClassicyRadioInput.d.ts +20 -0
  153. package/dist/types/src/SystemFolder/SystemResources/RadioInput/ClassicyRadioInput.d.ts.map +1 -0
  154. package/dist/types/src/SystemFolder/SystemResources/RichTextEditor/ClassicyRichTextEditor.d.ts +9 -0
  155. package/dist/types/src/SystemFolder/SystemResources/RichTextEditor/ClassicyRichTextEditor.d.ts.map +1 -0
  156. package/dist/types/src/SystemFolder/SystemResources/Tabs/ClassicyTabs.d.ts +11 -0
  157. package/dist/types/src/SystemFolder/SystemResources/Tabs/ClassicyTabs.d.ts.map +1 -0
  158. package/dist/types/src/SystemFolder/SystemResources/TextEditor/ClassicyTextEditor.d.ts +1 -0
  159. package/dist/types/src/SystemFolder/SystemResources/TextEditor/ClassicyTextEditor.d.ts.map +1 -0
  160. package/dist/types/src/SystemFolder/SystemResources/TimePicker/ClassicyTimePicker.d.ts +15 -0
  161. package/dist/types/src/SystemFolder/SystemResources/TimePicker/ClassicyTimePicker.d.ts.map +1 -0
  162. package/dist/types/src/SystemFolder/SystemResources/Window/ClassicyWindow.d.ts +29 -0
  163. package/dist/types/src/SystemFolder/SystemResources/Window/ClassicyWindow.d.ts.map +1 -0
  164. package/dist/types/src/SystemFolder/SystemResources/Window/ClassicyWindowContext.d.ts +19 -0
  165. package/dist/types/src/SystemFolder/SystemResources/Window/ClassicyWindowContext.d.ts.map +1 -0
  166. package/dist/types/src/index.d.ts +58 -0
  167. package/dist/types/src/index.d.ts.map +1 -0
  168. package/dist/types/vite.config.d.ts +3 -0
  169. package/dist/types/vite.config.d.ts.map +1 -0
  170. package/package.json +2 -2
@@ -0,0 +1,503 @@
1
+ import H from "react";
2
+ const V = "https://www.youtube.com/embed", D = "https://www.youtube-nocookie.com/embed", j = "https://www.youtube.com/iframe_api", Y = "YT", F = "onYouTubeIframeAPIReady", C = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|shorts\/|live\/))((\w|-){11})/, G = /(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/.*?[?&]list=)([\w_-]+)/;
3
+ function R(i, e = {}) {
4
+ var t;
5
+ const n = {
6
+ src: N(i, e),
7
+ frameborder: 0,
8
+ width: "100%",
9
+ height: "100%",
10
+ allow: "accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture"
11
+ };
12
+ return (t = e.config) != null && t.referrerpolicy && (n.referrerpolicy = e.config.referrerpolicy), e.config && (n["data-config"] = JSON.stringify(e.config)), /*html*/
13
+ `
14
+ <style>
15
+ :host {
16
+ display: inline-block;
17
+ line-height: 0;
18
+ position: relative;
19
+ min-width: 300px;
20
+ min-height: 150px;
21
+ }
22
+ iframe {
23
+ position: absolute;
24
+ top: 0;
25
+ left: 0;
26
+ }
27
+ </style>
28
+ <iframe${U(n)}></iframe>
29
+ `;
30
+ }
31
+ function N(i, e) {
32
+ if (!i.src) return;
33
+ const t = i.src.includes("-nocookie") ? D : V, n = {
34
+ // ?controls=true is enabled by default in the iframe
35
+ controls: i.controls === "" ? null : 0,
36
+ autoplay: i.autoplay,
37
+ loop: i.loop,
38
+ mute: i.muted,
39
+ playsinline: i.playsinline,
40
+ preload: i.preload ?? "metadata",
41
+ // https://developers.google.com/youtube/player_parameters#Parameters
42
+ // origin: globalThis.location?.origin,
43
+ enablejsapi: 1,
44
+ cc_load_policy: 1,
45
+ showinfo: 0,
46
+ rel: 0,
47
+ iv_load_policy: 3,
48
+ modestbranding: 1,
49
+ ...e.config
50
+ };
51
+ if (C.test(i.src)) {
52
+ const p = i.src.match(C), g = p && p[1];
53
+ return `${t}/${g}?${M(n)}`;
54
+ }
55
+ const l = i.src.match(G), f = {
56
+ listType: "playlist",
57
+ list: l && l[1],
58
+ ...n
59
+ };
60
+ return `${t}?${M(f)}`;
61
+ }
62
+ class x extends (globalThis.HTMLElement ?? class {
63
+ }) {
64
+ static getTemplateHTML = R;
65
+ static shadowRootOptions = { mode: "open" };
66
+ static observedAttributes = [
67
+ "autoplay",
68
+ "controls",
69
+ "crossorigin",
70
+ "loop",
71
+ "muted",
72
+ "playsinline",
73
+ "poster",
74
+ "preload",
75
+ "src"
76
+ ];
77
+ loadComplete = new A();
78
+ #o;
79
+ #r;
80
+ #t = 0;
81
+ #i = !1;
82
+ #e;
83
+ isLoaded = !1;
84
+ #l = null;
85
+ #a = null;
86
+ #s = null;
87
+ #n = 1;
88
+ constructor() {
89
+ super(), this.#u("config");
90
+ }
91
+ get config() {
92
+ return this.#a;
93
+ }
94
+ set config(e) {
95
+ this.#a = e;
96
+ }
97
+ async load() {
98
+ if (this.#o) return;
99
+ this.shadowRoot || this.attachShadow({ mode: "open" });
100
+ const e = !this.#r;
101
+ this.#r && (this.loadComplete = new A(), this.isLoaded = !1), this.#r = !0, await (this.#o = Promise.resolve()), this.#o = null, this.#t = 0, this.dispatchEvent(new Event("emptied"));
102
+ let t = this.api;
103
+ if (this.api = null, !this.src) {
104
+ t?.destroy();
105
+ return;
106
+ }
107
+ this.#s = document.createElement("video"), this.textTracks = this.#s.textTracks, this.textTracks.addEventListener("change", () => {
108
+ var s;
109
+ const u = Array.from(this.textTracks).find((d) => d.mode === "showing");
110
+ (s = this.api) == null || s.setOption("captions", "track", u ? { languageCode: u.language } : {});
111
+ }), this.dispatchEvent(new Event("loadstart"));
112
+ let n = this.shadowRoot.querySelector("iframe"), l = q(this.attributes);
113
+ e && n && (this.#a = JSON.parse(n.getAttribute("data-config") || "{}")), (!n?.src || n.src !== N(l, this)) && (this.shadowRoot.innerHTML = R(l, this), n = this.shadowRoot.querySelector("iframe"));
114
+ const a = await z(j, Y, F);
115
+ this.api = new a.Player(n, {
116
+ events: {
117
+ onReady: () => {
118
+ var s;
119
+ this.#t = 1, this.dispatchEvent(new Event("loadedmetadata")), this.dispatchEvent(new Event("durationchange")), this.#n !== 1 && ((s = this.api) == null || s.setVolume(this.#n * 100)), this.dispatchEvent(new Event("volumechange")), this.dispatchEvent(new Event("loadcomplete")), this.isLoaded = !0, this.loadComplete.resolve();
120
+ },
121
+ onError: (s) => {
122
+ console.error(s), this.#l = {
123
+ code: s.data,
124
+ message: `YouTube iframe player error #${s.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`
125
+ }, this.dispatchEvent(new Event("error"));
126
+ }
127
+ }
128
+ });
129
+ let f = !1;
130
+ this.api.addEventListener("onStateChange", (s) => {
131
+ var u;
132
+ const d = s.data;
133
+ if ((d === a.PlayerState.PLAYING || d === a.PlayerState.BUFFERING) && (f || (f = !0, this.dispatchEvent(new Event("play"))), (this.api.getOption("captions", "tracklist") || []).forEach((h) => {
134
+ [...this.textTracks].some((E) => E.language === h.languageCode) || this.#s.addTextTrack("subtitles", h.displayName, h.languageCode), this.textTracks = this.#s.textTracks;
135
+ }), this.dispatchEvent(new Event("loadstart"))), d === a.PlayerState.PLAYING)
136
+ this.seeking && (this.#i = !1, (u = this.#e) == null || u.resolve(), this.dispatchEvent(new Event("seeked"))), this.#t = 3, this.dispatchEvent(new Event("playing"));
137
+ else if (d === a.PlayerState.PAUSED) {
138
+ const b = Math.abs(this.currentTime - p);
139
+ !this.seeking && b > 0.1 && (this.#i = !0, this.dispatchEvent(new Event("seeking"))), f = !1, this.dispatchEvent(new Event("pause"));
140
+ }
141
+ d === a.PlayerState.ENDED && (f = !1, this.dispatchEvent(new Event("pause")), this.dispatchEvent(new Event("ended")), this.loop && this.play());
142
+ }), this.api.addEventListener("onPlaybackRateChange", () => {
143
+ this.dispatchEvent(new Event("ratechange"));
144
+ }), this.api.addEventListener("onVolumeChange", () => {
145
+ var s;
146
+ const u = ((s = this.api) == null ? void 0 : s.getVolume()) / 100;
147
+ this.#n = u, this.dispatchEvent(new Event("volumechange"));
148
+ }), this.api.addEventListener("onVideoProgress", () => {
149
+ this.dispatchEvent(new Event("timeupdate"));
150
+ }), await this.loadComplete;
151
+ let p = 0;
152
+ setInterval(() => {
153
+ var s;
154
+ const u = Math.abs(this.currentTime - p), d = this.buffered.end(this.buffered.length - 1);
155
+ this.seeking && d > 0.1 ? (this.#i = !1, (s = this.#e) == null || s.resolve(), this.dispatchEvent(new Event("seeked"))) : !this.seeking && u > 0.1 && (this.#i = !0, this.dispatchEvent(new Event("seeking"))), p = this.currentTime;
156
+ }, 50);
157
+ let g;
158
+ const w = setInterval(() => {
159
+ const s = this.buffered.end(this.buffered.length - 1);
160
+ s >= this.duration && (clearInterval(w), this.#t = 4), g != s && (g = s, this.dispatchEvent(new Event("progress")));
161
+ }, 100);
162
+ }
163
+ async attributeChangedCallback(e, t, n) {
164
+ if (t !== n)
165
+ switch (e) {
166
+ case "src":
167
+ case "autoplay":
168
+ case "controls":
169
+ case "loop":
170
+ case "playsinline":
171
+ this.load();
172
+ }
173
+ }
174
+ async play() {
175
+ var e;
176
+ return this.#e = null, await this.loadComplete, (e = this.api) == null || e.playVideo(), Q(this);
177
+ }
178
+ async pause() {
179
+ var e;
180
+ return await this.loadComplete, (e = this.api) == null ? void 0 : e.pauseVideo();
181
+ }
182
+ get seeking() {
183
+ return this.#i;
184
+ }
185
+ get readyState() {
186
+ return this.#t;
187
+ }
188
+ get src() {
189
+ return this.getAttribute("src");
190
+ }
191
+ set src(e) {
192
+ this.src != e && this.setAttribute("src", e);
193
+ }
194
+ get error() {
195
+ return this.#l;
196
+ }
197
+ /* onStateChange
198
+ -1 (unstarted)
199
+ 0 (ended)
200
+ 1 (playing)
201
+ 2 (paused)
202
+ 3 (buffering)
203
+ 5 (video cued).
204
+ */
205
+ get paused() {
206
+ var e, t;
207
+ return this.isLoaded ? [-1, 0, 2, 5].includes((t = (e = this.api) == null ? void 0 : e.getPlayerState) == null ? void 0 : t.call(e)) : !this.autoplay;
208
+ }
209
+ get duration() {
210
+ var e, t;
211
+ return ((t = (e = this.api) == null ? void 0 : e.getDuration) == null ? void 0 : t.call(e)) ?? NaN;
212
+ }
213
+ get autoplay() {
214
+ return this.hasAttribute("autoplay");
215
+ }
216
+ set autoplay(e) {
217
+ this.autoplay != e && this.toggleAttribute("autoplay", !!e);
218
+ }
219
+ get buffered() {
220
+ var e, t;
221
+ if (!this.isLoaded) return P();
222
+ const n = ((e = this.api) == null ? void 0 : e.getVideoLoadedFraction()) * ((t = this.api) == null ? void 0 : t.getDuration());
223
+ return n > 0 ? P(0, n) : P();
224
+ }
225
+ get controls() {
226
+ return this.hasAttribute("controls");
227
+ }
228
+ set controls(e) {
229
+ this.controls != e && this.toggleAttribute("controls", !!e);
230
+ }
231
+ get currentTime() {
232
+ var e, t;
233
+ return ((t = (e = this.api) == null ? void 0 : e.getCurrentTime) == null ? void 0 : t.call(e)) ?? 0;
234
+ }
235
+ set currentTime(e) {
236
+ this.currentTime != e && (this.#e = new A(), this.loadComplete.then(() => {
237
+ var t, n;
238
+ (t = this.api) == null || t.seekTo(e, !0), this.paused && ((n = this.#e) == null || n.then(() => {
239
+ var l;
240
+ this.#e && ((l = this.api) == null || l.pauseVideo());
241
+ }));
242
+ }));
243
+ }
244
+ set defaultMuted(e) {
245
+ this.defaultMuted != e && this.toggleAttribute("muted", !!e);
246
+ }
247
+ get defaultMuted() {
248
+ return this.hasAttribute("muted");
249
+ }
250
+ get loop() {
251
+ return this.hasAttribute("loop");
252
+ }
253
+ set loop(e) {
254
+ this.loop != e && this.toggleAttribute("loop", !!e);
255
+ }
256
+ set muted(e) {
257
+ this.muted != e && this.loadComplete.then(() => {
258
+ var t, n;
259
+ e ? (t = this.api) == null || t.mute() : (n = this.api) == null || n.unMute();
260
+ });
261
+ }
262
+ get muted() {
263
+ var e, t;
264
+ return this.isLoaded ? (t = (e = this.api) == null ? void 0 : e.isMuted) == null ? void 0 : t.call(e) : this.defaultMuted;
265
+ }
266
+ get playbackRate() {
267
+ var e, t;
268
+ return ((t = (e = this.api) == null ? void 0 : e.getPlaybackRate) == null ? void 0 : t.call(e)) ?? 1;
269
+ }
270
+ set playbackRate(e) {
271
+ this.playbackRate != e && this.loadComplete.then(() => {
272
+ var t;
273
+ (t = this.api) == null || t.setPlaybackRate(e);
274
+ });
275
+ }
276
+ get playsInline() {
277
+ return this.hasAttribute("playsinline");
278
+ }
279
+ set playsInline(e) {
280
+ this.playsInline != e && this.toggleAttribute("playsinline", !!e);
281
+ }
282
+ get poster() {
283
+ return this.getAttribute("poster");
284
+ }
285
+ set poster(e) {
286
+ this.poster != e && this.setAttribute("poster", `${e}`);
287
+ }
288
+ set volume(e) {
289
+ this.volume != e && (this.#n = e, this.loadComplete.then(() => {
290
+ var t;
291
+ (t = this.api) == null || t.setVolume(e * 100);
292
+ }));
293
+ }
294
+ get volume() {
295
+ var e;
296
+ return this.isLoaded ? ((e = this.api) == null ? void 0 : e.getVolume()) / 100 : this.#n;
297
+ }
298
+ // This is a pattern to update property values that are set before
299
+ // the custom element is upgraded.
300
+ // https://web.dev/custom-elements-best-practices/#make-properties-lazy
301
+ #u(e) {
302
+ if (Object.prototype.hasOwnProperty.call(this, e)) {
303
+ const t = this[e];
304
+ delete this[e], this[e] = t;
305
+ }
306
+ }
307
+ }
308
+ function U(i) {
309
+ let e = "";
310
+ for (const t in i) {
311
+ const n = i[t];
312
+ n === "" ? e += ` ${L(t)}` : e += ` ${L(t)}="${L(`${n}`)}"`;
313
+ }
314
+ return e;
315
+ }
316
+ function L(i) {
317
+ return i.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/`/g, "&#x60;");
318
+ }
319
+ function M(i) {
320
+ return String(new URLSearchParams(W(i)));
321
+ }
322
+ function W(i) {
323
+ let e = {};
324
+ for (let t in i) {
325
+ let n = i[t];
326
+ n === !0 || n === "" ? e[t] = 1 : n === !1 ? e[t] = 0 : n != null && (e[t] = n);
327
+ }
328
+ return e;
329
+ }
330
+ function q(i) {
331
+ let e = {};
332
+ for (let t of i)
333
+ e[t.name] = t.value;
334
+ return e;
335
+ }
336
+ const k = {};
337
+ async function z(i, e, t) {
338
+ return k[i] ? k[i] : self[e] ? (await J(0), self[e]) : k[i] = new Promise(function(n, l) {
339
+ const a = document.createElement("script");
340
+ a.src = i;
341
+ const f = () => n(self[e]);
342
+ self[t] = f, a.onload = () => !t, a.onerror = l, document.head.append(a);
343
+ });
344
+ }
345
+ const J = (i) => new Promise((e) => setTimeout(e, i));
346
+ function K(i) {
347
+ return (...e) => new Promise((t) => {
348
+ i(...e, (...n) => {
349
+ n.length > 1 ? t(n) : t(n[0]);
350
+ });
351
+ });
352
+ }
353
+ function Q(i) {
354
+ return K((e, t) => {
355
+ let n;
356
+ i.addEventListener(
357
+ e,
358
+ n = () => {
359
+ i.removeEventListener(e, n), t();
360
+ }
361
+ );
362
+ })("playing");
363
+ }
364
+ let A = class extends Promise {
365
+ constructor(e = () => {
366
+ }) {
367
+ let t, n;
368
+ super((l, a) => {
369
+ e(l, a), t = l, n = a;
370
+ }), this.resolve = t, this.reject = n;
371
+ }
372
+ };
373
+ function P(i, e) {
374
+ return Array.isArray(i) ? $(i) : i == null || e == null || i === 0 && e === 0 ? $([[0, 0]]) : $([[i, e]]);
375
+ }
376
+ function $(i) {
377
+ return Object.defineProperties(i, {
378
+ start: {
379
+ value: (e) => i[e][0]
380
+ },
381
+ end: {
382
+ value: (e) => i[e][1]
383
+ }
384
+ }), i;
385
+ }
386
+ globalThis.customElements && !globalThis.customElements.get("youtube-video") && globalThis.customElements.define("youtube-video", x);
387
+ var X = x, Z = /* @__PURE__ */ new Set([
388
+ "style",
389
+ "children",
390
+ "ref",
391
+ "key",
392
+ "suppressContentEditableWarning",
393
+ "suppressHydrationWarning",
394
+ "dangerouslySetInnerHTML"
395
+ ]), ee = {
396
+ className: "class",
397
+ htmlFor: "for"
398
+ };
399
+ function B(i) {
400
+ return i.toLowerCase();
401
+ }
402
+ function I(i) {
403
+ if (typeof i == "boolean") return i ? "" : void 0;
404
+ if (typeof i != "function" && !(typeof i == "object" && i !== null))
405
+ return i;
406
+ }
407
+ function te({
408
+ react: i,
409
+ tagName: e,
410
+ elementClass: t,
411
+ events: n,
412
+ displayName: l,
413
+ defaultProps: a,
414
+ toAttributeName: f = B,
415
+ toAttributeValue: p = I
416
+ }) {
417
+ const g = Number.parseInt(i.version) >= 19, w = i.forwardRef((s, u) => {
418
+ var d, b;
419
+ const h = i.useRef(null), E = i.useRef(/* @__PURE__ */ new Map()), T = {}, S = {}, v = {}, _ = {};
420
+ for (const [o, r] of Object.entries(s)) {
421
+ if (Z.has(o)) {
422
+ v[o] = r;
423
+ continue;
424
+ }
425
+ const c = f(ee[o] ?? o);
426
+ if (t.prototype && o in t.prototype && !(o in (((d = globalThis.HTMLElement) == null ? void 0 : d.prototype) ?? {})) && !((b = t.observedAttributes) != null && b.some((y) => y === c))) {
427
+ _[o] = r;
428
+ continue;
429
+ }
430
+ if (o.startsWith("on")) {
431
+ T[o] = r;
432
+ continue;
433
+ }
434
+ const m = p(r);
435
+ if (c && m != null && (S[c] = String(m), g || (v[c] = m)), c && g) {
436
+ const y = I(r);
437
+ m !== y ? v[c] = m : v[c] = r;
438
+ }
439
+ }
440
+ if (typeof window < "u") {
441
+ for (const o in T) {
442
+ const r = T[o], c = o.endsWith("Capture"), m = (n?.[o] ?? o.slice(2).toLowerCase()).slice(
443
+ 0,
444
+ c ? -7 : void 0
445
+ );
446
+ i.useLayoutEffect(() => {
447
+ const y = h?.current;
448
+ if (!(!y || typeof r != "function"))
449
+ return y.addEventListener(m, r, c), () => {
450
+ y.removeEventListener(m, r, c);
451
+ };
452
+ }, [h?.current, r]);
453
+ }
454
+ i.useLayoutEffect(() => {
455
+ if (h.current === null) return;
456
+ const o = /* @__PURE__ */ new Map();
457
+ for (const r in _)
458
+ O(h.current, r, _[r]), E.current.delete(r), o.set(r, _[r]);
459
+ for (const [r, c] of E.current)
460
+ O(h.current, r, void 0);
461
+ E.current = o;
462
+ });
463
+ }
464
+ if (typeof window > "u" && t?.getTemplateHTML && t?.shadowRootOptions) {
465
+ const { mode: o, delegatesFocus: r } = t.shadowRootOptions, c = i.createElement("template", {
466
+ shadowrootmode: o,
467
+ shadowrootdelegatesfocus: r,
468
+ dangerouslySetInnerHTML: {
469
+ __html: t.getTemplateHTML(S, s)
470
+ },
471
+ key: "ce-la-react-ssr-template-shadow-root"
472
+ });
473
+ v.children = [c, v.children];
474
+ }
475
+ return i.createElement(e, {
476
+ ...a,
477
+ ...v,
478
+ ref: i.useCallback(
479
+ (o) => {
480
+ h.current = o, typeof u == "function" ? u(o) : u !== null && (u.current = o);
481
+ },
482
+ [u]
483
+ )
484
+ }, v.children);
485
+ });
486
+ return w.displayName = l ?? t.name, w;
487
+ }
488
+ function O(i, e, t) {
489
+ var n;
490
+ i[e] = t, t == null && e in (((n = globalThis.HTMLElement) == null ? void 0 : n.prototype) ?? {}) && i.removeAttribute(e);
491
+ }
492
+ var se = te({
493
+ react: H,
494
+ tagName: "youtube-video",
495
+ elementClass: X,
496
+ toAttributeName(i) {
497
+ return i === "muted" ? "" : i === "defaultMuted" ? "muted" : B(i);
498
+ }
499
+ });
500
+ export {
501
+ se as default
502
+ };
503
+ //# sourceMappingURL=react-_-oMoy3X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-_-oMoy3X.js","sources":["../node_modules/youtube-video-element/dist/youtube-video-element.js","../node_modules/youtube-video-element/dist/react.js"],"sourcesContent":["const EMBED_BASE = \"https://www.youtube.com/embed\";\nconst EMBED_BASE_NOCOOKIE = \"https://www.youtube-nocookie.com/embed\";\nconst API_URL = \"https://www.youtube.com/iframe_api\";\nconst API_GLOBAL = \"YT\";\nconst API_GLOBAL_READY = \"onYouTubeIframeAPIReady\";\nconst VIDEO_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=|shorts\\/|live\\/))((\\w|-){11})/;\nconst PLAYLIST_MATCH_SRC = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/.*?[?&]list=)([\\w_-]+)/;\nfunction getTemplateHTML(attrs, props = {}) {\n var _a;\n const iframeAttrs = {\n src: serializeIframeUrl(attrs, props),\n frameborder: 0,\n width: \"100%\",\n height: \"100%\",\n allow: \"accelerometer; fullscreen; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n };\n if ((_a = props.config) == null ? void 0 : _a.referrerpolicy) {\n iframeAttrs.referrerpolicy = props.config.referrerpolicy;\n }\n if (props.config) {\n iframeAttrs[\"data-config\"] = JSON.stringify(props.config);\n }\n return (\n /*html*/\n `\n <style>\n :host {\n display: inline-block;\n line-height: 0;\n position: relative;\n min-width: 300px;\n min-height: 150px;\n }\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n }\n </style>\n <iframe${serializeAttributes(iframeAttrs)}></iframe>\n `\n );\n}\nfunction serializeIframeUrl(attrs, props) {\n if (!attrs.src) return;\n const embedBase = attrs.src.includes(\"-nocookie\") ? EMBED_BASE_NOCOOKIE : EMBED_BASE;\n const params = {\n // ?controls=true is enabled by default in the iframe\n controls: attrs.controls === \"\" ? null : 0,\n autoplay: attrs.autoplay,\n loop: attrs.loop,\n mute: attrs.muted,\n playsinline: attrs.playsinline,\n preload: attrs.preload ?? \"metadata\",\n // https://developers.google.com/youtube/player_parameters#Parameters\n // origin: globalThis.location?.origin,\n enablejsapi: 1,\n cc_load_policy: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1,\n ...props.config\n };\n if (VIDEO_MATCH_SRC.test(attrs.src)) {\n const matches2 = attrs.src.match(VIDEO_MATCH_SRC);\n const srcId = matches2 && matches2[1];\n return `${embedBase}/${srcId}?${serialize(params)}`;\n }\n const matches = attrs.src.match(PLAYLIST_MATCH_SRC);\n const playlistId = matches && matches[1];\n const extendedParams = {\n listType: \"playlist\",\n list: playlistId,\n ...params\n };\n return `${embedBase}?${serialize(extendedParams)}`;\n}\nclass YoutubeVideoElement extends (globalThis.HTMLElement ?? class {\n}) {\n static getTemplateHTML = getTemplateHTML;\n static shadowRootOptions = { mode: \"open\" };\n static observedAttributes = [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\"\n ];\n loadComplete = new PublicPromise();\n #loadRequested;\n #hasLoaded;\n #readyState = 0;\n #seeking = false;\n #seekComplete;\n isLoaded = false;\n #error = null;\n #config = null;\n #textTracksVideo = null;\n #initialVolume = 1;\n constructor() {\n super();\n this.#upgradeProperty(\"config\");\n }\n get config() {\n return this.#config;\n }\n set config(value) {\n this.#config = value;\n }\n async load() {\n if (this.#loadRequested) return;\n if (!this.shadowRoot) {\n this.attachShadow({ mode: \"open\" });\n }\n const isFirstLoad = !this.#hasLoaded;\n if (this.#hasLoaded) {\n this.loadComplete = new PublicPromise();\n this.isLoaded = false;\n }\n this.#hasLoaded = true;\n await (this.#loadRequested = Promise.resolve());\n this.#loadRequested = null;\n this.#readyState = 0;\n this.dispatchEvent(new Event(\"emptied\"));\n let oldApi = this.api;\n this.api = null;\n if (!this.src) {\n oldApi == null ? void 0 : oldApi.destroy();\n return;\n }\n this.#textTracksVideo = document.createElement(\"video\");\n this.textTracks = this.#textTracksVideo.textTracks;\n this.textTracks.addEventListener(\"change\", () => {\n var _a;\n const active = Array.from(this.textTracks).find((t) => t.mode === \"showing\");\n (_a = this.api) == null ? void 0 : _a.setOption(\"captions\", \"track\", active ? { languageCode: active.language } : {});\n });\n this.dispatchEvent(new Event(\"loadstart\"));\n let iframe = this.shadowRoot.querySelector(\"iframe\");\n let attrs = namedNodeMapToObject(this.attributes);\n if (isFirstLoad && iframe) {\n this.#config = JSON.parse(iframe.getAttribute(\"data-config\") || \"{}\");\n }\n if (!(iframe == null ? void 0 : iframe.src) || iframe.src !== serializeIframeUrl(attrs, this)) {\n this.shadowRoot.innerHTML = getTemplateHTML(attrs, this);\n iframe = this.shadowRoot.querySelector(\"iframe\");\n }\n const YT = await loadScript(API_URL, API_GLOBAL, API_GLOBAL_READY);\n this.api = new YT.Player(iframe, {\n events: {\n onReady: () => {\n var _a;\n this.#readyState = 1;\n this.dispatchEvent(new Event(\"loadedmetadata\"));\n this.dispatchEvent(new Event(\"durationchange\"));\n if (this.#initialVolume !== 1) {\n (_a = this.api) == null ? void 0 : _a.setVolume(this.#initialVolume * 100);\n }\n this.dispatchEvent(new Event(\"volumechange\"));\n this.dispatchEvent(new Event(\"loadcomplete\"));\n this.isLoaded = true;\n this.loadComplete.resolve();\n },\n onError: (error) => {\n console.error(error);\n this.#error = {\n code: error.data,\n message: `YouTube iframe player error #${error.data}; visit https://developers.google.com/youtube/iframe_api_reference#onError for the full error message.`\n };\n this.dispatchEvent(new Event(\"error\"));\n }\n }\n });\n let playFired = false;\n this.api.addEventListener(\"onStateChange\", (event) => {\n var _a;\n const state = event.data;\n if (state === YT.PlayerState.PLAYING || state === YT.PlayerState.BUFFERING) {\n if (!playFired) {\n playFired = true;\n this.dispatchEvent(new Event(\"play\"));\n }\n const captionList = this.api.getOption(\"captions\", \"tracklist\") || [];\n captionList.forEach((t) => {\n if (![...this.textTracks].some((tt) => tt.language === t.languageCode)) {\n this.#textTracksVideo.addTextTrack(\"subtitles\", t.displayName, t.languageCode);\n }\n this.textTracks = this.#textTracksVideo.textTracks;\n });\n this.dispatchEvent(new Event(\"loadstart\"));\n }\n if (state === YT.PlayerState.PLAYING) {\n if (this.seeking) {\n this.#seeking = false;\n (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n this.dispatchEvent(new Event(\"seeked\"));\n }\n this.#readyState = 3;\n this.dispatchEvent(new Event(\"playing\"));\n } else if (state === YT.PlayerState.PAUSED) {\n const diff = Math.abs(this.currentTime - lastCurrentTime);\n if (!this.seeking && diff > 0.1) {\n this.#seeking = true;\n this.dispatchEvent(new Event(\"seeking\"));\n }\n playFired = false;\n this.dispatchEvent(new Event(\"pause\"));\n }\n if (state === YT.PlayerState.ENDED) {\n playFired = false;\n this.dispatchEvent(new Event(\"pause\"));\n this.dispatchEvent(new Event(\"ended\"));\n if (this.loop) {\n this.play();\n }\n }\n });\n this.api.addEventListener(\"onPlaybackRateChange\", () => {\n this.dispatchEvent(new Event(\"ratechange\"));\n });\n this.api.addEventListener(\"onVolumeChange\", () => {\n var _a;\n const apiVolume = ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n this.#initialVolume = apiVolume;\n this.dispatchEvent(new Event(\"volumechange\"));\n });\n this.api.addEventListener(\"onVideoProgress\", () => {\n this.dispatchEvent(new Event(\"timeupdate\"));\n });\n await this.loadComplete;\n let lastCurrentTime = 0;\n setInterval(() => {\n var _a;\n const diff = Math.abs(this.currentTime - lastCurrentTime);\n const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n if (this.seeking && bufferedEnd > 0.1) {\n this.#seeking = false;\n (_a = this.#seekComplete) == null ? void 0 : _a.resolve();\n this.dispatchEvent(new Event(\"seeked\"));\n } else if (!this.seeking && diff > 0.1) {\n this.#seeking = true;\n this.dispatchEvent(new Event(\"seeking\"));\n }\n lastCurrentTime = this.currentTime;\n }, 50);\n let lastBufferedEnd;\n const progressInterval = setInterval(() => {\n const bufferedEnd = this.buffered.end(this.buffered.length - 1);\n if (bufferedEnd >= this.duration) {\n clearInterval(progressInterval);\n this.#readyState = 4;\n }\n if (lastBufferedEnd != bufferedEnd) {\n lastBufferedEnd = bufferedEnd;\n this.dispatchEvent(new Event(\"progress\"));\n }\n }, 100);\n }\n async attributeChangedCallback(attrName, oldValue, newValue) {\n if (oldValue === newValue) return;\n switch (attrName) {\n case \"src\":\n case \"autoplay\":\n case \"controls\":\n case \"loop\":\n case \"playsinline\": {\n this.load();\n }\n }\n }\n async play() {\n var _a;\n this.#seekComplete = null;\n await this.loadComplete;\n (_a = this.api) == null ? void 0 : _a.playVideo();\n return createPlayPromise(this);\n }\n async pause() {\n var _a;\n await this.loadComplete;\n return (_a = this.api) == null ? void 0 : _a.pauseVideo();\n }\n get seeking() {\n return this.#seeking;\n }\n get readyState() {\n return this.#readyState;\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(val) {\n if (this.src == val) return;\n this.setAttribute(\"src\", val);\n }\n get error() {\n return this.#error;\n }\n /* onStateChange\n -1 (unstarted)\n 0 (ended)\n 1 (playing)\n 2 (paused)\n 3 (buffering)\n 5 (video cued).\n */\n get paused() {\n var _a, _b;\n if (!this.isLoaded) return !this.autoplay;\n return [-1, 0, 2, 5].includes((_b = (_a = this.api) == null ? void 0 : _a.getPlayerState) == null ? void 0 : _b.call(_a));\n }\n get duration() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getDuration) == null ? void 0 : _b.call(_a)) ?? NaN;\n }\n get autoplay() {\n return this.hasAttribute(\"autoplay\");\n }\n set autoplay(val) {\n if (this.autoplay == val) return;\n this.toggleAttribute(\"autoplay\", Boolean(val));\n }\n get buffered() {\n var _a, _b;\n if (!this.isLoaded) return createTimeRanges();\n const progress = ((_a = this.api) == null ? void 0 : _a.getVideoLoadedFraction()) * ((_b = this.api) == null ? void 0 : _b.getDuration());\n if (progress > 0) {\n return createTimeRanges(0, progress);\n }\n return createTimeRanges();\n }\n get controls() {\n return this.hasAttribute(\"controls\");\n }\n set controls(val) {\n if (this.controls == val) return;\n this.toggleAttribute(\"controls\", Boolean(val));\n }\n get currentTime() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getCurrentTime) == null ? void 0 : _b.call(_a)) ?? 0;\n }\n set currentTime(val) {\n if (this.currentTime == val) return;\n this.#seekComplete = new PublicPromise();\n this.loadComplete.then(() => {\n var _a, _b;\n (_a = this.api) == null ? void 0 : _a.seekTo(val, true);\n if (this.paused) {\n (_b = this.#seekComplete) == null ? void 0 : _b.then(() => {\n var _a2;\n if (!this.#seekComplete) return;\n (_a2 = this.api) == null ? void 0 : _a2.pauseVideo();\n });\n }\n });\n }\n set defaultMuted(val) {\n if (this.defaultMuted == val) return;\n this.toggleAttribute(\"muted\", Boolean(val));\n }\n get defaultMuted() {\n return this.hasAttribute(\"muted\");\n }\n get loop() {\n return this.hasAttribute(\"loop\");\n }\n set loop(val) {\n if (this.loop == val) return;\n this.toggleAttribute(\"loop\", Boolean(val));\n }\n set muted(val) {\n if (this.muted == val) return;\n this.loadComplete.then(() => {\n var _a, _b;\n val ? (_a = this.api) == null ? void 0 : _a.mute() : (_b = this.api) == null ? void 0 : _b.unMute();\n });\n }\n get muted() {\n var _a, _b;\n if (!this.isLoaded) return this.defaultMuted;\n return (_b = (_a = this.api) == null ? void 0 : _a.isMuted) == null ? void 0 : _b.call(_a);\n }\n get playbackRate() {\n var _a, _b;\n return ((_b = (_a = this.api) == null ? void 0 : _a.getPlaybackRate) == null ? void 0 : _b.call(_a)) ?? 1;\n }\n set playbackRate(val) {\n if (this.playbackRate == val) return;\n this.loadComplete.then(() => {\n var _a;\n (_a = this.api) == null ? void 0 : _a.setPlaybackRate(val);\n });\n }\n get playsInline() {\n return this.hasAttribute(\"playsinline\");\n }\n set playsInline(val) {\n if (this.playsInline == val) return;\n this.toggleAttribute(\"playsinline\", Boolean(val));\n }\n get poster() {\n return this.getAttribute(\"poster\");\n }\n set poster(val) {\n if (this.poster == val) return;\n this.setAttribute(\"poster\", `${val}`);\n }\n set volume(val) {\n if (this.volume == val) return;\n this.#initialVolume = val;\n this.loadComplete.then(() => {\n var _a;\n (_a = this.api) == null ? void 0 : _a.setVolume(val * 100);\n });\n }\n get volume() {\n var _a;\n if (!this.isLoaded) {\n return this.#initialVolume;\n }\n return ((_a = this.api) == null ? void 0 : _a.getVolume()) / 100;\n }\n // This is a pattern to update property values that are set before\n // the custom element is upgraded.\n // https://web.dev/custom-elements-best-practices/#make-properties-lazy\n #upgradeProperty(prop) {\n if (Object.prototype.hasOwnProperty.call(this, prop)) {\n const value = this[prop];\n delete this[prop];\n this[prop] = value;\n }\n }\n}\nfunction serializeAttributes(attrs) {\n let html = \"\";\n for (const key in attrs) {\n const value = attrs[key];\n if (value === \"\") html += ` ${escapeHtml(key)}`;\n else html += ` ${escapeHtml(key)}=\"${escapeHtml(`${value}`)}\"`;\n }\n return html;\n}\nfunction escapeHtml(str) {\n return str.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&apos;\").replace(/`/g, \"&#x60;\");\n}\nfunction serialize(props) {\n return String(new URLSearchParams(boolToBinary(props)));\n}\nfunction boolToBinary(props) {\n let p = {};\n for (let key in props) {\n let val = props[key];\n if (val === true || val === \"\") p[key] = 1;\n else if (val === false) p[key] = 0;\n else if (val != null) p[key] = val;\n }\n return p;\n}\nfunction namedNodeMapToObject(namedNodeMap) {\n let obj = {};\n for (let attr of namedNodeMap) {\n obj[attr.name] = attr.value;\n }\n return obj;\n}\nconst loadScriptCache = {};\nasync function loadScript(src, globalName, readyFnName) {\n if (loadScriptCache[src]) return loadScriptCache[src];\n if (globalName && self[globalName]) {\n await delay(0);\n return self[globalName];\n }\n return loadScriptCache[src] = new Promise(function(resolve, reject) {\n const script = document.createElement(\"script\");\n script.src = src;\n const ready = () => resolve(self[globalName]);\n if (readyFnName) self[readyFnName] = ready;\n script.onload = () => !readyFnName && ready();\n script.onerror = reject;\n document.head.append(script);\n });\n}\nconst delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nfunction promisify(fn) {\n return (...args) => new Promise((resolve) => {\n fn(...args, (...res) => {\n if (res.length > 1) resolve(res);\n else resolve(res[0]);\n });\n });\n}\nfunction createPlayPromise(player) {\n return promisify((event, cb) => {\n let fn;\n player.addEventListener(\n event,\n fn = () => {\n player.removeEventListener(event, fn);\n cb();\n }\n );\n })(\"playing\");\n}\nclass PublicPromise extends Promise {\n constructor(executor = () => {\n }) {\n let res, rej;\n super((resolve, reject) => {\n executor(resolve, reject);\n res = resolve;\n rej = reject;\n });\n this.resolve = res;\n this.reject = rej;\n }\n}\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start == null || end == null || start === 0 && end === 0) {\n return createTimeRangesObj([[0, 0]]);\n }\n return createTimeRangesObj([[start, end]]);\n}\nfunction createTimeRangesObj(ranges) {\n Object.defineProperties(ranges, {\n start: {\n value: (i) => ranges[i][0]\n },\n end: {\n value: (i) => ranges[i][1]\n }\n });\n return ranges;\n}\nif (globalThis.customElements && !globalThis.customElements.get(\"youtube-video\")) {\n globalThis.customElements.define(\"youtube-video\", YoutubeVideoElement);\n}\nvar youtube_video_element_default = YoutubeVideoElement;\nexport {\n youtube_video_element_default as default\n};\n","\"use client\";\n\n// dist/react.ts\nimport React from \"react\";\nimport CustomMediaElement from \"./youtube-video-element.js\";\n\n// ../../node_modules/ce-la-react/dist/ce-la-react.js\nvar reservedReactProps = /* @__PURE__ */ new Set([\n \"style\",\n \"children\",\n \"ref\",\n \"key\",\n \"suppressContentEditableWarning\",\n \"suppressHydrationWarning\",\n \"dangerouslySetInnerHTML\"\n]);\nvar reactPropToAttrNameMap = {\n className: \"class\",\n htmlFor: \"for\"\n};\nfunction defaultToAttributeName(propName) {\n return propName.toLowerCase();\n}\nfunction defaultToAttributeValue(propValue) {\n if (typeof propValue === \"boolean\") return propValue ? \"\" : void 0;\n if (typeof propValue === \"function\") return void 0;\n if (typeof propValue === \"object\" && propValue !== null) return void 0;\n return propValue;\n}\nfunction createComponent({\n react: React2,\n tagName,\n elementClass,\n events,\n displayName,\n defaultProps,\n toAttributeName = defaultToAttributeName,\n toAttributeValue = defaultToAttributeValue\n}) {\n const IS_REACT_19_OR_NEWER = Number.parseInt(React2.version) >= 19;\n const ReactComponent = React2.forwardRef((props, ref) => {\n var _a, _b;\n const elementRef = React2.useRef(null);\n const prevElemPropsRef = React2.useRef(/* @__PURE__ */ new Map());\n const eventProps = {};\n const attrs = {};\n const reactProps = {};\n const elementProps = {};\n for (const [k, v] of Object.entries(props)) {\n if (reservedReactProps.has(k)) {\n reactProps[k] = v;\n continue;\n }\n const attrName = toAttributeName(reactPropToAttrNameMap[k] ?? k);\n if (elementClass.prototype && k in elementClass.prototype && !(k in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) && !((_b = elementClass.observedAttributes) == null ? void 0 : _b.some((attr) => attr === attrName))) {\n elementProps[k] = v;\n continue;\n }\n if (k.startsWith(\"on\")) {\n eventProps[k] = v;\n continue;\n }\n const attrValue = toAttributeValue(v);\n if (attrName && attrValue != null) {\n attrs[attrName] = String(attrValue);\n if (!IS_REACT_19_OR_NEWER) {\n reactProps[attrName] = attrValue;\n }\n }\n if (attrName && IS_REACT_19_OR_NEWER) {\n const attrValueFromDefault = defaultToAttributeValue(v);\n if (attrValue !== attrValueFromDefault) {\n reactProps[attrName] = attrValue;\n } else {\n reactProps[attrName] = v;\n }\n }\n }\n if (typeof window !== \"undefined\") {\n for (const propName in eventProps) {\n const callback = eventProps[propName];\n const useCapture = propName.endsWith(\"Capture\");\n const eventName = ((events == null ? void 0 : events[propName]) ?? propName.slice(2).toLowerCase()).slice(\n 0,\n useCapture ? -7 : void 0\n );\n React2.useLayoutEffect(() => {\n const eventTarget = elementRef == null ? void 0 : elementRef.current;\n if (!eventTarget || typeof callback !== \"function\") return;\n eventTarget.addEventListener(eventName, callback, useCapture);\n return () => {\n eventTarget.removeEventListener(eventName, callback, useCapture);\n };\n }, [elementRef == null ? void 0 : elementRef.current, callback]);\n }\n React2.useLayoutEffect(() => {\n if (elementRef.current === null) return;\n const newElemProps = /* @__PURE__ */ new Map();\n for (const key in elementProps) {\n setProperty(elementRef.current, key, elementProps[key]);\n prevElemPropsRef.current.delete(key);\n newElemProps.set(key, elementProps[key]);\n }\n for (const [key, _value] of prevElemPropsRef.current) {\n setProperty(elementRef.current, key, void 0);\n }\n prevElemPropsRef.current = newElemProps;\n });\n }\n if (typeof window === \"undefined\" && (elementClass == null ? void 0 : elementClass.getTemplateHTML) && (elementClass == null ? void 0 : elementClass.shadowRootOptions)) {\n const { mode, delegatesFocus } = elementClass.shadowRootOptions;\n const templateShadowRoot = React2.createElement(\"template\", {\n shadowrootmode: mode,\n shadowrootdelegatesfocus: delegatesFocus,\n dangerouslySetInnerHTML: {\n __html: elementClass.getTemplateHTML(attrs, props)\n },\n key: \"ce-la-react-ssr-template-shadow-root\"\n });\n reactProps.children = [templateShadowRoot, reactProps.children];\n }\n return React2.createElement(tagName, {\n ...defaultProps,\n ...reactProps,\n ref: React2.useCallback(\n (node) => {\n elementRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref !== null) {\n ref.current = node;\n }\n },\n [ref]\n )\n }, reactProps.children);\n });\n ReactComponent.displayName = displayName ?? elementClass.name;\n return ReactComponent;\n}\nfunction setProperty(node, name, value) {\n var _a;\n node[name] = value;\n if (value == null && name in (((_a = globalThis.HTMLElement) == null ? void 0 : _a.prototype) ?? {})) {\n node.removeAttribute(name);\n }\n}\n\n// dist/react.ts\nvar react_default = createComponent({\n react: React,\n tagName: \"youtube-video\",\n elementClass: CustomMediaElement,\n toAttributeName(propName) {\n if (propName === \"muted\") return \"\";\n if (propName === \"defaultMuted\") return \"muted\";\n return defaultToAttributeName(propName);\n }\n});\nexport {\n react_default as default\n};\n/*! Bundled license information:\n\nce-la-react/dist/ce-la-react.js:\n (**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n *\n * Modified version of `@lit/react` for vanilla custom elements with support for SSR.\n *)\n*/\n"],"names":["EMBED_BASE","EMBED_BASE_NOCOOKIE","API_URL","API_GLOBAL","API_GLOBAL_READY","VIDEO_MATCH_SRC","PLAYLIST_MATCH_SRC","getTemplateHTML","attrs","props","_a","iframeAttrs","serializeIframeUrl","serializeAttributes","embedBase","params","matches2","srcId","serialize","matches","extendedParams","YoutubeVideoElement","PublicPromise","#loadRequested","#hasLoaded","#readyState","#seeking","#seekComplete","#error","#config","#textTracksVideo","#initialVolume","#upgradeProperty","value","isFirstLoad","oldApi","active","t","iframe","namedNodeMapToObject","YT","loadScript","error","playFired","event","state","tt","diff","lastCurrentTime","apiVolume","bufferedEnd","lastBufferedEnd","progressInterval","attrName","oldValue","newValue","createPlayPromise","val","_b","createTimeRanges","progress","_a2","prop","html","key","escapeHtml","str","boolToBinary","p","namedNodeMap","obj","attr","loadScriptCache","src","globalName","readyFnName","delay","resolve","reject","script","ready","ms","promisify","fn","args","res","player","cb","executor","rej","start","end","createTimeRangesObj","ranges","i","youtube_video_element_default","reservedReactProps","reactPropToAttrNameMap","defaultToAttributeName","propName","defaultToAttributeValue","propValue","createComponent","React2","tagName","elementClass","events","displayName","defaultProps","toAttributeName","toAttributeValue","IS_REACT_19_OR_NEWER","ReactComponent","ref","elementRef","prevElemPropsRef","eventProps","reactProps","elementProps","k","v","attrValue","attrValueFromDefault","callback","useCapture","eventName","eventTarget","newElemProps","setProperty","_value","mode","delegatesFocus","templateShadowRoot","node","name","react_default","React","CustomMediaElement"],"mappings":"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","x_google_ignoreList":[0,1]}