@layers-app/shared 0.4.8 → 0.4.9

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 (128) hide show
  1. package/dist/components/AttachmentsGalleryModal/AttachmentsGalleryContext.d.ts +2 -0
  2. package/dist/components/AttachmentsGalleryModal/AttachmentsGalleryContext.d.ts.map +1 -1
  3. package/dist/components/AttachmentsGalleryModal/AttachmentsGalleryContext.js +22 -17
  4. package/dist/components/AttachmentsGalleryModal/components/AttachmentVideoPlayer.d.ts +15 -0
  5. package/dist/components/AttachmentsGalleryModal/components/AttachmentVideoPlayer.d.ts.map +1 -0
  6. package/dist/components/AttachmentsGalleryModal/components/AttachmentVideoPlayer.js +36 -0
  7. package/dist/components/AttachmentsGalleryModal/components/GallerySlide.js +22 -22
  8. package/dist/components/AttachmentsGalleryModal/components/LegacyAttachmentVideoPlayer.d.ts +14 -0
  9. package/dist/components/AttachmentsGalleryModal/components/LegacyAttachmentVideoPlayer.d.ts.map +1 -0
  10. package/dist/components/AttachmentsGalleryModal/components/LegacyAttachmentVideoPlayer.js +31 -0
  11. package/dist/components/AttachmentsGalleryModal/components/ModalHeader.d.ts.map +1 -1
  12. package/dist/components/AttachmentsGalleryModal/components/ModalHeader.js +179 -120
  13. package/dist/components/AttachmentsGalleryModal/components/StatusVideoPlayer.d.ts +18 -0
  14. package/dist/components/AttachmentsGalleryModal/components/StatusVideoPlayer.d.ts.map +1 -0
  15. package/dist/components/AttachmentsGalleryModal/components/StatusVideoPlayer.js +35 -0
  16. package/dist/components/AttachmentsGalleryModal/components/useAttachmentVideoStatus.d.ts +34 -0
  17. package/dist/components/AttachmentsGalleryModal/components/useAttachmentVideoStatus.d.ts.map +1 -0
  18. package/dist/components/AttachmentsGalleryModal/components/useAttachmentVideoStatus.js +71 -0
  19. package/dist/components/AttachmentsGalleryModal/styles.module.css.js +31 -27
  20. package/dist/components/CommentComposer/CommentComposer.module.css.js +13 -9
  21. package/dist/components/CommentComposer/index.d.ts +2 -1
  22. package/dist/components/CommentComposer/index.d.ts.map +1 -1
  23. package/dist/components/CommentComposer/index.js +343 -325
  24. package/dist/components/CommentComposer/types.d.ts +4 -0
  25. package/dist/components/CommentComposer/types.d.ts.map +1 -1
  26. package/dist/components/VideoPlayer/VideoPlayer.d.ts +24 -0
  27. package/dist/components/VideoPlayer/VideoPlayer.d.ts.map +1 -0
  28. package/dist/components/VideoPlayer/VideoPlayer.js +727 -0
  29. package/dist/components/VideoPlayer/components/MobileDrawer/index.d.ts +8 -0
  30. package/dist/components/VideoPlayer/components/MobileDrawer/index.d.ts.map +1 -0
  31. package/dist/components/VideoPlayer/components/MobileDrawer/index.js +67 -0
  32. package/dist/components/VideoPlayer/components/SelectListOptionButton.d.ts +7 -0
  33. package/dist/components/VideoPlayer/components/SelectListOptionButton.d.ts.map +1 -0
  34. package/dist/components/VideoPlayer/components/SelectListOptionButton.js +44 -0
  35. package/dist/components/VideoPlayer/components/StoryboardPreview.d.ts +9 -0
  36. package/dist/components/VideoPlayer/components/StoryboardPreview.d.ts.map +1 -0
  37. package/dist/components/VideoPlayer/components/StoryboardPreview.js +38 -0
  38. package/dist/components/VideoPlayer/components/VideoCustomControls.d.ts +33 -0
  39. package/dist/components/VideoPlayer/components/VideoCustomControls.d.ts.map +1 -0
  40. package/dist/components/VideoPlayer/components/VideoCustomControls.js +601 -0
  41. package/dist/components/VideoPlayer/components/VideoIcons.d.ts +25 -0
  42. package/dist/components/VideoPlayer/components/VideoIcons.d.ts.map +1 -0
  43. package/dist/components/VideoPlayer/components/VideoIcons.js +145 -0
  44. package/dist/components/VideoPlayer/components/VideoMenu.d.ts +27 -0
  45. package/dist/components/VideoPlayer/components/VideoMenu.d.ts.map +1 -0
  46. package/dist/components/VideoPlayer/components/VideoMenu.js +77 -0
  47. package/dist/components/VideoPlayer/components/VideoMobileSettingsDrawer.d.ts +17 -0
  48. package/dist/components/VideoPlayer/components/VideoMobileSettingsDrawer.d.ts.map +1 -0
  49. package/dist/components/VideoPlayer/components/VideoMobileSettingsDrawer.js +289 -0
  50. package/dist/components/VideoPlayer/components/VideoQualityMenu/index.d.ts +10 -0
  51. package/dist/components/VideoPlayer/components/VideoQualityMenu/index.d.ts.map +1 -0
  52. package/dist/components/VideoPlayer/components/VideoQualityMenu/index.js +55 -0
  53. package/dist/components/VideoPlayer/components/VideoSelect.d.ts +10 -0
  54. package/dist/components/VideoPlayer/components/VideoSelect.d.ts.map +1 -0
  55. package/dist/components/VideoPlayer/components/VideoSelect.js +168 -0
  56. package/dist/components/VideoPlayer/components/VideoSettingsMenu/index.d.ts +12 -0
  57. package/dist/components/VideoPlayer/components/VideoSettingsMenu/index.d.ts.map +1 -0
  58. package/dist/components/VideoPlayer/components/VideoSettingsMenu/index.js +48 -0
  59. package/dist/components/VideoPlayer/components/VideoSettingsModal/ChaptersSection.d.ts +25 -0
  60. package/dist/components/VideoPlayer/components/VideoSettingsModal/ChaptersSection.d.ts.map +1 -0
  61. package/dist/components/VideoPlayer/components/VideoSettingsModal/ChaptersSection.js +384 -0
  62. package/dist/components/VideoPlayer/components/VideoSettingsModal/CoverSection.d.ts +21 -0
  63. package/dist/components/VideoPlayer/components/VideoSettingsModal/CoverSection.d.ts.map +1 -0
  64. package/dist/components/VideoPlayer/components/VideoSettingsModal/CoverSection.js +264 -0
  65. package/dist/components/VideoPlayer/components/VideoSettingsModal/FooterActions.d.ts +10 -0
  66. package/dist/components/VideoPlayer/components/VideoSettingsModal/FooterActions.d.ts.map +1 -0
  67. package/dist/components/VideoPlayer/components/VideoSettingsModal/FooterActions.js +39 -0
  68. package/dist/components/VideoPlayer/components/VideoSettingsModal/ManualSubtitlesPanel.d.ts +14 -0
  69. package/dist/components/VideoPlayer/components/VideoSettingsModal/ManualSubtitlesPanel.d.ts.map +1 -0
  70. package/dist/components/VideoPlayer/components/VideoSettingsModal/ManualSubtitlesPanel.js +360 -0
  71. package/dist/components/VideoPlayer/components/VideoSettingsModal/SubtitleTrackRow.d.ts +16 -0
  72. package/dist/components/VideoPlayer/components/VideoSettingsModal/SubtitleTrackRow.d.ts.map +1 -0
  73. package/dist/components/VideoPlayer/components/VideoSettingsModal/SubtitlesSection.d.ts +14 -0
  74. package/dist/components/VideoPlayer/components/VideoSettingsModal/SubtitlesSection.d.ts.map +1 -0
  75. package/dist/components/VideoPlayer/components/VideoSettingsModal/context.d.ts +4 -0
  76. package/dist/components/VideoPlayer/components/VideoSettingsModal/context.d.ts.map +1 -0
  77. package/dist/components/VideoPlayer/components/VideoSettingsModal/context.js +14 -0
  78. package/dist/components/VideoPlayer/components/VideoSettingsModal/index.d.ts +22 -0
  79. package/dist/components/VideoPlayer/components/VideoSettingsModal/index.d.ts.map +1 -0
  80. package/dist/components/VideoPlayer/components/VideoSettingsModal/index.js +211 -0
  81. package/dist/components/VideoPlayer/components/VideoSpeedMenu/index.d.ts +11 -0
  82. package/dist/components/VideoPlayer/components/VideoSpeedMenu/index.d.ts.map +1 -0
  83. package/dist/components/VideoPlayer/components/VideoSpeedMenu/index.js +41 -0
  84. package/dist/components/VideoPlayer/components/VideoSubtitlesMenu/index.d.ts +10 -0
  85. package/dist/components/VideoPlayer/components/VideoSubtitlesMenu/index.d.ts.map +1 -0
  86. package/dist/components/VideoPlayer/components/VideoSubtitlesMenu/index.js +69 -0
  87. package/dist/components/VideoPlayer/hooks/useStoryboard.d.ts +21 -0
  88. package/dist/components/VideoPlayer/hooks/useStoryboard.d.ts.map +1 -0
  89. package/dist/components/VideoPlayer/hooks/useStoryboard.js +91 -0
  90. package/dist/components/VideoPlayer/index.d.ts +11 -0
  91. package/dist/components/VideoPlayer/index.d.ts.map +1 -0
  92. package/dist/components/VideoPlayer/types.d.ts +101 -0
  93. package/dist/components/VideoPlayer/types.d.ts.map +1 -0
  94. package/dist/components/VideoPlayer/utils/chapters.d.ts +8 -0
  95. package/dist/components/VideoPlayer/utils/chapters.d.ts.map +1 -0
  96. package/dist/components/VideoPlayer/utils/chapters.js +38 -0
  97. package/dist/components/VideoPlayer/utils/storyboard.d.ts +5 -0
  98. package/dist/components/VideoPlayer/utils/storyboard.d.ts.map +1 -0
  99. package/dist/components/VideoPlayer/utils/storyboard.js +47 -0
  100. package/dist/components/VideoPlayer/utils/subtitles.d.ts +18 -0
  101. package/dist/components/VideoPlayer/utils/subtitles.d.ts.map +1 -0
  102. package/dist/components/VideoPlayer/utils/subtitles.js +23 -0
  103. package/dist/components/VideoPlayer/utils/touch.d.ts +3 -0
  104. package/dist/components/VideoPlayer/utils/touch.d.ts.map +1 -0
  105. package/dist/components/VideoPlayer/utils/touch.js +5 -0
  106. package/dist/components/VideoPlayer/utils/videoPlayerUtils.d.ts +10 -0
  107. package/dist/components/VideoPlayer/utils/videoPlayerUtils.d.ts.map +1 -0
  108. package/dist/components/VideoPlayer/utils/videoPlayerUtils.js +22 -0
  109. package/dist/components/VideoPlayer/utils/videoSettings.d.ts +69 -0
  110. package/dist/components/VideoPlayer/utils/videoSettings.d.ts.map +1 -0
  111. package/dist/components/VideoPlayer/utils/videoSettings.js +90 -0
  112. package/dist/helpers/getFileType.d.ts +1 -1
  113. package/dist/helpers/getFileType.d.ts.map +1 -1
  114. package/dist/helpers/getFileType.js +3 -2
  115. package/dist/hooks/useDateUtils.d.ts +3 -1
  116. package/dist/hooks/useDateUtils.d.ts.map +1 -1
  117. package/dist/hooks/useDateUtils.js +23 -18
  118. package/dist/index.css +1 -1
  119. package/dist/index.d.ts +2 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +585 -567
  122. package/dist/lang/locales/ui_en.json.js +9 -7
  123. package/dist/lang/locales/ui_es.json.js +6 -4
  124. package/dist/lang/locales/ui_ru.json.js +8 -6
  125. package/dist/videoSettings/createVideoSettingsDataSource.d.ts +19 -0
  126. package/dist/videoSettings/createVideoSettingsDataSource.d.ts.map +1 -0
  127. package/dist/videoSettings/createVideoSettingsDataSource.js +127 -0
  128. package/package.json +2 -1
