@atom.io/template-solid-lossless-numbers 0.0.16 → 0.0.18

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.
@@ -3,8 +3,8 @@ $ vite build
3
3
  
4
4
  rendering chunks...
5
5
  computing gzip size...
6
- dist/index.html 0.39 kB │ gzip: 0.27 kB
7
- dist/assets/index-lprFsvty.css 3.29 kB │ gzip: 1.11 kB
8
- dist/assets/index-BWRgoXaC.js 82.02 kB │ gzip: 24.10 kB
6
+ dist/index.html 0.39 kB │ gzip: 0.28 kB
7
+ dist/assets/index-DMbEQKRi.css 3.29 kB │ gzip: 1.11 kB
8
+ dist/assets/index-BzU6CUUp.js 82.02 kB │ gzip: 24.10 kB
9
9
 
10
- ✓ built in 380ms
10
+ ✓ built in 370ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - 26697cd: Replace template boilerplate READMEs with generated-project guides.
8
+ - Updated dependencies [26697cd]
9
+ - Updated dependencies [03d6465]
10
+ - atom.io@0.47.4
11
+
12
+ ## 0.0.17
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [fbc86fe]
17
+ - Updated dependencies [fbc86fe]
18
+ - atom.io@0.47.3
19
+
3
20
  ## 0.0.16
4
21
 
5
22
  ### Patch Changes
package/README.md CHANGED
@@ -1,18 +1,36 @@
1
- # Solid Rationality Playground
1
+ # Solid Lossless Numbers
2
2
 
3
- A Vite + Solid + `atom.io/solid` template for exploring exact rational arithmetic with the `rationality` package.
3
+ A Solid + Vite starter for exploring exact rational arithmetic with
4
+ `atom.io/solid` and the `rationality` package.
4
5
 
5
- ## What it shows
6
+ ## What It Shows
6
7
 
7
- - editable `Rational` instances stored in `atom.io`
8
- - exact simplification and consolidation
9
- - chained multiplication and division across multiple rationals
10
- - comparison between rationals without floating-point drift
11
- - prime-factor inspection of the simplified numerator and denominator
8
+ - atoms and atom families for editable rational inputs
9
+ - mutable atom state backed by an ordered list transceiver
10
+ - selector families for simplified fractions, decimal views, and float precision
11
+ - transactions for applying arithmetic operations across related state
12
12
 
13
- ## Local development
13
+ ## Run It
14
14
 
