ps-tcplayer
Version:
Tencent Cloud Player component with Vue2/Vue3 compatibility
2 lines (1 loc) • 49.8 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue-demi")):"function"==typeof define&&define.amd?define(["exports","vue-demi"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TcPlayer={},e.vueDemi)}(this,function(e,t){"use strict";function i(e,t){let n=[...e];if(!n.length)return t&&t(),!1;let s=n.shift();if(!s)return i(n,t),!1;const r=/\.js(\?.*)?$/.test(s),a=/\.css(\?.*)?$/.test(s);r?function(e,t){if(document.querySelector(`script[src="${e}"]`))return t&&t(),!1;var i=document.createElement("script"),n=t||function(){};i.type="text/javascript",i.readyState?i.onreadystatechange=function(){"loaded"==i.readyState||i.readyState,i.onreadystatechange=null,n()}:(i.onload=function(){n()},i.onerror=function(e){n()});i.src=e,document.querySelector("body").appendChild(i)}(s,()=>{i(n,t)}):a?function(e,t){if(document.querySelector(`link[href="${e}"]`))return t&&t(),!1;var i=document.createElement("link"),n=t||function(){};i.rel="stylesheet",i.readyState?i.onreadystatechange=function(){"loaded"==i.readyState||i.readyState,i.onreadystatechange=null,n()}:(i.onload=function(){n()},i.onerror=function(e){n()});i.href=e,document.querySelector("head").appendChild(i)}(s,()=>{i(n,t)}):i(n,t)}function n(e){let t=document.createElement("div");return t.innerHTML=e.trim(),t.childNodes[0]}function s(e,t){const i=t.parentNode;i.lastChild===t?i.appendChild(e):i.insertBefore(e,t.nextSibling)}const r="cto_ali_player_vol",a="cto_video_Rate",o={get(e,t){try{const i=localStorage.getItem(e);return null!==i?JSON.parse(i):t}catch(i){return t}},set(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(i){}}};const l={CountdownHtml:'<div class="countdown-wrap"><div class="countdown"></div></div>',RateHtml:'<div class="player-rate-wrap"><div class="player-rate-tips">这节课程您是否满意?</div><div class="player-rate-box"><div class="player-star-wrap"><i class="player-icon player-star" data-id="1"></i><i class="player-icon player-star" data-id="2"></i><i class="player-icon player-star" data-id="3"></i><i class="player-icon player-star" data-id="4"></i><i class="player-icon player-star" data-id="5"></i></div><div class="player-rate-txt">评分</div></div></div>'};function h(e){var t;function i(e,t,i,n,s,r){return o((a=o(o(t,e),o(n,r)))<<(l=s)|a>>>32-l,i);var a,l}function n(e,t,n,s,r,a,o){return i(t&n|~t&s,e,t,r,a,o)}function s(e,t,n,s,r,a,o){return i(t&s|n&~s,e,t,r,a,o)}function r(e,t,n,s,r,a,o){return i(t^n^s,e,t,r,a,o)}function a(e,t,n,s,r,a,o){return i(n^(t|~s),e,t,r,a,o)}function o(e,t){var i=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(i>>16)<<16|65535&i}return function(e){for(var t="0123456789abcdef",i="",n=0;n<4*e.length;n++)i+=t.charAt(e[n>>2]>>n%4*8+4&15)+t.charAt(e[n>>2]>>n%4*8&15);return i}(function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var i=1732584193,l=-271733879,h=-1732584194,c=271733878,d=0;d<e.length;d+=16){var p=i,m=l,y=h,u=c;l=a(l=a(l=a(l=a(l=r(l=r(l=r(l=r(l=s(l=s(l=s(l=s(l=n(l=n(l=n(l=n(l,h=n(h,c=n(c,i=n(i,l,h,c,e[d+0],7,-680876936),l,h,e[d+1],12,-389564586),i,l,e[d+2],17,606105819),c,i,e[d+3],22,-1044525330),h=n(h,c=n(c,i=n(i,l,h,c,e[d+4],7,-176418897),l,h,e[d+5],12,1200080426),i,l,e[d+6],17,-1473231341),c,i,e[d+7],22,-45705983),h=n(h,c=n(c,i=n(i,l,h,c,e[d+8],7,1770035416),l,h,e[d+9],12,-1958414417),i,l,e[d+10],17,-42063),c,i,e[d+11],22,-1990404162),h=n(h,c=n(c,i=n(i,l,h,c,e[d+12],7,1804603682),l,h,e[d+13],12,-40341101),i,l,e[d+14],17,-1502002290),c,i,e[d+15],22,1236535329),h=s(h,c=s(c,i=s(i,l,h,c,e[d+1],5,-165796510),l,h,e[d+6],9,-1069501632),i,l,e[d+11],14,643717713),c,i,e[d+0],20,-373897302),h=s(h,c=s(c,i=s(i,l,h,c,e[d+5],5,-701558691),l,h,e[d+10],9,38016083),i,l,e[d+15],14,-660478335),c,i,e[d+4],20,-405537848),h=s(h,c=s(c,i=s(i,l,h,c,e[d+9],5,568446438),l,h,e[d+14],9,-1019803690),i,l,e[d+3],14,-187363961),c,i,e[d+8],20,1163531501),h=s(h,c=s(c,i=s(i,l,h,c,e[d+13],5,-1444681467),l,h,e[d+2],9,-51403784),i,l,e[d+7],14,1735328473),c,i,e[d+12],20,-1926607734),h=r(h,c=r(c,i=r(i,l,h,c,e[d+5],4,-378558),l,h,e[d+8],11,-2022574463),i,l,e[d+11],16,1839030562),c,i,e[d+14],23,-35309556),h=r(h,c=r(c,i=r(i,l,h,c,e[d+1],4,-1530992060),l,h,e[d+4],11,1272893353),i,l,e[d+7],16,-155497632),c,i,e[d+10],23,-1094730640),h=r(h,c=r(c,i=r(i,l,h,c,e[d+13],4,681279174),l,h,e[d+0],11,-358537222),i,l,e[d+3],16,-722521979),c,i,e[d+6],23,76029189),h=r(h,c=r(c,i=r(i,l,h,c,e[d+9],4,-640364487),l,h,e[d+12],11,-421815835),i,l,e[d+15],16,530742520),c,i,e[d+2],23,-995338651),h=a(h,c=a(c,i=a(i,l,h,c,e[d+0],6,-198630844),l,h,e[d+7],10,1126891415),i,l,e[d+14],15,-1416354905),c,i,e[d+5],21,-57434055),h=a(h,c=a(c,i=a(i,l,h,c,e[d+12],6,1700485571),l,h,e[d+3],10,-1894986606),i,l,e[d+10],15,-1051523),c,i,e[d+1],21,-2054922799),h=a(h,c=a(c,i=a(i,l,h,c,e[d+8],6,1873313359),l,h,e[d+15],10,-30611744),i,l,e[d+6],15,-1560198380),c,i,e[d+13],21,1309151649),h=a(h,c=a(c,i=a(i,l,h,c,e[d+4],6,-145523070),l,h,e[d+11],10,-1120210379),i,l,e[d+2],15,718787259),c,i,e[d+9],21,-343485551),i=o(i,p),l=o(l,m),h=o(h,y),c=o(c,u)}return Array(i,l,h,c)}(function(e){for(var t=Array(),i=255,n=0;n<8*e.length;n+=8)t[n>>5]|=(e.charCodeAt(n/8)&i)<<n%32;return t}(t=e),8*t.length))}const c={ERROR:"error",CONNECT_BUFFER:"connectBuffer",SEEK_VIDEO_BUFFER:"seekVideoBuffer",VIDEO_BUFFER:"videoBuffer"},d=1,p=2,m=0,y=-1,u=-2;const g={PlayerNextComponent:class{constructor(e,t){this.player=e,this.clickHandle=t,this.$html=n('<div class="player-olympic-player-next"><div class="player-olympic-player-next-tip">下一节</div></div>')}createEl(e){if(this.clickHandle){this.$html.onclick=()=>{"function"==typeof this.clickHandle?this.clickHandle():"string"==typeof this.clickHandle&&(window.location.href=this.clickHandle)},this.$html.style.backgroundImage="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOGJiODA5NC0xNDBlLTQ3NmUtOThjMS05YjkyNzUzZGUxZjUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUE3MzdENzIzMDcwMTFFQkJBNDA4NUREMTk1NTZBMzEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUE3MzdENzEzMDcwMTFFQkJBNDA4NUREMTk1NTZBMzEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5M2YyNmFjOC0zOWVjLTQ5MjctOTI1MC01OGYyODJhOThiZGEiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDowZDlmMzQwYS03OGRhLTExN2UtODljNS05ZTJkOWEyMjNlMmYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz68KeUaAAACVklEQVR42uyaPUgcQRiG9y5yFiYgKAGRsxKJXAySIv5U2kq0EyXptFbDFQqxEESbkEIDwUIUO0OMlYiFhYJKfgoREgVRmxBUVEgEBQXj+g474Co7K+ze7ex57wsP3N3CcDzMfDvf7EZM0zQYdaJUQEEUREEUREEUREEUxFAQBVEQBVEQBVEQBTEUlLWCHoERcAzEWfIO6AYPvA4YScGZdAGoAwdgWf4xXfkMmh1+7wd9nkYUgnxQA/6a1/kGXvgc0ytxU51dr+P6XWIfQb7texX4CsZAYcCzJ+5yrUhXDXqmGLMNbIEOkJPJ9dTvoG7FT8ysD2BV1ijexRSpAAtg8o5lkPW3+VawAd6CGAU55yEYBOuggYLUKQWzYEZ+piBFXoJfYADkUZBzckGvrE8tFKROCfgk73gJClJH7JnWwNCtXToF2SJ2311gU+7KoxTknMeyr1sBTylInWqwBIopyL23e0VB7olRkDrn4AsFOec3aJR3NQqy5Uw2t+VgXtd+I6wRjWwSbOvekIUtQkgnmGOrcTMnhnWYlgiLnDDNIHEcKx7w/Qljz6MzP+VyWgxrIdS1xP5JMc/DLEfHDLoEE6AHHGXCBixIQd/lrPmRSb1NEEvsELSD2kyTk25BF2AYlIFxubzSvXxDJ0jVG4nCWwneyIIcRNy2CHu6BCVll21vKsUT1HrDejgYdEM7rbg26nXQVLxA9QQ0GdYLVFPgVGPJEG+YvQOv5ed9wzr8fw/+6xJ0r8OXOCmIgiiIgiiIgiiIghgKoiAKoiAKoiAKoiDGlisBBgBcQ0BsCEYJ1AAAAABJRU5ErkJggg==)";const t=e.querySelector(".vjs-play-control");s(this.$html,t)}}dispose(){this.$html.parentNode.removeChild(this.$html)}},PlayPrevComponent:class{constructor(e,t){this.player=e,this.clickHandle=t,this.$html=n('<div class="player-olympic-player-prev"><div class="player-olympic-player-prev-tip">上一节</div></div>')}createEl(e){if(this.clickHandle){this.$html.onclick=()=>{"function"==typeof this.clickHandle?this.clickHandle():"string"==typeof this.clickHandle&&(window.location.href=this.clickHandle)},this.$html.style.backgroundImage="url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNmVjNDgwYi02N2JjLWMwNDYtYmI4NS01MTM1YjIyYzlkZGMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUE3MzdENkUzMDcwMTFFQkJBNDA4NUREMTk1NTZBMzEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUE3MzdENkQzMDcwMTFFQkJBNDA4NUREMTk1NTZBMzEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YmZiYTcwMTAtN2VkYi00MjQ4LTllNDgtZTY1YzEzNWE0ZTJjIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTcyMDAwOGItNzhkYS0xMTdlLTg5YzUtOWUyZDlhMjIzZTJmIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+87YrpwAAAk9JREFUeNrsmj9IG1EAhy/a6qAUhyKCqEtFigq2g7SaQVdBh4JU2qXorDiEaksRHErBqf4Bh9COugiCQRwcDLiEughSsBpBRCSIolgRlTTp73FvCOWehrty7134ffAtAR/nl3vv7l0ulM1mLaImxEAMxEAMxEAMxEAMxECEgRiIgRiIgRiIgRiIMFDeFHn8+2L4Hu5BUToFZ+EjnkE243DM4fNF+Ern/wXDsBLG4anrkUQgDx5l1dR5HNutrTCRcxxnsM3teF4P5i7CPod5DL/BPw7HsuF23KICWCYewEG4C/sV6+ozL4MHmQ44BZvzuJhouYrpogbOwbU84ng+PYNECYzAD7Dcr/kbFLrgJHwSpBtFPxBBYnDZ7zimn0FiCo3KKVWq8xJpIq/hBKw14R7CJBrhjLx8F8Rm9X9RAb/CTZPimHAGiS/oHfwiN5ZG3qbroglG4QvT9zE6qIbrcmoZja416G0Q4ugM9DAot++6Ai3AGwZS8wt2wwMGUrMKn8LP8JqBnLmCnyz7mU6MgdQkYY9lP9JIMpCaFbkf+wgvGciZW7n1EOvTPAOpOYRvYCfcYiA1cfgcDsFzBnImDadhPfwOMwzkzAkcgC9hgoHU/IDtMtYxAzmTkdOtwbJ/DkqbGCh1z1XID8TCPQxb5ILuxI6uQFHF5+L9oH2fz6if8pag759NsHhqMOJ2UK8vUImXAiLyG6yCvy37N3Px1tmFxulXBnst+zn3EtzWFajgYSAGYiAGYiAGYiAGYiDCQAzEQAzEQAzEQAxEcvgrwADvsYR/Evmv3QAAAABJRU5ErkJggg==)";const t=e.querySelector(".vjs-play-control");s(this.$html,t)}}dispose(){this.$html.parentNode.removeChild(this.$html)}},MemoryPlayComponent:class{constructor(e,t=!1,i,s,r){this.html=n('<div class="memory-play-wrap"></div>'),this.player=e,this.autoPlay=t,this.getTime=i||this._getTime,this.saveTimeFunction=s||this._saveTime,this.hasMemoryDisplay=!1,this.htime=r||0,this.memoryKey="tcplayer_memory_"}createEl(e){e.appendChild(this.html)}ready(){try{const a=this.player;let o=a.options_||{},l="";o.fileID?l=o.fileID:o.src&&(l=o.src.replace(/\?.*$/,"")),this.memoryKey="tcplayer_memory_"+l;let h=0;var e,t;if(h=this.htime>0?this.htime:this.getTime(this.memoryKey)?parseInt(this.getTime(this.memoryKey)):0,this.hasMemoryDisplay=!1,e=this.getVideoTime(h),this.getVideoTime(this.htime),!this.hasMemoryDisplay&&h>0){this.hasMemoryDisplay=!0;let o=0;try{o=a.duration()||0}catch(r){}if(h<=parseInt(o)-2){var i="";t=e,this.autoPlay?(i=`<div class="memory-play"><span>您上次学习到${t}已自动为您续播</span><span class="play-jump">从头播放</span><i class="iconfont icon-close"></i></div>`,a.currentTime(h)):i=`<div class="memory-play"><span>您上次学习到${t}</span><span class="play-jump">继续播放</span><i class="iconfont icon-close"></i></div>`,a.paused()&&this.autoPlay,this.html.innerHTML=i;let r=setTimeout(()=>{this.html.innerHTML=""},5e3);var n=this.html.querySelector(".icon-close");n&&(n.onclick=()=>{this.html.innerHTML="",clearTimeout(r)});var s=this.html.querySelector(".play-jump");s&&(s.onclick=()=>{if(this.autoPlay?a.currentTime(0):a.currentTime(h),a.paused()&&this.autoPlay)try{a.play().catch(e=>{})}catch(e){}this.html.innerHTML="",clearTimeout(r)})}}setTimeout(()=>{!this.hasMemoryDisplay&&h>0&&this.processMemoryPlayPrompt(h)},500),this.setupTimeSaving()}catch(a){}}error(){this.setMemory()}dispose(){this.setMemory(),this.visibilityHandler&&document.removeEventListener("visibilitychange",this.visibilityHandler),this.unloadHandler&&window.removeEventListener("beforeunload",this.unloadHandler),this.progressInterval&&clearInterval(this.progressInterval)}processMemoryPlayPrompt(e){const t=this.player;this.hasMemoryDisplay=!0;let i=0;try{i=t.duration()||0}catch(n){}if(e<=parseInt(i)-2){const i=this.getVideoTime(e);let n="";this.autoPlay?(n=`<div class="memory-play"><span>您上次学习到${i}已自动为您续播</span><span class="play-jump">从头播放</span><i class="iconfont icon-close"></i></div>`,t.currentTime(e)):n=`<div class="memory-play"><span>您上次学习到${i}</span><span class="play-jump">继续播放</span><i class="iconfont icon-close"></i></div>`,this.html.innerHTML=n;let s=setTimeout(()=>{this.html.innerHTML=""},5e3);const r=this.html.querySelector(".icon-close");r&&(r.onclick=()=>{this.html.innerHTML="",clearTimeout(s)});const a=this.html.querySelector(".play-jump");a&&(a.onclick=()=>{if(this.autoPlay?t.currentTime(0):t.currentTime(e),t.paused())try{t.play().catch(e=>{})}catch(i){}this.html.innerHTML="",clearTimeout(s)})}}setupTimeSaving(){const e=this.player;let t=this;document.removeEventListener("visibilitychange",this.visibilityHandler),this.visibilityHandler=function(){"hidden"===document.visibilityState&&e.currentTime()>0&&t.saveTimeFunction(t.memoryKey,e.currentTime())},document.addEventListener("visibilitychange",this.visibilityHandler),window.removeEventListener("beforeunload",this.unloadHandler),this.unloadHandler=function(){e.currentTime()>0&&t.saveTimeFunction(t.memoryKey,e.currentTime())},window.addEventListener("beforeunload",this.unloadHandler),this.progressInterval=setInterval(()=>{!e.paused()&&e.currentTime()>0&&t.saveTimeFunction(t.memoryKey,e.currentTime())},3e4)}setMemory(){const e=this.player;try{if(!e||"function"!=typeof e.currentTime)return;const t=e.currentTime();t>0&&this.saveTimeFunction(this.memoryKey,t)}catch(t){}}getVideoTime(e){let t=Math.round(e),i=Math.floor(t/3600),n=Math.floor((t-3600*i)/60),s=t-3600*i-60*n;return n<10&&(n="0"+n),s<10&&(s="0"+s),0===i?n+":"+s:i+":"+n+":"+s}_getTime(e){return localStorage.getItem(e)}_saveTime(e,t){localStorage.setItem(e,t)}},RateComponent:class{constructor(e){this.html=n('\n<div class="rate-components">\n <div class="current-rate">1.0x</div>\n <ul class="rate-list">\n <li data-rate="2.0">2.0x</li>\n <li data-rate="1.75">1.75x</li>\n <li data-rate="1.5">1.5x</li>\n <li data-rate="1.25">1.25x</li>\n <li data-rate="1.0" class="current">1.0x</li>\n <li data-rate="0.5">0.5x</li>\n </ul>\n</div>\n'),this.player=e,this.hasCreated=!1,this.rate=this.getRate()}createEl(e){try{if(!e)return;let t=e.querySelector(".vjs-control-bar");if(!t)return void e.appendChild(this.html);t.appendChild(this.html)}catch(t){}}created(){if(0==this.hasCreated){if(this.rate){this.player.playbackRate(parseFloat(this.rate));let e=this.html.querySelector('li[class="current"]');e&&(e.className="");let t=this.html.querySelector(`li[data-rate="${this.rate}"]`);t&&(t.className="current")}else this.rate="1.0";this.html.querySelector(".current-rate").innerText=this.rate+"x"}this.hasCreated=!0}ready(){let e=this.html.querySelector(".current-rate"),t=this.html.querySelector(".rate-list"),i=null,n=document.querySelector(".vcp-rate");n&&(n.style.display="none"),e.onclick=()=>{t.style.display="block"},e.onmouseleave=()=>{i=setTimeout(()=>{t.style.display="none"},100)},t.onmouseenter=()=>{clearTimeout(i)},t.onmouseleave=()=>{t.style.display="none"},t.onclick=({target:i})=>{let n=i.dataset.rate;if(n){if(this.player.playbackRate(parseFloat(n)),"current"!==i.className){let e=t.querySelector(".current");e&&(e.className=""),i.className="current"}t.style.display="none",e.innerText=n+"x",this.setRate(n)}}}setRate(e){localStorage.setItem("cto_video_Rate",e)}getRate(){return localStorage.getItem("cto_video_Rate")}},BulletScreenComponent:class{constructor(e,t,i,s="random"){this.text=t,this.style=i||{fontSize:"14px",color:"#fff"},this.html=n('<div class="bullet-screen paused"></div>'),this.bulletPosition=s,this.mintime=90,this.maxtime=180,this.animationtime=10,this.time=0,this.stoptime=0,this.start=new Date,this.player=e}createEl(e){this.html.innerText=this.text,e.appendChild(this.html)}ready(e){const t=this.player;!1===t.autoplay()&&(this.html.style.animationPlayState="paused"),Object.keys(this.style).forEach(e=>this.html.style[e]=this.style[e]);var i=this.html.offsetHeight,n=parseInt(t._el.offsetHeight)-i;if("bottom"===this.bulletPosition)this.html.style.bottom=0;else{let e="top"===this.bulletPosition?0:this.randomTop(n);this.html.style.top=e}"random"===this.bulletPosition&&this.html.addEventListener("animationiteration",()=>{this.html.style.top=this.randomTop(n)}),this.html.style.webkitAnimationDuration=this.animationtime+"s",this.start=new Date}playing(e){this.html.style.animationPlayState="running",this.start=new Date}timeupdate(e){const t=this.player;var i=Math.random();i=this.maxtime-this.mintime>0?this.mintime+(this.maxtime-this.mintime)*i:0;let n=t.el(),s=n.querySelector(".bullet-screen");if(this.time=new Date-this.start+this.stoptime,s)if(this.time-1e3*this.animationtime>0)s.remove(),this.stoptime=0;else{"bullet-screen"!==s.className&&(s.className="bullet-screen");let e=getComputedStyle(s),t=e.getPropertyValue("display"),i=e.getPropertyValue("opacity"),n=e.getPropertyValue("visibility"),r=this.text,a=s.innerText;"none"===t&&s.style.setProperty("display","block"),"1"!==i&&s.style.setProperty("opacity","1"),"hidden"===n&&s.style.setProperty("visibility","visible"),r!=a&&(s.innerText=r)}else this.time-1e3*this.animationtime-1e3*i>0&&(n.appendChild(this.html),this.start=new Date,this.stoptime=0)}pause(e){this.html.style.animationPlayState="paused"}randomTop(e){return Math.floor(Math.random()*e)+"px"}},CountdownComponent:class{constructor(e,t=!0,i,s,r){this.html=n(l.CountdownHtml),this.player=e,this.open=t,this.time=i||15,this.type=s,this.isClicked=!1,this.starOpen=r,this.player.on("timeupdate",()=>this.timeupdate())}createEl(e){this.open&&e.appendChild(this.html)}timeupdate(){const e=this.player;if("star"==this.type)(t=e.duration()-e.currentTime())<=this.time&&this.starOpen();else if(this.open){var t,i=this.html.querySelector(".countdown");if((t=e.duration()-e.currentTime())<=this.time){var n=`<div class="countdown-txt">\n <span class="time">${t=t-t%1+1}s</span>后为您播放下一节\n </div>`;i.innerHTML=n}else i.innerHTML=""}}getVideoTime(e){let t=Math.round(e),i=Math.floor(t/3600),n=Math.floor((t-3600*i)/60),s=t-3600*i-60*n;return n<10&&(n="0"+n),s<10&&(s="0"+s),0===i?n+":"+s:i+":"+n+":"+s}},SnapshotComponent:class{constructor(e){this.player=e,this.html=n('\n<div class="prism-snapshot-btn"></div>\n')}createEl(e){const t=e.querySelector(".vjs-control-bar");if(t){const e=t.querySelector(".vjs-fullscreen-control");t.insertBefore(this.html,e.previousSibling)}else e.appendChild(this.html)}ready(){this.setupVideoForSnapshot(),this.html.addEventListener("click",()=>{this.captureSnapshot()})}setupVideoForSnapshot(){const e=this.player.tech_.el_;e&&!e.crossOrigin&&(e.crossOrigin="anonymous",e.setAttribute("crossOrigin","anonymous"))}captureSnapshot(){const e=this.player,t=e.tech_.el_;if(!t)return void this.showErrorMessage("视频元素不存在");const i=document.createElement("canvas");i.width=t.videoWidth||t.clientWidth,i.height=t.videoHeight||t.clientHeight;const n=i.getContext("2d");try{n.drawImage(t,0,0,i.width,i.height);const s=i.toDataURL("image/png"),r=document.createElement("a");r.href=s;const a=(new Date).toISOString().replace(/[:.]/g,"-"),o=`${e.el_.getAttribute("title")||"video"}_${a}.png`;r.download=o,document.body.appendChild(r),r.click(),document.body.removeChild(r)}catch(s){"SecurityError"===s.name?this.tryAlternativeSnapshot(t):this.showErrorMessage("截图失败:"+s.message)}}tryAlternativeSnapshot(e){try{const t=e.src||e.currentSrc;if(t){const i=document.createElement("video");i.crossOrigin="anonymous",i.muted=!0,i.style.display="none",i.addEventListener("loadeddata",()=>{i.currentTime=e.currentTime}),i.addEventListener("seeked",()=>{this.captureFromTempVideo(i),document.body.removeChild(i)}),document.body.appendChild(i),i.src=t,i.load()}}catch(t){this.showErrorMessage("所有截图方案都失败了,请检查视频源的 CORS 配置")}}captureFromTempVideo(e){const t=document.createElement("canvas");t.width=e.videoWidth,t.height=e.videoHeight;t.getContext("2d").drawImage(e,0,0,t.width,t.height);try{const e=t.toDataURL("image/png"),i=document.createElement("a");i.href=e;const n=(new Date).toISOString().replace(/[:.]/g,"-"),s=`${this.player.el_.getAttribute("title")||"video"}_${n}.png`;i.download=s,document.body.appendChild(i),i.click(),document.body.removeChild(i)}catch(i){this.showErrorMessage("替代方案截图失败")}}showErrorMessage(e){}},WebFullscreenComponent:class{constructor(e){this.player=e,this.html=n('\n<div class="prism-web-fullscreen-btn" title="网页全屏"></div>\n'),this.isWebFullscreen=!1,this.handleToggle=this.handleToggle.bind(this),this.handleKeydown=this.handleKeydown.bind(this)}createEl(e){const t=e.querySelector(".vjs-control-bar");if(t){const e=t.querySelector(".vjs-fullscreen-control");e?t.insertBefore(this.html,e):t.appendChild(this.html)}else e.appendChild(this.html)}ready(){this.html.addEventListener("click",this.handleToggle),document.addEventListener("keydown",this.handleKeydown)}handleToggle(){this.isWebFullscreen?this.exitWebFullscreen():this.enterWebFullscreen()}enterWebFullscreen(){const e=this.player.el_;e&&(this.originalStyles={position:e.style.position,top:e.style.top,left:e.style.left,width:e.style.width,height:e.style.height,zIndex:e.style.zIndex,backgroundColor:e.style.backgroundColor},e.style.position="fixed",e.style.top="0",e.style.left="0",e.style.width="100vw",e.style.height="100vh",e.style.zIndex="9999",e.style.backgroundColor="#000",e.classList.add("prism-web-fullscreen"),this.html.classList.add("web-fullscreen"),document.body.style.overflow="hidden",this.isWebFullscreen=!0,this.player.trigger("webfullscreenchange",{isWebFullscreen:!0}))}exitWebFullscreen(){const e=this.player.el_;e&&(this.originalStyles&&Object.keys(this.originalStyles).forEach(t=>{e.style[t]=this.originalStyles[t]||""}),e.classList.remove("prism-web-fullscreen"),this.html.classList.remove("web-fullscreen"),document.body.style.overflow="",this.isWebFullscreen=!1,this.player.trigger("webfullscreenchange",{isWebFullscreen:!1}))}handleKeydown(e){"Escape"===e.key&&this.isWebFullscreen&&(this.exitWebFullscreen(),e.preventDefault()),(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(this.handleToggle(),e.preventDefault())}destroy(){this.isWebFullscreen&&this.exitWebFullscreen(),this.html&&this.html.removeEventListener("click",this.handleToggle),document.removeEventListener("keydown",this.handleKeydown),this.player=null,this.html=null}},WideScreenComponent:class{constructor(e,t){this.player=e,this.html=n('\n<div class="prism-wide-screen-btn" title="宽屏显示"></div>\n'),this.isWideScreen=!1,this.onWideScreenChange=t,this.handleToggle=this.handleToggle.bind(this),this.handleKeydown=this.handleKeydown.bind(this)}createEl(e){const t=e.querySelector(".vjs-control-bar");if(t){const e=t.querySelector(".vjs-fullscreen-control");e?t.insertBefore(this.html,e):t.appendChild(this.html)}else e.appendChild(this.html)}ready(){this.html.addEventListener("click",this.handleToggle),document.addEventListener("keydown",this.handleKeydown)}handleToggle(){this.isWideScreen?this.exitWideScreen():this.enterWideScreen()}enterWideScreen(){this.isWideScreen||(this.isWideScreen=!0,this.html.classList.add("wide-screen"),this.player.trigger("widescreenchange",{isWideScreen:!0}),this.onWideScreenChange&&"function"==typeof this.onWideScreenChange&&this.onWideScreenChange(!0,this.player))}exitWideScreen(){this.isWideScreen&&(this.isWideScreen=!1,this.html.classList.remove("wide-screen"),this.player.trigger("widescreenchange",{isWideScreen:!1}),this.onWideScreenChange&&"function"==typeof this.onWideScreenChange&&this.onWideScreenChange(!1,this.player))}handleKeydown(e){(e.ctrlKey||e.metaKey)&&"w"===e.key&&(this.handleToggle(),e.preventDefault())}getWideScreenState(){return this.isWideScreen}setWideScreenState(e){e&&!this.isWideScreen?this.enterWideScreen():!e&&this.isWideScreen&&this.exitWideScreen()}destroy(){this.isWideScreen&&this.exitWideScreen(),this.html&&this.html.removeEventListener("click",this.handleToggle),document.removeEventListener("keydown",this.handleKeydown),this.player=null,this.html=null,this.onWideScreenChange=null}},ErrorReportComponent:class{constructor(e,t,i){this.player=e,this.params=t,this.currentTime=0,this.ali_dt="",this.definition="",this.errorCode=0,this.block_time=0,this.blockStartTime=0,this.speed=1,this.errorType="",this.is_first=!0,this.net_speed=0,this.bitrate=0,this.videoResources=[],this.hasOffline=!1,this.netTestTimer=null,this.netTestTimeout=6e4}created(){window.playerEl=this.player;const e=this.player;this.videoResources=e._urls,this.net_speed=0,this.is_first=!0,this.systemEventListen(),this.logger("created videoResources",this.videoResources)}logger(...e){window.location.host.startsWith("edu.51cto")}getQuality(){let e="自动";try{const t=document.querySelector(".tcp-video-quality-switcher .vjs-selected .vjs-menu-item-text");if(t){e=t.textContent.trim()}else e="自动"}catch(t){e="未知"}this.fp=e}getBitrate(){this.bitrate=""}async playing(){if(this.logger("playing:",Date.now()),this.logger("playing-blockStartTime:",this.blockStartTime),this.is_first=!1,this.ali_dt=this.player.getDuration(),this.blockStartTime>0){const e=Date.now()-this.blockStartTime;if(this.logger("缓冲了",this.block_time/1e3+"s"),e>1e3){this.block_time=e;const t=await this.generateRequestParams();await this.errorRequest(t)}}}ended(){this.errorCode=0,this.resetBlockState()}resetBlockState(){this.blockStartTime=0,this.block_time=0,this.errorType=""}pause(){this.resetBlockState()}waiting(){const e=this.player;this.logger("开始缓冲:",Date.now()),this.logger("开始缓冲--seeking:",e._seeking),this.currentTime=e.getCurrentTime(),this.blockStartTime=Date.now(),this.speed=localStorage.getItem("cto_video_Rate")?localStorage.getItem("cto_video_Rate"):this.speed,this.is_first?this.errorType=c.CONNECT_BUFFER:e._seeking?this.errorType=c.SEEK_VIDEO_BUFFER:this.errorType=c.VIDEO_BUFFER}timeupdate(){}async error(e,t){this.logger("error",t),this.errorCode=t.error_code,this.resetBlockState(),this.errorType=c.ERROR;const i=await this.generateRequestParams();await this.errorRequest(i)}destroyed(){this.errorCode=0,this.resetBlockState()}getQuality(){let e="自动";try{const t=document.querySelector(".tcp-video-quality-switcher .vjs-selected .vjs-menu-item-text");if(t){e=t.textContent.trim()}else e="自动"}catch(t){e="未知"}this.definition=e}getDownLink(){if(window.navigator&&window.navigator.connection)return window.navigator.connection.downlink||""}getAccumulation(){if(this.player){const e=this.player.getComponent("ReportingComponent");if(this.logger("ReportingComponent",e),e)return e.accumulation}}systemEventListen(){window.addEventListener("online",this.onNetworkOnline.bind(this)),window.addEventListener("offline",this.onNetworkOffLine.bind(this)),window.addEventListener("visibleChange",this.onVisibleChange.bind(this))}onVisibleChange(){this.resetBlockState()}onNetworkOnline(){this.logger("online"),this.resetBlockState()}onNetworkOffLine(){this.logger("offline"),this.hasOffline=!0,this.resetBlockState()}startSeek(){this.resetBlockState()}async generateRequestParams(){const e=32===this.params.video_id.length?d:p,t=this.getAccumulation();this.getBitrate(),this.getQuality();var i={video_id:this.params.video_id,user_id:this.params.user_id,uuid:h(""+this.params.timestr+this.params.user_id+this.params.random).toString(),type:e,htime:this.currentTime,dt:this.ali_dt,pt:t,ref:location.href,sgin:h(this.params.timestr+"HRkJaX81cAbXdFjWe4Qg6HXxtCR7bJRr").toString(),platform:5,ts_url:this.definition,code:this.errorCode,speed:this.speed,eType:this.errorType,bitrate:this.bitrate,net_speed:0,downlink:this.getDownLink(),has_offline:this.hasOffline,log_status:m};i.log_status=this.calcLogStatus(i);var n={};return[c.ERROR].includes(this.errorType)&&(n=Object.assign(i,{time:(new Date).getTime()})),[c.CONNECT_BUFFER,c.SEEK_VIDEO_BUFFER,c.VIDEO_BUFFER].includes(this.errorType)&&(n=Object.assign(i,{time:this.params.timestr,block_time:this.block_time})),n}isParamInvalid(e){return![c.ERROR].includes(this.errorType)&&e.block_time<=1e3||(e.block_time>e.ali_dt||e.block_time>6e5)}async errorRequest(e){this.logger("错误上报",e);const t=this;return!!this.isParamInvalid(e)||new Promise((i,n)=>{$.ajax({type:"post",url:`${this.params.error_url}`,data:e,dataType:"json",async:!1,success:function(e){},complete:function(e){t.onReportComplete(),i()}})})}onReportComplete(){this.logger("onReportComplete"),this.resetBlockState(),this.errorCode=0,this.hasOffline=!1}calcLogStatus(e){const t=e.block_time?e.block_time/1e3:0;if(e.eType===c.CONNECT_BUFFER){if(t>300)return y}else{if(t>this.ali_dt)return y;if(t>300)return y}return e.downlink>0&&e.bitrate>0&&e.speed*(e.bitrate/1024)>e.downlink?u:m}needTestSpeed(e){return e.eType!==c.ERROR&&!this.netTestTimer}},ReportingComponent:class{constructor(e,t){this.player=e,this.params=t,this.currentTime=0,this.ali_dt="",this.accumulation=0,this.timer="",this.interval="",this.fp=1,this.playingFlag=!1,this.isPlay=!1}ready(){var e=this;let t=window.navigator.userAgent,i="";-1<t.indexOf("Chrome")?this.addBeforeunloadEvent(function(){e.getQuality(),e.currentTime>=e.ali_dt&&(e.currentTime=e.ali_dt);let n=(new Date).getTime(),s={m:"time",id:e.params._lid,uid:e.params.user_id,uuid:e.Md5(""+e.params.timestr+e.params.user_id+e.params.random).toString(),ref:location.href,os:t.indexOf("Windows")?"Windows":"other",br:(i=t,-1<i.indexOf("Opera")?"Opera":-1<i.indexOf("Firefox")?"FF":-1<i.indexOf("Chrome")?"Chrome":-1<i.indexOf("Safari")?"Safari":-1<i.indexOf("compatible")&&-1<i.indexOf("MSIE")&&!isOpera?"IE":void 0),fp:e.fp,htime:e.currentTime,dt:e.ali_dt,pt:e.accumulation,t:n,sgin:e.Md5(""+n+e.currentTime+e.ali_dt+e.accumulation+"HRkJaX81cAbXdFjWe4Qg6HXxtCR7bJRr").toString(),cdn:"aliyun",def:"1",switchDef:"1",ver:"1",platform:5,isleave:1};fetch(`${e.params.reportLogUrl}&${new URLSearchParams(Object.entries(s)).toString()}`,{method:"get",headers:{Accept:"application/json, text/javascript, */*; q=0.01","X-Requested-With":"XMLHttpRequest"},keepalive:!0})}):-1<t.indexOf("Safari")?this.addBeforeunloadEvent(function(){if(e.getQuality(),e.accumulation>0&&e.isPlay){let n=e.params.reportLogUrl.split("?"),s=n[n.length-1],r="";s&&s.indexOf("=")>-1&&(r=s.split("=")[1]);let a=(new Date).getTime(),o={type:r,m:"time",id:e.params._lid,uid:e.params.user_id,uuid:e.Md5(""+e.params.timestr+e.params.user_id+e.params.random).toString(),ref:location.href,os:t.indexOf("Windows")?"Windows":"other",br:(i=t,-1<i.indexOf("Opera")?"Opera":-1<i.indexOf("Firefox")?"FF":-1<i.indexOf("Chrome")?"Chrome":-1<i.indexOf("Safari")?"Safari":-1<i.indexOf("compatible")&&-1<i.indexOf("MSIE")&&!isOpera?"IE":void 0),fp:e.fp,htime:e.currentTime,dt:e.ali_dt,pt:e.accumulation,t:a,sgin:e.Md5(""+a+e.currentTime+e.ali_dt+e.accumulation+"HRkJaX81cAbXdFjWe4Qg6HXxtCR7bJRr").toString(),cdn:"aliyun",def:"1",switchDef:"1",ver:"1",platform:5,isleave:1},l=new FormData;Object.keys(o).forEach(e=>{let t=o[e];"string"!=typeof t&&(t=JSON.stringify(t)),l.append(e,t)}),navigator.sendBeacon("/center/player/log/time-post",l)}}):this.addBeforeunloadEvent(function(){e.getQuality();let n=(new Date).getTime(),s={m:"time",id:e.params._lid,uid:e.params.user_id,uuid:e.Md5(""+e.params.timestr+e.params.user_id+e.params.random).toString(),ref:location.href,os:t.indexOf("Windows")?"Windows":"other",br:(i=t,-1<i.indexOf("Opera")?"Opera":-1<i.indexOf("Firefox")?"FF":-1<i.indexOf("Chrome")?"Chrome":-1<i.indexOf("Safari")?"Safari":-1<i.indexOf("compatible")&&-1<i.indexOf("MSIE")&&!isOpera?"IE":void 0),fp:e.fp,htime:e.currentTime,dt:e.ali_dt,pt:e.accumulation,t:n,sgin:e.Md5(""+n+e.currentTime+e.ali_dt+e.accumulation+"HRkJaX81cAbXdFjWe4Qg6HXxtCR7bJRr").toString(),cdn:"aliyun",def:"1",switchDef:"1",ver:"1",platform:5,isleave:1};$.ajax({type:"get",url:`${e.params.reportLogUrl}`,data:s,dataType:"json",async:!1})})}playing(){if(!this.params.open)return!1;const e=this.player;this.isPlay=!0,this.ali_dt=e.getDuration(),this.getQuality(),clearInterval(this.interval),this.interval=setInterval(()=>{"playing"==e.getStatus()&&(this.accumulation=this.accumulation+1)},1e3),this.playingFlag||(this.playingFlag=!0,setTimeout(()=>{this.playingFlag=!1},500),this.ajaxRequest())}ended(){clearInterval(this.timer),clearInterval(this.interval),this.timer=null,this.interval=null,this.onTagAliPlayerProgressLock=!1}timeupdate(){const e=this.player;this.currentTime=e.getCurrentTime().toFixed(2);const t=e.getStatus();"ready"!=t&&"pause"!=t&&this.onTagAliPlayerProgress(3e4)}pause(){if(clearInterval(this.timer),clearInterval(this.interval),this.timer=null,this.interval=null,this.onTagAliPlayerProgressLock=!1,!this.params.open)return!1;this.ajaxRequest()}error(){clearInterval(this.timer),clearInterval(this.interval),this.timer=null,this.interval=null,this.onTagAliPlayerProgressLock=!1}getQuality(){let e="自动";try{const t=document.querySelector(".tcp-video-quality-switcher .vjs-selected .vjs-menu-item-text");if(t){e=t.textContent.trim()}else e="自动"}catch(t){e="未知"}this.fp=e}Md5(e){var t;function i(e,t,i,n,s,r){return o((a=o(o(t,e),o(n,r)))<<(l=s)|a>>>32-l,i);var a,l}function n(e,t,n,s,r,a,o){return i(t&n|~t&s,e,t,r,a,o)}function s(e,t,n,s,r,a,o){return i(t&s|n&~s,e,t,r,a,o)}function r(e,t,n,s,r,a,o){return i(t^n^s,e,t,r,a,o)}function a(e,t,n,s,r,a,o){return i(n^(t|~s),e,t,r,a,o)}function o(e,t){var i=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(i>>16)<<16|65535&i}return function(e){for(var t="0123456789abcdef",i="",n=0;n<4*e.length;n++)i+=t.charAt(e[n>>2]>>n%4*8+4&15)+t.charAt(e[n>>2]>>n%4*8&15);return i}(function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var i=1732584193,l=-271733879,h=-1732584194,c=271733878,d=0;d<e.length;d+=16){var p=i,m=l,y=h,u=c;l=a(l=a(l=a(l=a(l=r(l=r(l=r(l=r(l=s(l=s(l=s(l=s(l=n(l=n(l=n(l=n(l,h=n(h,c=n(c,i=n(i,l,h,c,e[d+0],7,-680876936),l,h,e[d+1],12,-389564586),i,l,e[d+2],17,606105819),c,i,e[d+3],22,-1044525330),h=n(h,c=n(c,i=n(i,l,h,c,e[d+4],7,-176418897),l,h,e[d+5],12,1200080426),i,l,e[d+6],17,-1473231341),c,i,e[d+7],22,-45705983),h=n(h,c=n(c,i=n(i,l,h,c,e[d+8],7,1770035416),l,h,e[d+9],12,-1958414417),i,l,e[d+10],17,-42063),c,i,e[d+11],22,-1990404162),h=n(h,c=n(c,i=n(i,l,h,c,e[d+12],7,1804603682),l,h,e[d+13],12,-40341101),i,l,e[d+14],17,-1502002290),c,i,e[d+15],22,1236535329),h=s(h,c=s(c,i=s(i,l,h,c,e[d+1],5,-165796510),l,h,e[d+6],9,-1069501632),i,l,e[d+11],14,643717713),c,i,e[d+0],20,-373897302),h=s(h,c=s(c,i=s(i,l,h,c,e[d+5],5,-701558691),l,h,e[d+10],9,38016083),i,l,e[d+15],14,-660478335),c,i,e[d+4],20,-405537848),h=s(h,c=s(c,i=s(i,l,h,c,e[d+9],5,568446438),l,h,e[d+14],9,-1019803690),i,l,e[d+3],14,-187363961),c,i,e[d+8],20,1163531501),h=s(h,c=s(c,i=s(i,l,h,c,e[d+13],5,-1444681467),l,h,e[d+2],9,-51403784),i,l,e[d+7],14,1735328473),c,i,e[d+12],20,-1926607734),h=r(h,c=r(c,i=r(i,l,h,c,e[d+5],4,-378558),l,h,e[d+8],11,-2022574463),i,l,e[d+11],16,1839030562),c,i,e[d+14],23,-35309556),h=r(h,c=r(c,i=r(i,l,h,c,e[d+1],4,-1530992060),l,h,e[d+4],11,1272893353),i,l,e[d+7],16,-155497632),c,i,e[d+10],23,-1094730640),h=r(h,c=r(c,i=r(i,l,h,c,e[d+13],4,681279174),l,h,e[d+0],11,-358537222),i,l,e[d+3],16,-722521979),c,i,e[d+6],23,76029189),h=r(h,c=r(c,i=r(i,l,h,c,e[d+9],4,-640364487),l,h,e[d+12],11,-421815835),i,l,e[d+15],16,530742520),c,i,e[d+2],23,-995338651),h=a(h,c=a(c,i=a(i,l,h,c,e[d+0],6,-198630844),l,h,e[d+7],10,1126891415),i,l,e[d+14],15,-1416354905),c,i,e[d+5],21,-57434055),h=a(h,c=a(c,i=a(i,l,h,c,e[d+12],6,1700485571),l,h,e[d+3],10,-1894986606),i,l,e[d+10],15,-1051523),c,i,e[d+1],21,-2054922799),h=a(h,c=a(c,i=a(i,l,h,c,e[d+8],6,1873313359),l,h,e[d+15],10,-30611744),i,l,e[d+6],15,-1560198380),c,i,e[d+13],21,1309151649),h=a(h,c=a(c,i=a(i,l,h,c,e[d+4],6,-145523070),l,h,e[d+11],10,-1120210379),i,l,e[d+2],15,718787259),c,i,e[d+9],21,-343485551),i=o(i,p),l=o(l,m),h=o(h,y),c=o(c,u)}return Array(i,l,h,c)}(function(e){for(var t=Array(),i=255,n=0;n<8*e.length;n+=8)t[n>>5]|=(e.charCodeAt(n/8)&i)<<n%32;return t}(t=e),8*t.length))}onTagAliPlayerProgress(e){return!!this.params.open&&(e?!this.onTagAliPlayerProgressLock&&(this.onTagAliPlayerProgressLock=!0,clearInterval(this.timer),void(this.timer=setInterval(()=>{this.ajaxRequest()},e))):(this.ajaxRequest(),!1))}ajaxRequest(){this.currentTime>=this.ali_dt&&(this.currentTime=this.ali_dt);var e=window.navigator.userAgent,t="",i=(new Date).getTime();$.ajax({type:"get",url:`${this.params.reportLogUrl}`,data:{m:"time",id:this.params._lid,uid:this.params.user_id,uuid:this.Md5(""+this.params.timestr+this.params.user_id+this.params.random).toString(),ref:location.href,os:e.indexOf("Windows")?"Windows":"other",br:(t=e,-1<t.indexOf("Opera")?"Opera":-1<t.indexOf("Firefox")?"FF":-1<t.indexOf("Chrome")?"Chrome":-1<t.indexOf("Safari")?"Safari":-1<t.indexOf("compatible")&&-1<t.indexOf("MSIE")&&!isOpera?"IE":void 0),fp:this.fp,htime:this.currentTime,dt:this.ali_dt,pt:this.accumulation,t:i,sgin:this.Md5(""+i+this.currentTime+this.ali_dt+this.accumulation+"HRkJaX81cAbXdFjWe4Qg6HXxtCR7bJRr").toString(),cdn:"aliyun",def:"1",switchDef:"1",ver:"1",platform:5,isleave:0},dataType:"json",async:!1,success:function(e){e&&null!=e.status&&0!=e.status&&location.reload()}})}addBeforeunloadEvent(e){var t=window.onbeforeunload;window.onbeforeunload="function"!=typeof t?e:function(){t(),e()}}}};window.TcPlayerComponent=g;const f={addPlayerCompatLayer:function(e){e&&(e.lang||(e.lang=function(e){return{Play:"播放",Pause:"暂停",Mute:"静音",Unmute:"取消静音",Fullscreen:"全屏","Exit Fullscreen":"退出全屏",Settings:"设置",Speed:"速度",Normal:"正常",Quality:"质量",Auto:"自动",HD:"高清",SD:"标清"}[e]||e}),e.options_||(e.options_=e.options_||{}),e.options_&&!e.options_.languages&&(e.options_.languages={"zh-CN":{Play:"播放",Pause:"暂停",Mute:"静音",Unmute:"取消静音",Fullscreen:"全屏","Exit Fullscreen":"退出全屏",Settings:"设置",Speed:"速度",Normal:"正常",Quality:"质量",Auto:"自动",HD:"高清",SD:"标清"}},e.options_.language="zh-CN"))},registerComponents:function(e,t){if(!e)return[];const i=[];try{if(!t||!Array.isArray(t))return i;t.forEach(t=>{try{if(t.type&&"function"==typeof t.type){if(!e||!e.el_)return;let a;try{a=new t.type(e,...t.args||[])}catch(n){return}if(t.name){if(e._components||(e._components={}),e._components[t.name]=a,i.push(a),e.getComponent||(e.getComponent=function(e){return this._components&&this._components[e]}),function(e,t){if(!e||!t)return;t._eventListeners||(t._eventListeners=[]),Object.entries({play:"play",playing:"playing",pause:"pause",timeupdate:"timeupdate",ended:"ended",waiting:"waiting",error:"error",seeking:"seeking",seeked:"seeked",loadstart:"loadstart",canplay:"canplay",canplaythrough:"canplaythrough",durationchange:"durationchange",volumechange:"volumechange",ratechange:"ratechange",resize:"resize",fullscreenchange:"fullscreenchange"}).forEach(([i,n])=>{if("function"==typeof t[n]){const s=e=>{try{t[n](e)}catch(i){}};e.on(i,s),t._eventListeners.push({event:i,listener:s})}})}(e,a,t.name),a.createEl&&"function"==typeof a.createEl)try{e.el_&&1===e.el_.nodeType&&a.createEl(e.el_)}catch(s){}if(a.created&&"function"==typeof a.created)try{a.created(e)}catch(r){}}}}catch(a){}})}catch(n){}return i},initComponentsReadyState:function(e){if(e&&e._components)try{Object.values(e._components).forEach(e=>{try{e.ready&&"function"==typeof e.ready&&e.ready()}catch(t){}})}catch(t){}},destroyComponents:function(e){if(e&&e._components)try{Object.values(e._components).forEach(t=>{try{!function(e,t){e&&t&&t._eventListeners&&(t._eventListeners.forEach(({event:t,listener:i})=>{try{e.off(t,i)}catch(n){}}),t._eventListeners=[])}(e,t),t.destroy&&"function"==typeof t.destroy&&t.destroy()}catch(i){}}),e._components={}}catch(t){}}};window._pursuer=window._pursuer||{};const v=window._pursuer,b={name:"PsTcPlayer",props:{config:{default:()=>({})}},data:()=>({id:"",duration:0,currentTime:0,hearttime:2e4,timers:[],_readyCalled:!1}),render(){return t.h("div",{class:"ps-player",style:{width:"100%",height:"100%",position:"relative"}},[t.h("video",{class:"ps-player-container",style:{overflow:"hidden",position:"relative",width:"100%",height:"100%"},attrs:{preload:"auto",playsinline:"","webkit-playsinline":"",tabindex:"1",id:this.id},preload:"auto",playsinline:"","webkit-playsinline":"",tabindex:"1",id:this.id,ref:"playerBox"})])},watch:{config:{handler(e,t){t&&0!==Object.keys(t).length&&this._source_loded&&JSON.stringify(e)!==JSON.stringify(t)&&this.$nextTick(()=>{this.init()})},deep:!0}},mounted(){if(!window)return!1;this.id=this.getCfPlayerId();let e=[];e=["//web.sdk.qcloud.com/player/tcplayer/release/v4.8.0/libs/hls.min.1.1.6.js?v="+Math.random()],window.TCPlayer||e.push("//web.sdk.qcloud.com/player/tcplayer/release/v4.9.1/tcplayer.v4.9.1.min.js"),i(e,()=>{this._source_loded=!0,this.$nextTick(()=>{this.init()})}),this.$playerBox=document,this.$playerBox.addEventListener("keydown",this.onkeydown,!0),this.$playerBox.addEventListener("keyup",this.onkeyup,!0)},beforeDestroy(){this.destroy()},beforeUnmount(){this.destroy()},methods:{getCfPlayerId(){v.playerCount=v.playerCount?v.playerCount+1:1;return this.config&&this.config.id||`player-container-id-${v.playerCount}`},init(){document.querySelector(`#${this.id}`)&&this.initPlayer({playbackRates:[.5,1,1.25,1.5,1.75,2],...this.config.tconfig||{}})},setupPlugins(){var e;const t=this,i=[];try{const n=t.config.tconfig||{},s=n.plugins||{},r=t.config.plugins||n.customPlugins||{},l={PlayerNextComponent:{enabled:t.config.onnext||t.config.showNext||!1,args:[t.onnext]},PlayPrevComponent:{enabled:t.config.onpre||t.config.showPre||!1,args:[t.onpre]},MemoryPlayComponent:{enabled:!0,args:[!0===(null==(e=s.ContinuePlay)?void 0:e.auto),null,null,t.config.htime||0]},QualityComponent:{enabled:!0,args:[null,"HD","高清"]},RateComponent:{enabled:!1,args:[o.get(a,1)]},SnapshotComponent:{enabled:!0,args:[]},BulletScreenComponent:{enabled:t.config.bulletScreen||!1,args:[t.config.bulletContent||"学习成就梦想",t.config.bulletStyle||{fontSize:"16px",color:"#fff"},"random"]},CountdownComponent:{enabled:t.config.onnext||t.config.showNext||!1,args:[!(!t.config.onnext&&!t.config.showNext)||"",!1,t.config.star,t.config.openStar]},WebFullscreenComponent:{enabled:t.config.webFullscreen||!1,args:[]},WideScreenComponent:{enabled:t.config.wideScreen||!1,args:[t.onWideScreenChange]},ErrorReportComponent:{enabled:!1,args:[]},ReportingComponent:{enabled:!1,args:[]}},h={...l};Object.keys(r).forEach(e=>{var t;const i=r[e];"boolean"==typeof i?h[e]?h[e].enabled=i:h[e]={enabled:i,args:[]}:"object"==typeof i&&null!==i&&(h[e]={enabled:!1!==i.enabled,args:i.args||(null==(t=h[e])?void 0:t.args)||[],config:i.config||i})}),Object.keys(h).forEach(e=>{const t=h[e];if(t.enabled)try{const n={name:e,args:t.args||[]};g[e]&&(n.type=g[e]),t.config&&(n.config=t.config),i.push(n)}catch(n){}}),Object.keys(r).forEach(e=>{if(!l[e]){const t=r[e];t&&!1!==t.enabled&&i.push({name:e,config:t,args:t.args||[]})}})}catch(n){}return i},initPlayer(e){if(this.$player&&this.destroy(),!window.TCPlayer)return!1;this.hearttime=this.config.hearttime||this.hearttime,this.runs(e)},runs(e){if(this.$player=new TCPlayer(this.id,e),this.$player){{f.addPlayerCompatLayer(this.$player);let e=[];try{e=this.setupPlugins()||[]}catch(t){}this.$player.on("ready",()=>{try{f.registerComponents(this.$player,e),this.onready()}catch(t){}}),this.$player.on("playing",this.onplaying),this.$player.on("error",this.onerror),this.$player.on("timeupdate",this.ontimeupdate),this.$player.on("pause",this.onpause),this.$player.on("play",this.onplay),this.$player.on("ended",this.onended),this.$player.on("waiting",this.onwaiting),this.$player.on("snapshoted",this.onsnapshoted),this.$player.on("sourceloaded",this.onsourceloaded)}this.$player.getDuration=this.$player.duration,this.$player.getCurrentTime=this.$player.currentTime,this.$player._el=this.$player.el_,this.$player.seek=this.$player.currentTime,this.$player.getStatus=this.$player.getStatus||function(){return this.$player.paused()?"pause":"playing"}.bind(this),this.$player.destroy=this.$player.dispose,this.$player._originalPlaybackRate=this.$player.playbackRate,this.$player.getVolume=this.$player.volume,this.$player.setVolume=this.$player.volume}},onready(){if(!this._readyCalled){this._readyCalled=!0,this.onheart(!0),this.$emit("onready",this.$player),this.config.onready&&this.config.onready(this.$player);try{const e=o.get(r,1);"number"==typeof e&&this.$player&&this.$player.volume&&this.$player.volume(e)}catch(e){}this.$player.on("volumechange",this.onVolumeChange),this.$player.on("ratechange",this.onRateChange);try{f.initComponentsReadyState(this.$player)}catch(e){}}},onsourceloaded(e){const t=e.paramData,i=t.desc,n=t.definition,s=this.$player.getComponent&&this.$player.getComponent("QualityComponent");s&&s.setCurrentQuality&&(s.setCurrentQuality(i,n),this.onQualityChange(n,i))},onerror(e){this.$emit("onerror",this.$player),this.config.onerror&&this.config.onerror(this.$player)},onplaying(){this.$emit("onplaying",this.$player);const e=o.get(a,null);null!==e&&this.$player.playbackRate&&this.$player.playbackRate(e)},ontimeupdate(){this.onheart(),this.duration=this.$player.getDuration(),this.currentTime=this.$player.getCurrentTime(),this.$emit("ontimeupdate",this.duration,this.currentTime,this.$player),this.config.ontimeupdate&&this.config.ontimeupdate(this.duration,this.currentTime,this.$player)},onpause(){this.$emit("onpause",this.$player),this.config.onpause&&this.config.onpause(this.$player)},onplay(){this.$emit("onplay",this.$player),this.config.onplay&&this.config.onplay(this.$player)},onended(){this.onheart(!0),this.$emit("onended",this.$player),this.config.onended&&this.config.onended(this.$player),this.onnext("auto")},onnext(e){this.$emit("onnext",this.$player),this.config.onnext&&this.config.onnext(this.$player,e)},onpre(){this.$emit("onpre",this.$player),this.config.onpre&&this.config.onpre(this.$player)},onWideScreenChange(e,t){this.$emit("onWidescreenChange",e,t),this.config.onWideScreenChange&&this.config.onWideScreenChange(e,t)},onwaiting(){this.$emit("onwaiting",this.$player),this.config.onwaiting&&this.config.onwaiting(this.$player)},onsnapshoted(e){this.$emit("onsnapshoted",e,this.$player),this.config.onsnapshoted&&this.config.onsnapshoted(e,this.$player)},onVolumeChange(){try{const e=this.$player.volume();o.set(r,e)}catch(e){}},onRateChange(){try{const e=this.$player.playbackRate();o.set(a,e)}catch(e){}},onheart(e){return e?(this.$emit("onheart",this.$player),this.config.onheart&&this.config.onheart(this.$player),!1):!this.onheart_lock&&(clearTimeout(this.timers[0]),this.timers[0]=null,this.onheart_lock=!0,void(this.timers[0]=setTimeout(()=>{this.onheart_lock=!1,this.$emit("onheart",this.$player),this.config.onheart&&this.config.onheart(this.$player)},this.hearttime)))},destroy(){if(this.$player){clearTimeout(this.timers[0]||null),this.onheart_lock=!1,this.$player.off("ready",this.onready),this.$player.off("error",this.onerror),this.$player.off("timeupdate",this.ontimeupdate),this.$player.off("pause",this.onpause),this.$player.off("play",this.onplay),this.$player.off("ended",this.onended),this.$player.off("waiting",this.onwaiting),this.$player.off("snapshoted",this.onsnapshoted),this.$player.off("sourceloaded",this.onsourceloaded),this.$player.off("volumechange",this.onVolumeChange),this.$player.off("ratechange",this.onRateChange);try{f.destroyComponents(this.$player)}catch(e){}this.$player.destroy(),this.$player=null,this.$playerBox.removeEventListener("keydown",this.onkeydown,!1),this.$playerBox.removeEventListener("keyup",this.onkeyup,!1),this._readyCalled=!1}},getCurrentTime(){return this.$player&&this.$player.getCurrentTime()||0},onkeydown(e){if(!this.$player)return!1;const t=e.target,i=!t.hasAttribute("contenteditable")&&!/INPUT|TEXTAREA/gi.test(t.tagName);if(13!==e.keyCode&&32!==e.keyCode||!i)37!==e.keyCode&&39!==e.keyCode||!i||(this._keySeekTime=this.getCurrentTime(),37===e.keyCode?this._keySeekTime-=5:this._keySeekTime+=5);else{"playing"===this.$player.getStatus()?this.$player.pause():this.$player.play()}},seekTo(e){this.$player&&this.$player.seek(Number(e)||0)},onkeyup(e){if(!this.$player)return!1;const t=e.target,i=!t.hasAttribute("contenteditable")&&!/INPUT|TEXTAREA/gi.test(t.tagName);if(37!==e.keyCode&&39!==e.keyCode||i){if(this.config.notProgress&&39===e.keyCode)return this._keySeekTime=null,!1;if(37===e.keyCode||39===e.keyCode){const e=this.$player.getDuration();this._keySeekTime<=0?this._keySeekTime=0:this._keySeekTime>=e&&(this._keySeekTime=e-5),this.seekTo(this._keySeekTime),this._keySeekTime=null}}}},install:function(e,i={}){e.component(b.name,b);(t.isVue2?e.prototype:e.config.globalProperties).$tcPlayer=e=>null}};Object.defineProperty(e,"version",{enumerable:!0,get:()=>t.version}),e.TcPlayerComponent=g,e.default=b,e.tcplayer=b,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});