PageSourceSearch

https://www.listening.com/assets/hooks-DNxLTXBX.js

js listening.com collected 2026-09-24 08:54:57 UTC 63,694 bytes, 2 lines download raw bytes

1import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{$n as r,Aa as i,Ar as a,Bn as o,C as s,Ci as c,D as l,Dr as u,En as d,Er as f,Et as p,Fn as m,Hn as h,Hr as g,Li as _,Ln as v,Lr as y,M as b,Mn as x,Mr as S,Nn as C,Oa as w,Or as T,Pr as ee,Rn as E,Sr as D,Tr as O,Ui as k,Ur as A,V as j,Vi as te,Vt as ne,Wn as re,Wr as M,Xn as ie,Zo as N,_ as P,_i as F,_n as ae,ar as I,b as L,bi as R,cn as oe,d as z,di as se,f as ce,fn as B,gi as V,ho as le,in as H,j as ue,jr as U,kn as W,kr as de,l as fe,ln as pe,n as me,nn as he,p as ge,rn as _e,sn as ve,tn as ye,tr as be,ut as G,vn as xe,wn as Se,wr as K,x as q,xn as Ce,xr as we,yi as Te,yn as Ee,zn as J}from"./Schema-CAUmIdFq.js";import{F as De,_n as Oe,g as ke,gt as Ae,sn as je}from"./api-contract-BBRQu6_I.js";import{c as Me,f as Ne,g as Pe,m as Fe,n as Ie,o as Le,p as Re,s as Y,t as ze,u as Be}from"./kvs-C_4L7zkd.js";import{b as Ve,t as He,x as Ue}from"./errors-BkW-dFDO.js";import{t as We}from"./HttpClient-ByWE9G_N.js";import{t as X}from"./compiler-runtime-DPI-XUKY.js";import{n as Ge}from"./react-helpers-C5OeIvDv.js";import{n as Ke,r as qe}from"./runtime-context-DR7xYiHc.js";import{t as Je}from"./api-client-tag-CiSoiJH1.js";import{t as Ye}from"./preload-helper-BZ1Pz5am.js";import"./schemas-DPk_Do7s.js";import{a as Xe,c as Ze,n as Qe}from"./ts-utils-CBod9KnW.js";import{a as $e,n as et,r as tt}from"./voices-Clwddw2A.js";import{t as nt}from"./alignment-C7hzx6Ot.js";import{_ as rt,t as it}from"./audio-preferences-store-djRbbndq.js";import{C as at,x as ot}from"./user-Cm2rgg6q.js";import{i as st,n as ct,o as lt,r as ut,s as dt,t as ft}from"./audio-items-C42jn3fW.js";import{a as pt,c as mt,l as ht,o as gt}from"./user-hooks-BeryhIAq.js";var Z=e(t(),1),_t=X(),vt=e=>({queryKey:ut(e??``),queryFn:()=>ct.detailedEffect(e??``),enabled:!!e,staleTime:ft}),yt=e=>({queryKey:st(e??``),queryFn:()=>ct.detailEffect(e??``),enabled:!!e,staleTime:ft}),bt=12e4,xt=(e,t,n=!0)=>({queryKey:lt(e??``,t),queryFn:()=>ct.pageImageEffect(e??``,t),enabled:!!e&&t>=1&&n,staleTime:1/0,gcTime:bt}),St=e=>{let t=(0,_t.c)(3),n=qe(),r;return t[0]!==e||t[1]!==n?(r=n.queryOptions(vt(e)),t[0]=e,t[1]=n,t[2]=r):r=t[2],De(r)},Ct=(e,t)=>{if(t)return e.getQueryData(ut(t))},wt=class extends s()(`AudioDetailFetchError`,{audioId:L,cause:b}){},Tt=e=>dt.has(e.conversion_status);async function Et(e,t){let n=new ReadableStream({start(t){t.enqueue(e),t.close()}}).pipeThrough(t);return new Uint8Array(await new Response(n).arrayBuffer())}var Dt=typeof CompressionStream<`u`&&typeof ReadableStream<`u`&&typeof Response<`u`,Ot=()=>Ye(()=>import(`./browser-DrrqFCw_.js`),[]),kt=async e=>{if(Dt)return Et(e,new DecompressionStream(`deflate-raw`));let{inflateSync:t}=await Ot();return t(e)},Q=class extends s()(`DocPackError`,{code:ge([`bad-magic`,`bad-version`,`truncated`,`invalid-catalog`,`invalid-page`,`invalid-range`,`invalid-geometry`]),message:L}){};s()(`DocPackBuildInputError`,{message:L}),s()(`DocPackEncodeError`,{message:L});var At=class extends s()(`DocPackRangeFetchError`,{message:L,details:q({url:L,range:l([z,z]),status:G(z),cause:G(b)})}){},jt=class extends s()(`DocPackCorruptError`,{message:L,details:q({url:L,page:G(z),cause:G(b)})}){},Mt=class extends s()(`DocPackPageAbsentError`,{pageNumber:z}){get message(){return`doc-pack page ${this.pageNumber.toString()} is not present in the pack`}},Nt=new Map(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.split(``).map((e,t)=>[e,t])),Pt=e=>{let t=e.replaceAll(/\s/g,``);if(t.length%4!=0)throw new Q({code:`invalid-geometry`,message:`Invalid base64 geometry length`});let n=[];for(let e=0;e<t.length;e+=4){let r=t[e],i=t[e+1],a=t[e+2],o=t[e+3];if(!r||!i||!a||!o)throw new Q({code:`invalid-geometry`,message:`Invalid base64 geometry`});let s=Nt.get(r),c=Nt.get(i),l=a===`=`?0:Nt.get(a),u=o===`=`?0:Nt.get(o);if(s===void 0||c===void 0||l===void 0||u===void 0)throw new Q({code:`invalid-geometry`,message:`Invalid base64 geometry character`});let d=s*262144+c*4096+l*64+u;n.push(Math.floor(d/65536)%256),a!==`=`&&n.push(Math.floor(d/256)%256),o!==`=`&&n.push(d%256)}return new Uint8Array(n)},Ft=(e,t)=>
1{let n=0,r=0;for(;;){let i=e[t.value];if(i===void 0)throw new Q({code:`invalid-geometry`,message:`Truncated geometry varuint`});let a=i%128*2**r;if(n+a>2**53-1)throw new Q({code:`invalid-geometry`,message:`Geometry varuint is too large`});if(t.value++,n+=a,i<128)return n;r+=7}},It=e=>e%2==0?e/2:-(e+1)/2;function Lt(e){let t=Pt(e.data),n={value:0},r=Ft(t,n),i=[],a=0,o=[0,0,0,0];for(let s=0;s<r;s++){let r=a+Ft(t,n),s=Ft(t,n),c=[o[0]+It(Ft(t,n)),o[1]+It(Ft(t,n)),o[2]+It(Ft(t,n)),o[3]+It(Ft(t,n))];i.push({chars:[r,r+s],rect:[c[0]/e.precision,c[1]/e.precision,c[2]/e.precision,c[3]/e.precision]}),a=r,o=c}if(n.value!==t.length)throw new Q({code:`invalid-geometry`,message:`Geometry stream has trailing bytes`});return i}new TextEncoder;var Rt=new TextDecoder,zt=67108864;function Bt(e){if(e.length<12)throw new Q({code:`truncated`,message:`Pack shorter than its header`});let t=Rt.decode(e.subarray(0,8));if(t!==`LSTNPCK1`)throw new Q({code:`bad-magic`,message:`Unexpected magic ${t}`});let n=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(8,!0);if(n>67108864)throw new Q({code:`invalid-catalog`,message:`Catalog length ${n.toString()} exceeds max ${zt.toString()} — corrupt header`});return{catalogByteLength:n,blobBaseOffset:12+n}}var Vt=e=>{let t=typeof e==`object`&&e?e:null,n=Array.isArray(t?.pages)&&t.pages.every(e=>typeof e==`object`&&!!e&&typeof e.n==`number`&&typeof e.offset==`number`&&typeof e.length==`number`);if(!(t!==null&&t.v===1&&typeof t.audioId==`string`&&typeof t.contentVersion==`number`&&typeof t.pageCount==`number`&&n&&Array.isArray(t.outline)))throw new Q({code:`invalid-catalog`,message:`Catalog failed validation`});return t};async function Ht(e){let{catalogByteLength:t,blobBaseOffset:n}=Bt(e);if(e.length<12+t)throw new Q({code:`truncated`,message:`Catalog needs ${(12+t).toString()} bytes, got ${e.length.toString()}`});let r=await kt(e.subarray(12,12+t));return{catalog:Vt(JSON.parse(Rt.decode(r))),blobBaseOffset:n}}function Ut(e,t,n){let r=e.pages.find(e=>e.n===n);return r?{start:t+r.offset,endInclusive:t+r.offset+r.length-1}:null}async function Wt(e,t){let n=await kt(t),r=JSON.parse(Rt.decode(n));if(typeof r!=`object`||!r)throw new Q({code:`invalid-page`,message:`Page ${e.toString()} is not an object`});let i=r;if(i.page!==e||typeof i.text!=`string`||!Array.isArray(i.words)||
1!Array.isArray(i.sentences)||!Array.isArray(i.blocks)||!Array.isArray(i.segments))throw new Q({code:`invalid-page`,message:`Page ${e.toString()} failed validation`});return i}var Gt=e=>e.trim().length>0,Kt=e=>e.filter(Gt).join(` `),qt=4,Jt=e=>String(e instanceof Error?e.message:e),Yt=e=>N(e,`DocPackRangeFetchError`)||N(e,`DocPackCorruptError`),Xt=(e,t,n)=>(r,i)=>x(function*(){let n=yield*e.get(t,{headers:{Range:`bytes=${r.toString()}-${i.toString()}`}}).pipe(re(e=>new At({message:`doc-pack range fetch failed: ${Jt(e.cause??e)}`,details:{url:t,range:[r,i],cause:e.cause??e}})));if(n.status!==206&&n.status!==200)return yield*new At({message:`doc-pack range fetch failed: ${n.status.toString()}`,details:{url:t,range:[r,i],status:n.status}});let a=new Uint8Array(yield*n.arrayBuffer.pipe(re(e=>new At({message:`doc-pack range fetch failed: ${Jt(e.cause??e)}`,details:{url:t,range:[r,i],cause:e.cause??e}}))));return n.status===200?a.subarray(r,i+1):a}).pipe(de(w(n)),B(`TimeoutError`,()=>Ee(new At({message:`doc-pack range fetch timed out after ${n.toString()}ms`,details:{url:t,range:[r,i]}})))),Zt=(e,t)=>(n,r)=>U({try:()=>e(n,r),catch:e=>Yt(e)?e:new At({message:`doc-pack range fetch failed: ${Jt(e)}`,details:{url:t,range:[n,r],cause:e}})}),Qt=(e,t)=>t?.fetchRange?D(Zt(t.fetchRange,e)):h(We,n=>Xt(n,e,t?.timeoutMs??3e4)),$t=(e,t,n,r)=>x(function*(){let i=yield*e(n,r),a=r-n+1;return i.length===a?i:yield*new jt({message:`doc-pack range ${n.toString()}-${r.toString()} returned ${i.length.toString()} bytes, expected ${a.toString()}: pack does not match its catalog`,details:{url:t}})}),en=(e,t,n)=>U({try:()=>Wt(t,n),catch:n=>new jt({message:`doc-pack page ${t.toString()} decode failed: ${Jt(n)}`,details:{url:e,page:t,cause:n}})}),tn=en,nn=Se(`DocPack.fetchByteRange`)(function*(e,t,n,r){return yield*(yield*Qt(e,r))(t,n)}),rn=Se(`DocPack.openCatalogFromUrl`)(function*(e,t){let n=yield*Qt(e,t),r=t?.catalogPrefixBytes??65536,i=yield*n(0,r-1),a=i.length<r?i.length:void 0,o=yield*S({try:()=>Bt(i),catch:t=>new jt({message:`doc-pack catalog read failed: ${Jt(t)}`,details:{url:e,cause:t}})});if(a!==void 0&&o.blobBaseOffset>a)return yield*new jt({message:`doc-pack catalog claims ${o.blobBaseOffset.toString()} bytes but the object is only ${a.toString()} — corrupt header`,details:{url:e}});if(i.length<o.blobBaseOffset){let e=yield*n(i.length,o.blobBaseOffset-1),t=new Uint8Array(o.blobBaseOffset);t.set(i),t.set(e,i.length),i=t}let{catalog:s,blobBaseOffset:c}=yield*U({try:()=>Ht(i),catch:t=>new jt({message:`doc-pack catalog read failed: ${Jt(t)}`,details:{url:e,cause:t}})});return{url:e,catalog:s,blobBaseOffset:c}}),an=Se(`DocPack.fetchPageBytes`)(function*(e,t,n){let r=Ut(e.catalog,e.blobBaseOffset,t);return r?yield*$t(yield*Qt(e.url,n),e.url,r.start,r.endInclusive):yield*new Mt({pageNumber:t})}),on=Se(`DocPack.fetchPage`)(function*(e,t,n){let r=yield*an(e,t,n);return yield*en(e.url,t,r)}),sn=Se(`DocPack.fetchPages`)(function*(e,t,n){let r=yield*Qt(e.url,n),i=[...new Set(t)].flatMap(t=>{let n=Ut(e.catalog,e.blobBaseOffset,t);return n?[{pageNumber:t,range:n}]:[]}).toSorted((e,t)=>e.range.start-t.range.start),a=[];for(let e of i){let t=a.at(-1);t&&e.range.start-t.endInclusive-1<=65536?(t.endInclusive=Math.max(t.endInclusive,e.range.endInclusive),t.pages.push(e)):a.push({start:e.range.start,endInclusive:e.range.endInclusive,pages:[e]})}let o=new Map;return yield*d(a,t=>x(function*(){let n=yield*$t(r,e.url,t.start,t.endInclusive);for(let{pageNumber:r,range:i}of t.pages){let a=n.subarray(i.start-t.start,i.endInclusive+1-t.start);o.set(r,yield*en(e.url,r,a))}}),{concurrency:qt,discard:!0}),o}),cn=95,ln=140,un=380,dn=(e,t)=>t?.[e.class]??e.read,fn=e=>e.match(/\S+/g)?.length??0,pn=e=>`${e[0].toString()}:${e[1].toString()}-${e[2].toString()}`,mn=(e,t)=>`${e}:${t.map(pn).join(`,`)}`,hn=(e,t)=>e.text.slice(t[0],t[1]),gn=(e,t)=>{let n=Math.max(e[0],t[0]),r=Math.min(e[1],t[1]);return n<r?[n,r]:null},_n=(e,t,n)=>{if(n<1)return[t];let r=[...e.text.slice(t[0],t[1]).matchAll(/\S+/g)].map(e=>t[0]+e.index);if(r.length<=n)return[t];let i=[],a=t[0];for(let e=n;e<r.length;e+=n){let t=r[e];if(t===void 0)break;i.push([a,t]),a=t}return i.push([a,t[1]]),i},vn=(e,t,n=ln)=>{let r=e.sentences.map(e=>gn(t.chars,e.chars)).filter(e=>e!==null);return(r.length>0?r:[t.chars]).flatMap(t=>_n(e,t,n))};function yn(e,t){return e.toSorted((e,t)=>e.page-t.page).flatMap(e=>e.segments.filter(e=>dn(e,t)).map(t=>({page:e.page,class:t.class,chars:t.chars,text:hn(e,t.chars)}))).filter(e=>e.text.trim().length>0)}function bn(e,t={}){let n=t.targetWordsPerChunk??cn,r=t.maxWordsPerChunk??ln,i=[],a,o=[],s=[],c=0,l=()=>{if(!a||o.length===0)return;let e=Kt(s);i.push({id:mn(a,o),class:a,ranges:[...o],text:e,charCount:e.length,wordCount:c}),a=void 0,o=[],s=[],c=0};for(let i of e.toSorted((e,t)=>e.page-t.page)){l();for(let e of i.segments){if(!dn(e,t.classOverrides)){l();continue}for(let t of vn(i,e,r)){let u=hn(i,t);if(u.trim().length===0)continue;let d=fn(u),f=o.length>0&&c+d>r,p=o.length>0&&c>=n&&a===e.class;a!==void 0&&(a!==e.class||f||p)&&l(),a=e.class,o.push([i.page,t[0],t[1]]),s.push(u),c+=d}}}return l(),i}function xn(e,t){for(let n of e)for(let[e,r,i]of n.ranges)if(e===t.page&&r<=t.charStart&&t.charStart<i)return n;for(let n of e){let e=n.ranges[0];if(!e)continue;let[r,i]=e;if(r>t.page||r===t.page&&i>=t.charStart)return n}}var Sn=(e,t)=>t===!1?{chars:0,words:0}:t===!0?{chars:e.chars+(e.offChars??0),words:e.words+(e.offWords??0)}:{chars:e.chars,words:e.words};function Cn(e,t){return Object.entries(e.classes).reduce((e,[n,r])=>
1{if(r===void 0)return e;let i=Sn(r,t?.[n]);return{chars:e.chars+i.chars,words:e.words+i.words}},{chars:0,words:0})}function wn(e,t,n=un){return e.pages.reduce((e,r)=>e+Cn(r,t).words*n,0)}var Tn=e=>Object.values(e.classes).reduce((e,t)=>e+(t?.chars??0)+(t?.offChars??0),0);function En(e,t,n,r=un){let i=0;for(let a of e.pages){let e=Cn(a,n).words*r;if(a.n!==t.page){i+=e;continue}let o=Tn(a);if(o===0)return i;let s=Math.min(1,Math.max(0,t.charStart/o));return i+e*s}return i}function Dn(e,t,n,r,i=un){let a=0;for(let o of e.pages){let e=Cn(o,r),s=e.words*i;if(o.n!==n.page){a+=s;continue}if(e.chars===0)return a;let c=On(t,n,r),l=Math.min(1,Math.max(0,c/e.chars));return a+s*l}return a}function On(e,t,n){if(t.page!==e.page)return 0;let r=0;for(let i of e.segments){if(!dn(i,n))continue;if(t.charStart<=i.chars[0])return r;let e=Math.min(t.charStart,i.chars[1]);if(r+=Math.max(0,e-i.chars[0]),t.charStart<=i.chars[1])return r}return r}function kn(e,t,n){let r=Math.max(0,t),i;for(let t of e.segments){if(!dn(t,n))continue;let a=t.chars[1]-t.chars[0];if(i=t.chars[1],r<=a)return{page:e.page,charStart:t.chars[0]+r};r-=a}return i===void 0?void 0:{page:e.page,charStart:i}}function An(e,t,n,r=un){let i=0,a;for(let o of e.pages){let e=Cn(o,n),s=e.words*r;if(e.words>0&&e.chars>0&&(a={page:o.n,chars:e.chars}),s<=0)continue;let c=i+s;if(t<=c){let n=Math.min(1,Math.max(0,(t-i)/s));return{page:o.n,readableCharOffset:Math.round(e.chars*n)}}i=c}if(a)return{page:a.page,readableCharOffset:a.chars}}var jn=4194304,Mn=12e4,Nn=e=>rn(e),Pn=(e,t)=>({queryKey:[`doc-pack-catalog`,e,t],queryFn:()=>Nn(t),staleTime:1/0,retry:1}),Fn=(e,t,n)=>[`doc-pack-page`,e,t,n],In=e=>({page:e,size:[612,792],textSource:`ocr`,degraded:!1,text:``,words:[],sentences:[],blocks:[],segments:[]}),Ln=e=>{let t=0;for(let n of e.pages)n.offset+n.length>t&&(t=n.offset+n.length);return t},Rn=new Map;function zn(e){return K(()=>Rn.get(e.url)||ve(nn(e.url,e.blobBaseOffset,e.blobBaseOffset+Ln(e.catalog)-1).pipe(T(()=>O(()=>Rn.delete(e.url))))).pipe(Ce(t=>{let n=Rn.get(e.url);if(n)return n;for(Rn.set(e.url,t);Rn.size>2;){let e=Rn.keys().next().value;if(e===void 0)break;Rn.delete(e)}return t})))}function Bn(e,t,n){let r=Ut(e.catalog,e.blobBaseOffset,n);if(!r)return D(In(n));let i=t.subarray(r.start-e.blobBaseOffset,r.endInclusive+1-e.blobBaseOffset);return tn(e.url,n,i)}function Vn(e,t,n){return Ut(e.catalog,e.blobBaseOffset,t)?n?.fetchMode!==`range`&&Ln(e.catalog)<=jn?zn(e).pipe(Ce(n=>Bn(e,n,t))):on(e,t).pipe(B(`DocPackPageAbsentError`,()=>D(In(t)))):D(In(t))}var Hn=(e,t,n,r)=>({queryKey:Fn(e,t.url,n),queryFn:()=>Vn(t,n,r),staleTime:1/0,gcTime:Mn,retry:1});function Un(e,t,n,r,i,a){for(let o of i)o<1||o>r.catalog.pageCount||t.prefetchQuery(e.queryOptions(Hn(n,r,o,a)))}var Wn=8;function Gn(e,t,n,r){return r.filter(r=>e.getQueryData(Fn(t,n,r))===void 0)}async function Kn(e,t,n,r,i){let a=Gn(t,n,r.url,i);if(a.length<=1)return;let o=await e.runPromise(sn(r,a)).catch(()=>void 0);if(o)for(let[e,i]of o)t.setQueryData(Fn(n,r.url,e),i)}async function qn(e){let{catalog:t,classOverrides:n,anchor:r,startPage:i}=e,a=e.batchPages??Wn,o=t.pages.filter(e=>e.n>=i&&e.n<=t.pageCount&&Cn(e,n).chars>0).map(e=>e.n).toSorted((e,t)=>e-t),s=-1;for(let t=0;t<o.length;t++){let i=o[t];if(i===void 0)continue;let c=xn(bn([await e.loadPage(i)],{classOverrides:n}),r);if(c)return c;let l=t+2;if(e.warmPages&&l>s){let t=o.slice(l,l+a);t.length>0&&(s=l+t.length-1,e.warmPages(t).catch(()=>void 0))}}}var Jn=e=>e?.content_version===6,Yn=Fe(null).pipe(Re);function Xn(e){let t=(0,_t.c)(3),n=Le(Yn),r;return t[0]!==e||t[1]!==n?(r=t=>e({activeAudioId:t,setActive:n}),t[0]=e,t[1]=n,t[2]=r):r=t[2],Y(Yn,r)}var Zn=e=>`legacy|${e.chapterId}|${e.ttsId}|${e.voice??``}`,Qn=e=>`doc-pack|${e.audioId}|${e.docPackVersion.toString()}|${e.chunkId}|${e.voice??``}`,$n={},er=Pe(()=>$n,(e,t)=>{e.setSelf(t)}).pipe(Re),tr=(e,t)=>e[t],nr=(e,t)=>tr(e.get(er),t),rr=(e,t,n)=>{let r={...e,[t]:n},i=Object.keys(r);if(i.length<=48)return r;let a={};for(let e of i.slice(i.length-48)){let t=r[e];t!==void 0&&(a[e]=t)}return a},ir=(e,t,n)=>{e.set(er,rr(e.get(er),t,n))},ar=e=>`doc-pack:${e}`,or=e=>({...e,playbackMode:`legacy`}),sr=e=>Ce(Je,t=>{let n=e.voice?ke(e.voice):void 0;return t.Tts.GetChapterTts({params:{chapterId:e.chapterId,ttsId:e.ttsId},query:n?{voice:n}:{}}).pipe(h(t=>({...t.tts,playbackMode:`legacy`,chapterId:e.chapterId})))}).pipe(g(`tts.chunk.load`,{attributes:{"audio.chapter_id":e.chapterId,"tts.id":e.ttsId}})),cr=e=>Ce(Je,t=>{let n=e.voice?ke(e.voice):void 0;return t.Tts.Synthesize({payload:{mode:`reference`,doc:e.audioId,docPackVersion:e.docPackVersion,ranges:[...e.ranges],...n?{voice:n}:{}}}).pipe(h(t=>
1({...t.tts,playbackMode:`doc-pack`,chapterId:ar(e.audioId),docPackChunk:e.chunk,docPackWordTimings:t.words})))}).pipe(g(`tts.synthesize.reference`,{attributes:{"audio.id":e.audioId,"doc_pack.version":e.docPackVersion}})),$=G(me),lr=q({body:$,heading:$,citation:$,"cross-reference":$,caption:$,footnote:$,endnote:$,equation:$,table:$,"header-footer":$,"page-number":$,artifact:$,"reference-entry":$}),ur=ge([`text`,`pdf`]),dr=q({globalOverrides:lr,documentOverrides:P(L,lr),contentViews:P(L,ur)}),fr={globalOverrides:{},documentOverrides:{},contentViews:{}},pr=dr.mapFields(p(G)),mr=ue([q({state:pr,version:z}),pr]).pipe(j(dr,ne({decode:e=>({...fr,...`state`in e?e.state:e}),encode:e=>e}))),hr=ze({key:`doc-pack-reading-prefs-storage`,schema:mr,defaultValue:()=>fr,fieldFallback:Ie({schema:dr,defaultValue:()=>fr})}),gr=(e,t)=>({...e.globalOverrides,...t?e.documentOverrides[t]??{}:{}});function _r(){return Y(hr)}function vr(e){let t=(0,_t.c)(3),n=_r(),r=n.globalOverrides,i=e?n.documentOverrides[e]:void 0,a;return t[0]!==i||t[1]!==r?(a={...r,...i},t[0]=i,t[1]=r,t[2]=a):a=t[2],a}var yr=class extends s()(`ChunkFetchSkippedError`,{reason:ge([`circuit-open`,`cooldown`,`gave-up`,`superseded`]),key:L,message:L,retryInMs:G(fe)}){},br=(e,t,n)=>new yr({reason:e,key:t,message:`chunk fetch skipped (${e}): ${t}`,...n===void 0?{}:{retryInMs:n}}),xr=class extends s()(`ChunkFetchFailedError`,{classification:He,key:L,message:L,failure:b,retryAfterMs:G(fe)}){},Sr=(e,t,n,r)=>new xr({classification:e,key:t,message:`chunk fetch failed (${e}): ${t}`,failure:n,...r===void 0?{}:{retryAfterMs:r}}),Cr={maxConcurrent:3,baseCooldownMs:2e3,maxCooldownMs:6e4,maxAttemptsPerKey:5,circuitFailureThreshold:4,circuitWindowMs:6e4,probeIntervalMs:3e4,retryBudgetMs:3e4,requestTimeoutMs:6e4};function wr({runner:e,nowMs:t=()=>Date.now(),random:n=Math.random,config:r=Cr,onCircuitStateChange:i,onPrefetchDeferred:a}){let s=new Map,l=new Map,u=[],d=`closed`,f=-1/0,p=!1,g=je(r.maxConcurrent),_=0,v=se(),y=t=>{e.runPromiseExit(o(t))},b=e=>{d!==e&&(d=e,e===`open`&&(p=!1),y(`audio chunk-fetch circuit ${e}`),i?.(e))},x=e=>{u=u.filter(t=>e-t.atMs<=r.circuitWindowMs)},S=(e,t)=>{let n=s.get(e);if(n)return n;let r={failures:0,nextEligibleAtMs:0,firstFailureAtMs:t,lastFailureAtMs:t};return s.set(e,r),r},C=(e,i,a)=>{let o=t(),s=S(e,o);if(s.failures>0&&s.nextEligibleAtMs!==1/0&&o-s.lastFailureAtMs>=r.retryBudgetMs&&(s.failures=0),s.failures===0&&(s.firstFailureAtMs=o),s.failures+=1,s.lastFailureAtMs=o,i===`permanent`){s.failures=r.maxAttemptsPerKey,s.nextEligibleAtMs=1/0;return}if(i===`session`){b(`open`);return}let c=Math.min(r.baseCooldownMs*2**(s.failures-1),r.maxCooldownMs)*(.5+n());s.nextEligibleAtMs=o+Math.max(c,a??0),u.push({key:e,atMs:o}),x(o);let l=new Set(u.map(e=>e.key));d===`closed`&&l.size>=r.circuitFailureThreshold&&b(`open`)},w=e=>{s.delete(e),u=u.filter(t=>t.key!==e),d===`open`&&(s.clear(),u=[],b(`closed`))},T=(e,n)=>{let i=t(),a=s.get(e);if(n===`current`){if(a&&i<a.nextEligibleAtMs)return a.nextEligibleAtMs>=a.firstFailureAtMs+r.retryBudgetMs?br(`gave-up`,e):br(`cooldown`,e,a.nextEligibleAtMs-i);if(d===`open`){if(!(!p||i-f>=r.probeIntervalMs))return br(`circuit-open`,e);p=!0,f=i}return null}return d===`open`?br(`circuit-open`,e):a&&a.failures>=r.maxAttemptsPerKey?br(`gave-up`,e):a&&i<a.nextEligibleAtMs?br(`cooldown`,e):null},E=e=>xe(de(e.effect,r.requestTimeoutMs)).pipe(Ce(t=>{if(c(t))return e.writeCached(t.value),w(e.key),D(t.value);let n=t.cause.reasons.find(te)?.error,r=Ue(n),i=Ve(n);return C(e.key,r,i),Ee(Sr(r,e.key,n??k(t.cause),i))})),A=(e,t)=>ye(O(()=>{e.parked=!1,_+=1}),()=>t,()=>O(()=>{--_})),j=()=>{let e=0;for(let t of l.values())t.parked&&(e+=1);return e},ne=(e,t)=>K(()=>(_>=r.maxConcurrent&&(e.parked=!0,a?.(e.key,j())),g.withPermits(1)(A(e,K(()=>{let e=t.readCached();if(e!==void 0)return D(e);let n=T(t.key,`prefetch`);return n?Ee(n):E(t)}))))),re=(e,t)=>g.withPermitsIfAvailable(1)(A(e,E(t))).pipe(Ce(e=>le(e)?D(e.value):E(t))),M=(e,t)=>{e.superseded||(l.get(e.key)===e&&l.delete(e.key),F(e.deferred,t))},N=(e,t,n)=>K(()=>t.superseded?Ee(br(`superseded`,t.key)):n===`current`?re(t,e):ne(t,e)).pipe(ie(e=>O(()=>M(t,e)))),P=(e,t)=>t(V(e.deferred)).pipe(h(e=>e)),ae=(e,t,n,r)=>W(m(N(e,t,n)),v,{startImmediately:!0}).pipe(Ce(e=>(t.fiber=e,P(t,r)))),I=(e,t,n)=>
1{let r={key:e.key,deferred:Te(),parked:!1,superseded:!1,fiber:void 0};return l.set(e.key,r),ae(e,r,t,n)},L=(e,t,n)=>{t.superseded=!0,l.delete(t.key),t.fiber?.interruptUnsafe();let r=T(e.key,`current`);return(r?Ee(r):I(e,`current`,n)).pipe(ie(e=>O(()=>F(t.deferred,e))))},oe=(e,t,n)=>{let r=e.readCached();if(r!==void 0)return D(r);let i=l.get(e.key);if(i)return t===`prefetch`||!i.parked?P(i,n):L(e,i,n);let a=T(e.key,t);return a?Ee(a):I(e,t,n)};return{fetchEffect:(e,t)=>ee(n=>K(()=>oe(e,t,n))),circuitState:()=>d,retryBudgetExhausted:e=>{let n=s.get(e);return!n||n.failures===0?!1:t()-n.firstFailureAtMs>=r.retryBudgetMs},notePlaybackFailure:e=>{C(e,`transient`,void 0)},notePlaybackSuccess:e=>{w(e)},failureCount:e=>s.get(e)?.failures??0,noteUserRetry:()=>{f=-1/0,s.clear()},reset:()=>{s.clear(),u=[],f=-1/0,p=!1;for(let e of l.values())e.parked&&(e.superseded=!0,l.delete(e.key),F(e.deferred,R(br(`superseded`,e.key))),e.fiber?.interruptUnsafe());b(`closed`)}}}var Tr=`Listening`,Er=(e,t)=>t?e.chapters.find(e=>e.id===t)?.title:void 0,Dr=e=>{let t=e?.trim();if(t)return/^https?:\/\//i.test(t)?t:void 0},Or=(e,t)=>({title:Er(e,t)??e.title??void 0,artist:e.title??void 0,albumTitle:Tr,artworkUrl:Dr(e.cover_img_url)??`https://www.listening.com/social-og-image.png`}),kr=25e3,Ar=3e3,jr=class extends s()(`PlaybackLoadTimeoutError`,{code:ce(`playback_load_timeout`),message:L,timeoutMs:fe}){};function Mr(e){return new jr({code:`playback_load_timeout`,message:`Audio chunk did not become ready within ${e.toString()}ms`,timeoutMs:e})}var Nr=class extends s()(`AudioPoolPlaybackError`,{code:L,message:L}){},Pr=[`ChunkFetchSkippedError`,`ChunkFetchFailedError`,`PlaybackLoadTimeoutError`,`AudioPoolPlaybackError`];function Fr(e){switch(e._tag){case`PlaybackLoadTimeoutError`:return`load_timeout`;case`AudioPoolPlaybackError`:return`audio_error`;case`ChunkFetchSkippedError`:case`ChunkFetchFailedError`:return`tts_fetch_error`;default:return`tts_fetch_error`}}function Ir(e){return e._tag===`ChunkFetchFailedError`?e.classification:`transient`}function Lr(e){return e._tag===`PlaybackLoadTimeoutError`||e._tag===`AudioPoolPlaybackError`}var Rr=e=>e>=1?{kind:`fault`,fault:`chunk`}:{kind:`advance-past-broken-chunk`};function zr(e){switch(e.reason){case`superseded`:return{kind:`ignore`};case`cooldown`:return{kind:`retry-same-chunk`,delayMs:Math.max(Ar,e.retryInMs??0)};case`gave-up`:return{kind:`fault`,fault:`chunk`};case`circuit-open`:return{kind:`fault`,fault:`network`}}}function Br({failure:e,retryBudgetExhausted:t,incidentAdvanceCount:n}){let r=Ir(e);return r===`session`?t?{kind:`fault`,fault:`network`}:{kind:`retry-same-chunk`,delayMs:Ar}:r===`permanent`?Rr(n):t?e._tag===`ChunkFetchFailedError`?{kind:`fault`,fault:`chunk`}:Rr(n):{kind:`retry-same-chunk`,delayMs:Ar}}function Vr({failure:e,retryBudgetExhausted:t,incidentAdvanceCount:n}){return e._tag===`ChunkFetchSkippedError`?zr(e):Br({failure:e,retryBudgetExhausted:t,incidentAdvanceCount:n})}var Hr=class extends s()(`NoLoadedAudioError`,{message:L}){},Ur=class extends s()(`NoPlayableChunkError`,{message:L}){},Wr=class extends s()(`PlaybackSelectionInvariantError`,{message:L}){};function Gr({audioId:e,chapterId:t,ttsId:n,playbackMode:r,docPackChunkId:i,latencyMs:a,cacheHit:o,resolved:s}){return{conversion_id:e,chapter_id:t,tts_id:n,playback_mode:r,...i?{doc_pack_chunk_id:i}:{},...a===void 0?{}:{latency_ms:a},...o===void 0?{}:{cache_hit:o},...s===void 0?{}:{resolved:s}}}function Kr(e,t){return Math.max(0,Math.round(t-e))}function qr({audioId:e,playbackMode:t,ttsId:n,docPackChunkId:r,gapMs:i,lookaheadDepth:a}){return{conversion_id:e,playback_mode:t,tts_id:n,...r?{doc_pack_chunk_id:r}:{},boundary_gap_ms:Math.max(0,Math.round(i)),...a===void 0?{}:{lookahead_depth:a}}}function Jr({audioId:e,chapterId:t,ttsId:n,playbackMode:r,attempt:i,maxAttempts:a,reason:o,docPackChunkId:s,positionMs:c}){return{conversion_id:e,chapter_id:t,tts_id:n,playback_mode:r,attempt:i,...a===void 0?{}:{max_attempts:a},reason:o,...s?{doc_pack_chunk_id:s}:{},...c===void 0?{}:{position_ms:c}}}var Yr={sessionId:0,fetches:[],boundaries:[],recoveryReasons:[]},Xr=e=>({...Yr,sessionId:e.sessionId+1}),Zr=(e,t)=>
1[...e,t].slice(-20),Qr=e=>t=>({...t,fetches:Zr(t.fetches,e)}),$r=e=>t=>({...t,boundaries:Zr(t.boundaries,e)}),ei=e=>t=>({...t,recoveryReasons:Zr(t.recoveryReasons,e)});function ti(e){if(e.doc_pack_page!==null&&e.doc_pack_char_start!==null)return{type:`doc-pack`,audioConversionId:e.audio_conversion_id,anchor:{page:e.doc_pack_page,charStart:e.doc_pack_char_start},loadParams:{loadPos:{docPackPage:e.doc_pack_page,docPackCharStart:e.doc_pack_char_start}}};if(e.tts_id)return{type:`legacy`,audioConversionId:e.audio_conversion_id,ttsId:e.tts_id,loadParams:{loadPos:{posMs:e.chapter_audio_offset_ms??0}}}}function ni(e){return e.type===`doc-pack`?{chapterId:void 0,ttsId:void 0,loadParams:{...e.loadParams,docPackFrom:e.anchor}}:{chapterId:void 0,ttsId:e.ttsId,loadParams:{...e.loadParams}}}function ri({chapterId:e,docPackAnchor:t,positionMs:n,ttsId:r}){return t?{chapter_id:null,chapter_audio_offset_ms:null,tts_id:null,doc_pack_page:t.page,doc_pack_char_start:t.charStart,doc_pack_char_end:t.charEnd}:{chapter_id:e??null,chapter_audio_offset_ms:Math.round(n),tts_id:r??null,doc_pack_page:null,doc_pack_char_start:null,doc_pack_char_end:null}}var ii=e=>`doc-pack:${e.page.toString()}:${e.charStart.toString()}-${(e.charEnd??e.charStart).toString()}`,ai=({player:e,src:t,options:n,timeoutMs:r,onPlaybackError:i})=>oe(r=>{let a=!1;e.load(t,{...n,onCanPlay:()=>{a=!0,r(y)},onError:e=>{let t=new Nr(e);if(a){i?.(t);return}r(Ee(t))}})}).pipe(a({duration:w(r),orElse:()=>Ee(Mr(r))})),oi={audioId:void 0,lookupAudioId:void 0,chapterId:void 0,ttsId:void 0,playbackMode:`legacy`,docPackChunk:void 0,loadPos:{posMs:0},autoPlay:!0,isLoadingAudio:!1,isPlaybackComplete:!1,playbackFault:null,stats:Yr},si=({registry:e,initialAudioId:t,initialLookupAudioId:n})=>{let r=Fe({...oi,audioId:t,lookupAudioId:n});return{atom:r,getState:()=>e.get(r),setState:t=>{e.update(r,e=>({...e,...t}))}}};function ci({audioId:e,chapterId:t,ttsId:n,playbackMode:r,docPackChunk:i}){if(e){if(r===`doc-pack`){let t=i?.id;return t===void 0?void 0:{playbackMode:r,audioId:e,docPackChunkId:t}}return t&&n?{playbackMode:r,audioId:e,chapterId:t,ttsId:n}:void 0}}function li(e,t){return!(e&&t)||e.audioId!==t.audioId?!1:e.playbackMode===`doc-pack`?t.playbackMode===`doc-pack`&&e.docPackChunkId===t.docPackChunkId:t.playbackMode===`legacy`&&e.chapterId===t.chapterId&&e.ttsId===t.ttsId}function ui({shouldPlay:e,forcePlay:t,isPlaying:n,hasAudioSource:r,hasLoadedAudio:i,hasLoadedChunk:a,hasPlaybackFault:o}){return o?`load-fresh`:e?i?!t&&n?`no-op`:!t&&r?`play-existing-queue`:`load-fresh`:`load-fresh`:a?`no-op`:`load-fresh`}function di(e){let t=e?.doc_pack_page!==null&&e?.doc_pack_page!==void 0&&e.doc_pack_char_start!==null&&e.doc_pack_char_start!==void 0?{page:e.doc_pack_page,charStart:e.doc_pack_char_start}:void 0;return{chapterId:t?void 0:e?.chapter_id??void 0,ttsId:t?void 0:e?.tts_id??void 0,loadParams:{loadPos:t?{docPackPage:t.page,docPackCharStart:t.charStart}:e?.tts_id?{posMs:e.timestamp_ms}:{posMs:0},docPackFrom:t}}}var fi=(e,t)=>{if(!t)return;let n=e.chapters.find(e=>e.id===t)?.bbox_pages[0];if(n)return{page:n,charStart:0}},pi=(e,t)=>t?fi(e,e.chapters.find(e=>e.tts_ids.includes(t))?.id):void 0;function mi(e,t){let n=e.chapters.findIndex(e=>e.id===t);if(n!==-1)for(let t of e.chapters.slice(n)){let e=t.tts_ids[0];if(e)return{chapterId:t.id,ttsId:e}}}function hi(e,t,n){let r=t?e.chapters.find(e=>e.id===t):n?e.chapters.find(e=>e.tts_ids.includes(n)):void 0;if(n&&r?.tts_ids.includes(n))return{chapterId:r.id,ttsId:n};let i=e.chapters[0],a=r??i;if(a)return mi(e,a.id)}function gi(e,t,n){return t!==void 0&&e.chapterId!==t||e.ttsId!==n}function _i(e,t,n){if(!t&&!n)return!1;let r=t?e.chapters.find(e=>e.id===t):void 0;return!r||n!==void 0&&!r.tts_ids.includes(n)}function vi(e,t,n){let r=e.chapters,i=r.findIndex(e=>e.id===t),a=r[i];if(!a)return;let o=a.tts_ids.indexOf(n);if(o===-1)return;let s=a.tts_ids[o+1];if(s)return{chapterId:t,ttsId:s};let c=r[i+1];if(c)return mi(e,c.id)}function yi({poolSize:e,prefetchCount:t}){return e<=1||t<=0?0:Math.min(t,Math.max(1,Math.floor(e)-1))}var bi=q({data:P(L,P(L,z))}),xi={data:{}},Si=bi.mapFields(p(G)),Ci=ze({key:`tts-chunk-audio-duration-ms-cache`,schema:ue([q({state:Si,version:z}),Si]).pipe(j(bi,ne({decode:e=>({...xi,...`state`in e?e.state:e}),encode:e=>e}))),defaultValue:()=>xi}),wi=(e,t,n)=>{let r=e[t];if(!r)return;let i=r[n];return i===void 0?Object.values(r).find(e=>e!==void 0):i},Ti=(e,t,n,r)=>{let{data:i}=e.get(Ci);e.set(Ci,{data:{...i,[t]:{...i[t],[n]:r}}})};function Ei(e){let t=(0,_t.c)(10),n=(0,Z.use)(Me),r=Le(Ci),i;t[0]===n?i=t[1]:(i=(e,t)=>wi(n.get(Ci).data,e,t),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(e,t,n)=>{r(r=>({data:{...r.data,[e]:{...r.data[e],[t]:n}}}))},t[2]=r,t[3]=a);let o;t[4]!==i||t[5]!==a?(o={getMs:i,setMs:a},t[4]=i,t[5]=a,t[6]=o):o=t[6];let s=o,c;return t[7]!==s||t[8]!==e?(c=t=>e({data:t.data,...s}),t[7]=s,t[8]=e,t[9]=c):c=t[9],Y(Ci,c)}function Di(e,t){let n=0,r=e.length-1,i=-1;for(;n<=r;){let a=Math.floor((n+r)/2),o=e[a];o!==void 0&&o<=t?(i=a,n=a+1):r=a-1}return i}function Oi(e,t){let n=0,r=e.length-1,i=e.length;for(;n<=r;){let a=Math.floor((n+r)/2),o=e[a];o!==void 0&&o>=t?(i=a,r=a-1):n=a+1}return i}var ki=[],Ai={docPackAnchorAt:()=>void 0,activeDocPackTimingsAt:()=>ki,activeWordIdxAt:()=>-1,legacyTimingCount:null,legacyWordStartMsAt:()=>void 0,docPackAnchorStartMsAt:()=>void 0};function ji(e){let t=e.docPackWordTimings??ki,n=e.docPackChunk?.ranges[0],r=t.toSorted((e,t)=>e.start_ms-t.start_ms),i=t.toSorted((e,t)=>e.end_ms-t.end_ms),a=r.map(e=>e.start_ms),o=i.map(e=>e.end_ms),s=[],c=-1;for(let e=0;e<r.length;e++){let t=r[e],n=c>=0?r[c]:void 0;(!n||t&&t.end_ms>n.end_ms)&&(c=e),s.push(c)}let l=e=>{let t=Di(a,e);if(t>=0){let n=s[t],i=n===void 0?void 0:r[n];if(i&&i.end_ms>=e)return i}let n=Di(o,e);return n>=0?i[n]:r[Oi(a,e)]},u=e=>{let t=l(e);if(t){let e=t.page??n?.[0];if(e!==void 0)return{page:e,charStart:t.char_start,charEnd:t.char_end}}if(n)return{page:n[0],charStart:n[1],charEnd:n[2]}},d=e=>t.filter(t=>t.start_ms<=e&&e<=t.end_ms),f=e.alignment_timestamps??[],p=null;return{docPackAnchorAt:u,activeDocPackTimingsAt:d,activeWordIdxAt:e=>nt(f,e),legacyTimingCount:f.length>0?f.length:null,legacyWordStartMsAt:e=>f[e]?.start,docPackAnchorStartMsAt:e=>{if(p===null){p=new Map;for(let e of t){let t=e.page??n?.[0];if(t===void 0)continue;let r=`${t}:${e.char_start}`;p.has(r)||p.set(r,e.start_ms)}}return p.get(`${e.page}:${e.charStart}`)}}}var Mi=new WeakMap;function Ni(e){if(!e)return Ai;let t=Mi.get(e);if(t)return t;let n=ji(e);return Mi.set(e,n),n}function Pi(e,t){return Ni(e).docPackAnchorAt(t)}var Fi=9,Ii=e=>{typeof performance.mark==`function`&&performance.mark(e)},Li={module:`AudioChunkPlayer`},Ri=i(1);function zi({readSummary:e,readAudioId:t,fetchAudioDetail:n,onAttemptFailed:r}){return K(()=>{let i=0;return K(()=>
1{if(e()!==void 0)return y;let r=t();return r?U({try:()=>n(r),catch:e=>new wt({audioId:r,cause:e})}):y}).pipe(T(e=>O(()=>{r(e,i),i+=1})),I({schedule:M(A(Ri)),times:2}),C,_e(O(e)))})}var Bi=e=>typeof e==`function`?e():e,Vi=({registry:e,runtime:t,queryClient:n,eq:i,store:a,read:s})=>{let l=Ne()(e=>K(()=>re(e)),{concurrent:!1}),d=Ne()(e=>K(()=>M(e)),{concurrent:!1}),p=0,m=null,g=(e,t,n)=>{let r=a.getState();r.audioId===e&&r.stats.sessionId===t&&a.setState({stats:n(r.stats)})},b=()=>{p=0,m=null,a.getState().playbackFault!==null&&(F.noteUserRetry(),a.setState({playbackFault:null}))},S=e=>li(e,ci(a.getState())),T=0,ee=Oe(!0),A=t=>{e.set(d,Be),e.set(l,{command:t,supersedes:T>0})},j=null,te=(t,n)=>{let r={command:t,target:n};j={dispatch:r},e.set(d,r)},ne=e=>x(function*(){let n=yield*t.contextEffect;return yield*e.pipe(be(n))}),re=({command:t,supersedes:n})=>K(()=>{T+=1,ee.closeUnsafe();let r=n?we(w(200)):y;return ne(r.pipe(_e(tt(t)),u(e=>ue(e)?y:E(`Playback command failed`,e)),H(Li))).pipe(ae(O(()=>{if(--T,T===0){ee.openUnsafe();let t=j;t&&e.set(d,{...t.dispatch})}})))}),M=({command:e,target:t})=>ne(x(function*(){yield*ee.await;let n=j,r=n?.dispatch.command===e?n.advancedTo:void 0;if(t&&!S(t)){if(r&&S(r)){yield*Fe;return}m=null,yield*v(`Automated playback command dropped as stale`).pipe(H({command:e._tag}));return}yield*tt(e)}).pipe(u(e=>ue(e)?y:E(`Automated playback command failed`,e)),ie(t=>O(()=>{(c(t)||!ue(t.cause))&&j?.dispatch.command===e&&(j=null)})),H(Li))),N=e=>{t.runFork(e.pipe(H(Li)))},P=e=>{t.runFork(e.pipe(H(Li)))},F=wr({runner:t,onPrefetchDeferred:(e,t)=>{N(J(`Chunk fetch deferred`).pipe(H({key:e,queue_depth:t})))},onCircuitStateChange:e=>{if(e===`open`){N(o(`Chunk-fetch circuit opened`));return}a.setState({playbackFault:null})}}),I=e=>Qn({audioId:e.audioId,docPackVersion:e.docPackVersion,chunkId:e.chunk.id,voice:e.voice}),L=t=>{let n=Zn(t),r=nr(e,n);if(r?.playbackMode===`legacy`)return r;let i=s().readPersistedChunk?.(t);if(!i)return;let a=or(i);return ir(e,n,a),a},R=t=>{let n=nr(e,I(t));return n?.playbackMode===`doc-pack`?n:void 0},oe=t=>({key:Zn(t),effect:sr(t),readCached:()=>L(t),writeCached:n=>{ir(e,Zn(t),n)}}),z=(e,t)=>F.fetchEffect(oe(e),t),se=t=>({key:I(t),effect:cr(t),readCached:()=>R(t),writeCached:n=>{ir(e,I(t),n)}}),ce=(e,t)=>F.fetchEffect(se(e),t),V=()=>s().player,le=U({try:()=>V().play(),catch:e=>new Nr({code:`play_rejected`,message:e instanceof Error?e.message:String(e)})}).pipe(B(`AudioPoolPlaybackError`,e=>o(`Transport refused to start playback`).pipe(H({error:e}),_e(O(()=>{a.setState({autoPlay:!1})}))))),ue=e=>_(e),W={started:e=>(N(J(`TTS source fetch started`).pipe(H(Gr(e)))),performance.now()),resolved:(e,t,n)=>{N(J(`TTS source fetch finished`).pipe(H(Gr({...e,latencyMs:t,cacheHit:n,resolved:!0}))))},failed:(e,t,n,r)=>{N(o(`TTS source fetch finished`).pipe(H({...Gr({...e,latencyMs:t,cacheHit:n,resolved:!1}),error:r})))}},de=({cacheHit:e,context:t,load:n,priority:r})=>K(()=>{let i=W.started(t),o=a.getState().stats.sessionId,s=(n,a)=>{let s=Kr(i,performance.now());n?W.resolved(t,s,e):W.failed(t,s,e,a),g(t.audioId,o,Qr({latencyMs:s,cacheHit:e,resolved:n,priority:r}))};return n.pipe(f(()=>O(()=>s(!0))),u(e=>ue(e)?y:O(()=>s(!1,k(e)))))}),fe=(e,t)=>n=>n.pipe(B(`ChunkFetchSkippedError`,t=>J(`Chunk fetch skipped`).pipe(H({reason:t.reason,key:t.key,priority:`prefetch`,playback_mode:e}))),pe(e=>o(t).pipe(H({error:k(e)})))),me=async e=>await s().resolveAudioChunkSrc?.({audioId:e.documentSummary.id,chapterId:e.audioChunk.chapterId,ttsId:e.audioChunk.id,voice:e.audioChunk.voice,remoteUrl:e.audioChunk.url})??e.audioChunk.url,ge=()=>{let e=a.getState().audioId;if(e)return Ct(n,e)},ve=()=>{let t=a.getState().audioId,r=n.getQueryData(ot)?.voice,i=s().downloadedVoicesAtom,o=t&&i?e.get(i)[t]:void 0,c=Ct(n,t)?.language,l=Bi(s().isPremiumUser)??n.getQueryData(at)?.metering.is_active_subscription===!0,u=n.getQueryData($e)??[];return et({audioItemLang:c,audioPreferredVoiceName:o,preferredVoiceName:r,isPremiumUser:l,voiceOptionsAll:u})},ye=e=>s().docPackEnabled&&Jn(e.doc_pack)?e.doc_pack:void 0,G=e=>{let t=ye(e);return t?n.ensureQueryData(i.queryOptions(Pn(e.id,t.url))):Promise.resolve(void 0)},xe=async(r,a)=>{let o=await G(r);if(!o)return;let c=gr(e.get(hr),r.id),l=a?.page??o.catalog.pages[0]?.n??1,u=a??{page:l,charStart:0};return qn({catalog:o.catalog,classOverrides:c,anchor:u,startPage:l,loadPage:e=>n.ensureQueryData(i.queryOptions(Hn(r.id,o,e,{fetchMode:s().docPackPageFetchMode}))),warmPages:s().docPackPageFetchMode===`range`?e=>Kn(t,n,r.id,o,e):void 0})},Se=e=>{let t=Qe(e.ranges.at(-1));return{page:t[0],charStart:t[2]}},q=(e,t)=>
1{let n=ye(e);if(n)return{audioId:e.id,docPackVersion:n.content_version,ranges:t.ranges,voice:ve().name,chunk:t}},Te=zi({readSummary:ge,readAudioId:()=>a.getState().audioId,fetchAudioDetail:e=>n.ensureQueryData(i.queryOptions(vt(e))),onAttemptFailed:({cause:e},t)=>{N(o(`ensureDocumentSummary: audio detail fetch failed`).pipe(H({error:e,attempt:t})))}}),De=e=>{N(E(e)),a.setState({isLoadingAudio:!1,autoPlay:!1})},ke=(e,t)=>{let n=ve().name,r=0,i=t;for(;i&&r<Fi&&L({audioId:e.id,chapterId:i.chapterId,ttsId:i.ttsId,voice:n})!==void 0;)r+=1,i=vi(e,i.chapterId,i.ttsId);return r},Ae=e=>u(t=>ue(t)?y:O(()=>{N(E(e).pipe(H({error:k(t)})))}));class je{context;_tag=`StaleChunkSelection`;constructor(e){this.context=e}}let Me=()=>{let{audioId:e,chapterId:t,ttsId:n,playbackMode:i,docPackChunk:s}=a.getState();if(i===`doc-pack`){if(!(e&&s)){N(o(`doc-pack audio ended but no audioId or docPackChunk`));return}return{target:{playbackMode:`doc-pack`,audioId:e,docPackChunkId:s.id},logMessage:`Error loading next doc-pack audio chunk`,findNext:e=>r(()=>xe(e,Se(s))).pipe(h(e=>e?{lookaheadDepth:t=>{let n=q(t,e);return n&&R(n)!==void 0?1:0},select:{docPackChunk:e}}:void 0))}}if(!(e&&t&&n)){N(o(`Audio ended but no audioId, chapterId, or ttsId`));return}return{target:{playbackMode:`legacy`,audioId:e,chapterId:t,ttsId:n},logMessage:`Error loading next audio chunk`,findNext:e=>K(()=>{if(_i(e,t,n))return Ee(new je({chapterId:t,ttsId:n,audioId:e.id}));let r=vi(e,t,n);return D(r?{lookaheadDepth:e=>ke(e,r),select:r}:void 0)})}},Pe=e=>K(()=>{let{autoPlay:t,onExhausted:n}=e,r=Me();if(!r)return y;let i=()=>S(r.target);return x(function*(){let o=yield*Te;if(!i())return;if(!o){De(`Audio ended but audio item detail not loaded`);return}let s=yield*r.findNext(o);if(i()){if(!s){n===`complete`&&(m=null),a.setState({autoPlay:!1,isLoadingAudio:!1,...n===`complete`?{isPlaybackComplete:!0}:{}});return}m&&(m.lookaheadDepth=s.lookaheadDepth(o)),a.setState({...s.select,loadPos:{posMs:0},autoPlay:t&&a.getState().autoPlay,isPlaybackComplete:!1}),j?.dispatch.command===e&&(j.advancedTo=ci(a.getState())),yield*X(o,`advance`)}}).pipe(B(`StaleChunkSelection`,e=>O(()=>{N(o(`Audio ended but the chunk selection is stale for this document`).pipe(H(e.context)))})),Ae(r.logMessage),C)}),Fe=K(()=>x(function*(){let e=yield*Te;e&&(yield*X(e,`advance`))}).pipe(Ae(`Error resuming interrupted chunk advance`),C)),Ie=e=>{Ii(`audio-chunk-player.audio-ended`),N(J(`Audio ended`)),m={startedAtMs:performance.now()},te({_tag:`advanceToNextChunk`,autoPlay:!0,onExhausted:`complete`},e)},Le=(t,n)=>{t&&S(t)&&e.set(d,{command:{_tag:`recoverPlaybackFailure`,error:n,positionMs:Math.round(V().getPositionMs())},target:t})},Re=(e,t)=>{let n=t===`doc-pack`,r=n?`doc-pack TTS source fetch failed`:`TTS source fetch failed`;switch(e._tag){case`PlaybackLoadTimeoutError`:return n?`doc-pack audio load timed out`:`Audio load timed out`;case`AudioPoolPlaybackError`:return n?`doc-pack audio error`:`Audio error`;case`ChunkFetchSkippedError`:case`ChunkFetchFailedError`:return r;default:return r}},Y=(e,t)=>x(function*(){e._tag===`ChunkFetchSkippedError`?yield*J(`Chunk fetch skipped`).pipe(H({reason:e.reason,key:e.key,priority:`current`,playback_mode:t.logContext.playbackMode})):(yield*E(Re(e,t.logContext.playbackMode)).pipe(H({error:e})),Lr(e)&&F.notePlaybackFailure(t.key),yield*o(`Playback recovery attempt`).pipe(H({...Jr({...t.logContext,attempt:F.failureCount(t.key),reason:Fr(e),positionMs:Math.round(V().getPositionMs())}),error:e})),g(t.logContext.audioId,a.getState().stats.sessionId,ei(Fr(e))));let n=Vr({failure:e,retryBudgetExhausted:F.retryBudgetExhausted(t.key),incidentAdvanceCount:p});switch(n.kind){case`ignore`:return a.setState({isLoadingAudio:!1}),!1;case`fault`:return a.setState({playbackFault:n.fault,isLoadingAudio:!1,autoPlay:!1}),!1;case`advance-past-broken-chunk`:return p+=1,a.setState({isLoadingAudio:!1}),yield*Pe({_tag:`advanceToNextChunk`,autoPlay:a.getState().autoPlay,onExhausted:`stop`}),!1;case`retry-same-chunk`:return a.setState({isLoadingAudio:!0}),yield*we(w(n.delayMs)),!0}}),ze=t=>{let{chapterId:n,ttsId:i,audioId:s,playbackMode:c,docPackChunk:l}=a.getState();if(s!==t.id){N(o(`Prefetching next chunks but audioId does not match document summary`));return}if(c===`doc-pack`){if(!l){N(o(`Prefetching next doc-pack chunk but no docPackChunk`));return}P(x(function*(){let n=yield*r(()=>xe(t,Se(l)));if(!n)return;let i=q(t,n);if(!i)return;let a={audioId:i.audioId,chapterId:ar(i.audioId),ttsId:i.chunk.id,playbackMode:`doc-pack`,docPackChunkId:i.chunk.id},o=yield*de({cacheHit:R(i)!==void 0,context:a,load:ce(i,`prefetch`),priority:`prefetch`});
1Ti(e,o.docPackChunk.id,o.voice,o.duration_ms),V().prewarmLoad(o.url,{playbackLogMetadata:a})}).pipe(fe(`doc-pack`,`Failed to prefetch next doc-pack chunk`)));return}if(!(n&&i)){N(o(`Prefetching next chunks but no chapterId or ttsId`));return}let u=(n,i)=>{let a=vi(t,n.chapterId,n.ttsId);if(a){let n={audioId:t.id,chapterId:a.chapterId,ttsId:a.ttsId,voice:ve().name};P(x(function*(){let a=yield*de({cacheHit:L(n)!==void 0,context:{audioId:t.id,chapterId:n.chapterId,ttsId:n.ttsId,playbackMode:`legacy`},load:z(n,`prefetch`),priority:`prefetch`});if(Ti(e,a.id,a.voice,a.duration_ms),!i)return;let o=yield*r(()=>me({documentSummary:t,audioChunk:a}));V().prewarmLoad(o,{playbackLogMetadata:{audioId:t.id,chapterId:a.chapterId,chapterTitle:Er(t,a.chapterId),ttsId:a.id,playbackMode:`legacy`}})}).pipe(fe(`legacy`,`Failed to prefetch next audio chunk`)))}return a},d=e.get(it).playbackRate,f=Xe(Math.round(d*3)+1,5,Fi),p={chapterId:n,ttsId:i};N(J(`Prefetching next ${f.toString()} chunks`));let m=yi({poolSize:V().poolSize,prefetchCount:f});for(let e=0;e<f&&p;e++)p=u(p,e<m)},Ve=e=>x(function*(){let{chapterId:t,ttsId:n,playbackMode:i,docPackChunk:o}=a.getState();if(i===`doc-pack`){if(!o)return yield*new Wr({message:`doc-pack playback with no doc-pack chunk selected`});let t=q(e,o);if(!t)return yield*new Wr({message:`doc-pack playback with no decodable doc-pack`});let n={audioId:t.audioId,chapterId:ar(t.audioId),ttsId:t.chunk.id,playbackMode:`doc-pack`,docPackChunkId:t.chunk.id};return{key:I(t),logContext:n,isCached:()=>R(t)!==void 0,fetch:ce(t,`current`),stillSelected:e=>e.playbackMode===`doc-pack`&&e.docPackChunk.id===a.getState().docPackChunk?.id,durationKey:e=>e.playbackMode===`doc-pack`?e.docPackChunk.id:e.id,resolveSrc:e=>D(e.url),playbackLogMetadata:n,target:ci(a.getState())}}if(!(t&&n))return yield*new Wr({message:`legacy playback with no chapterId or ttsId selected`});let s={audioId:e.id,chapterId:t,ttsId:n,voice:ve().name},c={audioId:e.id,chapterId:t,ttsId:n,playbackMode:`legacy`};return{key:Zn(s),logContext:c,isCached:()=>L(s)!==void 0,fetch:z(s,`current`),stillSelected:e=>e.id===a.getState().ttsId,durationKey:e=>e.id,resolveSrc:t=>r(()=>me({documentSummary:e,audioChunk:t})),playbackLogMetadata:{...c,chapterTitle:Er(e,t)},target:ci(a.getState())}}),He=(e,t)=>{if(`posMs`in t)return t.posMs===0?void 0:t.posMs/1e3;if(`wordIdxInChunk`in t){let n=e.alignment_timestamps[t.wordIdxInChunk];return n?n.start/1e3:void 0}if(e.playbackMode!==`doc-pack`)return;let n=e.docPackWordTimings.find(e=>e.page===t.docPackPage&&e.char_start<=t.docPackCharStart&&t.docPackCharStart<e.char_end);return n?n.start_ms/1e3:void 0},Ue=(t,n,r)=>x(function*(){Ii(`audio-chunk-player.load-audio-chunk`),yield*J(`Load Audio Chunk`),a.setState({isLoadingAudio:!0,isPlaybackComplete:!1});let i=yield*de({cacheHit:t.isCached(),context:t.logContext,load:t.fetch,priority:`current`});if(!t.stillSelected(i)){yield*o(`Audio chunk changed before we could fetch. Returning early`),a.setState({isLoadingAudio:!1});return}Ti(e,t.durationKey(i),i.voice,i.duration_ms);let c=yield*t.resolveSrc(i),{loadPos:l,autoPlay:d}=a.getState(),f=e.get(it),h=performance.now();if(yield*ai({player:V(),src:c,timeoutMs:kr,options:{autoplay:d,cause:r,volume:rt(f),rate:f.playbackRate,metadata:Or(n,a.getState().chapterId),playbackLogMetadata:t.playbackLogMetadata,onEnded:()=>{Ie(t.target)}},onPlaybackError:e=>{Le(t.target,e)}}),p=0,F.notePlaybackSuccess(t.key),m){let e=performance.now()-m.startedAtMs;yield*J(`Playback boundary`).pipe(H(qr({audioId:t.logContext.audioId,playbackMode:t.logContext.playbackMode,ttsId:t.logContext.ttsId,...t.logContext.docPackChunkId?{docPackChunkId:t.logContext.docPackChunkId}:{},gapMs:e,lookaheadDepth:m.lookaheadDepth}))),g(t.logContext.audioId,a.getState().stats.sessionId,$r({gapMs:e,lookaheadDepth:m.lookaheadDepth??null})),m=null}a.setState({isLoadingAudio:!1,playbackFault:null}),yield*v(`player.load() took ${(performance.now()-h).toFixed(3)}ms`).pipe(H({...t.logContext,loadPos:l,autoPlay:d,src:c.slice(0,30)}));let _=He(i,l);
1_!==void 0&&V().seek(_),!d&&a.getState().autoPlay&&P(le),a.setState({loadPos:{posMs:0}}),P(we(w(s().delayToPrefetchMs??200)).pipe(_e(O(()=>{ze(n)})),u(e=>o(`Failed to schedule chunk prefetch`).pipe(H({error:k(e)}))),C))}),We=(e,t,n)=>Ue(e,t,n).pipe(B(Pr,r=>Y(r,e).pipe(Ce(r=>r?We(e,t,n):y)))),X=(e,t)=>x(function*(){if(e.id!==a.getState().audioId){yield*o(`Loading audio chunk but audioId does not match document summary`);return}s().userLoggedIn&&(yield*r(()=>n.ensureQueryData(i.queryOptions(ht))));let c=yield*Ve(e);yield*We(c,e,t)}).pipe(u(e=>ue(e)?y:O(()=>{a.setState({isLoadingAudio:!1})}))),Ge=({error:e,positionMs:t})=>x(function*(){let n=yield*Te;if(!n){De(`Audio failed mid-chunk but audio item detail not loaded`);return}let r=yield*Ve(n);(yield*Y(e,r))&&(t>0&&a.setState({loadPos:{posMs:t}}),yield*X(n))}),Ke=({ttsId:e,loadParams:t})=>x(function*(){if(b(),yield*J(`Skip to Chunk`).pipe(H({ttsId:e,loadParams:t})),!a.getState().audioId)return yield*new Hr({message:`Skip to chunk with no loaded audio`});let n=ge();if(!n){yield*o(`Skip to chunk called but audio item detail not loaded`);return}let i=n.chapters.find(t=>t.tts_ids.includes(e));if(!i)return yield*new Ur({message:`No chapter contains TTS chunk ${e}`});if(ye(n)){let i=pi(n,e);if(i){let e=yield*r(()=>xe(n,i));if(e){V().pause(),a.setState({playbackMode:`doc-pack`,docPackChunk:e,chapterId:void 0,ttsId:void 0,loadPos:{docPackPage:i.page,docPackCharStart:i.charStart},autoPlay:t?.autoPlay??!0,isLoadingAudio:!0,isPlaybackComplete:!1}),yield*X(n);return}}yield*o(`Fresh doc-pack was available but legacy chunk could not bridge to a readable doc-pack chunk; falling back to legacy audio`).pipe(H({ttsId:e}))}V().pause(),a.setState({playbackMode:`legacy`,docPackChunk:void 0,ttsId:e,chapterId:i.id,loadPos:t?.loadPos??{posMs:0},autoPlay:t?.autoPlay??!0,isLoadingAudio:!0,isPlaybackComplete:!1}),yield*X(n)}),qe=(e,t)=>{A({_tag:`skipToChunk`,ttsId:e,loadParams:t})},Je=({anchor:e,loadParams:t})=>x(function*(){if(b(),yield*J(`Skip to doc-pack Range`).pipe(H({anchor:e,loadParams:t})),!a.getState().audioId)return yield*new Hr({message:`Skip to doc-pack range with no loaded audio`});let n=ge();if(!n){yield*o(`Skip to doc-pack range called but audio item detail not loaded`);return}let i=yield*r(()=>xe(n,e));if(!i)return yield*new Ur({message:`No readable doc-pack chunk at page ${e.page.toString()}`});V().pause(),a.setState({playbackMode:`doc-pack`,docPackChunk:i,chapterId:void 0,ttsId:void 0,loadPos:t?.loadPos??{docPackPage:e.page,docPackCharStart:e.charStart},autoPlay:t?.autoPlay??!0,isLoadingAudio:!0,isPlaybackComplete:!1}),yield*X(n)}),Ye=(e,t)=>{A({_tag:`skipToDocPackRange`,anchor:e,loadParams:t})},Ze=({audioId:e,chapterId:t,ttsId:c,loadParams:l,noteTarget:u})=>x(function*(){let d=a.getState().playbackFault!==null;b();let f=a.getState(),p=l?.autoPlay??!0,m=f.audioId===e||f.lookupAudioId===e,h=ge(),g=f.playbackMode===`legacy`&&h!==void 0&&_i(h,f.chapterId,f.ttsId);if(m&&!g&&!u){let e=V(),t=ui({shouldPlay:p,forcePlay:f.isPlaybackComplete,hasPlaybackFault:d,isPlaying:e.isPlaying,hasAudioSource:e.src.length>0||f.ttsId!==void 0||f.docPackChunk!==void 0,hasLoadedAudio:h!==void 0,hasLoadedChunk:f.ttsId!==void 0||f.docPackChunk!==void 0||f.isLoadingAudio});if(t===`no-op`)return;if(t===`play-existing-queue`){a.setState({autoPlay:!0,isLoadingAudio:!1,isPlaybackComplete:!1}),yield*le;return}}V().stop(),F.reset(),yield*J(`Load Audio`).pipe(H({audioId:e,chapterId:t,ttsId:c,loadParams:l,noteTarget:u})),a.setState({audioId:e,lookupAudioId:e,chapterId:void 0,ttsId:void 0,playbackMode:`legacy`,docPackChunk:void 0,loadPos:u?.loadParams.loadPos??l?.loadPos??{posMs:0},autoPlay:l?.autoPlay??!0,isLoadingAudio:!0,isPlaybackComplete:!1,stats:Xr(a.getState().stats)});let[_]=yield*he([U({try:()=>n.ensureQueryData(i.queryOptions(vt(e))),catch:t=>new wt({audioId:e,cause:t})}),r(()=>s().awaitEntitlementReady?.()??Promise.resolve())],{concurrency:2}),y=_.id;if(y!==e&&(yield*v(`Normalized store audioId to canonical UUID`).pi
1pe(H({lookupId:e,canonicalId:y})),a.setState({audioId:y}),n.setQueryData(vt(y).queryKey,_)),!Tt(_)){yield*o(`Audio detail is not ready for streaming`).pipe(H({audioId:_.id,conversionStatus:_.conversion_status})),a.setState({isLoadingAudio:!1,autoPlay:!1,isPlaybackComplete:!1});return}let x=_,S=u?.audioConversionId===y?u:void 0;u&&!S&&(yield*o(`Note belongs to another document; loading saved progress instead`).pipe(H({audioId:y,noteAudioId:u.audioConversionId})));let{chapterId:C,ttsId:w,loadParams:T}=S?ni(S):u?di(x.progress):{chapterId:t,ttsId:c,loadParams:l},ee=x.chapters.find(e=>C?e.id===C:w!==void 0&&e.tts_ids.includes(w));if(ye(x)){let e=T?.docPackFrom??fi(x,C)??pi(x,w),t=yield*r(()=>xe(x,e));if(t){a.setState({playbackMode:`doc-pack`,chapterId:void 0,ttsId:void 0,docPackChunk:t,loadPos:e?{docPackPage:e.page,docPackCharStart:e.charStart}:T?.loadPos??{posMs:0}}),yield*X(x);return}yield*o(`Fresh doc-pack was available but no readable doc-pack chunk was found; falling back to legacy audio`)}C&&!ee?yield*o(`Saved chapter progress is stale; falling back to first playable chunk`).pipe(H({chapterId:C,audioId:x.id})):w&&!ee?.tts_ids.includes(w)&&(yield*o(`Saved TTS progress is stale; falling back to first playable chunk`).pipe(H({chapterId:C,ttsId:w,audioId:x.id})));let E=hi(x,C,w);if(!E)return yield*new Ur({message:`Document ${x.id} has no playable TTS chunk`});a.setState({playbackMode:`legacy`,docPackChunk:void 0,chapterId:E.chapterId,ttsId:E.ttsId,loadPos:gi(E,C,w)?{posMs:0}:T?.loadPos??{posMs:0}}),yield*X(x)}),tt=e=>{switch(e._tag){case`loadAudio`:return Ze(e);case`skipToChunk`:return Ke(e);case`skipToDocPackRange`:return Je(e);case`reloadChunk`:return st();case`recoverPlaybackFailure`:return Ge(e);case`advanceToNextChunk`:return Pe(e)}},nt=(e,t,n,r)=>{A({_tag:`loadAudio`,audioId:e,chapterId:t,ttsId:n,loadParams:r})},st=()=>x(function*(){b(),yield*J(`Reload Chunk`);
1let e=ge();if(!e){yield*o(`Reload chunk called but document summary not loaded`);return}let{playbackMode:t,docPackChunk:n}=a.getState();if(V().pause(),t===`doc-pack`){if(!n){yield*o(`Reload doc-pack chunk called but no doc-pack chunk loaded`);return}let t=q(e,n),i=Pi(t?R(t):void 0,V().getPositionMs())??{page:Qe(n.ranges[0])[0],charStart:Qe(n.ranges[0])[1]},s=yield*r(()=>xe(e,i));if(!s){yield*o(`Reload doc-pack chunk found no readable chunk from current anchor`).pipe(H({currentAnchor:i})),a.setState({isLoadingAudio:!1});return}a.setState({playbackMode:`doc-pack`,docPackChunk:s,chapterId:void 0,ttsId:void 0,loadPos:{docPackPage:i.page,docPackCharStart:i.charStart},autoPlay:!0,isLoadingAudio:!0,isPlaybackComplete:!1}),yield*X(e);return}a.setState({loadPos:{posMs:V().getPositionMs()},autoPlay:!0,isPlaybackComplete:!1}),yield*X(e)}),ct=()=>{A({_tag:`reloadChunk`})},lt=()=>{a.setState({autoPlay:!1}),V().pause()},ut=()=>{if(a.setState({autoPlay:!0,isPlaybackComplete:!1}),a.getState().playbackFault!==null){A({_tag:`reloadChunk`});return}a.getState().isLoadingAudio||t.runFork(le.pipe(H(Li)))};return{commandAtom:l,automatedCommandAtom:d,actions:{pause:lt,play:ut,togglePlayPause:()=>{if(a.getState().playbackFault===null&&V().isPlaying){lt();return}ut()},loadAudio:nt,unloadAudio:()=>{e.set(l,Be),e.set(d,Be),j=null,b(),N(J(`Unload Audio`)),V().stop(),a.setState({...oi,stats:Xr(a.getState().stats)})},skipToChunk:qe,skipToDocPackRange:Ye,reloadChunk:ct,skipToChapterStart:(e,t)=>{let n=ge();if(!n){N(o(`No document summary to skip to chapter start`));return}let r=n.chapters.find(t=>t.id===e);if(!r){N(o(`Chapter not found`).pipe(H({chapterId:e})));return}if(ye(n)){let e=fi(n,r.id);if(e){Ye(e,t);return}}let i=mi(n,r.id);if(!i){N(o(`No playable audio chunk found at or after chapter`).pipe(H({chapterId:e})));return}qe(i.ttsId,t)},loadAudioFromProgress:e=>{N(J(`Loading audio with progress`).pipe(H({audioId:e.id,title:e.title,progress:e.progress})));let{chapterId:t,ttsId:n,loadParams:r}=di(e.progress);nt(e.id,t,n,r)},loadAudioAtNote:(e,t)=>{A({_tag:`loadAudio`,audioId:e,noteTarget:t})}}}};Object.freeze({volume:1,muted:!1,rate:1,duration:0,src:``,error:null,poolSize:2,poolCount:0,seekCount:0,isLoading:!1,isReady:!1,isError:!1,isPlaying:!1,isPaused:!0});var Hi=e(n(),1),Ui=(0,Z.createContext)(null);function Wi(){let e=(0,Z.use)(Ui);if(!e)throw Error(`useAudioPoolPlayerContext must be used within an AudioPoolPlayer provider`);return e}var Gi=(0,Z.createContext)(null);function Ki(){let e=(0,Z.use)(Gi);if(!e)throw Error(`useAudioPoolPlayerMethods must be used within an AudioPoolPlayer provider`);return e}var qi=(0,Z.createContext)(null),Ji=Fe({});function Yi({children:e,initialAudioId:t,initialLookupAudioId:n,userLoggedIn:r,docPackEnabled:i=!0,docPackPageFetchMode:a=`auto`,resolveAudioChunkSrc:o,readPersistedChunk:s,downloadedVoicesAtom:c=Ji,delayToPrefetchMs:l,isPremiumUser:u,awaitEntitlementReady:d}){let f=(0,Z.use)(Me),p=Ae(),m=qe(),h=Ke(),g={player:Wi(),userLoggedIn:r,docPackEnabled:i,docPackPageFetchMode:a,resolveAudioChunkSrc:o,readPersistedChunk:s,downloadedVoicesAtom:c,delayToPrefetchMs:l,isPremiumUser:u,awaitEntitlementReady:d},_=(0,Z.useRef)(g);_.current=g;let v=(0,Z.useRef)(null);v.current??=si({registry:f,initialAudioId:t,initialLookupAudioId:n});let y=v.current,b=(0,Z.useRef)(null);b.current??=Vi({registry:f,runtime:h,queryClient:p,eq:m,store:y,read:()=>_.current});let x=b.current,S=(0,Z.useRef)(null);S.current??=[f.mount(x.commandAtom),f.mount(x.automatedCommandAtom)],(0,Z.useEffect)(()=>{let e=[f.mount(x.commandAtom),f.mount(x.automatedCommandAtom)],t=S.current;if(S.current=null,t)for(let e of t)e();return()=>{for(let t of e)t()}},[f,x]),gt({enabled:r}),tt(),St(Y(y.atom,e=>e.audioId));let C=Bi(u),w=(0,Z.useMemo)(()=>({store:y,storeActions:x.actions,commandResult:x.commandAtom,userLoggedIn:r,docPackEnabled:i,docPackPageFetchMode:a,downloadedVoicesAtom:c,isPremiumUser:C}),[y,x,r,i,a,c,C]);return(0,Hi.jsx)(qi,{value:w,children:e})}function Xi(){let e=(0,_t.c)(2),{store:t}=Ge(qi),n=St(Y(t.atom,Zi)),r;return e[0]===n?r=e[1]:(r={documentSummary:n.data,audioDetailQuery:n},e[0]=n,e[1]=r),r}function Zi(e){return e.audioId}var Qi=()=>{let e=(0,_t.c)(24),{userLoggedIn:t,downloadedVoicesAtom:n,isPremiumUser:r}=Ge(qi),i=pt(),a;e[0]===t?a=e[1]:(a={enabled:t},e[0]=t,e[1]=a);let o=gt(a),s=Xi().audioDetailQuery.data,c=s?.id,l;e[2]===c?l=e[3]:(l=e=>c===void 0?void 0:e[c],e[2]=c,e[3]=l);let u=Y(n,l),d;e[4]===t?d=e[5]:(d={enabled:t},e[4]=t,e[5]=d);let f=mt(d),p=r??f.data?.metering.is_active_subscription===!0,m=tt(),h;e[6]===m.data?h=e[7]:(h=m.data??[],e[6]=m.data,e[7]=h);let g=h,_=i.isPending&&i.variables.voice?i.variables.voice:o.data?.voice,v;e[8]!==s?.language||e[9]!==u||e[10]!==p||e[11]!==g?(v=e=>et({audioItemLang:s?.language,audioPreferredVoiceName:u,preferredVoiceName:e,isPremiumUser:p,voiceOptionsAll:g}),e[8]=s?.language,e[9]=u,e[10]=p,e[11]=g,e[12]=v):v=e[12];let y=v,b;e[13]!==_||e[14]!==y?(b=y(_),e[13]=_,e[14]=y,e[15]=b):b=e[15];let x=b,S=o.data?.voice,C;e[16]!==y||e[17]!==S?(C=y(S),e[16]=y,e[17]=S,e[18]=C):C=e[18];let w=C,T;return e[19]!==w||e[20]!==x||e[21]!==i||e[22]!==o?(T={userPreferencesQuery:o,currentVoice:x,committedVoice:w,prefsMutation:i},e[19]=w,e[20]=x,e[21]=i,e[22]=o,e[23]=T):T=e[23],T};function $i(){let e=(0,_t.c)(10),{store:t,docPackEnabled:n}=Ge(qi),{committedVoice:r}=Qi(),{documentSummary:i}=Xi(),a=i?.doc_pack,o;e[0]!==r||e[1]!==a||e[2]!==n?(o=e=>e.playbackMode===`doc-pack`?e.audioId&&e.docPackChunk&&a&&n&&Jn(a)?Qn({audio
1Id:e.audioId,docPackVersion:a.content_version,chunkId:e.docPackChunk.id,voice:r.name}):void 0:e.audioId&&e.chapterId&&e.ttsId?Zn({chapterId:e.chapterId,ttsId:e.ttsId,voice:r.name}):void 0,e[0]=r,e[1]=a,e[2]=n,e[3]=o):o=e[3];let s=Y(t.atom,o),c=Y(t.atom,ea),l;e[4]===s?l=e[5]:(l=e=>s?tr(e,s):void 0,e[4]=s,e[5]=l);let u=Y(er,l),d=u===void 0&&c===null,f=u===void 0&&c!==null,p;return e[6]!==u||e[7]!==d||e[8]!==f?(p={data:u,isPending:d,isError:f},e[6]=u,e[7]=d,e[8]=f,e[9]=p):p=e[9],p}function ea(e){return e.playbackFault}function ta(e,t){return na(e)?e:na(t)?t:0}function na(e){return e!==void 0&&Number.isFinite(e)&&e>0}var ra=()=>{let e=(0,_t.c)(16),{store:t,storeActions:n}=Ge(qi),r=Wi(),i=$i(),a=i.isError,o=Y(t.atom,sa),s=Y(t.atom,ca),c=Y(t.atom,la),l=!!((o??s)&&!r.isPlaying&&(c||i.isPending||r.isLoading)),u;return e[0]!==a||e[1]!==l||e[2]!==r||e[3]!==t||e[4]!==n.loadAudio||e[5]!==n.loadAudioAtNote||e[6]!==n.loadAudioFromProgress||e[7]!==n.pause||e[8]!==n.play||e[9]!==n.reloadChunk||e[10]!==n.skipToChapterStart||e[11]!==n.skipToChunk||e[12]!==n.skipToDocPackRange||e[13]!==n.togglePlayPause||e[14]!==n.unloadAudio?(u={store:t,isErrored:a,isLoadingAudio:l,player:r,pause:n.pause,play:n.play,togglePlayPause:n.togglePlayPause,loadAudio:n.loadAudio,loadAudioFromProgress:n.loadAudioFromProgress,loadAudioAtNote:n.loadAudioAtNote,unloadAudio:n.unloadAudio,skipToChapterStart:n.skipToChapterStart,skipToChunk:n.skipToChunk,skipToDocPackRange:n.skipToDocPackRange,reloadChunk:n.reloadChunk},e[0]=a,e[1]=l,e[2]=r,e[3]=t,e[4]=n.loadAudio,e[5]=n.loadAudioAtNote,e[6]=n.loadAudioFromProgress,e[7]=n.pause,e[8]=n.play,e[9]=n.reloadChunk,e[10]=n.skipToChapterStart,e[11]=n.skipToChunk,e[12]=n.skipToDocPackRange,e[13]=n.togglePlayPause,e[14]=n.unloadAudio,e[15]=u):u=e[15],u};function ia(e){let{store:t}=Ge(qi);return Y(t.atom,e)}function aa(){let{storeActions:e}=Ge(qi);return e}var oa=()=>{let e=(0,_t.c)(85),t=Wi(),{store:n,storeActions:r,docPackEnabled:i,docPackPageFetchMode:a}=Ge(qi),s=Ae(),c=qe(),l=Ke(),{documentSummary:u}=Xi(),d=Y(n.atom,ua),f=Y(n.atom,da),p=Y(n.atom,fa),m=Y(n.atom,pa),h=Ei(ma),g=vr(u?.id),_=u?.doc_pack,y;e[0]!==_?.url||e[1]!==u?.id||e[2]!==c?(y=c.queryOptions(Pn(u?.id??``,_?.url??``)),e[0]=_?.url,e[1]=u?.id,e[2]=c,e[3]=y):y=e[3];let b;
1e[4]!==_||e[5]!==i||e[6]!==u||e[7]!==p?(b=p===`doc-pack`&&u!==void 0&&i&&Jn(_),e[4]=_,e[5]=i,e[6]=u,e[7]=p,e[8]=b):b=e[8];let x;e[9]!==y||e[10]!==b?(x={...y,enabled:b},e[9]=y,e[10]=b,e[11]=x):x=e[11];let S=De(x),C=S.data?.catalog,w=m?.ranges[0],T=u?.id??``,ee=S.data?.url??``,E=w?.[0]??0,D;e[12]!==T||e[13]!==ee||e[14]!==E?(D=[`doc-pack-current-page`,T,ee,E],e[12]=T,e[13]=ee,e[14]=E,e[15]=D):D=e[15];let O=D,k;e[16]!==w||e[17]!==S.data||e[18]!==a||e[19]!==u?.id||e[20]!==c||e[21]!==s?(k=()=>{if(!S.data||!w)throw Error(`doc-pack current page query disabled without pack/page`);return s.ensureQueryData(c.queryOptions(Hn(u?.id??``,S.data,w[0],{fetchMode:a})))},e[16]=w,e[17]=S.data,e[18]=a,e[19]=u?.id,e[20]=c,e[21]=s,e[22]=k):k=e[22];let A=p===`doc-pack`&&i&&S.data!==void 0&&w!==void 0&&u!==void 0,j;e[23]!==O||e[24]!==k||e[25]!==A?(j={queryKey:O,queryFn:k,enabled:A},e[23]=O,e[24]=k,e[25]=A,e[26]=j):j=e[26];let te=De(j),ne=Qi().committedVoice.name,re;e[27]!==u||e[28]!==h||e[29]!==ne?(re=u?u.chapters.reduce((e,t,n)=>{let r=n===0?0:e.flat().at(-1)??0,i=t.tts_ids.reduce((e,n,i)=>{let a=i===0?r:e.at(-1)??0,o=ta(h(n,ne),t.avg_estimated_tts_chunk_duration_ms);return[...e,a+o]},[]);return[...e,i]},[]):[],e[27]=u,e[28]=h,e[29]=ne,e[30]=re):re=e[30];let M=re,ie;e[31]!==C||e[32]!==S.data||e[33]!==g||e[34]!==a||e[35]!==u?.chapters||e[36]!==u?.id||e[37]!==M||e[38]!==c||e[39]!==p||e[40]!==t||e[41]!==s||e[42]!==l||e[43]!==r||e[44]!==d?(ie=e=>{if(p===`doc-pack`&&C&&S.data){let t=An(C,e,g);if(!t)return;(async()=>{let n=async()=>kn(await s.ensureQueryData(c.queryOptions(Hn(u?.id??``,S.data,t.page,{fetchMode:a}))),t.readableCharOffset,g),i;try{i=await n().catch(e=>(l.runFork(o(`doc-pack seek page load failed; retrying once`).pipe(H({error:e,page:t.page}))),n()))}catch(e){let n=e;l.runFork(o(`doc-pack seek page load failed twice; falling back to page start`).pipe(H({error:n,page:t.page}))),i={page:t.page,charStart:0}}i&&(l.runFork(v(`Seeking to doc-pack document position`).pipe(H({anchor:i,value:e}))),r.skipToDocPackRange(i))})();return}let n=M.findIndex(t=>(t.at(-1)??0)>=e);if(n===-1)return;let i=M[n]??[0],f=i.findIndex(t=>t>=e);if(f===-1)return;let m=Qe(u?.chapters[n]?.tts_ids[f]),h=f-1,_=(M[n-1]??[0]).at(-1)??0,y=e-(h===-1?_:i[h]??0);d===m?(l.runFork(v(`Seeking within same chunk ${Ze(y/1e3)}`)),t.seek(y/1e3)):(l.runFork(v(`Seeking to different chunk`).pipe(H({chapterIdx:n,ttsIdx:f,offsetIntoTtsChunk:y}))),r.skipToChunk(m,{loadPos:{posMs:y}}))},e[31]=C,e[32]=S.data,e[33]=g,e[34]=a,e[35]=u?.chapters,e[36]=u?.id,e[37]=M,e[38]=c,e[39]=p,e[40]=t,e[41]=s,e[42]=l,e[43]=r,e[44]=d,e[45]=ie):ie=e[45],u?.chapters,u?.id;let N=ie,P;e[46]===M?P=e[47]:(P=(M.at(-1)??[0]).at(-1)??0,e[46]=M,e[47]=P);let F=P,ae;e[48]!==C||e[49]!==g?(ae=C?wn(C,g):0,e[48]=C,e[49]=g,e[50]=ae):ae=e[50];let I=p===`doc-pack`&&C?ae:F,L;bb0:{if(!u||!f){L=void 0;break bb0}let t;if(e[51]!==f||e[52]!==u.chapters){let n;e[54]===f?n=e[55]:(n=e=>e.id===f,e[54]=f,e[55]=n),t=u.chapters.findIndex(n),e[51]=f,e[52]=u.chapters,e[53]=t}else t=e[53];let n=t;L=n===-1?void 0:n}let R=L,oe;bb1:{if(!u||!d||R===void 0){oe=void 0;break bb1}let t;e[56]!==R||e[57]!==u.chapters||e[58]!==d?(t=Qe(u.chapters[R]).tts_ids.indexOf(d),e[56]=R,e[57]=u.chapters,e[58]=d,e[59]=t):t=e[59];let n=t;oe=n===-1?void 0:n}let z=oe,se;
1e[60]!==R||e[61]!==M?(se=R===void 0?[]:Qe(M[R]),e[60]=R,e[61]=M,e[62]=se):se=e[62];let ce=se,B;e[63]!==R||e[64]!==M?(B=R===void 0?[]:M[R-1]??[],e[63]=R,e[64]=M,e[65]=B):B=e[65];let V=B,le;e[66]!==ce||e[67]!==z||e[68]!==V?(le=z===void 0?0:z===0?V.at(-1)??0:ce[z-1]??0,e[66]=ce,e[67]=z,e[68]=V,e[69]=le):le=e[69];let ue=le,U;e[70]!==w||e[71]!==te||e[72]!==C||e[73]!==g?(U=C&&w?te.data?Dn(C,te.data,{page:w[0],charStart:w[1]},g):En(C,{page:w[0],charStart:w[1]},g):0,e[70]=w,e[71]=te,e[72]=C,e[73]=g,e[74]=U):U=e[74];let W=p===`doc-pack`&&C?U:ue,de;e[75]!==W||e[76]!==t||e[77]!==N?(de=e=>{let n=W+t.getPositionMs();N(n+e)},e[75]=W,e[76]=t,e[77]=N,e[78]=de):de=e[78];let fe=de,pe;return e[79]!==W||e[80]!==M||e[81]!==I||e[82]!==fe||e[83]!==N?(pe={seekRelative:fe,seekToMsInDoc:N,currentChunkStartMsInDoc:W,estimatedTotalAudioDuration:I,durationsPrefixSums:M},e[79]=W,e[80]=M,e[81]=I,e[82]=fe,e[83]=N,e[84]=pe):pe=e[84],pe};function sa(e){return e.ttsId}function ca(e){return e.docPackChunk}function la(e){return e.isLoadingAudio}function ua(e){return e.ttsId}function da(e){return e.chapterId}function fa(e){return e.playbackMode}function pa(e){return e.docPackChunk}function ma(e){return e.getMs}export{Lt as A,Vn as C,yn as D,Xn as E,xt as M,yt as N,Cn as O,St as P,Fn as S,Un as T,ri as _,Yi as a,Pn as b,Qi as c,Wi as d,Ki as f,ti as g,ii as h,ia as i,vt as j,dn as k,Ui as l,Pi as m,ra as n,$i as o,Ni as p,oa as r,Xi as s,aa as t,Gi as u,vr as v,Jn as w,Hn as x,Mn as y};
2//# sourceMappingURL=hooks-DNxLTXBX.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.