@openrails/contentkit-ui 0.103.1 → 0.104.0-rc.1

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 (145) hide show
  1. package/README.md +105 -43
  2. package/dist/client/beacons.d.ts +3 -13
  3. package/dist/client/beacons.js +4 -45
  4. package/dist/client/beacons.js.map +1 -1
  5. package/dist/client/client.d.ts +3 -0
  6. package/dist/client/client.js +45 -43
  7. package/dist/client/client.js.map +1 -1
  8. package/dist/client/content/favorites.d.ts +2 -0
  9. package/dist/client/content/favorites.js.map +1 -1
  10. package/dist/client/content/types.d.ts +3 -0
  11. package/dist/client/content/types.js.map +1 -1
  12. package/dist/client/discovery.d.ts +28 -3
  13. package/dist/client/discovery.js +22 -1
  14. package/dist/client/discovery.js.map +1 -1
  15. package/dist/client/engagement.d.ts +70 -0
  16. package/dist/client/engagement.js +191 -0
  17. package/dist/client/engagement.js.map +1 -0
  18. package/dist/client/generated/routes.d.ts +35 -9
  19. package/dist/client/generated/routes.js +59 -2
  20. package/dist/client/generated/routes.js.map +1 -1
  21. package/dist/client/generated/wire.d.ts +53 -12
  22. package/dist/client/generated/wire.js.map +1 -1
  23. package/dist/client/guest-reading-history.d.ts +40 -0
  24. package/dist/client/guest-reading-history.js +144 -0
  25. package/dist/client/guest-reading-history.js.map +1 -0
  26. package/dist/client/index.d.ts +4 -2
  27. package/dist/client/stats.d.ts +5 -5
  28. package/dist/client/stats.js.map +1 -1
  29. package/dist/client.js +24 -22
  30. package/dist/components/admin/content-manager.d.ts +1 -1
  31. package/dist/components/admin/content-manager.js +342 -302
  32. package/dist/components/admin/content-manager.js.map +1 -1
  33. package/dist/components/admin/page-review.js +106 -97
  34. package/dist/components/admin/page-review.js.map +1 -1
  35. package/dist/components/admin/quick-search.d.ts +14 -0
  36. package/dist/components/admin/quick-search.js +60 -0
  37. package/dist/components/admin/quick-search.js.map +1 -0
  38. package/dist/components/admin/reader-content-editor.d.ts +6 -0
  39. package/dist/components/admin/reader-content-editor.js +733 -0
  40. package/dist/components/admin/reader-content-editor.js.map +1 -0
  41. package/dist/components/admin/reader-manifest.js +120 -105
  42. package/dist/components/admin/reader-manifest.js.map +1 -1
  43. package/dist/components/admin/stats-dashboard.d.ts +4 -4
  44. package/dist/components/admin/stats-dashboard.js +132 -134
  45. package/dist/components/admin/stats-dashboard.js.map +1 -1
  46. package/dist/components/content/daily-releases.js +143 -191
  47. package/dist/components/content/daily-releases.js.map +1 -1
  48. package/dist/components/content/editor-save.d.ts +32 -0
  49. package/dist/components/content/editor-save.js +51 -0
  50. package/dist/components/content/editor-save.js.map +1 -0
  51. package/dist/components/content/editors.d.ts +17 -2
  52. package/dist/components/content/editors.js +359 -328
  53. package/dist/components/content/editors.js.map +1 -1
  54. package/dist/components/content/favorites.d.ts +6 -0
  55. package/dist/components/content/favorites.js +33 -0
  56. package/dist/components/content/favorites.js.map +1 -0
  57. package/dist/components/content/filter-dialog.js +19 -15
  58. package/dist/components/content/filter-dialog.js.map +1 -1
  59. package/dist/components/content/filters.d.ts +2 -0
  60. package/dist/components/content/filters.js +5 -1
  61. package/dist/components/content/filters.js.map +1 -1
  62. package/dist/components/content/grid.d.ts +34 -13
  63. package/dist/components/content/grid.js +300 -271
  64. package/dist/components/content/grid.js.map +1 -1
  65. package/dist/components/content/history.d.ts +6 -0
  66. package/dist/components/content/history.js +91 -0
  67. package/dist/components/content/history.js.map +1 -0
  68. package/dist/components/content/index.d.ts +1 -0
  69. package/dist/components/content/offer-fields.d.ts +1 -1
  70. package/dist/components/content/offer-fields.js +86 -64
  71. package/dist/components/content/offer-fields.js.map +1 -1
  72. package/dist/components/content/search.d.ts +11 -4
  73. package/dist/components/content/search.js +22 -11
  74. package/dist/components/content/search.js.map +1 -1
  75. package/dist/components/content/summary-tile.d.ts +14 -0
  76. package/dist/components/content/summary-tile.js +63 -0
  77. package/dist/components/content/summary-tile.js.map +1 -0
  78. package/dist/components/groups/memberships.d.ts +11 -1
  79. package/dist/components/groups/memberships.js +1 -1
  80. package/dist/components/groups/memberships.js.map +1 -1
  81. package/dist/components/media-folder-editor.d.ts +4 -0
  82. package/dist/components/media-folder-editor.js +178 -168
  83. package/dist/components/media-folder-editor.js.map +1 -1
  84. package/dist/components/video-mini-player.d.ts +4 -1
  85. package/dist/components/video-mini-player.js +77 -71
  86. package/dist/components/video-mini-player.js.map +1 -1
  87. package/dist/components/video-player.d.ts +4 -1
  88. package/dist/components/video-player.js +280 -276
  89. package/dist/components/video-player.js.map +1 -1
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.js +17 -14
  92. package/dist/locales/admin/de.js +33 -8
  93. package/dist/locales/admin/de.js.map +1 -1
  94. package/dist/locales/admin/en.d.ts +29 -4
  95. package/dist/locales/admin/en.js +33 -8
  96. package/dist/locales/admin/en.js.map +1 -1
  97. package/dist/locales/admin/es.js +33 -8
  98. package/dist/locales/admin/es.js.map +1 -1
  99. package/dist/locales/admin/ja.js +33 -8
  100. package/dist/locales/admin/ja.js.map +1 -1
  101. package/dist/locales/admin/ko.js +33 -8
  102. package/dist/locales/admin/ko.js.map +1 -1
  103. package/dist/locales/admin/zh.js +33 -8
  104. package/dist/locales/admin/zh.js.map +1 -1
  105. package/dist/locales/discovery/de.js +0 -1
  106. package/dist/locales/discovery/de.js.map +1 -1
  107. package/dist/locales/discovery/en.d.ts +0 -1
  108. package/dist/locales/discovery/en.js +0 -1
  109. package/dist/locales/discovery/en.js.map +1 -1
  110. package/dist/locales/discovery/es.js +0 -1
  111. package/dist/locales/discovery/es.js.map +1 -1
  112. package/dist/locales/discovery/ja.js +0 -1
  113. package/dist/locales/discovery/ja.js.map +1 -1
  114. package/dist/locales/discovery/ko.js +0 -1
  115. package/dist/locales/discovery/ko.js.map +1 -1
  116. package/dist/locales/discovery/zh.js +0 -1
  117. package/dist/locales/discovery/zh.js.map +1 -1
  118. package/dist/locales/en.d.ts +29 -5
  119. package/dist/react/discovery.d.ts +20 -17
  120. package/dist/react/discovery.js +273 -221
  121. package/dist/react/discovery.js.map +1 -1
  122. package/dist/react/index.d.ts +2 -1
  123. package/dist/react/page-review.d.ts +1 -1
  124. package/dist/react/page-review.js +6 -5
  125. package/dist/react/page-review.js.map +1 -1
  126. package/dist/react/resources.d.ts +3 -1
  127. package/dist/react/resources.js +4 -0
  128. package/dist/react/resources.js.map +1 -1
  129. package/dist/react/stats.d.ts +2 -2
  130. package/dist/react/stats.js.map +1 -1
  131. package/dist/react/use-draft.d.ts +8 -0
  132. package/dist/react/use-draft.js +35 -0
  133. package/dist/react/use-draft.js.map +1 -0
  134. package/dist/react/use-engagement.d.ts +26 -0
  135. package/dist/react/use-engagement.js +221 -0
  136. package/dist/react/use-engagement.js.map +1 -0
  137. package/dist/react/use-resource.d.ts +4 -3
  138. package/dist/react/use-resource.js +2 -1
  139. package/dist/react/use-resource.js.map +1 -1
  140. package/dist/react.js +12 -11
  141. package/dist/styles.css +1 -1
  142. package/dist/ui/dialog.d.ts +2 -1
  143. package/dist/ui/dialog.js +23 -20
  144. package/dist/ui/dialog.js.map +1 -1
  145. package/package.json +1 -1
