cloudinary-video-player 2.3.6-edge.7 → 2.4.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/dist/cld-video-player.css +3 -0
- package/dist/cld-video-player.js +4 -4
- package/dist/cld-video-player.light.css +3 -0
- package/dist/cld-video-player.light.js +4 -4
- package/dist/cld-video-player.light.min.css +1 -1
- package/dist/cld-video-player.light.min.js +1 -1
- package/dist/cld-video-player.min.css +1 -1
- package/dist/cld-video-player.min.js +1 -1
- package/dist/visual-search.js +35 -9
- package/dist/visual-search.light.js +35 -9
- package/dist/visual-search.light.min.js +1 -1
- package/dist/visual-search.min.js +1 -1
- package/lib/all.js +1 -1
- package/lib/cld-video-player.js +1 -1
- package/lib/cld-video-player.min.css +1 -1
- package/lib/light/cld-video-player.light.min.css +1 -1
- package/lib/light/index.js +1 -1
- package/lib/light/visual-search.js +1 -1
- package/lib/player.js +1 -1
- package/lib/videoPlayer.js +1 -1
- package/lib/visual-search.js +1 -1
- package/package.json +1 -1
package/dist/visual-search.js
CHANGED
|
@@ -16,8 +16,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
16
16
|
|
|
17
17
|
const SearchButton = onClick => {
|
|
18
18
|
const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
|
|
19
|
-
className: 'vjs-visual-search-button',
|
|
20
|
-
title: 'Search video content'
|
|
19
|
+
className: 'vjs-control vjs-button vjs-visual-search-button',
|
|
20
|
+
title: 'Search video content',
|
|
21
|
+
ariaLabel: 'Search video content'
|
|
21
22
|
});
|
|
22
23
|
const searchIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
|
|
23
24
|
className: 'vjs-icon-search'
|
|
@@ -52,12 +53,16 @@ const SearchInput = (onSearch, onClose) => {
|
|
|
52
53
|
});
|
|
53
54
|
const input = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('input', {
|
|
54
55
|
className: 'vjs-visual-search-input',
|
|
55
|
-
type: 'text'
|
|
56
|
+
type: 'text',
|
|
57
|
+
ariaLabel: 'Search input',
|
|
58
|
+
tabIndex: -1
|
|
56
59
|
});
|
|
57
60
|
const closeButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
|
|
58
|
-
className: 'vjs-visual-search-close',
|
|
61
|
+
className: 'vjs-control vjs-button vjs-visual-search-close',
|
|
59
62
|
type: 'button',
|
|
60
|
-
title: 'Close search'
|
|
63
|
+
title: 'Close search',
|
|
64
|
+
ariaLabel: 'Close search',
|
|
65
|
+
tabIndex: -1
|
|
61
66
|
});
|
|
62
67
|
|
|
63
68
|
// Add close icon
|
|
@@ -86,7 +91,8 @@ const SearchInput = (onSearch, onClose) => {
|
|
|
86
91
|
});
|
|
87
92
|
return {
|
|
88
93
|
element: form,
|
|
89
|
-
input
|
|
94
|
+
input,
|
|
95
|
+
closeButton
|
|
90
96
|
};
|
|
91
97
|
};
|
|
92
98
|
|
|
@@ -121,7 +127,8 @@ const SearchResults = player => {
|
|
|
121
127
|
|
|
122
128
|
// Create wrapper for search results
|
|
123
129
|
const wrapperEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
|
|
124
|
-
className: 'vjs-visual-search-results-wrapper'
|
|
130
|
+
className: 'vjs-visual-search-results-wrapper',
|
|
131
|
+
role: 'presentation'
|
|
125
132
|
});
|
|
126
133
|
|
|
127
134
|
// Add markers for each result
|
|
@@ -130,9 +137,16 @@ const SearchResults = player => {
|
|
|
130
137
|
start_time,
|
|
131
138
|
end_time
|
|
132
139
|
} = result;
|
|
140
|
+
const position = start_time / total * 100;
|
|
141
|
+
const width = (end_time - start_time) / total * 100;
|
|
142
|
+
const time = `${Math.floor(start_time / 60)}:${Math.floor(start_time % 60).toString().padStart(2, '0')}`;
|
|
133
143
|
const markerEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
|
|
134
|
-
className: 'vjs-visual-search-marker',
|
|
135
|
-
style: `left: ${
|
|
144
|
+
className: 'vjs-control vjs-visual-search-marker',
|
|
145
|
+
style: `left: ${position}%; width: ${width}%`,
|
|
146
|
+
tabIndex: 0,
|
|
147
|
+
role: 'button',
|
|
148
|
+
title: `Search result at ${time}`,
|
|
149
|
+
ariaLabel: `Search result at ${time}`
|
|
136
150
|
});
|
|
137
151
|
wrapperEl.appendChild(markerEl);
|
|
138
152
|
|
|
@@ -140,6 +154,14 @@ const SearchResults = player => {
|
|
|
140
154
|
markerEl.addEventListener('click', () => {
|
|
141
155
|
player.currentTime(start_time);
|
|
142
156
|
});
|
|
157
|
+
|
|
158
|
+
// Add keyboard support
|
|
159
|
+
markerEl.addEventListener('keydown', e => {
|
|
160
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
161
|
+
e.preventDefault();
|
|
162
|
+
player.currentTime(start_time);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
143
165
|
});
|
|
144
166
|
|
|
145
167
|
// Add wrapper to seek bar
|
|
@@ -236,6 +258,8 @@ const visualSearch = (options, player) => {
|
|
|
236
258
|
if (!isSearchActive) {
|
|
237
259
|
isSearchActive = true;
|
|
238
260
|
searchContainer.classList.add('vjs-visual-search-active');
|
|
261
|
+
searchInput.input.tabIndex = 0;
|
|
262
|
+
searchInput.closeButton.tabIndex = 0;
|
|
239
263
|
searchInput.input.focus();
|
|
240
264
|
} else {
|
|
241
265
|
const query = searchInput.input.value.trim();
|
|
@@ -249,6 +273,8 @@ const visualSearch = (options, player) => {
|
|
|
249
273
|
isSearchActive = false;
|
|
250
274
|
searchContainer.classList.remove('vjs-visual-search-active');
|
|
251
275
|
searchInput.input.value = '';
|
|
276
|
+
searchInput.input.tabIndex = -1;
|
|
277
|
+
searchInput.closeButton.tabIndex = -1;
|
|
252
278
|
searchResults.clearMarkers();
|
|
253
279
|
}
|
|
254
280
|
};
|
|
@@ -16,8 +16,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
16
16
|
|
|
17
17
|
const SearchButton = onClick => {
|
|
18
18
|
const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
|
|
19
|
-
className: 'vjs-visual-search-button',
|
|
20
|
-
title: 'Search video content'
|
|
19
|
+
className: 'vjs-control vjs-button vjs-visual-search-button',
|
|
20
|
+
title: 'Search video content',
|
|
21
|
+
ariaLabel: 'Search video content'
|
|
21
22
|
});
|
|
22
23
|
const searchIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
|
|
23
24
|
className: 'vjs-icon-search'
|
|
@@ -52,12 +53,16 @@ const SearchInput = (onSearch, onClose) => {
|
|
|
52
53
|
});
|
|
53
54
|
const input = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('input', {
|
|
54
55
|
className: 'vjs-visual-search-input',
|
|
55
|
-
type: 'text'
|
|
56
|
+
type: 'text',
|
|
57
|
+
ariaLabel: 'Search input',
|
|
58
|
+
tabIndex: -1
|
|
56
59
|
});
|
|
57
60
|
const closeButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
|
|
58
|
-
className: 'vjs-visual-search-close',
|
|
61
|
+
className: 'vjs-control vjs-button vjs-visual-search-close',
|
|
59
62
|
type: 'button',
|
|
60
|
-
title: 'Close search'
|
|
63
|
+
title: 'Close search',
|
|
64
|
+
ariaLabel: 'Close search',
|
|
65
|
+
tabIndex: -1
|
|
61
66
|
});
|
|
62
67
|
|
|
63
68
|
// Add close icon
|
|
@@ -86,7 +91,8 @@ const SearchInput = (onSearch, onClose) => {
|
|
|
86
91
|
});
|
|
87
92
|
return {
|
|
88
93
|
element: form,
|
|
89
|
-
input
|
|
94
|
+
input,
|
|
95
|
+
closeButton
|
|
90
96
|
};
|
|
91
97
|
};
|
|
92
98
|
|
|
@@ -121,7 +127,8 @@ const SearchResults = player => {
|
|
|
121
127
|
|
|
122
128
|
// Create wrapper for search results
|
|
123
129
|
const wrapperEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
|
|
124
|
-
className: 'vjs-visual-search-results-wrapper'
|
|
130
|
+
className: 'vjs-visual-search-results-wrapper',
|
|
131
|
+
role: 'presentation'
|
|
125
132
|
});
|
|
126
133
|
|
|
127
134
|
// Add markers for each result
|
|
@@ -130,9 +137,16 @@ const SearchResults = player => {
|
|
|
130
137
|
start_time,
|
|
131
138
|
end_time
|
|
132
139
|
} = result;
|
|
140
|
+
const position = start_time / total * 100;
|
|
141
|
+
const width = (end_time - start_time) / total * 100;
|
|
142
|
+
const time = `${Math.floor(start_time / 60)}:${Math.floor(start_time % 60).toString().padStart(2, '0')}`;
|
|
133
143
|
const markerEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
|
|
134
|
-
className: 'vjs-visual-search-marker',
|
|
135
|
-
style: `left: ${
|
|
144
|
+
className: 'vjs-control vjs-visual-search-marker',
|
|
145
|
+
style: `left: ${position}%; width: ${width}%`,
|
|
146
|
+
tabIndex: 0,
|
|
147
|
+
role: 'button',
|
|
148
|
+
title: `Search result at ${time}`,
|
|
149
|
+
ariaLabel: `Search result at ${time}`
|
|
136
150
|
});
|
|
137
151
|
wrapperEl.appendChild(markerEl);
|
|
138
152
|
|
|
@@ -140,6 +154,14 @@ const SearchResults = player => {
|
|
|
140
154
|
markerEl.addEventListener('click', () => {
|
|
141
155
|
player.currentTime(start_time);
|
|
142
156
|
});
|
|
157
|
+
|
|
158
|
+
// Add keyboard support
|
|
159
|
+
markerEl.addEventListener('keydown', e => {
|
|
160
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
161
|
+
e.preventDefault();
|
|
162
|
+
player.currentTime(start_time);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
143
165
|
});
|
|
144
166
|
|
|
145
167
|
// Add wrapper to seek bar
|
|
@@ -236,6 +258,8 @@ const visualSearch = (options, player) => {
|
|
|
236
258
|
if (!isSearchActive) {
|
|
237
259
|
isSearchActive = true;
|
|
238
260
|
searchContainer.classList.add('vjs-visual-search-active');
|
|
261
|
+
searchInput.input.tabIndex = 0;
|
|
262
|
+
searchInput.closeButton.tabIndex = 0;
|
|
239
263
|
searchInput.input.focus();
|
|
240
264
|
} else {
|
|
241
265
|
const query = searchInput.input.value.trim();
|
|
@@ -249,6 +273,8 @@ const visualSearch = (options, player) => {
|
|
|
249
273
|
isSearchActive = false;
|
|
250
274
|
searchContainer.classList.remove('vjs-visual-search-active');
|
|
251
275
|
searchInput.input.value = '';
|
|
276
|
+
searchInput.input.tabIndex = -1;
|
|
277
|
+
searchInput.closeButton.tabIndex = -1;
|
|
252
278
|
searchResults.clearMarkers();
|
|
253
279
|
}
|
|
254
280
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,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.light.min.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,s
|
|
1
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,a,s)=>{s.d(a,{default:()=>l});var t=s(7938),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
|