@atom.io/template-preact-svg-editor 0.0.2 → 0.0.3

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.
@@ -1,13 +1,13 @@
1
1
 
2
- > @atom.io/template-preact-svg-editor@0.0.2 build /home/runner/work/wayforge/wayforge/templates/preact-svg-editor
2
+ > @atom.io/template-preact-svg-editor@0.0.3 build /home/runner/work/wayforge/wayforge/templates/preact-svg-editor
3
3
  > vite build
4
4
 
5
- vite v7.2.0 building client environment for production...
5
+ vite v7.2.2 building client environment for production...
6
6
  transforming...
7
7
  ✓ 16 modules transformed.
8
8
  rendering chunks...
9
9
  computing gzip size...
10
10
  dist/index.html  0.52 kB │ gzip: 0.33 kB
11
11
  dist/assets/index-jy4_OpZh.css  1.60 kB │ gzip: 0.72 kB
12
- dist/assets/index-DhFJjzdn.js 73.06 kB │ gzip: 23.49 kB
13
- ✓ built in 945ms
12
+ dist/assets/index-CM52ItJB.js 73.07 kB │ gzip: 23.49 kB
13
+ ✓ built in 606ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @atom.io/template-preact-svg-editor
2
2
 
3
+ ## 0.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - caae14e: ♻️ Using new `useAtomicRef` function from `atom.io/react`, instead of implementing it manually.
8
+ - Updated dependencies [caae14e]
9
+ - atom.io@0.44.4
10
+
3
11
  ## 0.0.2
4
12
 
5
13
  ### Patch Changes
