softbuilders-react-video-player 1.1.7 → 1.1.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.
- package/LICENSE +21 -21
- package/README.md +126 -126
- package/dist/components/BigPlayButton/index.tsx +31 -31
- package/dist/components/BufferTracker/index.tsx +19 -19
- package/dist/components/ChapterTooltip/index.tsx +65 -65
- package/dist/components/ChaptersPanal/index.tsx +40 -40
- package/dist/components/ControlBar/index.d.ts +2 -1
- package/dist/components/ControlBar/index.js +19 -5
- package/dist/components/ControlBar/index.js.map +1 -1
- package/dist/components/ControlBar/index.tsx +149 -127
- package/dist/components/CreateNoteMenu/index.tsx +61 -61
- package/dist/components/CurrentTimeLabel/index.tsx +13 -13
- package/dist/components/CurrentTimeTracker/index.tsx +18 -18
- package/dist/components/Menu/index.tsx +49 -49
- package/dist/components/MenuButton/index.js +1 -1
- package/dist/components/MenuButton/index.js.map +1 -1
- package/dist/components/MenuButton/index.tsx +67 -67
- package/dist/components/NoteTooltip/index.tsx +46 -46
- package/dist/components/NotesPanal/index.tsx +34 -34
- package/dist/components/QualityMenu/index.js +2 -2
- package/dist/components/QualityMenu/index.js.map +1 -1
- package/dist/components/QualityMenu/index.tsx +122 -122
- package/dist/components/Slider/index.d.ts +1 -1
- package/dist/components/Slider/index.js +3 -3
- package/dist/components/Slider/index.js.map +1 -1
- package/dist/components/Slider/index.tsx +36 -37
- package/dist/components/Slider/style.css +49 -15
- package/dist/components/SoftBuildersVideoPlayer/index.js +1 -1
- package/dist/components/SoftBuildersVideoPlayer/index.js.map +1 -1
- package/dist/components/SoftBuildersVideoPlayer/index.tsx +110 -109
- package/dist/components/SubtitleMenu/index.js +2 -2
- package/dist/components/SubtitleMenu/index.js.map +1 -1
- package/dist/components/SubtitleMenu/index.tsx +107 -108
- package/dist/components/TimeSlider/index.js +13 -13
- package/dist/components/TimeSlider/index.tsx +107 -107
- package/dist/components/TimeSliderContainer/index.tsx +35 -35
- package/dist/components/Tooltip/index.tsx +16 -16
- package/dist/components/VideoPlayerComponent/index.d.ts +2 -1
- package/dist/components/VideoPlayerComponent/index.js +37 -34
- package/dist/components/VideoPlayerComponent/index.js.map +1 -1
- package/dist/components/VideoPlayerComponent/index.tsx +260 -249
- package/dist/components/VideoPlayerComponent/provider.tsx +82 -82
- package/dist/components/VideoPlayerComponent/style/style.css +36 -36
- package/dist/components/VolumeSlider/index.d.ts +4 -2
- package/dist/components/VolumeSlider/index.js +12 -2
- package/dist/components/VolumeSlider/index.js.map +1 -1
- package/dist/components/VolumeSlider/index.tsx +91 -52
- package/dist/components/icons/SubIcon.d.ts +3 -0
- package/dist/components/icons/SubIcon.js +4 -0
- package/dist/components/icons/SubIcon.js.map +1 -0
- package/dist/components/icons/SubIcon.tsx +28 -0
- package/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.js +1 -0
- package/dist/components/icons/index.js.map +1 -1
- package/dist/components/icons/index.ts +15 -14
- package/dist/images/index.d.ts +1 -0
- package/dist/images/index.js +1 -0
- package/dist/images/index.js.map +1 -1
- package/dist/index.css +75 -3
- package/dist/index.mjs +253 -166
- package/dist/styles/tailwind.css +137 -87
- package/package.json +45 -45
package/dist/index.mjs
CHANGED
@@ -31,16 +31,16 @@ var __objRest = (source, exclude) => {
|
|
31
31
|
};
|
32
32
|
|
33
33
|
// src/components/SoftBuildersVideoPlayer/index.tsx
|
34
|
-
import { memo, useEffect as useEffect15, useState as
|
34
|
+
import { memo, useEffect as useEffect15, useState as useState14 } from "react";
|
35
35
|
|
36
36
|
// src/components/VideoPlayerComponent/index.tsx
|
37
|
-
import { useEffect as useEffect14, useRef as useRef2, useState as
|
37
|
+
import { useEffect as useEffect14, useRef as useRef2, useState as useState13 } from "react";
|
38
38
|
import ReactDOM from "react-dom/client";
|
39
39
|
import videojs from "video.js";
|
40
40
|
import "video.js/dist/video-js.css";
|
41
41
|
|
42
42
|
// src/components/ControlBar/index.tsx
|
43
|
-
import { useEffect as useEffect13 } from "react";
|
43
|
+
import { useEffect as useEffect13, useState as useState12 } from "react";
|
44
44
|
|
45
45
|
// src/utils/index.ts
|
46
46
|
var durationFormater = (seconds) => {
|
@@ -163,12 +163,14 @@ var Slider = (_a) => {
|
|
163
163
|
value,
|
164
164
|
handleValueChange,
|
165
165
|
min = 0,
|
166
|
-
max = 100
|
166
|
+
max = 100,
|
167
|
+
className
|
167
168
|
} = _b, rest = __objRest(_b, [
|
168
169
|
"value",
|
169
170
|
"handleValueChange",
|
170
171
|
"min",
|
171
|
-
"max"
|
172
|
+
"max",
|
173
|
+
"className"
|
172
174
|
]);
|
173
175
|
return /* @__PURE__ */ jsx3(
|
174
176
|
"input",
|
@@ -178,7 +180,8 @@ var Slider = (_a) => {
|
|
178
180
|
max,
|
179
181
|
value,
|
180
182
|
onChange: handleValueChange,
|
181
|
-
className:
|
183
|
+
className: `sb-w-full sb-h-2 sb-bg-transparent sb-bg-opacity-50 sb-rounded-lg sb-appearance-none sb-cursor-pointer sb-range-slider sb-slider-thumb
|
184
|
+
${className}`,
|
182
185
|
style: {
|
183
186
|
background: `linear-gradient(to right, #f97316 ${value}%, #30303070 ${value}%)`
|
184
187
|
}
|
@@ -455,34 +458,59 @@ var UnmuteIcon_default = SvgUnmuteIcon;
|
|
455
458
|
|
456
459
|
// src/components/icons/SubtitlesIcon.tsx
|
457
460
|
import { jsx as jsx17, jsxs as jsxs2 } from "react/jsx-runtime";
|
458
|
-
var SvgSubtitlesIcon = (props) => /* @__PURE__ */ jsxs2("svg", __spreadProps(__spreadValues({ xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em" }, props), { children: [
|
459
|
-
/* @__PURE__ */ jsx17(
|
460
|
-
"path",
|
461
|
-
{
|
462
|
-
fill: "#FFF",
|
463
|
-
d: "m78.649 64.733 4.772-.014c4.355-.012 8.711-.012 13.067-.01 4.703 0 9.407-.01 14.11-.02q13.815-.023 27.629-.023 11.23-.001 22.463-.012 31.861-.026 63.724-.025h6.94c18.57.001 37.138-.018 55.707-.046q28.618-.043 57.235-.04c10.706 0 21.413-.006 32.119-.027q13.673-.028 27.347-.009c4.647.006 9.295.007 13.943-.01q6.39-.024 12.783.004 2.303.005 4.605-.012c17.985-.122 33.209 4.858 46.137 17.55 8.927 9.239 14.882 21.979 14.901 34.934l.012 2.976-.003 3.246.01 3.467q.01 5.763.011 11.526l.015 8.254q.02 11.222.024 22.445l.012 14.022q.019 19.423.026 38.845v5.027l.002 5.048v2.53q.009 20.274.046 40.55.035 20.83.037 41.661-.001 11.69.025 23.38.023 9.956.012 19.913-.006 5.075.011 10.15c.013 3.677.007 7.353-.004 11.03l.025 3.206c-.1 15.234-5.618 28.587-16.181 39.571L478 426l-1.71 1.742c-12.91 12.154-30.359 13.722-47.23 13.639q-2.341.005-4.684.014c-4.25.013-8.502.007-12.753-.003-4.6-.007-9.2.004-13.8.012-8.996.013-17.991.01-26.987.002a15973 15973 0 0 0-25.105-.003q-3.18 0-6.358.003c-19.85.008-39.7-.002-59.55-.018a31884 31884 0 0 0-51.037.003 46445 46445 0 0 1-65.678.01l-3.148-.001q-10.951-.003-21.904.009-13.356.013-26.712-.01c-4.539-.008-9.077-.011-13.616-.001q-6.243.013-12.487-.012a631 631 0 0 0-4.493.006c-19.337.087-36.076-3.874-50.342-17.72-11.99-13.314-15.732-28.763-15.667-46.265l-.011-3.376c-.01-3.706-.007-7.412-.003-11.118q-.007-4.003-.015-8.006-.018-9.72-.012-19.439.002-7.905-.005-15.812l-.001-2.28-.004-4.584q-.014-21.467-.003-42.935c.006-13.068-.006-26.137-.025-39.205q-.03-20.168-.024-40.336.005-11.307-.014-22.614-.019-9.625-.002-19.252.01-4.903-.005-9.806c-.063-21.392.482-40.17 16.182-56.468L33 80l1.64-1.707C46.883 66.577 62.55 64.697 78.65 64.733M57 111c-3.615 5.55-3.427 10.594-3.394 16.994l-.019 3.364c-.017 3.722-.012 7.443-.007 11.165q-.01 4.002-.026 8.003c-.02 6.495-.025 12.99-.023 19.485a9577 9577 0 0 1-.017 20.405l-.003 2.295c-.019 14.32-.018 28.641-.01 42.961.005 13.096-.016 26.191-.05 39.287q-.05 20.178-.043 40.355c.002 7.55-.003 15.1-.028 22.65q-.033 9.641-.006 19.283.016 4.917-.01 9.834c-.019 3.558-.006 7.114.015 10.671l-.038 3.124c.093 7.623 1.84 12.297 7.234 17.703 6.322 4.896 14.068 4.11 21.659 4.042q2.337.007 4.673.02c4.269.017 8.537.003 12.806-.017 4.608-.015 9.216-.002 13.824.008 9.023.015 18.044.002 27.067-.02 10.505-.023 21.01-.021 31.516-.019 18.742.004 37.484-.017 56.226-.051q27.285-.05 54.569-.041 29.71.012 59.42-.015l3.173-.004 6.31-.006q10.986-.009 21.973-.006 13.386.003 26.77-.032c4.554-.012 9.107-.019 13.66-.013q6.252.006 12.502-.023 2.264-.008 4.526.001c2.05.007 4.098-.004 6.147-.02l3.45-.005c6.13-.735 10.246-3.731 14.154-8.378 3.27-6.025 3.426-11.188 3.381-17.962l.014-3.318c.012-3.663.003-7.326-.007-10.99q.007-3.942.016-7.885c.013-6.395.01-12.79.002-19.185a8074 8074 0 0 1-.003-17.841q0-2.258.003-4.514c.008-14.102-.002-28.204-.018-42.306q-.018-18.139.003-36.278a23436 23436 0 0 0 .01-46.65l-.001-2.235q-.003-7.785.009-15.572.014-10.484-.015-20.972-.006-3.847.004-7.696c.008-3.502-.002-7.004-.017-10.507l.02-3.075c-.055-6.664-.708-12.636-5.014-18.037l-1.7-1.352-1.675-1.398c-4.658-2.84-9.18-3.477-14.556-3.481-1.96-.01-1.96-.01-3.96-.018l-4.33.011-4.617-.011c-4.226-.01-8.452-.008-12.677-.004-4.559.002-9.117-.007-13.675-.014q-13.395-.018-26.788-.012a26146 26146 0 0 1-31.19-.01q-29.507-.013-59.014-.003c-18.001.006-36.002-.006-54.003-.025q-27.72-.03-55.438-.024c-10.376.002-20.753 0-31.13-.014q-13.248-.019-26.498-.002-6.76.011-13.521-.005-6.189-.015-12.378.007-2.239.004-4.478-.008c-10.356-.052-17.722-.02-24.759 8.386"
|
464
|
-
}
|
465
|
-
),
|
466
|
-
/* @__PURE__ */ jsx17(
|
467
|
-
"path",
|
468
|
-
{
|
469
|
-
fill: "#FFF",
|
470
|
-
d: "M211.594 166.027C225.564 177.95 232.89 192.341 237 210v15h-38l-2-12c-3.428-9.924-9.002-16.527-18.25-21.375-8.317-3.952-19.394-4.22-28.062-1.187C141.226 194.932 134.624 202.24 131 212c-1.17 3.683-1.154 7.207-1.193 11.057l-.025 2.13q-.035 3.484-.055 6.97l-.017 2.417q-.039 6.342-.06 12.685-.02 5.22-.082 10.44c-.05 4.218-.074 8.437-.081 12.657a438 438 0 0 1-.046 4.793c-.172 12.03 1.188 23.276 9.907 32.394 7.225 6.372 16.431 10.19 26.16 9.809 8.312-1.173 15.45-3.473 21.492-9.352h2l.75-1.625c1.25-2.375 1.25-2.375 3.188-5 4.139-6.774 5.081-13.528 6.062-21.375h38c0 21.963-4.801 38.798-20.363 54.422L214 337l-1.918 2.016c-13.517 13.248-32.973 17.296-51.127 17.296-18.978-.262-36.43-7.932-49.955-21.312-16.343-18.293-21.143-37.855-21.203-61.969l-.009-2.324q-.022-6.097-.028-12.193c-.006-4.15-.03-8.301-.058-12.451a1811 1811 0 0 1-.026-9.7q-.004-2.29-.024-4.582c-.185-22.871 5.05-43.382 21.063-60.465 27.59-27.967 70.078-29.363 100.879-5.289M391 162.5a300 300 0 0 1 4 3.5l2 1.54c13.042 10.34 22.013 28.145 24 44.46v13h-38l-3-14c-4.092-9.822-9.492-15.253-19-20-8.913-3.553-18.759-3.316-27.625.25-9.012 4.09-14.51 10.719-18.187 19.813-2.989 7.986-2.348 17.084-2.356 25.457l-.01 3.922q-.009 4.095-.007 8.192c0 3.47-.014 6.939-.031 10.408-.014 3.347-.013 6.693-.014 10.04l-.022 3.729c.035 13.571 1.681 25.006 11.057 35.294 7.318 6.316 16.193 9.264 25.738 9.106 9.753-.837 18.156-5.38 24.77-12.524 5.983-7.59 7.067-14.967 8.687-24.687h38c0 20.87-4.852 37.261-19 53l-1.57 1.852c-10.837 11.926-28.103 20.027-44.063 21.37-21.875.91-40.916-3.117-57.91-17.921-13.741-12.868-23.846-30.701-24.597-49.89a557 557 0 0 1-.021-4.03l-.015-2.24q-.021-3.648-.027-7.297l-.009-2.538q-.022-6.658-.028-13.315c-.006-4.547-.03-9.095-.058-13.642a2163 2163 0 0 1-.026-10.584q-.004-2.512-.024-5.023c-.175-23.795 5.888-42.815 22.536-60.43C321.02 145.335 363.02 141.156 391 162.5"
|
471
|
-
}
|
472
|
-
)
|
473
|
-
] }));
|
474
|
-
var SubtitlesIcon_default = SvgSubtitlesIcon;
|
475
461
|
|
476
|
-
// src/components/
|
462
|
+
// src/components/icons/SubIcon.tsx
|
477
463
|
import { jsx as jsx18, jsxs as jsxs3 } from "react/jsx-runtime";
|
464
|
+
var SvgSubIcon = (props) => /* @__PURE__ */ jsxs3(
|
465
|
+
"svg",
|
466
|
+
__spreadProps(__spreadValues({
|
467
|
+
xmlns: "http://www.w3.org/2000/svg",
|
468
|
+
width: "1em",
|
469
|
+
height: "1em",
|
470
|
+
fill: "none",
|
471
|
+
stroke: "currentColor",
|
472
|
+
viewBox: "0 0 15 15"
|
473
|
+
}, props), {
|
474
|
+
children: [
|
475
|
+
/* @__PURE__ */ jsx18(
|
476
|
+
"path",
|
477
|
+
{
|
478
|
+
stroke: "currentColor",
|
479
|
+
strokeLinecap: "round",
|
480
|
+
strokeLinejoin: "round",
|
481
|
+
strokeWidth: 1.5,
|
482
|
+
d: "M1.25 7.5c0-2.487 0-3.731.658-4.561q.159-.2.346-.367c.785-.697 1.96-.697 4.309-.697h1.875c2.349 0 3.523 0 4.307.697q.19.168.347.367c.658.83.658 2.074.658 4.561s0 3.731-.658 4.561q-.157.2-.347.367c-.784.697-1.957.697-4.307.697H6.562c-2.349 0-3.523 0-4.308-.697a3 3 0 0 1-.346-.367c-.658-.83-.658-2.073-.658-4.561"
|
483
|
+
}
|
484
|
+
),
|
485
|
+
/* @__PURE__ */ jsx18(
|
486
|
+
"path",
|
487
|
+
{
|
488
|
+
stroke: "currentColor",
|
489
|
+
strokeLinecap: "round",
|
490
|
+
strokeLinejoin: "round",
|
491
|
+
strokeWidth: 1.5,
|
492
|
+
d: "M6.563 5.625H6.25c-.582 0-.874 0-1.103.095a1.25 1.25 0 0 0-.677.677c-.095.23-.095.52-.095 1.103 0 .582 0 .874.095 1.103a1.25 1.25 0 0 0 .677.677c.23.095.52.095 1.103.095h.313m4.062-3.75h-.312c-.583 0-.874 0-1.104.095a1.25 1.25 0 0 0-.676.677c-.095.23-.095.52-.095 1.103 0 .582 0 .874.095 1.103a1.25 1.25 0 0 0 .676.677c.23.095.521.095 1.104.095h.312"
|
493
|
+
}
|
494
|
+
)
|
495
|
+
]
|
496
|
+
})
|
497
|
+
);
|
498
|
+
var SubIcon_default = SvgSubIcon;
|
499
|
+
|
500
|
+
// src/components/VolumeSlider/index.tsx
|
501
|
+
import { jsx as jsx19, jsxs as jsxs4 } from "react/jsx-runtime";
|
478
502
|
var MIN = 0;
|
479
503
|
var MAX = 100;
|
480
|
-
var VolumeSlider = ({}) => {
|
504
|
+
var VolumeSlider = ({ width }) => {
|
481
505
|
const { player } = useSoftBuildersVideoPlayerContext();
|
506
|
+
const [isVisible, setVisible] = useState2(false);
|
482
507
|
const [volume, setVolume] = useState2(0);
|
483
508
|
useEffect2(() => {
|
484
509
|
setVolume((player == null ? void 0 : player.muted()) ? 0 : Number(player == null ? void 0 : player.volume()) * 100 || 0);
|
485
510
|
}, [player]);
|
511
|
+
const toggleVisiblity = () => {
|
512
|
+
setVisible((prev) => !prev);
|
513
|
+
};
|
486
514
|
const handleValueChange = (e) => {
|
487
515
|
const newVolume = Number(e.target.value);
|
488
516
|
setVolume(newVolume);
|
@@ -493,18 +521,48 @@ var VolumeSlider = ({}) => {
|
|
493
521
|
player == null ? void 0 : player.muted(false);
|
494
522
|
}
|
495
523
|
};
|
496
|
-
return /* @__PURE__ */
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
524
|
+
return /* @__PURE__ */ jsxs4(
|
525
|
+
"div",
|
526
|
+
{
|
527
|
+
className: `sb-flex sb-flex-col-reverse ${width > 600 ? "!sb-flex-row !sb-items-end" : ""} sb-items-center sb-justify-start sb-gap-2 sb-h-full`,
|
528
|
+
children: [
|
529
|
+
/* @__PURE__ */ jsx19(
|
530
|
+
"div",
|
531
|
+
{
|
532
|
+
className: `sb-flex sb-relative ${width > 600 ? "" : ""} sb-top-1 sb-items-end`,
|
533
|
+
onClick: toggleVisiblity,
|
534
|
+
children: volume === 0 || (player == null ? void 0 : player.muted()) ? /* @__PURE__ */ jsx19(
|
535
|
+
MuteIcon_default,
|
536
|
+
{
|
537
|
+
className: `sb-w-3 sb-h-3 ${width > 600 ? " " : ""} sb-h-5 sb-w-5`
|
538
|
+
}
|
539
|
+
) : /* @__PURE__ */ jsx19(
|
540
|
+
UnmuteIcon_default,
|
541
|
+
{
|
542
|
+
className: `sb-w-3 sb-h-3 ${width > 600 ? "" : ""} sb-h-5 sb-w-5`
|
543
|
+
}
|
544
|
+
)
|
545
|
+
}
|
546
|
+
),
|
547
|
+
/* @__PURE__ */ jsx19("div", { className: "sb-flex sb-items-center sb-justify-center", children: /* @__PURE__ */ jsx19(
|
548
|
+
"div",
|
549
|
+
{
|
550
|
+
className: `${isVisible && width < 600 ? " sb-w-[22px]" : !isVisible && width < 600 ? "sb-hidden" : ""} -sb-rotate-90 -sb-translate-y-2 sb-relative ${width > 600 ? "sb-static sb-w-16 sb-rotate-0 sb-translate-y-0 " : "sb-translate-y-0"}`,
|
551
|
+
children: /* @__PURE__ */ jsx19(
|
552
|
+
Slider_default,
|
553
|
+
{
|
554
|
+
value: volume,
|
555
|
+
handleValueChange,
|
556
|
+
min: MIN,
|
557
|
+
max: MAX,
|
558
|
+
className: "!sb-w-16"
|
559
|
+
}
|
560
|
+
)
|
561
|
+
}
|
562
|
+
) })
|
563
|
+
]
|
564
|
+
}
|
565
|
+
);
|
508
566
|
};
|
509
567
|
var VolumeSlider_default = VolumeSlider;
|
510
568
|
|
@@ -513,7 +571,7 @@ import { useEffect as useEffect4, useState as useState4 } from "react";
|
|
513
571
|
|
514
572
|
// src/components/MenuButton/index.tsx
|
515
573
|
import { useCallback, useEffect as useEffect3, useRef, useState as useState3 } from "react";
|
516
|
-
import { jsx as
|
574
|
+
import { jsx as jsx20, jsxs as jsxs5 } from "react/jsx-runtime";
|
517
575
|
var MenuButton = ({ buttonContent, menuContent, close }) => {
|
518
576
|
const [isOpen, setIsOpen] = useState3(false);
|
519
577
|
const buttonRef = useRef(null);
|
@@ -534,8 +592,8 @@ var MenuButton = ({ buttonContent, menuContent, close }) => {
|
|
534
592
|
useEffect3(() => {
|
535
593
|
if (close) close(closeMenu);
|
536
594
|
}, [close, closeMenu]);
|
537
|
-
return /* @__PURE__ */
|
538
|
-
/* @__PURE__ */
|
595
|
+
return /* @__PURE__ */ jsxs5("div", { className: "sb-relative sb-flex sb-items-end", children: [
|
596
|
+
/* @__PURE__ */ jsx20(
|
539
597
|
"button",
|
540
598
|
{
|
541
599
|
ref: buttonRef,
|
@@ -546,7 +604,7 @@ var MenuButton = ({ buttonContent, menuContent, close }) => {
|
|
546
604
|
children: buttonContent
|
547
605
|
}
|
548
606
|
),
|
549
|
-
isOpen && /* @__PURE__ */
|
607
|
+
isOpen && /* @__PURE__ */ jsx20(
|
550
608
|
"div",
|
551
609
|
{
|
552
610
|
ref: menuRef,
|
@@ -562,15 +620,15 @@ var MenuButton = ({ buttonContent, menuContent, close }) => {
|
|
562
620
|
var MenuButton_default = MenuButton;
|
563
621
|
|
564
622
|
// src/components/QualityMenu/index.tsx
|
565
|
-
import { jsx as
|
623
|
+
import { jsx as jsx21, jsxs as jsxs6 } from "react/jsx-runtime";
|
566
624
|
var QualityOption = ({
|
567
625
|
isSelected,
|
568
626
|
quality,
|
569
627
|
onClick
|
570
628
|
}) => {
|
571
|
-
return /* @__PURE__ */
|
572
|
-
/* @__PURE__ */
|
573
|
-
/* @__PURE__ */
|
629
|
+
return /* @__PURE__ */ jsx21("button", { className: "hover:sb-text-orange-500 sb-p-2", onClick, children: /* @__PURE__ */ jsxs6("div", { className: "sb-grid sb-grid-cols-12 sb-items-center sb-gap-2", children: [
|
630
|
+
/* @__PURE__ */ jsx21("div", { className: "sb-col-span-3", children: isSelected ? /* @__PURE__ */ jsx21(CheckedIcon_default, { className: "sb-w-5 sb-h-5" }) : /* @__PURE__ */ jsx21("div", {}) }),
|
631
|
+
/* @__PURE__ */ jsx21("p", { className: "sb-text-left sb-col-span-9", children: quality.label })
|
574
632
|
] }) });
|
575
633
|
};
|
576
634
|
var QualityMenu = ({}) => {
|
@@ -594,13 +652,13 @@ var QualityMenu = ({}) => {
|
|
594
652
|
setCurrentQualitySrc(quality.src);
|
595
653
|
}
|
596
654
|
}, [player]);
|
597
|
-
return /* @__PURE__ */
|
655
|
+
return /* @__PURE__ */ jsx21(
|
598
656
|
MenuButton_default,
|
599
657
|
{
|
600
|
-
buttonContent: /* @__PURE__ */
|
601
|
-
menuContent: /* @__PURE__ */
|
602
|
-
/* @__PURE__ */
|
603
|
-
/* @__PURE__ */
|
658
|
+
buttonContent: /* @__PURE__ */ jsx21(SettingsIcon_default, { className: "sb-w-3 sb-h-3" }),
|
659
|
+
menuContent: /* @__PURE__ */ jsx21("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[150px]", children: /* @__PURE__ */ jsxs6("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
|
660
|
+
/* @__PURE__ */ jsxs6("div", { className: "sb-px-5 sb-flex sb-flex-row sb-gap-3 sb-items-start sb-relative sb-top-2", children: [
|
661
|
+
/* @__PURE__ */ jsx21(
|
604
662
|
"button",
|
605
663
|
{
|
606
664
|
onClick: () => {
|
@@ -609,14 +667,14 @@ var QualityMenu = ({}) => {
|
|
609
667
|
}
|
610
668
|
},
|
611
669
|
className: "hover:sb-scale-150",
|
612
|
-
children: /* @__PURE__ */
|
670
|
+
children: /* @__PURE__ */ jsx21(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
|
613
671
|
}
|
614
672
|
),
|
615
|
-
/* @__PURE__ */
|
673
|
+
/* @__PURE__ */ jsx21("h3", { children: "Quality" })
|
616
674
|
] }),
|
617
|
-
/* @__PURE__ */
|
618
|
-
/* @__PURE__ */
|
619
|
-
return /* @__PURE__ */
|
675
|
+
/* @__PURE__ */ jsx21("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
|
676
|
+
/* @__PURE__ */ jsx21("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-3 sb-items-start ", children: qualities.map((q, i) => {
|
677
|
+
return /* @__PURE__ */ jsx21(
|
620
678
|
QualityOption,
|
621
679
|
{
|
622
680
|
isSelected: currentQualitySrc === q.src,
|
@@ -648,7 +706,7 @@ var QualityMenu_default = QualityMenu;
|
|
648
706
|
|
649
707
|
// src/components/CreateNoteMenu/index.tsx
|
650
708
|
import { useState as useState5 } from "react";
|
651
|
-
import { jsx as
|
709
|
+
import { jsx as jsx22, jsxs as jsxs7 } from "react/jsx-runtime";
|
652
710
|
var CreateNoteMenu = ({ handleSaveNoteAction }) => {
|
653
711
|
const { player } = useSoftBuildersVideoPlayerContext();
|
654
712
|
const [note, setNote] = useState5("");
|
@@ -664,15 +722,15 @@ var CreateNoteMenu = ({ handleSaveNoteAction }) => {
|
|
664
722
|
);
|
665
723
|
}
|
666
724
|
};
|
667
|
-
return /* @__PURE__ */
|
725
|
+
return /* @__PURE__ */ jsx22(
|
668
726
|
MenuButton_default,
|
669
727
|
{
|
670
|
-
buttonContent: /* @__PURE__ */
|
671
|
-
menuContent: /* @__PURE__ */
|
672
|
-
/* @__PURE__ */
|
673
|
-
/* @__PURE__ */
|
674
|
-
/* @__PURE__ */
|
675
|
-
/* @__PURE__ */
|
728
|
+
buttonContent: /* @__PURE__ */ jsx22(ClosedNoteIcon_default, { className: "sb-w-3 sb-h-3" }),
|
729
|
+
menuContent: /* @__PURE__ */ jsx22("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[220px]", children: /* @__PURE__ */ jsxs7("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
|
730
|
+
/* @__PURE__ */ jsx22("h3", { className: "sb-px-5", children: "Add Note" }),
|
731
|
+
/* @__PURE__ */ jsx22("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
|
732
|
+
/* @__PURE__ */ jsxs7("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-4 sb-items-start", children: [
|
733
|
+
/* @__PURE__ */ jsx22(
|
676
734
|
"input",
|
677
735
|
{
|
678
736
|
name: "note",
|
@@ -684,7 +742,7 @@ var CreateNoteMenu = ({ handleSaveNoteAction }) => {
|
|
684
742
|
className: "sb-text-white placeholder:sb-text-white sb-w-full sb-bg-transparent sb-px-4 sb-py-3 sb-border sb-border-[#AAAAAA] sb-rounded-md"
|
685
743
|
}
|
686
744
|
),
|
687
|
-
/* @__PURE__ */
|
745
|
+
/* @__PURE__ */ jsx22("button", { className: "sb-w-full", onClick: handleSaveNote, children: /* @__PURE__ */ jsx22("div", { className: "sb-px-4 sb-py-3 sb-text-center sb-font-bold sb-bg-orange-500 sb-rounded-md", children: "Save" }) })
|
688
746
|
] })
|
689
747
|
] }) })
|
690
748
|
}
|
@@ -699,15 +757,15 @@ import { useEffect as useEffect6, useState as useState7 } from "react";
|
|
699
757
|
import { useEffect as useEffect5, useState as useState6 } from "react";
|
700
758
|
|
701
759
|
// src/components/Tooltip/index.tsx
|
702
|
-
import { jsx as
|
760
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
703
761
|
var Tooltip = ({ open, children }) => {
|
704
762
|
if (!open) return null;
|
705
|
-
return /* @__PURE__ */
|
763
|
+
return /* @__PURE__ */ jsx23("div", { className: "sb-absolute sb-bottom-full sb-mb-2 sb-left-1/2 sb-transform sb--translate-x-1/2 sb-z-10 sb-whitespace-nowrap", children });
|
706
764
|
};
|
707
765
|
var Tooltip_default = Tooltip;
|
708
766
|
|
709
767
|
// src/components/NoteTooltip/index.tsx
|
710
|
-
import { jsx as
|
768
|
+
import { jsx as jsx24, jsxs as jsxs8 } from "react/jsx-runtime";
|
711
769
|
var NoteTooltip = ({ note }) => {
|
712
770
|
const [open, setOpen] = useState6(false);
|
713
771
|
const { currentTime } = useSoftBuildersVideoPlayerContext();
|
@@ -719,16 +777,16 @@ var NoteTooltip = ({ note }) => {
|
|
719
777
|
}, 5e3);
|
720
778
|
}
|
721
779
|
}, [currentTime, note.time]);
|
722
|
-
return /* @__PURE__ */
|
780
|
+
return /* @__PURE__ */ jsx24(
|
723
781
|
"div",
|
724
782
|
{
|
725
783
|
className: "sb-w-1 sb-h-1 sb-rounded-full sb-bg-white sb-absolute sb-z-30",
|
726
784
|
style: { left: `${note.percentage}%` },
|
727
785
|
onMouseEnter: () => setOpen(true),
|
728
786
|
onMouseLeave: () => setOpen(false),
|
729
|
-
children: /* @__PURE__ */
|
730
|
-
/* @__PURE__ */
|
731
|
-
/* @__PURE__ */
|
787
|
+
children: /* @__PURE__ */ jsx24("div", { className: "sb-relative", children: /* @__PURE__ */ jsx24(Tooltip_default, { open, children: /* @__PURE__ */ jsxs8("div", { className: "sb-flex sb-flex-col sb-gap-2 sb-items-center", children: [
|
788
|
+
/* @__PURE__ */ jsx24("p", { children: note.label }),
|
789
|
+
/* @__PURE__ */ jsx24("p", { className: "sb-p-2 sb-bg-[#303030] sb-bg-opacity-50 sb-rounded-md", children: durationFormater(note.time) })
|
732
790
|
] }) }) })
|
733
791
|
}
|
734
792
|
);
|
@@ -736,7 +794,7 @@ var NoteTooltip = ({ note }) => {
|
|
736
794
|
var NoteTooltip_default = NoteTooltip;
|
737
795
|
|
738
796
|
// src/components/NotesPanal/index.tsx
|
739
|
-
import { jsx as
|
797
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
740
798
|
var NotesPanal = ({ notes }) => {
|
741
799
|
const [ns, setNs] = useState7([]);
|
742
800
|
const { duration } = useSoftBuildersVideoPlayerContext();
|
@@ -749,7 +807,7 @@ var NotesPanal = ({ notes }) => {
|
|
749
807
|
});
|
750
808
|
setNs(newNs);
|
751
809
|
}, [notes, duration]);
|
752
|
-
return /* @__PURE__ */
|
810
|
+
return /* @__PURE__ */ jsx25("div", { id: "notes-panal", className: "sb-w-full sb-h-full sb-relative ", children: ns.map((n, i) => /* @__PURE__ */ jsx25(NoteTooltip_default, { note: n }, `note-${i}-${n.time}`)) });
|
753
811
|
};
|
754
812
|
var NotesPanal_default = NotesPanal;
|
755
813
|
|
@@ -758,7 +816,7 @@ import { useEffect as useEffect8, useState as useState9 } from "react";
|
|
758
816
|
|
759
817
|
// src/components/ChapterTooltip/index.tsx
|
760
818
|
import { useEffect as useEffect7, useState as useState8 } from "react";
|
761
|
-
import { jsx as
|
819
|
+
import { jsx as jsx26, jsxs as jsxs9 } from "react/jsx-runtime";
|
762
820
|
var ChapterTooltip = ({ chapter }) => {
|
763
821
|
const { player } = useSoftBuildersVideoPlayerContext();
|
764
822
|
const [open, setOpen] = useState8(false);
|
@@ -774,7 +832,7 @@ var ChapterTooltip = ({ chapter }) => {
|
|
774
832
|
const handleClickChapter = () => {
|
775
833
|
player == null ? void 0 : player.currentTime(chapter.startTime);
|
776
834
|
};
|
777
|
-
return /* @__PURE__ */
|
835
|
+
return /* @__PURE__ */ jsx26(
|
778
836
|
"div",
|
779
837
|
{
|
780
838
|
id: `ii-section-${chapter.title}`,
|
@@ -785,15 +843,15 @@ var ChapterTooltip = ({ chapter }) => {
|
|
785
843
|
},
|
786
844
|
onMouseEnter: () => setOpen(true),
|
787
845
|
onMouseLeave: () => setOpen(false),
|
788
|
-
children: /* @__PURE__ */
|
846
|
+
children: /* @__PURE__ */ jsx26(
|
789
847
|
"button",
|
790
848
|
{
|
791
849
|
id: `section-${chapter.title}`,
|
792
850
|
className: "sb-h-full sb-w-full",
|
793
851
|
onClick: handleClickChapter,
|
794
|
-
children: /* @__PURE__ */
|
795
|
-
/* @__PURE__ */
|
796
|
-
/* @__PURE__ */
|
852
|
+
children: /* @__PURE__ */ jsx26("div", { className: "sb-relative sb-flex sb-h-full sb-w-full sb-justify-between sb-items-center", children: /* @__PURE__ */ jsx26(Tooltip_default, { open, children: /* @__PURE__ */ jsxs9("div", { className: "sb-flex sb-flex-col sb-gap-2 sb-items-center", children: [
|
853
|
+
/* @__PURE__ */ jsx26("p", { children: chapter.title }),
|
854
|
+
/* @__PURE__ */ jsxs9("p", { className: "sb-p-2 sb-bg-[#303030] sb-bg-opacity-50 sb-rounded-md", children: [
|
797
855
|
durationFormater(chapter.startTime),
|
798
856
|
" -",
|
799
857
|
" ",
|
@@ -808,7 +866,7 @@ var ChapterTooltip = ({ chapter }) => {
|
|
808
866
|
var ChapterTooltip_default = ChapterTooltip;
|
809
867
|
|
810
868
|
// src/components/ChaptersPanal/index.tsx
|
811
|
-
import { jsx as
|
869
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
812
870
|
var ChaptersPanal = ({ chapters }) => {
|
813
871
|
const [cs, setCs] = useState9([]);
|
814
872
|
const { duration } = useSoftBuildersVideoPlayerContext();
|
@@ -823,13 +881,13 @@ var ChaptersPanal = ({ chapters }) => {
|
|
823
881
|
});
|
824
882
|
setCs(newCs);
|
825
883
|
}, [chapters, duration]);
|
826
|
-
return /* @__PURE__ */
|
884
|
+
return /* @__PURE__ */ jsx27("div", { id: "chapters-panal", className: "sb-w-full sb-h-full sb-relative ", children: cs.map((c, i) => /* @__PURE__ */ jsx27(ChapterTooltip_default, { chapter: c }, `chapter-${i}-${c.startTime}`)) });
|
827
885
|
};
|
828
886
|
var ChaptersPanal_default = ChaptersPanal;
|
829
887
|
|
830
888
|
// src/components/TimeSlider/index.tsx
|
831
889
|
import { useEffect as useEffect9, useState as useState10 } from "react";
|
832
|
-
import { jsx as
|
890
|
+
import { jsx as jsx28, jsxs as jsxs10 } from "react/jsx-runtime";
|
833
891
|
var MIN2 = 0;
|
834
892
|
var MAX2 = 100;
|
835
893
|
var DEFERENCE = Math.abs(MAX2 - MIN2);
|
@@ -869,8 +927,8 @@ var TimeSlider = ({ chapters }) => {
|
|
869
927
|
arr.push(`black 100%`);
|
870
928
|
setMaskCuttes(arr.toString());
|
871
929
|
}, [chapters, duration]);
|
872
|
-
return /* @__PURE__ */
|
873
|
-
/* @__PURE__ */
|
930
|
+
return /* @__PURE__ */ jsxs10("div", { className: " sb-w-full sb-h-2 sb-flex sb-items-center sb-justify-center", children: [
|
931
|
+
/* @__PURE__ */ jsx28("div", { className: "sb-absolute sb-top-0 sb-left-0 sb-w-full sb-z-10", children: /* @__PURE__ */ jsx28(
|
874
932
|
Slider_default,
|
875
933
|
{
|
876
934
|
value: timeSlider,
|
@@ -882,7 +940,7 @@ var TimeSlider = ({ chapters }) => {
|
|
882
940
|
}
|
883
941
|
}
|
884
942
|
) }),
|
885
|
-
/* @__PURE__ */
|
943
|
+
/* @__PURE__ */ jsx28(
|
886
944
|
"div",
|
887
945
|
{
|
888
946
|
className: "sb-absolute sb-top-0 sb-left-0 sb-w-full sb-h-2 sb-bg-slate-400 sb-rounded-md",
|
@@ -912,24 +970,24 @@ var TimeSlider = ({ chapters }) => {
|
|
912
970
|
var TimeSlider_default = TimeSlider;
|
913
971
|
|
914
972
|
// src/components/TimeSliderContainer/index.tsx
|
915
|
-
import { jsx as
|
973
|
+
import { jsx as jsx29, jsxs as jsxs11 } from "react/jsx-runtime";
|
916
974
|
var TimeSliderContainer = ({ notes, chapters }) => {
|
917
|
-
return /* @__PURE__ */
|
975
|
+
return /* @__PURE__ */ jsxs11(
|
918
976
|
"div",
|
919
977
|
{
|
920
978
|
id: "time-slider-container",
|
921
979
|
className: "sb-w-full sb-relative sb-flex sb-items-center sb-justify-center",
|
922
980
|
children: [
|
923
|
-
/* @__PURE__ */
|
981
|
+
/* @__PURE__ */ jsx29(
|
924
982
|
"div",
|
925
983
|
{
|
926
984
|
id: "notes-panal",
|
927
985
|
className: "sb-absolute sb-w-full sb-h-full sb-top-[27%] sb-left-0",
|
928
|
-
children: /* @__PURE__ */
|
986
|
+
children: /* @__PURE__ */ jsx29(NotesPanal_default, { notes })
|
929
987
|
}
|
930
988
|
),
|
931
|
-
/* @__PURE__ */
|
932
|
-
/* @__PURE__ */
|
989
|
+
/* @__PURE__ */ jsx29("div", { className: "sb-absolute sb-w-full sb-h-full sb-top-0 sb-left-0", children: /* @__PURE__ */ jsx29(ChaptersPanal_default, { chapters }) }),
|
990
|
+
/* @__PURE__ */ jsx29(TimeSlider_default, { chapters })
|
933
991
|
]
|
934
992
|
}
|
935
993
|
);
|
@@ -938,7 +996,7 @@ var TimeSliderContainer_default = TimeSliderContainer;
|
|
938
996
|
|
939
997
|
// src/components/BufferTracker/index.tsx
|
940
998
|
import { useEffect as useEffect10 } from "react";
|
941
|
-
import { Fragment, jsx as
|
999
|
+
import { Fragment, jsx as jsx30 } from "react/jsx-runtime";
|
942
1000
|
var BufferTracker = () => {
|
943
1001
|
const { player, setDownloadedBufferTimeufferTime } = useSoftBuildersVideoPlayerContext();
|
944
1002
|
useEffect10(() => {
|
@@ -947,13 +1005,13 @@ var BufferTracker = () => {
|
|
947
1005
|
}, 1e3);
|
948
1006
|
return () => clearInterval(intervalId);
|
949
1007
|
}, [player]);
|
950
|
-
return /* @__PURE__ */
|
1008
|
+
return /* @__PURE__ */ jsx30(Fragment, {});
|
951
1009
|
};
|
952
1010
|
var BufferTracker_default = BufferTracker;
|
953
1011
|
|
954
1012
|
// src/components/CurrentTimeTracker/index.tsx
|
955
1013
|
import { useEffect as useEffect11 } from "react";
|
956
|
-
import { Fragment as Fragment2, jsx as
|
1014
|
+
import { Fragment as Fragment2, jsx as jsx31 } from "react/jsx-runtime";
|
957
1015
|
var CurrentTimeTracker = () => {
|
958
1016
|
const { setCurrentTime, player } = useSoftBuildersVideoPlayerContext();
|
959
1017
|
useEffect11(() => {
|
@@ -962,21 +1020,21 @@ var CurrentTimeTracker = () => {
|
|
962
1020
|
}, 500);
|
963
1021
|
return () => clearInterval(intervalId);
|
964
1022
|
}, [player]);
|
965
|
-
return /* @__PURE__ */
|
1023
|
+
return /* @__PURE__ */ jsx31(Fragment2, {});
|
966
1024
|
};
|
967
1025
|
var CurrentTimeTracker_default = CurrentTimeTracker;
|
968
1026
|
|
969
1027
|
// src/components/SubtitleMenu/index.tsx
|
970
1028
|
import { useEffect as useEffect12, useState as useState11 } from "react";
|
971
|
-
import { jsx as
|
1029
|
+
import { jsx as jsx32, jsxs as jsxs12 } from "react/jsx-runtime";
|
972
1030
|
var SubtitleOption = ({
|
973
1031
|
isSelected,
|
974
1032
|
subtitle,
|
975
1033
|
onClick
|
976
1034
|
}) => {
|
977
|
-
return /* @__PURE__ */
|
978
|
-
/* @__PURE__ */
|
979
|
-
/* @__PURE__ */
|
1035
|
+
return /* @__PURE__ */ jsx32("button", { className: "hover:sb-text-orange-500 sb-p-2", onClick, children: /* @__PURE__ */ jsxs12("div", { className: "sb-grid sb-grid-cols-12 sb-items-center sb-gap-2", children: [
|
1036
|
+
/* @__PURE__ */ jsx32("div", { className: "sb-col-span-3", children: isSelected ? /* @__PURE__ */ jsx32(CheckedIcon_default, { className: "sb-w-5 sb-h-5" }) : /* @__PURE__ */ jsx32("div", {}) }),
|
1037
|
+
/* @__PURE__ */ jsx32("p", { className: "sb-text-left sb-col-span-9", children: subtitle.label })
|
980
1038
|
] }) });
|
981
1039
|
};
|
982
1040
|
var SubtitleMenu = ({}) => {
|
@@ -1001,13 +1059,13 @@ var SubtitleMenu = ({}) => {
|
|
1001
1059
|
setSubtitles(textTracks);
|
1002
1060
|
}
|
1003
1061
|
}, [player]);
|
1004
|
-
return /* @__PURE__ */
|
1062
|
+
return /* @__PURE__ */ jsx32(
|
1005
1063
|
MenuButton_default,
|
1006
1064
|
{
|
1007
|
-
buttonContent: /* @__PURE__ */
|
1008
|
-
menuContent: /* @__PURE__ */
|
1009
|
-
/* @__PURE__ */
|
1010
|
-
/* @__PURE__ */
|
1065
|
+
buttonContent: /* @__PURE__ */ jsx32(SubIcon_default, { className: "sb-w-4 sb-h-4 sb-text-white " }),
|
1066
|
+
menuContent: /* @__PURE__ */ jsx32("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[150px]", children: /* @__PURE__ */ jsxs12("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
|
1067
|
+
/* @__PURE__ */ jsxs12("div", { className: "sb-px-5 sb-flex sb-flex-row sb-gap-3 sb-items-start", children: [
|
1068
|
+
/* @__PURE__ */ jsx32(
|
1011
1069
|
"button",
|
1012
1070
|
{
|
1013
1071
|
onClick: () => {
|
@@ -1016,14 +1074,14 @@ var SubtitleMenu = ({}) => {
|
|
1016
1074
|
}
|
1017
1075
|
},
|
1018
1076
|
className: "hover:sb-scale-150",
|
1019
|
-
children: /* @__PURE__ */
|
1077
|
+
children: /* @__PURE__ */ jsx32(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
|
1020
1078
|
}
|
1021
1079
|
),
|
1022
|
-
/* @__PURE__ */
|
1080
|
+
/* @__PURE__ */ jsx32("h3", { children: "Subtitle" })
|
1023
1081
|
] }),
|
1024
|
-
/* @__PURE__ */
|
1025
|
-
/* @__PURE__ */
|
1026
|
-
return /* @__PURE__ */
|
1082
|
+
/* @__PURE__ */ jsx32("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
|
1083
|
+
/* @__PURE__ */ jsx32("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-3 sb-items-start", children: subtitles.map((q, i) => {
|
1084
|
+
return /* @__PURE__ */ jsx32(
|
1027
1085
|
SubtitleOption,
|
1028
1086
|
{
|
1029
1087
|
isSelected: q.mode === "showing",
|
@@ -1045,7 +1103,7 @@ var SubtitleMenu = ({}) => {
|
|
1045
1103
|
var SubtitleMenu_default = SubtitleMenu;
|
1046
1104
|
|
1047
1105
|
// src/components/ControlBar/index.tsx
|
1048
|
-
import { jsx as
|
1106
|
+
import { jsx as jsx33, jsxs as jsxs13 } from "react/jsx-runtime";
|
1049
1107
|
var ControlBar = ({
|
1050
1108
|
player,
|
1051
1109
|
isPaused,
|
@@ -1054,13 +1112,27 @@ var ControlBar = ({
|
|
1054
1112
|
notes,
|
1055
1113
|
chapters,
|
1056
1114
|
seekStep = 5,
|
1115
|
+
id,
|
1057
1116
|
handleSaveNoteAction
|
1058
1117
|
}) => {
|
1059
1118
|
const { setPlayer, setDuration } = useSoftBuildersVideoPlayerContext();
|
1119
|
+
const [width, setwidth] = useState12(null);
|
1060
1120
|
const seek = (duration2) => {
|
1061
1121
|
const currentTime = Number((player == null ? void 0 : player.currentTime()) || 0);
|
1062
1122
|
player == null ? void 0 : player.currentTime(currentTime + duration2);
|
1063
1123
|
};
|
1124
|
+
const container = document.getElementById(`video-container-${id}`);
|
1125
|
+
function handleWidthChange(width2) {
|
1126
|
+
setwidth(width2);
|
1127
|
+
console.log(width2);
|
1128
|
+
}
|
1129
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
1130
|
+
for (let entry of entries) {
|
1131
|
+
const currentWidth = entry.contentRect.width;
|
1132
|
+
handleWidthChange(currentWidth);
|
1133
|
+
}
|
1134
|
+
});
|
1135
|
+
resizeObserver.observe(container);
|
1064
1136
|
const togglePlay = () => {
|
1065
1137
|
if (isPaused) player == null ? void 0 : player.play();
|
1066
1138
|
else player == null ? void 0 : player.pause();
|
@@ -1072,34 +1144,34 @@ var ControlBar = ({
|
|
1072
1144
|
useEffect13(() => {
|
1073
1145
|
setDuration(duration);
|
1074
1146
|
}, [duration]);
|
1075
|
-
return /* @__PURE__ */
|
1076
|
-
/* @__PURE__ */
|
1077
|
-
/* @__PURE__ */
|
1078
|
-
/* @__PURE__ */
|
1147
|
+
return /* @__PURE__ */ jsxs13("div", { className: " sb-px-2 sb-flex sb-justify-center sb-gap-3 sb-w-full sb-h-full sb-items-end pb-2", children: [
|
1148
|
+
/* @__PURE__ */ jsx33(BufferTracker_default, {}),
|
1149
|
+
/* @__PURE__ */ jsx33(CurrentTimeTracker_default, {}),
|
1150
|
+
/* @__PURE__ */ jsx33(
|
1079
1151
|
"button",
|
1080
1152
|
{
|
1081
1153
|
onClick: () => {
|
1082
1154
|
seek(-seekStep);
|
1083
1155
|
},
|
1084
|
-
children: /* @__PURE__ */
|
1156
|
+
children: /* @__PURE__ */ jsx33(BackwardIcon_default, { className: "sb-w-3 sb-h-3" })
|
1085
1157
|
}
|
1086
1158
|
),
|
1087
|
-
/* @__PURE__ */
|
1088
|
-
/* @__PURE__ */
|
1159
|
+
/* @__PURE__ */ jsx33("button", { onClick: togglePlay, children: isPaused ? /* @__PURE__ */ jsx33(PlayIcon_default, { className: "sb-w-3 sb-h-3" }) : /* @__PURE__ */ jsx33(PauseIcon_default, { className: "sb-w-3 sb-h-3" }) }),
|
1160
|
+
/* @__PURE__ */ jsx33(
|
1089
1161
|
"button",
|
1090
1162
|
{
|
1091
1163
|
onClick: () => {
|
1092
1164
|
seek(seekStep);
|
1093
1165
|
},
|
1094
|
-
children: /* @__PURE__ */
|
1166
|
+
children: /* @__PURE__ */ jsx33(ForwardIcon_default, { className: "sb-w-3 sb-h-3" })
|
1095
1167
|
}
|
1096
1168
|
),
|
1097
|
-
/* @__PURE__ */
|
1098
|
-
/* @__PURE__ */
|
1099
|
-
/* @__PURE__ */
|
1100
|
-
/* @__PURE__ */
|
1101
|
-
/* @__PURE__ */
|
1102
|
-
/* @__PURE__ */
|
1169
|
+
/* @__PURE__ */ jsx33(CurrentTimeLabel_default, {}),
|
1170
|
+
/* @__PURE__ */ jsx33("div", { className: "sb-w-[30%] hover:sb-w-[45%] sb-transition-all sb-ease-in-out sb-duration-500", children: /* @__PURE__ */ jsx33(TimeSliderContainer_default, { chapters, notes }) }),
|
1171
|
+
/* @__PURE__ */ jsx33("p", { children: durationFormater(duration) }),
|
1172
|
+
/* @__PURE__ */ jsx33("div", { className: "sb-h-full", children: /* @__PURE__ */ jsx33(VolumeSlider_default, { width }) }),
|
1173
|
+
/* @__PURE__ */ jsx33(QualityMenu_default, {}),
|
1174
|
+
/* @__PURE__ */ jsx33(
|
1103
1175
|
"button",
|
1104
1176
|
{
|
1105
1177
|
onClick: () => {
|
@@ -1109,29 +1181,29 @@ var ControlBar = ({
|
|
1109
1181
|
player == null ? void 0 : player.requestFullscreen();
|
1110
1182
|
}
|
1111
1183
|
},
|
1112
|
-
children: /* @__PURE__ */
|
1184
|
+
children: /* @__PURE__ */ jsx33(FullScreenIcon_default, { className: "sb-w-3 sb-h-3" })
|
1113
1185
|
}
|
1114
1186
|
),
|
1115
|
-
handleSaveNoteAction && /* @__PURE__ */
|
1116
|
-
/* @__PURE__ */
|
1187
|
+
handleSaveNoteAction && /* @__PURE__ */ jsx33(CreateNoteMenu_default, { handleSaveNoteAction }),
|
1188
|
+
/* @__PURE__ */ jsx33(SubtitleMenu_default, {})
|
1117
1189
|
] });
|
1118
1190
|
};
|
1119
1191
|
var ControlBar_default = ControlBar;
|
1120
1192
|
|
1121
1193
|
// src/components/BigPlayButton/index.tsx
|
1122
|
-
import { jsx as
|
1194
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
1123
1195
|
var BigPlayButton = ({ player, isPaused, setIsPaused }) => {
|
1124
1196
|
const togglePlay = () => {
|
1125
1197
|
if (isPaused) player == null ? void 0 : player.play();
|
1126
1198
|
else player == null ? void 0 : player.pause();
|
1127
1199
|
setIsPaused(!isPaused);
|
1128
1200
|
};
|
1129
|
-
return /* @__PURE__ */
|
1201
|
+
return /* @__PURE__ */ jsx34("button", { onClick: togglePlay, children: /* @__PURE__ */ jsx34("div", { className: "sb-w-16 sb-h-16 sb-rounded-full sb-bg-white/30 sb-backdrop-blur-lg sb-flex sb-items-center sb-justify-center ", children: isPaused ? /* @__PURE__ */ jsx34(PlayIcon_default, { className: "sb-w-4 sb-h-4" }) : /* @__PURE__ */ jsx34(PauseIcon_default, { className: "sb-w-4 sb-h-4" }) }) });
|
1130
1202
|
};
|
1131
1203
|
var BigPlayButton_default = BigPlayButton;
|
1132
1204
|
|
1133
1205
|
// src/components/VideoPlayerComponent/index.tsx
|
1134
|
-
import { jsx as
|
1206
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
1135
1207
|
var bigPlayButtonRoot = {};
|
1136
1208
|
var renderBigPlayButton = (id, player, isPaused, setIsPaused) => {
|
1137
1209
|
const container = document.getElementById(`video-container-${id}`);
|
@@ -1142,7 +1214,7 @@ var renderBigPlayButton = (id, player, isPaused, setIsPaused) => {
|
|
1142
1214
|
bigPlayButtonRoot[id] = ReactDOM.createRoot(element);
|
1143
1215
|
}
|
1144
1216
|
bigPlayButtonRoot[id].render(
|
1145
|
-
/* @__PURE__ */
|
1217
|
+
/* @__PURE__ */ jsx35(
|
1146
1218
|
BigPlayButton_default,
|
1147
1219
|
{
|
1148
1220
|
player,
|
@@ -1163,11 +1235,14 @@ var renderControlBar = (id, player, isPaused, setIsPaused, duration, notes, chap
|
|
1163
1235
|
if (!controlBarRoot[id]) {
|
1164
1236
|
controlBarRoot[id] = ReactDOM.createRoot(element);
|
1165
1237
|
}
|
1166
|
-
element.style.display = "
|
1238
|
+
element.style.display = "flex";
|
1239
|
+
element.style.height = "100%";
|
1240
|
+
element.style.alignItems = "flex-end";
|
1167
1241
|
controlBarRoot[id].render(
|
1168
|
-
/* @__PURE__ */
|
1242
|
+
/* @__PURE__ */ jsx35(SoftBuildersVideoPlayerProvider, { children: /* @__PURE__ */ jsx35(
|
1169
1243
|
ControlBar_default,
|
1170
1244
|
{
|
1245
|
+
id,
|
1171
1246
|
player,
|
1172
1247
|
isPaused,
|
1173
1248
|
setIsPaused,
|
@@ -1189,14 +1264,15 @@ var VideoPlayerComponent = ({
|
|
1189
1264
|
chapters,
|
1190
1265
|
startTime = 0,
|
1191
1266
|
handleSaveNoteAction,
|
1267
|
+
poster,
|
1192
1268
|
onPlay,
|
1193
1269
|
onPause
|
1194
1270
|
}) => {
|
1195
1271
|
const videoRef = useRef2(void 0);
|
1196
1272
|
const playerRef = useRef2(void 0);
|
1197
|
-
const [isReady, setIsReady] =
|
1198
|
-
const [isPaused, setIsPaused] =
|
1199
|
-
const [duration, setDuratoin] =
|
1273
|
+
const [isReady, setIsReady] = useState13(false);
|
1274
|
+
const [isPaused, setIsPaused] = useState13(!options.autoplay);
|
1275
|
+
const [duration, setDuratoin] = useState13(1);
|
1200
1276
|
const onReady = (player) => {
|
1201
1277
|
if (playerRef) {
|
1202
1278
|
playerRef.current = player;
|
@@ -1218,32 +1294,33 @@ var VideoPlayerComponent = ({
|
|
1218
1294
|
if (!playerRef.current) {
|
1219
1295
|
const videoElement = document.createElement("video-js");
|
1220
1296
|
videoElement.classList.add("vjs-big-play-centered");
|
1297
|
+
if (poster) {
|
1298
|
+
videoElement.setAttribute("poster", poster);
|
1299
|
+
}
|
1221
1300
|
videoRef.current.appendChild(videoElement);
|
1222
1301
|
playerRef.current = videojs(videoElement, options, () => {
|
1223
1302
|
onReady(playerRef.current);
|
1224
1303
|
});
|
1225
1304
|
}
|
1226
1305
|
return () => {
|
1227
|
-
if (playerRef) {
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
}, 0);
|
1241
|
-
}
|
1306
|
+
if (playerRef.current) {
|
1307
|
+
playerRef.current.dispose();
|
1308
|
+
playerRef.current = void 0;
|
1309
|
+
setTimeout(() => {
|
1310
|
+
if (bigPlayButtonRoot[id]) {
|
1311
|
+
bigPlayButtonRoot[id].unmount();
|
1312
|
+
bigPlayButtonRoot[id] = void 0;
|
1313
|
+
}
|
1314
|
+
if (controlBarRoot[id]) {
|
1315
|
+
controlBarRoot[id].unmount();
|
1316
|
+
controlBarRoot[id] = void 0;
|
1317
|
+
}
|
1318
|
+
}, 0);
|
1242
1319
|
}
|
1243
1320
|
};
|
1244
|
-
}, [options]);
|
1321
|
+
}, [options, poster]);
|
1245
1322
|
useEffect14(() => {
|
1246
|
-
if (playerRef
|
1323
|
+
if (playerRef.current && isReady) {
|
1247
1324
|
const currentTime = playerRef.current.currentTime() || 0;
|
1248
1325
|
if (isPaused) {
|
1249
1326
|
if (onPause) onPause(currentTime);
|
@@ -1281,7 +1358,7 @@ var VideoPlayerComponent = ({
|
|
1281
1358
|
duration
|
1282
1359
|
]);
|
1283
1360
|
useEffect14(() => {
|
1284
|
-
if (isReady
|
1361
|
+
if (isReady) {
|
1285
1362
|
const playButtonTimeout = setTimeout(() => {
|
1286
1363
|
renderBigPlayButton(id, playerRef.current, isPaused, setIsPaused);
|
1287
1364
|
}, 500);
|
@@ -1289,28 +1366,37 @@ var VideoPlayerComponent = ({
|
|
1289
1366
|
}
|
1290
1367
|
}, [id, isPaused, isReady]);
|
1291
1368
|
useEffect14(() => {
|
1292
|
-
if (playerRef) {
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
return () => clearInterval(intervalId);
|
1298
|
-
}
|
1369
|
+
if (playerRef.current) {
|
1370
|
+
const intervalId = setInterval(() => {
|
1371
|
+
if (playerRef.current) setIsPaused(playerRef.current.paused());
|
1372
|
+
}, 500);
|
1373
|
+
return () => clearInterval(intervalId);
|
1299
1374
|
}
|
1300
1375
|
}, []);
|
1301
|
-
return /* @__PURE__ */
|
1376
|
+
return /* @__PURE__ */ jsx35(
|
1302
1377
|
"div",
|
1303
1378
|
{
|
1304
1379
|
id: `video-container-${id}`,
|
1305
1380
|
className: "sb-relative sb-rounded-md sb-overflow-hidden",
|
1306
|
-
children: /* @__PURE__ */
|
1381
|
+
children: /* @__PURE__ */ jsx35(
|
1382
|
+
"div",
|
1383
|
+
{
|
1384
|
+
"data-vjs-player": true,
|
1385
|
+
style: {
|
1386
|
+
height: "100%",
|
1387
|
+
// Adjust height as needed
|
1388
|
+
position: "relative"
|
1389
|
+
},
|
1390
|
+
children: /* @__PURE__ */ jsx35("div", { ref: videoRef })
|
1391
|
+
}
|
1392
|
+
)
|
1307
1393
|
}
|
1308
1394
|
);
|
1309
1395
|
};
|
1310
1396
|
var VideoPlayerComponent_default = VideoPlayerComponent;
|
1311
1397
|
|
1312
1398
|
// src/components/SoftBuildersVideoPlayer/index.tsx
|
1313
|
-
import { jsx as
|
1399
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
1314
1400
|
var DEFAULT_OPTIONS = {
|
1315
1401
|
autoplay: false,
|
1316
1402
|
controls: true,
|
@@ -1345,7 +1431,7 @@ var Component = ({
|
|
1345
1431
|
if (options.muted === void 0) options.muted = DEFAULT_OPTIONS.muted;
|
1346
1432
|
if (options.height === void 0) options.height = DEFAULT_OPTIONS.height;
|
1347
1433
|
if (options.width === void 0) options.width = DEFAULT_OPTIONS.width;
|
1348
|
-
const [tracks, setTracks] =
|
1434
|
+
const [tracks, setTracks] = useState14([]);
|
1349
1435
|
useEffect15(() => {
|
1350
1436
|
const getTracks = async () => {
|
1351
1437
|
const newTracks = [];
|
@@ -1364,13 +1450,14 @@ var Component = ({
|
|
1364
1450
|
getTracks();
|
1365
1451
|
}, [options.tracks]);
|
1366
1452
|
const id = (Date.now() + Math.random() * 100).toString();
|
1367
|
-
return /* @__PURE__ */
|
1453
|
+
return /* @__PURE__ */ jsx36(
|
1368
1454
|
VideoPlayerComponent_default,
|
1369
1455
|
{
|
1370
1456
|
id,
|
1371
1457
|
chapters,
|
1372
1458
|
options: __spreadProps(__spreadValues({}, options), { tracks }),
|
1373
1459
|
notes,
|
1460
|
+
poster: "",
|
1374
1461
|
startTime,
|
1375
1462
|
handleSaveNoteAction,
|
1376
1463
|
onPause,
|