@lucaismyname/ginger 0.0.57 → 0.0.58

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.
Files changed (38) hide show
  1. package/README.md +26 -0
  2. package/dist/client.cjs +1 -1
  3. package/dist/client.js +2 -2
  4. package/dist/components/tracks/GingerDeclarativeMergeContext.d.ts +12 -0
  5. package/dist/components/tracks/GingerDeclarativeMergeContext.d.ts.map +1 -0
  6. package/dist/components/tracks/GingerTrack.d.ts +17 -0
  7. package/dist/components/tracks/GingerTrack.d.ts.map +1 -0
  8. package/dist/components/tracks/GingerTracks.d.ts +21 -0
  9. package/dist/components/tracks/GingerTracks.d.ts.map +1 -0
  10. package/dist/components/tracks/GingerTracks.test.d.ts +2 -0
  11. package/dist/components/tracks/GingerTracks.test.d.ts.map +1 -0
  12. package/dist/components/tracks/GingerTracksRegistryContext.d.ts +13 -0
  13. package/dist/components/tracks/GingerTracksRegistryContext.d.ts.map +1 -0
  14. package/dist/components/tracks/index.d.ts +5 -0
  15. package/dist/components/tracks/index.d.ts.map +1 -0
  16. package/dist/components/tracks/mergeDeclarativeQueue.d.ts +6 -0
  17. package/dist/components/tracks/mergeDeclarativeQueue.d.ts.map +1 -0
  18. package/dist/context/GingerProvider.d.ts.map +1 -1
  19. package/dist/{ginger-BHu7Ofna.js → ginger-Bc_8qZYi.js} +902 -766
  20. package/dist/ginger-Bc_8qZYi.js.map +1 -0
  21. package/dist/ginger-DJwWdIp0.cjs +2 -0
  22. package/dist/ginger-DJwWdIp0.cjs.map +1 -0
  23. package/dist/ginger.d.ts +5 -0
  24. package/dist/ginger.d.ts.map +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -2
  29. package/dist/testing/index.cjs +1 -1
  30. package/dist/testing/index.js +1 -1
  31. package/dist/{useGingerChapterProgress-DAIWjAtG.js → useGingerChapterProgress-CGe9W-te.js} +2 -2
  32. package/dist/{useGingerChapterProgress-DAIWjAtG.js.map → useGingerChapterProgress-CGe9W-te.js.map} +1 -1
  33. package/dist/{useGingerChapterProgress-DLx-LayX.cjs → useGingerChapterProgress-EbJNY5jt.cjs} +2 -2
  34. package/dist/{useGingerChapterProgress-DLx-LayX.cjs.map → useGingerChapterProgress-EbJNY5jt.cjs.map} +1 -1
  35. package/package.json +2 -2
  36. package/dist/ginger-B-W73LQC.cjs +0 -2
  37. package/dist/ginger-B-W73LQC.cjs.map +0 -1
  38. package/dist/ginger-BHu7Ofna.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";const s=require("react/jsx-runtime"),l=require("react"),b=require("./GingerSplitContexts-KSB0vQ5F.cjs"),oe=require("./formatTime-fm_QClmG.cjs"),A=require("./selectors-CEGlYoFu.cjs"),S=require("./transitions-Dx08t68T.cjs"),gr=l.createContext(null);function lt(){const e=l.useContext(gr);if(!e)throw new Error("Ginger components must be used within <Ginger.Provider>");return e}function lr(e){const{buffered:r,duration:n}=e;return!(n>0)||r.length===0?0:Math.min(1,r.end(r.length-1)/n)}function dt({className:e,style:r,preload:n="metadata",crossOrigin:a,respectReducedMotion:t=!1}){var I;const{audioRef:i,dispatch:o,state:u,notifyEnded:f}=lt(),d=((I=u.tracks[u.currentIndex])==null?void 0:I.fileUrl)??"",m=l.useRef({currentTime:-1,duration:-1,bufferedFraction:-1}),y=l.useRef(""),[M,p]=l.useState(!1);l.useEffect(()=>{if(!t||typeof window>"u")return;const x=window.matchMedia("(prefers-reduced-motion: reduce)"),h=()=>p(x.matches);return h(),x.addEventListener("change",h),()=>x.removeEventListener("change",h)},[t]);const k=(x,h=!1)=>{const j={currentTime:x.currentTime,duration:x.duration,bufferedFraction:lr(x)},R=m.current,X=M?.5:.25,le=Math.abs(j.currentTime-R.currentTime)>=X||Math.abs(j.duration-R.duration)>=.01||Math.abs(j.bufferedFraction-R.bufferedFraction)>=.01;!h&&!le||(m.current=j,o({type:"MEDIA_TIME_UPDATE",payload:j}))};return l.useEffect(()=>{const x=i.current;x&&(x.volume=u.volume,x.muted=u.muted)},[i,u.volume,u.muted]),l.useEffect(()=>{const x=i.current;if(x){if(!d){x.removeAttribute("src"),m.current={currentTime:-1,duration:-1,bufferedFraction:-1},y.current!==""&&o({type:"MEDIA_SOURCE_CLEARED"}),y.current="";return}x.getAttribute("src")!==d&&(x.src=d,x.load(),m.current={currentTime:-1,duration:-1,bufferedFraction:-1}),y.current=d,x.playbackRate=u.playbackRate}},[i,o,d,u.playbackRate]),s.jsx("audio",{"data-ginger-component":"Player",ref:i,className:e,style:r,preload:n,crossOrigin:a,controls:!1,playsInline:!0,onTimeUpdate:x=>{k(x.currentTarget)},onLoadedMetadata:x=>{const h=x.currentTarget;m.current={currentTime:-1,duration:-1,bufferedFraction:-1},o({type:"MEDIA_LOADED_METADATA",payload:{duration:h.duration,bufferedFraction:lr(h)}})},onSeeking:x=>k(x.currentTarget,!0),onSeeked:x=>k(x.currentTarget,!0),onEnded:()=>f(),onPlay:()=>o({type:"MEDIA_PLAY"}),onPause:()=>o({type:"MEDIA_PAUSE"}),onWaiting:()=>o({type:"MEDIA_WAITING"}),onCanPlay:()=>o({type:"MEDIA_CANPLAY"}),onProgress:x=>k(x.currentTarget,!0),onVolumeChange:x=>{const h=x.currentTarget;o({type:"MEDIA_VOLUME_SYNC",payload:{volume:h.volume,muted:h.muted}})},onError:()=>{var R;const x=i.current,h=(R=x==null?void 0:x.error)==null?void 0:R.code;o({type:"MEDIA_ERROR",payload:{message:h===1?"MEDIA_ERR_ABORTED":h===2?"MEDIA_ERR_NETWORK":h===3?"MEDIA_ERR_DECODE":h===4?"MEDIA_ERR_SRC_NOT_SUPPORTED":"MEDIA_ERR_UNKNOWN"}})}})}const ce={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 gt(e){return e?{...ce,...e,repeat:{...ce.repeat,...e.repeat}}:ce}const fr=l.createContext(ce);function ft({locale:e,children:r}){const n=gt(e);return s.jsx(fr.Provider,{value:n,children:r})}function C(){return l.useContext(fr)}function pr(){const e=b.useGingerPlayback(),r=b.useGingerMedia(),n=C(),a=l.useMemo(()=>b.gingerStateFromContextValues(e,r),[e,r]),t=A.effectiveDuration(a),i=t>0?a.currentTime:0,o=Number.isFinite(i)?i:0,u=t>0?`${oe.formatMmSs(o)} of ${oe.formatMmSs(t)}`:oe.formatMmSs(o),f=d=>{r.seek(Number(d.currentTarget.value))};return{state:a,value:o,min:0,max:t>0?t:1,step:"any",ariaValueText:u,ariaLabel:n.seek,onSeekInput:f,onSeekChange:f}}function mr(){const e=b.useGingerPlayback(),r=b.useGingerMedia(),n=C(),a=l.useMemo(()=>b.gingerStateFromContextValues(e,r),[e,r]),t=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:n.volume,onVolumeInput:t,onVolumeChange:t}}function yr(e){const r=b.useGingerPlayback(),n=C(),a=(e==null?void 0:e.playAriaLabel)??n.play,t=(e==null?void 0:e.pauseAriaLabel)??n.pause;return{isPaused:r.isPaused,toggle:r.togglePlayPause,ariaLabel:r.isPaused?a:t}}function L(e){const{className:r,width:n,height:a,viewBox:t,fill:i,stroke:o,strokeWidth:u,strokeLinecap:f,strokeLinejoin:d,children:m,...y}=e;return s.jsx("svg",{"data-ginger-component":"Wrapper",xmlns:"http://www.w3.org/2000/svg",width:n??24,height:a??24,viewBox:t??"0 0 24 24",fill:"none",stroke:o??"currentColor",strokeWidth:u??2,strokeLinecap:f??"round",strokeLinejoin:d??"round",className:r,"aria-hidden":!0,role:"presentation",...y,children:m})}function Fe(){return s.jsx(L,{children:s.jsx("path",{"data-ginger-component":"Pause",d:"M6 4h4v16H6zM14 4h4v16h-4z"})})}function Ue(){return s.jsx(L,{children:s.jsx("path",{"data-ginger-component":"Play",d:"M5 3L19 12 5 21 5 3z"})})}function Le(){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 Ve({mode:e}){return e==="one"?s.jsxs(L,{children:[s.jsx(Le,{}),s.jsx("path",{"data-ginger-component":"RepeatGlyph",d:"M11 10h1v4"})]}):e==="all"?s.jsx(L,{children:s.jsx(Le,{})}):s.jsxs(L,{children:[s.jsx(Le,{}),s.jsx("line",{"data-ginger-component":"RepeatGlyph",x1:"3",x2:"21",y1:"3",y2:"21"})]})}function Be(){return s.jsxs(L,{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 Oe(){return s.jsxs(L,{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 $e(){return s.jsxs(L,{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 Ye(){return s.jsxs(L,{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 He(){return s.jsxs(L,{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 xr({playLabel:e="Play",pauseLabel:r="Pause",playAriaLabel:n,pauseAriaLabel:a,children:t,type:i="button",onClick:o,...u}){const f=C(),d=typeof e=="string"?e:f.play,m=typeof r=="string"?r:f.pause,y=yr({playAriaLabel:n??d,pauseAriaLabel:a??m});return s.jsx("button",{"data-ginger-component":"PlayPause",...u,type:i,"aria-label":y.ariaLabel,onClick:M=>{y.toggle(),o==null||o(M)},children:t??(y.isPaused?s.jsx(Ue,{}):s.jsx(Fe,{}))})}xr.displayName="Ginger.Control.PlayPause";function kr({type:e="button",ariaLabel:r,onClick:n,children:a,...t}){const{repeatMode:i,cycleRepeat:o}=b.useGingerPlayback(),f=C().repeat[i];return s.jsx("button",{"data-ginger-component":"Repeat",...t,type:e,"aria-label":r??f,onClick:d=>{o(),n==null||n(d)},children:a??s.jsx(Ve,{mode:i})})}kr.displayName="Ginger.Control.Repeat";function hr({type:e="button",children:r,ariaLabel:n,onClick:a,...t}){const{next:i}=b.useGingerPlayback(),o=C();return s.jsx("button",{"data-ginger-component":"Next",...t,type:e,"aria-label":n??o.nextTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx($e,{})})}hr.displayName="Ginger.Control.Next";function vr({type:e="button",children:r,ariaLabel:n,onClick:a,...t}){const{prev:i}=b.useGingerPlayback(),o=C();return s.jsx("button",{"data-ginger-component":"Previous",...t,type:e,"aria-label":n??o.previousTrack,onClick:u=>{i(),a==null||a(u)},children:r??s.jsx(Oe,{})})}vr.displayName="Ginger.Control.Previous";function br({type:e="button",children:r,ariaLabel:n,onClick:a,...t}){const{isShuffled:i,toggleShuffle:o}=b.useGingerPlayback(),u=C();return s.jsx("button",{"data-ginger-component":"Shuffle",...t,type:e,"aria-pressed":i,"aria-label":n??u.shuffle,onClick:f=>{o(),a==null||a(f)},children:r??s.jsx(Be,{})})}br.displayName="Ginger.Control.Shuffle";function Tr({inputStyle:e,style:r,unstyled:n=!1,ariaLabel:a,...t}){const i=pr(),o=n?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"SeekBar",...t,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})}Tr.displayName="Ginger.Control.SeekBar";function Mr({inputStyle:e,style:r,unstyled:n=!1,ariaLabel:a,...t}){const i=mr(),o=n?{...r,...e}:{width:"100%",...r,...e};return s.jsx("input",{"data-ginger-component":"Volume",...t,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})}Mr.displayName="Ginger.Control.Volume";function Er({ariaLabel:e,muteLabel:r,unmuteLabel:n,type:a="button",onClick:t,children:i,...o}){const{muted:u,toggleMute:f}=b.useGingerMedia(),d=C();return s.jsx("button",{"data-ginger-component":"Mute",...o,type:a,"aria-pressed":u,"aria-label":e??(u?d.unmute:d.mute),onClick:m=>{f(),t==null||t(m)},children:i??(u?n??s.jsx(He,{}):r??s.jsx(Ye,{}))})}Er.displayName="Ginger.Control.Mute";const pt=[.5,.75,1,1.25,1.5,2];function Ir({rates:e=pt,style:r,ariaLabel:n,children:a,...t}){const{playbackRate:i,setPlaybackRate:o}=b.useGingerMedia(),u=C(),f=l.useMemo(()=>Array.from(new Set([...e,i])).sort((d,m)=>d-m),[e,i]);return s.jsx("select",{"data-ginger-component":"PlaybackRate",...t,"aria-label":n??u.playbackSpeed,value:String(i),style:r,onChange:d=>o(Number(d.currentTarget.value)),children:a??f.map(d=>s.jsx("option",{value:String(d),children:d===1?u.playbackRateNormal:u.playbackRateTimes(d)},d))})}Ir.displayName="Ginger.Control.PlaybackRate";function K(e,r){function n(a){const t=b.useGingerState(),o=(r(t)??"").trim(),{className:u,style:f,fallback:d,empty:m,children:y}=a;if(!o){const M=m??d??null;return M?s.jsx("span",{className:u,style:f,children:M}):null}return y?s.jsx("span",{className:u,style:f,children:y(o,t)}):s.jsx("span",{className:u,style:f,children:o})}return n.displayName=e,n}function J(e,r){return K(e,n=>r(A.getCurrentTrack(n)))}const mt=J("Ginger.Current.Title",e=>e==null?void 0:e.title),yt=J("Ginger.Current.Artist",e=>e==null?void 0:e.artist),xt=K("Ginger.Current.Album",e=>A.resolvedAlbumLine(e)),kt=J("Ginger.Current.Description",e=>e==null?void 0:e.description),ht=K("Ginger.Current.Copyright",e=>{var n;const r=A.getCurrentTrack(e);return(r==null?void 0:r.copyright)??((n=e.playlistMeta)==null?void 0:n.copyright)}),vt=J("Ginger.Current.Genre",e=>e==null?void 0:e.genre),bt=J("Ginger.Current.Label",e=>e==null?void 0:e.label),Tt=J("Ginger.Current.Isrc",e=>e==null?void 0:e.isrc),Mt=J("Ginger.Current.TrackNumber",e=>(e==null?void 0:e.trackNumber)!=null?String(e.trackNumber):void 0);function Sr({className:e,style:r,fallback:n,empty:a,children:t,format:i}){var d;const o=b.useGingerState(),u=(d=A.getCurrentTrack(o))==null?void 0:d.year;if(typeof u!="number"||!Number.isFinite(u)){const m=a??n??null;return m?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:m}):null}const f=i?i(u):String(u);return t?s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:t(f,o)}):s.jsx("span",{"data-ginger-component":"Year",className:e,style:r,children:f})}Sr.displayName="Ginger.Current.Year";function Pr({className:e,style:r,fallback:n,empty:a,children:t,preserveWhitespace:i=!0,unstyled:o=!1}){var y;const u=b.useGingerState(),f=((y=A.getCurrentTrack(u))==null?void 0:y.lyrics)??"",d=i?f.replace(/^\s+|\s+$/g,""):f.trim();if(!d){const M=a??n??null;return M?s.jsx("span",{"data-ginger-component":"Lyrics",className:e,style:r,children:M}):null}const m=!o&&i?{whiteSpace:"pre-wrap"}:void 0;return t?s.jsx("span",{className:e,style:{...m,...r},children:t(d,u)}):s.jsx("span",{className:e,style:{...m,...r},children:d})}Pr.displayName="Ginger.Current.Lyrics";const dr=/\[(\d{1,2}):(\d{2})(?:\.(\d{1,3}))?\]/g;function Rr(e){const r=[];for(const n of e.split(/\r?\n/)){const a=[...n.matchAll(dr)];if(a.length===0)continue;const t=n.replace(dr,"").trim();for(const i of a){const o=Number(i[1]??0),u=Number(i[2]??0),f=Number((i[3]??"0").padEnd(3,"0")),d=o*60+u+f/1e3;Number.isFinite(d)&&d>=0&&r.push({time:d,text:t})}}return r.sort((n,a)=>n.time-a.time)}function Ar(){const{tracks:e,currentIndex:r}=b.useGingerPlayback(),{currentTime:n}=b.useGingerMedia(),a=e[r],t=l.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"?Rr(a.lyrics):[]:[],[a]),i=l.useMemo(()=>{for(let o=t.length-1;o>=0;o-=1)if(n>=t[o].time)return o;return-1},[n,t]);return{lines:t,activeIndex:i,activeLine:i>=0?t[i]??null:null}}function Qe({className:e,style:r,fallback:n,empty:a,unstyled:t=!1,activeClassName:i,lineClassName:o,children:u}){const f=b.useGingerState(),d=C(),{lines:m,activeIndex:y}=Ar();if(m.length===0){const p=a??n??null;return p?s.jsx("span",{"data-ginger-component":"LyricsSynced",className:e,style:r,children:p}):null}const M=t?{}:{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:{...M,...r},"aria-label":d.syncedLyricsList,children:m.map((p,k)=>{const I=k===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:t?void 0:{padding:"var(--ginger-playlist-row-padding, 4px 8px)",fontWeight:I?600:400,opacity:I?1:.75},children:u?u(p,k,I,f):p.text},`${p.time}-${k}`)})})}Qe.displayName="Ginger.Current.LyricsSynced";function jr(){const{tracks:e,currentIndex:r}=b.useGingerPlayback(),{currentTime:n,seek:a}=b.useGingerMedia(),t=l.useMemo(()=>{var u;return[...((u=e[r])==null?void 0:u.chapters)??[]].filter(f=>f&&Number.isFinite(f.startSeconds)&&f.startSeconds>=0).sort((f,d)=>f.startSeconds-d.startSeconds)},[r,e]),i=l.useMemo(()=>{if(t.length===0)return-1;for(let o=t.length-1;o>=0;o-=1)if(n>=t[o].startSeconds)return o;return-1},[n,t]);return{list:t,activeIndex:i,active:i>=0?t[i]??null:null,seekTo:o=>{const u=t[o];u&&a(u.startSeconds)}}}function ze({className:e,style:r,fallback:n,empty:a,unstyled:t=!1,formatStart:i=oe.formatMmSs,children:o}){const u=b.useGingerState(),f=C(),{list:d,activeIndex:m,seekTo:y}=jr();if(d.length===0){const p=a??n??null;return p?s.jsx("span",{"data-ginger-component":"Chapters",className:e,style:r,children:p}):null}const M=t?{}:{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:{...M,...r},"aria-label":f.chaptersList,children:d.map((p,k)=>{const I=k===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(k),style:{width:t?void 0:"100%",textAlign:t?void 0:"left",border:t?void 0:"none",background:t?void 0:I?"var(--ginger-playlist-active-bg, rgba(17, 24, 39, 0.06))":"transparent",color:t?void 0:"inherit",font:t?void 0:"inherit",cursor:t?void 0:"pointer",padding:t?void 0:"var(--ginger-playlist-row-padding, 6px 8px)"},children:o?o(p,k,I,u):t?s.jsxs(s.Fragment,{children:[i(p.startSeconds)," ",p.title]}):s.jsxs("span",{children:[s.jsx("span",{style:{opacity:.75,marginRight:"0.35em"},children:i(p.startSeconds)}),p.title]})})},`${p.startSeconds}-${p.title}`)})})}ze.displayName="Ginger.Current.Chapters";function Gr({visible:e=!1,className:r,style:n,fallback:a,empty:t,children:i}){var f;const o=b.useGingerState();if(!e)return null;const u=((f=A.getCurrentTrack(o))==null?void 0:f.fileUrl)??"";if(!u){const d=t??a??null;return d?s.jsx("span",{className:r,style:n,children:d}):null}return i?s.jsx("span",{"data-ginger-component":"FileUrl",className:r,style:n,children:i(u,o)}):s.jsx("span",{className:r,style:n,children:u})}Gr.displayName="Ginger.Current.FileUrl";function wr({className:e,style:r,fallback:n,empty:a,sizes:t,loading:i,onError:o,decoding:u,unstyled:f=!1,imgStyle:d}){const m=b.useGingerState(),y=A.getCurrentTrack(m),M=A.resolvedArtwork(m);if(!M){const k=a??n??null;return k?s.jsx("span",{className:e,style:r,children:k}):null}const p=[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:f?{...r}:{background:"var(--ginger-artwork-bg, transparent)",borderRadius:"var(--ginger-artwork-radius, 0)",overflow:"hidden",...r},children:s.jsx("img",{src:M,alt:p,sizes:t,loading:i,decoding:u,onError:o,style:{display:f?void 0:"block",width:f?void 0:"100%",height:f?void 0:"100%",objectFit:f?void 0:"cover",...d}})})}wr.displayName="Ginger.Current.Artwork";function Cr({base:e=0,className:r,style:n,fallback:a,empty:t,children:i}){const o=b.useGingerState();if(o.tracks.length===0){const d=t??a??null;return d?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:n,children:d}):null}const f=String(o.currentIndex+e);return i?s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:n,children:i(f,o)}):s.jsx("span",{"data-ginger-component":"QueueIndex",className:r,style:n,children:f})}Cr.displayName="Ginger.Current.QueueIndex";function _r({className:e,style:r,fallback:n,empty:a,children:t}){const i=b.useGingerState(),o=String(i.tracks.length);if(i.tracks.length===0){const u=a??n??null;return u?s.jsx("span",{className:e,style:r,children:u}):null}return t?s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:t(o,i)}):s.jsx("span",{"data-ginger-component":"QueueLength",className:e,style:r,children:o})}_r.displayName="Ginger.Current.QueueLength";function Nr({base:e=0,separator:r=" / ",className:n,style:a,fallback:t,empty:i,children:o}){const u=b.useGingerState(),f=u.tracks.length;if(f===0){const M=i??t??null;return M?s.jsx("span",{className:n,style:a,children:M}):null}const d=String(u.currentIndex+e),m=String(f),y=`${d}${r}${m}`;return o?s.jsx("span",{"data-ginger-component":"QueuePosition",className:n,style:a,children:o({index:d,length:m,label:y},u)}):s.jsx("span",{"data-ginger-component":"QueuePosition",className:n,style:a,children:y})}Nr.displayName="Ginger.Current.QueuePosition";function We(e,r,n){const{className:a,style:t,fallback:i,empty:o,children:u,format:f=oe.formatMmSs}=n;if(!(e>=0)||!Number.isFinite(e)){const m=o??i??null;return m?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:t,children:m}):null}const d=f(e);return u?s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:t,children:u(d,r)}):s.jsx("span",{"data-ginger-component":"TimeText",className:a,style:t,children:d})}function Lr(e){const r=b.useGingerState();return We(r.currentTime,r,e)}Lr.displayName="Ginger.Current.Elapsed";function Dr(e){const r=b.useGingerState();return We(A.effectiveDuration(r),r,e)}Dr.displayName="Ginger.Current.Duration";function Fr(e){const r=b.useGingerState();return We(A.effectiveRemaining(r),r,e)}Fr.displayName="Ginger.Current.Remaining";function Ur({className:e,style:r,fallback:n,empty:a,children:t}){const i=b.useGingerState(),o=A.effectiveDuration(i),u=A.progressFraction(i);if(!(o>0)){const f=a??n??null;return f?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:f}):null}return t?s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:t({fraction:u,currentTime:i.currentTime,duration:o},i)}):s.jsx("span",{"data-ginger-component":"Progress",className:e,style:r,children:`${Math.round(u*100)}%`})}Ur.displayName="Ginger.Current.Progress";function Vr({className:e,style:r,height:n=4,showBuffered:a=!1,unstyled:t=!1}){const i=b.useGingerState(),o=`${Math.round(A.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:t?{...r}:{width:"100%",height:n,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:t?void 0:"absolute",left:t?void 0:0,top:t?void 0:0,height:t?void 0:"100%",width:u,background:t?void 0:"var(--ginger-buffer-color, rgba(107, 114, 128, 0.35))"}}):null,s.jsx("div",{"data-ginger-component":"TimeRail",style:{position:t?void 0:"relative",width:o,height:t?void 0:"100%",background:t?void 0:"var(--ginger-primary-color, #111827)"}})]})}Vr.displayName="Ginger.Current.TimeRail";function Br({className:e,style:r,height:n=4,unstyled:a=!1}){const t=b.useGingerState(),i=`${Math.round(Math.min(1,Math.max(0,t.bufferedFraction))*100)}%`;return s.jsx("div",{"data-ginger-component":"BufferRail",className:e,style:a?{...r}:{width:"100%",height:n,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))"}})})}Br.displayName="Ginger.Current.BufferRail";function Or({className:e,style:r,fallback:n,empty:a,children:t}){const i=b.useGingerState(),o=A.derivePlaybackUiState(i);return t?s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:t(o,i)}):s.jsx("span",{"data-ginger-component":"PlaybackState",className:e,style:r,children:o})}Or.displayName="Ginger.Current.PlaybackState";function $r({className:e,style:r,fallback:n,empty:a,live:t="polite",children:i}){const o=b.useGingerState(),u=o.errorMessage??"";if(!u){const f=a??n??null;return f?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,children:f}):null}return i?s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":t,children:i(u,o)}):s.jsx("span",{"data-ginger-component":"ErrorMessage",className:e,style:r,"aria-live":t,children:u})}$r.displayName="Ginger.Current.ErrorMessage";const De=l.createContext(null);function Et(){const e=l.useContext(De);if(!e)throw new Error("Ginger.Playlist.Track must be used inside <Ginger.Playlist>");return e}function Yr({children:e,unstyled:r=!1,rowStyle:n,renderTrack:a,playOnSelect:t=!0,style:i,...o}){const{tracks:u,currentIndex:f,playTrackAt:d,selectTrackAt:m}=b.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(De.Provider,{value:{playOnSelect:t},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:e})}):s.jsx(De.Provider,{value:{playOnSelect:t},children:s.jsx("ul",{"data-ginger-component":"Playlist",style:y,...o,children:u.map((p,k)=>{const I=k===f;return s.jsx("li",{children:s.jsx("button",{type:"button",onClick:()=>{t?d(k):m(k)},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)",...n},children:a?a(p,k,I):s.jsxs("span",{children:[p.title,p.artist?` — ${p.artist}`:""]})})},`${k}-${S.trackIdentity(p)}`)})})})}Yr.displayName="Ginger.Playlist";function Hr({index:e,unstyled:r=!1,className:n,style:a,children:t,liProps:i,onClick:o,...u}){const{playOnSelect:f}=Et(),{tracks:d,currentIndex:m,playTrackAt:y,selectTrackAt:M}=b.useGingerPlayback(),p=e===m,k=d[e],I=k!=null?s.jsxs("span",{"data-ginger-component":"PlaylistTrack",children:[k.title,k.artist?` — ${k.artist}`:""]}):null;return s.jsx("li",{...i,"data-ginger-component":"PlaylistTrack",children:s.jsx("button",{type:"button","data-ginger-component":"PlaylistTrackButton","aria-current":p?"true":void 0,"data-ginger-active":p||void 0,className:n,style:{width:r?void 0:"100%",textAlign:r?void 0:"left",border:r?void 0:"none",background:r?void 0:p?"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:x=>{o==null||o(x),!x.defaultPrevented&&(f?y(e):M(e))},children:t??I})})}Hr.displayName="Ginger.Playlist.Track";const It=Object.assign(Yr,{Track:Hr}),St=K("Ginger.Queue.Title",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.title}),Pt=K("Ginger.Queue.Subtitle",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.subtitle}),Rt=K("Ginger.Queue.Description",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.description}),At=K("Ginger.Queue.Copyright",e=>{var r;return(r=e.playlistMeta)==null?void 0:r.copyright});function Qr({className:e,style:r,fallback:n,empty:a,unstyled:t=!1,imgStyle:i}){var d,m;const o=b.useGingerState(),u=(d=o.playlistMeta)==null?void 0:d.artworkUrl;if(!u){const y=a??n??null;return y?s.jsx("span",{"data-ginger-component":"Artwork",className:e,style:r,children:y}):null}const f=((m=o.playlistMeta)==null?void 0:m.title)??"Playlist artwork";return s.jsx("span",{"data-ginger-component":"Artwork",className:e,style:t?{...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:f,style:{display:t?void 0:"block",width:t?void 0:"100%",height:t?void 0:"100%",objectFit:t?void 0:"cover",...i}})})}Qr.displayName="Ginger.Queue.Artwork";const zr=l.createContext(null);function jt({children:e,value:r}){return s.jsx(zr.Provider,{value:r,children:e})}function Gt(){const e=l.useContext(zr);if(!e)throw new Error("Ginger.Track must be used inside <Ginger.Tracks>");return e}function wt(e){const r=e.fileUrl??e.src;if(!r||r==="")throw new Error("Ginger.Track requires a non-empty fileUrl or src.");const{src:n,fileUrl:a,title:t,id:i,artist:o,copyright:u,description:f,album:d,artworkUrl:m,genre:y,year:M,label:p,isrc:k,trackNumber:I,lyrics:x,lyricsTimed:h,chapters:j,durationSeconds:R,metadata:X}=e;return{...i!==void 0?{id:i}:{},title:t,fileUrl:r,...o!==void 0?{artist:o}:{},...u!==void 0?{copyright:u}:{},...f!==void 0?{description:f}:{},...d!==void 0?{album:d}:{},...m!==void 0?{artworkUrl:m}:{},...y!==void 0?{genre:y}:{},...M!==void 0?{year:M}:{},...p!==void 0?{label:p}:{},...k!==void 0?{isrc:k}:{},...I!==void 0?{trackNumber:I}:{},...x!==void 0?{lyrics:x}:{},...h!==void 0?{lyricsTimed:h}:{},...j!==void 0?{chapters:j}:{},...R!==void 0?{durationSeconds:R}:{},...X!==void 0?{metadata:X}:{}}}function Wr(e){const r=Gt(),n=l.useId().replace(/:/g,""),a=e.id??`ginger-decl:${n}`,t=wt({...e,id:a});return r.slots.set(a,t),r.order.push(a),null}Wr.displayName="Ginger.Track";const Xr=l.createContext(null);function Ct({children:e,value:r}){return s.jsx(Xr.Provider,{value:r,children:e})}function _t(){return l.useContext(Xr)}function Nt(e,r,n){switch(e){case"append":return[...r,...n];case"prepend":return[...n,...r];case"replace":return[...n];default:return[...r,...n]}}function Lt(e,r){if(e.length!==r.length)return!1;for(let n=0;n<e.length;n++){const a=e[n],t=r[n];if(a!==t&&(a.title!==t.title||a.fileUrl!==t.fileUrl||(a.id??"")!==(t.id??"")||(a.artist??"")!==(t.artist??"")))return!1}return!0}function Dt({merge:e,registry:r}){const{dispatch:n,tracks:a,currentIndex:t}=b.useGingerPlayback(),i=_t(),o=r.order.map(d=>{const m=r.slots.get(d);return m?`${d}:${m.fileUrl}:${m.title}`:""}).join("|"),f=((i==null?void 0:i.getInitialTracksSnapshot())??[]).map(d=>`${d.id??""}:${d.fileUrl}:${d.title}`).join("|");return l.useLayoutEffect(()=>{const d=(i==null?void 0:i.getInitialTracksSnapshot())??[],m=r.order.map(p=>r.slots.get(p)).filter(p=>p!=null),y=Nt(e,d,m);if(Lt(y,a))return;const M=Math.min(t,Math.max(0,y.length-1));n({type:"SET_QUEUE",payload:{tracks:y,currentIndex:M}})},[e,o,f,i,n,r,a,t]),null}function qr({children:e,merge:r="append",style:n,hidden:a,...t}){const i=l.useRef(null);i.current||(i.current={slots:new Map,order:[]});const o=i.current;return o.slots.clear(),o.order.length=0,s.jsxs(jt,{value:o,children:[s.jsx("div",{"data-ginger-component":"Tracks",style:{display:"contents",...n},...t,children:e}),s.jsx(Dt,{merge:r,registry:o})]})}qr.displayName="Ginger.Tracks";function ue(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):1}function Ce(e){return Number.isFinite(e)?Math.min(4,Math.max(.25,e)):1}const W={currentTime:0,duration:0,bufferedFraction:0,isBuffering:!1,errorMessage:null},Ft={...W,volume:1,muted:!1,playbackRate:1};function Xe(e){const r=[...e.tracks];let n=S.clampIndex(e.currentIndex??0,r.length),a=null,t=r;return e.isShuffled&&r.length>1&&(a=[...r],t=S.shuffleWithAnchor(r,n),n=0),{tracks:t,currentIndex:n,playbackMode:e.playbackMode??"playlist",isPaused:e.isPaused??!0,isShuffled:!!(e.isShuffled&&t.length>1),repeatMode:e.repeatMode??"off",originalTracks:a,playlistMeta:e.playlistMeta??null,...Ft,volume:ue(e.volume??1),muted:e.muted??!1,playbackRate:Ce(e.playbackRate??1)}}function Kr(e,r){switch(r.type){case"INIT":{const{tracks:n,currentIndex:a,playlistMeta:t,isPaused:i,isShuffled:o,repeatMode:u,playbackMode:f,volume:d,muted:m,playbackRate:y}=r.payload;return Xe({tracks:n,currentIndex:a,playlistMeta:t??null,isPaused:i??!0,isShuffled:o??!1,repeatMode:u??"off",playbackMode:f??"playlist",volume:d,muted:m,playbackRate:y})}case"SET_QUEUE":{const{tracks:n,currentIndex:a}=r.payload,t=[...n],i=S.clampIndex(a??e.currentIndex,t.length);return{...e,tracks:t,currentIndex:i,isShuffled:!1,originalTracks:null,...W}}case"INSERT_TRACK":{const n=r.payload.index??e.tracks.length,a=S.insertTrackAt(e.tracks,r.payload.track,n);if(r.payload.autoPlay){const o=S.clampIndex(n,a.length);return{...e,tracks:a,currentIndex:o,isShuffled:!1,originalTracks:null,isPaused:!1,...W}}const t=n<=e.currentIndex?e.currentIndex+1:e.currentIndex,i=e.isShuffled&&e.originalTracks?S.insertTrackAt(e.originalTracks,r.payload.track,e.originalTracks.length):e.originalTracks;return{...e,tracks:a,originalTracks:i,currentIndex:S.clampIndex(t,a.length)}}case"REMOVE_TRACK":{const n=r.payload.index,a=S.removeTrackAt(e.tracks,n),t=n<e.currentIndex?e.currentIndex-1:n===e.currentIndex?Math.min(e.currentIndex,Math.max(0,a.length-1)):e.currentIndex,i=e.isShuffled&&e.originalTracks?(()=>{const u=e.tracks[n],f=S.findIndexByTrackIdentity(e.originalTracks,u);return S.removeTrackAt(e.originalTracks,f)})():e.originalTracks,o=e.isShuffled&&a.length>1;return{...e,tracks:a,isShuffled:o,originalTracks:o?i:null,currentIndex:S.clampIndex(t,a.length),...n===e.currentIndex?W:{}}}case"MOVE_TRACK":{const{fromIndex:n,toIndex:a}=r.payload,t=S.moveTrack(e.tracks,n,a);let i=e.currentIndex;return e.currentIndex===n?i=a:n<e.currentIndex&&a>=e.currentIndex?i-=1:n>e.currentIndex&&a<=e.currentIndex&&(i+=1),{...e,tracks:t,isShuffled:!1,originalTracks:null,currentIndex:S.clampIndex(i,t.length)}}case"ADD_NEXT":{const n=S.addNextTrack(e.tracks,e.currentIndex,r.payload.track),a=e.isShuffled&&e.originalTracks?(()=>{const t=e.tracks[e.currentIndex],i=S.findIndexByTrackIdentity(e.originalTracks,t);return S.addNextTrack(e.originalTracks,i,r.payload.track)})():e.originalTracks;return{...e,tracks:n,originalTracks:a}}case"SET_INDEX":{const n=S.clampIndex(r.payload.index,e.tracks.length),a=r.payload.autoPlay,t=a===!0?!1:a===!1?!0:e.isPaused;return{...e,currentIndex:n,...W,isPaused:t}}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:S.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=S.shuffleWithAnchor(i,e.currentIndex);return{...e,isShuffled:!0,originalTracks:i,tracks:o,currentIndex:0}}const n=e.originalTracks?[...e.originalTracks]:[...e.tracks],a=e.tracks[e.currentIndex],t=S.findIndexByTrackIdentity(n,a);return{...e,isShuffled:!1,originalTracks:null,tracks:n,currentIndex:S.clampIndex(t,n.length)}}case"NEXT":{const n=S.computeNextIndex(e),a=n===e.currentIndex;return{...e,currentIndex:n,...a?{}:W,isPaused:a?e.isPaused:!1}}case"PREV":{const n=S.computePrevIndex(e),a=n===e.currentIndex;return{...e,currentIndex:n,...a?{}:W,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,...W};case"SET_VOLUME":return{...e,volume:ue(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:Ce(r.payload)};case"MEDIA_VOLUME_SYNC":{const{volume:n,muted:a}=r.payload,t=ue(n);return t===e.volume&&a===e.muted?e:{...e,volume:t,muted:a}}default:return e}}function we(){return typeof navigator>"u"||!("mediaSession"in navigator)?null:navigator.mediaSession}function Ut(e,r,n,a={}){var M;const t=l.useRef(r);t.current=r;const i=r.tracks[r.currentIndex],o=i==null?void 0:i.title,u=i==null?void 0:i.artist,f=i==null?void 0:i.album,d=S.resolveArtworkUrl(i,(M=r.playlistMeta)==null?void 0:M.artworkUrl);l.useEffect(()=>{const p=we();!e||!p||(p.metadata=new MediaMetadata({title:o??"Unknown track",artist:u,album:f,artwork:d?[{src:d}]:void 0}))},[e,o,u,f,d]),l.useEffect(()=>{const p=we();!e||!p||(p.playbackState=r.isPaused?"paused":"playing")},[e,r.isPaused]);const m=a.seekForwardSeconds,y=a.seekBackwardSeconds;l.useEffect(()=>{const p=we();if(!(!e||!p)){try{p.setActionHandler("play",n.play),p.setActionHandler("pause",n.pause),p.setActionHandler("nexttrack",n.next),p.setActionHandler("previoustrack",n.prev),p.setActionHandler("seekto",k=>{typeof k.seekTime=="number"&&Number.isFinite(k.seekTime)&&n.seek(k.seekTime)}),typeof m=="number"&&m>0?p.setActionHandler("seekforward",()=>{const k=t.current,I=k.currentTime+m,x=k.duration,h=Number.isFinite(x)&&x>0?x:I;n.seek(Math.min(I,h))}):p.setActionHandler("seekforward",null),typeof y=="number"&&y>0?p.setActionHandler("seekbackward",()=>{const k=t.current;n.seek(Math.max(0,k.currentTime-y))}):p.setActionHandler("seekbackward",null)}catch{}return()=>{try{p.setActionHandler("play",null),p.setActionHandler("pause",null),p.setActionHandler("nexttrack",null),p.setActionHandler("previoustrack",null),p.setActionHandler("seekto",null),p.setActionHandler("seekforward",null),p.setActionHandler("seekbackward",null)}catch{}}}},[e,n,m,y]),l.useEffect(()=>{var h,j;const p=we();if(!e||!p||!a.positionState)return;const k=r.duration,I=r.currentTime,x=r.playbackRate;try{if(!Number.isFinite(k)||k<=0){(h=p.setPositionState)==null||h.call(p);return}(j=p.setPositionState)==null||j.call(p,{duration:k,playbackRate:Number.isFinite(x)&&x>0?x:1,position:Math.min(Math.max(0,I),k)})}catch{}return()=>{var R;try{(R=p.setPositionState)==null||R.call(p)}catch{}}},[e,a.positionState,r.currentTime,r.duration,r.playbackRate])}const Vt={"--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 Bt({children:e,initialTracks:r=[],initialIndex:n=0,initialPlaylistMeta:a=null,initialShuffle:t=!1,initialRepeatMode:i="off",initialPlaybackMode:o="playlist",initialPaused:u=!0,initialVolume:f=1,initialMuted:d=!1,initialPlaybackRate:m=1,initialStateKey:y,locale:M,mediaSession:p=!1,beforePlay:k,onPlayBlocked:I,retryOnError:x,persistence:h,hydrateOnMount:j=!1,resumeOnTrackChange:R=!1,unstyled:X=!1,asChild:le=!1,className:qe,style:_e,dir:Jr,prevRestartThresholdSeconds:Ke=3,onTrackChange:de,onPlay:ge,onPause:fe,onQueueEnd:pe,onError:me,onVolumeChange:ye,onPlaybackRateChange:xe,onSeek:B,debugLabel:Je}){var ur;const _=l.useRef(null),[c,T]=l.useReducer(Kr,void 0,()=>Xe({tracks:r,currentIndex:n,playlistMeta:a,isPaused:u,isShuffled:t,repeatMode:i,playbackMode:o,volume:f,muted:d,playbackRate:m})),q=l.useRef(c),ke=l.useRef({tracks:r,currentIndex:n,playlistMeta:a,isPaused:u,isShuffled:t,repeatMode:i,playbackMode:o,volume:f,muted:d,playbackRate:m});ke.current={tracks:r,currentIndex:n,playlistMeta:a,isPaused:u,isShuffled:t,repeatMode:i,playbackMode:o,volume:f,muted:d,playbackRate:m};const se=l.useRef(void 0);l.useEffect(()=>{if(y===void 0){se.current=void 0;return}if(se.current===void 0){se.current=y;return}if(se.current===y)return;se.current=y;const g=ke.current;T({type:"INIT",payload:{tracks:g.tracks,currentIndex:g.currentIndex,playlistMeta:g.playlistMeta,isPaused:g.isPaused,isShuffled:g.isShuffled,repeatMode:g.repeatMode,playbackMode:g.playbackMode,volume:g.volume,muted:g.muted,playbackRate:g.playbackRate}})},[y]),l.useEffect(()=>{q.current=c},[c]);const Ze=c.tracks[c.currentIndex]??null;l.useEffect(()=>{de==null||de(Ze,c.currentIndex)},[Ze,c.currentIndex,de]),l.useEffect(()=>{c.errorMessage&&(me==null||me(c.errorMessage))},[c.errorMessage,me]);const he=l.useRef(0),er=l.useRef(void 0),G=x?typeof x=="object"?x:{}:null,rr=(G==null?void 0:G.maxRetries)??3,tr=(G==null?void 0:G.delayMs)??1500,nr=(G==null?void 0:G.retryableErrors)??["MEDIA_ERR_NETWORK"],ar=(G==null?void 0:G.skipOnUnrecoverable)??!1;l.useEffect(()=>{var v;const g=(v=c.tracks[c.currentIndex])==null?void 0:v.fileUrl;er.current!==g&&(he.current=0,er.current=g)},[c.currentIndex,c.tracks]),l.useEffect(()=>{if(!G||!c.errorMessage)return;if(!nr.some(w=>c.errorMessage.includes(w))){if(ar&&c.tracks.length>1){const w=setTimeout(()=>T({type:"NEXT"}),500);return()=>clearTimeout(w)}return}if(he.current>=rr)return;const v=he.current,E=tr*2**v,P=setTimeout(()=>{he.current=v+1,T({type:"MEDIA_CANPLAY"});const w=_.current;w&&(w.load(),T({type:"PLAY"}))},E);return()=>clearTimeout(P)},[G,rr,tr,nr,ar,c.errorMessage,c.tracks.length]);const ve=l.useRef(void 0);l.useEffect(()=>{if(ve.current===void 0){ve.current=c.isPaused;return}ve.current!==c.isPaused&&(c.isPaused?fe==null||fe():ge==null||ge()),ve.current=c.isPaused},[c.isPaused,fe,ge]);const be=l.useRef(void 0),Te=l.useRef(void 0);l.useEffect(()=>{if(be.current===void 0||Te.current===void 0){be.current=c.volume,Te.current=c.muted;return}(be.current!==c.volume||Te.current!==c.muted)&&(ye==null||ye(c.volume,c.muted)),be.current=c.volume,Te.current=c.muted},[c.volume,c.muted,ye]);const Me=l.useRef(void 0);l.useEffect(()=>{if(Me.current===void 0){Me.current=c.playbackRate;return}Me.current!==c.playbackRate&&(xe==null||xe(c.playbackRate)),Me.current=c.playbackRate},[c.playbackRate,xe]);const D=l.useCallback(()=>{T({type:"PLAY"})},[]),F=l.useCallback(()=>{var g;T({type:"PAUSE"}),(g=_.current)==null||g.pause()},[]),Z=l.useCallback(()=>{q.current.isPaused?D():F()},[F,D]),N=l.useCallback(g=>{const v=_.current;v&&Number.isFinite(g)&&(v.currentTime=Math.max(0,g),B==null||B(Math.max(0,g)))},[B]),O=l.useCallback(g=>{T({type:"SET_VOLUME",payload:ue(g)})},[]),$=l.useCallback(g=>{T({type:"SET_MUTED",payload:g})},[]),Y=l.useCallback(()=>{T({type:"TOGGLE_MUTE"})},[]),H=l.useCallback(g=>{T({type:"SET_PLAYBACK_RATE",payload:Ce(g)})},[]),Q=l.useCallback(()=>{T({type:"NEXT"})},[]),z=l.useCallback(()=>{const g=_.current,v=Ke??3;g&&v>0&&g.currentTime>v?(g.currentTime=0,B==null||B(0)):T({type:"PREV"})},[Ke,B]),ee=l.useCallback(g=>{T({type:"SET_REPEAT",payload:g})},[]),re=l.useCallback(()=>{T({type:"CYCLE_REPEAT"})},[]),te=l.useCallback(()=>{T({type:"TOGGLE_SHUFFLE"})},[]),Ee=l.useCallback((g,v)=>{T({type:"SET_QUEUE",payload:{tracks:g,currentIndex:v}})},[]),Ie=l.useCallback((g,v,E)=>{T({type:"INSERT_TRACK",payload:{track:g,index:v,autoPlay:E}})},[]),Se=l.useCallback(g=>{T({type:"REMOVE_TRACK",payload:{index:g}})},[]),Pe=l.useCallback((g,v)=>{T({type:"MOVE_TRACK",payload:{fromIndex:g,toIndex:v}})},[]),Re=l.useCallback(g=>{T({type:"ADD_NEXT",payload:{track:g}})},[]),ne=l.useCallback(g=>{T({type:"SET_INDEX",payload:{index:g,autoPlay:!0}})},[]),Ae=l.useCallback(g=>{T({type:"SET_INDEX",payload:{index:g,autoPlay:!1}})},[]),je=l.useCallback(g=>{T({type:"SET_PLAYLIST_META",payload:g})},[]),ae=l.useCallback(g=>{T({type:"SET_PLAYBACK_MODE",payload:g})},[]),Ge=l.useCallback(g=>{T({type:"INIT",payload:g})},[]);l.useEffect(()=>{if(!(!h||!j))try{const g=h.get("ginger:volume"),v=h.get("ginger:muted"),E=h.get("ginger:playbackRate"),P=h.get("ginger:repeatMode"),w=h.get("ginger:currentIndex"),V=ke.current;T({type:"INIT",payload:{tracks:V.tracks,playlistMeta:V.playlistMeta,isPaused:V.isPaused,isShuffled:V.isShuffled,playbackMode:V.playbackMode,currentIndex:typeof w=="number"?w:V.currentIndex,repeatMode:P==="off"||P==="all"||P==="one"?P:V.repeatMode,volume:typeof g=="number"?g:V.volume,muted:typeof v=="boolean"?v:V.muted,playbackRate:typeof E=="number"?E:V.playbackRate}})}catch(g){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during hydration:",g)}},[j,h]),l.useEffect(()=>{if(h)try{h.set("ginger:volume",c.volume),h.set("ginger:muted",c.muted),h.set("ginger:playbackRate",c.playbackRate),h.set("ginger:repeatMode",c.repeatMode),h.set("ginger:currentIndex",c.currentIndex)}catch(g){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw:",g)}},[h,c.volume,c.muted,c.playbackRate,c.repeatMode,c.currentIndex]),l.useEffect(()=>{if(!h||!R)return;const g=c.tracks[c.currentIndex];if(!g)return;const v=`ginger:resume:${S.trackIdentity(g)}`;try{const E=h.get(v);typeof E=="number"&&Number.isFinite(E)&&N(E)}catch(E){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.get() threw during resume:",E)}},[h,R,c.currentIndex,c.tracks,N]),l.useEffect(()=>{if(!h||!R)return;const g=setInterval(()=>{const v=q.current,E=v.tracks[v.currentIndex];if(!E||!(v.currentTime>=0))return;const P=`ginger:resume:${S.trackIdentity(E)}`;try{h.set(P,v.currentTime)}catch(w){process.env.NODE_ENV!=="production"&&console.warn("[@lucaismyname/ginger] persistence.set() threw during resume save:",w)}},5e3);return()=>clearInterval(g)},[h,R]);const Zr=(ur=c.tracks[c.currentIndex])==null?void 0:ur.fileUrl;l.useEffect(()=>{const g=_.current;if(!g)return;if(c.isPaused){g.pause();return}if(g.ended&&S.computeEndedTransition(q.current).kind==="stop"){T({type:"PAUSE"});return}let v=!1;return(async()=>{if(k){let E=!1;try{E=await k()}catch(P){const w=P instanceof Error?P.message:"beforePlay rejected";T({type:"MEDIA_ERROR",payload:{message:w}});return}if(!E){v||(T({type:"PAUSE"}),I==null||I());return}}v||g.play().catch(E=>{const P=E instanceof Error?E.message:typeof E=="string"?E:"Playback failed (e.g. autoplay blocked or unavailable source)";T({type:"MEDIA_ERROR",payload:{message:P}})})})(),()=>{v=!0}},[k,Zr,I,c.isPaused]);const ie=l.useCallback(()=>{var E;const g=S.computeEndedTransition(q.current);if(g.kind==="replay_same"){const P=_.current;P&&(P.currentTime=0),T({type:"PLAY"});return}if(g.kind==="stop"){(E=_.current)==null||E.pause(),T({type:"PAUSE"}),pe==null||pe();return}const v=g.nextIndex;T({type:"SET_INDEX",payload:{index:v,autoPlay:!0}})},[pe]),et=l.useMemo(()=>({play:D,pause:F,next:Q,prev:z,seek:N}),[D,F,Q,z,N]),rt=typeof p=="object"?!0:!!p,tt=l.useMemo(()=>typeof p=="object"?p:{},[p]);Ut(rt,c,et,tt);const ir=Jr??(M!=null&&M.seek&&/[\u0590-\u08FF]/.test(M.seek)?"rtl":"ltr"),nt=l.useMemo(()=>({state:c,dispatch:T,audioRef:_,notifyEnded:ie,init:Ge,play:D,pause:F,togglePlayPause:Z,seek:N,setVolume:O,setMuted:$,toggleMute:Y,setPlaybackRate:H,next:Q,prev:z,setRepeatMode:ee,cycleRepeat:re,toggleShuffle:te,setQueue:Ee,insertTrackAt:Ie,removeTrackAt:Se,moveTrack:Pe,enqueueNext:Re,playTrackAt:ne,selectTrackAt:Ae,setPlaylistMeta:je,setPlaybackMode:ae}),[re,Ge,Q,ie,F,D,ne,Ie,Se,Pe,Re,Ae,z,N,$,H,Ee,ee,je,ae,O,c,Y,Z,te]),at=l.useMemo(()=>({tracks:c.tracks,currentIndex:c.currentIndex,isPaused:c.isPaused,isShuffled:c.isShuffled,repeatMode:c.repeatMode,originalTracks:c.originalTracks,playlistMeta:c.playlistMeta,init:Ge,play:D,pause:F,togglePlayPause:Z,next:Q,prev:z,setRepeatMode:ee,cycleRepeat:re,toggleShuffle:te,playbackMode:c.playbackMode,setQueue:Ee,insertTrackAt:Ie,removeTrackAt:Se,moveTrack:Pe,enqueueNext:Re,playTrackAt:ne,selectTrackAt:Ae,setPlaylistMeta:je,setPlaybackMode:ae,dispatch:T}),[c.tracks,c.currentIndex,c.isPaused,c.isShuffled,c.repeatMode,c.playbackMode,c.originalTracks,c.playlistMeta,Ge,D,F,Z,Q,z,ee,re,te,Ee,Ie,Se,Pe,Re,ne,Ae,je,ae]),it=l.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:N,setVolume:O,setMuted:$,toggleMute:Y,setPlaybackRate:H,audioRef:_,notifyEnded:ie,dispatch:T}),[c.currentTime,c.duration,c.bufferedFraction,c.isBuffering,c.errorMessage,c.volume,c.muted,c.playbackRate,N,O,$,Y,H,ie]),st=l.useMemo(()=>({currentTime:c.currentTime,duration:c.duration,bufferedFraction:c.bufferedFraction,isBuffering:c.isBuffering,errorMessage:c.errorMessage}),[c.currentTime,c.duration,c.bufferedFraction,c.isBuffering,c.errorMessage]),ot=l.useMemo(()=>({volume:c.volume,muted:c.muted,playbackRate:c.playbackRate,seek:N,setVolume:O,setMuted:$,toggleMute:Y,setPlaybackRate:H,audioRef:_,notifyEnded:ie,dispatch:T}),[c.volume,c.muted,c.playbackRate,N,O,$,Y,H,ie]),sr=A.derivePlaybackUiState(c),or=l.useMemo(()=>X?_e:{...Vt,..._e},[_e,X]),U=l.useMemo(()=>({className:qe,style:or,"data-ginger-playback":sr,dir:ir}),[qe,or,sr,ir]),Ne=l.useRef(null),cr=l.useRef({play:D,pause:F,togglePlayPause:Z,next:Q,prev:z,seek:N,setVolume:O,setMuted:$,toggleMute:Y,setPlaybackRate:H,setRepeatMode:ee,cycleRepeat:re,toggleShuffle:te,playTrackAt:ne,setPlaybackMode:ae});cr.current={play:D,pause:F,togglePlayPause:Z,next:Q,prev:z,seek:N,setVolume:O,setMuted:$,toggleMute:Y,setPlaybackRate:H,setRepeatMode:ee,cycleRepeat:re,toggleShuffle:te,playTrackAt:ne,setPlaybackMode:ae},l.useEffect(()=>{var E;const g=typeof window<"u"?window.__GINGER_DEVTOOLS__:null;if(!g||typeof g.register!="function")return;const v=typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`ginger-${Date.now()}-${Math.random().toString(36).slice(2)}`;return Ne.current=v,g.register(v,{label:Je,state:q.current,actions:cr.current,audioSrc:((E=_.current)==null?void 0:E.src)??null}),()=>{g.unregister(v),Ne.current=null}},[Je]),l.useEffect(()=>{const g=typeof window<"u"?window.__GINGER_DEVTOOLS__:null;if(!g||typeof g.update!="function")return;const v=setInterval(()=>{var P;const E=Ne.current;E&&g.update(E,{state:q.current,audioSrc:((P=_.current)==null?void 0:P.src)??null})},250);return()=>clearInterval(v)},[]);const ct=l.useMemo(()=>{if(!le)return s.jsx("div",{className:U.className,style:U.style,"data-ginger-playback":U["data-ginger-playback"],dir:U.dir,children:e});const g=l.Children.only(e);if(!l.isValidElement(g))throw new Error("Ginger.Provider asChild expects a single React element child.");const v=g,E=v.props.style;return l.cloneElement(v,{className:Ot(v.props.className,U.className),style:E&&typeof E=="object"?{...E,...U.style}:U.style,"data-ginger-playback":U["data-ginger-playback"],dir:U.dir})},[le,e,U]),ut=l.useMemo(()=>({getInitialTracksSnapshot:()=>ke.current.tracks}),[]);return s.jsx(ft,{locale:M,children:s.jsx(Ct,{value:ut,children:s.jsx(b.GingerPlaybackContext.Provider,{value:at,children:s.jsx(b.GingerTimeContext.Provider,{value:st,children:s.jsx(b.GingerMediaControlContext.Provider,{value:ot,children:s.jsx(b.GingerMediaContext.Provider,{value:it,children:s.jsx(gr.Provider,{value:nt,children:ct})})})})})})})}function Ot(e,r){const n=[e,r].filter(Boolean).join(" ");return n===""?void 0:n}const $t=Object.assign(qr,{Track:Wr}),Yt={Provider:Bt,Player:dt,Tracks:$t,Current:{Title:mt,Artist:yt,Album:xt,Description:kt,Copyright:ht,Genre:vt,Label:bt,Isrc:Tt,TrackNumber:Mt,Year:Sr,Lyrics:Pr,LyricsSynced:Qe,Chapters:ze,FileUrl:Gr,Artwork:wr,QueueIndex:Cr,QueueLength:_r,QueuePosition:Nr,Elapsed:Lr,Duration:Dr,Remaining:Fr,Progress:Ur,TimeRail:Vr,BufferRail:Br,PlaybackState:Or,ErrorMessage:$r},Queue:{Title:St,Subtitle:Pt,Description:Rt,Copyright:At,Artwork:Qr},Control:{PlayPause:xr,Repeat:kr,Next:hr,Previous:vr,Shuffle:br,SeekBar:Tr,Volume:Mr,Mute:Er,PlaybackRate:Ir},Icon:{Play:Ue,Pause:Fe,SkipForward:$e,SkipBack:Oe,Shuffle:Be,Volume2:Ye,VolumeX:He,RepeatGlyph:Ve,Wrapper:L},Playlist:It};exports.Chapters=ze;exports.Ginger=Yt;exports.LyricsSynced=Qe;exports.Pause=Fe;exports.Play=Ue;exports.RepeatGlyph=Ve;exports.ShuffleIcon=Be;exports.SkipBack=Oe;exports.SkipForward=$e;exports.Volume2=Ye;exports.VolumeX=He;exports.Wrapper=L;exports.clampPlaybackRate=Ce;exports.clampVolume=ue;exports.createInitialState=Xe;exports.defaultGingerLocale=ce;exports.gingerReducer=Kr;exports.parseLrc=Rr;exports.useGingerChapters=jr;exports.useGingerLocale=C;exports.useGingerLyricsSync=Ar;exports.usePlayPauseBinding=yr;exports.useSeekBarBinding=pr;exports.useVolumeSlider=mr;
2
+ //# sourceMappingURL=ginger-DJwWdIp0.cjs.map