@@ -10,5 +10,5 @@ ${d.trace}`:`No previous disposal trace for ${n} was found.`);return}o.subject.n
10
10
  ${a.trace}`:`No previous disposal trace for ${r} was found.`),n}const l=x(t),c=s.molecules.get(l);if(!c){const a=e.disposalTraces.buffer.find(d=>d?.key===l);return e.logger.error("❌","key",n,"claim failed:",`Could not allocate to ${l} in store "${e.config.name}".`,a?`
11
11
  ${l} was most recently disposed
12
12
  ${a.trace}`:`No previous disposal trace for ${l} was found.`),n}const u=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:i.stringKey}).filter(([,{source:a}])=>a!==r).map(([a])=>te(a));o&&s.moleculeGraph.delete(r),s.moleculeGraph.set({upstreamMoleculeKey:c.stringKey,downstreamMoleculeKey:i.stringKey},{source:c.stringKey});const f={type:"molecule_transfer",key:i.key,exclusive:!!o,from:u,to:[c.key],timestamp:Date.now()};return T(s)&&s.transactionMeta.phase==="building"&&s.transactionMeta.update.subEvents.push(f),n}function oo(e,t,n){switch(n){case"newValue":cn(e,t);break;case"oldValue":Me(e,t.token);break}}function ro(e,t,n){switch(n){case"newValue":Me(e,t.token);break;case"oldValue":cn(e,t),t.subType==="atom"&&e.valueMap.set(t.token.key,t.value);break}}function cn(e,t){const{token:n}=t;t.subType==="writable"&&t.value?U(e,n,t.value):F(e,n)}function so(e,t,n){switch(n){case"newValue":an(e,t.provenance,t.key);break;case"oldValue":st(e,t.key);break}}function io(e,t,n){switch(n){case"newValue":st(e,t.key);break;case"oldValue":an(e,t.provenance.map(te),t.key);for(const[o,r]of t.values){const s=e.families.get(o);if(s){F(e,s,t.key);const i=`${o}(${x(t.key)})`;e.valueMap.set(i,r)}}break}}function lo(e,t,n){switch(n){case"newValue":for(const o of t.to)bt(e,o,t.key,t.exclusive?"exclusive":void 0);break;case"oldValue":{let o="exclusive";for(const r of t.from)bt(e,r,t.key,o),o=void 0}break}}function un(e,t,n){const o=t.subEvents;for(const r of o)switch(r.type){case"atom_update":to(e,r);break;case"state_creation":oo(e,r,n);break;case"state_disposal":ro(e,r,n);break;case"molecule_creation":so(e,r,n);break;case"molecule_disposal":io(e,r,n);break;case"molecule_transfer":lo(e,r,n);break;case"transaction_outcome":un(e,r,n);break}}function ie(e){return"epoch"in e.transactionMeta}function T(e){return"phase"in e.transactionMeta}function fn(e,t){return e.transactionMeta.actionContinuities.getRelatedKey(t)}function ao(e,t){return e.transactionMeta.epoch.get(t)}function co(e,t){const n=fn(e,t);if(n!==void 0)return ao(e,n)}function uo(e,t,n){const o=fn(e,t);o!==void 0&&e.transactionMeta.epoch.set(o,n)}function fo(e,t){const n=v(e),{parent:o}=n;n.transactionMeta.phase="applying",n.transactionMeta.update.output=t,o.child=null,o.on.transactionApplying.next(n.transactionMeta);const{subEvents:r}=n.transactionMeta.update;e.logger.info("🛄","transaction",n.transactionMeta.update.token.key,`applying ${r.length} subEvents:`,r),un(o,n.transactionMeta.update,"newValue"),ie(o)?(uo(o,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),C(e,{key:n.transactionMeta.update.token.key,type:"transaction"})?.subject.next(n.transactionMeta.update),e.logger.info("🛬","transaction",n.transactionMeta.update.token.key,"applied")):T(o)&&o.transactionMeta.update.subEvents.push(n.transactionMeta.update),o.on.transactionApplying.next(null)}function _o(e){return{store:e}}const po=(e,t,n,o)=>{const r=v(e),s={parent:r,child:null,on:r.on,loggers:r.loggers,logger:r.logger,config:r.config,atoms:new O(r.atoms),atomsThatAreDefault:new Set(r.atomsThatAreDefault),families:new O(r.families),joins:new O(r.joins),operation:{open:!1},readonlySelectors:new O(r.readonlySelectors),timelines:new O(r.timelines),timelineTopics:r.timelineTopics.overlay(),trackers:new Map,transactions:new O(r.transactions),selectorAtoms:r.selectorAtoms.overlay(),selectorGraph:r.selectorGraph.overlay(),writableSelectors:new O(r.writableSelectors),valueMap:new O(r.valueMap),defaults:r.defaults,disposalTraces:e.disposalTraces.copy(),molecules:new O(r.molecules),moleculeGraph:r.moleculeGraph.overlay(),moleculeData:r.moleculeData.overlay(),keyRefsInJoins:r.keyRefsInJoins.overlay(),miscResources:new O(r.miscResources)},i=co(e,t.key),l={phase:"building",update:{type:"transaction_outcome",token:t,id:o,epoch:i===void 0?NaN:i+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...u)=>F(c,...u)),set:((...u)=>{U(c,...u)}),reset:((...u)=>{at(c,...u)}),run:(u,f=nn())=>ln(c,u,f),find:((...u)=>G(e,...u)),json:u=>pe(c,u),dispose:((...u)=>{Me(c,...u)}),env:()=>_o(c)}},c=Object.assign(s,{transactionMeta:l});return r.child=c,e.logger.info("🛫","transaction",t.key,"building with params:",n),c};function _n(e,t){const{key:n}=t,o=e.transactions.has(n),r={key:n,type:"transaction",run:(i,l)=>{const c=po(e,Q(r),i,l);try{const{toolkit:u}=c.transactionMeta,f=t.do(u,...i);return fo(c,f),f}catch(u){throw eo(c),e.logger.warn("💥","transaction",n,"caught:",u),u}},install:i=>_n(i,t),subject:new S};v(e).transactions.set(n,r);const s=Q(r);return o||e.on.transactionCreation.next(s),s}var yo=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 Zn(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 S,atomDisposal:new S,selectorCreation:new S,selectorDisposal:new S,timelineCreation:new S,transactionCreation:new S,transactionApplying:new qn(null),operationClose:new S,moleculeCreation:new S,moleculeDisposal:new S};operation={open:!1};config={name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:!0};loggers=[new Eo("warn",(e,t,n)=>!Qn(n))];logger={error:(...e)=>{for(const t of this.loggers)t.error(...e)},info:(...e)=>{for(const t of this.loggers)t.info(...e)},warn:(...e)=>{for(const t of this.loggers)t.warn(...e)}};constructor(e,t=null){if(this.config={...t?.config,...e},t!==null){this.operation={...t?.operation},ie(t)&&(this.transactionMeta={epoch:new Map(t?.transactionMeta.epoch),actionContinuities:new V(t?.transactionMeta.actionContinuities.toJSON())});for(const[,o]of t.families)o.internalRoles?.includes("mutable")||o.internalRoles?.includes("join")||o.install(this);const n=new Set;for(const[,o]of t.atoms)if(!n.has(o.key)&&(o.install(this),o.type==="mutable_atom")){const r=pe(t,o),s=Tn(o);n.add(r.key),n.add(s.key)}for(const[,o]of t.readonlySelectors)o.install(this);for(const[,o]of t.writableSelectors)n.has(o.key)||o.install(this);for(const[,o]of t.transactions)o.install(this);for(const[,o]of t.timelines)o.install(this)}}};const N={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new yo({name:"IMPLICIT_STORE",lifespan:"ephemeral",isProduction:!0}),globalThis.ATOM_IO_IMPLICIT_STORE}};var ho=class extends Error{constructor(e,t){super(`${B[e.type]} ${x(e.key)} not found in store "${t.config.name}".`)}};function C(e,t){let n,o=e;for(;o!==null;){switch(t.type){case"atom":case"mutable_atom":n=o.atoms.get(t.key);break;case"writable_pure_selector":case"writable_held_selector":n=o.writableSelectors.get(t.key);break;case"readonly_pure_selector":case"readonly_held_selector":n=o.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=o.families.get(t.key);break;case"timeline":n=o.timelines.get(t.key);break;case"transaction":n=o.transactions.get(t.key);break}if(n)return n;o=o.child}throw new ho(t,e)}function dn(e,t,n,o){const r=e.disposalTraces.buffer.find(s=>s?.key===x(o));switch(e.logger.error("❌",t.type,t.key,"gets a fallback value because key",o,"is not allocated",r?`This key was previously disposed:
13
- ${r.trace}`:"(no previous disposal trace found)"),n.type){case"mutable_atom_family":{if(e.defaults.has(n.key))return e.defaults.get(n.key);const s=new n.class;return e.defaults.set(n.key,s),s.READONLY_VIEW}case"atom_family":{if(e.defaults.has(n.key))return e.defaults.get(n.key);const s=n.default,i=s(o);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);const s=n.default(o);return e.defaults.set(n.key,s),s}}}function Ce(e,t){const{type:n,key:o,catch:r}=t;switch(n){case"readonly_pure_selector":case"writable_pure_selector":{let s;e.logger.info("🧮",n,o,"computing value");try{if(s=t.getFrom(e),s instanceof Promise)return s.catch(i=>{if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return i}throw i})}catch(i){if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return M(e,t,i)}throw i}return M(e,t,s)}case"atom":{let s;if(W(t.default))try{s=t.default(),s instanceof Promise&&(s=s.catch(i=>{if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return i}throw i}))}catch(i){if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return s=M(e,t,i),e.logger.info("✨",t.type,o,"computed default",s),s}throw i}else s=t.default,e.logger.info("✨",t.type,o,"using static default",s);return M(e,t,s)}}}function z(e,t,n){if(e.valueMap.has(t.key))return Rn(e,t,n);e.logger.info("❔",t.type,t.key,"value not found in cache");const{key:o}=t;switch(t.type){case"readonly_held_selector":case"writable_held_selector":return e.logger.info("🧮",t.type,o,"computing value"),t.getFrom(e);case"writable_pure_selector":case"readonly_pure_selector":case"atom":return Ce(e,t);case"mutable_atom":{const r=new t.class;return e.logger.info("✨",t.type,o,"created new instance",r),M(e,t,r)}}}function it(e,t){return C(e,{key:t.family.key,type:`${t.type}_family`})}const wt={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"},le=Symbol("MUST_CREATE"),mo=Symbol("DO_NOT_CREATE");function ae(e,t,n,o){const r=x(o),s=t.molecules.get(r);if(!s&&t.config.lifespan==="immortal"){const{type:l,key:c}=n;return t.logger.warn("💣","key",r,"was used to mint a counterfeit token for",l,`"${c}"`),{counterfeit:!0,key:`${c}(${r})`,type:wt[l],family:{key:c,subKey:r}}}let i;if(e===le)t.logger.info("👪",n.type,n.key,"adds member",typeof o=="string"?`\`${o}\``:o),i=n.create(o),s&&t.moleculeData.set(r,n.key);else{const{type:l,key:c}=n;return{key:`${c}(${r})`,type:wt[l],family:{key:c,subKey:r}}}return i}function lt(e,...t){let n,o,r,s,i;if(t.length===1){if(i=t[0],"family"in i){const c=it(e,i);if(r=C(e,c),s=te(i.family.subKey),n=ce(e,c,s),"counterfeit"in i)return{token:i,family:r,subKey:s,isNew:!1};n?i=n:(o=ae(le,e,c,s),i=o)}}else r=C(e,t[0]),s=t[1],n=ce(e,r,s),n?i=n:(o=ae(le,e,r,s),i=o);const l="counterfeit"in i;if(o&&l===!1&&r){let c;switch(i.type){case"readonly_pure_selector":case"readonly_held_selector":c="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":c="writable";break}const u={type:"state_creation",subType:c,token:i,timestamp:Date.now()};r.subject.next(u);const f=v(e);if(i.family)if(ie(f))switch(i.type){case"atom":case"mutable_atom":e.on.atomCreation.next(i);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":e.on.selectorCreation.next(i);break}else T(f)&&f.on.transactionApplying.state===null&&f.transactionMeta.update.subEvents.push(u)}return{token:i,family:r,subKey:s,isNew:!!o}}function F(e,...t){const{token:n,family:o,subKey:r}=lt(e,...t);return"counterfeit"in n&&o&&r?dn(e,n,o,r):z(e,C(e,n))}function ce(e,t,n){const o=x(n),r=`${t.key}(${o})`,s=v(e);let i;switch(t.type){case"atom_family":case"mutable_atom_family":i=s.atoms.get(r);break;case"writable_held_selector_family":case"writable_pure_selector_family":i=s.writableSelectors.get(r);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":i=s.readonlySelectors.get(r);break}return i&&Q(i)}function G(e,t,n){const o=C(e,t),r=ce(e,t,n);return r||ae(mo,e,o,n)}function pn(e,t,n){const o=t.key,r="readonly_pure_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`,p=v(e),y={key:_,get:t.get(f)};return t.catch&&(y.catch=t.catch),Cn(p,y,d)},internalRoles:n,subject:l,install:f=>pn(f,t),default:f=>t.get(f)({get:((...a)=>F(e,...a)),find:((...a)=>G(e,...a)),json:a=>pe(e,a)})};return e.families.set(o,u),s}function yn(e,t,n){const o={key:t.key,type:"atom_family"},r=e.families.get(t.key);r&&e.config.isProduction===!0&&e.logger.error("❗","atom_family",t.key,`Overwriting an existing ${B[r.type]} "${r.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new S,l={...o,create:c=>{const u=x(c),f={key:t.key,subKey:u},a=`${t.key}(${u})`,d=v(e),_=t.default,p={key:a,default:W(_)?()=>_(c):_};return t.effects&&(p.effects=t.effects(c)),t.catch&&(p.catch=t.catch),Pe(d,p,f)},default:t.default,subject:s,install:c=>yn(c,t),internalRoles:n};return e.families.set(t.key,l),W(t.default)===!1&&e.defaults.set(t.key,t.default),o}function hn(e,t,n){const o=t.key,r="readonly_held_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`;return $n(v(e),{key:_,const:t.const(f),get:t.get(f)},d)},internalRoles:n,subject:l,install:f=>hn(f,t),default:t.const};return e.families.set(o,u),s}function mn(e,t,n){const o=t.key,r="writable_held_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`;return xn(v(e),{key:_,const:t.const(f),get:t.get(f),set:t.set(f)},d)},internalRoles:n,subject:l,install:f=>mn(f,t),default:t.const};return e.families.set(o,u),s}function gn(e,t,n){const o=t.key,r="writable_pure_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`,p=v(e),y={key:_,get:t.get(f),set:t.set(f)};return t.catch&&(y.catch=t.catch),Kn(p,y,d)},internalRoles:n,subject:l,install:f=>gn(f,t),default:f=>t.get(f)({get:((...a)=>F(e,...a)),find:((...a)=>G(e,...a)),json:a=>pe(e,a)})};return e.families.set(o,u),s}function go(e,t){const n="set"in t,o="const"in t;return o&&n?mn(e,t,void 0):o?hn(e,t,void 0):n?gn(e,t):pn(e,t)}function Me(e,...t){let n;if(t.length===1)n=t[0];else{const o=t[0],r=t[1];n=G(e,o,r)}try{C(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":On(e,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":xo(e,n);break}}function bn(e,t){if(e.operation.open){const 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}"${T(e)?` ${e.transactionMeta.phase} "${e.transactionMeta.update.token.key}"`:""}`),e}function wn(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)}const vn=(e,t)=>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),Ee=(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 qe(e,t,n,o,r){const{oldValue:s,newValue:i}=n,l="oldValue"in n,c=Q(t);if(o&&r){t.subject.next({newValue:i});const _={checkpoint:!0,type:"state_creation",subType:"writable",token:c,timestamp:Date.now(),value:i};e.operation.subEvents.push(_),r.subject.next(_);const p=v(e);if(c.family)if(ie(p))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 T(p)&&p.on.transactionApplying.state===null&&p.transactionMeta.update.subEvents.push(_);return}const{key:u,subject:f,type:a}=t;let d;if(l?d={oldValue:ge(s)?s.READONLY_VIEW:s,newValue:ge(i)?i.READONLY_VIEW:i}:d={newValue:ge(i)?i.READONLY_VIEW:i},ie(e)){switch(a){case"mutable_atom":e.logger.info("📢",a,u,"is now (",i,") subscribers:",f.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":e.logger.info("📢",a,u,"went (",s,"->",i,") subscribers:",f.subscribers.keys())}f.next(d)}if(T(e)&&(a==="mutable_atom"||a==="atom")){if(e.on.transactionApplying.state===null){if(ge(i))return;const{timestamp:_}=e.operation,p={type:"atom_update",token:c,timestamp:_,update:d};e.transactionMeta.update.subEvents.push(p),e.logger.info("📁","atom",u,"stowed (",s,"->",i,")");return}if(ut(t,"tracker:signal")){const _=u.slice(1),p=e.atoms.get(_);z(e,p,"mut").do(d.newValue)===null&&ct(e,p)}}}const vt=Symbol("UNSET"),Ze=(e,t,n)=>{let o,r;if(W(n)){const s=z(e,t,"mut");o=s,r=n(s)}else e.valueMap.has(t.key)?o=Rn(e,t,"mut"):t.type==="atom"&&!W(t.default)?o=t.default:o=vt,r=n;return e.logger.info("⭐","atom",t.key,"setting value",r),r=M(e,t,r),Ee(e,t.key),ct(e,t),o===vt?{newValue:r}:{oldValue:o,newValue:r}};function Fe(e,t){switch(t.type){case"mutable_atom":return Ze(e,t,new t.class);case"atom":{let n;return W(t.default)?n=Ce(e,t):n=t.default,Ze(e,t,n)}}}function bo(e,t){let n;switch(t.type){case"atom":case"mutable_atom":n=Fe(e,t);break;case"writable_held_selector":{const o=ue(e,t.key);for(const s of o.values())qe(e,t,Fe(e,s),!1);const r=t.getFrom(e);n={oldValue:r,newValue:r}}break;case"writable_pure_selector":{const o=Ce(e,t),r=ue(e,t.key);for(const s of r.values())qe(e,t,Fe(e,s),!1);n={oldValue:o,newValue:Ce(e,t)}}break}return n}function U(e,...t){Oe(Qe,e,...t)}const Xe=Symbol("RESET");function at(e,...t){U(e,...t,Xe)}function wo(e,t,n){let o,r,s;const{type:i,key:l}=t;switch(t.type){case"writable_pure_selector":o=z(e,t,"mut"),r=gt(n,o),r=M(e,t,r);break;case"writable_held_selector":s=t.const,gt(n,s),o=s,r=s}return e.logger.info("⭐",i,l,"setting to",r),Ee(e,l),t.setSelf(r),{oldValue:o,newValue:r}}const vo=(e,t,n)=>{let o;switch(t.type){case"atom":case"mutable_atom":o=Ze(e,t,n);break;case"writable_pure_selector":case"writable_held_selector":o=wo(e,t,n);break}return o},Qe=Symbol("OWN_OP"),kn=Symbol("JOIN_OP");function Oe(e,t,...n){let o,r,s,i,l,c;n.length===2?(s=n[0],c=n[1],"family"in s&&(i=it(t,s),l=te(s.family.subKey),o=ce(t,i,l),o?s=o:s=r=ae(le,t,i,l))):(i=C(t,n[0]),l=n[1],c=n[2],o=ce(t,i,l),o?s=o:s=r=ae(le,t,i,l));const u=c===Xe?"reset":"set";let f;if(e===Qe){const _=bn(t,s);if(typeof _=="number"){const p=_,y=t.on.operationClose.subscribe(`waiting to ${u} "${s.key}" at T-${p}`,function(){y(),t.logger.info("🟢",s.type,s.key,"resuming deferred",u,`from T-${p}`),Oe(e,t,s,c)});return}f=_}else f=t;if("counterfeit"in s&&"family"in s){const _=s.family.subKey,p=t.disposalTraces.buffer.find(y=>y?.key===_);t.logger.error("❌",s.type,s.key,"could not be",u,"because key",_,"is not allocated.",p?`this key was previously disposed:${p.trace}`:"(no previous disposal trace found)");return}const a=C(f,s);let d;c===Xe?d=bo(f,a):d=vo(f,a,c),qe(f,a,d,!!r,i),e===Qe&&wn(f)}const Sn=(e,t)=>v(e).atoms.has(t),ko=(e,t)=>v(e).writableSelectors.has(t),So=(e,t)=>v(e).readonlySelectors.has(t),$o=(e,t)=>Sn(e,t)||ko(e,t)||So(e,t);function kt(e,t){return v(e).selectorGraph.getRelationEntries({downstreamSelectorKey:t}).filter(([n,{source:o}])=>o!==t).map(([n,{source:o}])=>o).filter(n=>$o(e,n))}function ue(e,t,n=new Set){const o=kt(e,t),r=new Map;for(;o.length>0;){const s=o.pop();if(!n.has(s))if(n.add(s),Sn(e,s)){const i=e.atoms.get(s);r.set(i.key,i)}else o.push(...kt(e,s))}return r}function Co(e,t,n,o,r){const s=v(e),{type:i,key:l}=o;if(i==="atom"||i==="mutable_atom")s.selectorAtoms.set({selectorKey:n,atomKey:l}),e.logger.info("🔍",t,n,`discovers root atom "${l}"`);else{const c=ue(e,l,r);e.logger.info("🔍",t,n,`discovers root atoms: [ ${[...c.values()].map(u=>`"${u.key}"`).join(", ")} ]`);for(const{key:u}of c.values())s.selectorAtoms=s.selectorAtoms.set({selectorKey:n,atomKey:u})}r.add(l)}function Ae(e,t,n,o){return{get:(...r)=>{const s=v(e),{token:i,family:l,subKey:c}=lt(e,...r);let u;return"counterfeit"in i&&l&&c?u=dn(e,i,l,c):u=z(e,C(e,i)),e.logger.info("🔌",t,n,`registers dependency ( "${i.key}" =`,u,")"),s.selectorGraph.set({upstreamSelectorKey:i.key,downstreamSelectorKey:n},{source:i.key}),Co(e,t,n,i,o),u},set:((...r)=>{Oe(kn,v(e),...r)}),find:((...r)=>G(e,...r)),json:r=>pe(e,r)}}function $n(e,t,n){const o=v(e),r=new S,s=new Set,{key:i,const:l}=t,c="readonly_held_selector";e.logger.info("🔨",c,i,"is being created");const{get:u,find:f,json:a}=Ae(o,c,i,s),_={...t,type:c,subject:r,getFrom:y=>{const w=y.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[h,{source:g}]of w)g!==i&&y.selectorGraph.delete(h,i);return y.selectorAtoms.delete(i),t.get({get:u,find:f,json:a},l),M(y,_,l),e.logger.info("✨",c,i,"=",l),s.clear(),l},install:y=>$n(y,t,n)};n&&(_.family=n),o.readonlySelectors.set(i,_);const p={key:i,type:c};return n&&(p.family=n),p}function Cn(e,t,n){const o=v(e),r=new S,s=new Set,i=t.key,l="readonly_pure_selector";e.logger.info("🔨",l,i,"is being created");const{get:c,find:u,json:f}=Ae(o,l,i,s),d={...t,type:l,subject:r,getFrom:()=>{const p=v(e),y=p.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[h,{source:g}]of y)g!==i&&p.selectorGraph.delete(h,i);p.selectorAtoms.delete(i);const w=M(p,d,t.get({get:c,find:u,json:f}));return e.logger.info("✨",l,i,"=",w),s.clear(),w},install:p=>Cn(p,t,n)};n&&(d.family=n),o.readonlySelectors.set(i,d);const _={key:i,type:l};return n&&(_.family=n),_}function xn(e,t,n){const o=v(e),r=new S,s=new Set,{key:i,const:l}=t,c="writable_held_selector";e.logger.info("🔨",c,i,"is being created");const u=Ae(o,c,i,s),{find:f,get:a,json:d}=u,_={find:f,get:a,json:d},w={...t,type:c,subject:r,getFrom:g=>{const K=g.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[R,{source:I}]of K)I!==i&&g.selectorGraph.delete(R,i);return g.selectorAtoms.delete(i),t.get(_,l),M(g,w,l),e.logger.info("✨",c,i,"=",l),s.clear(),l},setSelf:()=>{t.set(u,l)},install:g=>xn(g,t,n)};n&&(w.family=n),o.writableSelectors.set(i,w);const h={key:i,type:c};return n&&(h.family=n),h}function Kn(e,t,n){const o=v(e),r=new S,s=new Set,i=t.key,l="writable_pure_selector";e.logger.info("🔨",l,i,"is being created");const c=Ae(o,l,i,s),{find:u,get:f,json:a}=c,d={find:u,get:f,json:a},y={...t,type:l,subject:r,getFrom:h=>{const g=h.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[R,{source:I}]of g)I!==i&&h.selectorGraph.delete(R,i);h.selectorAtoms.delete(i);const K=M(h,y,t.get(d));return e.logger.info("✨",l,i,"=",K),s.clear(),K},setSelf:h=>{t.set(c,h)},install:h=>Kn(h,t,n)};n&&(y.family=n),o.writableSelectors.set(i,y);const w={key:i,type:l};return n&&(w.family=n),w}function xo(e,t){const n=v(e),{key:o,type:r,family:s}=t;if(!s)e.logger.error("❌",r,o,"Standalone selectors cannot be disposed.");else{n.molecules.get(s.subKey)&&n.moleculeData.delete(s.subKey,s.key);let i;switch(t.type){case"writable_held_selector":n.writableSelectors.delete(o),i={key:s.key,type:"writable_held_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(o),i={key:s.key,type:"writable_pure_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(o),i={key:s.key,type:"readonly_held_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(o),i={key:s.key,type:"readonly_pure_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break}n.valueMap.delete(o),n.selectorAtoms.delete(o),n.selectorGraph.delete(o),n.moleculeData.delete(s.key,s.subKey),e.logger.info("🔥",t.type,o,"deleted"),T(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)}}const Ko=(e,t)=>{const n=v(e);return n.operation.open?n.operation.prev.get(t.key):n.valueMap.get(t.key)},St=(e,t,n)=>n.subject.subscribe(`${t.type}:${t.key}`,o=>{e.logger.info("📢",t.type,t.key,"root",n.key,"went",o.oldValue,"->",o.newValue);const r=Ko(e,t),s=z(e,t);e.logger.info("✨",t.type,t.key,"went",r,"->",s),t.subject.next({newValue:s,oldValue:r})});function xe(e,t,n,o){function r(a){if(e.operation.open){if(s?.type==="atom"&&ut(s,"tracker:signal")&&"*"+e.operation.token.key===t.key&&"inboundTracker"in o)return;const d=e.on.operationClose.subscribe(`state subscription ${n}`,()=>{d(),o(a)})}else o(a)}lt(e,t);const s=C(e,t);e.logger.info("👀",s.type,s.key,`Adding subscription "${n}"`);const i=s.type==="writable_pure_selector"||s.type==="readonly_pure_selector",l=new Map;let c=r;if(i){z(e,s);for(const[a,d]of ue(e,s.key))l.set(a,St(e,s,d));c=function(d){const _=ue(e,s.key);for(const[p,y]of l)_.get(p)?_.delete(p):(y(),l.delete(p));for(const[p,y]of _)l.set(p,St(e,s,y));r(d)}}const u=s.subject.subscribe(n,c);return()=>{e.logger.info("🙈",s.type,s.key,`Removing subscription "${n}"`),u();for(const a of l.values())a()}}const To=(e,t,n,o)=>{const r=C(e,t);e.logger.info("👀","timeline",t.key,`Adding subscription "${n}"`);const s=r.subject.subscribe(n,o);return()=>{e.logger.info("🙈","timeline",t.key,`Removing subscription "${n}" from timeline`),s()}};var Ro=class{initializeSignalAtom(e,t){const n=`*${e.key}`;t.atoms.delete(n),t.valueMap.delete(n);const o=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,r=Pe(t,{key:n,default:null},o,["tracker:signal"]);if(t.parent?.valueMap.has(n)){const s=t.parent.valueMap.get(n);t.valueMap.set(n,s)}return r}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,n){const o=e.key,r=`tracker-from-core:${n.config.name}:${T(n)?n.transactionMeta.update.token.key:"main"}:${o}`,s=i=>{Oe(kn,n,t,i)};this.unsubscribeFromInnerValue=F(n,e).subscribe(r,s),this.unsubscribeFromState=xe(n,e,r,(function(l){l.newValue!==l.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=l.newValue.subscribe(r,s))}).bind(this))}supplySignalsToCore(e,t,n){const o=e.key,r=`tracker-to-core:${n.config.name}:${T(n)?n.transactionMeta.update.token.key:"main"}:${o}`;xe(n,t,r,Object.assign(function({newValue:i,oldValue:l}){const c=n.timelineTopics.getRelatedKey(t.key);if(c&&n.timelines.get(c)?.timeTraveling){const u=To(n,{key:c,type:"timeline"},r,function(a){u(),U(n,e,d=>(a==="redo"&&i?d.do(i):a==="undo"&&l&&d.undo(l),d))});return}U(n,e,u=>(u.do(i),u))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){const n=v(t),o=this.initializeSignalAtom(e,n);this.mutableAtomToken=e,this.latestSignalToken=o,this.captureSignalsFromCore(e,o,n),this.supplySignalsToCore(e,o,n),n.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(e.key)}}};const pe=(e,t)=>t.family?G(e,C(v(e),{key:`${t.family.key}:JSON`,type:"writable_pure_selector_family"}),te(t.family.subKey)):{type:"writable_pure_selector",key:`${t.key}:JSON`},Tn=e=>{const t={type:"atom",key:`*${e.key}`};return e.family&&(t.family={key:`*${e.family.key}`,subKey:e.family.subKey}),t};function ge(e){return typeof e=="object"&&e!==null&&"do"in e&&"undo"in e&&"subscribe"in e&&"READONLY_VIEW"in e&&"toJSON"in e}function M(e,t,n){const{key:o,subject:r,type:s}=t,i=e.valueMap.get(o);if(i instanceof Ye&&!i.done){const l=i;return n instanceof Promise?(l.use(n),l):(e.valueMap.set(o,n),n)}if(n instanceof Promise){const l=new Ye(n);return e.valueMap.set(o,l),l.then(function(u){if(e.valueMap.get(o)===l){switch(bn(e,t),M(e,t,u),s){case"atom":ct(e,t);break;case"readonly_pure_selector":case"writable_pure_selector":En(e,o);break}wn(e),r.next({newValue:u,oldValue:l})}}).catch(c=>{e.logger.error("💥",t.type,o,"rejected:",c)}),l}return e.logger.info("📝",t.type,t.key,"writing to cache",n),e.valueMap.set(o,n),n}function Rn(e,t,n){e.logger.info("📖",t.type,t.key,"reading cached value");let o=e.valueMap.get(t.key);if(n==="mut"&&t.type==="mutable_atom"&&T(e)){const r=t,{parent:s}=e;if(e.valueMap.hasOwn(r.key))return o;const i=s.valueMap.get(r.key);e.logger.info("📃","atom",r.key,"copying");const l=i.toJSON(),c=r.class.fromJSON(l);e.valueMap.set(r.key,c),new Ro(r,s),o=c}return o}function Mn(e,t){const n=e.valueMap.get(t);if(n instanceof Ye){const o=e.writableSelectors.get(t)??e.readonlySelectors.get(t);o&&o.getFrom(e);return}e.operation.open&&e.operation.prev.set(t,n),e.valueMap.delete(t),e.logger.info("🗑","state",t,"evicted")}function ct(e,t){const n=v(e),{key:o,type:r}=t,s=n.selectorAtoms.getRelatedKeys(o);if(n.logger.info("🧹",r,o,s?`evicting ${s.size} states downstream:`:"no downstream states",s??"to evict"),s){n.operation.open&&n.logger.info("🧹",r,o,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const i of s)vn(n,i)||(Mn(n,i),Ee(n,i))}}function En(e,t){const n=v(e),o=n.selectorGraph.getRelationEntries({upstreamSelectorKey:t}).filter(([r,{source:s}])=>s===t);for(const[r]of o)vn(n,r)||(Mn(n,r),Ee(n,r),En(e,r))}function Pe(e,t,n,o){const r="atom",{key:s}=t;e.logger.info("🔨",r,s,"is being created");const i=v(e),l=i.atoms.get(s);if(l?.type===r&&e.config.isProduction===!0)return e.logger.error("❌","atom",s,"Tried to create atom, but it already exists in the store."),Q(l);const c=new S,u={...t,type:r,install:a=>(a.logger.info("🛠️",r,s,`installing in store "${a.config.name}"`),Pe(a,t,n)),subject:c};n&&(u.family=n),o&&(u.internalRoles=o),i.atoms.set(s,u);const f=Q(u);if(t.effects){let a=0;const d=[];for(const _ of t.effects){const p=_({resetSelf:()=>{at(e,f)},setSelf:y=>{U(e,f,y)},onSet:y=>xe(e,f,`effect[${a}]`,y),token:f,store:Jn(e)});p&&d.push(p),++a}u.cleanup=()=>{for(const _ of d)_()}}return e.on.atomCreation.next(f),f}function ut(e,t){return"internalRoles"in e?e.internalRoles.includes(t):!1}function On(e,t){const n=v(e),{key:o,family:r}=t,s=C(n,t);if(!r)e.logger.error("❌","atom",o,"Standalone atoms cannot be disposed.");else{s.cleanup?.();const i=e.valueMap.get(s.key),l=C(e,it(e,t)).subject,c={type:"state_disposal",subType:"atom",token:t,value:i,timestamp:Date.now()};l.next(c);const u=T(n);if(n.atoms.delete(o),n.valueMap.delete(o),n.selectorAtoms.delete(o),n.atomsThatAreDefault.delete(o),n.moleculeData.delete(r.key,r.subKey),e.timelineTopics.delete(o),t.type==="mutable_atom"&&(On(e,Tn(t)),e.trackers.delete(o)),e.logger.info("🔥","atom",o,"deleted"),u&&n.transactionMeta.phase==="building"){const f=n.transactionMeta.update.subEvents.at(-1),a=f?.type==="molecule_disposal"&&f.values.some(([_])=>_===s.family?.key),d=ut(s,"tracker:signal");!a&&!d&&n.transactionMeta.update.subEvents.push(c)}else e.on.atomDisposal.next(t)}}function je(e){return Pe(N.STORE,e,void 0)}function ft(e){return yn(N.STORE,e)}function Ke(...e){return F(N.STORE,...e)}const B={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",state:"state",timeline:"timeline",transaction:"transaction",unknown:"unknown",writable_held_selector_family:"selector family [wh]",writable_held_selector:"selector [wh]",writable_pure_selector_family:"selector family [w]",writable_pure_selector:"selector [w]"},Ie=e=>(t,n,o,r,...s)=>{console[e](`${t} ${B[n]} \`${o}\` ${r}`,...s)},Mo={error:Ie("error"),info:Ie("info"),warn:Ie("warn")};var Eo=class{logLevel;filter;logger;constructor(e,t,n=Mo){this.logLevel=e,this.filter=t,this.logger=n}error=(...e)=>{if(this.logLevel!==null){const t=this.filter?.(...e)??!0;t===!0?this.logger.error(...e):t&&this.logger.error(...t)}};info=(...e)=>{if(this.logLevel==="info"){const 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){const t=this.filter?.(...e)??!0;t===!0?this.logger.warn(...e):t&&this.logger.warn(...t)}}};function Oo(e,t){return[e,t].sort().join("")}function Ao(e){if(typeof e!="string")return null;const[t,n]=e.split("==");if(!n)return null;const o=t.slice(4),[r,s]=n.split("++");return o&&r&&s?[o,r,s]:null}function $t(...e){at(N.STORE,...e)}function Po(e){return go(N.STORE,e)}function A(...e){U(N.STORE,...e)}function jo(e){return _n(N.STORE,e)}function Do(e,t=nn()){return ln(N.STORE,e,t)}var L,k,Ve,Ct,fe=0,An=[],$=m,xt=$.__b,Kt=$.__r,Tt=$.diffed,Rt=$.__c,Mt=$.unmount,Et=$.__;function ne(e,t){$.__h&&$.__h(k,e,fe||t),fe=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function No(e){return fe=1,Fo(jn,e)}function Fo(e,t,n){var o=ne(L++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):jn(void 0,t),function(l){var c=o.__N?o.__N[0]:o.__[0],u=o.t(c,l);c!==u&&(o.__N=[u,o.__[1]],o.__c.setState({}))}],o.__c=k,!k.__f)){var r=function(l,c,u){if(!o.__c.__H)return!0;var f=o.__c.__H.__.filter(function(d){return!!d.__c});if(f.every(function(d){return!d.__N}))return!s||s.call(this,l,c,u);var a=o.__c.props!==l;return f.forEach(function(d){if(d.__N){var _=d.__[0];d.__=d.__N,d.__N=void 0,_!==d.__[0]&&(a=!0)}}),s&&s.call(this,l,c,u)||a};k.__f=!0;var s=k.shouldComponentUpdate,i=k.componentWillUpdate;k.componentWillUpdate=function(l,c,u){if(this.__e){var f=s;s=void 0,r(l,c,u),s=f}i&&i.call(this,l,c,u)},k.shouldComponentUpdate=r}return o.__N||o.__}function _t(e,t){var n=ne(L++,3);!$.__s&&dt(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function Io(e,t){var n=ne(L++,4);!$.__s&&dt(n.__H,t)&&(n.__=e,n.u=t,k.__h.push(n))}function Vo(e){return fe=5,Pn(function(){return{current:e}},[])}function Pn(e,t){var n=ne(L++,7);return dt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Uo(e,t){return fe=8,Pn(function(){return e},t)}function Lo(e){var t=k.context[e.__c],n=ne(L++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(k)),t.props.value):e.__}function Ho(){var e=ne(L++,11);if(!e.__){for(var t=k.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function Wo(){for(var e;e=An.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ve),e.__H.__h.forEach(et),e.__H.__h=[]}catch(t){e.__H.__h=[],$.__e(t,e.__v)}}$.__b=function(e){k=null,xt&&xt(e)},$.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Et&&Et(e,t)},$.__r=function(e){Kt&&Kt(e),L=0;var t=(k=e.__c).__H;t&&(Ve===k?(t.__h=[],k.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ve),t.__h.forEach(et),t.__h=[],L=0)),Ve=k},$.diffed=function(e){Tt&&Tt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(An.push(t)!==1&&Ct===$.requestAnimationFrame||((Ct=$.requestAnimationFrame)||zo)(Wo)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Ve=k=null},$.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ve),n.__h=n.__h.filter(function(o){return!o.__||et(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],$.__e(o,n.__v)}}),Rt&&Rt(e,t)},$.unmount=function(e){Mt&&Mt(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{ve(o)}catch(r){t=r}}),n.__H=void 0,t&&$.__e(t,n.__v))};var Ot=typeof requestAnimationFrame=="function";function zo(e){var t,n=function(){clearTimeout(o),Ot&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);Ot&&(t=requestAnimationFrame(n))}function ve(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function et(e){var t=k;e.__c=e.__(),k=t}function dt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function jn(e,t){return typeof t=="function"?t(e):t}function Go(e,t){for(var n in t)e[n]=t[n];return e}function At(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var o in t)if(o!=="__source"&&e[o]!==t[o])return!0;return!1}function Bo(e,t){var n=t(),o=No({t:{__:n,u:t}}),r=o[0].t,s=o[1];return Io(function(){r.__=n,r.u=t,Ue(r)&&s({t:r})},[e,n,t]),_t(function(){return Ue(r)&&s({t:r}),e(function(){Ue(r)&&s({t:r})})},[e]),n}function Ue(e){var t,n,o=e.u,r=e.__;try{var s=o();return!((t=r)===(n=s)&&(t!==0||1/t==1/n)||t!=t&&n!=n)}catch{return!0}}function Pt(e,t){this.props=e,this.context=t}(Pt.prototype=new D).isPureReactComponent=!0,Pt.prototype.shouldComponentUpdate=function(e,t){return At(this.props,e)||At(this.state,t)};var jt=m.__b;m.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),jt&&jt(e)};var Jo=m.__e;m.__e=function(e,t,n,o){if(e.then){for(var r,s=t;s=s.__;)if((r=s.__c)&&r.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t)}Jo(e,t,n,o)};var Dt=m.unmount;function Dn(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(o){typeof o.__c=="function"&&o.__c()}),e.__c.__H=null),(e=Go({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(o){return Dn(o,t,n)})),e}function Nn(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(o){return Nn(o,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Le(){this.__u=0,this.o=null,this.__b=null}function Fn(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function be(){this.i=null,this.l=null}m.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Dt&&Dt(e)},(Le.prototype=new D).__c=function(e,t){var n=t.__c,o=this;o.o==null&&(o.o=[]),o.o.push(n);var r=Fn(o.__v),s=!1,i=function(){s||(s=!0,n.__R=null,r?r(l):l())};n.__R=i;var l=function(){if(!--o.__u){if(o.state.__a){var c=o.state.__a;o.__v.__k[0]=Nn(c,c.__c.__P,c.__c.__O)}var u;for(o.setState({__a:o.__b=null});u=o.o.pop();)u.forceUpdate()}};o.__u++||32&t.__u||o.setState({__a:o.__b=o.__v.__k[0]}),e.then(i,i)},Le.prototype.componentWillUnmount=function(){this.o=[]},Le.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=Dn(this.__b,n,o.__O=o.__P)}this.__b=null}var r=t.__a&&Ge(E,null,e.fallback);return r&&(r.__u&=-33),[Ge(E,null,t.__a?null:e.children),r]};var Nt=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};(be.prototype=new D).__a=function(e){var t=this,n=Fn(t.__v),o=t.l.get(e);return o[0]++,function(r){var s=function(){t.props.revealOrder?(o.push(r),Nt(t,e,o)):r()};n?n(s):s()}},be.prototype.render=function(e){this.i=null,this.l=new Map;var t=$e(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},be.prototype.componentDidUpdate=be.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Nt(e,n,t)})};var Yo=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,qo=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Zo=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Xo=/[A-Z0-9]/g,Qo=typeof document<"u",er=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};D.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(D.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Ft=m.event;function tr(){}function nr(){return this.cancelBubble}function or(){return this.defaultPrevented}m.event=function(e){return Ft&&(e=Ft(e)),e.persist=tr,e.isPropagationStopped=nr,e.isDefaultPrevented=or,e.nativeEvent=e};var rr={enumerable:!1,configurable:!0,get:function(){return this.class}},It=m.vnode;m.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,o=t.type,r={},s=o.indexOf("-")===-1;for(var i in n){var l=n[i];if(!(i==="value"&&"defaultValue"in n&&l==null||Qo&&i==="children"&&o==="noscript"||i==="class"||i==="className")){var c=i.toLowerCase();i==="defaultValue"&&"value"in n&&n.value==null?i="value":i==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?i="ondblclick":c!=="onchange"||o!=="input"&&o!=="textarea"||er(n.type)?c==="onfocus"?i="onfocusin":c==="onblur"?i="onfocusout":Zo.test(i)&&(i=c):c=i="oninput":s&&qo.test(i)?i=i.replace(Xo,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&r[i=c]&&(i="oninputCapture"),r[i]=l}}o=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=$e(n.children).forEach(function(u){u.props.selected=r.value.indexOf(u.props.value)!=-1})),o=="select"&&r.defaultValue!=null&&(r.value=$e(n.children).forEach(function(u){u.props.selected=r.multiple?r.defaultValue.indexOf(u.props.value)!=-1:r.defaultValue==u.props.value})),n.class&&!n.className?(r.class=n.class,Object.defineProperty(r,"className",rr)):(n.className&&!n.class||n.class&&n.className)&&(r.class=r.className=n.className),t.props=r})(e),e.$$typeof=Yo,It&&It(e)};var Vt=m.__r;m.__r=function(e){Vt&&Vt(e),e.__c};var Ut=m.diffed;m.diffed=function(e){Ut&&Ut(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value)};const sr=Gn(N.STORE);function ir(e,...t){let n;if(t.length===2){const o=t[0],r=t[1];n=G(e,o,r)}else n=t[0];return n}function ee(...e){const t=Lo(sr),n=ir(t,...e),o=Ho();return Bo(r=>xe(t,n,`use-o:${o}`,r),()=>F(t,n))}const ke=je({key:"pathKeys",default:[]}),Te=ft({key:"subpathKeys",default:[]}),ye=ft({key:"nodeAtoms",default:null}),_e=ft({key:"edgeAtoms",default:!0}),lr=Po({key:"pathDrawSelectors",get:e=>({get:t})=>t(Te,e).map((o,r)=>{const s=t(ye,o),i=t(_e,o);return s===null?"Z":r===0?`M ${s.x} ${s.y}`:i===!1?`M ${s.x} ${s.y}`:i===!0?`L ${s.x} ${s.y}`:"c"in i?`C ${i.c.x} ${i.c.y} ${i.s.x} ${i.s.y} ${s.x} ${s.y}`:`S ${i.s.x} ${i.s.y} ${s.x} ${s.y}`}).join(" ")});function ar(e){const t=Vo(null);return _t(()=>{A(e,t.current)},[e]),t}function Y(e,t,n){return Math.max(t,Math.min(n,e))}function Lt({at:e,subpathKey:t,prevSubpathKey:n,node:o}){let r;switch(typeof o){case"undefined":r=ee(ye,n);break;default:r=o}return r===null?null:b(E,{children:[b("line",{class:"bezier",x1:r.x,y1:r.y,x2:e.x,y2:e.y,stroke:"#777","stroke-width":1}),b("circle",{class:"bezier",fill:"#777",stroke:"#aaa","stroke-width":1,cx:e.x,cy:e.y,r:2}),b("circle",{class:"bezier-draggable",fill:"transparent",cx:e.x,cy:e.y,r:6,onPointerDown:s=>{s.currentTarget.setPointerCapture(s.pointerId),A(De,{key:t,by:o?"s":"c"})}})]})}function cr({subpathKey:e,nextSubpathKey:t}){const n=ee(ye,e),o=ee(_e,e);return n===null?null:b(E,{children:[typeof o=="boolean"?b("rect",{class:"node",x:n.x-3,y:n.y-3,width:6,height:6}):b(E,{children:[b(Lt,{at:o.s,node:n,subpathKey:e,prevSubpathKey:t}),o.c?b(Lt,{at:o.c,subpathKey:e,prevSubpathKey:t}):null,b("circle",{class:"node",cx:n.x,cy:n.y,r:3})]}),b("circle",{class:"node-draggable",fill:"transparent",cx:n.x,cy:n.y,r:10,onPointerDown:r=>{r.currentTarget.setPointerCapture(r.pointerId),A(De,{key:e})}})]})}function ur({pathKey:e}){const t=ee(lr,e);return b("path",{d:`${t} Z`,class:"path",style:{pointerEvents:"none"}})}function fr({pathKey:e}){const t=ee(Te,e);return b(E,{children:[b(ur,{pathKey:e}),t.toReversed().map((n,o,r)=>b(cr,{subpathKey:n,nextSubpathKey:r[o+1]??r[0]},n))]})}function _r(){const e=ee(ke);return b(E,{children:e.map(t=>b(fr,{pathKey:t},t))})}const In=je({key:"svgRef",default:null}),De=je({key:"currentlyDragging",default:null});function dr(e){e.preventDefault();const{key:t,by:n}=Ke(De)??{},o=Ke(In);if(!o||!t)return;const r=o.createSVGPoint();r.x=e.clientX,r.y=e.clientY;const s=o.getScreenCTM()?.inverse(),{x:i,y:l}=r.matrixTransform(s);switch(n){case void 0:A(ye,t,{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)});break;case"s":A(_e,t,c=>({...c,s:{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)}}));break;case"c":A(_e,t,c=>({...c,c:{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)}}));break}}const pr=["m","M","l","L","c","C","v","V","z","Z"],yr=je({key:"preactLogo",default:()=>fetch("preact.svg").then(e=>e.text())}),hr=jo({key:"reset",do:async()=>{const e=await Ke(yr);for(const r of Ke(ke))$t(Te,r);$t(ke);const t=e.split(`
14
- `).filter(r=>r.startsWith(" <path")).map(r=>{const s=r.split('d="')[1].slice(0,-9);let i,l="",c=[];const u=[];for(const d of s){if(pr.includes(d)){l&&(c.push(Number.parseFloat(l)),l=""),i&&u.push({letter:i,numbers:c}),i=d,c=[];continue}if(d===" "){c.push(Number.parseFloat(l)),l="";continue}if(d==="-"&&l){c.push(Number.parseFloat(l)),l="-";continue}l+=d}let f={x:0,y:0};return u.map(({letter:d,numbers:_})=>{let p,y;switch(d){case"m":p={x:f.x+_[0],y:f.y+_[1]},y=!1;break;case"M":p={x:_[0],y:_[1]},y=!1;break;case"l":p={x:f.x+_[0],y:f.y+_[1]},y=!0;break;case"L":p={x:_[0],y:_[1]},y=!0;break;case"c":p={x:f.x+_[4],y:f.y+_[5]},y={c:{x:f.x+_[0],y:f.y+_[1]},s:{x:f.x+_[2],y:f.y+_[3]}};break;case"C":p={x:_[4],y:_[5]},y={c:{x:_[0],y:_[1]},s:{x:_[2],y:_[3]}};break;case"v":p={x:f.x,y:f.y+_[0]},y=!0;break;case"V":p={x:f.x,y:_[0]},y=!0;break;case"z":case"Z":p=null,y=!0}return p&&(f=p),{node:p,edge:y}})});let n=0,o=0;for(const r of t){const s=o;for(const{node:l,edge:c}of r)A(_e,`subpath${o}`,c),A(ye,`subpath${o}`,l),o++;const i=o-s;A(Te,`path${n}`,Array.from({length:i},(l,c)=>`subpath${s+c}`)),A(ke,l=>[...l,`path${n}`]),n++}}}),Ht=Do(hr),q=256,Z=296;function mr(){const e=ar(In),t=Uo(n=>{n.currentTarget.releasePointerCapture(n.pointerId),A(De,null)},[]);return _t(()=>void Ht(),[]),b("div",{style:{display:"flex",flexFlow:"column",position:"relative",overflow:"hidden",maxWidth:"1280px",width:"100vw",alignItems:"center"},children:[b("svg",{ref:e,viewBox:`-185 -15 ${q+370} ${Z+30}`,width:1e3,height:500,onPointerMove:dr,onPointerUp:t,onPointerCancel:t,children:[b("title",{children:"Bezier Playground"}),b("defs",{children:b("pattern",{id:"grid",width:"5",height:"5",patternUnits:"userSpaceOnUse",children:b("rect",{x:"0",y:"0",width:".5",height:".5",fill:"none",stroke:"#aaa"})})}),b("rect",{x:0,y:0,width:q,height:Z,fill:"#aaa3"}),b("rect",{x:-185,y:-10,width:q+370,height:Z+20,fill:"url(#grid)"}),b(_r,{})]}),b("button",{type:"button",class:"flat",onClick:Ht,children:"Reset"})]})}function gr(){return b(E,{children:[b("h1",{children:"Atom.io in Preact on Vite"}),b("main",{children:[b(mr,{}),b("article",{children:[b(He,{title:"Learn Atom.io",description:"Atom.io is where data lives.",href:"https://atom.io.fyi/docs/getting-started"}),b(He,{title:"Learn Preact",description:"If you're new to Preact, try the interactive tutorial to learn important concepts",href:"https://preactjs.com/tutorial"}),b(He,{title:"Learn Vite",description:"To learn more about Vite and how you can customize it to fit your needs, take a look at their excellent documentation",href:"https://vitejs.dev"})]})]})]})}function He(e){return b("a",{href:e.href,target:"_blank",class:"resource",rel:"noreferrer",children:[b("h2",{children:e.title}),b("p",{children:e.description})]})}zn(b(gr,{}),document.getElementById("app"));
13
+ ${r.trace}`:"(no previous disposal trace found)"),n.type){case"mutable_atom_family":{if(e.defaults.has(n.key))return e.defaults.get(n.key);const s=new n.class;return e.defaults.set(n.key,s),s.READONLY_VIEW}case"atom_family":{if(e.defaults.has(n.key))return e.defaults.get(n.key);const s=n.default,i=s(o);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);const s=n.default(o);return e.defaults.set(n.key,s),s}}}function Ce(e,t){const{type:n,key:o,catch:r}=t;switch(n){case"readonly_pure_selector":case"writable_pure_selector":{let s;e.logger.info("🧮",n,o,"computing value");try{if(s=t.getFrom(e),s instanceof Promise)return s.catch(i=>{if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return i}throw i})}catch(i){if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return M(e,t,i)}throw i}return M(e,t,s)}case"atom":{let s;if(W(t.default))try{s=t.default(),s instanceof Promise&&(s=s.catch(i=>{if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return i}throw i}))}catch(i){if(e.logger.error("💥",n,o,"rejected:",i),r){for(const l of r)if(i instanceof l)return s=M(e,t,i),e.logger.info("✨",t.type,o,"computed default",s),s}throw i}else s=t.default,e.logger.info("✨",t.type,o,"using static default",s);return M(e,t,s)}}}function z(e,t,n){if(e.valueMap.has(t.key))return Rn(e,t,n);e.logger.info("❔",t.type,t.key,"value not found in cache");const{key:o}=t;switch(t.type){case"readonly_held_selector":case"writable_held_selector":return e.logger.info("🧮",t.type,o,"computing value"),t.getFrom(e);case"writable_pure_selector":case"readonly_pure_selector":case"atom":return Ce(e,t);case"mutable_atom":{const r=new t.class;return e.logger.info("✨",t.type,o,"created new instance",r),M(e,t,r)}}}function it(e,t){return C(e,{key:t.family.key,type:`${t.type}_family`})}const wt={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"},le=Symbol("MUST_CREATE"),mo=Symbol("DO_NOT_CREATE");function ae(e,t,n,o){const r=x(o),s=t.molecules.get(r);if(!s&&t.config.lifespan==="immortal"){const{type:l,key:c}=n;return t.logger.warn("💣","key",r,"was used to mint a counterfeit token for",l,`"${c}"`),{counterfeit:!0,key:`${c}(${r})`,type:wt[l],family:{key:c,subKey:r}}}let i;if(e===le)t.logger.info("👪",n.type,n.key,"adds member",typeof o=="string"?`\`${o}\``:o),i=n.create(o),s&&t.moleculeData.set(r,n.key);else{const{type:l,key:c}=n;return{key:`${c}(${r})`,type:wt[l],family:{key:c,subKey:r}}}return i}function lt(e,...t){let n,o,r,s,i;if(t.length===1){if(i=t[0],"family"in i){const c=it(e,i);if(r=C(e,c),s=te(i.family.subKey),n=ce(e,c,s),"counterfeit"in i)return{token:i,family:r,subKey:s,isNew:!1};n?i=n:(o=ae(le,e,c,s),i=o)}}else r=C(e,t[0]),s=t[1],n=ce(e,r,s),n?i=n:(o=ae(le,e,r,s),i=o);const l="counterfeit"in i;if(o&&l===!1&&r){let c;switch(i.type){case"readonly_pure_selector":case"readonly_held_selector":c="readable";break;case"atom":case"mutable_atom":case"writable_pure_selector":case"writable_held_selector":c="writable";break}const u={type:"state_creation",subType:c,token:i,timestamp:Date.now()};r.subject.next(u);const f=v(e);if(i.family)if(ie(f))switch(i.type){case"atom":case"mutable_atom":e.on.atomCreation.next(i);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":e.on.selectorCreation.next(i);break}else T(f)&&f.on.transactionApplying.state===null&&f.transactionMeta.update.subEvents.push(u)}return{token:i,family:r,subKey:s,isNew:!!o}}function F(e,...t){const{token:n,family:o,subKey:r}=lt(e,...t);return"counterfeit"in n&&o&&r?dn(e,n,o,r):z(e,C(e,n))}function ce(e,t,n){const o=x(n),r=`${t.key}(${o})`,s=v(e);let i;switch(t.type){case"atom_family":case"mutable_atom_family":i=s.atoms.get(r);break;case"writable_held_selector_family":case"writable_pure_selector_family":i=s.writableSelectors.get(r);break;case"readonly_held_selector_family":case"readonly_pure_selector_family":i=s.readonlySelectors.get(r);break}return i&&Q(i)}function G(e,t,n){const o=C(e,t),r=ce(e,t,n);return r||ae(mo,e,o,n)}function pn(e,t,n){const o=t.key,r="readonly_pure_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`,p=v(e),y={key:_,get:t.get(f)};return t.catch&&(y.catch=t.catch),Cn(p,y,d)},internalRoles:n,subject:l,install:f=>pn(f,t),default:f=>t.get(f)({get:((...a)=>F(e,...a)),find:((...a)=>G(e,...a)),json:a=>pe(e,a)})};return e.families.set(o,u),s}function yn(e,t,n){const o={key:t.key,type:"atom_family"},r=e.families.get(t.key);r&&e.config.isProduction===!0&&e.logger.error("❗","atom_family",t.key,`Overwriting an existing ${B[r.type]} "${r.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const s=new S,l={...o,create:c=>{const u=x(c),f={key:t.key,subKey:u},a=`${t.key}(${u})`,d=v(e),_=t.default,p={key:a,default:W(_)?()=>_(c):_};return t.effects&&(p.effects=t.effects(c)),t.catch&&(p.catch=t.catch),Pe(d,p,f)},default:t.default,subject:s,install:c=>yn(c,t),internalRoles:n};return e.families.set(t.key,l),W(t.default)===!1&&e.defaults.set(t.key,t.default),o}function hn(e,t,n){const o=t.key,r="readonly_held_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`;return $n(v(e),{key:_,const:t.const(f),get:t.get(f)},d)},internalRoles:n,subject:l,install:f=>hn(f,t),default:t.const};return e.families.set(o,u),s}function mn(e,t,n){const o=t.key,r="writable_held_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`;return xn(v(e),{key:_,const:t.const(f),get:t.get(f),set:t.set(f)},d)},internalRoles:n,subject:l,install:f=>mn(f,t),default:t.const};return e.families.set(o,u),s}function gn(e,t,n){const o=t.key,r="writable_pure_selector_family",s={key:o,type:r},i=e.families.get(o);i&&e.config.isProduction===!0&&e.logger.error("❗",r,o,`Overwriting an existing ${B[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);const l=new S,u={...s,create:f=>{const a=x(f),d={key:o,subKey:a},_=`${o}(${a})`,p=v(e),y={key:_,get:t.get(f),set:t.set(f)};return t.catch&&(y.catch=t.catch),Kn(p,y,d)},internalRoles:n,subject:l,install:f=>gn(f,t),default:f=>t.get(f)({get:((...a)=>F(e,...a)),find:((...a)=>G(e,...a)),json:a=>pe(e,a)})};return e.families.set(o,u),s}function go(e,t){const n="set"in t,o="const"in t;return o&&n?mn(e,t,void 0):o?hn(e,t,void 0):n?gn(e,t):pn(e,t)}function Me(e,...t){let n;if(t.length===1)n=t[0];else{const o=t[0],r=t[1];n=G(e,o,r)}try{C(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":On(e,n);break;case"writable_pure_selector":case"readonly_pure_selector":case"writable_held_selector":case"readonly_held_selector":xo(e,n);break}}function bn(e,t){if(e.operation.open){const 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}"${T(e)?` ${e.transactionMeta.phase} "${e.transactionMeta.update.token.key}"`:""}`),e}function wn(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)}const vn=(e,t)=>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),Ee=(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 qe(e,t,n,o,r){const{oldValue:s,newValue:i}=n,l="oldValue"in n,c=Q(t);if(o&&r){t.subject.next({newValue:i});const _={checkpoint:!0,type:"state_creation",subType:"writable",token:c,timestamp:Date.now(),value:i};e.operation.subEvents.push(_),r.subject.next(_);const p=v(e);if(c.family)if(ie(p))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 T(p)&&p.on.transactionApplying.state===null&&p.transactionMeta.update.subEvents.push(_);return}const{key:u,subject:f,type:a}=t;let d;if(l?d={oldValue:ge(s)?s.READONLY_VIEW:s,newValue:ge(i)?i.READONLY_VIEW:i}:d={newValue:ge(i)?i.READONLY_VIEW:i},ie(e)){switch(a){case"mutable_atom":e.logger.info("📢",a,u,"is now (",i,") subscribers:",f.subscribers.keys());break;case"atom":case"writable_pure_selector":case"writable_held_selector":e.logger.info("📢",a,u,"went (",s,"->",i,") subscribers:",f.subscribers.keys())}f.next(d)}if(T(e)&&(a==="mutable_atom"||a==="atom")){if(e.on.transactionApplying.state===null){if(ge(i))return;const{timestamp:_}=e.operation,p={type:"atom_update",token:c,timestamp:_,update:d};e.transactionMeta.update.subEvents.push(p),e.logger.info("📁","atom",u,"stowed (",s,"->",i,")");return}if(ut(t,"tracker:signal")){const _=u.slice(1),p=e.atoms.get(_);z(e,p,"mut").do(d.newValue)===null&&ct(e,p)}}}const vt=Symbol("UNSET"),Ze=(e,t,n)=>{let o,r;if(W(n)){const s=z(e,t,"mut");o=s,r=n(s)}else e.valueMap.has(t.key)?o=Rn(e,t,"mut"):t.type==="atom"&&!W(t.default)?o=t.default:o=vt,r=n;return e.logger.info("⭐","atom",t.key,"setting value",r),r=M(e,t,r),Ee(e,t.key),ct(e,t),o===vt?{newValue:r}:{oldValue:o,newValue:r}};function Fe(e,t){switch(t.type){case"mutable_atom":return Ze(e,t,new t.class);case"atom":{let n;return W(t.default)?n=Ce(e,t):n=t.default,Ze(e,t,n)}}}function bo(e,t){let n;switch(t.type){case"atom":case"mutable_atom":n=Fe(e,t);break;case"writable_held_selector":{const o=ue(e,t.key);for(const s of o.values())qe(e,t,Fe(e,s),!1);const r=t.getFrom(e);n={oldValue:r,newValue:r}}break;case"writable_pure_selector":{const o=Ce(e,t),r=ue(e,t.key);for(const s of r.values())qe(e,t,Fe(e,s),!1);n={oldValue:o,newValue:Ce(e,t)}}break}return n}function U(e,...t){Oe(Qe,e,...t)}const Xe=Symbol("RESET");function at(e,...t){U(e,...t,Xe)}function wo(e,t,n){let o,r,s;const{type:i,key:l}=t;switch(t.type){case"writable_pure_selector":o=z(e,t,"mut"),r=gt(n,o),r=M(e,t,r);break;case"writable_held_selector":s=t.const,gt(n,s),o=s,r=s}return e.logger.info("⭐",i,l,"setting to",r),Ee(e,l),t.setSelf(r),{oldValue:o,newValue:r}}const vo=(e,t,n)=>{let o;switch(t.type){case"atom":case"mutable_atom":o=Ze(e,t,n);break;case"writable_pure_selector":case"writable_held_selector":o=wo(e,t,n);break}return o},Qe=Symbol("OWN_OP"),kn=Symbol("JOIN_OP");function Oe(e,t,...n){let o,r,s,i,l,c;n.length===2?(s=n[0],c=n[1],"family"in s&&(i=it(t,s),l=te(s.family.subKey),o=ce(t,i,l),o?s=o:s=r=ae(le,t,i,l))):(i=C(t,n[0]),l=n[1],c=n[2],o=ce(t,i,l),o?s=o:s=r=ae(le,t,i,l));const u=c===Xe?"reset":"set";let f;if(e===Qe){const _=bn(t,s);if(typeof _=="number"){const p=_,y=t.on.operationClose.subscribe(`waiting to ${u} "${s.key}" at T-${p}`,function(){y(),t.logger.info("🟢",s.type,s.key,"resuming deferred",u,`from T-${p}`),Oe(e,t,s,c)});return}f=_}else f=t;if("counterfeit"in s&&"family"in s){const _=s.family.subKey,p=t.disposalTraces.buffer.find(y=>y?.key===_);t.logger.error("❌",s.type,s.key,"could not be",u,"because key",_,"is not allocated.",p?`this key was previously disposed:${p.trace}`:"(no previous disposal trace found)");return}const a=C(f,s);let d;c===Xe?d=bo(f,a):d=vo(f,a,c),qe(f,a,d,!!r,i),e===Qe&&wn(f)}const Sn=(e,t)=>v(e).atoms.has(t),ko=(e,t)=>v(e).writableSelectors.has(t),So=(e,t)=>v(e).readonlySelectors.has(t),$o=(e,t)=>Sn(e,t)||ko(e,t)||So(e,t);function kt(e,t){return v(e).selectorGraph.getRelationEntries({downstreamSelectorKey:t}).filter(([n,{source:o}])=>o!==t).map(([n,{source:o}])=>o).filter(n=>$o(e,n))}function ue(e,t,n=new Set){const o=kt(e,t),r=new Map;for(;o.length>0;){const s=o.pop();if(!n.has(s))if(n.add(s),Sn(e,s)){const i=e.atoms.get(s);r.set(i.key,i)}else o.push(...kt(e,s))}return r}function Co(e,t,n,o,r){const s=v(e),{type:i,key:l}=o;if(i==="atom"||i==="mutable_atom")s.selectorAtoms.set({selectorKey:n,atomKey:l}),e.logger.info("🔍",t,n,`discovers root atom "${l}"`);else{const c=ue(e,l,r);e.logger.info("🔍",t,n,`discovers root atoms: [ ${[...c.values()].map(u=>`"${u.key}"`).join(", ")} ]`);for(const{key:u}of c.values())s.selectorAtoms=s.selectorAtoms.set({selectorKey:n,atomKey:u})}r.add(l)}function Ae(e,t,n,o){return{get:(...r)=>{const s=v(e),{token:i,family:l,subKey:c}=lt(e,...r);let u;return"counterfeit"in i&&l&&c?u=dn(e,i,l,c):u=z(e,C(e,i)),e.logger.info("🔌",t,n,`registers dependency ( "${i.key}" =`,u,")"),s.selectorGraph.set({upstreamSelectorKey:i.key,downstreamSelectorKey:n},{source:i.key}),Co(e,t,n,i,o),u},set:((...r)=>{Oe(kn,v(e),...r)}),find:((...r)=>G(e,...r)),json:r=>pe(e,r)}}function $n(e,t,n){const o=v(e),r=new S,s=new Set,{key:i,const:l}=t,c="readonly_held_selector";e.logger.info("🔨",c,i,"is being created");const{get:u,find:f,json:a}=Ae(o,c,i,s),_={...t,type:c,subject:r,getFrom:y=>{const w=y.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[h,{source:g}]of w)g!==i&&y.selectorGraph.delete(h,i);return y.selectorAtoms.delete(i),t.get({get:u,find:f,json:a},l),M(y,_,l),e.logger.info("✨",c,i,"=",l),s.clear(),l},install:y=>$n(y,t,n)};n&&(_.family=n),o.readonlySelectors.set(i,_);const p={key:i,type:c};return n&&(p.family=n),p}function Cn(e,t,n){const o=v(e),r=new S,s=new Set,i=t.key,l="readonly_pure_selector";e.logger.info("🔨",l,i,"is being created");const{get:c,find:u,json:f}=Ae(o,l,i,s),d={...t,type:l,subject:r,getFrom:()=>{const p=v(e),y=p.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[h,{source:g}]of y)g!==i&&p.selectorGraph.delete(h,i);p.selectorAtoms.delete(i);const w=M(p,d,t.get({get:c,find:u,json:f}));return e.logger.info("✨",l,i,"=",w),s.clear(),w},install:p=>Cn(p,t,n)};n&&(d.family=n),o.readonlySelectors.set(i,d);const _={key:i,type:l};return n&&(_.family=n),_}function xn(e,t,n){const o=v(e),r=new S,s=new Set,{key:i,const:l}=t,c="writable_held_selector";e.logger.info("🔨",c,i,"is being created");const u=Ae(o,c,i,s),{find:f,get:a,json:d}=u,_={find:f,get:a,json:d},w={...t,type:c,subject:r,getFrom:g=>{const K=g.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[R,{source:I}]of K)I!==i&&g.selectorGraph.delete(R,i);return g.selectorAtoms.delete(i),t.get(_,l),M(g,w,l),e.logger.info("✨",c,i,"=",l),s.clear(),l},setSelf:()=>{t.set(u,l)},install:g=>xn(g,t,n)};n&&(w.family=n),o.writableSelectors.set(i,w);const h={key:i,type:c};return n&&(h.family=n),h}function Kn(e,t,n){const o=v(e),r=new S,s=new Set,i=t.key,l="writable_pure_selector";e.logger.info("🔨",l,i,"is being created");const c=Ae(o,l,i,s),{find:u,get:f,json:a}=c,d={find:u,get:f,json:a},y={...t,type:l,subject:r,getFrom:h=>{const g=h.selectorGraph.getRelationEntries({downstreamSelectorKey:i});for(const[R,{source:I}]of g)I!==i&&h.selectorGraph.delete(R,i);h.selectorAtoms.delete(i);const K=M(h,y,t.get(d));return e.logger.info("✨",l,i,"=",K),s.clear(),K},setSelf:h=>{t.set(c,h)},install:h=>Kn(h,t,n)};n&&(y.family=n),o.writableSelectors.set(i,y);const w={key:i,type:l};return n&&(w.family=n),w}function xo(e,t){const n=v(e),{key:o,type:r,family:s}=t;if(!s)e.logger.error("❌",r,o,"Standalone selectors cannot be disposed.");else{n.molecules.get(s.subKey)&&n.moleculeData.delete(s.subKey,s.key);let i;switch(t.type){case"writable_held_selector":n.writableSelectors.delete(o),i={key:s.key,type:"writable_held_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"writable_pure_selector":n.writableSelectors.delete(o),i={key:s.key,type:"writable_pure_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"readonly_held_selector":n.readonlySelectors.delete(o),i={key:s.key,type:"readonly_held_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break;case"readonly_pure_selector":n.readonlySelectors.delete(o),i={key:s.key,type:"readonly_pure_selector_family"},C(e,i).subject.next({type:"state_disposal",subType:"selector",token:t,timestamp:Date.now()});break}n.valueMap.delete(o),n.selectorAtoms.delete(o),n.selectorGraph.delete(o),n.moleculeData.delete(s.key,s.subKey),e.logger.info("🔥",t.type,o,"deleted"),T(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)}}const Ko=(e,t)=>{const n=v(e);return n.operation.open?n.operation.prev.get(t.key):n.valueMap.get(t.key)},St=(e,t,n)=>n.subject.subscribe(`${t.type}:${t.key}`,o=>{e.logger.info("📢",t.type,t.key,"root",n.key,"went",o.oldValue,"->",o.newValue);const r=Ko(e,t),s=z(e,t);e.logger.info("✨",t.type,t.key,"went",r,"->",s),t.subject.next({newValue:s,oldValue:r})});function xe(e,t,n,o){function r(a){if(e.operation.open){if(s?.type==="atom"&&ut(s,"tracker:signal")&&"*"+e.operation.token.key===t.key&&"inboundTracker"in o)return;const d=e.on.operationClose.subscribe(`state subscription ${n}`,()=>{d(),o(a)})}else o(a)}lt(e,t);const s=C(e,t);e.logger.info("👀",s.type,s.key,`Adding subscription "${n}"`);const i=s.type==="writable_pure_selector"||s.type==="readonly_pure_selector",l=new Map;let c=r;if(i){z(e,s);for(const[a,d]of ue(e,s.key))l.set(a,St(e,s,d));c=function(d){const _=ue(e,s.key);for(const[p,y]of l)_.get(p)?_.delete(p):(y(),l.delete(p));for(const[p,y]of _)l.set(p,St(e,s,y));r(d)}}const u=s.subject.subscribe(n,c);return()=>{e.logger.info("🙈",s.type,s.key,`Removing subscription "${n}"`),u();for(const a of l.values())a()}}const To=(e,t,n,o)=>{const r=C(e,t);e.logger.info("👀","timeline",t.key,`Adding subscription "${n}"`);const s=r.subject.subscribe(n,o);return()=>{e.logger.info("🙈","timeline",t.key,`Removing subscription "${n}" from timeline`),s()}};var Ro=class{initializeSignalAtom(e,t){const n=`*${e.key}`;t.atoms.delete(n),t.valueMap.delete(n);const o=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,r=Pe(t,{key:n,default:null},o,["tracker:signal"]);if(t.parent?.valueMap.has(n)){const s=t.parent.valueMap.get(n);t.valueMap.set(n,s)}return r}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,n){const o=e.key,r=`tracker-from-core:${n.config.name}:${T(n)?n.transactionMeta.update.token.key:"main"}:${o}`,s=i=>{Oe(kn,n,t,i)};this.unsubscribeFromInnerValue=F(n,e).subscribe(r,s),this.unsubscribeFromState=xe(n,e,r,(function(l){l.newValue!==l.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=l.newValue.subscribe(r,s))}).bind(this))}supplySignalsToCore(e,t,n){const o=e.key,r=`tracker-to-core:${n.config.name}:${T(n)?n.transactionMeta.update.token.key:"main"}:${o}`;xe(n,t,r,Object.assign(function({newValue:i,oldValue:l}){const c=n.timelineTopics.getRelatedKey(t.key);if(c&&n.timelines.get(c)?.timeTraveling){const u=To(n,{key:c,type:"timeline"},r,function(a){u(),U(n,e,d=>(a==="redo"&&i?d.do(i):a==="undo"&&l&&d.undo(l),d))});return}U(n,e,u=>(u.do(i),u))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){const n=v(t),o=this.initializeSignalAtom(e,n);this.mutableAtomToken=e,this.latestSignalToken=o,this.captureSignalsFromCore(e,o,n),this.supplySignalsToCore(e,o,n),n.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(e.key)}}};const pe=(e,t)=>t.family?G(e,C(v(e),{key:`${t.family.key}:JSON`,type:"writable_pure_selector_family"}),te(t.family.subKey)):{type:"writable_pure_selector",key:`${t.key}:JSON`},Tn=e=>{const t={type:"atom",key:`*${e.key}`};return e.family&&(t.family={key:`*${e.family.key}`,subKey:e.family.subKey}),t};function ge(e){return typeof e=="object"&&e!==null&&"do"in e&&"undo"in e&&"subscribe"in e&&"READONLY_VIEW"in e&&"toJSON"in e}function M(e,t,n){const{key:o,subject:r,type:s}=t,i=e.valueMap.get(o);if(i instanceof Ye&&!i.done){const l=i;return n instanceof Promise?(l.use(n),l):(e.valueMap.set(o,n),n)}if(n instanceof Promise){const l=new Ye(n);return e.valueMap.set(o,l),l.then(function(u){if(e.valueMap.get(o)===l){switch(bn(e,t),M(e,t,u),s){case"atom":ct(e,t);break;case"readonly_pure_selector":case"writable_pure_selector":En(e,o);break}wn(e),r.next({newValue:u,oldValue:l})}}).catch(c=>{e.logger.error("💥",t.type,o,"rejected:",c)}),l}return e.logger.info("📝",t.type,t.key,"writing to cache",n),e.valueMap.set(o,n),n}function Rn(e,t,n){e.logger.info("📖",t.type,t.key,"reading cached value");let o=e.valueMap.get(t.key);if(n==="mut"&&t.type==="mutable_atom"&&T(e)){const r=t,{parent:s}=e;if(e.valueMap.hasOwn(r.key))return o;const i=s.valueMap.get(r.key);e.logger.info("📃","atom",r.key,"copying");const l=i.toJSON(),c=r.class.fromJSON(l);e.valueMap.set(r.key,c),new Ro(r,s),o=c}return o}function Mn(e,t){const n=e.valueMap.get(t);if(n instanceof Ye){const o=e.writableSelectors.get(t)??e.readonlySelectors.get(t);o&&o.getFrom(e);return}e.operation.open&&e.operation.prev.set(t,n),e.valueMap.delete(t),e.logger.info("🗑","state",t,"evicted")}function ct(e,t){const n=v(e),{key:o,type:r}=t,s=n.selectorAtoms.getRelatedKeys(o);if(n.logger.info("🧹",r,o,s?`evicting ${s.size} states downstream:`:"no downstream states",s??"to evict"),s){n.operation.open&&n.logger.info("🧹",r,o,`[ ${[...n.operation.done].join(", ")} ] already done`);for(const i of s)vn(n,i)||(Mn(n,i),Ee(n,i))}}function En(e,t){const n=v(e),o=n.selectorGraph.getRelationEntries({upstreamSelectorKey:t}).filter(([r,{source:s}])=>s===t);for(const[r]of o)vn(n,r)||(Mn(n,r),Ee(n,r),En(e,r))}function Pe(e,t,n,o){const r="atom",{key:s}=t;e.logger.info("🔨",r,s,"is being created");const i=v(e),l=i.atoms.get(s);if(l?.type===r&&e.config.isProduction===!0)return e.logger.error("❌","atom",s,"Tried to create atom, but it already exists in the store."),Q(l);const c=new S,u={...t,type:r,install:a=>(a.logger.info("🛠️",r,s,`installing in store "${a.config.name}"`),Pe(a,t,n)),subject:c};n&&(u.family=n),o&&(u.internalRoles=o),i.atoms.set(s,u);const f=Q(u);if(t.effects){let a=0;const d=[];for(const _ of t.effects){const p=_({resetSelf:()=>{at(e,f)},setSelf:y=>{U(e,f,y)},onSet:y=>xe(e,f,`effect[${a}]`,y),token:f,store:Jn(e)});p&&d.push(p),++a}u.cleanup=()=>{for(const _ of d)_()}}return e.on.atomCreation.next(f),f}function ut(e,t){return"internalRoles"in e?e.internalRoles.includes(t):!1}function On(e,t){const n=v(e),{key:o,family:r}=t,s=C(n,t);if(!r)e.logger.error("❌","atom",o,"Standalone atoms cannot be disposed.");else{s.cleanup?.();const i=e.valueMap.get(s.key),l=C(e,it(e,t)).subject,c={type:"state_disposal",subType:"atom",token:t,value:i,timestamp:Date.now()};l.next(c);const u=T(n);if(n.atoms.delete(o),n.valueMap.delete(o),n.selectorAtoms.delete(o),n.atomsThatAreDefault.delete(o),n.moleculeData.delete(r.key,r.subKey),e.timelineTopics.delete(o),t.type==="mutable_atom"&&(On(e,Tn(t)),e.trackers.delete(o)),e.logger.info("🔥","atom",o,"deleted"),u&&n.transactionMeta.phase==="building"){const f=n.transactionMeta.update.subEvents.at(-1),a=f?.type==="molecule_disposal"&&f.values.some(([_])=>_===s.family?.key),d=ut(s,"tracker:signal");!a&&!d&&n.transactionMeta.update.subEvents.push(c)}else e.on.atomDisposal.next(t)}}function je(e){return Pe(N.STORE,e,void 0)}function ft(e){return yn(N.STORE,e)}function Ke(...e){return F(N.STORE,...e)}const B={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",state:"state",timeline:"timeline",transaction:"transaction",unknown:"unknown",writable_held_selector_family:"selector family [wh]",writable_held_selector:"selector [wh]",writable_pure_selector_family:"selector family [w]",writable_pure_selector:"selector [w]"},Ie=e=>(t,n,o,r,...s)=>{console[e](`${t} ${B[n]} \`${o}\` ${r}`,...s)},Mo={error:Ie("error"),info:Ie("info"),warn:Ie("warn")};var Eo=class{logLevel;filter;logger;constructor(e,t,n=Mo){this.logLevel=e,this.filter=t,this.logger=n}error=(...e)=>{if(this.logLevel!==null){const t=this.filter?.(...e)??!0;t===!0?this.logger.error(...e):t&&this.logger.error(...t)}};info=(...e)=>{if(this.logLevel==="info"){const 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){const t=this.filter?.(...e)??!0;t===!0?this.logger.warn(...e):t&&this.logger.warn(...t)}}};function Oo(e,t){return[e,t].sort().join("")}function Ao(e){if(typeof e!="string")return null;const[t,n]=e.split("==");if(!n)return null;const o=t.slice(4),[r,s]=n.split("++");return o&&r&&s?[o,r,s]:null}function $t(...e){at(N.STORE,...e)}function Po(e){return go(N.STORE,e)}function A(...e){U(N.STORE,...e)}function jo(e){return _n(N.STORE,e)}function Do(e,t=nn()){return ln(N.STORE,e,t)}var L,k,Ve,Ct,fe=0,An=[],$=m,xt=$.__b,Kt=$.__r,Tt=$.diffed,Rt=$.__c,Mt=$.unmount,Et=$.__;function ne(e,t){$.__h&&$.__h(k,e,fe||t),fe=0;var n=k.__H||(k.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function No(e){return fe=1,Fo(jn,e)}function Fo(e,t,n){var o=ne(L++,2);if(o.t=e,!o.__c&&(o.__=[n?n(t):jn(void 0,t),function(l){var c=o.__N?o.__N[0]:o.__[0],u=o.t(c,l);c!==u&&(o.__N=[u,o.__[1]],o.__c.setState({}))}],o.__c=k,!k.__f)){var r=function(l,c,u){if(!o.__c.__H)return!0;var f=o.__c.__H.__.filter(function(d){return!!d.__c});if(f.every(function(d){return!d.__N}))return!s||s.call(this,l,c,u);var a=o.__c.props!==l;return f.forEach(function(d){if(d.__N){var _=d.__[0];d.__=d.__N,d.__N=void 0,_!==d.__[0]&&(a=!0)}}),s&&s.call(this,l,c,u)||a};k.__f=!0;var s=k.shouldComponentUpdate,i=k.componentWillUpdate;k.componentWillUpdate=function(l,c,u){if(this.__e){var f=s;s=void 0,r(l,c,u),s=f}i&&i.call(this,l,c,u)},k.shouldComponentUpdate=r}return o.__N||o.__}function _t(e,t){var n=ne(L++,3);!$.__s&&dt(n.__H,t)&&(n.__=e,n.u=t,k.__H.__h.push(n))}function Io(e,t){var n=ne(L++,4);!$.__s&&dt(n.__H,t)&&(n.__=e,n.u=t,k.__h.push(n))}function Vo(e){return fe=5,Pn(function(){return{current:e}},[])}function Pn(e,t){var n=ne(L++,7);return dt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Uo(e,t){return fe=8,Pn(function(){return e},t)}function Lo(e){var t=k.context[e.__c],n=ne(L++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(k)),t.props.value):e.__}function Ho(){var e=ne(L++,11);if(!e.__){for(var t=k.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function Wo(){for(var e;e=An.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(ve),e.__H.__h.forEach(et),e.__H.__h=[]}catch(t){e.__H.__h=[],$.__e(t,e.__v)}}$.__b=function(e){k=null,xt&&xt(e)},$.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Et&&Et(e,t)},$.__r=function(e){Kt&&Kt(e),L=0;var t=(k=e.__c).__H;t&&(Ve===k?(t.__h=[],k.__h=[],t.__.forEach(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.forEach(ve),t.__h.forEach(et),t.__h=[],L=0)),Ve=k},$.diffed=function(e){Tt&&Tt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(An.push(t)!==1&&Ct===$.requestAnimationFrame||((Ct=$.requestAnimationFrame)||zo)(Wo)),t.__H.__.forEach(function(n){n.u&&(n.__H=n.u),n.u=void 0})),Ve=k=null},$.__c=function(e,t){t.some(function(n){try{n.__h.forEach(ve),n.__h=n.__h.filter(function(o){return!o.__||et(o)})}catch(o){t.some(function(r){r.__h&&(r.__h=[])}),t=[],$.__e(o,n.__v)}}),Rt&&Rt(e,t)},$.unmount=function(e){Mt&&Mt(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach(function(o){try{ve(o)}catch(r){t=r}}),n.__H=void 0,t&&$.__e(t,n.__v))};var Ot=typeof requestAnimationFrame=="function";function zo(e){var t,n=function(){clearTimeout(o),Ot&&cancelAnimationFrame(t),setTimeout(e)},o=setTimeout(n,35);Ot&&(t=requestAnimationFrame(n))}function ve(e){var t=k,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),k=t}function et(e){var t=k;e.__c=e.__(),k=t}function dt(e,t){return!e||e.length!==t.length||t.some(function(n,o){return n!==e[o]})}function jn(e,t){return typeof t=="function"?t(e):t}function Go(e,t){for(var n in t)e[n]=t[n];return e}function At(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var o in t)if(o!=="__source"&&e[o]!==t[o])return!0;return!1}function Bo(e,t){var n=t(),o=No({t:{__:n,u:t}}),r=o[0].t,s=o[1];return Io(function(){r.__=n,r.u=t,Ue(r)&&s({t:r})},[e,n,t]),_t(function(){return Ue(r)&&s({t:r}),e(function(){Ue(r)&&s({t:r})})},[e]),n}function Ue(e){var t,n,o=e.u,r=e.__;try{var s=o();return!((t=r)===(n=s)&&(t!==0||1/t==1/n)||t!=t&&n!=n)}catch{return!0}}function Pt(e,t){this.props=e,this.context=t}(Pt.prototype=new D).isPureReactComponent=!0,Pt.prototype.shouldComponentUpdate=function(e,t){return At(this.props,e)||At(this.state,t)};var jt=m.__b;m.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),jt&&jt(e)};var Jo=m.__e;m.__e=function(e,t,n,o){if(e.then){for(var r,s=t;s=s.__;)if((r=s.__c)&&r.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t)}Jo(e,t,n,o)};var Dt=m.unmount;function Dn(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(o){typeof o.__c=="function"&&o.__c()}),e.__c.__H=null),(e=Go({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(o){return Dn(o,t,n)})),e}function Nn(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(o){return Nn(o,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Le(){this.__u=0,this.o=null,this.__b=null}function Fn(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function be(){this.i=null,this.l=null}m.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Dt&&Dt(e)},(Le.prototype=new D).__c=function(e,t){var n=t.__c,o=this;o.o==null&&(o.o=[]),o.o.push(n);var r=Fn(o.__v),s=!1,i=function(){s||(s=!0,n.__R=null,r?r(l):l())};n.__R=i;var l=function(){if(!--o.__u){if(o.state.__a){var c=o.state.__a;o.__v.__k[0]=Nn(c,c.__c.__P,c.__c.__O)}var u;for(o.setState({__a:o.__b=null});u=o.o.pop();)u.forceUpdate()}};o.__u++||32&t.__u||o.setState({__a:o.__b=o.__v.__k[0]}),e.then(i,i)},Le.prototype.componentWillUnmount=function(){this.o=[]},Le.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=Dn(this.__b,n,o.__O=o.__P)}this.__b=null}var r=t.__a&&Ge(E,null,e.fallback);return r&&(r.__u&=-33),[Ge(E,null,t.__a?null:e.children),r]};var Nt=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};(be.prototype=new D).__a=function(e){var t=this,n=Fn(t.__v),o=t.l.get(e);return o[0]++,function(r){var s=function(){t.props.revealOrder?(o.push(r),Nt(t,e,o)):r()};n?n(s):s()}},be.prototype.render=function(e){this.i=null,this.l=new Map;var t=$e(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},be.prototype.componentDidUpdate=be.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Nt(e,n,t)})};var Yo=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,qo=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Zo=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Xo=/[A-Z0-9]/g,Qo=typeof document<"u",er=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};D.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(D.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Ft=m.event;function tr(){}function nr(){return this.cancelBubble}function or(){return this.defaultPrevented}m.event=function(e){return Ft&&(e=Ft(e)),e.persist=tr,e.isPropagationStopped=nr,e.isDefaultPrevented=or,e.nativeEvent=e};var rr={enumerable:!1,configurable:!0,get:function(){return this.class}},It=m.vnode;m.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,o=t.type,r={},s=o.indexOf("-")===-1;for(var i in n){var l=n[i];if(!(i==="value"&&"defaultValue"in n&&l==null||Qo&&i==="children"&&o==="noscript"||i==="class"||i==="className")){var c=i.toLowerCase();i==="defaultValue"&&"value"in n&&n.value==null?i="value":i==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?i="ondblclick":c!=="onchange"||o!=="input"&&o!=="textarea"||er(n.type)?c==="onfocus"?i="onfocusin":c==="onblur"?i="onfocusout":Zo.test(i)&&(i=c):c=i="oninput":s&&qo.test(i)?i=i.replace(Xo,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&r[i=c]&&(i="oninputCapture"),r[i]=l}}o=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=$e(n.children).forEach(function(u){u.props.selected=r.value.indexOf(u.props.value)!=-1})),o=="select"&&r.defaultValue!=null&&(r.value=$e(n.children).forEach(function(u){u.props.selected=r.multiple?r.defaultValue.indexOf(u.props.value)!=-1:r.defaultValue==u.props.value})),n.class&&!n.className?(r.class=n.class,Object.defineProperty(r,"className",rr)):(n.className&&!n.class||n.class&&n.className)&&(r.class=r.className=n.className),t.props=r})(e),e.$$typeof=Yo,It&&It(e)};var Vt=m.__r;m.__r=function(e){Vt&&Vt(e),e.__c};var Ut=m.diffed;m.diffed=function(e){Ut&&Ut(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value)};const sr=Gn(N.STORE);function ir(e,t){const n=t(null);return _t(()=>{A(e,n.current)},[e]),n}function lr(e,...t){let n;if(t.length===2){const o=t[0],r=t[1];n=G(e,o,r)}else n=t[0];return n}function ee(...e){const t=Lo(sr),n=lr(t,...e),o=Ho();return Bo(r=>xe(t,n,`use-o:${o}`,r),()=>F(t,n))}const ke=je({key:"pathKeys",default:[]}),Te=ft({key:"subpathKeys",default:[]}),ye=ft({key:"nodeAtoms",default:null}),_e=ft({key:"edgeAtoms",default:!0}),ar=Po({key:"pathDrawSelectors",get:e=>({get:t})=>t(Te,e).map((o,r)=>{const s=t(ye,o),i=t(_e,o);return s===null?"Z":r===0?`M ${s.x} ${s.y}`:i===!1?`M ${s.x} ${s.y}`:i===!0?`L ${s.x} ${s.y}`:"c"in i?`C ${i.c.x} ${i.c.y} ${i.s.x} ${i.s.y} ${s.x} ${s.y}`:`S ${i.s.x} ${i.s.y} ${s.x} ${s.y}`}).join(" ")});function Y(e,t,n){return Math.max(t,Math.min(n,e))}function Lt({at:e,subpathKey:t,prevSubpathKey:n,node:o}){let r;switch(typeof o){case"undefined":r=ee(ye,n);break;default:r=o}return r===null?null:b(E,{children:[b("line",{class:"bezier",x1:r.x,y1:r.y,x2:e.x,y2:e.y,stroke:"#777","stroke-width":1}),b("circle",{class:"bezier",fill:"#777",stroke:"#aaa","stroke-width":1,cx:e.x,cy:e.y,r:2}),b("circle",{class:"bezier-draggable",fill:"transparent",cx:e.x,cy:e.y,r:6,onPointerDown:s=>{s.currentTarget.setPointerCapture(s.pointerId),A(De,{key:t,by:o?"s":"c"})}})]})}function cr({subpathKey:e,nextSubpathKey:t}){const n=ee(ye,e),o=ee(_e,e);return n===null?null:b(E,{children:[typeof o=="boolean"?b("rect",{class:"node",x:n.x-3,y:n.y-3,width:6,height:6}):b(E,{children:[b(Lt,{at:o.s,node:n,subpathKey:e,prevSubpathKey:t}),o.c?b(Lt,{at:o.c,subpathKey:e,prevSubpathKey:t}):null,b("circle",{class:"node",cx:n.x,cy:n.y,r:3})]}),b("circle",{class:"node-draggable",fill:"transparent",cx:n.x,cy:n.y,r:10,onPointerDown:r=>{r.currentTarget.setPointerCapture(r.pointerId),A(De,{key:e})}})]})}function ur({pathKey:e}){const t=ee(ar,e);return b("path",{d:`${t} Z`,class:"path",style:{pointerEvents:"none"}})}function fr({pathKey:e}){const t=ee(Te,e);return b(E,{children:[b(ur,{pathKey:e}),t.toReversed().map((n,o,r)=>b(cr,{subpathKey:n,nextSubpathKey:r[o+1]??r[0]},n))]})}function _r(){const e=ee(ke);return b(E,{children:e.map(t=>b(fr,{pathKey:t},t))})}const In=je({key:"svgRef",default:null}),De=je({key:"currentlyDragging",default:null});function dr(e){e.preventDefault();const{key:t,by:n}=Ke(De)??{},o=Ke(In);if(!o||!t)return;const r=o.createSVGPoint();r.x=e.clientX,r.y=e.clientY;const s=o.getScreenCTM()?.inverse(),{x:i,y:l}=r.matrixTransform(s);switch(n){case void 0:A(ye,t,{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)});break;case"s":A(_e,t,c=>({...c,s:{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)}}));break;case"c":A(_e,t,c=>({...c,c:{x:Y(i,-185,q+185),y:Y(l,-10,Z+10)}}));break}}const pr=["m","M","l","L","c","C","v","V","z","Z"],yr=je({key:"preactLogo",default:()=>fetch("preact.svg").then(e=>e.text())}),hr=jo({key:"reset",do:async()=>{const e=await Ke(yr);for(const r of Ke(ke))$t(Te,r);$t(ke);const t=e.split(`
14
+ `).filter(r=>r.startsWith(" <path")).map(r=>{const s=r.split('d="')[1].slice(0,-9);let i,l="",c=[];const u=[];for(const d of s){if(pr.includes(d)){l&&(c.push(Number.parseFloat(l)),l=""),i&&u.push({letter:i,numbers:c}),i=d,c=[];continue}if(d===" "){c.push(Number.parseFloat(l)),l="";continue}if(d==="-"&&l){c.push(Number.parseFloat(l)),l="-";continue}l+=d}let f={x:0,y:0};return u.map(({letter:d,numbers:_})=>{let p,y;switch(d){case"m":p={x:f.x+_[0],y:f.y+_[1]},y=!1;break;case"M":p={x:_[0],y:_[1]},y=!1;break;case"l":p={x:f.x+_[0],y:f.y+_[1]},y=!0;break;case"L":p={x:_[0],y:_[1]},y=!0;break;case"c":p={x:f.x+_[4],y:f.y+_[5]},y={c:{x:f.x+_[0],y:f.y+_[1]},s:{x:f.x+_[2],y:f.y+_[3]}};break;case"C":p={x:_[4],y:_[5]},y={c:{x:_[0],y:_[1]},s:{x:_[2],y:_[3]}};break;case"v":p={x:f.x,y:f.y+_[0]},y=!0;break;case"V":p={x:f.x,y:_[0]},y=!0;break;case"z":case"Z":p=null,y=!0}return p&&(f=p),{node:p,edge:y}})});let n=0,o=0;for(const r of t){const s=o;for(const{node:l,edge:c}of r)A(_e,`subpath${o}`,c),A(ye,`subpath${o}`,l),o++;const i=o-s;A(Te,`path${n}`,Array.from({length:i},(l,c)=>`subpath${s+c}`)),A(ke,l=>[...l,`path${n}`]),n++}}}),Ht=Do(hr),q=256,Z=296;function mr(){const e=ir(In,Vo),t=Uo(n=>{n.currentTarget.releasePointerCapture(n.pointerId),A(De,null)},[]);return _t(()=>void Ht(),[]),b("div",{style:{display:"flex",flexFlow:"column",position:"relative",overflow:"hidden",maxWidth:"1280px",width:"100vw",alignItems:"center"},children:[b("svg",{ref:e,viewBox:`-185 -15 ${q+370} ${Z+30}`,width:1e3,height:500,onPointerMove:dr,onPointerUp:t,onPointerCancel:t,children:[b("title",{children:"Bezier Playground"}),b("defs",{children:b("pattern",{id:"grid",width:"5",height:"5",patternUnits:"userSpaceOnUse",children:b("rect",{x:"0",y:"0",width:".5",height:".5",fill:"none",stroke:"#aaa"})})}),b("rect",{x:0,y:0,width:q,height:Z,fill:"#aaa3"}),b("rect",{x:-185,y:-10,width:q+370,height:Z+20,fill:"url(#grid)"}),b(_r,{})]}),b("button",{type:"button",class:"flat",onClick:Ht,children:"Reset"})]})}function gr(){return b(E,{children:[b("h1",{children:"Atom.io in Preact on Vite"}),b("main",{children:[b(mr,{}),b("article",{children:[b(He,{title:"Learn Atom.io",description:"Atom.io is where data lives.",href:"https://atom.io.fyi/docs/getting-started"}),b(He,{title:"Learn Preact",description:"If you're new to Preact, try the interactive tutorial to learn important concepts",href:"https://preactjs.com/tutorial"}),b(He,{title:"Learn Vite",description:"To learn more about Vite and how you can customize it to fit your needs, take a look at their excellent documentation",href:"https://vitejs.dev"})]})]})]})}function He(e){return b("a",{href:e.href,target:"_blank",class:"resource",rel:"noreferrer",children:[b("h2",{children:e.title}),b("p",{children:e.description})]})}zn(b(gr,{}),document.getElementById("app"));
package/dist/index.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <meta name="color-scheme" content="light dark" />
8
8
  <title>Vite + Preact + Atom.io</title>
