@lucaismyname/ginger 0.0.54 → 0.0.56

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 (78) hide show
  1. package/README.md +37 -1
  2. package/dist/GingerSplitContexts-DQ3rESBu.js +78 -0
  3. package/dist/GingerSplitContexts-DQ3rESBu.js.map +1 -0
  4. package/dist/GingerSplitContexts-KSB0vQ5F.cjs +2 -0
  5. package/dist/GingerSplitContexts-KSB0vQ5F.cjs.map +1 -0
  6. package/dist/analyzer/useGingerLiveAnalyzer.d.ts.map +1 -1
  7. package/dist/client.cjs +1 -1
  8. package/dist/client.js +28 -26
  9. package/dist/context/GingerProvider.d.ts +1 -1
  10. package/dist/context/GingerProvider.d.ts.map +1 -1
  11. package/dist/context/GingerSplitContexts.d.ts +22 -2
  12. package/dist/context/GingerSplitContexts.d.ts.map +1 -1
  13. package/dist/crossfade/index.cjs +1 -1
  14. package/dist/crossfade/index.cjs.map +1 -1
  15. package/dist/crossfade/index.js +116 -99
  16. package/dist/crossfade/index.js.map +1 -1
  17. package/dist/crossfade/useGingerCrossfade.d.ts.map +1 -1
  18. package/dist/devtools/GingerDevtools.d.ts +2 -0
  19. package/dist/devtools/GingerDevtools.d.ts.map +1 -0
  20. package/dist/devtools/index.cjs +2 -0
  21. package/dist/devtools/index.cjs.map +1 -0
  22. package/dist/devtools/index.d.ts +3 -0
  23. package/dist/devtools/index.d.ts.map +1 -0
  24. package/dist/devtools/index.js +465 -0
  25. package/dist/devtools/index.js.map +1 -0
  26. package/dist/devtools/registry.d.ts +49 -0
  27. package/dist/devtools/registry.d.ts.map +1 -0
  28. package/dist/equalizer/index.cjs +1 -1
  29. package/dist/equalizer/index.js +1 -1
  30. package/dist/experimental-gapless/index.cjs +1 -1
  31. package/dist/experimental-gapless/index.js +1 -1
  32. package/dist/formatTime-DUWvzW21.js +9 -0
  33. package/dist/formatTime-DUWvzW21.js.map +1 -0
  34. package/dist/formatTime-fm_QClmG.cjs +2 -0
  35. package/dist/formatTime-fm_QClmG.cjs.map +1 -0
  36. package/dist/ginger-B-W73LQC.cjs +2 -0
  37. package/dist/ginger-B-W73LQC.cjs.map +1 -0
  38. package/dist/ginger-BHu7Ofna.js +2177 -0
  39. package/dist/ginger-BHu7Ofna.js.map +1 -0
  40. package/dist/hooks/useGingerKeyboardShortcuts.d.ts.map +1 -1
  41. package/dist/hooks/useSeekDrag.d.ts.map +1 -1
  42. package/dist/index.cjs +1 -1
  43. package/dist/index.d.ts +3 -3
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +28 -26
  46. package/dist/internal/formatTime.d.ts.map +1 -1
  47. package/dist/remote/index.cjs +1 -1
  48. package/dist/remote/index.js +1 -1
  49. package/dist/spatial/index.cjs +1 -1
  50. package/dist/spatial/index.js +1 -1
  51. package/dist/store.d.ts.map +1 -1
  52. package/dist/testing/index.cjs +1 -1
  53. package/dist/testing/index.js +1 -1
  54. package/dist/transcript/index.cjs +1 -1
  55. package/dist/transcript/index.js +1 -1
  56. package/dist/types.d.ts +26 -1
  57. package/dist/types.d.ts.map +1 -1
  58. package/dist/{useGinger-4uvPoChz.cjs → useGinger-BMRLzjmr.cjs} +2 -2
  59. package/dist/{useGinger-4uvPoChz.cjs.map → useGinger-BMRLzjmr.cjs.map} +1 -1
  60. package/dist/{useGinger-Dz0cPyD1.js → useGinger-DKrHZ4NU.js} +2 -2
  61. package/dist/{useGinger-Dz0cPyD1.js.map → useGinger-DKrHZ4NU.js.map} +1 -1
  62. package/dist/useGingerChapterProgress-DAIWjAtG.js +343 -0
  63. package/dist/useGingerChapterProgress-DAIWjAtG.js.map +1 -0
  64. package/dist/useGingerChapterProgress-DLx-LayX.cjs +2 -0
  65. package/dist/useGingerChapterProgress-DLx-LayX.cjs.map +1 -0
  66. package/package.json +6 -1
  67. package/dist/GingerSplitContexts-BzBExb95.js +0 -64
  68. package/dist/GingerSplitContexts-BzBExb95.js.map +0 -1
  69. package/dist/GingerSplitContexts-C7puo0M7.cjs +0 -2
  70. package/dist/GingerSplitContexts-C7puo0M7.cjs.map +0 -1
  71. package/dist/ginger-9lWCvbHv.cjs +0 -2
  72. package/dist/ginger-9lWCvbHv.cjs.map +0 -1
  73. package/dist/ginger-XgXdGRB-.js +0 -2049
  74. package/dist/ginger-XgXdGRB-.js.map +0 -1
  75. package/dist/useGingerChapterProgress-Cqa9_CyH.cjs +0 -2
  76. package/dist/useGingerChapterProgress-Cqa9_CyH.cjs.map +0 -1
  77. package/dist/useGingerChapterProgress-DgqqoY5F.js +0 -324
  78. package/dist/useGingerChapterProgress-DgqqoY5F.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"formatTime.d.ts","sourceRoot":"","sources":["../../src/internal/formatTime.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlD"}