15
- ```bash
16
- bun install
17
- bun run dev
15
+ ```sh
16
+ npm run dev
18
17
  ```
18
+
19
+ Build and preview the production app:
20
+
21
+ ```sh
22
+ npm run build
23
+ npm run preview
24
+ ```
25
+
26
+ ## Where To Look
27
+
28
+ - `src/App.tsx`: the atom.io state model, Solid components, and rational arithmetic UI.
29
+ - `src/App.tsx.module.css`: component-scoped styling for the playground.
30
+ - `src/globals.css`: global page styling.
31
+
32
+ ## Next Ideas
33
+
34
+ - Add named saved calculations.
35
+ - Persist the rational list between reloads.
36
+ - Add tests around selectors that detect floating-point precision.
@@ -1,4 +1,4 @@
1
1
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return t(this.context.count)},getNextContextId(){return t(this.context.count++)}};function t(t){let n=String(t),r=n.length-1;return e.context.id+(r?String.fromCharCode(96+r):``)+n}function n(t){e.context=t}function r(){return{...e.context,id:e.getNextContextId(),count:0}}var i=(e,t)=>e===t,a=Symbol(`solid-track`),o={equals:i},s=null,c=_e,l=1,u=2,d={owned:null,cleanups:null,context:null,owner:null},f=null,p=null,m=null,h=null,g=null,_=null,v=null,y=0;function ee(e,t){let n=g,r=f,i=e.length===0,a=t===void 0?r:t,o=i?d:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>S(()=>E(o)));f=o,g=null;try{return T(s,!0)}finally{g=n,f=r}}function te(e,t){t=t?Object.assign({},o,t):o;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[fe.bind(n),e=>(typeof e==`function`&&(e=p&&p.running&&p.sources.has(n)?e(n.tValue):e(n.value)),pe(n,e))]}function b(e,t,n){let r=he(e,t,!1,l);m&&p&&p.running?_.push(r):C(r)}function ne(e,t,n){c=ye;let r=he(e,t,!1,l),i=de&&le(de);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),v?v.push(r):C(r)}function x(e,t,n){n=n?Object.assign({},o,n):o;let r=he(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,m&&p&&p.running?(r.tState=l,_.push(r)):C(r),fe.bind(r)}function S(e){if(!h&&g===null)return e();let t=g;g=null;try{return h?h.untrack(e):e()}finally{g=t}}function re(e){return f===null||(f.cleanups===null?f.cleanups=[e]:f.cleanups.push(e)),e}function ie(){return f}function ae(e){if(p&&p.running)return e(),p.done;let t=g,n=f;return Promise.resolve().then(()=>{g=t,f=n;let r;return(m||de)&&(r=p||={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0},r.done||=new Promise(e=>r.resolve=e),r.running=!0),T(e,!1),g=f=null,r?r.done:void 0})}var[oe,se]=te(!1);function ce(e,t){let n=Symbol(`context`);return{id:n,Provider:De(n),defaultValue:e}}function le(e){let t;return f&&f.context&&(t=f.context[e.id])!==void 0?t:e.defaultValue}function ue(e){let t=x(e),n=x(()=>Ee(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var de;function fe(){let e=p&&p.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===l)C(this);else{let e=_;_=null,T(()=>be(this),!1),_=e}if(g){let e=this.observers;if(!e||e[e.length-1]!==g){let t=e?e.length:0;g.sources?(g.sources.push(this),g.sourceSlots.push(t)):(g.sources=[this],g.sourceSlots=[t]),e?(e.push(g),this.observerSlots.push(g.sources.length-1)):(this.observers=[g],this.observerSlots=[g.sources.length-1])}}return e&&p.sources.has(this)?this.tValue:this.value}function pe(e,t,n){let r=p&&p.running&&p.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(p){let r=p.running;(r||!n&&p.sources.has(e))&&(p.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&T(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=p&&p.running;r&&p.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?_.push(n):v.push(n),n.observers&&xe(n)),r?n.tState=l:n.state=l)}if(_.length>1e6)throw _=[],Error()},!1)}return t}function C(e){if(!e.fn)return;E(e);let t=y;me(e,p&&p.running&&p.sources.has(e)?e.tValue:e.value,t),p&&!p.running&&p.sources.has(e)&&queueMicrotask(()=>{T(()=>{p&&(p.running=!0),g=f=e,me(e,e.tValue,t),g=f=null},!1)})}function me(e,t,n){let r,i=f,a=g;g=f=e;try{r=e.fn(t)}catch(t){return e.pure&&(p&&p.running?(e.tState=l,e.tOwned&&e.tOwned.forEach(E),e.tOwned=void 0):(e.state=l,e.owned&&e.owned.forEach(E),e.owned=null)),e.updatedAt=n+1,Te(t)}finally{g=a,f=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?pe(e,r,!0):p&&p.running&&e.pure?(p.sources.has(e)||(e.value=r),p.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function he(e,t,n,r=l,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:f,context:f?f.context:null,pure:n};if(p&&p.running&&(a.state=0,a.tState=r),f===null||f!==d&&(p&&p.running&&f.pure?f.tOwned?f.tOwned.push(a):f.tOwned=[a]:f.owned?f.owned.push(a):f.owned=[a]),h&&a.fn){let e=a.fn,[t,n]=te(void 0,{equals:!1}),r=h.factory(e,n);re(()=>r.dispose());let i,o=()=>ae(n).then(()=>{i&&=(i.dispose(),void 0)});a.fn=n=>(t(),p&&p.running?(i||=h.factory(e,o),i.track(n)):r.track(n))}return a}function w(e){let t=p&&p.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===u)return be(e);if(e.suspense&&S(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<y);){if(t&&p.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(p.disposed.has(t))return}if((t?e.tState:e.state)===l)C(e);else if((t?e.tState:e.state)===u){let t=_;_=null,T(()=>be(e,n[0]),!1),_=t}}}function T(e,t){if(_)return e();let n=!1;t||(_=[]),v?n=!0:v=[],y++;try{let t=e();return ge(n),t}catch(e){n||(v=null),_=null,Te(e)}}function ge(e){if(_&&=(m&&p&&p.running?ve(_):_e(_),null),e)return;let t;if(p){if(!p.promises.size&&!p.queue.size){let e=p.sources,n=p.disposed;v.push.apply(v,p.effects),t=p.resolve;for(let e of v)`tState`in e&&(e.state=e.tState),delete e.tState;p=null,T(()=>{for(let e of n)E(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)E(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}se(!1)},!1)}else if(p.running){p.running=!1,p.effects.push.apply(p.effects,v),v=null,se(!0);return}}let n=v;v=null,n.length&&T(()=>c(n),!1),t&&t()}function _e(e){for(let t=0;t<e.length;t++)w(e[t])}function ve(e){for(let t=0;t<e.length;t++){let n=e[t],r=p.queue;r.has(n)||(r.add(n),m(()=>{r.delete(n),T(()=>{p.running=!0,w(n)},!1),p&&(p.running=!1)}))}}function ye(t){let r,i=0;for(r=0;r<t.length;r++){let e=t[r];e.user?t[i++]=e:w(e)}if(e.context){if(e.count){e.effects||=[],e.effects.push(...t.slice(0,i));return}n()}for(e.effects&&(e.done||!e.count)&&(t=[...e.effects,...t],i+=e.effects.length,delete e.effects),r=0;r<i;r++)w(t[r])}function be(e,t){let n=p&&p.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===l?i!==t&&(!i.updatedAt||i.updatedAt<y)&&w(i):e===u&&be(i,t)}}}function xe(e){let t=p&&p.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=u:r.state=u,r.pure?_.push(r):v.push(r),r.observers&&xe(r))}}function E(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)E(e.tOwned[t]);delete e.tOwned}if(p&&p.running&&e.pure)Se(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)E(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}p&&p.running?e.tState=0:e.state=0}function Se(e,t){if(t||(e.tState=0,p.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)Se(e.owned[t])}function Ce(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function we(e,t,n){try{for(let n of t)n(e)}catch(e){Te(e,n&&n.owner||null)}}function Te(e,t=f){let n=s&&t&&t.context&&t.context[s],r=Ce(e);if(!n)throw r;v?v.push({fn(){we(r,n,t)},state:l}):we(r,n,t)}function Ee(e){if(typeof e==`function`&&!e.length)return Ee(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=Ee(e[n]);if(Array.isArray(r))if(r.length<32768)t.push.apply(t,r);else for(let e=0;e<r.length;e++)t.push(r[e]);else t.push(r)}return t}return e}function De(e,t){return function(t){let n;return b(()=>n=S(()=>(f.context={...f.context,[e]:t.value},ue(()=>t.children))),void 0),n}}var Oe=Symbol(`fallback`);function ke(e){for(let t=0;t<e.length;t++)e[t]()}function Ae(e,t,n={}){let r=[],i=[],o=[],s=0,c=t.length>1?[]:null;return re(()=>ke(o)),()=>{let l=e()||[],u=l.length,d,f;return l[a],S(()=>{let e,t,a,m,h,g,_,v,y;if(u===0)s!==0&&(ke(o),o=[],r=[],i=[],s=0,c&&=[]),n.fallback&&(r=[Oe],i[0]=ee(e=>(o[0]=e,n.fallback())),s=1);else if(s===0){for(i=Array(u),f=0;f<u;f++)r[f]=l[f],i[f]=ee(p);s=u}else{for(a=Array(u),m=Array(u),c&&(h=Array(u)),g=0,_=Math.min(s,u);g<_&&r[g]===l[g];g++);for(_=s-1,v=u-1;_>=g&&v>=g&&r[_]===l[v];_--,v--)a[v]=i[_],m[v]=o[_],c&&(h[v]=c[_]);for(e=new Map,t=Array(v+1),f=v;f>=g;f--)y=l[f],d=e.get(y),t[f]=d===void 0?-1:d,e.set(y,f);for(d=g;d<=_;d++)y=r[d],f=e.get(y),f!==void 0&&f!==-1?(a[f]=i[d],m[f]=o[d],c&&(h[f]=c[d]),f=t[f],e.set(y,f)):o[d]();for(f=g;f<u;f++)f in a?(i[f]=a[f],o[f]=m[f],c&&(c[f]=h[f],c[f](f))):i[f]=ee(p);i=i.slice(0,s=u),r=l.slice(0)}return i});function p(e){if(o[f]=e,c){let[e,n]=te(f);return c[f]=n,t(l[f],e)}return t(l[f])}}}var je=!1;function D(t,i){if(je&&e.context){let a=e.context;n(r());let o=S(()=>t(i||{}));return n(a),o}return S(()=>t(i||{}))}var Me=e=>`Stale read from <${e}>.`;function Ne(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return x(Ae(()=>e.each,e.children,t||void 0))}function Pe(e){let t=e.keyed,n=x(()=>e.when,void 0,void 0),r=t?n:x(n,void 0,{equals:(e,t)=>!e==!t});return x(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?S(()=>a(t?i:()=>{if(!S(r))throw Me(`Show`);return n()})):a}return e.fallback},void 0,void 0)}var Fe=e=>x(()=>e());function Ie(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;){if(t[o]===n[s]){o++,s++;continue}for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null)if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&!((d=l.get(t[c]))==null||d!==r+u);)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++;else t[o++].remove()}}}var Le=`_$DX_DELEGATE`;function Re(e,t,n,r={}){let i;return ee(r=>{i=r,t===document?e():k(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function O(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>S(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function ze(e,t=window.document){let n=t[Le]||(t[Le]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,Ue))}}function Be(e,t,n){He(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function Ve(e,t){He(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function k(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return We(e,t,r,n);b(r=>We(e,t(),r,n),r)}function He(t){return!!e.context&&!e.done&&(!t||t.isConnected)}function Ue(t){if(e.registry&&e.events&&e.events.find(([e,n])=>n===t))return;let n=t.target,r=`$$${t.type}`,i=t.target,a=t.currentTarget,o=e=>Object.defineProperty(t,"target",{configurable:!0,value:e}),s=()=>{let e=n[r];if(e&&!n.disabled){let i=n[`${r}Data`];if(i===void 0?e.call(n,t):e.call(n,i,t),t.cancelBubble)return}return n.host&&typeof n.host!=`string`&&!n.host._$host&&n.contains(t.target)&&o(n.host),!0},c=()=>{for(;s()&&(n=n._$host||n.parentNode||n.host););};if(Object.defineProperty(t,"currentTarget",{configurable:!0,get(){return n||document}}),e.registry&&!e.done&&(e.done=_$HY.done=!0),t.composedPath){let e=t.composedPath();o(e[0]);for(let t=0;t<e.length-2&&(n=e[t],s());t++){if(n._$host){n=n._$host,c();break}if(n.parentNode===a)break}}else c();o(i)}function We(e,t,n,r,i){let a=He(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=A(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=A(e,n,r)}else if(o===`function`)return b(()=>{let i=t();for(;typeof i==`function`;)i=i();n=We(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(Ge(o,t,n,i))return b(()=>n=We(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=A(e,n,r),s)return n}else c?n.length===0?Ke(e,o,r):Ie(e,n,o):(n&&A(e),Ke(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=A(e,n,r,t);A(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function Ge(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(!(o==null||o===!0||o===!1))if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=Ge(e,o,s)||i;else if(c===`function`)if(r){for(;typeof o==`function`;)o=o();i=Ge(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0;else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}return i}function Ke(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function A(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}function qe(e){return cr(G.STORE,e,void 0)}function Je(e){return Qn(G.STORE,e,void 0)}function Ye(e){return dn(G.STORE,e)}function Xe(e,t){return Y(G.STORE,e,t)}function Ze(...e){return J(G.STORE,...e)}var j={atom_family:`atom family`,atom:`atom`,continuity:`continuity`,key:`key`,mutable_atom_family:`atom family [m]`,mutable_atom:`atom [m]`,readonly_held_selector_family:`selector family [h]`,readonly_held_selector:`selector [h]`,readonly_pure_selector_family:`selector family`,readonly_pure_selector:`selector`,socket:`socket`,state:`state`,timeline:`timeline`,transaction:`transaction`,unknown:`unknown`,user:`👤`,writable_held_selector_family:`selector family [wh]`,writable_held_selector:`selector [wh]`,writable_pure_selector_family:`selector family [w]`,writable_pure_selector:`selector [w]`},Qe=(e,t)=>(n,r,i,a,...o)=>{console[e](`${t?`${t} `:``}${n} ${j[r]} \`${i}\` ${a}`,...o)},$e={error:Qe(`error`),info:Qe(`info`),warn:Qe(`warn`)},et=class{logLevel;filter;logger;constructor(e,t,n=$e){this.logLevel=e,this.filter=t,this.logger=n}error=(...e)=>{if(this.logLevel!==null){let t=this.filter?.(...e)??!0;t===!0?this.logger.error(...e):t&&this.logger.error(...t)}};info=(...e)=>{if(this.logLevel===`info`){let t=this.filter?.(...e)??!0;t===!0?this.logger.info(...e):t&&this.logger.info(...t)}};warn=(...e)=>{if(this.logLevel!==`error`&&this.logLevel!==null){let t=this.filter?.(...e)??!0;t===!0?this.logger.warn(...e):t&&this.logger.warn(...t)}}};function tt(e,t){return[e,t].sort().join(``)}function nt(e){if(typeof e!=`string`)return null;let[t,n]=e.split(`==`);if(!n)return null;let r=t.slice(4),[i,a]=n.split(`++`);return r&&i&&a?[r,i,a]:null}function rt(...e){Dn(G.STORE,...e)}function it(e){return hn(G.STORE,e)}function at(...e){X(G.STORE,...e)}function ot(e){return Zt(G.STORE,e)}function st(e,t=ht()){return Et(G.STORE,e,t)}var ct=``,lt=``,ut=``,dt=``;function M(e){if(e===null)return lt;switch(typeof e){case`string`:return ut+e;case`number`:return dt+e;case`boolean`:return ct+ +e;case`object`:return JSON.stringify(e)}}function N(e){switch(e[0]){case ut:return e.slice(1);case dt:return+e.slice(1);case ct:return e.slice(1)===`1`;case lt:return null;case`[`:return JSON.parse(e)}}function ft(e){let t={},n=0;for(let r of e)t[r]=n,t[n]=r,++n;return t}function P(e){return JSON.parse(e)}var F=e=>JSON.stringify(e);Array.prototype,Boolean.prototype,Number.prototype,String.prototype;var pt=ft([`add`,`delete`,`clear`]),mt=class e extends Set{mode=`record`;subject=new R;constructor(t){super(t),t instanceof e}READONLY_VIEW=this;toJSON(){return[...this]}static fromJSON(t){return new e(t)}add(e){let t=super.add(e);return this.mode===`record`&&this.emit({type:`add`,value:e}),t}clear(){let e=this.mode===`record`?[...this]:null;super.clear(),e&&this.emit({type:`clear`,values:e})}delete(e){let t=super.delete(e);return this.mode===`record`&&this.emit({type:`delete`,value:e}),t}subscribe(e,t){return this.subject.subscribe(e,t)}emit(t){this.subject.next(e.packUpdate(t))}do(t){this.mode=`playback`;let n=e.unpackUpdate(t);switch(n.type){case`add`:this.add(n.value);break;case`delete`:this.delete(n.value);break;case`clear`:this.clear()}return this.mode=`record`,null}undo(t){let n=e.unpackUpdate(t);switch(this.mode=`playback`,n.type){case`add`:this.delete(n.value);break;case`delete`:this.add(n.value);break;case`clear`:{let e=n.values;for(let t of e)this.add(t)}}return this.mode=`record`,null}static packUpdate(e){let t=pt[e.type]+``;return e.type===`clear`?t+e.values.map(M).join(``):t+M(e.value)}static unpackUpdate(e){let[t,n]=e.split(``),r=pt[t];return r===`clear`?{type:`clear`,values:n.split(``).map(N)}:{type:r,value:N(n)}}};function ht(e=Math.random){return e().toString(36).slice(2)}function I(e){let t=e;for(;t.child!==null;)t=t.child;return t}function gt(e){let t=e;for(;t.parent!==null;)t=t.parent;return t}var _t=/^\[object (?:Async|Generator|AsyncGenerator)?Function\]$/;function L(e){let t=Object.prototype.toString.call(e);return _t.test(t)}function vt(e,t){return L(e)?e(t):e}var yt=class extends Promise{fate;resolve;reject;done=!1;constructor(e){let t,n;super((e,r)=>{t=e,n=r}),this.resolve=t,this.reject=n,this.use(e instanceof Promise?e:new Promise(e))}pass(e,t){e===this.fate&&(this.resolve(t),this.done=!0)}fail(e,t){e===this.fate&&(this.reject(t),this.done=!0)}use(e){if(this!==e)if(e instanceof Promise){let t=e;this.fate=t,t.then(e=>{this.pass(t,e)},e=>{this.fail(t,e)})}else this.resolve(e),this.fate=void 0}},R=class{Subscriber;subscribers=new Map;subscribe(e,t){return this.subscribers.set(e,t),()=>{this.unsubscribe(e)}}unsubscribe(e){this.subscribers.delete(e)}next(e){let t=this.subscribers.values();for(let n of t)n(e)}},bt=class extends R{state;constructor(e){super(),this.state=e}next(e){this.state=e,super.next(e)}},xt=class e{_buffer;_index=0;constructor(e){let t;t=typeof e==`number`?e:e.length,this._buffer=Array.from({length:t})}get buffer(){return this._buffer}get index(){return this._index}add(e){this._buffer[this._index]=e,this._index=(this._index+1)%this._buffer.length}copy(){let t=new e([...this._buffer]);return t._index=this._index,t}};function z(e){let t={key:e.key,type:e.type};return`family`in e&&(t.family=e.family),t}var B=class extends Map{deleted=new Set;changed=new Set;source;constructor(e){super(),this.source=e}get(e){if(super.has(e))return super.get(e);if(!this.deleted.has(e)&&this.source.has(e))return this.source.get(e)}set(e,t){return this.deleted.delete(e),this.source.has(e)&&this.changed.add(e),super.set(e,t)}hasOwn(e){return super.has(e)}has(e){return!this.deleted.has(e)&&(super.has(e)||this.source.has(e))}delete(e){return this.source.has(e)&&(this.deleted.add(e),this.changed.delete(e)),super.delete(e)}clear(){this.deleted=new Set(this.source.keys()),this.changed.clear(),super.clear()}*[Symbol.iterator](){yield*super[Symbol.iterator]();for(let[e,t]of this.source)!this.deleted.has(e)&&!this.changed.has(e)&&(yield[e,t])}*entries(){yield*this[Symbol.iterator]()}*keys(){yield*super.keys();for(let e of this.source.keys())!this.deleted.has(e)&&!this.changed.has(e)&&(yield e)}*values(){for(let[,e]of this[Symbol.iterator]())yield e}forEach(e){for(let[t,n]of this[Symbol.iterator]())e(n,t,this)}get size(){return super.size+this.source.size-this.changed.size-this.deleted.size}},St=class extends Set{deleted=new Set;source;constructor(e){super(),this.source=e}add(e){return this.source.has(e)?(this.deleted.delete(e),this):super.add(e)}hasOwn(e){return super.has(e)}has(e){return!this.deleted.has(e)&&(super.has(e)||this.source.has(e))}delete(e){return this.source.has(e)?(this.deleted.add(e),!0):super.delete(e)}clear(){this.deleted=new Set(this.source),super.clear()}*[Symbol.iterator](){yield*super[Symbol.iterator]();for(let e of this.source)this.deleted.has(e)||(yield e)}*iterateOwn(){yield*super[Symbol.iterator]()}get size(){return super.size+this.source.size-this.deleted.size}},Ct=class extends Map{deleted=new Set;source;constructor(e){super(),this.source=e}get(e){if(super.has(e))return super.get(e);if(!this.deleted.has(e)&&this.source.has(e)){let t=new St(this.source.get(e));return super.set(e,t),t}}set(e,t){return this.deleted.delete(e),super.set(e,t)}has(e){return!this.deleted.has(e)&&(super.has(e)||this.source.has(e))}delete(e){return this.deleted.add(e),super.delete(e)}},V=class e{a;b;cardinality;relations=new Map;contents=new Map;isAType;isBType;isContent;makeContentKey=(e,t)=>`${e}:${t}`;warn;getRelatedKeys(e){return this.relations.get(e)}addRelation(e,t){let n=this.relations.get(e),r=this.relations.get(t);n?n.add(t):(n=new Set([t]),this.relations.set(e,n)),r?r.add(e):(r=new Set([e]),this.relations.set(t,r))}deleteRelation(e,t){let n=this.relations.get(e);if(n){n.delete(t),n.size===0&&this.relations.delete(e);let r=this.relations.get(t);r&&(r.delete(e),r.size===0&&this.relations.delete(t))}}replaceRelationsUnsafely(e,t){this.relations.set(e,new Set(t));for(let n of t){let t=new Set().add(e);this.relations.set(n,t)}}replaceRelationsSafely(e,t){let n=this.relations.get(e),r=this.isAType?.(e)?e:void 0,i=r===void 0?e:void 0;if(n)for(let t of n){r??=t,i??=t;let n=this.relations.get(t);n&&(n.size===1?this.relations.delete(t):n.delete(e),this.contents.delete(this.makeContentKey(r,i)))}this.relations.set(e,new Set(t));for(let n of t){let t=this.relations.get(n);t?t.add(e):(t=new Set().add(e),this.relations.set(n,t))}}getContentInternal(e){return this.contents.get(e)}setContent(e,t){this.contents.set(e,t)}deleteContent(e){this.contents.delete(e)}constructor(e,t){if(this.a=e.between[0],this.b=e.between[1],this.cardinality=e.cardinality,this.isAType=t?.isAType??null,this.isBType=t?.isBType??null,this.isContent=t?.isContent??null,t?.makeContentKey&&(this.makeContentKey=t.makeContentKey),!t?.externalStore){let n=t?.source;n===void 0&&(this.relations=new Map(e.relations?.map(([e,t])=>[e,new Set(t)])),this.contents=new Map(e.contents)),n&&(this.relations=new Ct(n.relations),this.contents=new B(n.contents))}if(t?.externalStore){let n=t.externalStore;this.has=(e,t)=>n.has(e,t),this.addRelation=(e,t)=>{n.addRelation(e,t)},this.deleteRelation=(e,t)=>{n.deleteRelation(e,t)},this.replaceRelationsSafely=(e,t)=>{n.replaceRelationsSafely(e,t)},this.replaceRelationsUnsafely=(e,t)=>{n.replaceRelationsUnsafely(e,t)},this.getRelatedKeys=(e=>n.getRelatedKeys(e)),n.getContent&&(this.getContentInternal=e=>n.getContent(e),this.setContent=(e,t)=>{n.setContent(e,t)},this.deleteContent=e=>{n.deleteContent(e)});for(let[t,n]of e.relations??[]){let e=this.isAType?.(t)?t:void 0,r=e===void 0?t:void 0;for(let t of n)e??=t,r??=t,this.addRelation(e,r)}for(let[t,n]of e.contents??[])this.setContent(t,n)}t?.warn&&(this.warn=t.warn)}toJSON(){return{between:[this.a,this.b],cardinality:this.cardinality,relations:[...this.relations.entries()].map(([e,t])=>[e,[...t]]),contents:[...this.contents.entries()]}}set(...e){let t,n,r;switch(e.length){case 1:{let i=e[0];t=i[this.a],n=i[this.b],r=void 0;break}case 2:{let i=e[0];typeof i==`string`?[t,n]=e:(t=i[this.a],n=i[this.b],r=e[1]);break}default:t=e[0],n=e[1],r=e[2];break}switch(this.cardinality){case`1:1`:{let e=this.getRelatedKey(t);e&&e!==n&&this.delete(t,e)}case`1:n`:{let e=this.getRelatedKey(n);e&&e!==t&&this.delete(e,n)}break;case`n:n`:}if(r){let e=this.makeContentKey(t,n);this.setContent(e,r)}return this.addRelation(t,n),this}delete(e,t){t=typeof t==`string`?t:e[this.b];let n=typeof e==`string`?e:e[this.a];if(n===void 0&&typeof t==`string`){let e=this.getRelatedKeys(t);if(e)for(let n of e)this.delete(n,t)}else if(typeof n==`string`&&t===void 0){let e=this.getRelatedKeys(n);if(e)for(let t of e)this.delete(n,t)}else if(typeof n==`string`&&typeof t==`string`){this.deleteRelation(n,t);let e=this.makeContentKey(n,t);this.deleteContent(e)}return this}getRelatedKey(e){let t=this.getRelatedKeys(e);if(t){t.size>1&&this.warn?.(`${t.size} related keys were found for key "${e}": (${[...t].map(e=>`"${e}"`).join(`, `)}). Only one related key was expected.`);let n;for(let e of t){n=e;break}return n}}replaceRelations(e,t,n){let r=!Array.isArray(t),i=r?Object.keys(t):t;if(n?.reckless?this.replaceRelationsUnsafely(e,i):this.replaceRelationsSafely(e,i),r)for(let n of i){let r=this.makeContentKey(e,n),i=t[n];this.setContent(r,i)}return this}getContent(e,t){let n=this.makeContentKey(e,t);return this.getContentInternal(n)}getRelationEntries(e){let t=e[this.a],n=e[this.b];if(t!==void 0&&n===void 0){let e=this.getRelatedKeys(t);if(e)return[...e].map(e=>[e,this.getContent(t,e)])}if(t===void 0&&n!==void 0){let e=this.getRelatedKeys(n);if(e)return[...e].map(e=>[e,this.getContent(e,n)])}return[]}has(e,t){return t?this.getRelatedKeys(e)?.has(t)??!1:this.relations.has(e)}overlay(){let t={source:this,makeContentKey:this.makeContentKey};return this.isAType&&(t.isAType=this.isAType),this.isBType&&(t.isBType=this.isBType),this.isContent&&(t.isContent=this.isContent),this.warn&&(t.warn=this.warn),new e({between:[this.a,this.b],cardinality:this.cardinality},t)}incorporate(e){let{relations:t,contents:n}=e;for(let[e,n]of t)if(n instanceof St){let{source:e}=n;for(let t of n.iterateOwn())e.add(t)}else this.relations.set(e,n);for(let e of t.deleted)this.relations.delete(e);for(let[e,t]of n)this.contents.set(e,t);for(let e of n.deleted)this.contents.delete(e)}};function wt(e){return e.startsWith(`🔍 `)}function Tt(e){e.logger.info(`🪂`,`transaction`,e.transactionMeta.update.token.key,`Aborting transaction`),e.parent.child=null}function Et(e,t,n){return(...r)=>K(e,t).run(r,n)}function Dt(e,t,n){let{token:r,update:{newValue:i,oldValue:a}}=t;X(e,r,n===`newValue`?i:a)}function Ot(e){let{stack:t}=e;return t?`
2
2
  `+t.split(`
3
3
  `)?.slice(1)?.join(`
4
- `):``}function kt(e,t,n,r=`any`){let i=t,a=F(n),o=[],s=I(e);if(Array.isArray(i))for(let t of i){let n=F(t);s.molecules.get(n)?e.moleculeGraph.set(n,a,{source:n}):o.push(n)}else{let t=F(i);s.molecules.get(t)?e.moleculeGraph.set(t,a,{source:t}):o.push(t)}let c=new R;o.length===0&&s.molecules.set(a,{key:n,stringKey:a,dependsOn:r,subject:c});let l={type:`molecule_creation`,key:n,provenance:i,timestamp:Date.now()};U(s)&&s.transactionMeta.phase===`building`?s.transactionMeta.update.subEvents.push(l):s.on.moleculeCreation.next(l);for(let t of o){let r=e.disposalTraces.buffer.find(e=>e?.key===t);e.logger.error(`❌`,`key`,n,`allocation failed:`,`Could not allocate to ${t} in store "${e.config.name}".`,r?`\n ${t} was most recently disposed\n${r.trace}`:`No previous disposal trace for ${t} was found.`)}return n}function At(e,t){let n=F(t),r=e.molecules.get(n);if(!r){let r=e.disposalTraces.buffer.find(e=>e?.key===n);e.logger.error(`❌`,`key`,t,`deallocation failed:`,`Could not find allocation for ${n} in store "${e.config.name}".`,r?`\n This state was most recently deallocated\n${r.trace}`:`No previous disposal trace for ${n} was found.`);return}r.subject.next();let i=e.keyRefsInJoins.getRelatedKeys(n);if(i)for(let n of i){let r=e.joins.get(n);r&&r.relations.delete(t)}else{let n=nt(t);if(n){let[,t,r]=n,i=e.keyRefsInJoins.getRelatedKey(tt(t,r));if(i){let n=e.joins.get(i);n&&n.relations.delete(t,r)}}}e.keyRefsInJoins.delete(n);let a=[],o=[],s=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:n});if(s)for(let[t,{source:r}]of s)r===n?At(e,P(t)):a.push(r);let c=e.moleculeData.getRelatedKeys(r.stringKey);if(c)for(let n of c){let r=e.families.get(n),i=J(e,r,t);o.push([r.key,i]),gn(e,r,t)}let l={type:`molecule_disposal`,key:r.key,values:o,provenance:a,timestamp:Date.now()};e.molecules.delete(n);let u=U(e)&&e.transactionMeta.phase===`building`;u&&e.transactionMeta.update.subEvents.push(l),e.moleculeGraph.delete(r.stringKey),e.keyRefsInJoins.delete(r.stringKey),e.moleculeData.delete(r.stringKey),u||e.on.moleculeDisposal.next(l),e.molecules.delete(r.stringKey);let d=Ot(Error());e.disposalTraces.add({key:n,trace:d})}function jt(e,t,n,r){let i=F(n),a=I(e),o=a.molecules.get(i);if(!o){let t=e.disposalTraces.buffer.find(e=>e?.key===i);return e.logger.error(`❌`,`key`,i,`claim failed:`,`Could not allocate to ${i} in store "${e.config.name}".`,t?`\n ${i} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${i} was found.`),n}let s=F(t),c=a.molecules.get(s);if(!c){let t=e.disposalTraces.buffer.find(e=>e?.key===s);return e.logger.error(`❌`,`key`,n,`claim failed:`,`Could not allocate to ${s} in store "${e.config.name}".`,t?`\n ${s} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${s} was found.`),n}let l=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:o.stringKey}).filter(([,{source:e}])=>e!==i).map(([e])=>P(e));r&&a.moleculeGraph.delete(i),a.moleculeGraph.set({upstreamMoleculeKey:c.stringKey,downstreamMoleculeKey:o.stringKey},{source:c.stringKey});let u={type:`molecule_transfer`,key:o.key,exclusive:!!r,from:l,to:[c.key],timestamp:Date.now()};return U(a)&&a.transactionMeta.phase===`building`&&a.transactionMeta.update.subEvents.push(u),n}function Mt(e,t,n){switch(n){case`newValue`:Pt(e,t);break;case`oldValue`:gn(e,t.token);break}}function Nt(e,t,n){switch(n){case`newValue`:gn(e,t.token);break;case`oldValue`:Pt(e,t),t.subType===`atom`&&e.valueMap.set(t.token.key,t.value);break}}function Pt(e,t){let{token:n}=t;t.subType===`writable`&&t.value?X(e,n,t.value):J(e,n)}function Ft(e,t,n){switch(n){case`newValue`:kt(e,t.provenance,t.key);break;case`oldValue`:At(e,t.key);break}}function It(e,t,n){switch(n){case`newValue`:At(e,t.key);break;case`oldValue`:kt(e,t.provenance.map(P),t.key);for(let[n,r]of t.values){let i=e.families.get(n);if(i){J(e,i,t.key);let a=`${n}(${F(t.key)})`;e.valueMap.set(a,r)}}break}}function Lt(e,t,n){switch(n){case`newValue`:for(let n of t.to)jt(e,n,t.key,t.exclusive?`exclusive`:void 0);break;case`oldValue`:{let n=`exclusive`;for(let r of t.from)jt(e,r,t.key,n),n=void 0}break}}function Rt(e,t,n){let r=n===`newValue`?t.subEvents:[...t.subEvents].reverse();for(let t of r)switch(t.type){case`atom_update`:Dt(e,t,n);break;case`state_creation`:Mt(e,t,n);break;case`state_disposal`:Nt(e,t,n);break;case`molecule_creation`:Ft(e,t,n);break;case`molecule_disposal`:It(e,t,n);break;case`molecule_transfer`:Lt(e,t,n);break;case`transaction_outcome`:Rt(e,t,n);break}}function H(e){return`epoch`in e.transactionMeta}function U(e){return`phase`in e.transactionMeta}function zt(e,t){return e.transactionMeta.actionContinuities.getRelatedKey(t)}function Bt(e,t){return e.transactionMeta.epoch.get(t)}function Vt(e,t){let n=zt(e,t);if(n!==void 0)return Bt(e,n)}function Ht(e,t,n){let r=zt(e,t);r!==void 0&&e.transactionMeta.epoch.set(r,n)}function Ut(e,t){let n=I(e),{parent:r}=n;n.transactionMeta.phase=`applying`,n.transactionMeta.update.output=t,r.child=null,r.on.transactionApplying.next(n.transactionMeta);let{subEvents:i}=n.transactionMeta.update;e.logger.info(`🛄`,`transaction`,n.transactionMeta.update.token.key,`applying ${i.length} subEvents:`,i),Rt(r,n.transactionMeta.update,`newValue`),H(r)?(Ht(r,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),K(e,{key:n.transactionMeta.update.token.key,type:`transaction`})?.subject.next(n.transactionMeta.update),e.logger.info(`🛬`,`transaction`,n.transactionMeta.update.token.key,`applied`)):U(r)&&r.transactionMeta.update.subEvents.push(n.transactionMeta.update),r.on.transactionApplying.next(null)}function Wt(e){return{store:e}}function W(e){return e[0].toUpperCase()+e.slice(1)}function Gt(e,t){let n=e.joins.get(t.key);if(n===void 0){let r=G.STORE.joins.get(t.key);if(r===void 0)throw Error(`Join "${t.key}" not found in store "${e.config.name}"`);n=new Yt(gt(e),r.options),e.joins.set(t.key,n)}return n}function Kt(e,t,n){let r=Gt(e,t),i=I(e);if(U(i)){let{toolkit:e}=i.transactionMeta;r.transact(e,({relations:e})=>{n(e)})}else n(r.relations)}function qt(e,t,n){let r=Gt(e,t),i;switch(t.cardinality){case`1:1`:{let a=`${t.a}KeyOf${W(t.b)}`,o=`${t.b}KeyOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}};break}case`1:n`:{let a=`${t.a}KeyOf${W(t.b)}`,o=`${t.b}KeysOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}};break}case`n:n`:{let a=`${t.a}KeysOf${W(t.b)}`,o=`${t.b}KeysOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}}}}return i}function Jt(e,t,n){let r=Gt(e,t);return n===`split`?[r.relatedKeysAtoms,r.relatedKeysAtoms]:r.relatedKeysAtoms}var Yt=class{toolkit;options;relations;states;relatedKeysAtoms;transact(e,t){let n=this.toolkit;this.toolkit=e,t(this),this.toolkit=n}store;[Symbol.dispose](){}constructor(e,t){this.store=e,this.options=t,this.store.miscResources.set(`join:${t.key}`,this),this.toolkit={get:((...t)=>J(e,...t)),set:((...t)=>{X(e,...t)}),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{edit:((...t)=>{Kt(e,...t)}),find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}};let n=t.between[0],r=t.between[1],i=er(e,{key:`${t.key}/relatedKeys`,class:mt},[`join`,`relations`]);this.relatedKeysAtoms=i;let a=(t,n,r)=>{let{find:a,get:o,set:s}=t,c=a(i,n),l=o(c);for(let e of l)r.includes(e)||s(i,e,e=>(e.delete(n),e));s(c,t=>{t.clear();for(let c of r){let r=a(i,c),l=o(r),u=l.has(n);if(this.relations.cardinality===`1:n`){let t=[];for(let e of l){if(e===n)continue;let r;Mn(jn,this.store,i,e,e=>(e.delete(c),r=e.size,e)),r===0&&t.push(e)}!u&&l.size>0&&s(r,e=>(e.clear(),e));for(let n of t)e.keyRefsInJoins.delete(tt(c,n))}u||s(r,e=>(e.add(n),e)),t.add(c)}return t})},o=(e,t,n)=>{let{set:r}=e;r(i,t,e=>{for(let t of n)e.add(t);return e});for(let e of n)r(i,e,e=>(e.add(t),e));return!0},s=new V(t,{externalStore:{getRelatedKeys:e=>this.toolkit.get(i,e),addRelation:(e,n)=>{this.store.keyRefsInJoins.set(`"${e}"`,t.key),this.store.keyRefsInJoins.set(`"${n}"`,t.key),this.store.keyRefsInJoins.set(tt(e,n),t.key),this.toolkit.set(i,e,e=>e.add(n)),this.toolkit.set(i,n,t=>t.add(e))},deleteRelation:(e,t)=>{this.toolkit.set(i,e,e=>(e.delete(t),e)),this.toolkit.set(i,t,t=>(t.delete(e),t));let n=tt(e,t);this.store.keyRefsInJoins.delete(n)},replaceRelationsSafely:(e,t)=>{a(this.toolkit,e,t)},replaceRelationsUnsafely:(e,t)=>{o(this.toolkit,e,t)},has:(e,t)=>{let n=this.toolkit.get(i,e);return t?n.has(t):n.size>0}},isAType:t.isAType,isBType:t.isBType}),c=()=>un(e,{key:`${t.key}/singleRelatedKey`,get:e=>({get:t})=>{let n=t(i,e);for(let e of n)return e;return null}},[`join`,`keys`]),l=()=>un(e,{key:`${t.key}/multipleRelatedKeys`,get:t=>({get:n})=>n(tr(i,e),t)},[`join`,`keys`]);switch(t.cardinality){case`1:1`:{let e=c(),t=`${n}KeyOf${W(r)}`,i=`${r}KeyOf${W(n)}`;this.relations=s,this.states={[t]:e,[i]:e};break}case`1:n`:{let e=c(),t=l(),i=`${n}KeyOf${W(r)}`,a=`${r}KeysOf${W(n)}`,o={[i]:e,[a]:t};this.relations=s,this.states=o;break}case`n:n`:{let e=l(),t=`${n}KeysOf${W(r)}`,i=`${r}KeysOf${W(n)}`;this.relations=s,this.states={[t]:e,[i]:e}}}}};function Xt(e,t,n,r){let i=I(e),a={parent:i,child:null,on:i.on,loggers:i.loggers,logger:i.logger,config:i.config,atoms:new B(i.atoms),atomsThatAreDefault:new Set(i.atomsThatAreDefault),families:new B(i.families),joins:new B(i.joins),operation:{open:!1},readonlySelectors:new B(i.readonlySelectors),timelines:new B(i.timelines),timelineTopics:i.timelineTopics.overlay(),trackers:new Map,transactions:new B(i.transactions),selectorAtoms:i.selectorAtoms.overlay(),selectorGraph:i.selectorGraph.overlay(),writableSelectors:new B(i.writableSelectors),valueMap:new B(i.valueMap),defaults:i.defaults,disposalTraces:e.disposalTraces.copy(),molecules:new B(i.molecules),moleculeGraph:i.moleculeGraph.overlay(),moleculeData:i.moleculeData.overlay(),keyRefsInJoins:i.keyRefsInJoins.overlay(),miscResources:new B(i.miscResources)},o=Vt(e,t.key),s={phase:`building`,update:{type:`transaction_outcome`,token:t,id:r,epoch:o===void 0?NaN:o+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...e)=>J(c,...e)),set:((...e)=>{X(c,...e)}),reset:((...e)=>{Dn(c,...e)}),run:(e,t=ht())=>Et(c,e,t),find:((...t)=>Y(e,...t)),json:e=>Z(c,e),dispose:((...e)=>{gn(c,...e)}),env:()=>Wt(c),relations:{edit:((...e)=>{Kt(c,...e)}),find:((...e)=>qt(c,...e)),internal:((...e)=>Jt(c,...e))}}},c=Object.assign(a,{transactionMeta:s});return i.child=c,e.logger.info(`🛫`,`transaction`,t.key,`building with params:`,n),c}function Zt(e,t){let{key:n}=t,r=e.transactions.has(n),i={key:n,type:`transaction`,run:(r,a)=>{let o=Xt(e,z(i),r,a);try{let{toolkit:e}=o.transactionMeta,n=t.do(e,...r);return Ut(o,n),n}catch(t){throw Tt(o),e.logger.warn(`💥`,`transaction`,n,`caught:`,t),t}},install:e=>Zt(e,t),subject:new R};I(e).transactions.set(n,i);let a=z(i);return r||e.on.transactionCreation.next(a),a}var Qt=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new V({between:[`selectorKey`,`atomKey`],cardinality:`n:n`});selectorGraph=new V({between:[`upstreamSelectorKey`,`downstreamSelectorKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new V({between:[`continuity`,`action`],cardinality:`1:n`})};timelines=new Map;timelineTopics=new V({between:[`timelineKey`,`topicKey`],cardinality:`1:n`});disposalTraces=new xt(100);molecules=new Map;moleculeGraph=new V({between:[`upstreamMoleculeKey`,`downstreamMoleculeKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});moleculeData=new V({between:[`moleculeKey`,`stateFamilyKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});keyRefsInJoins=new V({between:[`moleculeKey`,`joinKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});miscResources=new Map;on={atomCreation:new R,atomDisposal:new R,selectorCreation:new R,selectorDisposal:new R,timelineCreation:new R,transactionCreation:new R,transactionApplying:new bt(null),operationClose:new R,moleculeCreation:new R,moleculeDisposal:new R};operation={open:!1};config={name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0};loggers=[new et(`warn`,(e,t,n)=>!wt(n))];logger={error:(...e)=>{for(let t of this.loggers)t.error(...e)},info:(...e)=>{for(let t of this.loggers)t.info(...e)},warn:(...e)=>{for(let t of this.loggers)t.warn(...e)}};constructor(e,t=null){if(this.config={...t?.config,...e},t!==null){this.operation={...t?.operation},H(t)&&(this.transactionMeta={epoch:new Map(t?.transactionMeta.epoch),actionContinuities:new V(t?.transactionMeta.actionContinuities.toJSON())});for(let[,e]of t.families)e.internalRoles?.includes(`mutable`)||e.internalRoles?.includes(`join`)||e.install(this);let e=new Set;for(let[,n]of t.atoms)if(!e.has(n.key)&&(n.install(this),n.type===`mutable_atom`)){let r=Z(t,n),i=nr(n);e.add(r.key),e.add(i.key)}for(let[,e]of t.readonlySelectors)e.install(this);for(let[,n]of t.writableSelectors)e.has(n.key)||n.install(this);for(let[,e]of t.transactions)e.install(this);for(let[,e]of t.timelines)e.install(this)}}},G={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new Qt({name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0}),globalThis.ATOM_IO_IMPLICIT_STORE}},$t=class extends Error{constructor(e,t){super(`${j[e.type]} ${F(e.key)} not found in store "${t.config.name}".`)}};function K(e,t){let n,r=e;for(;r!==null;){switch(t.type){case`atom`:case`mutable_atom`:n=r.atoms.get(t.key);break;case`writable_pure_selector`:case`writable_held_selector`:n=r.writableSelectors.get(t.key);break;case`readonly_pure_selector`:case`readonly_held_selector`:n=r.readonlySelectors.get(t.key);break;case`atom_family`:case`mutable_atom_family`:case`writable_pure_selector_family`:case`readonly_pure_selector_family`:case`writable_held_selector_family`:case`readonly_held_selector_family`:n=r.families.get(t.key);break;case`timeline`:n=r.timelines.get(t.key);break;case`transaction`:n=r.transactions.get(t.key);break}if(n)return n;r=r.child}throw new $t(t,e)}function en(e,t,n,r){let i=e.disposalTraces.buffer.find(e=>e?.key===F(r));switch(e.logger.error(`❌`,t.type,t.key,`gets a fallback value because key`,r,`is not allocated`,i?`This key was previously disposed:\n${i.trace}`:`(no previous disposal trace found)`),n.type){case`mutable_atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=new n.class;return e.defaults.set(n.key,t),t.READONLY_VIEW}case`atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default,i=t(r);return e.defaults.set(n.key,i),i}case`readonly_pure_selector_family`:case`writable_pure_selector_family`:case`readonly_held_selector_family`:case`writable_held_selector_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default(r);return e.defaults.set(n.key,t),t}}}function tn(e,t){let{type:n,key:r,catch:i}=t;switch(n){case`readonly_pure_selector`:case`writable_pure_selector`:{let a;e.logger.info(`🧮`,n,r,`computing value`);try{a=t.getFrom(e),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(a){if(e.logger.error(`💥`,n,r,`rejected:`,a),i){for(let n of i)if(a instanceof n)return Q(e,t,a)}throw a}return Q(e,t,a)}case`atom`:{let a;if(L(t.default))try{a=t.default(),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(o){if(e.logger.error(`💥`,n,r,`rejected:`,o),i){for(let n of i)if(o instanceof n)return a=Q(e,t,o),e.logger.info(`✨`,t.type,r,`computed default`,a),a}throw o}else a=t.default,e.logger.info(`✨`,t.type,r,`using static default`,a);return Q(e,t,a)}}}function q(e,t,n){if(e.valueMap.has(t.key))return ir(e,t,n);e.logger.info(`❔`,t.type,t.key,`value not found in cache`);let{key:r}=t;switch(t.type){case`readonly_held_selector`:case`writable_held_selector`:return e.logger.info(`🧮`,t.type,r,`computing value`),t.getFrom(e);case`writable_pure_selector`:case`readonly_pure_selector`:case`atom`:return tn(e,t);case`mutable_atom`:{let n=new t.class;return e.logger.info(`✨`,t.type,r,`created new instance`,n),Q(e,t,n)}}}function nn(e,t){return K(e,{key:t.family.key,type:`${t.type}_family`})}var rn={atom_family:`atom`,molecule_family:`molecule`,mutable_atom_family:`mutable_atom`,readonly_held_selector_family:`readonly_held_selector`,readonly_pure_selector_family:`readonly_pure_selector`,writable_held_selector_family:`writable_held_selector`,writable_pure_selector_family:`writable_pure_selector`},an=Symbol(`MUST_CREATE`),on=Symbol(`DO_NOT_CREATE`);function sn(e,t,n,r){let i=F(r),a=t.molecules.get(i);if(!a&&t.config.lifespan===`immortal`){let{type:e,key:r}=n;return t.logger.warn(`💣`,`key`,i,`was used to mint a counterfeit token for`,e,`"${r}"`),{counterfeit:!0,key:`${r}(${i})`,type:rn[e],family:{key:r,subKey:i}}}let o;if(e===an)t.logger.info(`👪`,n.type,n.key,`adds member`,typeof r==`string`?`\`${r}\``:r),o=n.create(r),a&&t.moleculeData.set(i,n.key);else{let{type:e,key:t}=n;return{key:`${t}(${i})`,type:rn[e],family:{key:t,subKey:i}}}return o}function cn(e,...t){let n,r,i,a,o;if(t.length===1){if(o=t[0],`family`in o){let t=nn(e,o);if(i=K(e,t),a=P(o.family.subKey),n=ln(e,t,a),`counterfeit`in o)return{token:o,family:i,subKey:a,isNew:!1};n?o=n:(r=sn(an,e,t,a),o=r)}}else i=K(e,t[0]),a=t[1],n=ln(e,i,a),n?o=n:(r=sn(an,e,i,a),o=r);let s=`counterfeit`in o;if(r&&s===!1&&i){let t;switch(o.type){case`readonly_pure_selector`:case`readonly_held_selector`:t=`readable`;break;case`atom`:case`mutable_atom`:case`writable_pure_selector`:case`writable_held_selector`:t=`writable`;break}let n={type:`state_creation`,subType:t,token:o,timestamp:Date.now()};i.subject.next(n);let r=I(e);if(o.family)if(H(r))switch(o.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(o);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:e.on.selectorCreation.next(o);break}else U(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n)}return{token:o,family:i,subKey:a,isNew:!!r}}function J(e,...t){let{token:n,family:r,subKey:i}=cn(e,...t);return`counterfeit`in n&&r&&i?en(e,n,r,i):q(e,K(e,n))}function ln(e,t,n){let r=F(n),i=`${t.key}(${r})`,a=I(e),o;switch(t.type){case`atom_family`:case`mutable_atom_family`:o=a.atoms.get(i);break;case`writable_held_selector_family`:case`writable_pure_selector_family`:o=a.writableSelectors.get(i);break;case`readonly_held_selector_family`:case`readonly_pure_selector_family`:o=a.readonlySelectors.get(i);break}return o&&z(o)}function Y(e,t,n){let r=K(e,t);return ln(e,t,n)||sn(on,e,r,n)}function un(e,t,n){let r=t.key,i=`readonly_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`,s=I(e),c={key:o,get:t.get(n)};return t.catch&&(c.catch=t.catch),Hn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>un(e,t),default:n=>t.get(n)({get:J.bind(null,e),find:Y.bind(null,e),json:t=>Z(e,t),relations:{find:qt.bind(null,e),internal:Jt.bind(null,e)}})};return e.families.set(r,l),a}function dn(e,t,n){let r={key:t.key,type:`atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`atom_family`,t.key,`Overwriting an existing ${j[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new R,o=n=>{let r=F(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=I(e),s=t.default,c={key:a,default:L(s)?()=>s(n):s};return t.effects&&(c.effects=t.effects(n)),t.catch&&(c.catch=t.catch),cr(o,c,i)},s={...r,create:o,default:t.default,subject:a,install:e=>dn(e,t),internalRoles:n};return e.families.set(t.key,s),L(t.default)===!1&&e.defaults.set(t.key,t.default),r}function fn(e,t,n){let r=t.key,i=`readonly_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`;return Vn(I(e),{key:o,const:t.const(n),get:t.get(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>fn(e,t),default:t.const};return e.families.set(r,l),a}function pn(e,t,n){let r=t.key,i=`writable_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`;return Un(I(e),{key:o,const:t.const(n),get:t.get(n),set:t.set(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>pn(e,t),default:t.const};return e.families.set(r,l),a}function mn(e,t,n){let r=t.key,i=`writable_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`,s=I(e),c={key:o,get:t.get(n),set:t.set(n)};return t.catch&&(c.catch=t.catch),Wn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>mn(e,t),default:n=>t.get(n)({get:((...t)=>J(e,...t)),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}})};return e.families.set(r,l),a}function hn(e,t){let n=`set`in t,r=`const`in t;return r&&n?pn(e,t,void 0):r?fn(e,t,void 0):n?mn(e,t):un(e,t)}function gn(e,...t){let n;if(t.length===1)n=t[0];else{let r=t[0],i=t[1];n=Y(e,r,i)}try{K(e,n)}catch{e.logger.error(`❌`,n.type,n.key,`could not be disposed because it was not found in the store "${e.config.name}".`);return}switch(n.type){case`atom`:case`mutable_atom`:ur(e,n);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:Kn(e,n);break}}function _n(e,t){if(e.operation.open){let n=performance.now();return e.logger.info(`🚫`,t.type,t.key,`deferring setState at T-${n} until setState for "${e.operation.token.key}" is done`),n}return e.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:t,subEvents:[]},e.logger.info(`⭕`,t.type,t.key,`operation start in store "${e.config.name}"${U(e)?` ${e.transactionMeta.phase} "${e.transactionMeta.update.token.key}"`:``}`),e}function vn(e){e.operation.open&&e.logger.info(`🔴`,e.operation.token.type,e.operation.token.key,`operation done in store "${e.config.name}"`),e.operation={open:!1},e.on.operationClose.next(e.operation)}function yn(e,t){return e.operation.open?e.operation.done.has(t):(e.logger.error(`🐞`,`unknown`,t,`isDone called outside of an operation. This is probably a bug in AtomIO.`),!0)}function bn(e,t){if(!e.operation.open){e.logger.error(`🐞`,`unknown`,t,`markDone called outside of an operation. This is probably a bug in AtomIO.`);return}e.operation.done.add(t)}function xn(e,t,n,r,i){let{oldValue:a,newValue:o}=n,s=`oldValue`in n,c=z(t);if(r&&i){t.subject.next({newValue:o});let n={checkpoint:!0,type:`state_creation`,subType:`writable`,token:c,timestamp:Date.now(),value:o};e.operation.subEvents.push(n),i.subject.next(n);let r=I(e);if(c.family)if(H(r))switch(c.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(c);break;case`writable_pure_selector`:case`writable_held_selector`:e.on.selectorCreation.next(c);break}else U(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n);return}let{key:l,subject:u,type:d}=t,f;if(f=s?{oldValue:rr(a)?a.READONLY_VIEW:a,newValue:rr(o)?o.READONLY_VIEW:o}:{newValue:rr(o)?o.READONLY_VIEW:o},H(e)){switch(d){case`mutable_atom`:e.logger.info(`📢`,d,l,`is now (`,o,`) subscribers:`,u.subscribers.keys());break;case`atom`:case`writable_pure_selector`:case`writable_held_selector`:e.logger.info(`📢`,d,l,`went (`,a,`->`,o,`) subscribers:`,u.subscribers.keys())}u.next(f)}if(U(e)&&(d===`mutable_atom`||d===`atom`)){if(e.on.transactionApplying.state===null){if(rr(o))return;let{timestamp:t}=e.operation,n={type:`atom_update`,token:c,timestamp:t,update:f};e.transactionMeta.update.subEvents.push(n),e.logger.info(`📁`,`atom`,l,`stowed (`,a,`->`,o,`)`);return}if(lr(t,`tracker:signal`)){let t=l.slice(1),n=e.atoms.get(t);q(e,n,`mut`).do(f.newValue)===null&&or(e,n)}}}var Sn=Symbol(`UNSET`);function Cn(e,t,n){let r,i;if(L(n)){let a=q(e,t,`mut`);r=a,i=n(a)}else r=e.valueMap.has(t.key)?ir(e,t,`mut`):t.type===`atom`&&!L(t.default)?t.default:Sn,i=n;return e.logger.info(`⭐`,`atom`,t.key,`setting value`,i),i=Q(e,t,i),bn(e,t.key),or(e,t),r===Sn?{newValue:i}:{oldValue:r,newValue:i}}function wn(e,t){switch(t.type){case`mutable_atom`:return Cn(e,t,new t.class);case`atom`:{let n;return n=L(t.default)?tn(e,t):t.default,Cn(e,t,n)}}}function Tn(e,t){let n;switch(t.type){case`atom`:case`mutable_atom`:n=wn(e,t);break;case`writable_held_selector`:{let r=Rn(e,t.key);for(let n of r.values())xn(e,t,wn(e,n),!1);let i=t.getFrom(e);n={oldValue:i,newValue:i}}break;case`writable_pure_selector`:{let r=tn(e,t),i=Rn(e,t.key);for(let n of i.values())xn(e,t,wn(e,n),!1);n={oldValue:r,newValue:tn(e,t)}}break}return n}function X(e,...t){Mn(An,e,...t)}var En=Symbol(`RESET`);function Dn(e,...t){X(e,...t,En)}function On(e,t,n){let r,i,a,{type:o,key:s}=t;switch(t.type){case`writable_pure_selector`:r=q(e,t,`mut`),i=vt(n,r),i=Q(e,t,i);break;case`writable_held_selector`:a=t.const,vt(n,a),r=a,i=a}return e.logger.info(`⭐`,o,s,`setting to`,i),bn(e,s),t.setSelf(i),{oldValue:r,newValue:i}}function kn(e,t,n){let r;switch(t.type){case`atom`:case`mutable_atom`:r=Cn(e,t,n);break;case`writable_pure_selector`:case`writable_held_selector`:r=On(e,t,n);break}return r}var An=Symbol(`OWN_OP`),jn=Symbol(`JOIN_OP`);function Mn(e,t,...n){let r,i,a,o,s,c;n.length===2?(a=n[0],c=n[1],`family`in a&&(o=nn(t,a),s=P(a.family.subKey),r=ln(t,o,s),a=r||(i=sn(an,t,o,s)))):(o=K(t,n[0]),s=n[1],c=n[2],r=ln(t,o,s),a=r||(i=sn(an,t,o,s)));let l=c===En?`reset`:`set`,u;if(e===An){let n=_n(t,a);if(typeof n==`number`){let r=n,i=t.on.operationClose.subscribe(`waiting to ${l} "${a.key}" at T-${r}`,function(){i(),t.logger.info(`🟢`,a.type,a.key,`resuming deferred`,l,`from T-${r}`),Mn(e,t,a,c)});return}u=n}else u=t;if(`counterfeit`in a&&`family`in a){let e=a.family.subKey,n=t.disposalTraces.buffer.find(t=>t?.key===e);t.logger.error(`❌`,a.type,a.key,`could not be`,l,`because key`,e,`is not allocated.`,n?`this key was previously disposed:${n.trace}`:`(no previous disposal trace found)`);return}let d=K(u,a),f;f=c===En?Tn(u,d):kn(u,d,c),xn(u,d,f,!!i,o),e===An&&vn(u)}var Nn=(e,t)=>I(e).atoms.has(t),Pn=(e,t)=>I(e).writableSelectors.has(t),Fn=(e,t)=>I(e).readonlySelectors.has(t),In=(e,t)=>Nn(e,t)||Pn(e,t)||Fn(e,t);function Ln(e,t){return I(e).selectorGraph.getRelationEntries({downstreamSelectorKey:t}).filter(([e,{source:n}])=>n!==t).map(([e,{source:t}])=>t).filter(t=>In(e,t))}function Rn(e,t,n=new Set){let r=Ln(e,t),i=new Map;for(;r.length>0;){let t=r.pop();if(!n.has(t))if(n.add(t),Nn(e,t)){let n=e.atoms.get(t);i.set(n.key,n)}else r.push(...Ln(e,t))}return i}function zn(e,t,n,r,i){let a=I(e),{type:o,key:s}=r;if(o===`atom`||o===`mutable_atom`)a.selectorAtoms.set({selectorKey:n,atomKey:s}),e.logger.info(`🔍`,t,n,`discovers root atom "${s}"`);else{let r=Rn(e,s,i);e.logger.info(`🔍`,t,n,`discovers root atoms: [ ${[...r.values()].map(e=>`"${e.key}"`).join(`, `)} ]`);for(let{key:e}of r.values())a.selectorAtoms=a.selectorAtoms.set({selectorKey:n,atomKey:e})}i.add(s)}function Bn(e,t,n,r){return{get:(...i)=>{let a=I(e),{token:o,family:s,subKey:c}=cn(e,...i),l;return l=`counterfeit`in o&&s&&c?en(e,o,s,c):q(e,K(e,o)),e.logger.info(`🔌`,t,n,`registers dependency ( "${o.key}" =`,l,`)`),a.selectorGraph.set({upstreamSelectorKey:o.key,downstreamSelectorKey:n},{source:o.key}),zn(e,t,n,o,r),l},set:((...t)=>{Mn(jn,I(e),...t)}),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{edit:((...t)=>{Kt(e,...t)}),find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}}}function Vn(e,t,n){let r=I(e),i=new R,a=new Set,{key:o,const:s}=t,c=`readonly_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let{get:l,find:u,json:d,relations:f}=Bn(r,c,o,a),p=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get({get:l,find:u,json:d,relations:f},s),Q(n,m,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},m={...t,type:c,subject:i,getFrom:p,install:e=>Vn(e,t,n)};n&&(m.family=n),r.readonlySelectors.set(o,m);let h={key:o,type:c};return n&&(h.family=n),h}function Hn(e,t,n){let r=I(e),i=new R,a=new Set,o=t.key,s=`readonly_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let{get:c,find:l,json:u,relations:d}=Bn(r,s,o,a),f=()=>{let n=I(e),r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get({get:c,find:l,json:u,relations:d});return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},p={...t,type:s,subject:i,getFrom:f,install:e=>Hn(e,t,n)};n&&(p.family=n),r.readonlySelectors.set(o,p);let m={key:o,type:s};return n&&(m.family=n),m}function Un(e,t,n){let r=I(e),i=new R,a=new Set,{key:o,const:s}=t,c=`writable_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let l=Bn(r,c,o,a),{find:u,get:d,json:f,relations:p}=l,m={find:u,get:d,json:f,relations:p},h=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get(m,s),Q(n,_,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},g=()=>{t.set(l,s)},_={...t,type:c,subject:i,getFrom:h,setSelf:g,install:e=>Un(e,t,n)};n&&(_.family=n),r.writableSelectors.set(o,_);let v={key:o,type:c};return n&&(v.family=n),v}function Wn(e,t,n){let r=I(e),i=new R,a=new Set,o=t.key,s=`writable_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let c=Bn(r,s,o,a),{find:l,get:u,json:d,relations:f}=c,p={find:l,get:u,json:d,relations:f},m=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get(p);return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},h=e=>{t.set(c,e)},g={...t,type:s,subject:i,getFrom:m,setSelf:h,install:e=>Wn(e,t,n)};n&&(g.family=n),r.writableSelectors.set(o,g);let _={key:o,type:s};return n&&(_.family=n),_}function Gn(e,t){let n=`set`in t,r=`const`in t;if(r&&n){let n=Un(e,t,void 0);return e.on.selectorCreation.next(n),n}if(r){let n=Vn(e,t,void 0);return e.on.selectorCreation.next(n),n}if(n){let n=Wn(e,t,void 0);return e.on.selectorCreation.next(n),n}let i=Hn(e,t,void 0);return e.on.selectorCreation.next(i),i}function Kn(e,t){let n=I(e),{key:r,type:i,family:a}=t;if(!a)e.logger.error(`❌`,i,r,`Standalone selectors cannot be disposed.`);else{n.molecules.get(a.subKey)&&n.moleculeData.delete(a.subKey,a.key);let i;switch(t.type){case`writable_held_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_held_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`writable_pure_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_pure_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_held_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_held_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_pure_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_pure_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break}n.valueMap.delete(r),n.selectorAtoms.delete(r),n.selectorGraph.delete(r),n.moleculeData.delete(a.key,a.subKey),e.logger.info(`🔥`,t.type,r,`deleted`),U(n)&&n.transactionMeta.phase===`building`?n.transactionMeta.update.subEvents.push({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()}):e.on.selectorDisposal.next(t)}}function qn(e,t){let n=I(e);return n.operation.open?n.operation.prev.get(t.key):n.valueMap.get(t.key)}function Jn(e,t,n){return n.subject.subscribe(`${t.type}:${t.key}`,r=>{e.logger.info(`📢`,t.type,t.key,`root`,n.key,`went`,r.oldValue,`->`,r.newValue);let i=qn(e,t),a=q(e,t);e.logger.info(`✨`,t.type,t.key,`went`,i,`->`,a),t.subject.next({newValue:a,oldValue:i})})}function Yn(e,t,n,r){function i(n){e.operation.open&&a?.type===`atom`&&lr(a,`tracker:signal`)&&`*`+e.operation.token.key===t.key&&`inboundTracker`in r||r(n)}cn(e,t);let a=K(e,t);e.logger.info(`👀`,a.type,a.key,`Adding subscription "${n}"`);let o=a.type===`writable_pure_selector`||a.type===`readonly_pure_selector`,s=new Map,c=i;if(o){q(e,a);for(let[t,n]of Rn(e,a.key))s.set(t,Jn(e,a,n));c=function(t){let n=Rn(e,a.key);for(let[e,t]of s)n.get(e)?n.delete(e):(t(),s.delete(e));for(let[t,r]of n)s.set(t,Jn(e,a,r));i(t)}}let l=a.subject.subscribe(n,c);return()=>{e.logger.info(`🙈`,a.type,a.key,`Removing subscription "${n}"`),l();for(let e of s.values())e()}}function Xn(e,t,n,r){let i=K(e,t);e.logger.info(`👀`,`timeline`,t.key,`Adding subscription "${n}"`);let a=i.subject.subscribe(n,r);return()=>{e.logger.info(`🙈`,`timeline`,t.key,`Removing subscription "${n}" from timeline`),a()}}var Zn=class{initializeSignalAtom(e,t){let n=`*${e.key}`;t.atoms.delete(n),t.valueMap.delete(n);let r=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,i=cr(t,{key:n,default:null},r,[`tracker:signal`]);if(t.parent?.valueMap.has(n)){let e=t.parent.valueMap.get(n);t.valueMap.set(n,e)}return i}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,n){let r=e.key,i=`tracker-from-core:${n.config.name}:${U(n)?n.transactionMeta.update.token.key:`main`}:${r}`,a=e=>{Mn(jn,n,t,e)},o=J(n,e);this.unsubscribeFromInnerValue=o.subscribe(i,a),this.unsubscribeFromState=Yn(n,e,i,function(e){e.newValue!==e.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=e.newValue.subscribe(i,a))}.bind(this))}supplySignalsToCore(e,t,n){let r=e.key,i=`tracker-to-core:${n.config.name}:${U(n)?n.transactionMeta.update.token.key:`main`}:${r}`;Yn(n,t,i,Object.assign(function({newValue:r,oldValue:a}){let o=n.timelineTopics.getRelatedKey(t.key);if(o&&n.timelines.get(o)?.timeTraveling){let t=Xn(n,{key:o,type:`timeline`},i,function(i){t(),X(n,e,e=>(i.event===`redo`&&r?e.do(r):i.event===`undo`&&a&&e.undo(a),e))});return}X(n,e,e=>(e.do(r),e))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){let n=I(t),r=this.initializeSignalAtom(e,n);this.mutableAtomToken=e,this.latestSignalToken=r,this.captureSignalsFromCore(e,r,n),this.supplySignalsToCore(e,r,n),n.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(e.key)}}};function Qn(e,t,n){e.logger.info(`🔨`,`atom`,t.key,`creating in store "${e.config.name}"`);let r=I(e),{key:i}=t,a=r.atoms.get(i),o=`mutable_atom`;if(a?.type===o&&e.config.isProduction===!0)return e.logger.error(`❌`,o,i,`Tried to create atom, but it already exists in the store.`),z(a);let s=new R,c={...t,type:o,install:e=>(e.logger.info(`🛠️`,`atom`,i,`installing in store "${e.config.name}"`),Qn(e,t,n)),subject:s};n&&(c.family=n),r.atoms.set(c.key,c);let l=z(c);if(new Zn(l,e),n||Gn(e,{key:`${i}:JSON`,get:({get:e})=>e(l).toJSON(),set:({set:e},n)=>{e(l,t.class.fromJSON(n))}}),t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Dn(e,l)},setSelf:t=>{X(e,l,t)},onSet:t=>Yn(e,l,`effect[${n}]`,t),token:l,store:gt(e)});t&&r.push(t),++n}c.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(l),l}var $n=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(e,t){let n=dn(t,{key:`*${e.key}`,default:null},[`mutable`,`updates`]);this.latestSignalAtoms=K(t,n),this.mutableAtoms=e,this.mutableAtoms.subject.subscribe(`store=${t.config.name}::tracker-atom-family`,e=>{let{type:n,token:r}=e;if(r.family){let e=P(r.family.subKey);switch(n){case`state_creation`:this.trackers.set(e,new Zn(r,t));break;case`state_disposal`:{let t=this.trackers.get(e);t&&(t[Symbol.dispose](),this.trackers.delete(e))}}}})}};function er(e,t,n){let r={key:t.key,type:`mutable_atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`mutable_atom_family`,t.key,`Overwriting an existing ${j[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new R,o=n=>{let r=F(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=I(e),s={key:a,class:t.class};return t.effects&&(s.effects=t.effects(n)),Qn(o,s,i)},s={...r,create:o,class:t.class,subject:a,install:e=>er(e,t),internalRoles:n};return e.families.set(t.key,s),mn(e,{key:`${t.key}:JSON`,get:e=>({get:t})=>t(r,e).toJSON(),set:e=>({set:n},i)=>{n(r,e,t.class.fromJSON(i))}},[`mutable`,`json`]),new $n(s,e),r}function tr(e,t){let n=I(t),r=`${e.key}:JSON`;return n.families.get(r)}var Z=(e,t)=>t.family?Y(e,K(I(e),{key:`${t.family.key}:JSON`,type:`writable_pure_selector_family`}),P(t.family.subKey)):{type:`writable_pure_selector`,key:`${t.key}:JSON`};function nr(e){let t={type:`atom`,key:`*${e.key}`};return e.family&&(t.family={key:`*${e.family.key}`,subKey:e.family.subKey}),t}function rr(e){return typeof e==`object`&&!!e&&`do`in e&&`undo`in e&&`subscribe`in e&&`READONLY_VIEW`in e&&`toJSON`in e}function Q(e,t,n){let{key:r,subject:i,type:a}=t,o=e.valueMap.get(r);if(o instanceof yt&&!o.done){let t=o;return n instanceof Promise?(t.use(n),t):(e.valueMap.set(r,n),n)}if(n instanceof Promise){let o=new yt(n);return e.valueMap.set(r,o),o.then(function(n){if(e.valueMap.get(r)===o){switch(_n(e,t),Q(e,t,n),a){case`atom`:or(e,t);break;case`readonly_pure_selector`:case`writable_pure_selector`:sr(e,r);break}vn(e),i.next({newValue:n,oldValue:o})}}).catch(n=>{e.logger.error(`💥`,t.type,r,`rejected:`,n)}),o}return e.logger.info(`📝`,t.type,t.key,`writing to cache`,n),e.valueMap.set(r,n),n}function ir(e,t,n){e.logger.info(`📖`,t.type,t.key,`reading cached value`);let r=e.valueMap.get(t.key);if(n===`mut`&&t.type===`mutable_atom`&&U(e)){let n=t,{parent:i}=e;if(e.valueMap.hasOwn(n.key))return r;let a=i.valueMap.get(n.key);e.logger.info(`📃`,`atom`,n.key,`copying`);let o=a.toJSON(),s=n.class.fromJSON(o);e.valueMap.set(n.key,s),new Zn(n,i),r=s}return r}function ar(e,t){let n=e.valueMap.get(t);if(n instanceof yt){let r=e.readonlySelectors.get(t),i=e.writableSelectors.get(t),a=tn(e,r??i);n.use(a);return}e.operation.open&&e.operation.prev.set(t,n),e.valueMap.delete(t),e.logger.info(`🗑`,`state`,t,`evicted`)}function or(e,t){let n=I(e),{key:r,type:i}=t,a=n.selectorAtoms.getRelatedKeys(r);if(n.logger.info(`🧹`,i,r,a?`evicting ${a.size} states downstream:`:`no downstream states`,a??`to evict`),a){n.operation.open&&n.logger.info(`🧹`,i,r,`[ ${[...n.operation.done].join(`, `)} ] already done`);for(let e of a)yn(n,e)||(ar(n,e),bn(n,e))}}function sr(e,t){let n=I(e),r=n.selectorGraph.getRelationEntries({upstreamSelectorKey:t}).filter(([e,{source:n}])=>n===t);for(let[t]of r)yn(n,t)||(ar(n,t),bn(n,t),sr(e,t))}function cr(e,t,n,r){let i=`atom`,{key:a}=t;e.logger.info(`🔨`,i,a,`is being created`);let o=I(e),s=o.atoms.get(a);if(s?.type===i&&e.config.isProduction===!0)return e.logger.error(`❌`,`atom`,a,`Tried to create atom, but it already exists in the store.`),z(s);let c=new R,l={...t,type:i,install:e=>(e.logger.info(`🛠️`,i,a,`installing in store "${e.config.name}"`),cr(e,t,n)),subject:c};n&&(l.family=n),r&&(l.internalRoles=r),o.atoms.set(a,l);let u=z(l);if(t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Dn(e,u)},setSelf:t=>{X(e,u,t)},onSet:t=>Yn(e,u,`effect[${n}]`,t),token:u,store:gt(e)});t&&r.push(t),++n}l.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(u),u}function lr(e,t){return`internalRoles`in e?e.internalRoles.includes(t):!1}function ur(e,t){let n=I(e),{key:r,family:i}=t,a=K(n,t);if(!i)e.logger.error(`❌`,`atom`,r,`Standalone atoms cannot be disposed.`);else{a.cleanup?.();let o=e.valueMap.get(a.key),s=K(e,nn(e,t)).subject,c={type:`state_disposal`,subType:`atom`,token:t,value:o,timestamp:Date.now()};s.next(c);let l=U(n);if(n.atoms.delete(r),n.valueMap.delete(r),n.selectorAtoms.delete(r),n.atomsThatAreDefault.delete(r),n.moleculeData.delete(i.key,i.subKey),e.timelineTopics.delete(r),t.type===`mutable_atom`&&(ur(e,nr(t)),e.trackers.delete(r)),e.logger.info(`🔥`,`atom`,r,`deleted`),l&&n.transactionMeta.phase===`building`){let e=n.transactionMeta.update.subEvents.at(-1),t=e?.type===`molecule_disposal`&&e.values.some(([e])=>e===a.family?.key),r=lr(a,`tracker:signal`);!t&&!r&&n.transactionMeta.update.subEvents.push(c)}else e.on.atomDisposal.next(t)}}var dr=ce(G.STORE);function fr({children:e,store:t=G.STORE}){return dr.Provider({value:t,children:e})}function pr(e,...t){let n;if(t.length===2){let r=t[0],i=t[1];n=Y(e,r,i)}else n=t[0];return n}function mr(...e){let t=le(dr),n=pr(t,...e);return e=>{X(t,n,e)}}function hr(e,t){let[n,r]=te(t(),{equals:!1});return ne(()=>{let n=()=>r(()=>t()),i=e(n);n(),re(()=>{i()})}),()=>(n(),t())}function $(...e){let t=le(dr),n=pr(t,...e),r=ht();return hr(e=>Yn(t,n,`use-o:${r}`,e),()=>J(t,n))}var gr=ft([`set`,`truncate`,`extend`,`pop`,`push`,`shift`,`unshift`,`copyWithin`,`fill`,`splice`,`reverse`,`sort`]),_r=class e extends Array{mode=`record`;subject=new R;READONLY_VIEW=this;constructor(...e){return super(...e),new Proxy(this,{set:(e,t,n,r)=>{if(typeof t==`string`&&!Number.isNaN(Number.parseInt(t,10))){let r=Number(t),i;return this.mode===`record`&&(i=e[r]),e[r]=n,i?this.emit({type:`set`,index:r,next:n,prev:i}):this.mode===`record`&&this.emit({type:`set`,index:r,next:n}),!0}if(t===`length`){if(this.mode===`record`){let t=e.length;if(t===n)return!0;if(t>n){let t=e.slice(n);e.length=n,this.emit({type:`truncate`,length:n,items:t})}else e.length=n,this.emit({type:`extend`,next:n,prev:t})}else e.length=n;return!0}return Reflect.set(e,t,n,r)}})}toJSON(){return[...this]}static fromJSON(t){return new e(...t)}push(...e){let t;return this.mode===`record`?(this.mode=`playback`,t=super.push(...e),this.mode=`record`,this.emit({type:`push`,items:e})):t=super.push(...e),t}pop(){let e;return this.mode===`record`?(this.mode=`playback`,e=super.pop(),e===void 0?this.emit({type:`pop`}):this.emit({type:`pop`,value:e}),this.mode=`record`):e=super.pop(),e}shift(){let e;return this.mode===`record`?(this.mode=`playback`,e=super.shift(),e===void 0?this.emit({type:`shift`}):this.emit({type:`shift`,value:e}),this.mode=`record`):e=super.shift(),e}unshift(...e){let t;return this.mode===`record`?(this.mode=`playback`,t=super.unshift(...e),this.emit({type:`unshift`,items:e}),this.mode=`record`):t=super.unshift(...e),t}reverse(){return super.reverse(),this.mode===`record`&&this.emit({type:`reverse`}),this}fill(e,t,n){if(this.mode===`record`){this.mode=`playback`;let r=this.slice(t,n);super.fill(e,t,n),t===void 0?this.emit({type:`fill`,value:e,prev:r}):n===void 0?this.emit({type:`fill`,value:e,start:t,prev:r}):this.emit({type:`fill`,value:e,start:t,end:n,prev:r}),this.mode=`record`}else super.fill(e,t,n);return this}sort(e){if(this.mode===`record`){this.mode=`playback`;let t=[...this];super.sort(e);let n=[...this];this.emit({type:`sort`,next:n,prev:t}),this.mode=`record`}return this}splice(...e){let[t,n,...r]=e,i=this.mode;i===`record`&&(this.mode=`playback`);let a=super.splice(...e);return i===`record`&&(this.mode=`record`),n===void 0?this.emit({type:`splice`,start:t,items:r,deleted:a,deleteCount:a.length}):this.emit({type:`splice`,start:t,items:r,deleted:a,deleteCount:n}),a}copyWithin(e,t,n){let r=this.mode,i;return r===`record`&&(i=this.slice(e),this.mode=`playback`),super.copyWithin(e,t,n),r===`record`&&(this.mode=`record`),i&&(n===void 0?this.emit({type:`copyWithin`,prev:i,target:e,start:t}):this.emit({type:`copyWithin`,prev:i,target:e,start:t,end:n})),this}subscribe(e,t){return this.subject.subscribe(e,t)}emit(t){this.subject.next(e.packUpdate(t))}doStep(e){switch(e.type){case`copyWithin`:this.copyWithin(e.target,e.start,e.end);break;case`extend`:this.length=e.next;break;case`fill`:this.fill(e.value,e.start,e.end);break;case`pop`:this.pop();break;case`push`:this.push(...e.items);break;case`reverse`:this.reverse();break;case`shift`:this.shift();break;case`sort`:for(let t=0;t<e.next.length;t++)this[t]=e.next[t];this.length=e.next.length;break;case`splice`:this.splice(e.start,e.deleteCount,...e.items);break;case`truncate`:this.length=e.length;break;case`set`:this[e.index]=e.next;break;case`unshift`:this.unshift(...e.items);break}}do(t){this.mode=`playback`;let n=e.unpackUpdate(t);return this.doStep(n),this.mode=`record`,null}undoStep(e){switch(e.type){case`copyWithin`:for(let t=0;t<e.prev.length;t++)this[t+e.target]=e.prev[t];break;case`extend`:this.length=e.prev;break;case`fill`:{let t=e.start??0;for(let n=0;n<e.prev.length;n++)this[n+t]=e.prev[n]}break;case`pop`:e.value&&this.push(e.value);break;case`push`:{let t=e.items.length-1;for(;t>=0;)this.pop(),--t}break;case`reverse`:this.reverse();break;case`shift`:e.value&&this.unshift(e.value);break;case`sort`:for(let t=0;t<e.prev.length;t++)this[t]=e.prev[t];this.length=e.prev.length;break;case`set`:if(e.prev)this[e.index]=e.prev;else{delete this[e.index];let t=this.findIndex((e,t)=>!Object.hasOwn(this,t));t!==-1&&(this.length=t)}break;case`splice`:this.splice(e.start,e.items.length,...e.deleted);break;case`truncate`:this.push(...e.items);break;case`unshift`:{let t=e.items.length-1;for(;t>=0;)this.shift(),--t}break}}undo(t){this.mode=`playback`;let n=e.unpackUpdate(t);return this.undoStep(n),this.mode=`record`,null}static packUpdate(e){let t=gr[e.type]+``;switch(e.type){case`set`:return t+=e.index+``+M(e.next),e.prev!==void 0&&(t+=``+M(e.prev)),t;case`truncate`:return t+e.length+``+e.items.map(M).join(``);case`extend`:return t+e.next+``+e.prev;case`pop`:case`shift`:return e.value!==void 0&&(t+=M(e.value)),t;case`push`:case`unshift`:return t+e.items.map(M).join(``);case`copyWithin`:return t+=e.target+``+e.start,e.end!==void 0&&(t+=``+e.end),t+=``+e.prev.map(M).join(``),t;case`fill`:return t+=M(e.value),e.start!==void 0&&(t+=``+e.start),e.end!==void 0&&(t+=``+e.end),t+=``+e.prev.map(M).join(``),t;case`splice`:return t+e.start+``+e.deleteCount+``+e.items.map(M).join(``)+``+e.deleted.map(M).join(``);case`reverse`:return t;case`sort`:return t+e.next.map(M).join(``)+``+e.prev.map(M).join(``)}}static unpackUpdate(e){let[t,n]=e.split(``),r=gr[t];switch(r){case`set`:{let[e,t,i]=n.split(``),a=+e,o=N(t);return i===void 0?{type:r,index:a,next:o}:{type:r,index:a,next:o,prev:N(i)}}case`truncate`:{let[e,...t]=n.split(``);return{type:r,length:+e,items:t.map(N)}}case`extend`:{let[e,t]=n.split(``);return{type:r,next:+e,prev:+t}}case`pop`:case`shift`:return n===``?{type:r}:{type:r,value:N(n)};case`push`:case`unshift`:return{type:r,items:n.split(``).map(N)};case`copyWithin`:{let[e,t]=n.split(``),i=t?t.split(``).map(N):[],[a,o,s]=e.split(``),c=+a,l=+o;return s===void 0?{type:r,target:c,start:l,prev:i}:{type:r,target:c,start:l,prev:i,end:+s}}case`fill`:{let[e,t]=n.split(``),i=t?t.split(``).map(N):[],[a,o,s]=e.split(``),c=N(a);if(o===void 0&&s===void 0)return{type:r,value:c,prev:i};let l=+o;return s===void 0?{type:r,value:c,prev:i,start:l}:{type:r,value:c,prev:i,start:l,end:+s}}case`splice`:{let[e,t,i,a]=n.split(``);return{type:r,start:+e,deleteCount:+t,items:i?i.split(``).map(N):[],deleted:a?a.split(``).map(N):[]}}case`reverse`:return{type:r};case`sort`:{let[e,t]=n.split(``);return{type:r,next:e?e.split(``).map(N):[],prev:t?t.split(``).map(N):[]}}}}},vr=class e{simplifyParams(...t){let n,r;if(t[0]instanceof e)[n,r]=t[0].simplify();else{if([n,r=1n]=t,r===0n)return{error:Error(),numerator:n};r<0n&&(n=-n,r=-r)}return[n,r]}constructor(e,t=1n){this.fractionalValues=new Map,e&&t&&this.add(e,t)}add(...e){if(typeof e[0]==`bigint`){let[t,n=1n]=e;if(n===0n)return console.error(`Attempted to add (${t} / ${n}) to a rational.`),this;n<0n&&(t=-t,n=-n);let r=t,i=this.fractionalValues.get(n);i&&(r=i+t),this.fractionalValues.set(n,r)}else for(let[t,n]of e[0].entries())this.add(n,t);return this}sub(...e){if(typeof e[0]==`bigint`){let[t,n=1n]=e;this.add(-t,n)}else for(let[t,n]of e[0].entries())this.add(-n,t);return this}mul(...e){let t=this.simplifyParams(...e);if(`error`in t)return t.error.message=`Attempted to multiply by (${t.numerator} / 0)`,console.error(t.error),this;let[n,r]=t,i=[...this.entries()];this.fractionalValues.clear();for(let[e,t]of i)this.fractionalValues.set(e*r,t*n);return this}div(...e){let t=this.simplifyParams(...e);if(`error`in t)return t.error.message=`Attempted to divide by (${t.numerator} / 0)`,console.error(t.error),this;let[n,r]=t;return this.mul(r,n),this}entries(){return this.fractionalValues.entries()}consolidate(){let e=new yr;for(let t of this.entries())for(let n of t)n!==0n&&n!==1n&&(e=e.and(n));let t=e.compute(),n=0n;for(let[e,r]of this.fractionalValues.entries())n+=r*t/e;return t<0n?[-n,-t]:[n,t]}simplify(){let[e,t]=this.consolidate();if(e===0n)return[0n,1n];let n=new yr(t).and(e).compute();return[n/t,n/e]}isGreaterThan(...e){let t=this.simplify(),n=this.simplifyParams(...e);return`error`in n?(n.error.message=`Attempted to compare (${n.numerator} / 0) to (${t[0]} / ${t[1]})`,console.error(n.error),!1):t[0]*n[1]>t[1]*n[0]}},yr=class{constructor(e){this.factors=new Map,e&&br(e,this.factors)}and(e){let t=br(e);for(let[e,n]of t){let t=this.factors.get(e);(!t||t<n)&&this.factors.set(e,n)}return this}compute(){let e=1n;for(let[t,n]of this.factors)e*=t**n;return e}};function br(e,t=new Map){let n=2n;for(;n<=e;){if(e%n===0n){let r=t.get(n)??0n;t.set(n,r+1n),br(e/n,t);break}n+=1n}return t.size===0&&t.set(e,1n),t}var xr={class:`_class_17qbf_2`},Sr=O(`<app><header><h1>Rationality Playground</h1></header><main><new-rational><button type=button>Add`,!0,!1,!1),Cr=O(`<rational-breakdown><fraction-list><infix-buttons><button type=button>−</button><button type=button>+</button><button type=button>÷</button><button type=button>×</button></infix-buttons></fraction-list><equals>=</equals><equals></equals><quotient><quotient-bits></quotient-bits><number>`,!0,!1,!1),wr=O(`<plus>+`),Tr=O(`<bit>`),Er=O(`<fraction><numerator></numerator><solidus></solidus><denominator>`),Dr=O(`<fieldset><input type=number placeholder=1><solidus></solidus><input type=number placeholder=1>`),Or=()=>Math.random().toString(36).slice(2),kr=qe({key:`newRationalNumerator`,default:void 0}),Ar=qe({key:`newRationalDenominator`,default:void 0}),jr=Ye({key:`newNumerator`,default:void 0}),Mr=Ye({key:`newDenominator`,default:void 0}),Nr=Je({key:`rationalList`,class:_r}),Pr=Ye({key:`rational`,default:()=>new vr(0n,1n)}),Fr=it({key:`simplified`,get:e=>({get:t})=>{let[n,r]=t(Pr,e).simplify();return[n,r]}}),Ir=it({key:`float`,get:e=>({get:t})=>{let[n,r]=t(Fr,e);return Number(n)/Number(r)}}),Lr=it({key:`numberBits`,get:e=>({get:t})=>{let[n,r]=t(Fr,e),i=Number(n)/Number(r),a=new ArrayBuffer(8);new DataView(a).setFloat64(0,i,!1);let o=new Uint8Array(a);return[...Array.from(o).map(e=>e.toString(2).padStart(8,`0`)).join(``)].map(e=>e===`1`?`1`:`0`)}}),Rr=it({key:`isFloatPrecise`,get:e=>({get:t})=>{let[,n]=t(Fr,e);return n===0n?!1:n>0n&&(n&n-1n)==0n}}),zr=it({key:`approximateValue`,get:e=>({get:t})=>{let n=t(Ir,e);return Number.isFinite(n)?Number(n.toPrecision(5)).toString():n.toString()}}),Br=ot({key:`combineIntoRationalTx`,do:({get:e,set:t,reset:n},r,i)=>{let a=e(jr,r)??1n,o=e(Mr,r)??1n;t(Pr,r,e(Pr,r)[i](a,o)),n(jr,r),n(Mr,r)}});function Vr(){let e=$(Nr);return(()=>{var t=Sr(),n=t.firstChild.nextSibling,r=n.firstChild,i=r.firstChild;return k(n,D(Ne,{get each(){return e()},children:e=>D(Hr,{key:e})}),r),r._$owner=ie(),k(r,D(Gr,{numeratorAtom:kr,denominatorAtom:Ar}),i),i.$$click=()=>{let e=`rat::${Or()}`;st(Br)(e,`add`),at(Pr,e,new vr(Ze(kr)??1n,Ze(Ar)??1n)),at(Nr,t=>(t.push(e),t)),rt(kr),rt(Ar)},b(()=>Ve(t,xr.class)),t})()}function Hr(e){let t=$(Pr,e.key),n=$(Fr,e.key),r=$(Ir,e.key),i=$(Rr,e.key),a=$(zr,e.key),o=$(Lr,e.key);return(()=>{var s=Cr(),c=s.firstChild,l=c.firstChild,u=l.firstChild,d=u.nextSibling,f=d.nextSibling,p=f.nextSibling,m=c.nextSibling.nextSibling,h=m.nextSibling.firstChild,g=h.nextSibling;return s._$owner=ie(),c._$owner=ie(),k(c,D(Ne,{get each(){return[...t().entries()]},children:([e,t],n)=>[D(Pe,{get when(){return n()!==0},get children(){return wr()}}),D(Ur,{numerator:t,denominator:e})]}),l),l._$owner=ie(),u.$$click=()=>{st(Br)(e.key,`sub`)},d.$$click=()=>{st(Br)(e.key,`add`)},f.$$click=()=>{st(Br)(e.key,`div`)},p.$$click=()=>{st(Br)(e.key,`mul`)},k(c,D(Wr,{get key(){return e.key}}),null),k(s,D(Ur,{get numerator(){return n()[0]},get denominator(){return n()[1]}}),m),k(m,()=>i()?`=`:`≈`),h._$owner=ie(),k(h,D(Ne,{get each(){return o()},children:e=>(()=>{var t=Tr();return Be(t,`data-css`,e===`1`?`one`:void 0),t})()})),k(g,(()=>{var e=Fe(()=>!!i());return()=>e()?r():a()})()),s})()}function Ur(e){return(()=>{var t=Er(),n=t.firstChild,r=n.nextSibling.nextSibling;return k(n,()=>Number(e.numerator)),k(r,()=>Number(e.denominator)),b(t=>{var i=e.numerator===1n?`one`:void 0,a=e.denominator===1n?`one`:void 0;return i!==t.e&&Be(n,`data-css`,t.e=i),a!==t.t&&Be(r,`data-css`,t.t=a),t},{e:void 0,t:void 0}),t})()}function Wr({key:e}){return D(Gr,{numeratorAtom:Xe(jr,e),denominatorAtom:Xe(Mr,e)})}function Gr({numeratorAtom:e,denominatorAtom:t}){let n=$(e),r=mr(e),i=$(t),a=mr(t);return(()=>{var e=Dr(),t=e.firstChild,o=t.nextSibling.nextSibling;return t.$$input=e=>{r(BigInt(e.currentTarget.value))},o.$$input=e=>{a(BigInt(e.currentTarget.value))},b(()=>t.value=n()?.toString()),b(()=>o.value=i()?.toString()),e})()}ze([`click`,`input`]),Re(()=>D(fr,{get children(){return D(Vr,{})}}),document.getElementById(`app`));
4
+ `):``}function kt(e,t,n,r=`any`){let i=t,a=F(n),o=[],s=I(e);if(Array.isArray(i))for(let t of i){let n=F(t);s.molecules.get(n)?e.moleculeGraph.set(n,a,{source:n}):o.push(n)}else{let t=F(i);s.molecules.get(t)?e.moleculeGraph.set(t,a,{source:t}):o.push(t)}let c=new R;o.length===0&&s.molecules.set(a,{key:n,stringKey:a,dependsOn:r,subject:c});let l={type:`molecule_creation`,key:n,provenance:i,timestamp:Date.now()};U(s)&&s.transactionMeta.phase===`building`?s.transactionMeta.update.subEvents.push(l):s.on.moleculeCreation.next(l);for(let t of o){let r=e.disposalTraces.buffer.find(e=>e?.key===t);e.logger.error(`❌`,`key`,n,`allocation failed:`,`Could not allocate to ${t} in store "${e.config.name}".`,r?`\n ${t} was most recently disposed\n${r.trace}`:`No previous disposal trace for ${t} was found.`)}return n}function At(e,t){let n=F(t),r=e.molecules.get(n);if(!r){let r=e.disposalTraces.buffer.find(e=>e?.key===n);e.logger.error(`❌`,`key`,t,`deallocation failed:`,`Could not find allocation for ${n} in store "${e.config.name}".`,r?`\n This state was most recently deallocated\n${r.trace}`:`No previous disposal trace for ${n} was found.`);return}r.subject.next();let i=e.keyRefsInJoins.getRelatedKeys(n);if(i)for(let n of i){let r=e.joins.get(n);r&&r.relations.delete(t)}else{let n=nt(t);if(n){let[,t,r]=n,i=e.keyRefsInJoins.getRelatedKey(tt(t,r));if(i){let n=e.joins.get(i);n&&n.relations.delete(t,r)}}}e.keyRefsInJoins.delete(n);let a=[],o=[],s=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:n});if(s)for(let[t,{source:r}]of s)r===n?At(e,P(t)):a.push(r);let c=e.moleculeData.getRelatedKeys(r.stringKey);if(c)for(let n of c){let r=e.families.get(n),i=J(e,r,t);o.push([r.key,i]),gn(e,r,t)}let l={type:`molecule_disposal`,key:r.key,values:o,provenance:a,timestamp:Date.now()};e.molecules.delete(n);let u=U(e)&&e.transactionMeta.phase===`building`;u&&e.transactionMeta.update.subEvents.push(l),e.moleculeGraph.delete(r.stringKey),e.keyRefsInJoins.delete(r.stringKey),e.moleculeData.delete(r.stringKey),u||e.on.moleculeDisposal.next(l),e.molecules.delete(r.stringKey);let d=Ot(Error());e.disposalTraces.add({key:n,trace:d})}function jt(e,t,n,r){let i=F(n),a=I(e),o=a.molecules.get(i);if(!o){let t=e.disposalTraces.buffer.find(e=>e?.key===i);return e.logger.error(`❌`,`key`,i,`claim failed:`,`Could not allocate to ${i} in store "${e.config.name}".`,t?`\n ${i} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${i} was found.`),n}let s=F(t),c=a.molecules.get(s);if(!c){let t=e.disposalTraces.buffer.find(e=>e?.key===s);return e.logger.error(`❌`,`key`,n,`claim failed:`,`Could not allocate to ${s} in store "${e.config.name}".`,t?`\n ${s} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${s} was found.`),n}let l=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:o.stringKey}).filter(([,{source:e}])=>e!==i).map(([e])=>P(e));r&&a.moleculeGraph.delete(i),a.moleculeGraph.set({upstreamMoleculeKey:c.stringKey,downstreamMoleculeKey:o.stringKey},{source:c.stringKey});let u={type:`molecule_transfer`,key:o.key,exclusive:!!r,from:l,to:[c.key],timestamp:Date.now()};return U(a)&&a.transactionMeta.phase===`building`&&a.transactionMeta.update.subEvents.push(u),n}function Mt(e,t,n){switch(n){case`newValue`:Pt(e,t);break;case`oldValue`:gn(e,t.token);break}}function Nt(e,t,n){switch(n){case`newValue`:gn(e,t.token);break;case`oldValue`:Pt(e,t),t.subType===`atom`&&e.valueMap.set(t.token.key,t.value);break}}function Pt(e,t){let{token:n}=t;t.subType===`writable`&&t.value?X(e,n,t.value):J(e,n)}function Ft(e,t,n){switch(n){case`newValue`:kt(e,t.provenance,t.key);break;case`oldValue`:At(e,t.key);break}}function It(e,t,n){switch(n){case`newValue`:At(e,t.key);break;case`oldValue`:kt(e,t.provenance.map(P),t.key);for(let[n,r]of t.values){let i=e.families.get(n);if(i){J(e,i,t.key);let a=`${n}(${F(t.key)})`;e.valueMap.set(a,r)}}break}}function Lt(e,t,n){switch(n){case`newValue`:for(let n of t.to)jt(e,n,t.key,t.exclusive?`exclusive`:void 0);break;case`oldValue`:{let n=`exclusive`;for(let r of t.from)jt(e,r,t.key,n),n=void 0}break}}function Rt(e,t,n){let r=n===`newValue`?t.subEvents:[...t.subEvents].reverse();for(let t of r)switch(t.type){case`atom_update`:Dt(e,t,n);break;case`state_creation`:Mt(e,t,n);break;case`state_disposal`:Nt(e,t,n);break;case`molecule_creation`:Ft(e,t,n);break;case`molecule_disposal`:It(e,t,n);break;case`molecule_transfer`:Lt(e,t,n);break;case`transaction_outcome`:Rt(e,t,n);break}}function H(e){return`epoch`in e.transactionMeta}function U(e){return`phase`in e.transactionMeta}function zt(e,t){return e.transactionMeta.actionContinuities.getRelatedKey(t)}function Bt(e,t){return e.transactionMeta.epoch.get(t)}function Vt(e,t){let n=zt(e,t);if(n!==void 0)return Bt(e,n)}function Ht(e,t,n){let r=zt(e,t);r!==void 0&&e.transactionMeta.epoch.set(r,n)}function Ut(e,t){let n=I(e),{parent:r}=n;n.transactionMeta.phase=`applying`,n.transactionMeta.update.output=t,r.child=null,r.on.transactionApplying.next(n.transactionMeta);let{subEvents:i}=n.transactionMeta.update;e.logger.info(`🛄`,`transaction`,n.transactionMeta.update.token.key,`applying ${i.length} subEvents:`,i),Rt(r,n.transactionMeta.update,`newValue`),H(r)?(Ht(r,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),K(e,{key:n.transactionMeta.update.token.key,type:`transaction`})?.subject.next(n.transactionMeta.update),e.logger.info(`🛬`,`transaction`,n.transactionMeta.update.token.key,`applied`)):U(r)&&r.transactionMeta.update.subEvents.push(n.transactionMeta.update),r.on.transactionApplying.next(null)}function Wt(e){return{store:e}}function W(e){return e[0].toUpperCase()+e.slice(1)}function Gt(e,t){let n=e.joins.get(t.key);if(n===void 0){let r=G.STORE.joins.get(t.key);if(r===void 0)throw Error(`Join "${t.key}" not found in store "${e.config.name}"`);n=new Yt(gt(e),r.options),e.joins.set(t.key,n)}return n}function Kt(e,t,n){let r=Gt(e,t),i=I(e);if(U(i)){let{toolkit:e}=i.transactionMeta;r.transact(e,({relations:e})=>{n(e)})}else n(r.relations)}function qt(e,t,n){let r=Gt(e,t),i;switch(t.cardinality){case`1:1`:{let a=`${t.a}KeyOf${W(t.b)}`,o=`${t.b}KeyOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}};break}case`1:n`:{let a=`${t.a}KeyOf${W(t.b)}`,o=`${t.b}KeysOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}};break}case`n:n`:{let a=`${t.a}KeysOf${W(t.b)}`,o=`${t.b}KeysOf${W(t.a)}`;i={get[a](){let t=r.states[a];return Y(e,t,n)},get[o](){let t=r.states[o];return Y(e,t,n)}}}}return i}function Jt(e,t,n){let r=Gt(e,t);return n===`split`?[r.relatedKeysAtoms,r.relatedKeysAtoms]:r.relatedKeysAtoms}var Yt=class{toolkit;options;relations;states;relatedKeysAtoms;transact(e,t){let n=this.toolkit;this.toolkit=e,t(this),this.toolkit=n}store;[Symbol.dispose](){}constructor(e,t){this.store=e,this.options=t,this.store.miscResources.set(`join:${t.key}`,this),this.toolkit={get:((...t)=>J(e,...t)),set:((...t)=>{X(e,...t)}),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{edit:((...t)=>{Kt(e,...t)}),find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}};let n=t.between[0],r=t.between[1],i=er(e,{key:`${t.key}/relatedKeys`,class:mt},[`join`,`relations`]);this.relatedKeysAtoms=i;let a=(t,n,r)=>{let{find:a,get:o,set:s}=t,c=a(i,n),l=o(c);for(let e of l)r.includes(e)||s(i,e,e=>(e.delete(n),e));s(c,t=>{t.clear();for(let c of r){let r=a(i,c),l=o(r),u=l.has(n);if(this.relations.cardinality===`1:n`){let t=[];for(let e of l){if(e===n)continue;let r;Mn(jn,this.store,i,e,e=>(e.delete(c),r=e.size,e)),r===0&&t.push(e)}!u&&l.size>0&&s(r,e=>(e.clear(),e));for(let n of t)e.keyRefsInJoins.delete(tt(c,n))}u||s(r,e=>(e.add(n),e)),t.add(c)}return t})},o=(e,t,n)=>{let{set:r}=e;r(i,t,e=>{for(let t of n)e.add(t);return e});for(let e of n)r(i,e,e=>(e.add(t),e));return!0},s=new V(t,{externalStore:{getRelatedKeys:e=>this.toolkit.get(i,e),addRelation:(e,n)=>{this.store.keyRefsInJoins.set(`"${e}"`,t.key),this.store.keyRefsInJoins.set(`"${n}"`,t.key),this.store.keyRefsInJoins.set(tt(e,n),t.key),this.toolkit.set(i,e,e=>e.add(n)),this.toolkit.set(i,n,t=>t.add(e))},deleteRelation:(e,t)=>{this.toolkit.set(i,e,e=>(e.delete(t),e)),this.toolkit.set(i,t,t=>(t.delete(e),t));let n=tt(e,t);this.store.keyRefsInJoins.delete(n)},replaceRelationsSafely:(e,t)=>{a(this.toolkit,e,t)},replaceRelationsUnsafely:(e,t)=>{o(this.toolkit,e,t)},has:(e,t)=>{let n=this.toolkit.get(i,e);return t?n.has(t):n.size>0}},isAType:t.isAType,isBType:t.isBType}),c=()=>un(e,{key:`${t.key}/singleRelatedKey`,get:e=>({get:t})=>{let n=t(i,e);for(let e of n)return e;return null}},[`join`,`keys`]),l=()=>un(e,{key:`${t.key}/multipleRelatedKeys`,get:t=>({get:n})=>n(tr(i,e),t)},[`join`,`keys`]);switch(t.cardinality){case`1:1`:{let e=c(),t=`${n}KeyOf${W(r)}`,i=`${r}KeyOf${W(n)}`;this.relations=s,this.states={[t]:e,[i]:e};break}case`1:n`:{let e=c(),t=l(),i=`${n}KeyOf${W(r)}`,a=`${r}KeysOf${W(n)}`,o={[i]:e,[a]:t};this.relations=s,this.states=o;break}case`n:n`:{let e=l(),t=`${n}KeysOf${W(r)}`,i=`${r}KeysOf${W(n)}`;this.relations=s,this.states={[t]:e,[i]:e}}}}};function Xt(e,t,n,r){let i=I(e),a={parent:i,child:null,on:i.on,loggers:i.loggers,logger:i.logger,config:i.config,atoms:new B(i.atoms),atomsThatAreDefault:new Set(i.atomsThatAreDefault),families:new B(i.families),joins:new B(i.joins),operation:{open:!1},readonlySelectors:new B(i.readonlySelectors),timelines:new B(i.timelines),timelineTopics:i.timelineTopics.overlay(),trackers:new Map,transactions:new B(i.transactions),selectorAtoms:i.selectorAtoms.overlay(),selectorGraph:i.selectorGraph.overlay(),writableSelectors:new B(i.writableSelectors),valueMap:new B(i.valueMap),defaults:i.defaults,disposalTraces:e.disposalTraces.copy(),molecules:new B(i.molecules),moleculeGraph:i.moleculeGraph.overlay(),moleculeData:i.moleculeData.overlay(),keyRefsInJoins:i.keyRefsInJoins.overlay(),miscResources:new B(i.miscResources)},o=Vt(e,t.key),s={phase:`building`,update:{type:`transaction_outcome`,token:t,id:r,epoch:o===void 0?NaN:o+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...e)=>J(c,...e)),set:((...e)=>{X(c,...e)}),reset:((...e)=>{Dn(c,...e)}),run:(e,t=ht())=>Et(c,e,t),find:((...t)=>Y(e,...t)),json:e=>Z(c,e),dispose:((...e)=>{gn(c,...e)}),env:()=>Wt(c),relations:{edit:((...e)=>{Kt(c,...e)}),find:((...e)=>qt(c,...e)),internal:((...e)=>Jt(c,...e))}}},c=Object.assign(a,{transactionMeta:s});return i.child=c,e.logger.info(`🛫`,`transaction`,t.key,`building with params:`,n),c}function Zt(e,t){let{key:n}=t,r=e.transactions.has(n),i={key:n,type:`transaction`,run:(r,a)=>{let o=Xt(e,z(i),r,a);try{let{toolkit:e}=o.transactionMeta,n=t.do(e,...r);return Ut(o,n),n}catch(t){throw Tt(o),e.logger.warn(`💥`,`transaction`,n,`caught:`,t),t}},install:e=>Zt(e,t),subject:new R};I(e).transactions.set(n,i);let a=z(i);return r||e.on.transactionCreation.next(a),a}var Qt=class{parent=null;child=null;valueMap=new Map;defaults=new Map;atoms=new Map;writableSelectors=new Map;readonlySelectors=new Map;atomsThatAreDefault=new Set;selectorAtoms=new V({between:[`selectorKey`,`atomKey`],cardinality:`n:n`});selectorGraph=new V({between:[`upstreamSelectorKey`,`downstreamSelectorKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});trackers=new Map;families=new Map;joins=new Map;transactions=new Map;transactionMeta={epoch:new Map,actionContinuities:new V({between:[`continuity`,`action`],cardinality:`1:n`})};timelines=new Map;timelineTopics=new V({between:[`timelineKey`,`topicKey`],cardinality:`1:n`});disposalTraces=new xt(100);molecules=new Map;moleculeGraph=new V({between:[`upstreamMoleculeKey`,`downstreamMoleculeKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});moleculeData=new V({between:[`moleculeKey`,`stateFamilyKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});keyRefsInJoins=new V({between:[`moleculeKey`,`joinKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});miscResources=new Map;on={atomCreation:new R,atomDisposal:new R,selectorCreation:new R,selectorDisposal:new R,timelineCreation:new R,transactionCreation:new R,transactionApplying:new bt(null),operationClose:new R,moleculeCreation:new R,moleculeDisposal:new R};operation={open:!1};config={name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0};loggers=[new et(`warn`,(e,t,n)=>!wt(n))];logger={error:(...e)=>{for(let t of this.loggers)t.error(...e)},info:(...e)=>{for(let t of this.loggers)t.info(...e)},warn:(...e)=>{for(let t of this.loggers)t.warn(...e)}};constructor(e,t=null){if(this.config={...t?.config,...e},t!==null){this.operation={...t?.operation},H(t)&&(this.transactionMeta={epoch:new Map(t?.transactionMeta.epoch),actionContinuities:new V(t?.transactionMeta.actionContinuities.toJSON())});for(let[,e]of t.families)e.internalRoles?.includes(`mutable`)||e.internalRoles?.includes(`join`)||e.install(this);let e=new Set;for(let[,n]of t.atoms)if(!e.has(n.key)&&(n.install(this),n.type===`mutable_atom`)){let r=Z(t,n),i=nr(n);e.add(r.key),e.add(i.key)}for(let[,e]of t.readonlySelectors)e.install(this);for(let[,n]of t.writableSelectors)e.has(n.key)||n.install(this);for(let[,e]of t.transactions)e.install(this);for(let[,e]of t.timelines)e.install(this)}}},G={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new Qt({name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0}),globalThis.ATOM_IO_IMPLICIT_STORE}},$t=class extends Error{constructor(e,t){super(`${j[e.type]} ${F(e.key)} not found in store "${t.config.name}".`)}};function K(e,t){let n,r=e;for(;r!==null;){switch(t.type){case`atom`:case`mutable_atom`:n=r.atoms.get(t.key);break;case`writable_pure_selector`:case`writable_held_selector`:n=r.writableSelectors.get(t.key);break;case`readonly_pure_selector`:case`readonly_held_selector`:n=r.readonlySelectors.get(t.key);break;case`atom_family`:case`mutable_atom_family`:case`writable_pure_selector_family`:case`readonly_pure_selector_family`:case`writable_held_selector_family`:case`readonly_held_selector_family`:n=r.families.get(t.key);break;case`timeline`:n=r.timelines.get(t.key);break;case`transaction`:n=r.transactions.get(t.key);break}if(n)return n;r=r.child}throw new $t(t,e)}function en(e,t,n,r){let i=e.disposalTraces.buffer.find(e=>e?.key===F(r));switch(e.logger.error(`❌`,t.type,t.key,`gets a fallback value because key`,r,`is not allocated`,i?`This key was previously disposed:\n${i.trace}`:`(no previous disposal trace found)`),n.type){case`mutable_atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=new n.class;return e.defaults.set(n.key,t),t.READONLY_VIEW}case`atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default,i=t(r);return e.defaults.set(n.key,i),i}case`readonly_pure_selector_family`:case`writable_pure_selector_family`:case`readonly_held_selector_family`:case`writable_held_selector_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default(r);return e.defaults.set(n.key,t),t}}}function tn(e,t){let{type:n,key:r,catch:i}=t;switch(n){case`readonly_pure_selector`:case`writable_pure_selector`:{let a;e.logger.info(`🧮`,n,r,`computing value`);try{a=t.getFrom(e),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(a){if(e.logger.error(`💥`,n,r,`rejected:`,a),i){for(let n of i)if(a instanceof n)return Q(e,t,a)}throw a}return Q(e,t,a)}case`atom`:{let a;if(L(t.default))try{a=t.default(),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(o){if(e.logger.error(`💥`,n,r,`rejected:`,o),i){for(let n of i)if(o instanceof n)return a=Q(e,t,o),e.logger.info(`✨`,t.type,r,`computed default`,a),a}throw o}else a=t.default,e.logger.info(`✨`,t.type,r,`using static default`,a);return Q(e,t,a)}}}function q(e,t,n){if(e.valueMap.has(t.key))return ir(e,t,n);e.logger.info(`❔`,t.type,t.key,`value not found in cache`);let{key:r}=t;switch(t.type){case`readonly_held_selector`:case`writable_held_selector`:return e.logger.info(`🧮`,t.type,r,`computing value`),t.getFrom(e);case`writable_pure_selector`:case`readonly_pure_selector`:case`atom`:return tn(e,t);case`mutable_atom`:{let n=new t.class;return e.logger.info(`✨`,t.type,r,`created new instance`,n),Q(e,t,n)}}}function nn(e,t){return K(e,{key:t.family.key,type:`${t.type}_family`})}var rn={atom_family:`atom`,molecule_family:`molecule`,mutable_atom_family:`mutable_atom`,readonly_held_selector_family:`readonly_held_selector`,readonly_pure_selector_family:`readonly_pure_selector`,writable_held_selector_family:`writable_held_selector`,writable_pure_selector_family:`writable_pure_selector`},an=Symbol(`MUST_CREATE`),on=Symbol(`DO_NOT_CREATE`);function sn(e,t,n,r){let i=F(r),a=t.molecules.get(i);if(!a&&t.config.lifespan===`immortal`){let{type:e,key:r}=n;return t.logger.warn(`💣`,`key`,i,`was used to mint a counterfeit token for`,e,`"${r}"`),{counterfeit:!0,key:`${r}(${i})`,type:rn[e],family:{key:r,subKey:i}}}let o;if(e===an)t.logger.info(`👪`,n.type,n.key,`adds member`,typeof r==`string`?`\`${r}\``:r),o=n.create(r),a&&t.moleculeData.set(i,n.key);else{let{type:e,key:t}=n;return{key:`${t}(${i})`,type:rn[e],family:{key:t,subKey:i}}}return o}function cn(e,...t){let n,r,i,a,o;if(t.length===1){if(o=t[0],`family`in o){let t=nn(e,o);if(i=K(e,t),a=P(o.family.subKey),n=ln(e,t,a),`counterfeit`in o)return{token:o,family:i,subKey:a,isNew:!1};n?o=n:(r=sn(an,e,t,a),o=r)}}else i=K(e,t[0]),a=t[1],n=ln(e,i,a),n?o=n:(r=sn(an,e,i,a),o=r);let s=`counterfeit`in o;if(r&&s===!1&&i){let t;switch(o.type){case`readonly_pure_selector`:case`readonly_held_selector`:t=`readable`;break;case`atom`:case`mutable_atom`:case`writable_pure_selector`:case`writable_held_selector`:t=`writable`;break}let n={type:`state_creation`,subType:t,token:o,timestamp:Date.now()};i.subject.next(n);let r=I(e);if(o.family)if(H(r))switch(o.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(o);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:e.on.selectorCreation.next(o);break}else U(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n)}return{token:o,family:i,subKey:a,isNew:!!r}}function J(e,...t){let{token:n,family:r,subKey:i}=cn(e,...t);return`counterfeit`in n&&r&&i?en(e,n,r,i):q(e,K(e,n))}function ln(e,t,n){let r=F(n),i=`${t.key}(${r})`,a=I(e),o;switch(t.type){case`atom_family`:case`mutable_atom_family`:o=a.atoms.get(i);break;case`writable_held_selector_family`:case`writable_pure_selector_family`:o=a.writableSelectors.get(i);break;case`readonly_held_selector_family`:case`readonly_pure_selector_family`:o=a.readonlySelectors.get(i);break}return o&&z(o)}function Y(e,t,n){let r=K(e,t);return ln(e,t,n)||sn(on,e,r,n)}function un(e,t,n){let r=t.key,i=`readonly_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`,s=I(e),c={key:o,get:t.get(n)};return t.catch&&(c.catch=t.catch),Hn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>un(e,t),default:n=>t.get(n)({get:J.bind(null,e),find:Y.bind(null,e),json:t=>Z(e,t),relations:{find:qt.bind(null,e),internal:Jt.bind(null,e)}})};return e.families.set(r,l),a}function dn(e,t,n){let r={key:t.key,type:`atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`atom_family`,t.key,`Overwriting an existing ${j[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new R,o=n=>{let r=F(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=I(e),s=t.default,c={key:a,default:L(s)?()=>s(n):s};return t.effects&&(c.effects=t.effects(n)),t.catch&&(c.catch=t.catch),cr(o,c,i)},s={...r,create:o,default:t.default,subject:a,install:e=>dn(e,t),internalRoles:n};return e.families.set(t.key,s),L(t.default)===!1&&e.defaults.set(t.key,t.default),r}function fn(e,t,n){let r=t.key,i=`readonly_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`;return Vn(I(e),{key:o,const:t.const(n),get:t.get(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>fn(e,t),default:t.const};return e.families.set(r,l),a}function pn(e,t,n){let r=t.key,i=`writable_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`;return Un(I(e),{key:o,const:t.const(n),get:t.get(n),set:t.set(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>pn(e,t),default:t.const};return e.families.set(r,l),a}function mn(e,t,n){let r=t.key,i=`writable_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${j[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new R,c=n=>{let i=F(n),a={key:r,subKey:i},o=`${r}(${i})`,s=I(e),c={key:o,get:t.get(n),set:t.set(n)};return t.catch&&(c.catch=t.catch),Wn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>mn(e,t),default:n=>t.get(n)({get:((...t)=>J(e,...t)),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}})};return e.families.set(r,l),a}function hn(e,t){let n=`set`in t,r=`const`in t;return r&&n?pn(e,t,void 0):r?fn(e,t,void 0):n?mn(e,t):un(e,t)}function gn(e,...t){let n;if(t.length===1)n=t[0];else{let r=t[0],i=t[1];n=Y(e,r,i)}try{K(e,n)}catch{e.logger.error(`❌`,n.type,n.key,`could not be disposed because it was not found in the store "${e.config.name}".`);return}switch(n.type){case`atom`:case`mutable_atom`:ur(e,n);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:Kn(e,n);break}}function _n(e,t){if(e.operation.open){let n=performance.now();return e.logger.info(`🚫`,t.type,t.key,`deferring setState at T-${n} until setState for "${e.operation.token.key}" is done`),n}return e.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:t,subEvents:[]},e.logger.info(`⭕`,t.type,t.key,`operation start in store "${e.config.name}"${U(e)?` ${e.transactionMeta.phase} "${e.transactionMeta.update.token.key}"`:``}`),e}function vn(e){e.operation.open&&e.logger.info(`🔴`,e.operation.token.type,e.operation.token.key,`operation done in store "${e.config.name}"`),e.operation={open:!1},e.on.operationClose.next(e.operation)}function yn(e,t){return e.operation.open?e.operation.done.has(t):(e.logger.error(`🐞`,`unknown`,t,`isDone called outside of an operation. This is probably a bug in AtomIO.`),!0)}function bn(e,t){if(!e.operation.open){e.logger.error(`🐞`,`unknown`,t,`markDone called outside of an operation. This is probably a bug in AtomIO.`);return}e.operation.done.add(t)}function xn(e,t,n,r,i){let{oldValue:a,newValue:o}=n,s=`oldValue`in n,c=z(t);if(r&&i){t.subject.next({newValue:o});let n={checkpoint:!0,type:`state_creation`,subType:`writable`,token:c,timestamp:Date.now(),value:o};e.operation.subEvents.push(n),i.subject.next(n);let r=I(e);if(c.family)if(H(r))switch(c.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(c);break;case`writable_pure_selector`:case`writable_held_selector`:e.on.selectorCreation.next(c);break}else U(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n);return}let{key:l,subject:u,type:d}=t,f;if(f=s?{oldValue:rr(a)?a.READONLY_VIEW:a,newValue:rr(o)?o.READONLY_VIEW:o}:{newValue:rr(o)?o.READONLY_VIEW:o},H(e)){switch(d){case`mutable_atom`:e.logger.info(`📢`,d,l,`is now (`,o,`) subscribers:`,u.subscribers.keys());break;case`atom`:case`writable_pure_selector`:case`writable_held_selector`:e.logger.info(`📢`,d,l,`went (`,a,`->`,o,`) subscribers:`,u.subscribers.keys())}u.next(f)}if(U(e)&&(d===`mutable_atom`||d===`atom`)){if(e.on.transactionApplying.state===null){if(rr(o))return;let{timestamp:t}=e.operation,n={type:`atom_update`,token:c,timestamp:t,update:f};e.transactionMeta.update.subEvents.push(n),e.logger.info(`📁`,`atom`,l,`stowed (`,a,`->`,o,`)`);return}if(lr(t,`tracker:signal`)){let t=l.slice(1),n=e.atoms.get(t);q(e,n,`mut`).do(f.newValue)===null&&or(e,n)}}}var Sn=Symbol(`UNSET`);function Cn(e,t,n){let r,i;if(L(n)){let a=q(e,t,`mut`);r=a,i=n(a)}else r=e.valueMap.has(t.key)?ir(e,t,`mut`):t.type===`atom`&&!L(t.default)?t.default:Sn,i=n;return e.logger.info(`⭐`,`atom`,t.key,`setting value`,i),i=Q(e,t,i),bn(e,t.key),or(e,t),r===Sn?{newValue:i}:{oldValue:r,newValue:i}}function wn(e,t){switch(t.type){case`mutable_atom`:return Cn(e,t,new t.class);case`atom`:{let n;return n=L(t.default)?tn(e,t):t.default,Cn(e,t,n)}}}function Tn(e,t){let n;switch(t.type){case`atom`:case`mutable_atom`:n=wn(e,t);break;case`writable_held_selector`:{let r=Rn(e,t.key);for(let n of r.values())xn(e,t,wn(e,n),!1);let i=t.getFrom(e);n={oldValue:i,newValue:i}}break;case`writable_pure_selector`:{let r=tn(e,t),i=Rn(e,t.key);for(let n of i.values())xn(e,t,wn(e,n),!1);n={oldValue:r,newValue:tn(e,t)}}break}return n}function X(e,...t){Mn(An,e,...t)}var En=Symbol(`RESET`);function Dn(e,...t){X(e,...t,En)}function On(e,t,n){let r,i,a,{type:o,key:s}=t;switch(t.type){case`writable_pure_selector`:r=q(e,t,`mut`),i=vt(n,r),i=Q(e,t,i);break;case`writable_held_selector`:a=t.const,vt(n,a),r=a,i=a}return e.logger.info(`⭐`,o,s,`setting to`,i),bn(e,s),t.setSelf(i),{oldValue:r,newValue:i}}function kn(e,t,n){let r;switch(t.type){case`atom`:case`mutable_atom`:r=Cn(e,t,n);break;case`writable_pure_selector`:case`writable_held_selector`:r=On(e,t,n);break}return r}var An=Symbol(`OWN_OP`),jn=Symbol(`JOIN_OP`);function Mn(e,t,...n){let r,i,a,o,s,c;n.length===2?(a=n[0],c=n[1],`family`in a&&(o=nn(t,a),s=P(a.family.subKey),r=ln(t,o,s),a=r||(i=sn(an,t,o,s)))):(o=K(t,n[0]),s=n[1],c=n[2],r=ln(t,o,s),a=r||(i=sn(an,t,o,s)));let l=c===En?`reset`:`set`,u;if(e===An){let n=_n(t,a);if(typeof n==`number`){let r=n,i=t.on.operationClose.subscribe(`waiting to ${l} "${a.key}" at T-${r}`,function(){i(),t.logger.info(`🟢`,a.type,a.key,`resuming deferred`,l,`from T-${r}`),Mn(e,t,a,c)});return}u=n}else u=t;if(`counterfeit`in a&&`family`in a){let e=a.family.subKey,n=t.disposalTraces.buffer.find(t=>t?.key===e);t.logger.error(`❌`,a.type,a.key,`could not be`,l,`because key`,e,`is not allocated.`,n?`this key was previously disposed:${n.trace}`:`(no previous disposal trace found)`);return}let d=K(u,a),f;f=c===En?Tn(u,d):kn(u,d,c),xn(u,d,f,!!i,o),e===An&&vn(u)}var Nn=(e,t)=>I(e).atoms.has(t),Pn=(e,t)=>I(e).writableSelectors.has(t),Fn=(e,t)=>I(e).readonlySelectors.has(t),In=(e,t)=>Nn(e,t)||Pn(e,t)||Fn(e,t);function Ln(e,t){return I(e).selectorGraph.getRelationEntries({downstreamSelectorKey:t}).filter(([e,{source:n}])=>n!==t).map(([e,{source:t}])=>t).filter(t=>In(e,t))}function Rn(e,t,n=new Set){let r=Ln(e,t),i=new Map;for(;r.length>0;){let t=r.pop();if(!n.has(t))if(n.add(t),Nn(e,t)){let n=e.atoms.get(t);i.set(n.key,n)}else r.push(...Ln(e,t))}return i}function zn(e,t,n,r,i){let a=I(e),{type:o,key:s}=r;if(o===`atom`||o===`mutable_atom`)a.selectorAtoms.set({selectorKey:n,atomKey:s}),e.logger.info(`🔍`,t,n,`discovers root atom "${s}"`);else{let r=Rn(e,s,i);e.logger.info(`🔍`,t,n,`discovers root atoms: [ ${[...r.values()].map(e=>`"${e.key}"`).join(`, `)} ]`);for(let{key:e}of r.values())a.selectorAtoms=a.selectorAtoms.set({selectorKey:n,atomKey:e})}i.add(s)}function Bn(e,t,n,r){return{get:(...i)=>{let a=I(e),{token:o,family:s,subKey:c}=cn(e,...i),l;return l=`counterfeit`in o&&s&&c?en(e,o,s,c):q(e,K(e,o)),e.logger.info(`🔌`,t,n,`registers dependency ( "${o.key}" =`,l,`)`),a.selectorGraph.set({upstreamSelectorKey:o.key,downstreamSelectorKey:n},{source:o.key}),zn(e,t,n,o,r),l},set:((...t)=>{Mn(jn,I(e),...t)}),find:((...t)=>Y(e,...t)),json:t=>Z(e,t),relations:{edit:((...t)=>{Kt(e,...t)}),find:((...t)=>qt(e,...t)),internal:((...t)=>Jt(e,...t))}}}function Vn(e,t,n){let r=I(e),i=new R,a=new Set,{key:o,const:s}=t,c=`readonly_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let{get:l,find:u,json:d,relations:f}=Bn(r,c,o,a),p=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get({get:l,find:u,json:d,relations:f},s),Q(n,m,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},m={...t,type:c,subject:i,getFrom:p,install:e=>Vn(e,t,n)};n&&(m.family=n),r.readonlySelectors.set(o,m);let h={key:o,type:c};return n&&(h.family=n),h}function Hn(e,t,n){let r=I(e),i=new R,a=new Set,o=t.key,s=`readonly_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let{get:c,find:l,json:u,relations:d}=Bn(r,s,o,a),f=()=>{let n=I(e),r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get({get:c,find:l,json:u,relations:d});return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},p={...t,type:s,subject:i,getFrom:f,install:e=>Hn(e,t,n)};n&&(p.family=n),r.readonlySelectors.set(o,p);let m={key:o,type:s};return n&&(m.family=n),m}function Un(e,t,n){let r=I(e),i=new R,a=new Set,{key:o,const:s}=t,c=`writable_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let l=Bn(r,c,o,a),{find:u,get:d,json:f,relations:p}=l,m={find:u,get:d,json:f,relations:p},h=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get(m,s),Q(n,_,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},g=()=>{t.set(l,s)},_={...t,type:c,subject:i,getFrom:h,setSelf:g,install:e=>Un(e,t,n)};n&&(_.family=n),r.writableSelectors.set(o,_);let v={key:o,type:c};return n&&(v.family=n),v}function Wn(e,t,n){let r=I(e),i=new R,a=new Set,o=t.key,s=`writable_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let c=Bn(r,s,o,a),{find:l,get:u,json:d,relations:f}=c,p={find:l,get:u,json:d,relations:f},m=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get(p);return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},h=e=>{t.set(c,e)},g={...t,type:s,subject:i,getFrom:m,setSelf:h,install:e=>Wn(e,t,n)};n&&(g.family=n),r.writableSelectors.set(o,g);let _={key:o,type:s};return n&&(_.family=n),_}function Gn(e,t){let n=`set`in t,r=`const`in t;if(r&&n){let n=Un(e,t,void 0);return e.on.selectorCreation.next(n),n}if(r){let n=Vn(e,t,void 0);return e.on.selectorCreation.next(n),n}if(n){let n=Wn(e,t,void 0);return e.on.selectorCreation.next(n),n}let i=Hn(e,t,void 0);return e.on.selectorCreation.next(i),i}function Kn(e,t){let n=I(e),{key:r,type:i,family:a}=t;if(!a)e.logger.error(`❌`,i,r,`Standalone selectors cannot be disposed.`);else{n.molecules.get(a.subKey)&&n.moleculeData.delete(a.subKey,a.key);let i;switch(t.type){case`writable_held_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_held_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`writable_pure_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_pure_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_held_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_held_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_pure_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_pure_selector_family`},K(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break}n.valueMap.delete(r),n.selectorAtoms.delete(r),n.selectorGraph.delete(r),n.moleculeData.delete(a.key,a.subKey),e.logger.info(`🔥`,t.type,r,`deleted`),U(n)&&n.transactionMeta.phase===`building`?n.transactionMeta.update.subEvents.push({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()}):e.on.selectorDisposal.next(t)}}function qn(e,t){let n=I(e);return n.operation.open?n.operation.prev.get(t.key):n.valueMap.get(t.key)}function Jn(e,t,n){return n.subject.subscribe(`${t.type}:${t.key}`,r=>{e.logger.info(`📢`,t.type,t.key,`root`,n.key,`went`,r.oldValue,`->`,r.newValue);let i=qn(e,t),a=q(e,t);e.logger.info(`✨`,t.type,t.key,`went`,i,`->`,a),t.subject.next({newValue:a,oldValue:i})})}function Yn(e,t,n,r){function i(n){e.operation.open&&a?.type===`atom`&&lr(a,`tracker:signal`)&&`*`+e.operation.token.key===t.key&&`inboundTracker`in r||r(n)}cn(e,t);let a=K(e,t);e.logger.info(`👀`,a.type,a.key,`Adding subscription "${n}"`);let o=a.type===`writable_pure_selector`||a.type===`readonly_pure_selector`,s=new Map,c=i;if(o){q(e,a);for(let[t,n]of Rn(e,a.key))s.set(t,Jn(e,a,n));c=function(t){let n=Rn(e,a.key);for(let[e,t]of s)n.get(e)?n.delete(e):(t(),s.delete(e));for(let[t,r]of n)s.set(t,Jn(e,a,r));i(t)}}let l=a.subject.subscribe(n,c);return()=>{e.logger.info(`🙈`,a.type,a.key,`Removing subscription "${n}"`),l();for(let e of s.values())e()}}function Xn(e,t,n,r){let i=K(e,t);e.logger.info(`👀`,`timeline`,t.key,`Adding subscription "${n}"`);let a=i.subject.subscribe(n,r);return()=>{e.logger.info(`🙈`,`timeline`,t.key,`Removing subscription "${n}" from timeline`),a()}}var Zn=class{initializeSignalAtom(e,t){let n=`*${e.key}`;t.atoms.delete(n),t.valueMap.delete(n);let r=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,i=cr(t,{key:n,default:null},r,[`tracker:signal`]);if(t.parent?.valueMap.has(n)){let e=t.parent.valueMap.get(n);t.valueMap.set(n,e)}return i}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,n){let r=e.key,i=`tracker-from-core:${n.config.name}:${U(n)?n.transactionMeta.update.token.key:`main`}:${r}`,a=e=>{Mn(jn,n,t,e)},o=J(n,e);this.unsubscribeFromInnerValue=o.subscribe(i,a),this.unsubscribeFromState=Yn(n,e,i,function(e){e.newValue!==e.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=e.newValue.subscribe(i,a))}.bind(this))}supplySignalsToCore(e,t,n){let r=e.key,i=`tracker-to-core:${n.config.name}:${U(n)?n.transactionMeta.update.token.key:`main`}:${r}`;Yn(n,t,i,Object.assign(function({newValue:r,oldValue:a}){let o=n.timelineTopics.getRelatedKey(t.key);if(o&&n.timelines.get(o)?.timeTraveling){let t=Xn(n,{key:o,type:`timeline`},i,function(i){t(),X(n,e,e=>(i.event===`redo`&&r?e.do(r):i.event===`undo`&&a&&e.undo(a),e))});return}X(n,e,e=>(e.do(r),e))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){let n=I(t),r=this.initializeSignalAtom(e,n);this.mutableAtomToken=e,this.latestSignalToken=r,this.captureSignalsFromCore(e,r,n),this.supplySignalsToCore(e,r,n),n.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(e.key)}}};function Qn(e,t,n){e.logger.info(`🔨`,`atom`,t.key,`creating in store "${e.config.name}"`);let r=I(e),{key:i}=t,a=r.atoms.get(i),o=`mutable_atom`;if(a?.type===o&&e.config.isProduction===!0)return e.logger.error(`❌`,o,i,`Tried to create atom, but it already exists in the store.`),z(a);let s=new R,c={...t,type:o,install:e=>(e.logger.info(`🛠️`,`atom`,i,`installing in store "${e.config.name}"`),Qn(e,t,n)),subject:s};n&&(c.family=n),r.atoms.set(c.key,c);let l=z(c);if(new Zn(l,e),n||Gn(e,{key:`${i}:JSON`,get:({get:e})=>e(l).toJSON(),set:({set:e},n)=>{e(l,t.class.fromJSON(n))}}),t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Dn(e,l)},setSelf:t=>{X(e,l,t)},onSet:t=>Yn(e,l,`effect[${n}]`,t),token:l,store:gt(e)});t&&r.push(t),++n}c.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(l),l}var $n=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(e,t){let n=dn(t,{key:`*${e.key}`,default:null},[`mutable`,`updates`]);this.latestSignalAtoms=K(t,n),this.mutableAtoms=e,this.mutableAtoms.subject.subscribe(`store=${t.config.name}::tracker-atom-family`,e=>{let{type:n,token:r}=e;if(r.family){let e=P(r.family.subKey);switch(n){case`state_creation`:this.trackers.set(e,new Zn(r,t));break;case`state_disposal`:{let t=this.trackers.get(e);t&&(t[Symbol.dispose](),this.trackers.delete(e))}}}})}};function er(e,t,n){let r={key:t.key,type:`mutable_atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`mutable_atom_family`,t.key,`Overwriting an existing ${j[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new R,o=n=>{let r=F(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=I(e),s={key:a,class:t.class};return t.effects&&(s.effects=t.effects(n)),Qn(o,s,i)},s={...r,create:o,class:t.class,subject:a,install:e=>er(e,t),internalRoles:n};return e.families.set(t.key,s),mn(e,{key:`${t.key}:JSON`,get:e=>({get:t})=>t(r,e).toJSON(),set:e=>({set:n},i)=>{n(r,e,t.class.fromJSON(i))}},[`mutable`,`json`]),new $n(s,e),r}function tr(e,t){let n=I(t),r=`${e.key}:JSON`;return n.families.get(r)}var Z=(e,t)=>t.family?Y(e,K(I(e),{key:`${t.family.key}:JSON`,type:`writable_pure_selector_family`}),P(t.family.subKey)):{type:`writable_pure_selector`,key:`${t.key}:JSON`};function nr(e){let t={type:`atom`,key:`*${e.key}`};return e.family&&(t.family={key:`*${e.family.key}`,subKey:e.family.subKey}),t}function rr(e){return typeof e==`object`&&!!e&&`do`in e&&`undo`in e&&`subscribe`in e&&`READONLY_VIEW`in e&&`toJSON`in e}function Q(e,t,n){let{key:r,subject:i,type:a}=t,o=e.valueMap.get(r);if(o instanceof yt&&!o.done){let t=o;return n instanceof Promise?(t.use(n),t):(e.valueMap.set(r,n),n)}if(n instanceof Promise){let o=new yt(n);return e.valueMap.set(r,o),o.then(function(n){if(e.valueMap.get(r)===o){switch(_n(e,t),Q(e,t,n),a){case`atom`:or(e,t);break;case`readonly_pure_selector`:case`writable_pure_selector`:sr(e,r);break}vn(e),i.next({newValue:n,oldValue:o})}}).catch(n=>{e.logger.error(`💥`,t.type,r,`rejected:`,n)}),o}return e.logger.info(`📝`,t.type,t.key,`writing to cache`,n),e.valueMap.set(r,n),n}function ir(e,t,n){e.logger.info(`📖`,t.type,t.key,`reading cached value`);let r=e.valueMap.get(t.key);if(n===`mut`&&t.type===`mutable_atom`&&U(e)){let n=t,{parent:i}=e;if(e.valueMap.hasOwn(n.key))return r;let a=i.valueMap.get(n.key);e.logger.info(`📃`,`atom`,n.key,`copying`);let o=a.toJSON(),s=n.class.fromJSON(o);e.valueMap.set(n.key,s),new Zn(n,i),r=s}return r}function ar(e,t){let n=e.valueMap.get(t);if(n instanceof yt){let r=e.readonlySelectors.get(t),i=e.writableSelectors.get(t),a=tn(e,r??i);n.use(a);return}e.operation.open&&e.operation.prev.set(t,n),e.valueMap.delete(t),e.logger.info(`🗑`,`state`,t,`evicted`)}function or(e,t){let n=I(e),{key:r,type:i}=t,a=n.selectorAtoms.getRelatedKeys(r);if(n.logger.info(`🧹`,i,r,a?`evicting ${a.size} states downstream:`:`no downstream states`,a??`to evict`),a){n.operation.open&&n.logger.info(`🧹`,i,r,`[ ${[...n.operation.done].join(`, `)} ] already done`);for(let e of a)yn(n,e)||(ar(n,e),bn(n,e))}}function sr(e,t){let n=I(e),r=n.selectorGraph.getRelationEntries({upstreamSelectorKey:t}).filter(([e,{source:n}])=>n===t);for(let[t]of r)yn(n,t)||(ar(n,t),bn(n,t),sr(e,t))}function cr(e,t,n,r){let i=`atom`,{key:a}=t;e.logger.info(`🔨`,i,a,`is being created`);let o=I(e),s=o.atoms.get(a);if(s?.type===i&&e.config.isProduction===!0)return e.logger.error(`❌`,`atom`,a,`Tried to create atom, but it already exists in the store.`),z(s);let c=new R,l={...t,type:i,install:e=>(e.logger.info(`🛠️`,i,a,`installing in store "${e.config.name}"`),cr(e,t,n)),subject:c};n&&(l.family=n),r&&(l.internalRoles=r),o.atoms.set(a,l);let u=z(l);if(t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Dn(e,u)},setSelf:t=>{X(e,u,t)},onSet:t=>Yn(e,u,`effect[${n}]`,t),token:u,store:gt(e)});t&&r.push(t),++n}l.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(u),u}function lr(e,t){return`internalRoles`in e?e.internalRoles.includes(t):!1}function ur(e,t){let n=I(e),{key:r,family:i}=t,a=K(n,t);if(!i)e.logger.error(`❌`,`atom`,r,`Standalone atoms cannot be disposed.`);else{a.cleanup?.();let o=e.valueMap.get(a.key),s=K(e,nn(e,t)).subject,c={type:`state_disposal`,subType:`atom`,token:t,value:o,timestamp:Date.now()};s.next(c);let l=U(n);if(n.atoms.delete(r),n.valueMap.delete(r),n.selectorAtoms.delete(r),n.atomsThatAreDefault.delete(r),n.moleculeData.delete(i.key,i.subKey),e.timelineTopics.delete(r),t.type===`mutable_atom`&&(ur(e,nr(t)),e.trackers.delete(r)),e.logger.info(`🔥`,`atom`,r,`deleted`),l&&n.transactionMeta.phase===`building`){let e=n.transactionMeta.update.subEvents.at(-1),t=e?.type===`molecule_disposal`&&e.values.some(([e])=>e===a.family?.key),r=lr(a,`tracker:signal`);!t&&!r&&n.transactionMeta.update.subEvents.push(c)}else e.on.atomDisposal.next(t)}}var dr=ce(G.STORE);function fr({children:e,store:t=G.STORE}){return dr.Provider({value:t,children:e})}function pr(e,...t){let n;if(t.length===2){let r=t[0],i=t[1];n=Y(e,r,i)}else n=t[0];return n}function mr(...e){let t=le(dr),n=pr(t,...e);return e=>{X(t,n,e)}}function hr(e,t){let[n,r]=te(t(),{equals:!1});return ne(()=>{let n=()=>r(()=>t()),i=e(n);n(),re(()=>{i()})}),()=>(n(),t())}function $(...e){let t=le(dr),n=pr(t,...e),r=ht();return hr(e=>Yn(t,n,`use-o:${r}`,e),()=>J(t,n))}var gr=ft([`set`,`truncate`,`extend`,`pop`,`push`,`shift`,`unshift`,`copyWithin`,`fill`,`splice`,`reverse`,`sort`]),_r=class e extends Array{mode=`record`;subject=new R;READONLY_VIEW=this;constructor(...e){return super(...e),new Proxy(this,{set:(e,t,n,r)=>{if(typeof t==`string`&&!Number.isNaN(Number.parseInt(t,10))){let r=Number(t),i;return this.mode===`record`&&(i=e[r]),e[r]=n,i?this.emit({type:`set`,index:r,next:n,prev:i}):this.mode===`record`&&this.emit({type:`set`,index:r,next:n}),!0}if(t===`length`){if(this.mode===`record`){let t=e.length;if(t===n)return!0;if(t>n){let t=e.slice(n);e.length=n,this.emit({type:`truncate`,length:n,items:t})}else e.length=n,this.emit({type:`extend`,next:n,prev:t})}else e.length=n;return!0}return Reflect.set(e,t,n,r)}})}toJSON(){return[...this]}static fromJSON(t){return new e(...t)}push(...e){let t;return this.mode===`record`?(this.mode=`playback`,t=super.push(...e),this.mode=`record`,this.emit({type:`push`,items:e})):t=super.push(...e),t}pop(){let e;return this.mode===`record`?(this.mode=`playback`,e=super.pop(),e===void 0?this.emit({type:`pop`}):this.emit({type:`pop`,value:e}),this.mode=`record`):e=super.pop(),e}shift(){let e;return this.mode===`record`?(this.mode=`playback`,e=super.shift(),e===void 0?this.emit({type:`shift`}):this.emit({type:`shift`,value:e}),this.mode=`record`):e=super.shift(),e}unshift(...e){let t;return this.mode===`record`?(this.mode=`playback`,t=super.unshift(...e),this.emit({type:`unshift`,items:e}),this.mode=`record`):t=super.unshift(...e),t}reverse(){return super.reverse(),this.mode===`record`&&this.emit({type:`reverse`}),this}fill(e,t,n){if(this.mode===`record`){this.mode=`playback`;let r=this.slice(t,n);super.fill(e,t,n),t===void 0?this.emit({type:`fill`,value:e,prev:r}):n===void 0?this.emit({type:`fill`,value:e,start:t,prev:r}):this.emit({type:`fill`,value:e,start:t,end:n,prev:r}),this.mode=`record`}else super.fill(e,t,n);return this}sort(e){if(this.mode===`record`){this.mode=`playback`;let t=[...this];super.sort(e);let n=[...this];this.emit({type:`sort`,next:n,prev:t}),this.mode=`record`}return this}splice(...e){let[t,n,...r]=e,i=this.mode;i===`record`&&(this.mode=`playback`);let a=super.splice(...e);return i===`record`&&(this.mode=`record`),n===void 0?this.emit({type:`splice`,start:t,items:r,deleted:a,deleteCount:a.length}):this.emit({type:`splice`,start:t,items:r,deleted:a,deleteCount:n}),a}copyWithin(e,t,n){let r=this.mode,i;return r===`record`&&(i=this.slice(e),this.mode=`playback`),super.copyWithin(e,t,n),r===`record`&&(this.mode=`record`),i&&(n===void 0?this.emit({type:`copyWithin`,prev:i,target:e,start:t}):this.emit({type:`copyWithin`,prev:i,target:e,start:t,end:n})),this}subscribe(e,t){return this.subject.subscribe(e,t)}emit(t){this.subject.next(e.packUpdate(t))}doStep(e){switch(e.type){case`copyWithin`:this.copyWithin(e.target,e.start,e.end);break;case`extend`:this.length=e.next;break;case`fill`:this.fill(e.value,e.start,e.end);break;case`pop`:this.pop();break;case`push`:this.push(...e.items);break;case`reverse`:this.reverse();break;case`shift`:this.shift();break;case`sort`:for(let t=0;t<e.next.length;t++)this[t]=e.next[t];this.length=e.next.length;break;case`splice`:this.splice(e.start,e.deleteCount,...e.items);break;case`truncate`:this.length=e.length;break;case`set`:this[e.index]=e.next;break;case`unshift`:this.unshift(...e.items);break}}do(t){this.mode=`playback`;let n=e.unpackUpdate(t);return this.doStep(n),this.mode=`record`,null}undoStep(e){switch(e.type){case`copyWithin`:for(let t=0;t<e.prev.length;t++)this[t+e.target]=e.prev[t];break;case`extend`:this.length=e.prev;break;case`fill`:{let t=e.start??0;for(let n=0;n<e.prev.length;n++)this[n+t]=e.prev[n]}break;case`pop`:e.value&&this.push(e.value);break;case`push`:{let t=e.items.length-1;for(;t>=0;)this.pop(),--t}break;case`reverse`:this.reverse();break;case`shift`:e.value&&this.unshift(e.value);break;case`sort`:for(let t=0;t<e.prev.length;t++)this[t]=e.prev[t];this.length=e.prev.length;break;case`set`:if(e.prev)this[e.index]=e.prev;else{delete this[e.index];let t=this.findIndex((e,t)=>!Object.hasOwn(this,t));t!==-1&&(this.length=t)}break;case`splice`:this.splice(e.start,e.items.length,...e.deleted);break;case`truncate`:this.push(...e.items);break;case`unshift`:{let t=e.items.length-1;for(;t>=0;)this.shift(),--t}break}}undo(t){this.mode=`playback`;let n=e.unpackUpdate(t);return this.undoStep(n),this.mode=`record`,null}static packUpdate(e){let t=gr[e.type]+``;switch(e.type){case`set`:return t+=e.index+``+M(e.next),e.prev!==void 0&&(t+=``+M(e.prev)),t;case`truncate`:return t+e.length+``+e.items.map(M).join(``);case`extend`:return t+e.next+``+e.prev;case`pop`:case`shift`:return e.value!==void 0&&(t+=M(e.value)),t;case`push`:case`unshift`:return t+e.items.map(M).join(``);case`copyWithin`:return t+=e.target+``+e.start,e.end!==void 0&&(t+=``+e.end),t+=``+e.prev.map(M).join(``),t;case`fill`:return t+=M(e.value),e.start!==void 0&&(t+=``+e.start),e.end!==void 0&&(t+=``+e.end),t+=``+e.prev.map(M).join(``),t;case`splice`:return t+e.start+``+e.deleteCount+``+e.items.map(M).join(``)+``+e.deleted.map(M).join(``);case`reverse`:return t;case`sort`:return t+e.next.map(M).join(``)+``+e.prev.map(M).join(``)}}static unpackUpdate(e){let[t,n]=e.split(``),r=gr[t];switch(r){case`set`:{let[e,t,i]=n.split(``),a=+e,o=N(t);return i===void 0?{type:r,index:a,next:o}:{type:r,index:a,next:o,prev:N(i)}}case`truncate`:{let[e,...t]=n.split(``);return{type:r,length:+e,items:t.map(N)}}case`extend`:{let[e,t]=n.split(``);return{type:r,next:+e,prev:+t}}case`pop`:case`shift`:return n===``?{type:r}:{type:r,value:N(n)};case`push`:case`unshift`:return{type:r,items:n.split(``).map(N)};case`copyWithin`:{let[e,t]=n.split(``),i=t?t.split(``).map(N):[],[a,o,s]=e.split(``),c=+a,l=+o;return s===void 0?{type:r,target:c,start:l,prev:i}:{type:r,target:c,start:l,prev:i,end:+s}}case`fill`:{let[e,t]=n.split(``),i=t?t.split(``).map(N):[],[a,o,s]=e.split(``),c=N(a);if(o===void 0&&s===void 0)return{type:r,value:c,prev:i};let l=+o;return s===void 0?{type:r,value:c,prev:i,start:l}:{type:r,value:c,prev:i,start:l,end:+s}}case`splice`:{let[e,t,i,a]=n.split(``);return{type:r,start:+e,deleteCount:+t,items:i?i.split(``).map(N):[],deleted:a?a.split(``).map(N):[]}}case`reverse`:return{type:r};case`sort`:{let[e,t]=n.split(``);return{type:r,next:e?e.split(``).map(N):[],prev:t?t.split(``).map(N):[]}}}}},vr=class e{simplifyParams(...t){let n,r;if(t[0]instanceof e)[n,r]=t[0].simplify();else{if([n,r=1n]=t,r===0n)return{error:Error(),numerator:n};r<0n&&(n=-n,r=-r)}return[n,r]}constructor(e,t=1n){this.fractionalValues=new Map,e&&t&&this.add(e,t)}add(...e){if(typeof e[0]==`bigint`){let[t,n=1n]=e;if(n===0n)return console.error(`Attempted to add (${t} / ${n}) to a rational.`),this;n<0n&&(t=-t,n=-n);let r=t,i=this.fractionalValues.get(n);i&&(r=i+t),this.fractionalValues.set(n,r)}else for(let[t,n]of e[0].entries())this.add(n,t);return this}sub(...e){if(typeof e[0]==`bigint`){let[t,n=1n]=e;this.add(-t,n)}else for(let[t,n]of e[0].entries())this.add(-n,t);return this}mul(...e){let t=this.simplifyParams(...e);if(`error`in t)return t.error.message=`Attempted to multiply by (${t.numerator} / 0)`,console.error(t.error),this;let[n,r]=t,i=[...this.entries()];this.fractionalValues.clear();for(let[e,t]of i)this.fractionalValues.set(e*r,t*n);return this}div(...e){let t=this.simplifyParams(...e);if(`error`in t)return t.error.message=`Attempted to divide by (${t.numerator} / 0)`,console.error(t.error),this;let[n,r]=t;return this.mul(r,n),this}entries(){return this.fractionalValues.entries()}consolidate(){let e=new yr;for(let t of this.entries())for(let n of t)n!==0n&&n!==1n&&(e=e.and(n));let t=e.compute(),n=0n;for(let[e,r]of this.fractionalValues.entries())n+=r*t/e;return t<0n?[-n,-t]:[n,t]}simplify(){let[e,t]=this.consolidate();if(e===0n)return[0n,1n];let n=new yr(t).and(e).compute();return[n/t,n/e]}isGreaterThan(...e){let t=this.simplify(),n=this.simplifyParams(...e);return`error`in n?(n.error.message=`Attempted to compare (${n.numerator} / 0) to (${t[0]} / ${t[1]})`,console.error(n.error),!1):t[0]*n[1]>t[1]*n[0]}},yr=class{constructor(e){this.factors=new Map,e&&br(e,this.factors)}and(e){let t=br(e);for(let[e,n]of t){let t=this.factors.get(e);(!t||t<n)&&this.factors.set(e,n)}return this}compute(){let e=1n;for(let[t,n]of this.factors)e*=t**n;return e}};function br(e,t=new Map){let n=2n;for(;n<=e;){if(e%n===0n){let r=t.get(n)??0n;t.set(n,r+1n),br(e/n,t);break}n+=1n}return t.size===0&&t.set(e,1n),t}var xr={class:`_class_r58xi_1`},Sr=O(`<app><header><h1>Rationality Playground</h1></header><main><new-rational><button type=button>Add`,!0,!1,!1),Cr=O(`<rational-breakdown><fraction-list><infix-buttons><button type=button>−</button><button type=button>+</button><button type=button>÷</button><button type=button>×</button></infix-buttons></fraction-list><equals>=</equals><equals></equals><quotient><quotient-bits></quotient-bits><number>`,!0,!1,!1),wr=O(`<plus>+`),Tr=O(`<bit>`),Er=O(`<fraction><numerator></numerator><solidus></solidus><denominator>`),Dr=O(`<fieldset><input type=number placeholder=1><solidus></solidus><input type=number placeholder=1>`),Or=()=>Math.random().toString(36).slice(2),kr=qe({key:`newRationalNumerator`,default:void 0}),Ar=qe({key:`newRationalDenominator`,default:void 0}),jr=Ye({key:`newNumerator`,default:void 0}),Mr=Ye({key:`newDenominator`,default:void 0}),Nr=Je({key:`rationalList`,class:_r}),Pr=Ye({key:`rational`,default:()=>new vr(0n,1n)}),Fr=it({key:`simplified`,get:e=>({get:t})=>{let[n,r]=t(Pr,e).simplify();return[n,r]}}),Ir=it({key:`float`,get:e=>({get:t})=>{let[n,r]=t(Fr,e);return Number(n)/Number(r)}}),Lr=it({key:`numberBits`,get:e=>({get:t})=>{let[n,r]=t(Fr,e),i=Number(n)/Number(r),a=new ArrayBuffer(8);new DataView(a).setFloat64(0,i,!1);let o=new Uint8Array(a);return[...Array.from(o).map(e=>e.toString(2).padStart(8,`0`)).join(``)].map(e=>e===`1`?`1`:`0`)}}),Rr=it({key:`isFloatPrecise`,get:e=>({get:t})=>{let[,n]=t(Fr,e);return n===0n?!1:n>0n&&(n&n-1n)==0n}}),zr=it({key:`approximateValue`,get:e=>({get:t})=>{let n=t(Ir,e);return Number.isFinite(n)?Number(n.toPrecision(5)).toString():n.toString()}}),Br=ot({key:`combineIntoRationalTx`,do:({get:e,set:t,reset:n},r,i)=>{let a=e(jr,r)??1n,o=e(Mr,r)??1n;t(Pr,r,e(Pr,r)[i](a,o)),n(jr,r),n(Mr,r)}});function Vr(){let e=$(Nr);return(()=>{var t=Sr(),n=t.firstChild.nextSibling,r=n.firstChild,i=r.firstChild;return k(n,D(Ne,{get each(){return e()},children:e=>D(Hr,{key:e})}),r),r._$owner=ie(),k(r,D(Gr,{numeratorAtom:kr,denominatorAtom:Ar}),i),i.$$click=()=>{let e=`rat::${Or()}`;st(Br)(e,`add`),at(Pr,e,new vr(Ze(kr)??1n,Ze(Ar)??1n)),at(Nr,t=>(t.push(e),t)),rt(kr),rt(Ar)},b(()=>Ve(t,xr.class)),t})()}function Hr(e){let t=$(Pr,e.key),n=$(Fr,e.key),r=$(Ir,e.key),i=$(Rr,e.key),a=$(zr,e.key),o=$(Lr,e.key);return(()=>{var s=Cr(),c=s.firstChild,l=c.firstChild,u=l.firstChild,d=u.nextSibling,f=d.nextSibling,p=f.nextSibling,m=c.nextSibling.nextSibling,h=m.nextSibling.firstChild,g=h.nextSibling;return s._$owner=ie(),c._$owner=ie(),k(c,D(Ne,{get each(){return[...t().entries()]},children:([e,t],n)=>[D(Pe,{get when(){return n()!==0},get children(){return wr()}}),D(Ur,{numerator:t,denominator:e})]}),l),l._$owner=ie(),u.$$click=()=>{st(Br)(e.key,`sub`)},d.$$click=()=>{st(Br)(e.key,`add`)},f.$$click=()=>{st(Br)(e.key,`div`)},p.$$click=()=>{st(Br)(e.key,`mul`)},k(c,D(Wr,{get key(){return e.key}}),null),k(s,D(Ur,{get numerator(){return n()[0]},get denominator(){return n()[1]}}),m),k(m,()=>i()?`=`:`≈`),h._$owner=ie(),k(h,D(Ne,{get each(){return o()},children:e=>(()=>{var t=Tr();return Be(t,`data-css`,e===`1`?`one`:void 0),t})()})),k(g,(()=>{var e=Fe(()=>!!i());return()=>e()?r():a()})()),s})()}function Ur(e){return(()=>{var t=Er(),n=t.firstChild,r=n.nextSibling.nextSibling;return k(n,()=>Number(e.numerator)),k(r,()=>Number(e.denominator)),b(t=>{var i=e.numerator===1n?`one`:void 0,a=e.denominator===1n?`one`:void 0;return i!==t.e&&Be(n,`data-css`,t.e=i),a!==t.t&&Be(r,`data-css`,t.t=a),t},{e:void 0,t:void 0}),t})()}function Wr({key:e}){return D(Gr,{numeratorAtom:Xe(jr,e),denominatorAtom:Xe(Mr,e)})}function Gr({numeratorAtom:e,denominatorAtom:t}){let n=$(e),r=mr(e),i=$(t),a=mr(t);return(()=>{var e=Dr(),t=e.firstChild,o=t.nextSibling.nextSibling;return t.$$input=e=>{r(BigInt(e.currentTarget.value))},o.$$input=e=>{a(BigInt(e.currentTarget.value))},b(()=>t.value=n()?.toString()),b(()=>o.value=i()?.toString()),e})()}ze([`click`,`input`]),Re(()=>D(fr,{get children(){return D(Vr,{})}}),document.getElementById(`app`));
@@ -1 +1 @@
1
- app._class_17qbf_2{--line:#17243324}app._class_17qbf_2,app._class_17qbf_2 *{display:flex}app._class_17qbf_2{flex-direction:column}app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset{border:none;flex-flow:column;padding:0;font-size:24px}:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>numerator,:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>denominator,:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>input{flex-grow:1;justify-content:center;align-items:center;height:36px;margin:0}:is(:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>numerator,:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>denominator,:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>input)[data-css=one]{color:#0002}:is(app._class_17qbf_2 fraction,app._class_17qbf_2 fieldset)>solidus{background:#000;height:2px}app._class_17qbf_2>header{justify-content:space-between;align-items:center;padding:12px}app._class_17qbf_2>header>button{justify-content:center;align-items:center}app._class_17qbf_2>main{flex-flow:column;gap:2px;padding:2px}app._class_17qbf_2>main>rational-breakdown{border:1px solid #0002;padding:2px 12px}app._class_17qbf_2>main>rational-breakdown>fraction-list{flex-grow:1}app._class_17qbf_2>main>rational-breakdown>fraction-list>plus{color:#0002;align-items:center;font-size:30px}app._class_17qbf_2>main>rational-breakdown>fraction-list>infix-buttons{flex-flow:column}app._class_17qbf_2>main>rational-breakdown>equals{color:#0002;align-items:center;font-size:48px}app._class_17qbf_2>main>rational-breakdown>quotient{align-items:center;font-size:48px;position:relative}app._class_17qbf_2>main>rational-breakdown>quotient>quotient-bits{flex-wrap:wrap;place-content:flex-start;place-items:flex-start;width:40px;position:absolute;top:0;right:0}app._class_17qbf_2>main>rational-breakdown>quotient>quotient-bits>bit{background:0 0;border:1px solid #0002;flex-grow:0;flex-shrink:0;width:5px;height:5px}app._class_17qbf_2>main>rational-breakdown>quotient>quotient-bits>bit[data-css=one]{background:#0002}:root{--bg:#f6f1e8;--bg-deep:#efe3d0;--panel:#fffcf7db;--panel-strong:#fffaf2;--ink:#172433;--muted:#5d6670;--gold:#d88d1f;--gold-soft:#f5d8a5;--mint:#bfd7c2;--line:#17243324;--shadow:0 24px 80px #3721081f;--radius-xl:28px;--radius-lg:20px;--radius-md:14px;--radius-sm:10px;color:var(--ink);background:radial-gradient(circle at top left, #d88d1f29, transparent 28%), radial-gradient(circle at right center, #1724331f, transparent 30%), linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-height:100svh}button,input,select{font:inherit}button,select,input{border:1px solid var(--line);border-radius:var(--radius-sm)}button:hover{transform:translateY(-1px);box-shadow:0 12px 28px #17243324}button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none;transform:none}button.secondary,button.ghost-button{color:var(--ink);background:0 0}button.secondary{border-style:dashed}button.ghost-button{padding-inline:.85rem}input,select{background:#ffffffbf;width:100%;padding:.75rem .85rem}code{font-family:SFMono-Regular,Cascadia Code,Fira Code,Menlo,Consolas,monospace;font-size:.9em}
1
+ app._class_r58xi_1{--line:#17243324}app._class_r58xi_1,app._class_r58xi_1 *{display:flex}app._class_r58xi_1{flex-direction:column}app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset{border:none;flex-flow:column;padding:0;font-size:24px}:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>numerator,:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>denominator,:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>input{flex-grow:1;justify-content:center;align-items:center;height:36px;margin:0}:is(:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>numerator,:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>denominator,:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>input)[data-css=one]{color:#0002}:is(app._class_r58xi_1 fraction,app._class_r58xi_1 fieldset)>solidus{background:#000;height:2px}app._class_r58xi_1>header{justify-content:space-between;align-items:center;padding:12px}app._class_r58xi_1>header>button{justify-content:center;align-items:center}app._class_r58xi_1>main{flex-flow:column;gap:2px;padding:2px}app._class_r58xi_1>main>rational-breakdown{border:1px solid #0002;padding:2px 12px}app._class_r58xi_1>main>rational-breakdown>fraction-list{flex-grow:1}app._class_r58xi_1>main>rational-breakdown>fraction-list>plus{color:#0002;align-items:center;font-size:30px}app._class_r58xi_1>main>rational-breakdown>fraction-list>infix-buttons{flex-flow:column}app._class_r58xi_1>main>rational-breakdown>equals{color:#0002;align-items:center;font-size:48px}app._class_r58xi_1>main>rational-breakdown>quotient{align-items:center;font-size:48px;position:relative}app._class_r58xi_1>main>rational-breakdown>quotient>quotient-bits{flex-wrap:wrap;place-content:flex-start;place-items:flex-start;width:40px;position:absolute;top:0;right:0}app._class_r58xi_1>main>rational-breakdown>quotient>quotient-bits>bit{background:0 0;border:1px solid #0002;flex-grow:0;flex-shrink:0;width:5px;height:5px}app._class_r58xi_1>main>rational-breakdown>quotient>quotient-bits>bit[data-css=one]{background:#0002}:root{--bg:#f6f1e8;--bg-deep:#efe3d0;--panel:#fffcf7db;--panel-strong:#fffaf2;--ink:#172433;--muted:#5d6670;--gold:#d88d1f;--gold-soft:#f5d8a5;--mint:#bfd7c2;--line:#17243324;--shadow:0 24px 80px #3721081f;--radius-xl:28px;--radius-lg:20px;--radius-md:14px;--radius-sm:10px;color:var(--ink);background:radial-gradient(circle at top left, #d88d1f29, transparent 28%), radial-gradient(circle at right center, #1724331f, transparent 30%), linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-height:100svh}button,input,select{font:inherit}button,select,input{border:1px solid var(--line);border-radius:var(--radius-sm)}button:hover{transform:translateY(-1px);box-shadow:0 12px 28px #17243324}button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none;transform:none}button.secondary,button.ghost-button{color:var(--ink);background:0 0}button.secondary{border-style:dashed}button.ghost-button{padding-inline:.85rem}input,select{background:#ffffffbf;width:100%;padding:.75rem .85rem}code{font-family:SFMono-Regular,Cascadia Code,Fira Code,Menlo,Consolas,monospace;font-size:.9em}
package/dist/index.html CHANGED
@@ -7,8 +7,8 @@
7
7
  content="width=device-width, initial-scale=1.0"
8
8
  />
9
9
  <title>Rationality Playground</title>
10
- <script type="module" crossorigin src="/assets/index-BWRgoXaC.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-lprFsvty.css">
10
+ <script type="module" crossorigin src="/assets/index-BzU6CUUp.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-DMbEQKRi.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="app"></div>
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@atom.io/template-solid-lossless-numbers",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/jeremybanka/wayforge.git",
9
+ "url": "git+https://github.com/jeremybanka/atom.io.git",
10
10
  "directory": "templates/solid-lossless-numbers"
11
11
  },
12
12
  "type": "module",
13
13
  "dependencies": {
14
+ "rationality": "0.1.0",
14
15
  "solid-js": "1.9.13",
15
- "atom.io": "0.47.2",
16
- "rationality": "0.1.0"
16
+ "atom.io": "0.47.4"
17
17
  },
18
18
  "devDependencies": {
19
- "@types/node": "25.9.1",
19
+ "@types/node": "25.9.2",
20
20
  "eslint": "10.4.1",
21
21
  "typescript": "6.0.3",
22
22
  "vite": "8.0.16",
@@ -1,4 +1,3 @@
1
- /** biome-ignore-all lint/correctness/noUnknownTypeSelector: <explanation> */
2
1
  app.class {
3
2
  --line: rgba(23, 36, 51, 0.14);
4
3
 
@@ -37,8 +36,7 @@ app.class {
37
36
  align-items: center;
38
37
  justify-content: space-between;
39
38
  padding: 12px;
40
- > h1 {
41
- }
39
+ > h1 {}
42
40
  > button {
43
41
  align-items: center;
44
42
  justify-content: center;
@@ -67,8 +65,7 @@ app.class {
67
65
  align-items: center;
68
66
  color: #0002;
69
67
  }
70
- > fraction {
71
- }
68
+ > fraction {}
72
69
  > quotient {
73
70
  align-items: center;
74
71
  font-size: 48px;
package/src/globals.css CHANGED
@@ -15,7 +15,11 @@
15
15
  --radius-md: 14px;
16
16
  --radius-sm: 10px;
17
17
  font-family:
18
- "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, serif;
18
+ "Iowan Old Style",
19
+ "Palatino Linotype",
20
+ "Book Antiqua",
21
+ Palatino,
22
+ serif;
19
23
  color: var(--ink);
20
24
  background:
21
25
  radial-gradient(
@@ -24,10 +28,10 @@
24
28
  transparent 28%
25
29
  ),
26
30
  radial-gradient(
27
- circle at right center,
28
- rgba(23, 36, 51, 0.12),
29
- transparent 30%
30
- ),
31
+ circle at right center,
32
+ rgba(23, 36, 51, 0.12),
33
+ transparent 30%
34
+ ),
31
35
  linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);
32
36
  }
33
37
 
@@ -94,6 +98,11 @@ select {
94
98
 
95
99
  code {
96
100
  font-family:
97
- "SFMono-Regular", "Cascadia Code", "Fira Code", Menlo, Consolas, monospace;
101
+ "SFMono-Regular",
102
+ "Cascadia Code",
103
+ "Fira Code",
104
+ Menlo,
105
+ Consolas,
106
+ monospace;
98
107
  font-size: 0.9em;
99
108
  }