1/** 2 * Copyright (c) 2023 The Nuevodevel Team. All rights reserved. 3 * VTT Thumbnails plugin for video.js 4 * Version 2.7.0 5 */ 6/* eslint-disable */ import videojs from 'video.js'; 7const defaults = { 8 align: 'vertical', 9 timeTooltip: !0, 10 width: 160, 11 height: 90, 12 basePath: '', 13 src: '', 14 responsive: !1, 15 mediaqueries: { tiny: 0.5, small: 0.75, medium: 1, large: 1.25, xlarge: 1.5 }, 16 }, 17 onPlayerReady = (e, t) => { 18 defaults.basePath = ''; 19 var i, s, r, o, n, a, d, l, h, u, c, v, f, m; 20 if (t) { 21 if (t.basePath) defaults.basePath = t.basePath; 22 if (t.width && t.height) { 23 defaults.width = t.width; 24 defaults.height = t.height; 25 } 26 if (t.src) 27 e.on('ready', function () { 28 e.trigger('medialoaded', { xml: t.src }); 29 }); 30 } 31 r = t; 32 function p(e) { 33 var t, i, s; 34 if (-1 === (i = e.indexOf('#'))) return { src: e, w: 0, h: 0, x: 0, y: 0 }; 35 t = e.substring(0, i); 36 if ('xywh=' !== (s = e.substring(i + 1)).substring(0, 5)) 37 return { src: defaults.basePath + t, w: 0, h: 0, x: 0, y: 0 }; 38 var r = s.substring(5).split(','); 39 return { 40 src: defaults.basePath + t, 41 w: parseInt(r[2], 10), 42 h: parseInt(r[3], 10), 43 x: parseInt(r[0], 10), 44 y: parseInt(r[1], 10), 45 }; 46 } 47 function g(e) { 48 const t = e.split('.'), 49 i = t[0].split(':'); 50 return { 51 milliseconds: parseInt(t[1], 10) || 0, 52 seconds: parseInt(i.pop(), 10) || 0, 53 minutes: parseInt(i.pop(), 10) || 0, 54 hours: parseInt(i.pop(), 10) || 0, 55 }; 56 } 57 function y(e) { 58 const t = g(e); 59 return parseInt(3600 * t.hours + 60 * t.minutes + t.seconds + t.milliseconds / 1e3, 10); 60 } 61 function w(e) { 62 fetch(e) 63 .then((e) => e.text()) 64 .then((e) => { 65 if (e.length > 0) { 66 var t = j(e); 67 if (t.length > 0) { 68 m = t; 69 b(); 70 } 71 } 72 }); 73 } 74 function j(e) { 75 var t = []; 76 e.split(/[\r\n][\r\n]/i).forEach(function (e) { 77 if ( 78 e.match( 79 /([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3})?( ?--> ?)([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3})?[\r\n]{1}.*/gi 80 ) 81 ) { 82 const i = e.split(/[\r\n]/i), 83 s = i[0].split(/ ?--> ?/i), 84 r = s[0], 85 o = s[1], 86 n = i[1]; 87 t.push({ startTime: y(r), endTime: y(o), text: n }); 88 } 89 }); 90 return t; 91 } 92 e.on('medialoaded', function (t, s) { 93 m = []; 94 d = e.controlBar.progressControl; 95 (l = e.el_.querySelector('.vjs-progress-holder')).removeEventListener('touchstart', _); 96 l.removeEventListener('mousemove', u); 97 l.removeEventListener('mouseleave', v); 98 l.removeEventListener('mousedown', S); 99 e.sprite = !1; 100 var r = document.querySelector('.vtt_canvas'); 101 if (r) r.parentNode.removeChild(r); 102 var o = e.el_.querySelector('.vjs-thumb-tooltip'); 103 if (o) o.parentNode.removeChild(o); 104 var n = document.querySelector('.vjs-thumb-image'); 105 if (n) n.parentNode.removeChild(n); 106 var a = e.el_.querySelector('.vjs-thumbnail-holder'); 107 if (a) a.parentNode.removeChild(a); 108 if (s && s.xml) w(s.xml); 109 else { 110 d = e.controlBar.progressControl; 111 l = e.el_.querySelector('.vjs-progress-holder'); 112 var h = e.textTracks().length; 113 if (0 === h) { 114 if (i) videojs.dom.addClass('div', 'vjs-hidden'); 115 return; 116 } 117 for (var c = !1, p = 0; p < h; ) { 118 if ('metadata' === e.textTracks()[p].kind) { 119 if (void 0 === (f = e.textTracks()[p]).src) return; 120 if (f.src) { 121 w(f.src); 122 return; 123 } 124 f.mode = 'hidden'; 125 c = !0; 126 (f = e.textTracks()[p]).mode = 'showing'; 127 if (null == f.cues) { 128 f.mode = 'hidden'; 129 return; 130 } 131 var g = f && f.cues.length; 132 break; 133 } 134 p++; 135 } 136 if (!0 !== c) { 137 if (i) videojs.dom.addClass('div', 'vjs-hidden'); 138 return; 139 } 140 if ((g = (f = e.textTracks()[p]) && f.cues.length) < 1) return; 141 p = 0; 142 e.sprite = !0; 143 for (; p < g; ) p++; 144 m = f && f.cues; 145 b(); 146 } 147 }); 148 function b() { 149 (i = document.createElement('div')).className = 'vjs-thumbnail-holder'; 150 (o = document.createElement('canvas')).className = 'vtt_canvas'; 151 o.style.position = 'absolute'; 152 o.style.left = '0'; 153 o.style.top = '0'; 154 i.appendChild(o); 155 (c = document.createElement('div')).className = 'vjs-thumb-tooltip'; 156 (s = document.createElement('img')).className = 'vjs-thumb-image'; 157 s.style.visibility = 'hidden'; 158 s.style.left = '-500px'; 159 s.style.top = '-500px'; 160 document.body.appendChild(s); 161 i.appendChild(c); 162 var t = p(m[0].text), 163 r = new Image(); 164 if (t.src) r.src = t.src; 165 d.el().appendChild(i); 166 if (e.shadowSlide) { 167 if (!e.el_.querySelector('.vjs-thumb-poster')) { 168 (a = document.createElement('div')).className = 'vjs-thumb-poster'; 169 n = document.createElement('canvas'); 170 a.appendChild(n); 171 e.el_.insertBefore(a, e.el_.querySelector('.vjs-poster')); 172 } 173 } 174 h = e.duration(); 175 e.on('durationchange', function (t) { 176 h = e.duration(); 177 }); 178 e.on('loadedmetadata', function (t) { 179 h = e.duration(); 180 }); 181 var f = d.el_.querySelector('.vjs-play-progress').querySelector('.vjs-time-tooltip'); 182 if (f) videojs.dom.addClass(f, 'vjs-abs-hidden'); 183 var g = d.el().querySelector('.vjs-mouse-display'); 184 if (g) g.style.opacity = 0; 185 var y = !1, 186 w = Object.defineProperty({}, 'passive', { 187 get: function () { 188 y = !0; 189 return !0; 190 }, 191 }); 192 window.addEventListener('testPassive', null, w); 193 window.removeEventListener('testPassive', null, w); 194 l.addEventListener('mousemove', u); 195 l.addEventListener('mouseleave', v); 196 l.addEventListener('mousedown', S); 197 l.addEventListener('touchstart', _, y ? { passive: !1 } : !1); 198 } 199 function x(e, t) { 200 e = e < 0 ? 0 : e; 201 let i = Math.floor(e % 60), 202 s = Math.floor((e / 60) % 60), 203 r = Math.floor(e / 3600); 204 const o = Math.floor((t / 60) % 60), 205 n = Math.floor(t / 3600); 206 if (isNaN(e) || e === 1 / 0) r = s = i = '-'; 207 return ( 208 (r = r > 0 || n > 0 ? r + ':' : '') + 209 (s = ((r || o >= 10) && s < 10 ? '0' + s : s) + ':') + 210 (i = i < 10 ? '0' + i : i) 211 ); 212 } 213 function E() { 214 L(!1); 215 i.classList.remove('vjs-thumb-show'); 216 if (e.shadowSlide) { 217 a.removeAttribute('style'); 218 n.width = 0; 219 n.height = 0; 220 } 221 } 222 v = function (e) { 223 L(!1); 224 if (!0 !== videojs.holderdown) i.classList.remove('vjs-thumb-show'); 225 }; 226 function L(e) { 227 if (e) d.el().setAttribute('style', 'z-index:22'); 228 else d.el().removeAttribute('style'); 229 } 230 function q() { 231 videojs.holderdown = !1; 232 document.removeEventListener('mousemove', u); 233 document.removeEventListener('mouseup', q); 234 E(); 235 } 236 function S(e) { 237 L(!0); 238 videojs.holderdown = !0; 239 document.addEventListener('mousemove', u); 240 document.addEventListener('mouseup', q); 241 u(e); 242 } 243 function C() { 244 l.removeEventListener('touchmove', u); 245 l.removeEventListener('touchend', C); 246 E(); 247 } 248 function _(e) { 249 videojs.holderdown = !1; 250 u(e); 251 l.addEventListener('touchmove', u); 252 l.addEventListener('touchend', C); 253 } 254 o = null; 255 u = function (t) { 256 L(!0); 257 t.preventDefault(); 258 h = e.duration(); 259 var l = d.el().querySelector('.vjs-progress-holder'), 260 u = d.el().querySelector('.vjs-play-progress'), 261 c = l.getBoundingClientRect(), 262 v = null; 263 if (t.pageX) v = t.pageX; 264 else if (t.changedTouches) v = t.changedTouches[0].pageX || t.touches[0].clientX; 265 var f = v - c.left; 266 if (0 === f && videojs.holderdown && u.offsetWidth > 0); 267 if (f < 0) f = 0; 268 if (f > l.offsetWidth) f = l.offsetWidth; 269 if (r.timeTooltip) { 270 var g = (f / l.offsetWidth) * h, 271 y = i.querySelector('.vjs-thumb-tooltip'); 272 if (y) y.innerHTML = x(g, h); 273 } 274 for (var w = m.length, j = 0, b = !1; j < w; ) { 275 var E = m[j]; 276 if (E.startTime <= g && E.endTime >= g) { 277 b = !0; 278 var q = p(E.text); 279 break; 280 } 281 j++; 282 } 283 if (q) { 284 q.iw = q.w; 285 q.ih = q.h; 286 if (q) 287 if (!0 === b) { 288 i.classList.remove('vjs-thumb-hidden'); 289 var S = !1, 290 C = q.src.replace(/\.\.\//g, ''); 291 if (s.src.indexOf(C) < 0) { 292 s.src = q.src; 293 S = !0; 294 } 295 if (0 === q.w) { 296 q.w = r.width; 297 s.style.width = q.w + 'px'; 298 } 299 if (0 === q.h) { 300 q.h = r.height; 301 s.style.height = q.h + 'px'; 302 } 303 var _ = 1; 304 if (r.responsive && r.mediaqueries) { 305 var I = e.el_.offsetWidth; 306 if (I <= 320) _ = r.mediaqueries.tiny; 307 if (I > 320 && I <= 540) _ = r.mediaqueries.small; 308 if (I > 540 && I <= 1080) _ = r.mediaqueries.medium; 309 if (I > 1080 && I <= 1600) _ = r.mediaqueries.large; 310 if (I > 1600) _ = r.mediaqueries.xlarge; 311 } 312 var T = q.w * _, 313 N = q.h * _; 314 if (i.style.width !== T || i.style.height !== N) { 315 i.style.width = T + 'px'; 316 i.style.height = N + 'px'; 317 } 318 var P = o.getContext('2d'); 319 if (S) 320 s.onload = function () { 321 o.width = T; 322 o.height = N; 323 q.x = 0; 324 q.y = 0; 325 P.drawImage(s, q.x, q.y, q.w, q.h, 0, 0, o.width, o.height); 326 }; 327 else if (q.iw > 0 && q.ih > 0) { 328 o.width = T; 329 o.height = N; 330 P.fillRect(0, 0, T, N); 331 P.drawImage(s, q.x, q.y, q.w, q.h, 0, 0, o.width, o.height); 332 } 333 var k = T / 2, 334 W = d.el().offsetWidth, 335 M = e.el_.querySelector('.vjs-progress-holder').offsetLeft, 336 R = k - M; 337 if (f + k + M > W) f = W - T; 338 else if (f < R) f = 0; 339 else f -= R; 340 i.style.left = parseInt(f, 10) + 'px'; 341 i.classList.add('vjs-thumb-show'); 342 if (videojs.holderdown && e.shadowSlide) { 343 if (!e.el_.querySelector('.vjs-thumb-poster')) { 344 (a = document.createElement('div')).className = 'vjs-thumb-poster'; 345 n = document.createElement('canvas'); 346 a.appendChild(n); 347 e.el_.insertBefore(a, e.el_.querySelector('.vjs-poster')); 348 } 349 var B = n.getContext('2d'); 350 n.width = e.el_.offsetWidth; 351 n.height = e.el_.offsetHeight; 352 a.style.width = n.width + 'px'; 353 a.style.height = n.height + 'px'; 354 B.clearRect(0, 0, n.width, n.height); 355 B.drawImage(s, q.x, q.y, q.w, q.h, 0, 0, n.width, n.height); 356 } 357 } else i.classList.add('vjs-thumb-hidden'); 358 } 359 }; 360 }, 361 thumbnails = function (e) { 362 this.ready(() => { 363 let t = [];
364 try { 365 t = videojs.obj.merge(defaults, e); 366 } catch (i) { 367 t = videojs.mergeOptions(defaults, e); 368 } 369 onPlayerReady(this, t); 370 }); 371 }; 372if ('undefined' != typeof window) { 373 (videojs.registerPlugin || videojs.plugin)('thumbnails', thumbnails); 374} 375thumbnails.VERSION = '2.4.0'; 376export default thumbnails;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.