1import{a as l}from"./P34iuKgf.js";import"./oCrBuUBj.js";import"./_hdt44u-.js";class M extends l{static get pluginName(){return"rateDefinition"}static get defaultConfig(){return{position:l.POSITIONS.CONTROLS_RIGHT,index:99,playbackRates:[.5,.75,1,1.25,1.5,2],definitions:[]}}constructor(e){super(e),this.currentRateIndex=2,this.currentDefIndex=0,this.rateMenuVisible=!1,this.defMenuVisible=!1}afterCreate(){var i;const e=Number(((i=this.player)==null?void 0:i.playbackRate)||1),t=(this.config.playbackRates||[.5,.75,1,1.25,1.5,2]).findIndex(s=>Number(s)===e);t>=0&&(this.currentRateIndex=t),setTimeout(()=>{this.bindEvents()},0)}bindEvents(){const e=this.find(".rate-btn"),n=this.find(".def-btn");e?e.onclick=this.toggleRateMenu.bind(this):console.error("[RateDefinitionPlugin] æªæ¾å°åéæé®"),n?n.onclick=this.toggleDefMenu.bind(this):console.error("[RateDefinitionPlugin] æªæ¾å°æ¸ æ°åº¦æé®"),this.bindMenuItemEvents(),document.addEventListener("click",this.onDocumentClick.bind(this))}bindMenuItemEvents(){const e=this.find(".rate-menu-list");e&&e.querySelectorAll("li").forEach(i=>{i.onclick=s=>{s.stopPropagation();const a=parseInt(i.dataset.index,10);this.setPlaybackRate(a)}});const n=this.find(".def-menu-list");n&&n.querySelectorAll("li").forEach(i=>{i.onclick=s=>{s.stopPropagation();const a=parseInt(i.dataset.index,10);this.setDefinition(a)}})}destroy(){document.removeEventListener("click",this.onDocumentClick.bind(this))}setPlaybackRate(e){if(isNaN(e))return;const n=this.config.playbackRates||[.5,.75,1,1.25,1.5,2];if(e<0||e>=n.length)return;this.currentRateIndex=e;const t=n[e];try{this.player.playbackRate=t}catch(s){console.error("[RateDefinitionPlugin] 设置åé失败",s)}const i=this.find(".rate-btn span");i&&(i.textContent=`${t}x`),this.updateRateMenuSelection(),this.hideRateMenu()}setDefinition(e){if(isNaN(e))return;const n=this.config.definitions||[];if(e<0||e>=n.length)return;this.currentDefIndex=e;const t=n[e];if(t&&t.url){typeof this.player.switchURL=="function"?this.player.switchURL(t.url):this.player.src=t.url;const i=t.name||t.definition||"auto";this.player.emit("definitionChange",i);const s=this.find(".def-btn span");s&&(s.textContent=i),this.updateDefMenuSelection()}else console.error("[RateDefinitionPlugin] æ¸ æ°åº¦æ²¡æ URL",t);this.hideDefMenu()}updateButtonsLabel(){const e=this.config.playbackRates||[.5,.75,1,1.25,1.5,2],n=this.config.definitions||[],t=this.find(".rate-btn span");t&&this.currentRateIndex>=0&&this.currentRateIndex<e.length&&(t.textContent=`${e[this.currentRateIndex]}x`);const i=this.find(".def-btn span");if(i&&this.currentDefIndex>=0&&this.currentDefIndex<n.length){const s=n[this.currentDefIndex],a=s.name||s.definition||"auto";i.textContent=a}this.updateRateMenuSelection(),this.updateDefMenuSelection()}updateRateMenuSelection(){const e=this.find(".rate-menu-list");if(!e)return;e.querySelectorAll("li").forEach((t,i)=>{i===this.currentRateIndex?t.classList.add("selected"):t.classList.remove("selected")})}updateDefMenuSelection(){const e=this.find(".def-menu-list");if(!e)return;e.querySelectorAll("li").forEach((t,i)=>{i===this.currentDefIndex?t.classList.add("selected"):t.classList.remove("selected")})}toggleRateMenu(e){e.stopPropagation();const n=this.find(".rate-menu-list");n&&(this.hideDefMenu(),this.rateMenuVisible=!this.rateMenuVisible,n.style.display=this.rateMenuVisible?"block":"none")}toggleDefMenu(e){e.stopPropagation();const n=this.find(".def-menu-list");n&&(this.hideRateMenu(),this.defMenuVisible=!this.defMenuVisible,n.style.display=this.defMenuVisible?"block":"none")}hideRateMenu(){const e=this.find(".rate-menu-list");e&&(e.style.display="none"),this.rateMenuVisible=!1}hideDefMenu(){const e=this.find(".def-menu-list");e&&(e.style.display="none"),this.defMenuVisible=!1}onDocumentClick(e){this.el&&this.el.contains(e.target)||(this.hideRateMenu(),this.hideDefMenu())}render(){const e=this.config.playbackRates||[.5,.75,1,1.25,1.5,2],n=e.map((r,o)=>{const c=o===this.currentRateIndex;return`<li data-index="${o}" class="${c?"selected":""}">${r}x</li>`}).join(""),t=this.config.definitions&&this.config.definitions.length>0?this.config.definitions:[{name:"auto"},{name:"720P"}],i=t.map((r,o)=>{const c=o===this.currentDefIndex,u=r.name||r.definition||"auto";return`<li data-index="${o}" class="${c?"selected":""}">${u}</li>`}).join(""),s=e[this.currentRateIndex]||1,a=t[this.currentDefIndex],d=a&&(a.name||a.definition)||"auto";return` 2 <div class="xg-rate-def-plugin"> 3 <div class="rate-btn-container"> 4 <button class="rate-btn"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 5 <circle cx="9.99992" cy="9.99998" r="1.66667" stroke="white" stroke-width="1.66667"/> 6 <path d="M4.10767 4.10779C7.17524 1.04022 12.038 0.865011 15.3118 3.58044L14.1272 4.76501C11.5105 2.69673 7.7015 2.86943 5.2854 5.28552C2.68194 7.88898 2.68201 12.1107 5.2854 14.7142L4.10767 15.892C0.853404 12.6376 0.853333 7.36212 4.10767 4.10779ZM17.4133 6.19275C19.0238 9.32666 18.5172 13.2666 15.8918 15.892L14.7141 14.7142C16.6789 12.7495 17.1601 9.86357 16.1594 7.44666L17.4133 6.19275Z" fill="white"/> 7 <path d="M17.0833 2.91669L11.25 8.75002" stroke="white" stroke-width="1.66667"/> 8</svg><span>${s}x</span></button> 9 <ul class="rate-menu-list" style="display:none"> 10 ${n} 11 </ul> 12 </div> 13 <div class="def-btn-container"> 14 <button class="def-btn"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 15 <path d="M8.75 7.08331C8.75 7.31408 8.75 10.5128 8.75 12.9166" stroke="white" stroke-width="1.66667" stroke-linejoin="round"/> 16 <path d="M6.66667 7.08331V12.9166H5.83333C5.3731 12.9166 5 12.5436 5 12.0833V7.08331H6.66667Z" fill="white"/> 17 <path d="M11.6667 7.91669H12.5001C13.6507 7.91669 14.5834 8.84943 14.5834 10C14.5834 11.1506 13.6507 12.0834 12.5001 12.0834H11.6667V7.91669Z" stroke="white" stroke-width="1.66667"/> 18 <rect x="5" y="9.16669" width="3.33333" height="1.66667" fill="white"/> 19 <path d="M2.5 4.16669H17.5V15.8334H5.83333C3.99238 15.8334 2.5 14.341 2.5 12.5V4.16669Z" stroke="white" stroke-width="1.66667"/> 20</svg><span>${d}</span></button> 21 <ul class="def-menu-list" style="display:none"> 22 ${i} 23 </ul> 24 </div> 25 </div> 26 `}}export{M as default}; 27//# sourceMappingURL=muFxHStj.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.