react-shared-states 2.1.4-beta → 2.1.6-beta
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/main.esm.js +22 -22
- package/dist/main.min.js +2 -2
- package/package.json +1 -1
package/dist/main.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* react-shared-states v2.1.
|
|
2
|
+
* react-shared-states v2.1.6-beta
|
|
3
3
|
* (c) Hichem Taboukouyout
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
* Github: github.com/HichemTab-tech/react-shared-states
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { jsx as T } from "react/jsx-runtime";
|
|
9
|
-
import { createContext as W, useMemo as b, useContext as
|
|
9
|
+
import { createContext as W, useMemo as b, useContext as k, useEffect as P, useSyncExternalStore as O, useRef as Y } from "react";
|
|
10
10
|
let M = !1;
|
|
11
11
|
const ee = (a) => {
|
|
12
12
|
M = a;
|
|
@@ -22,7 +22,7 @@ const ee = (a) => {
|
|
|
22
22
|
}, q = () => Math.random().toString(36).substring(2, 15), z = W(void 0), te = ({ children: a, scopeName: t }) => {
|
|
23
23
|
if (t && t.includes("//")) throw new Error("scopeName cannot contain '//'");
|
|
24
24
|
return t || (t = b(() => q(), [])), /* @__PURE__ */ T(z.Provider, { value: { scopeName: t }, children: a });
|
|
25
|
-
}, H = () =>
|
|
25
|
+
}, H = () => k(z), B = [], D = /* @__PURE__ */ Symbol.for("react-shared-states.manager");
|
|
26
26
|
function J(a, t = () => null) {
|
|
27
27
|
const s = globalThis;
|
|
28
28
|
return s[D] || (s[D] = {}), s[D][a] || (s[D][a] = new l(t)), s[D][a];
|
|
@@ -114,7 +114,7 @@ class l {
|
|
|
114
114
|
e?.(), K(`[${l.prefix(t, s)}]`, "unmount effect");
|
|
115
115
|
const i = this.get(t, s);
|
|
116
116
|
i && i.listeners?.length === 0 && this.clear(t, s);
|
|
117
|
-
}, [
|
|
117
|
+
}, []);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
class $ {
|
|
@@ -278,8 +278,8 @@ const V = /* @__PURE__ */ Q(X), h = l.getInstance("sharedStatesManager"), re = n
|
|
|
278
278
|
function ne(a, t, s) {
|
|
279
279
|
let e, i, r = s;
|
|
280
280
|
if (typeof a != "string") {
|
|
281
|
-
const { key: u, initialValue: v, prefix:
|
|
282
|
-
e = u, i = v, r =
|
|
281
|
+
const { key: u, initialValue: v, prefix: x } = a;
|
|
282
|
+
e = u, i = v, r = x;
|
|
283
283
|
} else
|
|
284
284
|
e = E(a), i = t;
|
|
285
285
|
const { prefix: n } = j(r);
|
|
@@ -302,7 +302,7 @@ function ie(a, t, s) {
|
|
|
302
302
|
e = f, i = u;
|
|
303
303
|
} else
|
|
304
304
|
e = E(a);
|
|
305
|
-
const { prefix: r } = j(i), n =
|
|
305
|
+
const { prefix: r } = j(i), n = Y(void 0), o = b(() => (f) => (h.init(e, r, void 0), h.addListener(e, r, f), () => {
|
|
306
306
|
h.removeListener(e, r, f);
|
|
307
307
|
}), [e, r]), c = b(() => () => {
|
|
308
308
|
const f = h.get(e, r)?.value, u = t(f);
|
|
@@ -318,8 +318,8 @@ const y = l.getInstance("SharedFunctionValue"), I = new $(y), A = {
|
|
|
318
318
|
function oe(a, t, s) {
|
|
319
319
|
let e, i, r = s;
|
|
320
320
|
if (typeof a != "string") {
|
|
321
|
-
const { key: u, fn: v, prefix:
|
|
322
|
-
e = u, i = v, r =
|
|
321
|
+
const { key: u, fn: v, prefix: x } = a;
|
|
322
|
+
e = u, i = v, r = x;
|
|
323
323
|
} else
|
|
324
324
|
e = E(a), i = t;
|
|
325
325
|
const { prefix: n } = j(r);
|
|
@@ -333,14 +333,14 @@ function oe(a, t, s) {
|
|
|
333
333
|
() => () => y.get(e, n).value,
|
|
334
334
|
[e, n]
|
|
335
335
|
), d = O(o, c), f = async (u, ...v) => {
|
|
336
|
-
const
|
|
337
|
-
if (!u && (
|
|
338
|
-
I.update(e, (
|
|
336
|
+
const x = y.get(e, n);
|
|
337
|
+
if (!u && (x.value.isLoading || x.value.results !== void 0)) return x.value;
|
|
338
|
+
I.update(e, (S) => ({ ...S, isLoading: !0, error: void 0 }), n);
|
|
339
339
|
try {
|
|
340
|
-
const
|
|
341
|
-
I.set(e, { results:
|
|
342
|
-
} catch (
|
|
343
|
-
I.update(e, (p) => ({ ...p, isLoading: !1, error:
|
|
340
|
+
const S = await i(...v);
|
|
341
|
+
I.set(e, { results: S, isLoading: !1, error: void 0 }, n);
|
|
342
|
+
} catch (S) {
|
|
343
|
+
I.update(e, (p) => ({ ...p, isLoading: !1, error: S }), n);
|
|
344
344
|
}
|
|
345
345
|
};
|
|
346
346
|
return y.useEffect(e, n), {
|
|
@@ -388,14 +388,14 @@ function ue(a, t, s) {
|
|
|
388
388
|
L.update(e, (m) => ({ ...m, data: p }), o);
|
|
389
389
|
}, v = (p) => {
|
|
390
390
|
L.update(e, (m) => ({ ...m, isLoading: !1, data: void 0, error: p }), o);
|
|
391
|
-
},
|
|
391
|
+
}, x = () => {
|
|
392
392
|
L.update(e, (p) => ({ ...p, isLoading: !1 }), o);
|
|
393
|
-
},
|
|
393
|
+
}, S = async (p) => {
|
|
394
394
|
const m = g.get(e, o);
|
|
395
395
|
if (p && await C(e, o), m.value.subscribed && !p) return m.value;
|
|
396
396
|
K("triggered !!"), L.update(e, (_) => ({ ..._, isLoading: !0, error: void 0 }), o);
|
|
397
397
|
try {
|
|
398
|
-
const _ = await i(u, v,
|
|
398
|
+
const _ = await i(u, v, x);
|
|
399
399
|
L.update(e, (w) => ({ ...w, unsubscribe: _, subscribed: !0, isLoading: !1 }), o);
|
|
400
400
|
} catch (_) {
|
|
401
401
|
L.update(e, (w) => ({ ...w, isLoading: !1, error: _ }), o);
|
|
@@ -404,14 +404,14 @@ function ue(a, t, s) {
|
|
|
404
404
|
return P(() => () => {
|
|
405
405
|
K(`[${l.prefix(e, o)}]`, "unmount effect2"), g.get(e, o)?.listeners.length === 0 && C(e, o);
|
|
406
406
|
}, [e, o]), g.useEffect(e, o), P(() => {
|
|
407
|
-
n &&
|
|
407
|
+
n && S(!1);
|
|
408
408
|
}, []), {
|
|
409
409
|
state: f,
|
|
410
410
|
trigger: () => {
|
|
411
|
-
|
|
411
|
+
S(!1);
|
|
412
412
|
},
|
|
413
413
|
forceTrigger: () => {
|
|
414
|
-
|
|
414
|
+
S(!0);
|
|
415
415
|
},
|
|
416
416
|
unsubscribe: () => {
|
|
417
417
|
C(e, o);
|
package/dist/main.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* react-shared-states v2.1.
|
|
2
|
+
* react-shared-states v2.1.6-beta
|
|
3
3
|
* (c) Hichem Taboukouyout
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
* Github: github.com/HichemTab-tech/react-shared-states
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
(function(f,D){typeof exports=="object"&&typeof module<"u"?D(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],D):(f=typeof globalThis<"u"?globalThis:f||self,D(f.ReactSharedStates={},f.jsxRuntime,f.React))})(this,(function(f,D,h){"use strict";f.isDevMode=!1;const z=a=>{f.isDevMode=a},O=(...a)=>{f.isDevMode&&console.log("%c[react-shared-states]","color: #007acc; font-weight: bold",...a)},w=a=>{if(!a)throw new Error("Value is empty");return a},q=()=>Math.random().toString(36).substring(2,15),T=h.createContext(void 0),V=({children:a,scopeName:t})=>{if(t&&t.includes("//"))throw new Error("scopeName cannot contain '//'");return t||(t=h.useMemo(()=>q(),[])),D.jsx(T.Provider,{value:{scopeName:t},children:a})},W=()=>h.useContext(T),$=[],A=Symbol.for("react-shared-states.manager");function
|
|
8
|
+
(function(f,D){typeof exports=="object"&&typeof module<"u"?D(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],D):(f=typeof globalThis<"u"?globalThis:f||self,D(f.ReactSharedStates={},f.jsxRuntime,f.React))})(this,(function(f,D,h){"use strict";f.isDevMode=!1;const z=a=>{f.isDevMode=a},O=(...a)=>{f.isDevMode&&console.log("%c[react-shared-states]","color: #007acc; font-weight: bold",...a)},w=a=>{if(!a)throw new Error("Value is empty");return a},q=()=>Math.random().toString(36).substring(2,15),T=h.createContext(void 0),V=({children:a,scopeName:t})=>{if(t&&t.includes("//"))throw new Error("scopeName cannot contain '//'");return t||(t=h.useMemo(()=>q(),[])),D.jsx(T.Provider,{value:{scopeName:t},children:a})},W=()=>h.useContext(T),$=[],A=Symbol.for("react-shared-states.manager");function k(a,t=()=>null){const s=globalThis;return s[A]||(s[A]={}),s[A][a]||(s[A][a]=new l(t)),s[A][a]}class l{constructor(t=()=>null){this.defaultValue=t,this._uniqueId=q()}data=new Map;_uniqueId;__get__uniqueId(){return this._uniqueId}static getInstance(t,s=()=>null){return k(t,s)}addListener(t,s,e){const i=l.prefix(t,s),r=this.data.get(i);r&&r.listeners.push(e)}removeListener(t,s,e){const i=l.prefix(t,s),r=this.data.get(i);r&&(r.listeners=r.listeners.filter(n=>n!==e))}callListeners(t,s){const e=l.prefix(t,s),i=this.data.get(e);i&&i.listeners.forEach(r=>r())}init(t,s,e,i=!1){const r=l.prefix(t,s);this.data.has(r)||this.data.set(r,{value:e,isStatic:i||void 0,listeners:[]})}createStatic(t,s,e){const i=e??"_global",r={key:q(),prefix:i,...t};return $.push(r),this.init(r.key,r.prefix,s,!0),this.defaultValue=()=>s,r}initStatic(t){const{key:s,prefix:e}=t;this.init(s,e,this.defaultValue(),!0)}clearAll(t=!1,s=!1){this.data.forEach((e,i)=>{const[r,n]=l.extractPrefix(i);this.clear(n,r,t,s)})}clear(t,s,e=!1,i=!1){const r=l.prefix(t,s);e||this.callListeners(t,s);const n=this.data.get(r);if(n&&(this.data.delete(r),n.isStatic&&!i)){const o=$.find(u=>u.key===t&&u.prefix===s);o&&this.initStatic(o)}}get(t,s){let e=this.has(t,s);if(e)return this.data.get(e)}setValue(t,s,e){const i=l.prefix(t,s),r=this.data.get(i);r&&(r.value=e,this.data.set(i,r))}has(t,s){return this.data.has(l.prefix(t,s))?l.prefix(t,s):this.data.has(l.prefix(t,"_global"))?l.prefix(t,"_global"):void 0}static prefix(t,s){if(t.includes("//"))throw new Error("key cannot contain '//'");return`${s}//${t}`}static extractPrefix(t){const s=t.split("//");return[s[0],s.slice(1).join("//")]}useEffect(t,s,e=null){h.useEffect(()=>()=>{e?.(),O(`[${l.prefix(t,s)}]`,"unmount effect");const i=this.get(t,s);i&&i.listeners?.length===0&&this.clear(t,s)},[])}}class P{constructor(t){this.sharedData=t,this._uniqueId=q()}_uniqueId;_get(t,s){let e,i=s;if(typeof t!="string"){const{key:o,prefix:u}=t;e=o,i=u}else e=w(t);const r=i||"_global",n=this.sharedData.get(e,r);return n?{value:n.value,key:e,prefix:r}:{key:e,prefix:r,value:void 0}}__log_instance_id(){return{apiId:this._uniqueId,managerId:this.sharedData.__get__uniqueId()}}get(t,s){return this._get(t,s).value}set(t,s,e){let i,r=e;if(typeof t!="string"){const{key:o,prefix:u}=t;i=o,r=u}else i=w(t);const n=r||"_global";this.sharedData.init(i,n,s),this.sharedData.setValue(i,n,s),this.sharedData.callListeners(i,n)}update(t,s,e){const i=this._get(t,e);if(i){const r=s(i.value);this.set(i.key,r,i.prefix)}}clearAll(){this.sharedData.clearAll()}clearScope(t){const s=t||"_global";this.sharedData.data.forEach((e,i)=>{const[r,n]=l.extractPrefix(i);r===s&&(this.sharedData.clear(n,r),this.sharedData.callListeners(n,r))})}resolve(t){const{key:s,prefix:e}=t;return this.get(s,e)}clear(t,s){let e,i;typeof t=="string"?(e=t,i=s||"_global"):(e=t.key,i=t.prefix),this.sharedData.clear(e,i)}has(t,s="_global"){const e=s||"_global";return!!this.sharedData.has(t,e)}getAll(){const t={};return this.sharedData.data.forEach((s,e)=>{const[i,r]=l.extractPrefix(e);t[i]=t[i]||{},t[i][r]=s.value}),t}subscribe(t,s,e){let i,r;return typeof t=="string"?(i=t,r=e||"_global"):(i=t.key,r=t.prefix),this.sharedData.addListener(i,r,s),()=>{this.sharedData.removeListener(i,r,s)}}}const I=a=>{const t=W();return{prefix:a??t?.scopeName??"_global"}};function Y(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var C,B;function H(){if(B)return C;B=1;var a=typeof Element<"u",t=typeof Map=="function",s=typeof Set=="function",e=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function i(r,n){if(r===n)return!0;if(r&&n&&typeof r=="object"&&typeof n=="object"){if(r.constructor!==n.constructor)return!1;var o,u,p;if(Array.isArray(r)){if(o=r.length,o!=n.length)return!1;for(u=o;u--!==0;)if(!i(r[u],n[u]))return!1;return!0}var d;if(t&&r instanceof Map&&n instanceof Map){if(r.size!==n.size)return!1;for(d=r.entries();!(u=d.next()).done;)if(!n.has(u.value[0]))return!1;for(d=r.entries();!(u=d.next()).done;)if(!i(u.value[1],n.get(u.value[0])))return!1;return!0}if(s&&r instanceof Set&&n instanceof Set){if(r.size!==n.size)return!1;for(d=r.entries();!(u=d.next()).done;)if(!n.has(u.value[0]))return!1;return!0}if(e&&ArrayBuffer.isView(r)&&ArrayBuffer.isView(n)){if(o=r.length,o!=n.length)return!1;for(u=o;u--!==0;)if(r[u]!==n[u])return!1;return!0}if(r.constructor===RegExp)return r.source===n.source&&r.flags===n.flags;if(r.valueOf!==Object.prototype.valueOf&&typeof r.valueOf=="function"&&typeof n.valueOf=="function")return r.valueOf()===n.valueOf();if(r.toString!==Object.prototype.toString&&typeof r.toString=="function"&&typeof n.toString=="function")return r.toString()===n.toString();if(p=Object.keys(r),o=p.length,o!==Object.keys(n).length)return!1;for(u=o;u--!==0;)if(!Object.prototype.hasOwnProperty.call(n,p[u]))return!1;if(a&&r instanceof Element)return!1;for(u=o;u--!==0;)if(!((p[u]==="_owner"||p[u]==="__v"||p[u]==="__o")&&r.$$typeof)&&!i(r[p[u]],n[p[u]]))return!1;return!0}return r!==r&&n!==n}return C=function(n,o){try{return i(n,o)}catch(u){if((u.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw u}},C}var J=H();const G=Y(J),g=l.getInstance("sharedStatesManager"),Q=new P(g),U=(a,t)=>g.createStatic({initialValue:a},a,t);function X(a,t,s){let e,i,r=s;if(typeof a!="string"){const{key:c,initialValue:y,prefix:m}=a;e=c,i=y,r=m}else e=w(a),i=t;const{prefix:n}=I(r);g.init(e,n,i);const o=h.useMemo(()=>c=>(g.init(e,n,t),g.addListener(e,n,c),()=>{g.removeListener(e,n,c)}),[e,n,t]),u=h.useMemo(()=>()=>g.get(e,n)?.value,[e,n]),p=h.useSyncExternalStore(o,u),d=c=>{const y=typeof c=="function"?c(g.get(e,n)?.value):c;G(y,p)||(g.setValue(e,n,y),g.callListeners(e,n))};return g.useEffect(e,n),[p,d]}function Z(a,t,s){let e,i=s;if(typeof a!="string"){const{key:d,prefix:c}=a;e=d,i=c}else e=w(a);const{prefix:r}=I(i),n=h.useRef(void 0),o=h.useMemo(()=>d=>(g.init(e,r,void 0),g.addListener(e,r,d),()=>{g.removeListener(e,r,d)}),[e,r]),u=h.useMemo(()=>()=>{const d=g.get(e,r)?.value,c=t(d);return G(n.current,c)?n.current:(n.current=c,c)},[e,r,t]),p=h.useSyncExternalStore(o,u);return g.useEffect(e,r),p}const x=l.getInstance("SharedFunctionValue"),M=new P(x),F={results:void 0,isLoading:!1,error:void 0},N=(a,t)=>x.createStatic({fn:a},F,t);function ee(a,t,s){let e,i,r=s;if(typeof a!="string"){const{key:c,fn:y,prefix:m}=a;e=c,i=y,r=m}else e=w(a),i=t;const{prefix:n}=I(r);x.init(e,n,F);const o=h.useMemo(()=>c=>(x.init(e,n,F),x.addListener(e,n,c),()=>{x.removeListener(e,n,c)}),[e,n]),u=h.useMemo(()=>()=>x.get(e,n).value,[e,n]),p=h.useSyncExternalStore(o,u),d=async(c,...y)=>{const m=x.get(e,n);if(!c&&(m.value.isLoading||m.value.results!==void 0))return m.value;M.update(e,b=>({...b,isLoading:!0,error:void 0}),n);try{const b=await i(...y);M.set(e,{results:b,isLoading:!1,error:void 0},n)}catch(b){M.update(e,S=>({...S,isLoading:!1,error:b}),n)}};return x.useEffect(e,n),{state:p,trigger:(...c)=>{d(!1,...c)},forceTrigger:(...c)=>{d(!0,...c)},clear:()=>{M.set(e,F,n)}}}const v=l.getInstance("SharedSubscription"),E=new P(v),R={data:void 0,isLoading:!1,error:void 0,subscribed:!1,unsubscribe:void 0},te=(a,t,s)=>v.createStatic({subscriber:a},{...R,data:t?.initialValue},s);async function K(a,t){const s=v.get(a,t);s?.value.unsubscribe&&(s.value.unsubscribe(),E.update(a,e=>({...e,unsubscribe:void 0,subscribed:!1}),t))}function re(a,t,s){let e,i,r=s,n=!1;if(typeof a!="string"){const{key:S,subscriber:_,prefix:L,triggerImmediately:j}=a;e=S,i=_,r=L,n=j??!1}else e=w(a),i=t;const{prefix:o}=I(r);v.init(e,o,R);const u=h.useMemo(()=>S=>(v.init(e,o,R),v.addListener(e,o,S),()=>{v.removeListener(e,o,S)}),[e,o]),p=h.useMemo(()=>()=>v.get(e,o).value,[e,o]),d=h.useSyncExternalStore(u,p),c=S=>{E.update(e,_=>({..._,data:S}),o)},y=S=>{E.update(e,_=>({..._,isLoading:!1,data:void 0,error:S}),o)},m=()=>{E.update(e,S=>({...S,isLoading:!1}),o)},b=async S=>{const _=v.get(e,o);if(S&&await K(e,o),_.value.subscribed&&!S)return _.value;O("triggered !!"),E.update(e,L=>({...L,isLoading:!0,error:void 0}),o);try{const L=await i(c,y,m);E.update(e,j=>({...j,unsubscribe:L,subscribed:!0,isLoading:!1}),o)}catch(L){E.update(e,j=>({...j,isLoading:!1,error:L}),o)}};return h.useEffect(()=>()=>{O(`[${l.prefix(e,o)}]`,"unmount effect2"),v.get(e,o)?.listeners.length===0&&K(e,o)},[e,o]),v.useEffect(e,o),h.useEffect(()=>{n&&b(!1)},[]),{state:d,trigger:()=>{b(!1)},forceTrigger:()=>{b(!0)},unsubscribe:()=>{K(e,o)}}}f.SharedStatesProvider=V,f.createSharedFunction=N,f.createSharedState=U,f.createSharedSubscription=te,f.setDevMode=z,f.sharedFunctionsApi=M,f.sharedStatesApi=Q,f.sharedSubscriptionsApi=E,f.useSharedContext=I,f.useSharedFunction=ee,f.useSharedState=X,f.useSharedStateSelector=Z,f.useSharedSubscription=re,Object.defineProperty(f,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED