@locpd/vidstack 1.12.14

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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -0
  3. package/analyze.json.d.ts +8 -0
  4. package/bundle.d.ts +1 -0
  5. package/cdn/chunks/vidstack-2f5gzOW6.js +1 -0
  6. package/cdn/chunks/vidstack-BYgY9wmd.js +1 -0
  7. package/cdn/chunks/vidstack-BfBBPhXV.js +1 -0
  8. package/cdn/chunks/vidstack-Bjo5esRp.js +1 -0
  9. package/cdn/chunks/vidstack-BuL67v3q.js +1 -0
  10. package/cdn/chunks/vidstack-C0msPRTd.js +3 -0
  11. package/cdn/chunks/vidstack-CJNLoJPa.js +1 -0
  12. package/cdn/chunks/vidstack-CQSpZ7X8.js +16 -0
  13. package/cdn/chunks/vidstack-C_AxqLKV.js +1 -0
  14. package/cdn/chunks/vidstack-CioT3Yw2.js +1 -0
  15. package/cdn/chunks/vidstack-CrqkytHl.js +1 -0
  16. package/cdn/chunks/vidstack-D0M8R0ZU.js +1 -0
  17. package/cdn/chunks/vidstack-D40FSa5B.js +3 -0
  18. package/cdn/chunks/vidstack-DD2JwFVU.js +1 -0
  19. package/cdn/chunks/vidstack-DRH_1tFW.js +1 -0
  20. package/cdn/chunks/vidstack-DfDZuHNP.js +1 -0
  21. package/cdn/chunks/vidstack-DiNS2Vx5.js +1 -0
  22. package/cdn/chunks/vidstack-xjJ-ui_l.js +1 -0
  23. package/cdn/providers/vidstack-audio-2Dt_Ivbp.js +1 -0
  24. package/cdn/providers/vidstack-dash-CUtD4e6q.js +1 -0
  25. package/cdn/providers/vidstack-google-cast-BdORATUX.js +1 -0
  26. package/cdn/providers/vidstack-hls-R25Kb6DP.js +1 -0
  27. package/cdn/providers/vidstack-html-DaAUJYsD.js +1 -0
  28. package/cdn/providers/vidstack-video-Csvox7SO.js +1 -0
  29. package/cdn/providers/vidstack-vimeo-D4Z96kg2.js +1 -0
  30. package/cdn/providers/vidstack-youtube-DiND6h3s.js +1 -0
  31. package/cdn/vidstack.js +1 -0
  32. package/cdn/with-layouts/chunks/vidstack-2f5gzOW6.js +1 -0
  33. package/cdn/with-layouts/chunks/vidstack-45yH5los.js +1 -0
  34. package/cdn/with-layouts/chunks/vidstack-BBVMdOnf.js +1 -0
  35. package/cdn/with-layouts/chunks/vidstack-BB_ulI_T.js +1 -0
  36. package/cdn/with-layouts/chunks/vidstack-BcAewM33.js +1 -0
  37. package/cdn/with-layouts/chunks/vidstack-BfBBPhXV.js +1 -0
  38. package/cdn/with-layouts/chunks/vidstack-Bxv1Qnxe.js +1 -0
  39. package/cdn/with-layouts/chunks/vidstack-C2ZbG62f.js +3 -0
  40. package/cdn/with-layouts/chunks/vidstack-CCYIOKgL.js +1 -0
  41. package/cdn/with-layouts/chunks/vidstack-CL6PeIO1.js +1 -0
  42. package/cdn/with-layouts/chunks/vidstack-C_AxqLKV.js +1 -0
  43. package/cdn/with-layouts/chunks/vidstack-CifDkwDH.js +795 -0
  44. package/cdn/with-layouts/chunks/vidstack-Cry7aD59.js +3 -0
  45. package/cdn/with-layouts/chunks/vidstack-D065okCn.js +1 -0
  46. package/cdn/with-layouts/chunks/vidstack-DGuMoXmI.js +1 -0
  47. package/cdn/with-layouts/chunks/vidstack-DRH_1tFW.js +1 -0
  48. package/cdn/with-layouts/chunks/vidstack-DVBs1XoQ.js +1 -0
  49. package/cdn/with-layouts/chunks/vidstack-Dge3KT8k.js +1 -0
  50. package/cdn/with-layouts/chunks/vidstack-DiNS2Vx5.js +1 -0
  51. package/cdn/with-layouts/chunks/vidstack-HvYfJoen.js +1 -0
  52. package/cdn/with-layouts/providers/vidstack-audio-DE5vKIzW.js +1 -0
  53. package/cdn/with-layouts/providers/vidstack-dash-CA2agUuZ.js +1 -0
  54. package/cdn/with-layouts/providers/vidstack-google-cast-CGs-t8HM.js +1 -0
  55. package/cdn/with-layouts/providers/vidstack-hls-BHMbMFFR.js +1 -0
  56. package/cdn/with-layouts/providers/vidstack-html-Dm9gmNk6.js +1 -0
  57. package/cdn/with-layouts/providers/vidstack-video-C5it_Lbl.js +1 -0
  58. package/cdn/with-layouts/providers/vidstack-vimeo-BabLn9sy.js +1 -0
  59. package/cdn/with-layouts/providers/vidstack-youtube-D8UlccUL.js +1 -0
  60. package/cdn/with-layouts/vidstack.js +1 -0
  61. package/dev/chunks/vidstack-B7Zi3v_O.js +104 -0
  62. package/dev/chunks/vidstack-BFg1ZqiG.js +91 -0
  63. package/dev/chunks/vidstack-BGB2pa9s.js +58 -0
  64. package/dev/chunks/vidstack-BaIbHZE3.js +1519 -0
  65. package/dev/chunks/vidstack-Bb2rASIc.js +5188 -0
  66. package/dev/chunks/vidstack-Bcmx8pmK.js +224 -0
  67. package/dev/chunks/vidstack-Bl4b0Nen.js +29 -0
  68. package/dev/chunks/vidstack-Bo5OTJ06.js +58 -0
  69. package/dev/chunks/vidstack-BoAGnlRt.js +58 -0
  70. package/dev/chunks/vidstack-Bpr4fI4n.js +7 -0
  71. package/dev/chunks/vidstack-Bt8MP2DK.js +204 -0
  72. package/dev/chunks/vidstack-Bu2kfzUd.js +1637 -0
  73. package/dev/chunks/vidstack-C-ffXlSV.js +2995 -0
  74. package/dev/chunks/vidstack-C-ztJq-f.js +109 -0
  75. package/dev/chunks/vidstack-CFNlaVTR.js +55 -0
  76. package/dev/chunks/vidstack-C_l97D5j.js +254 -0
  77. package/dev/chunks/vidstack-CjhKISI0.js +114 -0
  78. package/dev/chunks/vidstack-CofXIJAy.js +57 -0
  79. package/dev/chunks/vidstack-CwTj4H1w.js +18 -0
  80. package/dev/chunks/vidstack-DDwbYVHV.js +66 -0
  81. package/dev/chunks/vidstack-DFImIcIL.js +11 -0
  82. package/dev/chunks/vidstack-DGDvUbvO.js +33 -0
  83. package/dev/chunks/vidstack-DO0kqA99.js +107 -0
  84. package/dev/chunks/vidstack-DXxIKXmd.js +50 -0
  85. package/dev/chunks/vidstack-DajrMUR0.js +297 -0
  86. package/dev/chunks/vidstack-DbBJlz7I.js +10 -0
  87. package/dev/chunks/vidstack-Dihypf8P.js +11 -0
  88. package/dev/chunks/vidstack-DlAhl87f.js +1193 -0
  89. package/dev/chunks/vidstack-Dm1xEU9Q.js +34 -0
  90. package/dev/chunks/vidstack-Dv_LIPFu.js +14 -0
  91. package/dev/chunks/vidstack-igYn0Apa.js +254 -0
  92. package/dev/chunks/vidstack-krOAtKMi.js +32 -0
  93. package/dev/chunks/vidstack-qh1N5_f_.js +26 -0
  94. package/dev/chunks/vidstack-rB-wqXw1.js +107 -0
  95. package/dev/chunks/vidstack-zG6PIeGg.js +66 -0
  96. package/dev/define/plyr-layout.js +51 -0
  97. package/dev/define/templates/plyr-layout.js +571 -0
  98. package/dev/define/templates/vidstack-audio-layout.js +167 -0
  99. package/dev/define/templates/vidstack-video-layout.js +390 -0
  100. package/dev/define/vidstack-icons.js +1 -0
  101. package/dev/define/vidstack-player-default-layout.js +21 -0
  102. package/dev/define/vidstack-player-layouts.js +25 -0
  103. package/dev/define/vidstack-player-ui.js +70 -0
  104. package/dev/define/vidstack-player.js +19 -0
  105. package/dev/global/plyr.js +501 -0
  106. package/dev/global/vidstack-player.js +129 -0
  107. package/dev/providers/vidstack-audio.js +35 -0
  108. package/dev/providers/vidstack-dash.js +516 -0
  109. package/dev/providers/vidstack-google-cast.js +474 -0
  110. package/dev/providers/vidstack-hls.js +408 -0
  111. package/dev/providers/vidstack-html.js +567 -0
  112. package/dev/providers/vidstack-video.js +207 -0
  113. package/dev/providers/vidstack-vimeo.js +554 -0
  114. package/dev/providers/vidstack-youtube.js +286 -0
  115. package/dev/vidstack-elements.js +36 -0
  116. package/dev/vidstack.js +91 -0
  117. package/dom.d.ts +91 -0
  118. package/elements.d.ts +1433 -0
  119. package/empty.vtt +1 -0
  120. package/global/player.d.ts +52 -0
  121. package/global/plyr.d.ts +343 -0
  122. package/google-cast.d.ts +1422 -0
  123. package/icons.d.ts +1 -0
  124. package/index.d.ts +402 -0
  125. package/package.json +199 -0
  126. package/player/index.d.ts +3 -0
  127. package/player/layouts/default.d.ts +3 -0
  128. package/player/layouts/index.d.ts +3 -0
  129. package/player/layouts/plyr.d.ts +3 -0
  130. package/player/styles/base.css +153 -0
  131. package/player/styles/default/buffering.css +55 -0
  132. package/player/styles/default/buttons.css +175 -0
  133. package/player/styles/default/captions.css +181 -0
  134. package/player/styles/default/chapter-title.css +26 -0
  135. package/player/styles/default/controls.css +56 -0
  136. package/player/styles/default/gestures.css +19 -0
  137. package/player/styles/default/icons.css +6 -0
  138. package/player/styles/default/keyboard.css +148 -0
  139. package/player/styles/default/layouts/audio.css +417 -0
  140. package/player/styles/default/layouts/video.css +590 -0
  141. package/player/styles/default/menus.css +959 -0
  142. package/player/styles/default/poster.css +52 -0
  143. package/player/styles/default/sliders.css +391 -0
  144. package/player/styles/default/theme.css +2461 -0
  145. package/player/styles/default/thumbnail.css +40 -0
  146. package/player/styles/default/time.css +45 -0
  147. package/player/styles/default/tooltips.css +141 -0
  148. package/player/styles/plyr/theme.css +1237 -0
  149. package/player/ui.d.ts +3 -0
  150. package/plugins.d.ts +19 -0
  151. package/plugins.js +13 -0
  152. package/prod/chunks/vidstack-B01xzxC4.js +7 -0
  153. package/prod/chunks/vidstack-BCeb7ryV.js +201 -0
  154. package/prod/chunks/vidstack-BGSTndAW.js +1590 -0
  155. package/prod/chunks/vidstack-BPitBBjh.js +1519 -0
  156. package/prod/chunks/vidstack-BQlOPwOu.js +45 -0
  157. package/prod/chunks/vidstack-BSDzlwxO.js +4778 -0
  158. package/prod/chunks/vidstack-BT0m6zEi.js +109 -0
  159. package/prod/chunks/vidstack-BTigPj2h.js +55 -0
  160. package/prod/chunks/vidstack-BiyXcJ_M.js +107 -0
  161. package/prod/chunks/vidstack-BoVf5n1M.js +2985 -0
  162. package/prod/chunks/vidstack-Bq6c3Bam.js +58 -0
  163. package/prod/chunks/vidstack-ByLCIBtB.js +297 -0
  164. package/prod/chunks/vidstack-C2US-gSO.js +248 -0
  165. package/prod/chunks/vidstack-C9vIqaYT.js +10 -0
  166. package/prod/chunks/vidstack-CF6fixCQ.js +1193 -0
  167. package/prod/chunks/vidstack-CTojmhKq.js +66 -0
  168. package/prod/chunks/vidstack-ChQTHmIQ.js +77 -0
  169. package/prod/chunks/vidstack-Cm6_unwd.js +246 -0
  170. package/prod/chunks/vidstack-CwTj4H1w.js +18 -0
  171. package/prod/chunks/vidstack-D3ltXc3a.js +33 -0
  172. package/prod/chunks/vidstack-D5EzK014.js +14 -0
  173. package/prod/chunks/vidstack-DDXt6fpN.js +58 -0
  174. package/prod/chunks/vidstack-DJDnh4xT.js +11 -0
  175. package/prod/chunks/vidstack-DXxIKXmd.js +50 -0
  176. package/prod/chunks/vidstack-D_-9AA6_.js +29 -0
  177. package/prod/chunks/vidstack-DbkZGjSn.js +107 -0
  178. package/prod/chunks/vidstack-Dihypf8P.js +11 -0
  179. package/prod/chunks/vidstack-Dm1xEU9Q.js +34 -0
  180. package/prod/chunks/vidstack-Dq5Yu0Vr.js +205 -0
  181. package/prod/chunks/vidstack-DqAw8m9J.js +26 -0
  182. package/prod/chunks/vidstack-DsPOyKtl.js +57 -0
  183. package/prod/chunks/vidstack-krOAtKMi.js +32 -0
  184. package/prod/chunks/vidstack-nLyr4NEP.js +58 -0
  185. package/prod/chunks/vidstack-xMS8dnYq.js +114 -0
  186. package/prod/chunks/vidstack-yEGTpgeA.js +104 -0
  187. package/prod/define/plyr-layout.js +51 -0
  188. package/prod/define/templates/plyr-layout.js +571 -0
  189. package/prod/define/templates/vidstack-audio-layout.js +167 -0
  190. package/prod/define/templates/vidstack-video-layout.js +390 -0
  191. package/prod/define/vidstack-icons.js +1 -0
  192. package/prod/define/vidstack-player-default-layout.js +21 -0
  193. package/prod/define/vidstack-player-layouts.js +25 -0
  194. package/prod/define/vidstack-player-ui.js +70 -0
  195. package/prod/define/vidstack-player.js +19 -0
  196. package/prod/global/plyr.js +493 -0
  197. package/prod/global/vidstack-player.js +129 -0
  198. package/prod/providers/vidstack-audio.js +35 -0
  199. package/prod/providers/vidstack-dash.js +501 -0
  200. package/prod/providers/vidstack-google-cast.js +468 -0
  201. package/prod/providers/vidstack-hls.js +393 -0
  202. package/prod/providers/vidstack-html.js +555 -0
  203. package/prod/providers/vidstack-video.js +204 -0
  204. package/prod/providers/vidstack-vimeo.js +548 -0
  205. package/prod/providers/vidstack-youtube.js +286 -0
  206. package/prod/vidstack-elements.js +36 -0
  207. package/prod/vidstack.js +158 -0
  208. package/server/chunks/vidstack-6juFdkKy.js +29 -0
  209. package/server/chunks/vidstack-B7iHmv7_.js +307 -0
  210. package/server/chunks/vidstack-BmxyML9v.js +1619 -0
  211. package/server/chunks/vidstack-BskfxwD3.js +566 -0
  212. package/server/chunks/vidstack-BvLV0SMz.js +4642 -0
  213. package/server/chunks/vidstack-BvWwluXZ.js +205 -0
  214. package/server/chunks/vidstack-C-413dj2.js +8 -0
  215. package/server/chunks/vidstack-C26K8z_-.js +55 -0
  216. package/server/chunks/vidstack-CJJiksDz.js +107 -0
  217. package/server/chunks/vidstack-CUNv52x1.js +141 -0
  218. package/server/chunks/vidstack-CqyBCODe.js +295 -0
  219. package/server/chunks/vidstack-CwTj4H1w.js +18 -0
  220. package/server/chunks/vidstack-DHAyGSOl.js +1502 -0
  221. package/server/chunks/vidstack-DLU3cjcp.js +381 -0
  222. package/server/chunks/vidstack-DXxIKXmd.js +50 -0
  223. package/server/chunks/vidstack-DbtDXDS2.js +104 -0
  224. package/server/chunks/vidstack-Dm1xEU9Q.js +34 -0
  225. package/server/chunks/vidstack-DzTHw_bw.js +207 -0
  226. package/server/chunks/vidstack-Wn3NH5Sg.js +1566 -0
  227. package/server/chunks/vidstack-krOAtKMi.js +32 -0
  228. package/server/chunks/vidstack-wNViAkr4.js +3045 -0
  229. package/server/define/plyr-layout.js +16 -0
  230. package/server/define/vidstack-icons.js +1 -0
  231. package/server/define/vidstack-player-default-layout.js +13 -0
  232. package/server/define/vidstack-player-layouts.js +16 -0
  233. package/server/define/vidstack-player-ui.js +11 -0
  234. package/server/define/vidstack-player.js +6 -0
  235. package/server/global/plyr.js +322 -0
  236. package/server/global/vidstack-player.js +58 -0
  237. package/server/vidstack-elements.js +46 -0
  238. package/server/vidstack.js +148 -0
  239. package/tailwind.cjs +101 -0
  240. package/tailwind.d.cts +15 -0
  241. package/types/vidstack-BOvzfZjK.d.ts +1269 -0
  242. package/types/vidstack-Cttpg6GU.d.ts +7474 -0
