UNPKG

4.82 kBJavaScriptView Raw
1System.register([],function(W){"use strict";return{execute:function(){W("atom",N);let L=0;function N(r,i){const h=`atom${++L}`,v={toString:()=>h};return typeof r=="function"?v.read=r:(v.init=r,v.read=R,v.write=T),i&&(v.write=i),v}function R(r){return r(this)}function T(r,i,h){return i(this,typeof h=="function"?h(r(this)):h)}const M=(r,i)=>r.unstable_is?r.unstable_is(i):i===r,$=r=>"init"in r,A=r=>!!r.write,m=new WeakMap,U=(r,i)=>{m.set(r,i),r.catch(()=>{}).finally(()=>m.delete(r))},O=(r,i)=>{const h=m.get(r);h&&(m.delete(r),h(i))},_=(r,i)=>{r.status="fulfilled",r.value=i},C=(r,i)=>{r.status="rejected",r.reason=i},V=r=>typeof(r==null?void 0:r.then)=="function",E=(r,i)=>!!r&&"v"in r&&"v"in i&&Object.is(r.v,i.v),q=(r,i)=>!!r&&"e"in r&&"e"in i&&Object.is(r.e,i.e),S=r=>!!r&&"v"in r&&r.v instanceof Promise,K=(r,i)=>"v"in r&&"v"in i&&r.v.orig&&r.v.orig===i.v.orig,y=r=>{if("e"in r)throw r.e;return r.v},x=()=>{const r=new WeakMap,i=new WeakMap,h=[],v=new WeakMap,g=t=>r.get(t),B=(t,s)=>{s.d.forEach((u,n)=>{var e;if(!v.has(n)){const c=g(n);(e=h[h.length-1])==null||e.add(n),v.set(n,[c,new Set]),c&&B(n,c)}v.get(n)[1].add(t)})},F=(t,s)=>{var u;const n=g(t);if(r.set(t,s),v.has(t)||((u=h[h.length-1])==null||u.add(t),v.set(t,[n,new Set]),B(t,s)),S(n)){const e="v"in s?s.v instanceof Promise?s.v:Promise.resolve(s.v):Promise.reject(s.e);n.v!==e&&O(n.v,e)}},G=(t,s,u,n)=>{const e=new Map(n?s.d:null);let c=!1;u.forEach((o,a)=>{!o&&M(t,a)&&(o=s),o&&(e.set(a,o),s.d.get(a)!==o&&(c=!0))}),(c||s.d.size!==e.size)&&(s.d=e)},k=(t,s,u,n)=>{const e=g(t),c={d:(e==null?void 0:e.d)||new Map,v:s};if(u&&G(t,c,u,n),E(e,c)&&e.d===c.d)return e;if(S(e)&&S(c)&&K(e,c)){if(e.d===c.d)return e;c.v=e.v}return F(t,c),c},H=(t,s,u,n)=>{if(V(s)){let e;const c=()=>{const a=g(t);if(!S(a)||a.v!==o)return;const d=k(t,o,u);i.has(t)&&a.d!==d.d&&J(t,d,a.d)},o=new Promise((a,d)=>{let l=!1;s.then(f=>{l||(l=!0,_(o,f),a(f),c())},f=>{l||(l=!0,C(o,f),d(f),c())}),e=f=>{l||(l=!0,f.then(w=>_(o,w),w=>C(o,w)),a(f))}});return o.orig=s,o.status="pending",U(o,a=>{a&&e(a),n==null||n()}),k(t,o,u,!0)}return k(t,s,u)},Q=(t,s,u)=>{const n=g(t),e={d:(n==null?void 0:n.d)||new Map,e:s};return u&&G(t,e,u),q(n,e)&&n.d===e.d?n:(F(t,e),e)},p=(t,s)=>{const u=g(t);if(!s&&u&&(i.has(t)||Array.from(u.d).every(([l,f])=>{if(l===t)return!0;const w=p(l);return w===f||E(w,f)})))return u;const n=new Map;let e=!0;const c=l=>{if(M(t,l)){const w=g(l);if(w)return n.set(l,w),y(w);if($(l))return n.set(l,void 0),l.init;throw new Error("no atom init")}const f=p(l);return n.set(l,f),y(f)};let o,a;const d={get signal(){return o||(o=new AbortController),o.signal},get setSelf(){return!a&&A(t)&&(a=(...l)=>{if(!e)return z(t,...l)}),a}};try{const l=t.read(c,d);return H(t,l,n,()=>o==null?void 0:o.abort())}catch(l){return Q(t,l,n)}finally{e=!1}},X=t=>y(p(t)),Y=t=>{const s=o=>{var a,d;const l=new Set((a=i.get(o))==null?void 0:a.t);return(d=v.get(o))==null||d[1].forEach(f=>{l.add(f)}),l},u=new Array,n=new Set,e=o=>{if(!n.has(o)){n.add(o);for(const a of s(o))o!==a&&e(a);u.push(o)}};e(t);const c=new Set([t]);for(let o=u.length-1;o>=0;--o){const a=u[o],d=g(a);if(!d)continue;let l=!1;for(const f of d.d.keys())if(f!==a&&c.has(f)){l=!0;break}if(l){const f=p(a,!0);E(d,f)||c.add(a)}}},I=(t,...s)=>{const u=e=>y(p(e)),n=(e,...c)=>{const o=h.length>0;o||h.push(new Set([e]));let a;if(M(t,e)){if(!$(e))throw new Error("atom not writable");const d=g(e),l=H(e,c[0]);E(d,l)||Y(e)}else a=I(e,...c);return o||j(h.pop()),a};return t.write(u,n,...s)},z=(t,...s)=>{h.push(new Set([t]));const u=I(t,...s);return j(h.pop()),u},D=(t,s,u)=>{var n;const e=i.get(t);if(e)return s&&e.t.add(s),e;const c=u||[];(n=g(t))==null||n.d.forEach((a,d)=>{d!==t&&D(d,t,c)}),p(t);const o={t:new Set(s&&[s]),l:new Set};if(i.set(t,o),A(t)&&t.onMount){const{onMount:a}=t;c.push(()=>{const d=a((...l)=>z(t,...l));d&&(o.u=d)})}return u||c.forEach(a=>a()),o},Z=(t,s)=>!s.l.size&&(!s.t.size||s.t.size===1&&s.t.has(t)),P=(t,s)=>{if(!Z(t,s))return;const u=s.u;u&&u(),i.delete(t);const n=g(t);n&&(S(n)&&O(n.v),n.d.forEach((e,c)=>{if(c!==t){const o=i.get(c);o&&(o.t.delete(t),P(c,o))}}))},J=(t,s,u)=>{const n=new Set(s.d.keys()),e=new Set;u==null||u.forEach((c,o)=>{if(n.has(o)){n.delete(o);return}e.add(o);const a=i.get(o);a&&a.t.delete(t)}),n.forEach(c=>{D(c,t)}),e.forEach(c=>{const o=i.get(c);o&&P(c,o)})},j=t=>{const s=[],u=n=>{var e;if(!v.has(n))return;const[c,o]=v.get(n);v.delete(n),s.push([n,c]),o.forEach(u),(e=g(n))==null||e.d.forEach((a,d)=>u(d))};t.forEach(u),s.forEach(([n,e])=>{const c=g(n);if(c&&c!==e){const o=i.get(n);o&&c.d!==(e==null?void 0:e.d)&&J(n,c,e==null?void 0:e.d),o&&!(!S(e)&&(E(e,c)||q(e,c)))&&o.l.forEach(a=>a())}})};return{get:X,set:z,sub:(t,s)=>{const u=D(t);j([t]);const n=u.l;return n.add(s),()=>{n.delete(s),P(t,u)}}}};let b;W({createStore:x,getDefaultStore:()=>(b||(b=x()),b)})}}});