"use strict";class SigmaPlayer{constructor(e,t={}){if(this.video="string"==typeof e?document.querySelector(e):e,!this.video)throw new Error("Video element not found");if(!this.video.closest("#sigma__video-wrapper")){const e=document.createElement("div");e.id="sigma__video-wrapper",this.video.parentNode.insertBefore(e,this.video),e.appendChild(this.video)}const s=this.video.closest("#sigma__video-wrapper");if(createControlsUI(s,this),t.thumbnail){const e=document.createElement("div");e.id="sigma__thumbnail-overlay",e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.backgroundImage=`url(${t.thumbnail})`,e.style.backgroundSize="cover",e.style.backgroundPosition="center",e.style.zIndex="1",s.appendChild(e),this.thumbnailOverlay=e}this.videoWrapper=s,this.options=t,this.videoType=t.videoType||null,this.videoSources={},this.selectedTranslation=null,this.selectedQuality=null,this.autoQuality=!1,this.subtitlesEnabled=!1,this.captionTrack=null,this.captionTrackElement=null,this.hls=null,this.dashPlayer=null,this.isDragging=!1,this.playEnabled=!1,this.HIDE_CONTROLS_CLASS="sigma__hide-controls",this.IS_PLAYING_CLASS="sigma__isPlaying",this.IS_MUTED_CLASS="sigma__isMute",this.IS_FULLSCREEN_CLASS="sigma__isFullscreen",this.SHOW_CLASS="sigma__show",this.longPressTimeout=null,this.longPressActivated=!1,this.options.sources&&this.options.sources.seasons&&(this.isSeries=!0,createSeasonEpisodeDropdown(s,this)),this.initialize(),this.options.sources?this.loadVideoSources(this.options.sources):console.error("Нет источников видео")}showSpinner=()=>{this.loadingSpinner.style.display="block"};hideSpinner=()=>{this.loadingSpinner.style.display="none"};showCentralPlay=()=>{this.centralPlayBtn.style.display="flex"};hideCentralPlay=()=>{this.centralPlayBtn.style.display="none"};formatTime=e=>formatTime(e);getNetworkSpeed=()=>getNetworkSpeed();chooseQualityBasedOnSpeed=()=>chooseQualityBasedOnSpeed();getStoredQuality=()=>getStoredQuality();storeQuality=e=>{storeQuality(e)};getStoredSpeed=()=>getStoredSpeed();storeSpeed=e=>{storeSpeed(e)};updateTabIndices=()=>{const e=this.settingsMenu.parentElement.classList.contains(this.SHOW_CLASS);this.settingsMenu.querySelectorAll(".sigma__dropdown-item, .sigma__menu-item").forEach((t=>{t.setAttribute("tabindex",e?"0":"-1")}));const t=this.volumeContainer.classList.contains("active");this.volumeSlider&&this.volumeSlider.setAttribute("tabindex",t?"0":"-1")};isMenuOpen=()=>this.settingsMenu&&this.settingsMenu.parentElement&&this.settingsMenu.parentElement.classList.contains(this.SHOW_CLASS)||this.volumeContainer&&this.volumeContainer.classList.contains("active");enablePlayButton=()=>{this.playBtn.disabled=!1,this.playBtn.style.opacity=1};disablePlayButton=()=>{this.playBtn.disabled=!0,this.playBtn.style.opacity=.5};togglePlayState=()=>{this.video.paused||this.video.ended?this.video.play().then((()=>{this.playBtn.classList.add(this.IS_PLAYING_CLASS)})).catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})):(this.video.pause(),this.playBtn.classList.remove(this.IS_PLAYING_CLASS))};toggleFullscreen=()=>{document.fullscreenElement?this.closeFullscreen():this.openFullscreen()};openFullscreen=()=>{this.videoWrapper.requestFullscreen?this.videoWrapper.requestFullscreen():this.videoWrapper.webkitRequestFullscreen?this.videoWrapper.webkitRequestFullscreen():this.videoWrapper.msRequestFullscreen&&this.videoWrapper.msRequestFullscreen(),this.fullScreenBtn.classList.add(this.IS_FULLSCREEN_CLASS),this.video.style.position="absolute",this.video.style.top="50%",this.video.style.left="50%",this.video.style.transform="translate(-50%, -50%)",this.video.style.maxWidth="100%",this.video.style.maxHeight="100%"};closeFullscreen=()=>{document.fullscreenElement&&document.exitFullscreen().catch((e=>{console.error("Error exiting fullscreen:",e)})),this.fullScreenBtn.classList.remove(this.IS_FULLSCREEN_CLASS),this.video.style.position="",this.video.style.top="",this.video.style.left="",this.video.style.transform="",this.video.style.maxWidth="",this.video.style.maxHeight=""};updateProgress=()=>{if(!this.isDragging&&this.video.duration){const e=this.video.currentTime/this.video.duration*100;this.progress.style.width=e+"%",this.updateTimeDisplay()}};updateTimeDisplay=e=>{const t=void 0!==e?e:this.video.currentTime,s=this.video.duration||0;this.currentTimeElem.textContent=this.formatTime(t),this.durationElem.textContent=this.formatTime(s),this.currentTimeElem.classList.add("countdown"),setTimeout((()=>this.currentTimeElem.classList.remove("countdown")),500)};updateBuffered=()=>{if(this.video.buffered.length>0){const e=this.video.buffered.end(this.video.buffered.length-1),t=this.video.duration;if(t>0){const s=e/t*100;this.progress.parentElement.querySelector(".sigma__buffered").style.width=`${s}%`}}};handleTimelineClick=e=>{if(!this.video.duration)return;const t=this.timeline.offsetWidth,s=e.offsetX/t*this.video.duration;this.video.currentTime=s};startDrag=e=>{this.isDragging=!0;const t=e.touches?e.touches[0].clientX:e.clientX;this.updateTimeline(t),this.showSeekTooltip(t)};dragTimeline=e=>{if(this.isDragging&&this.video.duration){const t=e.touches?e.touches[0].clientX:e.clientX;this.updateTimeline(t),this.showSeekTooltip(t)}};stopDrag=e=>{if(this.isDragging&&this.video.duration){this.isDragging=!1;const t=e.changedTouches?e.changedTouches[0].clientX:e.clientX;this.hideSeekTooltip(),this.updateTimeline(t);const s=(t-this.timeline.getBoundingClientRect().left)/this.timeline.offsetWidth*this.video.duration;this.video.currentTime=s}};updateTimeline=e=>{const t=this.timeline.getBoundingClientRect();let s=e-t.left;s<0&&(s=0),s>t.width&&(s=t.width);const i=s/t.width*100;this.progress.style.width=i+"%";const n=s/t.width*this.video.duration;this.updateTimeDisplay(n)};showSeekTooltip=e=>{const t=this.timeline.getBoundingClientRect();let s=e-t.left;s<0&&(s=0),s>t.width&&(s=t.width);const i=s/t.width*this.video.duration,n=this.formatTime(i);this.seekTooltip.textContent=n,this.seekTooltip.style.left=`${s}px`,this.seekTooltip.style.display="block"};hideSeekTooltip=()=>{this.seekTooltip.style.display="none"};toggleVolume=()=>{this.volumeContainer.classList.toggle("active"),this.closeOtherMenus("volume"),this.updateTabIndices()};toggleSettingsMenuFunc=e=>{e.stopPropagation(),this.settingsMenu.parentElement.classList.toggle(this.SHOW_CLASS),this.closeOtherMenus("settings"),this.updateTabIndices()};setPlaybackSpeed=e=>{this.video.playbackRate=e,this.storeSpeed(e)};checkPlayButton=()=>{this.enablePlayButton()};closeOtherMenus=e=>{"settings"===e?this.volumeContainer.classList.contains("active")&&this.volumeContainer.classList.remove("active"):"volume"===e&&this.settingsMenu.parentElement.classList.contains(this.SHOW_CLASS)&&this.settingsMenu.parentElement.classList.remove(this.SHOW_CLASS),this.updateTabIndices()}}function createSeasonEpisodeDropdown(e,t){if(e.querySelector(".sigma__season-episode-dropdown"))return;const s=document.createElement("div");s.className="sigma__season-episode-dropdown";const i=document.createElement("select");i.id="sigma__season-select";const n=document.createElement("select");n.id="sigma__episode-select",s.appendChild(i),s.appendChild(n),e.appendChild(s);const o=t.options.sources.seasons;for(let e in o){const t=document.createElement("option");t.value=e,t.textContent="Сезон "+e,i.appendChild(t)}function a(){n.innerHTML="";const e=i.value,s=o[e].episodes;for(let e in s){const t=document.createElement("option");t.value=e,t.textContent="Серия "+e,n.appendChild(t)}n.value=Object.keys(s)[0],t.selectSeasonEpisode(i.value,n.value)}i.value=Object.keys(o)[0],i.addEventListener("change",a),n.addEventListener("change",(()=>{t.selectSeasonEpisode(i.value,n.value)})),a()}function getqualityBadge(e){const t=parseInt(e);return t<=480?"SD":t<=720?"HD":t<=1080?"Full HD":t<=1440?"2K":t<=2160?"4K":"8K"}function createControlsUI(e,t){if(e.querySelector("#sigma__controls"))return;const s=document.createElement("div");s.id="sigma__loading-spinner",s.className="sigma__spinner",e.appendChild(s),t.loadingSpinner=s;const i=document.createElement("button");i.id="sigma__central-play",i.className="sigma__central-play-button",i.setAttribute("tabindex","0");const n=getIcon("sigma-play-btn");n.classList.add("sigma__centralPlayIcon"),i.appendChild(n),e.appendChild(i);const o=document.createElement("div");o.id="sigma__controls-wrapper",o.className="sigma__control-wrapper";const a=document.createElement("div");a.className="sigma__controls sigma__controlsInner";const l=document.createElement("button");l.id="sigma__play-pause",l.setAttribute("tabindex","0");const d=getIcon("sigma-play");d.classList.add("sigma__playIcon");const r=getIcon("sigma-pause");r.classList.add("sigma__pauseIcon"),l.appendChild(d),l.appendChild(r),a.appendChild(l);const h=document.createElement("div");h.className="sigma__timeline-container",h.setAttribute("tabindex","0");const c=document.createElement("div");c.id="sigma__timeline",c.className="sigma__timeline-spacer";const u=document.createElement("div");u.className="sigma__full-timeline";const m=document.createElement("div");m.className="sigma__buffered";const p=document.createElement("div");p.id="sigma__progress",u.appendChild(m),u.appendChild(p),c.appendChild(u);const v=document.createElement("div");v.id="sigma__seek-tooltip",v.className="sigma__seek-tooltip",v.textContent="0:00:00",c.appendChild(v),h.appendChild(c);const y=document.createElement("span");y.id="sigma__current-time",y.textContent="0:00:00";const g=document.createElement("span");g.id="sigma__duration",g.textContent="0:00:00",h.appendChild(y),h.appendChild(document.createTextNode(" / ")),h.appendChild(g),a.appendChild(h);const S=document.createElement("div");S.className="sigma__volume-container";const _=document.createElement("button");_.id="sigma__mute",_.className="sigma__isMute",_.setAttribute("tabindex","0");const b=getIcon("sigma-volume-2");b.classList.add("sigma__volumeIcon");const f=getIcon("sigma-volume-0");f.classList.add("sigma__muteIcon"),_.appendChild(b),_.appendChild(f),S.appendChild(_);const E=document.createElement("div");E.id="volume-menu",E.className="sigma__volume-dropdown";const C=document.createElement("input");C.id="sigma__volume-slider",C.type="range",C.style.writingMode="vertical-lr",C.style.direction="rtl",C.min="0",C.max="1",C.step="0.01",C.value="1",C.setAttribute("tabindex","-1"),E.appendChild(C),S.appendChild(E),a.appendChild(S);const T=document.createElement("div");T.className="sigma__dropdown";const L=document.createElement("button");L.id="sigma__settings-btn",L.setAttribute("tabindex","0");const k=getIcon("sigma-settings");k.classList.add("sigma__settingsIcon"),L.appendChild(k),T.appendChild(L);const w=document.createElement("div");w.id="sigma__settings-menu",w.className="sigma__dropdown-content";const I=document.createElement("div");I.className="sigma__settings-main";const P=document.createElement("div");P.className="sigma__menu-item",P.dataset.menu="speed",P.textContent="Скорость";const A=getIcon("sigma-chevron-right");A.classList.add("sigma__menu-arrow"),P.appendChild(A),I.appendChild(P);const x=document.createElement("div");x.className="sigma__menu-item",x.dataset.menu="translation",x.textContent="Озвучка";const N=getIcon("sigma-chevron-right");N.classList.add("sigma__menu-arrow"),x.appendChild(N),I.appendChild(x);const M=document.createElement("div");M.className="sigma__menu-item",M.dataset.menu="quality",M.textContent="Качество";const B=getIcon("sigma-chevron-right");B.classList.add("sigma__menu-arrow"),M.appendChild(B),I.appendChild(M);const D=document.createElement("div");D.className="sigma__menu-item",D.dataset.menu="subtitle",D.textContent="Субтитры";const O=getIcon("sigma-chevron-right");O.classList.add("sigma__menu-arrow"),D.appendChild(O),I.appendChild(D);const Q=document.createElement("div");Q.className="sigma__settings-submenu",Q.style.display="none",w.appendChild(I),w.appendChild(Q),T.appendChild(w),a.appendChild(T),P.addEventListener("click",(()=>{t.showSubmenu("speed")})),x.addEventListener("click",(()=>{t.showSubmenu("translation")})),M.addEventListener("click",(()=>{t.showSubmenu("quality")})),D.addEventListener("click",(()=>{t.showSubmenu("subtitle")}));const W=document.createElement("button");W.id="sigma__full-screen",W.setAttribute("tabindex","0");const q=getIcon("sigma-maximize");q.classList.add("sigma__fullscreenIcon");const H=getIcon("sigma-minimize");H.classList.add("sigma__minimiseIcon"),W.appendChild(q),W.appendChild(H),a.appendChild(W),o.appendChild(a),e.appendChild(o),t.centralPlayBtn=e.querySelector("#sigma__central-play"),t.seekTooltip=e.querySelector("#sigma__seek-tooltip"),t.videoWrapper=e,t.controls=e.querySelector("#sigma__controls-wrapper"),t.playBtn=e.querySelector("#sigma__play-pause"),t.volumeBtn=e.querySelector("#sigma__mute"),t.fullScreenBtn=W,t.timeline=e.querySelector("#sigma__timeline"),t.progress=e.querySelector("#sigma__progress"),t.currentTimeElem=e.querySelector("#sigma__current-time"),t.durationElem=e.querySelector("#sigma__duration"),t.volumeContainer=S,t.volumeMenu=E,t.volumeSlider=C,t.settingsBtn=L,t.settingsMenu=w,t.settingsMain=I,t.settingsSubmenu=Q}function formatTime(e){const t=Math.floor(e/3600),s=Math.floor(e%3600/60),i=Math.floor(e%60);return t>0?`${t}:${s<10?"0":""}${s}:${i<10?"0":""}${i}`:`${s}:${i<10?"0":""}${i}`}async function loadIcons(){const e="sigma-icons-cache",t=localStorage.getItem(e);if(t)addSVGToHead(t);else try{const t=await fetch("https://www.unpkg.com/sigmaplayer/dist/sigma.svg"),s=await t.text();localStorage.setItem(e,s),addSVGToHead(s)}catch(e){console.error("Ошибка при загрузке SVG:",e)}}function addSVGToHead(e){const t=document.createElement("div");t.innerHTML=e;const s=t.querySelector("svg");document.head.appendChild(s)}function getIcon(e){const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("class","sigma__icon"),t.setAttribute("width","24"),t.setAttribute("height","24"),t.setAttribute("viewBox","0 0 24 24");const s=document.createElementNS("http://www.w3.org/2000/svg","use");return s.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`#${e}`),t.appendChild(s),t}function getNetworkSpeed(){return navigator.connection&&navigator.connection.downlink?navigator.connection.downlink:5}function chooseQualityBasedOnSpeed(){const e=getNetworkSpeed();return e>=20?"8K":e>=10?"4K":e>=5?"1080":e>=2.5?"720":e>=1?"480":"360"}function getStoredQuality(){return localStorage.getItem("sigma-preferredQuality")}function storeQuality(e){localStorage.setItem("sigma-preferredQuality",e)}function getStoredSpeed(){const e=localStorage.getItem("sigma-playbackSpeed");return e?parseFloat(e):1}function storeSpeed(e){localStorage.setItem("sigma-playbackSpeed",e)}SigmaPlayer.prototype.selectSeasonEpisode=function(e,t){this.currentSeason=e,this.currentEpisode=t;const s=this.options.sources.seasons[e].episodes[t];s&&s.sources?(this.hls&&(this.hls.destroy(),this.hls=null),this.dashPlayer&&(this.dashPlayer.reset(),this.dashPlayer=null),this.videoType=null,"string"==typeof s.sources.default?(this.autoQuality=!0,this.videoSources={default:{auto:s.sources.default}}):(this.videoSources=s.sources,this.autoQuality=!1),this.options.audioNames=s.audioNames||null,this.subtitleData=s.subtitle||[],this.selectedTranslation=null,this.populateTranslationOptions(),this.video.load()):console.error("Данные для выбранной серии отсутствуют")},SigmaPlayer.prototype.initialize=function(){this.video.addEventListener("play",(()=>{this.playBtn.classList.add(this.IS_PLAYING_CLASS),this.hideSpinner(),this.thumbnailOverlay&&(this.thumbnailOverlay.style.display="none")})),this.video.addEventListener("pause",(()=>{this.playBtn.classList.remove(this.IS_PLAYING_CLASS),this.hideSpinner(),this.showCentralPlay()})),this.video.addEventListener("ended",(()=>{this.playBtn.classList.remove(this.IS_PLAYING_CLASS),this.showControls(),this.hideSpinner(),this.showCentralPlay()})),this.video.addEventListener("waiting",this.showSpinner),this.video.addEventListener("playing",this.hideSpinner),this.video.addEventListener("pause",this.showCentralPlay),this.video.addEventListener("play",this.hideCentralPlay),this.video.addEventListener("ended",this.showCentralPlay);const e=localStorage.getItem("volume");if(null!==e){const t=parseFloat(e);this.video.volume=t,this.volumeSlider.value=t,0===t?(this.video.muted=!0,this.volumeBtn.classList.add(this.IS_MUTED_CLASS)):(this.video.muted=!1,this.volumeBtn.classList.remove(this.IS_MUTED_CLASS))}else this.video.volume=1,this.volumeSlider.value=1;const t=this.getStoredSpeed();this.video.playbackRate=t,this.playBtn.addEventListener("click",(()=>{this.togglePlayState()})),this.centralPlayBtn.addEventListener("click",(()=>{this.togglePlayState()})),this.fullScreenBtn.addEventListener("click",this.toggleFullscreen),this.video.addEventListener("timeupdate",this.updateProgress),this.video.addEventListener("loadedmetadata",(()=>{this.updateTimeDisplay()})),this.video.addEventListener("sigma__progress",this.updateBuffered),this.timeline.addEventListener("click",this.handleTimelineClick),this.timeline.addEventListener("mousedown",this.startDrag),document.addEventListener("mouseup",this.stopDrag),document.addEventListener("mousemove",this.dragTimeline),this.timeline.addEventListener("touchstart",this.startDrag),document.addEventListener("touchend",this.stopDrag),document.addEventListener("touchmove",this.dragTimeline),this.volumeBtn.addEventListener("click",(e=>{e.stopPropagation(),this.toggleVolume()})),document.addEventListener("click",(e=>{if(!e.target.closest(".sigma__dropdown")){let e=this.settingsMenu.parentElement;e.classList.contains(this.SHOW_CLASS)&&(e.classList.remove(this.SHOW_CLASS),this.updateTabIndices())}})),document.addEventListener("fullscreenchange",(()=>{document.fullscreenElement||(this.fullScreenBtn.classList.remove(this.IS_FULLSCREEN_CLASS),this.video.style.position="",this.video.style.top="",this.video.style.left="",this.video.style.transform="",this.video.style.maxWidth="",this.video.style.maxHeight="")})),this.mouseActivityTimeout=null,this.showControls=this.showControls.bind(this),this.hideControls=this.hideControls.bind(this),this.resetMouseActivityTimeout=this.resetMouseActivityTimeout.bind(this),this.videoWrapper.addEventListener("mousemove",this.showControls),this.video.addEventListener("pause",this.showControls),this.video.addEventListener("play",this.resetMouseActivityTimeout),this.videoWrapper.addEventListener("mouseenter",this.showControls),this.videoWrapper.addEventListener("mouseleave",this.hideControls),this.controls.addEventListener("mousemove",this.showControls),this.controls.addEventListener("mouseenter",this.showControls),this.controls.addEventListener("mouseleave",this.resetMouseActivityTimeout),this.videoWrapper.addEventListener("touchstart",this.showControls),this.videoWrapper.addEventListener("touchend",(()=>{setTimeout(this.hideControls,5e3)})),this.resetMouseActivityTimeout(),this.settingsBtn.addEventListener("click",this.toggleSettingsMenuFunc),this.videoWrapper.addEventListener("dblclick",this.handleDoubleClick),this.videoWrapper.addEventListener("mousedown",this.handleMouseDown),this.videoWrapper.addEventListener("touchstart",this.handleMouseDown),this.videoWrapper.addEventListener("mouseup",this.handleMouseUp),this.videoWrapper.addEventListener("touchend",this.handleMouseUp),this.videoWrapper.addEventListener("mouseleave",this.handleMouseUp),this.settingsMenu.addEventListener("keydown",(e=>{const t=Array.from(this.settingsMenu.querySelectorAll(".sigma__dropdown-item, .sigma__menu-item")).filter((e=>"0"===e.getAttribute("tabindex")));if(0===t.length)return;const s=t.indexOf(document.activeElement);if("ArrowDown"===e.key){e.preventDefault();t[(s+1)%t.length].focus()}else if("ArrowUp"===e.key){e.preventDefault();t[(s-1+t.length)%t.length].focus()}else"Escape"===e.key&&(this.settingsMenu.parentElement.classList.remove(this.SHOW_CLASS),this.updateTabIndices(),this.settingsBtn.focus())}))},SigmaPlayer.prototype.handleDoubleClick=function(e){if(e.target.closest("#sigma__controls-wrapper"))return;const t=this.videoWrapper.getBoundingClientRect();e.clientX-t.left<t.width/2?this.video.currentTime=Math.max(0,this.video.currentTime-10):this.video.currentTime=Math.min(this.video.duration,this.video.currentTime+10)},SigmaPlayer.prototype.handleMouseDown=function(e){e.target.closest("#sigma__controls-wrapper")||(this.longPressTimeout=setTimeout((()=>{this.video.playbackRate=2,this.longPressActivated=!0}),3e3))},SigmaPlayer.prototype.handleMouseUp=function(e){clearTimeout(this.longPressTimeout),this.longPressActivated&&(this.video.playbackRate=1,this.longPressActivated=!1)},SigmaPlayer.prototype.selectQuality=function(e,t=!0){const s=this.video.currentTime;if(this.showSpinner(),this.autoQuality){const e=this.videoSources[this.selectedTranslation].auto;if(!e)return console.warn("Sources are not available"),void this.hideSpinner();const t=e.split("?")[0];if(this.videoType||(t.endsWith(".m3u8")?this.videoType="hls":t.endsWith(".mpd")?this.videoType="dash":this.videoType="mp4"),"hls"===this.videoType){if("undefined"==typeof Hls)return console.warn("hls.js не доступен"),void this.hideSpinner();t.endsWith(".m3u8")?(this.hls&&(this.hls.destroy(),this.hls=null),this.hls=new Hls({maxMaxBufferLength:30,maxBufferSize:5242880,maxBufferLength:30}),this.hls.attachMedia(this.video),this.hls.on(Hls.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e)})),this.hls.on(Hls.Events.MANIFEST_PARSED,(()=>{this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()}))}))):(this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner())}else if("dash"===this.videoType){if("undefined"==typeof dashjs)return console.warn("dash.js не доступен"),void this.hideSpinner();t.endsWith(".mpd")?(this.dashPlayer&&(this.dashPlayer.reset(),this.dashPlayer=null),this.dashPlayer=dashjs.MediaPlayer().create(),this.dashPlayer.initialize(this.video,e,!1),this.dashPlayer.on(dashjs.MediaPlayer.events.MANIFEST_LOADED,(()=>{this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()}))}))):(this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner())}else this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner()}else{if(!this.selectedTranslation)return console.warn("Пожалуйста, выберите озвучку перед выбором качества."),void this.hideSpinner();if(!this.videoSources[this.selectedTranslation][e])return console.warn("Выбранное качество недоступно."),void this.hideSpinner();t?(this.selectedQuality=e,this.storeQuality(e)):this.selectedQuality=e;const i=this.videoSources[this.selectedTranslation][this.selectedQuality];if(i&&i.length>0){const e=i[0],t=e.split("?")[0];if(this.videoType||(t.endsWith(".m3u8")?this.videoType="hls":t.endsWith(".mpd")?this.videoType="dash":this.videoType="mp4"),"hls"===this.videoType){if("undefined"==typeof Hls)return console.warn("hls.js не найден"),void this.hideSpinner();t.endsWith(".m3u8")?(this.hls&&(this.hls.destroy(),this.hls=null),this.hls=new Hls({maxMaxBufferLength:30,maxBufferSize:5242880,maxBufferLength:30}),this.hls.attachMedia(this.video),this.hls.on(Hls.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e)})),this.hls.on(Hls.Events.MANIFEST_PARSED,(()=>{this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()}))}))):(this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner())}else if("dash"===this.videoType){if("undefined"==typeof dashjs)return console.warn("dash.js не найден"),void this.hideSpinner();t.endsWith(".mpd")?(this.dashPlayer&&(this.dashPlayer.reset(),this.dashPlayer=null),this.dashPlayer=dashjs.MediaPlayer().create(),this.dashPlayer.initialize(this.video,e,!1),this.dashPlayer.setAutoSwitchQuality(!1),this.dashPlayer.on(dashjs.MediaPlayer.events.MANIFEST_LOADED,(()=>{this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()}))}))):(this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner())}else this.video.src=e,this.video.currentTime=s,this.video.play().catch((e=>{console.error("Error playing video:",e),this.hideSpinner()})),this.hideSpinner()}else console.warn("Не удалось установить источник видео."),this.hideSpinner()}},SigmaPlayer.prototype.selectQualityAuto=function(e){if("hls"===this.videoType)this.hls&&(this.hls.currentLevel=e,this.updateAutoQualityUI(),this.storeQuality(e),this.hls.levels&&this.hls.levels[e]?console.log("Выбрано качество: "+this.hls.levels[e].height+"p"):console.log("Выбрано качество: уровень "+e));else if("dash"===this.videoType&&this.dashPlayer){if(-1===e)this.dashPlayer.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}),console.log("Автоматический выбор качества включен");else{this.dashPlayer.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),this.dashPlayer.setQualityFor("video",e);var t=this.dashPlayer.getBitrateInfoListFor("video").find((function(t){return t.qualityIndex===e}));t?console.log("Выбрано качество: "+(t.height?t.height+"p":t.bitrate+"bps")):console.log("Выбрано качество: уровень "+e)}this.storeQuality(e)}},SigmaPlayer.prototype.updateAutoQualityUI=function(){if("hls"===this.videoType&&this.hls){this.settingsSubmenu.querySelectorAll("[data-level]").forEach((e=>{parseInt(e.dataset.level)===this.hls.currentLevel?e.classList.add("active"):e.classList.remove("active")}))}},SigmaPlayer.prototype.populateQualityOptionsAuto=function(){},SigmaPlayer.prototype.populateTranslationOptions=function(){if("dash"===this.videoType){const e=this.settingsMenu.querySelector(".sigma__settings-main [data-menu='translation']");return void(e&&(e.style.display="block"))}const e=Object.keys(this.videoSources);if(e.length<=1){if(1===e.length){if(this.selectedTranslation=e[0],this.autoQuality)this.populateQualityOptionsAuto(),this.selectQuality("auto",!1);else{let e=this.getStoredQuality();if(e&&this.videoSources[this.selectedTranslation][e]||(e=this.chooseQualityBasedOnSpeed()),this.videoSources[this.selectedTranslation][e])this.selectQuality(e,!1);else{const t=Object.keys(this.videoSources[this.selectedTranslation]).sort(((e,t)=>parseInt(t)-parseInt(e)));e=t.find((t=>parseInt(t)<=parseInt(e)))||t[0],this.selectQuality(e,!1)}}this.playEnabled=!0,this.enablePlayButton()}}else this.selectTranslation(e[0])},SigmaPlayer.prototype.selectTranslation=function(e){this.selectedTranslation=e,this.playEnabled=!0,this.enablePlayButton()},SigmaPlayer.prototype.loadVideoSources=function(e){if("string"==typeof e)this.autoQuality=!0,this.videoSources={default:{auto:e}};else{if("object"!=typeof e)return void console.error("Неверный формат источников видео.");{if(e.seasons){this.isSeries=!0,this.options.sources=e;const t=Object.keys(e.seasons)[0],s=Object.keys(e.seasons[t].episodes)[0];return void this.selectSeasonEpisode(t,s)}let t=!1;for(let s in e)if("string"==typeof e[s]){t=!0;break}t?(this.autoQuality=!1,this.videoSources={default:e}):(this.autoQuality=!1,this.videoSources=e),this.subtitleData=e.subtitle?e.subtitle:[]}}this.populateTranslationOptions()},SigmaPlayer.prototype.showControls=function(){this.controls.classList.remove(this.HIDE_CONTROLS_CLASS);let e=this.videoWrapper.querySelector(".sigma__season-episode-dropdown");e&&(e.style.display="block"),this.resetMouseActivityTimeout()},SigmaPlayer.prototype.hideControls=function(){if(!this.isMenuOpen()&&!this.video.paused&&!this.video.ended){this.controls.classList.add(this.HIDE_CONTROLS_CLASS),this.settingsMenu.parentElement.classList.contains(this.SHOW_CLASS)&&this.settingsMenu.parentElement.classList.remove(this.SHOW_CLASS);let e=this.videoWrapper.querySelector(".sigma__season-episode-dropdown");e&&(e.style.display="none")}},SigmaPlayer.prototype.resetMouseActivityTimeout=function(){if(clearTimeout(this.mouseActivityTimeout),!this.video.paused&&!this.video.ended){const e="ontouchstart"in window?5e3:3e3;this.mouseActivityTimeout=setTimeout((()=>{this.hideControls()}),e)}},SigmaPlayer.prototype.hideSubmenu=function(){this.settingsSubmenu.style.display="none",this.settingsSubmenu.innerHTML="",this.settingsMain.style.display="block",this._submenuItemsContainer=null},SigmaPlayer.prototype.showSubmenu=function(e){this.settingsMain.style.display="none",this.settingsSubmenu.style.display="block",this.settingsSubmenu.innerHTML="";const t=document.createElement("div");t.className="sigma__sub-back-item",t.setAttribute("tabindex","0");const s=getIcon("sigma-chevron-left");s.classList.add("sigma__backIcon"),t.appendChild(s);const i="speed"===e?"Скорость":"translation"===e?"Озвучка":"Качество";if(t.appendChild(document.createTextNode(" "+i)),t.addEventListener("click",(()=>{this.hideSubmenu()})),t.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t.click())})),this.settingsSubmenu.appendChild(t),this._submenuItemsContainer=document.createElement("div"),this._submenuItemsContainer.className="sigma__submenu-items",this.settingsSubmenu.appendChild(this._submenuItemsContainer),"speed"===e)this.populateSpeedSubmenu();else if("translation"===e)if("dash"===this.videoType&&this.dashPlayer&&"function"==typeof this.dashPlayer.getTracksFor)this.populateTranslationSubmenu();else{const e=document.createElement("div");e.className="sigma__dropdown-item",e.textContent="Озвучка недоступна",this._submenuItemsContainer.appendChild(e)}else"quality"===e&&this.populateQualitySubmenu()},SigmaPlayer.prototype.populateSpeedSubmenu=function(){[{speed:.5,label:"0.5x"},{speed:1,label:"1.0x"},{speed:2,label:"2.0x"}].forEach((e=>{const t=document.createElement("div");t.className="sigma__submenu-item",t.dataset.speed=e.speed,t.textContent=e.label,t.setAttribute("tabindex","0"),t.addEventListener("click",(()=>{this.setPlaybackSpeed(e.speed),this.hideSubmenu()})),t.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t.click())})),this._submenuItemsContainer.appendChild(t)}))},SigmaPlayer.prototype.populateTranslationSubmenu=function(){var e=this.dashPlayer.getTracksFor("audio");if(0===e.length){var t=document.createElement("div");return t.className="sigma__submenu-item",t.textContent="Нет аудио-дорожек",void this._submenuItemsContainer.appendChild(t)}e.forEach(((e,t)=>{let s;if(this.options.audioNames&&"object"==typeof this.options.audioNames&&!Array.isArray(this.options.audioNames)){const i=e.lang?e.lang.replace(/\D/g,""):"",n=i?parseInt(i):t;if(s=this.options.audioNames[n],"delete"===s)return;s||(s=e.lang||"Дорожка "+(t+1))}else s=e.lang||"Дорожка "+(t+1);var i=document.createElement("div");i.className="sigma__submenu-item",i.dataset.trackIndex=t,i.textContent=s,i.setAttribute("tabindex","0"),i.addEventListener("click",(()=>{this.setAudioTrack(t),this.hideSubmenu()})),i.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),i.click())})),this._submenuItemsContainer.appendChild(i)}))},SigmaPlayer.prototype.populateQualitySubmenu=function(){if(this.autoQuality){if("dash"===this.videoType){if("undefined"==typeof dashjs){const e=document.createElement("div");return e.className="sigma__submenu-item",e.textContent="dash.js не найден",void this._submenuItemsContainer.appendChild(e)}if(!this.dashPlayer){const e=document.createElement("div");return e.className="sigma__submenu-item",e.textContent="Нет доступных качеств",void this._submenuItemsContainer.appendChild(e)}const e=document.createElement("div");e.className="sigma__submenu-item",e.textContent="Авто",e.dataset.level=-1,e.setAttribute("tabindex","0"),e.addEventListener("click",(()=>{this.selectQualityAuto(-1),this.hideSubmenu()})),e.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.click())})),this._submenuItemsContainer.appendChild(e);const t=this.dashPlayer.getBitrateInfoListFor("video"),s=new Map;t.forEach((e=>{let t=e.height?e.height+"p":`${e.bitrate}`;s.has(t)||s.set(t,e.qualityIndex)})),s.forEach(((e,t)=>{const s=document.createElement("div");s.className="sigma__submenu-item",s.textContent=t,s.dataset.level=e,s.setAttribute("tabindex","0"),s.addEventListener("click",(()=>{this.selectQualityAuto(parseInt(s.dataset.level)),this.hideSubmenu()})),s.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),s.click())})),this._submenuItemsContainer.appendChild(s)}))}else if("hls"===this.videoType){const e=document.createElement("div");e.className="sigma__submenu-item",e.textContent="Выбор качества недоступен",this._submenuItemsContainer.appendChild(e)}}else{if(!this.selectedTranslation){const e=document.createElement("div");return e.className="sigma__submenu-item",e.textContent="Нет озвучки",void this._submenuItemsContainer.appendChild(e)}Object.keys(this.videoSources[this.selectedTranslation]).sort(((e,t)=>parseInt(t)-parseInt(e))).forEach((e=>{const t=document.createElement("div");t.className="sigma__submenu-item",t.textContent=e,t.dataset.quality=e,t.setAttribute("tabindex","0"),t.addEventListener("click",(()=>{this.selectQuality(e),this.hideSubmenu()})),t.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t.click())})),this._submenuItemsContainer.appendChild(t)}))}},SigmaPlayer.prototype.setAudioTrack=function(e){if("dash"===this.videoType&&this.dashPlayer&&"function"==typeof this.dashPlayer.getTracksFor){var t=this.dashPlayer.getTracksFor("audio");t&&t[e]&&(this.dashPlayer.setCurrentTrack(t[e]),console.log("Выбрана аудио-дорожка:",t[e].lang||"Дорожка "+(e+1)))}else"hls"===this.videoType&&this.hls&&this.hls.audioTracks&&this.hls.audioTracks[e]&&(this.hls.audioTrack=e,console.log("Выбрана аудио-дорожка:",this.hls.audioTracks[e].name||this.hls.audioTracks[e].lang||"Дорожка "+(e+1)))},SigmaPlayer.prototype.setCurrentTrack=function(e){if("dash"===this.videoType&&this.dashPlayer&&"function"==typeof this.dashPlayer.getTracksFor){var t=this.dashPlayer.getTracksFor("audio").indexOf(e);-1!==t?this.setAudioTrack(t):console.warn("Аудиодорожка не найдена")}else console.warn("setCurrentTrack доступен только для DASH")},SigmaPlayer.prototype.showSubmenu=function(e){this.settingsMain.style.display="none",this.settingsSubmenu.style.display="block",this.settingsSubmenu.innerHTML="";const t=document.createElement("div");t.className="sigma__sub-back-item",t.setAttribute("tabindex","0");const s=getIcon("sigma-chevron-left");s.classList.add("sigma__backIcon"),t.appendChild(s);const i="speed"===e?"Скорость":"translation"===e?"Озвучка":"quality"===e?"Качество":"subtitle"===e?"Субтитры":"";if(t.appendChild(document.createTextNode(" "+i)),t.addEventListener("click",(()=>{this.hideSubmenu()})),t.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t.click())})),this.settingsSubmenu.appendChild(t),this._submenuItemsContainer=document.createElement("div"),this._submenuItemsContainer.className="sigma__submenu-items",this.settingsSubmenu.appendChild(this._submenuItemsContainer),"speed"===e)this.populateSpeedSubmenu();else if("translation"===e)if("dash"===this.videoType&&this.dashPlayer&&"function"==typeof this.dashPlayer.getTracksFor)this.populateTranslationSubmenu();else{const e=document.createElement("div");e.className="sigma__dropdown-item",e.textContent="Озвучка недоступна",this._submenuItemsContainer.appendChild(e)}else"quality"===e?this.populateQualitySubmenu():"subtitle"===e&&this.populateSubtitleSubmenu()},SigmaPlayer.prototype.populateSubtitleSubmenu=function(){const e=document.createElement("div");if(e.className="sigma__submenu-item",e.textContent="Отключить",e.setAttribute("tabindex","0"),e.addEventListener("click",(()=>{this.setSubtitle(null),this.hideSubmenu()})),e.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.click())})),this._submenuItemsContainer.appendChild(e),!this.subtitleData||0===this.subtitleData.length){const e=document.createElement("div");return e.className="sigma__submenu-item",e.textContent="Субтитры не доступны",void this._submenuItemsContainer.appendChild(e)}this.subtitleData.forEach(((e,t)=>{const s=document.createElement("div");s.className="sigma__submenu-item",s.textContent=e.name,s.dataset.subtitleIndex=t,s.setAttribute("tabindex","0"),s.addEventListener("click",(()=>{this.setSubtitle(t),this.hideSubmenu()})),s.addEventListener("keydown",(e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),s.click())})),this._submenuItemsContainer.appendChild(s)}))},SigmaPlayer.prototype.setSubtitle=function(e){if(this.video.querySelectorAll('track[data-generated="true"]').forEach((e=>e.remove())),null===e)return void console.log("Субтитры отключены");if(!this.subtitleData||!this.subtitleData[e])return void console.warn("Субтитры не найдены");const t=this.subtitleData[e];if(this.options.blobSubtitle)fetch(t.url).then((e=>{if(!e.ok)throw new Error("Ошибка при загрузке субтитров");return e.text()})).then((e=>{const s=new Blob([e],{type:"text/vtt"}),i=URL.createObjectURL(s),n=document.createElement("track");n.kind="subtitles",n.label=t.name,n.src=i,n.default=!0,n.setAttribute("data-generated","true"),this.video.appendChild(n);for(let e=0;e<this.video.textTracks.length;e++)this.video.textTracks[e].mode="showing";console.log("Выбран субтитр (blob):",t.name)})).catch((e=>{console.error("Ошибка загрузки субтитров:",e)}));else{const e=document.createElement("track");e.kind="subtitles",e.label=t.name,e.src=t.url,e.default=!0,e.setAttribute("data-generated","true"),this.video.appendChild(e);for(let e=0;e<this.video.textTracks.length;e++)this.video.textTracks[e].mode="showing";console.log("Выбран субтитр:",t.name)}},SigmaPlayer.prototype.toggleSubtitles=function(){if(this.captionTrack){if(this.subtitlesEnabled){if(this.captionTrack.mode="disabled",this.subtitlesEnabled=!1,this.subtitlesBtn){const e=this.subtitlesBtn.querySelector(".sigma__captionsOffIcon"),t=this.subtitlesBtn.querySelector(".sigma__captionsOnIcon");e.style.display="block",t.style.display="none"}}else if(this.captionTrack.mode="showing",this.subtitlesEnabled=!0,this.subtitlesBtn){const e=this.subtitlesBtn.querySelector(".sigma__captionsOffIcon"),t=this.subtitlesBtn.querySelector(".sigma__captionsOnIcon");e.style.display="none",t.style.display="block"}}else this.options.captions&&Array.isArray(this.options.captions)&&this.options.captions.length>0?(this.selectSubtitle(0),this.subtitlesEnabled=!0):console.warn("Нет субтитров")},SigmaPlayer.prototype.selectSubtitle=function(e){if(this.captionTrackElement&&(this.video.removeChild(this.captionTrackElement),this.captionTrackElement=null,this.captionTrack=null),null===e){if(this.subtitlesEnabled=!1,this.subtitlesBtn){const e=this.subtitlesBtn.querySelector(".sigma__captionsOffIcon"),t=this.subtitlesBtn.querySelector(".sigma__captionsOnIcon");e.style.display="block",t.style.display="none"}return}const t=this.options.captions[e];if(!t||!t.url)return void console.warn("Неверные данные субтитров");const s=document.createElement("track");if(s.kind="subtitles",s.label=t.name,s.src=t.url,s.default=!0,s.mode="showing",this.video.appendChild(s),this.captionTrackElement=s,setTimeout((()=>{for(let e=0;e<this.video.textTracks.length;e++)if(this.video.textTracks[e].label===t.name){this.captionTrack=this.video.textTracks[e],this.captionTrack.mode="showing";break}}),500),this.subtitlesEnabled=!0,this.subtitlesBtn){const e=this.subtitlesBtn.querySelector(".sigma__captionsOffIcon"),t=this.subtitlesBtn.querySelector(".sigma__captionsOnIcon");e.style.display="none",t.style.display="block"}},window.addEventListener("load",loadIcons);
//# sourceMappingURL=sigma-player.min.js.map
