softbuilders-react-video-player 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }