From 1cd989433389d9c74dfd58c130c2f93ada14e5fd Mon Sep 17 00:00:00 2001 From: BobbyWibowo Date: Fri, 27 May 2022 06:46:02 +0000 Subject: [PATCH] dist: rebuilt client assets and bumped v1 version string --- dist/css/player.css | 2 +- dist/css/player.css.map | 2 +- dist/js/player.js | 2 +- dist/js/player.js.map | 2 +- src/versions.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/css/player.css b/dist/css/player.css index b1e13bb..03f1a53 100644 --- a/dist/css/player.css +++ b/dist/css/player.css @@ -1,2 +1,2 @@ -#inputForm,#playerContainer{margin-bottom:1.5rem}.video-js{margin:0 auto}.video-js.vjs-wavesurfer.vjs-fluid wave.vjs-wavedisplay{height:calc(100% - 30px)!important} +#inputForm,#playerContainer{margin-bottom:1.5rem}.video-js{margin:0 auto}.video-js.vjs-wavesurfer.vjs-fluid wave.vjs-wavedisplay{height:calc(100% - 30px)!important}.video-js .vjs-loop-button .vjs-icon-placeholder,.video-js .vjs-seek-button .vjs-icon-placeholder{cursor:pointer;font-family:fontello;font-style:normal;font-weight:400}.video-js .vjs-loop-button .vjs-icon-placeholder:before,.video-js .vjs-seek-button .vjs-icon-placeholder:before{font-size:1.5em;line-height:1.97}.video-js .vjs-loop-button:not(.vjs-loop-enabled){color:#7a7a7a}.video-js .vjs-loop-button .vjs-icon-placeholder:before{content:"\e81f"}.video-js .vjs-seek-button.skip-back .vjs-icon-placeholder:before{content:"\e81e";transform:none}.video-js .vjs-seek-button.skip-forward .vjs-icon-placeholder:before{content:"\e818";transform:none} /*# sourceMappingURL=player.css.map */ diff --git a/dist/css/player.css.map b/dist/css/player.css.map index 30a33d1..e899180 100644 --- a/dist/css/player.css.map +++ b/dist/css/player.css.map @@ -1 +1 @@ -{"version":3,"sources":["css/player.scss","css/player.css"],"names":[],"mappings":"AAKA,4BAEE,oBCAF,CDGA,UACE,aCAF,CDII,wDACE,kCCCN","file":"player.css","sourcesContent":["@charset \"utf-8\";\n@import \"_variables\";\n\n/** Main **/\n\n#inputForm,\n#playerContainer {\n margin-bottom: 1.5rem\n}\n\n.video-js {\n margin: 0 auto;\n\n &.vjs-wavesurfer.vjs-fluid {\n /* stylelint-disable-next-line selector-type-no-unknown */\n wave.vjs-wavedisplay {\n height: calc(100% - 30px) !important\n }\n }\n}\n","/* stylelint-disable scss/dollar-variable-empty-line-before */\n/* stylelint-disable-next-line value-keyword-case */\n/** Bulma: Variables **/\n/** Main **/\n#inputForm,\n#playerContainer {\n margin-bottom: 1.5rem;\n}\n\n.video-js {\n margin: 0 auto;\n}\n.video-js.vjs-wavesurfer.vjs-fluid {\n /* stylelint-disable-next-line selector-type-no-unknown */\n}\n.video-js.vjs-wavesurfer.vjs-fluid wave.vjs-wavedisplay {\n height: calc(100% - 30px) !important;\n}"]} \ No newline at end of file +{"version":3,"sources":["css/player.scss","css/player.css"],"names":[],"mappings":"AAKA,4BAEE,oBCAF,CDGA,UACE,aCAF,CDII,wDACE,kCCCN,CDKI,kGAKE,cAAA,CAHA,oBAAA,CAEA,iBAAA,CADA,eCAN,CDIM,gHACE,eAAA,CACA,gBCDR,CDOI,kDACE,aCLN,CDQI,wDACE,eCNN,CDWI,kEACE,eAAA,CACA,cCTN,CDYI,qEACE,eAAA,CACA,cCVN","file":"player.css","sourcesContent":["@charset \"utf-8\";\n@import \"_variables\";\n\n/** Main **/\n\n#inputForm,\n#playerContainer {\n margin-bottom: 1.5rem\n}\n\n.video-js {\n margin: 0 auto;\n\n &.vjs-wavesurfer.vjs-fluid {\n /* stylelint-disable-next-line selector-type-no-unknown */\n wave.vjs-wavedisplay {\n height: calc(100% - 30px) !important\n }\n }\n\n .vjs-loop-button,\n .vjs-seek-button {\n .vjs-icon-placeholder {\n /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */\n font-family: fontello;\n font-weight: normal;\n font-style: normal;\n cursor: pointer;\n\n &::before {\n font-size: 1.5em;\n line-height: 1.97\n }\n }\n }\n\n .vjs-loop-button {\n &:not(.vjs-loop-enabled) {\n color: $grey\n }\n\n .vjs-icon-placeholder::before {\n content: \"\\e81f\"\n }\n }\n\n .vjs-seek-button {\n &.skip-back .vjs-icon-placeholder::before {\n content: \"\\e81e\";\n transform: none\n }\n\n &.skip-forward .vjs-icon-placeholder::before {\n content: \"\\e818\";\n transform: none\n }\n }\n}\n","/* stylelint-disable scss/dollar-variable-empty-line-before */\n/* stylelint-disable-next-line value-keyword-case */\n/** Bulma: Variables **/\n/** Main **/\n#inputForm,\n#playerContainer {\n margin-bottom: 1.5rem;\n}\n\n.video-js {\n margin: 0 auto;\n}\n.video-js.vjs-wavesurfer.vjs-fluid {\n /* stylelint-disable-next-line selector-type-no-unknown */\n}\n.video-js.vjs-wavesurfer.vjs-fluid wave.vjs-wavedisplay {\n height: calc(100% - 30px) !important;\n}\n.video-js .vjs-loop-button .vjs-icon-placeholder,\n.video-js .vjs-seek-button .vjs-icon-placeholder {\n /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */\n font-family: fontello;\n font-weight: normal;\n font-style: normal;\n cursor: pointer;\n}\n.video-js .vjs-loop-button .vjs-icon-placeholder::before,\n.video-js .vjs-seek-button .vjs-icon-placeholder::before {\n font-size: 1.5em;\n line-height: 1.97;\n}\n.video-js .vjs-loop-button:not(.vjs-loop-enabled) {\n color: hsl(0deg, 0%, 48%);\n}\n.video-js .vjs-loop-button .vjs-icon-placeholder::before {\n content: \"\\e81f\";\n}\n.video-js .vjs-seek-button.skip-back .vjs-icon-placeholder::before {\n content: \"\\e81e\";\n transform: none;\n}\n.video-js .vjs-seek-button.skip-forward .vjs-icon-placeholder::before {\n content: \"\\e818\";\n transform: none;\n}"]} \ No newline at end of file diff --git a/dist/js/player.js b/dist/js/player.js index 8fe1985..9685ba7 100644 --- a/dist/js/player.js +++ b/dist/js/player.js @@ -1,2 +1,2 @@ -var lsKeys={},page={urlPrefix:null,urlIdentifier:null,urlInput:document.querySelector("#identifier"),reloadBtn:document.querySelector("#reloadBtn"),downloadBtn:document.querySelector("#downloadBtn"),uploadRoot:null,titleFormat:null,videoContainer:document.querySelector("#playerContainer"),player:null};window.HELP_IMPROVE_VIDEOJS=!1,page.onError=function(e){console.error(e);var r=document.createElement("div");return r.innerHTML="\n

"+e.toString()+"

\n

Please check your console for more information.

\n ",swal({title:"An error occurred!",icon:"error",content:r})},page.onAxiosError=function(e){var r={520:"Unknown Error",521:"Web Server Is Down",522:"Connection Timed Out",523:"Origin Is Unreachable",524:"A Timeout Occurred",525:"SSL Handshake Failed",526:"Invalid SSL Certificate",527:"Railgun Error",530:"Origin DNS Error"}[e.response.status]||e.response.statusText,o=e.response.data&&e.response.data.description?e.response.data.description:"";return swal(e.response.status+" "+r,o,"error")},page.toggleReloadBtn=function(e){e?(page.reloadBtn.classList.remove("is-loading"),page.reloadBtn.removeAttribute("disabled")):(page.reloadBtn.classList.add("is-loading"),page.reloadBtn.setAttribute("disabled","disabled"))},page.reloadVideo=function(){if(page.urlInput.value){page.toggleReloadBtn(!1);var e=page.uploadRoot+"/"+page.urlInput.value;axios.head(e).then((function(r){if(![200,304].includes(r.status))return page.toggleReloadBtn(!0),page.onAxiosError(r);var o=r.headers["content-type"]||"",t=o.startsWith("video/"),a=o.startsWith("audio/");if(!t&&!a)return page.toggleReloadBtn(!0),swal("An error occurred!","The requested upload does not appear to be a media file.","error");page.urlIdentifier=page.urlInput.value,page.player&&(page.player.dispose(),page.videoContainer.innerHTML="");var n=document.createElement("video-js");n.id="video-js",n.className="video-js vjs-default-skin vjs-fluid vjs-big-play-centered",n.setAttribute("controls",!0),n.setAttribute("preload","auto"),page.videoContainer.appendChild(n);var i={language:"en",playbackRates:[.25,.5,.75,1,1.25,1.5,1.75,2],responsive:!0};a&&(i.plugins={wavesurfer:{responsive:!0}}),page.player=videojs("video-js",i,(function(){var r="Using video.js "+videojs.VERSION;a&&(r+=" with videojs-wavesurfer "+videojs.getPluginVersion("wavesurfer")+" and wavesurfer.js "+WaveSurfer.VERSION),videojs.log(r),page.player.src({src:e,type:o})})),page.player.seekButtons({forward:10,back:10}),page.titleFormat&&(document.title=page.titleFormat.replace(/%identifier%/g,page.urlIdentifier)),page.downloadBtn&&page.downloadBtn.setAttribute("href",e),window.history.pushState(null,null,page.urlPrefix+page.urlIdentifier),page.toggleReloadBtn(!0)})).catch((function(e){page.toggleReloadBtn(!0),void 0!==e.response?page.onAxiosError(e):page.onError(e)}))}},window.addEventListener("DOMContentLoaded",(function(){var e=document.querySelector("#mainScript");if(e&&void 0!==e.dataset.uploadRoot){page.uploadRoot=e.dataset.uploadRoot,page.titleFormat=e.dataset.titleFormat;var r=window.location.protocol+"//"+window.location.host,o=window.location.pathname.match(/.*\/(.*)$/);if(!o||!o[1])return swal("An error occurred!","Failed to parse upload identifier from URL.","error");if(page.urlIdentifier=o[1],r+=window.location.pathname.substring(0,window.location.pathname.indexOf(o[1])),page.urlPrefix=r,page.urlInput){page.urlInput.value=page.urlIdentifier;var t=document.querySelector("#inputForm");t.addEventListener("submit",(function(e){e.preventDefault()})),page.videoContainer&&(page.reloadBtn=document.querySelector("#reloadBtn"),page.reloadBtn&&page.reloadBtn.addEventListener("click",(function(e){t.checkValidity()&&page.reloadVideo()})),page.reloadVideo())}}})); +var lsKeys={},page={urlPrefix:null,urlIdentifier:null,urlInput:document.querySelector("#identifier"),reloadBtn:document.querySelector("#reloadBtn"),downloadBtn:document.querySelector("#downloadBtn"),uploadRoot:null,titleFormat:null,videoContainer:document.querySelector("#playerContainer"),player:null};window.HELP_IMPROVE_VIDEOJS=!1,page.onError=function(e){console.error(e);var o=document.createElement("div");return o.innerHTML="\n

"+e.toString()+"

\n

Please check your console for more information.

\n ",swal({title:"An error occurred!",icon:"error",content:o})},page.onAxiosError=function(e){var o={520:"Unknown Error",521:"Web Server Is Down",522:"Connection Timed Out",523:"Origin Is Unreachable",524:"A Timeout Occurred",525:"SSL Handshake Failed",526:"Invalid SSL Certificate",527:"Railgun Error",530:"Origin DNS Error"}[e.response.status]||e.response.statusText,t=e.response.data&&e.response.data.description?e.response.data.description:"";return swal(e.response.status+" "+o,t,"error")},page.toggleReloadBtn=function(e){e?(page.reloadBtn.classList.remove("is-loading"),page.reloadBtn.removeAttribute("disabled")):(page.reloadBtn.classList.add("is-loading"),page.reloadBtn.setAttribute("disabled","disabled"))},page.reloadVideo=function(){if(page.urlInput.value){page.toggleReloadBtn(!1);var e=page.uploadRoot+"/"+page.urlInput.value;axios.head(e).then((function(o){if(![200,304].includes(o.status))return page.toggleReloadBtn(!0),page.onAxiosError(o);var t=o.headers["content-type"]||"",r=t.startsWith("video/"),a=t.startsWith("audio/");if(!r&&!a)return page.toggleReloadBtn(!0),swal("An error occurred!","The requested upload does not appear to be a media file.","error");page.urlIdentifier=page.urlInput.value,page.player&&(page.player.dispose(),page.videoContainer.innerHTML="");var n=document.createElement("video-js");n.id="video-js",n.className="video-js vjs-default-skin vjs-fluid vjs-big-play-centered",n.setAttribute("controls",!0),n.setAttribute("preload","auto"),page.videoContainer.appendChild(n);var i={language:"en",playbackRates:[.25,.5,.75,1,1.25,1.5,1.75,2],responsive:!0,plugins:{}};a&&(i.plugins.wavesurfer={responsive:!0}),page.player=videojs("video-js",i,(function(){var o="Using video.js "+videojs.VERSION;a&&(o+=" with videojs-wavesurfer "+videojs.getPluginVersion("wavesurfer")+" and wavesurfer.js "+WaveSurfer.VERSION),videojs.log(o),page.player.src({src:e,type:t})})),page.player.seekButtons({forward:10,back:10});var l=videojs.getComponent("Button"),d=function(){return page.player.loop()?"Disable loop":"Enable loop"},p=videojs.extend(l,{constructor:function(){l.apply(this,arguments),this.addClass("vjs-loop-button"),this.controlText(d())},handleClick:function(){page.player.loop(!page.player.loop()),this.toggleClass("vjs-loop-enabled",page.player.loop()),this.controlText(d())}});videojs.registerComponent("loopButton",p),page.player.getChild("controlBar").addChild("loopButton"),page.titleFormat&&(document.title=page.titleFormat.replace(/%identifier%/g,page.urlIdentifier)),page.downloadBtn&&page.downloadBtn.setAttribute("href",e),window.history.pushState(null,null,page.urlPrefix+page.urlIdentifier),page.toggleReloadBtn(!0)})).catch((function(e){page.toggleReloadBtn(!0),void 0!==e.response?page.onAxiosError(e):page.onError(e)}))}},window.addEventListener("DOMContentLoaded",(function(){var e=document.querySelector("#mainScript");if(e&&void 0!==e.dataset.uploadRoot){page.uploadRoot=e.dataset.uploadRoot,page.titleFormat=e.dataset.titleFormat;var o=window.location.protocol+"//"+window.location.host,t=window.location.pathname.match(/.*\/(.*)$/);if(!t||!t[1])return swal("An error occurred!","Failed to parse upload identifier from URL.","error");if(page.urlIdentifier=t[1],o+=window.location.pathname.substring(0,window.location.pathname.indexOf(t[1])),page.urlPrefix=o,page.urlInput){page.urlInput.value=page.urlIdentifier;var r=document.querySelector("#inputForm");r.addEventListener("submit",(function(e){e.preventDefault()})),page.videoContainer&&(page.reloadBtn=document.querySelector("#reloadBtn"),page.reloadBtn&&page.reloadBtn.addEventListener("click",(function(e){r.checkValidity()&&page.reloadVideo()})),page.reloadVideo())}}})); //# sourceMappingURL=player.js.map diff --git a/dist/js/player.js.map b/dist/js/player.js.map index fb17722..09c9d24 100644 --- a/dist/js/player.js.map +++ b/dist/js/player.js.map @@ -1 +1 @@ -{"version":3,"sources":["player.js"],"names":["const","lsKeys","page","urlPrefix","urlIdentifier","urlInput","document","querySelector","reloadBtn","downloadBtn","uploadRoot","titleFormat","videoContainer","player","window","HELP_IMPROVE_VIDEOJS","onError","error","console","content","createElement","innerHTML","toString","swal","title","icon","onAxiosError","statusText","response","status","description","data","toggleReloadBtn","enabled","classList","remove","removeAttribute","add","setAttribute","reloadVideo","value","src","axios","head","then","includes","type","headers","isvideo","startsWith","isaudio","dispose","videoElement","id","className","appendChild","options","language","playbackRates","responsive","plugins","wavesurfer","videojs","let","message","getPluginVersion","WaveSurfer","log","seekButtons","forward","back","replace","history","pushState","catch","addEventListener","mainScript","dataset","location","protocol","host","match","pathname","substring","indexOf","form","event","preventDefault","checkValidity"],"mappings":"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","file":"player.js","sourcesContent":["/* global swal, axios, videojs, WaveSurfer */\n\n// eslint-disable-next-line no-unused-vars\nconst lsKeys = {}\n\n// eslint-disable-next-line no-unused-vars\nconst page = {\n urlPrefix: null,\n urlIdentifier: null,\n\n urlInput: document.querySelector('#identifier'),\n reloadBtn: document.querySelector('#reloadBtn'),\n downloadBtn: document.querySelector('#downloadBtn'),\n uploadRoot: null,\n titleFormat: null,\n\n videoContainer: document.querySelector('#playerContainer'),\n player: null\n}\n\n// Disable video.js telemetry (should already be disabled by default since v7 though)\nwindow.HELP_IMPROVE_VIDEOJS = false\n\n// Handler for regular JS errors\npage.onError = error => {\n console.error(error)\n\n const content = document.createElement('div')\n content.innerHTML = `\n

${error.toString()}

\n

Please check your console for more information.

\n `\n return swal({\n title: 'An error occurred!',\n icon: 'error',\n content\n })\n}\n\n// Handler for Axios errors\npage.onAxiosError = error => {\n // Better Cloudflare errors\n const cloudflareErrors = {\n 520: 'Unknown Error',\n 521: 'Web Server Is Down',\n 522: 'Connection Timed Out',\n 523: 'Origin Is Unreachable',\n 524: 'A Timeout Occurred',\n 525: 'SSL Handshake Failed',\n 526: 'Invalid SSL Certificate',\n 527: 'Railgun Error',\n 530: 'Origin DNS Error'\n }\n\n const statusText = cloudflareErrors[error.response.status] || error.response.statusText\n\n const description = error.response.data && error.response.data.description\n ? error.response.data.description\n : ''\n return swal(`${error.response.status} ${statusText}`, description, 'error')\n}\n\npage.toggleReloadBtn = enabled => {\n if (enabled) {\n page.reloadBtn.classList.remove('is-loading')\n page.reloadBtn.removeAttribute('disabled')\n } else {\n page.reloadBtn.classList.add('is-loading')\n page.reloadBtn.setAttribute('disabled', 'disabled')\n }\n}\n\npage.reloadVideo = () => {\n if (!page.urlInput.value) return\n\n page.toggleReloadBtn(false)\n const src = `${page.uploadRoot}/${page.urlInput.value}`\n\n axios.head(src).then(response => {\n if (![200, 304].includes(response.status)) {\n page.toggleReloadBtn(true)\n return page.onAxiosError(response)\n }\n\n const type = response.headers['content-type'] || ''\n const isvideo = type.startsWith('video/')\n const isaudio = type.startsWith('audio/')\n if (!isvideo && !isaudio) {\n page.toggleReloadBtn(true)\n return swal('An error occurred!', 'The requested upload does not appear to be a media file.', 'error')\n }\n\n page.urlIdentifier = page.urlInput.value\n\n if (page.player) {\n page.player.dispose()\n page.videoContainer.innerHTML = ''\n }\n\n const videoElement = document.createElement('video-js')\n videoElement.id = 'video-js'\n videoElement.className = 'video-js vjs-default-skin vjs-fluid vjs-big-play-centered'\n videoElement.setAttribute('controls', true)\n videoElement.setAttribute('preload', 'auto')\n\n page.videoContainer.appendChild(videoElement)\n\n const options = {\n language: 'en',\n playbackRates: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],\n responsive: true\n }\n\n if (isaudio) {\n options.plugins = {\n wavesurfer: {\n responsive: true\n }\n }\n }\n\n page.player = videojs('video-js', options, () => {\n let message = `Using video.js ${videojs.VERSION}`\n if (isaudio) {\n message += ` with videojs-wavesurfer ${videojs.getPluginVersion('wavesurfer')} and wavesurfer.js ${WaveSurfer.VERSION}`\n }\n videojs.log(message)\n page.player.src({ src, type })\n })\n page.player.seekButtons({ forward: 10, back: 10 })\n\n if (page.titleFormat) {\n document.title = page.titleFormat.replace(/%identifier%/g, page.urlIdentifier)\n }\n\n if (page.downloadBtn) {\n page.downloadBtn.setAttribute('href', src)\n }\n\n window.history.pushState(null, null, page.urlPrefix + page.urlIdentifier)\n page.toggleReloadBtn(true)\n }).catch(error => {\n page.toggleReloadBtn(true)\n if (typeof error.response !== 'undefined') page.onAxiosError(error)\n else page.onError(error)\n })\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const mainScript = document.querySelector('#mainScript')\n if (!mainScript || typeof mainScript.dataset.uploadRoot === 'undefined') return\n\n page.uploadRoot = mainScript.dataset.uploadRoot\n page.titleFormat = mainScript.dataset.titleFormat\n\n let urlPrefix = window.location.protocol + '//' + window.location.host\n const match = window.location.pathname.match(/.*\\/(.*)$/)\n if (!match || !match[1]) {\n return swal('An error occurred!', 'Failed to parse upload identifier from URL.', 'error')\n }\n\n page.urlIdentifier = match[1]\n urlPrefix += window.location.pathname.substring(0, window.location.pathname.indexOf(match[1]))\n page.urlPrefix = urlPrefix\n\n if (!page.urlInput) return\n page.urlInput.value = page.urlIdentifier\n\n // Prevent default form's submit actio\n const form = document.querySelector('#inputForm')\n form.addEventListener('submit', event => {\n event.preventDefault()\n })\n\n if (!page.videoContainer) return\n\n page.reloadBtn = document.querySelector('#reloadBtn')\n if (page.reloadBtn) {\n page.reloadBtn.addEventListener('click', event => {\n if (!form.checkValidity()) return\n page.reloadVideo()\n })\n }\n\n page.reloadVideo()\n})\n"]} \ No newline at end of file +{"version":3,"sources":["player.js"],"names":["const","lsKeys","page","urlPrefix","urlIdentifier","urlInput","document","querySelector","reloadBtn","downloadBtn","uploadRoot","titleFormat","videoContainer","player","window","HELP_IMPROVE_VIDEOJS","onError","error","console","content","createElement","innerHTML","toString","swal","title","icon","onAxiosError","statusText","response","status","description","data","toggleReloadBtn","enabled","classList","remove","removeAttribute","add","setAttribute","reloadVideo","value","src","axios","head","then","includes","type","headers","isvideo","startsWith","isaudio","dispose","videoElement","id","className","appendChild","options","language","playbackRates","responsive","plugins","wavesurfer","videojs","let","message","getPluginVersion","WaveSurfer","log","seekButtons","forward","back","videoJSButton","getComponent","loopButtonText","loop","loopButton","extend","constructor","apply","this","arguments","addClass","controlText","handleClick","toggleClass","registerComponent","getChild","addChild","replace","history","pushState","catch","addEventListener","mainScript","dataset","location","protocol","host","match","pathname","substring","indexOf","form","event","preventDefault","checkValidity"],"mappings":"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","file":"player.js","sourcesContent":["/* global swal, axios, videojs, WaveSurfer */\n\n// eslint-disable-next-line no-unused-vars\nconst lsKeys = {}\n\n// eslint-disable-next-line no-unused-vars\nconst page = {\n urlPrefix: null,\n urlIdentifier: null,\n\n urlInput: document.querySelector('#identifier'),\n reloadBtn: document.querySelector('#reloadBtn'),\n downloadBtn: document.querySelector('#downloadBtn'),\n uploadRoot: null,\n titleFormat: null,\n\n videoContainer: document.querySelector('#playerContainer'),\n player: null\n}\n\n// Disable video.js telemetry (should already be disabled by default since v7 though)\nwindow.HELP_IMPROVE_VIDEOJS = false\n\n// Handler for regular JS errors\npage.onError = error => {\n console.error(error)\n\n const content = document.createElement('div')\n content.innerHTML = `\n

