@directive-run/react 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +8 -2
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var core=require('@directive-run/core'),adapterUtils=require('@directive-run/core/adapter-utils'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var oe=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=Symbol("directive.uninitialized");function Z(e,t){return adapterUtils.assertSystem("useFact",e),process.env.NODE_ENV!=="production"&&typeof t=="function"&&console.error("[Directive] useFact() received a function. Did you mean useSelector()? useFact() takes a string key or array of keys, not a selector function."),Array.isArray(t)?Se(e,t):fe(e,t)}function fe(e,t){process.env.NODE_ENV!=="production"&&(t in e.facts.$store.toObject()||console.warn(`[Directive] useFact("${t}") \u2014 fact not found in store. Check that "${t}" is defined in your module's schema.`));let r=react.useCallback(n=>e.facts.$store.subscribe([t],n),[e,t]),o=react.useCallback(()=>e.facts.$store.get(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function Se(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.facts.$store.subscribe(t,u),[e,...t]),n=react.useCallback(()=>{let u={};for(let s of t)u[s]=e.facts.$store.get(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return react.useSyncExternalStore(o,n,n)}function G(e,t){return adapterUtils.assertSystem("useDerived",e),process.env.NODE_ENV!=="production"&&typeof t=="function"&&console.error("[Directive] useDerived() received a function. Did you mean useSelector()? useDerived() takes a string key or array of keys, not a selector function."),Array.isArray(t)?ge(e,t):pe(e,t)}function pe(e,t){process.env.NODE_ENV!=="production"&&(t in e.derive||console.warn(`[Directive] useDerived("${t}") \u2014 derivation not found. Check that "${t}" is defined in your module's derive property.`));let r=react.useCallback(n=>e.subscribe([t],n),[e,t]),o=react.useCallback(()=>e.read(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function ge(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.subscribe(t,u),[e,...t]),n=react.useCallback(()=>{let u={};for(let s of t)u[s]=e.read(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return react.useSyncExternalStore(o,n,n)}function ye(e,t,r,o){if(e&&e._mode==="namespaced")return ve(e,t,r,o);let n=e,u,s=false,i=o??adapterUtils.defaultEquality;r!==void 0&&(u=r,s=true),process.env.NODE_ENV!=="production"&&!n&&!s&&console.error("[Directive] useSelector() received a null/undefined system without a default value. Provide a default value as the 3rd parameter: useSelector(system, selector, defaultValue)");let f=react.useRef(t),l=react.useRef(i),c=react.useRef(u),g=react.useRef(t),y=react.useRef(0);g.current!==t&&(g.current=t,y.current++),f.current=t,l.current=i,c.current=u;let K=y.current,v=react.useRef([]),x=react.useRef([]),k=react.useRef(b),m=react.useRef([]),P=react.useMemo(()=>n?new Set(Object.keys(n.derive)):new Set,[n]),F=react.useCallback(()=>n?adapterUtils.runTrackedSelector(n,P,f.current):{value:c.current,factKeys:[],deriveKeys:[]},[n,P]),I=react.useCallback(S=>{if(!n)return ()=>{};let p=()=>{for(let M of m.current)M();m.current=[];let{factKeys:R,deriveKeys:w}=F();v.current=R,x.current=w,R.length>0?m.current.push(n.facts.$store.subscribe(R,()=>{let M=F();adapterUtils.depsChanged(v.current,M.factKeys,x.current,M.deriveKeys)&&p(),S();})):w.length===0&&m.current.push(n.facts.$store.subscribeAll(S)),w.length>0&&m.current.push(n.subscribe(w,()=>{let M=F();adapterUtils.depsChanged(v.current,M.factKeys,x.current,M.deriveKeys)&&p(),S();}));};return p(),()=>{for(let R of m.current)R();m.current=[];}},[n,F,K]),C=react.useCallback(()=>{let S;if(!n)S=c.current;else {let{value:p}=F();S=p===void 0&&s?c.current:p;}return k.current!==b&&l.current(k.current,S)?k.current:(k.current=S,S)},[F,n,s]);return react.useSyncExternalStore(I,C,C)}function ve(e,t,r,o){let n=r!==void 0,u=o??adapterUtils.defaultEquality,s=react.useRef(t),i=react.useRef(u),f=react.useRef(r);s.current=t,i.current=u,f.current=r;let l=react.useRef(b),c=react.useMemo(()=>Object.keys(e.facts),[e]),g=react.useCallback(K=>{let v=c.map(x=>`${x}.*`);return e.subscribe(v,K)},[e,c]),y=react.useCallback(()=>{let K=s.current(e),v=K===void 0&&n?f.current:K;return l.current!==b&&i.current(l.current,v)?l.current:(l.current=v,v)},[e,n]);return react.useSyncExternalStore(g,y,y)}function J(e){return adapterUtils.assertSystem("useDispatch",e),react.useCallback(t=>{e.dispatch(t);},[e])}function X(e,t,r){adapterUtils.assertSystem("useWatch",e);let o=react.useRef(r);o.current=r,react.useEffect(()=>e.watch(t,(n,u)=>{o.current(n,u);}),[e,t]);}function Y(e,t){adapterUtils.assertSystem("useInspect",e);let r=me(e),o=t?.throttleMs,[n,u]=react.useState(r),s=react.useRef(null);return react.useEffect(()=>{if(!o||o<=0){s.current?.cleanup(),s.current=null;return}return s.current?.cleanup(),s.current=adapterUtils.createThrottle((...i)=>{u(i[0]);},o),()=>{s.current?.cleanup(),s.current=null;}},[o]),react.useEffect(()=>{s.current&&s.current.throttled(r);},[r]),!o||o<=0?r:n}function Me(e){return adapterUtils.computeInspectState(e)}function me(e){let t=react.useRef(null),r=react.useRef([]),o=react.useRef([]),n=react.useRef(null),u=react.useCallback(i=>{let f=e.facts.$store.subscribeAll(i),l=e.onSettledChange(i);return ()=>{f(),l();}},[e]),s=react.useCallback(()=>{let i=Me(e),f=i.unmet.length===r.current.length&&i.unmet.every((g,y)=>g.id===r.current[y]),l=i.inflight.length===o.current.length&&i.inflight.every((g,y)=>g.id===o.current[y]),c=i.isSettled===n.current;return f&&l&&c&&t.current?t.current:(t.current=i,r.current=i.unmet.map(g=>g.id),o.current=i.inflight.map(g=>g.id),n.current=i.isSettled,i)},[e]);return react.useSyncExternalStore(u,s,s)}function Re(e){adapterUtils.assertSystem("useHistory",e);let t=react.useRef(null),r=react.useCallback(n=>e.onHistoryChange(n),[e]),o=react.useCallback(()=>{let n=adapterUtils.buildHistoryState(e);return n?(t.current&&t.current.canGoBack===n.canGoBack&&t.current.canGoForward===n.canGoForward&&t.current.currentIndex===n.currentIndex&&t.current.totalSnapshots===n.totalSnapshots&&t.current.isPaused===n.isPaused||(t.current=n),t.current):null},[e]);return react.useSyncExternalStore(r,o,o)}function Ce(e,t){return Array.isArray(t)?be(e,t):he(e,t)}function he(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.subscribe(u),[e]),n=react.useCallback(()=>{let u=e.getStatus(t);if(r.current!==b){let s=r.current;if(s.pending===u.pending&&s.inflight===u.inflight&&s.failed===u.failed&&s.isLoading===u.isLoading&&s.hasError===u.hasError&&s.lastError===u.lastError)return r.current}return r.current=u,u},[e,t]);return react.useSyncExternalStore(o,n,n)}function be(e,t){let r=react.useRef(null),o=react.useRef(""),n=react.useCallback(s=>e.subscribe(s),[e]),u=react.useCallback(()=>{let s={},i=[];for(let l of t){let c=e.getStatus(l);s[l]=c,i.push(`${l}:${c.pending}:${c.inflight}:${c.failed}:${c.hasError}:${c.lastError?.message??""}`);}let f=i.join("|");return f!==o.current&&(o.current=f,r.current=s),r.current??s},[e,...t]);return react.useSyncExternalStore(n,u,u)}var j=new WeakMap;function ee(e){let t=j.get(e);return t||(t=new Map,j.set(e,t)),t}function Ve(e,t){return Array.isArray(t)?xe(e,t):De(e,t)}function De(e,t){let r=e.getStatus(t);if(r.hasError&&r.lastError)throw r.lastError;if(r.isLoading){let o=ee(e),n=o.get(t);throw n||(n=new Promise(u=>{let s=e.subscribe(()=>{e.getStatus(t).isLoading||(o.delete(t),s(),u());});}),o.set(t,n)),n}return r}function xe(e,t){let r={},o=false,n=null;for(let u of t){let s=e.getStatus(u);r[u]=s,s.hasError&&s.lastError&&!n&&(n=s.lastError),s.isLoading&&(o=true);}if(n)throw n;if(o){let u=ee(e),s=t.slice().sort().join(","),i=u.get(s);throw i||(i=new Promise(f=>{let l=e.subscribe(()=>{t.every(g=>!e.getStatus(g).isLoading)&&(u.delete(s),l(),f());});}),u.set(s,i)),i}return r}function H(e,t){let r=react.useRef(null),o=react.useRef(null),n=react.useRef(null),u=t?.status===true,s="modules"in e;return r.current||(n.current=()=>{if(s){let{modules:F,...I}=e,C=t?.plugins??I.plugins??[],S=t?.history??I.history,p=t?.trace??I.trace,R=t?.errorBoundary??I.errorBoundary,w=t?.tickMs??I.tickMs,M=t?.zeroConfig??I.zeroConfig,V=t?.initialFacts??I.initialFacts,U=core.createSystem({modules:F,plugins:C.length>0?C:void 0,history:S,trace:p,errorBoundary:R,tickMs:w,zeroConfig:M,initialFacts:V});return U.initialize(),typeof window<"u"&&U.start(),U}let i="id"in e&&"schema"in e,f=i?e:e.module,l=i?{}:e,c=t?.plugins??l.plugins??[],g=t?.history??l.history,y=t?.trace??l.trace,K=t?.errorBoundary??l.errorBoundary,v=t?.tickMs??l.tickMs,x=t?.zeroConfig??l.zeroConfig,k=t?.initialFacts??l.initialFacts,m=[...c];u&&(o.current=core.createRequirementStatusPlugin(),m=[...m,o.current.plugin]);let P=core.createSystem({module:f,plugins:m.length>0?m:void 0,history:g,trace:y,errorBoundary:K,tickMs:v,zeroConfig:x,initialFacts:k});return P.initialize(),typeof window<"u"&&P.start(),P},r.current=n.current()),react.useEffect(()=>(!r.current&&n.current&&(r.current=n.current()),()=>{r.current?.destroy(),r.current=null,o.current=null;}),[]),u&&!s?{system:r.current,statusPlugin:o.current}:r.current}function Te(e,t,r){let o=react.useRef(t);o.current=t;let n=react.useRef(r);n.current=r;let u=react.useCallback(i=>e.subscribe(o.current,i),[e]),s=react.useCallback(()=>n.current(e),[e]);return react.useSyncExternalStore(u,s,s)}function Ne(e,t={}){let{facts:r,derived:o,status:n,...u}=t,s=r??[],i=o??[],f=s.length===0&&i.length===0,l=n?H(e,{status:true,...u}):H(e,u),c=n?l.system:l,g=n?l.statusPlugin:void 0,y=react.useMemo(()=>f?Object.keys(c.derive):[],[c,f]),K=react.useCallback(S=>{let p=[];return f?(p.push(c.facts.$store.subscribeAll(S)),y.length>0&&p.push(c.subscribe(y,S))):(s.length>0&&p.push(c.facts.$store.subscribe(s,S)),i.length>0&&p.push(c.subscribe(i,S))),()=>{for(let R of p)R();}},[c,f,...s,...i,...y]),v=react.useRef(b),x=react.useRef(b),k=react.useRef(null),m=react.useCallback(()=>{let S,p,R,w;if(f){S=c.facts.$store.toObject(),R=Object.keys(S),p={};for(let h of y)p[h]=c.read(h);w=y;}else {S={};for(let h of s)S[h]=c.facts[h];R=s,p={};for(let h of i)p[h]=c.read(h);w=i;}let M=v.current!==b;if(M){let h=v.current;if(Object.keys(h).length!==R.length)M=false;else for(let O of R)if(!Object.is(h[O],S[O])){M=false;break}}let V=x.current!==b;if(V){let h=x.current;if(Object.keys(h).length!==w.length)V=false;else for(let O of w)if(!Object.is(h[O],p[O])){V=false;break}}let U=M?v.current:S,re=V?x.current:p;return M||(v.current=S),V||(x.current=p),M&&V&&k.current||(k.current={facts:U,derived:re}),k.current},[c,f,...s,...i,...y]),P=react.useSyncExternalStore(K,m,m),F=react.useCallback(S=>c.dispatch(S),[c]),I=_(c),C={system:c,dispatch:F,events:I,facts:P.facts,derived:P.derived};return n&&g?{...C,statusPlugin:g}:C}function _(e){return adapterUtils.assertSystem("useEvents",e),react.useMemo(()=>e.events,[e])}function ke(e,t){adapterUtils.assertSystem("useExplain",e);let r=react.useCallback(n=>{let u=e.facts.$store.subscribeAll(n),s=e.onSettledChange(n);return ()=>{u(),s();}},[e]),o=react.useCallback(()=>e.explain(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function Ue(e,t){adapterUtils.assertSystem("useConstraintStatus",e);let r=Y(e);return react.useMemo(()=>{let o=e.inspect();return t?o.constraints.find(n=>n.id===t)??null:o.constraints},[e,t,r])}function Oe(e,t,r){adapterUtils.assertSystem("useOptimisticUpdate",e);let[o,n]=react.useState(false),[u,s]=react.useState(null),i=react.useRef(null),f=react.useCallback(()=>{i.current&&(e.restore(i.current),i.current=null),n(false),s(null);},[e]),l=react.useCallback(c=>{i.current=e.getSnapshot(),n(true),s(null),e.batch(c);},[e]);return react.useEffect(()=>{if(!(!t||!r||!o))return t.subscribe(()=>{let c=t.getStatus(r);!c.isLoading&&!c.hasError?(i.current=null,n(false)):c.hasError&&(s(c.lastError),f());})},[t,r,o,f]),{mutate:l,isPending:o,error:u,rollback:f}}var te=react.createContext(null);function qe({snapshot:e,children:t}){return jsxRuntime.jsx(te.Provider,{value:e,children:t})}function $e(e,t){let r=react.useContext(te),o=react.useMemo(()=>{let n=adapterUtils.mergeHydrationFacts(r,t?.initialFacts);return {...t??{},initialFacts:n}},[r,t]);return H(e,o)}function Be(){return {useFact:(e,t)=>Z(e,t),useDerived:(e,t)=>G(e,t),useDispatch:e=>J(e),useEvents:e=>_(e),useWatch:(e,t,r)=>X(e,t,r)}}var q=null;function Ie(){if(!q)try{q=oe("@directive-run/query").createQuerySystem;}catch{throw new Error("[Directive] @directive-run/query is not installed. Install it with: pnpm add @directive-run/query")}return q}function He(e){let t=react.useRef(e),r=react.useMemo(()=>{let u=Ie();return ()=>u(t.current)},[]),o=react.useRef(null),n=react.useRef(r);return n.current=r,o.current||(o.current=n.current()),react.useEffect(()=>(!o.current&&n.current&&(o.current=n.current()),typeof window<"u"&&o.current&&!o.current.isRunning&&o.current.start(),()=>{o.current?.destroy(),o.current=null;}),[]),o.current}var $=new WeakMap;function _e(e,t){let r=react.useCallback(s=>e.subscribe([t],s),[e,t]),o=react.useCallback(()=>e.read(t),[e,t]),n=react.useSyncExternalStore(r,o,o);$.has(e)||$.set(e,new Map);let u=$.get(e);if(n?.status==="success"&&n?.data!==null)return u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.data;if(n?.status==="error"&&n?.error)throw u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.error;if(!u.has(t)){let s,i=new Promise(l=>{s=l;});u.set(t,{promise:i,resolve:s});let f=e.subscribe([t],()=>{let l=e.read(t);if(l?.status==="success"||l?.status==="error"){let c=u.get(t);c&&(c.resolve(),u.delete(t)),f();}});}throw u.get(t).promise}function We(e){let t=react.createContext(null);function r(){let n=react.useContext(t);if(!n)throw new Error("[Directive] useSystem called outside of <Provider>. Wrap your component tree with the Provider from createDirectiveContext().");return n}function o({children:n,system:u}){return jsxRuntime.jsx(t.Provider,{value:u??e,children:n})}return o.displayName="DirectiveProvider",{Provider:o,useSystem:r,useFact:n=>Z(r(),n),useDerived:n=>G(r(),n),useEvents:()=>_(r()),useDispatch:()=>J(r()),useSelector:(n,u)=>ye(r(),n,u),useWatch:(n,u)=>X(r(),n,u),useInspect:()=>Y(r()),useExplain:n=>ke(r(),n),useHistory:()=>Re(r())}}Object.defineProperty(exports,"shallowEqual",{enumerable:true,get:function(){return adapterUtils.shallowEqual}});exports.DirectiveHydrator=qe;exports.createDirectiveContext=We;exports.createTypedHooks=Be;exports.useConstraintStatus=Ue;exports.useDerived=G;exports.useDirective=Ne;exports.useDirectiveRef=H;exports.useDispatch=J;exports.useEvents=_;exports.useExplain=ke;exports.useFact=Z;exports.useHistory=Re;exports.useHydratedSystem=$e;exports.useInspect=Y;exports.useNamespacedSelector=Te;exports.useOptimisticUpdate=Oe;exports.useQuerySystem=He;exports.useRequirementStatus=Ce;exports.useSelector=ye;exports.useSuspenseQuery=_e;exports.useSuspenseRequirement=Ve;exports.useWatch=X;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var core=require('@directive-run/core'),adapterUtils=require('@directive-run/core/adapter-utils'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var ue=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var b=Symbol("directive.uninitialized");function G(e,t){return adapterUtils.assertSystem("useFact",e),typeof t=="function"&&console.error("[Directive] useFact() received a function. Did you mean useSelector()? useFact() takes a string key or array of keys, not a selector function."),Array.isArray(t)?pe(e,t):Se(e,t)}function Se(e,t){(t in e.facts.$store.toObject()||console.warn(`[Directive] useFact("${t}") \u2014 fact not found in store. Check that "${t}" is defined in your module's schema.`));let r=react.useCallback(n=>e.facts.$store.subscribe([t],n),[e,t]),o=react.useCallback(()=>e.facts.$store.get(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function pe(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.facts.$store.subscribe(t,u),[e,...t]),n=react.useCallback(()=>{let u={};for(let s of t)u[s]=e.facts.$store.get(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return react.useSyncExternalStore(o,n,n)}function J(e,t){return adapterUtils.assertSystem("useDerived",e),typeof t=="function"&&console.error("[Directive] useDerived() received a function. Did you mean useSelector()? useDerived() takes a string key or array of keys, not a selector function."),Array.isArray(t)?ye(e,t):ge(e,t)}function ge(e,t){(t in e.derive||console.warn(`[Directive] useDerived("${t}") \u2014 derivation not found. Check that "${t}" is defined in your module's derive property.`));let r=react.useCallback(n=>e.subscribe([t],n),[e,t]),o=react.useCallback(()=>e.read(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function ye(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.subscribe(t,u),[e,...t]),n=react.useCallback(()=>{let u={};for(let s of t)u[s]=e.read(s);if(r.current!==b){let s=true;for(let i of t)if(!Object.is(r.current[i],u[i])){s=false;break}if(s)return r.current}return r.current=u,u},[e,...t]);return react.useSyncExternalStore(o,n,n)}function ve(e,t,r,o){if(e&&e._mode==="namespaced")return Me(e,t,r,o);let n=e,u,s=false,i=o??adapterUtils.defaultEquality;r!==void 0&&(u=r,s=true),!n&&!s&&console.error("[Directive] useSelector() received a null/undefined system without a default value. Provide a default value as the 3rd parameter: useSelector(system, selector, defaultValue)");let f=react.useRef(t),l=react.useRef(i),c=react.useRef(u),g=react.useRef(t),y=react.useRef(0);g.current!==t&&(g.current=t,y.current++),f.current=t,l.current=i,c.current=u;let K=y.current,v=react.useRef([]),D=react.useRef([]),k=react.useRef(b),m=react.useRef([]),P=react.useMemo(()=>n?new Set(Object.keys(n.derive)):new Set,[n]),F=react.useCallback(()=>n?adapterUtils.runTrackedSelector(n,P,f.current):{value:c.current,factKeys:[],deriveKeys:[]},[n,P]),I=react.useCallback(S=>{if(!n)return ()=>{};let p=()=>{for(let M of m.current)M();m.current=[];let{factKeys:R,deriveKeys:w}=F();v.current=R,D.current=w,R.length>0?m.current.push(n.facts.$store.subscribe(R,()=>{let M=F();adapterUtils.depsChanged(v.current,M.factKeys,D.current,M.deriveKeys)&&p(),S();})):w.length===0&&m.current.push(n.facts.$store.subscribeAll(S)),w.length>0&&m.current.push(n.subscribe(w,()=>{let M=F();adapterUtils.depsChanged(v.current,M.factKeys,D.current,M.deriveKeys)&&p(),S();}));};return p(),()=>{for(let R of m.current)R();m.current=[];}},[n,F,K]),C=react.useCallback(()=>{let S;if(!n)S=c.current;else {let{value:p}=F();S=p===void 0&&s?c.current:p;}return k.current!==b&&l.current(k.current,S)?k.current:(k.current=S,S)},[F,n,s]);return react.useSyncExternalStore(I,C,C)}function Me(e,t,r,o){let n=r!==void 0,u=o??adapterUtils.defaultEquality,s=react.useRef(t),i=react.useRef(u),f=react.useRef(r);s.current=t,i.current=u,f.current=r;let l=react.useRef(b),c=react.useMemo(()=>Object.keys(e.facts),[e]),g=react.useCallback(K=>{let v=c.map(D=>`${D}.*`);return e.subscribe(v,K)},[e,c]),y=react.useCallback(()=>{let K=s.current(e),v=K===void 0&&n?f.current:K;return l.current!==b&&i.current(l.current,v)?l.current:(l.current=v,v)},[e,n]);return react.useSyncExternalStore(g,y,y)}function X(e){return adapterUtils.assertSystem("useDispatch",e),react.useCallback(t=>{e.dispatch(t);},[e])}function Y(e,t,r){adapterUtils.assertSystem("useWatch",e);let o=react.useRef(r);o.current=r,react.useEffect(()=>e.watch(t,(n,u)=>{o.current(n,u);}),[e,t]);}function ee(e,t){adapterUtils.assertSystem("useInspect",e);let r=Re(e),o=t?.throttleMs,[n,u]=react.useState(r),s=react.useRef(null);return react.useEffect(()=>{if(!o||o<=0){s.current?.cleanup(),s.current=null;return}return s.current?.cleanup(),s.current=adapterUtils.createThrottle((...i)=>{u(i[0]);},o),()=>{s.current?.cleanup(),s.current=null;}},[o]),react.useEffect(()=>{s.current&&s.current.throttled(r);},[r]),!o||o<=0?r:n}function me(e){return adapterUtils.computeInspectState(e)}function Re(e){let t=react.useRef(null),r=react.useRef([]),o=react.useRef([]),n=react.useRef(null),u=react.useCallback(i=>{let f=e.facts.$store.subscribeAll(i),l=e.onSettledChange(i);return ()=>{f(),l();}},[e]),s=react.useCallback(()=>{let i=me(e),f=i.unmet.length===r.current.length&&i.unmet.every((g,y)=>g.id===r.current[y]),l=i.inflight.length===o.current.length&&i.inflight.every((g,y)=>g.id===o.current[y]),c=i.isSettled===n.current;return f&&l&&c&&t.current?t.current:(t.current=i,r.current=i.unmet.map(g=>g.id),o.current=i.inflight.map(g=>g.id),n.current=i.isSettled,i)},[e]);return react.useSyncExternalStore(u,s,s)}function he(e){adapterUtils.assertSystem("useHistory",e);let t=react.useRef(null),r=react.useCallback(n=>e.onHistoryChange(n),[e]),o=react.useCallback(()=>{let n=adapterUtils.buildHistoryState(e);return n?(t.current&&t.current.canGoBack===n.canGoBack&&t.current.canGoForward===n.canGoForward&&t.current.currentIndex===n.currentIndex&&t.current.totalSnapshots===n.totalSnapshots&&t.current.isPaused===n.isPaused||(t.current=n),t.current):null},[e]);return react.useSyncExternalStore(r,o,o)}function Ve(e,t){return Array.isArray(t)?xe(e,t):be(e,t)}function be(e,t){let r=react.useRef(b),o=react.useCallback(u=>e.subscribe(u),[e]),n=react.useCallback(()=>{let u=e.getStatus(t);if(r.current!==b){let s=r.current;if(s.pending===u.pending&&s.inflight===u.inflight&&s.failed===u.failed&&s.isLoading===u.isLoading&&s.hasError===u.hasError&&s.lastError===u.lastError)return r.current}return r.current=u,u},[e,t]);return react.useSyncExternalStore(o,n,n)}function xe(e,t){let r=react.useRef(null),o=react.useRef(""),n=react.useCallback(s=>e.subscribe(s),[e]),u=react.useCallback(()=>{let s={},i=[];for(let l of t){let c=e.getStatus(l);s[l]=c,i.push(`${l}:${c.pending}:${c.inflight}:${c.failed}:${c.hasError}:${c.lastError?.message??""}`);}let f=i.join("|");return f!==o.current&&(o.current=f,r.current=s),r.current??s},[e,...t]);return react.useSyncExternalStore(n,u,u)}var _=new WeakMap;function te(e){let t=_.get(e);return t||(t=new Map,_.set(e,t)),t}function qe(e,t){return Array.isArray(t)?ke(e,t):De(e,t)}function De(e,t){let r=e.getStatus(t);if(r.hasError&&r.lastError)throw r.lastError;if(r.isLoading){let o=te(e),n=o.get(t);throw n||(n=new Promise(u=>{let s=e.subscribe(()=>{e.getStatus(t).isLoading||(o.delete(t),s(),u());});}),o.set(t,n)),n}return r}function ke(e,t){let r={},o=false,n=null;for(let u of t){let s=e.getStatus(u);r[u]=s,s.hasError&&s.lastError&&!n&&(n=s.lastError),s.isLoading&&(o=true);}if(n)throw n;if(o){let u=te(e),s=t.slice().sort().join(","),i=u.get(s);throw i||(i=new Promise(f=>{let l=e.subscribe(()=>{t.every(g=>!e.getStatus(g).isLoading)&&(u.delete(s),l(),f());});}),u.set(s,i)),i}return r}function W(e,t){let r=react.useRef(null),o=react.useRef(null),n=react.useRef(null),u=t?.status===true,s="modules"in e;return r.current||(n.current=()=>{if(s){let{modules:F,...I}=e,C=t?.plugins??I.plugins??[],S=t?.history??I.history,p=t?.trace??I.trace,R=t?.errorBoundary??I.errorBoundary,w=t?.tickMs??I.tickMs,M=t?.zeroConfig??I.zeroConfig,T=t?.initialFacts??I.initialFacts,O=core.createSystem({modules:F,plugins:C.length>0?C:void 0,history:S,trace:p,errorBoundary:R,tickMs:w,zeroConfig:M,initialFacts:T});return O.initialize(),typeof window<"u"&&O.start(),O}let i="id"in e&&"schema"in e,f=i?e:e.module,l=i?{}:e,c=t?.plugins??l.plugins??[],g=t?.history??l.history,y=t?.trace??l.trace,K=t?.errorBoundary??l.errorBoundary,v=t?.tickMs??l.tickMs,D=t?.zeroConfig??l.zeroConfig,k=t?.initialFacts??l.initialFacts,m=[...c];u&&(o.current=core.createRequirementStatusPlugin(),m=[...m,o.current.plugin]);let P=core.createSystem({module:f,plugins:m.length>0?m:void 0,history:g,trace:y,errorBoundary:K,tickMs:v,zeroConfig:D,initialFacts:k});return P.initialize(),typeof window<"u"&&P.start(),P},r.current=n.current()),react.useEffect(()=>(!r.current&&n.current&&(r.current=n.current()),()=>{r.current?.destroy(),r.current=null,o.current=null;}),[]),u&&!s?{system:r.current,statusPlugin:o.current}:r.current}function Oe(e,t,r){let o=react.useRef(t);o.current=t;let n=react.useRef(r);n.current=r;let u=react.useCallback(i=>e.subscribe(o.current,i),[e]),s=react.useCallback(()=>n.current(e),[e]);return react.useSyncExternalStore(u,s,s)}function $e(e,t={}){let{facts:r,derived:o,status:n,...u}=t,s=r??[],i=o??[],f=s.length===0&&i.length===0,l=n?W(e,{status:true,...u}):W(e,u),c=n?l.system:l,g=n?l.statusPlugin:void 0,y=react.useMemo(()=>f?Object.keys(c.derive):[],[c,f]),K=react.useCallback(S=>{let p=[];return f?(p.push(c.facts.$store.subscribeAll(S)),y.length>0&&p.push(c.subscribe(y,S))):(s.length>0&&p.push(c.facts.$store.subscribe(s,S)),i.length>0&&p.push(c.subscribe(i,S))),()=>{for(let R of p)R();}},[c,f,...s,...i,...y]),v=react.useRef(b),D=react.useRef(b),k=react.useRef(null),m=react.useCallback(()=>{let S,p,R,w;if(f){S=c.facts.$store.toObject(),R=Object.keys(S),p={};for(let h of y)p[h]=c.read(h);w=y;}else {S={};for(let h of s)S[h]=c.facts[h];R=s,p={};for(let h of i)p[h]=c.read(h);w=i;}let M=v.current!==b;if(M){let h=v.current;if(Object.keys(h).length!==R.length)M=false;else for(let $ of R)if(!Object.is(h[$],S[$])){M=false;break}}let T=D.current!==b;if(T){let h=D.current;if(Object.keys(h).length!==w.length)T=false;else for(let $ of w)if(!Object.is(h[$],p[$])){T=false;break}}let O=M?v.current:S,se=T?D.current:p;return M||(v.current=S),T||(D.current=p),M&&T&&k.current||(k.current={facts:O,derived:se}),k.current},[c,f,...s,...i,...y]),P=react.useSyncExternalStore(K,m,m),F=react.useCallback(S=>c.dispatch(S),[c]),I=L(c),C={system:c,dispatch:F,events:I,facts:P.facts,derived:P.derived};return n&&g?{...C,statusPlugin:g}:C}function L(e){return adapterUtils.assertSystem("useEvents",e),react.useMemo(()=>e.events,[e])}function Ie(e,t){adapterUtils.assertSystem("useExplain",e);let r=react.useCallback(n=>{let u=e.facts.$store.subscribeAll(n),s=e.onSettledChange(n);return ()=>{u(),s();}},[e]),o=react.useCallback(()=>e.explain(t),[e,t]);return react.useSyncExternalStore(r,o,o)}function Be(e,t){adapterUtils.assertSystem("useConstraintStatus",e);let r=ee(e);return react.useMemo(()=>{let o=e.inspect();return t?o.constraints.find(n=>n.id===t)??null:o.constraints},[e,t,r])}function Ne(e,t,r){adapterUtils.assertSystem("useOptimisticUpdate",e);let[o,n]=react.useState(false),[u,s]=react.useState(null),i=react.useRef(null),f=react.useCallback(()=>{i.current&&(e.restore(i.current),i.current=null),n(false),s(null);},[e]),l=react.useCallback(c=>{i.current=e.getSnapshot(),n(true),s(null),e.batch(c);},[e]);return react.useEffect(()=>{if(!(!t||!r||!o))return t.subscribe(()=>{let c=t.getStatus(r);!c.isLoading&&!c.hasError?(i.current=null,n(false)):c.hasError&&(s(c.lastError),f());})},[t,r,o,f]),{mutate:l,isPending:o,error:u,rollback:f}}var ne=react.createContext(null);function He({snapshot:e,children:t}){return jsxRuntime.jsx(ne.Provider,{value:e,children:t})}function We(e,t){let r=react.useContext(ne),o=react.useMemo(()=>{let n=adapterUtils.mergeHydrationFacts(r,t?.initialFacts);return {...t??{},initialFacts:n}},[r,t]);return W(e,o)}function Le(){return {useFact:(e,t)=>G(e,t),useDerived:(e,t)=>J(e,t),useDispatch:e=>X(e),useEvents:e=>L(e),useWatch:(e,t,r)=>Y(e,t,r)}}var B=null;function we(){if(!B)try{B=ue("@directive-run/query").createQuerySystem;}catch{throw new Error("[Directive] @directive-run/query is not installed. Install it with: pnpm add @directive-run/query")}return B}function je(e){let t=react.useRef(e),r=react.useMemo(()=>{let u=we();return ()=>u(t.current)},[]),o=react.useRef(null),n=react.useRef(r);return n.current=r,o.current||(o.current=n.current()),react.useEffect(()=>(!o.current&&n.current&&(o.current=n.current()),typeof window<"u"&&o.current&&!o.current.isRunning&&o.current.start(),()=>{o.current?.destroy(),o.current=null;}),[]),o.current}var N=new WeakMap;function Ae(e,t){let r=react.useCallback(s=>e.subscribe([t],s),[e,t]),o=react.useCallback(()=>e.read(t),[e,t]),n=react.useSyncExternalStore(r,o,o);N.has(e)||N.set(e,new Map);let u=N.get(e);if(n?.status==="success"&&n?.data!==null)return u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.data;if(n?.status==="error"&&n?.error)throw u.has(t)&&(u.get(t).resolve(),u.delete(t)),n.error;if(!u.has(t)){let s,i=new Promise(l=>{s=l;});u.set(t,{promise:i,resolve:s});let f=e.subscribe([t],()=>{let l=e.read(t);if(l?.status==="success"||l?.status==="error"){let c=u.get(t);c&&(c.resolve(),u.delete(t)),f();}});}throw u.get(t).promise}function _e(e){let t=react.createContext(null);function r(){let n=react.useContext(t);if(!n)throw new Error("[Directive] useSystem called outside of <Provider>. Wrap your component tree with the Provider from createDirectiveContext().");return n}function o({children:n,system:u}){return jsxRuntime.jsx(t.Provider,{value:u??e,children:n})}return o.displayName="DirectiveProvider",{Provider:o,useSystem:r,useFact:n=>G(r(),n),useDerived:n=>J(r(),n),useEvents:()=>L(r()),useDispatch:()=>X(r()),useSelector:(n,u)=>ve(r(),n,u),useWatch:(n,u)=>Y(r(),n,u),useInspect:()=>ee(r()),useExplain:n=>Ie(r(),n),useHistory:()=>he(r())}}Object.defineProperty(exports,"shallowEqual",{enumerable:true,get:function(){return adapterUtils.shallowEqual}});exports.DirectiveHydrator=He;exports.createDirectiveContext=_e;exports.createTypedHooks=Le;exports.useConstraintStatus=Be;exports.useDerived=J;exports.useDirective=$e;exports.useDirectiveRef=W;exports.useDispatch=X;exports.useEvents=L;exports.useExplain=Ie;exports.useFact=G;exports.useHistory=he;exports.useHydratedSystem=We;exports.useInspect=ee;exports.useNamespacedSelector=Oe;exports.useOptimisticUpdate=Ne;exports.useQuerySystem=je;exports.useRequirementStatus=Ve;exports.useSelector=ve;exports.useSuspenseQuery=Ae;exports.useSuspenseRequirement=qe;exports.useWatch=Y;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|