"use strict";(self.webpackChunksubstack=self.webpackChunksubstack||[]).push([["7337"],{69241:function(e,t,r){r.d(t,{J$:()=>l,JG:()=>u.JG,MA:()=>u.MA,ZP:()=>o,kY:()=>u.kY});var n=r(98661),i=r(61688),u=r(76750);let a=n.default.use||(e=>{if("pending"===e.status)throw e;if("fulfilled"===e.status)return e.value;if("rejected"===e.status)throw e.reason;throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}),s={dedupe:!0},l=u.$l.defineProperty(u.J$,"defaultValue",{value:u.u_}),o=(0,u.s6)((e,t,r)=>{let{cache:l,compare:o,suspense:d,fallbackData:c,revalidateOnMount:f,revalidateIfStale:g,refreshInterval:E,refreshWhenHidden:V,refreshWhenOffline:R,keepPreviousData:k}=r,[T,L,h,w]=u.DY.get(l),[b,_]=(0,u.qC)(e),p=(0,n.useRef)(!1),C=(0,n.useRef)(!1),m=(0,n.useRef)(b),v=(0,n.useRef)(t),N=(0,n.useRef)(r),O=()=>N.current,j=()=>O().isVisible()&&O().isOnline(),[y,A,D,I]=(0,u.JN)(l,b),P=(0,n.useRef)({}).current,S=(0,u.o8)(c)?r.fallback[b]:c,J=(e,t)=>{for(let r in P)if("data"===r){if(!o(e[r],t[r])&&(!(0,u.o8)(e[r])||!o(x,t[r])))return!1}else if(t[r]!==e[r])return!1;return!0},M=(0,n.useMemo)(()=>{let e=!!b&&!!t&&((0,u.o8)(f)?!O().isPaused()&&!d&&(!!(0,u.o8)(g)||g):f),r=t=>{let r=(0,u.PM)(t);return(delete r._k,e)?{isValidating:!0,isLoading:!0,...r}:r},n=y(),i=I(),a=r(n),s=n===i?a:r(i),l=a;return[()=>{let e=r(y());return J(e,l)?(l.data=e.data,l.isLoading=e.isLoading,l.isValidating=e.isValidating,l.error=e.error,l):(l=e,e)},()=>s]},[l,b]),F=(0,i.useSyncExternalStore)((0,n.useCallback)(e=>D(b,(t,r)=>{J(r,t)||e()}),[l,b]),M[0],M[1]),Y=!p.current,$=T[b]&&T[b].length>0,q=F.data,G=(0,u.o8)(q)?S:q,U=F.error,W=(0,n.useRef)(G),x=k?(0,u.o8)(q)?W.current:q:G,B=(!$||!!(0,u.o8)(U))&&(Y&&!(0,u.o8)(f)?f:!O().isPaused()&&(d?!(0,u.o8)(G)&&g:(0,u.o8)(G)||g)),Z=!!(b&&t&&Y&&B),z=(0,u.o8)(F.isValidating)?Z:F.isValidating,H=(0,u.o8)(F.isLoading)?Z:F.isLoading,K=(0,n.useCallback)(async e=>{let t,n;let i=v.current;if(!b||!i||C.current||O().isPaused())return!1;let a=!0,s=e||{},l=!h[b]||!s.dedupe,d=()=>u.w6?!C.current&&b===m.current&&p.current:b===m.current,c={isValidating:!1,isLoading:!1},f=()=>{A(c)},g=()=>{let e=h[b];e&&e[1]===n&&delete h[b]},E={isValidating:!0};(0,u.o8)(y().data)&&(E.isLoading=!0);try{if(l&&(A(E),r.loadingTimeout&&(0,u.o8)(y().data)&&setTimeout(()=>{a&&d()&&O().onLoadingSlow(b,r)},r.loadingTimeout),h[b]=[i(_),(0,u.u3)()]),[t,n]=h[b],t=await t,l&&setTimeout(g,r.dedupingInterval),!h[b]||h[b][1]!==n)return l&&d()&&O().onDiscarded(b),!1;c.error=u.i_;let e=L[b];if(!(0,u.o8)(e)&&(n<=e[0]||n<=e[1]||0===e[1]))return f(),l&&d()&&O().onDiscarded(b),!1;let s=y().data;c.data=o(s,t)?s:t,l&&d()&&O().onSuccess(t,b,r)}catch(r){g();let e=O(),{shouldRetryOnError:t}=e;!e.isPaused()&&(c.error=r,l&&d()&&(e.onError(r,b,e),(!0===t||(0,u.mf)(t)&&t(r))&&j()&&e.onErrorRetry(r,b,e,e=>{let t=T[b];t&&t[0]&&t[0](u.sj.ERROR_REVALIDATE_EVENT,e)},{retryCount:(s.retryCount||0)+1,dedupe:!0})))}return a=!1,f(),!0},[b,l]),Q=(0,n.useCallback)((...e)=>(0,u.BN)(l,m.current,...e),[]);if((0,u.LI)(()=>{v.current=t,N.current=r,(0,u.o8)(q)||(W.current=q)}),(0,u.LI)(()=>{if(!b)return;let e=K.bind(u.i_,s),t=0,r=(0,u.ko)(b,T,(r,n={})=>{if(r==u.sj.FOCUS_EVENT){let r=Date.now();O().revalidateOnFocus&&r>t&&j()&&(t=r+O().focusThrottleInterval,e())}else if(r==u.sj.RECONNECT_EVENT)O().revalidateOnReconnect&&j()&&e();else if(r==u.sj.MUTATE_EVENT)return K();else if(r==u.sj.ERROR_REVALIDATE_EVENT)return K(n)});return C.current=!1,m.current=b,p.current=!0,A({_k:_}),B&&((0,u.o8)(G)||u.W6?e():(0,u.kw)(e)),()=>{C.current=!0,r()}},[b]),(0,u.LI)(()=>{let e;function t(){let t=(0,u.mf)(E)?E(y().data):E;t&&-1!==e&&(e=setTimeout(r,t))}function r(){!y().error&&(V||O().isVisible())&&(R||O().isOnline())?K(s).then(t):t()}return t(),()=>{e&&(clearTimeout(e),e=-1)}},[E,V,R,b]),(0,n.useDebugValue)(x),d&&(0,u.o8)(G)&&b){if(!u.w6&&u.W6)throw Error("Fallback data is required when using suspense in SSR.");v.current=t,N.current=r,C.current=!1;let e=w[b];if((0,u.o8)(e)||a(Q(e)),(0,u.o8)(U)){let e=K(s);(0,u.o8)(x)||(e.status="fulfilled",e.value=!0),a(e)}else throw U}return{mutate:Q,get data(){return P.data=!0,x},get error(){return P.error=!0,U},get isValidating(){return P.isValidating=!0,z},get isLoading(){return P.isLoading=!0,H}}})}}]);