1/*! 2 * Video Extension for Jarallax v2.0.4 (https://github.com/nk-o/jarallax) 3 * Copyright 2022 nK <https://nkdev.info> 4 * Licensed under MIT (https://github.com/nk-o/jarallax/blob/master/LICENSE) 5 */ 6!(function (e, t) { 7 'object' == typeof exports && 'undefined' != typeof module 8 ? (module.exports = t()) 9 : 'function' == typeof define && define.amd 10 ? define(t) 11 : ((e = 'undefined' != typeof globalThis ? globalThis : e || self).jarallaxVideo = t()); 12})(this, function () { 13 'use strict'; 14 /*! 15 * Name : Video Worker 16 * Version : 2.0.0 17 * Author : nK <https://nkdev.info> 18 * GitHub : https://github.com/nk-o/video-worker 19 */ let e; 20 e = 21 'undefined' != typeof window 22 ? window 23 : 'undefined' != typeof global 24 ? global 25 : 'undefined' != typeof self 26 ? self 27 : {}; 28 var t = e; 29 function o() { 30 (this.doneCallbacks = []), (this.failCallbacks = []); 31 } 32 o.prototype = { 33 execute(e, t) { 34 let o = e.length; 35 for (t = Array.prototype.slice.call(t); o; ) (o -= 1), e[o].apply(null, t); 36 }, 37 resolve(...e) { 38 this.execute(this.doneCallbacks, e); 39 }, 40 reject(...e) { 41 this.execute(this.failCallbacks, e); 42 }, 43 done(e) { 44 this.doneCallbacks.push(e); 45 }, 46 fail(e) { 47 this.failCallbacks.push(e); 48 }, 49 }; 50 let i = 0, 51 a = 0, 52 n = 0, 53 s = 0, 54 l = 0; 55 const r = new o(), 56 p = new o(); 57 class d { 58 constructor(e, t) { 59 const o = this; 60 (o.url = e), 61 (o.options_default = { 62 autoplay: !1, 63 loop: !1, 64 mute: !1, 65 volume: 100, 66 showControls: !0, 67 accessibilityHidden: !1, 68 startTime: 0, 69 endTime: 0, 70 }), 71 (o.options = o.extend({}, o.options_default, t)), 72 void 0 !== o.options.showContols && 73 ((o.options.showControls = o.options.showContols), delete o.options.showContols), 74 (o.videoID = o.parseURL(e)), 75 o.videoID && ((o.ID = i), (i += 1), o.loadAPI(), o.init()); 76 } 77 extend(...e) { 78 const t = e[0] || {}; 79 return ( 80 Object.keys(e).forEach((o) => { 81 e[o] && 82 Object.keys(e[o]).forEach((i) => { 83 t[i] = e[o][i]; 84 }); 85 }), 86 t 87 ); 88 } 89 parseURL(e) { 90 const t = (function (e) { 91 const t = e.match(/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/); 92 return !(!t || 11 !== t[1].length) && t[1]; 93 })(e), 94 o = (function (e) { 95 const t = e.match( 96 /https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/, 97 ); 98 return !(!t || !t[3]) && t[3]; 99 })(e), 100 i = (function (e) { 101 const t = e.split(/,(?=mp4\:|webm\:|ogv\:|ogg\:)/), 102 o = {}; 103 let i = 0; 104 return ( 105 t.forEach((e) => { 106 const t = e.match(/^(mp4|webm|ogv|ogg)\:(.*)/); 107 t && t[1] && t[2] && ((o['ogv' === t[1] ? 'ogg' : t[1]] = t[2]), (i = 1)); 108 }), 109 !!i && o 110 ); 111 })(e); 112 return t ? ((this.type = 'youtube'), t) : o ? ((this.type = 'vimeo'), o) : !!i && ((this.type = 'local'), i); 113 } 114 isValid() { 115 return !!this.videoID; 116 } 117 on(e, t) { 118 (this.userEventsList = this.userEventsList || []), 119 (this.userEventsList[e] || (this.userEventsList[e] = [])).push(t); 120 } 121 off(e, t) { 122 this.userEventsList && 123 this.userEventsList[e] && 124 (t 125 ? this.userEventsList[e].forEach((o, i) => { 126 o === t && (this.userEventsList[e][i] = !1); 127 }) 128 : delete this.userEventsList[e]); 129 } 130 fire(e, ...t) { 131 this.userEventsList && 132 void 0 !== this.userEventsList[e] && 133 this.userEventsList[e].forEach((e) => { 134 e && e.apply(this, t); 135 }); 136 } 137 play(e) { 138 const o = this; 139 o.player && 140 ('youtube' === o.type && 141 o.player.playVideo && 142 (void 0 !== e && o.player.seekTo(e || 0), 143 t.YT.PlayerState.PLAYING !== o.player.getPlayerState() && o.player.playVideo()), 144 'vimeo' === o.type && 145 (void 0 !== e && o.player.setCurrentTime(e), 146 o.player.getPaused().then((e) => { 147 e && o.player.play(); 148 })), 149 'local' === o.type && (void 0 !== e && (o.player.currentTime = e), o.player.paused && o.player.play())); 150 } 151 pause() { 152 const e = this; 153 e.player && 154 ('youtube' === e.type && 155 e.player.pauseVideo && 156 t.YT.PlayerState.PLAYING === e.player.getPlayerState() && 157 e.player.pauseVideo(), 158 'vimeo' === e.type && 159 e.player.getPaused().then((t) => { 160 t || e.player.pause(); 161 }), 162 'local' === e.type && (e.player.paused || e.player.pause())); 163 } 164 mute() { 165 const e = this; 166 e.player && 167 ('youtube' === e.type && e.player.mute && e.player.mute(), 168 'vimeo' === e.type && e.player.setVolume && e.player.setVolume(0), 169 'local' === e.type && (e.$video.muted = !0)); 170 } 171 unmute() { 172 const e = this; 173 e.player && 174 ('youtube' === e.type && e.player.mute && e.player.unMute(), 175 'vimeo' === e.type && e.player.setVolume && e.player.setVolume(e.options.volume), 176 'local' === e.type && (e.$video.muted = !1)); 177 } 178 setVolume(e = !1) { 179 const t = this; 180 t.player && 181 e && 182 ('youtube' === t.type && t.player.setVolume && t.player.setVolume(e), 183 'vimeo' === t.type && t.player.setVolume && t.player.setVolume(e), 184 'local' === t.type && (t.$video.volume = e / 100)); 185 } 186 getVolume(e) { 187 const t = this; 188 t.player 189 ? ('youtube' === t.type && t.player.getVolume && e(t.player.getVolume()), 190 'vimeo' === t.type && 191 t.player.getVolume && 192 t.player.getVolume().then((t) => { 193 e(t); 194 }), 195 'local' === t.type && e(100 * t.$video.volume)) 196 : e(!1); 197 } 198 getMuted(e) { 199 const t = this; 200 t.player 201 ? ('youtube' === t.type && t.player.isMuted && e(t.player.isMuted()), 202 'vimeo' === t.type && 203 t.player.getVolume && 204 t.player.getVolume().then((t) => { 205 e(!!t); 206 }), 207 'local' === t.type && e(t.$video.muted)) 208 : e(null); 209 } 210 getImageURL(e) { 211 const t = this; 212 if (t.videoImage) e(t.videoImage); 213 else { 214 if ('youtube' === t.type) { 215 const o = ['maxresdefault', 'sddefault', 'hqdefault', '0']; 216 let i = 0; 217 const a = new Image(); 218 (a.onload = function () {
219 120 !== (this.naturalWidth || this.width) || i === o.length - 1 220 ? ((t.videoImage = `https://img.youtube.com/vi/${t.videoID}/${o[i]}.jpg`), e(t.videoImage)) 221 : ((i += 1), (this.src = `https://img.youtube.com/vi/${t.videoID}/${o[i]}.jpg`)); 222 }), 223 (a.src = `https://img.youtube.com/vi/${t.videoID}/${o[i]}.jpg`); 224 } 225 if ('vimeo' === t.type) { 226 let o = new XMLHttpRequest(); 227 o.open('GET', `https://vimeo.com/api/oembed.json?url=${t.url}`, !0), 228 (o.onreadystatechange = function () { 229 if (4 === this.readyState && this.status >= 200 && this.status < 400) { 230 const o = JSON.parse(this.responseText); 231 o.thumbnail_url && ((t.videoImage = o.thumbnail_url), e(t.videoImage)); 232 } 233 }), 234 o.send(), 235 (o = null); 236 } 237 } 238 } 239 getIframe(e) { 240 this.getVideo(e); 241 } 242 getVideo(e) { 243 const o = this; 244 o.$video 245 ? e(o.$video) 246 : o.onAPIready(() => { 247 let i; 248 if ((o.$video || ((i = document.createElement('div')), (i.style.display = 'none')), 'youtube' === o.type)) { 249 let e, a; 250 (o.playerOptions = { 251 host: 'https://www.youtube-nocookie.com', 252 videoId: o.videoID, 253 playerVars: { autohide: 1, rel: 0, autoplay: 0, playsinline: 1 }, 254 }), 255 o.options.showControls || 256 ((o.playerOptions.playerVars.iv_load_policy = 3), 257 (o.playerOptions.playerVars.modestbranding = 1), 258 (o.playerOptions.playerVars.controls = 0), 259 (o.playerOptions.playerVars.showinfo = 0), 260 (o.playerOptions.playerVars.disablekb = 1)), 261 (o.playerOptions.events = { 262 onReady(e) { 263 if ( 264 (o.options.mute ? e.target.mute() : o.options.volume && e.target.setVolume(o.options.volume), 265 o.options.autoplay && o.play(o.options.startTime), 266 o.fire('ready', e), 267 o.options.loop && !o.options.endTime) 268 ) { 269 const e = 0.1; 270 o.options.endTime = o.player.getDuration() - e; 271 } 272 setInterval(() => { 273 o.getVolume((t) => { 274 o.options.volume !== t && ((o.options.volume = t), o.fire('volumechange', e)); 275 }); 276 }, 150); 277 }, 278 onStateChange(i) { 279 o.options.loop && i.data === t.YT.PlayerState.ENDED && o.play(o.options.startTime), 280 e || i.data !== t.YT.PlayerState.PLAYING || ((e = 1), o.fire('started', i)), 281 i.data === t.YT.PlayerState.PLAYING && o.fire('play', i), 282 i.data === t.YT.PlayerState.PAUSED && o.fire('pause', i), 283 i.data === t.YT.PlayerState.ENDED && o.fire('ended', i), 284 i.data === t.YT.PlayerState.PLAYING 285 ? (a = setInterval(() => { 286 o.fire('timeupdate', i), 287 o.options.endTime && 288 o.player.getCurrentTime() >= o.options.endTime && 289 (o.options.loop ? o.play(o.options.startTime) : o.pause()); 290 }, 150)) 291 : clearInterval(a); 292 }, 293 onError(e) { 294 o.fire('error', e); 295 }, 296 }); 297 const n = !o.$video; 298 if (n) { 299 const e = document.createElement('div'); 300 e.setAttribute('id', o.playerID), i.appendChild(e), document.body.appendChild(i); 301 } 302 (o.player = o.player || new t.YT.Player(o.playerID, o.playerOptions)), 303 n && 304 ((o.$video = document.getElementById(o.playerID)), 305 o.options.accessibilityHidden && 306 (o.$video.setAttribute('tabindex', '-1'), o.$video.setAttribute('aria-hidden', 'true')), 307 (o.videoWidth = parseInt(o.$video.getAttribute('width'), 10) || 1280), 308 (o.videoHeight = parseInt(o.$video.getAttribute('height'), 10) || 720)); 309 } 310 if ('vimeo' === o.type) { 311 if ( 312 ((o.playerOptions = { 313 dnt: 1, 314 id: o.videoID, 315 autopause: 0, 316 transparent: 0, 317 autoplay: o.options.autoplay ? 1 : 0, 318 loop: o.options.loop ? 1 : 0, 319 muted: o.options.mute ? 1 : 0, 320 }), 321 o.options.volume && (o.playerOptions.volume = o.options.volume), 322 o.options.showControls || 323 ((o.playerOptions.badge = 0), 324 (o.playerOptions.byline = 0), 325 (o.playerOptions.portrait = 0), 326 (o.playerOptions.title = 0), 327 (o.playerOptions.background = 1)), 328 !o.$video) 329 ) { 330 let e = '';
331 Object.keys(o.playerOptions).forEach((t) => { 332 '' !== e && (e += '&'), (e += `${t}=${encodeURIComponent(o.playerOptions[t])}`); 333 }), 334 (o.$video = document.createElement('iframe')), 335 o.$video.setAttribute('id', o.playerID), 336 o.$video.setAttribute('src', `https://player.vimeo.com/video/${o.videoID}?${e}`), 337 o.$video.setAttribute('frameborder', '0'), 338 o.$video.setAttribute('mozallowfullscreen', ''), 339 o.$video.setAttribute('allowfullscreen', ''), 340 o.$video.setAttribute('title', 'Vimeo video player'), 341 o.options.accessibilityHidden && 342 (o.$video.setAttribute('tabindex', '-1'), o.$video.setAttribute('aria-hidden', 'true')), 343 i.appendChild(o.$video), 344 document.body.appendChild(i); 345 } 346 let e; 347 (o.player = o.player || new t.Vimeo.Player(o.$video, o.playerOptions)), 348 o.options.startTime && o.options.autoplay && o.player.setCurrentTime(o.options.startTime), 349 o.player.getVideoWidth().then((e) => { 350 o.videoWidth = e || 1280; 351 }), 352 o.player.getVideoHeight().then((e) => { 353 o.videoHeight = e || 720; 354 }), 355 o.player.on('timeupdate', (t) => { 356 e || (o.fire('started', t), (e = 1)), 357 o.fire('timeupdate', t), 358 o.options.endTime && 359 o.options.endTime && 360 t.seconds >= o.options.endTime && 361 (o.options.loop ? o.play(o.options.startTime) : o.pause()); 362 }), 363 o.player.on('play', (e) => { 364 o.fire('play', e), o.options.startTime && 0 === e.seconds && o.play(o.options.startTime); 365 }), 366 o.player.on('pause', (e) => { 367 o.fire('pause', e); 368 }), 369 o.player.on('ended', (e) => { 370 o.fire('ended', e); 371 }), 372 o.player.on('loaded', (e) => { 373 o.fire('ready', e); 374 }), 375 o.player.on('volumechange', (e) => { 376 o.fire('volumechange', e); 377 }), 378 o.player.on('error', (e) => { 379 o.fire('error', e); 380 }); 381 } 382 if ('local' === o.type) { 383 let e; 384 o.$video || 385 ((o.$video = document.createElement('video')), 386 o.options.showControls && (o.$video.controls = !0), 387 o.options.mute ? (o.$video.muted = !0) : o.$video.volume && (o.$video.volume = o.options.volume / 100), 388 o.options.loop && (o.$video.loop = !0), 389 o.$video.setAttribute('playsinline', ''), 390 o.$video.setAttribute('webkit-playsinline', ''), 391 o.options.accessibilityHidden && 392 (o.$video.setAttribute('tabindex', '-1'), o.$video.setAttribute('aria-hidden', 'true')), 393 o.$video.setAttribute('id', o.playerID), 394 i.appendChild(o.$video), 395 document.body.appendChild(i), 396 Object.keys(o.videoID).forEach((e) => { 397 !(function (e, t, o) { 398 const i = document.createElement('source'); 399 (i.src = t), (i.type = o), e.appendChild(i); 400 })(o.$video, o.videoID[e], `video/${e}`); 401 })), 402 (o.player = o.player || o.$video), 403 o.player.addEventListener('playing', (t) => { 404 e || o.fire('started', t), (e = 1); 405 }), 406 o.player.addEventListener('timeupdate', function (e) { 407 o.fire('timeupdate', e), 408 o.options.endTime && 409 o.options.endTime && 410 this.currentTime >= o.options.endTime && 411 (o.options.loop ? o.play(o.options.startTime) : o.pause()); 412 }), 413 o.player.addEventListener('play', (e) => { 414 o.fire('play', e); 415 }), 416 o.player.addEventListener('pause', (e) => { 417 o.fire('pause', e); 418 }), 419 o.player.addEventListener('ended', (e) => { 420 o.fire('ended', e); 421 }), 422 o.player.addEventListener('loadedmetadata', function () { 423 (o.videoWidth = this.videoWidth || 1280), 424 (o.videoHeight = this.videoHeight || 720), 425 o.fire('ready'), 426 o.options.autoplay && o.play(o.options.startTime); 427 }), 428 o.player.addEventListener('volumechange', (e) => { 429 o.getVolume((e) => { 430 o.options.volume = e; 431 }), 432 o.fire('volumechange', e); 433 }), 434 o.player.addEventListener('error', (e) => { 435 o.fire('error', e); 436 }); 437 } 438 e(o.$video); 439 }); 440 } 441 init() { 442 this.playerID = `VideoWorker-${this.ID}`; 443 } 444 loadAPI() { 445 if (a && n) return; 446 let e = ''; 447 if ( 448 ('youtube' !== this.type || a || ((a = 1), (e = 'https://www.youtube.com/iframe_api')), 449 'vimeo' === this.type && !n) 450 ) { 451 if (((n = 1), void 0 !== t.Vimeo)) return; 452 e = 'https://player.vimeo.com/api/player.js'; 453 } 454 if (!e) return; 455 let o = document.createElement('script'), 456 i = document.getElementsByTagName('head')[0]; 457 (o.src = e), i.appendChild(o), (i = null), (o = null); 458 } 459 onAPIready(e) { 460 const o = this; 461 if ( 462 ('youtube' === o.type && 463 ((void 0 !== t.YT && 0 !== t.YT.loaded) || s 464 ? 'object' == typeof t.YT && 1 === t.YT.loaded 465 ? e() 466 : r.done(() => { 467 e(); 468 }) 469 : ((s = 1), 470 (t.onYouTubeIframeAPIReady = function () { 471 (t.onYouTubeIframeAPIReady = null), r.resolve('done'), e(); 472 }))), 473 'vimeo' === o.type) 474 ) 475 if (void 0 !== t.Vimeo || l) 476 void 0 !== t.Vimeo 477 ? e() 478 : p.done(() => { 479 e(); 480 }); 481 else { 482 l = 1; 483 const o = setInterval(() => { 484 void 0 !== t.Vimeo && (clearInterval(o), p.resolve('done'), e()); 485 }, 20); 486 } 487 'local' === o.type && e(); 488 } 489 } 490 let u; 491 u = 492 'undefined' != typeof window 493 ? window 494 : 'undefined' != typeof global 495 ? global 496 : 'undefined' != typeof self 497 ? self 498 : {}; 499 var y, 500 m = u; 501 function c(e = m.jarallax) { 502 if (void 0 === e) return; 503 const t = e.constructor, 504 o = t.prototype.onScroll; 505 t.prototype.onScroll = function () { 506 const e = this; 507 o.apply(e); 508 !e.isVideoInserted && 509 e.video && 510 (!e.options.videoLazyLoading || e.isElementInViewport) && 511 !e.options.disableVideo() && 512 ((e.isVideoInserted = !0), 513 e.video.getVideo((t) => { 514 const o = t.parentNode; 515 e.css(t, { 516 position: e.image.position, 517 top: '0px', 518 left: '0px', 519 right: '0px', 520 bottom: '0px', 521 width: '100%', 522 height: '100%', 523 maxWidth: 'none', 524 maxHeight: 'none', 525 pointerEvents: 'none', 526 transformStyle: 'preserve-3d', 527 backfaceVisibility: 'hidden', 528 margin: 0, 529 zIndex: -1, 530 }), 531 (e.$video = t), 532 'local' === e.video.type && 533 (e.image.src 534 ? e.$video.setAttribute('poster', e.image.src) 535 : e.image.$item && 536 'IMG' === e.image.$item.tagName && 537 e.image.$item.src && 538 e.$video.setAttribute('poster', e.image.$item.src)), 539 e.image.$container.appendChild(t), 540 o.parentNode.removeChild(o), 541 e.options.onVideoInsert && e.options.onVideoInsert.call(e); 542 })); 543 }; 544 const i = t.prototype.coverImage; 545 t.prototype.coverImage = function () { 546 const e = this, 547 t = i.apply(e), 548 o = !!e.image.$item && e.image.$item.nodeName; 549 if (t && e.video && o && ('IFRAME' === o || 'VIDEO' === o)) { 550 let i = t.image.height, 551 a = (i * e.image.width) / e.image.height, 552 n = (t.container.width - a) / 2, 553 s = t.image.marginTop; 554 t.container.width > a && 555 ((a = t.container.width), 556 (i = (a * e.image.height) / e.image.width), 557 (n = 0), 558 (s += (t.image.height - i) / 2)), 559 'IFRAME' === o && ((i += 400), (s -= 200)), 560 e.css(e.$video, { width: `${a}px`, marginLeft: `${n}px`, height: `${i}px`, marginTop: `${s}px` }); 561 } 562 return t; 563 }; 564 const a = t.prototype.initImg; 565 t.prototype.initImg = function () { 566 const e = this, 567 t = a.apply(e); 568 return ( 569 e.options.videoSrc || (e.options.videoSrc = e.$item.getAttribute('data-jarallax-video') || null), 570 e.options.videoSrc ? ((e.defaultInitImgResult = t), !0) : t 571 ); 572 }; 573 const n = t.prototype.canInitParallax; 574 t.prototype.canInitParallax = function () { 575 const e = this; 576 let t = n.apply(e); 577 if (!e.options.videoSrc) return t; 578 const o = new d(e.options.videoSrc, { 579 autoplay: !0, 580 loop: e.options.videoLoop, 581 showControls: !1, 582 accessibilityHidden: !0, 583 startTime: e.options.videoStartTime || 0, 584 endTime: e.options.videoEndTime || 0, 585 mute: e.options.videoVolume ? 0 : 1, 586 volume: e.options.videoVolume || 0, 587 }); 588 function i() { 589 e.image.$default_item && 590 ((e.image.$item = e.image.$default_item), 591 (e.image.$item.style.display = 'block'), 592 e.coverImage(), 593 e.onScroll()); 594 } 595 if ((e.options.onVideoWorkerInit && e.options.onVideoWorkerInit.call(e, o), o.isValid())) 596 if ( 597 (this.options.disableParallax() && 598 ((t = !0), (e.image.position = 'absolute'), (e.options.type = 'scroll'), (e.options.speed = 1)), 599 t) 600 ) { 601 if ( 602 (o.on('ready', () => { 603 if (e.options.videoPlayOnlyVisible) { 604 const t = e.onScroll; 605 e.onScroll = function () { 606 t.apply(e), 607 e.videoError || 608 (!e.options.videoLoop && (e.options.videoLoop || e.videoEnded)) || 609 (e.isVisible() ? o.play() : o.pause()); 610 }; 611 } else o.play(); 612 }), 613 o.on('started', () => { 614 (e.image.$default_item = e.image.$item), 615 (e.image.$item = e.$video), 616 (e.image.width = e.video.videoWidth || 1280), 617 (e.image.height = e.video.videoHeight || 720), 618 e.coverImage(), 619 e.onScroll(), 620 e.image.$default_item && (e.image.$default_item.style.display = 'none'); 621 }), 622 o.on('ended', () => {
623 (e.videoEnded = !0), e.options.videoLoop || i(); 624 }), 625 o.on('error', () => { 626 (e.videoError = !0), i(); 627 }), 628 (e.video = o), 629 !e.defaultInitImgResult && 630 ((e.image.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'), 631 'local' !== o.type)) 632 ) 633 return ( 634 o.getImageURL((t) => { 635 (e.image.bgImage = `url("${t}")`), e.init(); 636 }), 637 !1 638 ); 639 } else 640 e.defaultInitImgResult || 641 o.getImageURL((t) => { 642 const o = e.$item.getAttribute('style'); 643 o && e.$item.setAttribute('data-jarallax-original-styles', o), 644 e.css(e.$item, { 645 'background-image': `url("${t}")`, 646 'background-position': 'center', 647 'background-size': 'cover', 648 }); 649 }); 650 return t; 651 }; 652 const s = t.prototype.destroy; 653 t.prototype.destroy = function () { 654 const e = this; 655 e.image.$default_item && ((e.image.$item = e.image.$default_item), delete e.image.$default_item), s.apply(e); 656 }; 657 } 658 return ( 659 c(), 660 (y = () => { 661 void 0 !== m.jarallax && m.jarallax(document.querySelectorAll('[data-jarallax-video]')); 662 }), 663 'complete' === document.readyState || 'interactive' === document.readyState 664 ? y() 665 : document.addEventListener('DOMContentLoaded', y, { capture: !0, once: !0, passive: !0 }), 666 m.VideoWorker || (m.VideoWorker = d), 667 c 668 ); 669}); 670//# sourceMappingURL=jarallax-video.min.js.map
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.