1import{a as g}from"./chunk-IG5S2BMN.js";import{Fa as m,Oc as s,Z as h,ca as c,g as d}from"./chunk-NTGMMAT4.js";var $=(()=>{let o=class o{constructor(t,i){this.platformId=t,this.communicationService=i,this.audioPlaying$=new d(""),this.currentTrackName$=new d(""),this.currentTime$=new d(0),this.duration$=new d(0),this.latestPlayingAudioUrl="",this.currentPlayingAudio=null,this.currentIndex=-1,s(this.platformId)&&(this.currentPlayingAudio=new Audio,this.setupMediaSessionHandlers(),this.currentPlayingAudio.addEventListener("ended",()=>{this.onTrackEnded()}),this.currentPlayingAudio.addEventListener("playing",()=>{this.communicationService.playAudio(),this.updateMediaSessionState("playing")}),this.currentPlayingAudio.addEventListener("pause",()=>{this.communicationService.stopAudio(),this.audioPlaying$.value&&this.updateMediaSessionState("paused")}),this.currentPlayingAudio.addEventListener("timeupdate",()=>{this.currentPlayingAudio&&(this.currentTime$.next(this.currentPlayingAudio.currentTime),this.updateMediaSessionPosition())}),this.currentPlayingAudio.addEventListener("durationchange",()=>{this.currentPlayingAudio&&isFinite(this.currentPlayingAudio.duration)?(this.duration$.next(this.currentPlayingAudio.duration),this.updateMediaSessionPosition()):this.duration$.next(0)}))}setupMediaSessionHandlers(){typeof navigator<"u"&&"mediaSession"in navigator&&(navigator.mediaSession.setActionHandler("play",()=>this.play()),navigator.mediaSession.setActionHandler("pause",()=>this.pause()),navigator.mediaSession.setActionHandler("previoustrack",()=>this.playPrevious()),navigator.mediaSession.setActionHandler("nexttrack",()=>this.playNext()),navigator.mediaSession.setActionHandler("seekbackward",()=>this.seek(this.currentTime$.value-10)),navigator.mediaSession.setActionHandler("seekforward",()=>this.seek(this.currentTime$.value+10)))}updateMediaSessionMetadata(t,i){typeof navigator<"u"&&"mediaSession"in navigator&&(navigator.mediaSession.metadata=new MediaMetadata({title:t||"\u0421\u0430\u0448\u0430 \u041A\u0432\u0430\u0448\u0435\u043D\u0430\u044F - \u041C\u0443\u0437\u044B\u043A\u0430",artist:"\u0421\u0430\u0448\u0430 \u041A\u0432\u0430\u0448\u0435\u043D\u0430\u044F",artwork:i?[{src:i,sizes:"512x512",type:"image/jpeg"}]:[]}))}updateMediaSessionState(t){typeof navigator<"u"&&"mediaSession"in navigator&&(navigator.mediaSession.playbackState=t)}clearMediaSession(){typeof navigator<"u"&&"mediaSession"in navigator&&(navigator.mediaSession.playbackState="none",navigator.mediaSession.metadata=null)}updateMediaSessionPosition(){if(typeof navigator<"u"&&"mediaSession"in navigator&&this.currentPlayingAudio){let t=this.currentPlayingAudio.duration;isFinite(t)&&navigator.mediaSession.setPositionState?.({duration:t,playbackRate:1,position:this.currentPlayingAudio.currentTime})}}startAudio(t,i,a){this.audioPlaying$.next(t),this.currentTime$.next(0),this.duration$.next(0);let n=this.communicationService.playlist$.value,e=n.findIndex(p=>p.url===t);this.currentIndex=e;let r=i?.trim()||(e>=0?n[e].name:""),u=a||(e>=0?n[e].artwork:void 0);this.currentTrackName$.next(r),s(this.platformId)&&(this.updateMediaSessionMetadata(r,u),this.updateMediaSessionState("playing"),this.currentPlayingAudio.src=t,this.currentPlayingAudio.load(),this.currentPlayingAudio.play())}stopAudio(){this.latestPlayingAudioUrl=this.audioPlaying$.value,this.audioPlaying$.next(""),this.currentTrackName$.next(""),this.currentTime$.next(0),this.duration$.next(0),this.currentIndex=-1,s(this.platformId)&&(this.currentPlayingAudio.pause(),this.currentPlayingAudio.removeAttribute("src"),this.currentPlayingAudio.load(),this.clearMediaSession()),this.communicationService.stopAudio()}stopResumeOrRandomTrack(){this.audioPlaying$.value===""?this.startTrack():this.stopAudio()}isPaused(){return s(this.platformId)?this.currentPlayingAudio.paused:!0}play(){s(this.platformId)&&this.currentPlayingAudio&&this.audioPlaying$.value&&this.currentPlayingAudio.play()}pause(){s(this.platformId)&&this.currentPlayingAudio&&this.currentPlayingAudio.pause()}togglePlayPause(){return this.audioPlaying$.value===""?(this.startTrack(),!0):s(this.platformId)&&this.currentPlayingAudio?this.currentPlayingAudio.paused?(this.currentPlayingAudio.play(),!0):(this.currentPlayingAudio.pause(),!1):!1}seek(t){s(this.platformId)&&this.currentPlayingAudio&&isFinite(t)&&(this.currentPlayingAudio.currentTime=Math.max(0,t),this.currentTime$.next(this.currentPlayingAudio.currentTime))}playNext(){let t=this.communicationService.playlist$.value;if(t.length===0)return;let i=this.audioPlaying$.value,a=t.findIndex(r=>r.url===i),n=a<0?this.getRandomInt(t.length):(a+1)%t.length,e=t[n];this.startAudio(e.url,e.name,e.artwork)}playPrevious(){let t=this.communicationService.playlist$.value;if(t.length===0)return;let i=this.audioPlaying$.value,a=t.findIndex(r=>r.url===i),n=a<=0?t.length-1:a-1,e=t[n];this.startAudio(e.url,e.name,e.artwork)}getCurrentAudioElement(){return s(this.platformId)?this.currentPlayingAudio:null}startTrack(){let t=this.communicationService.playlist$.value;if(t.length===0)return;let i=typeof window<"u"?window.location.pathname.split("/").filter(
1Boolean):[],a=i.length>0?i[i.length-1]:"",n=a?t.find(u=>u.slug===a):null;if(n){this.startAudio(n.url,n.name,n.artwork);return}let e=this.latestPlayingAudioUrl?t.find(u=>u.url===this.latestPlayingAudioUrl):null;if(e){this.startAudio(e.url,e.name,e.artwork);return}let r=t[0];this.startAudio(r.url,r.name,r.artwork)}startRandomTrack(){let t=this.communicationService.playlist$.value;if(t.length===0)return;let i=t[this.getRandomInt(t.length)];this.startAudio(i.url,i.name,i.artwork)}getRandomInt(t){return t<=0?0:Math.floor(Math.random()*t)}onTrackEnded(){let t=this.communicationService.playlist$.value;if(t.length===0){this.stopAudio();return}let i=this.audioPlaying$.value,a=t.findIndex(r=>r.url===i),n=a<0?0:(a+1)%t.length,e=t[n];this.startAudio(e.url,e.name,e.artwork)}};o.\u0275fac=function(i){return new(i||o)(c(m),c(g))},o.\u0275prov=h({token:o,factory:o.\u0275fac,providedIn:"root"});let l=o;return l})();export{$ as a};
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.