9
- <script type="module" crossorigin src="/assets/index-DhFJjzdn.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-CM52ItJB.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-jy4_OpZh.css">
11
11
  </head>
12
12
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atom.io/template-preact-svg-editor",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -9,16 +9,16 @@
9
9
  "preact": "10.27.2",
10
10
  "react": "npm:@preact/compat@18.3.1",
11
11
  "react-dom": "npm:@preact/compat@18.3.1",
12
- "atom.io": "0.44.3"
12
+ "atom.io": "0.44.4"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@preact/preset-vite": "2.10.2",
16
- "@typescript-eslint/eslint-plugin": "8.46.3",
17
- "@typescript-eslint/parser": "8.46.3",
16
+ "@typescript-eslint/eslint-plugin": "8.46.4",
17
+ "@typescript-eslint/parser": "8.46.4",
18
18
  "eslint-config-preact": "2.0.0",
19
19
  "eslint-plugin-import-x": "4.16.1",
20
20
  "eslint-plugin-simple-import-sort": "12.1.1",
21
- "vite": "7.2.0"
21
+ "vite": "7.2.2"
22
22
  },
23
23
  "scripts": {
24
24
  "dev": "vite",
@@ -1,4 +1,4 @@
1
- import type { Loadable, RegularAtomToken } from "atom.io"
1
+ import type { Loadable } from "atom.io"
2
2
  import {
3
3
  atom,
4
4
  atomFamily,
@@ -9,9 +9,8 @@ import {
9
9
  setState,
10
10
  transaction,
11
11
  } from "atom.io"
12
- import { useO } from "atom.io/react"
12
+ import { useO, useAtomicRef } from "atom.io/react"
13
13
  import type { PointerEventHandler, TargetedPointerEvent, VNode } from "preact"
14
- import type { MutableRef } from "preact/hooks"
15
14
  import { useCallback, useEffect, useRef } from "preact/hooks"
16
15
 
17
16
  type PointXY = { x: number; y: number }
@@ -65,16 +64,6 @@ const pathDrawSelectors = selectorFamily<string, string>({
65
64
  },
66
65
  })
67
66
 
68
- export function useAtomicRef<T>(
69
- token: RegularAtomToken<T | null>,
70
- ): MutableRef<T | null> {
71
- const ref = useRef<T | null>(null)
72
- useEffect(() => {
73
- setState(token, ref.current)
74
- }, [token])
75
- return ref
76
- }
77
-
78
67
  function clamp(n: number, min: number, max: number) {
79
68
  return Math.max(min, Math.min(max, n))
80
69
  }
@@ -405,7 +394,7 @@ const reset = runTransaction(resetTX)
405
394
  const WIDTH = 256
406
395
  const HEIGHT = 296
407
396
  export default function BezierPlayground(): VNode {
408
- const svgRef = useAtomicRef(svgRefAtom)
397
+ const svgRef = useAtomicRef(svgRefAtom, useRef)
409
398
  const onPointerUp: PointerEventHandler<SVGSVGElement> = useCallback((evt) => {
410
399
  evt.currentTarget.releasePointerCapture(evt.pointerId)
411
400
  setState(currentlyDraggingAtom, null)