@@ -0,0 +1,307 @@
1
+ import { EventsTarget, DOMEvent, isString, isArray, isNumber, signal, ViewController, effect, setAttribute, EventsController } from './vidstack-Wn3NH5Sg.js';
2
+ import { isCueActive, getRequestCredentials } from './vidstack-DLU3cjcp.js';
3
+
4
+ const CROSS_ORIGIN = Symbol(0), READY_STATE = Symbol(0), UPDATE_ACTIVE_CUES = Symbol(0), CAN_LOAD = Symbol(0), ON_MODE_CHANGE = Symbol(0), NATIVE = Symbol(0), NATIVE_HLS = Symbol(0);
5
+ const TextTrackSymbol = {
6
+ crossOrigin: CROSS_ORIGIN,
7
+ readyState: READY_STATE,
8
+ updateActiveCues: UPDATE_ACTIVE_CUES,
9
+ canLoad: CAN_LOAD,
10
+ onModeChange: ON_MODE_CHANGE,
11
+ native: NATIVE,
12
+ nativeHLS: NATIVE_HLS
13
+ };
14
+
15
+ class TextTrack extends EventsTarget {
16
+ static createId(track) {
17
+ return `vds-${track.type}-${track.kind}-${track.src ?? track.label ?? "?"}`;
18
+ }
19
+ src;
20
+ content;
21
+ type;
22
+ encoding;
23
+ id = "";
24
+ label = "";
25
+ language = "";
26
+ kind;
27
+ default = false;
28
+ #canLoad = false;
29
+ #currentTime = 0;
30
+ #mode = "disabled";
31
+ #metadata = {};
32
+ #regions = [];
33
+ #cues = [];
34
+ #activeCues = [];
35
+ #cueIds = /* @__PURE__ */ new Set();
36
+ /** @internal */
37
+ [TextTrackSymbol.readyState] = 0;
38
+ /** @internal */
39
+ [TextTrackSymbol.crossOrigin];
40
+ /** @internal */
41
+ [TextTrackSymbol.onModeChange] = null;
42
+ /** @internal */
43
+ [TextTrackSymbol.native] = null;
44
+ get metadata() {
45
+ return this.#metadata;
46
+ }
47
+ get regions() {
48
+ return this.#regions;
49
+ }
50
+ get cues() {
51
+ return this.#cues;
52
+ }
53
+ get activeCues() {
54
+ return this.#activeCues;
55
+ }
56
+ /**
57
+ * - 0: Not Loading
58
+ * - 1: Loading
59
+ * - 2: Ready
60
+ * - 3: Error
61
+ */
62
+ get readyState() {
63
+ return this[TextTrackSymbol.readyState];
64
+ }
65
+ get mode() {
66
+ return this.#mode;
67
+ }
68
+ set mode(mode) {
69
+ this.setMode(mode);
70
+ }
71
+ constructor(init) {
72
+ super();
73
+ for (const prop of Object.keys(init)) this[prop] = init[prop];
74
+ if (!this.type) this.type = "vtt";
75
+ if (!init.src) {
76
+ this[TextTrackSymbol.readyState] = 2;
77
+ }
78
+ }
79
+ addCue(cue, trigger) {
80
+ if (cue.id) {
81
+ if (this.#cueIds.has(cue.id)) return;
82
+ this.#cueIds.add(cue.id);
83
+ }
84
+ let i = 0, length = this.#cues.length;
85
+ for (i = 0; i < length; i++) if (cue.endTime <= this.#cues[i].startTime) break;
86
+ if (i === length) this.#cues.push(cue);
87
+ else this.#cues.splice(i, 0, cue);
88
+ if (!(cue instanceof TextTrackCue)) {
89
+ this[TextTrackSymbol.native]?.track.addCue(cue);
90
+ }
91
+ this.dispatchEvent(new DOMEvent("add-cue", { detail: cue, trigger }));
92
+ if (isCueActive(cue, this.#currentTime)) {
93
+ this[TextTrackSymbol.updateActiveCues](this.#currentTime, trigger);
94
+ }
95
+ }
96
+ removeCue(cue, trigger) {
97
+ const index = this.#cues.indexOf(cue);
98
+ if (index >= 0) {
99
+ const isActive = this.#activeCues.includes(cue);
100
+ if (cue.id) this.#cueIds.delete(cue.id);
101
+ this.#cues.splice(index, 1);
102
+ this[TextTrackSymbol.native]?.track.removeCue(cue);
103
+ this.dispatchEvent(new DOMEvent("remove-cue", { detail: cue, trigger }));
104
+ if (isActive) {
105
+ this[TextTrackSymbol.updateActiveCues](this.#currentTime, trigger);
106
+ }
107
+ }
108
+ }
109
+ setMode(mode, trigger) {
110
+ if (this.#mode === mode) return;
111
+ this.#mode = mode;
112
+ if (mode === "disabled") {
113
+ this.#activeCues = [];
114
+ this.#activeCuesChanged();
115
+ } else if (this.readyState === 2) {
116
+ this[TextTrackSymbol.updateActiveCues](this.#currentTime, trigger);
117
+ } else {
118
+ this.#load();
119
+ }
120
+ this.dispatchEvent(new DOMEvent("mode-change", { detail: this, trigger }));
121
+ this[TextTrackSymbol.onModeChange]?.();
122
+ }
123
+ /** @internal */
124
+ [TextTrackSymbol.updateActiveCues](currentTime, trigger) {
125
+ this.#currentTime = currentTime;
126
+ if (this.mode === "disabled" || !this.#cues.length) return;
127
+ const activeCues = [];
128
+ for (let i = 0, length = this.#cues.length; i < length; i++) {
129
+ const cue = this.#cues[i];
130
+ if (isCueActive(cue, currentTime)) activeCues.push(cue);
131
+ }
132
+ let changed = activeCues.length !== this.#activeCues.length;
133
+ if (!changed) {
134
+ for (let i = 0; i < activeCues.length; i++) {
135
+ if (!this.#activeCues.includes(activeCues[i])) {
136
+ changed = true;
137
+ break;
138
+ }
139
+ }
140
+ }
141
+ this.#activeCues = activeCues;
142
+ if (changed) this.#activeCuesChanged(trigger);
143
+ }
144
+ /** @internal */
145
+ [TextTrackSymbol.canLoad]() {
146
+ this.#canLoad = true;
147
+ if (this.#mode !== "disabled") this.#load();
148
+ }
149
+ #parseContent(init) {
150
+ import('media-captions').then(({ parseText, VTTCue, VTTRegion }) => {
151
+ if (!isString(init.content) || init.type === "json") {
152
+ this.#parseJSON(init.content, VTTCue, VTTRegion);
153
+ if (this.readyState !== 3) this.#ready();
154
+ } else {
155
+ const content = init.content.split("\n").map((line) => line.trim()).join("\n").trim();
156
+ parseText(content, { type: init.type }).then(({ cues, regions }) => {
157
+ this.#cues = cues;
158
+ this.#regions = regions;
159
+ this.#ready();
160
+ });
161
+ }
162
+ });
163
+ }
164
+ async #load() {
165
+ if (!this.#canLoad || this[TextTrackSymbol.readyState] > 0) return;
166
+ this[TextTrackSymbol.readyState] = 1;
167
+ this.dispatchEvent(new DOMEvent("load-start"));
168
+ if (!this.src) {
169
+ this.#ready();
170
+ return;
171
+ }
172
+ try {
173
+ const { parseResponse, VTTCue, VTTRegion } = await import('media-captions'), crossOrigin = this[TextTrackSymbol.crossOrigin]?.();
174
+ const response = fetch(this.src, {
175
+ headers: this.type === "json" ? { "Content-Type": "application/json" } : void 0,
176
+ credentials: getRequestCredentials(crossOrigin)
177
+ });
178
+ if (this.type === "json") {
179
+ this.#parseJSON(await (await response).text(), VTTCue, VTTRegion);
180
+ } else {
181
+ const { errors, metadata, regions, cues } = await parseResponse(response, {
182
+ type: this.type,
183
+ encoding: this.encoding
184
+ });
185
+ if (errors[0]?.code === 0) {
186
+ throw errors[0];
187
+ } else {
188
+ this.#metadata = metadata;
189
+ this.#regions = regions;
190
+ this.#cues = cues;
191
+ }
192
+ }
193
+ this.#ready();
194
+ } catch (error) {
195
+ this.#error(error);
196
+ }
197
+ }
198
+ #ready() {
199
+ this[TextTrackSymbol.readyState] = 2;
200
+ if (!this.src || this.type !== "vtt") {
201
+ const native = this[TextTrackSymbol.native];
202
+ if (native && !native.managed) {
203
+ for (const cue of this.#cues) native.track.addCue(cue);
204
+ }
205
+ }
206
+ const loadEvent = new DOMEvent("load");
207
+ this[TextTrackSymbol.updateActiveCues](this.#currentTime, loadEvent);
208
+ this.dispatchEvent(loadEvent);
209
+ }
210
+ #error(error) {
211
+ this[TextTrackSymbol.readyState] = 3;
212
+ this.dispatchEvent(new DOMEvent("error", { detail: error }));
213
+ }
214
+ #parseJSON(json, VTTCue, VTTRegion) {
215
+ try {
216
+ const { regions, cues } = parseJSONCaptionsFile(json, VTTCue, VTTRegion);
217
+ this.#regions = regions;
218
+ this.#cues = cues;
219
+ } catch (error) {
220
+ this.#error(error);
221
+ }
222
+ }
223
+ #activeCuesChanged(trigger) {
224
+ this.dispatchEvent(new DOMEvent("cue-change", { trigger }));
225
+ }
226
+ }
227
+ const captionRE = /captions|subtitles/;
228
+ function isTrackCaptionKind(track) {
229
+ return captionRE.test(track.kind);
230
+ }
231
+ function parseJSONCaptionsFile(json, Cue, Region) {
232
+ const content = isString(json) ? JSON.parse(json) : json;
233
+ let regions = [], cues = [];
234
+ if (content.regions && Region) {
235
+ regions = content.regions.map((region) => Object.assign(new Region(), region));
236
+ }
237
+ if (content.cues || isArray(content)) {
238
+ cues = (isArray(content) ? content : content.cues).filter((content2) => isNumber(content2.startTime) && isNumber(content2.endTime)).map((cue) => Object.assign(new Cue(0, 0, ""), cue));
239
+ }
240
+ return { regions, cues };
241
+ }
242
+
243
+ function round(num, decimalPlaces = 2) {
244
+ return Number(num.toFixed(decimalPlaces));
245
+ }
246
+ function getNumberOfDecimalPlaces(num) {
247
+ return String(num).split(".")[1]?.length ?? 0;
248
+ }
249
+ function clampNumber(min, value, max) {
250
+ return Math.max(min, Math.min(max, value));
251
+ }
252
+
253
+ function coerceToError(error) {
254
+ return error instanceof Error ? error : Error(typeof error === "string" ? error : JSON.stringify(error));
255
+ }
256
+ function assert(condition, message) {
257
+ if (!condition) {
258
+ throw Error("Assertion failed.");
259
+ }
260
+ }
261
+
262
+ let $keyboard = signal(false);
263
+ class FocusVisibleController extends ViewController {
264
+ #focused = signal(false);
265
+ onConnect(el) {
266
+ effect(() => {
267
+ const events = new EventsController(el);
268
+ if (!$keyboard()) {
269
+ this.#focused.set(false);
270
+ updateFocusAttr(el, false);
271
+ events.add("pointerenter", this.#onPointerEnter.bind(this)).add("pointerleave", this.#onPointerLeave.bind(this));
272
+ return;
273
+ }
274
+ const active = document.activeElement === el;
275
+ this.#focused.set(active);
276
+ updateFocusAttr(el, active);
277
+ events.add("focus", this.#onFocus.bind(this)).add("blur", this.#onBlur.bind(this));
278
+ });
279
+ }
280
+ focused() {
281
+ return this.#focused();
282
+ }
283
+ #onFocus() {
284
+ this.#focused.set(true);
285
+ updateFocusAttr(this.el, true);
286
+ }
287
+ #onBlur() {
288
+ this.#focused.set(false);
289
+ updateFocusAttr(this.el, false);
290
+ }
291
+ #onPointerEnter() {
292
+ updateHoverAttr(this.el, true);
293
+ }
294
+ #onPointerLeave() {
295
+ updateHoverAttr(this.el, false);
296
+ }
297
+ }
298
+ function updateFocusAttr(el, isFocused) {
299
+ setAttribute(el, "data-focus", isFocused);
300
+ setAttribute(el, "data-hocus", isFocused);
301
+ }
302
+ function updateHoverAttr(el, isHovering) {
303
+ setAttribute(el, "data-hocus", isHovering);
304
+ setAttribute(el, "data-hover", isHovering);
305
+ }
306
+
307
+ export { $keyboard, FocusVisibleController, TextTrack, TextTrackSymbol, assert, clampNumber, coerceToError, getNumberOfDecimalPlaces, isTrackCaptionKind, parseJSONCaptionsFile, round };