UNPKG

ps-tcplayer

Version:

Tencent Cloud Player component with Vue2/Vue3 compatibility

1,004 lines (1,003 loc) 45.6 kB
import { h as S, isVue2 as M } from "vue-demi"; import { version as se } from "vue-demi"; function C(i, e) { let t = [...i]; if (!t.length) return e && e(), console.log("resouce loaded"), !1; let s = t.shift(); if (!s) return C(t, e), !1; s.endsWith(".js") ? I(s, () => { C(t, e); }) : s.endsWith(".css") ? x(s, () => { C(t, e); }) : (console.warn("no suport resource:", s), C(t, e)); } function I(i, e) { if (document.querySelector(`script[src="${i}"]`)) return console.log(i, ":has youle"), e && e(), !1; var t = document.createElement("script"), s = e || function() { }; t.type = "text/javascript", t.readyState ? t.onreadystatechange = function() { t.readyState == "loaded" || t.readyState == "complete", t.onreadystatechange = null, s(), console.log(t.readyState); } : (t.onload = function() { s(); }, t.onerror = function(n) { s(), console.log(n); }), t.src = i, document.querySelector("body").appendChild(t); } function x(i, e) { if (document.querySelector(`link[href="${i}"]`)) return console.log(i, ":has youle"), e && e(), !1; var t = document.createElement("link"), s = e || function() { }; t.rel = "stylesheet", t.readyState ? t.onreadystatechange = function() { t.readyState == "loaded" || t.readyState == "complete", t.onreadystatechange = null, s(), console.log(t.readyState); } : (t.onload = function() { s(); }, t.onerror = function(n) { s(), console.log(n); }), t.href = i, document.querySelector("head").appendChild(t); } const N = '<div class="player-olympic-player-next"><div class="player-olympic-player-next-tip">\u4E0B\u4E00\u8282</div></div>'; const D = "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=="; function f(i) { let e = document.createElement("div"); return e.innerHTML = i.trim(), e.childNodes[0]; } function b(i, e) { const t = e.parentNode; t.lastChild === e ? t.appendChild(i) : t.insertBefore(i, e.nextSibling); } class P { constructor(e, t) { this.player = e, this.clickHandle = t, this.$html = f(N); } createEl(e) { if (this.clickHandle) { this.$html.onclick = () => { console.log("this.clickHandle", this.clickHandle), typeof this.clickHandle == "function" ? this.clickHandle() : typeof this.clickHandle == "string" && (window.location.href = this.clickHandle); }, this.$html.style.backgroundImage = `url(${D})`; const t = e.querySelector(".vjs-play-control"); b(this.$html, t); } } dispose() { this.$html.parentNode.removeChild(this.$html); } } const R = '<div class="player-olympic-player-prev"><div class="player-olympic-player-prev-tip">\u4E0A\u4E00\u8282</div></div>'; const H = "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=="; class _ { constructor(e, t) { this.player = e, this.clickHandle = t, this.$html = f(R); } createEl(e) { if (this.clickHandle) { this.$html.onclick = () => { typeof this.clickHandle == "function" ? this.clickHandle() : typeof this.clickHandle == "string" && (window.location.href = this.clickHandle); }, this.$html.style.backgroundImage = `url(${H})`; const t = e.querySelector(".vjs-play-control"); b(this.$html, t); } } dispose() { this.$html.parentNode.removeChild(this.$html); } } const G = '<div class="memory-play-wrap"></div>'; class Y { constructor(e, t = !1, s, n, o) { this.html = f(G), this.player = e, this.autoPlay = t, this.getTime = s || this._getTime, this.saveTimeFunction = n || this._saveTime, this.hasMemoryDisplay = !1, this.htime = o || 0, this.memoryKey = "tcplayer_memory_"; } createEl(e) { e.appendChild(this.html); } ready() { try { const c = this.player; let y = this, u = c.options_ || {}, l = ""; u.fileID ? l = u.fileID : u.src && (l = u.src.replace(/\?.*$/, "")), this.memoryKey = "tcplayer_memory_" + l; let a = 0; this.htime > 0 ? a = this.htime : a = this.getTime(this.memoryKey) ? parseInt(this.getTime(this.memoryKey)) : 0, this.hasMemoryDisplay = !1; var e, t, s, n; if (t = this.getVideoTime(a), e = this.getVideoTime(this.htime), !this.hasMemoryDisplay && a > 0) { this.hasMemoryDisplay = !0; let g = 0; try { g = c.duration() || 0; } catch (d) { console.error("\u83B7\u53D6\u89C6\u9891\u65F6\u957F\u5931\u8D25:", d); } if (a <= parseInt(g) - 2) { var o = ""; n = 0, s = t, this.autoPlay ? (o = `<div class="memory-play"><span>\u60A8\u4E0A\u6B21\u5B66\u4E60\u5230${s}\u5DF2\u81EA\u52A8\u4E3A\u60A8\u7EED\u64AD</span><span class="play-jump">\u4ECE\u5934\u64AD\u653E</span><i class="iconfont icon-close"></i></div>`, c.currentTime(a)) : o = `<div class="memory-play"><span>\u60A8\u4E0A\u6B21\u5B66\u4E60\u5230${s}</span><span class="play-jump">\u7EE7\u7EED\u64AD\u653E</span><i class="iconfont icon-close"></i></div>`, c.paused() && this.autoPlay, this.html.innerHTML = o; let d = setTimeout(() => { this.html.innerHTML = ""; }, 5e3); var r = this.html.querySelector(".icon-close"); r && (r.onclick = () => { this.html.innerHTML = "", clearTimeout(d); }); var h = this.html.querySelector(".play-jump"); h && (h.onclick = () => { if (this.autoPlay ? c.currentTime(0) : c.currentTime(a), c.paused() && this.autoPlay) try { c.play().catch((v) => { console.warn("\u70B9\u51FB\u540E\u64AD\u653E\u88AB\u963B\u6B62\uFF0C\u8FD9\u79CD\u60C5\u51B5\u5F88\u5C11\u89C1:", v); }); } catch (v) { console.warn("\u64AD\u653E\u5C1D\u8BD5\u5931\u8D25:", v); } this.html.innerHTML = "", clearTimeout(d); }); } } setTimeout(() => { !this.hasMemoryDisplay && a > 0 && this.processMemoryPlayPrompt(a); }, 500), this.setupTimeSaving(); } catch (c) { console.error(c); } } 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 s = 0; try { s = t.duration() || 0; } catch (n) { console.error("\u83B7\u53D6\u89C6\u9891\u65F6\u957F\u5931\u8D25:", n); } if (e <= parseInt(s) - 2) { const n = this.getVideoTime(e); let o = ""; this.autoPlay ? (o = `<div class="memory-play"><span>\u60A8\u4E0A\u6B21\u5B66\u4E60\u5230${n}\u5DF2\u81EA\u52A8\u4E3A\u60A8\u7EED\u64AD</span><span class="play-jump">\u4ECE\u5934\u64AD\u653E</span><i class="iconfont icon-close"></i></div>`, t.currentTime(e)) : o = `<div class="memory-play"><span>\u60A8\u4E0A\u6B21\u5B66\u4E60\u5230${n}</span><span class="play-jump">\u7EE7\u7EED\u64AD\u653E</span><i class="iconfont icon-close"></i></div>`, this.html.innerHTML = o; let r = setTimeout(() => { this.html.innerHTML = ""; }, 5e3); const h = this.html.querySelector(".icon-close"); h && (h.onclick = () => { this.html.innerHTML = "", clearTimeout(r); }); const c = this.html.querySelector(".play-jump"); c && (c.onclick = () => { if (this.autoPlay ? t.currentTime(0) : t.currentTime(e), t.paused()) try { t.play().catch((y) => { console.warn("\u70B9\u51FB\u540E\u64AD\u653E\u88AB\u963B\u6B62:", y); }); } catch (y) { console.warn("\u64AD\u653E\u5C1D\u8BD5\u5931\u8D25:", y); } this.html.innerHTML = "", clearTimeout(r); }); } } setupTimeSaving() { const e = this.player; let t = this; document.removeEventListener("visibilitychange", this.visibilityHandler), this.visibilityHandler = function() { document.visibilityState === "hidden" && 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 || typeof e.currentTime != "function") return; const t = e.currentTime(); t > 0 && this.saveTimeFunction(this.memoryKey, t); } catch (t) { console.error("\u4FDD\u5B58\u8BB0\u5FC6\u65F6\u95F4\u5931\u8D25:", t); } } getVideoTime(e) { let t = Math.round(e), s = Math.floor(t / 3600), n = Math.floor((t - s * 3600) / 60), o = t - s * 3600 - n * 60; return n < 10 && (n = "0" + n), o < 10 && (o = "0" + o), s === 0 ? n + ":" + o : s + ":" + n + ":" + o; } _getTime(e) { return localStorage.getItem(e); } _saveTime(e, t) { localStorage.setItem(e, t); } } const B = ` <div class="quality-components"> <div class="current-quality-cto" data-ref=""></div> <ul class="quality-list"> </ul> </div> `, L = ` <div class="quality-modal"> <span class="switchimg"></span> <span class="current-quality-tag"></span> , <span class="wait"></span> </div> `; class U { constructor(e, t, s, n) { this.player = e, this.html = f(B), this.modalHtml = f(L), this.hasCreated = !1, this.definition = s, this.getQuality = t, this.desc = n, this.html.style.display = "none"; } createEl(e) { const t = this.player; let s = !1; try { typeof t.lang == "function" ? s = t.lang() === "en-us" : typeof t.lang == "string" ? s = t.lang === "en-us" : t.options_ && t.options_.language && (s = t.options_.language === "en-us"); } catch { console.warn("\u65E0\u6CD5\u83B7\u53D6\u64AD\u653E\u5668\u8BED\u8A00\u8BBE\u7F6E\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u4E2D\u6587"); } this.isEn = s, this.html.querySelector(".current-quality-cto").innerText = this.isEn ? "Resolution" : this.desc || "\u6E05\u6670\u5EA6", this.modalHtml.querySelector(".switchimg").innerText = this.isEn ? "Switching to you for" : "\u6B63\u5728\u4E3A\u60A8\u5207\u6362\u5230", this.modalHtml.querySelector(".wait").innerText = this.isEn ? "Please wait..." : "\u8BF7\u7A0D\u540E..."; let n = e.querySelector(".vcp-controls-panel"); n ? n.appendChild(this.html) : (console.warn("\u627E\u4E0D\u5230\u64AD\u653E\u5668\u63A7\u5236\u680F\uFF0C\u5C1D\u8BD5\u6DFB\u52A0\u5230\u6839\u5143\u7D20"), e.appendChild(this.html)), e.appendChild(this.modalHtml); } setCurrentQuality(e, t) { this.html.style.display = "block"; let s = this.html.querySelector(".current-quality-cto"); s.innerText = e, s.dataset.def = t, this.definition = t; let n = this.html.querySelector(".quality-list"), o = n.querySelector(".current"); o && (o.className = ""); let r = n.querySelector(`li[data-def="${t}"]`); r && (r.className = "current"); } filterDefinitionList(e) { return e.filter((t) => t.definition !== "SD"); } created() { const e = this.player; try { let n = []; if (e.getVideoQualityList && typeof e.getVideoQualityList == "function") n = e.getVideoQualityList(); else if (e.qualities && typeof e.qualities == "function") n = e.qualities(); else if (e.tech_ && e.tech_.hls && e.tech_.hls.representations) { const l = e.tech_.hls.representations(); n = Array.from(l).map((a, g) => ({ definition: a.height + "p", name: a.height + "p", url: a.id })); } else console.warn("\u65E0\u6CD5\u83B7\u53D6\u6E05\u6670\u5EA6\u5217\u8868\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u503C"), n = [ { definition: "HD", name: "\u8D85\u6E05", url: "" }, { definition: "SD", name: "\u6807\u6E05", url: "" } ]; this._urls = n.map((l) => ({ definition: l.definition || l.id || "HD", desc: l.name || l.label || "\u9AD8\u6E05", Url: l.url || "" })), (!this._urls || this._urls.length === 0) && (this._urls = [ { definition: "HD", desc: "\u8D85\u6E05", Url: "" }, { definition: "SD", desc: "\u6807\u6E05", Url: "" } ]); for (var t = 0; t < this._urls.length; t++) this._urls[t].definition === "AUTO" && (this._urls[t].desc = "\u81EA\u52A8"), this._urls[t].desc || (this._urls[t].desc = ""); let o = this.html.querySelector(".current-quality-cto"), r = this.html.querySelector(".quality-list"); if (!o || !r) { console.error("\u6E05\u6670\u5EA6\u7EC4\u4EF6HTML\u5143\u7D20\u672A\u627E\u5230"); return; } let c = this.filterDefinitionList(this._urls).map((l) => `<li data-def="${l.definition}">${l.desc}</li>`); const y = this.html.querySelector(".quality-list"); if (y && (y.innerHTML = c.join("")), this.hasCreated == !1) { if (!this.definition && this._urls.length > 0) { let l = r.querySelector(`li[data-def="${this._urls[0].definition}"]`); l && (l.className = "current", o.innerText = this._urls[0].desc); } else for (var t = 0; t < this._urls.length; t++) if (this.definition == this._urls[t].definition) { var s = r.querySelector(`li[data-def="${this.definition}"]`); s && (s.className = "current", o.innerText = this._urls[t].desc); break; } } this.hasCreated = !0; let u = null; o.onclick = () => { r.style.display = "block"; }, o.onmouseleave = () => { u = setTimeout(() => { r.style.display = "none"; }, 100); }, r.onmouseenter = () => { clearTimeout(u); }, r.onmouseleave = () => { r.style.display = "none"; }, r.onclick = ({ target: l }) => { let a = l.dataset.def, g = l.innerText; if (a && l.className !== "current") { let d = this._urls.find((p) => p.definition === a); if (!d) return; let v = 0; try { v = e.currentTime(); } catch (p) { console.warn("\u65E0\u6CD5\u83B7\u53D6\u5F53\u524D\u64AD\u653E\u65F6\u95F4", p); } try { if (e.switchQuality && typeof e.switchQuality == "function") e.switchQuality(a); else if (e.tech_ && e.tech_.hls && e.tech_.hls.selectPlaylist) { const p = e.tech_.hls.representations(), A = Array.from(p).find(($) => $.height + "p" === a); A && A.enabled(!0); } } catch (p) { console.warn("\u5207\u6362\u6E05\u6670\u5EA6\u5931\u8D25", p); } this.setCurrentQuality(d.desc, d.definition), this.modalHtml.style.display = "block"; const k = this.modalHtml.querySelector("span.current-quality-tag"); k && (k.innerText = d.desc), setTimeout(() => { try { e.currentTime(v); } catch (p) { console.warn("\u65E0\u6CD5\u8BBE\u7F6E\u64AD\u653E\u65F6\u95F4", p); } }, 500); } console.log(a, "getQuality-definition"), console.log(g, "getQuality-desc"); try { localStorage.setItem("cto_video_definition", a), localStorage.setItem("cto_video_desc", g); } catch (d) { console.warn("\u65E0\u6CD5\u4FDD\u5B58\u6E05\u6670\u5EA6\u8BBE\u7F6E\u5230localStorage", d); } u = setTimeout(() => { r.style.display = "none"; }, 100); }; } catch (n) { console.error("QualityComponent\u521B\u5EFA\u8FC7\u7A0B\u51FA\u9519:", n); } } ready() { const e = this.player; try { let t = null; if (e.getVideoQuality && typeof e.getVideoQuality == "function") try { t = e.getVideoQuality(), console.log(t, "Quality"); } catch (s) { console.warn("\u83B7\u53D6\u89C6\u9891\u6E05\u6670\u5EA6\u5931\u8D25", s); } this.modalHtml && (this.modalHtml.style.display = "none"); try { let s = document.querySelector(".vcp-quality"); s && (s.style.display = "none"); } catch (s) { console.warn("\u65E0\u6CD5\u9690\u85CF\u539F\u59CB\u6E05\u6670\u5EA6\u6309\u94AE", s); } } catch (t) { console.error("QualityComponent ready\u8FC7\u7A0B\u51FA\u9519:", t); } } } const Q = ` <div class="rate-components"> <div class="current-rate">1.0x</div> <ul class="rate-list"> <li data-rate="2.0">2.0x</li> <li data-rate="1.75">1.75x</li> <li data-rate="1.5">1.5x</li> <li data-rate="1.25">1.25x</li> <li data-rate="1.0" class="current">1.0x</li> <li data-rate="0.5">0.5x</li> </ul> </div> `; class F { constructor(e) { this.html = f(Q), this.player = e, this.hasCreated = !1, this.rate = this.getRate(); } createEl(e) { try { if (!e) { console.warn("RateComponent: DOM\u5143\u7D20\u4E0D\u5B58\u5728"); return; } let t = e.querySelector(".vcp-controls-panel"); if (!t) { console.warn("RateComponent: \u65E0\u6CD5\u627E\u5230\u63A7\u5236\u680F\u5143\u7D20\uFF0C\u5C1D\u8BD5\u6DFB\u52A0\u5230\u6839\u5143\u7D20"), e.appendChild(this.html); return; } t.appendChild(this.html); } catch (t) { console.error("RateComponent\u521B\u5EFADOM\u5143\u7D20\u5931\u8D25:", t); } } created() { if (this.hasCreated == !1) { if (this.rate) { this.player.playbackRate(parseFloat(this.rate)); let t = this.html.querySelector('li[class="current"]'); t && (t.className = ""); let s = this.html.querySelector(`li[data-rate="${this.rate}"]`); s && (s.className = "current"); } else this.rate = "1.0"; let e = this.html.querySelector(".current-rate"); e.innerText = this.rate + "x"; } this.hasCreated = !0; } ready() { let e = this.html.querySelector(".current-rate"), t = this.html.querySelector(".rate-list"), s = null, n = document.querySelector(".vcp-rate"); n && (n.style.display = "none"), e.onclick = () => { t.style.display = "block"; }, e.onmouseleave = () => { s = setTimeout(() => { t.style.display = "none"; }, 100); }, t.onmouseenter = () => { clearTimeout(s); }, t.onmouseleave = () => { t.style.display = "none"; }, t.onclick = ({ target: o }) => { let r = o.dataset.rate; if (r) { if (this.player.playbackRate(parseFloat(r)), o.className !== "current") { let h = t.querySelector(".current"); h && (h.className = ""), o.className = "current"; } t.style.display = "none", e.innerText = r + "x", this.setRate(r); } }; } setRate(e) { localStorage.setItem("cto_video_Rate", e); } getRate() { return localStorage.getItem("cto_video_Rate"); } } class Z { constructor(e, t, s, n = "random") { this.text = t, this.style = s || { fontSize: "14px", color: "#fff" }, this.html = f('<div class="bullet-screen paused"></div>'), this.bulletPosition = n, 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; t.autoplay() === !1 && (this.html.style.animationPlayState = "paused"), Object.keys(this.style).forEach((r) => this.html.style[r] = this.style[r]); var s = this.html.offsetHeight, n = parseInt(t.height()), o = n - s; if (this.bulletPosition === "bottom") this.html.style.bottom = 0; else { let r = this.bulletPosition === "top" ? 0 : this.randomTop(o); this.html.style.top = r; } this.bulletPosition === "random" && this.html.addEventListener("animationiteration", () => { this.html.style.top = this.randomTop(o); }), this.html.style.webkitAnimationDuration = this.animationtime + "s", this.start = new Date(); } playing(e) { console.log("bulletplayering"), this.html.style.animationPlayState = "running", this.start = new Date(); } timeupdate(e) { const t = this.player; var s = Math.random(); this.maxtime - this.mintime > 0 ? s = this.mintime + (this.maxtime - this.mintime) * s : s = 0; let n = t.el(), o = n.querySelector(".bullet-screen"); if (this.time = new Date() - this.start + this.stoptime, !o) this.time - this.animationtime * 1e3 - s * 1e3 > 0 && (n.appendChild(this.html), this.start = new Date(), this.stoptime = 0); else if (this.time - this.animationtime * 1e3 > 0) o.remove(), this.stoptime = 0; else { o.className !== "bullet-screen" && (o.className = "bullet-screen"); let r = getComputedStyle(o), h = r.getPropertyValue("display"), c = r.getPropertyValue("opacity"), y = r.getPropertyValue("visibility"), u = this.text, l = o.innerText; h === "none" && o.style.setProperty("display", "block"), c !== "1" && o.style.setProperty("opacity", "1"), y === "hidden" && o.style.setProperty("visibility", "visible"), u != l && (o.innerText = u); } } pause(e) { console.log("pause"), this.html.style.animationPlayState = "paused"; } randomTop(e) { return Math.floor(Math.random() * e) + "px"; } } const z = { CountdownHtml: '<div class="countdown-wrap"><div class="countdown"></div></div>', RateHtml: '<div class="player-rate-wrap"><div class="player-rate-tips">\u8FD9\u8282\u8BFE\u7A0B\u60A8\u662F\u5426\u6EE1\u610F\uFF1F</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">\u8BC4\u5206</div></div></div>' }; class O { constructor(e, t = !0, s, n, o) { this.html = f(z.CountdownHtml), this.player = e, this.open = t, this.time = s || 15, this.type = n, this.isClicked = !1, this.starOpen = o, this.player.on("timeupdate", () => this.timeupdate()); } createEl(e) { this.open && e.appendChild(this.html); } timeupdate() { const e = this.player; if (this.type == "star") { var t = e.duration() - e.currentTime(); t <= this.time && this.starOpen(); } else if (this.open) { var s = this.html.querySelector(".countdown"), t = e.duration() - e.currentTime(); if (t <= this.time) { t = t - t % 1 + 1; var n = `<div class="countdown-txt"> <span class="time">${t}s</span>\u540E\u4E3A\u60A8\u64AD\u653E\u4E0B\u4E00\u8282 </div>`; s.innerHTML = n; } else s.innerHTML = ""; } } getVideoTime(e) { let t = Math.round(e), s = Math.floor(t / 3600), n = Math.floor((t - s * 3600) / 60), o = t - s * 3600 - n * 60; return n < 10 && (n = "0" + n), o < 10 && (o = "0" + o), s === 0 ? n + ":" + o : s + ":" + n + ":" + o; } } const j = ` <div class="prism-snapshot-btn"></div> `; class q { constructor(e) { this.player = e, this.html = f(j); } createEl(e) { const t = e.querySelector(".vjs-control-bar"), s = t.querySelector(".tcp-video-quality-switcher"); t.insertBefore(this.html, s.nextSibling); } ready() { this.html.addEventListener("click", () => { this.captureSnapshot(); }); } captureSnapshot() { const e = this.player, t = e.tech_.el_; if (!t) { console.error("\u89C6\u9891\u5143\u7D20\u4E0D\u5B58\u5728"); return; } const s = document.createElement("canvas"); s.width = t.videoWidth, s.height = t.videoHeight, s.getContext("2d").drawImage(t, 0, 0, s.width, s.height); try { const o = s.toDataURL("image/png"), r = document.createElement("a"); r.href = o; const h = new Date().toISOString().replace(/[:.]/g, "-"), y = `${e.el_.getAttribute("title") || "video"}_${h}.png`; r.download = y, document.body.appendChild(r), r.click(), document.body.removeChild(r); } catch (o) { console.error("\u622A\u56FE\u5931\u8D25:", o); } } } const m = { PlayerNextComponent: P, PlayPrevComponent: _, MemoryPlayComponent: Y, QualityComponent: U, RateComponent: F, BulletScreenComponent: Z, CountdownComponent: O, SnapshotComponent: q }; window.TcPlayerComponent = m; function V(i) { !i || (i.lang || (i.lang = function(e) { return { Play: "\u64AD\u653E", Pause: "\u6682\u505C", Mute: "\u9759\u97F3", Unmute: "\u53D6\u6D88\u9759\u97F3", Fullscreen: "\u5168\u5C4F", "Exit Fullscreen": "\u9000\u51FA\u5168\u5C4F", Settings: "\u8BBE\u7F6E", Speed: "\u901F\u5EA6", Normal: "\u6B63\u5E38", Quality: "\u8D28\u91CF", Auto: "\u81EA\u52A8", HD: "\u9AD8\u6E05", SD: "\u6807\u6E05" }[e] || e; }), i.options_ || (i.options_ = i.options_ || {}), i.options_ && !i.options_.languages && (i.options_.languages = { "zh-CN": { Play: "\u64AD\u653E", Pause: "\u6682\u505C", Mute: "\u9759\u97F3", Unmute: "\u53D6\u6D88\u9759\u97F3", Fullscreen: "\u5168\u5C4F", "Exit Fullscreen": "\u9000\u51FA\u5168\u5C4F", Settings: "\u8BBE\u7F6E", Speed: "\u901F\u5EA6", Normal: "\u6B63\u5E38", Quality: "\u8D28\u91CF", Auto: "\u81EA\u52A8", HD: "\u9AD8\u6E05", SD: "\u6807\u6E05" } }, i.options_.language = "zh-CN")); } function J(i, e) { if (!i) return []; const t = []; try { if (!e || !Array.isArray(e)) return t; e.forEach((s) => { try { if (s.type && typeof s.type == "function") { if (!i || !i.el_) { console.warn("\u64AD\u653E\u5668\u5B9E\u4F8B\u4E0D\u5B8C\u6574\uFF0C\u8DF3\u8FC7\u7EC4\u4EF6\u6CE8\u518C", s.name); return; } let n; try { n = new s.type(i, ...s.args || []); } catch (o) { console.error(`\u7EC4\u4EF6 ${s.name} \u521D\u59CB\u5316\u5931\u8D25:`, o); return; } if (s.name) { if (i._components || (i._components = {}), i._components[s.name] = n, t.push(n), i.getComponent || (i.getComponent = function(o) { return this._components && this._components[o]; }), n.createEl && typeof n.createEl == "function") try { i.el_ && i.el_.nodeType === 1 ? n.createEl(i.el_) : console.warn(`\u7EC4\u4EF6 ${s.name} \u8DF3\u8FC7DOM\u521B\u5EFA\uFF0C\u64AD\u653E\u5668\u5143\u7D20\u4E0D\u5B58\u5728`); } catch (o) { console.error(`\u7EC4\u4EF6 ${s.name} \u521B\u5EFADOM\u5143\u7D20\u5931\u8D25:`, o), console.log("\u7EC4\u4EF6:", n), console.log("\u9519\u8BEF\u8BE6\u60C5:", o); } if (n.created && typeof n.created == "function") try { n.created(); } catch (o) { console.error(`\u7EC4\u4EF6 ${s.name} created\u65B9\u6CD5\u6267\u884C\u5931\u8D25:`, o); } } } } catch (n) { console.error("\u5904\u7406\u63D2\u4EF6\u65F6\u53D1\u751F\u9519\u8BEF:", n); } }); } catch (s) { console.error("\u6CE8\u518C\u7EC4\u4EF6\u9519\u8BEF:", s); } return t; } function W(i) { if (!(!i || !i._components)) try { Object.values(i._components).forEach((e) => { try { e.ready && typeof e.ready == "function" && e.ready(); } catch (t) { console.error("\u7EC4\u4EF6ready\u65B9\u6CD5\u6267\u884C\u5931\u8D25:", t); } }); } catch (e) { console.error("\u521D\u59CB\u5316\u7EC4\u4EF6ready\u72B6\u6001\u5931\u8D25:", e); } } function X(i) { if (!(!i || !i._components)) try { Object.values(i._components).forEach((e) => { try { e.destroy && typeof e.destroy == "function" && e.destroy(); } catch (t) { console.error("\u7EC4\u4EF6destroy\u65B9\u6CD5\u6267\u884C\u5931\u8D25:", t); } }), i._components = {}; } catch (e) { console.error("\u9500\u6BC1\u7EC4\u4EF6\u5931\u8D25:", e); } } const w = { addPlayerCompatLayer: V, registerComponents: J, initComponentsReadyState: W, destroyComponents: X }; window._pursuer = window._pursuer || {}; const T = window._pursuer, K = { name: "PsTcPlayer", props: { config: { default() { return {}; } } }, data() { return { id: "", duration: 0, currentTime: 0, hearttime: 2e4, timers: [], _readyCalled: !1 }; }, render() { return S("div", { class: "ps-player", style: { width: "100%", height: "100%", position: "relative" } }, [ S("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(i, e) { if (!e || Object.keys(e).length === 0) { console.log("\u521D\u59CB\u914D\u7F6E\uFF0C\u901A\u8FC7mounted\u94A9\u5B50\u521D\u59CB\u5316"); return; } this._source_loded && JSON.stringify(i) !== JSON.stringify(e) && (console.log("\u914D\u7F6E\u53D8\u66F4\uFF0C\u91CD\u65B0\u521D\u59CB\u5316\u64AD\u653E\u5668"), this.$nextTick(() => { this.init(); })); }, deep: !0 } }, mounted() { if (!window) return !1; this.id = this.getCfPlayerId(); let i = []; const e = "//web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/tcplayer.v4.5.2.min.js", t = "//web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/tcplayer.min.css", s = "//web.sdk.qcloud.com/player/tcplayer/release/v4.5.2/libs/hls.min.0.13.2m.js"; window.TCPlayer || (i = [t, s, e]), C(i, () => { 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() { return T.playerCount = T.playerCount ? T.playerCount + 1 : 1, this.config && this.config.id || "player-container-id"; }, init() { if (!document.querySelector(`#${this.id}`)) return console.log(`#${this.id} dom is not found`); const i = { width: "686px", height: "450px", reportable: !0, plugins: { ContinuePlay: { auto: !0 }, ProgressMarker: !1, ContextMenu: { levelSwitch: { open: !0, switchingText: "\u6B63\u5728\u4E3A\u60A8\u5207\u6362\u5230", switchedText: "", switchErrorText: "" } } } }; this.initPlayer({ ...this.config, ...i, ...this.config.tconfig || {} }); }, setupPlugins() { const i = this, e = []; try { (i.config.onnext || i.config.showNext) && e.push({ name: "PlayerNextComponent", type: m.PlayerNextComponent, args: [i.onnext] }), (i.config.onpre || i.config.showPre) && e.push({ name: "PlayPrevComponent", type: m.PlayPrevComponent, args: [i.onpre] }); const t = i.config.tconfig && i.config.tconfig.plugins && i.config.tconfig.plugins.ContinuePlay, s = i.config.htime || 0, n = t ? t.auto === !0 : !1; try { e.push({ name: "MemoryPlayComponent", type: m.MemoryPlayComponent, args: [n, null, null, s] }); } catch (o) { console.error("\u6DFB\u52A0MemoryPlayComponent\u5931\u8D25:", o); } if (e.push({ name: "QualityComponent", type: m.QualityComponent, args: [null, "HD", "\u9AD8\u6E05"] }), e.push({ name: "RateComponent", type: m.RateComponent }), e.push({ name: "SnapshotComponent", type: m.SnapshotComponent }), i.config.bulletScreen, e.push({ name: "BulletScreenComponent", type: m.BulletScreenComponent, args: [i.config.bulletContent || "\u5B66\u4E60\u6210\u5C31\u68A6\u60F3", i.config.bulletStyle || { fontSize: "16px", color: "#fff" }, "random"] }), i.config.onnext || i.config.showNext, e.push({ name: "CountdownComponent", type: m.CountdownComponent, args: [i.config.onnext || i.config.showNext ? !0 : "", !1, i.config.star, i.config.openStar] }), this.config.tconfig && this.config.tconfig.plugins) { const o = { ...this.config.tconfig.plugins }; delete o.ContinuePlay, Object.keys(o).forEach((r) => { const h = o[r]; typeof h == "object" && !Array.isArray(h) && e.push({ name: r, config: h }); }); } } catch (t) { console.error("\u8BBE\u7F6E\u63D2\u4EF6\u65F6\u51FA\u9519:", t); } return e; }, initPlayer(i) { if (console.log("\u521D\u59CB\u5316\u64AD\u653E\u5668\u914D\u7F6E:", i), this.$player && (console.log("\u64AD\u653E\u5668\u5B9E\u4F8B\u5DF2\u5B58\u5728\uFF0C\u9500\u6BC1\u65E7\u5B9E\u4F8B"), this.destroy()), !window.TCPlayer) return console.warn("TCPlayer \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u521D\u59CB\u5316\u64AD\u653E\u5668"), !1; console.log("\u521B\u5EFA TCPlayer \u5B9E\u4F8B\uFF0C\u914D\u7F6E:", i), this.hearttime = this.config.hearttime || this.hearttime, this.runs(i); }, runs(i) { if (this.$player = new TCPlayer(this.id, i), console.log("\u521B\u5EFA\u64AD\u653E\u5668\u5B9E\u4F8B\uFF0C\u914D\u7F6E:", i), this.$player) { w.addPlayerCompatLayer(this.$player); let e = []; try { e = this.setupPlugins() || []; } catch (t) { console.error("\u8BBE\u7F6E\u63D2\u4EF6\u65F6\u51FA\u9519:", t); } this.$player.on("ready", () => { setTimeout(() => { try { w.registerComponents(this.$player, e), this.onready(); } catch (t) { console.error("\u6CE8\u518C\u7EC4\u4EF6\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF:", t); } }, 500); }), 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); } else { console.error("TCPlayer\u5B9E\u4F8B\u521B\u5EFA\u5931\u8D25"); return; } 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 { w.initComponentsReadyState(this.$player); } catch (i) { console.error("\u521D\u59CB\u5316\u7EC4\u4EF6ready\u65B9\u6CD5\u5931\u8D25:", i); } } }, onsourceloaded(i) { const e = i.paramData, t = e.desc, s = e.definition, n = this.$player.getComponent && this.$player.getComponent("QualityComponent"); n && n.setCurrentQuality && n.setCurrentQuality(t, s); }, onerror(i) { this.$emit("onerror", this.$player), this.config.onerror && this.config.onerror(this.$player); }, 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); }, onnext() { this.$emit("onnext", this.$player), this.config.onnext && this.config.onnext(this.$player); }, onpre() { this.$emit("onpre", this.$player), this.config.onpre && this.config.onpre(this.$player); }, onwaiting() { this.$emit("onwaiting", this.$player), this.config.onwaiting && this.config.onwaiting(this.$player); }, onsnapshoted(i) { this.$emit("onsnapshoted", i, this.$player), this.config.onsnapshoted && this.config.onsnapshoted(i, this.$player); }, onheart(i) { if (i) return this.$emit("onheart", this.$player), this.config.onheart && this.config.onheart(this.$player), !1; if (this.onheart_lock) return !1; clearTimeout(this.timers[0]), this.timers[0] = null, this.onheart_lock = !0, 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); try { w.destroyComponents(this.$player); } catch (i) { console.error("\u9500\u6BC1\u7EC4\u4EF6\u5931\u8D25:", i); } 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(i) { if (!this.$player) return !1; const e = i.target, t = !e.hasAttribute("contenteditable") && !/INPUT|TEXTAREA/gi.test(e.tagName); (i.keyCode === 13 || i.keyCode === 32) && t ? this.$player.getStatus() === "playing" ? this.$player.pause() : this.$player.play() : (i.keyCode === 37 || i.keyCode === 39) && t && (this._keySeekTime = this.getCurrentTime(), i.keyCode === 37 ? this._keySeekTime -= 5 : this._keySeekTime += 5); }, seekTo(i) { this.$player && this.$player.seek(Number(i) || 0); }, onkeyup(i) { if (!this.$player) return !1; const e = i.target, t = !e.hasAttribute("contenteditable") && !/INPUT|TEXTAREA/gi.test(e.tagName); if (!((i.keyCode === 37 || i.keyCode === 39) && !t)) { if (this.config.notProgress && i.keyCode === 39) return this._keySeekTime = null, !1; if (i.keyCode === 37 || i.keyCode === 39) { const s = this.$player.getDuration(); this._keySeekTime <= 0 ? this._keySeekTime = 0 : this._keySeekTime >= s && (this._keySeekTime = s - 5), this.seekTo(this._keySeekTime), this._keySeekTime = null; } } } } }, E = K; E.install = function(i, e = {}) { i.component(E.name, E); const t = M ? i.prototype : i.config.globalProperties; t.$tcPlayer = (s) => (console.warn("\u4F7F\u7528 $tcPlayer \u521B\u5EFA\u72EC\u7ACB\u5B9E\u4F8B\u7684\u65B9\u5F0F\u5DF2\u5F03\u7528\uFF0C\u8BF7\u76F4\u63A5\u4F7F\u7528\u7EC4\u4EF6\u6807\u7B7E"), null); }; export { m as TcPlayerComponent, E as default, E as tcplayer, se as version };