twist-aplayer 1.5.1 → 1.5.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/dist/index.js CHANGED
@@ -39,4 +39,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
39
39
  *
40
40
  * This source code is licensed under the MIT license found in the
41
41
  * LICENSE file in the root directory of this source tree.
42
- */var je;function Et(){return je||(je=1,process.env.NODE_ENV!=="production"&&function(){function e(g,h){return g===h&&(g!==0||1/g===1/h)||g!==g&&h!==h}function t(g,h){l||a.startTransition===void 0||(l=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var u=h();if(!v){var m=h();s(u,m)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),v=!0)}m=f({inst:{value:u,getSnapshot:h}});var b=m[0].inst,_=m[1];return i(function(){b.value=u,b.getSnapshot=h,r(b)&&_({inst:b})},[g,u,h]),p(function(){return r(b)&&_({inst:b}),g(function(){r(b)&&_({inst:b})})},[g]),y(u),u}function r(g){var h=g.getSnapshot;g=g.value;try{var u=h();return!s(g,u)}catch{return!0}}function n(g,h){return h()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=c,s=typeof Object.is=="function"?Object.is:e,f=a.useState,p=a.useEffect,i=a.useLayoutEffect,y=a.useDebugValue,l=!1,v=!1,E=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?n:t;de.useSyncExternalStore=a.useSyncExternalStore!==void 0?a.useSyncExternalStore:E,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),de}var we;function xt(){return we||(we=1,process.env.NODE_ENV==="production"?ne.exports=gt():ne.exports=Et()),ne.exports}var V=xt();const B=[];function St(e){const t=c.useRef(null);return c.useEffect(()=>{if(typeof window<"u"&&!t.current){const r=t.current=document.createElement("audio");typeof(e==null?void 0:e.src)<"u"&&(r.src=e.src),typeof(e==null?void 0:e.autoPlay)<"u"&&(r.autoplay=e.autoPlay),typeof(e==null?void 0:e.initialVolume)<"u"&&(r.volume=e.initialVolume),B.includes(r)||B.push(r)}},[e==null?void 0:e.autoPlay,e==null?void 0:e.initialVolume,e==null?void 0:e.src]),c.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onError))return r.addEventListener("error",e.onError),()=>{r.removeEventListener("error",e.onError)}},[e==null?void 0:e.onError]),c.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onEnded))return r.addEventListener("ended",e.onEnded),()=>{r.removeEventListener("ended",e.onEnded)}},[e==null?void 0:e.onEnded]),c.useEffect(()=>()=>{const r=t.current;if(r){r.pause(),r.currentTime=0;const n=B.indexOf(r);n!==-1&&B.splice(n,1)}t.current=null},[]),t}function Tt(e){const t=St(e),r=c.useCallback(u=>{for(let m=0;m<B.length;m++){const b=B[m];b!==u&&!b.paused&&b.pause()}},[]),n=c.useCallback(async u=>{var b;const m=t.current;if(m){e.mutex&&r(m),m.src!==u&&(m.pause(),m.currentTime=0,m.src=u);try{await((b=t.current)==null?void 0:b.play())}catch{}}},[t,e.mutex,r]),a=c.useCallback(u=>{const m=t.current;m&&(m.paused?n(u):m.pause())},[t,n]),s=c.useCallback(u=>{t.current.currentTime=u},[t]),f=c.useCallback(()=>{t.current&&(t.current.muted=!t.current.muted)},[t]),p=c.useCallback(u=>{t.current&&(t.current.volume=u)},[t]),i=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("volumechange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.volume},()=>{}),y=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("volumechange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.muted},()=>{}),l=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("timeupdate",u),()=>{var b;(b=t.current)==null||b.removeEventListener("timeupdate",u)}},[t]),()=>{if(t.current)return Math.round(t.current.currentTime)},()=>{}),v=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("durationchange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("durationchange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.duration},()=>{}),E=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("progress",u),()=>{var b;(b=t.current)==null||b.removeEventListener("progress",u)}},[t]),()=>{const u=t.current;return u&&u.buffered.length>0?u.buffered.end(u.buffered.length-1):0},()=>{}),g=V.useSyncExternalStore(c.useCallback(u=>{var m,b;return(m=t.current)==null||m.addEventListener("play",u),(b=t.current)==null||b.addEventListener("pause",u),()=>{var _,S;(_=t.current)==null||_.removeEventListener("play",u),(S=t.current)==null||S.removeEventListener("pause",u)}},[t]),()=>{const u=t.current;return u?!u.paused:!1},()=>{}),h=V.useSyncExternalStore(c.useCallback(u=>{var m,b;return(m=t.current)==null||m.addEventListener("playing",u),(b=t.current)==null||b.addEventListener("waiting",u),()=>{var _,S;(_=t.current)==null||_.removeEventListener("playing",u),(S=t.current)==null||S.removeEventListener("waiting",u)}},[t]),()=>{const u=t.current;return u?u.networkState===u.NETWORK_LOADING:!1},()=>{});return{audio:t.current,playAudio:n,togglePlay:a,seek:s,toggleMuted:f,setVolume:p,volume:i,muted:y,currentTime:l,duration:v,bufferedSeconds:E,isPlaying:g,isLoading:h}}function jt(e,t){return c.useMemo(()=>{const r={...t};for(const n in e)e[n]!==void 0&&(r[n]=e[n]);return r},[e,t])}function wt(e){const[t,r]=c.useState(e);return c.useEffect(()=>{r(e)},[e]),{mini:t,setMini:r}}function Ae(){const e=c.useRef([]);return c.useEffect(()=>{const r=e.current;return()=>{for(const n of r)clearTimeout(n)}},[]),c.useCallback((r,n)=>{const a=setTimeout(r,n);return e.current.push(a),a},[])}function _t(){const e=c.useRef(null),[t,r]=c.useState({text:"",style:{opacity:0}}),n=Ae(),a=c.useCallback((s,f=2e3)=>{e.current&&clearTimeout(e.current),r({text:s,style:{opacity:1}}),e.current=n(()=>{r({text:s,style:{opacity:0}})},f)},[n]);return[t,a]}function Ot(e){const t=jt(e,{appearance:"normal",volume:.7,autoPlay:!1,listMaxHeight:250,mini:!1,mutex:!0,listFolded:!1,theme:"light",border:!1}),{audio:r,appearance:n,initialLoop:a,initialOrder:s,volume:f,autoPlay:p,listMaxHeight:i,listFolded:y,mutex:l,theme:v,border:E}=t,g=c.useMemo(()=>Array.isArray(r)?r:[r],[r]),h=At(g,{initialLoop:a,initialOrder:s}),[u,m]=_t(),{mini:b,setMini:_}=wt(t.mini),S=Ae(),j=c.useRef(null),$=c.useCallback(()=>{j.current&&(clearTimeout(j.current),j.current=null)},[]),k=c.useRef(!1),A=Tt({src:h.currentSong.url,initialVolume:f,autoPlay:p,mutex:l,onError(N){const{error:o}=N.target;o&&m("An audio error has occurred, player will skip forward in 2 seconds."),h.hasNextSong&&(j.current=S(()=>{h.next()},2e3))},onEnded(){const{list:N,currentSong:o,loop:x,prioritize:T,hasNextSong:R}=h,{audio:C}=A;if(x==="one"){T({...o});return}if(!R&&x==="none"){k.current=!0,C.currentTime=0,C.pause(),C.src=N[0].url,T(N[0]);return}h.next()}}),I=h.length>1,O=c.useCallback(()=>{$(),A.togglePlay(h.currentSong.url)},[A,$,h.currentSong.url]),{prioritize:Q}=h,Y=c.useCallback(N=>{$(),Q(N)},[$,Q]),[Z,oe]=c.useState(()=>I&&!y),[F,ee]=c.useState(!0),z=c.useRef(null);c.useEffect(()=>{p&&A.playAudio(h.currentSong.url)},[]);const U=c.useRef(!0),W=c.useRef(h.currentSong);return c.useEffect(()=>{if(U.current){U.current=!1;return}if(k.current){k.current=!1;return}h.currentSong&&(h.loop==="one"||h.currentSong!==W.current)&&(W.current=h.currentSong,A.playAudio(h.currentSong.url))},[h.currentSong]),c.useEffect(()=>{if(n==="fixed"&&z.current){const N=z.current;return N.style.width="400px",()=>{N.removeAttribute("style")}}},[n]),{bodyRef:z,appearance:n,volume:f,listMaxHeight:i,theme:v,border:E,notice:u,audioControl:A,audio:g,handlePlayButtonClick:O,handlePlayAudioFromList:Y,isPlaylistOpen:Z,setPlaylistOpen:oe,mini:b,displayLyrics:F,setDisplayLyrics:ee,setMini:_,playlist:h,hasPlaylist:I}}function Rt(e){return Lt(e.slice())}function Lt(e){let t=e.length,r;for(;t!==0;)r=Math.floor(Math.random()*t),t--,[e[t],e[r]]=[e[r],e[t]];return e}function At(e,t){const{initialLoop:r="all",initialOrder:n="list"}=t,[a,s]=c.useState(r),[f,p]=c.useState(n),i=c.useMemo(()=>f==="list"?e:Rt(e),[e,f]),[y,l]=c.useState(i[0]),v=c.useCallback(m=>m.url,[]),E=c.useMemo(()=>i.findIndex(b=>v(b)===v(y))<i.length-1||a!=="none",[i,y,a,v]),g=c.useCallback(()=>{l(m=>{const b=i.findIndex(_=>v(_)===v(m));return b<i.length-1?i[b+1]:{...i[0]}})},[a,i,v]),h=c.useCallback(()=>{l(m=>{const b=i.indexOf(m);return b>0?i[b-1]:m})},[i]),u=c.useCallback(m=>{l(m)},[]);return c.useEffect(()=>{const m=i.find(b=>v(b)===v(y));l(m||i[0])},[i,v,y]),{list:i,currentSong:y,hasNextSong:E,next:g,previous:h,prioritize:u,order:f,setOrder:p,loop:a,setLoop:s,length:i.length}}function Pt(e){var k,A,I;const t=q("aplayer"),{bodyRef:r,appearance:n,volume:a,listMaxHeight:s,theme:f,border:p,notice:i,audio:y,audioControl:l,handlePlayButtonClick:v,handlePlayAudioFromList:E,isPlaylistOpen:g,setPlaylistOpen:h,mini:u,displayLyrics:m,setDisplayLyrics:b,setMini:_,playlist:S,hasPlaylist:j}=Ot(e),$=c.useCallback(O=>O?typeof O=="string"?O:O.url?d.jsx("a",{href:O.url,target:"_blank",rel:"noreferrer",children:O.name??"Audio artist"}):O.name??"Audio artist":"Audio artist",[]);return d.jsxs("div",{className:w(t.b(),{[t.bs(f)]:!0,[t.bs("vars")]:!0,[t.bm(n)]:!0,[t.bm("loading")]:l.isLoading,[t.bm("withlist")]:j,[t.bm("list-folded")]:!g,[t.bm("withlrc")]:!!S.currentSong.lrc&&n!=="fixed",[t.bm("narrow")]:u,[t.bm("border")]:p}),role:"region","aria-label":"Audio Player",children:[d.jsxs("div",{ref:r,className:t.be("body"),children:[d.jsx("div",{className:t.be("pic"),onClick:v,style:{backgroundImage:`url("${(k=S.currentSong)==null?void 0:k.cover}")`},role:"button","aria-label":l.isPlaying?"Pause audio":"Play audio",children:d.jsx("div",{className:w(t.be("button"),l.isPlaying?t.bm("pause"):t.bm("play")),role:"presentation",children:l.isPlaying?d.jsx(et,{}):d.jsx(mt,{})})}),d.jsxs("div",{className:w(t.be("info")),children:[d.jsxs("div",{className:w(t.be("music")),children:[d.jsx("span",{className:w(t.be("title")),children:((A=S.currentSong)==null?void 0:A.name)??"Audio name"}),d.jsxs("span",{className:w(t.be("author")),children:[" ","-"," ",$((I=S.currentSong)==null?void 0:I.artist)]})]}),n==="fixed"?null:d.jsx(Se,{show:m,lrcText:S.currentSong.lrc,currentTime:l.currentTime??0}),d.jsx(ht,{volume:l.volume??a,onChangeVolume:l.setVolume,muted:l.muted??!1,onToggleMuted:()=>l.toggleMuted(),currentTime:l.currentTime,audioDurationSeconds:l.duration,bufferedSeconds:l.bufferedSeconds,onSeek:O=>l.seek(O),onToggleMenu:()=>h(O=>!O),order:S.order,onOrderChange:S.setOrder,loop:S.loop,onLoopChange:S.setLoop,isPlaying:l.isPlaying??!1,onTogglePlay:v,onSkipForward:()=>{S.hasNextSong&&S.next()},onSkipBack:()=>{S.previous()},showLyrics:m,onToggleLyrics:()=>{b(O=>!O)}})]}),d.jsx("div",{className:t.be("notice"),style:i.style,children:i.text}),d.jsx("div",{className:t.be("miniswitcher"),onClick:()=>_(O=>!O),children:d.jsx("button",{className:w(t.bs("icon"),t.bs("icon-right")),type:"button",children:d.jsx(Ze,{})})})]}),j?d.jsx(yt,{open:g,audio:y,playingAudioUrl:S.currentSong.url,onPlayAudio:E,listMaxHeight:s,mini:u}):null,n==="fixed"&&d.jsx(Se,{show:m,lrcText:S.currentSong.lrc,currentTime:l.currentTime??0})]})}exports.TwistAPlayer=Pt;
42
+ */var je;function Et(){return je||(je=1,process.env.NODE_ENV!=="production"&&function(){function e(g,h){return g===h&&(g!==0||1/g===1/h)||g!==g&&h!==h}function t(g,h){l||a.startTransition===void 0||(l=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var u=h();if(!v){var m=h();s(u,m)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),v=!0)}m=f({inst:{value:u,getSnapshot:h}});var b=m[0].inst,_=m[1];return i(function(){b.value=u,b.getSnapshot=h,r(b)&&_({inst:b})},[g,u,h]),p(function(){return r(b)&&_({inst:b}),g(function(){r(b)&&_({inst:b})})},[g]),y(u),u}function r(g){var h=g.getSnapshot;g=g.value;try{var u=h();return!s(g,u)}catch{return!0}}function n(g,h){return h()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=c,s=typeof Object.is=="function"?Object.is:e,f=a.useState,p=a.useEffect,i=a.useLayoutEffect,y=a.useDebugValue,l=!1,v=!1,E=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?n:t;de.useSyncExternalStore=a.useSyncExternalStore!==void 0?a.useSyncExternalStore:E,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),de}var we;function xt(){return we||(we=1,process.env.NODE_ENV==="production"?ne.exports=gt():ne.exports=Et()),ne.exports}var V=xt();const B=[];function St(e){const t=c.useRef(null);return c.useEffect(()=>{if(typeof window<"u"&&!t.current){const r=t.current=document.createElement("audio");typeof(e==null?void 0:e.src)<"u"&&(r.src=e.src),typeof(e==null?void 0:e.autoPlay)<"u"&&(r.autoplay=e.autoPlay),typeof(e==null?void 0:e.initialVolume)<"u"&&(r.volume=e.initialVolume),B.includes(r)||B.push(r)}},[e==null?void 0:e.autoPlay,e==null?void 0:e.initialVolume,e==null?void 0:e.src]),c.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onError))return r.addEventListener("error",e.onError),()=>{r.removeEventListener("error",e.onError)}},[e==null?void 0:e.onError]),c.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onEnded))return r.addEventListener("ended",e.onEnded),()=>{r.removeEventListener("ended",e.onEnded)}},[e==null?void 0:e.onEnded]),c.useEffect(()=>()=>{const r=t.current;if(r){r.pause(),r.currentTime=0;const n=B.indexOf(r);n!==-1&&B.splice(n,1)}t.current=null},[]),t}function Tt(e){const t=St(e),r=c.useCallback(u=>{for(let m=0;m<B.length;m++){const b=B[m];b!==u&&!b.paused&&b.pause()}},[]),n=c.useCallback(async u=>{var b;const m=t.current;if(m){e.mutex&&r(m),m.src!==u&&(m.pause(),m.currentTime=0,m.src=u);try{await((b=t.current)==null?void 0:b.play())}catch{}}},[t,e.mutex,r]),a=c.useCallback(u=>{const m=t.current;m&&(m.paused?n(u):m.pause())},[t,n]),s=c.useCallback(u=>{t.current.currentTime=u},[t]),f=c.useCallback(()=>{t.current&&(t.current.muted=!t.current.muted)},[t]),p=c.useCallback(u=>{t.current&&(t.current.volume=u)},[t]),i=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("volumechange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.volume},()=>{}),y=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("volumechange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.muted},()=>{}),l=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("timeupdate",u),()=>{var b;(b=t.current)==null||b.removeEventListener("timeupdate",u)}},[t]),()=>{if(t.current)return Math.round(t.current.currentTime)},()=>{}),v=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("durationchange",u),()=>{var b;(b=t.current)==null||b.removeEventListener("durationchange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.duration},()=>{}),E=V.useSyncExternalStore(c.useCallback(u=>{var m;return(m=t.current)==null||m.addEventListener("progress",u),()=>{var b;(b=t.current)==null||b.removeEventListener("progress",u)}},[t]),()=>{const u=t.current;return u&&u.buffered.length>0?u.buffered.end(u.buffered.length-1):0},()=>{}),g=V.useSyncExternalStore(c.useCallback(u=>{var m,b;return(m=t.current)==null||m.addEventListener("play",u),(b=t.current)==null||b.addEventListener("pause",u),()=>{var _,S;(_=t.current)==null||_.removeEventListener("play",u),(S=t.current)==null||S.removeEventListener("pause",u)}},[t]),()=>{const u=t.current;return u?!u.paused:!1},()=>{}),h=V.useSyncExternalStore(c.useCallback(u=>{var m,b;return(m=t.current)==null||m.addEventListener("playing",u),(b=t.current)==null||b.addEventListener("waiting",u),()=>{var _,S;(_=t.current)==null||_.removeEventListener("playing",u),(S=t.current)==null||S.removeEventListener("waiting",u)}},[t]),()=>{const u=t.current;return u?u.networkState===u.NETWORK_LOADING:!1},()=>{});return{audio:t.current,playAudio:n,togglePlay:a,seek:s,toggleMuted:f,setVolume:p,volume:i,muted:y,currentTime:l,duration:v,bufferedSeconds:E,isPlaying:g,isLoading:h}}function jt(e,t){return c.useMemo(()=>{const r={...t};for(const n in e)e[n]!==void 0&&(r[n]=e[n]);return r},[e,t])}function wt(e){const[t,r]=c.useState(e);return c.useEffect(()=>{r(e)},[e]),{mini:t,setMini:r}}function Ae(){const e=c.useRef([]);return c.useEffect(()=>{const r=e.current;return()=>{for(const n of r)clearTimeout(n)}},[]),c.useCallback((r,n)=>{const a=setTimeout(r,n);return e.current.push(a),a},[])}function _t(){const e=c.useRef(null),[t,r]=c.useState({text:"",style:{opacity:0}}),n=Ae(),a=c.useCallback((s,f=2e3)=>{e.current&&clearTimeout(e.current),r({text:s,style:{opacity:1}}),e.current=n(()=>{r({text:s,style:{opacity:0}})},f)},[n]);return[t,a]}function Ot(e){const t=jt(e,{appearance:"normal",volume:.7,autoPlay:!1,listMaxHeight:250,mini:!1,mutex:!0,listFolded:!1,theme:"light",border:!1}),{audio:r,appearance:n,initialLoop:a,initialOrder:s,volume:f,autoPlay:p,listMaxHeight:i,listFolded:y,mutex:l,theme:v,border:E}=t,g=c.useMemo(()=>Array.isArray(r)?r:[r],[r]),h=At(g,{initialLoop:a,initialOrder:s}),[u,m]=_t(),{mini:b,setMini:_}=wt(t.mini),S=Ae(),j=c.useRef(null),$=c.useCallback(()=>{j.current&&(clearTimeout(j.current),j.current=null)},[]),k=c.useRef(!1),A=Tt({src:h.currentSong.url,initialVolume:f,autoPlay:p,mutex:l,onError(N){const{error:o}=N.target;o&&m("An audio error has occurred, player will skip forward in 2 seconds."),h.hasNextSong&&(j.current=S(()=>{h.next()},2e3))},onEnded(){const{list:N,currentSong:o,loop:x,prioritize:T,hasNextSong:R}=h,{audio:C}=A;if(x==="one"){T({...o});return}if(!R&&x==="none"){k.current=!0,C.currentTime=0,C.pause(),C.src=N[0].url,T(N[0]);return}h.next()}}),I=h.length>1,O=c.useCallback(()=>{$(),A.togglePlay(h.currentSong.url)},[A,$,h.currentSong.url]),{prioritize:Q}=h,Y=c.useCallback(N=>{$(),Q(N)},[$,Q]),[Z,oe]=c.useState(()=>I&&!y),[F,ee]=c.useState(n!=="fixed"),z=c.useRef(null);c.useEffect(()=>{p&&A.playAudio(h.currentSong.url)},[]);const U=c.useRef(!0),W=c.useRef(h.currentSong);return c.useEffect(()=>{if(U.current){U.current=!1;return}if(k.current){k.current=!1;return}h.currentSong&&(h.loop==="one"||h.currentSong!==W.current)&&(W.current=h.currentSong,A.playAudio(h.currentSong.url))},[h.currentSong]),c.useEffect(()=>{if(n==="fixed"&&z.current){const N=z.current;return N.style.width="400px",()=>{N.removeAttribute("style")}}},[n]),{bodyRef:z,appearance:n,volume:f,listMaxHeight:i,theme:v,border:E,notice:u,audioControl:A,audio:g,handlePlayButtonClick:O,handlePlayAudioFromList:Y,isPlaylistOpen:Z,setPlaylistOpen:oe,mini:b,displayLyrics:F,setDisplayLyrics:ee,setMini:_,playlist:h,hasPlaylist:I}}function Rt(e){return Lt(e.slice())}function Lt(e){let t=e.length,r;for(;t!==0;)r=Math.floor(Math.random()*t),t--,[e[t],e[r]]=[e[r],e[t]];return e}function At(e,t){const{initialLoop:r="all",initialOrder:n="list"}=t,[a,s]=c.useState(r),[f,p]=c.useState(n),i=c.useMemo(()=>f==="list"?e:Rt(e),[e,f]),[y,l]=c.useState(i[0]),v=c.useCallback(m=>m.url,[]),E=c.useMemo(()=>i.findIndex(b=>v(b)===v(y))<i.length-1||a!=="none",[i,y,a,v]),g=c.useCallback(()=>{l(m=>{const b=i.findIndex(_=>v(_)===v(m));return b<i.length-1?i[b+1]:{...i[0]}})},[a,i,v]),h=c.useCallback(()=>{l(m=>{const b=i.indexOf(m);return b>0?i[b-1]:m})},[i]),u=c.useCallback(m=>{l(m)},[]);return c.useEffect(()=>{const m=i.find(b=>v(b)===v(y));l(m||i[0])},[i,v,y]),{list:i,currentSong:y,hasNextSong:E,next:g,previous:h,prioritize:u,order:f,setOrder:p,loop:a,setLoop:s,length:i.length}}function Pt(e){var k,A,I;const t=q("aplayer"),{bodyRef:r,appearance:n,volume:a,listMaxHeight:s,theme:f,border:p,notice:i,audio:y,audioControl:l,handlePlayButtonClick:v,handlePlayAudioFromList:E,isPlaylistOpen:g,setPlaylistOpen:h,mini:u,displayLyrics:m,setDisplayLyrics:b,setMini:_,playlist:S,hasPlaylist:j}=Ot(e),$=c.useCallback(O=>O?typeof O=="string"?O:O.url?d.jsx("a",{href:O.url,target:"_blank",rel:"noreferrer",children:O.name??"Audio artist"}):O.name??"Audio artist":"Audio artist",[]);return d.jsxs("div",{className:w(t.b(),{[t.bs(f)]:!0,[t.bs("vars")]:!0,[t.bm(n)]:!0,[t.bm("loading")]:l.isLoading,[t.bm("withlist")]:j,[t.bm("list-folded")]:!g,[t.bm("withlrc")]:!!S.currentSong.lrc&&n!=="fixed",[t.bm("narrow")]:u,[t.bm("border")]:p}),role:"region","aria-label":"Audio Player",children:[d.jsxs("div",{ref:r,className:t.be("body"),children:[d.jsx("div",{className:t.be("pic"),onClick:v,style:{backgroundImage:`url("${(k=S.currentSong)==null?void 0:k.cover}")`},role:"button","aria-label":l.isPlaying?"Pause audio":"Play audio",children:d.jsx("div",{className:w(t.be("button"),l.isPlaying?t.bm("pause"):t.bm("play")),role:"presentation",children:l.isPlaying?d.jsx(et,{}):d.jsx(mt,{})})}),d.jsxs("div",{className:w(t.be("info")),children:[d.jsxs("div",{className:w(t.be("music")),children:[d.jsx("span",{className:w(t.be("title")),children:((A=S.currentSong)==null?void 0:A.name)??"Audio name"}),d.jsxs("span",{className:w(t.be("author")),children:[" ","-"," ",$((I=S.currentSong)==null?void 0:I.artist)]})]}),n==="fixed"?null:d.jsx(Se,{show:m,lrcText:S.currentSong.lrc,currentTime:l.currentTime??0}),d.jsx(ht,{volume:l.volume??a,onChangeVolume:l.setVolume,muted:l.muted??!1,onToggleMuted:()=>l.toggleMuted(),currentTime:l.currentTime,audioDurationSeconds:l.duration,bufferedSeconds:l.bufferedSeconds,onSeek:O=>l.seek(O),onToggleMenu:()=>h(O=>!O),order:S.order,onOrderChange:S.setOrder,loop:S.loop,onLoopChange:S.setLoop,isPlaying:l.isPlaying??!1,onTogglePlay:v,onSkipForward:()=>{S.hasNextSong&&S.next()},onSkipBack:()=>{S.previous()},showLyrics:m,onToggleLyrics:()=>{b(O=>!O)}})]}),d.jsx("div",{className:t.be("notice"),style:i.style,children:i.text}),d.jsx("div",{className:t.be("miniswitcher"),onClick:()=>_(O=>!O),children:d.jsx("button",{className:w(t.bs("icon"),t.bs("icon-right")),type:"button",children:d.jsx(Ze,{})})})]}),j?d.jsx(yt,{open:g,audio:y,playingAudioUrl:S.currentSong.url,onPlayAudio:E,listMaxHeight:s,mini:u}):null,n==="fixed"&&d.jsx(Se,{show:m,lrcText:S.currentSong.lrc,currentTime:l.currentTime??0})]})}exports.TwistAPlayer=Pt;
package/dist/index.mjs CHANGED
@@ -1437,7 +1437,7 @@ function Nt(e) {
1437
1437
  C(), re(P);
1438
1438
  },
1439
1439
  [C, re]
1440
- ), [ne, ce] = V(() => D && !y), [J, ae] = V(!0), Y = M(null);
1440
+ ), [ne, ce] = V(() => D && !y), [J, ae] = V(n !== "fixed"), Y = M(null);
1441
1441
  q(() => {
1442
1442
  b && A.playAudio(h.currentSong.url);
1443
1443
  }, []);
