@ryupold/vode 1.8.7 → 1.8.8

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/dist/vode.js CHANGED
@@ -332,7 +332,7 @@ var V = (() => {
332
332
  }
333
333
  });
334
334
  function renderDom(isAsync) {
335
- const sw = Date.now();
335
+ const sw = performance.now();
336
336
  const vom = dom(_vode.state);
337
337
  _vode.vode = render(_vode.state, container.parentElement, 0, 0, _vode.vode, vom);
338
338
  if (container.tagName.toUpperCase() !== vom[0].toUpperCase()) {
@@ -340,7 +340,7 @@ var V = (() => {
340
340
  container._vode = _vode;
341
341
  }
342
342
  if (!isAsync) {
343
- _vode.stats.lastSyncRenderTime = Date.now() - sw;
343
+ _vode.stats.lastSyncRenderTime = performance.now() - sw;
344
344
  _vode.stats.syncRenderCount++;
345
345
  _vode.isRendering = false;
346
346
  if (_vode.qSync) _vode.renderSync();
@@ -369,14 +369,14 @@ var V = (() => {
369
369
  await globals.currentViewTransition?.updateCallbackDone;
370
370
  if (_vode.isAnimating || !_vode.qAsync || document.hidden) return;
371
371
  _vode.isAnimating = true;
372
- const sw = Date.now();
372
+ const sw = performance.now();
373
373
  try {
374
374
  _vode.state = mergeState(_vode.state, _vode.qAsync, true);
375
375
  _vode.qAsync = null;
376
376
  globals.currentViewTransition = _vode.asyncRenderer(ar);
377
377
  await globals.currentViewTransition?.updateCallbackDone;
378
378
  } finally {
379
- _vode.stats.lastAsyncRenderTime = Date.now() - sw;
379
+ _vode.stats.lastAsyncRenderTime = performance.now() - sw;
380
380
  _vode.stats.asyncRenderCount++;
381
381
  _vode.isAnimating = false;
382
382
  }
@@ -475,11 +475,15 @@ var V = (() => {
475
475
  return void 0;
476
476
  }
477
477
  }
478
- function memo(compare, componentOrProps) {
478
+ function memo(compare, component) {
479
479
  if (!compare || !Array.isArray(compare)) throw new Error("first argument to memo() must be an array of values to compare");
480
- if (typeof componentOrProps !== "function") throw new Error("second argument to memo() must be a function that returns a vode or props object");
481
- componentOrProps.__memo = compare;
482
- return componentOrProps;
480
+ if (typeof component !== "function") throw new Error("second argument to memo() must be a function that returns a child vode");
481
+ if (component.__memo) {
482
+ const comp = component;
483
+ component = (s) => comp(s);
484
+ }
485
+ component.__memo = compare;
486
+ return component;
483
487
  }
484
488
  function createState(state) {
485
489
  if (!state || typeof state !== "object") throw new Error("createState() must be called with a state object");
@@ -604,7 +608,7 @@ var V = (() => {
604
608
  for (let i = indexInParent; i < parent.childNodes.length; i++) {
605
609
  const nextSibling = parent.childNodes[i];
606
610
  if (nextSibling) {
607
- nextSibling.before(text, nextSibling);
611
+ nextSibling.before(text);
608
612
  inserted = true;
609
613
  break;
610
614
  }
@@ -637,7 +641,7 @@ var V = (() => {
637
641
  for (let i = indexInParent; i < parent.childNodes.length; i++) {
638
642
  const nextSibling = parent.childNodes[i];
639
643
  if (nextSibling) {
640
- nextSibling.before(newNode, nextSibling);
644
+ nextSibling.before(newNode);
641
645
  inserted = true;
642
646
  break;
643
647
  }
@@ -646,12 +650,12 @@ var V = (() => {
646
650
  parent.appendChild(newNode);
647
651
  }
648
652
  }
649
- const newKids = children(newVode);
650
- if (newKids) {
653
+ const newStart = childrenStart(newVode);
654
+ if (newStart > 0) {
651
655
  const childOffset = !!properties ? 2 : 1;
652
656
  let indexP = 0;
653
- for (let i = 0; i < newKids.length; i++) {
654
- const child2 = newKids[i];
657
+ for (let i = 0; i < newVode.length - newStart; i++) {
658
+ const child2 = newVode[i + newStart];
655
659
  const attached = render(state, newNode, i, indexP, void 0, child2, xmlns ?? null);
656
660
  newVode[i + childOffset] = attached;
657
661
  if (attached) indexP++;
@@ -665,41 +669,31 @@ var V = (() => {
665
669
  }
666
670
  if (!oldIsText && isNode && oldVode[0] === newVode[0]) {
667
671
  newVode.node = oldNode;
668
- const newvode = newVode;
669
- const oldvode = oldVode;
670
672
  const properties = props(newVode);
671
673
  const oldProps = props(oldVode);
672
- if (properties?.xmlns !== void 0) xmlns = properties.xmlns;
673
- if (newvode[1]?.__memo) {
674
- const prev = newvode[1];
675
- newvode[1] = remember(state, newvode[1], oldvode[1]);
676
- if (prev !== newvode[1]) {
677
- patchProperties(state, oldNode, oldProps, properties, xmlns);
678
- }
679
- } else {
680
- patchProperties(state, oldNode, oldProps, properties, xmlns);
681
- }
674
+ if (properties?.xmlns !== void 0)
675
+ xmlns = properties.xmlns;
676
+ patchProperties(state, oldNode, oldProps, properties, xmlns);
682
677
  if (!!properties?.catch && oldProps?.catch !== properties.catch) {
683
678
  newVode.node["catch"] = null;
684
679
  newVode.node.removeAttribute("catch");
685
680
  }
686
- const newKids = children(newVode);
687
- const oldKids = children(oldVode);
688
- if (newKids) {
689
- const childOffset = !!properties ? 2 : 1;
681
+ const newStart = childrenStart(newVode);
682
+ const oldStart = childrenStart(oldVode);
683
+ if (newStart > 0) {
690
684
  let indexP = 0;
691
- for (let i = 0; i < newKids.length; i++) {
692
- const child2 = newKids[i];
693
- const oldChild = oldKids && oldKids[i];
685
+ for (let i = 0; i < newVode.length - newStart; i++) {
686
+ const child2 = newVode[i + newStart];
687
+ const oldChild = oldStart > 0 ? oldVode[i + oldStart] : void 0;
694
688
  const attached = render(state, oldNode, i, indexP, oldChild, child2, xmlns);
695
- newVode[i + childOffset] = attached;
689
+ newVode[i + newStart] = attached;
696
690
  if (attached) indexP++;
697
691
  }
698
692
  }
699
- if (oldKids) {
700
- const newKidsCount = newKids ? newKids.length : 0;
701
- for (let i = oldKids.length - 1; i >= newKidsCount; i--) {
702
- render(state, oldNode, i, i, oldKids[i], void 0, xmlns);
693
+ if (oldStart > 0) {
694
+ const newKidsCount = newStart > 0 ? newVode.length - newStart : 0;
695
+ for (let i = oldVode.length - 1 - oldStart; i >= newKidsCount; i--) {
696
+ render(state, oldNode, i, i, oldVode[i + oldStart], void 0, xmlns);
703
697
  }
704
698
  }
705
699
  newVode._unmountCount = (properties?.onUnmount ? 1 : 0) + sumChildUnmountCounts(newVode);
@@ -756,6 +750,9 @@ var V = (() => {
756
750
  return typeof x === "string" || x?.nodeType === Node.TEXT_NODE;
757
751
  }
758
752
  function remember(state, present, past) {
753
+ while (typeof present === "function" && !present.__memo) {
754
+ present = present(state);
755
+ }
759
756
  if (typeof present !== "function")
760
757
  return present;
761
758
  const presentMemo = present?.__memo;
@@ -770,37 +767,13 @@ var V = (() => {
770
767
  }
771
768
  if (same) return past;
772
769
  }
773
- const result = present(state);
774
- if (typeof result === "function" && result?.__memo) {
775
- const resultMemo = result.__memo;
776
- if (Array.isArray(resultMemo) && Array.isArray(pastMemo) && resultMemo.length === pastMemo.length) {
777
- let same = true;
778
- for (let i = 0; i < resultMemo.length; i++) {
779
- if (resultMemo[i] !== pastMemo[i]) {
780
- same = false;
781
- break;
782
- }
783
- }
784
- if (same) return past;
785
- }
786
- const innerRender = result(state);
787
- if (typeof innerRender === "object") {
788
- innerRender.__memo = resultMemo;
789
- }
790
- return innerRender;
770
+ while (typeof present === "function") {
771
+ present = present(state);
791
772
  }
792
- const newRender = typeof result === "function" ? unwrap(result, state) : result;
793
- if (typeof newRender === "object") {
794
- newRender.__memo = result?.__memo || present?.__memo;
795
- }
796
- return newRender;
797
- }
798
- function unwrap(c, s) {
799
- if (typeof c === "function") {
800
- return unwrap(c(s), s);
801
- } else {
802
- return c;
773
+ if (typeof present === "object") {
774
+ present.__memo = presentMemo;
803
775
  }
776
+ return present;
804
777
  }
805
778
  function patchProperties(s, node, oldProps, newProps, xmlns) {
806
779
  if (!newProps && !oldProps) return;
@@ -1217,10 +1190,11 @@ var V = (() => {
1217
1190
  }
1218
1191
  raw[keys[i]] = value;
1219
1192
  } else if (keys.length === 1) {
1220
- if (typeof target[keys[0]] === "object" && typeof value === "object")
1193
+ if (typeof target[keys[0]] === "object" && typeof value === "object" && value !== null) {
1221
1194
  Object.assign(target[keys[0]], value);
1222
- else
1195
+ } else {
1223
1196
  target[keys[0]] = value;
1197
+ }
1224
1198
  } else {
1225
1199
  Object.assign(target, value);
1226
1200
  }
package/dist/vode.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";var V=(()=>{var v=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var W=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},$=(e,n,s,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of X(n))!Y.call(e,t)&&t!==s&&v(e,t,{get:()=>n[t],enumerable:!(a=w(n,t))||a.enumerable});return e};var J=e=>$(v({},"__esModule",{value:!0}),e);var Jo={};W(Jo,{A:()=>ct,ABBR:()=>it,ADDRESS:()=>lt,ANIMATE:()=>Sn,ANIMATEMOTION:()=>un,ANIMATETRANSFORM:()=>dn,ANNOTATION:()=>xo,ANNOTATION_XML:()=>ho,AREA:()=>pt,ARTICLE:()=>ft,ASIDE:()=>St,AUDIO:()=>ut,B:()=>dt,BASE:()=>Tt,BDI:()=>yt,BDO:()=>gt,BLOCKQUOTE:()=>xt,BODY:()=>ht,BR:()=>mt,BUTTON:()=>bt,CANVAS:()=>Et,CAPTION:()=>Pt,CIRCLE:()=>Tn,CITE:()=>At,CLIPPATH:()=>yn,CODE:()=>Ct,COL:()=>Mt,COLGROUP:()=>Rt,DATA:()=>Nt,DATALIST:()=>Ot,DD:()=>Dt,DEFS:()=>gn,DEL:()=>Lt,DESC:()=>xn,DETAILS:()=>vt,DFN:()=>It,DIALOG:()=>Vt,DIV:()=>Ft,DL:()=>Ht,DT:()=>jt,ELLIPSE:()=>hn,EM:()=>Gt,EMBED:()=>Ut,FEBLEND:()=>mn,FECOLORMATRIX:()=>bn,FECOMPONENTTRANSFER:()=>En,FECOMPOSITE:()=>Pn,FECONVOLVEMATRIX:()=>An,FEDIFFUSELIGHTING:()=>Cn,FEDISPLACEMENTMAP:()=>Mn,FEDISTANTLIGHT:()=>Rn,FEDROPSHADOW:()=>Nn,FEFLOOD:()=>On,FEFUNCA:()=>Dn,FEFUNCB:()=>Ln,FEFUNCG:()=>vn,FEFUNCR:()=>In,FEGAUSSIANBLUR:()=>Vn,FEIMAGE:()=>Fn,FEMERGE:()=>Hn,FEMERGENODE:()=>jn,FEMORPHOLOGY:()=>Gn,FEOFFSET:()=>Un,FEPOINTLIGHT:()=>kn,FESPECULARLIGHTING:()=>_n,FESPOTLIGHT:()=>Bn,FETILE:()=>Kn,FETURBULENCE:()=>qn,FIELDSET:()=>kt,FIGCAPTION:()=>_t,FIGURE:()=>Bt,FILTER:()=>wn,FOOTER:()=>Kt,FOREIGNOBJECT:()=>Xn,FORM:()=>qt,G:()=>Yn,H1:()=>wt,H2:()=>Xt,H3:()=>Yt,H4:()=>Wt,H5:()=>$t,H6:()=>Jt,HEAD:()=>Qt,HEADER:()=>zt,HGROUP:()=>Zt,HR:()=>te,HTML:()=>ee,I:()=>ne,IFRAME:()=>oe,IMAGE:()=>Wn,IMG:()=>ae,INPUT:()=>se,INS:()=>re,KBD:()=>ce,LABEL:()=>ie,LEGEND:()=>le,LI:()=>pe,LINE:()=>$n,LINEARGRADIENT:()=>Jn,LINK:()=>fe,MACTION:()=>mo,MAIN:()=>Se,MAP:()=>ue,MARK:()=>de,MARKER:()=>Qn,MASK:()=>zn,MATH:()=>bo,MENU:()=>Te,MERROR:()=>Eo,META:()=>ye,METADATA:()=>Zn,METER:()=>ge,MFRAC:()=>Po,MI:()=>Ao,MMULTISCRIPTS:()=>Co,MN:()=>Mo,MO:()=>Ro,MOVER:()=>No,MPADDED:()=>Oo,MPATH:()=>to,MPHANTOM:()=>Do,MPRESCRIPTS:()=>Lo,MROOT:()=>vo,MROW:()=>Io,MS:()=>Vo,MSPACE:()=>Fo,MSQRT:()=>Ho,MSTYLE:()=>jo,MSUB:()=>Go,MSUBSUP:()=>Uo,MSUP:()=>ko,MTABLE:()=>_o,MTD:()=>Bo,MTEXT:()=>Ko,MTR:()=>qo,MUNDER:()=>wo,MUNDEROVER:()=>Xo,NAV:()=>xe,NOSCRIPT:()=>he,OBJECT:()=>me,OL:()=>be,OPTGROUP:()=>Ee,OPTION:()=>Pe,OUTPUT:()=>Ae,P:()=>Ce,PATH:()=>eo,PATTERN:()=>no,PICTURE:()=>Me,POLYGON:()=>oo,POLYLINE:()=>ao,PRE:()=>Re,PROGRESS:()=>Ne,Q:()=>Oe,RADIALGRADIENT:()=>so,RECT:()=>ro,RP:()=>De,RT:()=>Le,RUBY:()=>ve,S:()=>Ie,SAMP:()=>Ve,SCRIPT:()=>Fe,SEARCH:()=>He,SECTION:()=>je,SELECT:()=>Ge,SEMANTICS:()=>Yo,SET:()=>co,SLOT:()=>Ue,SMALL:()=>ke,SOURCE:()=>_e,SPAN:()=>Be,STOP:()=>io,STRONG:()=>Ke,STYLE:()=>qe,SUB:()=>we,SUMMARY:()=>Xe,SUP:()=>Ye,SVG:()=>lo,SWITCH:()=>po,SYMBOL:()=>fo,TABLE:()=>We,TBODY:()=>$e,TD:()=>Je,TEMPLATE:()=>Qe,TEXT:()=>So,TEXTAREA:()=>ze,TEXTPATH:()=>uo,TFOOT:()=>Ze,TH:()=>tn,THEAD:()=>en,TIME:()=>nn,TITLE:()=>on,TR:()=>an,TRACK:()=>sn,TSPAN:()=>To,U:()=>rn,UL:()=>cn,USE:()=>yo,VAR:()=>ln,VIDEO:()=>pn,VIEW:()=>go,WBR:()=>fn,app:()=>z,child:()=>at,childCount:()=>ot,children:()=>C,childrenStart:()=>D,context:()=>$o,createPatch:()=>et,createState:()=>tt,defuse:()=>F,globals:()=>A,hydrate:()=>O,memo:()=>Z,mergeClass:()=>H,mergeProps:()=>Wo,mergeStyle:()=>j,props:()=>P,tag:()=>nt,vode:()=>Q});var A={currentViewTransition:void 0,requestAnimationFrame:typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:typeof document<"u"&&typeof document.startViewTransition=="function"?document.startViewTransition.bind(document):null};function Q(e,n,...s){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:typeof n=="object"?[e,n,...s]:[e,...s]}function z(e,n,s,...a){if(!e?.parentElement)throw new Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!n||typeof n!="object")throw new Error("second argument to app() must be a state object");if(typeof s!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=A.requestAnimationFrame,t.asyncRenderer=A.startViewTransition,t.qSync=null,t.qAsync=null,t.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0};let o=n;"patch"in n&&typeof n.patch=="function"&&Array.isArray(n.patch.initialPatches)&&(a=[...n.patch.initialPatches,...a]),Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(l,y)=>{if(!(!l||typeof l!="function"&&typeof l!="object"))if(t.stats.patchCount++,l?.next){let f=l;t.stats.liveEffectCount++;try{let d=await f.next();for(;d.done===!1;){t.stats.liveEffectCount++;try{o.patch(d.value,y),d=await f.next()}finally{t.stats.liveEffectCount--}}o.patch(d.value,y)}finally{t.stats.liveEffectCount--}}else if(l.then){t.stats.liveEffectCount++;try{let f=await l;o.patch(f,y)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(l))if(l.length>0)for(let f of l)o.patch(f,!document.hidden&&!!t.asyncRenderer);else{t.qSync=E(t.qSync||{},t.qAsync,!1),t.qAsync=null;try{A.currentViewTransition?.skipTransition()}catch{}t.stats.syncRenderPatchCount++,t.renderSync()}else typeof l=="function"?o.patch(l(t.state),y):y?(t.stats.asyncRenderPatchCount++,t.qAsync=E(t.qAsync||{},l,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=E(t.qSync||{},l,!1),t.renderSync())}});function r(l){let y=Date.now(),f=s(t.state);t.vode=M(t.state,e.parentElement,0,0,t.vode,f),e.tagName.toUpperCase()!==f[0].toUpperCase()&&(e=t.vode.node,e._vode=t),l||(t.stats.lastSyncRenderTime=Date.now()-y,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let p=r.bind(null,!1),c=r.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=E(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(p))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await A.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let l=Date.now();try{t.state=E(t.state,t.qAsync,!0),t.qAsync=null,A.currentViewTransition=t.asyncRenderer(c),await A.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=Date.now()-l,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.state=o;let i=e;i._vode=t;let S=Array.from(e.parentElement.children).indexOf(e);t.isRendering=!0,t.vode=M(n,e.parentElement,S,S,O(e,!0),s(n)),t.isRendering=!1,t.qSync&&t.renderSync();for(let l of a)o.patch(l);return l=>o.patch(l)}function F(e){if(e?._vode){let s=function(t){if(!t?.node)return;let o=P(t);if(o){for(let r in o)r[0]==="o"&&r[1]==="n"&&(t.node[r]=null);t.node.catch=null}if(t.node._vode)F(t.node);else{let r=C(t);if(r)for(let p of r)s(p)}};var n=s;let a=e._vode;delete e._vode,Object.defineProperty(a.state,"patch",{value:void 0}),Object.defineProperty(a,"renderSync",{value:()=>{}}),Object.defineProperty(a,"renderAsync",{value:()=>{}}),s(a.vode)}else for(let s of e.children)F(s)}function O(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.ELEMENT_NODE){let a=[e.tagName.toLowerCase()];if(n&&(a.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;a.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&O(o,n);r?a.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return a}else return}function Z(e,n){if(!e||!Array.isArray(e))throw new Error("first argument to memo() must be an array of values to compare");if(typeof n!="function")throw new Error("second argument to memo() must be a function that returns a vode or props object");return n.__memo=e,n}function tt(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return"patch"in e||Object.defineProperty(e,"patch",{enumerable:!1,configurable:!0,writable:!1,value:n=>{let s=e;Array.isArray(s.patch.initialPatches)||(s.patch.initialPatches=[]),s.patch.initialPatches.push(n)}}),e}function et(e){return e}function nt(e){return e?Array.isArray(e)?e[0]:typeof e=="string"||e.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function P(e){if(Array.isArray(e)&&e.length>1&&e[1]&&!Array.isArray(e[1])&&typeof e[1]=="object"&&e[1].nodeType!==Node.TEXT_NODE)return e[1]}function C(e){let n=D(e);return n>0?e.slice(n):null}function ot(e){let n=D(e);return n<0?0:e.length-n}function at(e,n){let s=D(e);if(s>0)return e[n+s]}function D(e){return P(e)?e.length>2?2:-1:Array.isArray(e)&&e.length>1?1:-1}function E(e,n,s){if(!n)return e;for(let a in n){let t=n[a];if(t&&typeof t=="object"){let o=e[a];o?Array.isArray(t)?e[a]=[...t]:t instanceof Date&&o!==t?e[a]=new Date(t):Array.isArray(o)?e[a]=E({},t,s):typeof o=="object"?E(e[a],t,s):e[a]=E({},t,s):Array.isArray(t)?e[a]=[...t]:t instanceof Date?e[a]=new Date(t):e[a]=E({},t,s)}else t===void 0&&s?delete e[a]:e[a]=t}return e}function M(e,n,s,a,t,o,r){try{o=I(e,o,t);let p=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&p)return t;let c=t?.nodeType===Node.TEXT_NODE,i=c?t:t?.node;if(p){N(e,t),i?.remove();return}let S=!p&&rt(o),l=!p&&st(o),y=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!S&&!l&&!y&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(y&&S?o=o.wholeText:y&&l&&(o=[...o]),c&&S)return i.nodeValue!==o&&(i.nodeValue=o),t;if(S&&(!i||!c)){let f=document.createTextNode(o);if(i)N(e,t),i.replaceWith(f);else{let d=!1;for(let u=a;u<n.childNodes.length;u++){let x=n.childNodes[u];if(x){x.before(f,x),d=!0;break}}d||n.appendChild(f)}return f}if(l&&(!i||c||t[0]!==o[0])){let f=o;1 in f&&(f[1]=I(e,f[1],void 0));let d=P(o);d?.xmlns!==void 0&&(r=d.xmlns);let u=r?document.createElementNS(r,o[0]):document.createElement(o[0]);if(o.node=u,V(e,u,void 0,d,r??null),d&&"catch"in d&&(o.node.catch=null,o.node.removeAttribute("catch")),i)N(e,t),i.replaceWith(u);else{let h=!1;for(let g=a;g<n.childNodes.length;g++){let T=n.childNodes[g];if(T){T.before(u,T),h=!0;break}}h||n.appendChild(u)}let x=C(o);if(x){let h=d?2:1,g=0;for(let T=0;T<x.length;T++){let m=x[T],b=M(e,u,T,g,void 0,m,r??null);o[T+h]=b,b&&g++}}return o._unmountCount=(d?.onUnmount?1:0)+k(o),typeof d?.onMount=="function"&&e.patch(d.onMount(e,u)),o}if(!c&&l&&t[0]===o[0]){o.node=i;let f=o,d=t,u=P(o),x=P(t);if(u?.xmlns!==void 0&&(r=u.xmlns),f[1]?.__memo){let T=f[1];f[1]=I(e,f[1],d[1]),T!==f[1]&&V(e,i,x,u,r)}else V(e,i,x,u,r);u?.catch&&x?.catch!==u.catch&&(o.node.catch=null,o.node.removeAttribute("catch"));let h=C(o),g=C(t);if(h){let T=u?2:1,m=0;for(let b=0;b<h.length;b++){let K=h[b],q=g&&g[b],U=M(e,i,b,m,q,K,r);o[b+T]=U,U&&m++}}if(g){let T=h?h.length:0;for(let m=g.length-1;m>=T;m--)M(e,i,m,m,g[m],void 0,r)}return o._unmountCount=(u?.onUnmount?1:0)+k(o),o}}catch(p){let c=P(o)?.catch;if(c){let i=typeof c=="function"?c(e,p):c;return M(e,n,s,a,O(o?.node||t?.node,!0),i,r)}else throw p}}function N(e,n){if(!n||!Array.isArray(n)||(n._unmountCount|0)===0)return;let s=C(n);if(s)for(let t=s.length-1;t>=0;t--)N(e,s[t]);let a=P(n);typeof a?.onUnmount=="function"&&e.patch(a.onUnmount(e,n.node))}function k(e){let n=C(e);if(!n)return 0;let s=0;for(let a of n)a&&Array.isArray(a)&&(s+=a._unmountCount|0);return s}function st(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function rt(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function I(e,n,s){if(typeof n!="function")return n;let a=n?.__memo,t=s?.__memo;if(Array.isArray(a)&&Array.isArray(t)&&a.length===t.length){let p=!0;for(let c=0;c<a.length;c++)if(a[c]!==t[c]){p=!1;break}if(p)return s}let o=n(e);if(typeof o=="function"&&o?.__memo){let p=o.__memo;if(Array.isArray(p)&&Array.isArray(t)&&p.length===t.length){let i=!0;for(let S=0;S<p.length;S++)if(p[S]!==t[S]){i=!1;break}if(i)return s}let c=o(e);return typeof c=="object"&&(c.__memo=p),c}let r=typeof o=="function"?_(o,e):o;return typeof r=="object"&&(r.__memo=o?.__memo||n?.__memo),r}function _(e,n){return typeof e=="function"?_(e(n),n):e}function V(e,n,s,a,t){if(!a&&!s)return;let o=t!==void 0;if(s)for(let r in s){let p=s[r],c=a?.[r];p!==c&&(a?a[r]=R(e,n,r,p,c,o):R(e,n,r,p,void 0,o))}if(a&&s){for(let r in a)if(!(r in s)){let p=a[r];a[r]=R(e,n,r,void 0,p,o)}}else if(a)for(let r in a){let p=a[r];a[r]=R(e,n,r,void 0,p,o)}}function R(e,n,s,a,t,o){if(s==="style")if(!t)n.style.cssText="";else if(typeof t=="string")a!==t&&(n.style.cssText=t);else if(a&&typeof a=="object"){for(let r in a)t[r]||(n.style[r]=null);for(let r in t){let p=a[r],c=t[r];p!==c&&(n.style[r]=c)}}else for(let r in t)n.style[r]=t[r];else if(s==="class")t?n.setAttribute("class",B(t)):n.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(t){let r=null;if(typeof t=="function"){let p=t;r=c=>e.patch(p(e,c))}else typeof t=="object"&&(r=()=>e.patch(t));n[s]=r}else n[s]=null;else o||(n[s]=t),t==null||t===!1?n.removeAttribute(s):n.setAttribute(s,t);return t}function B(e){return typeof e=="string"?e:Array.isArray(e)?e.map(B).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var ct="a",it="abbr",lt="address",pt="area",ft="article",St="aside",ut="audio",dt="b",Tt="base",yt="bdi",gt="bdo",xt="blockquote",ht="body",mt="br",bt="button",Et="canvas",Pt="caption",At="cite",Ct="code",Mt="col",Rt="colgroup",Nt="data",Ot="datalist",Dt="dd",Lt="del",vt="details",It="dfn",Vt="dialog",Ft="div",Ht="dl",jt="dt",Gt="em",Ut="embed",kt="fieldset",_t="figcaption",Bt="figure",Kt="footer",qt="form",wt="h1",Xt="h2",Yt="h3",Wt="h4",$t="h5",Jt="h6",Qt="head",zt="header",Zt="hgroup",te="hr",ee="html",ne="i",oe="iframe",ae="img",se="input",re="ins",ce="kbd",ie="label",le="legend",pe="li",fe="link",Se="main",ue="map",de="mark",Te="menu",ye="meta",ge="meter",xe="nav",he="noscript",me="object",be="ol",Ee="optgroup",Pe="option",Ae="output",Ce="p",Me="picture",Re="pre",Ne="progress",Oe="q",De="rp",Le="rt",ve="ruby",Ie="s",Ve="samp",Fe="script",He="search",je="section",Ge="select",Ue="slot",ke="small",_e="source",Be="span",Ke="strong",qe="style",we="sub",Xe="summary",Ye="sup",We="table",$e="tbody",Je="td",Qe="template",ze="textarea",Ze="tfoot",tn="th",en="thead",nn="time",on="title",an="tr",sn="track",rn="u",cn="ul",ln="var",pn="video",fn="wbr",Sn="animate",un="animateMotion",dn="animateTransform",Tn="circle",yn="clipPath",gn="defs",xn="desc",hn="ellipse",mn="feBlend",bn="feColorMatrix",En="feComponentTransfer",Pn="feComposite",An="feConvolveMatrix",Cn="feDiffuseLighting",Mn="feDisplacementMap",Rn="feDistantLight",Nn="feDropShadow",On="feFlood",Dn="feFuncA",Ln="feFuncB",vn="feFuncG",In="feFuncR",Vn="feGaussianBlur",Fn="feImage",Hn="feMerge",jn="feMergeNode",Gn="feMorphology",Un="feOffset",kn="fePointLight",_n="feSpecularLighting",Bn="feSpotLight",Kn="feTile",qn="feTurbulence",wn="filter",Xn="foreignObject",Yn="g",Wn="image",$n="line",Jn="linearGradient",Qn="marker",zn="mask",Zn="metadata",to="mpath",eo="path",no="pattern",oo="polygon",ao="polyline",so="radialGradient",ro="rect",co="set",io="stop",lo="svg",po="switch",fo="symbol",So="text",uo="textPath",To="tspan",yo="use",go="view",xo="annotation",ho="annotation-xml",mo="maction",bo="math",Eo="merror",Po="mfrac",Ao="mi",Co="mmultiscripts",Mo="mn",Ro="mo",No="mover",Oo="mpadded",Do="mphantom",Lo="mprescripts",vo="mroot",Io="mrow",Vo="ms",Fo="mspace",Ho="msqrt",jo="mstyle",Go="msub",Uo="msubsup",ko="msup",_o="mtable",Bo="mtd",Ko="mtext",qo="mtr",wo="munder",Xo="munderover",Yo="semantics";function H(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let s=1;s<e.length;s++){let a=n,t=e[s];if(!a)n=t;else if(t)if(typeof a=="string"&&typeof t=="string"){let o=a.split(" "),r=t.split(" "),p=new Set([...o,...r]);n=Array.from(p).join(" ").trim()}else if(typeof a=="string"&&Array.isArray(t)){let o=new Set([...t,...a.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&typeof t=="string"){let o=new Set([...a,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&Array.isArray(t)){let o=new Set([...a,...t]);n=Array.from(o).join(" ").trim()}else if(typeof a=="string"&&typeof t=="object")n={[a]:!0,...t};else if(typeof a=="object"&&typeof t=="string")n={...a,[t]:!0};else if(typeof a=="object"&&typeof t=="object")n={...a,...t};else if(typeof a=="object"&&Array.isArray(t)){let o={...a};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(a)&&typeof t=="object"){let o={};for(let r of a)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${a} (${typeof a}) and ${t} (${typeof t})`);else continue}return n}var L;function j(...e){L||(L=document.createElement("div"));try{let n=L.style;for(let s of e)if(typeof s=="object"&&s!==null)for(let a in s)n[a]=s[a];else typeof s=="string"&&(n.cssText+=";"+s);return n.cssText}finally{L.style.cssText=""}}function Wo(...e){if(e.length===0)return;if(e.length===1)return e[0]||void 0;let n;for(let s of e)if(!(typeof s!="object"||s===null)){n||(n={});for(let a in s)a==="style"?n.style=j(n.style,s.style):a==="class"?n.class=H(n.class,s.class):n[a]=s[a]}return n}function $o(e){return new G(e,[])}var G=class e{constructor(n,s){this.state=n;this.keys=s;function a(c,i){if(s.length>1){let S=0,l=i[s[S]];for((typeof l!="object"||l===null)&&(i[s[S]]=l={}),S=1;S<s.length-1;S++){let y=l;l=l[s[S]],(typeof l!="object"||l===null)&&(y[s[S]]=l={})}l[s[S]]=c}else s.length===1?typeof i[s[0]]=="object"&&typeof c=="object"?Object.assign(i[s[0]],c):i[s[0]]=c:Object.assign(i,c)}function t(c){let i={};return a(c,i),i}function o(){if(s.length===0)return n;let c=n?n[s[0]]:void 0;for(let i=1;i<s.length&&c;i++)c=c[s[i]];return c}function r(c){a(c,n)}function p(c,i){i?n.patch([t(c)]):n.patch(t(c))}return new Proxy(this,{get:(c,i,S)=>{if(i==="state")return n;if(i==="get")return o;if(i==="put")return r;if(i==="patch")return p;let l=[...c.keys,String(i)];return new e(c.state,l)}})}state;keys;get(){}put(n){}patch(n){}};return J(Jo);})();
1
+ "use strict";var V=(()=>{var v=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var q=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},w=(e,n,s,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of _(n))!K.call(e,t)&&t!==s&&v(e,t,{get:()=>n[t],enumerable:!(a=B(n,t))||a.enumerable});return e};var X=e=>w(v({},"__esModule",{value:!0}),e);var Xo={};q(Xo,{A:()=>ot,ABBR:()=>at,ADDRESS:()=>st,ANIMATE:()=>cn,ANIMATEMOTION:()=>ln,ANIMATETRANSFORM:()=>fn,ANNOTATION:()=>uo,ANNOTATION_XML:()=>To,AREA:()=>rt,ARTICLE:()=>ct,ASIDE:()=>it,AUDIO:()=>lt,B:()=>ft,BASE:()=>St,BDI:()=>pt,BDO:()=>ut,BLOCKQUOTE:()=>dt,BODY:()=>Tt,BR:()=>yt,BUTTON:()=>gt,CANVAS:()=>xt,CAPTION:()=>ht,CIRCLE:()=>Sn,CITE:()=>mt,CLIPPATH:()=>pn,CODE:()=>bt,COL:()=>Et,COLGROUP:()=>Pt,DATA:()=>At,DATALIST:()=>Ct,DD:()=>Mt,DEFS:()=>un,DEL:()=>Nt,DESC:()=>dn,DETAILS:()=>Rt,DFN:()=>Ot,DIALOG:()=>Dt,DIV:()=>Lt,DL:()=>vt,DT:()=>It,ELLIPSE:()=>Tn,EM:()=>Vt,EMBED:()=>Ft,FEBLEND:()=>yn,FECOLORMATRIX:()=>gn,FECOMPONENTTRANSFER:()=>xn,FECOMPOSITE:()=>hn,FECONVOLVEMATRIX:()=>mn,FEDIFFUSELIGHTING:()=>bn,FEDISPLACEMENTMAP:()=>En,FEDISTANTLIGHT:()=>Pn,FEDROPSHADOW:()=>An,FEFLOOD:()=>Cn,FEFUNCA:()=>Mn,FEFUNCB:()=>Nn,FEFUNCG:()=>Rn,FEFUNCR:()=>On,FEGAUSSIANBLUR:()=>Dn,FEIMAGE:()=>Ln,FEMERGE:()=>vn,FEMERGENODE:()=>In,FEMORPHOLOGY:()=>Vn,FEOFFSET:()=>Fn,FEPOINTLIGHT:()=>Hn,FESPECULARLIGHTING:()=>jn,FESPOTLIGHT:()=>Gn,FETILE:()=>Un,FETURBULENCE:()=>kn,FIELDSET:()=>Ht,FIGCAPTION:()=>jt,FIGURE:()=>Gt,FILTER:()=>Bn,FOOTER:()=>Ut,FOREIGNOBJECT:()=>_n,FORM:()=>kt,G:()=>Kn,H1:()=>Bt,H2:()=>_t,H3:()=>Kt,H4:()=>qt,H5:()=>wt,H6:()=>Xt,HEAD:()=>Yt,HEADER:()=>Wt,HGROUP:()=>$t,HR:()=>Jt,HTML:()=>Qt,I:()=>zt,IFRAME:()=>Zt,IMAGE:()=>qn,IMG:()=>te,INPUT:()=>ee,INS:()=>ne,KBD:()=>oe,LABEL:()=>ae,LEGEND:()=>se,LI:()=>re,LINE:()=>wn,LINEARGRADIENT:()=>Xn,LINK:()=>ce,MACTION:()=>yo,MAIN:()=>ie,MAP:()=>le,MARK:()=>fe,MARKER:()=>Yn,MASK:()=>Wn,MATH:()=>go,MENU:()=>Se,MERROR:()=>xo,META:()=>pe,METADATA:()=>$n,METER:()=>ue,MFRAC:()=>ho,MI:()=>mo,MMULTISCRIPTS:()=>bo,MN:()=>Eo,MO:()=>Po,MOVER:()=>Ao,MPADDED:()=>Co,MPATH:()=>Jn,MPHANTOM:()=>Mo,MPRESCRIPTS:()=>No,MROOT:()=>Ro,MROW:()=>Oo,MS:()=>Do,MSPACE:()=>Lo,MSQRT:()=>vo,MSTYLE:()=>Io,MSUB:()=>Vo,MSUBSUP:()=>Fo,MSUP:()=>Ho,MTABLE:()=>jo,MTD:()=>Go,MTEXT:()=>Uo,MTR:()=>ko,MUNDER:()=>Bo,MUNDEROVER:()=>_o,NAV:()=>de,NOSCRIPT:()=>Te,OBJECT:()=>ye,OL:()=>ge,OPTGROUP:()=>xe,OPTION:()=>he,OUTPUT:()=>me,P:()=>be,PATH:()=>Qn,PATTERN:()=>zn,PICTURE:()=>Ee,POLYGON:()=>Zn,POLYLINE:()=>to,PRE:()=>Pe,PROGRESS:()=>Ae,Q:()=>Ce,RADIALGRADIENT:()=>eo,RECT:()=>no,RP:()=>Me,RT:()=>Ne,RUBY:()=>Re,S:()=>Oe,SAMP:()=>De,SCRIPT:()=>Le,SEARCH:()=>ve,SECTION:()=>Ie,SELECT:()=>Ve,SEMANTICS:()=>Ko,SET:()=>oo,SLOT:()=>Fe,SMALL:()=>He,SOURCE:()=>je,SPAN:()=>Ge,STOP:()=>ao,STRONG:()=>Ue,STYLE:()=>ke,SUB:()=>Be,SUMMARY:()=>_e,SUP:()=>Ke,SVG:()=>so,SWITCH:()=>ro,SYMBOL:()=>co,TABLE:()=>qe,TBODY:()=>we,TD:()=>Xe,TEMPLATE:()=>Ye,TEXT:()=>io,TEXTAREA:()=>We,TEXTPATH:()=>lo,TFOOT:()=>$e,TH:()=>Je,THEAD:()=>Qe,TIME:()=>ze,TITLE:()=>Ze,TR:()=>tn,TRACK:()=>en,TSPAN:()=>fo,U:()=>nn,UL:()=>on,USE:()=>So,VAR:()=>an,VIDEO:()=>sn,VIEW:()=>po,WBR:()=>rn,app:()=>W,child:()=>tt,childCount:()=>Z,children:()=>O,childrenStart:()=>P,context:()=>wo,createPatch:()=>Q,createState:()=>J,defuse:()=>I,globals:()=>E,hydrate:()=>R,memo:()=>$,mergeClass:()=>V,mergeProps:()=>qo,mergeStyle:()=>F,props:()=>b,tag:()=>z,vode:()=>Y});var E={currentViewTransition:void 0,requestAnimationFrame:typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:typeof document<"u"&&typeof document.startViewTransition=="function"?document.startViewTransition.bind(document):null};function Y(e,n,...s){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:typeof n=="object"?[e,n,...s]:[e,...s]}function W(e,n,s,...a){if(!e?.parentElement)throw new Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!n||typeof n!="object")throw new Error("second argument to app() must be a state object");if(typeof s!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=E.requestAnimationFrame,t.asyncRenderer=E.startViewTransition,t.qSync=null,t.qAsync=null,t.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0};let o=n;"patch"in n&&typeof n.patch=="function"&&Array.isArray(n.patch.initialPatches)&&(a=[...n.patch.initialPatches,...a]),Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(i,y)=>{if(!(!i||typeof i!="function"&&typeof i!="object"))if(t.stats.patchCount++,i?.next){let S=i;t.stats.liveEffectCount++;try{let p=await S.next();for(;p.done===!1;){t.stats.liveEffectCount++;try{o.patch(p.value,y),p=await S.next()}finally{t.stats.liveEffectCount--}}o.patch(p.value,y)}finally{t.stats.liveEffectCount--}}else if(i.then){t.stats.liveEffectCount++;try{let S=await i;o.patch(S,y)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(i))if(i.length>0)for(let S of i)o.patch(S,!document.hidden&&!!t.asyncRenderer);else{t.qSync=m(t.qSync||{},t.qAsync,!1),t.qAsync=null;try{E.currentViewTransition?.skipTransition()}catch{}t.stats.syncRenderPatchCount++,t.renderSync()}else typeof i=="function"?o.patch(i(t.state),y):y?(t.stats.asyncRenderPatchCount++,t.qAsync=m(t.qAsync||{},i,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=m(t.qSync||{},i,!1),t.renderSync())}});function r(i){let y=performance.now(),S=s(t.state);t.vode=A(t.state,e.parentElement,0,0,t.vode,S),e.tagName.toUpperCase()!==S[0].toUpperCase()&&(e=t.vode.node,e._vode=t),i||(t.stats.lastSyncRenderTime=performance.now()-y,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let f=r.bind(null,!1),c=r.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=m(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(f))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await E.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let i=performance.now();try{t.state=m(t.state,t.qAsync,!0),t.qAsync=null,E.currentViewTransition=t.asyncRenderer(c),await E.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=performance.now()-i,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.state=o;let l=e;l._vode=t;let T=Array.from(e.parentElement.children).indexOf(e);t.isRendering=!0,t.vode=A(n,e.parentElement,T,T,R(e,!0),s(n)),t.isRendering=!1,t.qSync&&t.renderSync();for(let i of a)o.patch(i);return i=>o.patch(i)}function I(e){if(e?._vode){let s=function(t){if(!t?.node)return;let o=b(t);if(o){for(let r in o)r[0]==="o"&&r[1]==="n"&&(t.node[r]=null);t.node.catch=null}if(t.node._vode)I(t.node);else{let r=O(t);if(r)for(let f of r)s(f)}};var n=s;let a=e._vode;delete e._vode,Object.defineProperty(a.state,"patch",{value:void 0}),Object.defineProperty(a,"renderSync",{value:()=>{}}),Object.defineProperty(a,"renderAsync",{value:()=>{}}),s(a.vode)}else for(let s of e.children)I(s)}function R(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.ELEMENT_NODE){let a=[e.tagName.toLowerCase()];if(n&&(a.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;a.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&R(o,n);r?a.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return a}else return}function $(e,n){if(!e||!Array.isArray(e))throw new Error("first argument to memo() must be an array of values to compare");if(typeof n!="function")throw new Error("second argument to memo() must be a function that returns a child vode");if(n.__memo){let s=n;n=a=>s(a)}return n.__memo=e,n}function J(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return"patch"in e||Object.defineProperty(e,"patch",{enumerable:!1,configurable:!0,writable:!1,value:n=>{let s=e;Array.isArray(s.patch.initialPatches)||(s.patch.initialPatches=[]),s.patch.initialPatches.push(n)}}),e}function Q(e){return e}function z(e){return e?Array.isArray(e)?e[0]:typeof e=="string"||e.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function b(e){if(Array.isArray(e)&&e.length>1&&e[1]&&!Array.isArray(e[1])&&typeof e[1]=="object"&&e[1].nodeType!==Node.TEXT_NODE)return e[1]}function O(e){let n=P(e);return n>0?e.slice(n):null}function Z(e){let n=P(e);return n<0?0:e.length-n}function tt(e,n){let s=P(e);if(s>0)return e[n+s]}function P(e){return b(e)?e.length>2?2:-1:Array.isArray(e)&&e.length>1?1:-1}function m(e,n,s){if(!n)return e;for(let a in n){let t=n[a];if(t&&typeof t=="object"){let o=e[a];o?Array.isArray(t)?e[a]=[...t]:t instanceof Date&&o!==t?e[a]=new Date(t):Array.isArray(o)?e[a]=m({},t,s):typeof o=="object"?m(e[a],t,s):e[a]=m({},t,s):Array.isArray(t)?e[a]=[...t]:t instanceof Date?e[a]=new Date(t):e[a]=m({},t,s)}else t===void 0&&s?delete e[a]:e[a]=t}return e}function A(e,n,s,a,t,o,r){try{o=G(e,o,t);let f=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&f)return t;let c=t?.nodeType===Node.TEXT_NODE,l=c?t:t?.node;if(f){N(e,t),l?.remove();return}let T=!f&&nt(o),i=!f&&et(o),y=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!T&&!i&&!y&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(y&&T?o=o.wholeText:y&&i&&(o=[...o]),c&&T)return l.nodeValue!==o&&(l.nodeValue=o),t;if(T&&(!l||!c)){let S=document.createTextNode(o);if(l)N(e,t),l.replaceWith(S);else{let p=!1;for(let d=a;d<n.childNodes.length;d++){let g=n.childNodes[d];if(g){g.before(S),p=!0;break}}p||n.appendChild(S)}return S}if(i&&(!l||c||t[0]!==o[0])){let S=o;1 in S&&(S[1]=G(e,S[1],void 0));let p=b(o);p?.xmlns!==void 0&&(r=p.xmlns);let d=r?document.createElementNS(r,o[0]):document.createElement(o[0]);if(o.node=d,U(e,d,void 0,p,r??null),p&&"catch"in p&&(o.node.catch=null,o.node.removeAttribute("catch")),l)N(e,t),l.replaceWith(d);else{let h=!1;for(let u=a;u<n.childNodes.length;u++){let x=n.childNodes[u];if(x){x.before(d),h=!0;break}}h||n.appendChild(d)}let g=P(o);if(g>0){let h=p?2:1,u=0;for(let x=0;x<o.length-g;x++){let L=o[x+g],C=A(e,d,x,u,void 0,L,r??null);o[x+h]=C,C&&u++}}return o._unmountCount=(p?.onUnmount?1:0)+j(o),typeof p?.onMount=="function"&&e.patch(p.onMount(e,d)),o}if(!c&&i&&t[0]===o[0]){o.node=l;let S=b(o),p=b(t);S?.xmlns!==void 0&&(r=S.xmlns),U(e,l,p,S,r),S?.catch&&p?.catch!==S.catch&&(o.node.catch=null,o.node.removeAttribute("catch"));let d=P(o),g=P(t);if(d>0){let h=0;for(let u=0;u<o.length-d;u++){let x=o[u+d],L=g>0?t[u+g]:void 0,C=A(e,l,u,h,L,x,r);o[u+d]=C,C&&h++}}if(g>0){let h=d>0?o.length-d:0;for(let u=t.length-1-g;u>=h;u--)A(e,l,u,u,t[u+g],void 0,r)}return o._unmountCount=(S?.onUnmount?1:0)+j(o),o}}catch(f){let c=b(o)?.catch;if(c){let l=typeof c=="function"?c(e,f):c;return A(e,n,s,a,R(o?.node||t?.node,!0),l,r)}else throw f}}function N(e,n){if(!n||!Array.isArray(n)||(n._unmountCount|0)===0)return;let s=O(n);if(s)for(let t=s.length-1;t>=0;t--)N(e,s[t]);let a=b(n);typeof a?.onUnmount=="function"&&e.patch(a.onUnmount(e,n.node))}function j(e){let n=O(e);if(!n)return 0;let s=0;for(let a of n)a&&Array.isArray(a)&&(s+=a._unmountCount|0);return s}function et(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function nt(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function G(e,n,s){for(;typeof n=="function"&&!n.__memo;)n=n(e);if(typeof n!="function")return n;let a=n?.__memo,t=s?.__memo;if(Array.isArray(a)&&Array.isArray(t)&&a.length===t.length){let o=!0;for(let r=0;r<a.length;r++)if(a[r]!==t[r]){o=!1;break}if(o)return s}for(;typeof n=="function";)n=n(e);return typeof n=="object"&&(n.__memo=a),n}function U(e,n,s,a,t){if(!a&&!s)return;let o=t!==void 0;if(s)for(let r in s){let f=s[r],c=a?.[r];f!==c&&(a?a[r]=M(e,n,r,f,c,o):M(e,n,r,f,void 0,o))}if(a&&s){for(let r in a)if(!(r in s)){let f=a[r];a[r]=M(e,n,r,void 0,f,o)}}else if(a)for(let r in a){let f=a[r];a[r]=M(e,n,r,void 0,f,o)}}function M(e,n,s,a,t,o){if(s==="style")if(!t)n.style.cssText="";else if(typeof t=="string")a!==t&&(n.style.cssText=t);else if(a&&typeof a=="object"){for(let r in a)t[r]||(n.style[r]=null);for(let r in t){let f=a[r],c=t[r];f!==c&&(n.style[r]=c)}}else for(let r in t)n.style[r]=t[r];else if(s==="class")t?n.setAttribute("class",k(t)):n.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(t){let r=null;if(typeof t=="function"){let f=t;r=c=>e.patch(f(e,c))}else typeof t=="object"&&(r=()=>e.patch(t));n[s]=r}else n[s]=null;else o||(n[s]=t),t==null||t===!1?n.removeAttribute(s):n.setAttribute(s,t);return t}function k(e){return typeof e=="string"?e:Array.isArray(e)?e.map(k).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var ot="a",at="abbr",st="address",rt="area",ct="article",it="aside",lt="audio",ft="b",St="base",pt="bdi",ut="bdo",dt="blockquote",Tt="body",yt="br",gt="button",xt="canvas",ht="caption",mt="cite",bt="code",Et="col",Pt="colgroup",At="data",Ct="datalist",Mt="dd",Nt="del",Rt="details",Ot="dfn",Dt="dialog",Lt="div",vt="dl",It="dt",Vt="em",Ft="embed",Ht="fieldset",jt="figcaption",Gt="figure",Ut="footer",kt="form",Bt="h1",_t="h2",Kt="h3",qt="h4",wt="h5",Xt="h6",Yt="head",Wt="header",$t="hgroup",Jt="hr",Qt="html",zt="i",Zt="iframe",te="img",ee="input",ne="ins",oe="kbd",ae="label",se="legend",re="li",ce="link",ie="main",le="map",fe="mark",Se="menu",pe="meta",ue="meter",de="nav",Te="noscript",ye="object",ge="ol",xe="optgroup",he="option",me="output",be="p",Ee="picture",Pe="pre",Ae="progress",Ce="q",Me="rp",Ne="rt",Re="ruby",Oe="s",De="samp",Le="script",ve="search",Ie="section",Ve="select",Fe="slot",He="small",je="source",Ge="span",Ue="strong",ke="style",Be="sub",_e="summary",Ke="sup",qe="table",we="tbody",Xe="td",Ye="template",We="textarea",$e="tfoot",Je="th",Qe="thead",ze="time",Ze="title",tn="tr",en="track",nn="u",on="ul",an="var",sn="video",rn="wbr",cn="animate",ln="animateMotion",fn="animateTransform",Sn="circle",pn="clipPath",un="defs",dn="desc",Tn="ellipse",yn="feBlend",gn="feColorMatrix",xn="feComponentTransfer",hn="feComposite",mn="feConvolveMatrix",bn="feDiffuseLighting",En="feDisplacementMap",Pn="feDistantLight",An="feDropShadow",Cn="feFlood",Mn="feFuncA",Nn="feFuncB",Rn="feFuncG",On="feFuncR",Dn="feGaussianBlur",Ln="feImage",vn="feMerge",In="feMergeNode",Vn="feMorphology",Fn="feOffset",Hn="fePointLight",jn="feSpecularLighting",Gn="feSpotLight",Un="feTile",kn="feTurbulence",Bn="filter",_n="foreignObject",Kn="g",qn="image",wn="line",Xn="linearGradient",Yn="marker",Wn="mask",$n="metadata",Jn="mpath",Qn="path",zn="pattern",Zn="polygon",to="polyline",eo="radialGradient",no="rect",oo="set",ao="stop",so="svg",ro="switch",co="symbol",io="text",lo="textPath",fo="tspan",So="use",po="view",uo="annotation",To="annotation-xml",yo="maction",go="math",xo="merror",ho="mfrac",mo="mi",bo="mmultiscripts",Eo="mn",Po="mo",Ao="mover",Co="mpadded",Mo="mphantom",No="mprescripts",Ro="mroot",Oo="mrow",Do="ms",Lo="mspace",vo="msqrt",Io="mstyle",Vo="msub",Fo="msubsup",Ho="msup",jo="mtable",Go="mtd",Uo="mtext",ko="mtr",Bo="munder",_o="munderover",Ko="semantics";function V(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let s=1;s<e.length;s++){let a=n,t=e[s];if(!a)n=t;else if(t)if(typeof a=="string"&&typeof t=="string"){let o=a.split(" "),r=t.split(" "),f=new Set([...o,...r]);n=Array.from(f).join(" ").trim()}else if(typeof a=="string"&&Array.isArray(t)){let o=new Set([...t,...a.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&typeof t=="string"){let o=new Set([...a,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&Array.isArray(t)){let o=new Set([...a,...t]);n=Array.from(o).join(" ").trim()}else if(typeof a=="string"&&typeof t=="object")n={[a]:!0,...t};else if(typeof a=="object"&&typeof t=="string")n={...a,[t]:!0};else if(typeof a=="object"&&typeof t=="object")n={...a,...t};else if(typeof a=="object"&&Array.isArray(t)){let o={...a};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(a)&&typeof t=="object"){let o={};for(let r of a)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${a} (${typeof a}) and ${t} (${typeof t})`);else continue}return n}var D;function F(...e){D||(D=document.createElement("div"));try{let n=D.style;for(let s of e)if(typeof s=="object"&&s!==null)for(let a in s)n[a]=s[a];else typeof s=="string"&&(n.cssText+=";"+s);return n.cssText}finally{D.style.cssText=""}}function qo(...e){if(e.length===0)return;if(e.length===1)return e[0]||void 0;let n;for(let s of e)if(!(typeof s!="object"||s===null)){n||(n={});for(let a in s)a==="style"?n.style=F(n.style,s.style):a==="class"?n.class=V(n.class,s.class):n[a]=s[a]}return n}function wo(e){return new H(e,[])}var H=class e{constructor(n,s){this.state=n;this.keys=s;function a(c,l){if(s.length>1){let T=0,i=l[s[T]];for((typeof i!="object"||i===null)&&(l[s[T]]=i={}),T=1;T<s.length-1;T++){let y=i;i=i[s[T]],(typeof i!="object"||i===null)&&(y[s[T]]=i={})}i[s[T]]=c}else s.length===1?typeof l[s[0]]=="object"&&typeof c=="object"&&c!==null?Object.assign(l[s[0]],c):l[s[0]]=c:Object.assign(l,c)}function t(c){let l={};return a(c,l),l}function o(){if(s.length===0)return n;let c=n?n[s[0]]:void 0;for(let l=1;l<s.length&&c;l++)c=c[s[l]];return c}function r(c){a(c,n)}function f(c,l){l?n.patch([t(c)]):n.patch(t(c))}return new Proxy(this,{get:(c,l,T)=>{if(l==="state")return n;if(l==="get")return o;if(l==="put")return r;if(l==="patch")return f;let i=[...c.keys,String(l)];return new e(c.state,i)}})}state;keys;get(){}put(n){}patch(n){}};return X(Xo);})();
package/dist/vode.min.mjs CHANGED
@@ -1 +1 @@
1
- var A={currentViewTransition:void 0,requestAnimationFrame:typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:typeof document<"u"&&typeof document.startViewTransition=="function"?document.startViewTransition.bind(document):null};function X(e,n,...s){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:typeof n=="object"?[e,n,...s]:[e,...s]}function Y(e,n,s,...a){if(!e?.parentElement)throw new Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!n||typeof n!="object")throw new Error("second argument to app() must be a state object");if(typeof s!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=A.requestAnimationFrame,t.asyncRenderer=A.startViewTransition,t.qSync=null,t.qAsync=null,t.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0};let o=n;"patch"in n&&typeof n.patch=="function"&&Array.isArray(n.patch.initialPatches)&&(a=[...n.patch.initialPatches,...a]),Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(l,y)=>{if(!(!l||typeof l!="function"&&typeof l!="object"))if(t.stats.patchCount++,l?.next){let f=l;t.stats.liveEffectCount++;try{let d=await f.next();for(;d.done===!1;){t.stats.liveEffectCount++;try{o.patch(d.value,y),d=await f.next()}finally{t.stats.liveEffectCount--}}o.patch(d.value,y)}finally{t.stats.liveEffectCount--}}else if(l.then){t.stats.liveEffectCount++;try{let f=await l;o.patch(f,y)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(l))if(l.length>0)for(let f of l)o.patch(f,!document.hidden&&!!t.asyncRenderer);else{t.qSync=E(t.qSync||{},t.qAsync,!1),t.qAsync=null;try{A.currentViewTransition?.skipTransition()}catch{}t.stats.syncRenderPatchCount++,t.renderSync()}else typeof l=="function"?o.patch(l(t.state),y):y?(t.stats.asyncRenderPatchCount++,t.qAsync=E(t.qAsync||{},l,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=E(t.qSync||{},l,!1),t.renderSync())}});function r(l){let y=Date.now(),f=s(t.state);t.vode=C(t.state,e.parentElement,0,0,t.vode,f),e.tagName.toUpperCase()!==f[0].toUpperCase()&&(e=t.vode.node,e._vode=t),l||(t.stats.lastSyncRenderTime=Date.now()-y,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let p=r.bind(null,!1),c=r.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=E(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(p))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await A.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let l=Date.now();try{t.state=E(t.state,t.qAsync,!0),t.qAsync=null,A.currentViewTransition=t.asyncRenderer(c),await A.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=Date.now()-l,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.state=o;let i=e;i._vode=t;let S=Array.from(e.parentElement.children).indexOf(e);t.isRendering=!0,t.vode=C(n,e.parentElement,S,S,v(e,!0),s(n)),t.isRendering=!1,t.qSync&&t.renderSync();for(let l of a)o.patch(l);return l=>o.patch(l)}function H(e){if(e?._vode){let s=function(t){if(!t?.node)return;let o=P(t);if(o){for(let r in o)r[0]==="o"&&r[1]==="n"&&(t.node[r]=null);t.node.catch=null}if(t.node._vode)H(t.node);else{let r=M(t);if(r)for(let p of r)s(p)}};var n=s;let a=e._vode;delete e._vode,Object.defineProperty(a.state,"patch",{value:void 0}),Object.defineProperty(a,"renderSync",{value:()=>{}}),Object.defineProperty(a,"renderAsync",{value:()=>{}}),s(a.vode)}else for(let s of e.children)H(s)}function v(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.ELEMENT_NODE){let a=[e.tagName.toLowerCase()];if(n&&(a.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;a.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&v(o,n);r?a.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return a}else return}function W(e,n){if(!e||!Array.isArray(e))throw new Error("first argument to memo() must be an array of values to compare");if(typeof n!="function")throw new Error("second argument to memo() must be a function that returns a vode or props object");return n.__memo=e,n}function $(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return"patch"in e||Object.defineProperty(e,"patch",{enumerable:!1,configurable:!0,writable:!1,value:n=>{let s=e;Array.isArray(s.patch.initialPatches)||(s.patch.initialPatches=[]),s.patch.initialPatches.push(n)}}),e}function J(e){return e}function Q(e){return e?Array.isArray(e)?e[0]:typeof e=="string"||e.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function P(e){if(Array.isArray(e)&&e.length>1&&e[1]&&!Array.isArray(e[1])&&typeof e[1]=="object"&&e[1].nodeType!==Node.TEXT_NODE)return e[1]}function M(e){let n=I(e);return n>0?e.slice(n):null}function z(e){let n=I(e);return n<0?0:e.length-n}function Z(e,n){let s=I(e);if(s>0)return e[n+s]}function I(e){return P(e)?e.length>2?2:-1:Array.isArray(e)&&e.length>1?1:-1}function E(e,n,s){if(!n)return e;for(let a in n){let t=n[a];if(t&&typeof t=="object"){let o=e[a];o?Array.isArray(t)?e[a]=[...t]:t instanceof Date&&o!==t?e[a]=new Date(t):Array.isArray(o)?e[a]=E({},t,s):typeof o=="object"?E(e[a],t,s):e[a]=E({},t,s):Array.isArray(t)?e[a]=[...t]:t instanceof Date?e[a]=new Date(t):e[a]=E({},t,s)}else t===void 0&&s?delete e[a]:e[a]=t}return e}function C(e,n,s,a,t,o,r){try{o=D(e,o,t);let p=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&p)return t;let c=t?.nodeType===Node.TEXT_NODE,i=c?t:t?.node;if(p){N(e,t),i?.remove();return}let S=!p&&w(o),l=!p&&q(o),y=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!S&&!l&&!y&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(y&&S?o=o.wholeText:y&&l&&(o=[...o]),c&&S)return i.nodeValue!==o&&(i.nodeValue=o),t;if(S&&(!i||!c)){let f=document.createTextNode(o);if(i)N(e,t),i.replaceWith(f);else{let d=!1;for(let u=a;u<n.childNodes.length;u++){let x=n.childNodes[u];if(x){x.before(f,x),d=!0;break}}d||n.appendChild(f)}return f}if(l&&(!i||c||t[0]!==o[0])){let f=o;1 in f&&(f[1]=D(e,f[1],void 0));let d=P(o);d?.xmlns!==void 0&&(r=d.xmlns);let u=r?document.createElementNS(r,o[0]):document.createElement(o[0]);if(o.node=u,L(e,u,void 0,d,r??null),d&&"catch"in d&&(o.node.catch=null,o.node.removeAttribute("catch")),i)N(e,t),i.replaceWith(u);else{let h=!1;for(let g=a;g<n.childNodes.length;g++){let T=n.childNodes[g];if(T){T.before(u,T),h=!0;break}}h||n.appendChild(u)}let x=M(o);if(x){let h=d?2:1,g=0;for(let T=0;T<x.length;T++){let m=x[T],b=C(e,u,T,g,void 0,m,r??null);o[T+h]=b,b&&g++}}return o._unmountCount=(d?.onUnmount?1:0)+j(o),typeof d?.onMount=="function"&&e.patch(d.onMount(e,u)),o}if(!c&&l&&t[0]===o[0]){o.node=i;let f=o,d=t,u=P(o),x=P(t);if(u?.xmlns!==void 0&&(r=u.xmlns),f[1]?.__memo){let T=f[1];f[1]=D(e,f[1],d[1]),T!==f[1]&&L(e,i,x,u,r)}else L(e,i,x,u,r);u?.catch&&x?.catch!==u.catch&&(o.node.catch=null,o.node.removeAttribute("catch"));let h=M(o),g=M(t);if(h){let T=u?2:1,m=0;for(let b=0;b<h.length;b++){let B=h[b],K=g&&g[b],F=C(e,i,b,m,K,B,r);o[b+T]=F,F&&m++}}if(g){let T=h?h.length:0;for(let m=g.length-1;m>=T;m--)C(e,i,m,m,g[m],void 0,r)}return o._unmountCount=(u?.onUnmount?1:0)+j(o),o}}catch(p){let c=P(o)?.catch;if(c){let i=typeof c=="function"?c(e,p):c;return C(e,n,s,a,v(o?.node||t?.node,!0),i,r)}else throw p}}function N(e,n){if(!n||!Array.isArray(n)||(n._unmountCount|0)===0)return;let s=M(n);if(s)for(let t=s.length-1;t>=0;t--)N(e,s[t]);let a=P(n);typeof a?.onUnmount=="function"&&e.patch(a.onUnmount(e,n.node))}function j(e){let n=M(e);if(!n)return 0;let s=0;for(let a of n)a&&Array.isArray(a)&&(s+=a._unmountCount|0);return s}function q(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function w(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function D(e,n,s){if(typeof n!="function")return n;let a=n?.__memo,t=s?.__memo;if(Array.isArray(a)&&Array.isArray(t)&&a.length===t.length){let p=!0;for(let c=0;c<a.length;c++)if(a[c]!==t[c]){p=!1;break}if(p)return s}let o=n(e);if(typeof o=="function"&&o?.__memo){let p=o.__memo;if(Array.isArray(p)&&Array.isArray(t)&&p.length===t.length){let i=!0;for(let S=0;S<p.length;S++)if(p[S]!==t[S]){i=!1;break}if(i)return s}let c=o(e);return typeof c=="object"&&(c.__memo=p),c}let r=typeof o=="function"?G(o,e):o;return typeof r=="object"&&(r.__memo=o?.__memo||n?.__memo),r}function G(e,n){return typeof e=="function"?G(e(n),n):e}function L(e,n,s,a,t){if(!a&&!s)return;let o=t!==void 0;if(s)for(let r in s){let p=s[r],c=a?.[r];p!==c&&(a?a[r]=R(e,n,r,p,c,o):R(e,n,r,p,void 0,o))}if(a&&s){for(let r in a)if(!(r in s)){let p=a[r];a[r]=R(e,n,r,void 0,p,o)}}else if(a)for(let r in a){let p=a[r];a[r]=R(e,n,r,void 0,p,o)}}function R(e,n,s,a,t,o){if(s==="style")if(!t)n.style.cssText="";else if(typeof t=="string")a!==t&&(n.style.cssText=t);else if(a&&typeof a=="object"){for(let r in a)t[r]||(n.style[r]=null);for(let r in t){let p=a[r],c=t[r];p!==c&&(n.style[r]=c)}}else for(let r in t)n.style[r]=t[r];else if(s==="class")t?n.setAttribute("class",U(t)):n.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(t){let r=null;if(typeof t=="function"){let p=t;r=c=>e.patch(p(e,c))}else typeof t=="object"&&(r=()=>e.patch(t));n[s]=r}else n[s]=null;else o||(n[s]=t),t==null||t===!1?n.removeAttribute(s):n.setAttribute(s,t);return t}function U(e){return typeof e=="string"?e:Array.isArray(e)?e.map(U).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var et="a",nt="abbr",ot="address",at="area",st="article",rt="aside",ct="audio",it="b",lt="base",pt="bdi",ft="bdo",St="blockquote",ut="body",dt="br",Tt="button",yt="canvas",gt="caption",xt="cite",ht="code",mt="col",bt="colgroup",Et="data",Pt="datalist",At="dd",Ct="del",Mt="details",Rt="dfn",Nt="dialog",Ot="div",Dt="dl",Lt="dt",vt="em",It="embed",Vt="fieldset",Ft="figcaption",Ht="figure",jt="footer",Gt="form",Ut="h1",kt="h2",_t="h3",Bt="h4",Kt="h5",qt="h6",wt="head",Xt="header",Yt="hgroup",Wt="hr",$t="html",Jt="i",Qt="iframe",zt="img",Zt="input",te="ins",ee="kbd",ne="label",oe="legend",ae="li",se="link",re="main",ce="map",ie="mark",le="menu",pe="meta",fe="meter",Se="nav",ue="noscript",de="object",Te="ol",ye="optgroup",ge="option",xe="output",he="p",me="picture",be="pre",Ee="progress",Pe="q",Ae="rp",Ce="rt",Me="ruby",Re="s",Ne="samp",Oe="script",De="search",Le="section",ve="select",Ie="slot",Ve="small",Fe="source",He="span",je="strong",Ge="style",Ue="sub",ke="summary",_e="sup",Be="table",Ke="tbody",qe="td",we="template",Xe="textarea",Ye="tfoot",We="th",$e="thead",Je="time",Qe="title",ze="tr",Ze="track",tn="u",en="ul",nn="var",on="video",an="wbr",sn="animate",rn="animateMotion",cn="animateTransform",ln="circle",pn="clipPath",fn="defs",Sn="desc",un="ellipse",dn="feBlend",Tn="feColorMatrix",yn="feComponentTransfer",gn="feComposite",xn="feConvolveMatrix",hn="feDiffuseLighting",mn="feDisplacementMap",bn="feDistantLight",En="feDropShadow",Pn="feFlood",An="feFuncA",Cn="feFuncB",Mn="feFuncG",Rn="feFuncR",Nn="feGaussianBlur",On="feImage",Dn="feMerge",Ln="feMergeNode",vn="feMorphology",In="feOffset",Vn="fePointLight",Fn="feSpecularLighting",Hn="feSpotLight",jn="feTile",Gn="feTurbulence",Un="filter",kn="foreignObject",_n="g",Bn="image",Kn="line",qn="linearGradient",wn="marker",Xn="mask",Yn="metadata",Wn="mpath",$n="path",Jn="pattern",Qn="polygon",zn="polyline",Zn="radialGradient",to="rect",eo="set",no="stop",oo="svg",ao="switch",so="symbol",ro="text",co="textPath",io="tspan",lo="use",po="view",fo="annotation",So="annotation-xml",uo="maction",To="math",yo="merror",go="mfrac",xo="mi",ho="mmultiscripts",mo="mn",bo="mo",Eo="mover",Po="mpadded",Ao="mphantom",Co="mprescripts",Mo="mroot",Ro="mrow",No="ms",Oo="mspace",Do="msqrt",Lo="mstyle",vo="msub",Io="msubsup",Vo="msup",Fo="mtable",Ho="mtd",jo="mtext",Go="mtr",Uo="munder",ko="munderover",_o="semantics";function k(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let s=1;s<e.length;s++){let a=n,t=e[s];if(!a)n=t;else if(t)if(typeof a=="string"&&typeof t=="string"){let o=a.split(" "),r=t.split(" "),p=new Set([...o,...r]);n=Array.from(p).join(" ").trim()}else if(typeof a=="string"&&Array.isArray(t)){let o=new Set([...t,...a.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&typeof t=="string"){let o=new Set([...a,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&Array.isArray(t)){let o=new Set([...a,...t]);n=Array.from(o).join(" ").trim()}else if(typeof a=="string"&&typeof t=="object")n={[a]:!0,...t};else if(typeof a=="object"&&typeof t=="string")n={...a,[t]:!0};else if(typeof a=="object"&&typeof t=="object")n={...a,...t};else if(typeof a=="object"&&Array.isArray(t)){let o={...a};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(a)&&typeof t=="object"){let o={};for(let r of a)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${a} (${typeof a}) and ${t} (${typeof t})`);else continue}return n}var O;function _(...e){O||(O=document.createElement("div"));try{let n=O.style;for(let s of e)if(typeof s=="object"&&s!==null)for(let a in s)n[a]=s[a];else typeof s=="string"&&(n.cssText+=";"+s);return n.cssText}finally{O.style.cssText=""}}function Yo(...e){if(e.length===0)return;if(e.length===1)return e[0]||void 0;let n;for(let s of e)if(!(typeof s!="object"||s===null)){n||(n={});for(let a in s)a==="style"?n.style=_(n.style,s.style):a==="class"?n.class=k(n.class,s.class):n[a]=s[a]}return n}function $o(e){return new V(e,[])}var V=class e{constructor(n,s){this.state=n;this.keys=s;function a(c,i){if(s.length>1){let S=0,l=i[s[S]];for((typeof l!="object"||l===null)&&(i[s[S]]=l={}),S=1;S<s.length-1;S++){let y=l;l=l[s[S]],(typeof l!="object"||l===null)&&(y[s[S]]=l={})}l[s[S]]=c}else s.length===1?typeof i[s[0]]=="object"&&typeof c=="object"?Object.assign(i[s[0]],c):i[s[0]]=c:Object.assign(i,c)}function t(c){let i={};return a(c,i),i}function o(){if(s.length===0)return n;let c=n?n[s[0]]:void 0;for(let i=1;i<s.length&&c;i++)c=c[s[i]];return c}function r(c){a(c,n)}function p(c,i){i?n.patch([t(c)]):n.patch(t(c))}return new Proxy(this,{get:(c,i,S)=>{if(i==="state")return n;if(i==="get")return o;if(i==="put")return r;if(i==="patch")return p;let l=[...c.keys,String(i)];return new e(c.state,l)}})}state;keys;get(){}put(n){}patch(n){}};export{et as A,nt as ABBR,ot as ADDRESS,sn as ANIMATE,rn as ANIMATEMOTION,cn as ANIMATETRANSFORM,fo as ANNOTATION,So as ANNOTATION_XML,at as AREA,st as ARTICLE,rt as ASIDE,ct as AUDIO,it as B,lt as BASE,pt as BDI,ft as BDO,St as BLOCKQUOTE,ut as BODY,dt as BR,Tt as BUTTON,yt as CANVAS,gt as CAPTION,ln as CIRCLE,xt as CITE,pn as CLIPPATH,ht as CODE,mt as COL,bt as COLGROUP,Et as DATA,Pt as DATALIST,At as DD,fn as DEFS,Ct as DEL,Sn as DESC,Mt as DETAILS,Rt as DFN,Nt as DIALOG,Ot as DIV,Dt as DL,Lt as DT,un as ELLIPSE,vt as EM,It as EMBED,dn as FEBLEND,Tn as FECOLORMATRIX,yn as FECOMPONENTTRANSFER,gn as FECOMPOSITE,xn as FECONVOLVEMATRIX,hn as FEDIFFUSELIGHTING,mn as FEDISPLACEMENTMAP,bn as FEDISTANTLIGHT,En as FEDROPSHADOW,Pn as FEFLOOD,An as FEFUNCA,Cn as FEFUNCB,Mn as FEFUNCG,Rn as FEFUNCR,Nn as FEGAUSSIANBLUR,On as FEIMAGE,Dn as FEMERGE,Ln as FEMERGENODE,vn as FEMORPHOLOGY,In as FEOFFSET,Vn as FEPOINTLIGHT,Fn as FESPECULARLIGHTING,Hn as FESPOTLIGHT,jn as FETILE,Gn as FETURBULENCE,Vt as FIELDSET,Ft as FIGCAPTION,Ht as FIGURE,Un as FILTER,jt as FOOTER,kn as FOREIGNOBJECT,Gt as FORM,_n as G,Ut as H1,kt as H2,_t as H3,Bt as H4,Kt as H5,qt as H6,wt as HEAD,Xt as HEADER,Yt as HGROUP,Wt as HR,$t as HTML,Jt as I,Qt as IFRAME,Bn as IMAGE,zt as IMG,Zt as INPUT,te as INS,ee as KBD,ne as LABEL,oe as LEGEND,ae as LI,Kn as LINE,qn as LINEARGRADIENT,se as LINK,uo as MACTION,re as MAIN,ce as MAP,ie as MARK,wn as MARKER,Xn as MASK,To as MATH,le as MENU,yo as MERROR,pe as META,Yn as METADATA,fe as METER,go as MFRAC,xo as MI,ho as MMULTISCRIPTS,mo as MN,bo as MO,Eo as MOVER,Po as MPADDED,Wn as MPATH,Ao as MPHANTOM,Co as MPRESCRIPTS,Mo as MROOT,Ro as MROW,No as MS,Oo as MSPACE,Do as MSQRT,Lo as MSTYLE,vo as MSUB,Io as MSUBSUP,Vo as MSUP,Fo as MTABLE,Ho as MTD,jo as MTEXT,Go as MTR,Uo as MUNDER,ko as MUNDEROVER,Se as NAV,ue as NOSCRIPT,de as OBJECT,Te as OL,ye as OPTGROUP,ge as OPTION,xe as OUTPUT,he as P,$n as PATH,Jn as PATTERN,me as PICTURE,Qn as POLYGON,zn as POLYLINE,be as PRE,Ee as PROGRESS,Pe as Q,Zn as RADIALGRADIENT,to as RECT,Ae as RP,Ce as RT,Me as RUBY,Re as S,Ne as SAMP,Oe as SCRIPT,De as SEARCH,Le as SECTION,ve as SELECT,_o as SEMANTICS,eo as SET,Ie as SLOT,Ve as SMALL,Fe as SOURCE,He as SPAN,no as STOP,je as STRONG,Ge as STYLE,Ue as SUB,ke as SUMMARY,_e as SUP,oo as SVG,ao as SWITCH,so as SYMBOL,Be as TABLE,Ke as TBODY,qe as TD,we as TEMPLATE,ro as TEXT,Xe as TEXTAREA,co as TEXTPATH,Ye as TFOOT,We as TH,$e as THEAD,Je as TIME,Qe as TITLE,ze as TR,Ze as TRACK,io as TSPAN,tn as U,en as UL,lo as USE,nn as VAR,on as VIDEO,po as VIEW,an as WBR,Y as app,Z as child,z as childCount,M as children,I as childrenStart,$o as context,J as createPatch,$ as createState,H as defuse,A as globals,v as hydrate,W as memo,k as mergeClass,Yo as mergeProps,_ as mergeStyle,P as props,Q as tag,X as vode};
1
+ var E={currentViewTransition:void 0,requestAnimationFrame:typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:typeof document<"u"&&typeof document.startViewTransition=="function"?document.startViewTransition.bind(document):null};function _(e,n,...s){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:typeof n=="object"?[e,n,...s]:[e,...s]}function K(e,n,s,...a){if(!e?.parentElement)throw new Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!n||typeof n!="object")throw new Error("second argument to app() must be a state object");if(typeof s!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=E.requestAnimationFrame,t.asyncRenderer=E.startViewTransition,t.qSync=null,t.qAsync=null,t.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0};let o=n;"patch"in n&&typeof n.patch=="function"&&Array.isArray(n.patch.initialPatches)&&(a=[...n.patch.initialPatches,...a]),Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(i,y)=>{if(!(!i||typeof i!="function"&&typeof i!="object"))if(t.stats.patchCount++,i?.next){let S=i;t.stats.liveEffectCount++;try{let p=await S.next();for(;p.done===!1;){t.stats.liveEffectCount++;try{o.patch(p.value,y),p=await S.next()}finally{t.stats.liveEffectCount--}}o.patch(p.value,y)}finally{t.stats.liveEffectCount--}}else if(i.then){t.stats.liveEffectCount++;try{let S=await i;o.patch(S,y)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(i))if(i.length>0)for(let S of i)o.patch(S,!document.hidden&&!!t.asyncRenderer);else{t.qSync=m(t.qSync||{},t.qAsync,!1),t.qAsync=null;try{E.currentViewTransition?.skipTransition()}catch{}t.stats.syncRenderPatchCount++,t.renderSync()}else typeof i=="function"?o.patch(i(t.state),y):y?(t.stats.asyncRenderPatchCount++,t.qAsync=m(t.qAsync||{},i,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=m(t.qSync||{},i,!1),t.renderSync())}});function r(i){let y=performance.now(),S=s(t.state);t.vode=P(t.state,e.parentElement,0,0,t.vode,S),e.tagName.toUpperCase()!==S[0].toUpperCase()&&(e=t.vode.node,e._vode=t),i||(t.stats.lastSyncRenderTime=performance.now()-y,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let f=r.bind(null,!1),c=r.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=m(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(f))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await E.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let i=performance.now();try{t.state=m(t.state,t.qAsync,!0),t.qAsync=null,E.currentViewTransition=t.asyncRenderer(c),await E.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=performance.now()-i,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.state=o;let l=e;l._vode=t;let T=Array.from(e.parentElement.children).indexOf(e);t.isRendering=!0,t.vode=P(n,e.parentElement,T,T,D(e,!0),s(n)),t.isRendering=!1,t.qSync&&t.renderSync();for(let i of a)o.patch(i);return i=>o.patch(i)}function I(e){if(e?._vode){let s=function(t){if(!t?.node)return;let o=b(t);if(o){for(let r in o)r[0]==="o"&&r[1]==="n"&&(t.node[r]=null);t.node.catch=null}if(t.node._vode)I(t.node);else{let r=L(t);if(r)for(let f of r)s(f)}};var n=s;let a=e._vode;delete e._vode,Object.defineProperty(a.state,"patch",{value:void 0}),Object.defineProperty(a,"renderSync",{value:()=>{}}),Object.defineProperty(a,"renderAsync",{value:()=>{}}),s(a.vode)}else for(let s of e.children)I(s)}function D(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.ELEMENT_NODE){let a=[e.tagName.toLowerCase()];if(n&&(a.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;a.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&D(o,n);r?a.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return a}else return}function q(e,n){if(!e||!Array.isArray(e))throw new Error("first argument to memo() must be an array of values to compare");if(typeof n!="function")throw new Error("second argument to memo() must be a function that returns a child vode");if(n.__memo){let s=n;n=a=>s(a)}return n.__memo=e,n}function w(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return"patch"in e||Object.defineProperty(e,"patch",{enumerable:!1,configurable:!0,writable:!1,value:n=>{let s=e;Array.isArray(s.patch.initialPatches)||(s.patch.initialPatches=[]),s.patch.initialPatches.push(n)}}),e}function X(e){return e}function Y(e){return e?Array.isArray(e)?e[0]:typeof e=="string"||e.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function b(e){if(Array.isArray(e)&&e.length>1&&e[1]&&!Array.isArray(e[1])&&typeof e[1]=="object"&&e[1].nodeType!==Node.TEXT_NODE)return e[1]}function L(e){let n=A(e);return n>0?e.slice(n):null}function W(e){let n=A(e);return n<0?0:e.length-n}function $(e,n){let s=A(e);if(s>0)return e[n+s]}function A(e){return b(e)?e.length>2?2:-1:Array.isArray(e)&&e.length>1?1:-1}function m(e,n,s){if(!n)return e;for(let a in n){let t=n[a];if(t&&typeof t=="object"){let o=e[a];o?Array.isArray(t)?e[a]=[...t]:t instanceof Date&&o!==t?e[a]=new Date(t):Array.isArray(o)?e[a]=m({},t,s):typeof o=="object"?m(e[a],t,s):e[a]=m({},t,s):Array.isArray(t)?e[a]=[...t]:t instanceof Date?e[a]=new Date(t):e[a]=m({},t,s)}else t===void 0&&s?delete e[a]:e[a]=t}return e}function P(e,n,s,a,t,o,r){try{o=F(e,o,t);let f=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&f)return t;let c=t?.nodeType===Node.TEXT_NODE,l=c?t:t?.node;if(f){N(e,t),l?.remove();return}let T=!f&&B(o),i=!f&&k(o),y=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!T&&!i&&!y&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(y&&T?o=o.wholeText:y&&i&&(o=[...o]),c&&T)return l.nodeValue!==o&&(l.nodeValue=o),t;if(T&&(!l||!c)){let S=document.createTextNode(o);if(l)N(e,t),l.replaceWith(S);else{let p=!1;for(let d=a;d<n.childNodes.length;d++){let g=n.childNodes[d];if(g){g.before(S),p=!0;break}}p||n.appendChild(S)}return S}if(i&&(!l||c||t[0]!==o[0])){let S=o;1 in S&&(S[1]=F(e,S[1],void 0));let p=b(o);p?.xmlns!==void 0&&(r=p.xmlns);let d=r?document.createElementNS(r,o[0]):document.createElement(o[0]);if(o.node=d,H(e,d,void 0,p,r??null),p&&"catch"in p&&(o.node.catch=null,o.node.removeAttribute("catch")),l)N(e,t),l.replaceWith(d);else{let h=!1;for(let u=a;u<n.childNodes.length;u++){let x=n.childNodes[u];if(x){x.before(d),h=!0;break}}h||n.appendChild(d)}let g=A(o);if(g>0){let h=p?2:1,u=0;for(let x=0;x<o.length-g;x++){let O=o[x+g],C=P(e,d,x,u,void 0,O,r??null);o[x+h]=C,C&&u++}}return o._unmountCount=(p?.onUnmount?1:0)+V(o),typeof p?.onMount=="function"&&e.patch(p.onMount(e,d)),o}if(!c&&i&&t[0]===o[0]){o.node=l;let S=b(o),p=b(t);S?.xmlns!==void 0&&(r=S.xmlns),H(e,l,p,S,r),S?.catch&&p?.catch!==S.catch&&(o.node.catch=null,o.node.removeAttribute("catch"));let d=A(o),g=A(t);if(d>0){let h=0;for(let u=0;u<o.length-d;u++){let x=o[u+d],O=g>0?t[u+g]:void 0,C=P(e,l,u,h,O,x,r);o[u+d]=C,C&&h++}}if(g>0){let h=d>0?o.length-d:0;for(let u=t.length-1-g;u>=h;u--)P(e,l,u,u,t[u+g],void 0,r)}return o._unmountCount=(S?.onUnmount?1:0)+V(o),o}}catch(f){let c=b(o)?.catch;if(c){let l=typeof c=="function"?c(e,f):c;return P(e,n,s,a,D(o?.node||t?.node,!0),l,r)}else throw f}}function N(e,n){if(!n||!Array.isArray(n)||(n._unmountCount|0)===0)return;let s=L(n);if(s)for(let t=s.length-1;t>=0;t--)N(e,s[t]);let a=b(n);typeof a?.onUnmount=="function"&&e.patch(a.onUnmount(e,n.node))}function V(e){let n=L(e);if(!n)return 0;let s=0;for(let a of n)a&&Array.isArray(a)&&(s+=a._unmountCount|0);return s}function k(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function B(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function F(e,n,s){for(;typeof n=="function"&&!n.__memo;)n=n(e);if(typeof n!="function")return n;let a=n?.__memo,t=s?.__memo;if(Array.isArray(a)&&Array.isArray(t)&&a.length===t.length){let o=!0;for(let r=0;r<a.length;r++)if(a[r]!==t[r]){o=!1;break}if(o)return s}for(;typeof n=="function";)n=n(e);return typeof n=="object"&&(n.__memo=a),n}function H(e,n,s,a,t){if(!a&&!s)return;let o=t!==void 0;if(s)for(let r in s){let f=s[r],c=a?.[r];f!==c&&(a?a[r]=M(e,n,r,f,c,o):M(e,n,r,f,void 0,o))}if(a&&s){for(let r in a)if(!(r in s)){let f=a[r];a[r]=M(e,n,r,void 0,f,o)}}else if(a)for(let r in a){let f=a[r];a[r]=M(e,n,r,void 0,f,o)}}function M(e,n,s,a,t,o){if(s==="style")if(!t)n.style.cssText="";else if(typeof t=="string")a!==t&&(n.style.cssText=t);else if(a&&typeof a=="object"){for(let r in a)t[r]||(n.style[r]=null);for(let r in t){let f=a[r],c=t[r];f!==c&&(n.style[r]=c)}}else for(let r in t)n.style[r]=t[r];else if(s==="class")t?n.setAttribute("class",j(t)):n.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(t){let r=null;if(typeof t=="function"){let f=t;r=c=>e.patch(f(e,c))}else typeof t=="object"&&(r=()=>e.patch(t));n[s]=r}else n[s]=null;else o||(n[s]=t),t==null||t===!1?n.removeAttribute(s):n.setAttribute(s,t);return t}function j(e){return typeof e=="string"?e:Array.isArray(e)?e.map(j).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var Q="a",z="abbr",Z="address",tt="area",et="article",nt="aside",ot="audio",at="b",st="base",rt="bdi",ct="bdo",it="blockquote",lt="body",ft="br",St="button",pt="canvas",ut="caption",dt="cite",Tt="code",yt="col",gt="colgroup",xt="data",ht="datalist",mt="dd",bt="del",Et="details",Pt="dfn",At="dialog",Ct="div",Mt="dl",Nt="dt",Rt="em",Ot="embed",Dt="fieldset",Lt="figcaption",vt="figure",It="footer",Vt="form",Ft="h1",Ht="h2",jt="h3",Gt="h4",Ut="h5",kt="h6",Bt="head",_t="header",Kt="hgroup",qt="hr",wt="html",Xt="i",Yt="iframe",Wt="img",$t="input",Jt="ins",Qt="kbd",zt="label",Zt="legend",te="li",ee="link",ne="main",oe="map",ae="mark",se="menu",re="meta",ce="meter",ie="nav",le="noscript",fe="object",Se="ol",pe="optgroup",ue="option",de="output",Te="p",ye="picture",ge="pre",xe="progress",he="q",me="rp",be="rt",Ee="ruby",Pe="s",Ae="samp",Ce="script",Me="search",Ne="section",Re="select",Oe="slot",De="small",Le="source",ve="span",Ie="strong",Ve="style",Fe="sub",He="summary",je="sup",Ge="table",Ue="tbody",ke="td",Be="template",_e="textarea",Ke="tfoot",qe="th",we="thead",Xe="time",Ye="title",We="tr",$e="track",Je="u",Qe="ul",ze="var",Ze="video",tn="wbr",en="animate",nn="animateMotion",on="animateTransform",an="circle",sn="clipPath",rn="defs",cn="desc",ln="ellipse",fn="feBlend",Sn="feColorMatrix",pn="feComponentTransfer",un="feComposite",dn="feConvolveMatrix",Tn="feDiffuseLighting",yn="feDisplacementMap",gn="feDistantLight",xn="feDropShadow",hn="feFlood",mn="feFuncA",bn="feFuncB",En="feFuncG",Pn="feFuncR",An="feGaussianBlur",Cn="feImage",Mn="feMerge",Nn="feMergeNode",Rn="feMorphology",On="feOffset",Dn="fePointLight",Ln="feSpecularLighting",vn="feSpotLight",In="feTile",Vn="feTurbulence",Fn="filter",Hn="foreignObject",jn="g",Gn="image",Un="line",kn="linearGradient",Bn="marker",_n="mask",Kn="metadata",qn="mpath",wn="path",Xn="pattern",Yn="polygon",Wn="polyline",$n="radialGradient",Jn="rect",Qn="set",zn="stop",Zn="svg",to="switch",eo="symbol",no="text",oo="textPath",ao="tspan",so="use",ro="view",co="annotation",io="annotation-xml",lo="maction",fo="math",So="merror",po="mfrac",uo="mi",To="mmultiscripts",yo="mn",go="mo",xo="mover",ho="mpadded",mo="mphantom",bo="mprescripts",Eo="mroot",Po="mrow",Ao="ms",Co="mspace",Mo="msqrt",No="mstyle",Ro="msub",Oo="msubsup",Do="msup",Lo="mtable",vo="mtd",Io="mtext",Vo="mtr",Fo="munder",Ho="munderover",jo="semantics";function G(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let s=1;s<e.length;s++){let a=n,t=e[s];if(!a)n=t;else if(t)if(typeof a=="string"&&typeof t=="string"){let o=a.split(" "),r=t.split(" "),f=new Set([...o,...r]);n=Array.from(f).join(" ").trim()}else if(typeof a=="string"&&Array.isArray(t)){let o=new Set([...t,...a.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&typeof t=="string"){let o=new Set([...a,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(a)&&Array.isArray(t)){let o=new Set([...a,...t]);n=Array.from(o).join(" ").trim()}else if(typeof a=="string"&&typeof t=="object")n={[a]:!0,...t};else if(typeof a=="object"&&typeof t=="string")n={...a,[t]:!0};else if(typeof a=="object"&&typeof t=="object")n={...a,...t};else if(typeof a=="object"&&Array.isArray(t)){let o={...a};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(a)&&typeof t=="object"){let o={};for(let r of a)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${a} (${typeof a}) and ${t} (${typeof t})`);else continue}return n}var R;function U(...e){R||(R=document.createElement("div"));try{let n=R.style;for(let s of e)if(typeof s=="object"&&s!==null)for(let a in s)n[a]=s[a];else typeof s=="string"&&(n.cssText+=";"+s);return n.cssText}finally{R.style.cssText=""}}function Ko(...e){if(e.length===0)return;if(e.length===1)return e[0]||void 0;let n;for(let s of e)if(!(typeof s!="object"||s===null)){n||(n={});for(let a in s)a==="style"?n.style=U(n.style,s.style):a==="class"?n.class=G(n.class,s.class):n[a]=s[a]}return n}function wo(e){return new v(e,[])}var v=class e{constructor(n,s){this.state=n;this.keys=s;function a(c,l){if(s.length>1){let T=0,i=l[s[T]];for((typeof i!="object"||i===null)&&(l[s[T]]=i={}),T=1;T<s.length-1;T++){let y=i;i=i[s[T]],(typeof i!="object"||i===null)&&(y[s[T]]=i={})}i[s[T]]=c}else s.length===1?typeof l[s[0]]=="object"&&typeof c=="object"&&c!==null?Object.assign(l[s[0]],c):l[s[0]]=c:Object.assign(l,c)}function t(c){let l={};return a(c,l),l}function o(){if(s.length===0)return n;let c=n?n[s[0]]:void 0;for(let l=1;l<s.length&&c;l++)c=c[s[l]];return c}function r(c){a(c,n)}function f(c,l){l?n.patch([t(c)]):n.patch(t(c))}return new Proxy(this,{get:(c,l,T)=>{if(l==="state")return n;if(l==="get")return o;if(l==="put")return r;if(l==="patch")return f;let i=[...c.keys,String(l)];return new e(c.state,i)}})}state;keys;get(){}put(n){}patch(n){}};export{Q as A,z as ABBR,Z as ADDRESS,en as ANIMATE,nn as ANIMATEMOTION,on as ANIMATETRANSFORM,co as ANNOTATION,io as ANNOTATION_XML,tt as AREA,et as ARTICLE,nt as ASIDE,ot as AUDIO,at as B,st as BASE,rt as BDI,ct as BDO,it as BLOCKQUOTE,lt as BODY,ft as BR,St as BUTTON,pt as CANVAS,ut as CAPTION,an as CIRCLE,dt as CITE,sn as CLIPPATH,Tt as CODE,yt as COL,gt as COLGROUP,xt as DATA,ht as DATALIST,mt as DD,rn as DEFS,bt as DEL,cn as DESC,Et as DETAILS,Pt as DFN,At as DIALOG,Ct as DIV,Mt as DL,Nt as DT,ln as ELLIPSE,Rt as EM,Ot as EMBED,fn as FEBLEND,Sn as FECOLORMATRIX,pn as FECOMPONENTTRANSFER,un as FECOMPOSITE,dn as FECONVOLVEMATRIX,Tn as FEDIFFUSELIGHTING,yn as FEDISPLACEMENTMAP,gn as FEDISTANTLIGHT,xn as FEDROPSHADOW,hn as FEFLOOD,mn as FEFUNCA,bn as FEFUNCB,En as FEFUNCG,Pn as FEFUNCR,An as FEGAUSSIANBLUR,Cn as FEIMAGE,Mn as FEMERGE,Nn as FEMERGENODE,Rn as FEMORPHOLOGY,On as FEOFFSET,Dn as FEPOINTLIGHT,Ln as FESPECULARLIGHTING,vn as FESPOTLIGHT,In as FETILE,Vn as FETURBULENCE,Dt as FIELDSET,Lt as FIGCAPTION,vt as FIGURE,Fn as FILTER,It as FOOTER,Hn as FOREIGNOBJECT,Vt as FORM,jn as G,Ft as H1,Ht as H2,jt as H3,Gt as H4,Ut as H5,kt as H6,Bt as HEAD,_t as HEADER,Kt as HGROUP,qt as HR,wt as HTML,Xt as I,Yt as IFRAME,Gn as IMAGE,Wt as IMG,$t as INPUT,Jt as INS,Qt as KBD,zt as LABEL,Zt as LEGEND,te as LI,Un as LINE,kn as LINEARGRADIENT,ee as LINK,lo as MACTION,ne as MAIN,oe as MAP,ae as MARK,Bn as MARKER,_n as MASK,fo as MATH,se as MENU,So as MERROR,re as META,Kn as METADATA,ce as METER,po as MFRAC,uo as MI,To as MMULTISCRIPTS,yo as MN,go as MO,xo as MOVER,ho as MPADDED,qn as MPATH,mo as MPHANTOM,bo as MPRESCRIPTS,Eo as MROOT,Po as MROW,Ao as MS,Co as MSPACE,Mo as MSQRT,No as MSTYLE,Ro as MSUB,Oo as MSUBSUP,Do as MSUP,Lo as MTABLE,vo as MTD,Io as MTEXT,Vo as MTR,Fo as MUNDER,Ho as MUNDEROVER,ie as NAV,le as NOSCRIPT,fe as OBJECT,Se as OL,pe as OPTGROUP,ue as OPTION,de as OUTPUT,Te as P,wn as PATH,Xn as PATTERN,ye as PICTURE,Yn as POLYGON,Wn as POLYLINE,ge as PRE,xe as PROGRESS,he as Q,$n as RADIALGRADIENT,Jn as RECT,me as RP,be as RT,Ee as RUBY,Pe as S,Ae as SAMP,Ce as SCRIPT,Me as SEARCH,Ne as SECTION,Re as SELECT,jo as SEMANTICS,Qn as SET,Oe as SLOT,De as SMALL,Le as SOURCE,ve as SPAN,zn as STOP,Ie as STRONG,Ve as STYLE,Fe as SUB,He as SUMMARY,je as SUP,Zn as SVG,to as SWITCH,eo as SYMBOL,Ge as TABLE,Ue as TBODY,ke as TD,Be as TEMPLATE,no as TEXT,_e as TEXTAREA,oo as TEXTPATH,Ke as TFOOT,qe as TH,we as THEAD,Xe as TIME,Ye as TITLE,We as TR,$e as TRACK,ao as TSPAN,Je as U,Qe as UL,so as USE,ze as VAR,Ze as VIDEO,ro as VIEW,tn as WBR,K as app,$ as child,W as childCount,L as children,A as childrenStart,wo as context,X as createPatch,w as createState,I as defuse,E as globals,D as hydrate,q as memo,G as mergeClass,Ko as mergeProps,U as mergeStyle,b as props,Y as tag,_ as vode};
package/dist/vode.mjs CHANGED
@@ -88,7 +88,7 @@ function app(container, state, dom, ...initialPatches) {
88
88
  }
89
89
  });
90
90
  function renderDom(isAsync) {
91
- const sw = Date.now();
91
+ const sw = performance.now();
92
92
  const vom = dom(_vode.state);
93
93
  _vode.vode = render(_vode.state, container.parentElement, 0, 0, _vode.vode, vom);
94
94
  if (container.tagName.toUpperCase() !== vom[0].toUpperCase()) {
@@ -96,7 +96,7 @@ function app(container, state, dom, ...initialPatches) {
96
96
  container._vode = _vode;
97
97
  }
98
98
  if (!isAsync) {
99
- _vode.stats.lastSyncRenderTime = Date.now() - sw;
99
+ _vode.stats.lastSyncRenderTime = performance.now() - sw;
100
100
  _vode.stats.syncRenderCount++;
101
101
  _vode.isRendering = false;
102
102
  if (_vode.qSync) _vode.renderSync();
@@ -125,14 +125,14 @@ function app(container, state, dom, ...initialPatches) {
125
125
  await globals.currentViewTransition?.updateCallbackDone;
126
126
  if (_vode.isAnimating || !_vode.qAsync || document.hidden) return;
127
127
  _vode.isAnimating = true;
128
- const sw = Date.now();
128
+ const sw = performance.now();
129
129
  try {
130
130
  _vode.state = mergeState(_vode.state, _vode.qAsync, true);
131
131
  _vode.qAsync = null;
132
132
  globals.currentViewTransition = _vode.asyncRenderer(ar);
133
133
  await globals.currentViewTransition?.updateCallbackDone;
134
134
  } finally {
135
- _vode.stats.lastAsyncRenderTime = Date.now() - sw;
135
+ _vode.stats.lastAsyncRenderTime = performance.now() - sw;
136
136
  _vode.stats.asyncRenderCount++;
137
137
  _vode.isAnimating = false;
138
138
  }
@@ -231,11 +231,15 @@ function hydrate(element, prepareForRender) {
231
231
  return void 0;
232
232
  }
233
233
  }
234
- function memo(compare, componentOrProps) {
234
+ function memo(compare, component) {
235
235
  if (!compare || !Array.isArray(compare)) throw new Error("first argument to memo() must be an array of values to compare");
236
- if (typeof componentOrProps !== "function") throw new Error("second argument to memo() must be a function that returns a vode or props object");
237
- componentOrProps.__memo = compare;
238
- return componentOrProps;
236
+ if (typeof component !== "function") throw new Error("second argument to memo() must be a function that returns a child vode");
237
+ if (component.__memo) {
238
+ const comp = component;
239
+ component = (s) => comp(s);
240
+ }
241
+ component.__memo = compare;
242
+ return component;
239
243
  }
240
244
  function createState(state) {
241
245
  if (!state || typeof state !== "object") throw new Error("createState() must be called with a state object");
@@ -360,7 +364,7 @@ function render(state, parent, childIndex, indexInParent, oldVode, newVode, xmln
360
364
  for (let i = indexInParent; i < parent.childNodes.length; i++) {
361
365
  const nextSibling = parent.childNodes[i];
362
366
  if (nextSibling) {
363
- nextSibling.before(text, nextSibling);
367
+ nextSibling.before(text);
364
368
  inserted = true;
365
369
  break;
366
370
  }
@@ -393,7 +397,7 @@ function render(state, parent, childIndex, indexInParent, oldVode, newVode, xmln
393
397
  for (let i = indexInParent; i < parent.childNodes.length; i++) {
394
398
  const nextSibling = parent.childNodes[i];
395
399
  if (nextSibling) {
396
- nextSibling.before(newNode, nextSibling);
400
+ nextSibling.before(newNode);
397
401
  inserted = true;
398
402
  break;
399
403
  }
@@ -402,12 +406,12 @@ function render(state, parent, childIndex, indexInParent, oldVode, newVode, xmln
402
406
  parent.appendChild(newNode);
403
407
  }
404
408
  }
405
- const newKids = children(newVode);
406
- if (newKids) {
409
+ const newStart = childrenStart(newVode);
410
+ if (newStart > 0) {
407
411
  const childOffset = !!properties ? 2 : 1;
408
412
  let indexP = 0;
409
- for (let i = 0; i < newKids.length; i++) {
410
- const child2 = newKids[i];
413
+ for (let i = 0; i < newVode.length - newStart; i++) {
414
+ const child2 = newVode[i + newStart];
411
415
  const attached = render(state, newNode, i, indexP, void 0, child2, xmlns ?? null);
412
416
  newVode[i + childOffset] = attached;
413
417
  if (attached) indexP++;
@@ -421,41 +425,31 @@ function render(state, parent, childIndex, indexInParent, oldVode, newVode, xmln
421
425
  }
422
426
  if (!oldIsText && isNode && oldVode[0] === newVode[0]) {
423
427
  newVode.node = oldNode;
424
- const newvode = newVode;
425
- const oldvode = oldVode;
426
428
  const properties = props(newVode);
427
429
  const oldProps = props(oldVode);
428
- if (properties?.xmlns !== void 0) xmlns = properties.xmlns;
429
- if (newvode[1]?.__memo) {
430
- const prev = newvode[1];
431
- newvode[1] = remember(state, newvode[1], oldvode[1]);
432
- if (prev !== newvode[1]) {
433
- patchProperties(state, oldNode, oldProps, properties, xmlns);
434
- }
435
- } else {
436
- patchProperties(state, oldNode, oldProps, properties, xmlns);
437
- }
430
+ if (properties?.xmlns !== void 0)
431
+ xmlns = properties.xmlns;
432
+ patchProperties(state, oldNode, oldProps, properties, xmlns);
438
433
  if (!!properties?.catch && oldProps?.catch !== properties.catch) {
439
434
  newVode.node["catch"] = null;
440
435
  newVode.node.removeAttribute("catch");
441
436
  }
442
- const newKids = children(newVode);
443
- const oldKids = children(oldVode);
444
- if (newKids) {
445
- const childOffset = !!properties ? 2 : 1;
437
+ const newStart = childrenStart(newVode);
438
+ const oldStart = childrenStart(oldVode);
439
+ if (newStart > 0) {
446
440
  let indexP = 0;
447
- for (let i = 0; i < newKids.length; i++) {
448
- const child2 = newKids[i];
449
- const oldChild = oldKids && oldKids[i];
441
+ for (let i = 0; i < newVode.length - newStart; i++) {
442
+ const child2 = newVode[i + newStart];
443
+ const oldChild = oldStart > 0 ? oldVode[i + oldStart] : void 0;
450
444
  const attached = render(state, oldNode, i, indexP, oldChild, child2, xmlns);
451
- newVode[i + childOffset] = attached;
445
+ newVode[i + newStart] = attached;
452
446
  if (attached) indexP++;
453
447
  }
454
448
  }
455
- if (oldKids) {
456
- const newKidsCount = newKids ? newKids.length : 0;
457
- for (let i = oldKids.length - 1; i >= newKidsCount; i--) {
458
- render(state, oldNode, i, i, oldKids[i], void 0, xmlns);
449
+ if (oldStart > 0) {
450
+ const newKidsCount = newStart > 0 ? newVode.length - newStart : 0;
451
+ for (let i = oldVode.length - 1 - oldStart; i >= newKidsCount; i--) {
452
+ render(state, oldNode, i, i, oldVode[i + oldStart], void 0, xmlns);
459
453
  }
460
454
  }
461
455
  newVode._unmountCount = (properties?.onUnmount ? 1 : 0) + sumChildUnmountCounts(newVode);
@@ -512,6 +506,9 @@ function isTextVode(x) {
512
506
  return typeof x === "string" || x?.nodeType === Node.TEXT_NODE;
513
507
  }
514
508
  function remember(state, present, past) {
509
+ while (typeof present === "function" && !present.__memo) {
510
+ present = present(state);
511
+ }
515
512
  if (typeof present !== "function")
516
513
  return present;
517
514
  const presentMemo = present?.__memo;
@@ -526,37 +523,13 @@ function remember(state, present, past) {
526
523
  }
527
524
  if (same) return past;
528
525
  }
529
- const result = present(state);
530
- if (typeof result === "function" && result?.__memo) {
531
- const resultMemo = result.__memo;
532
- if (Array.isArray(resultMemo) && Array.isArray(pastMemo) && resultMemo.length === pastMemo.length) {
533
- let same = true;
534
- for (let i = 0; i < resultMemo.length; i++) {
535
- if (resultMemo[i] !== pastMemo[i]) {
536
- same = false;
537
- break;
538
- }
539
- }
540
- if (same) return past;
541
- }
542
- const innerRender = result(state);
543
- if (typeof innerRender === "object") {
544
- innerRender.__memo = resultMemo;
545
- }
546
- return innerRender;
526
+ while (typeof present === "function") {
527
+ present = present(state);
547
528
  }
548
- const newRender = typeof result === "function" ? unwrap(result, state) : result;
549
- if (typeof newRender === "object") {
550
- newRender.__memo = result?.__memo || present?.__memo;
551
- }
552
- return newRender;
553
- }
554
- function unwrap(c, s) {
555
- if (typeof c === "function") {
556
- return unwrap(c(s), s);
557
- } else {
558
- return c;
529
+ if (typeof present === "object") {
530
+ present.__memo = presentMemo;
559
531
  }
532
+ return present;
560
533
  }
561
534
  function patchProperties(s, node, oldProps, newProps, xmlns) {
562
535
  if (!newProps && !oldProps) return;
@@ -973,10 +946,11 @@ var ProxyStateContextImpl = class _ProxyStateContextImpl {
973
946
  }
974
947
  raw[keys[i]] = value;
975
948
  } else if (keys.length === 1) {
976
- if (typeof target[keys[0]] === "object" && typeof value === "object")
949
+ if (typeof target[keys[0]] === "object" && typeof value === "object" && value !== null) {
977
950
  Object.assign(target[keys[0]], value);
978
- else
951
+ } else {
979
952
  target[keys[0]] = value;
953
+ }
980
954
  } else {
981
955
  Object.assign(target, value);
982
956
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryupold/vode",
3
- "version": "1.8.7",
3
+ "version": "1.8.8",
4
4
  "description": "a minimalist web framework",
5
5
  "author": "Michael Scherbakow (ryupold)",
6
6
  "license": "MIT",