kplayer-ts 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +466 -138
- package/dist/{kplayer.cjs.js → kplayer-ts.cjs.js} +28 -27
- package/dist/kplayer-ts.cjs.js.map +1 -0
- package/dist/kplayer-ts.d.ts +6 -0
- package/dist/{kplayer.es.js → kplayer-ts.es.js} +255 -238
- package/dist/kplayer-ts.es.js.map +1 -0
- package/dist/{kplayer.umd.js → kplayer-ts.umd.js} +72 -71
- package/dist/kplayer-ts.umd.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/template/player.d.ts +21 -0
- package/dist/template/video.d.ts +12 -0
- package/dist/ts/ad.d.ts +39 -0
- package/dist/ts/bar.d.ts +10 -0
- package/dist/ts/bezel.d.ts +6 -0
- package/dist/ts/contextmenu.d.ts +12 -0
- package/dist/ts/controller.d.ts +38 -0
- package/dist/ts/events.d.ts +11 -0
- package/dist/ts/fullscreen.d.ts +15 -0
- package/dist/ts/hotkey.d.ts +11 -0
- package/dist/ts/i18n.d.ts +6 -0
- package/dist/ts/icons.d.ts +22 -0
- package/dist/ts/index.d.ts +3 -0
- package/dist/ts/info-panel.d.ts +16 -0
- package/dist/ts/options.d.ts +5 -0
- package/dist/ts/player.d.ts +107 -0
- package/dist/ts/setting.d.ts +14 -0
- package/dist/ts/subtitle.d.ts +22 -0
- package/dist/ts/subtitles.d.ts +19 -0
- package/dist/ts/template.d.ts +94 -0
- package/dist/ts/thumbnails.d.ts +18 -0
- package/dist/ts/timer.d.ts +22 -0
- package/dist/ts/types.d.ts +146 -0
- package/dist/ts/user.d.ts +21 -0
- package/dist/ts/utils.d.ts +21 -0
- package/package.json +7 -5
- package/dist/kplayer.cjs.js.map +0 -1
- package/dist/kplayer.css +0 -1
- package/dist/kplayer.es.js.map +0 -1
- package/dist/kplayer.umd.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(':root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FO_F.ttf) format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk7PFO_F.ttf) format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/manrope/v20/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk4aE-_F.ttf) format("truetype")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIbaomQNQcsA88c7O9yZ4KMCoOg4IA6-91aHEjcWuA_qU7NSg.ttf) format("truetype")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIbaomQNQcsA88c7O9yZ4KMCoOg4IA6-91aHEjcWuA_m07NSg.ttf) format("truetype")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/plusjakartasans/v12/LDIbaomQNQcsA88c7O9yZ4KMCoOg4IA6-91aHEjcWuA_TknNSg.ttf) format("truetype")}@keyframes my-face{2%{transform:translateY(1.5px) rotate(1.5deg)}4%{transform:translateY(-1.5px) rotate(-.5deg)}6%{transform:translateY(1.5px) rotate(-1.5deg)}8%{transform:translateY(-1.5px) rotate(-1.5deg)}10%{transform:translateY(2.5px) rotate(1.5deg)}12%{transform:translateY(-.5px) rotate(1.5deg)}14%{transform:translateY(-1.5px) rotate(1.5deg)}16%{transform:translateY(-.5px) rotate(-1.5deg)}18%{transform:translateY(.5px) rotate(-1.5deg)}20%{transform:translateY(-1.5px) rotate(2.5deg)}22%{transform:translateY(.5px) rotate(-1.5deg)}24%{transform:translateY(1.5px) rotate(1.5deg)}26%{transform:translateY(.5px) rotate(.5deg)}28%{transform:translateY(.5px) rotate(1.5deg)}30%{transform:translateY(-.5px) rotate(2.5deg)}32%{transform:translateY(1.5px) rotate(-.5deg)}34%{transform:translateY(1.5px) rotate(-.5deg)}36%{transform:translateY(-1.5px) rotate(2.5deg)}38%{transform:translateY(1.5px) rotate(-1.5deg)}40%{transform:translateY(-.5px) rotate(2.5deg)}42%{transform:translateY(2.5px) rotate(-1.5deg)}44%{transform:translateY(1.5px) rotate(.5deg)}46%{transform:translateY(-1.5px) rotate(2.5deg)}48%{transform:translateY(-.5px) rotate(.5deg)}50%{transform:translateY(.5px) rotate(.5deg)}52%{transform:translateY(2.5px) rotate(2.5deg)}54%{transform:translateY(-1.5px) rotate(1.5deg)}56%{transform:translateY(2.5px) rotate(2.5deg)}58%{transform:translateY(.5px) rotate(2.5deg)}60%{transform:translateY(2.5px) rotate(2.5deg)}62%{transform:translateY(-.5px) rotate(2.5deg)}64%{transform:translateY(-.5px) rotate(1.5deg)}66%{transform:translateY(1.5px) rotate(-.5deg)}68%{transform:translateY(-1.5px) rotate(-.5deg)}70%{transform:translateY(1.5px) rotate(.5deg)}72%{transform:translateY(2.5px) rotate(1.5deg)}74%{transform:translateY(-.5px) rotate(.5deg)}76%{transform:translateY(-.5px) rotate(2.5deg)}78%{transform:translateY(-.5px) rotate(1.5deg)}80%{transform:translateY(1.5px) rotate(1.5deg)}82%{transform:translateY(-.5px) rotate(.5deg)}84%{transform:translateY(1.5px) rotate(2.5deg)}86%{transform:translateY(-1.5px) rotate(-1.5deg)}88%{transform:translateY(-.5px) rotate(2.5deg)}90%{transform:translateY(2.5px) rotate(-.5deg)}92%{transform:translateY(.5px) rotate(-.5deg)}94%{transform:translateY(2.5px) rotate(.5deg)}96%{transform:translateY(-.5px) rotate(1.5deg)}98%{transform:translateY(-1.5px) rotate(-.5deg)}0%,to{transform:translate(0) rotate(0)}}.kplayer{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;line-height:1;font-family:Noto Sans,sans-serif}.kplayer *{box-sizing:content-box}.kplayer svg{width:100%;height:100%;fill:#fff}.kplayer svg path,.kplayer svg circle{fill:#fff}.kplayer svg[stroke] path,.kplayer svg[stroke] circle,.kplayer svg[stroke] line,.kplayer svg[stroke] polyline,.kplayer svg[stroke] rect{stroke:#fff;fill:none}.kplayer svg[stroke] path[fill=none][stroke=none]{stroke:none}.kplayer:-webkit-full-screen{width:100%;height:100%;background:#000;position:fixed;z-index:100000;left:0;top:0;margin:0;padding:0;transform:translate(0)}.kplayer.kplayer-no-awaken .kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box .kplayer-setting-showdan,.kplayer.kplayer-no-awaken .kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box .kplayer-setting-awaken,.kplayer.kplayer-no-awaken .kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box .kplayer-setting-danunlimit,.kplayer.kplayer-no-awaken .kplayer-awaken,.kplayer.kplayer-live .kplayer-time,.kplayer.kplayer-live .kplayer-bar-wrap,.kplayer.kplayer-live .kplayer-setting-speed,.kplayer.kplayer-live .kplayer-setting-loop,.kplayer.kplayer-live.kplayer-no-awaken .kplayer-setting{display:none}.kplayer.kplayer-arrow .kplayer-awaken{font-size:18px}.kplayer.kplayer-arrow .kplayer-icon{margin:0 -3px}.kplayer.kplayer-playing .kplayer-awaken .kplayer-awaken-move{animation-play-state:running}.kplayer.kplayer-loading .kplayer-bezel .diplayer-loading-icon{display:block}.kplayer.kplayer-loading .kplayer-awaken,.kplayer.kplayer-paused .kplayer-awaken,.kplayer.kplayer-loading .kplayer-awaken-move,.kplayer.kplayer-paused .kplayer-awaken-move{animation-play-state:paused}.kplayer.kplayer-hide-controller{cursor:none}.kplayer.kplayer-hide-controller .kplayer-controller-mask,.kplayer.kplayer-hide-controller .kplayer-controller{opacity:0;transform:translateY(100%)}.kplayer.kplayer-hide-controller .kplayer-title-bar{opacity:0;visibility:hidden}.kplayer.kplayer-hide-controller .kplayer-mobile-controls{opacity:0;visibility:hidden;pointer-events:none}.kplayer.kplayer-show-controller .kplayer-controller-mask,.kplayer.kplayer-show-controller .kplayer-controller{opacity:1}.kplayer.kplayer-fulled{position:fixed;z-index:100000;left:0;top:0;width:100%!important;height:100%!important}.kplayer.kplayer-mobile .kplayer-icons-center{display:none!important}.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-volume,.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-camera-icon,.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-airplay-icon,.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-chromecast-icon,.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-play-icon{display:none}.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-full-in-icon,.kplayer.kplayer-mobile .kplayer-controller .kplayer-icons .kplayer-full-icon{display:inline-block}.kplayer.kplayer-mobile .kplayer-title-bar{top:8px;right:8px;left:44px;max-width:none}.kplayer.kplayer-mobile .kplayer-title-bar .kplayer-title-main{font-size:14px}.kplayer.kplayer-mobile .kplayer-title-bar .kplayer-title-desc{font-size:12px}.kplayer.kplayer-mobile .kplayer-bar-time,.kplayer.kplayer-mobile.kplayer-hide-controller .kplayer-mobile-controls{display:none}.kplayer.kplayer-mobile .kplayer-mobile-controls{display:flex}.kplayer .kplayer-mobile-controls{display:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);align-items:center;gap:32px;z-index:1;transition:opacity .3s ease,visibility .3s ease}.kplayer .kplayer-mobile-controls button{background:transparent;border:none;outline:none;cursor:pointer;padding:0;opacity:.9}.kplayer .kplayer-mobile-controls button svg{width:36px;height:36px;display:block;fill:#fff;stroke:#fff}.kplayer .kplayer-mobile-controls button svg path{fill:#fff}.kplayer .kplayer-mobile-controls .kplayer-mobile-play-btn{width:52px;height:52px;background:#0006;border-radius:50%;display:flex;align-items:center;justify-content:center}.kplayer .kplayer-mobile-controls .kplayer-mobile-play-btn svg{width:28px;height:28px}.kplayer .kplayer-mobile-play{display:none!important}.kplayer-web-fullscreen-fix{position:fixed;top:0;left:0;margin:0;padding:0}[data-balloon]:before{display:none}[data-balloon]:after{padding:.3em .7em;background:#111111b3}[data-balloon][data-balloon-pos=up]:after{margin-bottom:0}.kplayer-bezel{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.kplayer-bezel .kplayer-bezel-icon{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;box-sizing:border-box;background:#00000080;border-radius:50%;opacity:0;pointer-events:none}.kplayer-bezel .kplayer-bezel-icon.kplayer-bezel-transition{animation:bezel-hide .5s linear}@keyframes bezel-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.kplayer-bezel .kplayer-danloading{position:absolute;top:50%;margin-top:-7px;width:100%;text-align:center;font-size:14px;line-height:14px;animation:my-face 5s infinite ease-in-out}.kplayer-bezel .diplayer-loading-icon{display:none;position:absolute;top:50%;left:50%;margin:-18px 0 0 -18px;height:36px;width:36px;pointer-events:none}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-hide{display:none}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot{animation:diplayer-loading-dot-fade .8s ease infinite;opacity:0;transform-origin:4px 4px}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-1{animation-delay:.1s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-2{animation-delay:.2s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-3{animation-delay:.3s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-4{animation-delay:.4s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-5{animation-delay:.5s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-6{animation-delay:.6s}.kplayer-bezel .diplayer-loading-icon .diplayer-loading-dot.diplayer-loading-dot-7{animation-delay:.7s}@keyframes diplayer-loading-dot-fade{0%{opacity:.7;transform:scale(1.2)}50%{opacity:.25;transform:scale(.9)}to{opacity:.25;transform:scale(.85)}}.kplayer-controller-mask{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%;position:absolute;bottom:0;transition:all .15s ease}.kplayer-back{position:absolute;top:10px;left:15px;height:30px;width:30px;z-index:90;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:1;visibility:visible;pointer-events:all}.kplayer-back .kplayer-title-back-btn{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;border:none;background:transparent;outline:none;cursor:pointer;opacity:1;transition:opacity .15s ease}.kplayer-back .kplayer-title-back-btn:hover{opacity:1}.kplayer-back .kplayer-title-back-btn svg{width:22px!important;height:22px!important;display:block;fill:#fff}.kplayer-back .kplayer-title-back-btn svg path{fill:#fff}@media (max-width: 768px){.kplayer-back{top:8px;left:10px;width:24px;height:24px}.kplayer-back .kplayer-title-back-btn{width:24px;height:24px}.kplayer-back .kplayer-title-back-btn svg{width:22px!important;height:22px!important}}.kplayer-title-wrap{position:absolute;top:10px;left:15px;right:5px;z-index:90}.kplayer-hide-controller .kplayer-title-wrap,.kplayer-hide-controller .kplayer-title-bar,.kplayer-hide-controller .kplayer-back{opacity:0;visibility:hidden;pointer-events:none}.kplayer-title-main{font-weight:800}.kplayer-title-bar{position:absolute;top:10px;right:15px;left:auto;z-index:90;min-height:30px;display:inline-flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;text-align:right;opacity:1;visibility:visible;pointer-events:none;max-width:60%}.kplayer-title-bar .kplayer-title-info{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.kplayer-title-bar .kplayer-title-main{display:block;font-size:22px;font-weight:700;color:#fff;line-height:1.2;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.01em;margin:0}.kplayer-title-bar .kplayer-title-desc{display:block;font-size:15px;font-weight:400;color:#fffc;line-height:1.3;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1400px){.kplayer-title-bar{top:10px;right:10px}.kplayer-title-bar .kplayer-title-main{font-size:20px}.kplayer-title-bar .kplayer-title-desc{font-size:14px}}@media (max-width: 768px){.kplayer-title-bar .kplayer-title-main{font-size:18px}.kplayer-title-bar .kplayer-title-desc{font-size:13px}}@media (max-width: 480px){.kplayer-title-bar .kplayer-title-main{font-size:13px}.kplayer-title-bar .kplayer-title-desc{font-size:11px}.kplayer-title-bar .kplayer-title-back-btn{width:30px;height:30px}.kplayer-title-bar .kplayer-title-back-btn svg{width:15px;height:15px}}.kplayer-title-bar .kplayer-title-info{min-height:30px;justify-content:center}.kplayer.kplayer-mobile .kplayer-back{top:8px;left:10px;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.kplayer.kplayer-mobile .kplayer-back .kplayer-title-back-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.kplayer.kplayer-mobile .kplayer-back .kplayer-title-back-btn svg{width:20px!important;height:20px!important}.kplayer.kplayer-mobile .kplayer-title-bar{top:8px;right:8px;left:44px;max-width:none;pointer-events:none}.kplayer.kplayer-mobile .kplayer-title-bar .kplayer-title-info{width:100%;gap:2px}.kplayer.kplayer-mobile .kplayer-title-bar .kplayer-title-main{font-size:13px;line-height:1.2;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.kplayer.kplayer-mobile .kplayer-title-bar .kplayer-title-desc{font-size:11px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kplayer-controller{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;user-select:none;transition:all .1s ease}.kplayer-controller .kplayer-bar-wrap{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:4px}.kplayer-controller .kplayer-bar-wrap:hover .kplayer-bar .kplayer-played .kplayer-thumb{transform:scale(1)}.kplayer-controller .kplayer-bar-wrap:hover .kplayer-highlight,.kplayer-controller .kplayer-bar-wrap:hover .kplayer-ad-marker{display:block;width:8px;transform:translate(-4px);top:4px;height:40%}.kplayer-controller .kplayer-bar-wrap .kplayer-ad-marker{z-index:12;position:absolute;top:5px;width:6px;height:30%;border-radius:6px;background-color:gold;text-align:center;transform:translate(-3px);transition:all .2s ease-in-out}.kplayer-controller .kplayer-bar-wrap .kplayer-ad-marker:hover .kplayer-ad-marker-text{display:block}.kplayer-controller .kplayer-bar-wrap .kplayer-ad-marker:hover~.kplayer-bar-preview{opacity:0}.kplayer-controller .kplayer-bar-wrap .kplayer-ad-marker:hover~.kplayer-bar-time{opacity:0}.kplayer-controller .kplayer-bar-wrap .kplayer-ad-marker .kplayer-ad-marker-text{display:none;position:absolute;left:50%;top:-24px;padding:5px 8px;background-color:#0000009e;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;transform:translate(-50%)}.kplayer-controller .kplayer-bar-wrap .kplayer-highlight{z-index:12;position:absolute;top:5px;width:6px;height:30%;border-radius:6px;background-color:#fff;text-align:center;transform:translate(-3px);transition:all .2s ease-in-out}.kplayer-controller .kplayer-bar-wrap .kplayer-highlight:hover .kplayer-highlight-text{display:block}.kplayer-controller .kplayer-bar-wrap .kplayer-highlight:hover~.kplayer-bar-preview{opacity:0}.kplayer-controller .kplayer-bar-wrap .kplayer-highlight:hover~.kplayer-bar-time{opacity:0}.kplayer-controller .kplayer-bar-wrap .kplayer-highlight .kplayer-highlight-text{display:none;position:absolute;left:50%;top:-24px;padding:5px 8px;background-color:#0000009e;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;transform:translate(-50%)}.kplayer-controller .kplayer-bar-wrap .kplayer-bar-preview{position:absolute;background:#fff;pointer-events:none;display:none;background-size:16000px 100%}.kplayer-controller .kplayer-bar-wrap .kplayer-bar-preview-canvas{position:absolute;width:100%;height:100%;z-index:1;pointer-events:none}.kplayer-controller .kplayer-bar-wrap .kplayer-bar-time{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:#0000009e;color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.kplayer-controller .kplayer-bar-wrap .kplayer-bar-time.hidden{opacity:0}.kplayer-controller .kplayer-bar-wrap .kplayer-bar{position:relative;height:4px;width:100%;background:#fff3;cursor:pointer}.kplayer-controller .kplayer-bar-wrap .kplayer-bar .kplayer-loaded{position:absolute;left:0;top:0;bottom:0;background:#fff6;height:4px;transition:all .5s ease;will-change:width}.kplayer-controller .kplayer-bar-wrap .kplayer-bar .kplayer-played{position:absolute;left:0;top:0;bottom:0;height:4px;will-change:width}.kplayer-controller .kplayer-bar-wrap .kplayer-bar .kplayer-played .kplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0)}.kplayer-controller .kplayer-icons{height:38px;position:absolute;bottom:0}.kplayer-controller .kplayer-icons.kplayer-icons-left .kplayer-icon{padding:7px}.kplayer-controller .kplayer-icons.kplayer-icons-right{right:20px}.kplayer-controller .kplayer-icons.kplayer-icons-right .kplayer-icon{padding:8px}.kplayer-controller .kplayer-icons.kplayer-icons-center{left:50%;transform:translate(-50%);display:inline-flex;align-items:center}.kplayer-controller .kplayer-icons.kplayer-icons-center .kplayer-icon{padding:8px}.kplayer-controller .kplayer-icons .kplayer-time,.kplayer-controller .kplayer-icons .kplayer-live-badge{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.kplayer-controller .kplayer-icons .kplayer-live-dot{display:inline-block;width:6px;height:6px;vertical-align:4%;margin-right:5px;content:"";border-radius:6px}.kplayer-controller .kplayer-icons .kplayer-icon{width:40px;height:100%;border:none;background-color:transparent;outline:none;cursor:pointer;vertical-align:middle;box-sizing:border-box;display:inline-block}.kplayer-controller .kplayer-icons .kplayer-icon .kplayer-icon-content{color:#fff;transition:all .2s ease-in-out;opacity:.8}.kplayer-controller .kplayer-icons .kplayer-icon:hover .kplayer-icon-content{opacity:1}.kplayer-controller .kplayer-icons .kplayer-icon.kplayer-quality-icon{color:#fff;width:auto;line-height:22px;font-size:14px}.kplayer-controller .kplayer-icons .kplayer-icon.kplayer-setting-icon{padding-top:8.5px}.kplayer-controller .kplayer-icons .kplayer-icon.kplayer-volume-icon{width:43px}.kplayer-controller .kplayer-icons .kplayer-icon.kplayer-full-in-icon,.kplayer-controller .kplayer-icons .kplayer-icon.kplayer-full-icon{display:inline-block}.kplayer-controller .kplayer-icons .kplayer-volume{position:relative;display:inline-block;cursor:pointer;height:100%}.kplayer-controller .kplayer-icons .kplayer-volume:hover .kplayer-volume-bar-wrap .kplayer-volume-bar,.kplayer-controller .kplayer-icons .kplayer-volume.kplayer-volume-active .kplayer-volume-bar-wrap .kplayer-volume-bar{width:45px}.kplayer-controller .kplayer-icons .kplayer-volume:hover .kplayer-volume-bar-wrap .kplayer-volume-bar .kplayer-volume-bar-inner .kplayer-thumb,.kplayer-controller .kplayer-icons .kplayer-volume.kplayer-volume-active .kplayer-volume-bar-wrap .kplayer-volume-bar .kplayer-volume-bar-inner .kplayer-thumb{transform:scale(1)}.kplayer-controller .kplayer-icons .kplayer-volume .kplayer-volume-bar-wrap{display:inline-block;margin:0 10px 0 -5px;vertical-align:middle;height:100%}.kplayer-controller .kplayer-icons .kplayer-volume .kplayer-volume-bar-wrap .kplayer-volume-bar{position:relative;top:17px;width:0;height:3px;background:#fff3;transition:all .3s ease-in-out}.kplayer-controller .kplayer-icons .kplayer-volume .kplayer-volume-bar-wrap .kplayer-volume-bar .kplayer-volume-bar-inner{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width}.kplayer-controller .kplayer-icons .kplayer-volume .kplayer-volume-bar-wrap .kplayer-volume-bar .kplayer-volume-bar-inner .kplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0)}.kplayer-controller .kplayer-icons .kplayer-subtitle-btn,.kplayer-controller .kplayer-icons .kplayer-subtitles{display:inline-block;height:100%}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-box{position:absolute;right:0;bottom:50px;transform:scale(0);width:fit-content;max-width:240px;min-width:120px;border-radius:8px;background:#16161af5;border:.5px solid rgba(255,255,255,.1);padding:4px 0;transition:none;overflow:auto;z-index:2}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-box.kplayer-subtitles-panel{display:block}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-box.kplayer-subtitles-box-open{transform:scale(1)}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-item{display:flex;align-items:center;justify-content:space-between;height:36px;padding:0 12px;box-sizing:border-box;cursor:pointer;position:relative;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-item .kplayer-label{font-size:13px;color:#ffffffbf;white-space:nowrap}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-item.kplayer-selected .kplayer-label{color:#fff}.kplayer-controller .kplayer-icons .kplayer-subtitles .kplayer-subtitles-item.kplayer-selected .kplayer-check-icon{opacity:1}.kplayer-controller .kplayer-icons .kplayer-setting{display:inline-block;height:100%;position:relative;z-index:10000}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box{position:absolute;right:0;bottom:50px;transform-origin:bottom right;transform:scale(0);width:220px;border-radius:2px;background:#16161af5;padding:10px 0;transition:none;overflow:hidden;z-index:9999;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box>div{display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box>div.kplayer-setting-origin-panel{display:block}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-open{transform:scale(1)}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-narrow{width:220px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-speed .kplayer-setting-origin-panel{display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-speed .kplayer-setting-speed-panel{display:block}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-speed .kplayer-setting-subtitle-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-speed .kplayer-setting-quality-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-subtitle .kplayer-setting-origin-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-subtitle .kplayer-setting-speed-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-subtitle .kplayer-setting-quality-panel{display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-subtitle .kplayer-setting-subtitle-panel{display:block}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-quality .kplayer-setting-origin-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-quality .kplayer-setting-speed-panel,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-quality .kplayer-setting-subtitle-panel{display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-box.kplayer-setting-box-quality .kplayer-setting-quality-panel{display:block}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-panel-back{display:flex;align-items:center;gap:8px;padding:0 12px;height:38px;min-height:38px;cursor:pointer;border-bottom:.5px solid rgba(255,255,255,.08);margin-bottom:3px;box-sizing:border-box;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-panel-back:hover{background:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-panel-back .kplayer-setting-back-icon{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;opacity:1;flex-shrink:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-panel-back .kplayer-setting-back-icon svg{width:14px;height:14px;fill:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-panel-back .kplayer-label{font-size:12px;color:#fff;font-weight:400}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-item{display:flex;align-items:center;justify-content:space-between;height:38px;min-height:38px;padding:0 12px;box-sizing:border-box;cursor:pointer;position:relative;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-item:active{background-color:#ffffff1f}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action{display:flex;align-items:center;justify-content:space-between;height:38px;min-height:38px;padding:0 12px;box-sizing:border-box;cursor:pointer;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action:active{background-color:#ffffff1f}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-main{display:inline-flex;align-items:center;gap:9px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-icon{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;opacity:1;flex-shrink:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-icon svg{width:15px;height:15px;fill:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;opacity:.7;transition:opacity .15s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-btn:hover{opacity:1}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-action-btn svg{width:13px;height:13px;fill:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-label{font-size:13px;color:#fff;font-weight:400;display:inline-block;vertical-align:middle;white-space:nowrap}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-title{font-size:13px;padding:10px 0;color:#fff;font-weight:400;display:inline-block;vertical-align:middle;white-space:nowrap}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-current-value{font-size:12px;color:#fff;margin-right:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-item-right{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-arrow{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;opacity:.35}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-arrow svg{width:12px;height:12px;fill:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-badge{font-size:11px;color:#fff;background:#ffffff14;border-radius:4px;padding:2px 6px;font-weight:500;white-space:nowrap}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item{display:flex;align-items:center;justify-content:space-between;height:36px;min-height:36px;padding:0 12px;box-sizing:border-box;cursor:pointer;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item:active{background-color:#ffffff1f}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item .kplayer-label,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item.kplayer-selected .kplayer-label{color:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-speed-item.kplayer-selected .kplayer-check-icon{opacity:1}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-subtitle-toggle{display:flex;align-items:center;justify-content:space-between;height:38px;min-height:38px;padding:0 12px;box-sizing:border-box;cursor:pointer;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-subtitle-toggle:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle{width:32px;height:20px;text-align:center;font-size:0;vertical-align:middle;position:relative;flex-shrink:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input{max-height:0;max-width:0;display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input+label{display:inline-block;position:relative;box-shadow:none;border:.5px solid rgba(255,255,255,.2);background:#ffffff1a;height:20px;width:32px;border-radius:10px;box-sizing:border-box;cursor:pointer;transition:background .2s ease-in-out,border-color .2s ease-in-out}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input+label:before{content:"";position:absolute;display:block;height:18px;width:18px;top:0;left:0;border-radius:15px;transition:.2s ease-in-out}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input+label:after{content:"";position:absolute;display:block;left:0;top:0;border-radius:15px;background:#ffffffe6;transition:.2s ease-in-out;box-shadow:0 1px 3px #0006;height:18px;width:18px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input:checked+label{border-color:#ffffff80;background:#ffffff73}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input:checked+label:before{width:30px;background:transparent}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-toggle input:checked+label:after{left:12px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken{padding:0 12px;height:38px;min-height:38px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken .kplayer-label{color:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken:hover .kplayer-label,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken.kplayer-setting-awaken-active .kplayer-label{display:none}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken:hover .kplayer-awaken-bar-wrap,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken.kplayer-setting-awaken-active .kplayer-awaken-bar-wrap{display:inline-flex}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken .kplayer-awaken-bar-wrap{flex:1;padding:0;box-sizing:border-box;display:none;align-items:center;height:100%;width:100%}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken .kplayer-awaken-bar-wrap .kplayer-awaken-bar{position:relative;width:100%;height:3px;background:#fff3;border-radius:2px;transition:all .3s ease-in-out}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken .kplayer-awaken-bar-wrap .kplayer-awaken-bar .kplayer-awaken-bar-inner{position:absolute;bottom:0;left:0;height:100%;border-radius:2px;transition:all .1s ease;background:#ffffffb3;will-change:width}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-setting-awaken .kplayer-awaken-bar-wrap .kplayer-awaken-bar .kplayer-awaken-bar-inner .kplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;background:#fff;box-shadow:0 1px 3px #0000004d}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline{display:block;height:auto}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-box,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-list{position:static;transform:none;display:block;width:100%;max-width:none;min-width:0;background:transparent;border:none;padding:0;border-radius:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-item{display:flex;align-items:center;justify-content:space-between;height:36px;min-height:36px;padding:0 12px;cursor:pointer;transition:background .12s;box-sizing:border-box}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-item .kplayer-label{color:#fff;font-size:13px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-item.kplayer-selected .kplayer-label{color:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-subtitles-inline .kplayer-subtitles-item.kplayer-selected .kplayer-check-icon{opacity:1}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-item{display:flex;align-items:center;justify-content:space-between;height:36px;min-height:36px;padding:0 12px;cursor:pointer;transition:background .12s;box-sizing:border-box;text-align:left;line-height:36px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-item .kplayer-label{color:#fff;font-size:13px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-item.kplayer-selected .kplayer-label{color:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality-inline .kplayer-quality-item.kplayer-selected .kplayer-check-icon{opacity:1}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-check-icon{width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease;flex-shrink:0}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-check-icon svg{width:13px;height:13px;fill:none;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality{position:relative;display:inline-block;height:100%;z-index:2}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality:hover .kplayer-quality-list,.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality:hover .kplayer-quality-mask{display:block}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-mask{display:none;position:absolute;bottom:38px;left:-18px;width:80px;padding-bottom:12px}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-list{display:none;font-size:12px;width:100px;border-radius:8px;background:#16161af5;border:.5px solid rgba(255,255,255,.1);padding:4px 0;transition:all .2s ease-in-out;overflow:hidden;color:#fff;text-align:center}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-item{height:30px;box-sizing:border-box;cursor:pointer;line-height:30px;padding:0 10px;font-size:13px;color:#ffffffbf;transition:background .12s}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-item:hover{background-color:#ffffff12}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-item.kplayer-selected{color:#fff}.kplayer-controller .kplayer-icons .kplayer-setting .kplayer-quality .kplayer-quality-item.kplayer-selected .kplayer-check-icon{opacity:1}.kplayer-controller .kplayer-icons .kplayer-label{color:#fff;font-size:13px;display:inline-block;vertical-align:middle;white-space:nowrap}.kplayer-mobile-play{z-index:1;display:none;width:50px;height:50px;border:none;background-color:transparent;outline:none;cursor:pointer;box-sizing:border-box;opacity:.8;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.kplayer-awaken{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff}.kplayer-awaken .kplayer-awaken-item{display:inline-block;pointer-events:none;-webkit-user-select:none;user-select:none;cursor:default;white-space:nowrap;text-shadow:.5px .5px .5px rgba(0,0,0,.5)}.kplayer-awaken .kplayer-awaken-item--demo{position:absolute;visibility:hidden}.kplayer-awaken .kplayer-awaken-right{position:absolute;right:0;transform:translate(100%)}.kplayer-awaken .kplayer-awaken-right.kplayer-awaken-move{will-change:transform;animation-name:awaken;animation-timing-function:linear;animation-play-state:paused}@keyframes awaken{0%{transform:translate(100%)}}.kplayer-awaken .kplayer-awaken-top,.kplayer-awaken .kplayer-awaken-bottom{position:absolute;width:100%;text-align:center;visibility:hidden}.kplayer-awaken .kplayer-awaken-top.kplayer-awaken-move,.kplayer-awaken .kplayer-awaken-bottom.kplayer-awaken-move{will-change:visibility;animation-name:awaken-center;animation-timing-function:linear;animation-play-state:paused}@keyframes awaken-center{0%{visibility:visible}to{visibility:visible}}.kplayer-logo{pointer-events:none;position:absolute;left:20px;top:60px;max-width:100px;max-height:50px}.kplayer-logo img{max-width:100%;max-height:100%;background:none}@media (max-width: 768px){.kplayer-logo{pointer-events:none;position:absolute;left:15px;top:30px;max-width:80px;max-height:50px}.kplayer-logo img{max-width:100%;max-height:100%;background:none}}.kplayer-menu{position:absolute;width:170px;border-radius:2px;background:#16161af5;padding:5px 0;overflow:hidden;z-index:3;display:none}.kplayer-menu.kplayer-menu-show{display:block}.kplayer-menu .kplayer-menu-item{height:30px;box-sizing:border-box;cursor:pointer}.kplayer-menu .kplayer-menu-item:hover{background-color:#ffffff1a}.kplayer-menu .kplayer-menu-item a{padding:0 10px;line-height:30px;color:#eee;font-size:13px;display:inline-block;vertical-align:middle;width:100%;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kplayer-menu .kplayer-menu-item a:hover{text-decoration:none}.kplayer-notice-list{position:absolute;bottom:60px;left:20px}.kplayer-notice-list .kplayer-notice{border-radius:2px;background:#16161af5;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:all .3s ease-in-out;overflow:hidden;color:#ffffffe0;font-size:13px;font-weight:400;display:table;pointer-events:none;animation:showNotice .3s ease 1 forwards}.kplayer-notice-list .remove-notice{animation:removeNotice .3s ease 1 forwards}@keyframes showNotice{0%{padding:0;font-size:0;margin-top:0;opacity:0}to{padding:6px 14px;font-size:13px;margin-top:5px;opacity:1}}@keyframes removeNotice{0%{padding:6px 14px;font-size:13px;margin-top:5px;opacity:1}20%{font-size:11px;opacity:.5}21%{font-size:0;padding:6px 10px}to{padding:0;margin-top:0;font-size:0;opacity:0}}.kplayer-subtitle{position:absolute;bottom:40px;width:90%;left:5%;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px}.kplayer-subtitle.kplayer-subtitle-hide{display:none}.kplayer-mask{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.kplayer-mask.kplayer-mask-show{display:block}.kplayer-video-wrap{position:relative;overflow:hidden;background:#000;font-size:0;width:100%;height:100%}.kplayer-video-wrap .kplayer-video{width:100%;height:100%;display:none}.kplayer-video-wrap .kplayer-video-current{display:block}.kplayer-video-wrap .kplayer-video-prepare{display:none}video::-webkit-media-text-track-display{display:none!important}.kplayer-info-panel{position:absolute;top:10px;left:10px;width:400px;background:#1c1c1ccc;padding:10px;color:#fff;font-size:12px;border-radius:2px}.kplayer-info-panel-hide{display:none}.kplayer-info-panel .kplayer-info-panel-close{cursor:pointer;position:absolute;right:10px;top:10px}.kplayer-info-panel .kplayer-info-panel-item>span{display:inline-block;vertical-align:middle;line-height:15px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kplayer-info-panel .kplayer-info-panel-item-title{width:100px;text-align:right;margin-right:10px}.kplayer-info-panel .kplayer-info-panel-item-data{width:260px}.kplayer-skip-btn{position:absolute;bottom:60px;right:16px;z-index:2;display:flex;align-items:center;gap:6px;padding:6px 14px;border:none;border-radius:2px;background:#16161af5;color:#ffffffe0;font-size:13px;font-weight:400;cursor:pointer;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);-webkit-user-select:none;user-select:none;white-space:nowrap}.kplayer-skip-btn-text{pointer-events:none}.kplayer-hide-controller .kplayer-skip-btn{bottom:16px}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
|
|
1
2
|
const C = /mobile|android|iphone|ipod|phone|ipad/i.test(
|
|
2
3
|
window.navigator.userAgent
|
|
3
4
|
), u = {
|
|
@@ -563,7 +564,7 @@ function b(n) {
|
|
|
563
564
|
function d(n) {
|
|
564
565
|
return n == null ? "" : String(n);
|
|
565
566
|
}
|
|
566
|
-
function
|
|
567
|
+
function S(n) {
|
|
567
568
|
return n ? "checked" : "";
|
|
568
569
|
}
|
|
569
570
|
function pe({
|
|
@@ -574,14 +575,14 @@ function pe({
|
|
|
574
575
|
mobile: s,
|
|
575
576
|
video: a
|
|
576
577
|
}) {
|
|
577
|
-
var
|
|
578
|
-
const l = n.theme || "#b7daff",
|
|
578
|
+
var k, r, c, f, v, L, B, T, $, H, I, P, W;
|
|
579
|
+
const l = n.theme || "#b7daff", o = n.awaken && typeof n.awaken == "object" && n.awaken.bottom ? ` style="margin-bottom:${b(n.awaken.bottom)}"` : "", h = n.subtitle && typeof n.subtitle.url == "string", y = ((f = (c = (k = n.video) == null ? void 0 : k.quality) == null ? void 0 : c[((r = n.video) == null ? void 0 : r.defaultQuality) ?? 0]) == null ? void 0 : f.name) || "", m = (v = n.title) != null && v.back ? `
|
|
579
580
|
<div class="kplayer-back">
|
|
580
581
|
<button class="kplayer-title-back-btn" aria-label="Back">
|
|
581
582
|
<span class="kplayer-icon-content">${d(i.back)}</span>
|
|
582
583
|
</button>
|
|
583
|
-
</div>` : "",
|
|
584
|
-
${
|
|
584
|
+
</div>` : "", p = n.title ? `
|
|
585
|
+
${m}
|
|
585
586
|
<div class="kplayer-title-bar">
|
|
586
587
|
<div class="kplayer-title-info">
|
|
587
588
|
<div class="kplayer-title-main">${d(n.title.title || "")}</div>
|
|
@@ -596,8 +597,8 @@ ${k}
|
|
|
596
597
|
<div class="kplayer-logo">
|
|
597
598
|
<img src="${b(n.logo)}">
|
|
598
599
|
</div>` : ""}
|
|
599
|
-
${
|
|
600
|
-
<div class="kplayer-awaken"${
|
|
600
|
+
${p}
|
|
601
|
+
<div class="kplayer-awaken"${o}>
|
|
601
602
|
<div class="kplayer-awaken-item kplayer-awaken-item--demo"></div>
|
|
602
603
|
</div>
|
|
603
604
|
<div class="kplayer-subtitle"></div>
|
|
@@ -672,14 +673,14 @@ ${k}
|
|
|
672
673
|
</div>
|
|
673
674
|
</div>` : ""}
|
|
674
675
|
|
|
675
|
-
${(
|
|
676
|
+
${(L = n.video) != null && L.quality || ((B = n.video) == null ? void 0 : B.type) === "hls" || ((T = n.video) == null ? void 0 : T.type) === "auto" ? `
|
|
676
677
|
<div class="kplayer-setting-item kplayer-setting-quality-entry">
|
|
677
678
|
<div class="kplayer-setting-action-main">
|
|
678
679
|
<span class="kplayer-setting-action-icon">${d(i.video || i.setting)}</span>
|
|
679
680
|
<span class="kplayer-label">${d(t("quality"))}</span>
|
|
680
681
|
</div>
|
|
681
682
|
<div class="kplayer-setting-item-right">
|
|
682
|
-
<span class="kplayer-setting-current-value" id="kplayer-quality-current">${d(
|
|
683
|
+
<span class="kplayer-setting-current-value" id="kplayer-quality-current">${d(y || "Auto")}</span>
|
|
683
684
|
<span class="kplayer-setting-arrow">${d(i.right)}</span>
|
|
684
685
|
</div>
|
|
685
686
|
</div>` : ""}
|
|
@@ -723,14 +724,14 @@ ${k}
|
|
|
723
724
|
<span class="kplayer-label">${d(t("loop"))}</span>
|
|
724
725
|
</div>
|
|
725
726
|
<div class="kplayer-toggle">
|
|
726
|
-
<input class="kplayer-toggle-setting-input" type="checkbox" name="kplayer-toggle" ${
|
|
727
|
+
<input class="kplayer-toggle-setting-input" type="checkbox" name="kplayer-toggle" ${S(n.loop)}>
|
|
727
728
|
<label for="kplayer-toggle"></label>
|
|
728
729
|
</div>
|
|
729
730
|
</div>
|
|
730
731
|
|
|
731
732
|
<div class="kplayer-setting-item kplayer-setting-showdan">
|
|
732
733
|
<div class="kplayer-toggle">
|
|
733
|
-
<input class="kplayer-showdan-setting-input" type="checkbox" name="kplayer-toggle-dan" ${
|
|
734
|
+
<input class="kplayer-showdan-setting-input" type="checkbox" name="kplayer-toggle-dan" ${S(!0)}>
|
|
734
735
|
<label for="kplayer-toggle-dan"></label>
|
|
735
736
|
</div>
|
|
736
737
|
</div>
|
|
@@ -738,7 +739,7 @@ ${k}
|
|
|
738
739
|
<div class="kplayer-setting-item kplayer-setting-danunlimit">
|
|
739
740
|
<span class="kplayer-label">${d(t("unlimited-awaken"))}</span>
|
|
740
741
|
<div class="kplayer-toggle">
|
|
741
|
-
<input class="kplayer-danunlimit-setting-input" type="checkbox" name="kplayer-toggle-danunlimit" ${
|
|
742
|
+
<input class="kplayer-danunlimit-setting-input" type="checkbox" name="kplayer-toggle-danunlimit" ${S(
|
|
742
743
|
typeof n.awaken == "object" && (($ = n.awaken) == null ? void 0 : $.unlimited)
|
|
743
744
|
)}>
|
|
744
745
|
<label for="kplayer-toggle-danunlimit"></label>
|
|
@@ -782,7 +783,7 @@ ${k}
|
|
|
782
783
|
<span class="kplayer-label">${d(t("subtitle"))}</span>
|
|
783
784
|
</div>
|
|
784
785
|
</div>
|
|
785
|
-
${n.subtitle ?
|
|
786
|
+
${n.subtitle ? h ? `
|
|
786
787
|
<div class="kplayer-setting-subtitle-toggle">
|
|
787
788
|
<div class="kplayer-setting-action-main">
|
|
788
789
|
<span class="kplayer-setting-action-icon">${d(i.subtitle)}</span>
|
|
@@ -793,9 +794,9 @@ ${k}
|
|
|
793
794
|
<div class="kplayer-subtitles-box">
|
|
794
795
|
<div class="kplayer-subtitles-panel">
|
|
795
796
|
${(Array.isArray(n.subtitle.url) ? n.subtitle.url : []).map((g) => {
|
|
796
|
-
const
|
|
797
|
+
const x = g, U = x.lang ? x.name ? `${x.name} (${t(x.lang)})` : t(x.lang) : x.name || "";
|
|
797
798
|
return `
|
|
798
|
-
<div class="kplayer-subtitles-item" data-subtitle="${b(
|
|
799
|
+
<div class="kplayer-subtitles-item" data-subtitle="${b(x.url)}">
|
|
799
800
|
<span class="kplayer-label">${d(U)}</span>
|
|
800
801
|
<span class="kplayer-check-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
|
|
801
802
|
</div>`;
|
|
@@ -816,9 +817,9 @@ ${k}
|
|
|
816
817
|
${(H = n.video) != null && H.quality || ((I = n.video) == null ? void 0 : I.type) === "hls" || ((P = n.video) == null ? void 0 : P.type) === "auto" ? `
|
|
817
818
|
<div class="kplayer-quality-inline">
|
|
818
819
|
<div class="kplayer-quality-list">
|
|
819
|
-
${(
|
|
820
|
-
(g,
|
|
821
|
-
<div class="kplayer-quality-item" data-index="${
|
|
820
|
+
${(W = n.video) != null && W.quality ? n.video.quality.map(
|
|
821
|
+
(g, x) => `
|
|
822
|
+
<div class="kplayer-quality-item" data-index="${x}">
|
|
822
823
|
<span class="kplayer-label">${d(g.name)}</span>
|
|
823
824
|
<span class="kplayer-check-icon"><svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>
|
|
824
825
|
</div>`
|
|
@@ -892,10 +893,10 @@ ${k}
|
|
|
892
893
|
|
|
893
894
|
<div class="kplayer-menu">
|
|
894
895
|
${(n.contextmenu || []).map((g) => {
|
|
895
|
-
const
|
|
896
|
+
const x = `${g.key ? t(g.key) : ""}${g.text ? g.text : ""}`;
|
|
896
897
|
return `
|
|
897
898
|
<div class="kplayer-menu-item">
|
|
898
|
-
<a ${g.link ? 'target="_blank"' : ""} href="${b(g.link || "javascript:void(0);")}">${d(
|
|
899
|
+
<a ${g.link ? 'target="_blank"' : ""} href="${b(g.link || "javascript:void(0);")}">${d(x)}</a>
|
|
899
900
|
</div>`;
|
|
900
901
|
}).join("")}
|
|
901
902
|
</div>
|
|
@@ -919,7 +920,7 @@ ${k}
|
|
|
919
920
|
|
|
920
921
|
`.trim();
|
|
921
922
|
}
|
|
922
|
-
class
|
|
923
|
+
class F {
|
|
923
924
|
constructor(e) {
|
|
924
925
|
this.container = e.container, this.options = e.options, this.index = e.index, this.tran = e.tran, this.init();
|
|
925
926
|
}
|
|
@@ -1059,8 +1060,8 @@ class he {
|
|
|
1059
1060
|
s.className = "kplayer-ad-marker-text";
|
|
1060
1061
|
let a = "Ad";
|
|
1061
1062
|
if ((l = t.name) != null && l.includes("vast_")) {
|
|
1062
|
-
const
|
|
1063
|
-
a =
|
|
1063
|
+
const o = t.name.replace("vast_", "");
|
|
1064
|
+
a = o === "start" || o === "end" ? "Ad" : `Ad · ${o}`;
|
|
1064
1065
|
} else t.name && (a = t.name);
|
|
1065
1066
|
return s.textContent = a, i.appendChild(s), i;
|
|
1066
1067
|
}
|
|
@@ -1155,21 +1156,21 @@ class he {
|
|
|
1155
1156
|
async _loadVAST(e) {
|
|
1156
1157
|
var t;
|
|
1157
1158
|
try {
|
|
1158
|
-
const s = await (await fetch(e)).text(), l = new DOMParser().parseFromString(s, "text/xml"),
|
|
1159
|
-
if (
|
|
1160
|
-
const
|
|
1161
|
-
for (const
|
|
1162
|
-
const
|
|
1163
|
-
let
|
|
1164
|
-
|
|
1165
|
-
const
|
|
1166
|
-
|
|
1159
|
+
const s = await (await fetch(e)).text(), l = new DOMParser().parseFromString(s, "text/xml"), o = "http://www.iab.net/videosuite/vmap", h = l.getElementsByTagNameNS(o, "AdBreak");
|
|
1160
|
+
if (h.length > 0) {
|
|
1161
|
+
const y = this.player.video.duration || 0, m = [];
|
|
1162
|
+
for (const p of Array.from(h)) {
|
|
1163
|
+
const k = p.getAttribute("timeOffset") || "";
|
|
1164
|
+
let r = 0;
|
|
1165
|
+
k === "start" ? r = 0 : k === "end" ? r = y > 0 ? y - 1 : 99999 : k && (r = this._parseTime(k));
|
|
1166
|
+
const c = p.getElementsByTagNameNS(
|
|
1167
|
+
o,
|
|
1167
1168
|
"AdTagURI"
|
|
1168
|
-
)[0], f = (t =
|
|
1169
|
-
f &&
|
|
1169
|
+
)[0], f = (t = c == null ? void 0 : c.textContent) == null ? void 0 : t.trim();
|
|
1170
|
+
f && m.push({ vastUrl: f, startTime: r, timeOffset: k });
|
|
1170
1171
|
}
|
|
1171
|
-
for (const { vastUrl:
|
|
1172
|
-
await this._fetchVASTAndRegister(
|
|
1172
|
+
for (const { vastUrl: p, startTime: k, timeOffset: r } of m)
|
|
1173
|
+
await this._fetchVASTAndRegister(p, k, r);
|
|
1173
1174
|
this._registerVMAPMarkers();
|
|
1174
1175
|
} else
|
|
1175
1176
|
await this._parseVASTAndShow(l, 0, 5);
|
|
@@ -1178,22 +1179,22 @@ class he {
|
|
|
1178
1179
|
}
|
|
1179
1180
|
}
|
|
1180
1181
|
async _fetchVASTAndRegister(e, t, i) {
|
|
1181
|
-
var s, a, l,
|
|
1182
|
+
var s, a, l, o;
|
|
1182
1183
|
try {
|
|
1183
|
-
const
|
|
1184
|
-
if (!
|
|
1185
|
-
const
|
|
1184
|
+
const y = await (await fetch(e)).text(), p = new DOMParser().parseFromString(y, "text/xml"), k = p.querySelector("MediaFile"), r = (s = k == null ? void 0 : k.textContent) == null ? void 0 : s.trim(), c = (a = p.querySelector("Linear")) == null ? void 0 : a.getAttribute("skipoffset"), f = c ? this._parseTime(c) : 5, v = (o = (l = p.querySelector("Impression")) == null ? void 0 : l.textContent) == null ? void 0 : o.trim();
|
|
1185
|
+
if (!r) return;
|
|
1186
|
+
const L = {
|
|
1186
1187
|
type: "video",
|
|
1187
|
-
url:
|
|
1188
|
+
url: r,
|
|
1188
1189
|
startTime: t,
|
|
1189
1190
|
skipTime: f,
|
|
1190
1191
|
name: `vast_${i}`,
|
|
1191
1192
|
_impressionUrl: v,
|
|
1192
1193
|
_isPostroll: i === "end"
|
|
1193
1194
|
};
|
|
1194
|
-
this.options || (this.options = { url: [] }), Array.isArray(this.options.url) || (this.options.url = []), this.options.url.push(
|
|
1195
|
-
} catch (
|
|
1196
|
-
console.warn("[Kplayer] VAST fetch failed:", e,
|
|
1195
|
+
this.options || (this.options = { url: [] }), Array.isArray(this.options.url) || (this.options.url = []), this.options.url.push(L);
|
|
1196
|
+
} catch (h) {
|
|
1197
|
+
console.warn("[Kplayer] VAST fetch failed:", e, h);
|
|
1197
1198
|
}
|
|
1198
1199
|
}
|
|
1199
1200
|
_registerVMAPMarkers() {
|
|
@@ -1209,17 +1210,17 @@ class he {
|
|
|
1209
1210
|
if (a.startTime === void 0 || a.startTime <= 0) return;
|
|
1210
1211
|
const l = a.startTime / t * 100;
|
|
1211
1212
|
if (l >= 100) return;
|
|
1212
|
-
const
|
|
1213
|
-
this.player.template.playedBarWrap.appendChild(
|
|
1213
|
+
const o = this._createMarker(l, a);
|
|
1214
|
+
this.player.template.playedBarWrap.appendChild(o), this.adMarkers.push(o);
|
|
1214
1215
|
}));
|
|
1215
1216
|
};
|
|
1216
1217
|
this.player.video.duration && this.player.video.duration !== 1 / 0 ? e() : this.player.on("durationchange", e), this._bindTimeUpdate();
|
|
1217
1218
|
}
|
|
1218
1219
|
async _parseVASTAndShow(e, t, i) {
|
|
1219
|
-
var
|
|
1220
|
-
const s = e.querySelector("MediaFile"), a = (
|
|
1221
|
-
|
|
1222
|
-
}), a && this._showAd({ type: "video", url: a, startTime: t, skipTime:
|
|
1220
|
+
var y, m, p, k;
|
|
1221
|
+
const s = e.querySelector("MediaFile"), a = (y = s == null ? void 0 : s.textContent) == null ? void 0 : y.trim(), l = (m = e.querySelector("Linear")) == null ? void 0 : m.getAttribute("skipoffset"), o = l ? this._parseTime(l) : i, h = (k = (p = e.querySelector("Impression")) == null ? void 0 : p.textContent) == null ? void 0 : k.trim();
|
|
1222
|
+
h && fetch(h).catch(() => {
|
|
1223
|
+
}), a && this._showAd({ type: "video", url: a, startTime: t, skipTime: o });
|
|
1223
1224
|
}
|
|
1224
1225
|
_parseTime(e) {
|
|
1225
1226
|
if (!e) return 0;
|
|
@@ -1458,25 +1459,25 @@ class me {
|
|
|
1458
1459
|
`);
|
|
1459
1460
|
if (!l.length || l[0].startsWith("WEBVTT") || l[0].startsWith("NOTE") || l[0].startsWith("STYLE"))
|
|
1460
1461
|
continue;
|
|
1461
|
-
let
|
|
1462
|
-
for (let
|
|
1463
|
-
if (l[
|
|
1464
|
-
|
|
1462
|
+
let o = -1;
|
|
1463
|
+
for (let r = 0; r < l.length; r++)
|
|
1464
|
+
if (l[r].includes("-->")) {
|
|
1465
|
+
o = r;
|
|
1465
1466
|
break;
|
|
1466
1467
|
}
|
|
1467
|
-
if (
|
|
1468
|
-
const
|
|
1468
|
+
if (o === -1) continue;
|
|
1469
|
+
const y = l[o].match(
|
|
1469
1470
|
/((?:\d{2}:)?\d{2}:\d{2}[.,]\d{3})\s*-->\s*((?:\d{2}:)?\d{2}:\d{2}[.,]\d{3})/
|
|
1470
1471
|
);
|
|
1471
|
-
if (!
|
|
1472
|
-
const
|
|
1472
|
+
if (!y) continue;
|
|
1473
|
+
const m = this._timeToSeconds(y[1]), p = this._timeToSeconds(y[2]), k = l.slice(o + 1).join(`
|
|
1473
1474
|
`).trim();
|
|
1474
|
-
if (
|
|
1475
|
+
if (k)
|
|
1475
1476
|
try {
|
|
1476
|
-
const
|
|
1477
|
-
t.push(
|
|
1478
|
-
} catch (
|
|
1479
|
-
console.warn("[KPlayer] VTTCue failed:",
|
|
1477
|
+
const r = new VTTCue(m, p, k);
|
|
1478
|
+
t.push(r);
|
|
1479
|
+
} catch (r) {
|
|
1480
|
+
console.warn("[KPlayer] VTTCue failed:", r, m, p, k);
|
|
1480
1481
|
}
|
|
1481
1482
|
}
|
|
1482
1483
|
return t;
|
|
@@ -1819,11 +1820,11 @@ class we {
|
|
|
1819
1820
|
(i) => {
|
|
1820
1821
|
var s, a;
|
|
1821
1822
|
if (this.player.video.duration) {
|
|
1822
|
-
const l = this.player.template.playedBarWrap.getBoundingClientRect().left,
|
|
1823
|
-
if (
|
|
1823
|
+
const l = this.player.template.playedBarWrap.getBoundingClientRect().left, o = (i.clientX || i.changedTouches[0].clientX) - l;
|
|
1824
|
+
if (o < 0 || o > this.player.template.playedBarWrap.offsetWidth)
|
|
1824
1825
|
return;
|
|
1825
|
-
const
|
|
1826
|
-
u.isMobile && ((s = this.thumbnails) == null || s.show()), (a = this.thumbnails) == null || a.move(
|
|
1826
|
+
const h = this.player.video.duration * (o / this.player.template.playedBarWrap.offsetWidth);
|
|
1827
|
+
u.isMobile && ((s = this.thumbnails) == null || s.show()), (a = this.thumbnails) == null || a.move(o), this.player.template.playedBarTime.style.left = `${o - (h >= 3600 ? 25 : 20)}px`, this.player.template.playedBarTime.innerText = u.secondToTime(h), this.player.template.playedBarTime.classList.remove("hidden");
|
|
1827
1828
|
}
|
|
1828
1829
|
}
|
|
1829
1830
|
), this.player.template.playedBarWrap.addEventListener(
|
|
@@ -1943,9 +1944,9 @@ class we {
|
|
|
1943
1944
|
z && (z = !1, this.initChromecast());
|
|
1944
1945
|
const t = (a) => {
|
|
1945
1946
|
if (!cast) return !1;
|
|
1946
|
-
const l = new cast.media.MediaInfo(a),
|
|
1947
|
+
const l = new cast.media.MediaInfo(a), o = new cast.media.LoadRequest(l);
|
|
1947
1948
|
return this.session ? (this.session.loadMedia(
|
|
1948
|
-
|
|
1949
|
+
o,
|
|
1949
1950
|
i.bind(this, "loadMedia"),
|
|
1950
1951
|
s
|
|
1951
1952
|
).play(), !0) : (window.open(a), !1);
|
|
@@ -1957,11 +1958,11 @@ class we {
|
|
|
1957
1958
|
(e = this.player.template.chromecastButton) == null || e.addEventListener("click", () => {
|
|
1958
1959
|
var a, l;
|
|
1959
1960
|
M ? (M = !1, (a = this.currentMedia) == null || a.stop(), (l = this.session) == null || l.stop(), this.initChromecast()) : (M = !0, cast == null || cast.requestSession(
|
|
1960
|
-
(
|
|
1961
|
-
this.session =
|
|
1961
|
+
(o) => {
|
|
1962
|
+
this.session = o, t(this.player.options.video.url || "");
|
|
1962
1963
|
},
|
|
1963
|
-
(
|
|
1964
|
-
|
|
1964
|
+
(o) => {
|
|
1965
|
+
o.code === "cancel" ? this.session = void 0 : console.error("Error selecting cast device", o);
|
|
1965
1966
|
}
|
|
1966
1967
|
));
|
|
1967
1968
|
});
|
|
@@ -2015,9 +2016,9 @@ class we {
|
|
|
2015
2016
|
)), clearTimeout(this.autoHideTimer);
|
|
2016
2017
|
}
|
|
2017
2018
|
}
|
|
2018
|
-
class
|
|
2019
|
+
class Le {
|
|
2019
2020
|
constructor(e) {
|
|
2020
|
-
var a, l,
|
|
2021
|
+
var a, l, o;
|
|
2021
2022
|
this.player = e, this.player.template.mask.addEventListener("click", () => {
|
|
2022
2023
|
this.hide();
|
|
2023
2024
|
}), this.player.template.settingButton.addEventListener("click", () => {
|
|
@@ -2025,11 +2026,11 @@ class xe {
|
|
|
2025
2026
|
}), this.loop = this.player.options.loop || !1, this.player.template.loopToggle.checked = this.loop, this.player.template.loop.addEventListener("click", () => {
|
|
2026
2027
|
this.player.template.loopToggle.checked = !this.player.template.loopToggle.checked, this.loop = this.player.template.loopToggle.checked;
|
|
2027
2028
|
}), this.showAwaken = this.player.user.get("awaken"), this.showAwaken || this.player.awaken && this.player.awaken.hide(), this.player.template.showAwakenToggle.checked = !!this.showAwaken, this.player.template.showAwaken.addEventListener("click", () => {
|
|
2028
|
-
var
|
|
2029
|
-
this.player.template.showAwakenToggle.checked = !this.player.template.showAwakenToggle.checked, this.player.template.showAwakenToggle.checked ? (this.showAwaken = 1, (
|
|
2029
|
+
var h, y;
|
|
2030
|
+
this.player.template.showAwakenToggle.checked = !this.player.template.showAwakenToggle.checked, this.player.template.showAwakenToggle.checked ? (this.showAwaken = 1, (h = this.player.awaken) == null || h.show()) : (this.showAwaken = 0, (y = this.player.awaken) == null || y.hide()), this.player.user.set("awaken", this.showAwaken ? 1 : 0), this.hide();
|
|
2030
2031
|
}), this.unlimitAwaken = this.player.user.get("unlimited"), this.player.template.unlimitAwakenToggle.checked = !!this.unlimitAwaken, this.player.template.unlimitAwaken.addEventListener("click", () => {
|
|
2031
|
-
var
|
|
2032
|
-
this.player.template.unlimitAwakenToggle.checked = !this.player.template.unlimitAwakenToggle.checked, this.player.template.unlimitAwakenToggle.checked ? (this.unlimitAwaken = 1, (
|
|
2032
|
+
var h, y;
|
|
2033
|
+
this.player.template.unlimitAwakenToggle.checked = !this.player.template.unlimitAwakenToggle.checked, this.player.template.unlimitAwakenToggle.checked ? (this.unlimitAwaken = 1, (h = this.player.awaken) == null || h.unlimit(!0)) : (this.unlimitAwaken = 0, (y = this.player.awaken) == null || y.unlimit(!1)), this.player.user.set("unlimited", this.unlimitAwaken ? 1 : 0), this.hide();
|
|
2033
2034
|
}), this.player.template.speed.addEventListener("click", () => {
|
|
2034
2035
|
this.player.template.settingBox.classList.add(
|
|
2035
2036
|
"kplayer-setting-box-speed"
|
|
@@ -2038,17 +2039,17 @@ class xe {
|
|
|
2038
2039
|
const i = (this.player.options.playbackSpeed || []).indexOf(1);
|
|
2039
2040
|
if (i >= 0 && this.player.template.speedItem[i] && this.player.template.speedItem[i].classList.add(
|
|
2040
2041
|
"kplayer-selected"
|
|
2041
|
-
), Array.from(this.player.template.speedItem).forEach((
|
|
2042
|
-
|
|
2042
|
+
), Array.from(this.player.template.speedItem).forEach((h, y) => {
|
|
2043
|
+
h.addEventListener("click", () => {
|
|
2043
2044
|
Array.from(this.player.template.speedItem).forEach(
|
|
2044
|
-
(
|
|
2045
|
-
),
|
|
2046
|
-
const
|
|
2045
|
+
(p) => p.classList.remove("kplayer-selected")
|
|
2046
|
+
), h.classList.add("kplayer-selected"), this.player.speed(Number(h.dataset.speed));
|
|
2047
|
+
const m = this.player.container.querySelector(
|
|
2047
2048
|
"#kplayer-speed-current"
|
|
2048
2049
|
);
|
|
2049
|
-
if (
|
|
2050
|
-
const
|
|
2051
|
-
|
|
2050
|
+
if (m) {
|
|
2051
|
+
const p = h.dataset.speed;
|
|
2052
|
+
m.textContent = p === "1" ? "1×" : p + "×";
|
|
2052
2053
|
}
|
|
2053
2054
|
});
|
|
2054
2055
|
}), this.player.template.subtitleEntry && this.player.template.subtitleEntry.addEventListener("click", () => {
|
|
@@ -2065,19 +2066,19 @@ class xe {
|
|
|
2065
2066
|
".kplayer-setting-chromecast-entry"
|
|
2066
2067
|
), this.screenshotEntry = this.player.container.querySelector(
|
|
2067
2068
|
".kplayer-setting-screenshot-entry"
|
|
2068
|
-
), this.screenshotEntry && this.player.template.camareButton && this.screenshotEntry.addEventListener("click", (
|
|
2069
|
-
var
|
|
2070
|
-
|
|
2071
|
-
}), this.airplayEntry && this.player.template.airplayButton && this.airplayEntry.addEventListener("click", (
|
|
2072
|
-
var
|
|
2073
|
-
|
|
2074
|
-
}), this.chromecastEntry && this.player.template.chromecastButton && this.chromecastEntry.addEventListener("click", (
|
|
2075
|
-
var
|
|
2076
|
-
|
|
2069
|
+
), this.screenshotEntry && this.player.template.camareButton && this.screenshotEntry.addEventListener("click", (h) => {
|
|
2070
|
+
var y;
|
|
2071
|
+
h.stopPropagation(), (y = this.player.template.camareButton) == null || y.click(), this.hide();
|
|
2072
|
+
}), this.airplayEntry && this.player.template.airplayButton && this.airplayEntry.addEventListener("click", (h) => {
|
|
2073
|
+
var y;
|
|
2074
|
+
h.stopPropagation(), (y = this.player.template.airplayButton) == null || y.click(), this.hide();
|
|
2075
|
+
}), this.chromecastEntry && this.player.template.chromecastButton && this.chromecastEntry.addEventListener("click", (h) => {
|
|
2076
|
+
var y;
|
|
2077
|
+
h.stopPropagation(), (y = this.player.template.chromecastButton) == null || y.click(), this.hide();
|
|
2077
2078
|
}), this.player.container.querySelectorAll(
|
|
2078
2079
|
".kplayer-setting-back-main"
|
|
2079
|
-
).forEach((
|
|
2080
|
-
|
|
2080
|
+
).forEach((h) => {
|
|
2081
|
+
h.addEventListener("click", () => {
|
|
2081
2082
|
this.player.template.settingBox.classList.remove(
|
|
2082
2083
|
"kplayer-setting-box-speed"
|
|
2083
2084
|
), this.player.template.settingBox.classList.remove(
|
|
@@ -2089,36 +2090,36 @@ class xe {
|
|
|
2089
2090
|
);
|
|
2090
2091
|
});
|
|
2091
2092
|
}), this.player.awaken) {
|
|
2092
|
-
this.player.on("awaken_opacity", (
|
|
2093
|
-
this.player.bar.set("awaken",
|
|
2093
|
+
this.player.on("awaken_opacity", (p) => {
|
|
2094
|
+
this.player.bar.set("awaken", p, "width"), this.player.user.set("opacity", p);
|
|
2094
2095
|
}), (a = this.player.awaken) == null || a.opacity(this.player.user.get("opacity"));
|
|
2095
|
-
const
|
|
2096
|
-
var
|
|
2097
|
-
const
|
|
2098
|
-
let
|
|
2096
|
+
const y = (p) => {
|
|
2097
|
+
var c, f, v;
|
|
2098
|
+
const k = p;
|
|
2099
|
+
let r = ((k.clientX || ((f = (c = k.changedTouches) == null ? void 0 : c[0]) == null ? void 0 : f.clientX) || 0) - u.getBoundingClientRectViewLeft(
|
|
2099
2100
|
this.player.template.awakenOpacityBarWrap
|
|
2100
2101
|
)) / 130;
|
|
2101
|
-
|
|
2102
|
-
},
|
|
2103
|
-
var
|
|
2104
|
-
document.removeEventListener(u.nameMap.dragEnd,
|
|
2102
|
+
r = Math.max(0, Math.min(1, r)), (v = this.player.awaken) == null || v.opacity(r);
|
|
2103
|
+
}, m = () => {
|
|
2104
|
+
var p;
|
|
2105
|
+
document.removeEventListener(u.nameMap.dragEnd, m), document.removeEventListener(u.nameMap.dragMove, y), (p = this.player.template.awakenOpacityBox) == null || p.classList.remove(
|
|
2105
2106
|
"kplayer-setting-awaken-active"
|
|
2106
2107
|
);
|
|
2107
2108
|
};
|
|
2108
2109
|
(l = this.player.template.awakenOpacityBarWrapWrap) == null || l.addEventListener(
|
|
2109
2110
|
"click",
|
|
2110
|
-
(
|
|
2111
|
-
var
|
|
2112
|
-
let
|
|
2111
|
+
(p) => {
|
|
2112
|
+
var r;
|
|
2113
|
+
let k = ((p.clientX || 0) - u.getBoundingClientRectViewLeft(
|
|
2113
2114
|
this.player.template.awakenOpacityBarWrap
|
|
2114
2115
|
)) / 130;
|
|
2115
|
-
|
|
2116
|
+
k = Math.max(0, Math.min(1, k)), (r = this.player.awaken) == null || r.opacity(k);
|
|
2116
2117
|
}
|
|
2117
|
-
), (
|
|
2118
|
+
), (o = this.player.template.awakenOpacityBarWrapWrap) == null || o.addEventListener(
|
|
2118
2119
|
u.nameMap.dragStart,
|
|
2119
2120
|
() => {
|
|
2120
|
-
var
|
|
2121
|
-
document.addEventListener(u.nameMap.dragMove,
|
|
2121
|
+
var p;
|
|
2122
|
+
document.addEventListener(u.nameMap.dragMove, y), document.addEventListener(u.nameMap.dragEnd, m), (p = this.player.template.awakenOpacityBox) == null || p.classList.add(
|
|
2122
2123
|
"kplayer-setting-awaken-active"
|
|
2123
2124
|
);
|
|
2124
2125
|
}
|
|
@@ -2144,7 +2145,7 @@ class xe {
|
|
|
2144
2145
|
this.player.template.settingBox.classList.add("kplayer-setting-box-open"), this.player.template.mask.classList.add("kplayer-mask-show"), this.player.controller.disableAutoHide = !0;
|
|
2145
2146
|
}
|
|
2146
2147
|
}
|
|
2147
|
-
class
|
|
2148
|
+
class xe {
|
|
2148
2149
|
constructor(e) {
|
|
2149
2150
|
this.player = e, this.doHotKeyHandler = this.doHotKey.bind(this), this.cancelFullScreenHandler = this.cancelFullScreen.bind(this), this.player.options.hotkey && document.addEventListener("keydown", this.doHotKeyHandler), document.addEventListener("keydown", this.cancelFullScreenHandler);
|
|
2150
2151
|
}
|
|
@@ -2252,37 +2253,37 @@ class Ee {
|
|
|
2252
2253
|
}
|
|
2253
2254
|
update() {
|
|
2254
2255
|
var e;
|
|
2255
|
-
this.template.infoVersion && (this.template.infoVersion.innerHTML = "v1.0.
|
|
2256
|
+
this.template.infoVersion && (this.template.infoVersion.innerHTML = "v1.0.2 dev"), this.template.infoType && (this.template.infoType.innerHTML = this.player.type || ""), this.template.infoUrl && (this.template.infoUrl.innerHTML = ((e = this.player.options.video) == null ? void 0 : e.url) || ""), this.template.infoResolution && (this.template.infoResolution.innerHTML = `${this.video.videoWidth} x ${this.video.videoHeight}`), this.template.infoDuration && (this.template.infoDuration.innerHTML = String(this.video.duration)), this.player.options.awaken && typeof this.player.options.awaken == "object" && (this.template.infoAwakenId && (this.template.infoAwakenId.innerHTML = this.player.options.awaken.id || ""), this.template.infoAwakenApi && (this.template.infoAwakenApi.innerHTML = this.player.options.awaken.api || ""));
|
|
2256
2257
|
}
|
|
2257
2258
|
fps(e) {
|
|
2258
2259
|
this.template.infoFPS && (this.template.infoFPS.innerHTML = `${e.toFixed(1)}`);
|
|
2259
2260
|
}
|
|
2260
2261
|
}
|
|
2261
2262
|
let V = 0;
|
|
2262
|
-
const
|
|
2263
|
+
const q = [];
|
|
2263
2264
|
function Te(n) {
|
|
2264
2265
|
const e = n.DefaultConfig.loader;
|
|
2265
2266
|
return class extends e {
|
|
2266
2267
|
constructor(i) {
|
|
2267
2268
|
super(i);
|
|
2268
2269
|
const s = this.load.bind(this);
|
|
2269
|
-
this.load = function(a, l,
|
|
2270
|
-
const
|
|
2271
|
-
|
|
2270
|
+
this.load = function(a, l, o) {
|
|
2271
|
+
const h = o.onSuccess;
|
|
2272
|
+
o.onSuccess = function(y, m, p, k) {
|
|
2272
2273
|
try {
|
|
2273
2274
|
if (a.type === "fragment") {
|
|
2274
|
-
const
|
|
2275
|
-
let
|
|
2276
|
-
if (
|
|
2277
|
-
const f = new Blob([
|
|
2278
|
-
|
|
2275
|
+
const r = y.data;
|
|
2276
|
+
let c;
|
|
2277
|
+
if (r instanceof ArrayBuffer ? c = r : typeof r == "string" && (c = new TextEncoder().encode(r).buffer), c) {
|
|
2278
|
+
const f = new Blob([c], { type: "video/mp2t" }), v = URL.createObjectURL(f);
|
|
2279
|
+
y.url = v, setTimeout(() => URL.revokeObjectURL(v), 1e4);
|
|
2279
2280
|
}
|
|
2280
2281
|
}
|
|
2281
|
-
} catch (
|
|
2282
|
-
console.warn("[KPlayer] BlobHLSLoader error:",
|
|
2282
|
+
} catch (r) {
|
|
2283
|
+
console.warn("[KPlayer] BlobHLSLoader error:", r);
|
|
2283
2284
|
}
|
|
2284
|
-
y
|
|
2285
|
-
}, s(a, l,
|
|
2285
|
+
h(y, m, p, k);
|
|
2286
|
+
}, s(a, l, o);
|
|
2286
2287
|
};
|
|
2287
2288
|
}
|
|
2288
2289
|
};
|
|
@@ -2292,55 +2293,55 @@ async function R(n, e, t, i) {
|
|
|
2292
2293
|
if (!s.ok) throw new Error(`HTTP ${s.status}`);
|
|
2293
2294
|
let a = await s.text();
|
|
2294
2295
|
if (e && t && i) {
|
|
2295
|
-
const l = /^\d{2}:\d{2}:\d{2}[.,]\d{3}\s*-->\s*\d{2}:\d{2}:\d{2}[.,]\d{3}$/,
|
|
2296
|
-
const
|
|
2297
|
-
|
|
2296
|
+
const l = /^\d{2}:\d{2}:\d{2}[.,]\d{3}\s*-->\s*\d{2}:\d{2}:\d{2}[.,]\d{3}$/, o = async (c, f, v) => {
|
|
2297
|
+
const L = new Uint8Array(
|
|
2298
|
+
c.match(/.{2}/g).map((T) => parseInt(T, 16))
|
|
2298
2299
|
), B = await crypto.subtle.decrypt(
|
|
2299
2300
|
{ name: "AES-CBC", iv: v.buffer },
|
|
2300
2301
|
f,
|
|
2301
|
-
|
|
2302
|
+
L.buffer
|
|
2302
2303
|
);
|
|
2303
2304
|
return new TextDecoder().decode(B);
|
|
2304
|
-
},
|
|
2305
|
-
t.match(/.{2}/g).map((
|
|
2306
|
-
),
|
|
2307
|
-
i.match(/.{2}/g).map((
|
|
2308
|
-
),
|
|
2305
|
+
}, h = new Uint8Array(
|
|
2306
|
+
t.match(/.{2}/g).map((c) => parseInt(c, 16))
|
|
2307
|
+
), y = new Uint8Array(
|
|
2308
|
+
i.match(/.{2}/g).map((c) => parseInt(c, 16))
|
|
2309
|
+
), m = await crypto.subtle.importKey(
|
|
2309
2310
|
"raw",
|
|
2310
|
-
|
|
2311
|
+
h.buffer,
|
|
2311
2312
|
{ name: "AES-CBC" },
|
|
2312
2313
|
!1,
|
|
2313
2314
|
["decrypt"]
|
|
2314
2315
|
);
|
|
2315
|
-
let
|
|
2316
|
+
let p;
|
|
2316
2317
|
try {
|
|
2317
|
-
|
|
2318
|
+
p = atob(a.trim());
|
|
2318
2319
|
} catch {
|
|
2319
|
-
|
|
2320
|
+
p = a;
|
|
2320
2321
|
}
|
|
2321
|
-
const
|
|
2322
|
-
`),
|
|
2323
|
-
for (const
|
|
2324
|
-
const f =
|
|
2322
|
+
const k = p.split(`
|
|
2323
|
+
`), r = [];
|
|
2324
|
+
for (const c of k) {
|
|
2325
|
+
const f = c.trim();
|
|
2325
2326
|
if (!f) {
|
|
2326
|
-
|
|
2327
|
+
r.push(c);
|
|
2327
2328
|
continue;
|
|
2328
2329
|
}
|
|
2329
2330
|
if (l.test(f)) {
|
|
2330
|
-
|
|
2331
|
+
r.push(c);
|
|
2331
2332
|
continue;
|
|
2332
2333
|
}
|
|
2333
2334
|
if (/^[0-9a-fA-F]+$/.test(f) && f.length % 2 === 0)
|
|
2334
2335
|
try {
|
|
2335
|
-
const v = await
|
|
2336
|
-
|
|
2336
|
+
const v = await o(f, m, y);
|
|
2337
|
+
r.push(v);
|
|
2337
2338
|
} catch {
|
|
2338
|
-
|
|
2339
|
+
r.push(c);
|
|
2339
2340
|
}
|
|
2340
2341
|
else
|
|
2341
|
-
|
|
2342
|
+
r.push(c);
|
|
2342
2343
|
}
|
|
2343
|
-
a =
|
|
2344
|
+
a = r.join(`
|
|
2344
2345
|
`);
|
|
2345
2346
|
}
|
|
2346
2347
|
return a;
|
|
@@ -2355,29 +2356,29 @@ class Ae {
|
|
|
2355
2356
|
const s = { subtitle: "", lang: "off", url: "" };
|
|
2356
2357
|
if (this.options.subtitle.url.push(s), this.options.subtitle.defaultSubtitle !== void 0) {
|
|
2357
2358
|
const l = this.options.subtitle.defaultSubtitle;
|
|
2358
|
-
typeof l == "string" ? this.options.subtitle.index = this.options.subtitle.url.findIndex((
|
|
2359
|
+
typeof l == "string" ? this.options.subtitle.index = this.options.subtitle.url.findIndex((o) => o.lang === l || o.name === l) : typeof l == "number" && (this.options.subtitle.index = l);
|
|
2359
2360
|
}
|
|
2360
2361
|
const a = this.options.subtitle.url;
|
|
2361
2362
|
(this.options.subtitle.index === -1 || this.options.subtitle.index == null || this.options.subtitle.index > a.length - 1) && (this.options.subtitle.index = a.findIndex(
|
|
2362
2363
|
(l) => l.lang === this.options.lang
|
|
2363
2364
|
)), this.options.subtitle.index === -1 && (this.options.subtitle.index = a.length - 1);
|
|
2364
2365
|
}
|
|
2365
|
-
this.template = new
|
|
2366
|
+
this.template = new F({
|
|
2366
2367
|
container: this.container,
|
|
2367
2368
|
options: this.options,
|
|
2368
2369
|
index: V,
|
|
2369
2370
|
tran: this.tran
|
|
2370
|
-
}), this.video = this.template.video, this.bar = new fe(this.template), this.bezel = new ge(this.template.bezel), this.fullScreen = new ue(this), this.controller = new we(this), this.setting = new
|
|
2371
|
+
}), this.video = this.template.video, this.bar = new fe(this.template), this.bezel = new ge(this.template.bezel), this.fullScreen = new ue(this), this.controller = new we(this), this.setting = new Le(this), this.plugins = {}, this.docClickFun = () => {
|
|
2371
2372
|
this.focus = !1;
|
|
2372
2373
|
}, this.containerClickFun = () => {
|
|
2373
2374
|
this.focus = !0;
|
|
2374
|
-
}, document.addEventListener("click", this.docClickFun, !0), this.container.addEventListener("click", this.containerClickFun, !0), this.paused = !0, this.timer = new ve(this), this.hotkey = new
|
|
2375
|
+
}, document.addEventListener("click", this.docClickFun, !0), this.container.addEventListener("click", this.containerClickFun, !0), this.paused = !0, this.timer = new ve(this), this.hotkey = new xe(this), this.contextmenu = new Be(this), this.initVideo(
|
|
2375
2376
|
this.video,
|
|
2376
2377
|
this.quality && this.quality.type || this.options.video.type || "auto"
|
|
2377
2378
|
), this.infoPanel = new Ee(this), (this.options.ad || this.options.vastAD) && (this.ad = new he(this)), this.options.vastAD && this.options.vastADURL && ((i = this.ad) == null || i._loadVAST(this.options.vastADURL)), this.template.titleBack && this.template.titleBack.addEventListener("click", () => {
|
|
2378
2379
|
var s;
|
|
2379
2380
|
typeof ((s = this.options.title) == null ? void 0 : s.onBack) == "function" ? this.options.title.onBack(this) : window.history.back(), this.events.trigger("title_back");
|
|
2380
|
-
}), !this.awaken && this.options.autoplay && this.play(), this.moveBar = !1, V++,
|
|
2381
|
+
}), !this.awaken && this.options.autoplay && this.play(), this.moveBar = !1, V++, q.push(this);
|
|
2381
2382
|
}
|
|
2382
2383
|
seek(e) {
|
|
2383
2384
|
e = Math.max(e, 0), this.video.duration && (e = Math.min(e, this.video.duration)), this.video.currentTime < e ? this.notice(
|
|
@@ -2390,7 +2391,7 @@ class Ae {
|
|
|
2390
2391
|
if (this.paused = !1, this.video.paused && !u.isMobile && this.bezel.switch(w.play), this.template.playButton.innerHTML = w.pause, this.template.mobilePlayButton.innerHTML = w.pause, e || Promise.resolve(this.video.play()).catch(() => {
|
|
2391
2392
|
this.pause();
|
|
2392
2393
|
}), this.timer.enable("loading"), this.container.classList.remove("kplayer-paused"), this.container.classList.add("kplayer-playing"), this.awaken && this.awaken.play(), this.options.mutex)
|
|
2393
|
-
for (const i of
|
|
2394
|
+
for (const i of q)
|
|
2394
2395
|
this !== i && i.pause();
|
|
2395
2396
|
const t = this.container.querySelector(
|
|
2396
2397
|
".kplayer-mobile-play-btn .kplayer-icon-content"
|
|
@@ -2429,10 +2430,10 @@ class Ae {
|
|
|
2429
2430
|
this.events.on(e, t);
|
|
2430
2431
|
}
|
|
2431
2432
|
initMSE(e, t) {
|
|
2432
|
-
var a, l,
|
|
2433
|
+
var a, l, o, h, y, m, p, k;
|
|
2433
2434
|
if (this.type = t, (a = this.options.video.customType) != null && a[t]) {
|
|
2434
|
-
const
|
|
2435
|
-
typeof
|
|
2435
|
+
const r = this.options.video.customType[t];
|
|
2436
|
+
typeof r == "function" ? r(this.video, this) : console.error(`Illegal customType: ${t}`);
|
|
2436
2437
|
return;
|
|
2437
2438
|
}
|
|
2438
2439
|
let i = t;
|
|
@@ -2440,26 +2441,26 @@ class Ae {
|
|
|
2440
2441
|
const s = this.quality ? this.quality.url : e.src;
|
|
2441
2442
|
switch (i) {
|
|
2442
2443
|
case "hls": {
|
|
2443
|
-
const
|
|
2444
|
-
if (!
|
|
2444
|
+
const r = window.Hls;
|
|
2445
|
+
if (!r) {
|
|
2445
2446
|
this.notice("Error: Can't find Hls.");
|
|
2446
2447
|
return;
|
|
2447
2448
|
}
|
|
2448
|
-
if (!
|
|
2449
|
+
if (!r.isSupported()) {
|
|
2449
2450
|
this.notice("Error: Hls is not supported.");
|
|
2450
2451
|
return;
|
|
2451
2452
|
}
|
|
2452
|
-
const
|
|
2453
|
-
|
|
2454
|
-
), v = new
|
|
2455
|
-
...
|
|
2453
|
+
const c = ((l = this.options.pluginOptions) == null ? void 0 : l.hls) || {}, f = Te(
|
|
2454
|
+
r
|
|
2455
|
+
), v = new r({
|
|
2456
|
+
...c,
|
|
2456
2457
|
loader: f
|
|
2457
2458
|
});
|
|
2458
|
-
this.plugins.hls = v, v.loadSource(e.src), v.attachMedia(e), v.on(
|
|
2459
|
-
this.buildHlsQualityMenu(v), this.updateHlsQualityCurrentLabel();
|
|
2459
|
+
this.plugins.hls = v, v.loadSource(e.src), v.attachMedia(e), v.on(r.Events.MANIFEST_PARSED, () => {
|
|
2460
|
+
this.buildHlsQualityMenu(v, r), this.updateHlsQualityCurrentLabel();
|
|
2460
2461
|
}), v.on(
|
|
2461
|
-
|
|
2462
|
-
(
|
|
2462
|
+
r.Events.LEVEL_SWITCHED,
|
|
2463
|
+
(L, B) => {
|
|
2463
2464
|
this.hlsCurrentLevel = B.level, this.updateHlsQualityCurrentLabel();
|
|
2464
2465
|
}
|
|
2465
2466
|
), this.events.on("destroy", () => {
|
|
@@ -2468,24 +2469,24 @@ class Ae {
|
|
|
2468
2469
|
break;
|
|
2469
2470
|
}
|
|
2470
2471
|
case "flv": {
|
|
2471
|
-
const
|
|
2472
|
-
if (
|
|
2473
|
-
if (
|
|
2474
|
-
const
|
|
2472
|
+
const r = window.flvjs;
|
|
2473
|
+
if (r)
|
|
2474
|
+
if (r.isSupported()) {
|
|
2475
|
+
const c = r.createPlayer(
|
|
2475
2476
|
Object.assign(
|
|
2476
|
-
((
|
|
2477
|
+
((h = (o = this.options.pluginOptions) == null ? void 0 : o.flv) == null ? void 0 : h.mediaDataSource) || {},
|
|
2477
2478
|
{
|
|
2478
2479
|
type: "flv",
|
|
2479
2480
|
url: e.src
|
|
2480
2481
|
}
|
|
2481
2482
|
),
|
|
2482
|
-
(
|
|
2483
|
+
(m = (y = this.options.pluginOptions) == null ? void 0 : y.flv) == null ? void 0 : m.config
|
|
2483
2484
|
);
|
|
2484
|
-
this.plugins.flvjs =
|
|
2485
|
-
|
|
2485
|
+
this.plugins.flvjs = c, c.attachMediaElement(e), c.load(), this.events.on("destroy", () => {
|
|
2486
|
+
c.unload(), c.detachMediaElement(), c.destroy(), delete this.plugins.flvjs;
|
|
2486
2487
|
}), this.events.on("quality_end", () => {
|
|
2487
2488
|
var f;
|
|
2488
|
-
s !== ((f = this.quality) == null ? void 0 : f.url) && (
|
|
2489
|
+
s !== ((f = this.quality) == null ? void 0 : f.url) && (c.unload(), c.detachMediaElement(), c.destroy());
|
|
2489
2490
|
});
|
|
2490
2491
|
} else
|
|
2491
2492
|
this.notice("Error: flvjs is not supported.");
|
|
@@ -2494,44 +2495,44 @@ class Ae {
|
|
|
2494
2495
|
break;
|
|
2495
2496
|
}
|
|
2496
2497
|
case "dash": {
|
|
2497
|
-
const
|
|
2498
|
-
if (
|
|
2499
|
-
const
|
|
2500
|
-
|
|
2501
|
-
|
|
2498
|
+
const r = window.dashjs;
|
|
2499
|
+
if (r) {
|
|
2500
|
+
const c = r.MediaPlayer().create();
|
|
2501
|
+
c.initialize(e, e.src, !1, 0), c.updateSettings(((p = this.options.pluginOptions) == null ? void 0 : p.dash) || {}), this.plugins.dash = c, this.events.on("destroy", () => {
|
|
2502
|
+
r.MediaPlayer().reset(), delete this.plugins.dash;
|
|
2502
2503
|
}), this.events.on("quality_end", () => {
|
|
2503
2504
|
var f;
|
|
2504
|
-
s !== ((f = this.quality) == null ? void 0 : f.url) &&
|
|
2505
|
+
s !== ((f = this.quality) == null ? void 0 : f.url) && r.MediaPlayer().reset();
|
|
2505
2506
|
});
|
|
2506
2507
|
} else
|
|
2507
2508
|
this.notice("Error: Can't find dashjs.");
|
|
2508
2509
|
break;
|
|
2509
2510
|
}
|
|
2510
2511
|
case "webtorrent": {
|
|
2511
|
-
const
|
|
2512
|
-
if (
|
|
2513
|
-
if (
|
|
2512
|
+
const r = window.WebTorrent;
|
|
2513
|
+
if (r)
|
|
2514
|
+
if (r.WEBRTC_SUPPORT) {
|
|
2514
2515
|
this.container.classList.add("kplayer-loading");
|
|
2515
|
-
const
|
|
2516
|
-
((
|
|
2516
|
+
const c = new r(
|
|
2517
|
+
((k = this.options.pluginOptions) == null ? void 0 : k.webtorrent) || {}
|
|
2517
2518
|
);
|
|
2518
|
-
this.plugins.webtorrent =
|
|
2519
|
+
this.plugins.webtorrent = c;
|
|
2519
2520
|
const f = e.src;
|
|
2520
2521
|
e.src = "", e.preload = "metadata", e.addEventListener(
|
|
2521
2522
|
"durationchange",
|
|
2522
2523
|
() => this.container.classList.remove("kplayer-loading"),
|
|
2523
2524
|
{ once: !0 }
|
|
2524
|
-
),
|
|
2525
|
-
const
|
|
2526
|
-
|
|
2525
|
+
), c.add(f, (v) => {
|
|
2526
|
+
const L = v.files.find((B) => B.name.endsWith(".mp4"));
|
|
2527
|
+
L == null || L.renderTo(this.video, {
|
|
2527
2528
|
autoplay: this.options.autoplay,
|
|
2528
2529
|
controls: !1
|
|
2529
2530
|
});
|
|
2530
2531
|
}), this.events.on("destroy", () => {
|
|
2531
|
-
|
|
2532
|
+
c.remove(f), c.destroy(), delete this.plugins.webtorrent;
|
|
2532
2533
|
}), this.events.on("quality_end", () => {
|
|
2533
2534
|
var v;
|
|
2534
|
-
s !== ((v = this.quality) == null ? void 0 : v.url) && (
|
|
2535
|
+
s !== ((v = this.quality) == null ? void 0 : v.url) && (c.remove(f), c.destroy());
|
|
2535
2536
|
});
|
|
2536
2537
|
} else
|
|
2537
2538
|
this.notice("Error: Webtorrent is not supported.");
|
|
@@ -2592,40 +2593,56 @@ class Ae {
|
|
|
2592
2593
|
e.textContent = i ? `${i.height}p` : "Manual";
|
|
2593
2594
|
}
|
|
2594
2595
|
}
|
|
2595
|
-
buildHlsQualityMenu(e) {
|
|
2596
|
+
buildHlsQualityMenu(e, t) {
|
|
2596
2597
|
var y;
|
|
2597
2598
|
if (!((y = e == null ? void 0 : e.levels) != null && y.length)) return;
|
|
2598
|
-
const
|
|
2599
|
-
e.levels.forEach((
|
|
2600
|
-
const
|
|
2601
|
-
|
|
2602
|
-
index:
|
|
2603
|
-
name:
|
|
2604
|
-
height:
|
|
2605
|
-
bitrate:
|
|
2599
|
+
const i = /* @__PURE__ */ new Set(), s = [];
|
|
2600
|
+
e.levels.forEach((m, p) => {
|
|
2601
|
+
const k = `${m.height}-${m.bitrate}`;
|
|
2602
|
+
i.has(k) || (i.add(k), s.push({
|
|
2603
|
+
index: p,
|
|
2604
|
+
name: m.height ? `${m.height}p` : `${Math.round((m.bitrate || 0) / 1e3)}kbps`,
|
|
2605
|
+
height: m.height || 0,
|
|
2606
|
+
bitrate: m.bitrate || 0
|
|
2606
2607
|
}));
|
|
2607
|
-
}),
|
|
2608
|
-
const
|
|
2608
|
+
}), s.sort((m, p) => p.height - m.height || p.bitrate - m.bitrate);
|
|
2609
|
+
const a = [{ index: -1, name: "Auto" }, ...s], l = this.container.querySelector(
|
|
2609
2610
|
".kplayer-quality-list"
|
|
2610
2611
|
);
|
|
2611
|
-
if (!
|
|
2612
|
-
|
|
2613
|
-
(
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2612
|
+
if (!l) return;
|
|
2613
|
+
l.innerHTML = a.map(
|
|
2614
|
+
(m) => `
|
|
2615
|
+
<div class="kplayer-quality-item" data-level="${m.index}">
|
|
2616
|
+
<span class="kplayer-label">${m.name}</span>
|
|
2617
|
+
</div>
|
|
2618
|
+
`
|
|
2618
2619
|
).join("");
|
|
2619
|
-
const
|
|
2620
|
+
const o = l.querySelectorAll(".kplayer-quality-item"), h = this.container.querySelector(
|
|
2620
2621
|
"#kplayer-quality-current"
|
|
2621
2622
|
);
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
var
|
|
2625
|
-
const
|
|
2626
|
-
e.currentLevel =
|
|
2623
|
+
o.forEach((m) => {
|
|
2624
|
+
m.addEventListener("click", () => {
|
|
2625
|
+
var c;
|
|
2626
|
+
const p = Number(m.dataset.level);
|
|
2627
|
+
e.currentLevel = p, e.nextLevel = p, e.loadLevel = p, o.forEach((f) => f.classList.remove("active")), m.classList.add("active");
|
|
2628
|
+
const k = ((c = m.textContent) == null ? void 0 : c.trim()) || "";
|
|
2629
|
+
h && (h.textContent = k), this.notice(
|
|
2630
|
+
`${this.tran("switching-quality").replace("%q", k)}`,
|
|
2631
|
+
-1,
|
|
2632
|
+
void 0,
|
|
2633
|
+
"switch-quality"
|
|
2634
|
+
);
|
|
2635
|
+
const r = () => {
|
|
2636
|
+
this.notice(
|
|
2637
|
+
`${this.tran("switched-quality").replace("%q", k)}`,
|
|
2638
|
+
2e3,
|
|
2639
|
+
void 0,
|
|
2640
|
+
"switch-quality"
|
|
2641
|
+
), e.off(t.Events.LEVEL_SWITCHED, r);
|
|
2642
|
+
};
|
|
2643
|
+
e.on(t.Events.LEVEL_SWITCHED, r);
|
|
2627
2644
|
});
|
|
2628
|
-
}),
|
|
2645
|
+
}), h && (h.textContent = "Auto");
|
|
2629
2646
|
}
|
|
2630
2647
|
switchQuality(e) {
|
|
2631
2648
|
var l;
|
|
@@ -2670,21 +2687,21 @@ class Ae {
|
|
|
2670
2687
|
), this.switchingQuality = !1, this.events.trigger("quality_end");
|
|
2671
2688
|
}
|
|
2672
2689
|
}), this.on("error", () => {
|
|
2673
|
-
var
|
|
2674
|
-
this.video.error && this.prevVideo && (this.template.videoWrap.removeChild(this.video), this.video = this.prevVideo, i || this.video.play(), this.qualityIndex = this.prevIndex, this.quality = (
|
|
2690
|
+
var o;
|
|
2691
|
+
this.video.error && this.prevVideo && (this.template.videoWrap.removeChild(this.video), this.video = this.prevVideo, i || this.video.play(), this.qualityIndex = this.prevIndex, this.quality = (o = this.options.video.quality) == null ? void 0 : o[this.qualityIndex ?? 0], this.prevVideo = void 0, this.switchingQuality = !1);
|
|
2675
2692
|
});
|
|
2676
2693
|
}
|
|
2677
2694
|
notice(e, t = 2e3, i = 0.8, s) {
|
|
2678
2695
|
let a;
|
|
2679
2696
|
if (s && (a = document.getElementById(`kplayer-notice-${s}`), a && (a.innerHTML = e), this.noticeList[s] && (clearTimeout(this.noticeList[s]), this.noticeList[s] = null)), !a) {
|
|
2680
|
-
const l =
|
|
2697
|
+
const l = F.NewNotice(e, i, s);
|
|
2681
2698
|
this.template.noticeList.appendChild(l), a = l;
|
|
2682
2699
|
}
|
|
2683
2700
|
this.events.trigger("notice_show", a), t > 0 && (this.noticeList[s || ""] = setTimeout(
|
|
2684
|
-
/* @__PURE__ */ ((l,
|
|
2701
|
+
/* @__PURE__ */ ((l, o) => () => {
|
|
2685
2702
|
l.addEventListener("animationend", () => {
|
|
2686
|
-
|
|
2687
|
-
}), l.classList.add("remove-notice"),
|
|
2703
|
+
o.template.noticeList.removeChild(l);
|
|
2704
|
+
}), l.classList.add("remove-notice"), o.events.trigger("notice_hide"), o.noticeList[s || ""] = null;
|
|
2688
2705
|
})(a, this),
|
|
2689
2706
|
t
|
|
2690
2707
|
));
|
|
@@ -2701,10 +2718,10 @@ class Ae {
|
|
|
2701
2718
|
}
|
|
2702
2719
|
destroy() {
|
|
2703
2720
|
var e;
|
|
2704
|
-
|
|
2721
|
+
q.splice(q.indexOf(this), 1), this.pause(), document.removeEventListener("click", this.docClickFun, !0), this.container.removeEventListener("click", this.containerClickFun, !0), this.fullScreen.destroy(), this.hotkey.destroy(), this.contextmenu.destroy(), this.controller.destroy(), this.timer.destroy(), this.video.src = "", this.container.innerHTML = "", (e = this.ad) == null || e.destroy(), this.events.trigger("destroy");
|
|
2705
2722
|
}
|
|
2706
2723
|
static get version() {
|
|
2707
|
-
return "1.0.
|
|
2724
|
+
return "1.0.2";
|
|
2708
2725
|
}
|
|
2709
2726
|
async _loadSubtitleTexts() {
|
|
2710
2727
|
var s;
|
|
@@ -2735,19 +2752,19 @@ class Ae {
|
|
|
2735
2752
|
return;
|
|
2736
2753
|
}
|
|
2737
2754
|
try {
|
|
2738
|
-
const
|
|
2755
|
+
const o = await R(
|
|
2739
2756
|
i.url,
|
|
2740
2757
|
t.encrypt,
|
|
2741
2758
|
t.key,
|
|
2742
2759
|
t.iv
|
|
2743
2760
|
);
|
|
2744
|
-
await ((a = this.subtitle) == null ? void 0 : a.loadVttText(
|
|
2745
|
-
} catch (
|
|
2746
|
-
console.warn("[KPlayer] Subtitle switch failed:",
|
|
2761
|
+
await ((a = this.subtitle) == null ? void 0 : a.loadVttText(o)), (l = this.subtitle) == null || l.show();
|
|
2762
|
+
} catch (o) {
|
|
2763
|
+
console.warn("[KPlayer] Subtitle switch failed:", o);
|
|
2747
2764
|
}
|
|
2748
2765
|
}
|
|
2749
2766
|
}
|
|
2750
2767
|
export {
|
|
2751
2768
|
Ae as default
|
|
2752
2769
|
};
|
|
2753
|
-
//# sourceMappingURL=kplayer.es.js.map
|
|
2770
|
+
//# sourceMappingURL=kplayer-ts.es.js.map
|