@memoized-dom/runtime 0.0.4 → 0.0.6

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.
package/README.md CHANGED
@@ -4,13 +4,26 @@ Dependency-free registry, scheduling, optional dirty-reason batching, access
4
4
  routing, keyed regions, props boxes, cleanup/ref ownership, and DOM value helpers
5
5
  for memoized-dom compiler output.
6
6
 
7
- Application source does not need to import reactive primitives. Generated
8
- modules import this package as one namespace:
7
+ Application source does not need to import reactive primitives. The ordinary
8
+ browser entry imports only the mounting boundary:
9
+
10
+ ```ts
11
+ import { mount } from '@memoized-dom/runtime';
12
+ import { App } from './App';
13
+
14
+ mount('root', App);
15
+ ```
16
+
17
+ Generated modules import this package as one namespace:
9
18
 
10
19
  ```js
11
20
  import * as MD from '@memoized-dom/runtime';
12
21
  ```
13
22
 
23
+ `mount()` resolves string targets with `document.getElementById()`, owns only
24
+ the nodes produced by the compiled root, returns an idempotent `unmount()`
25
+ handle, and keeps the compiler's private factory ABI out of authored code.
26
+
14
27
  The package is independently buildable:
15
28
 
16
29
  ```bash
package/dist/access.d.ts CHANGED
@@ -28,13 +28,9 @@ export interface AccessTable {
28
28
  pattern: string;
29
29
  }[]>;
30
30
  }
31
- /**
32
- * Install a table fragment. Fragments MERGE app-wide (spec §4.6): every
33
- * compiled module installs its own fragment at init, and readers from all
34
- * of them must stay live — a write in module A can target a component
35
- * declared in module B. Re-installing the same fragment is idempotent.
36
- */
37
- export declare function installAccessTable(table: AccessTable, root: EntityId): void;
31
+ export declare function installAccessTable(table: AccessTable, root: EntityId, owner?: string): void;
32
+ /** Remove one compiler module's analysis fragment during hot replacement. */
33
+ export declare function uninstallAccessTable(owner: string): void;
38
34
  /** Clear every installed fragment — test isolation, not app code. */
39
35
  export declare function resetAccessTable(): void;
40
36
  export declare function isOpaque(variable: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE1E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;CACzD;AA+ED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAoC3E;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,IAAI,CAWvC;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,QAAQ,EAAE,GAAG,cAAc,CAG7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,QAAQ,EAAE,GAAG,cAAc,CAuD7B"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE1E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;CACzD;AAiID,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,QAAQ,EACd,KAAK,SAAsC,GAC1C,IAAI,CAGN;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,SAAS,IAAI,QAAQ,CAEpC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,QAAQ,EAAE,GAAG,cAAc,CAG7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,QAAQ,EAAE,GAAG,cAAc,CAuD7B"}
@@ -0,0 +1 @@
1
+ var T=new Map;function We(e,t,n){if(n===void 0||Array.isArray(n)&&n.length===0){T.size!==0&&T.delete(e);return}if(!t){typeof n=="number"?T.set(e,n):n.length===1?T.set(e,n[0]):T.set(e,new Set(n));return}let o=T.get(e);if(o===void 0)return;let r=typeof n=="number"?[n]:n;if(typeof o=="number"){r.some(i=>i!==o)&&T.set(e,new Set([o,...r]));return}for(let i of r)o.add(i)}function $e(e){if(T.size===0)return null;let t=T.get(e)??null;return T.delete(e),t}function j(e){T.size!==0&&T.delete(e)}var v=new Map,S=new Set,P=new Set,ye=!1,vt=-1;function ze(){ye||P.size===0||typeof globalThis.requestAnimationFrame!="function"||(ye=!0,globalThis.requestAnimationFrame(()=>{if(ye=!1,!(typeof globalThis.document<"u"&&globalThis.document.hidden))for(let t of P)N(t,vt);ze()}))}var Be=typeof queueMicrotask=="function"?queueMicrotask:e=>Promise.resolve().then(e),he=Be;function kt(e){he=e}function Ct(){he=Be}function Rt(e){let t=0;for(let n=0;n<e.length;n++)e.charCodeAt(n)===47&&t++;return t}var Y=null,Ve=0;var je=[],ge=[];function ee(e){ge.includes(e)||ge.push(e)}function te(e){je.push(e)}function Ke(e,t){for(let n of je)n(e,t)}function ne(e){let t=e.parent!==null?v.get(e.parent):void 0;e.depth=e.depth??(t&&t.depth!==void 0?t.depth+1:Rt(e.id)),v.set(e.id,e),e.volatile===!0?P.add(e.id):P.delete(e.id),t&&(t.children??=new Set).add(e.id),Y=null,Ve++,Ke(e.id,"add"),ze()}function x(e){let t=v.get(e);if(!t)return;t.parent!==null&&v.get(t.parent)?.children?.delete(e);let n=[e],o=[],r=[];for(;n.length>0;){let i=n.pop(),s=v.get(i);if(s&&(o.push(i),s.children))for(let d of s.children)n.push(d)}o.reverse();for(let i of o)v.delete(i),S.delete(i),P.delete(i),j(i),Ke(i,"remove");for(let i of o)for(let s of ge){let d=s(i);d!==void 0&&r.push(...d)}if(Y=null,Ve++,r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,`[memo-dom] ${r.length} cleanup disposers failed while unregistering '${e}'`)}function It(e){x(e)}function K(e){return v.has(e)}function Ee(e){return v.get(e)}function Tt(e){let t=r=>{if(r.children!==void 0)for(let i of r.children){let s=v.get(i);s!==void 0&&(s.phase!=="effect"&&(s.render(),O(i)),t(s))}},n=r=>{if(r.children!==void 0)for(let i of r.children){let s=v.get(i);s!==void 0&&(s.phase==="effect"&&(s.render(),O(i)),n(s))}},o=v.get(e);o!==void 0&&(t(o),n(o))}function _(){return Y??=[...v.keys()],Y}function N(e,t){if(!v.has(e))return;let n=S.has(e);(t!==void 0||n)&&We(e,n,t),S.add(e),_e()}function O(e){S.size!==0&&S.delete(e)&&j(e)}function L(e){let t=e+"/",n=!1;for(let o of v.keys())(o===e||o.startsWith(t))&&(S.add(o),j(o),n=!0);n&&_e()}var me=!1,Q=!1;function _e(){me||Q||(me=!0,he(Ue))}function Ue(){if(me=!1,!Q){Q=!0;try{for(let e=0;e<100&&S.size>0;e++){let t=[];for(let r of S){let i=v.get(r);i?t.push(i):(S.delete(r),j(r))}let o=t.some(r=>r.phase!=="effect")?t.filter(r=>r.phase!=="effect"):t;o.sort((r,i)=>(r.depth??0)-(i.depth??0));for(let r of o)S.delete(r.id)&&r.render($e(r.id))}if(S.size>0)throw new Error("[memo-dom] commit cascade exceeded 100 passes \u2014 an update is dirtying its own readers (cycle)")}finally{Q=!1}}}function Ln(){return{registry:v,dirtySet:S,volatileSet:P}}var oe=new Map,we=new Set,qe=!1;function St(){qe||(qe=!0,ee(At))}function re(e,t){if(typeof t!="function")throw new TypeError("[memo-dom] cleanup(disposer) requires a function");if(we.has(e))throw new Error(`[memo-dom] cannot register cleanup while '${e}' is being unregistered`);St();let n=oe.get(e);return n===void 0&&(n=[],oe.set(e,n)),n.push(t),t}function At(e){let t=oe.get(e);if(t===void 0)return[];oe.delete(e),we.add(e);let n=[];try{for(let o=t.length-1;o>=0;o--)try{t[o]()}catch(r){n.push(r)}}finally{we.delete(e)}return n}function Dt(e,t){let n=[],o=!0;try{Je(e,t,n)}catch(r){let i=Ge(n);throw i.length>0?new AggregateError([r,...i],"[memo-dom] ref setup and rollback failed"):r}return()=>{if(!o)return;o=!1;let r=Ge(n);if(r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,"[memo-dom] multiple ref cleanups failed")}}function Je(e,t,n){if(t==null||t===!1)return;if(Array.isArray(t)){for(let r of t)Je(e,r,n);return}if(typeof t!="function")throw new TypeError("[memo-dom] ref value must be a callback, an assignable JSX target, or an array of refs");let o=t(e);if(o!=null){if(typeof o!="function")throw new TypeError("[memo-dom] ref callback must return a cleanup function or nothing");n.push(o)}}function Ge(e){let t=[];for(let n=e.length-1;n>=0;n--)try{e[n]()}catch(o){t.push(o)}return e.length=0,t}function Ze(e,t,n){let o;K(e)&&x(e),ne({id:e,parent:t,phase:"effect",render(){let r=o;o=void 0,r?.();let i=n();if(i!==void 0&&typeof i!="function")throw new TypeError(`[memo-dom] effect '${e}' must return a cleanup function or undefined`);o=typeof i=="function"?i:void 0}}),re(e,()=>{let r=o;o=void 0,r?.()}),N(e)}function Nt(e,t,n,o){let r=`${e}/$active`,i=!1;K(e)&&x(e),ne({id:e,parent:t,phase:"effect",render(){let s=!!n();s!==i&&(i=s,i?Ze(r,e,o):x(r))}}),re(e,()=>{i=!1,K(r)&&x(r)}),N(e)}function Mt(e,t,n,o){e[t]!==o&&(e[t]=o,n.data=o==null||typeof o=="boolean"?"":String(o))}function Lt(e,t,n,o){e[t]!==o&&(e[t]=o,n.className=o)}function Ht(e,t,n,o,r){e[t]!==r&&(e[t]=r,n.classList.toggle(o,r))}function Ft(e,t,n,o,r){e[t]!==r&&(e[t]=r,r==null||r===!1?n.removeAttribute(o):r===!0?n.setAttribute(o,""):n.setAttribute(o,String(r)))}function Pt(e,t,n,o,r){e[t]!==r&&(e[t]=r,n[o]=r)}function Ot(e,t,n,o,r){e[t]!==r&&(e[t]=r,r==null?n.style.removeProperty(o):n.style.setProperty(o,r))}function Wt(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e===t||e.length!==t.length)return!0;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n])||be(e[n]))return!0;return!1}return be(e)||be(t)?!0:!Object.is(e,t)}function $t(e,t){return!Object.is(e,t)}function be(e){return typeof e=="object"&&e!==null||typeof e=="function"}var xe="",W=new Map,H=new Map,ie=new Map,ve=new Set,de=new Map,Xe=[],U=new Map,se=0,ke=new Map,Ce=new Map;function zt(){U=new Map;let e=_();for(let[t,n]of H){let o=new Set;for(let r of n)for(let i of e)r.test(i)&&o.add(i);U.set(t,o)}}te((e,t)=>{if(H.size===0)return;let n=!1;if(t==="add")for(let[o,r]of H){let i=U.get(o);if(i){for(let s of r)if(s.test(e)){i.add(e),n=!0;break}}}else for(let o of U.values())o.delete(e)&&(n=!0);n&&se++});function Bt(e){if(!e.includes("*"))return null;let t=e.split("*").map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*");return new RegExp(`^${t}$`)}function Re(){xe="",W=new Map,H=new Map,ie=new Map,ve=new Set;for(let{table:e,root:t}of de.values()){xe=t;for(let[n,o]of Object.entries(e.readers))for(let r of o){let i=Bt(r);if(i===null){let s=W.get(n)??[];s.includes(r)||s.push(r),W.set(n,s)}else{let s=H.get(n)??[];s.some(d=>d.source===i.source)||s.push(i),H.set(n,s)}}for(let[n,o]of Object.entries(e.params??{})){let r=ie.get(n)??[];for(let i of o)r.includes(i.pattern)||r.push(i.pattern);ie.set(n,r)}for(let n of e.opaque??[])ve.add(n)}Xe=[...new Set([...W.keys(),...H.keys()])],ke.clear(),Ce.clear(),zt(),se++}function Vt(e,t,n=`${t}\0${JSON.stringify(e)}`){de.set(n,{table:e,root:t}),Re()}function Ie(e){de.delete(e)&&Re()}function jt(){de.clear(),Re()}function Te(e){return ve.has(e)}function le(){return xe}function Se(e){return e.some(Te)?"root-subtree":Qe(e)}function Ae(e,t,n){if(e.some(Te))return"root-subtree";if(n){let o=new Set,r=!0;for(let i of e){let s=ie.get(i);if(s===void 0||s.length===0){r=!1;break}for(let d of s){let l=!1,f=d.replace(/\{([^}]+)\}/g,(h,p)=>{let A=p.trim();if(!A.startsWith("payload."))return l=!0,"";let b=n;for(let k of A.slice(8).split(".")){if(b===null||typeof b!="object")return l=!0,"";b=b[k]}return b==null?(l=!0,""):String(b)});if(l){r=!1;break}o.add(f)}if(!r)break;for(let d of W.get(i)??[])o.add(d)}if(r&&o.size>0)return[...o]}return Qe(e)}function Qe(e){let t=e.length===1?e[0]:e.join(" "),n=Ce.get(t);if(n!==void 0&&n.v===se)return n.result;let o=new Set,r=new Set;for(let s of e){let d=ke.get(s);if(d===void 0){d=[];for(let l of Xe)(l===s||l.startsWith(`${s}.`)||s.startsWith(`${l}.`))&&d.push(l);ke.set(s,d)}for(let l of d)r.add(l)}for(let s of r){for(let d of W.get(s)??[])o.add(d);for(let d of U.get(s)??[])o.add(d)}let i=[...o];return Ce.set(t,{v:se,result:i}),i}var Kt=1e3,q=[];function _t(){return q}function Ut(){q.length=0}function Ye(e){let t=Se(e);if(t==="root-subtree"){L(le());return}for(let n of t)N(n)}function qt(e,t){let n=Ae(e,[],t);if(n==="root-subtree"){L(le());return}for(let o of n)N(o)}function Gt(e,t,n){return o=>{n(o),q.push({origin:e,writes:t,at:Date.now()}),q.length>Kt&&q.shift(),Ye(t)}}var Jt=e=>e,Zt=[],Xt=[],Qt=[];function Yt(e){let t=e.length,n=Zt,o=Xt,r=Qt;n.length=t,r.length=t,o.length=0;for(let s=0;s<t;s++)n[s]=!1,r[s]=-1;for(let s=0;s<t;s++){let d=e[s];if(d<0)continue;let l=0,f=o.length;for(;l<f;){let h=l+f>>1;e[o[h]]<d?l=h+1:f=h}o[l]=s,l>0&&(r[s]=o[l-1])}let i=o.length>0?o[o.length-1]:-1;for(;i>=0;)n[i]=!0,i=r[i];return n}function en(e,t,n,o=Jt,r=!0){let i=document.createComment(`list:${t}`);e.appendChild(i);let s=new Map,d=new Map,l=0,f=[],h=[],p=[],A=new Map,b=[],k=[],z=[];function pe(y,E,u,C){if(y.updateProps?.(E,C),y.update!==void 0)y.update(),u!==null&&O(u);else if(u!==null){let M=Ee(u);M&&(M.render(),O(u))}}function gt(y){let E=typeof y;if(E==="string"||E==="number"||E==="boolean"||E==="bigint")return`${t}/Row[${String(y)}]`;let u=d.get(y);return u===void 0&&(u=`#${++l}`,d.set(y,u)),`${t}/Row[${u}]`}function mt(y,E=!0){if(y.length===f.length){let a=!0;for(let c=0;c<y.length;c++)if(y[c]!==f[c]){a=!1;break}if(a){if(!E)return;for(let c=0;c<y.length;c++)pe(h[c],y[c],r?p[c]??null:null,c);return}}let u=s,C=u.size===0;A.clear();let M=A,F=k,R=b,B=y.length;F.length=r?B:0,R.length=B,z.length=C?0:B;let Z=!1,Le=0,He=!0,Fe=-1;for(let a=0;a<y.length;a++){let c=y[a],w=o(c,a);if(M.has(w))throw new Error(`[memo-dom] duplicate list key: ${String(w)}`);let m=C?void 0:u.get(w);if(m!==void 0){Le++,u.delete(w);let g=m.pos;z[a]=g,g<=Fe?He=!1:Fe=g,m.pos=a,(E||c!==f[g])&&pe(m.e,c,m.id,a)}else{let g=r?gt(w):t;m={e:n(c,g,a),id:r?g:null,pos:a},C||(z[a]=-1),Z=!0}M.set(w,m),R[a]=m.e,r&&(F[a]=m.id)}if(!C&&Le===0&&(B===0||Z)){for(let[,g]of u)g.e.dispose?.();let a=!1,c;for(let g of h){let I=g.nodes;if(c=Array.isArray(I)?I[0]:I,c!==void 0)break}if(c!==void 0&&c.parentNode===e&&i.parentNode===e&&typeof document.createRange=="function"){let g=document.createRange();g.setStartBefore(c),g.setEndBefore(i),g.deleteContents(),a=!0}for(let[g,I]of u){if(!a){let D=I.e.nodes;if(Array.isArray(D))for(let X of D)X.parentNode?.removeChild(X);else D.parentNode?.removeChild(D)}for(let D of I.e.entities)x(D);d.delete(g)}if(u.clear(),B!==0){let g=document.createDocumentFragment();for(let I=0;I<R.length;I++){let D=R[I].nodes;if(Array.isArray(D))for(let X of D)g.appendChild(X);else g.appendChild(D)}e.insertBefore(g,i)}s=M,A=u;let w=h;h=R,b=w;let m=p;p=F,k=m,b.length=0,k.length=0,f=y.slice();return}if(C&&Z){let a=document.createDocumentFragment();for(let m=0;m<R.length;m++){let g=R[m].nodes;if(Array.isArray(g))for(let I of g)a.appendChild(I);else a.appendChild(g)}e.insertBefore(a,i),s=M,A=u;let c=h;h=R,b=c;let w=p;p=F,k=w,b.length=0,k.length=0,f=y.slice();return}if(!Z&&u.size===0&&He){s=M,A=u;let a=h;h=R,b=a;let c=p;p=F,k=c,b.length=0,k.length=0,f=y.slice();return}for(let[a,c]of u){c.e.dispose?.();let w=c.e.nodes;if(Array.isArray(w))for(let m of w)m.parentNode?.removeChild(m);else w.parentNode?.removeChild(w);for(let m of c.e.entities)x(m);d.delete(a)}u.clear();let wt=Yt(z),Pe=i,V=null,Oe=()=>{if(V===null)return;let a=document.createDocumentFragment();for(let c=V.length-1;c>=0;c--){let w=V[c].nodes;if(Array.isArray(w))for(let m of w)a.appendChild(m);else a.appendChild(w)}e.insertBefore(a,Pe),V=null};for(let a=R.length-1;a>=0;a--){let c=R[a];z[a]===-1||!wt[a]?(V??=[]).push(c):(Oe(),Pe=Array.isArray(c.nodes)?c.nodes[0]:c.nodes)}Oe(),s=M,A=u;let bt=h;h=R,b=bt;let xt=p;p=F,k=xt,b.length=0,k.length=0,f=y.slice()}function ht(y){let E=s.get(y);E!==void 0&&pe(E.e,f[E.pos],E.id,E.pos)}function Et(){for(let[y,E]of s){E.e.dispose?.();let u=E.e.nodes;if(Array.isArray(u))for(let C of u)C.parentNode?.removeChild(C);else u.parentNode?.removeChild(u);for(let C of E.e.entities)x(C);d.delete(y)}s.clear(),A.clear(),f=[],h.length=0,p.length=0,b.length=0,k.length=0,i.parentNode?.removeChild(i)}return{reconcile:mt,refreshKey:ht,size:()=>s.size,dispose:Et}}function G(e){return e.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(e.childNodes):[e]}var tt=new WeakMap,De=new WeakMap,ce=new Map;function tn(e,t){tt.set(e,t)}function et(e){for(let t of e)t.parentNode?.removeChild(t)}function nn(e){if(typeof e!="string")return e;let t=document.getElementById(e);if(t===null)throw new Error(`memoized-dom: mount target '#${e}' was not found`);return t}function on(e,t){let n=nn(e);if(De.has(n))throw new Error("memoized-dom: mount target already owns an application");let o=tt.get(t);if(o===void 0)throw new Error("memoized-dom: mount received a component that is not a compiled application root");if(ce.has(o.id))throw new Error(`memoized-dom: root entity '${o.id}' is already mounted`);if(ce.size>0)throw new Error("memoized-dom: the runtime currently supports one mounted application");let r;try{r=o.create({mode:"create",host:n})}catch(l){throw x(o.id),l}let i=G(r);try{n.appendChild(r)}catch(l){throw x(o.id),et(i),l}let s=!0,d={host:n,rootId:o.id,nodes:i,get mounted(){return s},unmount(){if(s){s=!1,De.delete(n),ce.delete(o.id);try{x(o.id)}finally{et(i)}}}};return De.set(n,d),ce.set(o.id,d),d}var nt=new Map,ot=new Map;function rn(e,t,n){let o=t;o[e.handler]=n,o[e.rootKey]=e.root}function sn(e,t){let n=dn(t);return ln(e,n),{root:e,handler:n.handler,rootKey:n.root}}function dn(e){let t=ot.get(e);if(t!==void 0)return t;let n=an(e);return t=nt.get(n),t===void 0&&(t={handler:Symbol(`memo-dom:${n}:handler`),root:Symbol(`memo-dom:${n}:root`),roots:new WeakSet,type:n},nt.set(n,t)),ot.set(e,t),t}function ln(e,t){t.roots.has(e)||(t.roots.add(e),e.addEventListener(t.type,n=>{n.bubbles&&rt(e,t,n)}),e.addEventListener(t.type,n=>{n.bubbles||rt(e,t,n)},!0))}function rt(e,t,n){let o=typeof n.composedPath=="function"?n.composedPath():cn(n.target,e);for(let r of o){if(r===void 0)continue;let i=r;if(i[t.root]===e){let s=i[t.handler];s!==void 0&&s.call(r,n)===!1&&n.preventDefault()}if(r===e||n.cancelBubble)break}}function cn(e,t){let n=[],o=e;for(;o!==null&&(n.push(o),o!==t);)o="parentNode"in o?o.parentNode:null;return n}function an(e){let t=e.startsWith("on")?e.slice(2).toLowerCase():e.toLowerCase();return t==="doubleclick"?"dblclick":t}var ae=new WeakMap,fn=new Set(["animation-iteration-count","border-image-outset","border-image-slice","border-image-width","column-count","flex","flex-grow","flex-shrink","font-weight","grid-column","grid-row","line-height","opacity","order","orphans","scale","tab-size","widows","z-index","zoom"]);function fe(e){let t=[];return it(e,t),t.join(" ")}function Ne(e,t){let n=fe(t);e.namespaceURI==="http://www.w3.org/2000/svg"?n===""?e.removeAttribute("class"):e.setAttribute("class",n):e.className=n}function Me(e,t){let n=e.style;if(n===void 0)return;if(typeof t=="string"){let i=ae.get(e);if(i?.size===1&&i.get("$cssText")===t)return;n.cssText=t,ae.set(e,new Map([["$cssText",t]]));return}let o=new Map;if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){if(s==null)continue;let d=un(i);o.set(d,pn(d,s))}let r=ae.get(e)??new Map;r.has("$cssText")&&(n.cssText="");for(let i of r.keys())i!=="$cssText"&&!o.has(i)&&n.removeProperty(i);for(let[i,s]of o)r.get(i)!==s&&n.setProperty(i,s);ae.set(e,o)}function it(e,t){if(e==null||e===!1||e===!0)return;if(Array.isArray(e)){for(let o of e)it(o,t);return}if(typeof e=="object"){for(let[o,r]of Object.entries(e))r&&t.push(o);return}let n=String(e).trim();n!==""&&t.push(n)}function un(e){return e.startsWith("--")||e.includes("-")?e:e.replace(/^ms([A-Z])/,"ms-$1").replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function pn(e,t){return typeof t=="number"&&t!==0&&!e.startsWith("--")&&!fn.has(e)?`${t}px`:String(t)}var st=new WeakMap,dt=new WeakMap,yn=new Set(["innerHTML","checked","value","selected","disabled","hidden","multiple","required","readOnly","muted","open","controls","loop","autoFocus","autoPlay","tabIndex"]),lt={className:"class",htmlFor:"for",readOnly:"readonly",autoFocus:"autofocus",autoPlay:"autoplay",tabIndex:"tabindex",crossOrigin:"crossorigin"},gn={className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",dominantBaseline:"dominant-baseline",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",textAnchor:"text-anchor",vectorEffect:"vector-effect",xlinkHref:"xlink:href"},mn={doubleclick:"dblclick"};function hn(e,t,n,o=[]){let r=t!==null&&typeof t=="object"?t:{},i=st.get(e)??new Map,s=new Set(o);for(let l of i.keys())Object.prototype.hasOwnProperty.call(r,l)||ct(e,l,null,i,n,s);for(let[l,f]of Object.entries(r))ct(e,l,f,i,n,s);let d=new Map;for(let[l,f]of Object.entries(r))d.set(l,ft(l,f));st.set(e,d)}function at(e,t,n){if(t==="class"||t==="className"){Ne(e,n);return}if(t==="style"){Me(e,n);return}bn(e,t,n)}function ct(e,t,n,o,r,i){if(t==="key"||t==="children"||t==="ref")return;if(/^on[A-Z]/.test(t)){En(e,t,typeof n=="function"?n:null,r,i.has(t));return}let s=ft(t,n);Object.is(o.get(t),s)||at(e,t,n)}function ft(e,t){return e==="class"||e==="className"?fe(t):e==="style"?Symbol("style-snapshot"):t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function En(e,t,n,o,r){let i=dt.get(e);i===void 0&&(i=new Map,dt.set(e,i));let s=i.get(t);if(s?.source===n||(s!==void 0&&(e.removeEventListener(s.type,s.listener),i.delete(t)),n===null))return;let d=wn(t),l=r?n:function(h){let p=n.call(this,h);return L(o),p!==null&&typeof p=="object"&&"then"in p&&typeof p.then=="function"&&p.then(()=>{L(o)}),p};e.addEventListener(d,l),i.set(t,{source:n,listener:l,type:d})}function wn(e){let t=e.slice(2).toLowerCase();return mn[t]??t}function bn(e,t,n){let o=e.namespaceURI!=="http://www.w3.org/2000/svg";if(o&&yn.has(t)){if(t==="tabIndex"&&n==null){e.removeAttribute("tabindex");return}e[t]=n??xn(t);return}let r=o?lt[t]??t:gn[t]??lt[t]??t;n==null||n===!1?e.removeAttribute(r):n===!0?e.setAttribute(r,""):!o&&t==="xlinkHref"?e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",String(n)):e.setAttribute(r,String(n))}function xn(e){return e==="value"||e==="innerHTML"?"":!1}var J=new Map,$=new Map,ut=!1;function pt(e){$.delete(e.id);let t=J.get(e.factory);t?.delete(e),t?.size===0&&J.delete(e.factory)}function vn(){ut||(ut=!0,ee(e=>{let t=$.get(e);t!==void 0&&pt(t)}))}function kn(e,t,n,o,r){vn();let i=$.get(t);i!==void 0&&pt(i);let s={factory:e,id:t,parent:n,nodes:o,props:r};$.set(t,s);let d=J.get(e)??new Set;d.add(s),J.set(e,d)}function yt(e,t){if($.get(e.id)!==e)return;let n=e.nodes.find(l=>l.parentNode!==null),o=n?.parentNode,i=n?.ownerDocument?.createComment("memoized-dom-hmr");n!==void 0&&o!==void 0&&o!==null&&i!==void 0&&o.insertBefore(i,n),x(e.id);for(let l of e.nodes)l.parentNode?.removeChild(l);let s=e.props===null?t(e.id,e.parent):t(e.id,e.parent,e.props),d=G(s);if(i?.parentNode!==null&&i?.parentNode!==void 0){let l=i.parentNode;for(let f of d)l.insertBefore(f,i);l.removeChild(i)}}function Cn(e,t){let n=[...J.get(e)??[]];for(let o of n)yt(o,t);return n.length}function Rn(){let e=[...$.values()].filter(t=>t.parent===null);for(let t of e)yt(t,t.factory)}function In(e,t){if(e.some(([,o,r])=>o===void 0||r)){Rn();return}let n=0;for(let[o,r]of e)r!==void 0&&(n+=Cn(o,r));n===0&&L(t)}function Tn(e,t){Ie(e);let n=encodeURIComponent(e),o=`${t}/$computed/${n}#`,r=`${t}/$module-effects/${n}/`;for(let i of[..._()])(i.startsWith(o)||i.startsWith(r))&&x(i)}function Sn(e,t,n,o){let r=document.createComment(`when:${t}`);e.appendChild(r);let i=-1,s=null;function d(){let f=n();if(f===i){s?.update();return}if(s!==null){s.dispose?.();for(let p of s.nodes)p.parentNode?.removeChild(p);s=null}let h=o[f]??null;if(h!==null){s=h();for(let p=s.nodes.length-1;p>=0;p--)r.parentNode.insertBefore(s.nodes[p],r)}i=f}function l(){if(s!==null){s.dispose?.();for(let f of s.nodes)f.parentNode?.removeChild(f);s=null}r.parentNode?.removeChild(r),i=-1}return d(),{update:d,index:()=>i,dispose:l}}var ue=new Map;function An(e,t){ue.set(e,t)}function Dn(e,t){let n=ue.get(e);if(n===void 0)return;let o=n.length!==t.length;if(!o){for(let r=0;r<t.length;r++)if(!Object.is(n[r],t[r])){o=!0;break}}if(o){n.length=t.length;for(let r=0;r<t.length;r++)n[r]=t[r];N(e)}}function fo(e){return ue.get(e)}te((e,t)=>{t==="remove"&&ue.delete(e)});export{kt as a,Ct as b,ne as c,x as d,It as e,K as f,Ee as g,Tt as h,_ as i,N as j,O as k,L as l,Ue as m,Ln as n,re as o,Dt as p,Ze as q,Nt as r,Mt as s,Lt as t,Ht as u,Ft as v,Pt as w,Ot as x,Wt as y,$t as z,Vt as A,Ie as B,jt as C,Te as D,le as E,Se as F,Ae as G,_t as H,Ut as I,Ye as J,qt as K,Gt as L,en as M,G as N,tn as O,on as P,rn as Q,sn as R,fe as S,Ne as T,Me as U,hn as V,at as W,kn as X,In as Y,Tn as Z,Sn as _,An as $,Dn as aa,fo as ba};
@@ -5,5 +5,12 @@
5
5
  * root that owns it. This avoids a listener and a handler-record allocation
