403Webshell
Server IP : 167.179.152.94  /  Your IP : 216.73.216.169
Web Server : Apache/2.4.66 (Debian)
System : Linux 6d8cbb3dc321 6.8.0-117-generic #117-Ubuntu SMP PREEMPT_DYNAMIC Tue May 5 19:26:24 UTC 2026 x86_64
User :  ( 1000)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/wp-content/plugins/html5-audio-player/build/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wp-content/plugins/html5-audio-player/build/playlist.js
(()=>{"use strict";const t=(e,s)=>{const n=Math.floor(Math.random()*e);return s===n?t(e,s):n},e=t,s=class{constructor(t,e={},s=[]){return this.shuffle=!1,this.repeat=!1,this.currentIndex=0,this.player=null,this.isAdmin=e?.isAdmin,this.prevIndex=null,this.playlist(t,e,s)}playlist(t,s={},n=[]){if(!t)return null;const a="AUDIO"===t?.tagName?t:t.querySelector("audio"),l=new Plyr(a,s);this.player=l;const i=t?.dataset?.infos&&(t=>{let e=null;try{e=JSON.parse(t)}catch(t){console.warn(t.message)}return e})(t.dataset.infos)||{},r=t.querySelector("[data-plyr=play2]"),o=t.querySelector("[data-plyr=artist]"),d=t.querySelector("[data-plyr=title]"),p=t.querySelector("[data-plyr=prev]"),c=t.querySelector("[data-plyr=next]"),u=t.querySelector("[data-plyr=shuffle]"),v=t.querySelector("[data-plyr=repeat]"),y=t.querySelectorAll("[data-audio-item]"),m=t.querySelector("[data-plyr=cover]");if(v?.addEventListener("click",(t=>{this.handleFeature(t)})),u?.addEventListener("click",(t=>this.handleFeature(t))),n.length||y.forEach((t=>n.push({source:t.dataset?.audioSource}))),!n.length)return!1;l.on("ready",(()=>{this.isAdmin||this.dispatchEvent(this.currentIndex,!1)})),window.h5apPlayer?.multipleAudio||l.on("play",(()=>{document.querySelectorAll("audio").forEach((t=>{t.isEqualNode(a)||t.pause()}))})),window.player=l,window.dom=t,y.forEach(((t,e)=>{const s=document.createElement("audio");n[e]?.source&&(s.src=n[e]?.source,s.addEventListener("loadedmetadata",(()=>{var e,n,a,l,i;t.querySelector(".duration")&&(t.querySelector(".duration").innerText=(e=s.duration,n=parseInt(e,10),a=Math.floor(n/3600),l=Math.floor((n-3600*a)/60),i=n-3600*a-60*l,a<10&&(a="0"+a),l<10&&(l="0"+l),i<10&&(i="0"+i),l+":"+i))}))),t.addEventListener("click",(()=>{window.player=l,this.currentIndex===e?l.playing?l.pause():l.play():(this.prevIndex=e>0?e-1:n.length-1,this.currentIndex=e,this.dispatchEvent(this.currentIndex))}))})),l.on("updateTrack",(({detail:t})=>{const{title:e,artist:s,source:i,poster:r}=n[t?.index];this.prevIndex===t.index&&l.playing?l.pause():(m&&(m.src=r),a&&(a.src=i),d&&(d.innerText=e),o&&(o.innerText=s),t.play&&l.play()),y.forEach((t=>{t.classList.remove("item-active"),t.classList.remove("item-playing")})),y[t?.index].classList.add("item-active")})),l.on("ended",(()=>{this.repeat?this.dispatchEvent(this.currentIndex):i?.autoplayNextTrack&&(this.prevIndex=this.currentIndex,this.shuffle?(this.currentIndex=e(n.length,this.currentIndex),this.dispatchEvent(this.currentIndex)):(this.currentIndex=n.length>this.currentIndex+1?this.currentIndex+1:0,this.dispatchEvent(this.currentIndex)))}));const h=t.querySelector(".song-played-progress");return h?.addEventListener("click",(function(t){const e=l.duration/h.offsetWidth;l.currentTime=t.offsetX*e})),l.on("timeupdate",(function(){h?.setAttribute("value",100/l.duration*l.currentTime)})),r?.addEventListener("click",(function(){l.playing?l.pause():l.play()})),l.on("play",(()=>{r?.classList.add("playing"),r?.classList.remove("paused"),y[this.currentIndex]?.classList.add("item-playing")})),l.on("pause",(()=>{r?.classList.add("paused"),r?.classList.remove("playing"),y[this.currentIndex]?.classList.remove("item-playing")})),c?.addEventListener("click",(()=>{const t=n.length>this.currentIndex+1?this.currentIndex+1:0;this.prevIndex=this.currentIndex,this.currentIndex=t,this.dispatchEvent(t)})),p?.addEventListener("click",(()=>{const t=this.currentIndex>0?this.currentIndex-1:this.currentIndex;this.currentIndex!==t&&(this.prevIndex=this.currentIndex,this.currentIndex=t),this.dispatchEvent(t)})),l}handleFeature(t){"false"!==(t.target?.dataset.active||"false")?(t.target.dataset.active=!1,this[t.target?.dataset?.plyr]=!1):(t.target.dataset.active=!0,this[t.target?.dataset?.plyr]=!0),window.event=t}dispatchEvent(t,e=!0){const s=new CustomEvent("updateTrack",{detail:{index:t,play:e}});this.player?.elements?.container?.dispatchEvent(s)}},n=(t=[])=>`<div class="flat-black-player-container playlist_container">\n      <div id="list-screen" class="slide-in-top">\n        <div id="list-screen-header" class="hide-playlist">\n          <img id="up-arrow" src="https://521dimensions.com/img/open-source/amplitudejs/examples/flat-black/up.svg"/>\n          Hide Playlist\n        </div>\n        <div id="list">\n          \n          ${t.map((({title:t,artist:e},s)=>`\n            <div class="song amplitude-song-container amplitude-play-pause" data-audio-item data-index="${s}">\n              <span class="song-number-now-playing">\n                <span class="number">${s+1}</span>\n                <img class="now-playing" src="https://521dimensions.com/img/open-source/amplitudejs/examples/flat-black/now-playing.svg"/>\n              </span>\n  \n              <div class="song-meta-container">\n                <span class="song-name" data-amplitude-song-info="name" data-amplitude-song-index="0">${t||""}</span>\n                <span class="song-artist-album"><span data-amplitude-song-info="artist" data-amplitude-song-index="0">${e||""}</span>\n              </div>\n              <span class="duration">3:30<span>\n            </div>`)).join("")}\n        </div>\n  \n        <div id="list-screen-footer">\n          <div id="list-screen-meta-container">\n            <span data-amplitude-song-info="name" class="song-name"></span>\n  \n            <div class="song-artist-album">\n              <span data-amplitude-song-info="artist"></span>\n            </div>\n          </div>\n          <div class="list-controls">\n            <div class="list-previous amplitude-prev"></div>\n            <div class="list-play-pause amplitude-play-pause paused" data-plyr="play2"></div>\n            <div class="list-next amplitude-next"></div>\n          </div>\n        </div>\n      </div>\n      <div id="player-screen">\n        <div class="player-header down-header">\n          <img id="down" src="https://521dimensions.com/img/open-source/amplitudejs/examples/flat-black/down.svg"/>\n          Show Playlist\n        </div>\n        <div id="player-top">\n          <img data-amplitude-song-info="cover_art_url" data-plyr="cover" src="${t[0]?.poster}"/>\n        </div>\n        <div id="player-progress-bar-container">\n          <progress class="song-played-progress" min="0" max="100" step="0.01"></progress>\n          <progress id="song-buffered-progress" class="amplitude-buffered-progress" value="0"></progress>\n        </div>\n        \n        <div id="player-middle">\n          <div id="time-container">\n            <span class="amplitude-current-time time-container plyr__time--current"></span>\n            <span class="amplitude-duration-time time-container plyr__time--duration"></span>\n          </div>\n          <div id="meta-container">\n            <span data-amplitude-song-info="name" class="song-name"></span>\n  \n            <div class="song-artist-album">\n              <span data-amplitude-song-info="artist"></span>\n            </div>\n          </div>\n        </div>\n        <div id="player-bottom">\n          <div id="control-container">\n  \n            <div id="shuffle-container">\n              <div class="amplitude-shuffle amplitude-shuffle-off" data-plyr="shuffle" id="shuffle"></div>\n            </div>\n  \n            <div id="prev-container">\n              <div class="amplitude-prev" data-plyr="prev" id="previous"></div>\n            </div>\n  \n            <div id="play-pause-container">\n              <div class="amplitude-play-pause" data-plyr="play" id="play-pause"></div>\n            </div>\n  \n            <div id="next-container">\n              <div class="amplitude-next" data-plyr="next" id="next"></div>\n            </div>\n  \n            <div id="repeat-container">\n              <div class="amplitude-repeat" id="repeat" data-plyr="repeat"></div>\n            </div>\n  \n          </div>\n          <div id="volume-container">\n            <button type="button" class="plyr__control" aria-label="Mute" data-plyr="mute">\n              <svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-muted"></use></svg>\n              <svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-volume"></use></svg>\n              <span class="label--pressed plyr__tooltip" role="tooltip">Unmute</span>\n              <span class="label--not-pressed plyr__tooltip" role="tooltip">Mute</span>\n            </button>\n            <input data-plyr="volume" type="range" min="0" max="1" step="0.05" value="1" autocomplete="off" aria-label="Volume" class="amplitude-volume-slider">\n          </div>\n        </div>\n      </div>\n    </div>`,a=(t=[],e={})=>`\n    <div class="playlist_container hextensive">\n        <div class="plyr__controls controls left">\n        \t<img class="poster" data-plyr="cover" src="${t[0]?.poster||""}" alt="">\n        \t<div class="plyr_controls">\n            <div class="progressbar plyr__controls">\n                <div class="plyr__time plyr__time--current" aria-label="Current time">00:00</div>\n                <div class="plyr__progress">\n                    <input data-plyr="seek" type="range" min="0" max="100" step="0.01" value="0" aria-label="Seek">\n                    <progress class="plyr__progress__buffer" min="0" max="100" value="0">% buffered</progress>\n                    <span role="tooltip" class="plyr__tooltip">00:00</span>\n                </div>\n                <div class="plyr__time plyr__time--duration" aria-label="Duration">00:00</div>\n            </div>\n            <div class="main-controls plyr__controls">\n                <div class="repeat-shuffle" >\n                    <span class="plyr__control" data-plyr="shuffle"><svg class="icon">\n                    <use xlink:href="#shuffle"></use>\n                    </svg></span>\n                    <span class="plyr__control" active="false" data-plyr="repeat"><svg class="icon">\n                    <use xlink:href="#exchange"></use>\n                    </svg></span>\n                </div>\n                <div class="re-ply-fast">\n                    <button type="button" class="plyr__control" data-plyr="prev">\n                        <svg role="presentation"><use xlink:href="#plyr-rewind"></use></svg>\n                        <span class="plyr__tooltip" role="tooltip">Rewind {seektime} secs</span>\n                    </button>\n                    <button type="button" class="plyr__control" aria-label="Play, {title}" data-plyr="play">\n                        <svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-pause"></use></svg>\n                        <svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-play"></use></svg>\n                        <span class="label--pressed plyr__tooltip" role="tooltip">Pause</span>\n                        <span class="label--not-pressed plyr__tooltip" role="tooltip">Play</span>\n                    </button>\n                    <button type="button" class="plyr__control" data-plyr="next">\n                        <svg role="presentation"><use xlink:href="#plyr-fast-forward"></use></svg>\n                        <span class="plyr__tooltip" role="tooltip">Forward {seektime} secs</span>\n                    </button>\n                </div>\n                <div class="volume">\n                    <button type="button" class="plyr__control" aria-label="Mute" data-plyr="mute">\n                        <svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-muted"></use></svg>\n                        <svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-volume"></use></svg>\n                        <span class="label--pressed plyr__tooltip" role="tooltip">Unmute</span>\n                        <span class="label--not-pressed plyr__tooltip" role="tooltip">Mute</span>\n                    </button>\n                    <div class="plyr__volume">\n                        <input data-plyr="volume" type="range" min="0" max="1" step="0.05" value="1" autocomplete="off" aria-label="Volume">\n                    </div>\n                </div>\n            </div>\n          </div>\n            <div class="plyr__meta">\n                <h2 class="title" data-plyr="title">${t[0]?.title}</h2>\n                <h3 class="artist" data-plyr="artist">${t[0]?.artist}</h3>\n            </div>\n        </div>\n\t\t\t\t<div class="right">\n\t\t\t\t${t.map((({title:t,artist:s,source:n},a)=>`<div class="hsong-item plyr__controlss"  data-index="${a}" data-audio-item>\n\t\t\t\t\t\t\t<span class="ply_icon">\n\t\t\t\t\t\t\t\t<button type="button" class="plyr__control" aria-label="Play, {title}">\n\t\t\t\t\t\t\t\t\t<svg class="icon--pressed" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<use href="#plyr-pause"></use>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t<svg class="icon--not-pressed" role="presentation">\n\t\t\t\t\t\t\t\t\t\t<use href="#plyr-play"></use>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<div class="meta-data">\n\t\t\t\t\t\t\t\t<h3 class="title">${t||""}</h3>\n\t\t\t\t\t\t\t\t<span class="singer">${s||""}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class="time duration">00:00</span>\n\t\t\t\t\t\t\t${e?.hide_download?"":`<a class="plyr__controls__item plyr__control" target="_blank" download href="${n}" data-plyr="download"><svg aria-hidden="true" focusable="false"><use xlink:href="#plyr-download"></use></svg><span class="plyr__sr-only">Download</span></a>`}\n\t\t\t\t\t\t</div>`)).join("")}\n\t\t\t\t</div>\n    \t</div>`;document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll(".audioPlaylistCard").forEach((t=>{let e=[];try{e=JSON.parse(t.dataset?.items),t.removeAttribute("data-items")}catch(t){e=[]}i(t,{},e)})),document.querySelectorAll(".bluePlaylist:not(.elementorBluePlaylist)").forEach((t=>{let e=[],s={},n={};window.playlist=t;try{e=JSON.parse(t.dataset?.items),s=JSON.parse(t.dataset?.options),n=JSON.parse(t.dataset?.customOptions),t.removeAttribute("data-items")}catch(t){console.log(t.message),e=[],s={},n={}}l(t,s,e,n)})),document.querySelectorAll(".simplePlaylist:not(.elementorSimplePlaylist)").forEach((t=>{let e=[],s={};try{e=JSON.parse(t.dataset?.items||"[]"),s=JSON.parse(t.dataset?.options||"{}"),t.removeAttribute("data-items"),t.removeAttribute("data-options")}catch(t){e=[]}r(t,s,e)})),window.addEventListener("elementor/frontend/init",(function(){elementorFrontend.hooks.addAction("frontend/element_ready/PlaylistAudioPlayer.default",(function(t,e){const s=e(t).find(".elementorBluePlaylist")?.[0];if(s){let t=[];try{t=JSON.parse(s.dataset?.items),s.removeAttribute("data-items")}catch(e){t=[]}l(s,{},t)}const n=e(t).find(".elementorSimplePlaylist")?.[0];if(n){let t=[];try{t=JSON.parse(n.dataset?.items),n.removeAttribute("data-items")}catch(e){t=[]}r(n,{},t)}}))}))}));const l=(t,e={},n=[],l)=>new s(t,{controls:a(n,l),...e},n),i=(t,e={},a=[])=>{const l=new s(t,{controls:n(a),...e},a);return t.getElementsByClassName("down-header")[0]?.addEventListener("click",(function(){t.querySelector("#list").style.height=parseInt(t.querySelector(".flat-black-player-container").offsetHeight)-135+"px",t.querySelector("#list-screen").classList.remove("slide-out-top"),t.querySelector("#list-screen").classList.add("slide-in-top"),t.querySelector("#list-screen").style.display="block"})),t.getElementsByClassName("hide-playlist")[0]?.addEventListener("click",(function(){t.querySelector("#list-screen").classList.remove("slide-in-top"),t.querySelector("#list-screen").classList.add("slide-out-top"),t.querySelector("#list-screen").style.display="none"})),l},r=(t,e={},n=[])=>new s(t,{...e},n)})();

Youez - 2016 - github.com/yon3zu
LinuXploit