@lucaismyname/ginger 0.0.34 → 0.0.36

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.
@@ -1,2 +1,2 @@
1
- "use strict";const s=require("react/jsx-runtime"),g=require("react"),h=require("./GingerSplitContexts-C7puo0M7.cjs"),x=require("./selectors-YXnP8Y8g.cjs"),er=g.createContext(null);function $r(){const e=g.useContext(er);if(!e)throw new Error("Ginger components must be used within <Ginger.Provider>");return e}function Je(e){const{buffered:r,duration:t}=e;return!(t>0)||r.length===0?0:Math.min(1,r.end(r.length-1)/t)}function Yr({className:e,style:r,preload:t="metadata",crossOrigin:a,respectReducedMotion:n=!1}){var I;const{audioRef:i,dispatch:o,state:u,notifyEnded:d}=$r(),l=((I=u.tracks[u.currentIndex])==null?void 0:I.fileUrl)??"",m=g.useRef({currentTime:-1,duration:-1,bufferedFraction:-1}),y=g.useRef(""),[T,b]=g.useState(!1);g.useEffect(()=>{if(!n||typeof window>"u")return;const f=window.matchMedia("(prefers-reduced-motion: reduce)"),P=()=>b(f.matches);return P(),f.addEventListener("change",P),()=>f.removeEventListener("change",P)},[n]);const v=(f,P=!1)=>{const R={currentTime:f.currentTime,duration:f.duration,bufferedFraction:Je(f)},L=m.current,W=T?.5:.25,X=Math.abs(R.currentTime-L.currentTime)>=W||Math.abs(R.duration-L.duration)>=.01||Math.abs(R.bufferedFraction-L.bufferedFraction)>=.01;!P&&!X||(m.current=R,o({type:"MEDIA_TIME_UPDATE",payload:R}))};return g.useEffect(()=>{const f=i.current;f&&(f.volume=u.volume,f.muted=u.muted)},[i,u.volume,u.muted]),g.useEffect(()=>{const f=i.current;if(f){if(!l){f.removeAttribute("src"),m.current={currentTime:-1,duration:-1,bufferedFraction:-1},y.current!==""&&o({type:"MEDIA_SOURCE_CLEARED"}),y.current="";return}f.getAttribute("src")!==l&&(f.src=l,f.load(),m.current={currentTime:-1,duration:-1,bufferedFraction:-1}),y.current=l}},[i,o,u.currentIndex,u.tracks,l]),g.useEffect(()=>{const f=i.current;f&&(f.playbackRate=u.playbackRate)},[i,u.playbackRate,l]),s.jsx("audio",{"data-ginger-component":"Player",ref:i,className:e,style:r,preload:t,crossOrigin:a,controls:!1,playsInline:!0,onTimeUpdate:f=>{v(f.currentTarget)},onLoadedMetadata:f=>{const P=f.currentTarget;m.current={currentTime:-1,duration:-1,bufferedFraction:-1},o({type:"MEDIA_LOADED_METADATA",payload:{duration:P.duration,bufferedFraction:Je(P)}})},onSeeking:f=>v(f.currentTarget,!0),onSeeked:f=>v(f.currentTarget,!0),onEnded:()=>d(),onPlay:()=>o({type:"MEDIA_PLAY"}),onPause:()=>o({type:"MEDIA_PAUSE"}),onWaiting:()=>o({type:"MEDIA_WAITING"}),onCanPlay:()=>o({type:"MEDIA_CANPLAY"}),onProgress:f=>v(f.currentTarget,!0),onVolumeChange:f=>{const P=f.currentTarget;o({type:"MEDIA_VOLUME_SYNC",payload:{volume:P.volume,muted:P.muted}})},onError:()=>{var L;const f=i.current,P=(L=f==null?void 0:f.error)==null?void 0:L.code;o({type:"MEDIA_ERROR",payload:{message:P===1?"MEDIA_ERR_ABORTED":P===2?"MEDIA_ERR_NETWORK":P===3?"MEDIA_ERR_DECODE":P===4?"MEDIA_ERR_SRC_NOT_SUPPORTED":"MEDIA_ERR_UNKNOWN"}})}})}const Q={seek:"Seek",volume:"Volume",playbackSpeed:"Playback speed",chaptersList:"Chapters",syncedLyricsList:"Synced lyrics",nextTrack:"Next track",previousTrack:"Previous track",shuffle:"Shuffle",mute:"Mute",unmute:"Unmute",play:"Play",pause:"Pause",repeat:{off:"Repeat off",all:"Repeat all",one:"Repeat one"},playbackRateNormal:"1× normal",playbackRateTimes:e=>`${e}×`};function Qr(e){return e?{...Q,...e,repeat:{...Q.repeat,...e.repeat}}:Q}const rr=g.createContext(Q);function Hr({locale:e,children:r}){const t=Qr(e);return s.jsx(rr.Provider,{value:t,children:r})}function S(){return g.useContext(rr)}function H(e){if(!Number.isFinite(e)||e<0)return"0:00";const r=Math.floor(e%60);return`${Math.floor(e/60)}:${r.toString().padStart(2,"0")}`}function nr(){const e=h.useGingerPlayback(),r=h.useGingerMedia(),t=S(),a=g.useMemo(()=>h.gingerStateFromContextValues(e,r),[e,r]),n=x.effectiveDuration(a),i=n>0?a.currentTime:0,o=Number.isFinite(i)?i:0,u=n>0?`${H(o)} of ${H(n)}`:H(o),d=l=>{r.seek(Number(l.currentTarget.value))};return{state:a,value:o,min:0,max:n>0?n:1,step:"any",ariaValueText:u,ariaLabel:t.seek,onSeekInput:d,onSeekChange:d}}function tr(){const e=h.useGingerPlayback(),r=h.useGingerMedia(),t=S(),a=g.useMemo(()=>h.gingerStateFromContextValues(e,r),[e,r]),n=i=>{r.setVolume(Number(i.currentTarget.value))};return{state:a,value:a.volume,min:0,max:1,step:"any",ariaValueText:`${Math.round(a.volume*100)}%`,ariaLabel:t.volume,onVolumeInput:n,onVolumeChange:n}}function ar(e){const r=h.useGingerPlayback(),t=S(),a=(e==null?void 0:e.playAriaLabel)??t.play,n=(e==null?void 0:e.pauseAriaLabel)??t.pause;return{isPaused:r.isPaused,toggle:r.togglePlayPause,ariaLabel:r.isPaused?a:n}}function A(e){const{className:r,width:t,height:a,viewBox:n,fill:i,stroke:o,strokeWidth:u,strokeLinecap:d,strokeLinejoin:l,children:m,...y}=e;return s.jsx("svg",{"data-ginger-component":"Wrapper",xmlns:"http://www.w3.org/2000/svg",width:t??24,height:a??24,viewBox:n??"0 0 24 24",fill:"none",stroke:o??"currentColor",strokeWidth:u??2,strokeLinecap:d??"round",strokeLinejoin:l??"round",className:r,"aria-hidden":!0,role:"presentation",...y,children:m})}function Le(){return s.jsx(A,{children:s.jsx("path",{"data-ginger-component":"Pause",d:"M6 4h4v16H6zM14 4h4v16h-4z"})})}function we(){return s.jsx(A,{children:s.jsx("path",{"data-ginger-component":"Play",d:"M5 3L19 12 5 21 5 3z"})})}function je(){return s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"m17 2 4 4-4 4"}),s.jsx("path",{d:"M3 11v-1a4 4 0 0 1 4-4h14"}),s.jsx("path",{d:"m7 22-4-4 4-4"}),s.jsx("path",{d:"M21 13v1a4 4 0 0 1-4 4H3"})]})}function Ne({mode:e}){return e==="one"?s.jsxs(A,{children:[s.jsx(je,{}),s.jsx("path",{"data-ginger-component":"RepeatGlyph",d:"M11 10h1v4"})]}):e==="all"?s.jsx(A,{children:s.jsx(je,{})}):s.jsxs(A,{children:[s.jsx(je,{}),s.jsx("line",{"data-ginger-component":"RepeatGlyph",x1:"3",x2:"21",y1:"3",y2:"21"})]})}function _e(){return s.jsxs(A,{children:[s.jsx("path",{d:"m18 14 4 4-4 4"}),s.jsx("path",{d:"m18 2 4 4-4 4"}),s.jsx("path",{"data-ginger-component":"ShuffleIcon",d:"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22"}),s.jsx("path",{d:"M2 6h1.972a4 4 0 0 1 3.6 2.2"}),s.jsx("path",{d:"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45"})]})}function De(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"SkipBack",d:"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z"}),s.jsx("path",{d:"M3 20V4"})]})}function Fe(){return s.jsxs(A,{children:[s.jsx("path",{d:"M21 4v16"}),s.jsx("path",{"data-ginger-component":"SkipForward",d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z"})]})}function Ue(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"Volume2",d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}),s.jsx("path",{d:"M16 9a5 5 0 0 1 0 6"}),s.jsx("path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728"})]})}function Ve(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"VolumeX",d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}),s.jsx("line",{x1:"22",x2:"16",y1:"9",y2:"15"}),s.jsx("line",{x1:"16",x2:"22",y1:"9",y2:"15"})]})}function ir({playLabel:e="Play",pauseLabel:r="Pause",playAriaLabel:t,pauseAriaLabel:a,children:n,type:i="button",onClick:o,...u}){const d=S(),l=typeof e=="string"?e:d.play,m=typeof r=="string"?r:d.pause,y=ar({playAriaLabel:t??l,pauseAriaLabel:a??m});return s.jsx("button",{"data-ginger-component":"PlayPause",...u,type:i,"aria-label":y.ariaLabel,onClick:T=>{y.toggle(),o==null||o(T)},children:n??(y.isPaused?s.jsx(we,{}):s.jsx(Le,{}))})}ir.displayName="Ginger.Control.PlayPause";function sr({type:e="button",ariaLabel:r,onClick:t,children:a,...n}){const{repeatMode:i,cycleRepeat:o}=h.useGingerPlayback(),d=S().repeat[i];return s.jsx("button",{"data-ginger-component":"Repeat",...n,type:e,"aria-label":r??d,onClick:l=>{o(),t==null||t(l)},children:a??s.jsx(Ne,{mode:i})})}sr.displayName="Ginger.Control.Repeat";function or({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{next:i}=h.useGingerPlayback(),o=S();return s.jsx("button",{"data-ginger-component":"Next",...n,type:e,"aria-label":t??o.nextTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx(Fe,{})})}or.displayName="Ginger.Control.Next";function ur({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{prev:i}=h.useGingerPlayback(),o=S();return s.jsx("button",{"data-ginger-component":"Previous",...n,type:e,"aria-label":t??o.previousTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx(De,{})})}ur.displayName="Ginger.Control.Previous";function cr({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{isShuffled:i,toggleShuffle:o}=h.useGingerPlayback(),u=S();return s.jsx("button",{"data-ginger-component":"Shuffle",...n,type:e,"aria-pressed":i,"aria-label":t??u.shuffle,onClick:d=>{o(),a==null||a(d)},children:r??s.jsx(_e,{})})}cr.displayName="Ginger.Control.Shuffle";function lr({inputStyle:e,style:r,unstyled:t=!1,ariaLabel:a,...n}){const i=nr(),o=t?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"SeekBar",...n,type:"range",min:i.min,max:i.max,step:i.step,value:i.value,"aria-label":a??i.ariaLabel,"aria-valuetext":i.ariaValueText,onInput:i.onSeekInput,onChange:i.onSeekChange,style:o})}lr.displayName="Ginger.Control.SeekBar";function dr({inputStyle:e,style:r,unstyled:t=!1,ariaLabel:a,...n}){const i=tr(),o=t?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"Volume",...n,type:"range",min:i.min,max:i.max,step:i.step,value:i.value,"aria-label":a??i.ariaLabel,"aria-valuetext":i.ariaValueText,onInput:i.onVolumeInput,onChange:i.onVolumeChange,style:o})}dr.displayName="Ginger.Control.Volume";function gr({ariaLabel:e,muteLabel:r,unmuteLabel:t,type:a="button",onClick:n,children:i,...o}){const{muted:u,toggleMute:d}=h.useGingerMedia(),l=S();return s.jsx("button",{"data-ginger-component":"Mute",...o,type:a,"aria-pressed":u,"aria-label":e??(u?l.unmute:l.mute),onClick:m=>{d(),n==null||n(m)},children:i??(u?t??s.jsx(Ve,{}):r??s.jsx(Ue,{}))})}gr.displayName="Ginger.Control.Mute";const zr=[.5,.75,1,1.25,1.5,2];function pr({rates:e=zr,style:r,ariaLabel:t,children:a,...n}){const{playbackRate:i,setPlaybackRate:o}=h.useGingerMedia(),u=S(),d=g.useMemo(()=>Array.from(new Set([...e,i])).sort((l,m)=>l-m),[e,i]);return s.jsx("select",{"data-ginger-component":"PlaybackRate",...n,"aria-label":t??u.playbackSpeed,value:String(i),style:r,onChange:l=>o(Number(l.currentTarget.value)),children:a??d.map(l=>s.jsx("option",{value:String(l),children:l===1?u.playbackRateNormal:u.playbackRateTimes(l)},l))})}pr.displayName="Ginger.Control.PlaybackRate";function V(e,r){function t(a){const n=h.useGingerState(),o=(r(n)??"").trim(),{className:u,style:d,fallback:l,empty:m,children:y}=a;if(!o){const T=m??l??null;return T?s.jsx("span",{className:u,style:d,children:T}):null}return y?s.jsx("span",{className:u,style:d,children:y(o,n)}):s.jsx("span",{className:u,style:d,children:o})}return t.displayName=e,t}function B(e,r){return V(e,t=>r(x.getCurrentTrack(t)))}const Wr=B("Ginger.Current.Title",e=>e==null?void 0:e.title),Xr=B("Ginger.Current.Artist",e=>e==null?void 0:e.artist),Kr=V("Ginger.Current.Album",e=>x.resolvedAlbumLine(e)),qr=B("Ginger.Current.Description",e=>e==null?void 0:e.description),Jr=V("Ginger.Current.Copyright",e=>{var t;const r=x.getCurrentTrack(e);return(r==null?void 0:r.copyright)??((t=e.playlistMeta)==null?void 0:t.copyright)}),Zr=B("Ginger.Current.Genre",e=>e==null?void 0:e.genre),en=B("Ginger.Current.Label",e=>e==null?void 0:e.label),rn=B("Ginger.Current.Isrc",e=>e==null?void 0:e.isrc),nn=B("Ginger.Current.TrackNumber",e=>(e==null?void 0:e.trackNumber)!=null?String(e.trackNumber):void 0);function fr({className:e,style:r,fallback:t,empty:a,children:n,format:i}){var l;const o=h.useGingerState(),u=(l=x.getCurrentTrack(o))==null?void 0:l.year;if(typeof u!="number"||!Number.isFinite(u)){const m=a??t??null;return m?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:m}):null}const d=i?i(u):String(u);return n?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:n(d,o)}):s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:d})}fr.displayName="Ginger.Current.Year";function mr({className:e,style:r,fallback:t,empty:a,children:n,preserveWhitespace:i=!0,unstyled:o=!1}){var y;const u=h.useGingerState(),d=((y=x.getCurrentTrack(u))==null?void 0:y.lyrics)??"",l=i?d.replace(/^\s+|\s+$/g,""):d.trim();if(!l){const T=a??t??null;return T?s.jsx("span",{"data-ginger-component":"Lyrics",className:e,style:r,children:T}):null}const m=!o&&i?{whiteSpace:"pre-wrap"}:void 0;return n?s.jsx("span",{className:e,style:{...m,...r},children:n(l,u)}):s.jsx("span",{className:e,style:{...m,...r},children:l})}mr.displayName="Ginger.Current.Lyrics";const Ze=/\[(\d{1,2}):(\d{2})(?:\.(\d{1,3}))?\]/g;function yr(e){const r=[];for(const t of e.split(/\r?\n/)){const a=[...t.matchAll(Ze)];if(a.length===0)continue;const n=t.replace(Ze,"").trim();for(const i of a){const o=Number(i[1]??0),u=Number(i[2]??0),d=Number((i[3]??"0").padEnd(3,"0")),l=o*60+u+d/1e3;Number.isFinite(l)&&l>=0&&r.push({time:l,text:n})}}return r.sort((t,a)=>t.time-a.time)}function xr(){const{tracks:e,currentIndex:r}=h.useGingerPlayback(),{currentTime:t}=h.useGingerMedia(),a=e[r],n=g.useMemo(()=>a?Array.isArray(a.lyricsTimed)&&a.lyricsTimed.length>0?[...a.lyricsTimed].filter(o=>Number.isFinite(o.time)&&o.time>=0).sort((o,u)=>o.time-u.time):typeof a.lyrics=="string"?yr(a.lyrics):[]:[],[a]),i=g.useMemo(()=>{for(let o=n.length-1;o>=0;o-=1)if(t>=n[o].time)return o;return-1},[t,n]);return{lines:n,activeIndex:i,activeLine:i>=0?n[i]??null:null}}function Be({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,activeClassName:i,lineClassName:o,children:u}){const d=h.useGingerState(),l=S(),{lines:m,activeIndex:y}=xr();if(m.length===0){const b=a??t??null;return b?s.jsx("span",{"data-ginger-component":"LyricsSynced",className:e,style:r,children:b}):null}const T=n?{}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)"};return s.jsx("ul",{className:e,style:{...T,...r},"aria-label":l.syncedLyricsList,children:m.map((b,v)=>{const I=v===y;return s.jsx("li",{"aria-current":I?"true":void 0,"data-ginger-active":I||void 0,className:[o,I?i:void 0].filter(Boolean).join(" ")||void 0,style:n?void 0:{padding:"var(--ginger-playlist-row-padding, 4px 8px)",fontWeight:I?600:400,opacity:I?1:.75},children:u?u(b,v,I,d):b.text},`${b.time}-${v}`)})})}Be.displayName="Ginger.Current.LyricsSynced";function hr(){const{tracks:e,currentIndex:r}=h.useGingerPlayback(),{currentTime:t,seek:a}=h.useGingerMedia(),n=g.useMemo(()=>{var u;return[...((u=e[r])==null?void 0:u.chapters)??[]].filter(d=>d&&Number.isFinite(d.startSeconds)&&d.startSeconds>=0).sort((d,l)=>d.startSeconds-l.startSeconds)},[r,e]),i=g.useMemo(()=>{if(n.length===0)return-1;for(let o=n.length-1;o>=0;o-=1)if(t>=n[o].startSeconds)return o;return-1},[t,n]);return{list:n,activeIndex:i,active:i>=0?n[i]??null:null,seekTo:o=>{const u=n[o];u&&a(u.startSeconds)}}}function Oe({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,formatStart:i=H,children:o}){const u=h.useGingerState(),d=S(),{list:l,activeIndex:m,seekTo:y}=hr();if(l.length===0){const b=a??t??null;return b?s.jsx("span",{"data-ginger-component":"Chapters",className:e,style:r,children:b}):null}const T=n?{}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)"};return s.jsx("ul",{className:e,style:{...T,...r},"aria-label":d.chaptersList,children:l.map((b,v)=>{const I=v===m;return s.jsx("li",{children:s.jsx("button",{type:"button","aria-current":I?"true":void 0,"data-ginger-active":I||void 0,onClick:()=>y(v),style:{width:n?void 0:"100%",textAlign:n?void 0:"left",border:n?void 0:"none",background:n?void 0:I?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:n?void 0:"inherit",font:n?void 0:"inherit",cursor:n?void 0:"pointer",padding:n?void 0:"var(--ginger-playlist-row-padding, 6px 8px)"},children:o?o(b,v,I,u):n?s.jsxs(s.Fragment,{children:[i(b.startSeconds)," ",b.title]}):s.jsxs("span",{children:[s.jsx("span",{style:{opacity:.75,marginRight:"0.35em"},children:i(b.startSeconds)}),b.title]})})},`${b.startSeconds}-${b.title}`)})})}Oe.displayName="Ginger.Current.Chapters";function kr({visible:e=!1,className:r,style:t,fallback:a,empty:n,children:i}){var d;const o=h.useGingerState();if(!e)return null;const u=((d=x.getCurrentTrack(o))==null?void 0:d.fileUrl)??"";if(!u){const l=n??a??null;return l?s.jsx("span",{className:r,style:t,children:l}):null}return i?s.jsx("span",{"data-ginger-component":"FileUrl",className:r,style:t,children:i(u,o)}):s.jsx("span",{className:r,style:t,children:u})}kr.displayName="Ginger.Current.FileUrl";function br({className:e,style:r,fallback:t,empty:a,sizes:n,loading:i,onError:o,decoding:u,unstyled:d=!1,imgStyle:l}){const m=h.useGingerState(),y=x.getCurrentTrack(m),T=x.resolvedArtwork(m);if(!T){const v=a??t??null;return v?s.jsx("span",{className:e,style:r,children:v}):null}const b=[y==null?void 0:y.title,y==null?void 0:y.artist].filter(Boolean).join(" — ")||"Artwork";return s.jsx("div",{"data-ginger-component":"Artwork",className:e,style:d?{...r}:{background:"var(--ginger-artwork-bg, transparent)",borderRadius:"var(--ginger-artwork-radius, 0)",overflow:"hidden",...r},children:s.jsx("img",{src:T,alt:b,sizes:n,loading:i,decoding:u,onError:o,style:{display:d?void 0:"block",width:d?void 0:"100%",height:d?void 0:"100%",objectFit:d?void 0:"cover",...l}})})}br.displayName="Ginger.Current.Artwork";function vr({base:e=0,className:r,style:t,fallback:a,empty:n,children:i}){const o=h.useGingerState();if(o.tracks.length===0){const l=n??a??null;return l?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:l}):null}const d=String(o.currentIndex+e);return i?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:i(d,o)}):s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:d})}vr.displayName="Ginger.Current.QueueIndex";function Tr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=String(i.tracks.length);if(i.tracks.length===0){const u=a??t??null;return u?s.jsx("span",{className:e,style:r,children:u}):null}return n?s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:n(o,i)}):s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:o})}Tr.displayName="Ginger.Current.QueueLength";function Mr({base:e=0,separator:r=" / ",className:t,style:a,fallback:n,empty:i,children:o}){const u=h.useGingerState(),d=u.tracks.length;if(d===0){const T=i??n??null;return T?s.jsx("span",{className:t,style:a,children:T}):null}const l=String(u.currentIndex+e),m=String(d),y=`${l}${r}${m}`;return o?s.jsx("span",{"data-ginger-component":"QueuePosition",className:t,style:a,children:o({index:l,length:m,label:y},u)}):s.jsx("span",{"data-ginger-component":"QueuePosition",className:t,style:a,children:y})}Mr.displayName="Ginger.Current.QueuePosition";function $e(e,r,t){const{className:a,style:n,fallback:i,empty:o,children:u,format:d=H}=t;if(!(e>=0)||!Number.isFinite(e)){const m=o??i??null;return m?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:m}):null}const l=d(e);return u?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:u(l,r)}):s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:l})}function Er(e){const r=h.useGingerState();return $e(r.currentTime,r,e)}Er.displayName="Ginger.Current.Elapsed";function Ir(e){const r=h.useGingerState();return $e(x.effectiveDuration(r),r,e)}Ir.displayName="Ginger.Current.Duration";function Pr(e){const r=h.useGingerState();return $e(x.effectiveRemaining(r),r,e)}Pr.displayName="Ginger.Current.Remaining";function Sr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=x.effectiveDuration(i),u=x.progressFraction(i);if(!(o>0)){const d=a??t??null;return d?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:d}):null}return n?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:n({fraction:u,currentTime:i.currentTime,duration:o},i)}):s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:`${Math.round(u*100)}%`})}Sr.displayName="Ginger.Current.Progress";function Ar({className:e,style:r,height:t=4,showBuffered:a=!1,unstyled:n=!1}){const i=h.useGingerState(),o=`${Math.round(x.progressFraction(i)*100)}%`,u=`${Math.round(Math.min(1,Math.max(0,i.bufferedFraction))*100)}%`;return s.jsxs("div",{"data-ginger-component":"TimeRail",className:e,style:n?{...r}:{width:"100%",height:t,background:"var(--ginger-muted-color, #e5e7eb)",borderRadius:999,overflow:"hidden",position:"relative",...r},"aria-hidden":!0,children:[a?s.jsx("div",{"data-ginger-component":"TimeRail",style:{position:n?void 0:"absolute",left:n?void 0:0,top:n?void 0:0,height:n?void 0:"100%",width:u,background:n?void 0:"var(--ginger-buffer-color, rgba(107, 114, 128, 0.35))"}}):null,s.jsx("div",{"data-ginger-component":"TimeRail",style:{position:n?void 0:"relative",width:o,height:n?void 0:"100%",background:n?void 0:"var(--ginger-primary-color, #111827)"}})]})}Ar.displayName="Ginger.Current.TimeRail";function Rr({className:e,style:r,height:t=4,unstyled:a=!1}){const n=h.useGingerState(),i=`${Math.round(Math.min(1,Math.max(0,n.bufferedFraction))*100)}%`;return s.jsx("div",{"data-ginger-component":"BufferRail",className:e,style:a?{...r}:{width:"100%",height:t,background:"var(--ginger-muted-color, #e5e7eb)",borderRadius:999,overflow:"hidden",...r},"aria-hidden":!0,children:s.jsx("div",{"data-ginger-component":"BufferRail",style:{width:i,height:a?void 0:"100%",background:a?void 0:"var(--ginger-buffer-color, rgba(107, 114, 128, 0.35))"}})})}Rr.displayName="Ginger.Current.BufferRail";function jr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=x.derivePlaybackUiState(i);return n?s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:n(o,i)}):s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:o})}jr.displayName="Ginger.Current.PlaybackState";function Gr({className:e,style:r,fallback:t,empty:a,live:n="polite",children:i}){const o=h.useGingerState(),u=o.errorMessage??"";if(!u){const d=a??t??null;return d?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,children:d}):null}return i?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":n,children:i(u,o)}):s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":n,children:u})}Gr.displayName="Ginger.Current.ErrorMessage";const Ce=g.createContext(null);function tn(){const e=g.useContext(Ce);if(!e)throw new Error("Ginger.Playlist.Track must be used inside <Ginger.Playlist>");return e}function Cr({children:e,unstyled:r=!1,rowStyle:t,renderTrack:a,playOnSelect:n=!0,style:i,...o}){const{tracks:u,currentIndex:d,playTrackAt:l,selectTrackAt:m}=h.useGingerPlayback(),y=r?{...i}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)",...i};return e!==void 0?s.jsx(Ce.Provider,{value:{playOnSelect:n},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:e})}):s.jsx(Ce.Provider,{value:{playOnSelect:n},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:u.map((b,v)=>{const I=v===d;return s.jsx("li",{children:s.jsx("button",{type:"button",onClick:()=>{n?l(v):m(v)},style:{width:r?void 0:"100%",textAlign:r?void 0:"left",border:r?void 0:"none",background:r?void 0:I?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:r?void 0:"inherit",font:r?void 0:"inherit",cursor:r?void 0:"pointer",padding:r?void 0:"var(--ginger-playlist-row-padding, 6px 8px)",...t},children:a?a(b,v,I):s.jsxs("span",{children:[b.title,b.artist?` — ${b.artist}`:""]})})},`${v}-${x.trackIdentity(b)}`)})})})}Cr.displayName="Ginger.Playlist";function Lr({index:e,unstyled:r=!1,className:t,style:a,children:n,liProps:i,onClick:o,...u}){const{playOnSelect:d}=tn(),{tracks:l,currentIndex:m,playTrackAt:y,selectTrackAt:T}=h.useGingerPlayback(),b=e===m,v=l[e],I=v!=null?s.jsxs("span",{"data-ginger-component":"PlaylistTrack",children:[v.title,v.artist?` — ${v.artist}`:""]}):null;return s.jsx("li",{...i,"data-ginger-component":"PlaylistTrack",children:s.jsx("button",{type:"button","data-ginger-component":"PlaylistTrackButton","aria-current":b?"true":void 0,"data-ginger-active":b||void 0,className:t,style:{width:r?void 0:"100%",textAlign:r?void 0:"left",border:r?void 0:"none",background:r?void 0:b?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:r?void 0:"inherit",font:r?void 0:"inherit",cursor:r?void 0:"pointer",padding:r?void 0:"var(--ginger-playlist-row-padding, 6px 8px)",...a},...u,onClick:f=>{o==null||o(f),!f.defaultPrevented&&(d?y(e):T(e))},children:n??I})})}Lr.displayName="Ginger.Playlist.Track";const an=Object.assign(Cr,{Track:Lr}),sn=V("Ginger.Queue.Title",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.title}),on=V("Ginger.Queue.Subtitle",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.subtitle}),un=V("Ginger.Queue.Description",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.description}),cn=V("Ginger.Queue.Copyright",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.copyright});function wr({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,imgStyle:i}){var l,m;const o=h.useGingerState(),u=(l=o.playlistMeta)==null?void 0:l.artworkUrl;if(!u){const y=a??t??null;return y?s.jsx("span",{className:e,style:r,children:y}):null}const d=((m=o.playlistMeta)==null?void 0:m.title)??"Playlist artwork";return s.jsx("span",{"data-ginger-component":"Artwork",className:e,style:n?{...r}:{display:"inline-block",background:"var(--ginger-artwork-bg, #f3f4f6)",borderRadius:"var(--ginger-artwork-radius, 6px)",overflow:"hidden",...r},children:s.jsx("img",{src:u,alt:d,style:{display:n?void 0:"block",width:n?void 0:"100%",height:n?void 0:"100%",objectFit:n?void 0:"cover",...i}})})}wr.displayName="Ginger.Queue.Artwork";function z(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):1}function Se(e){return Number.isFinite(e)?Math.min(4,Math.max(.25,e)):1}const U={currentTime:0,duration:0,bufferedFraction:0,isBuffering:!1,errorMessage:null},ln={...U,volume:1,muted:!1,playbackRate:1};function Ye(e){const r=[...e.tracks];let t=x.clampIndex(e.currentIndex??0,r.length),a=null,n=r;return e.isShuffled&&r.length>1&&(a=[...r],n=x.shuffleWithAnchor(r,t),t=0),{tracks:n,currentIndex:t,playbackMode:e.playbackMode??"playlist",isPaused:e.isPaused??!0,isShuffled:!!(e.isShuffled&&n.length>1),repeatMode:e.repeatMode??"off",originalTracks:a,playlistMeta:e.playlistMeta??null,...ln,volume:z(e.volume??1),muted:e.muted??!1,playbackRate:Se(e.playbackRate??1)}}function Nr(e,r){switch(r.type){case"INIT":{const{tracks:t,currentIndex:a,playlistMeta:n,isPaused:i,isShuffled:o,repeatMode:u,playbackMode:d,volume:l,muted:m,playbackRate:y}=r.payload;return Ye({tracks:t,currentIndex:a,playlistMeta:n??null,isPaused:i??!0,isShuffled:o??!1,repeatMode:u??"off",playbackMode:d??"playlist",volume:l,muted:m,playbackRate:y})}case"SET_QUEUE":{const{tracks:t,currentIndex:a}=r.payload,n=[...t],i=x.clampIndex(a??e.currentIndex,n.length);return{...e,tracks:n,currentIndex:i,isShuffled:!1,originalTracks:null,...U}}case"INSERT_TRACK":{const t=r.payload.index??e.tracks.length,a=x.insertTrackAt(e.tracks,r.payload.track,t);if(r.payload.autoPlay){const o=x.clampIndex(t,a.length);return{...e,tracks:a,currentIndex:o,isShuffled:!1,originalTracks:null,isPaused:!1,...U}}const n=t<=e.currentIndex?e.currentIndex+1:e.currentIndex,i=e.isShuffled&&e.originalTracks?x.insertTrackAt(e.originalTracks,r.payload.track,e.originalTracks.length):e.originalTracks;return{...e,tracks:a,originalTracks:i,currentIndex:x.clampIndex(n,a.length)}}case"REMOVE_TRACK":{const t=r.payload.index,a=x.removeTrackAt(e.tracks,t),n=t<e.currentIndex?e.currentIndex-1:t===e.currentIndex?Math.min(e.currentIndex,Math.max(0,a.length-1)):e.currentIndex,i=e.isShuffled&&e.originalTracks?(()=>{const u=e.tracks[t],d=x.findIndexByTrackIdentity(e.originalTracks,u);return x.removeTrackAt(e.originalTracks,d)})():e.originalTracks,o=e.isShuffled&&a.length>1;return{...e,tracks:a,isShuffled:o,originalTracks:o?i:null,currentIndex:x.clampIndex(n,a.length),...t===e.currentIndex?U:{}}}case"MOVE_TRACK":{const{fromIndex:t,toIndex:a}=r.payload,n=x.moveTrack(e.tracks,t,a);let i=e.currentIndex;return e.currentIndex===t?i=a:t<e.currentIndex&&a>=e.currentIndex?i-=1:t>e.currentIndex&&a<=e.currentIndex&&(i+=1),{...e,tracks:n,isShuffled:!1,originalTracks:null,currentIndex:x.clampIndex(i,n.length)}}case"ADD_NEXT":{const t=x.addNextTrack(e.tracks,e.currentIndex,r.payload.track),a=e.isShuffled&&e.originalTracks?(()=>{const n=e.tracks[e.currentIndex],i=x.findIndexByTrackIdentity(e.originalTracks,n);return x.addNextTrack(e.originalTracks,i,r.payload.track)})():e.originalTracks;return{...e,tracks:t,originalTracks:a}}case"SET_INDEX":{const t=x.clampIndex(r.payload.index,e.tracks.length),a=r.payload.autoPlay,n=a===!0?!1:a===!1?!0:e.isPaused;return{...e,currentIndex:t,...U,isPaused:n}}case"PLAY":return{...e,isPaused:!1};case"PAUSE":return{...e,isPaused:!0};case"TOGGLE_PAUSE":return{...e,isPaused:!e.isPaused};case"SET_REPEAT":return{...e,repeatMode:r.payload};case"CYCLE_REPEAT":return{...e,repeatMode:x.cycleRepeatMode(e.repeatMode)};case"TOGGLE_SHUFFLE":{if(e.tracks.length<=1)return{...e,isShuffled:!1,originalTracks:null};if(!e.isShuffled){const i=[...e.tracks],o=x.shuffleWithAnchor(i,e.currentIndex);return{...e,isShuffled:!0,originalTracks:i,tracks:o,currentIndex:0}}const t=e.originalTracks?[...e.originalTracks]:[...e.tracks],a=e.tracks[e.currentIndex],n=x.findIndexByTrackIdentity(t,a);return{...e,isShuffled:!1,originalTracks:null,tracks:t,currentIndex:x.clampIndex(n,t.length)}}case"NEXT":{const t=x.computeNextIndex(e),a=t===e.currentIndex;return{...e,currentIndex:t,...a?{}:U,isPaused:a?e.isPaused:!1}}case"PREV":{const t=x.computePrevIndex(e),a=t===e.currentIndex;return{...e,currentIndex:t,...a?{}:U,isPaused:a?e.isPaused:!1}}case"MEDIA_TIME_UPDATE":return{...e,currentTime:r.payload.currentTime,duration:Number.isFinite(r.payload.duration)?r.payload.duration:e.duration,bufferedFraction:r.payload.bufferedFraction,isBuffering:!1};case"MEDIA_LOADED_METADATA":return{...e,duration:Number.isFinite(r.payload.duration)?r.payload.duration:e.duration,bufferedFraction:r.payload.bufferedFraction,errorMessage:null};case"SET_PLAYLIST_META":return{...e,playlistMeta:r.payload};case"SET_PLAYBACK_MODE":return{...e,playbackMode:r.payload};case"MEDIA_ERROR":return{...e,errorMessage:r.payload.message,isPaused:!0,isBuffering:!1};case"MEDIA_WAITING":return{...e,isBuffering:!0};case"MEDIA_CANPLAY":return{...e,isBuffering:!1,errorMessage:null};case"MEDIA_PLAY":return{...e,isPaused:!1,isBuffering:!1};case"MEDIA_PAUSE":return{...e,isPaused:!0};case"RESET_MEDIA_TIMES":return{...e,currentTime:0,duration:0,bufferedFraction:0};case"MEDIA_SOURCE_CLEARED":return{...e,...U};case"SET_VOLUME":return{...e,volume:z(r.payload)};case"SET_MUTED":return{...e,muted:r.payload};case"TOGGLE_MUTE":return{...e,muted:!e.muted};case"SET_PLAYBACK_RATE":return{...e,playbackRate:Se(r.payload)};case"MEDIA_VOLUME_SYNC":{const{volume:t,muted:a}=r.payload,n=z(t);return n===e.volume&&a===e.muted?e:{...e,volume:n,muted:a}}default:return e}}function Ge(){return typeof navigator>"u"||!("mediaSession"in navigator)?null:navigator.mediaSession}function dn(e,r,t){var d;const a=r.tracks[r.currentIndex],n=a==null?void 0:a.title,i=a==null?void 0:a.artist,o=a==null?void 0:a.album,u=x.resolveArtworkUrl(a,(d=r.playlistMeta)==null?void 0:d.artworkUrl);g.useEffect(()=>{const l=Ge();!e||!l||(l.metadata=new MediaMetadata({title:n??"Unknown track",artist:i,album:o,artwork:u?[{src:u}]:void 0}))},[e,n,i,o,u]),g.useEffect(()=>{const l=Ge();!e||!l||(l.playbackState=r.isPaused?"paused":"playing")},[e,r.isPaused]),g.useEffect(()=>{const l=Ge();if(!(!e||!l)){try{l.setActionHandler("play",t.play),l.setActionHandler("pause",t.pause),l.setActionHandler("nexttrack",t.next),l.setActionHandler("previoustrack",t.prev),l.setActionHandler("seekto",m=>{typeof m.seekTime=="number"&&Number.isFinite(m.seekTime)&&t.seek(m.seekTime)})}catch{}return()=>{try{l.setActionHandler("play",null),l.setActionHandler("pause",null),l.setActionHandler("nexttrack",null),l.setActionHandler("previoustrack",null),l.setActionHandler("seekto",null)}catch{}}}},[e,t])}const gn={"--ginger-primary-color":"#111827","--ginger-muted-color":"#6b7280","--ginger-font-size":"14px","--ginger-font-family":"system-ui, sans-serif","--ginger-playlist-row-padding":"6px 8px","--ginger-artwork-radius":"6px","--ginger-artwork-bg":"#f3f4f6","--ginger-playlist-active-bg":"rgba(17, 24, 39, 0.06)","--ginger-buffer-color":"rgba(107, 114, 128, 0.35)","--ginger-focus-ring":"0 0 0 2px rgba(59, 130, 246, 0.45)"};function pn({children:e,initialTracks:r=[],initialIndex:t=0,initialPlaylistMeta:a=null,initialShuffle:n=!1,initialRepeatMode:i="off",initialPlaybackMode:o="playlist",initialPaused:u=!0,initialVolume:d=1,initialMuted:l=!1,initialPlaybackRate:m=1,initialStateKey:y,locale:T,mediaSession:b=!1,beforePlay:v,onPlayBlocked:I,persistence:f,hydrateOnMount:P=!1,resumeOnTrackChange:R=!1,unstyled:L=!1,asChild:W=!1,className:X,style:Ae,dir:_r,prevRestartThresholdSeconds:Qe=3,onTrackChange:K,onPlay:q,onPause:J,onQueueEnd:Z,onError:ee,onVolumeChange:re,onPlaybackRateChange:ne,onSeek:w}){var qe;const N=g.useRef(null),[c,k]=g.useReducer(Nr,void 0,()=>Ye({tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m})),He=g.useRef(c),Re=g.useRef({tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m});Re.current={tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m};const Y=g.useRef(void 0);g.useEffect(()=>{if(y===void 0){Y.current=void 0;return}if(Y.current===void 0){Y.current=y;return}if(Y.current===y)return;Y.current=y;const p=Re.current;k({type:"INIT",payload:{tracks:p.tracks,currentIndex:p.currentIndex,playlistMeta:p.playlistMeta,isPaused:p.isPaused,isShuffled:p.isShuffled,repeatMode:p.repeatMode,playbackMode:p.playbackMode,volume:p.volume,muted:p.muted,playbackRate:p.playbackRate}})},[y,k]),g.useEffect(()=>{He.current=c},[c]);const ze=c.tracks[c.currentIndex]??null;g.useEffect(()=>{K==null||K(ze,c.currentIndex)},[ze,c.currentIndex,K]),g.useEffect(()=>{c.errorMessage&&(ee==null||ee(c.errorMessage))},[c.errorMessage,ee]);const te=g.useRef(void 0);g.useEffect(()=>{if(te.current===void 0){te.current=c.isPaused;return}te.current!==c.isPaused&&(c.isPaused?J==null||J():q==null||q()),te.current=c.isPaused},[c.isPaused,J,q]);const ae=g.useRef(void 0),ie=g.useRef(void 0);g.useEffect(()=>{if(ae.current===void 0||ie.current===void 0){ae.current=c.volume,ie.current=c.muted;return}(ae.current!==c.volume||ie.current!==c.muted)&&(re==null||re(c.volume,c.muted)),ae.current=c.volume,ie.current=c.muted},[c.volume,c.muted,re]);const se=g.useRef(void 0);g.useEffect(()=>{if(se.current===void 0){se.current=c.playbackRate;return}se.current!==c.playbackRate&&(ne==null||ne(c.playbackRate)),se.current=c.playbackRate},[c.playbackRate,ne]);const _=g.useCallback(()=>{k({type:"PLAY"})},[]),D=g.useCallback(()=>{var p;k({type:"PAUSE"}),(p=N.current)==null||p.pause()},[]),oe=g.useCallback(()=>{c.isPaused?_():D()},[D,_,c.isPaused]),F=g.useCallback(p=>{const M=N.current;M&&Number.isFinite(p)&&(M.currentTime=Math.max(0,p),w==null||w(Math.max(0,p)))},[w]),ue=g.useCallback(p=>{k({type:"SET_VOLUME",payload:z(p)})},[]),ce=g.useCallback(p=>{k({type:"SET_MUTED",payload:p})},[]),le=g.useCallback(()=>{k({type:"TOGGLE_MUTE"})},[]),de=g.useCallback(p=>{k({type:"SET_PLAYBACK_RATE",payload:Se(p)})},[]),O=g.useCallback(()=>{k({type:"NEXT"})},[]),$=g.useCallback(()=>{const p=N.current,M=Qe??3;p&&M>0&&p.currentTime>M?(p.currentTime=0,w==null||w(0)):k({type:"PREV"})},[Qe,w]),ge=g.useCallback(p=>{k({type:"SET_REPEAT",payload:p})},[]),pe=g.useCallback(()=>{k({type:"CYCLE_REPEAT"})},[]),fe=g.useCallback(()=>{k({type:"TOGGLE_SHUFFLE"})},[]),me=g.useCallback((p,M)=>{k({type:"SET_QUEUE",payload:{tracks:p,currentIndex:M}})},[]),ye=g.useCallback((p,M,E)=>{k({type:"INSERT_TRACK",payload:{track:p,index:M,autoPlay:E}})},[]),xe=g.useCallback(p=>{k({type:"REMOVE_TRACK",payload:{index:p}})},[]),he=g.useCallback((p,M)=>{k({type:"MOVE_TRACK",payload:{fromIndex:p,toIndex:M}})},[]),ke=g.useCallback(p=>{k({type:"ADD_NEXT",payload:{track:p}})},[]),be=g.useCallback(p=>{k({type:"SET_INDEX",payload:{index:p,autoPlay:!0}})},[]),ve=g.useCallback(p=>{k({type:"SET_INDEX",payload:{index:p,autoPlay:!1}})},[]),Te=g.useCallback(p=>{k({type:"SET_PLAYLIST_META",payload:p})},[]),Me=g.useCallback(p=>{k({type:"SET_PLAYBACK_MODE",payload:p})},[]),Ee=g.useCallback(p=>{k({type:"INIT",payload:p})},[]);g.useEffect(()=>{if(!(!f||!P))try{const p=f.get("ginger:volume"),M=f.get("ginger:muted"),E=f.get("ginger:playbackRate"),j=f.get("ginger:repeatMode"),Pe=f.get("ginger:currentIndex"),C=Re.current;k({type:"INIT",payload:{tracks:C.tracks,playlistMeta:C.playlistMeta,isPaused:C.isPaused,isShuffled:C.isShuffled,playbackMode:C.playbackMode,currentIndex:typeof Pe=="number"?Pe:C.currentIndex,repeatMode:j==="off"||j==="all"||j==="one"?j:C.repeatMode,volume:typeof p=="number"?p:C.volume,muted:typeof M=="boolean"?M:C.muted,playbackRate:typeof E=="number"?E:C.playbackRate}})}catch(p){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during hydration:",p)}},[P,f]),g.useEffect(()=>{if(f)try{f.set("ginger:volume",c.volume),f.set("ginger:muted",c.muted),f.set("ginger:playbackRate",c.playbackRate),f.set("ginger:repeatMode",c.repeatMode),f.set("ginger:currentIndex",c.currentIndex)}catch(p){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw:",p)}},[f,c.volume,c.muted,c.playbackRate,c.repeatMode,c.currentIndex]),g.useEffect(()=>{if(!f||!R)return;const p=c.tracks[c.currentIndex];if(!p)return;const M=`ginger:resume:${x.trackIdentity(p)}`;try{const E=f.get(M);typeof E=="number"&&Number.isFinite(E)&&F(E)}catch(E){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during resume:",E)}},[f,R,c.currentIndex,c.tracks,F]),g.useEffect(()=>{if(!f||!R)return;const p=c.tracks[c.currentIndex];if(!p||!(c.currentTime>=0))return;const M=`ginger:resume:${x.trackIdentity(p)}`,E=setTimeout(()=>{try{f.set(M,c.currentTime)}catch(j){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw during resume save:",j)}},250);return()=>clearTimeout(E)},[f,R,c.currentIndex,c.tracks,c.currentTime]);const Dr=(qe=c.tracks[c.currentIndex])==null?void 0:qe.fileUrl;g.useEffect(()=>{const p=N.current;if(!p)return;if(c.isPaused){p.pause();return}let M=!1;return(async()=>{if(v){let E=!1;try{E=await v()}catch(j){const Pe=j instanceof Error?j.message:"beforePlay rejected";k({type:"MEDIA_ERROR",payload:{message:Pe}});return}if(!E){M||(k({type:"PAUSE"}),I==null||I());return}}M||p.play().catch(E=>{const j=E instanceof Error?E.message:typeof E=="string"?E:"Playback failed (e.g. autoplay blocked or unavailable source)";k({type:"MEDIA_ERROR",payload:{message:j}})})})(),()=>{M=!0}},[v,Dr,I,c.isPaused]);const Ie=g.useCallback(()=>{const p=x.computeEndedTransition(He.current);if(p.kind==="replay_same"){const E=N.current;E&&(E.currentTime=0),k({type:"PLAY"});return}if(p.kind==="stop"){k({type:"PAUSE"}),Z==null||Z();return}const M=p.nextIndex;k({type:"SET_INDEX",payload:{index:M,autoPlay:!0}})},[Z]),Fr=g.useMemo(()=>({play:_,pause:D,next:O,prev:$,seek:F}),[_,D,O,$,F]);dn(!!b,c,Fr);const We=_r??(T!=null&&T.seek&&/[\u0590-\u08FF]/.test(T.seek)?"rtl":"ltr"),Ur=g.useMemo(()=>({state:c,dispatch:k,audioRef:N,notifyEnded:Ie,init:Ee,play:_,pause:D,togglePlayPause:oe,seek:F,setVolume:ue,setMuted:ce,toggleMute:le,setPlaybackRate:de,next:O,prev:$,setRepeatMode:ge,cycleRepeat:pe,toggleShuffle:fe,setQueue:me,insertTrackAt:ye,removeTrackAt:xe,moveTrack:he,enqueueNext:ke,playTrackAt:be,selectTrackAt:ve,setPlaylistMeta:Te,setPlaybackMode:Me}),[pe,k,Ee,O,Ie,D,_,be,ye,xe,he,ke,ve,$,F,ce,de,me,ge,Te,Me,ue,c,le,oe,fe]),Vr=g.useMemo(()=>({tracks:c.tracks,currentIndex:c.currentIndex,isPaused:c.isPaused,isShuffled:c.isShuffled,repeatMode:c.repeatMode,originalTracks:c.originalTracks,playlistMeta:c.playlistMeta,init:Ee,play:_,pause:D,togglePlayPause:oe,next:O,prev:$,setRepeatMode:ge,cycleRepeat:pe,toggleShuffle:fe,playbackMode:c.playbackMode,setQueue:me,insertTrackAt:ye,removeTrackAt:xe,moveTrack:he,enqueueNext:ke,playTrackAt:be,selectTrackAt:ve,setPlaylistMeta:Te,setPlaybackMode:Me,dispatch:k}),[c.tracks,c.currentIndex,c.isPaused,c.isShuffled,c.repeatMode,c.playbackMode,c.originalTracks,c.playlistMeta,Ee,_,D,oe,O,$,ge,pe,fe,me,ye,xe,he,ke,be,ve,Te,Me,k]),Br=g.useMemo(()=>({currentTime:c.currentTime,duration:c.duration,bufferedFraction:c.bufferedFraction,isBuffering:c.isBuffering,errorMessage:c.errorMessage,volume:c.volume,muted:c.muted,playbackRate:c.playbackRate,seek:F,setVolume:ue,setMuted:ce,toggleMute:le,setPlaybackRate:de,audioRef:N,notifyEnded:Ie,dispatch:k}),[c.currentTime,c.duration,c.bufferedFraction,c.isBuffering,c.errorMessage,c.volume,c.muted,c.playbackRate,F,ue,ce,le,de,N,Ie,k]),Xe=x.derivePlaybackUiState(c),Ke=g.useMemo(()=>L?Ae:{...gn,...Ae},[Ae,L]),G=g.useMemo(()=>({className:X,style:Ke,"data-ginger-playback":Xe,dir:We}),[X,Ke,Xe,We]),Or=g.useMemo(()=>{if(!W)return s.jsx("div",{className:G.className,style:G.style,"data-ginger-playback":G["data-ginger-playback"],dir:G.dir,children:e});const p=g.Children.only(e);if(!g.isValidElement(p))throw new Error("Ginger.Provider asChild expects a single React element child.");const M=p,E=M.props.style;return g.cloneElement(M,{className:fn(M.props.className,G.className),style:E&&typeof E=="object"?{...E,...G.style}:G.style,"data-ginger-playback":G["data-ginger-playback"],dir:G.dir})},[W,e,G]);return s.jsx(Hr,{locale:T,children:s.jsx(h.GingerPlaybackContext.Provider,{value:Vr,children:s.jsx(h.GingerMediaContext.Provider,{value:Br,children:s.jsx(er.Provider,{value:Ur,children:Or})})})})}function fn(e,r){const t=[e,r].filter(Boolean).join(" ");return t===""?void 0:t}const mn={Provider:pn,Player:Yr,Current:{Title:Wr,Artist:Xr,Album:Kr,Description:qr,Copyright:Jr,Genre:Zr,Label:en,Isrc:rn,TrackNumber:nn,Year:fr,Lyrics:mr,LyricsSynced:Be,Chapters:Oe,FileUrl:kr,Artwork:br,QueueIndex:vr,QueueLength:Tr,QueuePosition:Mr,Elapsed:Er,Duration:Ir,Remaining:Pr,Progress:Sr,TimeRail:Ar,BufferRail:Rr,PlaybackState:jr,ErrorMessage:Gr},Queue:{Title:sn,Subtitle:on,Description:un,Copyright:cn,Artwork:wr},Control:{PlayPause:ir,Repeat:sr,Next:or,Previous:ur,Shuffle:cr,SeekBar:lr,Volume:dr,Mute:gr,PlaybackRate:pr},Icon:{Play:we,Pause:Le,SkipForward:Fe,SkipBack:De,Shuffle:_e,Volume2:Ue,VolumeX:Ve,RepeatGlyph:Ne,Wrapper:A},Playlist:an};exports.Chapters=Oe;exports.Ginger=mn;exports.LyricsSynced=Be;exports.Pause=Le;exports.Play=we;exports.RepeatGlyph=Ne;exports.ShuffleIcon=_e;exports.SkipBack=De;exports.SkipForward=Fe;exports.Volume2=Ue;exports.VolumeX=Ve;exports.Wrapper=A;exports.clampPlaybackRate=Se;exports.clampVolume=z;exports.createInitialState=Ye;exports.defaultGingerLocale=Q;exports.gingerReducer=Nr;exports.parseLrc=yr;exports.useGingerChapters=hr;exports.useGingerLocale=S;exports.useGingerLyricsSync=xr;exports.usePlayPauseBinding=ar;exports.useSeekBarBinding=nr;exports.useVolumeSlider=tr;
2
- //# sourceMappingURL=ginger-NEcOSSJD.cjs.map
1
+ "use strict";const s=require("react/jsx-runtime"),g=require("react"),h=require("./GingerSplitContexts-C7puo0M7.cjs"),x=require("./selectors-YXnP8Y8g.cjs"),er=g.createContext(null);function $r(){const e=g.useContext(er);if(!e)throw new Error("Ginger components must be used within <Ginger.Provider>");return e}function Je(e){const{buffered:r,duration:t}=e;return!(t>0)||r.length===0?0:Math.min(1,r.end(r.length-1)/t)}function Yr({className:e,style:r,preload:t="metadata",crossOrigin:a,respectReducedMotion:n=!1}){var I;const{audioRef:i,dispatch:o,state:u,notifyEnded:d}=$r(),l=((I=u.tracks[u.currentIndex])==null?void 0:I.fileUrl)??"",m=g.useRef({currentTime:-1,duration:-1,bufferedFraction:-1}),y=g.useRef(""),[T,b]=g.useState(!1);g.useEffect(()=>{if(!n||typeof window>"u")return;const f=window.matchMedia("(prefers-reduced-motion: reduce)"),P=()=>b(f.matches);return P(),f.addEventListener("change",P),()=>f.removeEventListener("change",P)},[n]);const v=(f,P=!1)=>{const R={currentTime:f.currentTime,duration:f.duration,bufferedFraction:Je(f)},L=m.current,W=T?.5:.25,X=Math.abs(R.currentTime-L.currentTime)>=W||Math.abs(R.duration-L.duration)>=.01||Math.abs(R.bufferedFraction-L.bufferedFraction)>=.01;!P&&!X||(m.current=R,o({type:"MEDIA_TIME_UPDATE",payload:R}))};return g.useEffect(()=>{const f=i.current;f&&(f.volume=u.volume,f.muted=u.muted)},[i,u.volume,u.muted]),g.useEffect(()=>{const f=i.current;if(f){if(!l){f.removeAttribute("src"),m.current={currentTime:-1,duration:-1,bufferedFraction:-1},y.current!==""&&o({type:"MEDIA_SOURCE_CLEARED"}),y.current="";return}f.getAttribute("src")!==l&&(f.src=l,f.load(),m.current={currentTime:-1,duration:-1,bufferedFraction:-1}),y.current=l}},[i,o,u.currentIndex,u.tracks,l]),g.useEffect(()=>{const f=i.current;f&&(f.playbackRate=u.playbackRate)},[i,u.playbackRate,l]),s.jsx("audio",{"data-ginger-component":"Player",ref:i,className:e,style:r,preload:t,crossOrigin:a,controls:!1,playsInline:!0,onTimeUpdate:f=>{v(f.currentTarget)},onLoadedMetadata:f=>{const P=f.currentTarget;m.current={currentTime:-1,duration:-1,bufferedFraction:-1},o({type:"MEDIA_LOADED_METADATA",payload:{duration:P.duration,bufferedFraction:Je(P)}})},onSeeking:f=>v(f.currentTarget,!0),onSeeked:f=>v(f.currentTarget,!0),onEnded:()=>d(),onPlay:()=>o({type:"MEDIA_PLAY"}),onPause:()=>o({type:"MEDIA_PAUSE"}),onWaiting:()=>o({type:"MEDIA_WAITING"}),onCanPlay:()=>o({type:"MEDIA_CANPLAY"}),onProgress:f=>v(f.currentTarget,!0),onVolumeChange:f=>{const P=f.currentTarget;o({type:"MEDIA_VOLUME_SYNC",payload:{volume:P.volume,muted:P.muted}})},onError:()=>{var L;const f=i.current,P=(L=f==null?void 0:f.error)==null?void 0:L.code;o({type:"MEDIA_ERROR",payload:{message:P===1?"MEDIA_ERR_ABORTED":P===2?"MEDIA_ERR_NETWORK":P===3?"MEDIA_ERR_DECODE":P===4?"MEDIA_ERR_SRC_NOT_SUPPORTED":"MEDIA_ERR_UNKNOWN"}})}})}const Q={seek:"Seek",volume:"Volume",playbackSpeed:"Playback speed",chaptersList:"Chapters",syncedLyricsList:"Synced lyrics",nextTrack:"Next track",previousTrack:"Previous track",shuffle:"Shuffle",mute:"Mute",unmute:"Unmute",play:"Play",pause:"Pause",repeat:{off:"Repeat off",all:"Repeat all",one:"Repeat one"},playbackRateNormal:"1× normal",playbackRateTimes:e=>`${e}×`};function Qr(e){return e?{...Q,...e,repeat:{...Q.repeat,...e.repeat}}:Q}const rr=g.createContext(Q);function Hr({locale:e,children:r}){const t=Qr(e);return s.jsx(rr.Provider,{value:t,children:r})}function S(){return g.useContext(rr)}function H(e){if(!Number.isFinite(e)||e<0)return"0:00";const r=Math.floor(e%60);return`${Math.floor(e/60)}:${r.toString().padStart(2,"0")}`}function nr(){const e=h.useGingerPlayback(),r=h.useGingerMedia(),t=S(),a=g.useMemo(()=>h.gingerStateFromContextValues(e,r),[e,r]),n=x.effectiveDuration(a),i=n>0?a.currentTime:0,o=Number.isFinite(i)?i:0,u=n>0?`${H(o)} of ${H(n)}`:H(o),d=l=>{r.seek(Number(l.currentTarget.value))};return{state:a,value:o,min:0,max:n>0?n:1,step:"any",ariaValueText:u,ariaLabel:t.seek,onSeekInput:d,onSeekChange:d}}function tr(){const e=h.useGingerPlayback(),r=h.useGingerMedia(),t=S(),a=g.useMemo(()=>h.gingerStateFromContextValues(e,r),[e,r]),n=i=>{r.setVolume(Number(i.currentTarget.value))};return{state:a,value:a.volume,min:0,max:1,step:"any",ariaValueText:`${Math.round(a.volume*100)}%`,ariaLabel:t.volume,onVolumeInput:n,onVolumeChange:n}}function ar(e){const r=h.useGingerPlayback(),t=S(),a=(e==null?void 0:e.playAriaLabel)??t.play,n=(e==null?void 0:e.pauseAriaLabel)??t.pause;return{isPaused:r.isPaused,toggle:r.togglePlayPause,ariaLabel:r.isPaused?a:n}}function A(e){const{className:r,width:t,height:a,viewBox:n,fill:i,stroke:o,strokeWidth:u,strokeLinecap:d,strokeLinejoin:l,children:m,...y}=e;return s.jsx("svg",{"data-ginger-component":"Wrapper",xmlns:"http://www.w3.org/2000/svg",width:t??24,height:a??24,viewBox:n??"0 0 24 24",fill:"none",stroke:o??"currentColor",strokeWidth:u??2,strokeLinecap:d??"round",strokeLinejoin:l??"round",className:r,"aria-hidden":!0,role:"presentation",...y,children:m})}function Le(){return s.jsx(A,{children:s.jsx("path",{"data-ginger-component":"Pause",d:"M6 4h4v16H6zM14 4h4v16h-4z"})})}function we(){return s.jsx(A,{children:s.jsx("path",{"data-ginger-component":"Play",d:"M5 3L19 12 5 21 5 3z"})})}function je(){return s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"m17 2 4 4-4 4"}),s.jsx("path",{d:"M3 11v-1a4 4 0 0 1 4-4h14"}),s.jsx("path",{d:"m7 22-4-4 4-4"}),s.jsx("path",{d:"M21 13v1a4 4 0 0 1-4 4H3"})]})}function Ne({mode:e}){return e==="one"?s.jsxs(A,{children:[s.jsx(je,{}),s.jsx("path",{"data-ginger-component":"RepeatGlyph",d:"M11 10h1v4"})]}):e==="all"?s.jsx(A,{children:s.jsx(je,{})}):s.jsxs(A,{children:[s.jsx(je,{}),s.jsx("line",{"data-ginger-component":"RepeatGlyph",x1:"3",x2:"21",y1:"3",y2:"21"})]})}function _e(){return s.jsxs(A,{children:[s.jsx("path",{d:"m18 14 4 4-4 4"}),s.jsx("path",{d:"m18 2 4 4-4 4"}),s.jsx("path",{"data-ginger-component":"ShuffleIcon",d:"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22"}),s.jsx("path",{d:"M2 6h1.972a4 4 0 0 1 3.6 2.2"}),s.jsx("path",{d:"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45"})]})}function De(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"SkipBack",d:"M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z"}),s.jsx("path",{d:"M3 20V4"})]})}function Fe(){return s.jsxs(A,{children:[s.jsx("path",{d:"M21 4v16"}),s.jsx("path",{"data-ginger-component":"SkipForward",d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z"})]})}function Ue(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"Volume2",d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}),s.jsx("path",{d:"M16 9a5 5 0 0 1 0 6"}),s.jsx("path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728"})]})}function Ve(){return s.jsxs(A,{children:[s.jsx("path",{"data-ginger-component":"VolumeX",d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}),s.jsx("line",{x1:"22",x2:"16",y1:"9",y2:"15"}),s.jsx("line",{x1:"16",x2:"22",y1:"9",y2:"15"})]})}function ir({playLabel:e="Play",pauseLabel:r="Pause",playAriaLabel:t,pauseAriaLabel:a,children:n,type:i="button",onClick:o,...u}){const d=S(),l=typeof e=="string"?e:d.play,m=typeof r=="string"?r:d.pause,y=ar({playAriaLabel:t??l,pauseAriaLabel:a??m});return s.jsx("button",{"data-ginger-component":"PlayPause",...u,type:i,"aria-label":y.ariaLabel,onClick:T=>{y.toggle(),o==null||o(T)},children:n??(y.isPaused?s.jsx(we,{}):s.jsx(Le,{}))})}ir.displayName="Ginger.Control.PlayPause";function sr({type:e="button",ariaLabel:r,onClick:t,children:a,...n}){const{repeatMode:i,cycleRepeat:o}=h.useGingerPlayback(),d=S().repeat[i];return s.jsx("button",{"data-ginger-component":"Repeat",...n,type:e,"aria-label":r??d,onClick:l=>{o(),t==null||t(l)},children:a??s.jsx(Ne,{mode:i})})}sr.displayName="Ginger.Control.Repeat";function or({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{next:i}=h.useGingerPlayback(),o=S();return s.jsx("button",{"data-ginger-component":"Next",...n,type:e,"aria-label":t??o.nextTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx(Fe,{})})}or.displayName="Ginger.Control.Next";function ur({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{prev:i}=h.useGingerPlayback(),o=S();return s.jsx("button",{"data-ginger-component":"Previous",...n,type:e,"aria-label":t??o.previousTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx(De,{})})}ur.displayName="Ginger.Control.Previous";function cr({type:e="button",children:r,ariaLabel:t,onClick:a,...n}){const{isShuffled:i,toggleShuffle:o}=h.useGingerPlayback(),u=S();return s.jsx("button",{"data-ginger-component":"Shuffle",...n,type:e,"aria-pressed":i,"aria-label":t??u.shuffle,onClick:d=>{o(),a==null||a(d)},children:r??s.jsx(_e,{})})}cr.displayName="Ginger.Control.Shuffle";function lr({inputStyle:e,style:r,unstyled:t=!1,ariaLabel:a,...n}){const i=nr(),o=t?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"SeekBar",...n,type:"range",min:i.min,max:i.max,step:i.step,value:i.value,"aria-label":a??i.ariaLabel,"aria-valuetext":i.ariaValueText,onInput:i.onSeekInput,onChange:i.onSeekChange,style:o})}lr.displayName="Ginger.Control.SeekBar";function dr({inputStyle:e,style:r,unstyled:t=!1,ariaLabel:a,...n}){const i=tr(),o=t?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"Volume",...n,type:"range",min:i.min,max:i.max,step:i.step,value:i.value,"aria-label":a??i.ariaLabel,"aria-valuetext":i.ariaValueText,onInput:i.onVolumeInput,onChange:i.onVolumeChange,style:o})}dr.displayName="Ginger.Control.Volume";function gr({ariaLabel:e,muteLabel:r,unmuteLabel:t,type:a="button",onClick:n,children:i,...o}){const{muted:u,toggleMute:d}=h.useGingerMedia(),l=S();return s.jsx("button",{"data-ginger-component":"Mute",...o,type:a,"aria-pressed":u,"aria-label":e??(u?l.unmute:l.mute),onClick:m=>{d(),n==null||n(m)},children:i??(u?t??s.jsx(Ve,{}):r??s.jsx(Ue,{}))})}gr.displayName="Ginger.Control.Mute";const zr=[.5,.75,1,1.25,1.5,2];function pr({rates:e=zr,style:r,ariaLabel:t,children:a,...n}){const{playbackRate:i,setPlaybackRate:o}=h.useGingerMedia(),u=S(),d=g.useMemo(()=>Array.from(new Set([...e,i])).sort((l,m)=>l-m),[e,i]);return s.jsx("select",{"data-ginger-component":"PlaybackRate",...n,"aria-label":t??u.playbackSpeed,value:String(i),style:r,onChange:l=>o(Number(l.currentTarget.value)),children:a??d.map(l=>s.jsx("option",{value:String(l),children:l===1?u.playbackRateNormal:u.playbackRateTimes(l)},l))})}pr.displayName="Ginger.Control.PlaybackRate";function V(e,r){function t(a){const n=h.useGingerState(),o=(r(n)??"").trim(),{className:u,style:d,fallback:l,empty:m,children:y}=a;if(!o){const T=m??l??null;return T?s.jsx("span",{className:u,style:d,children:T}):null}return y?s.jsx("span",{className:u,style:d,children:y(o,n)}):s.jsx("span",{className:u,style:d,children:o})}return t.displayName=e,t}function B(e,r){return V(e,t=>r(x.getCurrentTrack(t)))}const Wr=B("Ginger.Current.Title",e=>e==null?void 0:e.title),Xr=B("Ginger.Current.Artist",e=>e==null?void 0:e.artist),Kr=V("Ginger.Current.Album",e=>x.resolvedAlbumLine(e)),qr=B("Ginger.Current.Description",e=>e==null?void 0:e.description),Jr=V("Ginger.Current.Copyright",e=>{var t;const r=x.getCurrentTrack(e);return(r==null?void 0:r.copyright)??((t=e.playlistMeta)==null?void 0:t.copyright)}),Zr=B("Ginger.Current.Genre",e=>e==null?void 0:e.genre),en=B("Ginger.Current.Label",e=>e==null?void 0:e.label),rn=B("Ginger.Current.Isrc",e=>e==null?void 0:e.isrc),nn=B("Ginger.Current.TrackNumber",e=>(e==null?void 0:e.trackNumber)!=null?String(e.trackNumber):void 0);function fr({className:e,style:r,fallback:t,empty:a,children:n,format:i}){var l;const o=h.useGingerState(),u=(l=x.getCurrentTrack(o))==null?void 0:l.year;if(typeof u!="number"||!Number.isFinite(u)){const m=a??t??null;return m?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:m}):null}const d=i?i(u):String(u);return n?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:n(d,o)}):s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:d})}fr.displayName="Ginger.Current.Year";function mr({className:e,style:r,fallback:t,empty:a,children:n,preserveWhitespace:i=!0,unstyled:o=!1}){var y;const u=h.useGingerState(),d=((y=x.getCurrentTrack(u))==null?void 0:y.lyrics)??"",l=i?d.replace(/^\s+|\s+$/g,""):d.trim();if(!l){const T=a??t??null;return T?s.jsx("span",{"data-ginger-component":"Lyrics",className:e,style:r,children:T}):null}const m=!o&&i?{whiteSpace:"pre-wrap"}:void 0;return n?s.jsx("span",{className:e,style:{...m,...r},children:n(l,u)}):s.jsx("span",{className:e,style:{...m,...r},children:l})}mr.displayName="Ginger.Current.Lyrics";const Ze=/\[(\d{1,2}):(\d{2})(?:\.(\d{1,3}))?\]/g;function yr(e){const r=[];for(const t of e.split(/\r?\n/)){const a=[...t.matchAll(Ze)];if(a.length===0)continue;const n=t.replace(Ze,"").trim();for(const i of a){const o=Number(i[1]??0),u=Number(i[2]??0),d=Number((i[3]??"0").padEnd(3,"0")),l=o*60+u+d/1e3;Number.isFinite(l)&&l>=0&&r.push({time:l,text:n})}}return r.sort((t,a)=>t.time-a.time)}function xr(){const{tracks:e,currentIndex:r}=h.useGingerPlayback(),{currentTime:t}=h.useGingerMedia(),a=e[r],n=g.useMemo(()=>a?Array.isArray(a.lyricsTimed)&&a.lyricsTimed.length>0?[...a.lyricsTimed].filter(o=>Number.isFinite(o.time)&&o.time>=0).sort((o,u)=>o.time-u.time):typeof a.lyrics=="string"?yr(a.lyrics):[]:[],[a]),i=g.useMemo(()=>{for(let o=n.length-1;o>=0;o-=1)if(t>=n[o].time)return o;return-1},[t,n]);return{lines:n,activeIndex:i,activeLine:i>=0?n[i]??null:null}}function Be({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,activeClassName:i,lineClassName:o,children:u}){const d=h.useGingerState(),l=S(),{lines:m,activeIndex:y}=xr();if(m.length===0){const b=a??t??null;return b?s.jsx("span",{"data-ginger-component":"LyricsSynced",className:e,style:r,children:b}):null}const T=n?{}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)"};return s.jsx("ul",{className:e,style:{...T,...r},"aria-label":l.syncedLyricsList,children:m.map((b,v)=>{const I=v===y;return s.jsx("li",{"aria-current":I?"true":void 0,"data-ginger-active":I||void 0,className:[o,I?i:void 0].filter(Boolean).join(" ")||void 0,style:n?void 0:{padding:"var(--ginger-playlist-row-padding, 4px 8px)",fontWeight:I?600:400,opacity:I?1:.75},children:u?u(b,v,I,d):b.text},`${b.time}-${v}`)})})}Be.displayName="Ginger.Current.LyricsSynced";function hr(){const{tracks:e,currentIndex:r}=h.useGingerPlayback(),{currentTime:t,seek:a}=h.useGingerMedia(),n=g.useMemo(()=>{var u;return[...((u=e[r])==null?void 0:u.chapters)??[]].filter(d=>d&&Number.isFinite(d.startSeconds)&&d.startSeconds>=0).sort((d,l)=>d.startSeconds-l.startSeconds)},[r,e]),i=g.useMemo(()=>{if(n.length===0)return-1;for(let o=n.length-1;o>=0;o-=1)if(t>=n[o].startSeconds)return o;return-1},[t,n]);return{list:n,activeIndex:i,active:i>=0?n[i]??null:null,seekTo:o=>{const u=n[o];u&&a(u.startSeconds)}}}function Oe({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,formatStart:i=H,children:o}){const u=h.useGingerState(),d=S(),{list:l,activeIndex:m,seekTo:y}=hr();if(l.length===0){const b=a??t??null;return b?s.jsx("span",{"data-ginger-component":"Chapters",className:e,style:r,children:b}):null}const T=n?{}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)"};return s.jsx("ul",{className:e,style:{...T,...r},"aria-label":d.chaptersList,children:l.map((b,v)=>{const I=v===m;return s.jsx("li",{children:s.jsx("button",{type:"button","aria-current":I?"true":void 0,"data-ginger-active":I||void 0,onClick:()=>y(v),style:{width:n?void 0:"100%",textAlign:n?void 0:"left",border:n?void 0:"none",background:n?void 0:I?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:n?void 0:"inherit",font:n?void 0:"inherit",cursor:n?void 0:"pointer",padding:n?void 0:"var(--ginger-playlist-row-padding, 6px 8px)"},children:o?o(b,v,I,u):n?s.jsxs(s.Fragment,{children:[i(b.startSeconds)," ",b.title]}):s.jsxs("span",{children:[s.jsx("span",{style:{opacity:.75,marginRight:"0.35em"},children:i(b.startSeconds)}),b.title]})})},`${b.startSeconds}-${b.title}`)})})}Oe.displayName="Ginger.Current.Chapters";function kr({visible:e=!1,className:r,style:t,fallback:a,empty:n,children:i}){var d;const o=h.useGingerState();if(!e)return null;const u=((d=x.getCurrentTrack(o))==null?void 0:d.fileUrl)??"";if(!u){const l=n??a??null;return l?s.jsx("span",{className:r,style:t,children:l}):null}return i?s.jsx("span",{"data-ginger-component":"FileUrl",className:r,style:t,children:i(u,o)}):s.jsx("span",{className:r,style:t,children:u})}kr.displayName="Ginger.Current.FileUrl";function br({className:e,style:r,fallback:t,empty:a,sizes:n,loading:i,onError:o,decoding:u,unstyled:d=!1,imgStyle:l}){const m=h.useGingerState(),y=x.getCurrentTrack(m),T=x.resolvedArtwork(m);if(!T){const v=a??t??null;return v?s.jsx("span",{className:e,style:r,children:v}):null}const b=[y==null?void 0:y.title,y==null?void 0:y.artist].filter(Boolean).join(" — ")||"Artwork";return s.jsx("div",{"data-ginger-component":"Artwork",className:e,style:d?{...r}:{background:"var(--ginger-artwork-bg, transparent)",borderRadius:"var(--ginger-artwork-radius, 0)",overflow:"hidden",...r},children:s.jsx("img",{src:T,alt:b,sizes:n,loading:i,decoding:u,onError:o,style:{display:d?void 0:"block",width:d?void 0:"100%",height:d?void 0:"100%",objectFit:d?void 0:"cover",...l}})})}br.displayName="Ginger.Current.Artwork";function vr({base:e=0,className:r,style:t,fallback:a,empty:n,children:i}){const o=h.useGingerState();if(o.tracks.length===0){const l=n??a??null;return l?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:l}):null}const d=String(o.currentIndex+e);return i?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:i(d,o)}):s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:t,children:d})}vr.displayName="Ginger.Current.QueueIndex";function Tr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=String(i.tracks.length);if(i.tracks.length===0){const u=a??t??null;return u?s.jsx("span",{className:e,style:r,children:u}):null}return n?s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:n(o,i)}):s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:o})}Tr.displayName="Ginger.Current.QueueLength";function Mr({base:e=0,separator:r=" / ",className:t,style:a,fallback:n,empty:i,children:o}){const u=h.useGingerState(),d=u.tracks.length;if(d===0){const T=i??n??null;return T?s.jsx("span",{className:t,style:a,children:T}):null}const l=String(u.currentIndex+e),m=String(d),y=`${l}${r}${m}`;return o?s.jsx("span",{"data-ginger-component":"QueuePosition",className:t,style:a,children:o({index:l,length:m,label:y},u)}):s.jsx("span",{"data-ginger-component":"QueuePosition",className:t,style:a,children:y})}Mr.displayName="Ginger.Current.QueuePosition";function $e(e,r,t){const{className:a,style:n,fallback:i,empty:o,children:u,format:d=H}=t;if(!(e>=0)||!Number.isFinite(e)){const m=o??i??null;return m?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:m}):null}const l=d(e);return u?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:u(l,r)}):s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:n,children:l})}function Er(e){const r=h.useGingerState();return $e(r.currentTime,r,e)}Er.displayName="Ginger.Current.Elapsed";function Ir(e){const r=h.useGingerState();return $e(x.effectiveDuration(r),r,e)}Ir.displayName="Ginger.Current.Duration";function Pr(e){const r=h.useGingerState();return $e(x.effectiveRemaining(r),r,e)}Pr.displayName="Ginger.Current.Remaining";function Sr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=x.effectiveDuration(i),u=x.progressFraction(i);if(!(o>0)){const d=a??t??null;return d?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:d}):null}return n?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:n({fraction:u,currentTime:i.currentTime,duration:o},i)}):s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:`${Math.round(u*100)}%`})}Sr.displayName="Ginger.Current.Progress";function Ar({className:e,style:r,height:t=4,showBuffered:a=!1,unstyled:n=!1}){const i=h.useGingerState(),o=`${Math.round(x.progressFraction(i)*100)}%`,u=`${Math.round(Math.min(1,Math.max(0,i.bufferedFraction))*100)}%`;return s.jsxs("div",{"data-ginger-component":"TimeRail",className:e,style:n?{...r}:{width:"100%",height:t,background:"var(--ginger-muted-color, #e5e7eb)",borderRadius:999,overflow:"hidden",position:"relative",...r},"aria-hidden":!0,children:[a?s.jsx("div",{"data-ginger-component":"TimeRail",style:{position:n?void 0:"absolute",left:n?void 0:0,top:n?void 0:0,height:n?void 0:"100%",width:u,background:n?void 0:"var(--ginger-buffer-color, rgba(107, 114, 128, 0.35))"}}):null,s.jsx("div",{"data-ginger-component":"TimeRail",style:{position:n?void 0:"relative",width:o,height:n?void 0:"100%",background:n?void 0:"var(--ginger-primary-color, #111827)"}})]})}Ar.displayName="Ginger.Current.TimeRail";function Rr({className:e,style:r,height:t=4,unstyled:a=!1}){const n=h.useGingerState(),i=`${Math.round(Math.min(1,Math.max(0,n.bufferedFraction))*100)}%`;return s.jsx("div",{"data-ginger-component":"BufferRail",className:e,style:a?{...r}:{width:"100%",height:t,background:"var(--ginger-muted-color, #e5e7eb)",borderRadius:999,overflow:"hidden",...r},"aria-hidden":!0,children:s.jsx("div",{"data-ginger-component":"BufferRail",style:{width:i,height:a?void 0:"100%",background:a?void 0:"var(--ginger-buffer-color, rgba(107, 114, 128, 0.35))"}})})}Rr.displayName="Ginger.Current.BufferRail";function jr({className:e,style:r,fallback:t,empty:a,children:n}){const i=h.useGingerState(),o=x.derivePlaybackUiState(i);return n?s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:n(o,i)}):s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:o})}jr.displayName="Ginger.Current.PlaybackState";function Gr({className:e,style:r,fallback:t,empty:a,live:n="polite",children:i}){const o=h.useGingerState(),u=o.errorMessage??"";if(!u){const d=a??t??null;return d?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,children:d}):null}return i?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":n,children:i(u,o)}):s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":n,children:u})}Gr.displayName="Ginger.Current.ErrorMessage";const Ce=g.createContext(null);function tn(){const e=g.useContext(Ce);if(!e)throw new Error("Ginger.Playlist.Track must be used inside <Ginger.Playlist>");return e}function Cr({children:e,unstyled:r=!1,rowStyle:t,renderTrack:a,playOnSelect:n=!0,style:i,...o}){const{tracks:u,currentIndex:d,playTrackAt:l,selectTrackAt:m}=h.useGingerPlayback(),y=r?{...i}:{listStyle:"none",margin:0,padding:0,fontFamily:"var(--ginger-font-family, system-ui, sans-serif)",fontSize:"var(--ginger-font-size, 14px)",color:"var(--ginger-primary-color, #111827)",...i};return e!==void 0?s.jsx(Ce.Provider,{value:{playOnSelect:n},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:e})}):s.jsx(Ce.Provider,{value:{playOnSelect:n},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:u.map((b,v)=>{const I=v===d;return s.jsx("li",{children:s.jsx("button",{type:"button",onClick:()=>{n?l(v):m(v)},style:{width:r?void 0:"100%",textAlign:r?void 0:"left",border:r?void 0:"none",background:r?void 0:I?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:r?void 0:"inherit",font:r?void 0:"inherit",cursor:r?void 0:"pointer",padding:r?void 0:"var(--ginger-playlist-row-padding, 6px 8px)",...t},children:a?a(b,v,I):s.jsxs("span",{children:[b.title,b.artist?` — ${b.artist}`:""]})})},`${v}-${x.trackIdentity(b)}`)})})})}Cr.displayName="Ginger.Playlist";function Lr({index:e,unstyled:r=!1,className:t,style:a,children:n,liProps:i,onClick:o,...u}){const{playOnSelect:d}=tn(),{tracks:l,currentIndex:m,playTrackAt:y,selectTrackAt:T}=h.useGingerPlayback(),b=e===m,v=l[e],I=v!=null?s.jsxs("span",{"data-ginger-component":"PlaylistTrack",children:[v.title,v.artist?` — ${v.artist}`:""]}):null;return s.jsx("li",{...i,"data-ginger-component":"PlaylistTrack",children:s.jsx("button",{type:"button","data-ginger-component":"PlaylistTrackButton","aria-current":b?"true":void 0,"data-ginger-active":b||void 0,className:t,style:{width:r?void 0:"100%",textAlign:r?void 0:"left",border:r?void 0:"none",background:r?void 0:b?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:r?void 0:"inherit",font:r?void 0:"inherit",cursor:r?void 0:"pointer",padding:r?void 0:"var(--ginger-playlist-row-padding, 6px 8px)",...a},...u,onClick:f=>{o==null||o(f),!f.defaultPrevented&&(d?y(e):T(e))},children:n??I})})}Lr.displayName="Ginger.Playlist.Track";const an=Object.assign(Cr,{Track:Lr}),sn=V("Ginger.Queue.Title",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.title}),on=V("Ginger.Queue.Subtitle",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.subtitle}),un=V("Ginger.Queue.Description",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.description}),cn=V("Ginger.Queue.Copyright",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.copyright});function wr({className:e,style:r,fallback:t,empty:a,unstyled:n=!1,imgStyle:i}){var l,m;const o=h.useGingerState(),u=(l=o.playlistMeta)==null?void 0:l.artworkUrl;if(!u){const y=a??t??null;return y?s.jsx("span",{"data-ginger-component":"Artwork",className:e,style:r,children:y}):null}const d=((m=o.playlistMeta)==null?void 0:m.title)??"Playlist artwork";return s.jsx("span",{"data-ginger-component":"Artwork",className:e,style:n?{...r}:{display:"inline-block",background:"var(--ginger-artwork-bg, #f3f4f6)",borderRadius:"var(--ginger-artwork-radius, 6px)",overflow:"hidden",...r},children:s.jsx("img",{src:u,alt:d,style:{display:n?void 0:"block",width:n?void 0:"100%",height:n?void 0:"100%",objectFit:n?void 0:"cover",...i}})})}wr.displayName="Ginger.Queue.Artwork";function z(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):1}function Se(e){return Number.isFinite(e)?Math.min(4,Math.max(.25,e)):1}const U={currentTime:0,duration:0,bufferedFraction:0,isBuffering:!1,errorMessage:null},ln={...U,volume:1,muted:!1,playbackRate:1};function Ye(e){const r=[...e.tracks];let t=x.clampIndex(e.currentIndex??0,r.length),a=null,n=r;return e.isShuffled&&r.length>1&&(a=[...r],n=x.shuffleWithAnchor(r,t),t=0),{tracks:n,currentIndex:t,playbackMode:e.playbackMode??"playlist",isPaused:e.isPaused??!0,isShuffled:!!(e.isShuffled&&n.length>1),repeatMode:e.repeatMode??"off",originalTracks:a,playlistMeta:e.playlistMeta??null,...ln,volume:z(e.volume??1),muted:e.muted??!1,playbackRate:Se(e.playbackRate??1)}}function Nr(e,r){switch(r.type){case"INIT":{const{tracks:t,currentIndex:a,playlistMeta:n,isPaused:i,isShuffled:o,repeatMode:u,playbackMode:d,volume:l,muted:m,playbackRate:y}=r.payload;return Ye({tracks:t,currentIndex:a,playlistMeta:n??null,isPaused:i??!0,isShuffled:o??!1,repeatMode:u??"off",playbackMode:d??"playlist",volume:l,muted:m,playbackRate:y})}case"SET_QUEUE":{const{tracks:t,currentIndex:a}=r.payload,n=[...t],i=x.clampIndex(a??e.currentIndex,n.length);return{...e,tracks:n,currentIndex:i,isShuffled:!1,originalTracks:null,...U}}case"INSERT_TRACK":{const t=r.payload.index??e.tracks.length,a=x.insertTrackAt(e.tracks,r.payload.track,t);if(r.payload.autoPlay){const o=x.clampIndex(t,a.length);return{...e,tracks:a,currentIndex:o,isShuffled:!1,originalTracks:null,isPaused:!1,...U}}const n=t<=e.currentIndex?e.currentIndex+1:e.currentIndex,i=e.isShuffled&&e.originalTracks?x.insertTrackAt(e.originalTracks,r.payload.track,e.originalTracks.length):e.originalTracks;return{...e,tracks:a,originalTracks:i,currentIndex:x.clampIndex(n,a.length)}}case"REMOVE_TRACK":{const t=r.payload.index,a=x.removeTrackAt(e.tracks,t),n=t<e.currentIndex?e.currentIndex-1:t===e.currentIndex?Math.min(e.currentIndex,Math.max(0,a.length-1)):e.currentIndex,i=e.isShuffled&&e.originalTracks?(()=>{const u=e.tracks[t],d=x.findIndexByTrackIdentity(e.originalTracks,u);return x.removeTrackAt(e.originalTracks,d)})():e.originalTracks,o=e.isShuffled&&a.length>1;return{...e,tracks:a,isShuffled:o,originalTracks:o?i:null,currentIndex:x.clampIndex(n,a.length),...t===e.currentIndex?U:{}}}case"MOVE_TRACK":{const{fromIndex:t,toIndex:a}=r.payload,n=x.moveTrack(e.tracks,t,a);let i=e.currentIndex;return e.currentIndex===t?i=a:t<e.currentIndex&&a>=e.currentIndex?i-=1:t>e.currentIndex&&a<=e.currentIndex&&(i+=1),{...e,tracks:n,isShuffled:!1,originalTracks:null,currentIndex:x.clampIndex(i,n.length)}}case"ADD_NEXT":{const t=x.addNextTrack(e.tracks,e.currentIndex,r.payload.track),a=e.isShuffled&&e.originalTracks?(()=>{const n=e.tracks[e.currentIndex],i=x.findIndexByTrackIdentity(e.originalTracks,n);return x.addNextTrack(e.originalTracks,i,r.payload.track)})():e.originalTracks;return{...e,tracks:t,originalTracks:a}}case"SET_INDEX":{const t=x.clampIndex(r.payload.index,e.tracks.length),a=r.payload.autoPlay,n=a===!0?!1:a===!1?!0:e.isPaused;return{...e,currentIndex:t,...U,isPaused:n}}case"PLAY":return{...e,isPaused:!1};case"PAUSE":return{...e,isPaused:!0};case"TOGGLE_PAUSE":return{...e,isPaused:!e.isPaused};case"SET_REPEAT":return{...e,repeatMode:r.payload};case"CYCLE_REPEAT":return{...e,repeatMode:x.cycleRepeatMode(e.repeatMode)};case"TOGGLE_SHUFFLE":{if(e.tracks.length<=1)return{...e,isShuffled:!1,originalTracks:null};if(!e.isShuffled){const i=[...e.tracks],o=x.shuffleWithAnchor(i,e.currentIndex);return{...e,isShuffled:!0,originalTracks:i,tracks:o,currentIndex:0}}const t=e.originalTracks?[...e.originalTracks]:[...e.tracks],a=e.tracks[e.currentIndex],n=x.findIndexByTrackIdentity(t,a);return{...e,isShuffled:!1,originalTracks:null,tracks:t,currentIndex:x.clampIndex(n,t.length)}}case"NEXT":{const t=x.computeNextIndex(e),a=t===e.currentIndex;return{...e,currentIndex:t,...a?{}:U,isPaused:a?e.isPaused:!1}}case"PREV":{const t=x.computePrevIndex(e),a=t===e.currentIndex;return{...e,currentIndex:t,...a?{}:U,isPaused:a?e.isPaused:!1}}case"MEDIA_TIME_UPDATE":return{...e,currentTime:r.payload.currentTime,duration:Number.isFinite(r.payload.duration)?r.payload.duration:e.duration,bufferedFraction:r.payload.bufferedFraction,isBuffering:!1};case"MEDIA_LOADED_METADATA":return{...e,duration:Number.isFinite(r.payload.duration)?r.payload.duration:e.duration,bufferedFraction:r.payload.bufferedFraction,errorMessage:null};case"SET_PLAYLIST_META":return{...e,playlistMeta:r.payload};case"SET_PLAYBACK_MODE":return{...e,playbackMode:r.payload};case"MEDIA_ERROR":return{...e,errorMessage:r.payload.message,isPaused:!0,isBuffering:!1};case"MEDIA_WAITING":return{...e,isBuffering:!0};case"MEDIA_CANPLAY":return{...e,isBuffering:!1,errorMessage:null};case"MEDIA_PLAY":return{...e,isPaused:!1,isBuffering:!1};case"MEDIA_PAUSE":return{...e,isPaused:!0};case"RESET_MEDIA_TIMES":return{...e,currentTime:0,duration:0,bufferedFraction:0};case"MEDIA_SOURCE_CLEARED":return{...e,...U};case"SET_VOLUME":return{...e,volume:z(r.payload)};case"SET_MUTED":return{...e,muted:r.payload};case"TOGGLE_MUTE":return{...e,muted:!e.muted};case"SET_PLAYBACK_RATE":return{...e,playbackRate:Se(r.payload)};case"MEDIA_VOLUME_SYNC":{const{volume:t,muted:a}=r.payload,n=z(t);return n===e.volume&&a===e.muted?e:{...e,volume:n,muted:a}}default:return e}}function Ge(){return typeof navigator>"u"||!("mediaSession"in navigator)?null:navigator.mediaSession}function dn(e,r,t){var d;const a=r.tracks[r.currentIndex],n=a==null?void 0:a.title,i=a==null?void 0:a.artist,o=a==null?void 0:a.album,u=x.resolveArtworkUrl(a,(d=r.playlistMeta)==null?void 0:d.artworkUrl);g.useEffect(()=>{const l=Ge();!e||!l||(l.metadata=new MediaMetadata({title:n??"Unknown track",artist:i,album:o,artwork:u?[{src:u}]:void 0}))},[e,n,i,o,u]),g.useEffect(()=>{const l=Ge();!e||!l||(l.playbackState=r.isPaused?"paused":"playing")},[e,r.isPaused]),g.useEffect(()=>{const l=Ge();if(!(!e||!l)){try{l.setActionHandler("play",t.play),l.setActionHandler("pause",t.pause),l.setActionHandler("nexttrack",t.next),l.setActionHandler("previoustrack",t.prev),l.setActionHandler("seekto",m=>{typeof m.seekTime=="number"&&Number.isFinite(m.seekTime)&&t.seek(m.seekTime)})}catch{}return()=>{try{l.setActionHandler("play",null),l.setActionHandler("pause",null),l.setActionHandler("nexttrack",null),l.setActionHandler("previoustrack",null),l.setActionHandler("seekto",null)}catch{}}}},[e,t])}const gn={"--ginger-primary-color":"#111827","--ginger-muted-color":"#6b7280","--ginger-font-size":"14px","--ginger-font-family":"system-ui, sans-serif","--ginger-playlist-row-padding":"6px 8px","--ginger-artwork-radius":"6px","--ginger-artwork-bg":"#f3f4f6","--ginger-playlist-active-bg":"rgba(17, 24, 39, 0.06)","--ginger-buffer-color":"rgba(107, 114, 128, 0.35)","--ginger-focus-ring":"0 0 0 2px rgba(59, 130, 246, 0.45)"};function pn({children:e,initialTracks:r=[],initialIndex:t=0,initialPlaylistMeta:a=null,initialShuffle:n=!1,initialRepeatMode:i="off",initialPlaybackMode:o="playlist",initialPaused:u=!0,initialVolume:d=1,initialMuted:l=!1,initialPlaybackRate:m=1,initialStateKey:y,locale:T,mediaSession:b=!1,beforePlay:v,onPlayBlocked:I,persistence:f,hydrateOnMount:P=!1,resumeOnTrackChange:R=!1,unstyled:L=!1,asChild:W=!1,className:X,style:Ae,dir:_r,prevRestartThresholdSeconds:Qe=3,onTrackChange:K,onPlay:q,onPause:J,onQueueEnd:Z,onError:ee,onVolumeChange:re,onPlaybackRateChange:ne,onSeek:w}){var qe;const N=g.useRef(null),[c,k]=g.useReducer(Nr,void 0,()=>Ye({tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m})),He=g.useRef(c),Re=g.useRef({tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m});Re.current={tracks:r,currentIndex:t,playlistMeta:a,isPaused:u,isShuffled:n,repeatMode:i,playbackMode:o,volume:d,muted:l,playbackRate:m};const Y=g.useRef(void 0);g.useEffect(()=>{if(y===void 0){Y.current=void 0;return}if(Y.current===void 0){Y.current=y;return}if(Y.current===y)return;Y.current=y;const p=Re.current;k({type:"INIT",payload:{tracks:p.tracks,currentIndex:p.currentIndex,playlistMeta:p.playlistMeta,isPaused:p.isPaused,isShuffled:p.isShuffled,repeatMode:p.repeatMode,playbackMode:p.playbackMode,volume:p.volume,muted:p.muted,playbackRate:p.playbackRate}})},[y,k]),g.useEffect(()=>{He.current=c},[c]);const ze=c.tracks[c.currentIndex]??null;g.useEffect(()=>{K==null||K(ze,c.currentIndex)},[ze,c.currentIndex,K]),g.useEffect(()=>{c.errorMessage&&(ee==null||ee(c.errorMessage))},[c.errorMessage,ee]);const te=g.useRef(void 0);g.useEffect(()=>{if(te.current===void 0){te.current=c.isPaused;return}te.current!==c.isPaused&&(c.isPaused?J==null||J():q==null||q()),te.current=c.isPaused},[c.isPaused,J,q]);const ae=g.useRef(void 0),ie=g.useRef(void 0);g.useEffect(()=>{if(ae.current===void 0||ie.current===void 0){ae.current=c.volume,ie.current=c.muted;return}(ae.current!==c.volume||ie.current!==c.muted)&&(re==null||re(c.volume,c.muted)),ae.current=c.volume,ie.current=c.muted},[c.volume,c.muted,re]);const se=g.useRef(void 0);g.useEffect(()=>{if(se.current===void 0){se.current=c.playbackRate;return}se.current!==c.playbackRate&&(ne==null||ne(c.playbackRate)),se.current=c.playbackRate},[c.playbackRate,ne]);const _=g.useCallback(()=>{k({type:"PLAY"})},[]),D=g.useCallback(()=>{var p;k({type:"PAUSE"}),(p=N.current)==null||p.pause()},[]),oe=g.useCallback(()=>{c.isPaused?_():D()},[D,_,c.isPaused]),F=g.useCallback(p=>{const M=N.current;M&&Number.isFinite(p)&&(M.currentTime=Math.max(0,p),w==null||w(Math.max(0,p)))},[w]),ue=g.useCallback(p=>{k({type:"SET_VOLUME",payload:z(p)})},[]),ce=g.useCallback(p=>{k({type:"SET_MUTED",payload:p})},[]),le=g.useCallback(()=>{k({type:"TOGGLE_MUTE"})},[]),de=g.useCallback(p=>{k({type:"SET_PLAYBACK_RATE",payload:Se(p)})},[]),O=g.useCallback(()=>{k({type:"NEXT"})},[]),$=g.useCallback(()=>{const p=N.current,M=Qe??3;p&&M>0&&p.currentTime>M?(p.currentTime=0,w==null||w(0)):k({type:"PREV"})},[Qe,w]),ge=g.useCallback(p=>{k({type:"SET_REPEAT",payload:p})},[]),pe=g.useCallback(()=>{k({type:"CYCLE_REPEAT"})},[]),fe=g.useCallback(()=>{k({type:"TOGGLE_SHUFFLE"})},[]),me=g.useCallback((p,M)=>{k({type:"SET_QUEUE",payload:{tracks:p,currentIndex:M}})},[]),ye=g.useCallback((p,M,E)=>{k({type:"INSERT_TRACK",payload:{track:p,index:M,autoPlay:E}})},[]),xe=g.useCallback(p=>{k({type:"REMOVE_TRACK",payload:{index:p}})},[]),he=g.useCallback((p,M)=>{k({type:"MOVE_TRACK",payload:{fromIndex:p,toIndex:M}})},[]),ke=g.useCallback(p=>{k({type:"ADD_NEXT",payload:{track:p}})},[]),be=g.useCallback(p=>{k({type:"SET_INDEX",payload:{index:p,autoPlay:!0}})},[]),ve=g.useCallback(p=>{k({type:"SET_INDEX",payload:{index:p,autoPlay:!1}})},[]),Te=g.useCallback(p=>{k({type:"SET_PLAYLIST_META",payload:p})},[]),Me=g.useCallback(p=>{k({type:"SET_PLAYBACK_MODE",payload:p})},[]),Ee=g.useCallback(p=>{k({type:"INIT",payload:p})},[]);g.useEffect(()=>{if(!(!f||!P))try{const p=f.get("ginger:volume"),M=f.get("ginger:muted"),E=f.get("ginger:playbackRate"),j=f.get("ginger:repeatMode"),Pe=f.get("ginger:currentIndex"),C=Re.current;k({type:"INIT",payload:{tracks:C.tracks,playlistMeta:C.playlistMeta,isPaused:C.isPaused,isShuffled:C.isShuffled,playbackMode:C.playbackMode,currentIndex:typeof Pe=="number"?Pe:C.currentIndex,repeatMode:j==="off"||j==="all"||j==="one"?j:C.repeatMode,volume:typeof p=="number"?p:C.volume,muted:typeof M=="boolean"?M:C.muted,playbackRate:typeof E=="number"?E:C.playbackRate}})}catch(p){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during hydration:",p)}},[P,f]),g.useEffect(()=>{if(f)try{f.set("ginger:volume",c.volume),f.set("ginger:muted",c.muted),f.set("ginger:playbackRate",c.playbackRate),f.set("ginger:repeatMode",c.repeatMode),f.set("ginger:currentIndex",c.currentIndex)}catch(p){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw:",p)}},[f,c.volume,c.muted,c.playbackRate,c.repeatMode,c.currentIndex]),g.useEffect(()=>{if(!f||!R)return;const p=c.tracks[c.currentIndex];if(!p)return;const M=`ginger:resume:${x.trackIdentity(p)}`;try{const E=f.get(M);typeof E=="number"&&Number.isFinite(E)&&F(E)}catch(E){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during resume:",E)}},[f,R,c.currentIndex,c.tracks,F]),g.useEffect(()=>{if(!f||!R)return;const p=c.tracks[c.currentIndex];if(!p||!(c.currentTime>=0))return;const M=`ginger:resume:${x.trackIdentity(p)}`,E=setTimeout(()=>{try{f.set(M,c.currentTime)}catch(j){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw during resume save:",j)}},250);return()=>clearTimeout(E)},[f,R,c.currentIndex,c.tracks,c.currentTime]);const Dr=(qe=c.tracks[c.currentIndex])==null?void 0:qe.fileUrl;g.useEffect(()=>{const p=N.current;if(!p)return;if(c.isPaused){p.pause();return}let M=!1;return(async()=>{if(v){let E=!1;try{E=await v()}catch(j){const Pe=j instanceof Error?j.message:"beforePlay rejected";k({type:"MEDIA_ERROR",payload:{message:Pe}});return}if(!E){M||(k({type:"PAUSE"}),I==null||I());return}}M||p.play().catch(E=>{const j=E instanceof Error?E.message:typeof E=="string"?E:"Playback failed (e.g. autoplay blocked or unavailable source)";k({type:"MEDIA_ERROR",payload:{message:j}})})})(),()=>{M=!0}},[v,Dr,I,c.isPaused]);const Ie=g.useCallback(()=>{const p=x.computeEndedTransition(He.current);if(p.kind==="replay_same"){const E=N.current;E&&(E.currentTime=0),k({type:"PLAY"});return}if(p.kind==="stop"){k({type:"PAUSE"}),Z==null||Z();return}const M=p.nextIndex;k({type:"SET_INDEX",payload:{index:M,autoPlay:!0}})},[Z]),Fr=g.useMemo(()=>({play:_,pause:D,next:O,prev:$,seek:F}),[_,D,O,$,F]);dn(!!b,c,Fr);const We=_r??(T!=null&&T.seek&&/[\u0590-\u08FF]/.test(T.seek)?"rtl":"ltr"),Ur=g.useMemo(()=>({state:c,dispatch:k,audioRef:N,notifyEnded:Ie,init:Ee,play:_,pause:D,togglePlayPause:oe,seek:F,setVolume:ue,setMuted:ce,toggleMute:le,setPlaybackRate:de,next:O,prev:$,setRepeatMode:ge,cycleRepeat:pe,toggleShuffle:fe,setQueue:me,insertTrackAt:ye,removeTrackAt:xe,moveTrack:he,enqueueNext:ke,playTrackAt:be,selectTrackAt:ve,setPlaylistMeta:Te,setPlaybackMode:Me}),[pe,k,Ee,O,Ie,D,_,be,ye,xe,he,ke,ve,$,F,ce,de,me,ge,Te,Me,ue,c,le,oe,fe]),Vr=g.useMemo(()=>({tracks:c.tracks,currentIndex:c.currentIndex,isPaused:c.isPaused,isShuffled:c.isShuffled,repeatMode:c.repeatMode,originalTracks:c.originalTracks,playlistMeta:c.playlistMeta,init:Ee,play:_,pause:D,togglePlayPause:oe,next:O,prev:$,setRepeatMode:ge,cycleRepeat:pe,toggleShuffle:fe,playbackMode:c.playbackMode,setQueue:me,insertTrackAt:ye,removeTrackAt:xe,moveTrack:he,enqueueNext:ke,playTrackAt:be,selectTrackAt:ve,setPlaylistMeta:Te,setPlaybackMode:Me,dispatch:k}),[c.tracks,c.currentIndex,c.isPaused,c.isShuffled,c.repeatMode,c.playbackMode,c.originalTracks,c.playlistMeta,Ee,_,D,oe,O,$,ge,pe,fe,me,ye,xe,he,ke,be,ve,Te,Me,k]),Br=g.useMemo(()=>({currentTime:c.currentTime,duration:c.duration,bufferedFraction:c.bufferedFraction,isBuffering:c.isBuffering,errorMessage:c.errorMessage,volume:c.volume,muted:c.muted,playbackRate:c.playbackRate,seek:F,setVolume:ue,setMuted:ce,toggleMute:le,setPlaybackRate:de,audioRef:N,notifyEnded:Ie,dispatch:k}),[c.currentTime,c.duration,c.bufferedFraction,c.isBuffering,c.errorMessage,c.volume,c.muted,c.playbackRate,F,ue,ce,le,de,N,Ie,k]),Xe=x.derivePlaybackUiState(c),Ke=g.useMemo(()=>L?Ae:{...gn,...Ae},[Ae,L]),G=g.useMemo(()=>({className:X,style:Ke,"data-ginger-playback":Xe,dir:We}),[X,Ke,Xe,We]),Or=g.useMemo(()=>{if(!W)return s.jsx("div",{className:G.className,style:G.style,"data-ginger-playback":G["data-ginger-playback"],dir:G.dir,children:e});const p=g.Children.only(e);if(!g.isValidElement(p))throw new Error("Ginger.Provider asChild expects a single React element child.");const M=p,E=M.props.style;return g.cloneElement(M,{className:fn(M.props.className,G.className),style:E&&typeof E=="object"?{...E,...G.style}:G.style,"data-ginger-playback":G["data-ginger-playback"],dir:G.dir})},[W,e,G]);return s.jsx(Hr,{locale:T,children:s.jsx(h.GingerPlaybackContext.Provider,{value:Vr,children:s.jsx(h.GingerMediaContext.Provider,{value:Br,children:s.jsx(er.Provider,{value:Ur,children:Or})})})})}function fn(e,r){const t=[e,r].filter(Boolean).join(" ");return t===""?void 0:t}const mn={Provider:pn,Player:Yr,Current:{Title:Wr,Artist:Xr,Album:Kr,Description:qr,Copyright:Jr,Genre:Zr,Label:en,Isrc:rn,TrackNumber:nn,Year:fr,Lyrics:mr,LyricsSynced:Be,Chapters:Oe,FileUrl:kr,Artwork:br,QueueIndex:vr,QueueLength:Tr,QueuePosition:Mr,Elapsed:Er,Duration:Ir,Remaining:Pr,Progress:Sr,TimeRail:Ar,BufferRail:Rr,PlaybackState:jr,ErrorMessage:Gr},Queue:{Title:sn,Subtitle:on,Description:un,Copyright:cn,Artwork:wr},Control:{PlayPause:ir,Repeat:sr,Next:or,Previous:ur,Shuffle:cr,SeekBar:lr,Volume:dr,Mute:gr,PlaybackRate:pr},Icon:{Play:we,Pause:Le,SkipForward:Fe,SkipBack:De,Shuffle:_e,Volume2:Ue,VolumeX:Ve,RepeatGlyph:Ne,Wrapper:A},Playlist:an};exports.Chapters=Oe;exports.Ginger=mn;exports.LyricsSynced=Be;exports.Pause=Le;exports.Play=we;exports.RepeatGlyph=Ne;exports.ShuffleIcon=_e;exports.SkipBack=De;exports.SkipForward=Fe;exports.Volume2=Ue;exports.VolumeX=Ve;exports.Wrapper=A;exports.clampPlaybackRate=Se;exports.clampVolume=z;exports.createInitialState=Ye;exports.defaultGingerLocale=Q;exports.gingerReducer=Nr;exports.parseLrc=yr;exports.useGingerChapters=hr;exports.useGingerLocale=S;exports.useGingerLyricsSync=xr;exports.usePlayPauseBinding=ar;exports.useSeekBarBinding=nr;exports.useVolumeSlider=tr;
2
+ //# sourceMappingURL=ginger-jToP7EpI.cjs.map