softbuilders-react-video-player 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +126 -0
  3. package/dist/components/BigPlayButton/index.d.ts +9 -0
  4. package/dist/components/BigPlayButton/index.js +15 -0
  5. package/dist/components/BigPlayButton/index.js.map +1 -0
  6. package/dist/components/BufferTracker/index.d.ts +3 -0
  7. package/dist/components/BufferTracker/index.js +16 -0
  8. package/dist/components/BufferTracker/index.js.map +1 -0
  9. package/dist/components/ChapterTooltip/index.d.ts +11 -0
  10. package/dist/components/ChapterTooltip/index.js +36 -0
  11. package/dist/components/ChapterTooltip/index.js.map +1 -0
  12. package/dist/components/ChaptersPanal/index.d.ts +7 -0
  13. package/dist/components/ChaptersPanal/index.js +19 -0
  14. package/dist/components/ChaptersPanal/index.js.map +1 -0
  15. package/dist/components/ControlBar/index.d.ts +15 -0
  16. package/dist/components/ControlBar/index.js +64 -0
  17. package/dist/components/ControlBar/index.js.map +1 -0
  18. package/dist/components/CreateNoteMenu/index.d.ts +6 -0
  19. package/dist/components/CreateNoteMenu/index.js +29 -0
  20. package/dist/components/CreateNoteMenu/index.js.map +1 -0
  21. package/dist/components/CurrentTimeLabel/index.d.ts +4 -0
  22. package/dist/components/CurrentTimeLabel/index.js +10 -0
  23. package/dist/components/CurrentTimeLabel/index.js.map +1 -0
  24. package/dist/components/CurrentTimeTracker/index.d.ts +3 -0
  25. package/dist/components/CurrentTimeTracker/index.js +15 -0
  26. package/dist/components/CurrentTimeTracker/index.js.map +1 -0
  27. package/dist/components/Menu/index.d.ts +6 -0
  28. package/dist/components/Menu/index.js +11 -0
  29. package/dist/components/Menu/index.js.map +1 -0
  30. package/dist/components/MenuButton/index.d.ts +8 -0
  31. package/dist/components/MenuButton/index.js +31 -0
  32. package/dist/components/MenuButton/index.js.map +1 -0
  33. package/dist/components/NoteTooltip/index.d.ts +10 -0
  34. package/dist/components/NoteTooltip/index.js +24 -0
  35. package/dist/components/NoteTooltip/index.js.map +1 -0
  36. package/dist/components/NotesPanal/index.d.ts +7 -0
  37. package/dist/components/NotesPanal/index.js +17 -0
  38. package/dist/components/NotesPanal/index.js.map +1 -0
  39. package/dist/components/QualityMenu/index.d.ts +4 -0
  40. package/dist/components/QualityMenu/index.js +53 -0
  41. package/dist/components/QualityMenu/index.js.map +1 -0
  42. package/dist/components/Slider/index.d.ts +10 -0
  43. package/dist/components/Slider/index.js +22 -0
  44. package/dist/components/Slider/index.js.map +1 -0
  45. package/dist/components/Slider/style.css +15 -0
  46. package/dist/components/SoftBuildersVideoPlayer/index.d.ts +13 -0
  47. package/dist/components/SoftBuildersVideoPlayer/index.js +55 -0
  48. package/dist/components/SoftBuildersVideoPlayer/index.js.map +1 -0
  49. package/dist/components/SubtitleMenu/index.d.ts +4 -0
  50. package/dist/components/SubtitleMenu/index.js +54 -0
  51. package/dist/components/SubtitleMenu/index.js.map +1 -0
  52. package/dist/components/TimeSlider/index.d.ts +7 -0
  53. package/dist/components/TimeSlider/index.js +69 -0
  54. package/dist/components/TimeSlider/index.js.map +1 -0
  55. package/dist/components/TimeSliderContainer/index.d.ts +8 -0
  56. package/dist/components/TimeSliderContainer/index.js +14 -0
  57. package/dist/components/TimeSliderContainer/index.js.map +1 -0
  58. package/dist/components/Tooltip/index.d.ts +7 -0
  59. package/dist/components/Tooltip/index.js +8 -0
  60. package/dist/components/Tooltip/index.js.map +1 -0
  61. package/dist/components/VideoPlayerComponent/index.d.ts +17 -0
  62. package/dist/components/VideoPlayerComponent/index.js +140 -0
  63. package/dist/components/VideoPlayerComponent/index.js.map +1 -0
  64. package/dist/components/VideoPlayerComponent/provider.d.ts +18 -0
  65. package/dist/components/VideoPlayerComponent/provider.js +36 -0
  66. package/dist/components/VideoPlayerComponent/provider.js.map +1 -0
  67. package/dist/components/VideoPlayerComponent/style/style.css +36 -0
  68. package/dist/components/VolumeSlider/index.d.ts +4 -0
  69. package/dist/components/VolumeSlider/index.js +28 -0
  70. package/dist/components/VolumeSlider/index.js.map +1 -0
  71. package/dist/icons/index.d.ts +14 -0
  72. package/dist/icons/index.js +15 -0
  73. package/dist/icons/index.js.map +1 -0
  74. package/dist/index.d.ts +3 -0
  75. package/dist/index.js +3 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/styles/tailwind.css +778 -0
  78. package/dist/types.d.ts +33 -0
  79. package/dist/types.js +2 -0
  80. package/dist/types.js.map +1 -0
  81. package/dist/utils/index.d.ts +2 -0
  82. package/dist/utils/index.js +51 -0
  83. package/dist/utils/index.js.map +1 -0
  84. package/package.json +37 -0
