r18gs
Version:
A simple yet elegant, light weight, react18 global store to replace Zustand for better tree shaking.
2 lines (1 loc) • 1.13 kB
JavaScript
import{a as u}from"./chunk-IDU63W3I.mjs";import{useSyncExternalStore as x}from"react";var g=globalThis;g.rgs||(g.rgs={});var a=g.rgs,S=(e,n,s)=>{let o=[];for(let r of[n,s])for(let t in r)n[t]!==s[t]&&o.push(t);e.l.forEach(({l:r,s:[t,i]})=>(!(s instanceof Object)||o.filter(l=>(!t||t.test(l))&&(!i||!i.test(l))).length)&&r())},h=(e,n,s)=>{let o=a[e],r=()=>o.v;return[x(i=>{let l={l:i,s:[n,s]};return o.l.push(l),()=>{o.l=o.l.filter(c=>c!==l)}},r,r),o.s]},f=!1,v=(e,n)=>u(void 0,null,function*(){var r;let s=a[e],o=t=>{let i=s.v;s.v=t,S(s,i,t)};for(let t of n)yield(r=t.init)==null?void 0:r.call(t,e,s.v,o);f=!0}),R=(e,n,s=[],o=!1)=>{if(n=n instanceof Function?n():n,o){a[e]={v:n,l:[],s:null};return}let r=i=>{if(!f)return;let l=a[e],c=l.v;l.v=i instanceof Function?i(c):i,S(l,c,l.v),s.forEach(T=>{var p;return(p=T.onChange)==null?void 0:p.call(T,e,l.v)})},t=a[e];t?(t.v=n,t.s=r):a[e]={v:n,l:[],s:r},v(e,s)},E=(e,n,s,o=!1,r,t)=>{var i;return(i=a[e])!=null&&i.s||R(e,n,s,o),h(e,r,t)},y=e=>{let n=e.map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));return new RegExp(`^(${n.join("|")})$`)};export{a,S as b,h as c,R as d,E as e,y as f};