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.
- package/LICENSE +21 -0
- package/README.md +126 -0
- package/dist/components/BigPlayButton/index.d.ts +9 -0
- package/dist/components/BigPlayButton/index.js +15 -0
- package/dist/components/BigPlayButton/index.js.map +1 -0
- package/dist/components/BufferTracker/index.d.ts +3 -0
- package/dist/components/BufferTracker/index.js +16 -0
- package/dist/components/BufferTracker/index.js.map +1 -0
- package/dist/components/ChapterTooltip/index.d.ts +11 -0
- package/dist/components/ChapterTooltip/index.js +36 -0
- package/dist/components/ChapterTooltip/index.js.map +1 -0
- package/dist/components/ChaptersPanal/index.d.ts +7 -0
- package/dist/components/ChaptersPanal/index.js +19 -0
- package/dist/components/ChaptersPanal/index.js.map +1 -0
- package/dist/components/ControlBar/index.d.ts +15 -0
- package/dist/components/ControlBar/index.js +64 -0
- package/dist/components/ControlBar/index.js.map +1 -0
- package/dist/components/CreateNoteMenu/index.d.ts +6 -0
- package/dist/components/CreateNoteMenu/index.js +29 -0
- package/dist/components/CreateNoteMenu/index.js.map +1 -0
- package/dist/components/CurrentTimeLabel/index.d.ts +4 -0
- package/dist/components/CurrentTimeLabel/index.js +10 -0
- package/dist/components/CurrentTimeLabel/index.js.map +1 -0
- package/dist/components/CurrentTimeTracker/index.d.ts +3 -0
- package/dist/components/CurrentTimeTracker/index.js +15 -0
- package/dist/components/CurrentTimeTracker/index.js.map +1 -0
- package/dist/components/Menu/index.d.ts +6 -0
- package/dist/components/Menu/index.js +11 -0
- package/dist/components/Menu/index.js.map +1 -0
- package/dist/components/MenuButton/index.d.ts +8 -0
- package/dist/components/MenuButton/index.js +31 -0
- package/dist/components/MenuButton/index.js.map +1 -0
- package/dist/components/NoteTooltip/index.d.ts +10 -0
- package/dist/components/NoteTooltip/index.js +24 -0
- package/dist/components/NoteTooltip/index.js.map +1 -0
- package/dist/components/NotesPanal/index.d.ts +7 -0
- package/dist/components/NotesPanal/index.js +17 -0
- package/dist/components/NotesPanal/index.js.map +1 -0
- package/dist/components/QualityMenu/index.d.ts +4 -0
- package/dist/components/QualityMenu/index.js +53 -0
- package/dist/components/QualityMenu/index.js.map +1 -0
- package/dist/components/Slider/index.d.ts +10 -0
- package/dist/components/Slider/index.js +22 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/Slider/style.css +15 -0
- package/dist/components/SoftBuildersVideoPlayer/index.d.ts +13 -0
- package/dist/components/SoftBuildersVideoPlayer/index.js +55 -0
- package/dist/components/SoftBuildersVideoPlayer/index.js.map +1 -0
- package/dist/components/SubtitleMenu/index.d.ts +4 -0
- package/dist/components/SubtitleMenu/index.js +54 -0
- package/dist/components/SubtitleMenu/index.js.map +1 -0
- package/dist/components/TimeSlider/index.d.ts +7 -0
- package/dist/components/TimeSlider/index.js +69 -0
- package/dist/components/TimeSlider/index.js.map +1 -0
- package/dist/components/TimeSliderContainer/index.d.ts +8 -0
- package/dist/components/TimeSliderContainer/index.js +14 -0
- package/dist/components/TimeSliderContainer/index.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +7 -0
- package/dist/components/Tooltip/index.js +8 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/VideoPlayerComponent/index.d.ts +17 -0
- package/dist/components/VideoPlayerComponent/index.js +140 -0
- package/dist/components/VideoPlayerComponent/index.js.map +1 -0
- package/dist/components/VideoPlayerComponent/provider.d.ts +18 -0
- package/dist/components/VideoPlayerComponent/provider.js +36 -0
- package/dist/components/VideoPlayerComponent/provider.js.map +1 -0
- package/dist/components/VideoPlayerComponent/style/style.css +36 -0
- package/dist/components/VolumeSlider/index.d.ts +4 -0
- package/dist/components/VolumeSlider/index.js +28 -0
- package/dist/components/VolumeSlider/index.js.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.js +15 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/tailwind.css +778 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +51 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +37 -0
package/dist/types.d.ts
ADDED
@@ -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 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
@@ -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
|
+
}
|