@@ -39,4 +39,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
39
39
  *
40
40
  * This source code is licensed under the MIT license found in the
41
41
  * LICENSE file in the root directory of this source tree.
42
- */return e.NODE_ENV!=="production"&&function(){function t(b,u){return b===u&&(b!==0||1/b===1/u)||b!==b&&u!==u}function r(b,u){v||i.startTransition===void 0||(v=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var c=u();if(!g){var y=u();f(c,y)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),g=!0)}y=p({inst:{value:c,getSnapshot:u}});var w=y[0].inst,S=y[1];return h(function(){w.value=c,w.getSnapshot=u,n(w)&&S({inst:w})},[b,c,u]),l(function(){return n(w)&&S({inst:w}),b(function(){n(w)&&S({inst:w})})},[b]),d(c),c}function n(b){var u=b.getSnapshot;b=b.value;try{var c=u();return!f(b,c)}catch{return!0}}function a(b,u){return u()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var i=s,f=typeof Object.is=="function"?Object.is:t,p=i.useState,l=i.useEffect,h=i.useLayoutEffect,d=i.useDebugValue,v=!1,g=!1,x=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?a:r;ce.useSyncExternalStore=i.useSyncExternalStore!==void 0?i.useSyncExternalStore:x,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}(),ce}var Ne;function St(){if(Ne)return ne.exports;Ne=1;var e={};return e.NODE_ENV==="production"?ne.exports=Et():ne.exports=xt(),ne.exports}var R=St();const B=[];function Tt(e){const t=s.useRef(null);return s.useEffect(()=>{if(typeof window<"u"&&!t.current){const r=t.current=document.createElement("audio");typeof(e==null?void 0:e.src)<"u"&&(r.src=e.src),typeof(e==null?void 0:e.autoPlay)<"u"&&(r.autoplay=e.autoPlay),typeof(e==null?void 0:e.initialVolume)<"u"&&(r.volume=e.initialVolume),B.includes(r)||B.push(r)}},[e==null?void 0:e.autoPlay,e==null?void 0:e.initialVolume,e==null?void 0:e.src]),s.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onError))return r.addEventListener("error",e.onError),()=>{r.removeEventListener("error",e.onError)}},[e==null?void 0:e.onError]),s.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onEnded))return r.addEventListener("ended",e.onEnded),()=>{r.removeEventListener("ended",e.onEnded)}},[e==null?void 0:e.onEnded]),s.useEffect(()=>()=>{const r=t.current;if(r){r.pause(),r.currentTime=0;const n=B.indexOf(r);n!==-1&&B.splice(n,1)}t.current=null},[]),t}function _t(e){const t=Tt(e),r=s.useCallback(u=>{for(let c=0;c<B.length;c++){const y=B[c];y!==u&&!y.paused&&y.pause()}},[]),n=s.useCallback(async u=>{var y;const c=t.current;if(c){e.mutex&&r(c),c.src!==u&&(c.pause(),c.currentTime=0,c.src=u);try{await((y=t.current)==null?void 0:y.play())}catch{}}},[t,e.mutex,r]),a=s.useCallback(u=>{const c=t.current;c&&(c.paused?n(u):c.pause())},[t,n]),i=s.useCallback(u=>{t.current.currentTime=u},[t]),f=s.useCallback(()=>{t.current&&(t.current.muted=!t.current.muted)},[t]),p=s.useCallback(u=>{t.current&&(t.current.volume=u)},[t]),l=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("volumechange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.volume},()=>{}),h=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("volumechange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.muted},()=>{}),d=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("timeupdate",u),()=>{var y;(y=t.current)==null||y.removeEventListener("timeupdate",u)}},[t]),()=>{if(t.current)return Math.round(t.current.currentTime)},()=>{}),v=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("durationchange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("durationchange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.duration},()=>{}),g=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("progress",u),()=>{var y;(y=t.current)==null||y.removeEventListener("progress",u)}},[t]),()=>{const u=t.current;return u&&u.buffered.length>0?u.buffered.end(u.buffered.length-1):0},()=>{}),x=R.useSyncExternalStore(s.useCallback(u=>{var c,y;return(c=t.current)==null||c.addEventListener("play",u),(y=t.current)==null||y.addEventListener("pause",u),()=>{var w,S;(w=t.current)==null||w.removeEventListener("play",u),(S=t.current)==null||S.removeEventListener("pause",u)}},[t]),()=>{const u=t.current;return u?!u.paused:!1},()=>{}),b=R.useSyncExternalStore(s.useCallback(u=>{var c,y;return(c=t.current)==null||c.addEventListener("playing",u),(y=t.current)==null||y.addEventListener("waiting",u),()=>{var w,S;(w=t.current)==null||w.removeEventListener("playing",u),(S=t.current)==null||S.removeEventListener("waiting",u)}},[t]),()=>{const u=t.current;return u?u.networkState===u.NETWORK_LOADING:!1},()=>{});return{audio:t.current,playAudio:n,togglePlay:a,seek:i,toggleMuted:f,setVolume:p,volume:l,muted:h,currentTime:d,duration:v,bufferedSeconds:g,isPlaying:x,isLoading:b}}function jt(e,t){return s.useMemo(()=>{const r={...t};for(const n in e)e[n]!==void 0&&(r[n]=e[n]);return r},[e,t])}function wt(e){const[t,r]=s.useState(e);return s.useEffect(()=>{r(e)},[e]),{mini:t,setMini:r}}function Ce(){const e=s.useRef([]);return s.useEffect(()=>{const r=e.current;return()=>{for(const n of r)clearTimeout(n)}},[]),s.useCallback((r,n)=>{const a=setTimeout(r,n);return e.current.push(a),a},[])}function Ot(){const e=s.useRef(null),[t,r]=s.useState({text:"",style:{opacity:0}}),n=Ce(),a=s.useCallback((i,f=2e3)=>{e.current&&clearTimeout(e.current),r({text:i,style:{opacity:1}}),e.current=n(()=>{r({text:i,style:{opacity:0}})},f)},[n]);return[t,a]}function Lt(e){const t=jt(e,{appearance:"normal",volume:.7,autoPlay:!1,listMaxHeight:250,mini:!1,mutex:!0,listFolded:!1,theme:"light",border:!1}),{audio:r,appearance:n,initialLoop:a,initialOrder:i,volume:f,autoPlay:p,listMaxHeight:l,listFolded:h,mutex:d,theme:v,border:g}=t,x=s.useMemo(()=>Array.isArray(r)?r:[r],[r]),b=Nt(x,{initialLoop:a,initialOrder:i}),[u,c]=Ot(),{mini:y,setMini:w}=wt(t.mini),S=Ce(),T=s.useRef(null),$=s.useCallback(()=>{T.current&&(clearTimeout(T.current),T.current=null)},[]),k=s.useRef(!1),P=_t({src:b.currentSong.url,initialVolume:f,autoPlay:p,mutex:d,onError(C){const{error:Y}=C.target;Y&&c("An audio error has occurred, player will skip forward in 2 seconds."),b.hasNextSong&&(T.current=S(()=>{b.next()},2e3))},onEnded(){const{list:C,currentSong:Y,loop:o,prioritize:E,hasNextSong:_}=b,{audio:L}=P;if(o==="one"){E({...Y});return}if(!_&&o==="none"){k.current=!0,L.currentTime=0,L.pause(),L.src=C[0].url,E(C[0]);return}b.next()}}),z=b.length>1,O=s.useCallback(()=>{$(),P.togglePlay(b.currentSong.url)},[P,$,b.currentSong.url]),{prioritize:ae}=b,fe=s.useCallback(C=>{$(),ae(C)},[$,ae]),[K,ue]=s.useState(()=>z&&!h),[de,X]=s.useState(!0),H=s.useRef(null);s.useEffect(()=>{p&&P.playAudio(b.currentSong.url)},[]);const Q=s.useRef(!0),Z=s.useRef(b.currentSong);return s.useEffect(()=>{if(Q.current){Q.current=!1;return}if(k.current){k.current=!1;return}b.currentSong&&(b.loop==="one"||b.currentSong!==Z.current)&&(Z.current=b.currentSong,P.playAudio(b.currentSong.url))},[b.currentSong]),s.useEffect(()=>{if(n==="fixed"&&H.current){const C=H.current;return C.style.width="400px",()=>{C.removeAttribute("style")}}},[n]),{bodyRef:H,appearance:n,volume:f,listMaxHeight:l,theme:v,border:g,notice:u,audioControl:P,audio:x,handlePlayButtonClick:O,handlePlayAudioFromList:fe,isPlaylistOpen:K,setPlaylistOpen:ue,mini:y,displayLyrics:de,setDisplayLyrics:X,setMini:w,playlist:b,hasPlaylist:z}}function At(e){return Pt(e.slice())}function Pt(e){let t=e.length,r;for(;t!==0;)r=Math.floor(Math.random()*t),t--,[e[t],e[r]]=[e[r],e[t]];return e}function Nt(e,t){const{initialLoop:r="all",initialOrder:n="list"}=t,[a,i]=s.useState(r),[f,p]=s.useState(n),l=s.useMemo(()=>f==="list"?e:At(e),[e,f]),[h,d]=s.useState(l[0]),v=s.useCallback(c=>c.url,[]),g=s.useMemo(()=>l.findIndex(y=>v(y)===v(h))<l.length-1||a!=="none",[l,h,a,v]),x=s.useCallback(()=>{d(c=>{const y=l.findIndex(w=>v(w)===v(c));return y<l.length-1?l[y+1]:{...l[0]}})},[a,l,v]),b=s.useCallback(()=>{d(c=>{const y=l.indexOf(c);return y>0?l[y-1]:c})},[l]),u=s.useCallback(c=>{d(c)},[]);return s.useEffect(()=>{const c=l.find(y=>v(y)===v(h));d(c||l[0])},[l,v,h]),{list:l,currentSong:h,hasNextSong:g,next:x,previous:b,prioritize:u,order:f,setOrder:p,loop:a,setLoop:i,length:l.length}}function Ct(e){var k,P,z;const t=q("aplayer"),{bodyRef:r,appearance:n,volume:a,listMaxHeight:i,theme:f,border:p,notice:l,audio:h,audioControl:d,handlePlayButtonClick:v,handlePlayAudioFromList:g,isPlaylistOpen:x,setPlaylistOpen:b,mini:u,displayLyrics:c,setDisplayLyrics:y,setMini:w,playlist:S,hasPlaylist:T}=Lt(e),$=s.useCallback(O=>O?typeof O=="string"?O:O.url?m.jsx("a",{href:O.url,target:"_blank",rel:"noreferrer",children:O.name??"Audio artist"}):O.name??"Audio artist":"Audio artist",[]);return m.jsxs("div",{className:j(t.b(),{[t.bs(f)]:!0,[t.bs("vars")]:!0,[t.bm(n)]:!0,[t.bm("loading")]:d.isLoading,[t.bm("withlist")]:T,[t.bm("list-folded")]:!x,[t.bm("withlrc")]:!!S.currentSong.lrc&&n!=="fixed",[t.bm("narrow")]:u,[t.bm("border")]:p}),role:"region","aria-label":"Audio Player",children:[m.jsxs("div",{ref:r,className:t.be("body"),children:[m.jsx("div",{className:t.be("pic"),onClick:v,style:{backgroundImage:`url("${(k=S.currentSong)==null?void 0:k.cover}")`},role:"button","aria-label":d.isPlaying?"Pause audio":"Play audio",children:m.jsx("div",{className:j(t.be("button"),d.isPlaying?t.bm("pause"):t.bm("play")),role:"presentation",children:d.isPlaying?m.jsx(tt,{}):m.jsx(vt,{})})}),m.jsxs("div",{className:j(t.be("info")),children:[m.jsxs("div",{className:j(t.be("music")),children:[m.jsx("span",{className:j(t.be("title")),children:((P=S.currentSong)==null?void 0:P.name)??"Audio name"}),m.jsxs("span",{className:j(t.be("author")),children:[" ","-"," ",$((z=S.currentSong)==null?void 0:z.artist)]})]}),n==="fixed"?null:m.jsx(Le,{show:c,lrcText:S.currentSong.lrc,currentTime:d.currentTime??0}),m.jsx(yt,{volume:d.volume??a,onChangeVolume:d.setVolume,muted:d.muted??!1,onToggleMuted:()=>d.toggleMuted(),currentTime:d.currentTime,audioDurationSeconds:d.duration,bufferedSeconds:d.bufferedSeconds,onSeek:O=>d.seek(O),onToggleMenu:()=>b(O=>!O),order:S.order,onOrderChange:S.setOrder,loop:S.loop,onLoopChange:S.setLoop,isPlaying:d.isPlaying??!1,onTogglePlay:v,onSkipForward:()=>{S.hasNextSong&&S.next()},onSkipBack:()=>{S.previous()},showLyrics:c,onToggleLyrics:()=>{y(O=>!O)}})]}),m.jsx("div",{className:t.be("notice"),style:l.style,children:l.text}),m.jsx("div",{className:t.be("miniswitcher"),onClick:()=>w(O=>!O),children:m.jsx("button",{className:j(t.bs("icon"),t.bs("icon-right")),type:"button",children:m.jsx(et,{})})})]}),T?m.jsx(pt,{open:x,audio:h,playingAudioUrl:S.currentSong.url,onPlayAudio:g,listMaxHeight:i,mini:u}):null,n==="fixed"&&m.jsx(Le,{show:c,lrcText:S.currentSong.lrc,currentTime:d.currentTime??0})]})}V.TwistAPlayer=Ct,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})});
42
+ */return e.NODE_ENV!=="production"&&function(){function t(b,u){return b===u&&(b!==0||1/b===1/u)||b!==b&&u!==u}function r(b,u){v||i.startTransition===void 0||(v=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var c=u();if(!g){var y=u();f(c,y)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),g=!0)}y=p({inst:{value:c,getSnapshot:u}});var w=y[0].inst,S=y[1];return h(function(){w.value=c,w.getSnapshot=u,n(w)&&S({inst:w})},[b,c,u]),l(function(){return n(w)&&S({inst:w}),b(function(){n(w)&&S({inst:w})})},[b]),d(c),c}function n(b){var u=b.getSnapshot;b=b.value;try{var c=u();return!f(b,c)}catch{return!0}}function a(b,u){return u()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var i=s,f=typeof Object.is=="function"?Object.is:t,p=i.useState,l=i.useEffect,h=i.useLayoutEffect,d=i.useDebugValue,v=!1,g=!1,x=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?a:r;ce.useSyncExternalStore=i.useSyncExternalStore!==void 0?i.useSyncExternalStore:x,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}(),ce}var Ne;function St(){if(Ne)return ne.exports;Ne=1;var e={};return e.NODE_ENV==="production"?ne.exports=Et():ne.exports=xt(),ne.exports}var R=St();const B=[];function Tt(e){const t=s.useRef(null);return s.useEffect(()=>{if(typeof window<"u"&&!t.current){const r=t.current=document.createElement("audio");typeof(e==null?void 0:e.src)<"u"&&(r.src=e.src),typeof(e==null?void 0:e.autoPlay)<"u"&&(r.autoplay=e.autoPlay),typeof(e==null?void 0:e.initialVolume)<"u"&&(r.volume=e.initialVolume),B.includes(r)||B.push(r)}},[e==null?void 0:e.autoPlay,e==null?void 0:e.initialVolume,e==null?void 0:e.src]),s.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onError))return r.addEventListener("error",e.onError),()=>{r.removeEventListener("error",e.onError)}},[e==null?void 0:e.onError]),s.useEffect(()=>{if(typeof window>"u")return;const r=t.current;if(r&&(e!=null&&e.onEnded))return r.addEventListener("ended",e.onEnded),()=>{r.removeEventListener("ended",e.onEnded)}},[e==null?void 0:e.onEnded]),s.useEffect(()=>()=>{const r=t.current;if(r){r.pause(),r.currentTime=0;const n=B.indexOf(r);n!==-1&&B.splice(n,1)}t.current=null},[]),t}function _t(e){const t=Tt(e),r=s.useCallback(u=>{for(let c=0;c<B.length;c++){const y=B[c];y!==u&&!y.paused&&y.pause()}},[]),n=s.useCallback(async u=>{var y;const c=t.current;if(c){e.mutex&&r(c),c.src!==u&&(c.pause(),c.currentTime=0,c.src=u);try{await((y=t.current)==null?void 0:y.play())}catch{}}},[t,e.mutex,r]),a=s.useCallback(u=>{const c=t.current;c&&(c.paused?n(u):c.pause())},[t,n]),i=s.useCallback(u=>{t.current.currentTime=u},[t]),f=s.useCallback(()=>{t.current&&(t.current.muted=!t.current.muted)},[t]),p=s.useCallback(u=>{t.current&&(t.current.volume=u)},[t]),l=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("volumechange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.volume},()=>{}),h=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("volumechange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("volumechange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.muted},()=>{}),d=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("timeupdate",u),()=>{var y;(y=t.current)==null||y.removeEventListener("timeupdate",u)}},[t]),()=>{if(t.current)return Math.round(t.current.currentTime)},()=>{}),v=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("durationchange",u),()=>{var y;(y=t.current)==null||y.removeEventListener("durationchange",u)}},[t]),()=>{var u;return(u=t.current)==null?void 0:u.duration},()=>{}),g=R.useSyncExternalStore(s.useCallback(u=>{var c;return(c=t.current)==null||c.addEventListener("progress",u),()=>{var y;(y=t.current)==null||y.removeEventListener("progress",u)}},[t]),()=>{const u=t.current;return u&&u.buffered.length>0?u.buffered.end(u.buffered.length-1):0},()=>{}),x=R.useSyncExternalStore(s.useCallback(u=>{var c,y;return(c=t.current)==null||c.addEventListener("play",u),(y=t.current)==null||y.addEventListener("pause",u),()=>{var w,S;(w=t.current)==null||w.removeEventListener("play",u),(S=t.current)==null||S.removeEventListener("pause",u)}},[t]),()=>{const u=t.current;return u?!u.paused:!1},()=>{}),b=R.useSyncExternalStore(s.useCallback(u=>{var c,y;return(c=t.current)==null||c.addEventListener("playing",u),(y=t.current)==null||y.addEventListener("waiting",u),()=>{var w,S;(w=t.current)==null||w.removeEventListener("playing",u),(S=t.current)==null||S.removeEventListener("waiting",u)}},[t]),()=>{const u=t.current;return u?u.networkState===u.NETWORK_LOADING:!1},()=>{});return{audio:t.current,playAudio:n,togglePlay:a,seek:i,toggleMuted:f,setVolume:p,volume:l,muted:h,currentTime:d,duration:v,bufferedSeconds:g,isPlaying:x,isLoading:b}}function jt(e,t){return s.useMemo(()=>{const r={...t};for(const n in e)e[n]!==void 0&&(r[n]=e[n]);return r},[e,t])}function wt(e){const[t,r]=s.useState(e);return s.useEffect(()=>{r(e)},[e]),{mini:t,setMini:r}}function Ce(){const e=s.useRef([]);return s.useEffect(()=>{const r=e.current;return()=>{for(const n of r)clearTimeout(n)}},[]),s.useCallback((r,n)=>{const a=setTimeout(r,n);return e.current.push(a),a},[])}function Ot(){const e=s.useRef(null),[t,r]=s.useState({text:"",style:{opacity:0}}),n=Ce(),a=s.useCallback((i,f=2e3)=>{e.current&&clearTimeout(e.current),r({text:i,style:{opacity:1}}),e.current=n(()=>{r({text:i,style:{opacity:0}})},f)},[n]);return[t,a]}function Lt(e){const t=jt(e,{appearance:"normal",volume:.7,autoPlay:!1,listMaxHeight:250,mini:!1,mutex:!0,listFolded:!1,theme:"light",border:!1}),{audio:r,appearance:n,initialLoop:a,initialOrder:i,volume:f,autoPlay:p,listMaxHeight:l,listFolded:h,mutex:d,theme:v,border:g}=t,x=s.useMemo(()=>Array.isArray(r)?r:[r],[r]),b=Nt(x,{initialLoop:a,initialOrder:i}),[u,c]=Ot(),{mini:y,setMini:w}=wt(t.mini),S=Ce(),T=s.useRef(null),$=s.useCallback(()=>{T.current&&(clearTimeout(T.current),T.current=null)},[]),k=s.useRef(!1),P=_t({src:b.currentSong.url,initialVolume:f,autoPlay:p,mutex:d,onError(C){const{error:Y}=C.target;Y&&c("An audio error has occurred, player will skip forward in 2 seconds."),b.hasNextSong&&(T.current=S(()=>{b.next()},2e3))},onEnded(){const{list:C,currentSong:Y,loop:o,prioritize:E,hasNextSong:_}=b,{audio:L}=P;if(o==="one"){E({...Y});return}if(!_&&o==="none"){k.current=!0,L.currentTime=0,L.pause(),L.src=C[0].url,E(C[0]);return}b.next()}}),z=b.length>1,O=s.useCallback(()=>{$(),P.togglePlay(b.currentSong.url)},[P,$,b.currentSong.url]),{prioritize:ae}=b,fe=s.useCallback(C=>{$(),ae(C)},[$,ae]),[K,ue]=s.useState(()=>z&&!h),[de,X]=s.useState(n!=="fixed"),H=s.useRef(null);s.useEffect(()=>{p&&P.playAudio(b.currentSong.url)},[]);const Q=s.useRef(!0),Z=s.useRef(b.currentSong);return s.useEffect(()=>{if(Q.current){Q.current=!1;return}if(k.current){k.current=!1;return}b.currentSong&&(b.loop==="one"||b.currentSong!==Z.current)&&(Z.current=b.currentSong,P.playAudio(b.currentSong.url))},[b.currentSong]),s.useEffect(()=>{if(n==="fixed"&&H.current){const C=H.current;return C.style.width="400px",()=>{C.removeAttribute("style")}}},[n]),{bodyRef:H,appearance:n,volume:f,listMaxHeight:l,theme:v,border:g,notice:u,audioControl:P,audio:x,handlePlayButtonClick:O,handlePlayAudioFromList:fe,isPlaylistOpen:K,setPlaylistOpen:ue,mini:y,displayLyrics:de,setDisplayLyrics:X,setMini:w,playlist:b,hasPlaylist:z}}function At(e){return Pt(e.slice())}function Pt(e){let t=e.length,r;for(;t!==0;)r=Math.floor(Math.random()*t),t--,[e[t],e[r]]=[e[r],e[t]];return e}function Nt(e,t){const{initialLoop:r="all",initialOrder:n="list"}=t,[a,i]=s.useState(r),[f,p]=s.useState(n),l=s.useMemo(()=>f==="list"?e:At(e),[e,f]),[h,d]=s.useState(l[0]),v=s.useCallback(c=>c.url,[]),g=s.useMemo(()=>l.findIndex(y=>v(y)===v(h))<l.length-1||a!=="none",[l,h,a,v]),x=s.useCallback(()=>{d(c=>{const y=l.findIndex(w=>v(w)===v(c));return y<l.length-1?l[y+1]:{...l[0]}})},[a,l,v]),b=s.useCallback(()=>{d(c=>{const y=l.indexOf(c);return y>0?l[y-1]:c})},[l]),u=s.useCallback(c=>{d(c)},[]);return s.useEffect(()=>{const c=l.find(y=>v(y)===v(h));d(c||l[0])},[l,v,h]),{list:l,currentSong:h,hasNextSong:g,next:x,previous:b,prioritize:u,order:f,setOrder:p,loop:a,setLoop:i,length:l.length}}function Ct(e){var k,P,z;const t=q("aplayer"),{bodyRef:r,appearance:n,volume:a,listMaxHeight:i,theme:f,border:p,notice:l,audio:h,audioControl:d,handlePlayButtonClick:v,handlePlayAudioFromList:g,isPlaylistOpen:x,setPlaylistOpen:b,mini:u,displayLyrics:c,setDisplayLyrics:y,setMini:w,playlist:S,hasPlaylist:T}=Lt(e),$=s.useCallback(O=>O?typeof O=="string"?O:O.url?m.jsx("a",{href:O.url,target:"_blank",rel:"noreferrer",children:O.name??"Audio artist"}):O.name??"Audio artist":"Audio artist",[]);return m.jsxs("div",{className:j(t.b(),{[t.bs(f)]:!0,[t.bs("vars")]:!0,[t.bm(n)]:!0,[t.bm("loading")]:d.isLoading,[t.bm("withlist")]:T,[t.bm("list-folded")]:!x,[t.bm("withlrc")]:!!S.currentSong.lrc&&n!=="fixed",[t.bm("narrow")]:u,[t.bm("border")]:p}),role:"region","aria-label":"Audio Player",children:[m.jsxs("div",{ref:r,className:t.be("body"),children:[m.jsx("div",{className:t.be("pic"),onClick:v,style:{backgroundImage:`url("${(k=S.currentSong)==null?void 0:k.cover}")`},role:"button","aria-label":d.isPlaying?"Pause audio":"Play audio",children:m.jsx("div",{className:j(t.be("button"),d.isPlaying?t.bm("pause"):t.bm("play")),role:"presentation",children:d.isPlaying?m.jsx(tt,{}):m.jsx(vt,{})})}),m.jsxs("div",{className:j(t.be("info")),children:[m.jsxs("div",{className:j(t.be("music")),children:[m.jsx("span",{className:j(t.be("title")),children:((P=S.currentSong)==null?void 0:P.name)??"Audio name"}),m.jsxs("span",{className:j(t.be("author")),children:[" ","-"," ",$((z=S.currentSong)==null?void 0:z.artist)]})]}),n==="fixed"?null:m.jsx(Le,{show:c,lrcText:S.currentSong.lrc,currentTime:d.currentTime??0}),m.jsx(yt,{volume:d.volume??a,onChangeVolume:d.setVolume,muted:d.muted??!1,onToggleMuted:()=>d.toggleMuted(),currentTime:d.currentTime,audioDurationSeconds:d.duration,bufferedSeconds:d.bufferedSeconds,onSeek:O=>d.seek(O),onToggleMenu:()=>b(O=>!O),order:S.order,onOrderChange:S.setOrder,loop:S.loop,onLoopChange:S.setLoop,isPlaying:d.isPlaying??!1,onTogglePlay:v,onSkipForward:()=>{S.hasNextSong&&S.next()},onSkipBack:()=>{S.previous()},showLyrics:c,onToggleLyrics:()=>{y(O=>!O)}})]}),m.jsx("div",{className:t.be("notice"),style:l.style,children:l.text}),m.jsx("div",{className:t.be("miniswitcher"),onClick:()=>w(O=>!O),children:m.jsx("button",{className:j(t.bs("icon"),t.bs("icon-right")),type:"button",children:m.jsx(et,{})})})]}),T?m.jsx(pt,{open:x,audio:h,playingAudioUrl:S.currentSong.url,onPlayAudio:g,listMaxHeight:i,mini:u}):null,n==="fixed"&&m.jsx(Le,{show:c,lrcText:S.currentSong.lrc,currentTime:d.currentTime??0})]})}V.TwistAPlayer=Ct,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "twist-aplayer",
3
3
  "type": "module",
4
- "version": "1.5.1",
4
+ "version": "1.5.2",
5
5
  "private": false,
6
6
  "description": "A shadui theme aplayer",
7
7
  "author": {