cloudinary-video-player 2.6.0 → 2.6.1-edge.1
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/README.md +14 -16
- package/dist/adaptive-streaming.js +36927 -0
- package/dist/adaptive-streaming.min.js +3 -0
- package/dist/adaptive-streaming.min.js.LICENSE.txt +3 -0
- package/dist/chapters.js +1 -1
- package/dist/chapters.min.js +1 -1
- package/dist/cld-video-player.css +200 -11
- package/dist/cld-video-player.js +37548 -79684
- package/dist/cld-video-player.light.js +197 -662
- package/dist/cld-video-player.light.min.js +4 -3
- package/dist/cld-video-player.min.css +1 -1
- package/dist/cld-video-player.min.js +1 -1
- package/dist/cld-video-player.min.js.LICENSE.txt +16 -14
- package/dist/colors.js +86 -0
- package/dist/colors.min.js +2 -0
- package/dist/dash.js +62 -2
- package/dist/dash.min.js +1 -1
- package/dist/debug.js +140 -90
- package/dist/debug.min.js +1 -1
- package/dist/ima.js +66 -3
- package/dist/ima.min.js +1 -1
- package/dist/interaction-areas.js +87 -4
- package/dist/interaction-areas.min.js +1 -1
- package/dist/playlist.js +9 -9
- package/dist/playlist.min.js +1 -1
- package/dist/recommendations-overlay.js +7 -7
- package/dist/recommendations-overlay.min.js +1 -1
- package/dist/shoppable.js +7 -7
- package/dist/shoppable.min.js +1 -1
- package/dist/srt-text-tracks.js +208 -0
- package/dist/srt-text-tracks.min.js +2 -0
- package/dist/visual-search.js +4 -4
- package/dist/visual-search.min.js +1 -1
- package/lib/adaptive-streaming.js +3 -0
- package/lib/adaptive-streaming.js.LICENSE.txt +3 -0
- package/lib/all.js +1 -1
- package/lib/all.js.LICENSE.txt +18 -12
- package/lib/chapters.js +1 -1
- package/lib/cld-video-player.js +1 -1
- package/lib/cld-video-player.js.LICENSE.txt +16 -14
- package/lib/cld-video-player.min.css +2 -2
- package/lib/colors.js +2 -0
- package/lib/dash.js +1 -1
- package/lib/debug.js +1 -1
- package/lib/ima.js +1 -1
- package/lib/interaction-areas.js +1 -1
- package/lib/player.js +1 -1
- package/lib/player.js.LICENSE.txt +16 -14
- package/lib/playlist.js +1 -1
- package/lib/recommendations-overlay.js +1 -1
- package/lib/shoppable.js +1 -1
- package/lib/srt-text-tracks.js +2 -0
- package/lib/videoPlayer.js +1 -1
- package/lib/videoPlayer.js.LICENSE.txt +16 -14
- package/lib/visual-search.js +1 -1
- package/package.json +10 -23
- package/dist/chapters.light.js +0 -233
- package/dist/chapters.light.min.js +0 -2
- package/dist/cld-video-player.light.css +0 -2428
- package/dist/cld-video-player.light.min.css +0 -2
- package/dist/cld-video-player.light.min.js.LICENSE.txt +0 -21
- package/dist/dash.light.js +0 -70036
- package/dist/dash.light.min.js +0 -3
- package/dist/dash.light.min.js.LICENSE.txt +0 -1842
- package/dist/debug.light.js +0 -383
- package/dist/debug.light.min.js +0 -2
- package/dist/ima.light.js +0 -7110
- package/dist/ima.light.min.js +0 -2
- package/dist/interaction-areas.light.js +0 -646
- package/dist/interaction-areas.light.min.js +0 -2
- package/dist/node_modules_lodash_throttle_js.light.js +0 -449
- package/dist/playlist.light.js +0 -1788
- package/dist/playlist.light.min.js +0 -2
- package/dist/recommendations-overlay.light.js +0 -464
- package/dist/recommendations-overlay.light.min.js +0 -2
- package/dist/shoppable.light.js +0 -853
- package/dist/shoppable.light.min.js +0 -2
- package/dist/visual-search.light.js +0 -317
- package/dist/visual-search.light.min.js +0 -2
- package/lib/light/chapters.js +0 -2
- package/lib/light/cld-video-player.light.min.css +0 -21
- package/lib/light/dash.js +0 -3
- package/lib/light/dash.js.LICENSE.txt +0 -1842
- package/lib/light/debug.js +0 -2
- package/lib/light/ima.js +0 -2
- package/lib/light/index.js +0 -3
- package/lib/light/index.js.LICENSE.txt +0 -21
- package/lib/light/interaction-areas.js +0 -2
- package/lib/light/playlist.js +0 -2
- package/lib/light/recommendations-overlay.js +0 -2
- package/lib/light/shoppable.js +0 -2
- package/lib/light/visual-search.js +0 -2
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || []).push([["srt-text-tracks"],{
|
|
3
|
+
|
|
4
|
+
/***/ "./plugins/srt-text-tracks/srt-text-tracks.js":
|
|
5
|
+
/*!****************************************************!*\
|
|
6
|
+
!*** ./plugins/srt-text-tracks/srt-text-tracks.js ***!
|
|
7
|
+
\****************************************************/
|
|
8
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
9
|
+
|
|
10
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
13
|
+
/* harmony export */ });
|
|
14
|
+
/* harmony import */ var srt_parser_2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! srt-parser-2 */ "../node_modules/srt-parser-2/dist/index.js");
|
|
15
|
+
|
|
16
|
+
function srtTextTracks(config, player) {
|
|
17
|
+
// Load the SRT file and convert it to WebVTT
|
|
18
|
+
const initSRT = async () => {
|
|
19
|
+
let srtResponse;
|
|
20
|
+
if (config.src) {
|
|
21
|
+
try {
|
|
22
|
+
srtResponse = await fetch(config.src);
|
|
23
|
+
if (!srtResponse.ok) {
|
|
24
|
+
throw new Error(`Failed fetching from ${config.src} with status code ${srtResponse.status}`);
|
|
25
|
+
}
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error(error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (!srtResponse.ok) return;
|
|
31
|
+
const srtData = await srtResponse.text();
|
|
32
|
+
const webvttCues = srt2webvtt(srtData); // Get the array of cues
|
|
33
|
+
|
|
34
|
+
const srtTrack = player.addRemoteTextTrack({
|
|
35
|
+
kind: config.kind || 'subtitles',
|
|
36
|
+
label: config.label || 'Subtitles',
|
|
37
|
+
srclang: config.srclang,
|
|
38
|
+
default: config.default,
|
|
39
|
+
mode: config.default ? 'showing' : 'disabled'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Add the WebVTT data to the track
|
|
43
|
+
webvttCues.forEach(cue => {
|
|
44
|
+
if (cue) {
|
|
45
|
+
srtTrack.track.addCue(new VTTCue(cue.startTime, cue.endTime, cue.text));
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
player.one('loadedmetadata', () => {
|
|
50
|
+
initSRT();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// SRT parser
|
|
55
|
+
const srt2webvtt = data => {
|
|
56
|
+
const SRTParser = new srt_parser_2__WEBPACK_IMPORTED_MODULE_0__["default"]();
|
|
57
|
+
const cues = SRTParser.fromSrt(data);
|
|
58
|
+
return cues.map(cue => ({
|
|
59
|
+
startTime: cue.startSeconds,
|
|
60
|
+
endTime: cue.endSeconds,
|
|
61
|
+
text: cue.text
|
|
62
|
+
}));
|
|
63
|
+
};
|
|
64
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (srtTextTracks);
|
|
65
|
+
|
|
66
|
+
/***/ }),
|
|
67
|
+
|
|
68
|
+
/***/ "../node_modules/srt-parser-2/dist/index.js":
|
|
69
|
+
/*!**************************************************!*\
|
|
70
|
+
!*** ../node_modules/srt-parser-2/dist/index.js ***!
|
|
71
|
+
\**************************************************/
|
|
72
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
73
|
+
|
|
74
|
+
__webpack_require__.r(__webpack_exports__);
|
|
75
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
76
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
77
|
+
/* harmony export */ });
|
|
78
|
+
class Parser {
|
|
79
|
+
seperator = ",";
|
|
80
|
+
timestampToSeconds(srtTimestamp) {
|
|
81
|
+
const [rest, millisecondsString] = srtTimestamp.split(",");
|
|
82
|
+
const milliseconds = parseInt(millisecondsString);
|
|
83
|
+
const [hours, minutes, seconds] = rest.split(":").map((x) => parseInt(x));
|
|
84
|
+
const result = milliseconds * 0.001 + seconds + 60 * minutes + 3600 * hours;
|
|
85
|
+
// fix odd JS roundings, e.g. timestamp '00:01:20,460' result is 80.46000000000001
|
|
86
|
+
return Math.round(result * 1000) / 1000;
|
|
87
|
+
}
|
|
88
|
+
;
|
|
89
|
+
correctFormat(time) {
|
|
90
|
+
// Fix the format if the format is wrong
|
|
91
|
+
// 00:00:28.9670 Become 00:00:28,967
|
|
92
|
+
// 00:00:28.967 Become 00:00:28,967
|
|
93
|
+
// 00:00:28.96 Become 00:00:28,960
|
|
94
|
+
// 00:00:28.9 Become 00:00:28,900
|
|
95
|
+
// 00:00:28,96 Become 00:00:28,960
|
|
96
|
+
// 00:00:28,9 Become 00:00:28,900
|
|
97
|
+
// 00:00:28,0 Become 00:00:28,000
|
|
98
|
+
// 00:00:28,01 Become 00:00:28,010
|
|
99
|
+
// 0:00:10,500 Become 00:00:10,500
|
|
100
|
+
let str = time.replace(".", ",");
|
|
101
|
+
var hour = null;
|
|
102
|
+
var minute = null;
|
|
103
|
+
var second = null;
|
|
104
|
+
var millisecond = null;
|
|
105
|
+
// Handle millisecond
|
|
106
|
+
var [front, ms] = str.split(",");
|
|
107
|
+
millisecond = this.fixed_str_digit(3, ms);
|
|
108
|
+
// Handle hour
|
|
109
|
+
var [a_hour, a_minute, a_second] = front.split(":");
|
|
110
|
+
hour = this.fixed_str_digit(2, a_hour, false);
|
|
111
|
+
minute = this.fixed_str_digit(2, a_minute, false);
|
|
112
|
+
second = this.fixed_str_digit(2, a_second, false);
|
|
113
|
+
return `${hour}:${minute}:${second},${millisecond}`;
|
|
114
|
+
}
|
|
115
|
+
/*
|
|
116
|
+
// make sure string is 'how_many_digit' long
|
|
117
|
+
// if str is shorter than how_many_digit, pad with 0
|
|
118
|
+
// if str is longer than how_many_digit, slice from the beginning
|
|
119
|
+
// Example:
|
|
120
|
+
|
|
121
|
+
Input: fixed_str_digit(3, '100')
|
|
122
|
+
Output: 100
|
|
123
|
+
Explain: unchanged, because "100" is 3 digit
|
|
124
|
+
|
|
125
|
+
Input: fixed_str_digit(3, '50')
|
|
126
|
+
Output: 500
|
|
127
|
+
Explain: pad end with 0
|
|
128
|
+
|
|
129
|
+
Input: fixed_str_digit(3, '50', false)
|
|
130
|
+
Output: 050
|
|
131
|
+
Explain: pad start with 0
|
|
132
|
+
|
|
133
|
+
Input: fixed_str_digit(3, '7771')
|
|
134
|
+
Output: 777
|
|
135
|
+
Explain: slice from beginning
|
|
136
|
+
*/
|
|
137
|
+
fixed_str_digit(how_many_digit, str, padEnd = true) {
|
|
138
|
+
if (str.length == how_many_digit) {
|
|
139
|
+
return str;
|
|
140
|
+
}
|
|
141
|
+
if (str.length > how_many_digit) {
|
|
142
|
+
return str.slice(0, how_many_digit);
|
|
143
|
+
}
|
|
144
|
+
if (str.length < how_many_digit) {
|
|
145
|
+
if (padEnd) {
|
|
146
|
+
return str.padEnd(how_many_digit, "0");
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return str.padStart(how_many_digit, "0");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
tryComma(data) {
|
|
154
|
+
data = data.replace(/\r/g, "");
|
|
155
|
+
var regex = /(\d+)\n(\d{1,2}:\d{2}:\d{2},\d{1,3}) --> (\d{1,2}:\d{2}:\d{2},\d{1,3})/g;
|
|
156
|
+
let data_array = data.split(regex);
|
|
157
|
+
data_array.shift(); // remove first '' in array
|
|
158
|
+
return data_array;
|
|
159
|
+
}
|
|
160
|
+
tryDot(data) {
|
|
161
|
+
data = data.replace(/\r/g, "");
|
|
162
|
+
var regex = /(\d+)\n(\d{1,2}:\d{2}:\d{2}\.\d{1,3}) --> (\d{1,2}:\d{2}:\d{2}\.\d{1,3})/g;
|
|
163
|
+
let data_array = data.split(regex);
|
|
164
|
+
data_array.shift(); // remove first '' in array
|
|
165
|
+
this.seperator = ".";
|
|
166
|
+
return data_array;
|
|
167
|
+
}
|
|
168
|
+
fromSrt(data) {
|
|
169
|
+
var originalData = data;
|
|
170
|
+
var data_array = this.tryComma(originalData);
|
|
171
|
+
if (data_array.length == 0) {
|
|
172
|
+
data_array = this.tryDot(originalData);
|
|
173
|
+
}
|
|
174
|
+
var items = [];
|
|
175
|
+
for (var i = 0; i < data_array.length; i += 4) {
|
|
176
|
+
const startTime = this.correctFormat(data_array[i + 1].trim());
|
|
177
|
+
const endTime = this.correctFormat(data_array[i + 2].trim());
|
|
178
|
+
var new_line = {
|
|
179
|
+
id: data_array[i].trim(),
|
|
180
|
+
startTime,
|
|
181
|
+
startSeconds: this.timestampToSeconds(startTime),
|
|
182
|
+
endTime,
|
|
183
|
+
endSeconds: this.timestampToSeconds(endTime),
|
|
184
|
+
text: data_array[i + 3].trim(),
|
|
185
|
+
};
|
|
186
|
+
items.push(new_line);
|
|
187
|
+
}
|
|
188
|
+
return items;
|
|
189
|
+
}
|
|
190
|
+
toSrt(data) {
|
|
191
|
+
var res = "";
|
|
192
|
+
const end_of_line = "\r\n";
|
|
193
|
+
for (var i = 0; i < data.length; i++) {
|
|
194
|
+
var s = data[i];
|
|
195
|
+
res += s.id + end_of_line;
|
|
196
|
+
res += s.startTime + " --> " + s.endTime + end_of_line;
|
|
197
|
+
res += s.text.replace("\n", end_of_line) + end_of_line + end_of_line;
|
|
198
|
+
}
|
|
199
|
+
return res;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Parser);
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
/***/ })
|
|
206
|
+
|
|
207
|
+
}]);
|
|
208
|
+
//# sourceMappingURL=srt-text-tracks.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[6],{3565:(t,e,r)=>{r.d(e,{default:()=>d});const i=class{seperator=",";timestampToSeconds(t){const[e,r]=t.split(","),i=parseInt(r),[s,d,a]=e.split(":").map((t=>parseInt(t))),n=.001*i+a+60*d+3600*s;return Math.round(1e3*n)/1e3}correctFormat(t){let e=t.replace(".",",");var r,[i,s]=e.split(",");r=this.fixed_str_digit(3,s);var[d,a,n]=i.split(":");return`${this.fixed_str_digit(2,d,!1)}:${this.fixed_str_digit(2,a,!1)}:${this.fixed_str_digit(2,n,!1)},${r}`}fixed_str_digit(t,e,r=!0){return e.length==t?e:e.length>t?e.slice(0,t):e.length<t?r?e.padEnd(t,"0"):e.padStart(t,"0"):void 0}tryComma(t){let e=(t=t.replace(/\r/g,"")).split(/(\d+)\n(\d{1,2}:\d{2}:\d{2},\d{1,3}) --> (\d{1,2}:\d{2}:\d{2},\d{1,3})/g);return e.shift(),e}tryDot(t){let e=(t=t.replace(/\r/g,"")).split(/(\d+)\n(\d{1,2}:\d{2}:\d{2}\.\d{1,3}) --> (\d{1,2}:\d{2}:\d{2}\.\d{1,3})/g);return e.shift(),this.seperator=".",e}fromSrt(t){var e=t,r=this.tryComma(e);0==r.length&&(r=this.tryDot(e));for(var i=[],s=0;s<r.length;s+=4){const t=this.correctFormat(r[s+1].trim()),e=this.correctFormat(r[s+2].trim());var d={id:r[s].trim(),startTime:t,startSeconds:this.timestampToSeconds(t),endTime:e,endSeconds:this.timestampToSeconds(e),text:r[s+3].trim()};i.push(d)}return i}toSrt(t){var e="";const r="\r\n";for(var i=0;i<t.length;i++){var s=t[i];e+=s.id+r,e+=s.startTime+" --\x3e "+s.endTime+r,e+=s.text.replace("\n",r)+r+r}return e}};const s=t=>(new i).fromSrt(t).map((t=>({startTime:t.startSeconds,endTime:t.endSeconds,text:t.text}))),d=function(t,e){e.one("loadedmetadata",(()=>{(async()=>{let r;if(t.src)try{if(r=await fetch(t.src),!r.ok)throw new Error(`Failed fetching from ${t.src} with status code ${r.status}`)}catch(t){console.error(t)}if(!r.ok)return;const i=await r.text(),d=s(i),a=e.addRemoteTextTrack({kind:t.kind||"subtitles",label:t.label||"Subtitles",srclang:t.srclang,default:t.default,mode:t.default?"showing":"disabled"});d.forEach((t=>{t&&a.track.addCue(new VTTCue(t.startTime,t.endTime,t.text))}))})()}))}}}]);
|
|
2
|
+
//# sourceMappingURL=srt-text-tracks.min.js.map
|
package/dist/visual-search.js
CHANGED
|
@@ -11,7 +11,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11
11
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12
12
|
/* harmony export */ SearchButton: () => (/* binding */ SearchButton)
|
|
13
13
|
/* harmony export */ });
|
|
14
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.
|
|
14
|
+
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
|
|
15
15
|
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
16
16
|
|
|
17
17
|
const SearchButton = onClick => {
|
|
@@ -44,7 +44,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
44
44
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
45
45
|
/* harmony export */ SearchInput: () => (/* binding */ SearchInput)
|
|
46
46
|
/* harmony export */ });
|
|
47
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.
|
|
47
|
+
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
|
|
48
48
|
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
49
49
|
|
|
50
50
|
const SearchInput = (onSearch, onClose) => {
|
|
@@ -108,7 +108,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
108
108
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
109
109
|
/* harmony export */ SearchResults: () => (/* binding */ SearchResults)
|
|
110
110
|
/* harmony export */ });
|
|
111
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.
|
|
111
|
+
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
|
|
112
112
|
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
113
113
|
|
|
114
114
|
const SearchResults = player => {
|
|
@@ -190,7 +190,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
190
190
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
191
191
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
192
192
|
/* harmony export */ });
|
|
193
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.
|
|
193
|
+
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
|
|
194
194
|
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
195
195
|
/* harmony import */ var _components_SearchButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/SearchButton */ "./plugins/visual-search/components/SearchButton.js");
|
|
196
196
|
/* harmony import */ var _components_SearchInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SearchInput */ "./plugins/visual-search/components/SearchInput.js");
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,a,s)=>{s.d(a,{default:()=>l});var t=s(
|
|
1
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,a,s)=>{s.d(a,{default:()=>l});var t=s(6673),r=s.n(t);const l=(e,a)=>{a.addClass("vjs-visual-search");let s=!1;const t=(e=>{const a=()=>{e.$$(".vjs-visual-search-marker").forEach((e=>e.remove())),e.$$(".vjs-visual-search-results-wrapper").forEach((e=>e.remove())),e.removeClass("vjs-visual-search-results-active")};return{displayResults:s=>{a();const t=e.duration(),l=e.controlBar.progressControl.seekBar,n=r().dom.createEl("div",{className:"vjs-visual-search-results-wrapper",role:"presentation"});s.forEach((a=>{const{start_time:s,end_time:l}=a,c=s/t*100,o=(l-s)/t*100,i=`${Math.floor(s/60)}:${Math.floor(s%60).toString().padStart(2,"0")}`,d=r().dom.createEl("div",{className:"vjs-control vjs-visual-search-marker",style:`left: ${c}%; width: ${o}%`,tabIndex:0,role:"button",title:`Search result at ${i}`,ariaLabel:`Search result at ${i}`});n.appendChild(d),d.addEventListener("click",(()=>{e.currentTime(s)})),d.addEventListener("keydown",(a=>{"Enter"!==a.key&&" "!==a.key||(a.preventDefault(),e.currentTime(s))}))})),l.el().appendChild(n),s.length>0&&e.addClass("vjs-visual-search-results-active")},clearMarkers:a}})(a),l=async e=>{const s=a.$(".vjs-visual-search-button");s.classList.add("vjs-waiting");try{const s=a.cloudinary.source(),r=s.publicId(),l=Object.assign({},s.transformation());l.flags=l.flags||[],l.flags.push(`getinfo:search_b64_${btoa(e)}`);const n=s.config().url(`${r}`,{transformation:l}),c=await fetch(n,{method:"GET",headers:{"Content-Type":"application/json"}});if(!c.ok)throw new Error(`Search request failed with status: ${c.status}`);const o=await c.json();t.displayResults(o.timestamps),o&&!a.hasStarted()&&a.play().then((()=>a.pause()))}catch(e){console.error("Error performing visual search:",e)}finally{s.classList.remove("vjs-waiting")}},n=()=>{s=!1,t.clearMarkers(),a.$(".vjs-visual-search-wrapper")?.remove()},c=()=>{n();const e=a.$(".vjs-title-bar");e&&e.classList.remove("vjs-hidden");const c=r().dom.createEl("div",{className:"vjs-visual-search-wrapper"}),o=()=>{s&&(s=!1,c.classList.remove("vjs-visual-search-active"),d.input.value="",d.input.tabIndex=-1,d.closeButton.tabIndex=-1,t.clearMarkers())},i=(e=>{const a=r().dom.createEl("button",{className:"vjs-control vjs-button vjs-visual-search-button",title:"Search video content",ariaLabel:"Search video content"}),s=r().dom.createEl("span",{className:"vjs-icon-search"});a.appendChild(s);const t=r().dom.createEl("span",{className:"vjs-loading-spinner"});return a.appendChild(t),a.addEventListener("click",e),a})((()=>{if(s){const e=d.input.value.trim();e&&l(e)}else s=!0,c.classList.add("vjs-visual-search-active"),d.input.tabIndex=0,d.closeButton.tabIndex=0,d.input.focus()})),d=((e,a)=>{const s=r().dom.createEl("form",{className:"vjs-visual-search-form"}),t=r().dom.createEl("input",{className:"vjs-visual-search-input",type:"text",ariaLabel:"Search input",tabIndex:-1}),l=r().dom.createEl("button",{className:"vjs-control vjs-button vjs-visual-search-close",type:"button",title:"Close search",ariaLabel:"Close search",tabIndex:-1}),n=r().dom.createEl("span",{className:"vjs-icon-close"});return l.appendChild(n),s.appendChild(t),s.appendChild(l),s.addEventListener("submit",(a=>{a.preventDefault();const s=t.value.trim();s&&e(s)})),l.addEventListener("click",(e=>{e.preventDefault(),a&&a()})),{element:s,input:t,closeButton:l}})(l,o);c.appendChild(i),c.appendChild(d.element),e.prepend(c),a.on("keydown",(e=>{"Escape"===e.key&&s&&o()}))};c(),a.visualSearch={createSearchUI:c,clearUI:n}}}}]);
|
|
2
2
|
//# sourceMappingURL=visual-search.min.js.map
|