6
6
  * per row while allowing nested delegated roots to dispatch independently.
7
7
  */
8
- export declare function setDelegatedEvent(root: EventTarget, element: EventTarget, jsxName: string, handler: EventListener): void;
8
+ export interface DelegatedEventBinding {
9
+ root: EventTarget;
10
+ handler: symbol;
11
+ rootKey: symbol;
12
+ }
13
+ export declare function setDelegatedEvent(binding: DelegatedEventBinding, element: EventTarget, handler: EventListener): void;
14
+ /** Resolve one event type and install its root listeners once per list. */
15
+ export declare function createDelegatedEventBinding(root: EventTarget, jsxName: string): DelegatedEventBinding;
9
16
  //# sourceMappingURL=delegated-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delegated-events.d.ts","sourceRoot":"","sources":["../src/delegated-events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,GACrB,IAAI,CAkCN"}
1
+ {"version":3,"file":"delegated-events.d.ts","sourceRoot":"","sources":["../src/delegated-events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,GACrB,IAAI,CAIN;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,MAAM,GACd,qBAAqB,CAIvB"}
package/dist/hot.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ /** Dev-only ownership and replacement for compiler-emitted component roots. */
2
+ import { type EntityId } from './kernel';
3
+ export type HotComponentFactory = (id: string, parent: string | null, props?: unknown[]) => Node;
4
+ export type HotComponentUpdate = readonly [
5
+ previous: HotComponentFactory,
6
+ next: HotComponentFactory | undefined,
7
+ lightweight: boolean
8
+ ];
9
+ export declare function registerHotComponent(factory: HotComponentFactory, id: EntityId, parent: EntityId | null, nodes: Node[], props: unknown[] | null): void;
10
+ /** Apply one accepted Vite module update to its live component instances. */
11
+ export declare function applyHotUpdate(updates: readonly HotComponentUpdate[], rootId: EntityId): void;
12
+ /** Remove stale module-owned singleton entities and analysis before reevaluation. */
13
+ export declare function disposeHotModule(moduleId: string, rootId: EntityId): void;
14
+ //# sourceMappingURL=hot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hot.d.ts","sourceRoot":"","sources":["../src/hot.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,mBAAmB,GAAG,CAChC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,CAAC,EAAE,OAAO,EAAE,KACd,IAAI,CAAC;AAUV,MAAM,MAAM,kBAAkB,GAAG,SAAS;IACxC,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,mBAAmB,GAAG,SAAS;IACrC,WAAW,EAAE,OAAO;CACrB,CAAC;AAyBF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,EAC5B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,QAAQ,GAAG,IAAI,EACvB,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,GACtB,IAAI,CASN;AAkDD,6EAA6E;AAC7E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,MAAM,EAAE,QAAQ,GACf,IAAI,CAYN;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAUzE"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * The compiler emits `import * as MD from '<runtimePath>'` and calls every
5
5
  * primitive through the `MD.` namespace, so this barrel must re-export the
6
- * full runtime surface. User code never imports from here directly; only
7
- * compiler-emitted modules do.
6
+ * full runtime surface. Ordinary browser entries additionally import mount;
7
+ * reactive and emission primitives remain compiler-owned.
8
8
  */
9
9
  export { register, unregister, unregisterSubtree, registeredIds, has, markDirty, undirty, markDirtySubtree, commit, setScheduler, resetScheduler, getEntity, renderDescendants, } from './kernel';
10
10
  export type { DirtyReasonInput, DirtyReasons, Entity, EntityId, } from './kernel';
@@ -14,18 +14,22 @@ export { mountRef } from './refs';
14
14
  export type { RefCallback, RefValue } from './refs';
15
15
  export { registerConditionalEffect, registerEffect } from './effect';
16
16
  export type { EffectCallback, EffectCondition } from './effect';
17
- export { setText, setClassName, setClass, setAttr, setProp, setStyle, computedChanged, } from './setters';
17
+ export { setText, setClassName, setClass, setAttr, setProp, setStyle, computedChanged, effectAssignmentChanged, } from './setters';
18
18
  export type { SlotCache } from './setters';
19
- export { installAccessTable, resetAccessTable, resolveWrites, resolveStaticWrites, isOpaque, getRootId, } from './access';
19
+ export { installAccessTable, resetAccessTable, uninstallAccessTable, resolveWrites, resolveStaticWrites, isOpaque, getRootId, } from './access';
20
20
  export type { AccessTable } from './access';
21
21
  export { commitWrites, commitWritesWithPayload, handle, getEventLog, clearEventLog, } from './events';
22
22
  export type { EventRecord } from './events';
23
23
  export { createListRegion } from './list';
24
24
  export type { ListRegion, ListEntry, KeyFn } from './list';
25
25
  export { rootNodes } from './jsx-dom';
26
- export { setDelegatedEvent } from './delegated-events';
26
+ export { mount, registerRootFactory } from './mount';
27
+ export type { MountableComponent, MountTarget, MountedApplication, RootMountContext, } from './mount';
28
+ export { createDelegatedEventBinding, setDelegatedEvent, type DelegatedEventBinding, } from './delegated-events';
27
29
  export { patchDomProps, setDomValue } from './dom-props';
28
30
  export { classValue, setClassValue, setStyleValue } from './dom-values';
31
+ export { applyHotUpdate, disposeHotModule, registerHotComponent, } from './hot';
32
+ export type { HotComponentFactory, HotComponentUpdate } from './hot';
29
33
  export { createCondRegion } from './cond';
30
34
  export { registerProps, setProps } from './props';
31
35
  export type { CondRegion, CondEntry, CondBranchFactory } from './cond';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,MAAM,EACN,WAAW,EACX,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,GAAG,EACH,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,YAAY,EACZ,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,QAAQ,GACT,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,eAAe,EACf,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,MAAM,EACN,WAAW,EACX,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACrD,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{A as z,B as A,C as B,D as C,E as D,F as E,G as F,H as G,I as H,J as I,K as J,L as K,M as L,N as M,O as N,P as O,Q as P,R as Q,S as R,T as S,U as T,a,b,c,d,e,f,g,h,i,j,k,l,m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunks/chunk-JXSWX52U.js";export{M as classValue,n as cleanup,F as clearEventLog,m as commit,G as commitWrites,H as commitWritesWithPayload,x as computedChanged,R as createCondRegion,J as createListRegion,g as getEntity,E as getEventLog,B as getRootId,I as handle,f as has,y as installAccessTable,A as isOpaque,j as markDirty,l as markDirtySubtree,o as mountRef,P as patchDomProps,c as register,q as registerConditionalEffect,p as registerEffect,S as registerProps,i as registeredIds,h as renderDescendants,z as resetAccessTable,b as resetScheduler,C as resolveStaticWrites,D as resolveWrites,K as rootNodes,u as setAttr,t as setClass,s as setClassName,N as setClassValue,L as setDelegatedEvent,Q as setDomValue,v as setProp,T as setProps,a as setScheduler,w as setStyle,O as setStyleValue,r as setText,k as undirty,e as unregister,d as unregisterSubtree};
1
+ import{$ as _,A as z,B as A,C as B,D as C,E as D,F as E,G as F,H as G,I as H,J as I,K as J,L as K,M as L,N as M,O as N,P as O,Q as P,R as Q,S as R,T as S,U as T,V as U,W as V,X as W,Y as X,Z as Y,_ as Z,a,aa as $,b,c,d,e,f,g,h,i,j,k,l,m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunks/chunk-S23GGVHN.js";export{X as applyHotUpdate,R as classValue,n as cleanup,H as clearEventLog,m as commit,I as commitWrites,J as commitWritesWithPayload,x as computedChanged,Z as createCondRegion,Q as createDelegatedEventBinding,L as createListRegion,Y as disposeHotModule,y as effectAssignmentChanged,g as getEntity,G as getEventLog,D as getRootId,K as handle,f as has,z as installAccessTable,C as isOpaque,j as markDirty,l as markDirtySubtree,O as mount,o as mountRef,U as patchDomProps,c as register,q as registerConditionalEffect,p as registerEffect,W as registerHotComponent,_ as registerProps,N as registerRootFactory,i as registeredIds,h as renderDescendants,B as resetAccessTable,b as resetScheduler,E as resolveStaticWrites,F as resolveWrites,M as rootNodes,u as setAttr,t as setClass,s as setClassName,S as setClassValue,P as setDelegatedEvent,V as setDomValue,v as setProp,$ as setProps,a as setScheduler,w as setStyle,T as setStyleValue,r as setText,k as undirty,A as uninstallAccessTable,e as unregister,d as unregisterSubtree};
package/dist/kernel.d.ts CHANGED
@@ -36,6 +36,8 @@ export interface Entity {
36
36
  id: EntityId;
37
37
  parent: EntityId | null;
38
38
  render: (reasons?: DirtyReasons) => void;
39
+ /** Opaque pull state is conservatively reevaluated once per browser frame. */
40
+ volatile?: boolean;
39
41
  /** Effects drain only after all ordinary render work is complete. */
40
42
  phase?: 'render' | 'effect';
41
43
  depth?: number;
@@ -44,7 +46,7 @@ export interface Entity {
44
46
  type Scheduler = (fn: () => void) => void;
45
47
  /** Swap the scheduling policy (tests, SSR, custom frame loops). */
46
48
  export declare function setScheduler(fn: Scheduler): void;
47
- /** Restore the environment default (rAF / setTimeout). */
49
+ /** Restore the environment default (microtask). */
48
50
  export declare function resetScheduler(): void;
49
51
  /** Current registry generation (see above). Introspection/resolver only. */
50
52
  export declare function registryGeneration(): number;
@@ -116,7 +118,7 @@ export declare function markDirtySubtree(id: EntityId): void;
116
118
  *
117
119
  * PUBLIC API (M5.6): this is the "flush now" entry point — the memo-dom
118
120
  * equivalent of React's flushSync / Svelte 5's flushSync. With the default
119
- * frame scheduler, `markDirty`/`commitWrites` only SCHEDULE a commit; call
121
+ * microtask scheduler, `markDirty`/`commitWrites` only SCHEDULE a commit; call
120
122
  * `commit()` to run it synchronously (tests, boundary integrations where a
121
123
  * host requires synchronous DOM, e.g. the dom-reconciler-bench contract).
122
124
  * Prefer `setScheduler(fn => fn())` when the WHOLE app should be sync.
@@ -125,5 +127,6 @@ export declare function commit(): void;
125
127
  export declare function _internals(): {
126
128
  registry: ReadonlyMap<EntityId, Entity>;
127
129
  dirtySet: ReadonlySet<EntityId>;
130
+ volatileSet: ReadonlySet<EntityId>;
128
131
  };
129
132
  //# sourceMappingURL=kernel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,qEAAqE;IACrE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;CAC1B;AAWD,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAS1C,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEhD;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAwBD,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;;GAKG;AACH,KAAK,gBAAgB,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;AAGvE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;AAG5E,wBAAgB,eAAe,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAE3D;AAMD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAgB7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAgDpD;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE7C;AAED,wBAAgB,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAEzC;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA8BpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,SAAS,QAAQ,EAAE,CAGnD;AAKD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,EACZ,MAAM,CAAC,EAAE,gBAAgB,GACxB,IAAI,CAQN;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAWnD;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,IAAI,IAAI,CA8C7B;AAKD,wBAAgB,UAAU,IAAI;IAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACjC,CAEA"}
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,QAAQ,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;CAC1B;AAoCD,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAS1C,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEhD;AAED,mDAAmD;AACnD,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAwBD,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;;GAKG;AACH,KAAK,gBAAgB,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;AAGvE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;AAG5E,wBAAgB,eAAe,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAE3D;AAMD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAmB7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAiDpD;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAE7C;AAED,wBAAgB,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAEzC;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CA8BpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,SAAS,QAAQ,EAAE,CAGnD;AAKD;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,EACZ,MAAM,CAAC,EAAE,gBAAgB,GACxB,IAAI,CAQN;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAWnD;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,IAAI,IAAI,CA8C7B;AAKD,wBAAgB,UAAU,IAAI;IAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChC,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACpC,CAEA"}
package/dist/list.d.ts CHANGED
@@ -55,12 +55,17 @@ export interface ListEntry {
55
55
  }
56
56
  export type KeyFn<T> = (item: T, index: number) => unknown;
57
57
  export interface ListRegion<T> {
58
- reconcile(items: readonly T[]): void;
58
+ /**
59
+ * Reconcile collection identity and order. Compiler-proven topology-only
60
+ * writes may pass `false`: retained rows whose item reference is unchanged
61
+ * then skip content replay while inserted/replaced items still synchronize.
62
+ */
63
+ reconcile(items: readonly T[], syncRetained?: boolean): void;
59
64
  /** Re-sync one retained row through the region's O(1) key cache. */
60
65
  refreshKey(key: unknown): void;
61
66
  size(): number;
62
67
  /** Remove retained nodes and unregister every entity owned by the region. */
63
68
  dispose(): void;
64
69
  }
65
- export declare function createListRegion<T>(parent: Node, idPrefix: EntityId, create: (item: T, rowId: EntityId, index: number) => ListEntry, key?: KeyFn<T>): ListRegion<T>;
70
+ export declare function createListRegion<T>(parent: Node, idPrefix: EntityId, create: (item: T, rowId: EntityId, index: number) => ListEntry, key?: KeyFn<T>, trackRowIds?: boolean): ListRegion<T>;
66
71
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAyC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,WAAW,SAAS;IACxB,4EAA4E;IAC5E,KAAK,EAAE,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAK3D,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,IAAI,IAAI,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,IAAI,IAAI,CAAC;CACjB;AAiDD,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,EAC9D,GAAG,GAAE,KAAK,CAAC,CAAC,CAAe,GAC1B,UAAU,CAAC,CAAC,CAAC,CAmRf"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAyC,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,WAAW,SAAS;IACxB,4EAA4E;IAC5E,KAAK,EAAE,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAK3D,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7D,oEAAoE;IACpE,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,IAAI,IAAI,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,IAAI,IAAI,CAAC;CACjB;AAiDD,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,EAC9D,GAAG,GAAE,KAAK,CAAC,CAAC,CAAe,EAC3B,WAAW,UAAO,GACjB,UAAU,CAAC,CAAC,CAAC,CAiWf"}
@@ -0,0 +1,24 @@
1
+ /** Authored zero-argument component reference accepted by the browser entry. */
2
+ export type MountableComponent = () => unknown;
3
+ export type MountTarget = string | Element;
4
+ export interface RootMountContext {
5
+ readonly mode: 'create';
6
+ readonly host: Element;
7
+ }
8
+ interface RootFactoryDefinition {
9
+ id: string;
10
+ create(context: RootMountContext): Node;
11
+ }
12
+ export interface MountedApplication {
13
+ readonly host: Element;
14
+ readonly rootId: string;
15
+ readonly nodes: readonly Node[];
16
+ readonly mounted: boolean;
17
+ unmount(): void;
18
+ }
19
+ /** Compiler-emitted root metadata. Application code should call mount(). */
20
+ export declare function registerRootFactory(component: Function, definition: RootFactoryDefinition): void;
21
+ /** Mount one compiled application root into an ordinary DOM host. */
22
+ export declare function mount(target: MountTarget, component: MountableComponent): MountedApplication;
23
+ export {};
24
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC;AAC/C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,qBAAqB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,qBAAqB,GAChC,IAAI,CAEN;AAeD,qEAAqE;AACrE,wBAAgB,KAAK,CACnB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,kBAAkB,GAC5B,kBAAkB,CA6DpB"}
package/dist/setters.d.ts CHANGED
@@ -46,4 +46,6 @@ export declare function setStyle($: SlotCache, key: string, el: HTMLElement, pro
46
46
  * an in-place change.
47
47
  */
48
48
  export declare function computedChanged(prev: unknown, next: unknown): boolean;
49
+ /** Equal plain assignments inside effects do not create feedback work. */
50
+ export declare function effectAssignmentChanged(prev: unknown, next: unknown): boolean;
49
51
  //# sourceMappingURL=setters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setters.d.ts","sourceRoot":"","sources":["../src/setters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,sFAAsF;AACtF,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,GACb,IAAI,CAIN;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAC1B,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,IAAI,CAIN;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,IAAI,CAKN;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAYrE"}
1
+ {"version":3,"file":"setters.d.ts","sourceRoot":"","sources":["../src/setters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,sFAAsF;AACtF,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,GACb,IAAI,CAIN;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAC1B,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,IAAI,CAIN;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAIN;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,IAAI,CAKN;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAYrE;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAE7E"}
package/dist/testing.js CHANGED
@@ -1 +1 @@
1
- import{A as z,B as A,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V as r,a as p,b as e,c as t,d as x,e as f,f as m,g as n,h as s,i as _,j as a,k as i,l,m as B,n as o,o as b,p as c,q as d,r as g,s as h,t as j,u as k,v as q,w as u,x as v,y as w,z as y}from"./chunks/chunk-JXSWX52U.js";export{o as _internals,r as _propsBox,N as classValue,b as cleanup,G as clearEventLog,B as commit,H as commitWrites,I as commitWritesWithPayload,w as computedChanged,S as createCondRegion,K as createListRegion,n as getEntity,F as getEventLog,C as getRootId,J as handle,m as has,y as installAccessTable,A as isOpaque,a as markDirty,l as markDirtySubtree,c as mountRef,Q as patchDomProps,t as register,g as registerConditionalEffect,d as registerEffect,T as registerProps,_ as registeredIds,s as renderDescendants,z as resetAccessTable,e as resetScheduler,D as resolveStaticWrites,E as resolveWrites,L as rootNodes,q as setAttr,k as setClass,j as setClassName,O as setClassValue,M as setDelegatedEvent,R as setDomValue,u as setProp,U as setProps,p as setScheduler,v as setStyle,P as setStyleValue,h as setText,i as undirty,f as unregister,x as unregisterSubtree};
1
+ import{$ as oo,A as z,B as A,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_ as $,a as p,aa as ro,b as e,ba as r,c as t,d as x,e as f,f as m,g as n,h as s,i as _,j as a,k as i,l,m as B,n as o,o as b,p as c,q as d,r as g,s as h,t as j,u as k,v as q,w as u,x as v,y as w,z as y}from"./chunks/chunk-S23GGVHN.js";export{o as _internals,r as _propsBox,Y as applyHotUpdate,S as classValue,b as cleanup,I as clearEventLog,B as commit,J as commitWrites,K as commitWritesWithPayload,w as computedChanged,$ as createCondRegion,R as createDelegatedEventBinding,M as createListRegion,Z as disposeHotModule,y as effectAssignmentChanged,n as getEntity,H as getEventLog,E as getRootId,L as handle,m as has,z as installAccessTable,D as isOpaque,a as markDirty,l as markDirtySubtree,P as mount,c as mountRef,V as patchDomProps,t as register,g as registerConditionalEffect,d as registerEffect,X as registerHotComponent,oo as registerProps,O as registerRootFactory,_ as registeredIds,s as renderDescendants,C as resetAccessTable,e as resetScheduler,F as resolveStaticWrites,G as resolveWrites,N as rootNodes,q as setAttr,k as setClass,j as setClassName,T as setClassValue,Q as setDelegatedEvent,W as setDomValue,u as setProp,ro as setProps,p as setScheduler,v as setStyle,U as setStyleValue,h as setText,i as undirty,A as uninstallAccessTable,f as unregister,x as unregisterSubtree};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memoized-dom/runtime",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Dependency-free runtime for compiler-analyzed memoized DOM updates",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1 +0,0 @@
1
- var x=new Map;function xe(e,t,n){if(n===void 0||Array.isArray(n)&&n.length===0){x.size!==0&&x.delete(e);return}if(!t){typeof n=="number"?x.set(e,n):n.length===1?x.set(e,n[0]):x.set(e,new Set(n));return}let o=x.get(e);if(o===void 0)return;let r=typeof n=="number"?[n]:n;if(typeof o=="number"){r.some(i=>i!==o)&&x.set(e,new Set([o,...r]));return}for(let i of r)o.add(i)}function ve(e){if(x.size===0)return null;let t=x.get(e)??null;return x.delete(e),t}function $(e){x.size!==0&&x.delete(e)}var b=new Map,v=new Set,Ie=typeof requestAnimationFrame=="function"?e=>requestAnimationFrame(e):e=>setTimeout(e,0),ie=Ie;function tt(e){ie=e}function nt(){ie=Ie}function rt(e){let t=0;for(let n=0;n<e.length;n++)e.charCodeAt(n)===47&&t++;return t}var H=null,Re=0;var Te=[],re=[];function Ce(e){re.includes(e)||re.push(e)}function B(e){Te.push(e)}function Se(e,t){for(let n of Te)n(e,t)}function K(e){let t=e.parent!==null?b.get(e.parent):void 0;e.depth=e.depth??(t&&t.depth!==void 0?t.depth+1:rt(e.id)),b.set(e.id,e),t&&(t.children??=new Set).add(e.id),H=null,Re++,Se(e.id,"add")}function R(e){let t=b.get(e);if(!t)return;t.parent!==null&&b.get(t.parent)?.children?.delete(e);let n=[e],o=[],r=[];for(;n.length>0;){let i=n.pop(),s=b.get(i);if(s&&(o.push(i),s.children))for(let l of s.children)n.push(l)}o.reverse();for(let i of o)b.delete(i),v.delete(i),$(i),Se(i,"remove");for(let i of o)for(let s of re){let l=s(i);l!==void 0&&r.push(...l)}if(H=null,Re++,r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,`[memo-dom] ${r.length} cleanup disposers failed while unregistering '${e}'`)}function ot(e){R(e)}function V(e){return b.has(e)}function se(e){return b.get(e)}function it(e){let t=r=>{if(r.children!==void 0)for(let i of r.children){let s=b.get(i);s!==void 0&&(s.phase!=="effect"&&(s.render(),M(i)),t(s))}},n=r=>{if(r.children!==void 0)for(let i of r.children){let s=b.get(i);s!==void 0&&(s.phase==="effect"&&(s.render(),M(i)),n(s))}},o=b.get(e);o!==void 0&&(t(o),n(o))}function de(){return H??=[...b.keys()],H}function C(e,t){if(!b.has(e))return;let n=v.has(e);(t!==void 0||n)&&xe(e,n,t),v.add(e),De()}function M(e){v.size!==0&&v.delete(e)&&$(e)}function A(e){let t=e+"/",n=!1;for(let o of b.keys())(o===e||o.startsWith(t))&&(v.add(o),$(o),n=!0);n&&De()}var oe=!1,F=!1;function De(){oe||F||(oe=!0,ie(Ae))}function Ae(){if(oe=!1,!F){F=!0;try{for(let e=0;e<100&&v.size>0;e++){let t=[];for(let r of v){let i=b.get(r);i?t.push(i):(v.delete(r),$(r))}let o=t.some(r=>r.phase!=="effect")?t.filter(r=>r.phase!=="effect"):t;o.sort((r,i)=>(r.depth??0)-(i.depth??0));for(let r of o)v.delete(r.id)&&r.render(ve(r.id))}if(v.size>0)throw new Error("[memo-dom] commit cascade exceeded 100 passes \u2014 an update is dirtying its own readers (cycle)")}finally{F=!1}}}function Qt(){return{registry:b,dirtySet:v}}var _=new Map,le=new Set,Le=!1;function st(){Le||(Le=!0,Ce(dt))}function q(e,t){if(typeof t!="function")throw new TypeError("[memo-dom] cleanup(disposer) requires a function");if(le.has(e))throw new Error(`[memo-dom] cannot register cleanup while '${e}' is being unregistered`);st();let n=_.get(e);return n===void 0&&(n=[],_.set(e,n)),n.push(t),t}function dt(e){let t=_.get(e);if(t===void 0)return[];_.delete(e),le.add(e);let n=[];try{for(let o=t.length-1;o>=0;o--)try{t[o]()}catch(r){n.push(r)}}finally{le.delete(e)}return n}function lt(e,t){let n=[],o=!0;try{Me(e,t,n)}catch(r){let i=Ne(n);throw i.length>0?new AggregateError([r,...i],"[memo-dom] ref setup and rollback failed"):r}return()=>{if(!o)return;o=!1;let r=Ne(n);if(r.length===1)throw r[0];if(r.length>1)throw new AggregateError(r,"[memo-dom] multiple ref cleanups failed")}}function Me(e,t,n){if(t==null||t===!1)return;if(Array.isArray(t)){for(let r of t)Me(e,r,n);return}if(typeof t!="function")throw new TypeError("[memo-dom] ref value must be a callback, an assignable JSX target, or an array of refs");let o=t(e);if(o!=null){if(typeof o!="function")throw new TypeError("[memo-dom] ref callback must return a cleanup function or nothing");n.push(o)}}function Ne(e){let t=[];for(let n=e.length-1;n>=0;n--)try{e[n]()}catch(o){t.push(o)}return e.length=0,t}function Pe(e,t,n){let o;V(e)&&R(e),K({id:e,parent:t,phase:"effect",render(){let r=o;o=void 0,r?.();let i=n();if(i!==void 0&&typeof i!="function")throw new TypeError(`[memo-dom] effect '${e}' must return a cleanup function or undefined`);o=typeof i=="function"?i:void 0}}),q(e,()=>{let r=o;o=void 0,r?.()}),C(e)}function ct(e,t,n,o){let r=`${e}/$active`,i=!1;V(e)&&R(e),K({id:e,parent:t,phase:"effect",render(){let s=!!n();s!==i&&(i=s,i?Pe(r,e,o):R(r))}}),q(e,()=>{i=!1,V(r)&&R(r)}),C(e)}function ft(e,t,n,o){e[t]!==o&&(e[t]=o,n.data=o==null||typeof o=="boolean"?"":String(o))}function at(e,t,n,o){e[t]!==o&&(e[t]=o,n.className=o)}function ut(e,t,n,o,r){e[t]!==r&&(e[t]=r,n.classList.toggle(o,r))}function pt(e,t,n,o,r){e[t]!==r&&(e[t]=r,r==null||r===!1?n.removeAttribute(o):r===!0?n.setAttribute(o,""):n.setAttribute(o,String(r)))}function yt(e,t,n,o,r){e[t]!==r&&(e[t]=r,n[o]=r)}function gt(e,t,n,o,r){e[t]!==r&&(e[t]=r,r==null?n.style.removeProperty(o):n.style.setProperty(o,r))}function ht(e,t){if(Array.isArray(e)&&Array.isArray(t)){if(e===t||e.length!==t.length)return!0;for(let n=0;n<e.length;n++)if(!Object.is(e[n],t[n])||ce(e[n]))return!0;return!1}return ce(e)||ce(t)?!0:!Object.is(e,t)}function ce(e){return typeof e=="object"&&e!==null||typeof e=="function"}var fe="",P=new Map,L=new Map,U=new Map,ae=new Set,ue=[],O=new Map,z=0,G=new Map,Z=new Map;function mt(){O=new Map;let e=de();for(let[t,n]of L){let o=new Set;for(let r of n)for(let i of e)r.test(i)&&o.add(i);O.set(t,o)}}B((e,t)=>{if(L.size===0)return;let n=!1;if(t==="add")for(let[o,r]of L){let i=O.get(o);if(i){for(let s of r)if(s.test(e)){i.add(e),n=!0;break}}}else for(let o of O.values())o.delete(e)&&(n=!0);n&&z++});function Et(e){if(!e.includes("*"))return null;let t=e.split("*").map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("[^/]*");return new RegExp(`^${t}$`)}function wt(e,t){fe=t;let n=new Set;for(let[o,r]of Object.entries(e.readers))for(let i of r){let s=`${o}${i}`;if(n.has(s))continue;n.add(s);let l=Et(i);if(l===null){let d=P.get(o)??[];d.includes(i)||d.push(i),P.set(o,d)}else{let d=L.get(o)??[];d.some(a=>a.source===l.source)||d.push(l),L.set(o,d)}}for(let[o,r]of Object.entries(e.params??{})){let i=U.get(o)??[];for(let s of r)i.includes(s.pattern)||i.push(s.pattern);U.set(o,i)}for(let o of e.opaque??[])ae.add(o);ue=[...new Set([...P.keys(),...L.keys()])],G.clear(),Z.clear(),mt(),z++}function bt(){fe="",P=new Map,L=new Map,U=new Map,ae=new Set,ue=[],O=new Map,G.clear(),Z.clear(),z++}function pe(e){return ae.has(e)}function J(){return fe}function ye(e){return e.some(pe)?"root-subtree":Oe(e)}function ge(e,t,n){if(e.some(pe))return"root-subtree";if(n){let o=new Set,r=!0;for(let i of e){let s=U.get(i);if(s===void 0||s.length===0){r=!1;break}for(let l of s){let d=!1,a=l.replace(/\{([^}]+)\}/g,(h,y)=>{let I=y.trim();if(!I.startsWith("payload."))return d=!0,"";let w=n;for(let D of I.slice(8).split(".")){if(w===null||typeof w!="object")return d=!0,"";w=w[D]}return w==null?(d=!0,""):String(w)});if(d){r=!1;break}o.add(a)}if(!r)break;for(let l of P.get(i)??[])o.add(l)}if(r&&o.size>0)return[...o]}return Oe(e)}function Oe(e){let t=e.length===1?e[0]:e.join(" "),n=Z.get(t);if(n!==void 0&&n.v===z)return n.result;let o=new Set,r=new Set;for(let s of e){let l=G.get(s);if(l===void 0){l=[];for(let d of ue)(d===s||d.startsWith(`${s}.`)||s.startsWith(`${d}.`))&&l.push(d);G.set(s,l)}for(let d of l)r.add(d)}for(let s of r){for(let l of P.get(s)??[])o.add(l);for(let l of O.get(s)??[])o.add(l)}let i=[...o];return Z.set(t,{v:z,result:i}),i}var kt=1e3,j=[];function xt(){return j}function vt(){j.length=0}function We(e){let t=ye(e);if(t==="root-subtree"){A(J());return}for(let n of t)C(n)}function It(e,t){let n=ge(e,[],t);if(n==="root-subtree"){A(J());return}for(let o of n)C(o)}function Rt(e,t,n){return o=>{n(o),j.push({origin:e,writes:t,at:Date.now()}),j.length>kt&&j.shift(),We(t)}}var Tt=e=>e,Ct=[],St=[],Dt=[];function At(e){let t=e.length,n=Ct,o=St,r=Dt;n.length=t,r.length=t,o.length=0;for(let s=0;s<t;s++)n[s]=!1,r[s]=-1;for(let s=0;s<t;s++){let l=e[s];if(l<0)continue;let d=0,a=o.length;for(;d<a;){let h=d+a>>1;e[o[h]]<l?d=h+1:a=h}o[d]=s,d>0&&(r[s]=o[d-1])}let i=o.length>0?o[o.length-1]:-1;for(;i>=0;)n[i]=!0,i=r[i];return n}function Lt(e,t,n,o=Tt){let r=document.createComment(`list:${t}`);e.appendChild(r);let i=new Map,s=new Map,l=0,d=[],a=[],h=[],y=new Map,I=[],w=[],D=[];function ee(p,u,m,k){if(p.updateProps?.(u,k),p.update!==void 0)p.update(),M(m);else{let S=se(m);S&&(S.render(),M(m))}}function Ue(p){let u=typeof p;if(u==="string"||u==="number"||u==="boolean"||u==="bigint")return`${t}/Row[${String(p)}]`;let m=s.get(p);return m===void 0&&(m=`#${++l}`,s.set(p,m)),`${t}/Row[${m}]`}function Ge(p){if(p.length===d.length){let c=!0;for(let f=0;f<p.length;f++)if(p[f]!==d[f]){c=!1;break}if(c){for(let f=0;f<p.length;f++)ee(a[f],p[f],h[f],f);return}}let u=i,m=u.size===0;y.clear();let k=y,S=w,T=I,te=p.length;S.length=te,T.length=te,D.length=m?0:te;let ne=!1,Ee=!0,we=-1;for(let c=0;c<p.length;c++){let f=p[c],E=o(f,c);if(k.has(E))throw new Error(`[memo-dom] duplicate list key: ${String(E)}`);let g=m?void 0:u.get(E);if(g!==void 0)u.delete(E),D[c]=g.pos,g.pos<=we?Ee=!1:we=g.pos,g.pos=c,ee(g.e,f,g.id,c);else{let N=Ue(E);g={e:n(f,N,c),id:N,pos:c},m||(D[c]=-1),ne=!0}k.set(E,g),T[c]=g.e,S[c]=g.id}if(m&&ne){let c=document.createDocumentFragment();for(let g=0;g<T.length;g++){let N=T[g].nodes;if(Array.isArray(N))for(let et of N)c.appendChild(et);else c.appendChild(N)}e.insertBefore(c,r),i=k,y=u;let f=a;a=T,I=f;let E=h;h=S,w=E,I.length=0,w.length=0,d=p.slice();return}if(!ne&&u.size===0&&Ee){i=k,y=u;let c=a;a=T,I=c;let f=h;h=S,w=f,I.length=0,w.length=0,d=p.slice();return}for(let[c,f]of u){f.e.dispose?.();let E=f.e.nodes;if(Array.isArray(E))for(let g of E)g.parentNode?.removeChild(g);else E.parentNode?.removeChild(E);for(let g of f.e.entities)R(g);s.delete(c)}u.clear();let Xe=At(D),be=r,W=null,ke=()=>{if(W===null)return;let c=document.createDocumentFragment();for(let f=W.length-1;f>=0;f--){let E=W[f].nodes;if(Array.isArray(E))for(let g of E)c.appendChild(g);else c.appendChild(E)}e.insertBefore(c,be),W=null};for(let c=T.length-1;c>=0;c--){let f=T[c];D[c]===-1||!Xe[c]?(W??=[]).push(f):(ke(),be=Array.isArray(f.nodes)?f.nodes[0]:f.nodes)}ke(),i=k,y=u;let Qe=a;a=T,I=Qe;let Ye=h;h=S,w=Ye,I.length=0,w.length=0,d=p.slice()}function Ze(p){let u=i.get(p);u!==void 0&&ee(u.e,d[u.pos],u.id,u.pos)}function Je(){for(let[p,u]of i){u.e.dispose?.();let m=u.e.nodes;if(Array.isArray(m))for(let k of m)k.parentNode?.removeChild(k);else m.parentNode?.removeChild(m);for(let k of u.e.entities)R(k);s.delete(p)}i.clear(),y.clear(),d=[],a.length=0,h.length=0,I.length=0,w.length=0,r.parentNode?.removeChild(r)}return{reconcile:Ge,refreshKey:Ze,size:()=>i.size,dispose:Je}}function Nt(e){return e.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(e.childNodes):[e]}var $e=new Map,Ve=new Map;function Mt(e,t,n,o){let r=Ve.get(n);if(r===void 0){let s=Ot(n);r=$e.get(s),r===void 0&&(r={handler:Symbol(`memo-dom:${s}:handler`),root:Symbol(`memo-dom:${s}:root`),roots:new WeakSet,type:s},$e.set(s,r)),Ve.set(n,r)}let i=t;i[r.handler]=o,i[r.root]=e,r.roots.has(e)||(r.roots.add(e),e.addEventListener(r.type,s=>{s.bubbles&&ze(e,r,s)}),e.addEventListener(r.type,s=>{s.bubbles||ze(e,r,s)},!0))}function ze(e,t,n){let o=typeof n.composedPath=="function"?n.composedPath():Pt(n.target,e);for(let r of o){let i=r;if(i[t.root]===e){let s=i[t.handler];s!==void 0&&s.call(r,n)===!1&&n.preventDefault()}if(r===e||n.cancelBubble)break}}function Pt(e,t){let n=[],o=e;for(;o!==null&&(n.push(o),o!==t);)o="parentNode"in o?o.parentNode:null;return n}function Ot(e){let t=e.startsWith("on")?e.slice(2).toLowerCase():e.toLowerCase();return t==="doubleclick"?"dblclick":t}var X=new WeakMap,Wt=new Set(["animation-iteration-count","border-image-outset","border-image-slice","border-image-width","column-count","flex","flex-grow","flex-shrink","font-weight","grid-column","grid-row","line-height","opacity","order","orphans","scale","tab-size","widows","z-index","zoom"]);function Q(e){let t=[];return je(e,t),t.join(" ")}function he(e,t){let n=Q(t);e.namespaceURI==="http://www.w3.org/2000/svg"?n===""?e.removeAttribute("class"):e.setAttribute("class",n):e.className=n}function me(e,t){let n=e.style;if(n===void 0)return;if(typeof t=="string"){let i=X.get(e);if(i?.size===1&&i.get("$cssText")===t)return;n.cssText=t,X.set(e,new Map([["$cssText",t]]));return}let o=new Map;if(t!==null&&typeof t=="object")for(let[i,s]of Object.entries(t)){if(s==null)continue;let l=$t(i);o.set(l,Vt(l,s))}let r=X.get(e)??new Map;r.has("$cssText")&&(n.cssText="");for(let i of r.keys())i!=="$cssText"&&!o.has(i)&&n.removeProperty(i);for(let[i,s]of o)r.get(i)!==s&&n.setProperty(i,s);X.set(e,o)}function je(e,t){if(e==null||e===!1||e===!0)return;if(Array.isArray(e)){for(let o of e)je(o,t);return}if(typeof e=="object"){for(let[o,r]of Object.entries(e))r&&t.push(o);return}let n=String(e).trim();n!==""&&t.push(n)}function $t(e){return e.startsWith("--")||e.includes("-")?e:e.replace(/^ms([A-Z])/,"ms-$1").replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Vt(e,t){return typeof t=="number"&&t!==0&&!e.startsWith("--")&&!Wt.has(e)?`${t}px`:String(t)}var Fe=new WeakMap,He=new WeakMap,zt=new Set(["innerHTML","checked","value","selected","disabled","hidden","multiple","required","readOnly","muted","open","controls","loop","autoFocus","autoPlay","tabIndex"]),Be={className:"class",htmlFor:"for",readOnly:"readonly",autoFocus:"autofocus",autoPlay:"autoplay",tabIndex:"tabindex",crossOrigin:"crossorigin"},jt={className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",dominantBaseline:"dominant-baseline",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",stopColor:"stop-color",stopOpacity:"stop-opacity",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",textAnchor:"text-anchor",vectorEffect:"vector-effect",xlinkHref:"xlink:href"},Ft={doubleclick:"dblclick"};function Ht(e,t,n,o=[]){let r=t!==null&&typeof t=="object"?t:{},i=Fe.get(e)??new Map,s=new Set(o);for(let d of i.keys())Object.prototype.hasOwnProperty.call(r,d)||Ke(e,d,null,i,n,s);for(let[d,a]of Object.entries(r))Ke(e,d,a,i,n,s);let l=new Map;for(let[d,a]of Object.entries(r))l.set(d,qe(d,a));Fe.set(e,l)}function _e(e,t,n){if(t==="class"||t==="className"){he(e,n);return}if(t==="style"){me(e,n);return}_t(e,t,n)}function Ke(e,t,n,o,r,i){if(t==="key"||t==="children"||t==="ref")return;if(/^on[A-Z]/.test(t)){Bt(e,t,typeof n=="function"?n:null,r,i.has(t));return}let s=qe(t,n);Object.is(o.get(t),s)||_e(e,t,n)}function qe(e,t){return e==="class"||e==="className"?Q(t):e==="style"?Symbol("style-snapshot"):t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function Bt(e,t,n,o,r){let i=He.get(e);i===void 0&&(i=new Map,He.set(e,i));let s=i.get(t);if(s?.source===n||(s!==void 0&&(e.removeEventListener(s.type,s.listener),i.delete(t)),n===null))return;let l=Kt(t),d=r?n:function(h){let y=n.call(this,h);return A(o),y!==null&&typeof y=="object"&&"then"in y&&typeof y.then=="function"&&y.then(()=>{A(o)}),y};e.addEventListener(l,d),i.set(t,{source:n,listener:d,type:l})}function Kt(e){let t=e.slice(2).toLowerCase();return Ft[t]??t}function _t(e,t,n){let o=e.namespaceURI!=="http://www.w3.org/2000/svg";if(o&&zt.has(t)){if(t==="tabIndex"&&n==null){e.removeAttribute("tabindex");return}e[t]=n??qt(t);return}let r=o?Be[t]??t:jt[t]??Be[t]??t;n==null||n===!1?e.removeAttribute(r):n===!0?e.setAttribute(r,""):!o&&t==="xlinkHref"?e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",String(n)):e.setAttribute(r,String(n))}function qt(e){return e==="value"||e==="innerHTML"?"":!1}function Ut(e,t,n,o){let r=document.createComment(`when:${t}`);e.appendChild(r);let i=-1,s=null;function l(){let a=n();if(a===i){s?.update();return}if(s!==null){s.dispose?.();for(let y of s.nodes)y.parentNode?.removeChild(y);s=null}let h=o[a]??null;if(h!==null){s=h();for(let y=s.nodes.length-1;y>=0;y--)r.parentNode.insertBefore(s.nodes[y],r)}i=a}function d(){if(s!==null){s.dispose?.();for(let a of s.nodes)a.parentNode?.removeChild(a);s=null}r.parentNode?.removeChild(r),i=-1}return l(),{update:l,index:()=>i,dispose:d}}var Y=new Map;function Gt(e,t){Y.set(e,t)}function Zt(e,t){let n=Y.get(e);if(n===void 0)return;let o=n.length!==t.length;if(!o){for(let r=0;r<t.length;r++)if(!Object.is(n[r],t[r])){o=!0;break}}if(o){n.length=t.length;for(let r=0;r<t.length;r++)n[r]=t[r];C(e)}}function vn(e){return Y.get(e)}B((e,t)=>{t==="remove"&&Y.delete(e)});export{tt as a,nt as b,K as c,R as d,ot as e,V as f,se as g,it as h,de as i,C as j,M as k,A as l,Ae as m,Qt as n,q as o,lt as p,Pe as q,ct as r,ft as s,at as t,ut as u,pt as v,yt as w,gt as x,ht as y,wt as z,bt as A,pe as B,J as C,ye as D,ge as E,xt as F,vt as G,We as H,It as I,Rt as J,Lt as K,Nt as L,Mt as M,Q as N,he as O,me as P,Ht as Q,_e as R,Ut as S,Gt as T,Zt as U,vn as V};