softbuilders-react-video-player 1.1.8 → 1.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +126 -126
  3. package/dist/components/BigPlayButton/index.js +1 -1
  4. package/dist/components/BigPlayButton/index.js.map +1 -1
  5. package/dist/components/BigPlayButton/index.tsx +33 -31
  6. package/dist/components/BufferTracker/index.tsx +19 -19
  7. package/dist/components/ChapterTooltip/index.tsx +65 -65
  8. package/dist/components/ChaptersPanal/index.tsx +40 -40
  9. package/dist/components/ControlBar/index.d.ts +2 -1
  10. package/dist/components/ControlBar/index.js +21 -6
  11. package/dist/components/ControlBar/index.js.map +1 -1
  12. package/dist/components/ControlBar/index.tsx +150 -127
  13. package/dist/components/CreateNoteMenu/index.tsx +61 -61
  14. package/dist/components/CurrentTimeLabel/index.tsx +13 -13
  15. package/dist/components/CurrentTimeTracker/index.tsx +18 -18
  16. package/dist/components/Menu/index.tsx +49 -49
  17. package/dist/components/MenuButton/index.js +1 -1
  18. package/dist/components/MenuButton/index.js.map +1 -1
  19. package/dist/components/MenuButton/index.tsx +67 -67
  20. package/dist/components/NoteTooltip/index.tsx +46 -46
  21. package/dist/components/NotesPanal/index.tsx +34 -34
  22. package/dist/components/QualityMenu/index.js +2 -2
  23. package/dist/components/QualityMenu/index.js.map +1 -1
  24. package/dist/components/QualityMenu/index.tsx +122 -122
  25. package/dist/components/Slider/index.d.ts +1 -1
  26. package/dist/components/Slider/index.js +3 -3
  27. package/dist/components/Slider/index.js.map +1 -1
  28. package/dist/components/Slider/index.tsx +36 -37
  29. package/dist/components/Slider/style.css +49 -15
  30. package/dist/components/SoftBuildersVideoPlayer/index.js +1 -1
  31. package/dist/components/SoftBuildersVideoPlayer/index.js.map +1 -1
  32. package/dist/components/SoftBuildersVideoPlayer/index.tsx +110 -109
  33. package/dist/components/SubtitleMenu/index.js +2 -2
  34. package/dist/components/SubtitleMenu/index.js.map +1 -1
  35. package/dist/components/SubtitleMenu/index.tsx +107 -108
  36. package/dist/components/TimeSlider/index.js +13 -13
  37. package/dist/components/TimeSlider/index.tsx +107 -107
  38. package/dist/components/TimeSliderContainer/index.tsx +35 -35
  39. package/dist/components/Tooltip/index.tsx +16 -16
  40. package/dist/components/VideoPlayerComponent/index.d.ts +2 -1
  41. package/dist/components/VideoPlayerComponent/index.js +54 -38
  42. package/dist/components/VideoPlayerComponent/index.js.map +1 -1
  43. package/dist/components/VideoPlayerComponent/index.tsx +271 -249
  44. package/dist/components/VideoPlayerComponent/provider.tsx +82 -82
  45. package/dist/components/VideoPlayerComponent/style/style.css +36 -36
  46. package/dist/components/VolumeSlider/index.d.ts +4 -2
  47. package/dist/components/VolumeSlider/index.js +12 -2
  48. package/dist/components/VolumeSlider/index.js.map +1 -1
  49. package/dist/components/VolumeSlider/index.tsx +91 -52
  50. package/dist/components/icons/SubIcon.d.ts +3 -0
  51. package/dist/components/icons/SubIcon.js +4 -0
  52. package/dist/components/icons/SubIcon.js.map +1 -0
  53. package/dist/components/icons/SubIcon.tsx +28 -0
  54. package/dist/components/icons/index.d.ts +1 -0
  55. package/dist/components/icons/index.js +1 -0
  56. package/dist/components/icons/index.js.map +1 -1
  57. package/dist/components/icons/index.ts +15 -14
  58. package/dist/images/index.d.ts +1 -0
  59. package/dist/images/index.js +1 -0
  60. package/dist/images/index.js.map +1 -1
  61. package/dist/index.css +78 -3
  62. package/dist/index.mjs +276 -169
  63. package/dist/styles/tailwind.css +140 -87
  64. 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 useState13 } from "react";
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 useState12 } from "react";
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: "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 " + rest.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/VolumeSlider/index.tsx
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__ */ jsxs3("div", { className: "sb-flex sb-items-center sb-gap-2", children: [
497
- volume === 0 || (player == null ? void 0 : player.muted()) ? /* @__PURE__ */ jsx18(MuteIcon_default, { className: "sb-w-3 sb-h-3" }) : /* @__PURE__ */ jsx18(UnmuteIcon_default, { className: "sb-w-3 sb-h-3" }),
498
- /* @__PURE__ */ jsx18(
499
- Slider_default,
500
- {
501
- value: volume,
502
- handleValueChange,
503
- min: MIN,
504
- max: MAX
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 jsx19, jsxs as jsxs4 } from "react/jsx-runtime";
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__ */ jsxs4("div", { className: "sb-relative", children: [
538
- /* @__PURE__ */ jsx19(
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__ */ jsx19(
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 jsx20, jsxs as jsxs5 } from "react/jsx-runtime";
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__ */ jsx20("button", { className: "hover:sb-text-orange-500 sb-p-2", onClick, children: /* @__PURE__ */ jsxs5("div", { className: "sb-grid sb-grid-cols-12 sb-items-center sb-gap-2", children: [
572
- /* @__PURE__ */ jsx20("div", { className: "sb-col-span-3", children: isSelected ? /* @__PURE__ */ jsx20(CheckedIcon_default, { className: "sb-w-5 sb-h-5" }) : /* @__PURE__ */ jsx20("div", {}) }),
573
- /* @__PURE__ */ jsx20("p", { className: "sb-text-left sb-col-span-9", children: quality.label })
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__ */ jsx20(
655
+ return /* @__PURE__ */ jsx21(
598
656
  MenuButton_default,
599
657
  {
600
- buttonContent: /* @__PURE__ */ jsx20(SettingsIcon_default, { className: "sb-w-3 sb-h-3" }),
601
- menuContent: /* @__PURE__ */ jsx20("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[150px]", children: /* @__PURE__ */ jsxs5("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
602
- /* @__PURE__ */ jsxs5("div", { className: "sb-px-5 sb-flex sb-flex-row sb-gap-3 sb-items-start", children: [
603
- /* @__PURE__ */ jsx20(
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__ */ jsx20(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
670
+ children: /* @__PURE__ */ jsx21(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
613
671
  }
614
672
  ),
615
- /* @__PURE__ */ jsx20("h3", { children: "Quality" })
673
+ /* @__PURE__ */ jsx21("h3", { children: "Quality" })
616
674
  ] }),
617
- /* @__PURE__ */ jsx20("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
618
- /* @__PURE__ */ jsx20("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-3 sb-items-start", children: qualities.map((q, i) => {
619
- return /* @__PURE__ */ jsx20(
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 jsx21, jsxs as jsxs6 } from "react/jsx-runtime";
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__ */ jsx21(
725
+ return /* @__PURE__ */ jsx22(
668
726
  MenuButton_default,
669
727
  {
670
- buttonContent: /* @__PURE__ */ jsx21(ClosedNoteIcon_default, { className: "sb-w-3 sb-h-3" }),
671
- menuContent: /* @__PURE__ */ jsx21("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[220px]", children: /* @__PURE__ */ jsxs6("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
672
- /* @__PURE__ */ jsx21("h3", { className: "sb-px-5", children: "Add Note" }),
673
- /* @__PURE__ */ jsx21("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
674
- /* @__PURE__ */ jsxs6("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-4 sb-items-start", children: [
675
- /* @__PURE__ */ jsx21(
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__ */ jsx21("button", { className: "sb-w-full", onClick: handleSaveNote, children: /* @__PURE__ */ jsx21("div", { className: "sb-px-4 sb-py-3 sb-text-center sb-font-bold sb-bg-orange-500 sb-rounded-md", children: "Save" }) })
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 jsx22 } from "react/jsx-runtime";
760
+ import { jsx as jsx23 } from "react/jsx-runtime";
703
761
  var Tooltip = ({ open, children }) => {
704
762
  if (!open) return null;
705
- return /* @__PURE__ */ jsx22("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 });
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 jsx23, jsxs as jsxs7 } from "react/jsx-runtime";
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__ */ jsx23(
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__ */ jsx23("div", { className: "sb-relative", children: /* @__PURE__ */ jsx23(Tooltip_default, { open, children: /* @__PURE__ */ jsxs7("div", { className: "sb-flex sb-flex-col sb-gap-2 sb-items-center", children: [
730
- /* @__PURE__ */ jsx23("p", { children: note.label }),
731
- /* @__PURE__ */ jsx23("p", { className: "sb-p-2 sb-bg-[#303030] sb-bg-opacity-50 sb-rounded-md", children: durationFormater(note.time) })
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 jsx24 } from "react/jsx-runtime";
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__ */ jsx24("div", { id: "notes-panal", className: "sb-w-full sb-h-full sb-relative ", children: ns.map((n, i) => /* @__PURE__ */ jsx24(NoteTooltip_default, { note: n }, `note-${i}-${n.time}`)) });
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 jsx25, jsxs as jsxs8 } from "react/jsx-runtime";
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__ */ jsx25(
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__ */ jsx25(
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__ */ jsx25("div", { className: "sb-relative sb-flex sb-h-full sb-w-full sb-justify-between sb-items-center", children: /* @__PURE__ */ jsx25(Tooltip_default, { open, children: /* @__PURE__ */ jsxs8("div", { className: "sb-flex sb-flex-col sb-gap-2 sb-items-center", children: [
795
- /* @__PURE__ */ jsx25("p", { children: chapter.title }),
796
- /* @__PURE__ */ jsxs8("p", { className: "sb-p-2 sb-bg-[#303030] sb-bg-opacity-50 sb-rounded-md", children: [
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 jsx26 } from "react/jsx-runtime";
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__ */ jsx26("div", { id: "chapters-panal", className: "sb-w-full sb-h-full sb-relative ", children: cs.map((c, i) => /* @__PURE__ */ jsx26(ChapterTooltip_default, { chapter: c }, `chapter-${i}-${c.startTime}`)) });
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 jsx27, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsxs9("div", { className: " sb-w-full sb-h-2 sb-flex sb-items-center sb-justify-center", children: [
873
- /* @__PURE__ */ jsx27("div", { className: "sb-absolute sb-top-0 sb-left-0 sb-w-full sb-z-10", children: /* @__PURE__ */ jsx27(
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__ */ jsx27(
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 jsx28, jsxs as jsxs10 } from "react/jsx-runtime";
973
+ import { jsx as jsx29, jsxs as jsxs11 } from "react/jsx-runtime";
916
974
  var TimeSliderContainer = ({ notes, chapters }) => {
917
- return /* @__PURE__ */ jsxs10(
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__ */ jsx28(
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__ */ jsx28(NotesPanal_default, { notes })
986
+ children: /* @__PURE__ */ jsx29(NotesPanal_default, { notes })
929
987
  }
930
988
  ),
931
- /* @__PURE__ */ jsx28("div", { className: "sb-absolute sb-w-full sb-h-full sb-top-0 sb-left-0", children: /* @__PURE__ */ jsx28(ChaptersPanal_default, { chapters }) }),
932
- /* @__PURE__ */ jsx28(TimeSlider_default, { chapters })
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 jsx29 } from "react/jsx-runtime";
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__ */ jsx29(Fragment, {});
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 jsx30 } from "react/jsx-runtime";
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__ */ jsx30(Fragment2, {});
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 jsx31, jsxs as jsxs11 } from "react/jsx-runtime";
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__ */ jsx31("button", { className: "hover:sb-text-orange-500 sb-p-2", onClick, children: /* @__PURE__ */ jsxs11("div", { className: "sb-grid sb-grid-cols-12 sb-items-center sb-gap-2", children: [
978
- /* @__PURE__ */ jsx31("div", { className: "sb-col-span-3", children: isSelected ? /* @__PURE__ */ jsx31(CheckedIcon_default, { className: "sb-w-5 sb-h-5" }) : /* @__PURE__ */ jsx31("div", {}) }),
979
- /* @__PURE__ */ jsx31("p", { className: "sb-text-left sb-col-span-9", children: subtitle.label })
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__ */ jsx31(
1062
+ return /* @__PURE__ */ jsx32(
1005
1063
  MenuButton_default,
1006
1064
  {
1007
- buttonContent: /* @__PURE__ */ jsx31(SubtitlesIcon_default, { className: "sb-w-3 sb-h-3" }),
1008
- menuContent: /* @__PURE__ */ jsx31("div", { className: "sb-rounded-md sb-bg-[#303030] sb-bg-opacity-50 sb-py-5 sb-w-[150px]", children: /* @__PURE__ */ jsxs11("div", { className: "sb-flex sb-flex-col sb-gap-3", children: [
1009
- /* @__PURE__ */ jsxs11("div", { className: "sb-px-5 sb-flex sb-flex-row sb-gap-3 sb-items-start", children: [
1010
- /* @__PURE__ */ jsx31(
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__ */ jsx31(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
1077
+ children: /* @__PURE__ */ jsx32(LeftArrowIcon_default, { className: "sb-w-3 sb-h-3" })
1020
1078
  }
1021
1079
  ),
1022
- /* @__PURE__ */ jsx31("h3", { children: "Subtitle" })
1080
+ /* @__PURE__ */ jsx32("h3", { children: "Subtitle" })
1023
1081
  ] }),
1024
- /* @__PURE__ */ jsx31("div", { className: "sb-w-full sb-h-[.1px] sb-bg-[#AAAAAA] sb-bg-opacity-70" }),
1025
- /* @__PURE__ */ jsx31("div", { className: "sb-px-5 sb-flex sb-flex-col sb-gap-3 sb-items-start", children: subtitles.map((q, i) => {
1026
- return /* @__PURE__ */ jsx31(
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 jsx32, jsxs as jsxs12 } from "react/jsx-runtime";
1106
+ import { jsx as jsx33, jsxs as jsxs13 } from "react/jsx-runtime";
1049
1107
  var ControlBar = ({
1050
1108
  player,
1051
1109
  isPaused,
@@ -1054,14 +1112,29 @@ 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
  };
1064
- const togglePlay = () => {
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);
1136
+ const togglePlay = (e) => {
1137
+ e.stopPropagation();
1065
1138
  if (isPaused) player == null ? void 0 : player.play();
1066
1139
  else player == null ? void 0 : player.pause();
1067
1140
  setIsPaused(!isPaused);
@@ -1072,34 +1145,34 @@ var ControlBar = ({
1072
1145
  useEffect13(() => {
1073
1146
  setDuration(duration);
1074
1147
  }, [duration]);
1075
- return /* @__PURE__ */ jsxs12("div", { className: "sb-flex sb-items-center sb-justify-center sb-gap-3 sb-w-full", children: [
1076
- /* @__PURE__ */ jsx32(BufferTracker_default, {}),
1077
- /* @__PURE__ */ jsx32(CurrentTimeTracker_default, {}),
1078
- /* @__PURE__ */ jsx32(
1148
+ 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: [
1149
+ /* @__PURE__ */ jsx33(BufferTracker_default, {}),
1150
+ /* @__PURE__ */ jsx33(CurrentTimeTracker_default, {}),
1151
+ /* @__PURE__ */ jsx33(
1079
1152
  "button",
1080
1153
  {
1081
1154
  onClick: () => {
1082
1155
  seek(-seekStep);
1083
1156
  },
1084
- children: /* @__PURE__ */ jsx32(BackwardIcon_default, { className: "sb-w-3 sb-h-3" })
1157
+ children: /* @__PURE__ */ jsx33(BackwardIcon_default, { className: "sb-w-3 sb-h-3" })
1085
1158
  }
1086
1159
  ),
1087
- /* @__PURE__ */ jsx32("button", { onClick: togglePlay, children: isPaused ? /* @__PURE__ */ jsx32(PlayIcon_default, { className: "sb-w-3 sb-h-3" }) : /* @__PURE__ */ jsx32(PauseIcon_default, { className: "sb-w-3 sb-h-3" }) }),
1088
- /* @__PURE__ */ jsx32(
1160
+ /* @__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" }) }),
1161
+ /* @__PURE__ */ jsx33(
1089
1162
  "button",
1090
1163
  {
1091
1164
  onClick: () => {
1092
1165
  seek(seekStep);
1093
1166
  },
1094
- children: /* @__PURE__ */ jsx32(ForwardIcon_default, { className: "sb-w-3 sb-h-3" })
1167
+ children: /* @__PURE__ */ jsx33(ForwardIcon_default, { className: "sb-w-3 sb-h-3" })
1095
1168
  }
1096
1169
  ),
1097
- /* @__PURE__ */ jsx32(CurrentTimeLabel_default, {}),
1098
- /* @__PURE__ */ jsx32("div", { className: "sb-w-[30%] hover:sb-w-[45%] sb-transition-all sb-ease-in-out sb-duration-500", children: /* @__PURE__ */ jsx32(TimeSliderContainer_default, { chapters, notes }) }),
1099
- /* @__PURE__ */ jsx32("p", { children: durationFormater(duration) }),
1100
- /* @__PURE__ */ jsx32("div", { className: "sb-w-[10%]", children: /* @__PURE__ */ jsx32(VolumeSlider_default, {}) }),
1101
- /* @__PURE__ */ jsx32(QualityMenu_default, {}),
1102
- /* @__PURE__ */ jsx32(
1170
+ /* @__PURE__ */ jsx33(CurrentTimeLabel_default, {}),
1171
+ /* @__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 }) }),
1172
+ /* @__PURE__ */ jsx33("p", { children: durationFormater(duration) }),
1173
+ /* @__PURE__ */ jsx33("div", { className: "sb-h-full", children: /* @__PURE__ */ jsx33(VolumeSlider_default, { width }) }),
1174
+ /* @__PURE__ */ jsx33(QualityMenu_default, {}),
1175
+ /* @__PURE__ */ jsx33(
1103
1176
  "button",
1104
1177
  {
1105
1178
  onClick: () => {
@@ -1109,29 +1182,36 @@ var ControlBar = ({
1109
1182
  player == null ? void 0 : player.requestFullscreen();
1110
1183
  }
1111
1184
  },
1112
- children: /* @__PURE__ */ jsx32(FullScreenIcon_default, { className: "sb-w-3 sb-h-3" })
1185
+ children: /* @__PURE__ */ jsx33(FullScreenIcon_default, { className: "sb-w-3 sb-h-3" })
1113
1186
  }
1114
1187
  ),
1115
- handleSaveNoteAction && /* @__PURE__ */ jsx32(CreateNoteMenu_default, { handleSaveNoteAction }),
1116
- /* @__PURE__ */ jsx32(SubtitleMenu_default, {})
1188
+ handleSaveNoteAction && /* @__PURE__ */ jsx33(CreateNoteMenu_default, { handleSaveNoteAction }),
1189
+ /* @__PURE__ */ jsx33(SubtitleMenu_default, {})
1117
1190
  ] });
1118
1191
  };
1119
1192
  var ControlBar_default = ControlBar;
1120
1193
 
1121
1194
  // src/components/BigPlayButton/index.tsx
1122
- import { jsx as jsx33 } from "react/jsx-runtime";
1195
+ import { jsx as jsx34 } from "react/jsx-runtime";
1123
1196
  var BigPlayButton = ({ player, isPaused, setIsPaused }) => {
1124
1197
  const togglePlay = () => {
1125
1198
  if (isPaused) player == null ? void 0 : player.play();
1126
1199
  else player == null ? void 0 : player.pause();
1127
1200
  setIsPaused(!isPaused);
1128
1201
  };
1129
- return /* @__PURE__ */ jsx33("button", { onClick: togglePlay, children: /* @__PURE__ */ jsx33("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__ */ jsx33(PlayIcon_default, { className: "sb-w-4 sb-h-4" }) : /* @__PURE__ */ jsx33(PauseIcon_default, { className: "sb-w-4 sb-h-4" }) }) });
1202
+ return /* @__PURE__ */ jsx34(
1203
+ "div",
1204
+ {
1205
+ onClick: togglePlay,
1206
+ 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 ",
1207
+ children: isPaused ? /* @__PURE__ */ jsx34(PlayIcon_default, { className: "sb-w-4 sb-h-4" }) : /* @__PURE__ */ jsx34(PauseIcon_default, { className: "sb-w-4 sb-h-4" })
1208
+ }
1209
+ );
1130
1210
  };
1131
1211
  var BigPlayButton_default = BigPlayButton;
1132
1212
 
1133
1213
  // src/components/VideoPlayerComponent/index.tsx
1134
- import { jsx as jsx34 } from "react/jsx-runtime";
1214
+ import { jsx as jsx35 } from "react/jsx-runtime";
1135
1215
  var bigPlayButtonRoot = {};
1136
1216
  var renderBigPlayButton = (id, player, isPaused, setIsPaused) => {
1137
1217
  const container = document.getElementById(`video-container-${id}`);
@@ -1142,7 +1222,7 @@ var renderBigPlayButton = (id, player, isPaused, setIsPaused) => {
1142
1222
  bigPlayButtonRoot[id] = ReactDOM.createRoot(element);
1143
1223
  }
1144
1224
  bigPlayButtonRoot[id].render(
1145
- /* @__PURE__ */ jsx34(
1225
+ /* @__PURE__ */ jsx35(
1146
1226
  BigPlayButton_default,
1147
1227
  {
1148
1228
  player,
@@ -1163,11 +1243,14 @@ var renderControlBar = (id, player, isPaused, setIsPaused, duration, notes, chap
1163
1243
  if (!controlBarRoot[id]) {
1164
1244
  controlBarRoot[id] = ReactDOM.createRoot(element);
1165
1245
  }
1166
- element.style.display = "block";
1246
+ element.style.display = "flex";
1247
+ element.style.height = "100%";
1248
+ element.style.alignItems = "flex-end";
1167
1249
  controlBarRoot[id].render(
1168
- /* @__PURE__ */ jsx34(SoftBuildersVideoPlayerProvider, { children: /* @__PURE__ */ jsx34(
1250
+ /* @__PURE__ */ jsx35(SoftBuildersVideoPlayerProvider, { children: /* @__PURE__ */ jsx35(
1169
1251
  ControlBar_default,
1170
1252
  {
1253
+ id,
1171
1254
  player,
1172
1255
  isPaused,
1173
1256
  setIsPaused,
@@ -1189,14 +1272,15 @@ var VideoPlayerComponent = ({
1189
1272
  chapters,
1190
1273
  startTime = 0,
1191
1274
  handleSaveNoteAction,
1275
+ poster,
1192
1276
  onPlay,
1193
1277
  onPause
1194
1278
  }) => {
1195
1279
  const videoRef = useRef2(void 0);
1196
1280
  const playerRef = useRef2(void 0);
1197
- const [isReady, setIsReady] = useState12(false);
1198
- const [isPaused, setIsPaused] = useState12(!options.autoplay);
1199
- const [duration, setDuratoin] = useState12(1);
1281
+ const [isReady, setIsReady] = useState13(false);
1282
+ const [isPaused, setIsPaused] = useState13(!options.autoplay);
1283
+ const [duration, setDuration] = useState13(1);
1200
1284
  const onReady = (player) => {
1201
1285
  if (playerRef) {
1202
1286
  playerRef.current = player;
@@ -1210,7 +1294,7 @@ var VideoPlayerComponent = ({
1210
1294
  });
1211
1295
  player.on("loadedmetadata", () => {
1212
1296
  const d = player.duration() || 0;
1213
- setDuratoin(d);
1297
+ setDuration(d);
1214
1298
  });
1215
1299
  }
1216
1300
  };
@@ -1218,32 +1302,33 @@ var VideoPlayerComponent = ({
1218
1302
  if (!playerRef.current) {
1219
1303
  const videoElement = document.createElement("video-js");
1220
1304
  videoElement.classList.add("vjs-big-play-centered");
1305
+ if (poster) {
1306
+ videoElement.setAttribute("poster", poster);
1307
+ }
1221
1308
  videoRef.current.appendChild(videoElement);
1222
1309
  playerRef.current = videojs(videoElement, options, () => {
1223
1310
  onReady(playerRef.current);
1224
1311
  });
1225
1312
  }
1226
1313
  return () => {
1227
- if (playerRef) {
1228
- if (playerRef.current) {
1229
- playerRef.current.dispose();
1230
- playerRef.current = void 0;
1231
- setTimeout(() => {
1232
- if (bigPlayButtonRoot[id]) {
1233
- bigPlayButtonRoot[id].unmount();
1234
- bigPlayButtonRoot[id] = void 0;
1235
- }
1236
- if (controlBarRoot[id]) {
1237
- controlBarRoot[id].unmount();
1238
- controlBarRoot[id] = void 0;
1239
- }
1240
- }, 0);
1241
- }
1314
+ if (playerRef.current) {
1315
+ playerRef.current.dispose();
1316
+ playerRef.current = void 0;
1317
+ setTimeout(() => {
1318
+ if (bigPlayButtonRoot[id]) {
1319
+ bigPlayButtonRoot[id].unmount();
1320
+ bigPlayButtonRoot[id] = void 0;
1321
+ }
1322
+ if (controlBarRoot[id]) {
1323
+ controlBarRoot[id].unmount();
1324
+ controlBarRoot[id] = void 0;
1325
+ }
1326
+ }, 0);
1242
1327
  }
1243
1328
  };
1244
- }, [options]);
1329
+ }, [options, poster]);
1245
1330
  useEffect14(() => {
1246
- if (playerRef && (playerRef == null ? void 0 : playerRef.current) && isReady) {
1331
+ if (playerRef.current && isReady) {
1247
1332
  const currentTime = playerRef.current.currentTime() || 0;
1248
1333
  if (isPaused) {
1249
1334
  if (onPause) onPause(currentTime);
@@ -1281,7 +1366,7 @@ var VideoPlayerComponent = ({
1281
1366
  duration
1282
1367
  ]);
1283
1368
  useEffect14(() => {
1284
- if (isReady && playerRef) {
1369
+ if (isReady) {
1285
1370
  const playButtonTimeout = setTimeout(() => {
1286
1371
  renderBigPlayButton(id, playerRef.current, isPaused, setIsPaused);
1287
1372
  }, 500);
@@ -1289,28 +1374,49 @@ var VideoPlayerComponent = ({
1289
1374
  }
1290
1375
  }, [id, isPaused, isReady]);
1291
1376
  useEffect14(() => {
1292
- if (playerRef) {
1293
- if (playerRef.current) {
1294
- const intervalId = setInterval(() => {
1295
- if (playerRef.current) setIsPaused(playerRef.current.paused());
1296
- }, 500);
1297
- return () => clearInterval(intervalId);
1298
- }
1377
+ if (playerRef.current) {
1378
+ const intervalId = setInterval(() => {
1379
+ if (playerRef.current) setIsPaused(playerRef.current.paused());
1380
+ }, 500);
1381
+ return () => clearInterval(intervalId);
1299
1382
  }
1300
1383
  }, []);
1301
- return /* @__PURE__ */ jsx34(
1384
+ const handlePlayerClick = () => {
1385
+ if (playerRef.current) {
1386
+ if (playerRef.current.paused()) {
1387
+ playerRef.current.play();
1388
+ setIsPaused(false);
1389
+ } else {
1390
+ playerRef.current.pause();
1391
+ setIsPaused(true);
1392
+ if (onPause) onPause(playerRef.current.currentTime());
1393
+ }
1394
+ }
1395
+ };
1396
+ return /* @__PURE__ */ jsx35(
1302
1397
  "div",
1303
1398
  {
1304
1399
  id: `video-container-${id}`,
1305
- className: "sb-relative sb-rounded-md sb-overflow-hidden",
1306
- children: /* @__PURE__ */ jsx34("div", { "data-vjs-player": true, children: /* @__PURE__ */ jsx34("div", { ref: videoRef }) })
1400
+ className: "sb-relative sb-rounded-md sb-overflow-hidden hover:sb-cursor-pointer",
1401
+ onClick: handlePlayerClick,
1402
+ children: /* @__PURE__ */ jsx35(
1403
+ "div",
1404
+ {
1405
+ "data-vjs-player": true,
1406
+ style: {
1407
+ height: "100%",
1408
+ position: "relative"
1409
+ },
1410
+ children: /* @__PURE__ */ jsx35("div", { ref: videoRef })
1411
+ }
1412
+ )
1307
1413
  }
1308
1414
  );
1309
1415
  };
1310
1416
  var VideoPlayerComponent_default = VideoPlayerComponent;
1311
1417
 
1312
1418
  // src/components/SoftBuildersVideoPlayer/index.tsx
1313
- import { jsx as jsx35 } from "react/jsx-runtime";
1419
+ import { jsx as jsx36 } from "react/jsx-runtime";
1314
1420
  var DEFAULT_OPTIONS = {
1315
1421
  autoplay: false,
1316
1422
  controls: true,
@@ -1345,7 +1451,7 @@ var Component = ({
1345
1451
  if (options.muted === void 0) options.muted = DEFAULT_OPTIONS.muted;
1346
1452
  if (options.height === void 0) options.height = DEFAULT_OPTIONS.height;
1347
1453
  if (options.width === void 0) options.width = DEFAULT_OPTIONS.width;
1348
- const [tracks, setTracks] = useState13([]);
1454
+ const [tracks, setTracks] = useState14([]);
1349
1455
  useEffect15(() => {
1350
1456
  const getTracks = async () => {
1351
1457
  const newTracks = [];
@@ -1364,13 +1470,14 @@ var Component = ({
1364
1470
  getTracks();
1365
1471
  }, [options.tracks]);
1366
1472
  const id = (Date.now() + Math.random() * 100).toString();
1367
- return /* @__PURE__ */ jsx35(
1473
+ return /* @__PURE__ */ jsx36(
1368
1474
  VideoPlayerComponent_default,
1369
1475
  {
1370
1476
  id,
1371
1477
  chapters,
1372
1478
  options: __spreadProps(__spreadValues({}, options), { tracks }),
1373
1479
  notes,
1480
+ poster: "",
1374
1481
  startTime,
1375
1482
  handleSaveNoteAction,
1376
1483
  onPause,