@@ -0,0 +1,601 @@
1
+ import { jsxs as o, jsx as n, Fragment as he } from "react/jsx-runtime";
2
+ import { useState as c, useRef as we, useMemo as F, useEffect as P, useCallback as Oe } from "react";
3
+ import { useTranslation as He } from "react-i18next";
4
+ import { Box as ve, Slider as De, Menu as ye, Tooltip as Ue } from "@mantine/core";
5
+ import { useClickOutside as Ae } from "@mantine/hooks";
6
+ import { useStoryboard as qe } from "../hooks/useStoryboard.js";
7
+ import { IS_TOUCH_TABLET as X, IS_TOUCH_DEVICE as Xe } from "../utils/touch.js";
8
+ import { formatTime as _, getBufferedRanges as be, clamp as y } from "../utils/videoPlayerUtils.js";
9
+ import { StoryboardPreview as _e } from "./StoryboardPreview.js";
10
+ import { PauseIcon as je, PlayIcon as We, VolumeMuteIcon as Qe, VolumeIcon as Ge, ChevronRightIcon as ge, SettingsPlayerIcon as Ee, PictureInPictureIcon as Je, FullscreenIcon as Ke } from "./VideoIcons.js";
11
+ import { VideoMobileSettingsDrawer as Ye } from "./VideoMobileSettingsDrawer.js";
12
+ import { VideoQualityMenu as Ze } from "./VideoQualityMenu/index.js";
13
+ import { VideoSettingsMenu as et } from "./VideoSettingsMenu/index.js";
14
+ import { VideoSpeedMenu as tt } from "./VideoSpeedMenu/index.js";
15
+ import { VideoSubtitlesMenu as nt } from "./VideoSubtitlesMenu/index.js";
16
+ function rt({ text: t }) {
17
+ const x = we(null), [N, p] = c(!1), b = Oe(() => {
18
+ const C = x.current;
19
+ C && p(C.scrollWidth > C.clientWidth);
20
+ }, []);
21
+ return /* @__PURE__ */ n(Ue, { label: t, openDelay: 300, withinPortal: !0, disabled: !N, children: /* @__PURE__ */ n(
22
+ "span",
23
+ {
24
+ ref: x,
25
+ className: "video-player-chapters-item-title",
26
+ onMouseEnter: b,
27
+ children: t
28
+ }
29
+ ) });
30
+ }
31
+ function gt({
32
+ video: t,
33
+ containerRef: x,
34
+ title: N,
35
+ settings: p,
36
+ isSettingsDisabled: b,
37
+ onSubtitlesOpen: C,
38
+ onSpeedClick: Z,
39
+ onQualityClick: ee,
40
+ onSubtitleSelect: te,
41
+ storyboard: ne,
42
+ baseUrl: Le,
43
+ authHeaders: Pe,
44
+ chapters: $ = [],
45
+ isProcessing: Ne = !1
46
+ }) {
47
+ const { t: h } = He(), [B, T] = c(0), [s, j] = c(0), [W, Q] = c(!1), [V, re] = c(1), [z, G] = c(!1), [Ce, ae] = c([]), [ie, se] = c(!1), [J, Se] = c(!1), [Ie, K] = c(!1), [m, O] = c(!1), Te = Ae(() => {
48
+ X && O(!1);
49
+ }), H = we(null), [g, le] = c(null), [oe, ce] = c(null), [ue, S] = c(!1), [D, v] = c("main"), [de, Y] = c(null), R = qe({
50
+ storyboard: ne,
51
+ baseUrl: Le,
52
+ authHeaders: Pe,
53
+ enabled: !!ne
54
+ }), k = F(() => g == null ? null : R.getFrameAtRatio(g), [g, R]);
55
+ P(() => {
56
+ k?.sheetUrl && R.ensureSheetDimensions(k.sheetUrl).catch(() => {
57
+ });
58
+ }, [k, R]), P(() => {
59
+ if (!t) return;
60
+ j(0), T(t.currentTime || 0);
61
+ const e = () => {
62
+ const I = t.duration;
63
+ if (Number.isFinite(I) && I > 0) return I;
64
+ const w = t.seekable;
65
+ if (w && w.length > 0) {
66
+ const L = w.end(w.length - 1);
67
+ if (Number.isFinite(L) && L > 0) return L;
68
+ }
69
+ const q = t.buffered;
70
+ if (q && q.length > 0) {
71
+ const L = q.end(q.length - 1);
72
+ if (Number.isFinite(L) && L > 0) return L;
73
+ }
74
+ return 0;
75
+ }, r = () => {
76
+ const I = e();
77
+ j((w) => I > w ? I : w);
78
+ }, a = () => {
79
+ T(t.currentTime || 0), r();
80
+ }, i = () => {
81
+ r(), ae(be(t));
82
+ }, f = () => {
83
+ Q(!0);
84
+ }, d = () => {
85
+ Q(!1);
86
+ }, u = () => {
87
+ re(t.volume ?? 1), G(t.muted);
88
+ }, E = () => {
89
+ ae(be(t)), r();
90
+ };
91
+ return a(), i(), u(), Q(!t.paused), t.addEventListener("timeupdate", a), t.addEventListener("durationchange", i), t.addEventListener("loadedmetadata", i), t.addEventListener("loadeddata", i), t.addEventListener("play", f), t.addEventListener("pause", d), t.addEventListener("volumechange", u), t.addEventListener("progress", E), () => {
92
+ t.removeEventListener("timeupdate", a), t.removeEventListener("durationchange", i), t.removeEventListener("loadedmetadata", i), t.removeEventListener("loadeddata", i), t.removeEventListener("play", f), t.removeEventListener("pause", d), t.removeEventListener("volumechange", u), t.removeEventListener("progress", E);
93
+ };
94
+ }, [t]), P(() => {
95
+ if (!t) return;
96
+ const e = t.currentSrc || t.src;
97
+ if (!e || Number.isFinite(t.duration) && t.duration > 0) return;
98
+ let r = !1;
99
+ const a = document.createElement("video");
100
+ a.preload = "metadata", a.muted = !0, a.style.display = "none";
101
+ const i = () => {
102
+ a.removeEventListener("loadedmetadata", d), a.removeEventListener("durationchange", f), a.removeEventListener("error", i);
103
+ try {
104
+ a.src = "", a.load();
105
+ } catch {
106
+ }
107
+ a.remove();
108
+ }, f = () => {
109
+ if (r) return;
110
+ const u = a.duration;
111
+ Number.isFinite(u) && u > 0 && (j((E) => u > E ? u : E), i());
112
+ }, d = () => {
113
+ if (!r)
114
+ try {
115
+ a.currentTime = 1e9;
116
+ } catch {
117
+ }
118
+ };
119
+ return a.addEventListener("loadedmetadata", d), a.addEventListener("durationchange", f), a.addEventListener("error", i), document.body.appendChild(a), a.src = e, () => {
120
+ r = !0, i();
121
+ };
122
+ }, [t, t?.currentSrc]), P(() => {
123
+ const e = () => {
124
+ Se(!!document.fullscreenElement);
125
+ };
126
+ return document.addEventListener("fullscreenchange", e), e(), () => {
127
+ document.removeEventListener("fullscreenchange", e);
128
+ };
129
+ }, []), P(() => {
130
+ if (!t) return;
131
+ const e = () => K(!0), r = () => K(!1);
132
+ return t.addEventListener("enterpictureinpicture", e), t.addEventListener("leavepictureinpicture", r), K(
133
+ document.pictureInPictureElement === t && !!document.pictureInPictureElement
134
+ ), () => {
135
+ t.removeEventListener("enterpictureinpicture", e), t.removeEventListener("leavepictureinpicture", r);
136
+ };
137
+ }, [t]), P(() => {
138
+ if (!ie) return;
139
+ const e = (a) => {
140
+ if (!t || !s) return;
141
+ const i = H.current?.getBoundingClientRect();
142
+ if (!i) return;
143
+ const d = y((a.clientX - i.left) / i.width, 0, 1) * s;
144
+ t.currentTime = d, T(d);
145
+ }, r = () => {
146
+ se(!1);
147
+ };
148
+ return window.addEventListener("pointermove", e), window.addEventListener("pointerup", r), () => {
149
+ window.removeEventListener("pointermove", e), window.removeEventListener("pointerup", r);
150
+ };
151
+ }, [ie, t, s]), P(() => {
152
+ Y(null);
153
+ }, [p.currentSpeed]);
154
+ const M = s > 0 ? y(B / s, 0, 1) : 0, me = Ne ? [] : Ce, l = F(() => !$ || $.length === 0 ? [] : [...$].filter((e) => s > 0 && e.startSec <= s).sort((e, r) => e.startSec - r.startSec), [$, s]), pe = F(() => {
155
+ if (l.length === 0 || s <= 0) return [];
156
+ const e = [], r = y(l[0].startSec / s, 0, 1);
157
+ r > 0 && e.push({ chapter: null, startRatio: 0, endRatio: r });
158
+ for (let a = 0; a < l.length; a++) {
159
+ const i = l[a], f = y(i.startSec / s, 0, 1), d = l[a + 1], u = d ? y(d.startSec / s, 0, 1) : 1;
160
+ e.push({ chapter: i, startRatio: f, endRatio: u });
161
+ }
162
+ return e;
163
+ }, [l, s]), U = F(() => {
164
+ if (l.length === 0) return null;
165
+ for (let e = l.length - 1; e >= 0; e--)
166
+ if (B >= l[e].startSec)
167
+ return l[e];
168
+ return l[0];
169
+ }, [l, B]), fe = F(() => {
170
+ if (g == null || l.length === 0 || s <= 0)
171
+ return null;
172
+ const e = g * s;
173
+ for (let r = l.length - 1; r >= 0; r--)
174
+ if (e >= l[r].startSec)
175
+ return l[r];
176
+ return l[0];
177
+ }, [g, l, s]), Re = (e) => {
178
+ t && (t.currentTime = e.startSec, T(e.startSec));
179
+ }, ke = () => {
180
+ t && (t.paused ? t.play().catch(() => {
181
+ }) : t.pause());
182
+ }, Me = () => {
183
+ t && (t.muted = !t.muted, G(t.muted));
184
+ }, Fe = (e) => {
185
+ t && (t.volume = e, e === 0 ? t.muted = !0 : t.muted && (t.muted = !1), re(e), G(t.muted));
186
+ }, xe = () => {
187
+ const e = x?.current || t;
188
+ e && (document.fullscreenElement ? document.exitFullscreen?.() : e.requestFullscreen?.());
189
+ }, $e = async () => {
190
+ if (!(!t || !document.pictureInPictureEnabled))
191
+ try {
192
+ document.pictureInPictureElement ? await document.exitPictureInPicture() : await t.requestPictureInPicture();
193
+ } catch {
194
+ return;
195
+ }
196
+ }, Be = (e) => {
197
+ if (!t || !s) return;
198
+ const r = H.current?.getBoundingClientRect();
199
+ if (!r) return;
200
+ const i = y((e.clientX - r.left) / r.width, 0, 1) * s;
201
+ t.currentTime = i, T(i), se(!0);
202
+ }, Ve = (e) => {
203
+ if (!s) return;
204
+ const r = H.current?.getBoundingClientRect();
205
+ if (!r) return;
206
+ const a = y((e.clientX - r.left) / r.width, 0, 1);
207
+ le(a), ce(a * r.width);
208
+ }, ze = () => {
209
+ le(null), ce(null);
210
+ }, A = pe.length > 0;
211
+ return /* @__PURE__ */ o(
212
+ "div",
213
+ {
214
+ className: `video-player-controls ${A ? "video-player-controls--with-chapters" : "video-player-controls--no-chapters"}`,
215
+ style: {
216
+ "--video-subtitles-offset": A ? "48px" : "16px"
217
+ },
218
+ children: [
219
+ /* @__PURE__ */ o(
220
+ "div",
221
+ {
222
+ className: "video-player-timeline",
223
+ ref: H,
224
+ "data-test-id": "video-player-timeline",
225
+ children: [
226
+ /* @__PURE__ */ n(
227
+ "div",
228
+ {
229
+ className: "video-player-timeline-hitbox",
230
+ onPointerDown: Be,
231
+ onPointerMove: Ve,
232
+ onPointerLeave: ze,
233
+ role: "presentation",
234
+ children: /* @__PURE__ */ o(
235
+ "div",
236
+ {
237
+ className: `video-player-timeline-track ${A ? "video-player-timeline-track--chapters" : ""}`,
238
+ children: [
239
+ A ? /* @__PURE__ */ n("div", { className: "video-player-chapter-segments", children: pe.map((e, r) => {
240
+ const a = e.endRatio - e.startRatio, i = M <= e.startRatio ? 0 : M >= e.endRatio ? 1 : (M - e.startRatio) / a;
241
+ return /* @__PURE__ */ o(
242
+ "div",
243
+ {
244
+ className: "video-player-chapter-segment",
245
+ style: {
246
+ flex: `${a * 100} 0 0`
247
+ },
248
+ children: [
249
+ /* @__PURE__ */ n(
250
+ "div",
251
+ {
252
+ className: "video-player-chapter-segment-progress",
253
+ style: { width: `${i * 100}%` }
254
+ }
255
+ ),
256
+ me.map((f, d) => {
257
+ const u = y(
258
+ (f.start - e.startRatio) / a,
259
+ 0,
260
+ 1
261
+ ), E = y(
262
+ (f.end - e.startRatio) / a,
263
+ 0,
264
+ 1
265
+ );
266
+ return E <= 0 || u >= 1 ? null : /* @__PURE__ */ n(
267
+ "span",
268
+ {
269
+ className: "video-player-chapter-segment-buffered",
270
+ style: {
271
+ left: `${u * 100}%`,
272
+ width: `${(E - u) * 100}%`
273
+ }
274
+ },
275
+ `buf-${r}-${d}`
276
+ );
277
+ })
278
+ ]
279
+ },
280
+ `chapter-${r}`
281
+ );
282
+ }) }) : /* @__PURE__ */ o(he, { children: [
283
+ me.map((e, r) => /* @__PURE__ */ n(
284
+ "span",
285
+ {
286
+ className: "video-player-buffered",
287
+ style: {
288
+ left: `${e.start * 100}%`,
289
+ width: `${(e.end - e.start) * 100}%`
290
+ }
291
+ },
292
+ `${e.start}-${e.end}-${r}`
293
+ )),
294
+ /* @__PURE__ */ n(
295
+ "span",
296
+ {
297
+ className: "video-player-progress",
298
+ style: { width: `${M * 100}%` }
299
+ }
300
+ )
301
+ ] }),
302
+ /* @__PURE__ */ n(
303
+ "span",
304
+ {
305
+ className: "video-player-knob",
306
+ style: { left: `${M * 100}%` }
307
+ }
308
+ )
309
+ ]
310
+ }
311
+ )
312
+ }
313
+ ),
314
+ oe != null && /* @__PURE__ */ o(
315
+ "div",
316
+ {
317
+ "data-test-id": "video-player-hover-preview",
318
+ className: "video-player-hover-preview",
319
+ style: {
320
+ left: oe,
321
+ transform: "translateX(-50%)"
322
+ },
323
+ children: [
324
+ k && R.ready && /* @__PURE__ */ n(_e, { frame: k, left: 0 }),
325
+ g != null && /* @__PURE__ */ o("div", { className: "video-player-hover-preview-info", children: [
326
+ /* @__PURE__ */ n("span", { className: "video-player-hover-preview-time", children: _(g * s) }),
327
+ (fe?.title || N) && /* @__PURE__ */ n("span", { className: "video-player-hover-preview-title", children: fe?.title ?? N })
328
+ ] })
329
+ ]
330
+ }
331
+ )
332
+ ]
333
+ }
334
+ ),
335
+ /* @__PURE__ */ o("div", { className: "video-player-controls-row", children: [
336
+ /* @__PURE__ */ o("div", { className: "video-player-left", children: [
337
+ /* @__PURE__ */ n(
338
+ "button",
339
+ {
340
+ className: "video-player-button",
341
+ type: "button",
342
+ onClick: ke,
343
+ "aria-label": h(W ? "editor.video.player.pause" : "editor.video.player.play"),
344
+ "data-test-id": W ? "video-player-pause" : "video-player-play",
345
+ children: W ? /* @__PURE__ */ n(je, { size: 20 }) : /* @__PURE__ */ n(We, { size: 20 })
346
+ }
347
+ ),
348
+ /* @__PURE__ */ o(
349
+ ve,
350
+ {
351
+ ref: Te,
352
+ onMouseEnter: X ? void 0 : () => O(!0),
353
+ onMouseLeave: X ? void 0 : () => O(!1),
354
+ style: {
355
+ display: "inline-flex",
356
+ alignItems: "center",
357
+ height: 28,
358
+ borderRadius: 8,
359
+ padding: m ? "0 8px" : 0,
360
+ gap: 6,
361
+ background: m ? "rgba(134, 142, 150, 0.15)" : "transparent",
362
+ backdropFilter: m ? "blur(4px)" : "none",
363
+ transition: "padding 120ms ease, background 120ms ease, backdrop-filter 120ms ease"
364
+ },
365
+ children: [
366
+ /* @__PURE__ */ n(
367
+ "button",
368
+ {
369
+ type: "button",
370
+ className: m ? void 0 : "video-player-button",
371
+ onClick: () => {
372
+ if (X && !m) {
373
+ O(!0);
374
+ return;
375
+ }
376
+ Me();
377
+ },
378
+ "aria-label": h(z || V === 0 ? "editor.video.player.unmute" : "editor.video.player.mute"),
379
+ "data-test-id": z || V === 0 ? "video-player-unmute" : "video-player-mute",
380
+ style: m ? {
381
+ display: "inline-flex",
382
+ alignItems: "center",
383
+ justifyContent: "center",
384
+ flexShrink: 0,
385
+ width: 16,
386
+ height: 16,
387
+ padding: 0,
388
+ border: "none",
389
+ background: "transparent",
390
+ color: "#fff",
391
+ cursor: "pointer"
392
+ } : void 0,
393
+ children: z || V === 0 ? /* @__PURE__ */ n(Qe, { size: m ? 16 : 20 }) : /* @__PURE__ */ n(Ge, { size: m ? 16 : 20 })
394
+ }
395
+ ),
396
+ /* @__PURE__ */ n(
397
+ ve,
398
+ {
399
+ className: "video-player-volume-slider",
400
+ style: {
401
+ width: m ? 57 : 0,
402
+ opacity: m ? 1 : 0,
403
+ overflow: m ? "visible" : "hidden",
404
+ pointerEvents: m ? "auto" : "none",
405
+ transition: "width 120ms ease, opacity 120ms ease",
406
+ display: "flex",
407
+ alignItems: "center"
408
+ },
409
+ children: /* @__PURE__ */ n(
410
+ De,
411
+ {
412
+ w: 57,
413
+ min: 0,
414
+ max: 1,
415
+ step: 0.01,
416
+ value: z ? 0 : V,
417
+ onChange: Fe,
418
+ label: null,
419
+ "aria-label": h("editor.video.player.volume"),
420
+ size: 3
421
+ }
422
+ )
423
+ }
424
+ )
425
+ ]
426
+ }
427
+ ),
428
+ /* @__PURE__ */ o("div", { className: "video-player-time", children: [
429
+ _(B),
430
+ " / ",
431
+ _(s)
432
+ ] }),
433
+ U && /* @__PURE__ */ o("div", { className: "video-player-chapter-title", children: [
434
+ /* @__PURE__ */ n("span", { children: U.title }),
435
+ /* @__PURE__ */ n(ge, { size: 16 })
436
+ ] }),
437
+ !U && N && /* @__PURE__ */ o("div", { className: "video-player-title", children: [
438
+ /* @__PURE__ */ n("span", { children: N }),
439
+ /* @__PURE__ */ n(ge, { size: 16 })
440
+ ] })
441
+ ] }),
442
+ /* @__PURE__ */ o("div", { className: "video-player-right", children: [
443
+ Xe ? /* @__PURE__ */ o(he, { children: [
444
+ /* @__PURE__ */ n(
445
+ "button",
446
+ {
447
+ className: "video-player-button",
448
+ type: "button",
449
+ "aria-label": h("editor.video.player.settings"),
450
+ onClick: () => S(!0),
451
+ "data-test-id": "video-player-settings",
452
+ children: /* @__PURE__ */ n(Ee, { size: 20 })
453
+ }
454
+ ),
455
+ /* @__PURE__ */ n(
456
+ Ye,
457
+ {
458
+ opened: ue,
459
+ onClose: () => {
460
+ S(!1);
461
+ },
462
+ settings: p,
463
+ isSettingsDisabled: b,
464
+ onSubtitlesOpen: C,
465
+ onSpeedClick: Z,
466
+ onQualityClick: ee,
467
+ onSubtitleSelect: te,
468
+ optimisticSpeed: de,
469
+ setOptimisticSpeed: Y
470
+ }
471
+ )
472
+ ] }) : /* @__PURE__ */ o(
473
+ ye,
474
+ {
475
+ opened: ue,
476
+ onChange: (e) => {
477
+ S(e), e || v("main");
478
+ },
479
+ position: "top-end",
480
+ offset: 8,
481
+ withinPortal: !0,
482
+ classNames: { dropdown: "video-player-menu-dropdown" },
483
+ portalProps: J && document.fullscreenElement ? {
484
+ target: document.fullscreenElement instanceof HTMLElement ? document.fullscreenElement : void 0
485
+ } : void 0,
486
+ shadow: "md",
487
+ radius: "md",
488
+ closeOnItemClick: !1,
489
+ closeOnEscape: !0,
490
+ trapFocus: !0,
491
+ children: [
492
+ /* @__PURE__ */ n(ye.Target, { children: /* @__PURE__ */ n(
493
+ "button",
494
+ {
495
+ className: "video-player-button",
496
+ type: "button",
497
+ "aria-label": h("editor.video.player.settings"),
498
+ "data-test-id": "video-player-settings",
499
+ children: /* @__PURE__ */ n(Ee, { size: 20 })
500
+ }
501
+ ) }),
502
+ D === "main" && /* @__PURE__ */ n(
503
+ et,
504
+ {
505
+ isOpen: !0,
506
+ disabled: b,
507
+ settings: p,
508
+ onSpeedClick: () => {
509
+ p.hasRealSpeeds && v("speed");
510
+ },
511
+ onQualityClick: () => {
512
+ p.hasRealQualities && v("quality");
513
+ },
514
+ onSubtitlesClick: () => {
515
+ b || (C?.(), v("subtitles"));
516
+ }
517
+ }
518
+ ),
519
+ D === "speed" && /* @__PURE__ */ n(
520
+ tt,
521
+ {
522
+ disabled: b,
523
+ settings: p,
524
+ currentSpeed: de ?? p.currentSpeed,
525
+ onBack: () => v("main"),
526
+ onSelect: (e) => {
527
+ Y(e), Z(e), v("main"), S(!1);
528
+ }
529
+ }
530
+ ),
531
+ D === "subtitles" && /* @__PURE__ */ n(
532
+ nt,
533
+ {
534
+ disabled: b,
535
+ settings: p,
536
+ onBack: () => v("main"),
537
+ onSelect: (e) => {
538
+ te(e), v("main"), S(!1);
539
+ }
540
+ }
541
+ ),
542
+ D === "quality" && /* @__PURE__ */ n(
543
+ Ze,
544
+ {
545
+ disabled: b,
546
+ settings: p,
547
+ onBack: () => v("main"),
548
+ onSelect: (e) => {
549
+ ee(e), v("main"), S(!1);
550
+ }
551
+ }
552
+ )
553
+ ]
554
+ }
555
+ ),
556
+ /* @__PURE__ */ n(
557
+ "button",
558
+ {
559
+ className: "video-player-button",
560
+ type: "button",
561
+ "aria-label": h("editor.video.player.pictureInPicture"),
562
+ onClick: $e,
563
+ disabled: !document.pictureInPictureEnabled,
564
+ "aria-pressed": Ie,
565
+ "data-test-id": "video-player-pip",
566
+ children: /* @__PURE__ */ n(Je, { size: 20 })
567
+ }
568
+ ),
569
+ /* @__PURE__ */ n(
570
+ "button",
571
+ {
572
+ className: "video-player-button",
573
+ type: "button",
574
+ onClick: xe,
575
+ "aria-label": h(J ? "editor.video.player.exitFullscreen" : "editor.video.player.enterFullscreen"),
576
+ "data-test-id": J ? "video-player-fullscreen-exit" : "video-player-fullscreen-enter",
577
+ children: /* @__PURE__ */ n(Ke, { size: 20 })
578
+ }
579
+ )
580
+ ] })
581
+ ] }),
582
+ l.length > 0 && /* @__PURE__ */ n("div", { className: "video-player-chapters-list", children: l.map((e, r) => /* @__PURE__ */ o(
583
+ "button",
584
+ {
585
+ type: "button",
586
+ className: `video-player-chapters-item ${U === e ? "video-player-chapters-item--active" : ""}`,
587
+ onClick: () => Re(e),
588
+ children: [
589
+ /* @__PURE__ */ n("span", { className: "video-player-chapters-item-time", children: _(e.startSec) }),
590
+ /* @__PURE__ */ n(rt, { text: e.title })
591
+ ]
592
+ },
593
+ `chapter-list-${r}`
594
+ )) })
595
+ ]
596
+ }
597
+ );
598
+ }
599
+ export {
600
+ gt as VideoCustomControls
601
+ };
@@ -0,0 +1,25 @@
1
+ type VideoIconProps = {
2
+ size?: number;
3
+ color?: string;
4
+ };
5
+ export declare function PlayIcon({ size, color, }: VideoIconProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function PauseIcon({ size, color, }: VideoIconProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare const VolumeIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const VolumeMuteIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const SettingsIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const SettingsPlayerIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
11
+ export declare const ChevronRightIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare function FullscreenIcon({ size, color, }: VideoIconProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare const PictureInPictureIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const ArrowLeftIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const CheckIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const TickIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const SubtitleIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare const SpeedIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const QualityIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
20
+ export declare const MoreVerticalIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const CloseMenuIcon: ({ size, color, }: VideoIconProps) => import("react/jsx-runtime").JSX.Element;
22
+ export declare function CheckCircleIcon({ size }: VideoIconProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function Refresh04Icon({ size, color, }: VideoIconProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=VideoIcons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoIcons.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoPlayer/components/VideoIcons.tsx"],"names":[],"mappings":"AAkBA,KAAK,cAAc,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAaF,wBAAgB,QAAQ,CAAC,EACvB,IAAS,EACT,KAAsB,GACvB,EAAE,cAAc,2CAiBhB;AACD,wBAAgB,SAAS,CAAC,EACxB,IAAS,EACT,KAAsB,GACvB,EAAE,cAAc,2CAqBhB;AACD,eAAO,MAAM,UAAU,qBAnDlB,cAAc,4CAmDkC,CAAC;AACtD,eAAO,MAAM,cAAc,qBApDtB,cAAc,4CAoDqC,CAAC;AACzD,eAAO,MAAM,YAAY,qBArDpB,cAAc,4CAqDwC,CAAC;AAC5D,eAAO,MAAM,kBAAkB,qBAtD1B,cAAc,4CAsDwC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,qBAvDxB,cAAc,4CAuDwC,CAAC;AAG5D,wBAAgB,cAAc,CAAC,EAC7B,IAAS,EACT,KAAsB,GACvB,EAAE,cAAc,2CAqBhB;AACD,eAAO,MAAM,oBAAoB,qBAnF5B,cAAc,4CAmFkD,CAAC;AACtE,eAAO,MAAM,aAAa,qBApFrB,cAAc,4CAoFoC,CAAC;AACxD,eAAO,MAAM,SAAS,qBArFjB,cAAc,4CAqFsC,CAAC;AAC1D,eAAO,MAAM,QAAQ,qBAtFhB,cAAc,4CAsF4B,CAAC;AAChD,eAAO,MAAM,YAAY,qBAvFpB,cAAc,4CAuFkC,CAAC;AACtD,eAAO,MAAM,SAAS,qBAxFjB,cAAc,4CAwFqC,CAAC;AACzD,eAAO,MAAM,WAAW,qBAzFnB,cAAc,4CAyF0C,CAAC;AAC9D,eAAO,MAAM,gBAAgB,qBA1FxB,cAAc,4CA0F0C,CAAC;AAC9D,eAAO,MAAM,aAAa,qBA3FrB,cAAc,4CA2F6C,CAAC;AAGjE,wBAAgB,eAAe,CAAC,EAAE,IAAS,EAAE,EAAE,cAAc,2CAqB5D;AAGD,wBAAgB,aAAa,CAAC,EAC5B,IAAS,EACT,KAAsB,GACvB,EAAE,cAAc,2CAyBhB"}