@sanity/react-loader
Advanced tools
Comparing version 0.1.4-pink-lizard to 0.1.6-pink-lizard
# Changelog | ||
## [0.1.6-pink-lizard](https://github.com/sanity-io/visual-editing/compare/react-loader-v0.1.5-pink-lizard...react-loader-v0.1.6-pink-lizard) (2023-10-23) | ||
### Bug Fixes | ||
* add typings for `options` ([88e27e4](https://github.com/sanity-io/visual-editing/commit/88e27e47edc07cd08a1f1d8740ce035b687d2b1e)) | ||
* remove debug console loggers ([84f4b1d](https://github.com/sanity-io/visual-editing/commit/84f4b1d06196161e94aa2333fbf5f9cbef0cc51c)) | ||
* resolve keyed array paths correctly ([4a83fe6](https://github.com/sanity-io/visual-editing/commit/4a83fe60845f2d6bbafd3c0f877bede5050368e4)) | ||
## [0.1.5-pink-lizard](https://github.com/sanity-io/visual-editing/compare/react-loader-v0.1.4-pink-lizard...react-loader-v0.1.5-pink-lizard) (2023-10-23) | ||
### Bug Fixes | ||
* add support for `initialData` and `initialSourceMap` ([808dc00](https://github.com/sanity-io/visual-editing/commit/808dc00be44b57560fe1abea1d858375296ad5dd)) | ||
## [0.1.4-pink-lizard](https://github.com/sanity-io/visual-editing/compare/react-loader-v0.1.3-pink-lizard...react-loader-v0.1.4-pink-lizard) (2023-10-23) | ||
@@ -4,0 +20,0 @@ |
@@ -10,2 +10,3 @@ import type { ContentSourceMap } from '@sanity/client' | ||
params?: any, | ||
options?: UseQueryOptions<Response_1> | undefined, | ||
) => { | ||
@@ -30,2 +31,3 @@ data?: Response_1 | undefined | ||
params?: QueryParams, | ||
options?: UseQueryOptions<Response>, | ||
) => { | ||
@@ -38,4 +40,9 @@ data?: Response | ||
export declare interface UseQueryOptions<Response> { | ||
initialData?: Response | ||
initialSourceMap?: ContentSourceMap | ||
} | ||
export * from '@sanity/core-loader' | ||
export {} |
@@ -1,1 +0,1 @@ | ||
import{useMemo as e,useState as t,useEffect as n,useSyncExternalStore as r,useCallback as o}from"react";let s=0,a=[],c=Symbol("clean"),i=[],l=(e,t)=>{let n=[],r={get:()=>(r.lc||r.listen((()=>{}))(),r.value),l:t||0,lc:0,listen:(e,t)=>(r.lc=n.push(e,t||r.l)/2,()=>{let t=n.indexOf(e);~t&&(n.splice(t,2),--r.lc||r.off())}),notify(e){let t=!i.length;for(let t=0;t<n.length;t+=2)i.push(n[t],n[t+1],r.value,e);if(t){for(let e=0;e<i.length;e+=4){let t;for(let n=e+1;!t&&(n+=4)<i.length;)i[n]<i[e+1]&&(t=i.push(i[e],i[e+1],i[e+2],i[e+3]));t||i[e](i[e+2],i[e+3])}i.length=0}},off(){},set(e){r.value!==e&&(r.value=e,r.notify())},subscribe(e,t){let n=r.listen(e,t);return e(r.value),n},value:e};return"production"!==process.env.NODE_ENV&&(r[c]=()=>{n=[],r.lc=0,r.off()}),r},u=(e,t,n,r)=>(e.events=e.events||{},e.events[n+10]||(e.events[n+10]=r((t=>{e.events[n].reduceRight(((e,t)=>(t(e),e)),{shared:{},...t})}))),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let r=e.events[n],o=r.indexOf(t);r.splice(o,1),r.length||(delete e.events[n],e.events[n+10](),delete e.events[n+10])}),d=(e,t)=>u(e,t,0,(t=>{let n=e.listen;return e.listen=r=>(e.lc||e.starting||(e.starting=!0,t(),delete e.starting),n(r)),()=>{e.listen=n}})),f=(e,t)=>u(e,t,1,(t=>{let n=e.off;return e.off=()=>{t(),n()},()=>{e.off=n}})),h=(e,t)=>u(e,(n=>{let r=t(n);r&&e.events[6].push(r)}),5,(t=>{let n=e.listen;e.listen=(...r)=>(e.lc||e.active||(e.active=!0,t()),n(...r));let r=e.off;if(e.events[6]=[],e.off=()=>{r(),setTimeout((()=>{if(e.active&&!e.lc){e.active=!1;for(let t of e.events[6])t();e.events[6]=[]}}),1e3)},"production"!==process.env.NODE_ENV){let t=e[c];e[c]=()=>{for(let t of e.events[6])t();e.events[6]=[],e.active=!1,t()}}return()=>{e.listen=n,e.off=r}})),p=(e={})=>{let t=l(e);return t.setKey=function(e,n){void 0===n?e in t.value&&(t.value={...t.value},delete t.value[e],t.notify(e)):t.value[e]!==n&&(t.value={...t.value,[e]:n},t.notify(e))},t},v=()=>({events:{},emit(e,...t){let n=this.events[e]||[];for(let e=0,r=n.length;e<r;e++)n[e](...t)},on(e,t){return this.events[e]?.push(t)||(this.events[e]=[t]),()=>{this.events[e]=this.events[e]?.filter((e=>t!==e))}}});function y(e){return"string"==typeof e||"number"==typeof e}const g=e=>{if(y(e))return[l([""+e,[e]]),()=>{}];let t=l(null),n=[];const r=()=>{n.some((e=>null==e))?t.set(null):t.set([n.join(""),n])},o=[];for(let t=0;t<e.length;t++){const s=e[t];y(s)?n.push(s):o.push(s.subscribe((e=>{n[t]=e,r()})))}return r(),[t,()=>o.forEach((e=>e()))]},m=1,w=2,b=3,E=4,M=(e,t)=>{"undefined"==typeof window||addEventListener(e,t)},S=(e,t)=>Array.isArray(t)?t.includes(e):"function"==typeof t?t(e):e===t,O=()=>(new Date).getTime(),k={loading:!0},K={loading:!1};let N;const I=new Uint8Array(16);function D(){if(!N&&(N="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!N))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return N(I)}const U=[];for(let e=0;e<256;++e)U.push((e+256).toString(16).slice(1));var j={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function L(e,t,n){if(j.randomUUID&&!t&&!e)return j.randomUUID();const r=(e=e||{}).random||(e.rng||D)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return U[e[t+0]]+U[e[t+1]]+U[e[t+2]]+U[e[t+3]]+"-"+U[e[t+4]]+U[e[t+5]]+"-"+U[e[t+6]]+U[e[t+7]]+"-"+U[e[t+8]]+U[e[t+9]]+"-"+U[e[t+10]]+U[e[t+11]]+U[e[t+12]]+U[e[t+13]]+U[e[t+14]]+U[e[t+15]]}(r)}const q=["channel/disconnect","channel/response","handshake/syn","handshake/syn-ack","handshake/ack"],A=e=>q.some((t=>t===e));function _(e){const{connections:t,handler:n}=e,r=e.id||L(),o=window.self!==window.top,s=[],a=[];function c(e){return function(t){return t.id===e.id&&t.target===e.target}}function i(t,n=!0){const r=s.findIndex(c(t));n&&r<0?(s.push(t),e.onConnect?.(t),function(){const e=[...a];a.splice(0,a.length),e.forEach((({connection:e,type:t,data:n})=>{l(e,t,n)}))}()):!n&&r&&(s.splice(r,1),e.onDisconnect?.(t))}function l(e,t,n){const o={id:L(),type:t,from:r,to:e.id,data:n},i=A(t),l=s.find(c(e));if(i||l){const t=i?"*":e.targetOrigin;try{return e.target.postMessage(o,{targetOrigin:t})}catch(t){console.error("Failed to postMessage",t,{msg:o,connection:e})}}var u;u={connection:e,type:t,data:n},a.push(u)}function u(e,t,n){return e.forEach((e=>{l(e,t,n)}))}function d(e){const o=function(e){const{source:n,origin:o,data:s}=e;if(a=s,Boolean(a)&&"object"==typeof a&&!Array.isArray(a))return t.find((e=>s.to===r&&e.id===s.from&&e.target===n&&(e.targetOrigin===o||"*"===e.targetOrigin)));var a}(e);if(!o)return;const{data:s}=e;if(u=s.type,A(u)&&u.startsWith("handshake/"))a=o,"handshake/syn"===(c=e).data.type&&l(a,"handshake/syn-ack"),"handshake/syn-ack"===c.data.type&&(i(a,!0),l(a,"handshake/ack")),"handshake/ack"===c.data.type&&i(a,!0);else if("channel/disconnect"===s.type)i(o,!1);else if("channel/response"===s.type);else{const e=[s.type,s.data];n(...e),l(o,"channel/response")}var a,c,u}return window.addEventListener("message",d,!1),u(t,"handshake/syn"),{disconnect:function(){window.removeEventListener("message",d,!1),s.length&&(u(s,"channel/disconnect"),s.forEach((e=>{i(e,!1)})))},inFrame:o,send:function(e,n){return new Promise((r=>{const o=e=>{const{data:t}=e;"channel/response"===t.type&&(window.removeEventListener("message",o,!1),r())};window.addEventListener("message",o,!1),u(t,e,n)}))}}}function J(e,t){return`${e}-${"string"==typeof t?t:JSON.stringify(t)}`}const V=e=>{const{client:t,studioUrl:n}=e,{projectId:r,dataset:o,resultSourceMap:c}=t.config();if(!r)throw new Error("Missing projectId");if(!o)throw new Error("Missing dataset");c||t.config({resultSourceMap:"withKeyArraySelector"});const i=p({enabled:!1,connected:!1}),u=p({});let y=null;const N=new Map,[I,D,{mutateCache:U}]=(({cache:e=new Map,fetcher:t,...n}={})=>{const r=v();let o=!0;M("visibilitychange",(()=>{o=!document.hidden,o&&r.emit(m)})),M("online",(()=>r.emit(w)));const c=new Map,i=new Map,l=new Map;let u={};const h=async([t,n],c,d,f)=>{var h;if(!o)return;const p=e=>{c.key===t&&(c.set(e),r.emit(E,t,e,!0))},v=()=>{p({...c.value,...k,promise:l.get(t)})},{dedupeTime:y=4e3,fetcher:g}={...d,...u},m=O();if(l.has(t))return void(c.value.loading||v());if(!f){const n=e.get(t);n&&c.value.data!==n&&p({data:n,...K});const r=i.get(t);if(r&&r+y>m)return}const w=(s+=1,()=>{if(s-=1,0===s){let e=a;a=[];for(let t of e)t()}});try{const r=g(...n);i.set(t,m),l.set(t,r),v();const o=await r;e.set(t,o),p({data:o,...K}),i.set(t,O())}catch(e){null==(h=d.onError)||h.call(d,e),p({data:c.value.data,error:e,...K})}finally{w(),l.delete(t)}},y=t=>{e.delete(t),i.delete(t)},N=(t,n)=>{for(const r of e.keys())S(r,t)&&n(r)},I=e=>{N(e,y),r.emit(b,e)},D=(t,n)=>{N(t,(t=>{void 0===n?y(t):e.set(t,n)})),r.emit(E,t,n)};return[(e,{fetcher:o=t,...s}={})=>{if("production"!==process.env.NODE_ENV&&!o)throw new Error("You need to set up either global fetcher of fetcher in createFetcherStore");const a=p({...K}),i={...n,...s,fetcher:o};let l,u,v,y,M;a.invalidate=()=>{const{key:e}=a;e&&I(e)},a.mutate=e=>{const{key:t}=a;t&&D(t,e)};let O=[];d(a,(()=>{const t=!l;[M,l]=g(e),y=M.subscribe((e=>{if(e){const[t,n]=e;a.key=t,h([t,n],a,i),u=t,v=n}else a.key=u=v=void 0}));const n=M.get();n&&([u,v]=n,t&&k());const{refetchInterval:o=0,refetchOnFocus:s,refetchOnReconnect:d}=i,f=()=>{u&&h([u,v],a,i)};o>0&&c.set(e,setInterval(f,o)),s&&O.push(r.on(m,f)),d&&O.push(r.on(w,f)),O.push(r.on(b,(e=>{u&&S(u,e)&&h([u,v],a,i,!0)})),r.on(E,((e,t,n)=>{u&&S(u,e)&&a.value!==t&&a.value.data!==t&&a.set(n?t:{data:t,...K})})))}));const k=()=>{u&&v&&h([u,v],a,i)},N=a.listen;return a.listen=e=>{const t=N(e);return e(a.value),k(),t},f(a,(()=>{a.value={...K},null==l||l(),O.forEach((e=>e())),O=[],null==y||y();const t=c.get(e);t&&clearInterval(t)})),a},function(t){const r=async s=>{var a,c;const i=null!=(a=u.fetcher)?a:t,l=[];try{o.set({error:void 0,data:void 0,mutate:r,...k});const t=await i({data:s,invalidate:e=>{l.push(e)},getCacheUpdater:(t,n=!0)=>[e=>{D(t,e),n&&l.push(t)},e.get(t)]});return o.setKey("data",t),t}catch(e){null==(c=null==n?void 0:n.onError)||c.call(n,e),o.setKey("error",e)}finally{o.setKey("loading",!1),l.forEach(I)}},o=p({mutate:r,...K});return o.mutate=r,o},{__unsafeOverruleSettings:e=>{"test"!==process.env.NODE_ENV&&console.warn("You should only use __unsafeOverruleSettings in test environment"),u=e},invalidateKeys:I,mutateCache:D}]})({cache:N,fetcher:async(...e)=>{if(N.has(e.join("")))return N.get(e.join(""));const[n,s]=e,a=s?JSON.parse(s):{};if(i.get().enabled){if(!y)throw new Error("No channel");y.send("loader/query-listen",{projectId:r,dataset:o,query:n,params:a})}const{result:c,resultSourceMap:l}=await t.fetch(n,a,{filterResponse:!1});return i.get().enabled&&u.setKey(J(n,a),l?.documents),{query:n,params:a,result:c,resultSourceMap:l}}}),j=p({}),L=((e,t)=>{let n;Array.isArray(e)||(e=[e]);let r=()=>{let t=e.map((e=>e.get()));(void 0===n||t.some(((e,t)=>e!==n[t])))&&(n=t,o.set(((e,t)=>{const n=Object.values(t).filter((e=>!!e?.listeners&&e.listeners>0)),r=[];for(const{query:t,params:o}of n){const n=J(t,o);e[n]&&r.push(...e[n])}return r})(...t)))},o=l(void 0,Math.max(...e.map((e=>e.l)))+1);return h(o,(()=>{let t=e.map((e=>e.listen(r,o.l)));return r(),()=>{for(let e of t)e()}})),o})([u,j]),q=l(!1);return h(i,(()=>{i.setKey("enabled",!0),y=_({id:"loaders",onConnect:e=>{console.warn("loaders onConnect",{connection:e}),i.get().enabled&&i.setKey("connected",!0)},onDisconnect:e=>{console.error("loaders onDisconnect",{connection:e}),i.setKey("connected",!1)},connections:[{target:parent,targetOrigin:n,id:"composer"}],handler:(e,t)=>{if("loader/query-change"===e&&t.projectId===r&&t.dataset===o){const e=[t.query,JSON.stringify(t.params)].join(""),n=N.has(e)?N.get(e):{};U(e,{query:t.query,params:t.params,result:t.result,resultSourceMap:t.resultSourceMap||n.resultSourceMap})}"loader/ping"===e&&(console.debug("loader/ping"),q.set(!0))}});const e=q.subscribe((e=>{y&&e&&(console.debug("loader/pong"),y.send("loader/pong",void 0),q.set(!1))})),t=function(e,t,n){let r=new Set(["connected",void 0]);return e.listen(((e,t)=>{r.has(t)&&console.warn("listenKeys($LiveMode, ['connected'] invalidateKeys",JSON.stringify([...N]))}))}(i),s=L.subscribe((e=>{if(!y)throw new Error("No channel");y.send("loader/documents",{projectId:r,dataset:o,documents:e})}));return()=>{e(),s(),t(),i.setKey("enabled",!1),i.setKey("connected",!1),y?.disconnect(),y=null}})),{createFetcherStore:(e,t)=>{const n=I(e,t);return d(n,(()=>{const[t,n]=e,r=n?JSON.parse(n):{},o=J(t,r),s=j.get()[o],a=s?.listeners||0;j.setKey(o,{...s,query:t,params:r,listeners:a+1})})),f(n,(()=>{const[t,n]=e,r=n?JSON.parse(n):{},o=J(t,r),s=j.get()[o],a=s?.listeners||1;a>1?j.setKey(o,{...s,query:t,params:r,listeners:a-1}):j.setKey(o,void 0)})),n},$LiveMode:i}},C=s=>{const{createFetcherStore:a,$LiveMode:c}=V(s),i={loading:!0},l=c.value,u={};return{useQuery:(r,o=u)=>{const s=e((()=>JSON.stringify(o)),[o]),[c,l]=t((()=>i));n((()=>{const e=a([r,s]).listen((e=>{l(e)}));return()=>e()}),[s,r]);const{data:d,loading:f,error:h}=c;return{data:d?.result,sourceMap:d?.resultSourceMap,loading:f,error:h}},useLiveMode:()=>{const e=r(o((e=>c.listen(e)),[]),(()=>c.get()),(()=>l));return n((()=>{if(e.connected)return console.log("useLiveMode connected"),()=>{console.log("useLiveMode disconnected")}}),[e.connected]),e}}};export{C as createQueryStore};//# sourceMappingURL=index.js.map | ||
import{useMemo as e,useState as t,useEffect as n,useSyncExternalStore as r,useCallback as s}from"react";let o=0,a=[],i=Symbol("clean"),c=[],l=(e,t)=>{let n=[],r={get:()=>(r.lc||r.listen((()=>{}))(),r.value),l:t||0,lc:0,listen:(e,t)=>(r.lc=n.push(e,t||r.l)/2,()=>{let t=n.indexOf(e);~t&&(n.splice(t,2),--r.lc||r.off())}),notify(e){let t=!c.length;for(let t=0;t<n.length;t+=2)c.push(n[t],n[t+1],r.value,e);if(t){for(let e=0;e<c.length;e+=4){let t;for(let n=e+1;!t&&(n+=4)<c.length;)c[n]<c[e+1]&&(t=c.push(c[e],c[e+1],c[e+2],c[e+3]));t||c[e](c[e+2],c[e+3])}c.length=0}},off(){},set(e){r.value!==e&&(r.value=e,r.notify())},subscribe(e,t){let n=r.listen(e,t);return e(r.value),n},value:e};return"production"!==process.env.NODE_ENV&&(r[i]=()=>{n=[],r.lc=0,r.off()}),r},u=(e,t,n,r)=>(e.events=e.events||{},e.events[n+10]||(e.events[n+10]=r((t=>{e.events[n].reduceRight(((e,t)=>(t(e),e)),{shared:{},...t})}))),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let r=e.events[n],s=r.indexOf(t);r.splice(s,1),r.length||(delete e.events[n],e.events[n+10](),delete e.events[n+10])}),d=(e,t)=>u(e,t,0,(t=>{let n=e.listen;return e.listen=r=>(e.lc||e.starting||(e.starting=!0,t(),delete e.starting),n(r)),()=>{e.listen=n}})),f=(e,t)=>u(e,t,1,(t=>{let n=e.off;return e.off=()=>{t(),n()},()=>{e.off=n}})),h=(e,t)=>u(e,(n=>{let r=t(n);r&&e.events[6].push(r)}),5,(t=>{let n=e.listen;e.listen=(...r)=>(e.lc||e.active||(e.active=!0,t()),n(...r));let r=e.off;if(e.events[6]=[],e.off=()=>{r(),setTimeout((()=>{if(e.active&&!e.lc){e.active=!1;for(let t of e.events[6])t();e.events[6]=[]}}),1e3)},"production"!==process.env.NODE_ENV){let t=e[i];e[i]=()=>{for(let t of e.events[6])t();e.events[6]=[],e.active=!1,t()}}return()=>{e.listen=n,e.off=r}})),p=(e={})=>{let t=l(e);return t.setKey=function(e,n){void 0===n?e in t.value&&(t.value={...t.value},delete t.value[e],t.notify(e)):t.value[e]!==n&&(t.value={...t.value,[e]:n},t.notify(e))},t},v=()=>({events:{},emit(e,...t){let n=this.events[e]||[];for(let e=0,r=n.length;e<r;e++)n[e](...t)},on(e,t){return this.events[e]?.push(t)||(this.events[e]=[t]),()=>{this.events[e]=this.events[e]?.filter((e=>t!==e))}}});function y(e){return"string"==typeof e||"number"==typeof e}const g=e=>{if(y(e))return[l([""+e,[e]]),()=>{}];let t=l(null),n=[];const r=()=>{n.some((e=>null==e))?t.set(null):t.set([n.join(""),n])},s=[];for(let t=0;t<e.length;t++){const o=e[t];y(o)?n.push(o):s.push(o.subscribe((e=>{n[t]=e,r()})))}return r(),[t,()=>s.forEach((e=>e()))]},m=1,w=2,E=3,S=4,b=(e,t)=>{"undefined"==typeof window||addEventListener(e,t)},M=(e,t)=>Array.isArray(t)?t.includes(e):"function"==typeof t?t(e):e===t,k=()=>(new Date).getTime(),O={loading:!0},N={loading:!1};let K;const I=new Uint8Array(16);function D(){if(!K&&(K="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!K))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return K(I)}const U=[];for(let e=0;e<256;++e)U.push((e+256).toString(16).slice(1));var j={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function q(e,t,n){if(j.randomUUID&&!t&&!e)return j.randomUUID();const r=(e=e||{}).random||(e.rng||D)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return U[e[t+0]]+U[e[t+1]]+U[e[t+2]]+U[e[t+3]]+"-"+U[e[t+4]]+U[e[t+5]]+"-"+U[e[t+6]]+U[e[t+7]]+"-"+U[e[t+8]]+U[e[t+9]]+"-"+U[e[t+10]]+U[e[t+11]]+U[e[t+12]]+U[e[t+13]]+U[e[t+14]]+U[e[t+15]]}(r)}const A=["channel/disconnect","channel/response","handshake/syn","handshake/syn-ack","handshake/ack"],L=e=>A.some((t=>t===e));function _(e){const{connections:t,handler:n}=e,r=e.id||q(),s=window.self!==window.top,o=[],a=[];function i(e){return function(t){return t.id===e.id&&t.target===e.target}}function c(t,n=!0){const r=o.findIndex(i(t));n&&r<0?(o.push(t),e.onConnect?.(t),function(){const e=[...a];a.splice(0,a.length),e.forEach((({connection:e,type:t,data:n})=>{l(e,t,n)}))}()):!n&&r&&(o.splice(r,1),e.onDisconnect?.(t))}function l(e,t,n){const s={id:q(),type:t,from:r,to:e.id,data:n},c=L(t),l=o.find(i(e));if(c||l){const t=c?"*":e.targetOrigin;try{return e.target.postMessage(s,{targetOrigin:t})}catch(t){console.error("Failed to postMessage",t,{msg:s,connection:e})}}var u;u={connection:e,type:t,data:n},a.push(u)}function u(e,t,n){return e.forEach((e=>{l(e,t,n)}))}function d(e){const s=function(e){const{source:n,origin:s,data:o}=e;if(a=o,Boolean(a)&&"object"==typeof a&&!Array.isArray(a))return t.find((e=>o.to===r&&e.id===o.from&&e.target===n&&(e.targetOrigin===s||"*"===e.targetOrigin)));var a}(e);if(!s)return;const{data:o}=e;if(u=o.type,L(u)&&u.startsWith("handshake/"))a=s,"handshake/syn"===(i=e).data.type&&l(a,"handshake/syn-ack"),"handshake/syn-ack"===i.data.type&&(c(a,!0),l(a,"handshake/ack")),"handshake/ack"===i.data.type&&c(a,!0);else if("channel/disconnect"===o.type)c(s,!1);else if("channel/response"===o.type);else{const e=[o.type,o.data];n(...e),l(s,"channel/response")}var a,i,u}return window.addEventListener("message",d,!1),u(t,"handshake/syn"),{disconnect:function(){window.removeEventListener("message",d,!1),o.length&&(u(o,"channel/disconnect"),o.forEach((e=>{c(e,!1)})))},inFrame:s,send:function(e,n){return new Promise((r=>{const s=e=>{const{data:t}=e;"channel/response"===t.type&&(window.removeEventListener("message",s,!1),r())};window.addEventListener("message",s,!1),u(t,e,n)}))}}}function V(e,t){return`${e}-${"string"==typeof t?t:JSON.stringify(t)}`}const F=e=>{const{client:t,studioUrl:n}=e,{projectId:r,dataset:s,resultSourceMap:i}=t.config();if(!r)throw new Error("Missing projectId");if(!s)throw new Error("Missing dataset");i||t.config({resultSourceMap:"withKeyArraySelector"});const c=p({enabled:!1,connected:!1}),u=p({});let y=null;const K=new Map,[I,D,{mutateCache:U}]=(({cache:e=new Map,fetcher:t,...n}={})=>{const r=v();let s=!0;b("visibilitychange",(()=>{s=!document.hidden,s&&r.emit(m)})),b("online",(()=>r.emit(w)));const i=new Map,c=new Map,l=new Map;let u={};const h=async([t,n],i,d,f)=>{var h;if(!s)return;const p=e=>{i.key===t&&(i.set(e),r.emit(S,t,e,!0))},v=()=>{p({...i.value,...O,promise:l.get(t)})},{dedupeTime:y=4e3,fetcher:g}={...d,...u},m=k();if(l.has(t))return void(i.value.loading||v());if(!f){const n=e.get(t);n&&i.value.data!==n&&p({data:n,...N});const r=c.get(t);if(r&&r+y>m)return}const w=(o+=1,()=>{if(o-=1,0===o){let e=a;a=[];for(let t of e)t()}});try{const r=g(...n);c.set(t,m),l.set(t,r),v();const s=await r;e.set(t,s),p({data:s,...N}),c.set(t,k())}catch(e){null==(h=d.onError)||h.call(d,e),p({data:i.value.data,error:e,...N})}finally{w(),l.delete(t)}},y=t=>{e.delete(t),c.delete(t)},K=(t,n)=>{for(const r of e.keys())M(r,t)&&n(r)},I=e=>{K(e,y),r.emit(E,e)},D=(t,n)=>{K(t,(t=>{void 0===n?y(t):e.set(t,n)})),r.emit(S,t,n)};return[(e,{fetcher:s=t,...o}={})=>{if("production"!==process.env.NODE_ENV&&!s)throw new Error("You need to set up either global fetcher of fetcher in createFetcherStore");const a=p({...N}),c={...n,...o,fetcher:s};let l,u,v,y,b;a.invalidate=()=>{const{key:e}=a;e&&I(e)},a.mutate=e=>{const{key:t}=a;t&&D(t,e)};let k=[];d(a,(()=>{const t=!l;[b,l]=g(e),y=b.subscribe((e=>{if(e){const[t,n]=e;a.key=t,h([t,n],a,c),u=t,v=n}else a.key=u=v=void 0}));const n=b.get();n&&([u,v]=n,t&&O());const{refetchInterval:s=0,refetchOnFocus:o,refetchOnReconnect:d}=c,f=()=>{u&&h([u,v],a,c)};s>0&&i.set(e,setInterval(f,s)),o&&k.push(r.on(m,f)),d&&k.push(r.on(w,f)),k.push(r.on(E,(e=>{u&&M(u,e)&&h([u,v],a,c,!0)})),r.on(S,((e,t,n)=>{u&&M(u,e)&&a.value!==t&&a.value.data!==t&&a.set(n?t:{data:t,...N})})))}));const O=()=>{u&&v&&h([u,v],a,c)},K=a.listen;return a.listen=e=>{const t=K(e);return e(a.value),O(),t},f(a,(()=>{a.value={...N},null==l||l(),k.forEach((e=>e())),k=[],null==y||y();const t=i.get(e);t&&clearInterval(t)})),a},function(t){const r=async o=>{var a,i;const c=null!=(a=u.fetcher)?a:t,l=[];try{s.set({error:void 0,data:void 0,mutate:r,...O});const t=await c({data:o,invalidate:e=>{l.push(e)},getCacheUpdater:(t,n=!0)=>[e=>{D(t,e),n&&l.push(t)},e.get(t)]});return s.setKey("data",t),t}catch(e){null==(i=null==n?void 0:n.onError)||i.call(n,e),s.setKey("error",e)}finally{s.setKey("loading",!1),l.forEach(I)}},s=p({mutate:r,...N});return s.mutate=r,s},{__unsafeOverruleSettings:e=>{"test"!==process.env.NODE_ENV&&console.warn("You should only use __unsafeOverruleSettings in test environment"),u=e},invalidateKeys:I,mutateCache:D}]})({cache:K,fetcher:async(...e)=>{if(K.has(e.join("")))return K.get(e.join(""));const[n,o]=e,a=o?JSON.parse(o):{};if(c.get().enabled){if(!y)throw new Error("No channel");y.send("loader/query-listen",{projectId:r,dataset:s,query:n,params:a})}const{result:i,resultSourceMap:l}=await t.fetch(n,a,{filterResponse:!1});return c.get().enabled&&u.setKey(V(n,a),l?.documents),{query:n,params:a,result:i,resultSourceMap:l}}}),j=p({}),q=((e,t)=>{let n;Array.isArray(e)||(e=[e]);let r=()=>{let t=e.map((e=>e.get()));(void 0===n||t.some(((e,t)=>e!==n[t])))&&(n=t,s.set(((e,t)=>{const n=Object.values(t).filter((e=>!!e?.listeners&&e.listeners>0)),r=[];for(const{query:t,params:s}of n){const n=V(t,s);e[n]&&r.push(...e[n])}return r})(...t)))},s=l(void 0,Math.max(...e.map((e=>e.l)))+1);return h(s,(()=>{let t=e.map((e=>e.listen(r,s.l)));return r(),()=>{for(let e of t)e()}})),s})([u,j]),A=l(!1);return h(c,(()=>{c.setKey("enabled",!0),y=_({id:"loaders",onConnect:()=>{c.setKey("connected",!0)},onDisconnect:()=>{c.setKey("connected",!1)},connections:[{target:parent,targetOrigin:n,id:"composer"}],handler:(e,t)=>{if("loader/query-change"===e&&t.projectId===r&&t.dataset===s){const e=[t.query,JSON.stringify(t.params)].join(""),n=K.has(e)?K.get(e):{};U(e,{query:t.query,params:t.params,result:t.result,resultSourceMap:t.resultSourceMap||n.resultSourceMap})}"loader/ping"===e&&A.set(!0)}});const e=A.subscribe((e=>{y&&e&&(y.send("loader/pong",void 0),A.set(!1))})),t=function(e,t,n){let r=new Set(["connected",void 0]);return e.listen(((e,t)=>{r.has(t)}))}(c),o=q.subscribe((e=>{if(!y)throw new Error("No channel");y.send("loader/documents",{projectId:r,dataset:s,documents:e})}));return()=>{e(),o(),t(),c.setKey("enabled",!1),c.setKey("connected",!1),y?.disconnect(),y=null}})),{createFetcherStore:(e,t)=>{const n=I(e,t);return d(n,(()=>{const[t,n]=e,r=n?JSON.parse(n):{},s=V(t,r),o=j.get()[s],a=o?.listeners||0;j.setKey(s,{...o,query:t,params:r,listeners:a+1})})),f(n,(()=>{const[t,n]=e,r=n?JSON.parse(n):{},s=V(t,r),o=j.get()[s],a=o?.listeners||1;a>1?j.setKey(s,{...o,query:t,params:r,listeners:a-1}):j.setKey(s,void 0)})),n},$LiveMode:c}},J=o=>{const{createFetcherStore:a,$LiveMode:i}=F(o),c={loading:!0},l=i.value,u={};return{useQuery:(r,s=u,o={})=>{const{initialData:i,initialSourceMap:l}=o,d=e((()=>JSON.stringify(s)),[s]),[f,h]=t((()=>({...c,data:i||l?{result:i,sourceMap:l}:void 0})));n((()=>{const e=a([r,d]).listen((e=>{h(e)}));return()=>e()}),[d,r]);const{data:p,loading:v,error:y}=f;return{data:p?.result,sourceMap:p?.resultSourceMap,loading:v,error:y}},useLiveMode:()=>r(s((e=>i.listen(e)),[]),(()=>i.get()),(()=>l))}};export{J as createQueryStore};//# sourceMappingURL=index.js.map |
{ | ||
"name": "@sanity/react-loader", | ||
"version": "0.1.4-pink-lizard", | ||
"version": "0.1.6-pink-lizard", | ||
"license": "MIT", | ||
@@ -122,6 +122,6 @@ "author": "Sanity.io <hello@sanity.io>", | ||
"typescript": "^5.2.2", | ||
"@sanity/core-loader": "0.1.5-pink-lizard", | ||
"@sanity/csm": "0.1.3-pink-lizard", | ||
"@sanity/core-loader": "0.1.6-pink-lizard", | ||
"@sanity/csm": "0.1.4-pink-lizard", | ||
"@sanity/groq-store": "0.0.5-pink-lizard", | ||
"@sanity/overlays": "0.1.3-pink-lizard", | ||
"@sanity/overlays": "0.1.4-pink-lizard", | ||
"channels": "0.0.0", | ||
@@ -133,3 +133,3 @@ "visual-editing-helpers": "0.0.0" | ||
"@sanity/client": "^6.7.0", | ||
"@sanity/overlays": "0.1.3-pink-lizard" | ||
"@sanity/overlays": "0.1.4-pink-lizard" | ||
}, | ||
@@ -136,0 +136,0 @@ "engines": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
384
129178