1
+ {"version":3,"file":"formatTime.d.ts","sourceRoot":"","sources":["../../src/internal/formatTime.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASlD"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),U=require("../useGinger-4uvPoChz.cjs"),C="ginger-remote",B=u=>u==="off"||u==="all"||u==="one",j=u=>u==="playlist"||u==="single";function x(u){if(!u||typeof u!="object")return!1;const e=u;if(!Array.isArray(e.tracks))return!1;for(const d of e.tracks){if(!d||typeof d!="object")return!1;const E=d;if(typeof E.title!="string"||typeof E.fileUrl!="string")return!1}return!(e.currentIndex!==void 0&&typeof e.currentIndex!="number"||e.isPaused!==void 0&&typeof e.isPaused!="boolean"||e.isShuffled!==void 0&&typeof e.isShuffled!="boolean"||e.repeatMode!==void 0&&!B(e.repeatMode)||e.playbackMode!==void 0&&!j(e.playbackMode)||e.volume!==void 0&&typeof e.volume!="number"||e.muted!==void 0&&typeof e.muted!="boolean"||e.playbackRate!==void 0&&typeof e.playbackRate!="number"||e.playlistMeta!==void 0&&e.playlistMeta!==null&&typeof e.playlistMeta!="object")}function F(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`ginger-tab-${Math.random().toString(36).slice(2)}`}function q(u={}){const{channelName:e=C,heartbeatMs:d=2e3,electionTimeoutMs:E=300}=u,{state:a,init:M}=U.useGinger(),t=c.useRef("");t.current===""&&(t.current=F());const[p,b]=c.useState("pending"),[_,T]=c.useState(0),[O,w]=c.useState(null),r=c.useRef(p);r.current=p;const S=c.useRef(M);S.current=M;const k=c.useRef(null),l=c.useRef(new Set),R=c.useRef(Date.now()),m=c.useRef(null),i=c.useRef(null),A=c.useRef(null),g=c.useCallback(s=>{var o;(o=k.current)==null||o.postMessage(s)},[]),y=c.useCallback(()=>{m.current&&(clearTimeout(m.current),m.current=null)},[]),N=c.useCallback(()=>{i.current&&(clearInterval(i.current),i.current=null)},[]);c.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u"){w("BroadcastChannel is not available in this environment");return}w(null);const s=new BroadcastChannel(e);k.current=s,l.current=new Set([t.current]);const o=I=>{s.postMessage(I)},v=()=>{i.current&&clearInterval(i.current),i.current=setInterval(()=>{const I=t.current;l.current.add(I);const n=l.current.size;T(n),o({type:"HEARTBEAT",tabId:I,connectedCount:n})},d)},h=()=>{y(),N(),b("follower"),r.current="follower"},H=()=>{y(),b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v()},D=()=>{y(),m.current=setTimeout(()=>{r.current==="pending"&&(b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v())},E)},L=I=>{const n=I.data;if(!n||typeof n!="object"||!("type"in n))return;const f=t.current;switch(n.type){case"PING":{l.current.add(n.tabId),r.current==="leader"&&o({type:"PONG",tabId:f,leaderTabId:f});break}case"PONG":{n.leaderTabId&&n.leaderTabId!==f&&(h(),R.current=Date.now());break}case"LEADER_ANNOUNCE":{if(n.tabId===f)break;l.current.add(n.tabId),n.tabId<f?(h(),R.current=Date.now()):n.tabId>f&&(r.current==="pending"||r.current==="leader")&&H();break}case"LEADER_RESIGN":{if(n.tabId===f)break;R.current=Date.now(),r.current==="follower"&&(b("pending"),r.current="pending",o({type:"PING",tabId:f}),D());break}case"HEARTBEAT":{r.current==="follower"&&(R.current=Date.now(),T(n.connectedCount));break}case"STATE_SNAPSHOT":{if(r.current==="follower"&&n.tabId!==f){if(process.env.NODE_ENV!=="production"&&!x(n.snapshot)){console.warn("[@lucaismyname/ginger] ignored STATE_SNAPSHOT: invalid GingerInitPayload");break}S.current(n.snapshot)}break}}};s.addEventListener("message",L),o({type:"PING",tabId:t.current}),m.current=setTimeout(()=>{r.current==="pending"&&(b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v())},E),A.current=setInterval(()=>{r.current==="follower"&&Date.now()-R.current>d*2&&(b("pending"),r.current="pending",o({type:"PING",tabId:t.current}),D())},d);const P=()=>{r.current==="leader"&&o({type:"LEADER_RESIGN",tabId:t.current})};return window.addEventListener("pagehide",P),()=>{window.removeEventListener("pagehide",P),y(),N(),A.current&&(clearInterval(A.current),A.current=null),s.removeEventListener("message",L),r.current==="leader"&&o({type:"LEADER_RESIGN",tabId:t.current}),s.close(),k.current=null}},[e,y,E,d,N]),c.useEffect(()=>{if(p!=="leader")return;const s={tracks:a.tracks,currentIndex:a.currentIndex,playlistMeta:a.playlistMeta,isPaused:a.isPaused,isShuffled:!1,repeatMode:a.repeatMode,playbackMode:a.playbackMode,volume:a.volume,muted:a.muted,playbackRate:a.playbackRate};g({type:"STATE_SNAPSHOT",tabId:t.current,snapshot:s})},[p,a.tracks,a.currentIndex,a.isPaused,a.repeatMode,a.playbackMode,a.playlistMeta,a.volume,a.muted,a.playbackRate,g]);const G=c.useCallback(()=>{y(),N(),b("leader"),r.current="leader",l.current.add(t.current),g({type:"LEADER_ANNOUNCE",tabId:t.current}),i.current&&clearInterval(i.current),i.current=setInterval(()=>{const s=t.current;l.current.add(s);const o=l.current.size;T(o),g({type:"HEARTBEAT",tabId:s,connectedCount:o})},d)},[y,d,g,N]);return{isLeader:p==="leader",isFollower:p==="follower",isPending:p==="pending",connectedTabs:_,claimLeadership:G,error:O}}exports.DEFAULT_REMOTE_CHANNEL_NAME=C;exports.useGingerRemote=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),U=require("../useGinger-BMRLzjmr.cjs"),C="ginger-remote",B=u=>u==="off"||u==="all"||u==="one",j=u=>u==="playlist"||u==="single";function x(u){if(!u||typeof u!="object")return!1;const e=u;if(!Array.isArray(e.tracks))return!1;for(const d of e.tracks){if(!d||typeof d!="object")return!1;const E=d;if(typeof E.title!="string"||typeof E.fileUrl!="string")return!1}return!(e.currentIndex!==void 0&&typeof e.currentIndex!="number"||e.isPaused!==void 0&&typeof e.isPaused!="boolean"||e.isShuffled!==void 0&&typeof e.isShuffled!="boolean"||e.repeatMode!==void 0&&!B(e.repeatMode)||e.playbackMode!==void 0&&!j(e.playbackMode)||e.volume!==void 0&&typeof e.volume!="number"||e.muted!==void 0&&typeof e.muted!="boolean"||e.playbackRate!==void 0&&typeof e.playbackRate!="number"||e.playlistMeta!==void 0&&e.playlistMeta!==null&&typeof e.playlistMeta!="object")}function F(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`ginger-tab-${Math.random().toString(36).slice(2)}`}function q(u={}){const{channelName:e=C,heartbeatMs:d=2e3,electionTimeoutMs:E=300}=u,{state:a,init:M}=U.useGinger(),t=c.useRef("");t.current===""&&(t.current=F());const[p,b]=c.useState("pending"),[_,T]=c.useState(0),[O,w]=c.useState(null),r=c.useRef(p);r.current=p;const S=c.useRef(M);S.current=M;const k=c.useRef(null),l=c.useRef(new Set),R=c.useRef(Date.now()),m=c.useRef(null),i=c.useRef(null),A=c.useRef(null),g=c.useCallback(s=>{var o;(o=k.current)==null||o.postMessage(s)},[]),y=c.useCallback(()=>{m.current&&(clearTimeout(m.current),m.current=null)},[]),N=c.useCallback(()=>{i.current&&(clearInterval(i.current),i.current=null)},[]);c.useEffect(()=>{if(typeof window>"u"||typeof BroadcastChannel>"u"){w("BroadcastChannel is not available in this environment");return}w(null);const s=new BroadcastChannel(e);k.current=s,l.current=new Set([t.current]);const o=I=>{s.postMessage(I)},v=()=>{i.current&&clearInterval(i.current),i.current=setInterval(()=>{const I=t.current;l.current.add(I);const n=l.current.size;T(n),o({type:"HEARTBEAT",tabId:I,connectedCount:n})},d)},h=()=>{y(),N(),b("follower"),r.current="follower"},H=()=>{y(),b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v()},D=()=>{y(),m.current=setTimeout(()=>{r.current==="pending"&&(b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v())},E)},L=I=>{const n=I.data;if(!n||typeof n!="object"||!("type"in n))return;const f=t.current;switch(n.type){case"PING":{l.current.add(n.tabId),r.current==="leader"&&o({type:"PONG",tabId:f,leaderTabId:f});break}case"PONG":{n.leaderTabId&&n.leaderTabId!==f&&(h(),R.current=Date.now());break}case"LEADER_ANNOUNCE":{if(n.tabId===f)break;l.current.add(n.tabId),n.tabId<f?(h(),R.current=Date.now()):n.tabId>f&&(r.current==="pending"||r.current==="leader")&&H();break}case"LEADER_RESIGN":{if(n.tabId===f)break;R.current=Date.now(),r.current==="follower"&&(b("pending"),r.current="pending",o({type:"PING",tabId:f}),D());break}case"HEARTBEAT":{r.current==="follower"&&(R.current=Date.now(),T(n.connectedCount));break}case"STATE_SNAPSHOT":{if(r.current==="follower"&&n.tabId!==f){if(process.env.NODE_ENV!=="production"&&!x(n.snapshot)){console.warn("[@lucaismyname/ginger] ignored STATE_SNAPSHOT: invalid GingerInitPayload");break}S.current(n.snapshot)}break}}};s.addEventListener("message",L),o({type:"PING",tabId:t.current}),m.current=setTimeout(()=>{r.current==="pending"&&(b("leader"),r.current="leader",l.current.add(t.current),o({type:"LEADER_ANNOUNCE",tabId:t.current}),v())},E),A.current=setInterval(()=>{r.current==="follower"&&Date.now()-R.current>d*2&&(b("pending"),r.current="pending",o({type:"PING",tabId:t.current}),D())},d);const P=()=>{r.current==="leader"&&o({type:"LEADER_RESIGN",tabId:t.current})};return window.addEventListener("pagehide",P),()=>{window.removeEventListener("pagehide",P),y(),N(),A.current&&(clearInterval(A.current),A.current=null),s.removeEventListener("message",L),r.current==="leader"&&o({type:"LEADER_RESIGN",tabId:t.current}),s.close(),k.current=null}},[e,y,E,d,N]),c.useEffect(()=>{if(p!=="leader")return;const s={tracks:a.tracks,currentIndex:a.currentIndex,playlistMeta:a.playlistMeta,isPaused:a.isPaused,isShuffled:!1,repeatMode:a.repeatMode,playbackMode:a.playbackMode,volume:a.volume,muted:a.muted,playbackRate:a.playbackRate};g({type:"STATE_SNAPSHOT",tabId:t.current,snapshot:s})},[p,a.tracks,a.currentIndex,a.isPaused,a.repeatMode,a.playbackMode,a.playlistMeta,a.volume,a.muted,a.playbackRate,g]);const G=c.useCallback(()=>{y(),N(),b("leader"),r.current="leader",l.current.add(t.current),g({type:"LEADER_ANNOUNCE",tabId:t.current}),i.current&&clearInterval(i.current),i.current=setInterval(()=>{const s=t.current;l.current.add(s);const o=l.current.size;T(o),g({type:"HEARTBEAT",tabId:s,connectedCount:o})},d)},[y,d,g,N]);return{isLeader:p==="leader",isFollower:p==="follower",isPending:p==="pending",connectedTabs:_,claimLeadership:G,error:O}}exports.DEFAULT_REMOTE_CHANNEL_NAME=C;exports.useGingerRemote=q;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { useRef as f, useState as M, useCallback as T, useEffect as O } from "react";
2
- import { u as B } from "../useGinger-Dz0cPyD1.js";
2
+ import { u as B } from "../useGinger-DKrHZ4NU.js";
3
3
  const j = "ginger-remote", F = (o) => o === "off" || o === "all" || o === "one", z = (o) => o === "playlist" || o === "single";
4
4
  function V(o) {
5
5
  if (!o || typeof o != "object") return !1;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),d=require("../liveAudioGraph-0cpHD_Ic.cjs"),k=require("../useGinger-4uvPoChz.cjs");function M(t,o,c,l){t.positionX.value=o,t.positionY.value=c,t.positionZ.value=l}function R(t,o,c,l){t.listener.positionX.value=o,t.listener.positionY.value=c,t.listener.positionZ.value=l}function q(t={}){const{enabled:o=!0,panningModel:c="HRTF",distanceModel:l="inverse",refDistance:g=1,position:S=[0,0,0],listenerPosition:A=[0,0,0]}=t,{audioRef:p}=k.useGinger(),[G,v]=r.useState(null),u=r.useRef(null),f=r.useRef(null),[P,h,m]=S,[b,y,C]=A;r.useEffect(()=>{const n=p.current;if(!(!n||typeof window>"u")){if(!o){d.setProcessingChain(n,[]),u.current=null,f.current=null;return}try{const e=d.attachLiveAnalyser(n,{fftSize:32,smoothingTimeConstant:0,minDecibels:-100,maxDecibels:0}),{context:s,id:i}=e,a=s.createPanner();a.panningModel=c,a.distanceModel=l,a.refDistance=g,M(a,P,h,m),R(s,b,y,C),u.current=a,f.current=s,d.setProcessingChain(n,[a]),d.detachLiveAnalyser(n,i),v(null)}catch(e){const s=e instanceof Error?e.message:"Failed to create spatial panner";v(s),u.current=null,f.current=null}return()=>{const e=p.current;e&&d.setProcessingChain(e,[]),u.current=null,f.current=null}}},[o,c,l,g,P,h,m,b,y,C,p]);const x=r.useCallback((n,e,s)=>{const i=u.current;i&&M(i,n,e,s)},[]),D=r.useCallback((n,e,s)=>{const i=f.current;i&&R(i,n,e,s)},[]),L=r.useCallback(n=>{const e=u.current;e&&(e.panningModel=n)},[]);return{setSourcePosition:x,setListenerPosition:D,setPanningModel:L,error:G}}exports.useGingerSpatialAudio=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),d=require("../liveAudioGraph-0cpHD_Ic.cjs"),k=require("../useGinger-BMRLzjmr.cjs");function M(t,o,c,l){t.positionX.value=o,t.positionY.value=c,t.positionZ.value=l}function R(t,o,c,l){t.listener.positionX.value=o,t.listener.positionY.value=c,t.listener.positionZ.value=l}function q(t={}){const{enabled:o=!0,panningModel:c="HRTF",distanceModel:l="inverse",refDistance:g=1,position:S=[0,0,0],listenerPosition:A=[0,0,0]}=t,{audioRef:p}=k.useGinger(),[G,v]=r.useState(null),u=r.useRef(null),f=r.useRef(null),[P,h,m]=S,[b,y,C]=A;r.useEffect(()=>{const n=p.current;if(!(!n||typeof window>"u")){if(!o){d.setProcessingChain(n,[]),u.current=null,f.current=null;return}try{const e=d.attachLiveAnalyser(n,{fftSize:32,smoothingTimeConstant:0,minDecibels:-100,maxDecibels:0}),{context:s,id:i}=e,a=s.createPanner();a.panningModel=c,a.distanceModel=l,a.refDistance=g,M(a,P,h,m),R(s,b,y,C),u.current=a,f.current=s,d.setProcessingChain(n,[a]),d.detachLiveAnalyser(n,i),v(null)}catch(e){const s=e instanceof Error?e.message:"Failed to create spatial panner";v(s),u.current=null,f.current=null}return()=>{const e=p.current;e&&d.setProcessingChain(e,[]),u.current=null,f.current=null}}},[o,c,l,g,P,h,m,b,y,C,p]);const x=r.useCallback((n,e,s)=>{const i=u.current;i&&M(i,n,e,s)},[]),D=r.useCallback((n,e,s)=>{const i=f.current;i&&R(i,n,e,s)},[]),L=r.useCallback(n=>{const e=u.current;e&&(e.panningModel=n)},[]);return{setSourcePosition:x,setListenerPosition:D,setPanningModel:L,error:G}}exports.useGingerSpatialAudio=q;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  import { useState as X, useRef as R, useEffect as Y, useCallback as p } from "react";
2
2
  import { s as d, a as Z, d as w } from "../liveAudioGraph-DvPaxBCP.js";
3
- import { u as F } from "../useGinger-Dz0cPyD1.js";
3
+ import { u as F } from "../useGinger-DKrHZ4NU.js";
4
4
  function b(t, o, i, c) {
5
5
  t.positionX.value = o, t.positionY.value = i, t.positionZ.value = c;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,WAAW,EAGZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,KAAK,EACN,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,8FAA8F;IAC9F,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAClE,mHAAmH;IACnH,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,iDAAiD;IACjD,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA2C/E"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,WAAW,EAGZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,KAAK,EACN,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,8FAA8F;IAC9F,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IAClE,mHAAmH;IACnH,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC3C,iDAAiD;IACjD,WAAW,EAAE,OAAO,WAAW,CAAC;IAChC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAqD/E"}
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Al=require("react/jsx-runtime"),Xi=require("react"),yt=require("react-dom"),Il=require("../ginger-9lWCvbHv.cjs");function Pc(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const ur=Pc(Xi);function Tc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wi={exports:{}},ne={};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Al=require("react/jsx-runtime"),Xi=require("react"),yt=require("react-dom"),Il=require("../ginger-B-W73LQC.cjs");function Pc(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const ur=Pc(Xi);function Tc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wi={exports:{}},ne={};/**
2
2
  * @license React
3
3
  * react-dom-test-utils.production.min.js
4
4
  *
@@ -2,7 +2,7 @@ import { jsxs as Rc, jsx as Pc } from "react/jsx-runtime";
2
2
  import * as ur from "react";
3
3
  import Us from "react";
4
4
  import yt from "react-dom";
5
- import { G as Ml } from "../ginger-XgXdGRB-.js";
5
+ import { G as Ml } from "../ginger-BHu7Ofna.js";
6
6
  function Tc(e) {
7
7
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
8
8
  }
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),F=require("../GingerSplitContexts-C7puo0M7.cjs");function g(n){return n.replace(/<[^>]+>/g,"").trim()}function T(n){const e=n.trim().replace(",",".").split(":");if(e.length===3){const i=Number(e[0]),t=Number(e[1]),s=Number(e[2]);return[i,t,s].every(Number.isFinite)?i*3600+t*60+s:Number.NaN}if(e.length===2){const i=Number(e[0]),t=Number(e[1]);return[i,t].every(Number.isFinite)?i*60+t:Number.NaN}return Number.NaN}function S(n){const r=n.indexOf("-->");if(r<0)return null;const e=n.slice(0,r).trim(),t=n.slice(r+3).trim().match(/^(\S+)/);return t?{start:e,end:t[1]}:null}function b(n){const r=[],e=n.replace(/\r\n/g,`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react"),F=require("../GingerSplitContexts-KSB0vQ5F.cjs");function g(n){return n.replace(/<[^>]+>/g,"").trim()}function T(n){const e=n.trim().replace(",",".").split(":");if(e.length===3){const i=Number(e[0]),t=Number(e[1]),s=Number(e[2]);return[i,t,s].every(Number.isFinite)?i*3600+t*60+s:Number.NaN}if(e.length===2){const i=Number(e[0]),t=Number(e[1]);return[i,t].every(Number.isFinite)?i*60+t:Number.NaN}return Number.NaN}function S(n){const r=n.indexOf("-->");if(r<0)return null;const e=n.slice(0,r).trim(),t=n.slice(r+3).trim().match(/^(\S+)/);return t?{start:e,end:t[1]}:null}function b(n){const r=[],e=n.replace(/\r\n/g,`
2
2
  `).split(/\n\s*\n/);for(const i of e){const t=i.split(`
3
3
  `).map(m=>m.trim()).filter(m=>m.length>0);if(t.length===0)continue;let s=0;/^\d+$/.test(t[0])&&(s=1);const c=t[s];if(!c)continue;const o=S(c);if(!o)continue;const a=T(o.start),u=T(o.end);if(!Number.isFinite(a)||!Number.isFinite(u))continue;const l=t.slice(s+1),f=g(l.join(`
4
4
  `));f&&r.push({startTime:a,endTime:u,text:f})}return r.sort((i,t)=>i.startTime-t.startTime)}function N(n){const r=[];let e=n.replace(/\r\n/g,`
@@ -1,5 +1,5 @@
1
1
  import { useMemo as N } from "react";
2
- import { u as L } from "../GingerSplitContexts-BzBExb95.js";
2
+ import { u as L } from "../GingerSplitContexts-DQ3rESBu.js";
3
3
  function p(n) {
4
4
  return n.replace(/<[^>]+>/g, "").trim();
5
5
  }
package/dist/types.d.ts CHANGED
@@ -65,12 +65,16 @@ export type PlaylistMeta = {
65
65
  metadata?: Record<string, unknown>;
66
66
  };
67
67
  export type PlaybackUiState = "idle" | "loading" | "playing" | "paused" | "ended" | "error";
68
- export type GingerMediaSlice = {
68
+ /** High-frequency time/progress fields updated on every time tick. */
69
+ export type GingerTimeSlice = {
69
70
  currentTime: number;
70
71
  duration: number;
71
72
  bufferedFraction: number;
72
73
  isBuffering: boolean;
73
74
  errorMessage: string | null;
75
+ };
76
+ /** Low-frequency media control fields (volume, rate). */
77
+ export type GingerMediaControlSlice = {
74
78
  /** 0…1, mirrored on HTMLMediaElement.volume */
75
79
  volume: number;
76
80
  /** Mirrored on HTMLMediaElement.muted */
@@ -78,6 +82,7 @@ export type GingerMediaSlice = {
78
82
  /** Mirrored on HTMLMediaElement.playbackRate (typically 0.25–4) */
79
83
  playbackRate: number;
80
84
  };
85
+ export type GingerMediaSlice = GingerTimeSlice & GingerMediaControlSlice;
81
86
  export type GingerPlaybackSlice = {
82
87
  tracks: Track[];
83
88
  currentIndex: number;
@@ -258,6 +263,11 @@ export type GingerProviderProps = {
258
263
  mediaSession?: boolean | GingerMediaSessionOptions;
259
264
  beforePlay?: () => boolean | Promise<boolean>;
260
265
  onPlayBlocked?: () => void;
266
+ /**
267
+ * When set, automatically retries playback on transient media errors (e.g. network failures)
268
+ * using exponential backoff. Pass `true` for defaults or an object to configure.
269
+ */
270
+ retryOnError?: boolean | GingerRetryConfig;
261
271
  persistence?: GingerPersistenceAdapter;
262
272
  hydrateOnMount?: boolean;
263
273
  resumeOnTrackChange?: boolean;
@@ -293,11 +303,26 @@ export type GingerProviderProps = {
293
303
  * instead of skipping to the prior one. Set to `0` to disable. Default: `3`.
294
304
  */
295
305
  prevRestartThresholdSeconds?: number;
306
+ /** Human-readable label shown in the devtools tab when multiple providers exist. */
307
+ debugLabel?: string;
296
308
  };
297
309
  export type GingerPersistenceAdapter = {
298
310
  get: (key: string) => unknown;
299
311
  set: (key: string, value: unknown) => void;
300
312
  };
313
+ export type GingerRetryConfig = {
314
+ /** Maximum number of retry attempts per track error. Default: 3. */
315
+ maxRetries?: number;
316
+ /** Initial delay in milliseconds before the first retry. Doubles on each subsequent attempt. Default: 1500. */
317
+ delayMs?: number;
318
+ /**
319
+ * Which error codes to retry. Default: `["MEDIA_ERR_NETWORK"]`.
320
+ * Non-retryable errors (e.g. `MEDIA_ERR_SRC_NOT_SUPPORTED`) skip immediately.
321
+ */
322
+ retryableErrors?: string[];
323
+ /** When true, skip to next track on unrecoverable (non-retryable) errors instead of stopping. Default: false. */
324
+ skipOnUnrecoverable?: boolean;
325
+ };
301
326
  export type DisplayBaseProps = {
302
327
  className?: string;
303
328
  style?: CSSProperties;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const c=require("react"),s=require("./GingerSplitContexts-C7puo0M7.cjs"),r=require("./selectors-CEGlYoFu.cjs");function u(){const e=s.useGingerPlayback(),t=s.useGingerMedia();return c.useMemo(()=>{const a=s.gingerStateFromContextValues(e,t);return{state:a,currentTrack:r.getCurrentTrack(a),playbackUi:r.derivePlaybackUiState(a),duration:r.effectiveDuration(a),remaining:r.effectiveRemaining(a),progress:r.progressFraction(a),artworkUrl:r.resolvedArtwork(a),albumLine:r.resolvedAlbumLine(a),play:e.play,pause:e.pause,togglePlayPause:e.togglePlayPause,seek:t.seek,setVolume:t.setVolume,setMuted:t.setMuted,toggleMute:t.toggleMute,setPlaybackRate:t.setPlaybackRate,next:e.next,prev:e.prev,setRepeatMode:e.setRepeatMode,cycleRepeat:e.cycleRepeat,toggleShuffle:e.toggleShuffle,setQueue:e.setQueue,insertTrackAt:e.insertTrackAt,removeTrackAt:e.removeTrackAt,moveTrack:e.moveTrack,enqueueNext:e.enqueueNext,playTrackAt:e.playTrackAt,selectTrackAt:e.selectTrackAt,setPlaylistMeta:e.setPlaylistMeta,setPlaybackMode:e.setPlaybackMode,init:e.init,audioRef:t.audioRef,dispatch:e.dispatch}},[e,t])}exports.useGinger=u;
2
- //# sourceMappingURL=useGinger-4uvPoChz.cjs.map
1
+ "use strict";const c=require("react"),s=require("./GingerSplitContexts-KSB0vQ5F.cjs"),r=require("./selectors-CEGlYoFu.cjs");function u(){const e=s.useGingerPlayback(),t=s.useGingerMedia();return c.useMemo(()=>{const a=s.gingerStateFromContextValues(e,t);return{state:a,currentTrack:r.getCurrentTrack(a),playbackUi:r.derivePlaybackUiState(a),duration:r.effectiveDuration(a),remaining:r.effectiveRemaining(a),progress:r.progressFraction(a),artworkUrl:r.resolvedArtwork(a),albumLine:r.resolvedAlbumLine(a),play:e.play,pause:e.pause,togglePlayPause:e.togglePlayPause,seek:t.seek,setVolume:t.setVolume,setMuted:t.setMuted,toggleMute:t.toggleMute,setPlaybackRate:t.setPlaybackRate,next:e.next,prev:e.prev,setRepeatMode:e.setRepeatMode,cycleRepeat:e.cycleRepeat,toggleShuffle:e.toggleShuffle,setQueue:e.setQueue,insertTrackAt:e.insertTrackAt,removeTrackAt:e.removeTrackAt,moveTrack:e.moveTrack,enqueueNext:e.enqueueNext,playTrackAt:e.playTrackAt,selectTrackAt:e.selectTrackAt,setPlaylistMeta:e.setPlaylistMeta,setPlaybackMode:e.setPlaybackMode,init:e.init,audioRef:t.audioRef,dispatch:e.dispatch}},[e,t])}exports.useGinger=u;
2
+ //# sourceMappingURL=useGinger-BMRLzjmr.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGinger-4uvPoChz.cjs","sources":["../src/hooks/useGinger.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport {\n gingerStateFromContextValues,\n useGingerMedia,\n useGingerPlayback,\n} from \"../context/GingerSplitContexts\";\nimport {\n derivePlaybackUiState,\n effectiveDuration,\n effectiveRemaining,\n getCurrentTrack,\n progressFraction,\n resolvedAlbumLine,\n resolvedArtwork,\n} from \"../internal/selectors\";\n\nexport function useGinger() {\n const pb = useGingerPlayback();\n const md = useGingerMedia();\n\n return useMemo(() => {\n const state = gingerStateFromContextValues(pb, md);\n return {\n state,\n currentTrack: getCurrentTrack(state),\n playbackUi: derivePlaybackUiState(state),\n duration: effectiveDuration(state),\n remaining: effectiveRemaining(state),\n progress: progressFraction(state),\n artworkUrl: resolvedArtwork(state),\n albumLine: resolvedAlbumLine(state),\n play: pb.play,\n pause: pb.pause,\n togglePlayPause: pb.togglePlayPause,\n seek: md.seek,\n setVolume: md.setVolume,\n setMuted: md.setMuted,\n toggleMute: md.toggleMute,\n setPlaybackRate: md.setPlaybackRate,\n next: pb.next,\n prev: pb.prev,\n setRepeatMode: pb.setRepeatMode,\n cycleRepeat: pb.cycleRepeat,\n toggleShuffle: pb.toggleShuffle,\n setQueue: pb.setQueue,\n insertTrackAt: pb.insertTrackAt,\n removeTrackAt: pb.removeTrackAt,\n moveTrack: pb.moveTrack,\n enqueueNext: pb.enqueueNext,\n playTrackAt: pb.playTrackAt,\n selectTrackAt: pb.selectTrackAt,\n setPlaylistMeta: pb.setPlaylistMeta,\n setPlaybackMode: pb.setPlaybackMode,\n init: pb.init,\n audioRef: md.audioRef,\n dispatch: pb.dispatch,\n };\n }, [pb, md]);\n}\n"],"names":["useGinger","pb","useGingerPlayback","md","useGingerMedia","useMemo","state","gingerStateFromContextValues","getCurrentTrack","derivePlaybackUiState","effectiveDuration","effectiveRemaining","progressFraction","resolvedArtwork","resolvedAlbumLine"],"mappings":"4HAgBO,SAASA,GAAY,CAC1B,MAAMC,EAAKC,EAAAA,kBAAA,EACLC,EAAKC,EAAAA,eAAA,EAEX,OAAOC,EAAAA,QAAQ,IAAM,CACnB,MAAMC,EAAQC,EAAAA,6BAA6BN,EAAIE,CAAE,EACjD,MAAO,CACL,MAAAG,EACA,aAAcE,EAAAA,gBAAgBF,CAAK,EACnC,WAAYG,EAAAA,sBAAsBH,CAAK,EACvC,SAAUI,EAAAA,kBAAkBJ,CAAK,EACjC,UAAWK,EAAAA,mBAAmBL,CAAK,EACnC,SAAUM,EAAAA,iBAAiBN,CAAK,EAChC,WAAYO,EAAAA,gBAAgBP,CAAK,EACjC,UAAWQ,EAAAA,kBAAkBR,CAAK,EAClC,KAAML,EAAG,KACT,MAAOA,EAAG,MACV,gBAAiBA,EAAG,gBACpB,KAAME,EAAG,KACT,UAAWA,EAAG,UACd,SAAUA,EAAG,SACb,WAAYA,EAAG,WACf,gBAAiBA,EAAG,gBACpB,KAAMF,EAAG,KACT,KAAMA,EAAG,KACT,cAAeA,EAAG,cAClB,YAAaA,EAAG,YAChB,cAAeA,EAAG,cAClB,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,cAClB,UAAWA,EAAG,UACd,YAAaA,EAAG,YAChB,YAAaA,EAAG,YAChB,cAAeA,EAAG,cAClB,gBAAiBA,EAAG,gBACpB,gBAAiBA,EAAG,gBACpB,KAAMA,EAAG,KACT,SAAUE,EAAG,SACb,SAAUF,EAAG,QAAA,CAEjB,EAAG,CAACA,EAAIE,CAAE,CAAC,CACb"}
1
+ {"version":3,"file":"useGinger-BMRLzjmr.cjs","sources":["../src/hooks/useGinger.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport {\n gingerStateFromContextValues,\n useGingerMedia,\n useGingerPlayback,\n} from \"../context/GingerSplitContexts\";\nimport {\n derivePlaybackUiState,\n effectiveDuration,\n effectiveRemaining,\n getCurrentTrack,\n progressFraction,\n resolvedAlbumLine,\n resolvedArtwork,\n} from \"../internal/selectors\";\n\nexport function useGinger() {\n const pb = useGingerPlayback();\n const md = useGingerMedia();\n\n return useMemo(() => {\n const state = gingerStateFromContextValues(pb, md);\n return {\n state,\n currentTrack: getCurrentTrack(state),\n playbackUi: derivePlaybackUiState(state),\n duration: effectiveDuration(state),\n remaining: effectiveRemaining(state),\n progress: progressFraction(state),\n artworkUrl: resolvedArtwork(state),\n albumLine: resolvedAlbumLine(state),\n play: pb.play,\n pause: pb.pause,\n togglePlayPause: pb.togglePlayPause,\n seek: md.seek,\n setVolume: md.setVolume,\n setMuted: md.setMuted,\n toggleMute: md.toggleMute,\n setPlaybackRate: md.setPlaybackRate,\n next: pb.next,\n prev: pb.prev,\n setRepeatMode: pb.setRepeatMode,\n cycleRepeat: pb.cycleRepeat,\n toggleShuffle: pb.toggleShuffle,\n setQueue: pb.setQueue,\n insertTrackAt: pb.insertTrackAt,\n removeTrackAt: pb.removeTrackAt,\n moveTrack: pb.moveTrack,\n enqueueNext: pb.enqueueNext,\n playTrackAt: pb.playTrackAt,\n selectTrackAt: pb.selectTrackAt,\n setPlaylistMeta: pb.setPlaylistMeta,\n setPlaybackMode: pb.setPlaybackMode,\n init: pb.init,\n audioRef: md.audioRef,\n dispatch: pb.dispatch,\n };\n }, [pb, md]);\n}\n"],"names":["useGinger","pb","useGingerPlayback","md","useGingerMedia","useMemo","state","gingerStateFromContextValues","getCurrentTrack","derivePlaybackUiState","effectiveDuration","effectiveRemaining","progressFraction","resolvedArtwork","resolvedAlbumLine"],"mappings":"4HAgBO,SAASA,GAAY,CAC1B,MAAMC,EAAKC,EAAAA,kBAAA,EACLC,EAAKC,EAAAA,eAAA,EAEX,OAAOC,EAAAA,QAAQ,IAAM,CACnB,MAAMC,EAAQC,EAAAA,6BAA6BN,EAAIE,CAAE,EACjD,MAAO,CACL,MAAAG,EACA,aAAcE,EAAAA,gBAAgBF,CAAK,EACnC,WAAYG,EAAAA,sBAAsBH,CAAK,EACvC,SAAUI,EAAAA,kBAAkBJ,CAAK,EACjC,UAAWK,EAAAA,mBAAmBL,CAAK,EACnC,SAAUM,EAAAA,iBAAiBN,CAAK,EAChC,WAAYO,EAAAA,gBAAgBP,CAAK,EACjC,UAAWQ,EAAAA,kBAAkBR,CAAK,EAClC,KAAML,EAAG,KACT,MAAOA,EAAG,MACV,gBAAiBA,EAAG,gBACpB,KAAME,EAAG,KACT,UAAWA,EAAG,UACd,SAAUA,EAAG,SACb,WAAYA,EAAG,WACf,gBAAiBA,EAAG,gBACpB,KAAMF,EAAG,KACT,KAAMA,EAAG,KACT,cAAeA,EAAG,cAClB,YAAaA,EAAG,YAChB,cAAeA,EAAG,cAClB,SAAUA,EAAG,SACb,cAAeA,EAAG,cAClB,cAAeA,EAAG,cAClB,UAAWA,EAAG,UACd,YAAaA,EAAG,YAChB,YAAaA,EAAG,YAChB,cAAeA,EAAG,cAClB,gBAAiBA,EAAG,gBACpB,gBAAiBA,EAAG,gBACpB,KAAMA,EAAG,KACT,SAAUE,EAAG,SACb,SAAUF,EAAG,QAAA,CAEjB,EAAG,CAACA,EAAIE,CAAE,CAAC,CACb"}
@@ -1,5 +1,5 @@
1
1
  import { useMemo as r } from "react";
2
- import { b as s, u as o, g as u } from "./GingerSplitContexts-BzBExb95.js";
2
+ import { c as s, u as o, g as u } from "./GingerSplitContexts-DQ3rESBu.js";
3
3
  import { r as l, a as c, p as i, e as n, b as g, d as k, g as p } from "./selectors-BT3WSsKN.js";
4
4
  function f() {
5
5
  const e = s(), t = o();
@@ -45,4 +45,4 @@ function f() {
45
45
  export {
46
46
  f as u
47
47
  };
48
- //# sourceMappingURL=useGinger-Dz0cPyD1.js.map
48
+ //# sourceMappingURL=useGinger-DKrHZ4NU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGinger-Dz0cPyD1.js","sources":["../src/hooks/useGinger.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport {\n gingerStateFromContextValues,\n useGingerMedia,\n useGingerPlayback,\n} from \"../context/GingerSplitContexts\";\nimport {\n derivePlaybackUiState,\n effectiveDuration,\n effectiveRemaining,\n getCurrentTrack,\n progressFraction,\n resolvedAlbumLine,\n resolvedArtwork,\n} from \"../internal/selectors\";\n\nexport function useGinger() {\n const pb = useGingerPlayback();\n const md = useGingerMedia();\n\n return useMemo(() => {\n const state = gingerStateFromContextValues(pb, md);\n return {\n state,\n currentTrack: getCurrentTrack(state),\n playbackUi: derivePlaybackUiState(state),\n duration: effectiveDuration(state),\n remaining: effectiveRemaining(state),\n progress: progressFraction(state),\n artworkUrl: resolvedArtwork(state),\n albumLine: resolvedAlbumLine(state),\n play: pb.play,\n pause: pb.pause,\n togglePlayPause: pb.togglePlayPause,\n seek: md.seek,\n setVolume: md.setVolume,\n setMuted: md.setMuted,\n toggleMute: md.toggleMute,\n setPlaybackRate: md.setPlaybackRate,\n next: pb.next,\n prev: pb.prev,\n setRepeatMode: pb.setRepeatMode,\n cycleRepeat: pb.cycleRepeat,\n toggleShuffle: pb.toggleShuffle,\n setQueue: pb.setQueue,\n insertTrackAt: pb.insertTrackAt,\n removeTrackAt: pb.removeTrackAt,\n moveTrack: pb.moveTrack,\n enqueueNext: pb.enqueueNext,\n playTrackAt: pb.playTrackAt,\n selectTrackAt: pb.selectTrackAt,\n setPlaylistMeta: pb.setPlaylistMeta,\n setPlaybackMode: pb.setPlaybackMode,\n init: pb.init,\n audioRef: md.audioRef,\n dispatch: pb.dispatch,\n };\n }, [pb, md]);\n}\n"],"names":["useGinger","pb","useGingerPlayback","md","useGingerMedia","useMemo","state","gingerStateFromContextValues","getCurrentTrack","derivePlaybackUiState","effectiveDuration","effectiveRemaining","progressFraction","resolvedArtwork","resolvedAlbumLine"],"mappings":";;;AAgBO,SAASA,IAAY;AAC1B,QAAMC,IAAKC,EAAA,GACLC,IAAKC,EAAA;AAEX,SAAOC,EAAQ,MAAM;AACnB,UAAMC,IAAQC,EAA6BN,GAAIE,CAAE;AACjD,WAAO;AAAA,MACL,OAAAG;AAAA,MACA,cAAcE,EAAgBF,CAAK;AAAA,MACnC,YAAYG,EAAsBH,CAAK;AAAA,MACvC,UAAUI,EAAkBJ,CAAK;AAAA,MACjC,WAAWK,EAAmBL,CAAK;AAAA,MACnC,UAAUM,EAAiBN,CAAK;AAAA,MAChC,YAAYO,EAAgBP,CAAK;AAAA,MACjC,WAAWQ,EAAkBR,CAAK;AAAA,MAClC,MAAML,EAAG;AAAA,MACT,OAAOA,EAAG;AAAA,MACV,iBAAiBA,EAAG;AAAA,MACpB,MAAME,EAAG;AAAA,MACT,WAAWA,EAAG;AAAA,MACd,UAAUA,EAAG;AAAA,MACb,YAAYA,EAAG;AAAA,MACf,iBAAiBA,EAAG;AAAA,MACpB,MAAMF,EAAG;AAAA,MACT,MAAMA,EAAG;AAAA,MACT,eAAeA,EAAG;AAAA,MAClB,aAAaA,EAAG;AAAA,MAChB,eAAeA,EAAG;AAAA,MAClB,UAAUA,EAAG;AAAA,MACb,eAAeA,EAAG;AAAA,MAClB,eAAeA,EAAG;AAAA,MAClB,WAAWA,EAAG;AAAA,MACd,aAAaA,EAAG;AAAA,MAChB,aAAaA,EAAG;AAAA,MAChB,eAAeA,EAAG;AAAA,MAClB,iBAAiBA,EAAG;AAAA,MACpB,iBAAiBA,EAAG;AAAA,MACpB,MAAMA,EAAG;AAAA,MACT,UAAUE,EAAG;AAAA,MACb,UAAUF,EAAG;AAAA,IAAA;AAAA,EAEjB,GAAG,CAACA,GAAIE,CAAE,CAAC;AACb;"}
1
+ {"version":3,"file":"useGinger-DKrHZ4NU.js","sources":["../src/hooks/useGinger.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport {\n gingerStateFromContextValues,\n useGingerMedia,\n useGingerPlayback,\n} from \"../context/GingerSplitContexts\";\nimport {\n derivePlaybackUiState,\n effectiveDuration,\n effectiveRemaining,\n getCurrentTrack,\n progressFraction,\n resolvedAlbumLine,\n resolvedArtwork,\n} from \"../internal/selectors\";\n\nexport function useGinger() {\n const pb = useGingerPlayback();\n const md = useGingerMedia();\n\n return useMemo(() => {\n const state = gingerStateFromContextValues(pb, md);\n return {\n state,\n currentTrack: getCurrentTrack(state),\n playbackUi: derivePlaybackUiState(state),\n duration: effectiveDuration(state),\n remaining: effectiveRemaining(state),\n progress: progressFraction(state),\n artworkUrl: resolvedArtwork(state),\n albumLine: resolvedAlbumLine(state),\n play: pb.play,\n pause: pb.pause,\n togglePlayPause: pb.togglePlayPause,\n seek: md.seek,\n setVolume: md.setVolume,\n setMuted: md.setMuted,\n toggleMute: md.toggleMute,\n setPlaybackRate: md.setPlaybackRate,\n next: pb.next,\n prev: pb.prev,\n setRepeatMode: pb.setRepeatMode,\n cycleRepeat: pb.cycleRepeat,\n toggleShuffle: pb.toggleShuffle,\n setQueue: pb.setQueue,\n insertTrackAt: pb.insertTrackAt,\n removeTrackAt: pb.removeTrackAt,\n moveTrack: pb.moveTrack,\n enqueueNext: pb.enqueueNext,\n playTrackAt: pb.playTrackAt,\n selectTrackAt: pb.selectTrackAt,\n setPlaylistMeta: pb.setPlaylistMeta,\n setPlaybackMode: pb.setPlaybackMode,\n init: pb.init,\n audioRef: md.audioRef,\n dispatch: pb.dispatch,\n };\n }, [pb, md]);\n}\n"],"names":["useGinger","pb","useGingerPlayback","md","useGingerMedia","useMemo","state","gingerStateFromContextValues","getCurrentTrack","derivePlaybackUiState","effectiveDuration","effectiveRemaining","progressFraction","resolvedArtwork","resolvedAlbumLine"],"mappings":";;;AAgBO,SAASA,IAAY;AAC1B,QAAMC,IAAKC,EAAA,GACLC,IAAKC,EAAA;AAEX,SAAOC,EAAQ,MAAM;AACnB,UAAMC,IAAQC,EAA6BN,GAAIE,CAAE;AACjD,WAAO;AAAA,MACL,OAAAG;AAAA,MACA,cAAcE,EAAgBF,CAAK;AAAA,MACnC,YAAYG,EAAsBH,CAAK;AAAA,MACvC,UAAUI,EAAkBJ,CAAK;AAAA,MACjC,WAAWK,EAAmBL,CAAK;AAAA,MACnC,UAAUM,EAAiBN,CAAK;AAAA,MAChC,YAAYO,EAAgBP,CAAK;AAAA,MACjC,WAAWQ,EAAkBR,CAAK;AAAA,MAClC,MAAML,EAAG;AAAA,MACT,OAAOA,EAAG;AAAA,MACV,iBAAiBA,EAAG;AAAA,MACpB,MAAME,EAAG;AAAA,MACT,WAAWA,EAAG;AAAA,MACd,UAAUA,EAAG;AAAA,MACb,YAAYA,EAAG;AAAA,MACf,iBAAiBA,EAAG;AAAA,MACpB,MAAMF,EAAG;AAAA,MACT,MAAMA,EAAG;AAAA,MACT,eAAeA,EAAG;AAAA,MAClB,aAAaA,EAAG;AAAA,MAChB,eAAeA,EAAG;AAAA,MAClB,UAAUA,EAAG;AAAA,MACb,eAAeA,EAAG;AAAA,MAClB,eAAeA,EAAG;AAAA,MAClB,WAAWA,EAAG;AAAA,MACd,aAAaA,EAAG;AAAA,MAChB,aAAaA,EAAG;AAAA,MAChB,eAAeA,EAAG;AAAA,MAClB,iBAAiBA,EAAG;AAAA,MACpB,iBAAiBA,EAAG;AAAA,MACpB,MAAMA,EAAG;AAAA,MACT,UAAUE,EAAG;AAAA,MACb,UAAUF,EAAG;AAAA,IAAA;AAAA,EAEjB,GAAG,CAACA,GAAIE,CAAE,CAAC;AACb;"}
@@ -0,0 +1,343 @@
1
+ import { useMemo as H, useState as P, useRef as h, useCallback as q, useLayoutEffect as Q, useEffect as E } from "react";
2
+ import { u as W } from "./useGinger-DKrHZ4NU.js";
3
+ import { a as Z, d as _ } from "./liveAudioGraph-DvPaxBCP.js";
4
+ import { c as C, u as B, d as $, g as ee } from "./GingerSplitContexts-DQ3rESBu.js";
5
+ import { p as te } from "./selectors-BT3WSsKN.js";
6
+ import { b as re } from "./transitions-CmNkf3sd.js";
7
+ import { m as ne, e as se, f as ae, n as ce } from "./ginger-BHu7Ofna.js";
8
+ const U = new Uint8Array(0), V = new Uint8Array(0);
9
+ function ge(s = {}) {
10
+ var S;
11
+ const {
12
+ enabled: e = !0,
13
+ fftSize: r = 2048,
14
+ smoothingTimeConstant: n = 0.8,
15
+ minDecibels: o = -100,
16
+ maxDecibels: c = -30
17
+ } = s, { audioRef: a, state: u } = W(), l = ((S = u.tracks[u.currentIndex]) == null ? void 0 : S.fileUrl) ?? "", i = H(
18
+ () => ({
19
+ fftSize: r,
20
+ smoothingTimeConstant: n,
21
+ minDecibels: o,
22
+ maxDecibels: c
23
+ }),
24
+ [r, n, o, c]
25
+ ), [m, f] = P(0), [t, d] = P(null), [k, v] = P(!1), [x, w] = P({ frequencyBinCount: 0, sampleRate: 0 }), p = h(U), I = h(V), G = q(async () => {
26
+ const R = g.current;
27
+ R && R.state === "suspended" && await R.resume();
28
+ }, []), g = h(null), T = h(null);
29
+ return Q(() => {
30
+ if (!e || typeof window > "u")
31
+ return;
32
+ let R = !1, D = null, b = null, N = 0;
33
+ const K = () => {
34
+ const y = g.current;
35
+ y && v(y.state === "suspended");
36
+ };
37
+ let O = 0;
38
+ const j = 3, X = () => {
39
+ if (R) return;
40
+ const y = T.current, L = p.current, M = I.current;
41
+ y && L.length > 0 && M.length > 0 && (y.getByteFrequencyData(L), y.getByteTimeDomainData(M), O += 1, O % j === 0 && f((A) => A + 1)), N = requestAnimationFrame(X);
42
+ }, z = () => {
43
+ const y = a.current;
44
+ if (!y || R) return "no-element";
45
+ try {
46
+ const { id: L, context: M, analyser: A } = Z(y, i);
47
+ D = L, b = y, g.current = M, T.current = A, v(M.state === "suspended"), d(null), M.addEventListener("statechange", K);
48
+ const F = A.frequencyBinCount, J = A.fftSize;
49
+ return p.current = new Uint8Array(F), I.current = new Uint8Array(J), w({ frequencyBinCount: F, sampleRate: M.sampleRate }), N = requestAnimationFrame(X), "ok";
50
+ } catch (L) {
51
+ const M = L instanceof Error ? L.message : "Failed to attach live analyser";
52
+ return d(M), g.current = null, T.current = null, p.current = U, I.current = V, w({ frequencyBinCount: 0, sampleRate: 0 }), "error";
53
+ }
54
+ }, Y = z();
55
+ if (Y !== "ok") {
56
+ let y = 0;
57
+ const L = 120;
58
+ let M = 0;
59
+ const A = () => {
60
+ if (R) return;
61
+ const F = z();
62
+ F === "ok" || F === "error" || (M += 1, !(M >= L) && (y = requestAnimationFrame(A)));
63
+ };
64
+ return Y === "no-element" && (y = requestAnimationFrame(A)), () => {
65
+ var F;
66
+ R = !0, cancelAnimationFrame(y), cancelAnimationFrame(N), D != null && b && _(b, D), (F = g.current) == null || F.removeEventListener("statechange", K), g.current = null, T.current = null, p.current = U, I.current = V;
67
+ };
68
+ }
69
+ return () => {
70
+ var y;
71
+ R = !0, cancelAnimationFrame(N), D != null && b && _(b, D), (y = g.current) == null || y.removeEventListener("statechange", K), g.current = null, T.current = null, p.current = U, I.current = V, w({ frequencyBinCount: 0, sampleRate: 0 });
72
+ };
73
+ }, [e, a, i, l]), {
74
+ frequencyData: p.current,
75
+ timeDomainData: I.current,
76
+ frequencyBinCount: x.frequencyBinCount,
77
+ sampleRate: x.sampleRate,
78
+ isSuspended: k,
79
+ error: t,
80
+ resume: G,
81
+ frame: m
82
+ };
83
+ }
84
+ function ye(s = !0, e = {}) {
85
+ const { togglePlayPause: r, next: n, prev: o } = C(), { toggleMute: c, seek: a, currentTime: u, duration: l } = B(), i = h({ currentTime: 0, duration: 0 });
86
+ i.current = { currentTime: u, duration: l };
87
+ const {
88
+ mute: m,
89
+ seekForward: f,
90
+ seekBackward: t
91
+ } = e;
92
+ E(() => {
93
+ if (!s || typeof window > "u") return;
94
+ const d = (e.playPause ?? " ").toLowerCase(), k = (e.next ?? "ArrowRight").toLowerCase(), v = (e.previous ?? "ArrowLeft").toLowerCase(), x = m == null ? void 0 : m.toLowerCase(), w = f == null ? void 0 : f.toLowerCase(), p = t == null ? void 0 : t.toLowerCase(), I = e.seekSeconds ?? 5, G = (g) => {
95
+ const T = g.target;
96
+ if (T && (["INPUT", "TEXTAREA", "SELECT"].includes(T.tagName) || T.isContentEditable))
97
+ return;
98
+ const S = g.key.toLowerCase();
99
+ if (S === d)
100
+ g.preventDefault(), r();
101
+ else if (S === k)
102
+ g.preventDefault(), n();
103
+ else if (S === v)
104
+ g.preventDefault(), o();
105
+ else if (x && S === x)
106
+ g.preventDefault(), c();
107
+ else if (w && S === w) {
108
+ g.preventDefault();
109
+ const { currentTime: R, duration: D } = i.current, b = D > 0 ? D : Number.POSITIVE_INFINITY;
110
+ a(Math.min(b, R + I));
111
+ } else p && S === p && (g.preventDefault(), a(Math.max(0, i.current.currentTime - I)));
112
+ };
113
+ return window.addEventListener("keydown", G), () => window.removeEventListener("keydown", G);
114
+ }, [
115
+ e.next,
116
+ e.playPause,
117
+ e.previous,
118
+ e.seekSeconds,
119
+ s,
120
+ m,
121
+ n,
122
+ o,
123
+ a,
124
+ t,
125
+ f,
126
+ c,
127
+ r
128
+ ]);
129
+ }
130
+ function he(s) {
131
+ const { durationMs: e, stopAfterTracks: r, respectPause: n = !0, enabled: o = !0, onFire: c } = s, { currentIndex: a, pause: u, isPaused: l } = C(), i = h(r ?? 0), m = h(a), f = h(e ?? 0), t = h(null);
132
+ E(() => {
133
+ i.current = r ?? 0;
134
+ }, [r]);
135
+ const d = h(e);
136
+ E(() => {
137
+ d.current !== e && (f.current = e ?? 0, d.current = e);
138
+ }, [e]), E(() => {
139
+ if (!o || !e || e <= 0) {
140
+ f.current = e ?? 0, t.current = null;
141
+ return;
142
+ }
143
+ if (n && l) {
144
+ if (t.current !== null) {
145
+ const v = Date.now() - t.current;
146
+ f.current = Math.max(0, f.current - v), t.current = null;
147
+ }
148
+ return;
149
+ }
150
+ t.current = Date.now();
151
+ const k = setTimeout(() => {
152
+ f.current = 0, t.current = null, u(), c == null || c();
153
+ }, f.current);
154
+ return () => {
155
+ if (clearTimeout(k), t.current !== null) {
156
+ const v = Date.now() - t.current;
157
+ f.current = Math.max(0, f.current - v), t.current = null;
158
+ }
159
+ };
160
+ }, [e, o, l, c, u, n]), E(() => {
161
+ if (!o || !r || r <= 0) return;
162
+ const k = m.current;
163
+ m.current = a, a !== k && (i.current -= 1, i.current <= 0 && (u(), c == null || c()));
164
+ }, [a, o, c, u, r]);
165
+ }
166
+ function ve(s = !1) {
167
+ const e = $(), r = h(e);
168
+ E(() => {
169
+ if (!s || typeof console > "u") return;
170
+ const n = r.current;
171
+ n !== e && console.debug("[ginger]", {
172
+ from: {
173
+ currentIndex: n.currentIndex,
174
+ isPaused: n.isPaused,
175
+ currentTime: n.currentTime,
176
+ repeatMode: n.repeatMode
177
+ },
178
+ to: {
179
+ currentIndex: e.currentIndex,
180
+ isPaused: e.isPaused,
181
+ currentTime: e.currentTime,
182
+ repeatMode: e.repeatMode
183
+ }
184
+ }), r.current = e;
185
+ }, [s, e]);
186
+ }
187
+ function oe(s) {
188
+ return Math.max(0, Math.min(1, s));
189
+ }
190
+ function xe(s) {
191
+ const e = B(), r = C(), { seek: n } = e, [o, c] = P(0), [a, u] = P(!1), l = h(null), i = te(ee(r, e)), m = a ? o : i;
192
+ E(() => () => {
193
+ const t = l.current;
194
+ if (t) {
195
+ t.target.removeEventListener("pointermove", t.onMove), t.target.removeEventListener("pointerup", t.onUp), t.target.removeEventListener("pointercancel", t.onUp);
196
+ try {
197
+ t.target.releasePointerCapture(t.pointerId);
198
+ } catch {
199
+ }
200
+ l.current = null;
201
+ }
202
+ }, []);
203
+ const f = q(
204
+ (t) => {
205
+ if (!(s > 0)) return;
206
+ const d = t.currentTarget, k = d.getBoundingClientRect(), v = (p) => {
207
+ const I = oe((p - k.left) / k.width);
208
+ c(I), n(I * s);
209
+ };
210
+ u(!0), d.setPointerCapture(t.pointerId), v(t.clientX);
211
+ const x = (p) => v(p.clientX), w = (p) => {
212
+ v(p.clientX), u(!1), d.releasePointerCapture(t.pointerId), d.removeEventListener("pointermove", x), d.removeEventListener("pointerup", w), d.removeEventListener("pointercancel", w), l.current = null;
213
+ };
214
+ l.current = { target: d, pointerId: t.pointerId, onMove: x, onUp: w }, d.addEventListener("pointermove", x), d.addEventListener("pointerup", w), d.addEventListener("pointercancel", w);
215
+ },
216
+ [s, n]
217
+ );
218
+ return { fraction: o, displayFraction: m, isDragging: a, onPointerDown: f };
219
+ }
220
+ function ke(s = {}) {
221
+ const { enabled: e = !0, crossOrigin: r } = s, { tracks: n, currentIndex: o, repeatMode: c, playbackMode: a } = C();
222
+ E(() => {
223
+ var m;
224
+ if (!e || typeof document > "u") return;
225
+ const u = re({ tracks: n, currentIndex: o, repeatMode: c, playbackMode: a });
226
+ if (u === o) return;
227
+ const l = ((m = n[u]) == null ? void 0 : m.fileUrl) ?? "";
228
+ if (!l) return;
229
+ const i = document.createElement("audio");
230
+ return i.preload = "auto", r && (i.crossOrigin = r), i.src = l, i.load(), () => {
231
+ i.removeAttribute("src"), i.load();
232
+ };
233
+ }, [e, r, n, o, c, a]);
234
+ }
235
+ function we(s = {}) {
236
+ let e = ne({
237
+ tracks: s.tracks ?? [],
238
+ currentIndex: s.currentIndex,
239
+ playlistMeta: s.playlistMeta,
240
+ isPaused: s.isPaused,
241
+ isShuffled: s.isShuffled,
242
+ repeatMode: s.repeatMode,
243
+ playbackMode: s.playbackMode,
244
+ volume: s.volume,
245
+ muted: s.muted,
246
+ playbackRate: s.playbackRate
247
+ });
248
+ const r = /* @__PURE__ */ new Set(), n = (a) => {
249
+ var l, i;
250
+ const u = ce(e, a);
251
+ if (u !== e) {
252
+ e = u;
253
+ for (const m of r)
254
+ try {
255
+ m(e);
256
+ } catch (f) {
257
+ typeof globalThis < "u" && ((i = (l = globalThis.process) == null ? void 0 : l.env) == null ? void 0 : i.NODE_ENV) !== "production" && console.error("[@lucaismyname/ginger] Store listener threw:", f);
258
+ }
259
+ }
260
+ };
261
+ return {
262
+ getState: () => e,
263
+ dispatch: n,
264
+ subscribe: (a) => (r.add(a), () => r.delete(a)),
265
+ init: (a) => {
266
+ n({ type: "INIT", payload: a });
267
+ },
268
+ clampVolume: ae,
269
+ clampPlaybackRate: se
270
+ };
271
+ }
272
+ function Ie(s = {}) {
273
+ const { maxLength: e = 50 } = s, { tracks: r, currentIndex: n } = C(), [o, c] = P([]), a = h(null), u = h(r);
274
+ u.current = r, E(() => {
275
+ const i = r[n];
276
+ if (!i || a.current === n) return;
277
+ a.current = n;
278
+ const m = {
279
+ track: i,
280
+ index: n,
281
+ playedAt: Date.now()
282
+ };
283
+ c((f) => {
284
+ const t = [...f, m];
285
+ return t.length > e ? t.slice(t.length - e) : t;
286
+ });
287
+ }, [n, r, e]);
288
+ const l = q(() => c([]), []);
289
+ return { history: o, clearHistory: l };
290
+ }
291
+ function Me() {
292
+ const { setVolume: s, volume: e } = B(), [r, n] = P(!1), o = h(0), c = h(!1), a = q(() => {
293
+ cancelAnimationFrame(o.current), c.current = !0, n(!1);
294
+ }, []);
295
+ return { fadeVolumeTo: q(
296
+ ({ targetVolume: l, durationMs: i, onComplete: m }) => {
297
+ cancelAnimationFrame(o.current), c.current = !1;
298
+ const f = (x) => Math.min(1, Math.max(0, x)), t = f(l), d = performance.now();
299
+ let k = e;
300
+ n(!0);
301
+ const v = (x) => {
302
+ if (c.current) return;
303
+ const w = x - d, p = Math.min(1, w / Math.max(1, i)), I = k + (t - k) * p;
304
+ s(f(I)), p < 1 ? o.current = requestAnimationFrame(v) : (n(!1), m == null || m());
305
+ };
306
+ o.current = requestAnimationFrame((x) => {
307
+ k = e, v(x);
308
+ });
309
+ },
310
+ [s, e]
311
+ ), cancelFade: a, isFading: r };
312
+ }
313
+ function Re() {
314
+ const { tracks: s, currentIndex: e } = C(), { currentTime: r, duration: n } = B(), o = H(() => {
315
+ var a;
316
+ return [...((a = s[e]) == null ? void 0 : a.chapters) ?? []].filter((u) => u && Number.isFinite(u.startSeconds) && u.startSeconds >= 0).sort((u, l) => u.startSeconds - l.startSeconds);
317
+ }, [s, e]);
318
+ return H(() => {
319
+ if (o.length === 0) return { progress: 0, elapsed: 0, remaining: 0 };
320
+ let c = -1;
321
+ for (let d = o.length - 1; d >= 0; d--)
322
+ if (r >= o[d].startSeconds) {
323
+ c = d;
324
+ break;
325
+ }
326
+ if (c === -1) return { progress: 0, elapsed: 0, remaining: 0 };
327
+ const a = o[c], u = o[c + 1], l = (u == null ? void 0 : u.startSeconds) ?? (n > 0 ? n : r), i = Math.max(0, l - a.startSeconds), m = Math.max(0, r - a.startSeconds), f = Math.max(0, l - r);
328
+ return { progress: i > 0 ? Math.min(1, m / i) : 0, elapsed: m, remaining: f };
329
+ }, [o, r, n]);
330
+ }
331
+ export {
332
+ ve as a,
333
+ ye as b,
334
+ we as c,
335
+ ge as d,
336
+ Ie as e,
337
+ he as f,
338
+ Me as g,
339
+ ke as h,
340
+ xe as i,
341
+ Re as u
342
+ };
343
+ //# sourceMappingURL=useGingerChapterProgress-DAIWjAtG.js.map