@@ -0,0 +1,33 @@
1
+ export type SoftBuildersVideoPlayerSource = {
2
+ src: string;
3
+ type?: string;
4
+ label: string;
5
+ };
6
+ export type SoftBuildersVideoPlayerTrack = {
7
+ kind: "captions";
8
+ src: string;
9
+ srclang: string;
10
+ label: string;
11
+ memeType: "text/vtt" | "text/srt";
12
+ default?: boolean;
13
+ };
14
+ export type SoftBuildersVideoPlayerOptions = {
15
+ autoplay?: boolean;
16
+ controls?: boolean;
17
+ fluid?: boolean;
18
+ muted?: boolean;
19
+ poster?: string;
20
+ sources: SoftBuildersVideoPlayerSource[];
21
+ tracks: SoftBuildersVideoPlayerTrack[];
22
+ width?: number;
23
+ height?: number;
24
+ };
25
+ export interface SoftBuildersVideoPlayerNote {
26
+ time: number;
27
+ label: string;
28
+ }
29
+ export interface SoftBuildersVideoPlayerChapter {
30
+ startTime: number;
31
+ endTime: number;
32
+ title: string;
33
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const durationFormater: (seconds: number) => string;
2
+ export declare const convertSRTtoVTT: (srtLink: string) => Promise<string>;
@@ -0,0 +1,51 @@
1
+ export const durationFormater = (seconds) => {
2
+ seconds = Math.floor(seconds);
3
+ const hours = Math.floor(seconds / 3600);
4
+ const minutes = Math.floor((seconds % 3600) / 60);
5
+ const secs = seconds % 60;
6
+ if (hours > 0) {
7
+ return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
8
+ }
9
+ else {
10
+ return `${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
11
+ }
12
+ };
13
+ const SRTtoVTT = (srt) => {
14
+ // Normalize line breaks and split into lines
15
+ const lines = srt.split(/\r?\n/).filter((line) => line.trim() !== "");
16
+ // Prepare VTT content
17
+ let vttContent = "WEBVTT\n\n";
18
+ let currentEntry = "";
19
+ lines.forEach((line) => {
20
+ if (/^\d+$/.test(line)) {
21
+ // Ignore index lines
22
+ return;
23
+ }
24
+ const timestampMatch = line.match(/(\d{2}:\d{2}:\d{2}),(\d{3}) --> (\d{2}:\d{2}:\d{2}),(\d{3})/);
25
+ if (timestampMatch) {
26
+ if (currentEntry) {
27
+ vttContent += currentEntry.trim() + "\n\n"; // Add previous entry
28
+ }
29
+ // Replace commas with dots in timestamps and concatenate the groups
30
+ currentEntry = `${timestampMatch[1]}.${timestampMatch[2]} --> ${timestampMatch[3]}.${timestampMatch[4]}\n`;
31
+ }
32
+ else if (currentEntry) {
33
+ // Add subtitle line to the current entry
34
+ currentEntry += line + "\n";
35
+ }
36
+ });
37
+ if (currentEntry) {
38
+ vttContent += currentEntry.trim(); // Add last entry
39
+ }
40
+ return vttContent.trim();
41
+ };
42
+ export const convertSRTtoVTT = async (srtLink) => {
43
+ const response = await fetch(srtLink);
44
+ const srtText = await response.text();
45
+ const vttText = SRTtoVTT(srtText);
46
+ // Create a Blob URL for the VTT
47
+ const blob = new Blob([vttText], { type: "text/vtt" });
48
+ const vttUrl = URL.createObjectURL(blob);
49
+ return vttUrl;
50
+ };
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "softbuilders-react-video-player",
3
+ "description": "Standalone video player component",
4
+ "version": "1.0.0",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "dist/styles/tailwind.css"
10
+ ],
11
+ "scripts": {
12
+ "build:css": "npx postcss src/styles/tailwind.css -o dist/styles/tailwind.css && npx postcss src/components/Slider/style.css -o dist/components/Slider/style.css && npx postcss src/components/VideoPlayerComponent/style/style.css -o dist/components/VideoPlayerComponent/style/style.css",
13
+ "build:css:watch": "npx postcss src/styles/tailwind.css -o dist/styles/tailwind.css --watch && npx postcss src/components/Slider/style.css -o dist/components/Slider/style.css --watch && npx postcss src/components/VideoPlayerComponent/style/style.css -o dist/components/VideoPlayerComponent/style/style.css --watch",
14
+ "build": "npm run build:css && tsc",
15
+ "build:watch": "tsc --watch",
16
+ "start": "concurrently \"npm run build:css:watch\" \"npm run build:watch\""
17
+ },
18
+ "keywords": [],
19
+ "author": "",
20
+ "license": "ISC",
21
+ "peerDependencies": {
22
+ "react": "^18.3.1",
23
+ "react-dom": "^18.3.1",
24
+ "video.js": "^8.18.0"
25
+ },
26
+ "devDependencies": {
27
+ "@svgr/webpack": "^8.1.0",
28
+ "@types/react": "^18.3.5",
29
+ "@types/react-dom": "^18.3.0",
30
+ "autoprefixer": "^10.4.20",
31
+ "concurrently": "^9.0.1",
32
+ "postcss": "^8.4.45",
33
+ "postcss-cli": "^11.0.0",
34
+ "tailwindcss": "^3.4.11",
35
+ "typescript": "^5.6.2"
36
+ }
37
+ }