${error.toString()}

\n

Please check your console for more information.

\n `\n return swal({\n title: 'An error occurred!',\n icon: 'error',\n content\n })\n}\n\n// Handler for Axios errors\npage.onAxiosError = error => {\n // Better Cloudflare errors\n const cloudflareErrors = {\n 520: 'Unknown Error',\n 521: 'Web Server Is Down',\n 522: 'Connection Timed Out',\n 523: 'Origin Is Unreachable',\n 524: 'A Timeout Occurred',\n 525: 'SSL Handshake Failed',\n 526: 'Invalid SSL Certificate',\n 527: 'Railgun Error',\n 530: 'Origin DNS Error'\n }\n\n const statusText = cloudflareErrors[error.response.status] || error.response.statusText\n\n const description = error.response.data && error.response.data.description\n ? error.response.data.description\n : ''\n return swal(`${error.response.status} ${statusText}`, description, 'error')\n}\n\npage.toggleReloadBtn = enabled => {\n if (enabled) {\n page.reloadBtn.classList.remove('is-loading')\n page.reloadBtn.removeAttribute('disabled')\n } else {\n page.reloadBtn.classList.add('is-loading')\n page.reloadBtn.setAttribute('disabled', 'disabled')\n }\n}\n\npage.reloadVideo = () => {\n if (!page.urlInput.value) return\n\n page.toggleReloadBtn(false)\n const src = `${page.uploadRoot}/${page.urlInput.value}`\n\n axios.head(src).then(response => {\n if (![200, 304].includes(response.status)) {\n page.toggleReloadBtn(true)\n return page.onAxiosError(response)\n }\n\n const type = response.headers['content-type'] || ''\n const isvideo = type.startsWith('video/')\n const isaudio = type.startsWith('audio/')\n if (!isvideo && !isaudio) {\n page.toggleReloadBtn(true)\n return swal('An error occurred!', 'The requested upload does not appear to be a media file.', 'error')\n }\n\n page.urlIdentifier = page.urlInput.value\n\n if (page.player) {\n page.player.dispose()\n page.videoContainer.innerHTML = ''\n }\n\n const videoElement = document.createElement('video-js')\n videoElement.id = 'video-js'\n videoElement.className = 'video-js vjs-default-skin vjs-fluid vjs-big-play-centered'\n videoElement.setAttribute('controls', true)\n videoElement.setAttribute('preload', 'auto')\n\n page.videoContainer.appendChild(videoElement)\n\n const options = {\n language: 'en',\n playbackRates: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],\n responsive: true,\n plugins: {}\n }\n\n if (isaudio) {\n options.plugins.wavesurfer = {\n responsive: true\n }\n }\n\n page.player = videojs('video-js', options, () => {\n let message = `Using video.js ${videojs.VERSION}`\n if (isaudio) {\n message += ` with videojs-wavesurfer ${videojs.getPluginVersion('wavesurfer')} and wavesurfer.js ${WaveSurfer.VERSION}`\n }\n videojs.log(message)\n page.player.src({ src, type })\n })\n page.player.seekButtons({ forward: 10, back: 10 })\n\n const videoJSButton = videojs.getComponent('Button')\n const loopButtonText = () => page.player.loop()\n ? 'Disable loop'\n : 'Enable loop'\n const loopButton = videojs.extend(videoJSButton, {\n constructor () {\n videoJSButton.apply(this, arguments)\n this.addClass('vjs-loop-button')\n this.controlText(loopButtonText())\n },\n handleClick () {\n page.player.loop(!page.player.loop())\n this.toggleClass('vjs-loop-enabled', page.player.loop())\n this.controlText(loopButtonText())\n }\n })\n videojs.registerComponent('loopButton', loopButton)\n page.player.getChild('controlBar').addChild('loopButton')\n\n if (page.titleFormat) {\n document.title = page.titleFormat.replace(/%identifier%/g, page.urlIdentifier)\n }\n\n if (page.downloadBtn) {\n page.downloadBtn.setAttribute('href', src)\n }\n\n window.history.pushState(null, null, page.urlPrefix + page.urlIdentifier)\n page.toggleReloadBtn(true)\n }).catch(error => {\n page.toggleReloadBtn(true)\n if (typeof error.response !== 'undefined') page.onAxiosError(error)\n else page.onError(error)\n })\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const mainScript = document.querySelector('#mainScript')\n if (!mainScript || typeof mainScript.dataset.uploadRoot === 'undefined') return\n\n page.uploadRoot = mainScript.dataset.uploadRoot\n page.titleFormat = mainScript.dataset.titleFormat\n\n let urlPrefix = window.location.protocol + '//' + window.location.host\n const match = window.location.pathname.match(/.*\\/(.*)$/)\n if (!match || !match[1]) {\n return swal('An error occurred!', 'Failed to parse upload identifier from URL.', 'error')\n }\n\n page.urlIdentifier = match[1]\n urlPrefix += window.location.pathname.substring(0, window.location.pathname.indexOf(match[1]))\n page.urlPrefix = urlPrefix\n\n if (!page.urlInput) return\n page.urlInput.value = page.urlIdentifier\n\n // Prevent default form's submit actio\n const form = document.querySelector('#inputForm')\n form.addEventListener('submit', event => {\n event.preventDefault()\n })\n\n if (!page.videoContainer) return\n\n page.reloadBtn = document.querySelector('#reloadBtn')\n if (page.reloadBtn) {\n page.reloadBtn.addEventListener('click', event => {\n if (!form.checkValidity()) return\n page.reloadVideo()\n })\n }\n\n page.reloadVideo()\n})\n"]} \ No newline at end of file diff --git a/src/versions.json b/src/versions.json index c063f38..052c9d5 100644 --- a/src/versions.json +++ b/src/versions.json @@ -1,5 +1,5 @@ { - "1": "1653633462", + "1": "1653633961", "2": "1602515119", "3": "1650485321", "4": "1602515119",