@@ -40,323 +40,327 @@ function Be(e, t, n) {
40
40
  return e instanceof Element ? e.closest(_) || e.closest(v) || e.closest("input[type=range], [role=slider]") && /^(Arrow|Page|Home$|End$)/.test(t) ? !1 : n.contains(e) || !e.closest(y) : !0;
41
41
  }
42
42
  var Ve = (e, t) => e instanceof Element && t.contains(e) && !!e.closest("button") && !e.closest(v);
43
- function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, progress: Ke, failed: S, layout: qe = "frame", maxHeight: Je = "80svh", inlinePreview: Ye, previewStart: Xe, keyboard: C = "focus", onProgress: Ze, progressInterval: Qe = 1e4, onEvent: $e, theater: w, onTheaterChange: T, onMiniPlayer: E, renderDownloads: et, menuItems: tt, crossOrigin: nt, label: rt, className: it, style: at, appearance: ot, startAt: st, ...D }) {
44
- let { t: O } = i(), ct = r(), k = !!o && !b && !S, lt = k ? `${o}master.m3u8` : null, A = oe(st, y), j = ce({
45
- ...D,
46
- src: lt,
47
- startAt: A
48
- }), { status: M, error: N, started: P, previewing: F, audio: I, subtitles: L, quality: R } = j, [z, ut] = d(null), [B, dt] = d(null), ft = j.ref, pt = c((e) => {
49
- ft(e), dt(e);
50
- }, [ft]);
43
+ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, progress: Ke, failed: qe, layout: Je = "frame", maxHeight: Ye = "80svh", inlinePreview: Xe, previewStart: Ze, keyboard: Qe = "focus", onProgress: $e, engagement: et, progressInterval: tt = 1e4, onEvent: nt, theater: S, onTheaterChange: C, onMiniPlayer: w, renderDownloads: rt, menuItems: it, crossOrigin: at, label: ot, className: st, style: ct, appearance: lt, startAt: ut, ...T }) {
44
+ let { t: E } = i(), dt = r(), D = !!o && !b && !qe, ft = D ? `${o}master.m3u8` : null, O = oe(ut, y), k = ce({
45
+ ...T,
46
+ src: ft,
47
+ startAt: O
48
+ }), { status: A, error: j, started: M, previewing: N, audio: P, subtitles: F, quality: I } = k, [L, pt] = d(null), [R, mt] = d(null), ht = k.ref, gt = c((e) => {
49
+ ht(e), mt(e);
50
+ }, [ht]);
51
51
  e({
52
- setting: Ye,
53
- available: k && !P && !N && D.active !== !1 && !D.autoPlay,
54
- target: z,
55
- playing: P && M === "playing",
56
- start: () => j.preview(We(Xe, y)),
57
- stop: j.unload
52
+ setting: Xe,
53
+ available: D && !M && !j && T.active !== !1 && !T.autoPlay,
54
+ target: L,
55
+ playing: M && A === "playing",
56
+ start: () => k.preview(We(Ze, y)),
57
+ stop: k.unload
58
58
  });
59
- let V = de(B), H = ue(z, B), U = fe(B), mt = le(B), ht = me(P && o ? `${o}sprite.vtt` : null, D.loader), gt = !F && P;
60
- pe(B, {
61
- enabled: gt,
62
- source: gt ? lt : null,
63
- interval: Qe,
64
- onProgress: Ze
59
+ let z = de(R), B = ue(L, R), V = fe(R), _t = le(R), vt = me(M && o ? `${o}sprite.vtt` : null, T.loader), H = !N && M, U = et?.video;
60
+ l(() => (U?.(H ? R : null), () => U?.(null)), [
61
+ U,
62
+ H,
63
+ R
64
+ ]), pe(R, {
65
+ enabled: H,
66
+ source: H ? ft : null,
67
+ interval: tt,
68
+ onProgress: $e
65
69
  });
66
- let _t = u($e);
67
- _t.current = $e;
68
- let vt = u(!1);
69
- vt.current = !F && M !== "idle";
70
- let W = c((e, t = !1) => {
71
- (t || vt.current) && _t.current && _t.current({
70
+ let W = u(nt);
71
+ W.current = nt;
72
+ let yt = u(!1);
73
+ yt.current = !N && A !== "idle";
74
+ let G = c((e, t = !1) => {
75
+ (t || yt.current) && W.current && W.current({
72
76
  ...e,
73
- time: B?.currentTime ?? 0
77
+ time: R?.currentTime ?? 0
74
78
  });
75
- }, [B]);
79
+ }, [R]);
76
80
  l(() => {
77
- if (!B) return;
81
+ if (!R) return;
78
82
  let e = 0, t = {
79
- play: () => W({ type: "play" }),
80
- playing: () => W({ type: "playing" }),
81
- pause: () => !B.ended && W({ type: "pause" }),
82
- waiting: () => W({ type: "waiting" }),
83
- ended: () => W({ type: "ended" }),
83
+ play: () => G({ type: "play" }),
84
+ playing: () => G({ type: "playing" }),
85
+ pause: () => !R.ended && G({ type: "pause" }),
86
+ waiting: () => G({ type: "waiting" }),
87
+ ended: () => G({ type: "ended" }),
84
88
  timeupdate: () => {
85
- B.seeking || (e = B.currentTime);
89
+ R.seeking || (e = R.currentTime);
86
90
  },
87
91
  seeked: () => {
88
- W({
92
+ G({
89
93
  type: "seek",
90
94
  from: e
91
- }), e = B.currentTime;
95
+ }), e = R.currentTime;
92
96
  },
93
- ratechange: () => W({
97
+ ratechange: () => G({
94
98
  type: "rate",
95
- rate: B.playbackRate
99
+ rate: R.playbackRate
96
100
  })
97
101
  };
98
- for (let [e, n] of Object.entries(t)) B.addEventListener(e, n);
102
+ for (let [e, n] of Object.entries(t)) R.addEventListener(e, n);
99
103
  return () => {
100
- for (let [e, n] of Object.entries(t)) B.removeEventListener(e, n);
104
+ for (let [e, n] of Object.entries(t)) R.removeEventListener(e, n);
101
105
  };
102
- }, [B, W]), l(() => {
103
- N && !F && W({
106
+ }, [R, G]), l(() => {
107
+ j && !N && G({
104
108
  type: "error",
105
- error: N
109
+ error: j
106
110
  }, !0);
107
111
  }, [
112
+ j,
108
113
  N,
109
- F,
110
- W
114
+ G
111
115
  ]);
112
- let yt = u({
116
+ let bt = u({
113
117
  fs: !1,
114
118
  pip: !1
115
119
  });
116
120
  l(() => {
117
- yt.current.fs !== H.active && W({
121
+ bt.current.fs !== B.active && G({
118
122
  type: "fullscreen",
119
- on: H.active
120
- }), yt.current.pip !== U.active && W({
123
+ on: B.active
124
+ }), bt.current.pip !== V.active && G({
121
125
  type: "pip",
122
- on: U.active
123
- }), yt.current = {
124
- fs: H.active,
125
- pip: U.active
126
+ on: V.active
127
+ }), bt.current = {
128
+ fs: B.active,
129
+ pip: V.active
126
130
  };
127
131
  }, [
128
- H.active,
129
- U.active,
130
- W
132
+ B.active,
133
+ V.active,
134
+ G
131
135
  ]);
132
- let bt = u(A);
136
+ let xt = u(O);
133
137
  l(() => {
134
- bt.current !== A && (bt.current = A, B && P && (B.currentTime = A));
138
+ xt.current !== O && (xt.current = O, R && M && (R.currentTime = O));
135
139
  }, [
136
- A,
137
- B,
138
- P
140
+ O,
141
+ R,
142
+ M
139
143
  ]);
140
- let [xt, St] = d(!1), G = u(void 0), K = c(() => {
141
- St(!0), clearTimeout(G.current), G.current = setTimeout(() => St(!1), Fe);
142
- }, []), Ct = c(() => {
143
- clearTimeout(G.current), St(!1);
144
+ let [St, Ct] = d(!1), K = u(void 0), q = c(() => {
145
+ Ct(!0), clearTimeout(K.current), K.current = setTimeout(() => Ct(!1), Fe);
146
+ }, []), wt = c(() => {
147
+ clearTimeout(K.current), Ct(!1);
144
148
  }, []);
145
- l(() => () => clearTimeout(G.current), []), l(() => {
146
- P && K();
147
- }, [P, K]);
148
- let [wt, Tt] = d(!1), [Et, Dt] = d(!1), [Ot, kt] = d(!1), q = P && !N && (xt || V.paused || V.ended || wt || Et || Ot), [At, jt] = d(null), J = u(void 0), Mt = c((e, t) => {
149
- let n = J.current !== void 0;
150
- clearTimeout(J.current), jt((r) => ({
149
+ l(() => () => clearTimeout(K.current), []), l(() => {
150
+ M && q();
151
+ }, [M, q]);
152
+ let [Tt, Et] = d(!1), [Dt, Ot] = d(!1), [kt, At] = d(!1), J = M && !j && (St || z.paused || z.ended || Tt || Dt || kt), [jt, Mt] = d(null), Y = u(void 0), Nt = c((e, t) => {
153
+ let n = Y.current !== void 0;
154
+ clearTimeout(Y.current), Mt((r) => ({
151
155
  direction: e,
152
156
  seconds: n && r?.direction === e ? r.seconds + t : t
153
- })), J.current = setTimeout(() => {
154
- jt(null), J.current = void 0;
157
+ })), Y.current = setTimeout(() => {
158
+ Mt(null), Y.current = void 0;
155
159
  }, Re);
156
160
  }, []);
157
- l(() => () => clearTimeout(J.current), []);
158
- let Nt = D.volumeKey === void 0 ? re : D.volumeKey, Y = V.duration || y || 0, Pt = (e) => {
159
- B && (B.currentTime = Math.min(Y || e, Math.max(0, e)));
160
- }, Ft = (e) => {
161
- B && (Pt(B.currentTime + e), Mt(e < 0 ? -1 : 1, Math.abs(e)));
162
- }, X = () => {
163
- B && (!P || B.ended ? (B.ended && (B.currentTime = 0), j.play()) : B.paused ? j.play() : B.pause());
161
+ l(() => () => clearTimeout(Y.current), []);
162
+ let Pt = T.volumeKey === void 0 ? re : T.volumeKey, X = z.duration || y || 0, Ft = (e) => {
163
+ R && (R.currentTime = Math.min(X || e, Math.max(0, e)));
164
164
  }, It = (e) => {
165
- B && (B.volume = Math.min(1, Math.max(0, e)), B.volume > 0 && B.muted && (B.muted = !1), se(Nt, {
166
- volume: B.volume,
167
- muted: B.muted
168
- }), W({
165
+ R && (Ft(R.currentTime + e), Nt(e < 0 ? -1 : 1, Math.abs(e)));
166
+ }, Z = () => {
167
+ R && (!M || R.ended ? (R.ended && (R.currentTime = 0), k.play()) : R.paused ? k.play() : R.pause());
168
+ }, Lt = (e) => {
169
+ R && (R.volume = Math.min(1, Math.max(0, e)), R.volume > 0 && R.muted && (R.muted = !1), se(Pt, {
170
+ volume: R.volume,
171
+ muted: R.muted
172
+ }), G({
169
173
  type: "volume",
170
- volume: B.volume,
171
- muted: B.muted
174
+ volume: R.volume,
175
+ muted: R.muted
172
176
  }));
173
- }, Lt = () => {
174
- B && (B.muted = !B.muted, !B.muted && B.volume === 0 && (B.volume = 1), se(Nt, {
175
- volume: B.volume,
176
- muted: B.muted
177
- }), W({
177
+ }, Rt = () => {
178
+ R && (R.muted = !R.muted, !R.muted && R.volume === 0 && (R.volume = 1), se(Pt, {
179
+ volume: R.volume,
180
+ muted: R.muted
181
+ }), G({
178
182
  type: "volume",
179
- volume: B.volume,
180
- muted: B.muted
183
+ volume: R.volume,
184
+ muted: R.muted
181
185
  }));
182
- }, Rt = (e) => {
183
- I.select(e);
184
- let t = I.list[e];
185
- t && W({
186
+ }, zt = (e) => {
187
+ P.select(e);
188
+ let t = P.list[e];
189
+ t && G({
186
190
  type: "audio",
187
191
  track: t
188
192
  });
189
- }, zt = u(-1);
190
- L.selected >= 0 && (zt.current = L.selected);
191
- let Bt = (e) => {
192
- L.select(e), W({
193
+ }, Bt = u(-1);
194
+ F.selected >= 0 && (Bt.current = F.selected);
195
+ let Vt = (e) => {
196
+ F.select(e), G({
193
197
  type: "subtitles",
194
- track: L.list[e] ?? null
198
+ track: F.list[e] ?? null
195
199
  });
196
- }, Vt = () => Bt(L.selected >= 0 ? -1 : zt.current >= 0 ? zt.current : 0), Ht = (e) => {
197
- R.select(e), W({
200
+ }, Ht = () => Vt(F.selected >= 0 ? -1 : Bt.current >= 0 ? Bt.current : 0), Ut = (e) => {
201
+ I.select(e), G({
198
202
  type: "quality",
199
- height: R.levels.find((t) => t.index === e)?.height ?? null
203
+ height: I.levels.find((t) => t.index === e)?.height ?? null
200
204
  });
201
- }, Ut = () => {
202
- T?.(!w), W({
205
+ }, Wt = () => {
206
+ C?.(!S), G({
203
207
  type: "theater",
204
- on: !w
208
+ on: !S
205
209
  });
206
- }, Wt = () => {
207
- if (!E || !o || !B) return;
208
- let e = I.list[I.selected], t = L.list[L.selected], n = {
210
+ }, Gt = () => {
211
+ if (!w || !o || !R) return;
212
+ let e = P.list[P.selected], t = F.list[F.selected], n = {
209
213
  base: o,
210
- time: B.currentTime,
211
- playing: !B.paused && !B.ended,
212
- width: _ ?? (B.videoWidth || void 0),
213
- height: v ?? (B.videoHeight || void 0),
214
- duration: Y || void 0,
214
+ time: R.currentTime,
215
+ playing: !R.paused && !R.ended,
216
+ width: _ ?? (R.videoWidth || void 0),
217
+ height: v ?? (R.videoHeight || void 0),
218
+ duration: X || void 0,
215
219
  poster: h,
216
220
  audioLanguage: e?.lang,
217
221
  subtitleLanguage: t?.lang ?? null
218
222
  };
219
- B.pause(), H.active && H.toggle(), E(n);
220
- }, Gt = (e) => {
221
- if (!B || !P && e.type !== "toggle") return !1;
223
+ R.pause(), B.active && B.toggle(), w(n);
224
+ }, Kt = (e) => {
225
+ if (!R || !M && e.type !== "toggle") return !1;
222
226
  switch (e.type) {
223
227
  case "toggle":
224
- X();
228
+ Z();
225
229
  break;
226
230
  case "seekBy":
227
- Ft(e.seconds);
231
+ It(e.seconds);
228
232
  break;
229
233
  case "seekTo":
230
- if (!Y) return !1;
231
- Pt(Y * e.fraction);
234
+ if (!X) return !1;
235
+ Ft(X * e.fraction);
232
236
  break;
233
237
  case "volumeBy":
234
- It((B.muted ? 0 : B.volume) + e.delta);
238
+ Lt((R.muted ? 0 : R.volume) + e.delta);
235
239
  break;
236
240
  case "mute":
237
- Lt();
241
+ Rt();
238
242
  break;
239
243
  case "captions":
240
- if (!L.list.length) return !1;
241
- Vt();
244
+ if (!F.list.length) return !1;
245
+ Ht();
242
246
  break;
243
247
  case "fullscreen":
244
- if (!H.supported) return !1;
245
- H.toggle();
248
+ if (!B.supported) return !1;
249
+ B.toggle();
246
250
  break;
247
251
  case "theater":
248
- if (!T) return !1;
249
- Ut();
252
+ if (!C) return !1;
253
+ Wt();
250
254
  break;
251
255
  case "miniPlayer":
252
- if (!E) return !1;
253
- Wt();
256
+ if (!w) return !1;
257
+ Gt();
254
258
  break;
255
- case "speed": B.playbackRate = ie(B.playbackRate, e.step);
259
+ case "speed": R.playbackRate = ie(R.playbackRate, e.step);
256
260
  }
257
- return P && K(), !0;
258
- }, Kt = u(Gt);
259
- Kt.current = Gt;
260
- let qt = D.active !== !1;
261
+ return M && q(), !0;
262
+ }, qt = u(Kt);
263
+ qt.current = Kt;
264
+ let Jt = T.active !== !1;
261
265
  l(() => {
262
- if (!C || !z || !qt) return;
263
- let e = C === "global" ? document : z, t = (e) => {
266
+ if (!Qe || !L || !Jt) return;
267
+ let e = Qe === "global" ? document : L, t = (e) => {
264
268
  let t = e;
265
269
  if (t.defaultPrevented) return;
266
270
  let n = ae(t);
267
- n && Be(t.target, t.key, z) && Kt.current(n) && t.preventDefault();
271
+ n && Be(t.target, t.key, L) && qt.current(n) && t.preventDefault();
268
272
  }, n = (e) => {
269
273
  let t = e;
270
- t.key === " " && Ve(t.target, z) && t.preventDefault();
274
+ t.key === " " && Ve(t.target, L) && t.preventDefault();
271
275
  };
272
276
  return e.addEventListener("keydown", t), e.addEventListener("keyup", n), () => {
273
277
  e.removeEventListener("keydown", t), e.removeEventListener("keyup", n);
274
278
  };
275
279
  }, [
276
- C,
277
- z,
278
- qt
280
+ Qe,
281
+ L,
282
+ Jt
279
283
  ]);
280
- let Jt = u("mouse"), Yt = u(null), Z = u(0), Xt = (e) => {
281
- if (Jt.current === "mouse") {
282
- X(), K();
284
+ let Yt = u("mouse"), Xt = u(null), Zt = u(0), Qt = (e) => {
285
+ if (Yt.current === "mouse") {
286
+ Z(), q();
283
287
  return;
284
288
  }
285
- let t = e.currentTarget.getBoundingClientRect(), n = t.width ? (e.clientX - t.left) / t.width : .5, r = n < .4 ? -1 : n > .6 ? 1 : null, i = Date.now(), a = Yt.current;
286
- if (Yt.current = r ? {
289
+ let t = e.currentTarget.getBoundingClientRect(), n = t.width ? (e.clientX - t.left) / t.width : .5, r = n < .4 ? -1 : n > .6 ? 1 : null, i = Date.now(), a = Xt.current;
290
+ if (Xt.current = r ? {
287
291
  at: i,
288
292
  side: r
289
- } : null, r && a?.side === r && (i < Z.current || i - a.at <= Ie)) {
290
- Z.current = i + Le, Ft(r * 10);
293
+ } : null, r && a?.side === r && (i < Zt.current || i - a.at <= Ie)) {
294
+ Zt.current = i + Le, It(r * 10);
291
295
  return;
292
296
  }
293
- q && !V.paused ? Ct() : K();
294
- }, Zt = () => {
295
- Date.now() >= Z.current && H.supported && H.toggle();
296
- }, Qt = _ && v ? _ / v : V.aspect ?? 16 / 9, $t = H.active ? {
297
+ J && !z.paused ? wt() : q();
298
+ }, $t = () => {
299
+ Date.now() >= Zt.current && B.supported && B.toggle();
300
+ }, en = _ && v ? _ / v : z.aspect ?? 16 / 9, tn = B.active ? {
297
301
  width: "100%",
298
302
  height: "100%",
299
303
  borderRadius: 0
300
- } : qe === "frame" ? {
301
- aspectRatio: String(Qt),
302
- width: `min(100%, calc(${Je} * ${Qt}))`,
304
+ } : Je === "frame" ? {
305
+ aspectRatio: String(en),
306
+ width: `min(100%, calc(${Ye} * ${en}))`,
303
307
  marginInline: "auto"
304
- } : {}, en = typeof h == "string" ? [] : n(h), Q = !N && !F && (M === "loading" || M === "buffering"), $ = m("transition-opacity duration-300 motion-reduce:transition-none", F && M === "playing" && "opacity-0"), tn = H.active && z ? z : void 0, nn = an();
305
- function rn(e) {
306
- let t = ze(e, ct) || O("player.track", { number: e.index + 1 });
307
- return e.forced ? O("player.forced", { label: t }) : t;
308
+ } : {}, nn = typeof h == "string" ? [] : n(h), Q = !j && !N && (A === "loading" || A === "buffering"), $ = m("transition-opacity duration-300 motion-reduce:transition-none", N && A === "playing" && "opacity-0"), rn = B.active && L ? L : void 0, an = sn();
309
+ function on(e) {
310
+ let t = ze(e, dt) || E("player.track", { number: e.index + 1 });
311
+ return e.forced ? E("player.forced", { label: t }) : t;
308
312
  }
309
- function an() {
313
+ function sn() {
310
314
  let e = [];
311
- if (I.list.length > 1 && e.push({
315
+ if (P.list.length > 1 && e.push({
312
316
  key: "audio",
313
- label: O("player.audio"),
314
- value: String(I.selected),
315
- options: I.list.map((e) => ({
317
+ label: E("player.audio"),
318
+ value: String(P.selected),
319
+ options: P.list.map((e) => ({
316
320
  value: String(e.index),
317
- label: rn(e)
321
+ label: on(e)
318
322
  })),
319
- onChange: (e) => Rt(Number(e))
320
- }), L.list.length && e.push({
323
+ onChange: (e) => zt(Number(e))
324
+ }), F.list.length && e.push({
321
325
  key: "subtitles",
322
- label: O("player.subtitles"),
323
- value: String(L.selected),
326
+ label: E("player.subtitles"),
327
+ value: String(F.selected),
324
328
  options: [{
325
329
  value: "-1",
326
- label: O("player.subtitlesOff")
327
- }, ...L.list.map((e) => ({
330
+ label: E("player.subtitlesOff")
331
+ }, ...F.list.map((e) => ({
328
332
  value: String(e.index),
329
- label: rn(e)
333
+ label: on(e)
330
334
  }))],
331
- onChange: (e) => Bt(Number(e))
332
- }), R.levels.length > 1) {
333
- let t = R.levels.find((e) => e.index === R.current);
335
+ onChange: (e) => Vt(Number(e))
336
+ }), I.levels.length > 1) {
337
+ let t = I.levels.find((e) => e.index === I.current);
334
338
  e.push({
335
339
  key: "quality",
336
- label: O("player.quality"),
337
- value: String(R.selected),
338
- options: [...[...R.levels].reverse().map((e) => ({
340
+ label: E("player.quality"),
341
+ value: String(I.selected),
342
+ options: [...[...I.levels].reverse().map((e) => ({
339
343
  value: String(e.index),
340
344
  label: x(e.height)
341
345
  })), {
342
346
  value: "-1",
343
- label: t && R.selected === -1 ? O("player.autoCurrent", { quality: x(t.height).split(" ")[0] }) : O("player.auto")
347
+ label: t && I.selected === -1 ? E("player.autoCurrent", { quality: x(t.height).split(" ")[0] }) : E("player.auto")
344
348
  }],
345
- onChange: (e) => Ht(Number(e))
349
+ onChange: (e) => Ut(Number(e))
346
350
  });
347
351
  }
348
352
  return e.push({
349
353
  key: "speed",
350
- label: O("player.speed"),
351
- value: String(V.rate),
354
+ label: E("player.speed"),
355
+ value: String(z.rate),
352
356
  options: ne.map((e) => ({
353
357
  value: String(e),
354
- label: e === 1 ? O("player.normal") : `${e}×`
358
+ label: e === 1 ? E("player.normal") : `${e}×`
355
359
  })),
356
360
  onChange: (e) => {
357
- B && (B.playbackRate = Number(e));
361
+ R && (R.playbackRate = Number(e));
358
362
  }
359
- }), tt?.forEach((t, n) => {
363
+ }), it?.forEach((t, n) => {
360
364
  "options" in t && e.push({
361
365
  key: `host-${n}`,
362
366
  label: t.label,
@@ -366,31 +370,31 @@ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, p
366
370
  });
367
371
  }), e;
368
372
  }
369
- let on = tt?.filter((e) => "onSelect" in e);
373
+ let cn = it?.filter((e) => "onSelect" in e);
370
374
  return /* @__PURE__ */ f(a, {
371
- appearance: ot,
372
- className: m("@container relative w-full touch-manipulation overflow-hidden bg-black text-white outline-none", qe === "fill" ? "size-full" : !H.active && "rounded-lg", P && !q && "cursor-none", it),
375
+ appearance: lt,
376
+ className: m("@container relative w-full touch-manipulation overflow-hidden bg-black text-white outline-none", Je === "fill" ? "size-full" : !B.active && "rounded-lg", M && !J && "cursor-none", st),
373
377
  style: {
374
- ...$t,
375
- ...at
378
+ ...tn,
379
+ ...ct
376
380
  },
377
381
  "data-ckui": "video-player",
378
- "data-status": S ? "failed" : b ? "pending" : M,
379
- "data-previewing": F ? "" : void 0,
380
- "data-fullscreen": H.active ? "" : void 0,
381
- "data-controls": q ? "" : void 0,
382
- ref: ut,
382
+ "data-status": qe ? "failed" : b ? "pending" : A,
383
+ "data-previewing": N ? "" : void 0,
384
+ "data-fullscreen": B.active ? "" : void 0,
385
+ "data-controls": J ? "" : void 0,
386
+ ref: pt,
383
387
  role: "group",
384
- "aria-label": rt ?? O("player.label"),
385
- tabIndex: k ? -1 : void 0,
386
- onPointerDown: (e) => Jt.current = e.pointerType || "mouse",
387
- onPointerMove: (e) => e.pointerType === "mouse" && P && K(),
388
- onPointerLeave: (e) => e.pointerType === "mouse" && !Et && !wt && Ct(),
389
- onFocus: (e) => kt(He(e.target)),
390
- onBlur: () => kt(!1),
391
- children: S ? /* @__PURE__ */ f(Ge, {
388
+ "aria-label": ot ?? E("player.label"),
389
+ tabIndex: D ? -1 : void 0,
390
+ onPointerDown: (e) => Yt.current = e.pointerType || "mouse",
391
+ onPointerMove: (e) => e.pointerType === "mouse" && M && q(),
392
+ onPointerLeave: (e) => e.pointerType === "mouse" && !Dt && !Tt && wt(),
393
+ onFocus: (e) => At(He(e.target)),
394
+ onBlur: () => At(!1),
395
+ children: qe ? /* @__PURE__ */ f(Ge, {
392
396
  icon: !0,
393
- children: O("player.failed")
397
+ children: E("player.failed")
394
398
  }) : b || !o ? /* @__PURE__ */ f("div", {
395
399
  className: "absolute inset-0 flex items-center justify-center bg-muted p-6 text-foreground",
396
400
  children: /* @__PURE__ */ f(ee, {
@@ -399,36 +403,36 @@ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, p
399
403
  })
400
404
  }) : /* @__PURE__ */ p(Se, { children: [
401
405
  /* @__PURE__ */ f("video", {
402
- ref: pt,
406
+ ref: gt,
403
407
  className: "absolute inset-0 size-full object-contain",
404
408
  playsInline: !0,
405
409
  preload: "none",
406
- crossOrigin: nt,
407
- "aria-label": rt
410
+ crossOrigin: at,
411
+ "aria-label": ot
408
412
  }),
409
- P && !N && /* @__PURE__ */ f("div", {
413
+ M && !j && /* @__PURE__ */ f("div", {
410
414
  "data-ckui": "surface",
411
415
  className: "absolute inset-0",
412
- onClick: Xt,
413
- onDoubleClick: Zt
416
+ onClick: Qt,
417
+ onDoubleClick: $t
414
418
  }),
415
- !P && !N && /* @__PURE__ */ p(Se, { children: [
419
+ !M && !j && /* @__PURE__ */ p(Se, { children: [
416
420
  typeof h == "string" ? /* @__PURE__ */ f("img", {
417
421
  alt: "",
418
422
  src: h,
419
423
  decoding: "async",
420
424
  className: m("pointer-events-none absolute inset-0 size-full object-contain", $)
421
- }) : en.length ? /* @__PURE__ */ f(t, {
422
- outputs: en,
425
+ }) : nn.length ? /* @__PURE__ */ f(t, {
426
+ outputs: nn,
423
427
  className: m("pointer-events-none absolute inset-0 size-full object-contain", $)
424
428
  }) : /* @__PURE__ */ f(Pe, {
425
429
  vtt: `${o}sprite.vtt`,
426
- loader: D.loader,
430
+ loader: T.loader,
427
431
  className: $
428
432
  }),
429
433
  /* @__PURE__ */ f(Ue, {
430
- label: O("player.play"),
431
- onClick: j.play,
434
+ label: E("player.play"),
435
+ onClick: k.play,
432
436
  disabled: Q,
433
437
  className: $,
434
438
  children: Q ? /* @__PURE__ */ f(ye, {}) : /* @__PURE__ */ f(g, {
@@ -442,9 +446,9 @@ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, p
442
446
  children: te(y)
443
447
  }) : null
444
448
  ] }),
445
- P && !N && V.ended && /* @__PURE__ */ f(Ue, {
446
- label: O("player.replay"),
447
- onClick: X,
449
+ M && !j && z.ended && /* @__PURE__ */ f(Ue, {
450
+ label: E("player.replay"),
451
+ onClick: Z,
448
452
  children: /* @__PURE__ */ f(g, {
449
453
  icon: Me,
450
454
  className: "size-7",
@@ -452,103 +456,103 @@ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, p
452
456
  })
453
457
  }),
454
458
  /* @__PURE__ */ f(he, {
455
- cues: gt ? mt : [],
456
- bottom: q ? "4.75rem" : "1.25rem"
459
+ cues: H ? _t : [],
460
+ bottom: J ? "4.75rem" : "1.25rem"
457
461
  }),
458
- P && Q && /* @__PURE__ */ f("div", {
462
+ M && Q && /* @__PURE__ */ f("div", {
459
463
  className: "pointer-events-none absolute inset-0 flex items-center justify-center",
460
464
  children: /* @__PURE__ */ f("span", {
461
465
  className: "flex size-14 items-center justify-center rounded-full bg-black/45",
462
466
  children: /* @__PURE__ */ f(ye, {})
463
467
  })
464
468
  }),
465
- /* @__PURE__ */ f(_e, { flash: At }),
466
- P && !N && /* @__PURE__ */ p("div", {
469
+ /* @__PURE__ */ f(_e, { flash: jt }),
470
+ M && !j && /* @__PURE__ */ p("div", {
467
471
  "data-ckui": "controls",
468
472
  "data-ckui-noswipe": "",
469
- className: m("pointer-events-none absolute inset-x-0 bottom-0 z-10 flex flex-col bg-linear-to-t from-black/75 via-black/35 to-transparent px-2 pt-12 pb-1 transition-opacity duration-200 motion-reduce:transition-none", q ? "opacity-100 *:pointer-events-auto" : "opacity-0"),
473
+ className: m("pointer-events-none absolute inset-x-0 bottom-0 z-10 flex flex-col bg-linear-to-t from-black/75 via-black/35 to-transparent px-2 pt-12 pb-1 transition-opacity duration-200 motion-reduce:transition-none", J ? "opacity-100 *:pointer-events-auto" : "opacity-0"),
470
474
  children: [/* @__PURE__ */ f(ge, {
471
- time: V.time,
472
- duration: Y,
473
- buffered: V.buffered,
474
- onSeek: Pt,
475
- onScrub: (e) => Dt(e !== null),
476
- sprite: ht
475
+ time: z.time,
476
+ duration: X,
477
+ buffered: z.buffered,
478
+ onSeek: Ft,
479
+ onScrub: (e) => Ot(e !== null),
480
+ sprite: vt
477
481
  }), /* @__PURE__ */ p("div", {
478
482
  className: "flex items-center gap-0.5",
479
483
  children: [
480
484
  /* @__PURE__ */ f(s, {
481
- label: V.ended ? O("player.replay") : V.paused ? O("player.resume") : O("player.pause"),
485
+ label: z.ended ? E("player.replay") : z.paused ? E("player.resume") : E("player.pause"),
482
486
  shortcut: "k",
483
- icon: V.ended ? Me : V.paused ? Ae : Ee,
484
- onClick: X,
487
+ icon: z.ended ? Me : z.paused ? Ae : Ee,
488
+ onClick: Z,
485
489
  "data-ckui": "play"
486
490
  }),
487
491
  /* @__PURE__ */ f(be, {
488
- volume: V.volume,
489
- muted: V.muted,
490
- onVolume: It,
491
- onMute: Lt
492
+ volume: z.volume,
493
+ muted: z.muted,
494
+ onVolume: Lt,
495
+ onMute: Rt
492
496
  }),
493
497
  /* @__PURE__ */ p("span", {
494
498
  className: "ml-1 shrink-0 text-xs font-medium whitespace-nowrap text-white/90 tabular-nums",
495
499
  "data-ckui": "time",
496
500
  children: [
497
- xe(V.time),
501
+ xe(z.time),
498
502
  " / ",
499
- xe(Y)
503
+ xe(X)
500
504
  ]
501
505
  }),
502
506
  /* @__PURE__ */ f("div", { className: "min-w-0 flex-1" }),
503
- L.list.length > 0 && /* @__PURE__ */ f(s, {
504
- label: O("player.subtitles"),
507
+ F.list.length > 0 && /* @__PURE__ */ f(s, {
508
+ label: E("player.subtitles"),
505
509
  shortcut: "c",
506
510
  icon: we,
507
- "aria-pressed": L.selected >= 0,
508
- onClick: Vt,
511
+ "aria-pressed": F.selected >= 0,
512
+ onClick: Ht,
509
513
  "data-ckui": "captions-toggle"
510
514
  }),
511
- et?.({
512
- container: tn,
515
+ rt?.({
516
+ container: rn,
513
517
  className: "inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full text-white outline-none transition-colors hover:bg-white/15 focus-visible:ring-2 focus-visible:ring-white/80 motion-reduce:transition-none data-popup-open:bg-white/15 [&_svg]:size-5 relative aria-pressed:after:absolute aria-pressed:after:bottom-1 aria-pressed:after:h-0.5 aria-pressed:after:w-4 aria-pressed:after:rounded-full aria-pressed:after:bg-player-accent"
514
518
  }),
515
519
  /* @__PURE__ */ f(ve, {
516
520
  icon: Ne,
517
- label: O("player.settings"),
518
- sections: nn,
519
- actions: on,
520
- container: tn,
521
- onOpenChange: Tt
521
+ label: E("player.settings"),
522
+ sections: an,
523
+ actions: cn,
524
+ container: rn,
525
+ onOpenChange: Et
522
526
  }),
523
- E && /* @__PURE__ */ f(s, {
527
+ w && /* @__PURE__ */ f(s, {
524
528
  className: "@max-sm:hidden",
525
- label: O("player.miniPlayer"),
529
+ label: E("player.miniPlayer"),
526
530
  shortcut: "i",
527
531
  icon: ke,
528
- onClick: Wt,
532
+ onClick: Gt,
529
533
  "data-ckui": "mini-player-open"
530
534
  }),
531
- U.supported && /* @__PURE__ */ f(s, {
535
+ V.supported && /* @__PURE__ */ f(s, {
532
536
  className: "@max-md:hidden",
533
- label: U.active ? O("player.exitPip") : O("player.pip"),
534
- icon: U.active ? Oe : De,
535
- onClick: U.toggle,
537
+ label: V.active ? E("player.exitPip") : E("player.pip"),
538
+ icon: V.active ? Oe : De,
539
+ onClick: V.toggle,
536
540
  "data-ckui": "pip"
537
541
  }),
538
- T && /* @__PURE__ */ f(s, {
542
+ C && /* @__PURE__ */ f(s, {
539
543
  className: "max-lg:hidden",
540
- label: O("player.theater"),
544
+ label: E("player.theater"),
541
545
  shortcut: "t",
542
546
  icon: je,
543
- "aria-pressed": !!w,
544
- onClick: Ut,
547
+ "aria-pressed": !!S,
548
+ onClick: Wt,
545
549
  "data-ckui": "theater"
546
550
  }),
547
- H.supported && /* @__PURE__ */ f(s, {
548
- label: H.active ? O("player.exitFullscreen") : O("player.fullscreen"),
551
+ B.supported && /* @__PURE__ */ f(s, {
552
+ label: B.active ? E("player.exitFullscreen") : E("player.fullscreen"),
549
553
  shortcut: "f",
550
- icon: H.active ? Ce : Te,
551
- onClick: H.toggle,
554
+ icon: B.active ? Ce : Te,
555
+ onClick: B.toggle,
552
556
  "data-ckui": "fullscreen"
553
557
  })
554
558
  ]
@@ -557,13 +561,13 @@ function b({ base: o, poster: h, width: _, height: v, duration: y, pending: b, p
557
561
  /* @__PURE__ */ f("span", {
558
562
  className: "sr-only",
559
563
  "aria-live": "polite",
560
- children: Q ? O("player.loading") : ""
564
+ children: Q ? E("player.loading") : ""
561
565
  }),
562
- N && /* @__PURE__ */ f(Ge, {
566
+ j && /* @__PURE__ */ f(Ge, {
563
567
  icon: !0,
564
- code: N.code,
565
- onRetry: j.retry,
566
- children: O(`player.errors.${N.kind}`)
568
+ code: j.code,
569
+ onRetry: k.retry,
570
+ children: E(`player.errors.${j.kind}`)
567
571
  })
568
572
  ] })
569
573
  });