onelineplayer 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 +116 -0
- package/dist/index.d.ts +43 -0
- package/dist/onelineplayer.cjs +125 -0
- package/dist/onelineplayer.cjs.map +1 -0
- package/dist/onelineplayer.css +618 -0
- package/dist/onelineplayer.min.js +125 -0
- package/dist/onelineplayer.min.js.map +1 -0
- package/dist/onelineplayer.mjs +732 -0
- package/dist/onelineplayer.mjs.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
(function(m,g){typeof exports=="object"&&typeof module<"u"?g(exports):typeof define=="function"&&define.amd?define(["exports"],g):(m=typeof globalThis<"u"?globalThis:m||self,g(m.onelineplayer={}))})(this,function(m){"use strict";const g=`<div class="oneline-wrap">
|
|
2
|
+
<video style="display: none" class="oneline oneline-video" playsinline></video>
|
|
3
|
+
<div class="oneline-embed"></div>
|
|
4
|
+
<div class="oneline-error-box"><div class="oneline-error-message"></div></div>
|
|
5
|
+
<div class="oneline-poster" style="display: none"></div>
|
|
6
|
+
<div class="oneline-overlay" style="display: none"></div>
|
|
7
|
+
<div class="oneline-play-pause" style="display: none">
|
|
8
|
+
<button aria-label="Play" type="button">
|
|
9
|
+
<svg class="oneline-play-button" width="29px" height="29px" viewBox="-3 0 26 29" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
10
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.9">
|
|
11
|
+
<g class="oneline-icon" transform="translate(-308.000000, -226.000000)" fill="#EFEFEF" fill-rule="nonzero">
|
|
12
|
+
<g>
|
|
13
|
+
<path d="M308,252.742128 L308,228.216201 C308,227.111631 308.895431,226.216201 310,226.216201 C310.395737,226.216201 310.782578,226.333602 311.111565,226.553545 L329.506011,238.85112 C330.42427,239.46502 330.671002,240.707081 330.057101,241.62534 C329.910345,241.844855 329.721572,242.033137 329.501676,242.179321 L311.10723,254.407674 C310.187374,255.01918 308.945961,254.769213 308.334454,253.849358 C308.116351,253.521277 308,253.13609 308,252.742128 Z"></path>
|
|
14
|
+
</g>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
18
|
+
<svg class="oneline-pause-button" width="20px" height="20px" viewBox="-1 0 19 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
19
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.9">
|
|
20
|
+
<g class="oneline-icon" transform="translate(-1034.000000, -1137.000000)" fill="#EFEFEF">
|
|
21
|
+
<g transform="translate(920.000000, 331.000000)">
|
|
22
|
+
<g transform="translate(0.000000, 656.000000)">
|
|
23
|
+
<g transform="translate(87.000000, 60.000000)">
|
|
24
|
+
<path d="M29,90 L30.3333333,90 C31.4379028,90 32.3333333,90.8954305 32.3333333,92 L32.3333333,108 C32.3333333,109.104569 31.4379028,110 30.3333333,110 L29,110 C27.8954305,110 27,109.104569 27,108 L27,92 C27,90.8954305 27.8954305,90 29,90 Z M40.3333333,90 L41.6666667,90 C42.7712362,90 43.6666667,90.8954305 43.6666667,92 L43.6666667,108 C43.6666667,109.104569 42.7712362,110 41.6666667,110 L40.3333333,110 C39.2287638,110 38.3333333,109.104569 38.3333333,108 L38.3333333,92 C38.3333333,90.8954305 39.2287638,90 40.3333333,90 Z"></path>
|
|
25
|
+
</g>
|
|
26
|
+
</g>
|
|
27
|
+
</g>
|
|
28
|
+
</g>
|
|
29
|
+
</g>
|
|
30
|
+
</svg>
|
|
31
|
+
</button>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="oneline-loader-container">
|
|
34
|
+
<div class="la-ball-pulse">
|
|
35
|
+
<div></div>
|
|
36
|
+
<div></div>
|
|
37
|
+
<div></div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="oneline-controls">
|
|
41
|
+
<div class="oneline-time" style="display: none"></div>
|
|
42
|
+
<div class="oneline-progress" style="display: none" tabindex="0" role="slider" aria-orientation="horizontal">
|
|
43
|
+
<div class="oneline-progress-fill-bg">
|
|
44
|
+
<div class="oneline-progress-fill"></div>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="oneline-progress-seek-fill"></div>
|
|
47
|
+
<svg
|
|
48
|
+
class="ring"
|
|
49
|
+
width="120"
|
|
50
|
+
height="120">
|
|
51
|
+
<circle
|
|
52
|
+
class="ring-circle ring-bg"
|
|
53
|
+
stroke="white"
|
|
54
|
+
stroke-width="4"
|
|
55
|
+
fill="transparent"
|
|
56
|
+
r="52"
|
|
57
|
+
cx="60"
|
|
58
|
+
cy="60"/>
|
|
59
|
+
<circle
|
|
60
|
+
class="ring-circle ring-fill"
|
|
61
|
+
stroke="red"
|
|
62
|
+
stroke-width="4"
|
|
63
|
+
fill="transparent"
|
|
64
|
+
r="52"
|
|
65
|
+
cx="60"
|
|
66
|
+
cy="60"/>
|
|
67
|
+
<circle
|
|
68
|
+
class="ring-circle ring-seek"
|
|
69
|
+
stroke="blue"
|
|
70
|
+
stroke-width="4"
|
|
71
|
+
fill="transparent"
|
|
72
|
+
r="52"
|
|
73
|
+
cx="60"
|
|
74
|
+
cy="60"/>
|
|
75
|
+
</svg>
|
|
76
|
+
</div>
|
|
77
|
+
<div class="oneline-control-buttons">
|
|
78
|
+
<button class="oneline-mute-button" style="display: none" type="button">
|
|
79
|
+
<svg class="mute" width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
80
|
+
<title>Mute</title>
|
|
81
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
82
|
+
<g transform="translate(-1392.000000, -1231.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
|
83
|
+
<g transform="translate(802.000000, 794.000000)">
|
|
84
|
+
<path d="M602.985222,437 L602.985222,456.123535 L600.787842,456.123535 L592.44458,450.014526 L590,450.014526 L590,442.986084 L592.44458,442.986084 L600.787842,437 L602.985222,437 Z M606,444 L606,449 L604,449 L604,444 L606,444 Z"></path>
|
|
85
|
+
</g>
|
|
86
|
+
</g>
|
|
87
|
+
</g>
|
|
88
|
+
</svg>
|
|
89
|
+
<svg class="unmute" width="16px" height="20px" viewBox="0 0 16 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
90
|
+
<title>Unmute</title>
|
|
91
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
92
|
+
<g transform="translate(-1392.000000, -1197.000000)" fill="#FFFFFF" fill-rule="nonzero">
|
|
93
|
+
<g transform="translate(802.000000, 794.000000)">
|
|
94
|
+
<path d="M602.985,411.757 L602.985222,422.123535 L600.787842,422.123535 L596.072,418.67 L602.985,411.757 Z M606.424621,403.368272 L607.838835,404.782486 L592.282486,420.338835 L590.868272,418.924621 L606.424621,403.368272 Z M602.985222,403 L602.985,404.687 L591.658,416.014 L590,416.014526 L590,408.986084 L592.44458,408.986084 L600.787842,403 L602.985222,403 Z M606,410 L606,415 L604,415 L604,410.742 L604.743,409.999 L606,410 Z"></path>
|
|
95
|
+
</g>
|
|
96
|
+
</g>
|
|
97
|
+
</g>
|
|
98
|
+
</svg>
|
|
99
|
+
</button>
|
|
100
|
+
<button class="oneline-fullscreen-button" style="display: none" type="button">
|
|
101
|
+
<svg width="19px" class="fullscreen-icon-on" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
102
|
+
<title>Fullscreen</title>
|
|
103
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
104
|
+
<g transform="translate(-1351.000000, -1231.000000)" fill="#FFFFFF">
|
|
105
|
+
<g transform="translate(802.000000, 794.000000)">
|
|
106
|
+
<path d="M554.971733,448.344364 C555.432291,447.885212 556.177464,447.885212 556.638022,448.344364 L556.638022,448.344364 L556.654581,448.36091 C557.11514,448.821096 557.11514,449.566701 556.654581,450.025853 L556.654581,450.025853 L554.013357,452.664943 C553.750477,452.928645 553.750477,453.354705 554.013357,453.618407 L554.013357,453.618407 L555.245998,454.850052 C555.671367,455.274043 555.370193,456 554.769915,456 L554.769915,456 L549,456 L549,450.234747 C549,449.634953 549.726544,449.334023 550.150878,449.759049 L550.150878,449.759049 L551.377308,450.983454 C551.640189,451.247156 552.067628,451.247156 552.330509,450.983454 L552.330509,450.983454 Z M568,437 L568,442.764694 C568,443.36443 567.273456,443.665331 566.849122,443.240346 L566.849122,443.240346 L565.622692,442.01606 C565.359811,441.753417 564.932372,441.753417 564.669491,442.01606 L564.669491,442.01606 L562.028267,444.654894 C561.567709,445.115035 560.822536,445.115035 560.361978,444.654894 L560.361978,444.654894 L560.345419,444.638349 C559.88486,444.178208 559.88486,443.433709 560.345419,442.973568 L560.345419,442.973568 L562.986643,440.334734 C563.249523,440.071057 563.249523,439.645038 562.986643,439.381362 L562.986643,439.381362 L561.752967,438.149837 C561.328633,437.725886 561.629807,437 562.230085,437 L562.230085,437 L568,437 Z"></path>
|
|
107
|
+
</g>
|
|
108
|
+
</g>
|
|
109
|
+
</g>
|
|
110
|
+
</svg>
|
|
111
|
+
<svg class="fullscreen-icon-off" width="19px" height="19px" viewBox="0 0 19 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
112
|
+
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
|
113
|
+
<g transform="translate(-1351.000000, -1197.000000)" fill="#FFFFFF">
|
|
114
|
+
<g transform="translate(802.000000, 794.000000)">
|
|
115
|
+
<path d="M557,414 L557,419.764694 C557,420.36443 556.273456,420.665331 555.849122,420.240346 L555.849122,420.240346 L554.622692,419.01606 C554.359811,418.753417 553.932372,418.753417 553.669491,419.01606 L553.669491,419.01606 L551.028267,421.654894 C550.567709,422.115035 549.822536,422.115035 549.361978,421.654894 L549.361978,421.654894 L549.345419,421.638349 C548.88486,421.178208 548.88486,420.433709 549.345419,419.973568 L549.345419,419.973568 L551.986643,417.334734 C552.249523,417.071057 552.249523,416.645038 551.986643,416.381362 L551.986643,416.381362 L550.752967,415.149837 C550.328633,414.725886 550.629807,414 551.230085,414 L551.230085,414 L557,414 Z M565.971733,403.344364 C566.432291,402.885212 567.177464,402.885212 567.638022,403.344364 L567.638022,403.344364 L567.654581,403.36091 C568.11514,403.821096 568.11514,404.566701 567.654581,405.025853 L567.654581,405.025853 L565.013357,407.664943 C564.750477,407.928645 564.750477,408.354705 565.013357,408.618407 L565.013357,408.618407 L566.245998,409.850052 C566.671367,410.274043 566.370193,411 565.769915,411 L565.769915,411 L560,411 L560,405.234747 C560,404.634953 560.726544,404.334023 561.150878,404.759049 L561.150878,404.759049 L562.377308,405.983454 C562.640189,406.247156 563.067628,406.247156 563.330509,405.983454 L563.330509,405.983454 Z"></path>
|
|
116
|
+
</g>
|
|
117
|
+
</g>
|
|
118
|
+
</g>
|
|
119
|
+
</svg>
|
|
120
|
+
</button>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
`;function b(s){return!!(s&&s.match(/vimeo\.com\/(\d+)/i))}function R(s){const n=["assets-1.entertainvideo.com/assets/video/30df75d701c29181572c47389a031c60.mp4"];for(let l=0;l<n.length;l++)if(s&&s.indexOf(n[l])!==-1)return!0;return!1}function x(s){s=Math.floor(s);let n=Math.floor(s/3600),l=Math.floor((s-n*3600)/60),e=s-n*3600-l*60;l=l<10?"0"+l:l,e=e<10?"0"+e:e;let i=l+":"+e;return n>0&&(i=n+":"+i),i}function D(s){if(!s)throw new Error("onelineplayer.mount: target is required");if(typeof s=="string"){const n=document.querySelector(s);if(!n)throw new Error("onelineplayer.mount: element not found: "+s);return n}if(s.nodeType===1)return s;throw new Error("onelineplayer.mount: target must be a selector or Element")}function N(s){const n=s||{};return{url:n.url||"",poster:n.poster||"",autoplay:!!n.autoplay,loop:!!n.loop,autopause:!!n.autopause,muted:!!n.muted,clickable:n.clickable!==!1,time:!!n.time,progressBar:!!n.progressBar,playButton:n.playButton!==void 0?!!n.playButton:!0,overlay:n.overlay!==void 0?!!n.overlay:!0,muteButton:!!n.muteButton,fullscreenButton:!!n.fullscreenButton,style:n.style||"light",buttonColor:n.buttonColor||null,buttonSize:n.buttonSize||null,overlayColor:n.overlayColor||null,overlayOpacity:n.overlayOpacity!=null?n.overlayOpacity:null,quality:n.quality||"auto"}}function W(s,n,l){const e=s.video,i=s.wrap;return e.style.display="block",e.muted=!!n.muted,n.autoplay&&e.setAttribute("autoplay",""),n.loop&&e.setAttribute("loop",""),R(n.url)?e.src="restricted":e.src=n.url,e.addEventListener("error",function(){const o=i.querySelector(".oneline-error-message");if(e.error===null)return;let t="Video error";switch(e.error.code){case 1:t="Video aborted";break;case 2:t="Video expired, reload the page";break;case 3:t="Network error";break;case 4:t="Video not found or not supported";break}o&&(o.innerText=t),i.classList.add("oneline-error"),i.classList.remove("oneline-load")}),e.addEventListener("waiting",function(){l&&console.log("waiting"),i.classList.add("oneline-load")},!1),e.addEventListener("canplaythrough",function(){l&&console.log("canplay"),i.classList.remove("oneline-load")},!1),{type:"html",load:function(o){e.src=o.url,o.autoplay&&e.setAttribute("autoplay","")},node:function(){return e},play:function(){return e.play()},pause:function(){e.pause()},mute:function(){e.muted=!0},unmute:function(){e.muted=!1},getPaused:function(o){o(e.paused)},getWidth:function(o){o(e.videoWidth)},getHeight:function(o){o(e.videoHeight)},getTime:function(o){o(e.currentTime)},setTime:function(o){e.currentTime=o},setLoop:function(o){o?e.setAttribute("loop",""):e.removeAttribute("loop")},getDuration:function(o){o(e.duration)},getMuted:function(o){o(e.muted)},onLoadstart:function(o){e.addEventListener("loadstart",o,!1)},onLoadend:function(o){e.addEventListener("loadended",o,!1)},onReady:function(o){e.addEventListener("loadedmetadata",o,!1)},onPlay:function(o){e.addEventListener("play",o,!1)},onPause:function(o){e.addEventListener("pause",o,!1)},onTimeupdate:function(o){e.addEventListener("timeupdate",o,!1)},onVolumechange:function(o){e.addEventListener("volumechange",o,!1)},onEnded:function(o){e.addEventListener("ended",o,!1)},onSeeked:function(o){e.addEventListener("seeked",o,!1)},destroy:function(){e.removeAttribute("src"),e.load()}}}const j="https://player.vimeo.com/api/player.js";let v=null;function K(){return typeof window<"u"&&window.Vimeo&&window.Vimeo.Player?Promise.resolve(window.Vimeo):v||(v=new Promise(function(s,n){const l=document.querySelector("script[data-onelineplayer-vimeo]");if(l){l.addEventListener("load",function(){s(window.Vimeo)}),l.addEventListener("error",n);return}const e=document.createElement("script");e.src=j,e.async=!0,e.dataset.onelineplayerVimeo="1",e.onload=function(){s(window.Vimeo)},e.onerror=n,document.head.appendChild(e)}),v)}function E(s){return{url:s.url,controls:!1,muted:s.muted,autoplay:s.autoplay,loop:s.loop,quality:s.quality,responsive:!0}}async function U(s,n){s.embed.style.display="block";const l=await K(),e=new l.Player(s.embed,E(n));return n.muted||e.setVolume(1),{type:"vimeo",load:function(i){e.loadVideo(E(i))},node:function(){return e.element},play:function(){return e.play()},pause:function(){return e.pause()},mute:function(){e.setVolume(0)},unmute:function(){e.setVolume(1)},getPaused:function(i){e.getPaused().then(i)},getWidth:function(i){e.getVideoWidth().then(i)},getHeight:function(i){e.getVideoHeight().then(i)},getTime:function(i){e.getCurrentTime().then(i)},setTime:function(i){e.setCurrentTime(i)},setLoop:function(i){e.setLoop(i)},getDuration:function(i){e.getDuration().then(i)},getMuted:function(i){e.getVolume().then(function(o){i(o===0)})},onLoadstart:function(i){e.on("bufferstart",i)},onLoadend:function(i){e.on("bufferend",i)},onReady:function(i){e.on("loaded",i)},onPlay:function(i){e.on("play",i)},onPause:function(i){e.on("pause",i)},onTimeupdate:function(i){e.on("timeupdate",i)},onVolumechange:function(i){e.on("volumechange",i)},onEnded:function(i){e.on("ended",i)},onSeeked:function(i){e.on("seeked",i)},destroy:function(){return e.destroy()}}}function I(s){const{video:n,options:l,els:e,components:i,state:o}=s,t=e.play,r=e.wrap;l&&l.buttonSize?(t.style.width=l.buttonSize+"px",t.style.marginTop=-(l.buttonSize/2)+"px",t.style.marginLeft=-(l.buttonSize/2)+"px"):(t.style.width=null,t.style.marginTop=null,t.style.marginLeft=null);const a=l&&l.buttonColor?l.buttonColor:null,d=t.querySelectorAll(".oneline-icon");for(let u=0;u<d.length;u++)d[u].style.fill=a;if(i.playButton)return i.playButton;const p=o.userCanTouch?"touchend":"click";return t.addEventListener(p,function(){r.classList.add("oneline-started"),n.getPaused(function(u){u?n.play():n.pause()})},!1),t.style.display="block",i.playButton=t,i.playButton}function Y(s){const{video:n,els:l,components:e,state:i}=s;if(e.muteButton)return e.muteButton;const o=l.muteButton;n.getMuted(function(r){r&&o.classList.add("muted")});const t=i.userCanTouch?"touchend":"click";return o.addEventListener(t,function(){n.getMuted(function(r){r?n.unmute():n.mute()})}),n.onVolumechange(function(){n.getMuted(function(r){r?o.classList.add("muted"):o.classList.remove("muted")})}),o.style.display="block",e.muteButton=o,e.muteButton}function X(s){const{video:n,els:l,components:e,cleanup:i}=s,o=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,t=l.fullscreenButton;if(o&&n.type==="vimeo")return t.style.display="none",null;if(e.fullscreenButton)return e.fullscreenButton;function r(){const u=l.wrap;d()?(u.classList.remove("oneline-fullscreen"),n.node().dispatchEvent(new CustomEvent("fullscreenExit"))):(u.classList.add("oneline-fullscreen"),n.node().dispatchEvent(new CustomEvent("fullscreenEnter")))}function a(){const u=l.root;d()?u.requestFullscreen?u.requestFullscreen():u.msRequestFullscreen?u.msRequestFullscreen():u.mozRequestFullScreen?u.mozRequestFullScreen():u.webkitRequestFullscreen?u.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):o&&n.type==="html"&&n.node().webkitEnterFullscreen():document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}function d(){return!document.fullscreenElement&&!document.mozFullScreenElement&&!document.webkitFullscreenElement&&!document.msFullscreenElement}const p=function(){a(),t.blur()};return t.addEventListener("click",p),document.addEventListener("webkitfullscreenchange",r),document.addEventListener("fullscreenchange",r),document.addEventListener("mozfullscreenchange",r),document.addEventListener("MSFullscreenChange",r),i.push(function(){t.removeEventListener("click",p),document.removeEventListener("webkitfullscreenchange",r),document.removeEventListener("fullscreenchange",r),document.removeEventListener("mozfullscreenchange",r),document.removeEventListener("MSFullscreenChange",r)}),t.style.display="block",e.fullscreenButton=t,e.fullscreenButton}function G(s){const{video:n,options:l,els:e,components:i,cleanup:o}=s;if(i.progressBar)return i.progressBar;let t=!1,r=null;const a=e.progress,d=e.progressFill,p=e.progressSeekFill,u=e.wrap;n.onPlay(function(){se()}),n.onPause(function(){A()}),n.onEnded(function(){d.style.width=a.offsetWidth+"px"});function y(c){O(c),t=!0}function T(){t=!1}function B(c){V(c,!1)}function z(c){t=!0,c.returnValue=!1}function S(c){V(c,!0)}function M(){t=!1}function P(c){c.keyCode===39&&q(5),c.keyCode===37&&q(-5)}return a.addEventListener("mousedown",y,!1),a.addEventListener("mouseup",T,!1),a.addEventListener("mousemove",B,!1),a.addEventListener("touchstart",z,!1),a.addEventListener("touchmove",S,!1),a.addEventListener("touchend",M,!1),document.addEventListener("keydown",P,!1),o.push(function(){A(),a.removeEventListener("mousedown",y,!1),a.removeEventListener("mouseup",T,!1),a.removeEventListener("mousemove",B,!1),a.removeEventListener("touchstart",z,!1),a.removeEventListener("touchmove",S,!1),a.removeEventListener("touchend",M,!1),document.removeEventListener("keydown",P,!1)}),a.style.display="block",i.progressBar=a,a;function q(c){n.getTime(function(f){n.setTime(f+c)})}function V(c,f){f&&(c.returnValue=!1);const h=Z(c);ae(h),t&&O(c)}function O(c){const f=Z(c);b(l.url)||u.classList.add("oneline-load"),n.getDuration(function(h){n.setTime(f/100*h),_()})}function se(){(function c(){_(),r=setTimeout(c,50)})()}function A(){clearTimeout(r)}function _(){n.getTime(function(c){n.getDuration(function(f){re(c*100/f)})})}function re(c){d.style.width=c+"%"}function ae(c){p.style.width=c+"%"}function Z(c){const f=c.changedTouches,h=a.getBoundingClientRect().left,k=(f?c.pageX:c.clientX)-h,H=a.offsetWidth;return k>0&&k<H?k*100/H:0}}function J(s){const{video:n,els:l,components:e}=s,i=l.time;if(n.getTime(function(t){i.innerHTML=x(t)}),i.style.display="block",e.time)return e.time;return o(),n.onTimeupdate(function(){o()}),e.time=i,i;function o(){n.getTime(function(t){i.innerHTML=x(t)})}}function Q(s){const{video:n,options:l,els:e,components:i}=s,o=e.poster,t=l.poster;return!t||t==="null"?(o.style.display="none",null):(o.style.backgroundColor="#000",o.style.backgroundImage="url("+t+")",i.poster?i.poster:(o.style.display="block",n.onPlay(function(){o.style.display="none"}),i.poster=o,o))}function $(s){const{video:n,options:l,els:e,components:i,state:o}=s,t=e.overlay,r=e.wrap;if(l&&l.overlayColor?t.style.backgroundColor=l.overlayColor:t.style.backgroundColor=null,l&&l.overlayOpacity!=null?(t.dataset.opacity=l.overlayOpacity,n.getPaused(function(d){d&&(t.style.opacity=t.dataset.opacity)})):(delete t.dataset.opacity,t.style.opacity=null),i.overlay)return i.overlay;t.classList.add("oneline-clickable");const a=o.userCanTouch?"touchend":"click";return t.addEventListener(a,function(){r.classList.add("oneline-started"),n.getPaused(function(d){d?n.play():n.pause()})},!1),n.onPlay(function(){typeof t.dataset.opacity<"u"&&(t.style.opacity=0)}),n.onPause(function(){typeof t.dataset.opacity<"u"&&(t.style.opacity=t.dataset.opacity)}),t.addEventListener("mouseleave",function(){r.classList.remove("oneline-hide-controls"),r.classList.remove("oneline-hide-all")}),t.addEventListener("mouseenter",function(){o.userCanTouch||(r.classList.remove("oneline-hide-controls"),r.classList.remove("oneline-hide-all"),o.hideTimeout&&clearTimeout(o.hideTimeout))}),t.style.display="block",i.overlay=t,i.overlay}const L=new Set;function ee(s){const n=s.querySelector(".oneline-wrap");return{root:s,wrap:n,video:n.querySelector(".oneline-video"),embed:n.querySelector(".oneline-embed"),poster:n.querySelector(".oneline-poster"),overlay:n.querySelector(".oneline-overlay"),play:n.querySelector(".oneline-play-pause"),time:n.querySelector(".oneline-time"),progress:n.querySelector(".oneline-progress"),progressFill:n.querySelector(".oneline-progress-fill"),progressSeekFill:n.querySelector(".oneline-progress-seek-fill"),muteButton:n.querySelector(".oneline-mute-button"),fullscreenButton:n.querySelector(".oneline-fullscreen-button")}}function ne(s){const n=document.createElement("template");return n.innerHTML=g.trim(),s.classList.add("oneline-player"),s.replaceChildren(n.content.cloneNode(!0)),ee(s)}class te{constructor(n,l){this.root=n,this.options=l,this.components={},this.cleanup=[],this.state={userCanTouch:!1,hideTimeout:null,debug:!1},this.video=null,this.els=null,this._ready=!1,this._destroyed=!1}async init(){this.els=ne(this.root);const n=this.els,l=this.options,e=this.state,i=function(){e.userCanTouch=!0};n.root.addEventListener("touchstart",i,!0),this.cleanup.push(function(){n.root.removeEventListener("touchstart",i,!0)}),b(l.url)?this.video=await U(n,l):(this.video=W(n,l,e.debug),n.wrap.classList.add("oneline-load"));const o=this.video,t=n.wrap;if(l.style==="dark"&&t.classList.add("oneline-dark"),l.poster&&Q({video:o,options:l,els:n,components:this.components}),l.overlay&&$({video:o,options:l,els:n,components:this.components,state:e}),l.autopause){const p=this;o.onPlay(function(){L.forEach(function(u){u!==p&&!u._destroyed&&u.pause()})})}o.onLoadstart(function(){e.debug&&console.log("loadstart"),b(l.url)||t.classList.add("oneline-load"),t.classList.remove("oneline-error")}),o.onLoadend(function(){e.debug&&console.log("loadend"),t.classList.remove("oneline-load")}),o.onPlay(function(){e.debug&&console.log("play"),t.classList.add("oneline-hide-controls"),t.classList.add("oneline-playing"),t.classList.remove("oneline-paused"),e.hideTimeout=setTimeout(function(){t.classList.add("oneline-hide-all")},3e3)}),o.onPause(function(){e.debug&&console.log("pause"),t.classList.add("oneline-paused"),t.classList.remove("oneline-load"),t.classList.remove("oneline-playing"),t.classList.remove("oneline-hide-all"),clearTimeout(e.hideTimeout)}),o.onSeeked(function(){t.classList.remove("oneline-load")});const r=function(){t.classList.remove("oneline-hide-controls"),t.classList.remove("oneline-hide-all"),t.classList.remove("active")},a=function(){t.classList.remove("oneline-hide-controls"),t.classList.remove("oneline-hide-all"),clearTimeout(e.hideTimeout)};t.addEventListener("mouseleave",r),t.addEventListener("mouseenter",a),this.cleanup.push(function(){t.removeEventListener("mouseleave",r),t.removeEventListener("mouseenter",a)});const d=this;return o.onReady(function(){if(d._destroyed)return;e.debug&&console.log("loadedmetadata"),t.classList.add("oneline-ready"),t.classList.remove("oneline-load"),l.autoplay||t.classList.add("oneline-paused");const p={video:o,options:l,els:n,components:d.components,state:e,cleanup:d.cleanup};l.time&&J(p),l.progressBar&&G(p),l.playButton&&I(p),l.muteButton&&Y(p),l.fullscreenButton&&X(p),d._bindKeyboardFocus(p),d._ready=!0}),L.add(this),this}_bindKeyboardFocus(n){const{video:l,els:e,components:i,cleanup:o}=n,t=e.wrap,r=["playButton","progressBar","muteButton","fullscreenButton"];function a(p){p.keyCode===9&&t.classList.add("keyboard-control")}function d(p){const u=document.activeElement&&document.activeElement.tagName==="BUTTON";p.keyCode===32&&!u&&l.getPaused(function(y){y?l.play():l.pause()})}document.addEventListener("keyup",a),document.addEventListener("keydown",d),o.push(function(){document.removeEventListener("keyup",a),document.removeEventListener("keydown",d)}),r.forEach(function(p){const u=i[p];u&&(u.addEventListener("click",function(y){(y.clientX||y.clientY)&&t.classList.remove("keyboard-control")}),u.addEventListener("focus",function(){t.classList.add("active")}),u.addEventListener("blur",function(){t.classList.remove("active")}))})}play(){this.video&&this.video.play()}pause(){this.video&&this.video.pause()}destroy(){this._destroyed||(this._destroyed=!0,clearTimeout(this.state.hideTimeout),this.cleanup.forEach(function(n){try{n()}catch{}}),this.cleanup=[],this.video&&this.video.destroy&&this.video.destroy(),L.delete(this),this.root.classList.remove("oneline-player"),this.root.replaceChildren())}}const oe=".oneline-player{font-family:Helvetica,sans-serif;margin:0;background:transparent;display:flex;align-items:center;width:100%}.oneline-responsive video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;overflow:hidden}.oneline{width:100%;height:100%;display:block}.oneline-ready .oneline{height:auto}.oneline-clickable{cursor:pointer}.oneline-wrap{width:100%;position:relative;z-index:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.oneline-responsive .oneline-wrap{position:unset}.oneline-error-box{position:absolute;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:110;background:#efefef;color:#000;display:none}.oneline-error-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.oneline-error .oneline-error-box{display:block}.oneline-overlay{position:absolute;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:2;transition:opacity .8s cubic-bezier(.1,.79,0,.87);opacity:0}.oneline-overlay{opacity:.2}.oneline-playing .oneline-overlay{opacity:0}.oneline-load .oneline-overlay,.oneline-playing:hover .oneline-overlay{opacity:.2!important}.oneline-hide-controls.oneline-playing:hover .oneline-overlay{opacity:0!important}.oneline-controls{position:absolute;z-index:10;display:flex;align-items:center;flex-direction:row;justify-content:space-between;bottom:20px;left:0;width:100%;opacity:0;transform:translateY(8px);transition:all 1s cubic-bezier(.23,1,.32,1)}.oneline-started:hover .oneline-controls,.oneline-wrap.active .oneline-controls{opacity:1;transform:translateY(0)}.oneline-wrap.oneline-hide-all .oneline-controls{opacity:0;transform:translateY(8px)}.oneline-control-buttons{display:flex;justify-content:space-between;flex-direction:row;margin-left:auto}.oneline-time{padding-bottom:0;font-size:15px;letter-spacing:1px;padding-left:30px;font-family:Helvetica,sans-serif!important;-webkit-font-smoothing:auto}.oneline-progress{position:relative;margin:0 30px;padding:12px 0;flex-grow:1;cursor:pointer;display:block;border-radius:2px}.oneline-progress-fill{width:0;height:4px;border-radius:2px}.oneline-progress-fill-bg{width:100%;height:4px;border-radius:2px}.oneline-progress-seek{position:absolute;z-index:11;top:8px;left:0;width:10px;height:10px;border-radius:5px;transition:opacity .2s linear}.oneline-progress-seek-fill{position:absolute;z-index:12;top:12px;width:0;height:4px;border-radius:2px}.oneline-progress:hover .oneline-progress-fill{opacity:0}.oneline-progress:hover .oneline-progress-seek{opacity:1;-webkit-animation:in .2s ease-out;-webkit-animation-iteration-count:1}.oneline-progress:not(:hover) .oneline-progress-seek{opacity:0;-webkit-animation:out .2s ease-out;-webkit-animation-iteration-count:1}.oneline-progress:hover .oneline-progress-seek-fill{opacity:1}.oneline-progress:not(:hover) .oneline-progress-seek-fill{opacity:0}@-webkit-keyframes in{0%{-webkit-transform:scale(.1,.1)}to{-webkit-transform:scale(1,1)}}@-webkit-keyframes out{0%{-webkit-transform:scale(1,1)}to{-webkit-transform:scale(0,0)}}.oneline-loader-container{width:80px;position:absolute;top:50%;left:50%;margin-top:-15px;margin-left:-40px;height:30px;z-index:3;display:none}.oneline-load .oneline-loader-container{display:block}.oneline-play-pause{width:30px;height:30px;position:absolute;z-index:100;top:50%;left:50%;margin-top:-15px;margin-left:-15px;transition:transform 1s cubic-bezier(.075,.82,.165,1)}.oneline-play-pause:active,.oneline-wrap:active .oneline-play-pause{transform:scale(.9)!important}.oneline-play-pause button{cursor:pointer;display:block;position:relative;width:100%;padding:50%;background:transparent;border:none}.oneline-load .oneline-play-pause{opacity:0}.oneline-wrap:not(.oneline-started):hover .oneline-play-pause{transform:scale(1.2)}.oneline-play-button,.oneline-pause-button{top:0;left:0;position:absolute;transition:all .7s cubic-bezier(.1,.79,0,.87)}@media (max-width: 400px){.oneline-play-pause{width:10%;margin-top:-5%;margin-left:-5%}}.oneline-play-pause svg,.oneline-play-pause img{width:100%;height:auto}.oneline-playing .oneline-play-button{opacity:0}.oneline-paused .oneline-play-button{opacity:1}.oneline-pause-button{opacity:0}.oneline-playing:hover .oneline-pause-button{opacity:1}@media (hover: none){.oneline-playing:hover .oneline-pause-button{opacity:0}}.oneline-hide-controls.oneline-playing:hover .oneline-pause-button,.oneline-paused .oneline-pause-button{opacity:0}.oneline-mute-button svg{display:block}.oneline-mute-button.muted .mute,.oneline-mute-button .unmute{display:none}.oneline-mute-button.muted .unmute{display:block}.oneline-fullscreen-button svg{display:block}.oneline-fullscreen .oneline-fullscreen-button .fullscreen-icon-on,.oneline-fullscreen-button .fullscreen-icon-off{display:none}.oneline-fullscreen .oneline-fullscreen-button .fullscreen-icon-off{display:block}.oneline-mute-button,.oneline-fullscreen-button{width:100%;background:transparent;border:none;margin-right:30px;cursor:pointer;padding:0}button,div{outline-width:0}.keyboard-control button,.keyboard-control div{outline-width:2px!important}.keyboard-control.oneline-playing .oneline-play-pause button{outline-width:0!important}.oneline-logo{position:absolute;top:23px;left:30px;display:block;width:31px;height:20px;z-index:10;opacity:0;transition:opacity .1s linear;text-decoration:none;font-weight:500;font-size:18px}.oneline-wrap:hover .oneline-logo{opacity:.5}.oneline-wrap:hover .oneline-logo:hover{opacity:1}.oneline-poster{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;-moz-background-size:100% 100%;-o-background-size:100% 100%;-webkit-background-size:100% 100%;background-size:100% 100%}.oneline-play-button .oneline-icon,.oneline-pause-button .oneline-icon,.oneline-mute-button .oneline-icon,.oneline-fullscreen-button .oneline-icon{fill:#fff}.oneline-progress-fill{background-color:#fff}.oneline-progress-fill-bg{background-color:#fff3}.oneline-progress-seek,.oneline-progress-seek-fill{background-color:#fff}.oneline-overlay{background-color:#000}.oneline-loader{background-color:#fff}.oneline-logo,.oneline-time{color:#fff}.oneline-dark .oneline-play-button .oneline-icon,.oneline-dark .oneline-pause-button .oneline-icon,.oneline-dark .oneline-mute-button .oneline-icon,.oneline-dark .oneline-fullscreen-button .oneline-icon{fill:#333}.oneline-dark .oneline-progress-fill{background-color:#333}.oneline-dark .oneline-progress-fill-bg{background-color:#666}.oneline-dark .oneline-progress-seek,.oneline-dark .oneline-progress-seek-fill{background-color:#333}.oneline-dark .oneline-overlay{background-color:#000}.oneline-dark .oneline-loader{background-color:#333}.oneline-dark .la-ball-pulse,.oneline-dark .oneline-logo,.oneline-dark .oneline-time{color:#333}.theme-modern .oneline-controls{bottom:50%;height:100px;margin-bottom:-50px;align-items:center;justify-content:center}.theme-modern .oneline-progress-fill-bg,.theme-modern .oneline-progress-seek,.theme-modern .oneline-progress-seek-fill,.oneline-progress .ring{display:none}.theme-modern .oneline-progress .ring{display:block}.theme-modern .oneline-progress{flex-grow:0}.theme-modern .oneline-progress .ring-circle{transform:rotate(-90deg);transform-origin:50% 50%}.theme-modern .ring-seek{display:none}.theme-modern .oneline-control-buttons{margin-left:0}.la-ball-pulse,.la-ball-pulse>div{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.la-ball-pulse{margin:0 auto;display:block;font-size:0;color:#fff}.la-ball-pulse>div{display:inline-block;float:none;background-color:currentColor;border:0 solid currentColor}.la-ball-pulse{width:54px;height:18px}.la-ball-pulse>div:nth-child(1){-webkit-animation-delay:-.2s;-moz-animation-delay:-.2s;-o-animation-delay:-.2s;animation-delay:-.2s}.la-ball-pulse>div:nth-child(2){-webkit-animation-delay:-.1s;-moz-animation-delay:-.1s;-o-animation-delay:-.1s;animation-delay:-.1s}.la-ball-pulse>div:nth-child(3){-webkit-animation-delay:0ms;-moz-animation-delay:0ms;-o-animation-delay:0ms;animation-delay:0ms}.la-ball-pulse>div{width:10px;height:10px;margin:4px;border-radius:100%;-webkit-animation:ball-pulse 1s ease infinite;-moz-animation:ball-pulse 1s ease infinite;-o-animation:ball-pulse 1s ease infinite;animation:ball-pulse 1s ease infinite}.la-ball-pulse.la-sm{width:26px;height:8px}.la-ball-pulse.la-sm>div{width:4px;height:4px;margin:2px}.la-ball-pulse.la-2x{width:108px;height:36px}.la-ball-pulse.la-2x>div{width:20px;height:20px;margin:8px}.la-ball-pulse.la-3x{width:162px;height:54px}.la-ball-pulse.la-3x>div{width:30px;height:30px;margin:12px}@-webkit-keyframes ball-pulse{0%,60%,to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);transform:scale(.01)}}@-moz-keyframes ball-pulse{0%,60%,to{opacity:1;-moz-transform:scale(1);transform:scale(1)}30%{opacity:.1;-moz-transform:scale(.01);transform:scale(.01)}}@-o-keyframes ball-pulse{0%,60%,to{opacity:1;-o-transform:scale(1);transform:scale(1)}30%{opacity:.1;-o-transform:scale(.01);transform:scale(.01)}}@keyframes ball-pulse{0%,60%,to{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);transform:scale(1)}30%{opacity:.1;-webkit-transform:scale(.01);-moz-transform:scale(.01);-o-transform:scale(.01);transform:scale(.01)}}";let w=!1;function ie(){if(w||typeof document>"u")return;if(document.querySelector("style[data-onelineplayer]")){w=!0;return}const s=document.createElement("style");s.setAttribute("data-onelineplayer","1"),s.textContent=oe,document.head.appendChild(s),w=!0}function C(s,n){ie();const l=D(s),e=N(n);return new te(l,e).init()}function F(s){s&&typeof s.destroy=="function"&&s.destroy()}const le={mount:C,destroy:F};m.default=le,m.destroy=F,m.mount=C,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
125
|
+
//# sourceMappingURL=onelineplayer.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onelineplayer.min.js","sources":["../src/template.html?raw","../src/utils.js","../src/adapters/html5.js","../src/adapters/vimeo.js","../src/controls/play-button.js","../src/controls/mute-button.js","../src/controls/fullscreen.js","../src/controls/progress-bar.js","../src/controls/time.js","../src/controls/poster.js","../src/controls/overlay.js","../src/Player.js","../src/inject-css.js","../src/index.js"],"sourcesContent":["export default \"<div class=\\\"oneline-wrap\\\">\\n <video style=\\\"display: none\\\" class=\\\"oneline oneline-video\\\" playsinline></video>\\n <div class=\\\"oneline-embed\\\"></div>\\n <div class=\\\"oneline-error-box\\\"><div class=\\\"oneline-error-message\\\"></div></div>\\n <div class=\\\"oneline-poster\\\" style=\\\"display: none\\\"></div>\\n <div class=\\\"oneline-overlay\\\" style=\\\"display: none\\\"></div>\\n <div class=\\\"oneline-play-pause\\\" style=\\\"display: none\\\">\\n <button aria-label=\\\"Play\\\" type=\\\"button\\\">\\n <svg class=\\\"oneline-play-button\\\" width=\\\"29px\\\" height=\\\"29px\\\" viewBox=\\\"-3 0 26 29\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" opacity=\\\"0.9\\\">\\n <g class=\\\"oneline-icon\\\" transform=\\\"translate(-308.000000, -226.000000)\\\" fill=\\\"#EFEFEF\\\" fill-rule=\\\"nonzero\\\">\\n <g>\\n <path d=\\\"M308,252.742128 L308,228.216201 C308,227.111631 308.895431,226.216201 310,226.216201 C310.395737,226.216201 310.782578,226.333602 311.111565,226.553545 L329.506011,238.85112 C330.42427,239.46502 330.671002,240.707081 330.057101,241.62534 C329.910345,241.844855 329.721572,242.033137 329.501676,242.179321 L311.10723,254.407674 C310.187374,255.01918 308.945961,254.769213 308.334454,253.849358 C308.116351,253.521277 308,253.13609 308,252.742128 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </svg>\\n <svg class=\\\"oneline-pause-button\\\" width=\\\"20px\\\" height=\\\"20px\\\" viewBox=\\\"-1 0 19 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" opacity=\\\"0.9\\\">\\n <g class=\\\"oneline-icon\\\" transform=\\\"translate(-1034.000000, -1137.000000)\\\" fill=\\\"#EFEFEF\\\">\\n <g transform=\\\"translate(920.000000, 331.000000)\\\">\\n <g transform=\\\"translate(0.000000, 656.000000)\\\">\\n <g transform=\\\"translate(87.000000, 60.000000)\\\">\\n <path d=\\\"M29,90 L30.3333333,90 C31.4379028,90 32.3333333,90.8954305 32.3333333,92 L32.3333333,108 C32.3333333,109.104569 31.4379028,110 30.3333333,110 L29,110 C27.8954305,110 27,109.104569 27,108 L27,92 C27,90.8954305 27.8954305,90 29,90 Z M40.3333333,90 L41.6666667,90 C42.7712362,90 43.6666667,90.8954305 43.6666667,92 L43.6666667,108 C43.6666667,109.104569 42.7712362,110 41.6666667,110 L40.3333333,110 C39.2287638,110 38.3333333,109.104569 38.3333333,108 L38.3333333,92 C38.3333333,90.8954305 39.2287638,90 40.3333333,90 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </g>\\n </g>\\n </svg>\\n </button>\\n </div>\\n <div class=\\\"oneline-loader-container\\\">\\n <div class=\\\"la-ball-pulse\\\">\\n <div></div>\\n <div></div>\\n <div></div>\\n </div>\\n </div>\\n <div class=\\\"oneline-controls\\\">\\n <div class=\\\"oneline-time\\\" style=\\\"display: none\\\"></div>\\n <div class=\\\"oneline-progress\\\" style=\\\"display: none\\\" tabindex=\\\"0\\\" role=\\\"slider\\\" aria-orientation=\\\"horizontal\\\">\\n <div class=\\\"oneline-progress-fill-bg\\\">\\n <div class=\\\"oneline-progress-fill\\\"></div>\\n </div>\\n <div class=\\\"oneline-progress-seek-fill\\\"></div>\\n <svg\\n class=\\\"ring\\\"\\n width=\\\"120\\\"\\n height=\\\"120\\\">\\n <circle\\n class=\\\"ring-circle ring-bg\\\"\\n stroke=\\\"white\\\"\\n stroke-width=\\\"4\\\"\\n fill=\\\"transparent\\\"\\n r=\\\"52\\\"\\n cx=\\\"60\\\"\\n cy=\\\"60\\\"/>\\n <circle\\n class=\\\"ring-circle ring-fill\\\"\\n stroke=\\\"red\\\"\\n stroke-width=\\\"4\\\"\\n fill=\\\"transparent\\\"\\n r=\\\"52\\\"\\n cx=\\\"60\\\"\\n cy=\\\"60\\\"/>\\n <circle\\n class=\\\"ring-circle ring-seek\\\"\\n stroke=\\\"blue\\\"\\n stroke-width=\\\"4\\\"\\n fill=\\\"transparent\\\"\\n r=\\\"52\\\"\\n cx=\\\"60\\\"\\n cy=\\\"60\\\"/>\\n </svg>\\n </div>\\n <div class=\\\"oneline-control-buttons\\\">\\n <button class=\\\"oneline-mute-button\\\" style=\\\"display: none\\\" type=\\\"button\\\">\\n <svg class=\\\"mute\\\" width=\\\"16px\\\" height=\\\"20px\\\" viewBox=\\\"0 0 16 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Mute</title>\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <g transform=\\\"translate(-1392.000000, -1231.000000)\\\" fill=\\\"#FFFFFF\\\" fill-rule=\\\"nonzero\\\">\\n <g transform=\\\"translate(802.000000, 794.000000)\\\">\\n <path d=\\\"M602.985222,437 L602.985222,456.123535 L600.787842,456.123535 L592.44458,450.014526 L590,450.014526 L590,442.986084 L592.44458,442.986084 L600.787842,437 L602.985222,437 Z M606,444 L606,449 L604,449 L604,444 L606,444 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </svg>\\n <svg class=\\\"unmute\\\" width=\\\"16px\\\" height=\\\"20px\\\" viewBox=\\\"0 0 16 20\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Unmute</title>\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <g transform=\\\"translate(-1392.000000, -1197.000000)\\\" fill=\\\"#FFFFFF\\\" fill-rule=\\\"nonzero\\\">\\n <g transform=\\\"translate(802.000000, 794.000000)\\\">\\n <path d=\\\"M602.985,411.757 L602.985222,422.123535 L600.787842,422.123535 L596.072,418.67 L602.985,411.757 Z M606.424621,403.368272 L607.838835,404.782486 L592.282486,420.338835 L590.868272,418.924621 L606.424621,403.368272 Z M602.985222,403 L602.985,404.687 L591.658,416.014 L590,416.014526 L590,408.986084 L592.44458,408.986084 L600.787842,403 L602.985222,403 Z M606,410 L606,415 L604,415 L604,410.742 L604.743,409.999 L606,410 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </svg>\\n </button>\\n <button class=\\\"oneline-fullscreen-button\\\" style=\\\"display: none\\\" type=\\\"button\\\">\\n <svg width=\\\"19px\\\" class=\\\"fullscreen-icon-on\\\" height=\\\"19px\\\" viewBox=\\\"0 0 19 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <title>Fullscreen</title>\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <g transform=\\\"translate(-1351.000000, -1231.000000)\\\" fill=\\\"#FFFFFF\\\">\\n <g transform=\\\"translate(802.000000, 794.000000)\\\">\\n <path d=\\\"M554.971733,448.344364 C555.432291,447.885212 556.177464,447.885212 556.638022,448.344364 L556.638022,448.344364 L556.654581,448.36091 C557.11514,448.821096 557.11514,449.566701 556.654581,450.025853 L556.654581,450.025853 L554.013357,452.664943 C553.750477,452.928645 553.750477,453.354705 554.013357,453.618407 L554.013357,453.618407 L555.245998,454.850052 C555.671367,455.274043 555.370193,456 554.769915,456 L554.769915,456 L549,456 L549,450.234747 C549,449.634953 549.726544,449.334023 550.150878,449.759049 L550.150878,449.759049 L551.377308,450.983454 C551.640189,451.247156 552.067628,451.247156 552.330509,450.983454 L552.330509,450.983454 Z M568,437 L568,442.764694 C568,443.36443 567.273456,443.665331 566.849122,443.240346 L566.849122,443.240346 L565.622692,442.01606 C565.359811,441.753417 564.932372,441.753417 564.669491,442.01606 L564.669491,442.01606 L562.028267,444.654894 C561.567709,445.115035 560.822536,445.115035 560.361978,444.654894 L560.361978,444.654894 L560.345419,444.638349 C559.88486,444.178208 559.88486,443.433709 560.345419,442.973568 L560.345419,442.973568 L562.986643,440.334734 C563.249523,440.071057 563.249523,439.645038 562.986643,439.381362 L562.986643,439.381362 L561.752967,438.149837 C561.328633,437.725886 561.629807,437 562.230085,437 L562.230085,437 L568,437 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </svg>\\n <svg class=\\\"fullscreen-icon-off\\\" width=\\\"19px\\\" height=\\\"19px\\\" viewBox=\\\"0 0 19 19\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">\\n <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\">\\n <g transform=\\\"translate(-1351.000000, -1197.000000)\\\" fill=\\\"#FFFFFF\\\">\\n <g transform=\\\"translate(802.000000, 794.000000)\\\">\\n <path d=\\\"M557,414 L557,419.764694 C557,420.36443 556.273456,420.665331 555.849122,420.240346 L555.849122,420.240346 L554.622692,419.01606 C554.359811,418.753417 553.932372,418.753417 553.669491,419.01606 L553.669491,419.01606 L551.028267,421.654894 C550.567709,422.115035 549.822536,422.115035 549.361978,421.654894 L549.361978,421.654894 L549.345419,421.638349 C548.88486,421.178208 548.88486,420.433709 549.345419,419.973568 L549.345419,419.973568 L551.986643,417.334734 C552.249523,417.071057 552.249523,416.645038 551.986643,416.381362 L551.986643,416.381362 L550.752967,415.149837 C550.328633,414.725886 550.629807,414 551.230085,414 L551.230085,414 L557,414 Z M565.971733,403.344364 C566.432291,402.885212 567.177464,402.885212 567.638022,403.344364 L567.638022,403.344364 L567.654581,403.36091 C568.11514,403.821096 568.11514,404.566701 567.654581,405.025853 L567.654581,405.025853 L565.013357,407.664943 C564.750477,407.928645 564.750477,408.354705 565.013357,408.618407 L565.013357,408.618407 L566.245998,409.850052 C566.671367,410.274043 566.370193,411 565.769915,411 L565.769915,411 L560,411 L560,405.234747 C560,404.634953 560.726544,404.334023 561.150878,404.759049 L561.150878,404.759049 L562.377308,405.983454 C562.640189,406.247156 563.067628,406.247156 563.330509,405.983454 L563.330509,405.983454 Z\\\"></path>\\n </g>\\n </g>\\n </g>\\n </svg>\\n </button>\\n </div>\\n </div>\\n</div>\\n\"","export function isVimeo(url) {\n return !!(url && url.match(/vimeo\\.com\\/(\\d+)/i));\n}\n\nexport function getVimeoId(url) {\n const matches = url && url.match(/vimeo\\.com\\/(\\d+)/i);\n return matches ? matches[1] : null;\n}\n\nexport function videoIsRestricted(url) {\n const restrictedUrls = [\n 'assets-1.entertainvideo.com/assets/video/30df75d701c29181572c47389a031c60.mp4',\n ];\n for (let i = 0; i < restrictedUrls.length; i++) {\n if (url && url.indexOf(restrictedUrls[i]) !== -1) {\n return true;\n }\n }\n return false;\n}\n\nexport function formatTime(seconds) {\n seconds = Math.floor(seconds);\n let hoursNum = Math.floor(seconds / 3600);\n let minutesNum = Math.floor((seconds - hoursNum * 3600) / 60);\n let secondsNum = seconds - hoursNum * 3600 - minutesNum * 60;\n\n minutesNum = minutesNum < 10 ? '0' + minutesNum : minutesNum;\n secondsNum = secondsNum < 10 ? '0' + secondsNum : secondsNum;\n\n let time = minutesNum + ':' + secondsNum;\n if (hoursNum > 0) {\n time = hoursNum + ':' + time;\n }\n return time;\n}\n\nexport function resolveElement(target) {\n if (!target) {\n throw new Error('onelineplayer.mount: target is required');\n }\n if (typeof target === 'string') {\n const el = document.querySelector(target);\n if (!el) {\n throw new Error('onelineplayer.mount: element not found: ' + target);\n }\n return el;\n }\n if (target.nodeType === 1) {\n return target;\n }\n throw new Error('onelineplayer.mount: target must be a selector or Element');\n}\n\nexport function normalizeOptions(options) {\n const opts = options || {};\n return {\n url: opts.url || '',\n poster: opts.poster || '',\n autoplay: !!opts.autoplay,\n loop: !!opts.loop,\n autopause: !!opts.autopause,\n muted: !!opts.muted,\n clickable: opts.clickable !== false,\n time: !!opts.time,\n progressBar: !!opts.progressBar,\n playButton: opts.playButton !== undefined ? !!opts.playButton : true,\n overlay: opts.overlay !== undefined ? !!opts.overlay : true,\n muteButton: !!opts.muteButton,\n fullscreenButton: !!opts.fullscreenButton,\n style: opts.style || 'light',\n buttonColor: opts.buttonColor || null,\n buttonSize: opts.buttonSize || null,\n overlayColor: opts.overlayColor || null,\n overlayOpacity: opts.overlayOpacity != null ? opts.overlayOpacity : null,\n quality: opts.quality || 'auto',\n };\n}\n","import { videoIsRestricted } from '../utils.js';\n\nexport function createHtml5Adapter(els, options, debug) {\n const player = els.video;\n const container = els.wrap;\n\n player.style.display = 'block';\n player.muted = !!options.muted;\n\n if (options.autoplay) {\n player.setAttribute('autoplay', '');\n }\n if (options.loop) {\n player.setAttribute('loop', '');\n }\n\n if (videoIsRestricted(options.url)) {\n player.src = 'restricted';\n } else {\n player.src = options.url;\n }\n\n player.addEventListener('error', function () {\n const errorMessage = container.querySelector('.oneline-error-message');\n if (player.error === null) {\n return;\n }\n\n let text = 'Video error';\n switch (player.error.code) {\n case 1:\n text = 'Video aborted';\n break;\n case 2:\n text = 'Video expired, reload the page';\n break;\n case 3:\n text = 'Network error';\n break;\n case 4:\n text = 'Video not found or not supported';\n break;\n }\n\n if (errorMessage) {\n errorMessage.innerText = text;\n }\n container.classList.add('oneline-error');\n container.classList.remove('oneline-load');\n });\n\n player.addEventListener(\n 'waiting',\n function () {\n if (debug) console.log('waiting');\n container.classList.add('oneline-load');\n },\n false\n );\n\n player.addEventListener(\n 'canplaythrough',\n function () {\n if (debug) console.log('canplay');\n container.classList.remove('oneline-load');\n },\n false\n );\n\n return {\n type: 'html',\n load: function (nextOptions) {\n player.src = nextOptions.url;\n if (nextOptions.autoplay) {\n player.setAttribute('autoplay', '');\n }\n },\n node: function () {\n return player;\n },\n play: function () {\n return player.play();\n },\n pause: function () {\n player.pause();\n },\n mute: function () {\n player.muted = true;\n },\n unmute: function () {\n player.muted = false;\n },\n getPaused: function (callback) {\n callback(player.paused);\n },\n getWidth: function (callback) {\n callback(player.videoWidth);\n },\n getHeight: function (callback) {\n callback(player.videoHeight);\n },\n getTime: function (callback) {\n callback(player.currentTime);\n },\n setTime: function (seconds) {\n player.currentTime = seconds;\n },\n setLoop: function (value) {\n if (value) {\n player.setAttribute('loop', '');\n } else {\n player.removeAttribute('loop');\n }\n },\n getDuration: function (callback) {\n callback(player.duration);\n },\n getMuted: function (callback) {\n callback(player.muted);\n },\n onLoadstart: function (callback) {\n player.addEventListener('loadstart', callback, false);\n },\n onLoadend: function (callback) {\n player.addEventListener('loadended', callback, false);\n },\n onReady: function (callback) {\n player.addEventListener('loadedmetadata', callback, false);\n },\n onPlay: function (callback) {\n player.addEventListener('play', callback, false);\n },\n onPause: function (callback) {\n player.addEventListener('pause', callback, false);\n },\n onTimeupdate: function (callback) {\n player.addEventListener('timeupdate', callback, false);\n },\n onVolumechange: function (callback) {\n player.addEventListener('volumechange', callback, false);\n },\n onEnded: function (callback) {\n player.addEventListener('ended', callback, false);\n },\n onSeeked: function (callback) {\n player.addEventListener('seeked', callback, false);\n },\n destroy: function () {\n player.removeAttribute('src');\n player.load();\n },\n };\n}\n","import { getVimeoId } from '../utils.js';\n\nconst VIMEO_SDK = 'https://player.vimeo.com/api/player.js';\nlet vimeoSdkPromise = null;\n\nfunction loadVimeoSdk() {\n if (typeof window !== 'undefined' && window.Vimeo && window.Vimeo.Player) {\n return Promise.resolve(window.Vimeo);\n }\n if (vimeoSdkPromise) {\n return vimeoSdkPromise;\n }\n vimeoSdkPromise = new Promise(function (resolve, reject) {\n const existing = document.querySelector('script[data-onelineplayer-vimeo]');\n if (existing) {\n existing.addEventListener('load', function () {\n resolve(window.Vimeo);\n });\n existing.addEventListener('error', reject);\n return;\n }\n const script = document.createElement('script');\n script.src = VIMEO_SDK;\n script.async = true;\n script.dataset.onelineplayerVimeo = '1';\n script.onload = function () {\n resolve(window.Vimeo);\n };\n script.onerror = reject;\n document.head.appendChild(script);\n });\n return vimeoSdkPromise;\n}\n\nfunction getVimeoOptions(options) {\n return {\n url: options.url,\n controls: false,\n muted: options.muted,\n autoplay: options.autoplay,\n loop: options.loop,\n quality: options.quality,\n responsive: true,\n };\n}\n\nexport async function createVimeoAdapter(els, options) {\n els.embed.style.display = 'block';\n const Vimeo = await loadVimeoSdk();\n const player = new Vimeo.Player(els.embed, getVimeoOptions(options));\n\n if (!options.muted) {\n player.setVolume(1);\n }\n\n return {\n type: 'vimeo',\n load: function (nextOptions) {\n player.loadVideo(getVimeoOptions(nextOptions));\n },\n node: function () {\n return player.element;\n },\n play: function () {\n return player.play();\n },\n pause: function () {\n return player.pause();\n },\n mute: function () {\n player.setVolume(0);\n },\n unmute: function () {\n player.setVolume(1);\n },\n getPaused: function (callback) {\n player.getPaused().then(callback);\n },\n getWidth: function (callback) {\n player.getVideoWidth().then(callback);\n },\n getHeight: function (callback) {\n player.getVideoHeight().then(callback);\n },\n getTime: function (callback) {\n player.getCurrentTime().then(callback);\n },\n setTime: function (seconds) {\n player.setCurrentTime(seconds);\n },\n setLoop: function (value) {\n player.setLoop(value);\n },\n getDuration: function (callback) {\n player.getDuration().then(callback);\n },\n getMuted: function (callback) {\n player.getVolume().then(function (volume) {\n callback(volume === 0);\n });\n },\n onLoadstart: function (callback) {\n player.on('bufferstart', callback);\n },\n onLoadend: function (callback) {\n player.on('bufferend', callback);\n },\n onReady: function (callback) {\n player.on('loaded', callback);\n },\n onPlay: function (callback) {\n player.on('play', callback);\n },\n onPause: function (callback) {\n player.on('pause', callback);\n },\n onTimeupdate: function (callback) {\n player.on('timeupdate', callback);\n },\n onVolumechange: function (callback) {\n player.on('volumechange', callback);\n },\n onEnded: function (callback) {\n player.on('ended', callback);\n },\n onSeeked: function (callback) {\n player.on('seeked', callback);\n },\n destroy: function () {\n return player.destroy();\n },\n };\n}\n\nexport { getVimeoId, loadVimeoSdk };\n","export function initPlayButton(ctx) {\n const { video, options, els, components, state } = ctx;\n const component = els.play;\n const container = els.wrap;\n\n if (options && options.buttonSize) {\n component.style.width = options.buttonSize + 'px';\n component.style.marginTop = -(options.buttonSize / 2) + 'px';\n component.style.marginLeft = -(options.buttonSize / 2) + 'px';\n } else {\n component.style.width = null;\n component.style.marginTop = null;\n component.style.marginLeft = null;\n }\n\n const iconsFill = options && options.buttonColor ? options.buttonColor : null;\n const icons = component.querySelectorAll('.oneline-icon');\n for (let i = 0; i < icons.length; i++) {\n icons[i].style.fill = iconsFill;\n }\n\n if (components.playButton) {\n return components.playButton;\n }\n\n const event = state.userCanTouch ? 'touchend' : 'click';\n component.addEventListener(event, function () {\n container.classList.add('oneline-started');\n video.getPaused(function (paused) {\n paused ? video.play() : video.pause();\n });\n }, false);\n\n component.style.display = 'block';\n components.playButton = component;\n return components.playButton;\n}\n","export function initMuteButton(ctx) {\n const { video, els, components, state } = ctx;\n\n if (components.muteButton) {\n return components.muteButton;\n }\n\n const muteButton = els.muteButton;\n\n video.getMuted(function (muted) {\n if (muted) {\n muteButton.classList.add('muted');\n }\n });\n\n const event = state.userCanTouch ? 'touchend' : 'click';\n muteButton.addEventListener(event, function () {\n video.getMuted(function (muted) {\n muted ? video.unmute() : video.mute();\n });\n });\n\n video.onVolumechange(function () {\n video.getMuted(function (muted) {\n muted ? muteButton.classList.add('muted') : muteButton.classList.remove('muted');\n });\n });\n\n muteButton.style.display = 'block';\n components.muteButton = muteButton;\n return components.muteButton;\n}\n","export function initFullscreenButton(ctx) {\n const { video, els, components, cleanup } = ctx;\n const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const fullscreenButton = els.fullscreenButton;\n\n if (iOS && video.type === 'vimeo') {\n fullscreenButton.style.display = 'none';\n return null;\n }\n\n if (components.fullscreenButton) {\n return components.fullscreenButton;\n }\n\n function onFullscreenChange() {\n const container = els.wrap;\n if (isFullscreenActive()) {\n container.classList.remove('oneline-fullscreen');\n video.node().dispatchEvent(new CustomEvent('fullscreenExit'));\n } else {\n container.classList.add('oneline-fullscreen');\n video.node().dispatchEvent(new CustomEvent('fullscreenEnter'));\n }\n }\n\n function toggleFullScreen() {\n const target = els.root;\n\n if (isFullscreenActive()) {\n if (target.requestFullscreen) {\n target.requestFullscreen();\n } else if (target.msRequestFullscreen) {\n target.msRequestFullscreen();\n } else if (target.mozRequestFullScreen) {\n target.mozRequestFullScreen();\n } else if (target.webkitRequestFullscreen) {\n target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (iOS && video.type === 'html') {\n video.node().webkitEnterFullscreen();\n }\n } else {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n }\n\n function isFullscreenActive() {\n return (\n !document.fullscreenElement &&\n !document.mozFullScreenElement &&\n !document.webkitFullscreenElement &&\n !document.msFullscreenElement\n );\n }\n\n const onClick = function () {\n toggleFullScreen();\n fullscreenButton.blur();\n };\n\n fullscreenButton.addEventListener('click', onClick);\n document.addEventListener('webkitfullscreenchange', onFullscreenChange);\n document.addEventListener('fullscreenchange', onFullscreenChange);\n document.addEventListener('mozfullscreenchange', onFullscreenChange);\n document.addEventListener('MSFullscreenChange', onFullscreenChange);\n\n cleanup.push(function () {\n fullscreenButton.removeEventListener('click', onClick);\n document.removeEventListener('webkitfullscreenchange', onFullscreenChange);\n document.removeEventListener('fullscreenchange', onFullscreenChange);\n document.removeEventListener('mozfullscreenchange', onFullscreenChange);\n document.removeEventListener('MSFullscreenChange', onFullscreenChange);\n });\n\n fullscreenButton.style.display = 'block';\n components.fullscreenButton = fullscreenButton;\n return components.fullscreenButton;\n}\n","import { isVimeo } from '../utils.js';\n\nexport function initProgressBar(ctx) {\n const { video, options, els, components, cleanup } = ctx;\n\n if (components.progressBar) {\n return components.progressBar;\n }\n\n let seekHolded = false;\n let progressInterval = null;\n const progressBar = els.progress;\n const progressBarFill = els.progressFill;\n const progressBarSeekFill = els.progressSeekFill;\n const container = els.wrap;\n\n video.onPlay(function () {\n startTrackProgress();\n });\n\n video.onPause(function () {\n stopTrackProgress();\n });\n\n video.onEnded(function () {\n progressBarFill.style.width = progressBar.offsetWidth + 'px';\n });\n\n function onMouseDown(e) {\n seek(e);\n seekHolded = true;\n }\n function onMouseUp() {\n seekHolded = false;\n }\n function onMouseMove(e) {\n onMove(e, false);\n }\n function onTouchStart(e) {\n seekHolded = true;\n e.returnValue = false;\n }\n function onTouchMove(e) {\n onMove(e, true);\n }\n function onTouchEnd() {\n seekHolded = false;\n }\n function onKeyDown(e) {\n if (e.keyCode === 39) {\n addTime(5);\n }\n if (e.keyCode === 37) {\n addTime(-5);\n }\n }\n\n progressBar.addEventListener('mousedown', onMouseDown, false);\n progressBar.addEventListener('mouseup', onMouseUp, false);\n progressBar.addEventListener('mousemove', onMouseMove, false);\n progressBar.addEventListener('touchstart', onTouchStart, false);\n progressBar.addEventListener('touchmove', onTouchMove, false);\n progressBar.addEventListener('touchend', onTouchEnd, false);\n document.addEventListener('keydown', onKeyDown, false);\n\n cleanup.push(function () {\n stopTrackProgress();\n progressBar.removeEventListener('mousedown', onMouseDown, false);\n progressBar.removeEventListener('mouseup', onMouseUp, false);\n progressBar.removeEventListener('mousemove', onMouseMove, false);\n progressBar.removeEventListener('touchstart', onTouchStart, false);\n progressBar.removeEventListener('touchmove', onTouchMove, false);\n progressBar.removeEventListener('touchend', onTouchEnd, false);\n document.removeEventListener('keydown', onKeyDown, false);\n });\n\n progressBar.style.display = 'block';\n components.progressBar = progressBar;\n return progressBar;\n\n function addTime(secondsToAdd) {\n video.getTime(function (time) {\n video.setTime(time + secondsToAdd);\n });\n }\n\n function onMove(e, isTouch) {\n if (isTouch) {\n e.returnValue = false;\n }\n const percent = getSeekedPercent(e);\n setSeekProgress(percent);\n if (seekHolded) {\n seek(e);\n }\n }\n\n function seek(e) {\n const percent = getSeekedPercent(e);\n if (!isVimeo(options.url)) {\n container.classList.add('oneline-load');\n }\n video.getDuration(function (videoDuration) {\n video.setTime((percent / 100) * videoDuration);\n updateProgress();\n });\n }\n\n function startTrackProgress() {\n (function progressTrack() {\n updateProgress();\n progressInterval = setTimeout(progressTrack, 50);\n })();\n }\n\n function stopTrackProgress() {\n clearTimeout(progressInterval);\n }\n\n function updateProgress() {\n video.getTime(function (time) {\n video.getDuration(function (videoDuration) {\n setProgress((time * 100) / videoDuration);\n });\n });\n }\n\n function setProgress(percent) {\n progressBarFill.style.width = percent + '%';\n }\n\n function setSeekProgress(percent) {\n progressBarSeekFill.style.width = percent + '%';\n }\n\n function getSeekedPercent(e) {\n const isTouch = e.changedTouches;\n const progressBarLeftOffset = progressBar.getBoundingClientRect().left;\n const offset = isTouch ? e.pageX : e.clientX;\n const position = offset - progressBarLeftOffset;\n const fullWidth = progressBar.offsetWidth;\n\n if (position > 0 && position < fullWidth) {\n return (position * 100) / fullWidth;\n }\n return 0;\n }\n}\n","import { formatTime } from '../utils.js';\n\nexport function initTime(ctx) {\n const { video, els, components } = ctx;\n const slot = els.time;\n\n video.getTime(function (time) {\n slot.innerHTML = formatTime(time);\n });\n slot.style.display = 'block';\n\n if (components.time) {\n return components.time;\n }\n\n setCurrentTime();\n video.onTimeupdate(function () {\n setCurrentTime();\n });\n\n components.time = slot;\n return slot;\n\n function setCurrentTime() {\n video.getTime(function (time) {\n slot.innerHTML = formatTime(time);\n });\n }\n}\n","export function initPoster(ctx) {\n const { video, options, els, components } = ctx;\n const poster = els.poster;\n const url = options.poster;\n\n if (!url || url === 'null') {\n poster.style.display = 'none';\n return null;\n }\n\n poster.style.backgroundColor = '#000';\n poster.style.backgroundImage = 'url(' + url + ')';\n\n if (components.poster) {\n return components.poster;\n }\n\n poster.style.display = 'block';\n\n video.onPlay(function () {\n poster.style.display = 'none';\n });\n\n components.poster = poster;\n return poster;\n}\n","export function initOverlay(ctx) {\n const { video, options, els, components, state } = ctx;\n const overlay = els.overlay;\n const container = els.wrap;\n\n if (options && options.overlayColor) {\n overlay.style.backgroundColor = options.overlayColor;\n } else {\n overlay.style.backgroundColor = null;\n }\n\n if (options && options.overlayOpacity != null) {\n overlay.dataset.opacity = options.overlayOpacity;\n video.getPaused(function (paused) {\n if (paused) {\n overlay.style.opacity = overlay.dataset.opacity;\n }\n });\n } else {\n delete overlay.dataset.opacity;\n overlay.style.opacity = null;\n }\n\n if (components.overlay) {\n return components.overlay;\n }\n\n overlay.classList.add('oneline-clickable');\n\n const event = state.userCanTouch ? 'touchend' : 'click';\n overlay.addEventListener(event, function () {\n container.classList.add('oneline-started');\n video.getPaused(function (paused) {\n paused ? video.play() : video.pause();\n });\n }, false);\n\n video.onPlay(function () {\n if (typeof overlay.dataset.opacity !== 'undefined') {\n overlay.style.opacity = 0;\n }\n });\n\n video.onPause(function () {\n if (typeof overlay.dataset.opacity !== 'undefined') {\n overlay.style.opacity = overlay.dataset.opacity;\n }\n });\n\n overlay.addEventListener('mouseleave', function () {\n container.classList.remove('oneline-hide-controls');\n container.classList.remove('oneline-hide-all');\n });\n\n overlay.addEventListener('mouseenter', function () {\n if (!state.userCanTouch) {\n container.classList.remove('oneline-hide-controls');\n container.classList.remove('oneline-hide-all');\n if (state.hideTimeout) {\n clearTimeout(state.hideTimeout);\n }\n }\n });\n\n overlay.style.display = 'block';\n components.overlay = overlay;\n return components.overlay;\n}\n","import templateHtml from './template.html?raw';\nimport { isVimeo } from './utils.js';\nimport { createHtml5Adapter } from './adapters/html5.js';\nimport { createVimeoAdapter } from './adapters/vimeo.js';\nimport { initPlayButton } from './controls/play-button.js';\nimport { initMuteButton } from './controls/mute-button.js';\nimport { initFullscreenButton } from './controls/fullscreen.js';\nimport { initProgressBar } from './controls/progress-bar.js';\nimport { initTime } from './controls/time.js';\nimport { initPoster } from './controls/poster.js';\nimport { initOverlay } from './controls/overlay.js';\n\nconst instances = new Set();\n\nexport function getInstances() {\n return instances;\n}\n\nfunction collectEls(root) {\n const wrap = root.querySelector('.oneline-wrap');\n return {\n root: root,\n wrap: wrap,\n video: wrap.querySelector('.oneline-video'),\n embed: wrap.querySelector('.oneline-embed'),\n poster: wrap.querySelector('.oneline-poster'),\n overlay: wrap.querySelector('.oneline-overlay'),\n play: wrap.querySelector('.oneline-play-pause'),\n time: wrap.querySelector('.oneline-time'),\n progress: wrap.querySelector('.oneline-progress'),\n progressFill: wrap.querySelector('.oneline-progress-fill'),\n progressSeekFill: wrap.querySelector('.oneline-progress-seek-fill'),\n muteButton: wrap.querySelector('.oneline-mute-button'),\n fullscreenButton: wrap.querySelector('.oneline-fullscreen-button'),\n };\n}\n\nfunction render(root) {\n const tpl = document.createElement('template');\n tpl.innerHTML = templateHtml.trim();\n root.classList.add('oneline-player');\n root.replaceChildren(tpl.content.cloneNode(true));\n return collectEls(root);\n}\n\nexport class Player {\n constructor(root, options) {\n this.root = root;\n this.options = options;\n this.components = {};\n this.cleanup = [];\n this.state = {\n userCanTouch: false,\n hideTimeout: null,\n debug: false,\n };\n this.video = null;\n this.els = null;\n this._ready = false;\n this._destroyed = false;\n }\n\n async init() {\n this.els = render(this.root);\n const els = this.els;\n const options = this.options;\n const state = this.state;\n\n const onTouch = function () {\n state.userCanTouch = true;\n };\n els.root.addEventListener('touchstart', onTouch, true);\n this.cleanup.push(function () {\n els.root.removeEventListener('touchstart', onTouch, true);\n });\n\n if (isVimeo(options.url)) {\n this.video = await createVimeoAdapter(els, options);\n } else {\n this.video = createHtml5Adapter(els, options, state.debug);\n els.wrap.classList.add('oneline-load');\n }\n\n const video = this.video;\n const container = els.wrap;\n\n if (options.style === 'dark') {\n container.classList.add('oneline-dark');\n }\n\n if (options.poster) {\n initPoster({ video, options, els, components: this.components });\n }\n\n if (options.overlay) {\n initOverlay({ video, options, els, components: this.components, state });\n }\n\n if (options.autopause) {\n const self = this;\n video.onPlay(function () {\n instances.forEach(function (other) {\n if (other !== self && !other._destroyed) {\n other.pause();\n }\n });\n });\n }\n\n video.onLoadstart(function () {\n if (state.debug) console.log('loadstart');\n if (!isVimeo(options.url)) {\n container.classList.add('oneline-load');\n }\n container.classList.remove('oneline-error');\n });\n\n video.onLoadend(function () {\n if (state.debug) console.log('loadend');\n container.classList.remove('oneline-load');\n });\n\n video.onPlay(function () {\n if (state.debug) console.log('play');\n container.classList.add('oneline-hide-controls');\n container.classList.add('oneline-playing');\n container.classList.remove('oneline-paused');\n state.hideTimeout = setTimeout(function () {\n container.classList.add('oneline-hide-all');\n }, 3000);\n });\n\n video.onPause(function () {\n if (state.debug) console.log('pause');\n container.classList.add('oneline-paused');\n container.classList.remove('oneline-load');\n container.classList.remove('oneline-playing');\n container.classList.remove('oneline-hide-all');\n clearTimeout(state.hideTimeout);\n });\n\n video.onSeeked(function () {\n container.classList.remove('oneline-load');\n });\n\n const onMouseLeave = function () {\n container.classList.remove('oneline-hide-controls');\n container.classList.remove('oneline-hide-all');\n container.classList.remove('active');\n };\n const onMouseEnter = function () {\n container.classList.remove('oneline-hide-controls');\n container.classList.remove('oneline-hide-all');\n clearTimeout(state.hideTimeout);\n };\n container.addEventListener('mouseleave', onMouseLeave);\n container.addEventListener('mouseenter', onMouseEnter);\n this.cleanup.push(function () {\n container.removeEventListener('mouseleave', onMouseLeave);\n container.removeEventListener('mouseenter', onMouseEnter);\n });\n\n const self = this;\n video.onReady(function () {\n if (self._destroyed) return;\n if (state.debug) console.log('loadedmetadata');\n\n container.classList.add('oneline-ready');\n container.classList.remove('oneline-load');\n if (!options.autoplay) {\n container.classList.add('oneline-paused');\n }\n\n const ctx = {\n video,\n options,\n els,\n components: self.components,\n state,\n cleanup: self.cleanup,\n };\n\n if (options.time) initTime(ctx);\n if (options.progressBar) initProgressBar(ctx);\n if (options.playButton) initPlayButton(ctx);\n if (options.muteButton) initMuteButton(ctx);\n if (options.fullscreenButton) initFullscreenButton(ctx);\n\n self._bindKeyboardFocus(ctx);\n self._ready = true;\n });\n\n instances.add(this);\n return this;\n }\n\n _bindKeyboardFocus(ctx) {\n const { video, els, components, cleanup } = ctx;\n const container = els.wrap;\n const keys = ['playButton', 'progressBar', 'muteButton', 'fullscreenButton'];\n\n function onKeyUp(e) {\n if (e.keyCode === 9) {\n container.classList.add('keyboard-control');\n }\n }\n function onKeyDown(e) {\n const isButton = document.activeElement && document.activeElement.tagName === 'BUTTON';\n if (e.keyCode === 32 && !isButton) {\n video.getPaused(function (paused) {\n paused ? video.play() : video.pause();\n });\n }\n }\n\n document.addEventListener('keyup', onKeyUp);\n document.addEventListener('keydown', onKeyDown);\n cleanup.push(function () {\n document.removeEventListener('keyup', onKeyUp);\n document.removeEventListener('keydown', onKeyDown);\n });\n\n keys.forEach(function (key) {\n const el = components[key];\n if (!el) return;\n el.addEventListener('click', function (e) {\n if (e.clientX || e.clientY) {\n container.classList.remove('keyboard-control');\n }\n });\n el.addEventListener('focus', function () {\n container.classList.add('active');\n });\n el.addEventListener('blur', function () {\n container.classList.remove('active');\n });\n });\n }\n\n play() {\n if (this.video) this.video.play();\n }\n\n pause() {\n if (this.video) this.video.pause();\n }\n\n destroy() {\n if (this._destroyed) return;\n this._destroyed = true;\n clearTimeout(this.state.hideTimeout);\n this.cleanup.forEach(function (fn) {\n try {\n fn();\n } catch (e) {\n /* ignore */\n }\n });\n this.cleanup = [];\n if (this.video && this.video.destroy) {\n this.video.destroy();\n }\n instances.delete(this);\n this.root.classList.remove('oneline-player');\n this.root.replaceChildren();\n }\n}\n","import cssText from './style.css?inline';\n\nlet injected = false;\n\nexport function ensureStyles() {\n if (injected || typeof document === 'undefined') {\n return;\n }\n if (document.querySelector('style[data-onelineplayer]')) {\n injected = true;\n return;\n }\n const style = document.createElement('style');\n style.setAttribute('data-onelineplayer', '1');\n style.textContent = cssText;\n document.head.appendChild(style);\n injected = true;\n}\n","import { Player } from './Player.js';\nimport { resolveElement, normalizeOptions } from './utils.js';\nimport { ensureStyles } from './inject-css.js';\n\n/**\n * Mount onelineplayer into a container.\n * @param {string|Element} target\n * @param {object} options\n * @returns {Promise<Player>}\n */\nexport function mount(target, options) {\n ensureStyles();\n const root = resolveElement(target);\n const opts = normalizeOptions(options);\n const player = new Player(root, opts);\n return player.init();\n}\n\n/**\n * Destroy a player instance previously returned by mount.\n * @param {Player} player\n */\nexport function destroy(player) {\n if (player && typeof player.destroy === 'function') {\n player.destroy();\n }\n}\n\nconst onelineplayer = {\n mount,\n destroy,\n};\n\nexport default onelineplayer;\n"],"names":["templateHtml","isVimeo","url","videoIsRestricted","restrictedUrls","i","formatTime","seconds","hoursNum","minutesNum","secondsNum","time","resolveElement","target","el","normalizeOptions","options","opts","createHtml5Adapter","els","debug","player","container","errorMessage","text","nextOptions","callback","value","VIMEO_SDK","vimeoSdkPromise","loadVimeoSdk","resolve","reject","existing","script","getVimeoOptions","createVimeoAdapter","Vimeo","volume","initPlayButton","ctx","video","components","state","component","iconsFill","icons","event","paused","initMuteButton","muteButton","muted","initFullscreenButton","cleanup","iOS","fullscreenButton","onFullscreenChange","isFullscreenActive","toggleFullScreen","onClick","initProgressBar","seekHolded","progressInterval","progressBar","progressBarFill","progressBarSeekFill","startTrackProgress","stopTrackProgress","onMouseDown","e","seek","onMouseUp","onMouseMove","onMove","onTouchStart","onTouchMove","onTouchEnd","onKeyDown","addTime","secondsToAdd","isTouch","percent","getSeekedPercent","setSeekProgress","videoDuration","updateProgress","progressTrack","setProgress","progressBarLeftOffset","position","fullWidth","initTime","slot","setCurrentTime","initPoster","poster","initOverlay","overlay","instances","collectEls","root","wrap","render","tpl","Player","onTouch","self","other","onMouseLeave","onMouseEnter","keys","onKeyUp","isButton","key","fn","injected","ensureStyles","style","cssText","mount","destroy","onelineplayer"],"mappings":"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"}
|