@atom.io/template-preact-svg-editor 0.0.60 → 0.0.62

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.
@@ -5,6 +5,6 @@ rendering chunks...
5
5
  computing gzip size...
6
6
  dist/index.html 0.52 kB │ gzip: 0.32 kB
7
7
  dist/assets/index-BNVXGhU4.css 1.58 kB │ gzip: 0.72 kB
8
- dist/assets/index-BJWFwj8i.js 81.11 kB │ gzip: 25.32 kB
8
+ dist/assets/index-C4g8LrxD.js 81.11 kB │ gzip: 25.31 kB
9
9
 
10
- ✓ built in 196ms
10
+ ✓ built in 155ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atom.io/template-preact-svg-editor
2
2
 
3
+ ## 0.0.62
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [c292fcc]
8
+ - atom.io@0.47.2
9
+
10
+ ## 0.0.61
11
+
12
+ ### Patch Changes
13
+
14
+ - 95e41d3: Migrate React linting templates to `@eslint-react/eslint-plugin` and ship local ESLint React typings.
15
+
3
16
  ## 0.0.60
4
17
 
5
18
  ### Patch Changes
@@ -2,4 +2,4 @@
2
2
  `+t.split(`
3
3
  `)?.slice(1)?.join(`
4
4
  `):``}function He(e,t,n,r=`any`){let i=t,a=A(n),o=[],s=j(e);if(Array.isArray(i))for(let t of i){let n=A(t);s.molecules.get(n)?e.moleculeGraph.set(n,a,{source:n}):o.push(n)}else{let t=A(i);s.molecules.get(t)?e.moleculeGraph.set(t,a,{source:t}):o.push(t)}let c=new N;o.length===0&&s.molecules.set(a,{key:n,stringKey:a,dependsOn:r,subject:c});let l={type:`molecule_creation`,key:n,provenance:i,timestamp:Date.now()};L(s)&&s.transactionMeta.phase===`building`?s.transactionMeta.update.subEvents.push(l):s.on.moleculeCreation.next(l);for(let t of o){let r=e.disposalTraces.buffer.find(e=>e?.key===t);e.logger.error(`❌`,`key`,n,`allocation failed:`,`Could not allocate to ${t} in store "${e.config.name}".`,r?`\n ${t} was most recently disposed\n${r.trace}`:`No previous disposal trace for ${t} was found.`)}return n}function Ue(e,t){let n=A(t),r=e.molecules.get(n);if(!r){let r=e.disposalTraces.buffer.find(e=>e?.key===n);e.logger.error(`❌`,`key`,t,`deallocation failed:`,`Could not find allocation for ${n} in store "${e.config.name}".`,r?`\n This state was most recently deallocated\n${r.trace}`:`No previous disposal trace for ${n} was found.`);return}r.subject.next();let i=e.keyRefsInJoins.getRelatedKeys(n);if(i)for(let n of i){let r=e.joins.get(n);r&&r.relations.delete(t)}else{let n=jn(t);if(n){let[,t,r]=n,i=e.keyRefsInJoins.getRelatedKey(An(t,r));if(i){let n=e.joins.get(i);n&&n.relations.delete(t,r)}}}e.keyRefsInJoins.delete(n);let a=[],o=[],s=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:n});if(s)for(let[t,{source:r}]of s)r===n?Ue(e,k(t)):a.push(r);let c=e.moleculeData.getRelatedKeys(r.stringKey);if(c)for(let n of c){let r=e.families.get(n),i=H(e,r,t);o.push([r.key,i]),kt(e,r,t)}let l={type:`molecule_disposal`,key:r.key,values:o,provenance:a,timestamp:Date.now()};e.molecules.delete(n);let u=L(e)&&e.transactionMeta.phase===`building`;u&&e.transactionMeta.update.subEvents.push(l),e.moleculeGraph.delete(r.stringKey),e.keyRefsInJoins.delete(r.stringKey),e.moleculeData.delete(r.stringKey),u||e.on.moleculeDisposal.next(l),e.molecules.delete(r.stringKey);let d=Ve(Error());e.disposalTraces.add({key:n,trace:d})}function We(e,t,n,r){let i=A(n),a=j(e),o=a.molecules.get(i);if(!o){let t=e.disposalTraces.buffer.find(e=>e?.key===i);return e.logger.error(`❌`,`key`,i,`claim failed:`,`Could not allocate to ${i} in store "${e.config.name}".`,t?`\n ${i} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${i} was found.`),n}let s=A(t),c=a.molecules.get(s);if(!c){let t=e.disposalTraces.buffer.find(e=>e?.key===s);return e.logger.error(`❌`,`key`,n,`claim failed:`,`Could not allocate to ${s} in store "${e.config.name}".`,t?`\n ${s} was most recently disposed\n${t.trace}`:`No previous disposal trace for ${s} was found.`),n}let l=e.moleculeGraph.getRelationEntries({downstreamMoleculeKey:o.stringKey}).filter(([,{source:e}])=>e!==i).map(([e])=>k(e));r&&a.moleculeGraph.delete(i),a.moleculeGraph.set({upstreamMoleculeKey:c.stringKey,downstreamMoleculeKey:o.stringKey},{source:c.stringKey});let u={type:`molecule_transfer`,key:o.key,exclusive:!!r,from:l,to:[c.key],timestamp:Date.now()};return L(a)&&a.transactionMeta.phase===`building`&&a.transactionMeta.update.subEvents.push(u),n}function Ge(e,t,n){switch(n){case`newValue`:qe(e,t);break;case`oldValue`:kt(e,t.token);break}}function Ke(e,t,n){switch(n){case`newValue`:kt(e,t.token);break;case`oldValue`:qe(e,t),t.subType===`atom`&&e.valueMap.set(t.token.key,t.value);break}}function qe(e,t){let{token:n}=t;t.subType===`writable`&&t.value?W(e,n,t.value):H(e,n)}function Je(e,t,n){switch(n){case`newValue`:He(e,t.provenance,t.key);break;case`oldValue`:Ue(e,t.key);break}}function Ye(e,t,n){switch(n){case`newValue`:Ue(e,t.key);break;case`oldValue`:He(e,t.provenance.map(k),t.key);for(let[n,r]of t.values){let i=e.families.get(n);if(i){H(e,i,t.key);let a=`${n}(${A(t.key)})`;e.valueMap.set(a,r)}}break}}function Xe(e,t,n){switch(n){case`newValue`:for(let n of t.to)We(e,n,t.key,t.exclusive?`exclusive`:void 0);break;case`oldValue`:{let n=`exclusive`;for(let r of t.from)We(e,r,t.key,n),n=void 0}break}}function Ze(e,t,n){let r=n===`newValue`?t.subEvents:[...t.subEvents].reverse();for(let t of r)switch(t.type){case`atom_update`:Be(e,t,n);break;case`state_creation`:Ge(e,t,n);break;case`state_disposal`:Ke(e,t,n);break;case`molecule_creation`:Je(e,t,n);break;case`molecule_disposal`:Ye(e,t,n);break;case`molecule_transfer`:Xe(e,t,n);break;case`transaction_outcome`:Ze(e,t,n);break}}function Qe(e){return`epoch`in e.transactionMeta}function L(e){return`phase`in e.transactionMeta}function $e(e,t){return e.transactionMeta.actionContinuities.getRelatedKey(t)}function et(e,t){return e.transactionMeta.epoch.get(t)}function tt(e,t){let n=$e(e,t);if(n!==void 0)return et(e,n)}function nt(e,t,n){let r=$e(e,t);r!==void 0&&e.transactionMeta.epoch.set(r,n)}function rt(e,t){let n=j(e),{parent:r}=n;n.transactionMeta.phase=`applying`,n.transactionMeta.update.output=t,r.child=null,r.on.transactionApplying.next(n.transactionMeta);let{subEvents:i}=n.transactionMeta.update;e.logger.info(`🛄`,`transaction`,n.transactionMeta.update.token.key,`applying ${i.length} subEvents:`,i),Ze(r,n.transactionMeta.update,`newValue`),Qe(r)?(nt(r,n.transactionMeta.update.token.key,n.transactionMeta.update.epoch),B(e,{key:n.transactionMeta.update.token.key,type:`transaction`})?.subject.next(n.transactionMeta.update),e.logger.info(`🛬`,`transaction`,n.transactionMeta.update.token.key,`applied`)):L(r)&&r.transactionMeta.update.subEvents.push(n.transactionMeta.update),r.on.transactionApplying.next(null)}function it(e){return{store:e}}function R(e){return e[0].toUpperCase()+e.slice(1)}function at(e,t){let n=e.joins.get(t.key);if(n===void 0){let r=z.STORE.joins.get(t.key);if(r===void 0)throw Error(`Join "${t.key}" not found in store "${e.config.name}"`);n=new lt(ke(e),r.options),e.joins.set(t.key,n)}return n}function ot(e,t,n){let r=at(e,t),i=j(e);if(L(i)){let{toolkit:e}=i.transactionMeta;r.transact(e,({relations:e})=>{n(e)})}else n(r.relations)}function st(e,t,n){let r=at(e,t),i;switch(t.cardinality){case`1:1`:{let a=`${t.a}KeyOf${R(t.b)}`,o=`${t.b}KeyOf${R(t.a)}`;i={get[a](){let t=r.states[a];return U(e,t,n)},get[o](){let t=r.states[o];return U(e,t,n)}};break}case`1:n`:{let a=`${t.a}KeyOf${R(t.b)}`,o=`${t.b}KeysOf${R(t.a)}`;i={get[a](){let t=r.states[a];return U(e,t,n)},get[o](){let t=r.states[o];return U(e,t,n)}};break}case`n:n`:{let a=`${t.a}KeysOf${R(t.b)}`,o=`${t.b}KeysOf${R(t.a)}`;i={get[a](){let t=r.states[a];return U(e,t,n)},get[o](){let t=r.states[o];return U(e,t,n)}}}}return i}function ct(e,t,n){let r=at(e,t);return n===`split`?[r.relatedKeysAtoms,r.relatedKeysAtoms]:r.relatedKeysAtoms}var lt=class{toolkit;options;relations;states;relatedKeysAtoms;transact(e,t){let n=this.toolkit;this.toolkit=e,t(this),this.toolkit=n}store;[Symbol.dispose](){}constructor(e,t){this.store=e,this.options=t,this.store.miscResources.set(`join:${t.key}`,this),this.toolkit={get:((...t)=>H(e,...t)),set:((...t)=>{W(e,...t)}),find:((...t)=>U(e,...t)),json:t=>K(e,t),relations:{edit:((...t)=>{ot(e,...t)}),find:((...t)=>st(e,...t)),internal:((...t)=>ct(e,...t))}};let n=t.between[0],r=t.between[1],i=pn(e,{key:`${t.key}/relatedKeys`,class:De},[`join`,`relations`]);this.relatedKeysAtoms=i;let a=(t,n,r)=>{let{find:a,get:o,set:s}=t,c=a(i,n),l=o(c);for(let e of l)r.includes(e)||s(i,e,e=>(e.delete(n),e));s(c,t=>{t.clear();for(let c of r){let r=a(i,c),l=o(r),u=l.has(n);if(this.relations.cardinality===`1:n`){let t=[];for(let e of l){if(e===n)continue;let r;Gt(Wt,this.store,i,e,e=>(e.delete(c),r=e.size,e)),r===0&&t.push(e)}!u&&l.size>0&&s(r,e=>(e.clear(),e));for(let n of t)e.keyRefsInJoins.delete(An(c,n))}u||s(r,e=>(e.add(n),e)),t.add(c)}return t})},o=(e,t,n)=>{let{set:r}=e;r(i,t,e=>{for(let t of n)e.add(t);return e});for(let e of n)r(i,e,e=>(e.add(t),e));return!0},s=new I(t,{externalStore:{getRelatedKeys:e=>this.toolkit.get(i,e),addRelation:(e,n)=>{this.store.keyRefsInJoins.set(`"${e}"`,t.key),this.store.keyRefsInJoins.set(`"${n}"`,t.key),this.store.keyRefsInJoins.set(An(e,n),t.key),this.toolkit.set(i,e,e=>e.add(n)),this.toolkit.set(i,n,t=>t.add(e))},deleteRelation:(e,t)=>{this.toolkit.set(i,e,e=>(e.delete(t),e)),this.toolkit.set(i,t,t=>(t.delete(e),t));let n=An(e,t);this.store.keyRefsInJoins.delete(n)},replaceRelationsSafely:(e,t)=>{a(this.toolkit,e,t)},replaceRelationsUnsafely:(e,t)=>{o(this.toolkit,e,t)},has:(e,t)=>{let n=this.toolkit.get(i,e);return t?n.has(t):n.size>0}},isAType:t.isAType,isBType:t.isBType}),c=()=>Ct(e,{key:`${t.key}/singleRelatedKey`,get:e=>({get:t})=>{let n=t(i,e);for(let e of n)return e;return null}},[`join`,`keys`]),l=()=>Ct(e,{key:`${t.key}/multipleRelatedKeys`,get:t=>({get:n})=>n(mn(i,e),t)},[`join`,`keys`]);switch(t.cardinality){case`1:1`:{let e=c(),t=`${n}KeyOf${R(r)}`,i=`${r}KeyOf${R(n)}`;this.relations=s,this.states={[t]:e,[i]:e};break}case`1:n`:{let e=c(),t=l(),i=`${n}KeyOf${R(r)}`,a=`${r}KeysOf${R(n)}`,o={[i]:e,[a]:t};this.relations=s,this.states=o;break}case`n:n`:{let e=l(),t=`${n}KeysOf${R(r)}`,i=`${r}KeysOf${R(n)}`;this.relations=s,this.states={[t]:e,[i]:e}}}}};function ut(e,t,n,r){let i=j(e),a={parent:i,child:null,on:i.on,loggers:i.loggers,logger:i.logger,config:i.config,atoms:new F(i.atoms),atomsThatAreDefault:new Set(i.atomsThatAreDefault),families:new F(i.families),joins:new F(i.joins),operation:{open:!1},readonlySelectors:new F(i.readonlySelectors),timelines:new F(i.timelines),timelineTopics:i.timelineTopics.overlay(),trackers:new Map,transactions:new F(i.transactions),selectorAtoms:i.selectorAtoms.overlay(),selectorGraph:i.selectorGraph.overlay(),writableSelectors:new F(i.writableSelectors),valueMap:new F(i.valueMap),defaults:i.defaults,disposalTraces:e.disposalTraces.copy(),molecules:new F(i.molecules),moleculeGraph:i.moleculeGraph.overlay(),moleculeData:i.moleculeData.overlay(),keyRefsInJoins:i.keyRefsInJoins.overlay(),miscResources:new F(i.miscResources)},o=tt(e,t.key),s={phase:`building`,update:{type:`transaction_outcome`,token:t,id:r,epoch:o===void 0?NaN:o+1,timestamp:Date.now(),subEvents:[],params:n,output:void 0},toolkit:{get:((...e)=>H(c,...e)),set:((...e)=>{W(c,...e)}),reset:((...e)=>{Bt(c,...e)}),run:(e,t=Oe())=>ze(c,e,t),find:((...t)=>U(e,...t)),json:e=>K(c,e),dispose:((...e)=>{kt(c,...e)}),env:()=>it(c),relations:{edit:((...e)=>{ot(c,...e)}),find:((...e)=>st(c,...e)),internal:((...e)=>ct(c,...e))}}},c=Object.assign(a,{transactionMeta:s});return i.child=c,e.logger.info(`🛫`,`transaction`,t.key,`building with params:`,n),c}function dt(e,t){let{key:n}=t,r=e.transactions.has(n),i={key:n,type:`transaction`,run:(r,a)=>{let o=ut(e,P(i),r,a);try{let{toolkit:e}=o.transactionMeta,n=t.do(e,...r);return rt(o,n),n}catch(t){throw Re(o),e.logger.warn(`💥`,`transaction`,n,`caught:`,t),t}},install:e=>dt(e,t),subject:new N};j(e).transactions.set(n,i);let a=P(i);return r||e.on.transactionCreation.next(a),a}var ft=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 I({between:[`selectorKey`,`atomKey`],cardinality:`n:n`});selectorGraph=new I({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 I({between:[`continuity`,`action`],cardinality:`1:n`})};timelines=new Map;timelineTopics=new I({between:[`timelineKey`,`topicKey`],cardinality:`1:n`});disposalTraces=new Pe(100);molecules=new Map;moleculeGraph=new I({between:[`upstreamMoleculeKey`,`downstreamMoleculeKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});moleculeData=new I({between:[`moleculeKey`,`stateFamilyKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});keyRefsInJoins=new I({between:[`moleculeKey`,`joinKey`],cardinality:`n:n`},{makeContentKey:(...e)=>e.sort().join(`:`)});miscResources=new Map;on={atomCreation:new N,atomDisposal:new N,selectorCreation:new N,selectorDisposal:new N,timelineCreation:new N,transactionCreation:new N,transactionApplying:new Ne(null),operationClose:new N,moleculeCreation:new N,moleculeDisposal:new N};operation={open:!1};config={name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0};loggers=[new kn(`warn`,(e,t,n)=>!Le(n))];logger={error:(...e)=>{for(let t of this.loggers)t.error(...e)},info:(...e)=>{for(let t of this.loggers)t.info(...e)},warn:(...e)=>{for(let t of this.loggers)t.warn(...e)}};constructor(e,t=null){if(this.config={...t?.config,...e},t!==null){this.operation={...t?.operation},Qe(t)&&(this.transactionMeta={epoch:new Map(t?.transactionMeta.epoch),actionContinuities:new I(t?.transactionMeta.actionContinuities.toJSON())});for(let[,e]of t.families)e.internalRoles?.includes(`mutable`)||e.internalRoles?.includes(`join`)||e.install(this);let e=new Set;for(let[,n]of t.atoms)if(!e.has(n.key)&&(n.install(this),n.type===`mutable_atom`)){let r=K(t,n),i=hn(n);e.add(r.key),e.add(i.key)}for(let[,e]of t.readonlySelectors)e.install(this);for(let[,n]of t.writableSelectors)e.has(n.key)||n.install(this);for(let[,e]of t.transactions)e.install(this);for(let[,e]of t.timelines)e.install(this)}}},z={get STORE(){return globalThis.ATOM_IO_IMPLICIT_STORE??=new ft({name:`IMPLICIT_STORE`,lifespan:`ephemeral`,isProduction:!0}),globalThis.ATOM_IO_IMPLICIT_STORE}},pt=class extends Error{constructor(e,t){super(`${J[e.type]} ${A(e.key)} not found in store "${t.config.name}".`)}};function B(e,t){let n,r=e;for(;r!==null;){switch(t.type){case`atom`:case`mutable_atom`:n=r.atoms.get(t.key);break;case`writable_pure_selector`:case`writable_held_selector`:n=r.writableSelectors.get(t.key);break;case`readonly_pure_selector`:case`readonly_held_selector`:n=r.readonlySelectors.get(t.key);break;case`atom_family`:case`mutable_atom_family`:case`writable_pure_selector_family`:case`readonly_pure_selector_family`:case`writable_held_selector_family`:case`readonly_held_selector_family`:n=r.families.get(t.key);break;case`timeline`:n=r.timelines.get(t.key);break;case`transaction`:n=r.transactions.get(t.key);break}if(n)return n;r=r.child}throw new pt(t,e)}function mt(e,t,n,r){let i=e.disposalTraces.buffer.find(e=>e?.key===A(r));switch(e.logger.error(`❌`,t.type,t.key,`gets a fallback value because key`,r,`is not allocated`,i?`This key was previously disposed:\n${i.trace}`:`(no previous disposal trace found)`),n.type){case`mutable_atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=new n.class;return e.defaults.set(n.key,t),t.READONLY_VIEW}case`atom_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default,i=t(r);return e.defaults.set(n.key,i),i}case`readonly_pure_selector_family`:case`writable_pure_selector_family`:case`readonly_held_selector_family`:case`writable_held_selector_family`:{if(e.defaults.has(n.key))return e.defaults.get(n.key);let t=n.default(r);return e.defaults.set(n.key,t),t}}}function ht(e,t){let{type:n,key:r,catch:i}=t;switch(n){case`readonly_pure_selector`:case`writable_pure_selector`:{let a;e.logger.info(`🧮`,n,r,`computing value`);try{a=t.getFrom(e),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(a){if(e.logger.error(`💥`,n,r,`rejected:`,a),i){for(let n of i)if(a instanceof n)return q(e,t,a)}throw a}return q(e,t,a)}case`atom`:{let a;if(M(t.default))try{a=t.default(),a instanceof Promise&&(a=a.catch(t=>{if(e.logger.error(`💥`,n,r,`rejected:`,t),i){for(let e of i)if(t instanceof e)return t}throw t}))}catch(o){if(e.logger.error(`💥`,n,r,`rejected:`,o),i){for(let n of i)if(o instanceof n)return a=q(e,t,o),e.logger.info(`✨`,t.type,r,`computed default`,a),a}throw o}else a=t.default,e.logger.info(`✨`,t.type,r,`using static default`,a);return q(e,t,a)}}}function V(e,t,n){if(e.valueMap.has(t.key))return _n(e,t,n);e.logger.info(`❔`,t.type,t.key,`value not found in cache`);let{key:r}=t;switch(t.type){case`readonly_held_selector`:case`writable_held_selector`:return e.logger.info(`🧮`,t.type,r,`computing value`),t.getFrom(e);case`writable_pure_selector`:case`readonly_pure_selector`:case`atom`:return ht(e,t);case`mutable_atom`:{let n=new t.class;return e.logger.info(`✨`,t.type,r,`created new instance`,n),q(e,t,n)}}}function gt(e,t){return B(e,{key:t.family.key,type:`${t.type}_family`})}var _t={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`},vt=Symbol(`MUST_CREATE`),yt=Symbol(`DO_NOT_CREATE`);function bt(e,t,n,r){let i=A(r),a=t.molecules.get(i);if(!a&&t.config.lifespan===`immortal`){let{type:e,key:r}=n;return t.logger.warn(`💣`,`key`,i,`was used to mint a counterfeit token for`,e,`"${r}"`),{counterfeit:!0,key:`${r}(${i})`,type:_t[e],family:{key:r,subKey:i}}}let o;if(e===vt)t.logger.info(`👪`,n.type,n.key,`adds member`,typeof r==`string`?`\`${r}\``:r),o=n.create(r),a&&t.moleculeData.set(i,n.key);else{let{type:e,key:t}=n;return{key:`${t}(${i})`,type:_t[e],family:{key:t,subKey:i}}}return o}function xt(e,...t){let n,r,i,a,o;if(t.length===1){if(o=t[0],`family`in o){let t=gt(e,o);if(i=B(e,t),a=k(o.family.subKey),n=St(e,t,a),`counterfeit`in o)return{token:o,family:i,subKey:a,isNew:!1};n?o=n:(r=bt(vt,e,t,a),o=r)}}else i=B(e,t[0]),a=t[1],n=St(e,i,a),n?o=n:(r=bt(vt,e,i,a),o=r);let s=`counterfeit`in o;if(r&&s===!1&&i){let t;switch(o.type){case`readonly_pure_selector`:case`readonly_held_selector`:t=`readable`;break;case`atom`:case`mutable_atom`:case`writable_pure_selector`:case`writable_held_selector`:t=`writable`;break}let n={type:`state_creation`,subType:t,token:o,timestamp:Date.now()};i.subject.next(n);let r=j(e);if(o.family)if(Qe(r))switch(o.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(o);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:e.on.selectorCreation.next(o);break}else L(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n)}return{token:o,family:i,subKey:a,isNew:!!r}}function H(e,...t){let{token:n,family:r,subKey:i}=xt(e,...t);return`counterfeit`in n&&r&&i?mt(e,n,r,i):V(e,B(e,n))}function St(e,t,n){let r=A(n),i=`${t.key}(${r})`,a=j(e),o;switch(t.type){case`atom_family`:case`mutable_atom_family`:o=a.atoms.get(i);break;case`writable_held_selector_family`:case`writable_pure_selector_family`:o=a.writableSelectors.get(i);break;case`readonly_held_selector_family`:case`readonly_pure_selector_family`:o=a.readonlySelectors.get(i);break}return o&&P(o)}function U(e,t,n){let r=B(e,t);return St(e,t,n)||bt(yt,e,r,n)}function Ct(e,t,n){let r=t.key,i=`readonly_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${J[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new N,c=n=>{let i=A(n),a={key:r,subKey:i},o=`${r}(${i})`,s=j(e),c={key:o,get:t.get(n)};return t.catch&&(c.catch=t.catch),tn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>Ct(e,t),default:n=>t.get(n)({get:H.bind(null,e),find:U.bind(null,e),json:t=>K(e,t),relations:{find:st.bind(null,e),internal:ct.bind(null,e)}})};return e.families.set(r,l),a}function wt(e,t,n){let r={key:t.key,type:`atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`atom_family`,t.key,`Overwriting an existing ${J[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new N,o=n=>{let r=A(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=j(e),s=t.default,c={key:a,default:M(s)?()=>s(n):s};return t.effects&&(c.effects=t.effects(n)),t.catch&&(c.catch=t.catch),xn(o,c,i)},s={...r,create:o,default:t.default,subject:a,install:e=>wt(e,t),internalRoles:n};return e.families.set(t.key,s),M(t.default)===!1&&e.defaults.set(t.key,t.default),r}function Tt(e,t,n){let r=t.key,i=`readonly_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${J[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new N,c=n=>{let i=A(n),a={key:r,subKey:i},o=`${r}(${i})`;return en(j(e),{key:o,const:t.const(n),get:t.get(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>Tt(e,t),default:t.const};return e.families.set(r,l),a}function Et(e,t,n){let r=t.key,i=`writable_held_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${J[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new N,c=n=>{let i=A(n),a={key:r,subKey:i},o=`${r}(${i})`;return nn(j(e),{key:o,const:t.const(n),get:t.get(n),set:t.set(n)},a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>Et(e,t),default:t.const};return e.families.set(r,l),a}function Dt(e,t,n){let r=t.key,i=`writable_pure_selector_family`,a={key:r,type:i},o=e.families.get(r);o&&e.config.isProduction===!0&&e.logger.error(`❗`,i,r,`Overwriting an existing ${J[o.type]} "${o.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let s=new N,c=n=>{let i=A(n),a={key:r,subKey:i},o=`${r}(${i})`,s=j(e),c={key:o,get:t.get(n),set:t.set(n)};return t.catch&&(c.catch=t.catch),rn(s,c,a)},l={...a,create:c,internalRoles:n,subject:s,install:e=>Dt(e,t),default:n=>t.get(n)({get:((...t)=>H(e,...t)),find:((...t)=>U(e,...t)),json:t=>K(e,t),relations:{find:((...t)=>st(e,...t)),internal:((...t)=>ct(e,...t))}})};return e.families.set(r,l),a}function Ot(e,t){let n=`set`in t,r=`const`in t;return r&&n?Et(e,t,void 0):r?Tt(e,t,void 0):n?Dt(e,t):Ct(e,t)}function kt(e,...t){let n;if(t.length===1)n=t[0];else{let r=t[0],i=t[1];n=U(e,r,i)}try{B(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`:Cn(e,n);break;case`writable_pure_selector`:case`readonly_pure_selector`:case`writable_held_selector`:case`readonly_held_selector`:on(e,n);break}}function At(e,t){if(e.operation.open){let n=performance.now();return e.logger.info(`🚫`,t.type,t.key,`deferring setState at T-${n} until setState for "${e.operation.token.key}" is done`),n}return e.operation={open:!0,done:new Set,prev:new Map,timestamp:Date.now(),token:t,subEvents:[]},e.logger.info(`⭕`,t.type,t.key,`operation start in store "${e.config.name}"${L(e)?` ${e.transactionMeta.phase} "${e.transactionMeta.update.token.key}"`:``}`),e}function jt(e){e.operation.open&&e.logger.info(`🔴`,e.operation.token.type,e.operation.token.key,`operation done in store "${e.config.name}"`),e.operation={open:!1},e.on.operationClose.next(e.operation)}function Mt(e,t){return e.operation.open?e.operation.done.has(t):(e.logger.error(`🐞`,`unknown`,t,`isDone called outside of an operation. This is probably a bug in AtomIO.`),!0)}function Nt(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 Pt(e,t,n,r,i){let{oldValue:a,newValue:o}=n,s=`oldValue`in n,c=P(t);if(r&&i){t.subject.next({newValue:o});let n={checkpoint:!0,type:`state_creation`,subType:`writable`,token:c,timestamp:Date.now(),value:o};e.operation.subEvents.push(n),i.subject.next(n);let r=j(e);if(c.family)if(Qe(r))switch(c.type){case`atom`:case`mutable_atom`:e.on.atomCreation.next(c);break;case`writable_pure_selector`:case`writable_held_selector`:e.on.selectorCreation.next(c);break}else L(r)&&r.on.transactionApplying.state===null&&r.transactionMeta.update.subEvents.push(n);return}let{key:l,subject:u,type:d}=t,f;if(f=s?{oldValue:gn(a)?a.READONLY_VIEW:a,newValue:gn(o)?o.READONLY_VIEW:o}:{newValue:gn(o)?o.READONLY_VIEW:o},Qe(e)){switch(d){case`mutable_atom`:e.logger.info(`📢`,d,l,`is now (`,o,`) subscribers:`,u.subscribers.keys());break;case`atom`:case`writable_pure_selector`:case`writable_held_selector`:e.logger.info(`📢`,d,l,`went (`,a,`->`,o,`) subscribers:`,u.subscribers.keys())}u.next(f)}if(L(e)&&(d===`mutable_atom`||d===`atom`)){if(e.on.transactionApplying.state===null){if(gn(o))return;let{timestamp:t}=e.operation,n={type:`atom_update`,token:c,timestamp:t,update:f};e.transactionMeta.update.subEvents.push(n),e.logger.info(`📁`,`atom`,l,`stowed (`,a,`->`,o,`)`);return}if(Sn(t,`tracker:signal`)){let t=l.slice(1),n=e.atoms.get(t);V(e,n,`mut`).do(f.newValue)===null&&yn(e,n)}}}var Ft=Symbol(`UNSET`);function It(e,t,n){let r,i;if(M(n)){let a=V(e,t,`mut`);r=a,i=n(a)}else r=e.valueMap.has(t.key)?_n(e,t,`mut`):t.type===`atom`&&!M(t.default)?t.default:Ft,i=n;return e.logger.info(`⭐`,`atom`,t.key,`setting value`,i),i=q(e,t,i),Nt(e,t.key),yn(e,t),r===Ft?{newValue:i}:{oldValue:r,newValue:i}}function Lt(e,t){switch(t.type){case`mutable_atom`:return It(e,t,new t.class);case`atom`:{let n;return n=M(t.default)?ht(e,t):t.default,It(e,t,n)}}}function Rt(e,t){let n;switch(t.type){case`atom`:case`mutable_atom`:n=Lt(e,t);break;case`writable_held_selector`:{let r=Zt(e,t.key);for(let n of r.values())Pt(e,t,Lt(e,n),!1);let i=t.getFrom(e);n={oldValue:i,newValue:i}}break;case`writable_pure_selector`:{let r=ht(e,t),i=Zt(e,t.key);for(let n of i.values())Pt(e,t,Lt(e,n),!1);n={oldValue:r,newValue:ht(e,t)}}break}return n}function W(e,...t){Gt(Ut,e,...t)}var zt=Symbol(`RESET`);function Bt(e,...t){W(e,...t,zt)}function Vt(e,t,n){let r,i,a,{type:o,key:s}=t;switch(t.type){case`writable_pure_selector`:r=V(e,t,`mut`),i=je(n,r),i=q(e,t,i);break;case`writable_held_selector`:a=t.const,je(n,a),r=a,i=a}return e.logger.info(`⭐`,o,s,`setting to`,i),Nt(e,s),t.setSelf(i),{oldValue:r,newValue:i}}function Ht(e,t,n){let r;switch(t.type){case`atom`:case`mutable_atom`:r=It(e,t,n);break;case`writable_pure_selector`:case`writable_held_selector`:r=Vt(e,t,n);break}return r}var Ut=Symbol(`OWN_OP`),Wt=Symbol(`JOIN_OP`);function Gt(e,t,...n){let r,i,a,o,s,c;n.length===2?(a=n[0],c=n[1],`family`in a&&(o=gt(t,a),s=k(a.family.subKey),r=St(t,o,s),a=r||(i=bt(vt,t,o,s)))):(o=B(t,n[0]),s=n[1],c=n[2],r=St(t,o,s),a=r||(i=bt(vt,t,o,s)));let l=c===zt?`reset`:`set`,u;if(e===Ut){let n=At(t,a);if(typeof n==`number`){let r=n,i=t.on.operationClose.subscribe(`waiting to ${l} "${a.key}" at T-${r}`,function(){i(),t.logger.info(`🟢`,a.type,a.key,`resuming deferred`,l,`from T-${r}`),Gt(e,t,a,c)});return}u=n}else u=t;if(`counterfeit`in a&&`family`in a){let e=a.family.subKey,n=t.disposalTraces.buffer.find(t=>t?.key===e);t.logger.error(`❌`,a.type,a.key,`could not be`,l,`because key`,e,`is not allocated.`,n?`this key was previously disposed:${n.trace}`:`(no previous disposal trace found)`);return}let d=B(u,a),f;f=c===zt?Rt(u,d):Ht(u,d,c),Pt(u,d,f,!!i,o),e===Ut&&jt(u)}var Kt=(e,t)=>j(e).atoms.has(t),qt=(e,t)=>j(e).writableSelectors.has(t),Jt=(e,t)=>j(e).readonlySelectors.has(t),Yt=(e,t)=>Kt(e,t)||qt(e,t)||Jt(e,t);function Xt(e,t){return j(e).selectorGraph.getRelationEntries({downstreamSelectorKey:t}).filter(([e,{source:n}])=>n!==t).map(([e,{source:t}])=>t).filter(t=>Yt(e,t))}function Zt(e,t,n=new Set){let r=Xt(e,t),i=new Map;for(;r.length>0;){let t=r.pop();if(!n.has(t))if(n.add(t),Kt(e,t)){let n=e.atoms.get(t);i.set(n.key,n)}else r.push(...Xt(e,t))}return i}function Qt(e,t,n,r,i){let a=j(e),{type:o,key:s}=r;if(o===`atom`||o===`mutable_atom`)a.selectorAtoms.set({selectorKey:n,atomKey:s}),e.logger.info(`🔍`,t,n,`discovers root atom "${s}"`);else{let r=Zt(e,s,i);e.logger.info(`🔍`,t,n,`discovers root atoms: [ ${[...r.values()].map(e=>`"${e.key}"`).join(`, `)} ]`);for(let{key:e}of r.values())a.selectorAtoms=a.selectorAtoms.set({selectorKey:n,atomKey:e})}i.add(s)}function $t(e,t,n,r){return{get:(...i)=>{let a=j(e),{token:o,family:s,subKey:c}=xt(e,...i),l;return l=`counterfeit`in o&&s&&c?mt(e,o,s,c):V(e,B(e,o)),e.logger.info(`🔌`,t,n,`registers dependency ( "${o.key}" =`,l,`)`),a.selectorGraph.set({upstreamSelectorKey:o.key,downstreamSelectorKey:n},{source:o.key}),Qt(e,t,n,o,r),l},set:((...t)=>{Gt(Wt,j(e),...t)}),find:((...t)=>U(e,...t)),json:t=>K(e,t),relations:{edit:((...t)=>{ot(e,...t)}),find:((...t)=>st(e,...t)),internal:((...t)=>ct(e,...t))}}}function en(e,t,n){let r=j(e),i=new N,a=new Set,{key:o,const:s}=t,c=`readonly_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let{get:l,find:u,json:d,relations:f}=$t(r,c,o,a),p=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get({get:l,find:u,json:d,relations:f},s),q(n,m,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},m={...t,type:c,subject:i,getFrom:p,install:e=>en(e,t,n)};n&&(m.family=n),r.readonlySelectors.set(o,m);let h={key:o,type:c};return n&&(h.family=n),h}function tn(e,t,n){let r=j(e),i=new N,a=new Set,o=t.key,s=`readonly_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let{get:c,find:l,json:u,relations:d}=$t(r,s,o,a),f=()=>{let n=j(e),r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get({get:c,find:l,json:u,relations:d});return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},p={...t,type:s,subject:i,getFrom:f,install:e=>tn(e,t,n)};n&&(p.family=n),r.readonlySelectors.set(o,p);let m={key:o,type:s};return n&&(m.family=n),m}function nn(e,t,n){let r=j(e),i=new N,a=new Set,{key:o,const:s}=t,c=`writable_held_selector`;e.logger.info(`🔨`,c,o,`is being created`);let l=$t(r,c,o,a),{find:u,get:d,json:f,relations:p}=l,m={find:u,get:d,json:f,relations:p},h=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);return n.selectorAtoms.delete(o),t.get(m,s),q(n,_,s),e.logger.info(`✨`,c,o,`=`,s),a.clear(),s},g=()=>{t.set(l,s)},_={...t,type:c,subject:i,getFrom:h,setSelf:g,install:e=>nn(e,t,n)};n&&(_.family=n),r.writableSelectors.set(o,_);let v={key:o,type:c};return n&&(v.family=n),v}function rn(e,t,n){let r=j(e),i=new N,a=new Set,o=t.key,s=`writable_pure_selector`;e.logger.info(`🔨`,s,o,`is being created`);let c=$t(r,s,o,a),{find:l,get:u,json:d,relations:f}=c,p={find:l,get:u,json:d,relations:f},m=n=>{let r=n.selectorGraph.getRelationEntries({downstreamSelectorKey:o});for(let[e,{source:t}]of r)t!==o&&n.selectorGraph.delete(e,o);n.selectorAtoms.delete(o);let i=t.get(p);return e.logger.info(`✨`,s,o,`=`,i),a.clear(),i},h=e=>{t.set(c,e)},g={...t,type:s,subject:i,getFrom:m,setSelf:h,install:e=>rn(e,t,n)};n&&(g.family=n),r.writableSelectors.set(o,g);let _={key:o,type:s};return n&&(_.family=n),_}function an(e,t){let n=`set`in t,r=`const`in t;if(r&&n){let n=nn(e,t,void 0);return e.on.selectorCreation.next(n),n}if(r){let n=en(e,t,void 0);return e.on.selectorCreation.next(n),n}if(n){let n=rn(e,t,void 0);return e.on.selectorCreation.next(n),n}let i=tn(e,t,void 0);return e.on.selectorCreation.next(i),i}function on(e,t){let n=j(e),{key:r,type:i,family:a}=t;if(!a)e.logger.error(`❌`,i,r,`Standalone selectors cannot be disposed.`);else{n.molecules.get(a.subKey)&&n.moleculeData.delete(a.subKey,a.key);let i;switch(t.type){case`writable_held_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_held_selector_family`},B(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`writable_pure_selector`:n.writableSelectors.delete(r),i={key:a.key,type:`writable_pure_selector_family`},B(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_held_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_held_selector_family`},B(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break;case`readonly_pure_selector`:n.readonlySelectors.delete(r),i={key:a.key,type:`readonly_pure_selector_family`},B(e,i).subject.next({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()});break}n.valueMap.delete(r),n.selectorAtoms.delete(r),n.selectorGraph.delete(r),n.moleculeData.delete(a.key,a.subKey),e.logger.info(`🔥`,t.type,r,`deleted`),L(n)&&n.transactionMeta.phase===`building`?n.transactionMeta.update.subEvents.push({type:`state_disposal`,subType:`selector`,token:t,timestamp:Date.now()}):e.on.selectorDisposal.next(t)}}function sn(e,t){let n=j(e);return n.operation.open?n.operation.prev.get(t.key):n.valueMap.get(t.key)}function cn(e,t,n){return n.subject.subscribe(`${t.type}:${t.key}`,r=>{e.logger.info(`📢`,t.type,t.key,`root`,n.key,`went`,r.oldValue,`->`,r.newValue);let i=sn(e,t),a=V(e,t);e.logger.info(`✨`,t.type,t.key,`went`,i,`->`,a),t.subject.next({newValue:a,oldValue:i})})}function G(e,t,n,r){function i(n){e.operation.open&&a?.type===`atom`&&Sn(a,`tracker:signal`)&&`*`+e.operation.token.key===t.key&&`inboundTracker`in r||r(n)}xt(e,t);let a=B(e,t);e.logger.info(`👀`,a.type,a.key,`Adding subscription "${n}"`);let o=a.type===`writable_pure_selector`||a.type===`readonly_pure_selector`,s=new Map,c=i;if(o){V(e,a);for(let[t,n]of Zt(e,a.key))s.set(t,cn(e,a,n));c=function(t){let n=Zt(e,a.key);for(let[e,t]of s)n.get(e)?n.delete(e):(t(),s.delete(e));for(let[t,r]of n)s.set(t,cn(e,a,r));i(t)}}let l=a.subject.subscribe(n,c);return()=>{e.logger.info(`🙈`,a.type,a.key,`Removing subscription "${n}"`),l();for(let e of s.values())e()}}function ln(e,t,n,r){let i=B(e,t);e.logger.info(`👀`,`timeline`,t.key,`Adding subscription "${n}"`);let a=i.subject.subscribe(n,r);return()=>{e.logger.info(`🙈`,`timeline`,t.key,`Removing subscription "${n}" from timeline`),a()}}var un=class{initializeSignalAtom(e,t){let n=`*${e.key}`;t.atoms.delete(n),t.valueMap.delete(n);let r=e.family?{key:`*${e.family.key}`,subKey:e.family.subKey}:void 0,i=xn(t,{key:n,default:null},r,[`tracker:signal`]);if(t.parent?.valueMap.has(n)){let e=t.parent.valueMap.get(n);t.valueMap.set(n,e)}return i}unsubscribeFromInnerValue;unsubscribeFromState;captureSignalsFromCore(e,t,n){let r=e.key,i=`tracker-from-core:${n.config.name}:${L(n)?n.transactionMeta.update.token.key:`main`}:${r}`,a=e=>{Gt(Wt,n,t,e)},o=H(n,e);this.unsubscribeFromInnerValue=o.subscribe(i,a),this.unsubscribeFromState=G(n,e,i,function(e){e.newValue!==e.oldValue&&(this.unsubscribeFromInnerValue(),this.unsubscribeFromInnerValue=e.newValue.subscribe(i,a))}.bind(this))}supplySignalsToCore(e,t,n){let r=e.key,i=`tracker-to-core:${n.config.name}:${L(n)?n.transactionMeta.update.token.key:`main`}:${r}`;G(n,t,i,Object.assign(function({newValue:r,oldValue:a}){let o=n.timelineTopics.getRelatedKey(t.key);if(o&&n.timelines.get(o)?.timeTraveling){let t=ln(n,{key:o,type:`timeline`},i,function(i){t(),W(n,e,e=>(i.event===`redo`&&r?e.do(r):i.event===`undo`&&a&&e.undo(a),e))});return}W(n,e,e=>(e.do(r),e))},{inboundTracker:!0}))}mutableAtomToken;latestSignalToken;[Symbol.dispose];constructor(e,t){let n=j(t),r=this.initializeSignalAtom(e,n);this.mutableAtomToken=e,this.latestSignalToken=r,this.captureSignalsFromCore(e,r,n),this.supplySignalsToCore(e,r,n),n.trackers.set(e.key,this),this[Symbol.dispose]=()=>{this.unsubscribeFromInnerValue(),this.unsubscribeFromState(),n.trackers.delete(e.key)}}};function dn(e,t,n){e.logger.info(`🔨`,`atom`,t.key,`creating in store "${e.config.name}"`);let r=j(e),{key:i}=t,a=r.atoms.get(i),o=`mutable_atom`;if(a?.type===o&&e.config.isProduction===!0)return e.logger.error(`❌`,o,i,`Tried to create atom, but it already exists in the store.`),P(a);let s=new N,c={...t,type:o,install:e=>(e.logger.info(`🛠️`,`atom`,i,`installing in store "${e.config.name}"`),dn(e,t,n)),subject:s};n&&(c.family=n),r.atoms.set(c.key,c);let l=P(c);if(new un(l,e),n||an(e,{key:`${i}:JSON`,get:({get:e})=>e(l).toJSON(),set:({set:e},n)=>{e(l,t.class.fromJSON(n))}}),t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Bt(e,l)},setSelf:t=>{W(e,l,t)},onSet:t=>G(e,l,`effect[${n}]`,t),token:l,store:ke(e)});t&&r.push(t),++n}c.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(l),l}var fn=class{trackers=new Map;latestSignalAtoms;mutableAtoms;constructor(e,t){let n=wt(t,{key:`*${e.key}`,default:null},[`mutable`,`updates`]);this.latestSignalAtoms=B(t,n),this.mutableAtoms=e,this.mutableAtoms.subject.subscribe(`store=${t.config.name}::tracker-atom-family`,e=>{let{type:n,token:r}=e;if(r.family){let e=k(r.family.subKey);switch(n){case`state_creation`:this.trackers.set(e,new un(r,t));break;case`state_disposal`:{let t=this.trackers.get(e);t&&(t[Symbol.dispose](),this.trackers.delete(e))}}}})}};function pn(e,t,n){let r={key:t.key,type:`mutable_atom_family`},i=e.families.get(t.key);i&&e.config.isProduction===!0&&e.logger.error(`❗`,`mutable_atom_family`,t.key,`Overwriting an existing ${J[i.type]} "${i.key}" in store "${e.config.name}". You can safely ignore this warning if it is due to hot module replacement.`);let a=new N,o=n=>{let r=A(n),i={key:t.key,subKey:r},a=`${t.key}(${r})`,o=j(e),s={key:a,class:t.class};return t.effects&&(s.effects=t.effects(n)),dn(o,s,i)},s={...r,create:o,class:t.class,subject:a,install:e=>pn(e,t),internalRoles:n};return e.families.set(t.key,s),Dt(e,{key:`${t.key}:JSON`,get:e=>({get:t})=>t(r,e).toJSON(),set:e=>({set:n},i)=>{n(r,e,t.class.fromJSON(i))}},[`mutable`,`json`]),new fn(s,e),r}function mn(e,t){let n=j(t),r=`${e.key}:JSON`;return n.families.get(r)}var K=(e,t)=>t.family?U(e,B(j(e),{key:`${t.family.key}:JSON`,type:`writable_pure_selector_family`}),k(t.family.subKey)):{type:`writable_pure_selector`,key:`${t.key}:JSON`};function hn(e){let t={type:`atom`,key:`*${e.key}`};return e.family&&(t.family={key:`*${e.family.key}`,subKey:e.family.subKey}),t}function gn(e){return typeof e==`object`&&!!e&&`do`in e&&`undo`in e&&`subscribe`in e&&`READONLY_VIEW`in e&&`toJSON`in e}function q(e,t,n){let{key:r,subject:i,type:a}=t,o=e.valueMap.get(r);if(o instanceof Me&&!o.done){let t=o;return n instanceof Promise?(t.use(n),t):(e.valueMap.set(r,n),n)}if(n instanceof Promise){let o=new Me(n);return e.valueMap.set(r,o),o.then(function(n){if(e.valueMap.get(r)===o){switch(At(e,t),q(e,t,n),a){case`atom`:yn(e,t);break;case`readonly_pure_selector`:case`writable_pure_selector`:bn(e,r);break}jt(e),i.next({newValue:n,oldValue:o})}}).catch(n=>{e.logger.error(`💥`,t.type,r,`rejected:`,n)}),o}return e.logger.info(`📝`,t.type,t.key,`writing to cache`,n),e.valueMap.set(r,n),n}function _n(e,t,n){e.logger.info(`📖`,t.type,t.key,`reading cached value`);let r=e.valueMap.get(t.key);if(n===`mut`&&t.type===`mutable_atom`&&L(e)){let n=t,{parent:i}=e;if(e.valueMap.hasOwn(n.key))return r;let a=i.valueMap.get(n.key);e.logger.info(`📃`,`atom`,n.key,`copying`);let o=a.toJSON(),s=n.class.fromJSON(o);e.valueMap.set(n.key,s),new un(n,i),r=s}return r}function vn(e,t){let n=e.valueMap.get(t);if(n instanceof Me){let r=e.readonlySelectors.get(t),i=e.writableSelectors.get(t),a=ht(e,r??i);n.use(a);return}e.operation.open&&e.operation.prev.set(t,n),e.valueMap.delete(t),e.logger.info(`🗑`,`state`,t,`evicted`)}function yn(e,t){let n=j(e),{key:r,type:i}=t,a=n.selectorAtoms.getRelatedKeys(r);if(n.logger.info(`🧹`,i,r,a?`evicting ${a.size} states downstream:`:`no downstream states`,a??`to evict`),a){n.operation.open&&n.logger.info(`🧹`,i,r,`[ ${[...n.operation.done].join(`, `)} ] already done`);for(let e of a)Mt(n,e)||(vn(n,e),Nt(n,e))}}function bn(e,t){let n=j(e),r=n.selectorGraph.getRelationEntries({upstreamSelectorKey:t}).filter(([e,{source:n}])=>n===t);for(let[t]of r)Mt(n,t)||(vn(n,t),Nt(n,t),bn(e,t))}function xn(e,t,n,r){let i=`atom`,{key:a}=t;e.logger.info(`🔨`,i,a,`is being created`);let o=j(e),s=o.atoms.get(a);if(s?.type===i&&e.config.isProduction===!0)return e.logger.error(`❌`,`atom`,a,`Tried to create atom, but it already exists in the store.`),P(s);let c=new N,l={...t,type:i,install:e=>(e.logger.info(`🛠️`,i,a,`installing in store "${e.config.name}"`),xn(e,t,n)),subject:c};n&&(l.family=n),r&&(l.internalRoles=r),o.atoms.set(a,l);let u=P(l);if(t.effects){let n=0,r=[];for(let i of t.effects){let t=i({resetSelf:()=>{Bt(e,u)},setSelf:t=>{W(e,u,t)},onSet:t=>G(e,u,`effect[${n}]`,t),token:u,store:ke(e)});t&&r.push(t),++n}l.cleanup=()=>{for(let e of r)e instanceof Promise?e.then(e=>e?.()):e()}}return e.on.atomCreation.next(u),u}function Sn(e,t){return`internalRoles`in e?e.internalRoles.includes(t):!1}function Cn(e,t){let n=j(e),{key:r,family:i}=t,a=B(n,t);if(!i)e.logger.error(`❌`,`atom`,r,`Standalone atoms cannot be disposed.`);else{a.cleanup?.();let o=e.valueMap.get(a.key),s=B(e,gt(e,t)).subject,c={type:`state_disposal`,subType:`atom`,token:t,value:o,timestamp:Date.now()};s.next(c);let l=L(n);if(n.atoms.delete(r),n.valueMap.delete(r),n.selectorAtoms.delete(r),n.atomsThatAreDefault.delete(r),n.moleculeData.delete(i.key,i.subKey),e.timelineTopics.delete(r),t.type===`mutable_atom`&&(Cn(e,hn(t)),e.trackers.delete(r)),e.logger.info(`🔥`,`atom`,r,`deleted`),l&&n.transactionMeta.phase===`building`){let e=n.transactionMeta.update.subEvents.at(-1),t=e?.type===`molecule_disposal`&&e.values.some(([e])=>e===a.family?.key),r=Sn(a,`tracker:signal`);!t&&!r&&n.transactionMeta.update.subEvents.push(c)}else e.on.atomDisposal.next(t)}}function wn(e){return xn(z.STORE,e,void 0)}function Tn(e){return wt(z.STORE,e)}function En(...e){return H(z.STORE,...e)}var J={atom_family:`atom family`,atom:`atom`,continuity:`continuity`,key:`key`,mutable_atom_family:`atom family [m]`,mutable_atom:`atom [m]`,readonly_held_selector_family:`selector family [h]`,readonly_held_selector:`selector [h]`,readonly_pure_selector_family:`selector family`,readonly_pure_selector:`selector`,socket:`socket`,state:`state`,timeline:`timeline`,transaction:`transaction`,unknown:`unknown`,user:`👤`,writable_held_selector_family:`selector family [wh]`,writable_held_selector:`selector [wh]`,writable_pure_selector_family:`selector family [w]`,writable_pure_selector:`selector [w]`},Dn=(e,t)=>(n,r,i,a,...o)=>{console[e](`${t?`${t} `:``}${n} ${J[r]} \`${i}\` ${a}`,...o)},On={error:Dn(`error`),info:Dn(`info`),warn:Dn(`warn`)},kn=class{logLevel;filter;logger;constructor(e,t,n=On){this.logLevel=e,this.filter=t,this.logger=n}error=(...e)=>{if(this.logLevel!==null){let t=this.filter?.(...e)??!0;t===!0?this.logger.error(...e):t&&this.logger.error(...t)}};info=(...e)=>{if(this.logLevel===`info`){let t=this.filter?.(...e)??!0;t===!0?this.logger.info(...e):t&&this.logger.info(...t)}};warn=(...e)=>{if(this.logLevel!==`error`&&this.logLevel!==null){let t=this.filter?.(...e)??!0;t===!0?this.logger.warn(...e):t&&this.logger.warn(...t)}}};function An(e,t){return[e,t].sort().join(``)}function jn(e){if(typeof e!=`string`)return null;let[t,n]=e.split(`==`);if(!n)return null;let r=t.slice(4),[i,a]=n.split(`++`);return r&&i&&a?[r,i,a]:null}function Mn(...e){Bt(z.STORE,...e)}function Nn(e){return Ot(z.STORE,e)}function Y(...e){W(z.STORE,...e)}function Pn(e){return dt(z.STORE,e)}function Fn(e,t=Oe()){return ze(z.STORE,e,t)}var X,Z,In,Ln,Rn=0,zn=[],Q=t,Bn=Q.__b,Vn=Q.__r,Hn=Q.diffed,Un=Q.__c,Wn=Q.unmount,Gn=Q.__;function Kn(e,t){Q.__h&&Q.__h(Z,e,Rn||t),Rn=0;var n=Z.__H||={__:[],__h:[]};return e>=n.__.length&&n.__.push({}),n.__[e]}function qn(e){return Rn=1,Jn(cr,e)}function Jn(e,t,n){var r=Kn(X++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):cr(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=Z,!Z.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=r.__c.__H.__.filter(function(e){return e.__c});if(i.every(function(e){return!e.__N}))return!a||a.call(this,e,t,n);var o=r.__c.props!==e;return i.some(function(e){if(e.__N){var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a&&a.call(this,e,t,n)||o};Z.__f=!0;var a=Z.shouldComponentUpdate,o=Z.componentWillUpdate;Z.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},Z.shouldComponentUpdate=i}return r.__N||r.__}function Yn(e,t){var n=Kn(X++,3);!Q.__s&&sr(n.__H,t)&&(n.__=e,n.u=t,Z.__H.__h.push(n))}function Xn(e,t){var n=Kn(X++,4);!Q.__s&&sr(n.__H,t)&&(n.__=e,n.u=t,Z.__h.push(n))}function Zn(e){return Rn=5,Qn(function(){return{current:e}},[])}function Qn(e,t){var n=Kn(X++,7);return sr(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function $n(e,t){return Rn=8,Qn(function(){return e},t)}function er(e){var t=Z.context[e.__c],n=Kn(X++,9);return n.c=e,t?(n.__??(n.__=!0,t.sub(Z)),t.props.value):e.__}function tr(){var e=Kn(X++,11);if(!e.__){for(var t=Z.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||=[0,0];e.__=`P`+n[0]+`-`+ n[1]++}return e.__}function nr(){for(var e;e=zn.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ar),t.__h.some(or),t.__h=[]}catch(n){t.__h=[],Q.__e(n,e.__v)}}}Q.__b=function(e){Z=null,Bn&&Bn(e)},Q.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),Gn&&Gn(e,t)},Q.__r=function(e){Vn&&Vn(e),X=0;var t=(Z=e.__c).__H;t&&(In===Z?(t.__h=[],Z.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(ar),t.__h.some(or),t.__h=[],X=0)),In=Z},Q.diffed=function(e){Hn&&Hn(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(zn.push(t)!==1&&Ln===Q.requestAnimationFrame||((Ln=Q.requestAnimationFrame)||ir)(nr)),t.__H.__.some(function(e){e.u&&(e.__H=e.u),e.u=void 0})),In=Z=null},Q.__c=function(e,t){t.some(function(e){try{e.__h.some(ar),e.__h=e.__h.filter(function(e){return!e.__||or(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],Q.__e(n,e.__v)}}),Un&&Un(e,t)},Q.unmount=function(e){Wn&&Wn(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{ar(e)}catch(e){t=e}}),n.__H=void 0,t&&Q.__e(t,n.__v))};var rr=typeof requestAnimationFrame==`function`;function ir(e){var t,n=function(){clearTimeout(r),rr&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);rr&&(t=requestAnimationFrame(n))}function ar(e){var t=Z,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),Z=t}function or(e){var t=Z;e.__c=e.__(),Z=t}function sr(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function cr(e,t){return typeof t==`function`?t(e):t}function lr(e,t){for(var n in t)e[n]=t[n];return e}function ur(e,t){for(var n in e)if(n!==`__source`&&!(n in t))return!0;for(var r in t)if(r!==`__source`&&e[r]!==t[r])return!0;return!1}function dr(e,t){var n=t(),r=qn({t:{__:n,u:t}}),i=r[0].t,a=r[1];return Xn(function(){i.__=n,i.u=t,fr(i)&&a({t:i})},[e,n,t]),Yn(function(){return fr(i)&&a({t:i}),e(function(){fr(i)&&a({t:i})})},[e]),n}function fr(e){try{return!((t=e.__)===(n=e.u())&&(t!==0||1/t==1/n)||t!=t&&n!=n)}catch{return!0}var t,n}function pr(e,t){this.props=e,this.context=t}(pr.prototype=new C).isPureReactComponent=!0,pr.prototype.shouldComponentUpdate=function(e,t){return ur(this.props,e)||ur(this.state,t)};var mr=t.__b;t.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),mr&&mr(e)},typeof Symbol<`u`&&Symbol.for;var hr=t.__e;t.__e=function(e,t,n,r){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e??(t.__e=n.__e,t.__k=n.__k),i.__c(e,t)}hr(e,t,n,r)};var gr=t.unmount;function _r(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){typeof e.__c==`function`&&e.__c()}),e.__c.__H=null),(e=lr({},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(e){return _r(e,t,n)})),e}function vr(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return vr(e,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function yr(){this.__u=0,this.o=null,this.__b=null}function br(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function xr(){this.i=null,this.l=null}t.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),gr&&gr(e)},(yr.prototype=new C).__c=function(e,t){var n=t.__c,r=this;r.o??=[],r.o.push(n);var i=br(r.__v),a=!1,o=function(){a||r.__z||(a=!0,n.__R=null,i?i(c):c())};n.__R=o;var s=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var e=r.state.__a;r.__v.__k[0]=vr(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.__P=s,t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(o,o)},yr.prototype.componentWillUnmount=function(){this.o=[]},yr.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement(`div`),r=this.__v.__k[0].__c;this.__v.__k[0]=_r(this.__b,n,r.__O=r.__P)}this.__b=null}var i=t.__a&&b(S,null,e.fallback);return i&&(i.__u&=-33),[b(S,null,t.__a?null:e.children),i]};var Sr=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]}};(xr.prototype=new C).__a=function(e){var t=this,n=br(t.__v),r=t.l.get(e);return r[0]++,function(i){var a=function(){t.props.revealOrder?(r.push(i),Sr(t,e,r)):i()};n?n(a):a()}},xr.prototype.render=function(e){this.i=null,this.l=new Map;var t=O(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},xr.prototype.componentDidUpdate=xr.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Sr(e,n,t)})};var Cr=typeof Symbol<`u`&&Symbol.for&&Symbol.for(`react.element`)||60103,wr=/^(?: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]/,Tr=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Er=/[A-Z0-9]/g,Dr=typeof document<`u`,Or=function(e){return(typeof Symbol<`u`&&typeof Symbol()==`symbol`?/fil|che|rad/:/fil|che|ra/).test(e)};C.prototype.isReactComponent=!0,[`componentWillMount`,`componentWillReceiveProps`,`componentWillUpdate`].forEach(function(e){Object.defineProperty(C.prototype,e,{configurable:!0,get:function(){return this[`UNSAFE_`+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var kr=t.event;t.event=function(e){return kr&&(e=kr(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var Ar={configurable:!0,get:function(){return this.class}},jr=t.vnode;t.vnode=function(e){typeof e.type==`string`&&function(e){var t=e.props,n=e.type,r={},i=n.indexOf(`-`)==-1;for(var a in t){var o=t[a];if(!(a===`value`&&`defaultValue`in t&&o==null||Dr&&a===`children`&&n===`noscript`||a===`class`||a===`className`)){var s=a.toLowerCase();a===`defaultValue`&&`value`in t&&t.value==null?a=`value`:a===`download`&&!0===o?o=``:s===`translate`&&o===`no`?o=!1:s[0]===`o`&&s[1]===`n`?s===`ondoubleclick`?a=`ondblclick`:s!==`onchange`||n!==`input`&&n!==`textarea`||Or(t.type)?s===`onfocus`?a=`onfocusin`:s===`onblur`?a=`onfocusout`:Tr.test(a)&&(a=s):s=a=`oninput`:i&&wr.test(a)?a=a.replace(Er,`-$&`).toLowerCase():o===null&&(o=void 0),s===`oninput`&&r[a=s]&&(a=`oninputCapture`),r[a]=o}}n==`select`&&(r.multiple&&Array.isArray(r.value)&&(r.value=O(t.children).forEach(function(e){e.props.selected=r.value.indexOf(e.props.value)!=-1})),r.defaultValue!=null&&(r.value=O(t.children).forEach(function(e){e.props.selected=r.multiple?r.defaultValue.indexOf(e.props.value)!=-1:r.defaultValue==e.props.value}))),t.class&&!t.className?(r.class=t.class,Object.defineProperty(r,"className",Ar)):t.className&&(r.class=r.className=t.className),e.props=r}(e),e.$$typeof=Cr,jr&&jr(e)};var Mr=t.__r;t.__r=function(e){Mr&&Mr(e),e.__c};var Nr=t.diffed;t.diffed=function(e){Nr&&Nr(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)};var Pr=0;Array.isArray;function $(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Pr,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}var Fr=ve(z.STORE);function Ir(...e){let t,n,r=er(Fr);if(e.length===3){let i=e[0],a=e[1];t=U(r,i,a),n=e[2]}else t=e[0],n=e[1];let i=n(null);return Yn(()=>{W(r,t,i.current)},[t]),i}function Lr(e,...t){let n;if(t.length===2){let r=t[0],i=t[1];n=U(e,r,i)}else n=t[0];return n}function Rr(e,t){if(globalThis.env?.NODE_ENV===`development`){let n=Zn(!1);Yn(()=>{let t=n.current;if(t===!1)t=e()??!0,n.current=t;else return()=>{M(t)&&t(),n.current=!1}},t)}else Yn(e,t)}function zr(...e){let t=er(Fr),n=Lr(t,...e),r=tr();if(n.type===`mutable_atom`||n.type===`readonly_held_selector`||n.type===`writable_held_selector`){let[,e]=qn(0),i=Zn(H(t,n));return Rr(()=>G(t,n,`use-o:${r}`,({newValue:t})=>{i.current=t,e(e=>e+1)}),[n.key]),i.current}let i=$n(e=>G(t,n,`use-o:${r}`,e),[n.key]),a=$n(()=>H(t,n),[n.key]);return dr(i,a,a)}var Br=wn({key:`pathKeys`,default:[]}),Vr=Tn({key:`subpathKeys`,default:[]}),Hr=Tn({key:`node`,default:null}),Ur=Tn({key:`edge`,default:!0}),Wr=Nn({key:`pathDraw`,get:e=>({get:t})=>t(Vr,e).map((e,n)=>{let r=t(Hr,e),i=t(Ur,e);return r===null?`Z`:n===0||i===!1?`M ${r.x} ${r.y}`:i===!0?`L ${r.x} ${r.y}`:`c`in i?`C ${i.c.x} ${i.c.y} ${i.s.x} ${i.s.y} ${r.x} ${r.y}`:`S ${i.s.x} ${i.s.y} ${r.x} ${r.y}`}).join(` `)});function Gr(e,t,n){return Math.max(t,Math.min(n,e))}function Kr({at:e,subpathKey:t,prevSubpathKey:n,node:r}){let i;switch(typeof r){case`undefined`:i=zr(Hr,n);break;default:i=r}return i===null?null:$(S,{children:[$(`line`,{class:`bezier`,x1:i.x,y1:i.y,x2:e.x,y2:e.y,stroke:`#777`,"stroke-width":1}),$(`circle`,{class:`bezier`,fill:`#777`,stroke:`#aaa`,"stroke-width":1,cx:e.x,cy:e.y,r:2}),$(`circle`,{class:`bezier-draggable`,fill:`transparent`,cx:e.x,cy:e.y,r:6,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),Y(Qr,{key:t,by:r?`s`:`c`})}})]})}function qr({subpathKey:e,nextSubpathKey:t}){let n=zr(Hr,e),r=zr(Ur,e);return n===null?null:$(S,{children:[typeof r==`boolean`?$(`rect`,{class:`node`,x:n.x-3,y:n.y-3,width:6,height:6}):$(S,{children:[$(Kr,{at:r.s,node:n,subpathKey:e,prevSubpathKey:t}),r.c?$(Kr,{at:r.c,subpathKey:e,prevSubpathKey:t}):null,$(`circle`,{class:`node`,cx:n.x,cy:n.y,r:3})]}),$(`circle`,{class:`node-draggable`,fill:`transparent`,cx:n.x,cy:n.y,r:10,onPointerDown:t=>{t.currentTarget.setPointerCapture(t.pointerId),Y(Qr,{key:e})}})]})}function Jr({pathKey:e}){return $(`path`,{d:`${zr(Wr,e)} Z`,class:`path`,style:{pointerEvents:`none`}})}function Yr({pathKey:e}){let t=zr(Vr,e);return $(S,{children:[$(Jr,{pathKey:e}),t.toReversed().map((e,t,n)=>$(qr,{subpathKey:e,nextSubpathKey:n[t+1]??n[0]},e))]})}function Xr(){return $(S,{children:zr(Br).map(e=>$(Yr,{pathKey:e},e))})}var Zr=wn({key:`svgRef`,default:null}),Qr=wn({key:`currentlyDragging`,default:null});function $r(e){e.preventDefault();let{key:t,by:n}=En(Qr)??{},r=En(Zr);if(!r||!t)return;let i=r.createSVGPoint();i.x=e.clientX,i.y=e.clientY;let a=r.getScreenCTM()?.inverse(),{x:o,y:s}=i.matrixTransform(a);switch(n){case void 0:Y(Hr,t,{x:Gr(o,-185,ri+185),y:Gr(s,-10,ii+10)});break;case`s`:Y(Ur,t,e=>({...e,s:{x:Gr(o,-185,ri+185),y:Gr(s,-10,ii+10)}}));break;case`c`:Y(Ur,t,e=>({...e,c:{x:Gr(o,-185,ri+185),y:Gr(s,-10,ii+10)}}));break}}var ei=[`m`,`M`,`l`,`L`,`c`,`C`,`v`,`V`,`z`,`Z`],ti=wn({key:`preactLogo`,default:()=>fetch(`preact.svg`).then(e=>e.text())}),ni=Fn(Pn({key:`reset`,do:async()=>{let e=await En(ti);for(let e of En(Br))Mn(Vr,e);Mn(Br);let t=e.split(`
5
- `).filter(e=>e.startsWith(` <path`)).map(e=>{let t=e.split(`d="`)[1].slice(0,-9),n,r=``,i=[],a=[];for(let e of t){if(ei.includes(e)){r&&=(i.push(Number.parseFloat(r)),``),n&&a.push({letter:n,numbers:i}),n=e,i=[];continue}if(e===` `){i.push(Number.parseFloat(r)),r=``;continue}if(e===`-`&&r){i.push(Number.parseFloat(r)),r=`-`;continue}r+=e}let o={x:0,y:0};return a.map(({letter:e,numbers:t})=>{let n,r;switch(e){case`m`:n={x:o.x+t[0],y:o.y+t[1]},r=!1;break;case`M`:n={x:t[0],y:t[1]},r=!1;break;case`l`:n={x:o.x+t[0],y:o.y+t[1]},r=!0;break;case`L`:n={x:t[0],y:t[1]},r=!0;break;case`c`:n={x:o.x+t[4],y:o.y+t[5]},r={c:{x:o.x+t[0],y:o.y+t[1]},s:{x:o.x+t[2],y:o.y+t[3]}};break;case`C`:n={x:t[4],y:t[5]},r={c:{x:t[0],y:t[1]},s:{x:t[2],y:t[3]}};break;case`v`:n={x:o.x,y:o.y+t[0]},r=!0;break;case`V`:n={x:o.x,y:t[0]},r=!0;break;case`z`:case`Z`:n=null,r=!0}return n&&(o=n),{node:n,edge:r}})}),n=0,r=0;for(let e of t){let t=r;for(let{node:t,edge:n}of e)Y(Ur,`subpath${r}`,n),Y(Hr,`subpath${r}`,t),r++;let i=r-t;Y(Vr,`path${n}`,Array.from({length:i},(e,n)=>`subpath${t+n}`)),Y(Br,e=>[...e,`path${n}`]),n++}}})),ri=256,ii=296;function ai(){let e=Ir(Zr,Zn),t=$n(e=>{e.currentTarget.releasePointerCapture(e.pointerId),Y(Qr,null)},[]);return Yn(()=>void ni(),[]),$(`div`,{style:{display:`flex`,flexFlow:`column`,position:`relative`,overflow:`hidden`,maxWidth:`1280px`,width:`100vw`,alignItems:`center`},children:[$(`svg`,{ref:e,viewBox:`-185 -15 626 326`,width:1e3,height:500,onPointerMove:$r,onPointerUp:t,onPointerCancel:t,children:[$(`title`,{children:`Bezier Playground`}),$(`defs`,{children:$(`pattern`,{id:`grid`,width:`5`,height:`5`,patternUnits:`userSpaceOnUse`,children:$(`rect`,{x:`0`,y:`0`,width:`.5`,height:`.5`,fill:`none`,stroke:`#aaa`})})}),$(`rect`,{x:0,y:0,width:ri,height:ii,fill:`#aaa3`}),$(`rect`,{x:-185,y:-10,width:626,height:316,fill:`url(#grid)`}),$(Xr,{})]}),$(`button`,{type:`button`,class:`flat`,onClick:ni,children:`Reset`})]})}function oi(){return $(S,{children:[$(`h1`,{children:`Atom.io in Preact on Vite`}),$(`main`,{children:[$(ai,{}),$(`article`,{children:[$(si,{title:`Learn Atom.io`,description:`Atom.io is where data lives.`,href:`https://atom.io.fyi/docs/getting-started`}),$(si,{title:`Learn Preact`,description:`If you're new to Preact, try the interactive tutorial to learn important concepts`,href:`https://preactjs.com/tutorial`}),$(si,{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 si(e){return $(`a`,{href:e.href,target:`_blank`,class:`resource`,rel:`noreferrer`,children:[$(`h2`,{children:e.title}),$(`p`,{children:e.description})]})}_e($(oi,{}),document.getElementById(`app`));
5
+ `).filter(e=>e.startsWith(` <path`)).map(e=>{let t=e.split(`d="`)[1].slice(0,-9),n,r=``,i=[],a=[];for(let e of t){if(ei.includes(e)){r&&=(i.push(Number.parseFloat(r)),``),n&&a.push({letter:n,numbers:i}),n=e,i=[];continue}if(e===` `){i.push(Number.parseFloat(r)),r=``;continue}if(e===`-`&&r){i.push(Number.parseFloat(r)),r=`-`;continue}r+=e}let o={x:0,y:0};return a.map(({letter:e,numbers:t})=>{let n,r;switch(e){case`m`:n={x:o.x+t[0],y:o.y+t[1]},r=!1;break;case`M`:n={x:t[0],y:t[1]},r=!1;break;case`l`:n={x:o.x+t[0],y:o.y+t[1]},r=!0;break;case`L`:n={x:t[0],y:t[1]},r=!0;break;case`c`:n={x:o.x+t[4],y:o.y+t[5]},r={c:{x:o.x+t[0],y:o.y+t[1]},s:{x:o.x+t[2],y:o.y+t[3]}};break;case`C`:n={x:t[4],y:t[5]},r={c:{x:t[0],y:t[1]},s:{x:t[2],y:t[3]}};break;case`v`:n={x:o.x,y:o.y+t[0]},r=!0;break;case`V`:n={x:o.x,y:t[0]},r=!0;break;case`z`:case`Z`:n=null,r=!0}return n&&(o=n),{node:n,edge:r}})}),n=0,r=0;for(let e of t){let t=r;for(let{node:t,edge:n}of e)Y(Ur,`subpath${r}`,n),Y(Hr,`subpath${r}`,t),r++;let i=r-t;Y(Vr,`path${n}`,Array.from({length:i},(e,n)=>`subpath${t+n}`)),Y(Br,e=>[...e,`path${n}`]),n++}}})),ri=256,ii=296;function ai(){let e=Ir(Zr,Zn),t=$n(e=>{e.currentTarget.releasePointerCapture(e.pointerId),Y(Qr,null)},[]);return Yn(()=>void ni(),[]),$(`div`,{style:{display:`flex`,flexFlow:`column`,position:`relative`,overflow:`hidden`,maxWidth:`1280px`,width:`100vw`,alignItems:`center`},children:[$(`svg`,{ref:e,viewBox:`-185 -15 626 326`,width:1e3,height:500,onPointerMove:$r,onPointerUp:t,onPointerCancel:t,children:[$(`title`,{children:`Bezier Playground`}),$(`defs`,{children:$(`pattern`,{id:`grid`,width:`5`,height:`5`,patternUnits:`userSpaceOnUse`,children:$(`rect`,{x:`0`,y:`0`,width:`.5`,height:`.5`,fill:`none`,stroke:`#aaa`})})}),$(`rect`,{x:0,y:0,width:ri,height:ii,fill:`#aaa3`}),$(`rect`,{x:-185,y:-10,width:626,height:316,fill:`url(#grid)`}),$(Xr,{})]}),$(`button`,{type:`button`,class:`flat`,onClick:ni,children:`Reset`})]})}function oi(){return $(S,{children:[$(`h1`,{children:`Atom.io in Preact on Vite`}),$(`main`,{children:[$(ai,{}),$(`article`,{children:[$(si,{title:`Learn Atom.io`,description:`Atom.io is where data lives.`,href:`https://atom.io.fyi/docs/tutorial`}),$(si,{title:`Learn Preact`,description:`If you're new to Preact, try the interactive tutorial to learn important concepts`,href:`https://preactjs.com/tutorial`}),$(si,{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 si(e){return $(`a`,{href:e.href,target:`_blank`,class:`resource`,rel:`noreferrer`,children:[$(`h2`,{children:e.title}),$(`p`,{children:e.description})]})}_e($(oi,{}),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-BJWFwj8i.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-C4g8LrxD.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-BNVXGhU4.css">
11
11
  </head>
12
12
  <body>
package/eslint.config.ts CHANGED
@@ -1,8 +1,8 @@
1
+ import eslintReact from "@eslint-react/eslint-plugin"
1
2
  import { default as TypeScriptPlugin } from "@typescript-eslint/eslint-plugin"
2
3
  import * as parser from "@typescript-eslint/parser"
3
4
  import AtomIOPlugin from "atom.io/eslint-plugin"
4
5
  import type { ESLint, Linter } from "eslint"
5
- import PreactConfig from "eslint-config-preact"
6
6
  import * as ImportPlugin from "eslint-plugin-import-x"
7
7
  import { default as SimpleImportSortPlugin } from "eslint-plugin-simple-import-sort"
8
8
 
@@ -160,11 +160,26 @@ const commonRules = {
160
160
  quotes: [ERROR, `backtick`],
161
161
  } satisfies Linter.Config[`rules`]
162
162
 
163
+ const eslintReactConfig = eslintReact.configs[
164
+ `recommended-typescript`
165
+ ] satisfies Linter.Config
166
+
163
167
  const configs: Linter.Config[] = [
164
- ...PreactConfig,
165
168
  {
166
169
  ignores: [`**/dist/**`, `**/gen/**`, `**/node_modules/**`],
167
170
  },
171
+ {
172
+ ...eslintReactConfig,
173
+ files: [`**/*.ts{,x}`],
174
+ settings: {
175
+ ...eslintReactConfig.settings,
176
+ "react-x": {
177
+ ...eslintReactConfig.settings?.[`react-x`],
178
+ importSource: `preact`,
179
+ version: `detect`,
180
+ },
181
+ },
182
+ },
168
183
  {
169
184
  languageOptions: { parser, parserOptions },
170
185
  files: [`**/*.ts{,x}`, `eslint.config.ts`],
package/eslint.d.ts CHANGED
@@ -23,9 +23,17 @@ declare module "@typescript-eslint/eslint-plugin" {
23
23
  }
24
24
 
25
25
  // eslint-disable-next-line quotes
26
- declare module "eslint-config-preact" {
27
- import type { Linter } from "eslint"
26
+ declare module "@eslint-react/eslint-plugin" {
27
+ import type { ESLint, Linter } from "eslint"
28
28
 
29
- const configs: Linter.Config[]
30
- export = configs
29
+ type Config = Linter.Config & {
30
+ settings?: Record<string, Record<string, unknown>>
31
+ }
32
+
33
+ const plugin: ESLint.Plugin & {
34
+ configs: Record<string, Config> & {
35
+ [`recommended-typescript`]: Config
36
+ }
37
+ }
38
+ export default plugin
31
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atom.io/template-preact-svg-editor",
3
- "version": "0.0.60",
3
+ "version": "0.0.62",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -14,13 +14,13 @@
14
14
  "preact": "10.29.2",
15
15
  "react": "npm:@preact/compat@18.3.2",
16
16
  "react-dom": "npm:@preact/compat@18.3.2",
17
- "atom.io": "0.47.1"
17
+ "atom.io": "0.47.2"
18
18
  },
19
19
  "devDependencies": {
20
+ "@eslint-react/eslint-plugin": "5.8.12",
20
21
  "@preact/preset-vite": "2.10.5",
21
22
  "@typescript-eslint/eslint-plugin": "8.60.1",
22
23
  "@typescript-eslint/parser": "8.60.1",
23
- "eslint-config-preact": "2.0.0",
24
24
  "eslint-plugin-import-x": "4.16.2",
25
25
  "eslint-plugin-simple-import-sort": "13.0.0",
26
26
  "typescript": "6.0.3",
@@ -83,7 +83,7 @@ function Bezier({
83
83
  // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
84
84
  switch (typeof maybeNode) {
85
85
  case `undefined`:
86
- // eslint-disable-next-line react-hooks/rules-of-hooks
86
+ // eslint-disable-next-line @eslint-react/rules-of-hooks
87
87
  node = useO(nodeAtoms, prevSubpathKey)
88
88
  break
89
89
  default:
package/src/index.tsx CHANGED
@@ -15,7 +15,7 @@ export function App(): VNode {
15
15
  <Resource
16
16
  title="Learn Atom.io"
17
17
  description="Atom.io is where data lives."
18
- href="https://atom.io.fyi/docs/getting-started"
18
+ href="https://atom.io.fyi/docs/tutorial"
19
19
  />
20
20
  <Resource
21
21
  title="Learn Preact"