@ryupold/vode 1.3.0 → 1.3.2

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.
@@ -4,28 +4,29 @@ on:
4
4
  release:
5
5
  types: published
6
6
  branches:
7
- - 'main'
7
+ - "main"
8
+
9
+ permissions:
10
+ id-token: write # Required for OIDC
11
+ contents: read
8
12
 
9
13
  jobs:
10
- test-build-and-publish-to-npm:
14
+ build-and-publish-to-npm:
11
15
  runs-on: ubuntu-latest
12
- permissions:
13
- contents: read
14
- id-token: write
15
16
  steps:
16
17
  - uses: actions/checkout@v4
18
+ - uses: actions/setup-node@v6
19
+ with:
20
+ registry-url: "https://registry.npmjs.org"
17
21
  - uses: oven-sh/setup-bun@v2
18
- - run: bun install
22
+ - run: npm ci
19
23
  - run: bun run release
20
- - run: |
21
- echo "releasing to npm..."
22
- bun publish --provenance --access public | grep "+ @ryupold/vode@" > version.txt
23
- NEWVERSION=$(cat version.txt)
24
- if [[ $NEWVERSION == *"vode"* ]]; then
25
- echo "...success: $NEWVERSION"
26
- else
27
- echo "...failed to publish"
28
- fi
29
-
24
+ - run: npm publish --access public
25
+ env:
26
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
27
+ - uses: actions/setup-node@v6
28
+ with:
29
+ registry-url: "https://npm.pkg.github.com"
30
+ - run: npm publish --access public
30
31
  env:
31
- NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }}
32
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
package/README.md CHANGED
@@ -511,6 +511,65 @@ const CompMathML = (s) =>
511
511
 
512
512
  ### advanced usage
513
513
 
514
+ #### state context
515
+
516
+ The state context utilities can help creating shareable type safe components.
517
+
518
+ ```typescript
519
+
520
+ type Settings = { theme: string, lang: string };
521
+ type StateType = {
522
+ user: {
523
+ profile: { settings: Settings }
524
+ }
525
+ };
526
+
527
+ const state = createState<StateType>({
528
+ user: {
529
+ profile: {
530
+ settings: { theme: 'dark', lang: 'en' }
531
+ }
532
+ }
533
+ });
534
+
535
+ // Create a context for the nested settings
536
+ const settingsCtx = new KeyStateContext<typeof state, Settings>(state, 'user.profile.settings');
537
+
538
+ const element = document.getElementById('app')!;
539
+ app(element, state,
540
+ (s) => [DIV,
541
+ [H1, "Settings"],
542
+ SettingsForm(settingsCtx),
543
+ ]
544
+ );
545
+
546
+ function SettingsForm(ctx: SubStateContext<Settings>) {
547
+ const settings = ctx.get()!; // { theme: 'dark', lang: 'en' }
548
+
549
+ return <Vode>[FORM,
550
+ [P, "current theme:", settings.theme],
551
+ [SELECT,
552
+ {
553
+ class: 'theme-select',
554
+ onchange: (s: PatchableState, e: Event) => ctx.patch({ theme: (<HTMLSelectElement>e.target).value }),
555
+ },
556
+ [OPTION, { value: 'light', selected: settings.theme === 'light' ? '' : null }, 'light'],
557
+ [OPTION, { value: 'dark', selected: settings.theme === 'dark' ? '' : null }, 'dark'],
558
+ ],
559
+ [P, "current lang:", settings.lang],
560
+ [SELECT, {
561
+ class: 'lang-select',
562
+ onchange: (s: PatchableState, e: Event) => ctx.patch({ lang: (<HTMLSelectElement>e.target).value }),
563
+ },
564
+ [OPTION, { value: 'en', selected: settings.lang === 'en' ? '' : null }, 'en'],
565
+ [OPTION, { value: 'de', selected: settings.lang === 'de' ? '' : null }, 'de'],
566
+ [OPTION, { value: 'es', selected: settings.lang === 'es' ? '' : null }, 'es'],
567
+ [OPTION, { value: 'fr', selected: settings.lang === 'fr' ? '' : null }, 'fr'],
568
+ ],
569
+ ];
570
+ }
571
+ ```
572
+
514
573
  #### isolated state
515
574
  You can have multiple isolated vode app instances on a page, each with its own state and render function.
516
575
  The returned patch function from `app` can be used to synchronize the state between them.
@@ -574,13 +633,19 @@ console.log(appNode._vode.stats);
574
633
  // number of patches applied to the state overall
575
634
  patchCount: 100,
576
635
  // number of render-patches (objects) overall
577
- renderPatchCount: 50,
636
+ syncRenderPatchCount: 55,
637
+ // number of view transition render-patches (arrays) overall
638
+ asyncRenderPatchCount: 3,
578
639
  // number of renders performed overall
579
- renderCount: 40,
580
- // number of active (async) running patches (effects)
581
- liveEffectCount: 0,
640
+ syncRenderCount: 43,
641
+ // number of renders performed overall
642
+ asyncRenderCount: 2,
582
643
  // time the last render took in milliseconds
583
- lastRenderTime: 1,
644
+ lastSyncRenderTime: 2,
645
+ // time the last view transition took in milliseconds
646
+ lastAsyncRenderTime: 21,
647
+ // number of active async running effects (function based patches)
648
+ liveEffectCount: 0,
584
649
  }
585
650
  ```
586
651
 
package/dist/vode.js CHANGED
@@ -464,7 +464,11 @@ var V = (() => {
464
464
  return vode2[index + childrenStart(vode2)];
465
465
  }
466
466
  function childrenStart(vode2) {
467
- return props(vode2) ? 2 : 1;
467
+ if (Array.isArray(vode2) && vode2.length > 0) {
468
+ if (!!vode2[1] && !Array.isArray(vode2[1]) && typeof vode2[1] === "object")
469
+ return 2;
470
+ else return 1;
471
+ } else return 0;
468
472
  }
469
473
  function mergeState(target, source, allowDeletion) {
470
474
  if (!source) return target;
@@ -1013,15 +1017,16 @@ var V = (() => {
1013
1017
  animation.push(this.createPatch(v));
1014
1018
  }
1015
1019
  this.state.patch(animation);
1020
+ } else {
1021
+ this.state.patch(this.createPatch(value));
1016
1022
  }
1017
- this.state.patch(this.createPatch(value));
1018
1023
  }
1019
1024
  /**
1020
1025
  * Creates a render-patch for the parent state by setting a nested sub-state value while creating necessary structure.
1021
1026
  *
1022
1027
  * @example
1023
1028
  * ```typescript
1024
- * const ctx = new StateContext(state, 'user.profile.settings');
1029
+ * const ctx = new KeyStateContext(state, 'user.profile.settings');
1025
1030
  * const patch = ctx.createPatch({ theme: 'light' });
1026
1031
  * // patch is { user: { profile: { settings: { theme: 'light' } } } }
1027
1032
  * ```
package/dist/vode.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";var V=(()=>{var N=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var G=(e,n)=>{for(var a in n)N(e,a,{get:n[a],enumerable:!0})},K=(e,n,a,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of j(n))!U.call(e,t)&&t!==a&&N(e,t,{get:()=>n[t],enumerable:!(s=H(n,t))||s.enumerable});return e};var B=e=>K(N({},"__esModule",{value:!0}),e);var Kn={};G(Kn,{A:()=>Z,ABBR:()=>tt,ADDRESS:()=>et,ANIMATE:()=>no,ANIMATEMOTION:()=>so,ANIMATETRANSFORM:()=>ao,ANNOTATION:()=>ln,ANNOTATION_XML:()=>Sn,AREA:()=>ot,ARTICLE:()=>nt,ASIDE:()=>st,AUDIO:()=>at,B:()=>rt,BASE:()=>ct,BDI:()=>it,BDO:()=>pt,BLOCKQUOTE:()=>lt,BODY:()=>St,BR:()=>Tt,BUTTON:()=>ft,CANVAS:()=>dt,CAPTION:()=>ut,CIRCLE:()=>ro,CITE:()=>yt,CLIPPATH:()=>co,CODE:()=>gt,COL:()=>xt,COLGROUP:()=>ht,DATA:()=>mt,DATALIST:()=>Et,DD:()=>bt,DEFS:()=>io,DEL:()=>Pt,DESC:()=>po,DETAILS:()=>At,DFN:()=>Ct,DIALOG:()=>Mt,DIV:()=>Nt,DL:()=>Rt,DT:()=>Ot,DelegateStateContext:()=>L,ELLIPSE:()=>lo,EM:()=>Dt,EMBED:()=>vt,FEBLEND:()=>So,FECOLORMATRIX:()=>To,FECOMPONENTTRANSFER:()=>fo,FECOMPOSITE:()=>uo,FECONVOLVEMATRIX:()=>yo,FEDIFFUSELIGHTING:()=>go,FEDISPLACEMENTMAP:()=>xo,FEDISTANTLIGHT:()=>ho,FEDROPSHADOW:()=>mo,FEFLOOD:()=>Eo,FEFUNCA:()=>bo,FEFUNCB:()=>Po,FEFUNCG:()=>Ao,FEFUNCR:()=>Co,FEGAUSSIANBLUR:()=>Mo,FEIMAGE:()=>No,FEMERGE:()=>Ro,FEMERGENODE:()=>Oo,FEMORPHOLOGY:()=>Do,FEOFFSET:()=>vo,FEPOINTLIGHT:()=>Lo,FESPECULARLIGHTING:()=>Io,FESPOTLIGHT:()=>Fo,FETILE:()=>Vo,FETURBULENCE:()=>ko,FIELDSET:()=>Lt,FIGCAPTION:()=>It,FIGURE:()=>Ft,FILTER:()=>Ho,FOOTER:()=>Vt,FOREIGNOBJECT:()=>jo,FORM:()=>kt,G:()=>Uo,H1:()=>Ht,H2:()=>jt,H3:()=>Ut,H4:()=>Gt,H5:()=>Kt,H6:()=>Bt,HEAD:()=>_t,HEADER:()=>qt,HGROUP:()=>Xt,HR:()=>wt,HTML:()=>$t,I:()=>Yt,IFRAME:()=>Wt,IMAGE:()=>Go,IMG:()=>Jt,INPUT:()=>Qt,INS:()=>zt,KBD:()=>Zt,KeyStateContext:()=>v,LABEL:()=>te,LEGEND:()=>ee,LI:()=>oe,LINE:()=>Ko,LINEARGRADIENT:()=>Bo,LINK:()=>ne,MACTION:()=>Tn,MAIN:()=>se,MAP:()=>ae,MARK:()=>re,MARKER:()=>_o,MASK:()=>qo,MATH:()=>fn,MENU:()=>ce,MERROR:()=>dn,META:()=>ie,METADATA:()=>Xo,METER:()=>pe,MFRAC:()=>un,MI:()=>yn,MMULTISCRIPTS:()=>gn,MN:()=>xn,MO:()=>hn,MOVER:()=>mn,MPADDED:()=>En,MPATH:()=>wo,MPHANTOM:()=>bn,MPRESCRIPTS:()=>Pn,MROOT:()=>An,MROW:()=>Cn,MS:()=>Mn,MSPACE:()=>Nn,MSQRT:()=>Rn,MSTYLE:()=>On,MSUB:()=>Dn,MSUBSUP:()=>vn,MSUP:()=>Ln,MTABLE:()=>In,MTD:()=>Fn,MTEXT:()=>Vn,MTR:()=>kn,MUNDER:()=>Hn,MUNDEROVER:()=>jn,NAV:()=>le,NOSCRIPT:()=>Se,OBJECT:()=>Te,OL:()=>fe,OPTGROUP:()=>de,OPTION:()=>ue,OUTPUT:()=>ye,P:()=>ge,PATH:()=>$o,PATTERN:()=>Yo,PICTURE:()=>xe,POLYGON:()=>Wo,POLYLINE:()=>Jo,PRE:()=>he,PROGRESS:()=>me,Q:()=>Ee,RADIALGRADIENT:()=>Qo,RECT:()=>zo,RP:()=>be,RT:()=>Pe,RUBY:()=>Ae,S:()=>Ce,SAMP:()=>Me,SCRIPT:()=>Ne,SEARCH:()=>Re,SECTION:()=>Oe,SELECT:()=>De,SEMANTICS:()=>Un,SET:()=>Zo,SLOT:()=>ve,SMALL:()=>Le,SOURCE:()=>Ie,SPAN:()=>Fe,STOP:()=>tn,STRONG:()=>Ve,STYLE:()=>ke,SUB:()=>He,SUMMARY:()=>je,SUP:()=>Ue,SVG:()=>en,SWITCH:()=>on,SYMBOL:()=>nn,TABLE:()=>Ge,TBODY:()=>Ke,TD:()=>Be,TEMPLATE:()=>_e,TEXT:()=>sn,TEXTAREA:()=>qe,TEXTPATH:()=>an,TFOOT:()=>Xe,TH:()=>we,THEAD:()=>$e,TIME:()=>Ye,TITLE:()=>We,TR:()=>Je,TRACK:()=>Qe,TSPAN:()=>rn,U:()=>ze,UL:()=>Ze,USE:()=>cn,VAR:()=>to,VIDEO:()=>eo,VIEW:()=>pn,WBR:()=>oo,app:()=>q,child:()=>J,childCount:()=>W,children:()=>A,childrenStart:()=>M,createPatch:()=>$,createState:()=>w,globals:()=>h,hydrate:()=>D,memo:()=>X,mergeClass:()=>Gn,props:()=>m,tag:()=>Y,vode:()=>_});var h={currentViewTransition:void 0,requestAnimationFrame:window.requestAnimationFrame?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:document.startViewTransition?document.startViewTransition.bind(document):null};function _(e,n,...a){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:n?[e,n,...a]:[e,...a]}function q(e,n,a,...s){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 a!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=h.requestAnimationFrame,t.asyncRenderer=h.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},Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(c,d)=>{if(!(!c||typeof c!="function"&&typeof c!="object"))if(t.stats.patchCount++,c?.next){let S=c;t.stats.liveEffectCount++;try{let x=await S.next();for(;x.done===!1;){t.stats.liveEffectCount++;try{t.patch(x.value,d),x=await S.next()}finally{t.stats.liveEffectCount--}}t.patch(x.value,d)}finally{t.stats.liveEffectCount--}}else if(c.then){t.stats.liveEffectCount++;try{let S=await c;t.patch(S,d)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(c))if(c.length>0)for(let S of c)t.patch(S,!document.hidden&&!!t.asyncRenderer);else t.qSync=g(t.qSync||{},t.qAsync,!1),t.qAsync=null,h.currentViewTransition?.skipTransition(),t.stats.syncRenderPatchCount++,t.renderSync();else typeof c=="function"?t.patch(c(t.state),d):d?(t.stats.asyncRenderPatchCount++,t.qAsync=g(t.qAsync||{},c,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=g(t.qSync||{},c,!1),t.renderSync())}});function o(c){let d=Date.now(),S=a(t.state);t.vode=C(t.state,t.patch,e.parentElement,0,t.vode,S),e.tagName.toUpperCase()!==S[0].toUpperCase()&&(e=t.vode.node,e._vode=t),c||(t.stats.lastSyncRenderTime=Date.now()-d,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let r=o.bind(null,!1),l=o.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=g(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(r))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await h.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let c=Date.now();try{t.state=g(t.state,t.qAsync,!0),t.qAsync=null,h.currentViewTransition=t.asyncRenderer(l),await h.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=Date.now()-c,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.patch=n.patch,t.state=n;let u=e;u._vode=t,t.vode=C(n,t.patch,e.parentElement,Array.from(e.parentElement.children).indexOf(e),D(e,!0),a(n));for(let c of s)t.patch(c);return t.patch}function D(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.COMMENT_NODE)return;if(e.nodeType===Node.ELEMENT_NODE){let s=[e.tagName.toLowerCase()];if(n&&(s.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;s.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&D(o,n);r?s.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return s}else return}function X(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 w(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return e}function $(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 m(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 A(e){let n=M(e);return n>0?e.slice(n):null}function W(e){return e.length-M(e)}function J(e,n){return e[n+M(e)]}function M(e){return m(e)?2:1}function g(e,n,a){if(!n)return e;for(let s in n){let t=n[s];if(t&&typeof t=="object"){let o=e[s];o?Array.isArray(t)?e[s]=[...t]:t instanceof Date&&o!==t?e[s]=new Date(t):Array.isArray(o)?e[s]=g({},t,a):typeof o=="object"?g(e[s],t,a):e[s]=g({},t,a):Array.isArray(t)?e[s]=[...t]:t instanceof Date?e[s]=new Date(t):e[s]=g({},t,a)}else t===void 0&&a?delete e[s]:e[s]=t}return e}function C(e,n,a,s,t,o,r){o=R(e,o,t);let l=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&l)return t;let u=t?.nodeType===Node.TEXT_NODE,c=u?t:t?.node;if(l){c?.onUnmount&&n(c.onUnmount(c)),c?.remove();return}let d=!l&&z(o),S=!l&&Q(o),x=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!d&&!S&&!x&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(x&&d?o=o.wholeText:x&&S&&(o=[...o]),u&&d)return c.nodeValue!==o&&(c.nodeValue=o),t;if(d&&(!c||!u)){let T=document.createTextNode(o);return c?(c.onUnmount&&n(c.onUnmount(c)),c.replaceWith(T)):a.childNodes[s]?a.insertBefore(T,a.childNodes[s]):a.appendChild(T),T}if(S&&(!c||u||t[0]!==o[0])){let T=o;1 in T&&(T[1]=R(e,T[1],void 0));let b=m(o);r=b?.xmlns||r;let f=r?document.createElementNS(r,o[0]):document.createElement(o[0]);o.node=f,O(e,n,f,void 0,b),c?(c.onUnmount&&n(c.onUnmount(c)),c.replaceWith(f)):a.childNodes[s]?a.insertBefore(f,a.childNodes[s]):a.appendChild(f);let y=A(o);if(y)for(let p=0;p<y.length;p++){let i=y[p],E=C(e,n,f,p,void 0,i,r);o[b?p+2:p+1]=E}return f.onMount&&n(f.onMount(f)),o}if(!u&&S&&t[0]===o[0]){o.node=c;let T=o,b=t,f=!1;if(T[1]?.__memo){let i=T[1];if(T[1]=R(e,T[1],b[1]),i!==T[1]){let E=m(o);O(e,n,c,m(t),E),f=!!E}}else{let i=m(o);O(e,n,c,m(t),i),f=!!i}let y=A(o),p=A(t);if(y){for(let i=0;i<y.length;i++){let E=y[i],k=p&&p[i],I=C(e,n,c,i,k,E,r);I&&(o[f?i+2:i+1]=I)}for(let i=y.length;p&&i<p.length;i++)p[i]?.node?p[i].node.remove():p[i]?.nodeType===Node.TEXT_NODE&&p[i].remove()}for(let i=y?.length||0;i<p?.length;i++)p[i]?.node?p[i].node.remove():p[i]?.nodeType===Node.TEXT_NODE&&p[i].remove();return o}}function Q(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function z(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function R(e,n,a){if(typeof n!="function")return n;let s=n?.__memo,t=a?.__memo;if(Array.isArray(s)&&Array.isArray(t)&&s.length===t.length){let r=!0;for(let l=0;l<s.length;l++)if(s[l]!==t[l]){r=!1;break}if(r)return a}let o=F(n,e);return typeof o=="object"&&(o.__memo=n?.__memo),o}function F(e,n){return typeof e=="function"?F(e(n),n):e}function O(e,n,a,s,t){if(!(!t&&!s)){if(s)for(let o in s){let r=s[o],l=t?.[o];r!==l&&(t?t[o]=P(e,n,a,o,r,l):P(e,n,a,o,r,void 0))}if(t&&s){for(let o in t)if(!(o in s)){let r=t[o];t[o]=P(e,n,a,o,void 0,r)}}else if(t)for(let o in t){let r=t[o];t[o]=P(e,n,a,o,void 0,r)}}}function P(e,n,a,s,t,o){if(s==="style")if(!o)a.style.cssText="";else if(typeof o=="string")t!==o&&(a.style.cssText=o);else if(t&&typeof t=="object")for(let r in{...t,...o})!t||o[r]!==t[r]?a.style[r]=o[r]:t[r]&&!o[r]&&(a.style[r]=void 0);else for(let r in o)a.style[r]=o[r];else if(s==="class")o?a.setAttribute("class",V(o)):a.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(o){let r=null;if(typeof o=="function"){let l=o;r=u=>n(l(e,u))}else typeof o=="object"&&(r=()=>n(o));a[s]=r}else a[s]=null;else o!=null&&o!==!1?a.setAttribute(s,o):a.removeAttribute(s);return o}function V(e){return typeof e=="string"?e:Array.isArray(e)?e.map(V).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var Z="a",tt="abbr",et="address",ot="area",nt="article",st="aside",at="audio",rt="b",ct="base",it="bdi",pt="bdo",lt="blockquote",St="body",Tt="br",ft="button",dt="canvas",ut="caption",yt="cite",gt="code",xt="col",ht="colgroup",mt="data",Et="datalist",bt="dd",Pt="del",At="details",Ct="dfn",Mt="dialog",Nt="div",Rt="dl",Ot="dt",Dt="em",vt="embed",Lt="fieldset",It="figcaption",Ft="figure",Vt="footer",kt="form",Ht="h1",jt="h2",Ut="h3",Gt="h4",Kt="h5",Bt="h6",_t="head",qt="header",Xt="hgroup",wt="hr",$t="html",Yt="i",Wt="iframe",Jt="img",Qt="input",zt="ins",Zt="kbd",te="label",ee="legend",oe="li",ne="link",se="main",ae="map",re="mark",ce="menu",ie="meta",pe="meter",le="nav",Se="noscript",Te="object",fe="ol",de="optgroup",ue="option",ye="output",ge="p",xe="picture",he="pre",me="progress",Ee="q",be="rp",Pe="rt",Ae="ruby",Ce="s",Me="samp",Ne="script",Re="search",Oe="section",De="select",ve="slot",Le="small",Ie="source",Fe="span",Ve="strong",ke="style",He="sub",je="summary",Ue="sup",Ge="table",Ke="tbody",Be="td",_e="template",qe="textarea",Xe="tfoot",we="th",$e="thead",Ye="time",We="title",Je="tr",Qe="track",ze="u",Ze="ul",to="var",eo="video",oo="wbr",no="animate",so="animateMotion",ao="animateTransform",ro="circle",co="clipPath",io="defs",po="desc",lo="ellipse",So="feBlend",To="feColorMatrix",fo="feComponentTransfer",uo="feComposite",yo="feConvolveMatrix",go="feDiffuseLighting",xo="feDisplacementMap",ho="feDistantLight",mo="feDropShadow",Eo="feFlood",bo="feFuncA",Po="feFuncB",Ao="feFuncG",Co="feFuncR",Mo="feGaussianBlur",No="feImage",Ro="feMerge",Oo="feMergeNode",Do="feMorphology",vo="feOffset",Lo="fePointLight",Io="feSpecularLighting",Fo="feSpotLight",Vo="feTile",ko="feTurbulence",Ho="filter",jo="foreignObject",Uo="g",Go="image",Ko="line",Bo="linearGradient",_o="marker",qo="mask",Xo="metadata",wo="mpath",$o="path",Yo="pattern",Wo="polygon",Jo="polyline",Qo="radialGradient",zo="rect",Zo="set",tn="stop",en="svg",on="switch",nn="symbol",sn="text",an="textPath",rn="tspan",cn="use",pn="view",ln="annotation",Sn="annotation-xml",Tn="maction",fn="math",dn="merror",un="mfrac",yn="mi",gn="mmultiscripts",xn="mn",hn="mo",mn="mover",En="mpadded",bn="mphantom",Pn="mprescripts",An="mroot",Cn="mrow",Mn="ms",Nn="mspace",Rn="msqrt",On="mstyle",Dn="msub",vn="msubsup",Ln="msup",In="mtable",Fn="mtd",Vn="mtext",kn="mtr",Hn="munder",jn="munderover",Un="semantics";function Gn(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let a=1;a<e.length;a++){let s=n,t=e[a];if(!s)n=t;else if(t)if(typeof s=="string"&&typeof t=="string"){let o=s.split(" "),r=t.split(" "),l=new Set([...o,...r]);n=Array.from(l).join(" ").trim()}else if(typeof s=="string"&&Array.isArray(t)){let o=new Set([...t,...s.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(s)&&typeof t=="string"){let o=new Set([...s,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(s)&&Array.isArray(t)){let o=new Set([...s,...t]);n=Array.from(o).join(" ").trim()}else if(typeof s=="string"&&typeof t=="object")n={[s]:!0,...t};else if(typeof s=="object"&&typeof t=="string")n={...s,[t]:!0};else if(typeof s=="object"&&typeof t=="object")n={...s,...t};else if(typeof s=="object"&&Array.isArray(t)){let o={...s};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(s)&&typeof t=="object"){let o={};for(let r of s)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${s} (${typeof s}) and ${t} (${typeof t})`);else continue}return n}var v=class{constructor(n,a){this.state=n;this.path=a;this.keys=a.split(".")}keys;get(){let n=this.keys,a=this.state?this.state[n[0]]:void 0;for(let s=1;s<n.length&&a;s++)a=a[n[s]];return a}put(n){this.putDeep(n,this.state)}patch(n){if(Array.isArray(n)){let a=[];for(let s of n)a.push(this.createPatch(s));this.state.patch(a)}this.state.patch(this.createPatch(n))}createPatch(n){let a={};return this.putDeep(n,a),a}putDeep(n,a){let s=this.keys;if(s.length>1){let t=0,o=a[s[t]];for((typeof o!="object"||o===null)&&(a[s[t]]=o={}),t=1;t<s.length-1;t++){let r=o;o=o[s[t]],(typeof o!="object"||o===null)&&(r[s[t]]=o={})}o[s[t]]=n}else typeof a[s[0]]=="object"&&typeof n=="object"?Object.assign(a[s[0]],n):a[s[0]]=n}},L=class{constructor(n,a,s,t){this.state=n;this.get=a;this.put=s;this.patch=t}};return B(Kn);})();
1
+ "use strict";var V=(()=>{var N=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var G=(e,n)=>{for(var a in n)N(e,a,{get:n[a],enumerable:!0})},K=(e,n,a,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of j(n))!U.call(e,t)&&t!==a&&N(e,t,{get:()=>n[t],enumerable:!(s=H(n,t))||s.enumerable});return e};var B=e=>K(N({},"__esModule",{value:!0}),e);var Kn={};G(Kn,{A:()=>Z,ABBR:()=>tt,ADDRESS:()=>et,ANIMATE:()=>no,ANIMATEMOTION:()=>so,ANIMATETRANSFORM:()=>ao,ANNOTATION:()=>ln,ANNOTATION_XML:()=>Sn,AREA:()=>ot,ARTICLE:()=>nt,ASIDE:()=>st,AUDIO:()=>at,B:()=>rt,BASE:()=>ct,BDI:()=>it,BDO:()=>pt,BLOCKQUOTE:()=>lt,BODY:()=>St,BR:()=>Tt,BUTTON:()=>ft,CANVAS:()=>dt,CAPTION:()=>ut,CIRCLE:()=>ro,CITE:()=>yt,CLIPPATH:()=>co,CODE:()=>gt,COL:()=>xt,COLGROUP:()=>ht,DATA:()=>mt,DATALIST:()=>Et,DD:()=>bt,DEFS:()=>io,DEL:()=>Pt,DESC:()=>po,DETAILS:()=>At,DFN:()=>Ct,DIALOG:()=>Mt,DIV:()=>Nt,DL:()=>Rt,DT:()=>Ot,DelegateStateContext:()=>L,ELLIPSE:()=>lo,EM:()=>Dt,EMBED:()=>vt,FEBLEND:()=>So,FECOLORMATRIX:()=>To,FECOMPONENTTRANSFER:()=>fo,FECOMPOSITE:()=>uo,FECONVOLVEMATRIX:()=>yo,FEDIFFUSELIGHTING:()=>go,FEDISPLACEMENTMAP:()=>xo,FEDISTANTLIGHT:()=>ho,FEDROPSHADOW:()=>mo,FEFLOOD:()=>Eo,FEFUNCA:()=>bo,FEFUNCB:()=>Po,FEFUNCG:()=>Ao,FEFUNCR:()=>Co,FEGAUSSIANBLUR:()=>Mo,FEIMAGE:()=>No,FEMERGE:()=>Ro,FEMERGENODE:()=>Oo,FEMORPHOLOGY:()=>Do,FEOFFSET:()=>vo,FEPOINTLIGHT:()=>Lo,FESPECULARLIGHTING:()=>Io,FESPOTLIGHT:()=>Fo,FETILE:()=>Vo,FETURBULENCE:()=>ko,FIELDSET:()=>Lt,FIGCAPTION:()=>It,FIGURE:()=>Ft,FILTER:()=>Ho,FOOTER:()=>Vt,FOREIGNOBJECT:()=>jo,FORM:()=>kt,G:()=>Uo,H1:()=>Ht,H2:()=>jt,H3:()=>Ut,H4:()=>Gt,H5:()=>Kt,H6:()=>Bt,HEAD:()=>_t,HEADER:()=>qt,HGROUP:()=>Xt,HR:()=>wt,HTML:()=>$t,I:()=>Yt,IFRAME:()=>Wt,IMAGE:()=>Go,IMG:()=>Jt,INPUT:()=>Qt,INS:()=>zt,KBD:()=>Zt,KeyStateContext:()=>v,LABEL:()=>te,LEGEND:()=>ee,LI:()=>oe,LINE:()=>Ko,LINEARGRADIENT:()=>Bo,LINK:()=>ne,MACTION:()=>Tn,MAIN:()=>se,MAP:()=>ae,MARK:()=>re,MARKER:()=>_o,MASK:()=>qo,MATH:()=>fn,MENU:()=>ce,MERROR:()=>dn,META:()=>ie,METADATA:()=>Xo,METER:()=>pe,MFRAC:()=>un,MI:()=>yn,MMULTISCRIPTS:()=>gn,MN:()=>xn,MO:()=>hn,MOVER:()=>mn,MPADDED:()=>En,MPATH:()=>wo,MPHANTOM:()=>bn,MPRESCRIPTS:()=>Pn,MROOT:()=>An,MROW:()=>Cn,MS:()=>Mn,MSPACE:()=>Nn,MSQRT:()=>Rn,MSTYLE:()=>On,MSUB:()=>Dn,MSUBSUP:()=>vn,MSUP:()=>Ln,MTABLE:()=>In,MTD:()=>Fn,MTEXT:()=>Vn,MTR:()=>kn,MUNDER:()=>Hn,MUNDEROVER:()=>jn,NAV:()=>le,NOSCRIPT:()=>Se,OBJECT:()=>Te,OL:()=>fe,OPTGROUP:()=>de,OPTION:()=>ue,OUTPUT:()=>ye,P:()=>ge,PATH:()=>$o,PATTERN:()=>Yo,PICTURE:()=>xe,POLYGON:()=>Wo,POLYLINE:()=>Jo,PRE:()=>he,PROGRESS:()=>me,Q:()=>Ee,RADIALGRADIENT:()=>Qo,RECT:()=>zo,RP:()=>be,RT:()=>Pe,RUBY:()=>Ae,S:()=>Ce,SAMP:()=>Me,SCRIPT:()=>Ne,SEARCH:()=>Re,SECTION:()=>Oe,SELECT:()=>De,SEMANTICS:()=>Un,SET:()=>Zo,SLOT:()=>ve,SMALL:()=>Le,SOURCE:()=>Ie,SPAN:()=>Fe,STOP:()=>tn,STRONG:()=>Ve,STYLE:()=>ke,SUB:()=>He,SUMMARY:()=>je,SUP:()=>Ue,SVG:()=>en,SWITCH:()=>on,SYMBOL:()=>nn,TABLE:()=>Ge,TBODY:()=>Ke,TD:()=>Be,TEMPLATE:()=>_e,TEXT:()=>sn,TEXTAREA:()=>qe,TEXTPATH:()=>an,TFOOT:()=>Xe,TH:()=>we,THEAD:()=>$e,TIME:()=>Ye,TITLE:()=>We,TR:()=>Je,TRACK:()=>Qe,TSPAN:()=>rn,U:()=>ze,UL:()=>Ze,USE:()=>cn,VAR:()=>to,VIDEO:()=>eo,VIEW:()=>pn,WBR:()=>oo,app:()=>q,child:()=>J,childCount:()=>W,children:()=>A,childrenStart:()=>M,createPatch:()=>$,createState:()=>w,globals:()=>h,hydrate:()=>D,memo:()=>X,mergeClass:()=>Gn,props:()=>E,tag:()=>Y,vode:()=>_});var h={currentViewTransition:void 0,requestAnimationFrame:window.requestAnimationFrame?window.requestAnimationFrame.bind(window):(e=>e()),startViewTransition:document.startViewTransition?document.startViewTransition.bind(document):null};function _(e,n,...a){if(!e)throw new Error("first argument to vode() must be a tag name or a vode");return Array.isArray(e)?e:n?[e,n,...a]:[e,...a]}function q(e,n,a,...s){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 a!="function")throw new Error("third argument to app() must be a function that returns a vode");let t={};t.syncRenderer=h.requestAnimationFrame,t.asyncRenderer=h.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},Object.defineProperty(n,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(c,d)=>{if(!(!c||typeof c!="function"&&typeof c!="object"))if(t.stats.patchCount++,c?.next){let S=c;t.stats.liveEffectCount++;try{let x=await S.next();for(;x.done===!1;){t.stats.liveEffectCount++;try{t.patch(x.value,d),x=await S.next()}finally{t.stats.liveEffectCount--}}t.patch(x.value,d)}finally{t.stats.liveEffectCount--}}else if(c.then){t.stats.liveEffectCount++;try{let S=await c;t.patch(S,d)}finally{t.stats.liveEffectCount--}}else if(Array.isArray(c))if(c.length>0)for(let S of c)t.patch(S,!document.hidden&&!!t.asyncRenderer);else t.qSync=g(t.qSync||{},t.qAsync,!1),t.qAsync=null,h.currentViewTransition?.skipTransition(),t.stats.syncRenderPatchCount++,t.renderSync();else typeof c=="function"?t.patch(c(t.state),d):d?(t.stats.asyncRenderPatchCount++,t.qAsync=g(t.qAsync||{},c,!1),await t.renderAsync()):(t.stats.syncRenderPatchCount++,t.qSync=g(t.qSync||{},c,!1),t.renderSync())}});function o(c){let d=Date.now(),S=a(t.state);t.vode=C(t.state,t.patch,e.parentElement,0,t.vode,S),e.tagName.toUpperCase()!==S[0].toUpperCase()&&(e=t.vode.node,e._vode=t),c||(t.stats.lastSyncRenderTime=Date.now()-d,t.stats.syncRenderCount++,t.isRendering=!1,t.qSync&&t.renderSync())}let r=o.bind(null,!1),l=o.bind(null,!0);Object.defineProperty(t,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{t.isRendering||!t.qSync||(t.isRendering=!0,t.state=g(t.state,t.qSync,!0),t.qSync=null,t.syncRenderer(r))}}),Object.defineProperty(t,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(t.isAnimating||!t.qAsync||(await h.currentViewTransition?.updateCallbackDone,t.isAnimating||!t.qAsync||document.hidden))return;t.isAnimating=!0;let c=Date.now();try{t.state=g(t.state,t.qAsync,!0),t.qAsync=null,h.currentViewTransition=t.asyncRenderer(l),await h.currentViewTransition?.updateCallbackDone}finally{t.stats.lastAsyncRenderTime=Date.now()-c,t.stats.asyncRenderCount++,t.isAnimating=!1}t.qAsync&&t.renderAsync()}}),t.patch=n.patch,t.state=n;let u=e;u._vode=t,t.vode=C(n,t.patch,e.parentElement,Array.from(e.parentElement.children).indexOf(e),D(e,!0),a(n));for(let c of s)t.patch(c);return t.patch}function D(e,n){if(e?.nodeType===Node.TEXT_NODE)return e.nodeValue?.trim()!==""?n?e:e.nodeValue:void 0;if(e.nodeType===Node.COMMENT_NODE)return;if(e.nodeType===Node.ELEMENT_NODE){let s=[e.tagName.toLowerCase()];if(n&&(s.node=e),e?.hasAttributes()){let t={},o=e.attributes;for(let r of o)t[r.name]=r.value;s.push(t)}if(e.hasChildNodes()){let t=[];for(let o of e.childNodes){let r=o&&D(o,n);r?s.push(r):o&&n&&t.push(o)}for(let o of t)o.remove()}return s}else return}function X(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 w(e){if(!e||typeof e!="object")throw new Error("createState() must be called with a state object");return e}function $(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 E(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 A(e){let n=M(e);return n>0?e.slice(n):null}function W(e){return e.length-M(e)}function J(e,n){return e[n+M(e)]}function M(e){return Array.isArray(e)&&e.length>0?e[1]&&!Array.isArray(e[1])&&typeof e[1]=="object"?2:1:0}function g(e,n,a){if(!n)return e;for(let s in n){let t=n[s];if(t&&typeof t=="object"){let o=e[s];o?Array.isArray(t)?e[s]=[...t]:t instanceof Date&&o!==t?e[s]=new Date(t):Array.isArray(o)?e[s]=g({},t,a):typeof o=="object"?g(e[s],t,a):e[s]=g({},t,a):Array.isArray(t)?e[s]=[...t]:t instanceof Date?e[s]=new Date(t):e[s]=g({},t,a)}else t===void 0&&a?delete e[s]:e[s]=t}return e}function C(e,n,a,s,t,o,r){o=R(e,o,t);let l=!o||typeof o=="number"||typeof o=="boolean";if(o===t||!t&&l)return t;let u=t?.nodeType===Node.TEXT_NODE,c=u?t:t?.node;if(l){c?.onUnmount&&n(c.onUnmount(c)),c?.remove();return}let d=!l&&z(o),S=!l&&Q(o),x=!!o&&typeof o!="string"&&!!(o?.node||o?.nodeType===Node.TEXT_NODE);if(!d&&!S&&!x&&!t)throw new Error("Invalid vode: "+typeof o+" "+JSON.stringify(o));if(x&&d?o=o.wholeText:x&&S&&(o=[...o]),u&&d)return c.nodeValue!==o&&(c.nodeValue=o),t;if(d&&(!c||!u)){let T=document.createTextNode(o);return c?(c.onUnmount&&n(c.onUnmount(c)),c.replaceWith(T)):a.childNodes[s]?a.insertBefore(T,a.childNodes[s]):a.appendChild(T),T}if(S&&(!c||u||t[0]!==o[0])){let T=o;1 in T&&(T[1]=R(e,T[1],void 0));let b=E(o);r=b?.xmlns||r;let f=r?document.createElementNS(r,o[0]):document.createElement(o[0]);o.node=f,O(e,n,f,void 0,b),c?(c.onUnmount&&n(c.onUnmount(c)),c.replaceWith(f)):a.childNodes[s]?a.insertBefore(f,a.childNodes[s]):a.appendChild(f);let y=A(o);if(y)for(let p=0;p<y.length;p++){let i=y[p],m=C(e,n,f,p,void 0,i,r);o[b?p+2:p+1]=m}return f.onMount&&n(f.onMount(f)),o}if(!u&&S&&t[0]===o[0]){o.node=c;let T=o,b=t,f=!1;if(T[1]?.__memo){let i=T[1];if(T[1]=R(e,T[1],b[1]),i!==T[1]){let m=E(o);O(e,n,c,E(t),m),f=!!m}}else{let i=E(o);O(e,n,c,E(t),i),f=!!i}let y=A(o),p=A(t);if(y){for(let i=0;i<y.length;i++){let m=y[i],k=p&&p[i],I=C(e,n,c,i,k,m,r);I&&(o[f?i+2:i+1]=I)}for(let i=y.length;p&&i<p.length;i++)p[i]?.node?p[i].node.remove():p[i]?.nodeType===Node.TEXT_NODE&&p[i].remove()}for(let i=y?.length||0;i<p?.length;i++)p[i]?.node?p[i].node.remove():p[i]?.nodeType===Node.TEXT_NODE&&p[i].remove();return o}}function Q(e){return Array.isArray(e)&&e.length>0&&typeof e[0]=="string"}function z(e){return typeof e=="string"||e?.nodeType===Node.TEXT_NODE}function R(e,n,a){if(typeof n!="function")return n;let s=n?.__memo,t=a?.__memo;if(Array.isArray(s)&&Array.isArray(t)&&s.length===t.length){let r=!0;for(let l=0;l<s.length;l++)if(s[l]!==t[l]){r=!1;break}if(r)return a}let o=F(n,e);return typeof o=="object"&&(o.__memo=n?.__memo),o}function F(e,n){return typeof e=="function"?F(e(n),n):e}function O(e,n,a,s,t){if(!(!t&&!s)){if(s)for(let o in s){let r=s[o],l=t?.[o];r!==l&&(t?t[o]=P(e,n,a,o,r,l):P(e,n,a,o,r,void 0))}if(t&&s){for(let o in t)if(!(o in s)){let r=t[o];t[o]=P(e,n,a,o,void 0,r)}}else if(t)for(let o in t){let r=t[o];t[o]=P(e,n,a,o,void 0,r)}}}function P(e,n,a,s,t,o){if(s==="style")if(!o)a.style.cssText="";else if(typeof o=="string")t!==o&&(a.style.cssText=o);else if(t&&typeof t=="object")for(let r in{...t,...o})!t||o[r]!==t[r]?a.style[r]=o[r]:t[r]&&!o[r]&&(a.style[r]=void 0);else for(let r in o)a.style[r]=o[r];else if(s==="class")o?a.setAttribute("class",V(o)):a.removeAttribute("class");else if(s[0]==="o"&&s[1]==="n")if(o){let r=null;if(typeof o=="function"){let l=o;r=u=>n(l(e,u))}else typeof o=="object"&&(r=()=>n(o));a[s]=r}else a[s]=null;else o!=null&&o!==!1?a.setAttribute(s,o):a.removeAttribute(s);return o}function V(e){return typeof e=="string"?e:Array.isArray(e)?e.map(V).join(" "):typeof e=="object"?Object.keys(e).filter(n=>e[n]).join(" "):""}var Z="a",tt="abbr",et="address",ot="area",nt="article",st="aside",at="audio",rt="b",ct="base",it="bdi",pt="bdo",lt="blockquote",St="body",Tt="br",ft="button",dt="canvas",ut="caption",yt="cite",gt="code",xt="col",ht="colgroup",mt="data",Et="datalist",bt="dd",Pt="del",At="details",Ct="dfn",Mt="dialog",Nt="div",Rt="dl",Ot="dt",Dt="em",vt="embed",Lt="fieldset",It="figcaption",Ft="figure",Vt="footer",kt="form",Ht="h1",jt="h2",Ut="h3",Gt="h4",Kt="h5",Bt="h6",_t="head",qt="header",Xt="hgroup",wt="hr",$t="html",Yt="i",Wt="iframe",Jt="img",Qt="input",zt="ins",Zt="kbd",te="label",ee="legend",oe="li",ne="link",se="main",ae="map",re="mark",ce="menu",ie="meta",pe="meter",le="nav",Se="noscript",Te="object",fe="ol",de="optgroup",ue="option",ye="output",ge="p",xe="picture",he="pre",me="progress",Ee="q",be="rp",Pe="rt",Ae="ruby",Ce="s",Me="samp",Ne="script",Re="search",Oe="section",De="select",ve="slot",Le="small",Ie="source",Fe="span",Ve="strong",ke="style",He="sub",je="summary",Ue="sup",Ge="table",Ke="tbody",Be="td",_e="template",qe="textarea",Xe="tfoot",we="th",$e="thead",Ye="time",We="title",Je="tr",Qe="track",ze="u",Ze="ul",to="var",eo="video",oo="wbr",no="animate",so="animateMotion",ao="animateTransform",ro="circle",co="clipPath",io="defs",po="desc",lo="ellipse",So="feBlend",To="feColorMatrix",fo="feComponentTransfer",uo="feComposite",yo="feConvolveMatrix",go="feDiffuseLighting",xo="feDisplacementMap",ho="feDistantLight",mo="feDropShadow",Eo="feFlood",bo="feFuncA",Po="feFuncB",Ao="feFuncG",Co="feFuncR",Mo="feGaussianBlur",No="feImage",Ro="feMerge",Oo="feMergeNode",Do="feMorphology",vo="feOffset",Lo="fePointLight",Io="feSpecularLighting",Fo="feSpotLight",Vo="feTile",ko="feTurbulence",Ho="filter",jo="foreignObject",Uo="g",Go="image",Ko="line",Bo="linearGradient",_o="marker",qo="mask",Xo="metadata",wo="mpath",$o="path",Yo="pattern",Wo="polygon",Jo="polyline",Qo="radialGradient",zo="rect",Zo="set",tn="stop",en="svg",on="switch",nn="symbol",sn="text",an="textPath",rn="tspan",cn="use",pn="view",ln="annotation",Sn="annotation-xml",Tn="maction",fn="math",dn="merror",un="mfrac",yn="mi",gn="mmultiscripts",xn="mn",hn="mo",mn="mover",En="mpadded",bn="mphantom",Pn="mprescripts",An="mroot",Cn="mrow",Mn="ms",Nn="mspace",Rn="msqrt",On="mstyle",Dn="msub",vn="msubsup",Ln="msup",In="mtable",Fn="mtd",Vn="mtext",kn="mtr",Hn="munder",jn="munderover",Un="semantics";function Gn(...e){if(!e||e.length===0)return null;if(e.length===1)return e[0];let n=e[0];for(let a=1;a<e.length;a++){let s=n,t=e[a];if(!s)n=t;else if(t)if(typeof s=="string"&&typeof t=="string"){let o=s.split(" "),r=t.split(" "),l=new Set([...o,...r]);n=Array.from(l).join(" ").trim()}else if(typeof s=="string"&&Array.isArray(t)){let o=new Set([...t,...s.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(s)&&typeof t=="string"){let o=new Set([...s,...t.split(" ")]);n=Array.from(o).join(" ").trim()}else if(Array.isArray(s)&&Array.isArray(t)){let o=new Set([...s,...t]);n=Array.from(o).join(" ").trim()}else if(typeof s=="string"&&typeof t=="object")n={[s]:!0,...t};else if(typeof s=="object"&&typeof t=="string")n={...s,[t]:!0};else if(typeof s=="object"&&typeof t=="object")n={...s,...t};else if(typeof s=="object"&&Array.isArray(t)){let o={...s};for(let r of t)o[r]=!0;n=o}else if(Array.isArray(s)&&typeof t=="object"){let o={};for(let r of s)o[r]=!0;for(let r of Object.keys(t))o[r]=t[r];n=o}else throw new Error(`cannot merge classes of ${s} (${typeof s}) and ${t} (${typeof t})`);else continue}return n}var v=class{constructor(n,a){this.state=n;this.path=a;this.keys=a.split(".")}keys;get(){let n=this.keys,a=this.state?this.state[n[0]]:void 0;for(let s=1;s<n.length&&a;s++)a=a[n[s]];return a}put(n){this.putDeep(n,this.state)}patch(n){if(Array.isArray(n)){let a=[];for(let s of n)a.push(this.createPatch(s));this.state.patch(a)}else this.state.patch(this.createPatch(n))}createPatch(n){let a={};return this.putDeep(n,a),a}putDeep(n,a){let s=this.keys;if(s.length>1){let t=0,o=a[s[t]];for((typeof o!="object"||o===null)&&(a[s[t]]=o={}),t=1;t<s.length-1;t++){let r=o;o=o[s[t]],(typeof o!="object"||o===null)&&(r[s[t]]=o={})}o[s[t]]=n}else typeof a[s[0]]=="object"&&typeof n=="object"?Object.assign(a[s[0]],n):a[s[0]]=n}},L=class{constructor(n,a,s,t){this.state=n;this.get=a;this.put=s;this.patch=t}};return B(Kn);})();
package/dist/vode.min.mjs CHANGED
@@ -1 +1 @@
1
- var R={currentViewTransition:void 0,requestAnimationFrame:window.requestAnimationFrame?window.requestAnimationFrame.bind(window):(z)=>z(),startViewTransition:document.startViewTransition?document.startViewTransition.bind(document):null};function u(z,E,...J){if(!z)throw Error("first argument to vode() must be a tag name or a vode");if(Array.isArray(z))return z;else if(E)return[z,E,...J];else return[z,...J]}function v(z,E,J,...G){if(!z?.parentElement)throw Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!E||typeof E!=="object")throw Error("second argument to app() must be a state object");if(typeof J!=="function")throw Error("third argument to app() must be a function that returns a vode");let q={};q.syncRenderer=R.requestAnimationFrame,q.asyncRenderer=R.startViewTransition,q.qSync=null,q.qAsync=null,q.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0},Object.defineProperty(E,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(U,H)=>{if(!U||typeof U!=="function"&&typeof U!=="object")return;if(q.stats.patchCount++,U?.next){let L=U;q.stats.liveEffectCount++;try{let M=await L.next();while(M.done===!1){q.stats.liveEffectCount++;try{q.patch(M.value,H),M=await L.next()}finally{q.stats.liveEffectCount--}}q.patch(M.value,H)}finally{q.stats.liveEffectCount--}}else if(U.then){q.stats.liveEffectCount++;try{let L=await U;q.patch(L,H)}finally{q.stats.liveEffectCount--}}else if(Array.isArray(U))if(U.length>0)for(let L of U)q.patch(L,!document.hidden&&!!q.asyncRenderer);else q.qSync=F(q.qSync||{},q.qAsync,!1),q.qAsync=null,R.currentViewTransition?.skipTransition(),q.stats.syncRenderPatchCount++,q.renderSync();else if(typeof U==="function")q.patch(U(q.state),H);else if(H)q.stats.asyncRenderPatchCount++,q.qAsync=F(q.qAsync||{},U,!1),await q.renderAsync();else q.stats.syncRenderPatchCount++,q.qSync=F(q.qSync||{},U,!1),q.renderSync()}});function B(U){let H=Date.now(),L=J(q.state);if(q.vode=C(q.state,q.patch,z.parentElement,0,q.vode,L),z.tagName.toUpperCase()!==L[0].toUpperCase())z=q.vode.node,z._vode=q;if(!U){if(q.stats.lastSyncRenderTime=Date.now()-H,q.stats.syncRenderCount++,q.isRendering=!1,q.qSync)q.renderSync()}}let Q=B.bind(null,!1),$=B.bind(null,!0);Object.defineProperty(q,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{if(q.isRendering||!q.qSync)return;q.isRendering=!0,q.state=F(q.state,q.qSync,!0),q.qSync=null,q.syncRenderer(Q)}}),Object.defineProperty(q,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(q.isAnimating||!q.qAsync)return;if(await R.currentViewTransition?.updateCallbackDone,q.isAnimating||!q.qAsync||document.hidden)return;q.isAnimating=!0;let U=Date.now();try{q.state=F(q.state,q.qAsync,!0),q.qAsync=null,R.currentViewTransition=q.asyncRenderer($),await R.currentViewTransition?.updateCallbackDone}finally{q.stats.lastAsyncRenderTime=Date.now()-U,q.stats.asyncRenderCount++,q.isAnimating=!1}if(q.qAsync)q.renderAsync()}}),q.patch=E.patch,q.state=E;let Y=z;Y._vode=q,q.vode=C(E,q.patch,z.parentElement,Array.from(z.parentElement.children).indexOf(z),x(z,!0),J(E));for(let U of G)q.patch(U);return q.patch}function x(z,E){if(z?.nodeType===Node.TEXT_NODE){if(z.nodeValue?.trim()!=="")return E?z:z.nodeValue;return}else if(z.nodeType===Node.COMMENT_NODE)return;else if(z.nodeType===Node.ELEMENT_NODE){let G=[z.tagName.toLowerCase()];if(E)G.node=z;if(z?.hasAttributes()){let q={},B=z.attributes;for(let Q of B)q[Q.name]=Q.value;G.push(q)}if(z.hasChildNodes()){let q=[];for(let B of z.childNodes){let Q=B&&x(B,E);if(Q)G.push(Q);else if(B&&E)q.push(B)}for(let B of q)B.remove()}return G}else return}function V(z,E){if(!z||!Array.isArray(z))throw Error("first argument to memo() must be an array of values to compare");if(typeof E!=="function")throw Error("second argument to memo() must be a function that returns a vode or props object");return E.__memo=z,E}function w(z){if(!z||typeof z!=="object")throw Error("createState() must be called with a state object");return z}function c(z){return z}function p(z){return z?Array.isArray(z)?z[0]:typeof z==="string"||z.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function D(z){if(Array.isArray(z)&&z.length>1&&z[1]&&!Array.isArray(z[1])){if(typeof z[1]==="object"&&z[1].nodeType!==Node.TEXT_NODE)return z[1]}return}function f(z){let E=N(z);if(E>0)return z.slice(E);return null}function i(z){return z.length-N(z)}function r(z,E){return z[E+N(z)]}function N(z){return D(z)?2:1}function F(z,E,J){if(!E)return z;for(let G in E){let q=E[G];if(q&&typeof q==="object"){let B=z[G];if(B)if(Array.isArray(q))z[G]=[...q];else if(q instanceof Date&&B!==q)z[G]=new Date(q);else if(Array.isArray(B))z[G]=F({},q,J);else if(typeof B==="object")F(z[G],q,J);else z[G]=F({},q,J);else if(Array.isArray(q))z[G]=[...q];else if(q instanceof Date)z[G]=new Date(q);else z[G]=F({},q,J)}else if(q===void 0&&J)delete z[G];else z[G]=q}return z}function C(z,E,J,G,q,B,Q){B=K(z,B,q);let $=!B||typeof B==="number"||typeof B==="boolean";if(B===q||!q&&$)return q;let Y=q?.nodeType===Node.TEXT_NODE,U=Y?q:q?.node;if($){U?.onUnmount&&E(U.onUnmount(U)),U?.remove();return}let H=!$&&y(B),L=!$&&g(B),M=!!B&&typeof B!=="string"&&!!(B?.node||B?.nodeType===Node.TEXT_NODE);if(!H&&!L&&!M&&!q)throw Error("Invalid vode: "+typeof B+" "+JSON.stringify(B));else if(M&&H)B=B.wholeText;else if(M&&L)B=[...B];if(Y&&H){if(U.nodeValue!==B)U.nodeValue=B;return q}if(H&&(!U||!Y)){let W=document.createTextNode(B);if(U)U.onUnmount&&E(U.onUnmount(U)),U.replaceWith(W);else if(J.childNodes[G])J.insertBefore(W,J.childNodes[G]);else J.appendChild(W);return W}if(L&&(!U||Y||q[0]!==B[0])){let W=B;if(1 in W)W[1]=K(z,W[1],void 0);let I=D(B);Q=I?.xmlns||Q;let j=Q?document.createElementNS(Q,B[0]):document.createElement(B[0]);if(B.node=j,S(z,E,j,void 0,I),U)U.onUnmount&&E(U.onUnmount(U)),U.replaceWith(j);else if(J.childNodes[G])J.insertBefore(j,J.childNodes[G]);else J.appendChild(j);let O=f(B);if(O)for(let Z=0;Z<O.length;Z++){let X=O[Z],T=C(z,E,j,Z,void 0,X,Q);B[I?Z+2:Z+1]=T}return j.onMount&&E(j.onMount(j)),B}if(!Y&&L&&q[0]===B[0]){B.node=U;let W=B,I=q,j=!1;if(W[1]?.__memo){let X=W[1];if(W[1]=K(z,W[1],I[1]),X!==W[1]){let T=D(B);S(z,E,U,D(q),T),j=!!T}}else{let X=D(B);S(z,E,U,D(q),X),j=!!X}let O=f(B),Z=f(q);if(O){for(let X=0;X<O.length;X++){let T=O[X],_=Z&&Z[X],b=C(z,E,U,X,_,T,Q);if(b)B[j?X+2:X+1]=b}for(let X=O.length;Z&&X<Z.length;X++)if(Z[X]?.node)Z[X].node.remove();else if(Z[X]?.nodeType===Node.TEXT_NODE)Z[X].remove()}for(let X=O?.length||0;X<Z?.length;X++)if(Z[X]?.node)Z[X].node.remove();else if(Z[X]?.nodeType===Node.TEXT_NODE)Z[X].remove();return B}return}function g(z){return Array.isArray(z)&&z.length>0&&typeof z[0]==="string"}function y(z){return typeof z==="string"||z?.nodeType===Node.TEXT_NODE}function K(z,E,J){if(typeof E!=="function")return E;let G=E?.__memo,q=J?.__memo;if(Array.isArray(G)&&Array.isArray(q)&&G.length===q.length){let Q=!0;for(let $=0;$<G.length;$++)if(G[$]!==q[$]){Q=!1;break}if(Q)return J}let B=k(E,z);if(typeof B==="object")B.__memo=E?.__memo;return B}function k(z,E){if(typeof z==="function")return k(z(E),E);else return z}function S(z,E,J,G,q){if(!q&&!G)return;if(G)for(let B in G){let Q=G[B],$=q?.[B];if(Q!==$)if(q)q[B]=A(z,E,J,B,Q,$);else A(z,E,J,B,Q,void 0)}if(q&&G){for(let B in q)if(!(B in G)){let Q=q[B];q[B]=A(z,E,J,B,void 0,Q)}}else if(q)for(let B in q){let Q=q[B];q[B]=A(z,E,J,B,void 0,Q)}}function A(z,E,J,G,q,B){if(G==="style")if(!B)J.style.cssText="";else if(typeof B==="string"){if(q!==B)J.style.cssText=B}else if(q&&typeof q==="object"){for(let Q in{...q,...B})if(!q||B[Q]!==q[Q])J.style[Q]=B[Q];else if(q[Q]&&!B[Q])J.style[Q]=void 0}else for(let Q in B)J.style[Q]=B[Q];else if(G==="class")if(B)J.setAttribute("class",P(B));else J.removeAttribute("class");else if(G[0]==="o"&&G[1]==="n")if(B){let Q=null;if(typeof B==="function"){let $=B;Q=(Y)=>E($(z,Y))}else if(typeof B==="object")Q=()=>E(B);J[G]=Q}else J[G]=null;else if(B!==null&&B!==void 0&&B!==!1)J.setAttribute(G,B);else J.removeAttribute(G);return B}function P(z){if(typeof z==="string")return z;else if(Array.isArray(z))return z.map(P).join(" ");else if(typeof z==="object")return Object.keys(z).filter((E)=>z[E]).join(" ");else return""}var s="a",n="abbr",t="address",d="area",a="article",o="aside",e="audio",qq="b",zq="base",Bq="bdi",Eq="bdo",Gq="blockquote",Jq="body",Qq="br",Uq="button",Xq="canvas",Zq="caption",$q="cite",Lq="code",Wq="col",jq="colgroup",Hq="data",Yq="datalist",Oq="dd",Fq="del",Mq="details",Tq="dfn",Rq="dialog",Dq="div",Iq="dl",Aq="dt",Cq="em",fq="embed",Kq="fieldset",Sq="figcaption",Nq="figure",bq="footer",xq="form",kq="h1",Pq="h2",_q="h3",gq="h4",yq="h5",hq="h6",mq="head",uq="header",vq="hgroup",Vq="hr",wq="html",cq="i",pq="iframe",iq="img",rq="input",lq="ins",sq="kbd",nq="label",tq="legend",dq="li",aq="link",oq="main",eq="map",qz="mark",zz="menu",Bz="meta",Ez="meter",Gz="nav",Jz="noscript",Qz="object",Uz="ol",Xz="optgroup",Zz="option",$z="output",Lz="p",Wz="picture",jz="pre",Hz="progress",Yz="q",Oz="rp",Fz="rt",Mz="ruby",Tz="s",Rz="samp",Dz="script",Iz="search",Az="section",Cz="select",fz="slot",Kz="small",Sz="source",Nz="span",bz="strong",xz="style",kz="sub",Pz="summary",_z="sup",gz="table",yz="tbody",hz="td",mz="template",uz="textarea",vz="tfoot",Vz="th",wz="thead",cz="time",pz="title",iz="tr",rz="track",lz="u",sz="ul",nz="var",tz="video",dz="wbr",az="animate",oz="animateMotion",ez="animateTransform",qB="circle",zB="clipPath",BB="defs",EB="desc",GB="ellipse",JB="feBlend",QB="feColorMatrix",UB="feComponentTransfer",XB="feComposite",ZB="feConvolveMatrix",$B="feDiffuseLighting",LB="feDisplacementMap",WB="feDistantLight",jB="feDropShadow",HB="feFlood",YB="feFuncA",OB="feFuncB",FB="feFuncG",MB="feFuncR",TB="feGaussianBlur",RB="feImage",DB="feMerge",IB="feMergeNode",AB="feMorphology",CB="feOffset",fB="fePointLight",KB="feSpecularLighting",SB="feSpotLight",NB="feTile",bB="feTurbulence",xB="filter",kB="foreignObject",PB="g",_B="image",gB="line",yB="linearGradient",hB="marker",mB="mask",uB="metadata",vB="mpath",VB="path",wB="pattern",cB="polygon",pB="polyline",iB="radialGradient",rB="rect",lB="set",sB="stop",nB="svg",tB="switch",dB="symbol",aB="text",oB="textPath",eB="tspan",qE="use",zE="view",BE="annotation",EE="annotation-xml",GE="maction",JE="math",QE="merror",UE="mfrac",XE="mi",ZE="mmultiscripts",$E="mn",LE="mo",WE="mover",jE="mpadded",HE="mphantom",YE="mprescripts",OE="mroot",FE="mrow",ME="ms",TE="mspace",RE="msqrt",DE="mstyle",IE="msub",AE="msubsup",CE="msup",fE="mtable",KE="mtd",SE="mtext",NE="mtr",bE="munder",xE="munderover",kE="semantics";function _E(...z){if(!z||z.length===0)return null;if(z.length===1)return z[0];let E=z[0];for(let J=1;J<z.length;J++){let G=E,q=z[J];if(!G)E=q;else if(!q)continue;else if(typeof G==="string"&&typeof q==="string"){let B=G.split(" "),Q=q.split(" "),$=new Set([...B,...Q]);E=Array.from($).join(" ").trim()}else if(typeof G==="string"&&Array.isArray(q)){let B=new Set([...q,...G.split(" ")]);E=Array.from(B).join(" ").trim()}else if(Array.isArray(G)&&typeof q==="string"){let B=new Set([...G,...q.split(" ")]);E=Array.from(B).join(" ").trim()}else if(Array.isArray(G)&&Array.isArray(q)){let B=new Set([...G,...q]);E=Array.from(B).join(" ").trim()}else if(typeof G==="string"&&typeof q==="object")E={[G]:!0,...q};else if(typeof G==="object"&&typeof q==="string")E={...G,[q]:!0};else if(typeof G==="object"&&typeof q==="object")E={...G,...q};else if(typeof G==="object"&&Array.isArray(q)){let B={...G};for(let Q of q)B[Q]=!0;E=B}else if(Array.isArray(G)&&typeof q==="object"){let B={};for(let Q of G)B[Q]=!0;for(let Q of Object.keys(q))B[Q]=q[Q];E=B}else throw Error(`cannot merge classes of ${G} (${typeof G}) and ${q} (${typeof q})`)}return E}class h{state;path;keys;constructor(z,E){this.state=z;this.path=E;this.keys=E.split(".")}get(){let z=this.keys,E=this.state?this.state[z[0]]:void 0;for(let J=1;J<z.length&&!!E;J++)E=E[z[J]];return E}put(z){this.putDeep(z,this.state)}patch(z){if(Array.isArray(z)){let E=[];for(let J of z)E.push(this.createPatch(J));this.state.patch(E)}this.state.patch(this.createPatch(z))}createPatch(z){let E={};return this.putDeep(z,E),E}putDeep(z,E){let J=this.keys;if(J.length>1){let G=0,q=E[J[G]];if(typeof q!=="object"||q===null)E[J[G]]=q={};for(G=1;G<J.length-1;G++){let B=q;if(q=q[J[G]],typeof q!=="object"||q===null)B[J[G]]=q={}}q[J[G]]=z}else if(typeof E[J[0]]==="object"&&typeof z==="object")Object.assign(E[J[0]],z);else E[J[0]]=z}}class m{state;get;put;patch;constructor(z,E,J,G){this.state=z;this.get=E;this.put=J;this.patch=G}}export{u as vode,p as tag,D as props,_E as mergeClass,V as memo,x as hydrate,R as globals,w as createState,c as createPatch,N as childrenStart,f as children,i as childCount,r as child,v as app,dz as WBR,zE as VIEW,tz as VIDEO,nz as VAR,qE as USE,sz as UL,lz as U,eB as TSPAN,rz as TRACK,iz as TR,pz as TITLE,cz as TIME,wz as THEAD,Vz as TH,vz as TFOOT,oB as TEXTPATH,uz as TEXTAREA,aB as TEXT,mz as TEMPLATE,hz as TD,yz as TBODY,gz as TABLE,dB as SYMBOL,tB as SWITCH,nB as SVG,_z as SUP,Pz as SUMMARY,kz as SUB,xz as STYLE,bz as STRONG,sB as STOP,Nz as SPAN,Sz as SOURCE,Kz as SMALL,fz as SLOT,lB as SET,kE as SEMANTICS,Cz as SELECT,Az as SECTION,Iz as SEARCH,Dz as SCRIPT,Rz as SAMP,Tz as S,Mz as RUBY,Fz as RT,Oz as RP,rB as RECT,iB as RADIALGRADIENT,Yz as Q,Hz as PROGRESS,jz as PRE,pB as POLYLINE,cB as POLYGON,Wz as PICTURE,wB as PATTERN,VB as PATH,Lz as P,$z as OUTPUT,Zz as OPTION,Xz as OPTGROUP,Uz as OL,Qz as OBJECT,Jz as NOSCRIPT,Gz as NAV,xE as MUNDEROVER,bE as MUNDER,NE as MTR,SE as MTEXT,KE as MTD,fE as MTABLE,CE as MSUP,AE as MSUBSUP,IE as MSUB,DE as MSTYLE,RE as MSQRT,TE as MSPACE,ME as MS,FE as MROW,OE as MROOT,YE as MPRESCRIPTS,HE as MPHANTOM,vB as MPATH,jE as MPADDED,WE as MOVER,LE as MO,$E as MN,ZE as MMULTISCRIPTS,XE as MI,UE as MFRAC,Ez as METER,uB as METADATA,Bz as META,QE as MERROR,zz as MENU,JE as MATH,mB as MASK,hB as MARKER,qz as MARK,eq as MAP,oq as MAIN,GE as MACTION,aq as LINK,yB as LINEARGRADIENT,gB as LINE,dq as LI,tq as LEGEND,nq as LABEL,h as KeyStateContext,sq as KBD,lq as INS,rq as INPUT,iq as IMG,_B as IMAGE,pq as IFRAME,cq as I,wq as HTML,Vq as HR,vq as HGROUP,uq as HEADER,mq as HEAD,hq as H6,yq as H5,gq as H4,_q as H3,Pq as H2,kq as H1,PB as G,xq as FORM,kB as FOREIGNOBJECT,bq as FOOTER,xB as FILTER,Nq as FIGURE,Sq as FIGCAPTION,Kq as FIELDSET,bB as FETURBULENCE,NB as FETILE,SB as FESPOTLIGHT,KB as FESPECULARLIGHTING,fB as FEPOINTLIGHT,CB as FEOFFSET,AB as FEMORPHOLOGY,IB as FEMERGENODE,DB as FEMERGE,RB as FEIMAGE,TB as FEGAUSSIANBLUR,MB as FEFUNCR,FB as FEFUNCG,OB as FEFUNCB,YB as FEFUNCA,HB as FEFLOOD,jB as FEDROPSHADOW,WB as FEDISTANTLIGHT,LB as FEDISPLACEMENTMAP,$B as FEDIFFUSELIGHTING,ZB as FECONVOLVEMATRIX,XB as FECOMPOSITE,UB as FECOMPONENTTRANSFER,QB as FECOLORMATRIX,JB as FEBLEND,fq as EMBED,Cq as EM,GB as ELLIPSE,m as DelegateStateContext,Aq as DT,Iq as DL,Dq as DIV,Rq as DIALOG,Tq as DFN,Mq as DETAILS,EB as DESC,Fq as DEL,BB as DEFS,Oq as DD,Yq as DATALIST,Hq as DATA,jq as COLGROUP,Wq as COL,Lq as CODE,zB as CLIPPATH,$q as CITE,qB as CIRCLE,Zq as CAPTION,Xq as CANVAS,Uq as BUTTON,Qq as BR,Jq as BODY,Gq as BLOCKQUOTE,Eq as BDO,Bq as BDI,zq as BASE,qq as B,e as AUDIO,o as ASIDE,a as ARTICLE,d as AREA,EE as ANNOTATION_XML,BE as ANNOTATION,ez as ANIMATETRANSFORM,oz as ANIMATEMOTION,az as ANIMATE,t as ADDRESS,n as ABBR,s as A};
1
+ var R={currentViewTransition:void 0,requestAnimationFrame:window.requestAnimationFrame?window.requestAnimationFrame.bind(window):(z)=>z(),startViewTransition:document.startViewTransition?document.startViewTransition.bind(document):null};function u(z,E,...J){if(!z)throw Error("first argument to vode() must be a tag name or a vode");if(Array.isArray(z))return z;else if(E)return[z,E,...J];else return[z,...J]}function V(z,E,J,...G){if(!z?.parentElement)throw Error("first argument to app() must be a valid HTMLElement inside the <html></html> document");if(!E||typeof E!=="object")throw Error("second argument to app() must be a state object");if(typeof J!=="function")throw Error("third argument to app() must be a function that returns a vode");let q={};q.syncRenderer=R.requestAnimationFrame,q.asyncRenderer=R.startViewTransition,q.qSync=null,q.qAsync=null,q.stats={lastSyncRenderTime:0,lastAsyncRenderTime:0,syncRenderCount:0,asyncRenderCount:0,liveEffectCount:0,patchCount:0,syncRenderPatchCount:0,asyncRenderPatchCount:0},Object.defineProperty(E,"patch",{enumerable:!1,configurable:!0,writable:!1,value:async(U,H)=>{if(!U||typeof U!=="function"&&typeof U!=="object")return;if(q.stats.patchCount++,U?.next){let L=U;q.stats.liveEffectCount++;try{let M=await L.next();while(M.done===!1){q.stats.liveEffectCount++;try{q.patch(M.value,H),M=await L.next()}finally{q.stats.liveEffectCount--}}q.patch(M.value,H)}finally{q.stats.liveEffectCount--}}else if(U.then){q.stats.liveEffectCount++;try{let L=await U;q.patch(L,H)}finally{q.stats.liveEffectCount--}}else if(Array.isArray(U))if(U.length>0)for(let L of U)q.patch(L,!document.hidden&&!!q.asyncRenderer);else q.qSync=F(q.qSync||{},q.qAsync,!1),q.qAsync=null,R.currentViewTransition?.skipTransition(),q.stats.syncRenderPatchCount++,q.renderSync();else if(typeof U==="function")q.patch(U(q.state),H);else if(H)q.stats.asyncRenderPatchCount++,q.qAsync=F(q.qAsync||{},U,!1),await q.renderAsync();else q.stats.syncRenderPatchCount++,q.qSync=F(q.qSync||{},U,!1),q.renderSync()}});function B(U){let H=Date.now(),L=J(q.state);if(q.vode=C(q.state,q.patch,z.parentElement,0,q.vode,L),z.tagName.toUpperCase()!==L[0].toUpperCase())z=q.vode.node,z._vode=q;if(!U){if(q.stats.lastSyncRenderTime=Date.now()-H,q.stats.syncRenderCount++,q.isRendering=!1,q.qSync)q.renderSync()}}let Q=B.bind(null,!1),$=B.bind(null,!0);Object.defineProperty(q,"renderSync",{enumerable:!1,configurable:!0,writable:!1,value:()=>{if(q.isRendering||!q.qSync)return;q.isRendering=!0,q.state=F(q.state,q.qSync,!0),q.qSync=null,q.syncRenderer(Q)}}),Object.defineProperty(q,"renderAsync",{enumerable:!1,configurable:!0,writable:!1,value:async()=>{if(q.isAnimating||!q.qAsync)return;if(await R.currentViewTransition?.updateCallbackDone,q.isAnimating||!q.qAsync||document.hidden)return;q.isAnimating=!0;let U=Date.now();try{q.state=F(q.state,q.qAsync,!0),q.qAsync=null,R.currentViewTransition=q.asyncRenderer($),await R.currentViewTransition?.updateCallbackDone}finally{q.stats.lastAsyncRenderTime=Date.now()-U,q.stats.asyncRenderCount++,q.isAnimating=!1}if(q.qAsync)q.renderAsync()}}),q.patch=E.patch,q.state=E;let Y=z;Y._vode=q,q.vode=C(E,q.patch,z.parentElement,Array.from(z.parentElement.children).indexOf(z),x(z,!0),J(E));for(let U of G)q.patch(U);return q.patch}function x(z,E){if(z?.nodeType===Node.TEXT_NODE){if(z.nodeValue?.trim()!=="")return E?z:z.nodeValue;return}else if(z.nodeType===Node.COMMENT_NODE)return;else if(z.nodeType===Node.ELEMENT_NODE){let G=[z.tagName.toLowerCase()];if(E)G.node=z;if(z?.hasAttributes()){let q={},B=z.attributes;for(let Q of B)q[Q.name]=Q.value;G.push(q)}if(z.hasChildNodes()){let q=[];for(let B of z.childNodes){let Q=B&&x(B,E);if(Q)G.push(Q);else if(B&&E)q.push(B)}for(let B of q)B.remove()}return G}else return}function v(z,E){if(!z||!Array.isArray(z))throw Error("first argument to memo() must be an array of values to compare");if(typeof E!=="function")throw Error("second argument to memo() must be a function that returns a vode or props object");return E.__memo=z,E}function w(z){if(!z||typeof z!=="object")throw Error("createState() must be called with a state object");return z}function c(z){return z}function p(z){return z?Array.isArray(z)?z[0]:typeof z==="string"||z.nodeType===Node.TEXT_NODE?"#text":void 0:void 0}function I(z){if(Array.isArray(z)&&z.length>1&&z[1]&&!Array.isArray(z[1])){if(typeof z[1]==="object"&&z[1].nodeType!==Node.TEXT_NODE)return z[1]}return}function f(z){let E=N(z);if(E>0)return z.slice(E);return null}function i(z){return z.length-N(z)}function r(z,E){return z[E+N(z)]}function N(z){if(Array.isArray(z)&&z.length>0)if(!!z[1]&&!Array.isArray(z[1])&&typeof z[1]==="object")return 2;else return 1;else return 0}function F(z,E,J){if(!E)return z;for(let G in E){let q=E[G];if(q&&typeof q==="object"){let B=z[G];if(B)if(Array.isArray(q))z[G]=[...q];else if(q instanceof Date&&B!==q)z[G]=new Date(q);else if(Array.isArray(B))z[G]=F({},q,J);else if(typeof B==="object")F(z[G],q,J);else z[G]=F({},q,J);else if(Array.isArray(q))z[G]=[...q];else if(q instanceof Date)z[G]=new Date(q);else z[G]=F({},q,J)}else if(q===void 0&&J)delete z[G];else z[G]=q}return z}function C(z,E,J,G,q,B,Q){B=K(z,B,q);let $=!B||typeof B==="number"||typeof B==="boolean";if(B===q||!q&&$)return q;let Y=q?.nodeType===Node.TEXT_NODE,U=Y?q:q?.node;if($){U?.onUnmount&&E(U.onUnmount(U)),U?.remove();return}let H=!$&&y(B),L=!$&&g(B),M=!!B&&typeof B!=="string"&&!!(B?.node||B?.nodeType===Node.TEXT_NODE);if(!H&&!L&&!M&&!q)throw Error("Invalid vode: "+typeof B+" "+JSON.stringify(B));else if(M&&H)B=B.wholeText;else if(M&&L)B=[...B];if(Y&&H){if(U.nodeValue!==B)U.nodeValue=B;return q}if(H&&(!U||!Y)){let W=document.createTextNode(B);if(U)U.onUnmount&&E(U.onUnmount(U)),U.replaceWith(W);else if(J.childNodes[G])J.insertBefore(W,J.childNodes[G]);else J.appendChild(W);return W}if(L&&(!U||Y||q[0]!==B[0])){let W=B;if(1 in W)W[1]=K(z,W[1],void 0);let D=I(B);Q=D?.xmlns||Q;let j=Q?document.createElementNS(Q,B[0]):document.createElement(B[0]);if(B.node=j,S(z,E,j,void 0,D),U)U.onUnmount&&E(U.onUnmount(U)),U.replaceWith(j);else if(J.childNodes[G])J.insertBefore(j,J.childNodes[G]);else J.appendChild(j);let O=f(B);if(O)for(let Z=0;Z<O.length;Z++){let X=O[Z],T=C(z,E,j,Z,void 0,X,Q);B[D?Z+2:Z+1]=T}return j.onMount&&E(j.onMount(j)),B}if(!Y&&L&&q[0]===B[0]){B.node=U;let W=B,D=q,j=!1;if(W[1]?.__memo){let X=W[1];if(W[1]=K(z,W[1],D[1]),X!==W[1]){let T=I(B);S(z,E,U,I(q),T),j=!!T}}else{let X=I(B);S(z,E,U,I(q),X),j=!!X}let O=f(B),Z=f(q);if(O){for(let X=0;X<O.length;X++){let T=O[X],_=Z&&Z[X],b=C(z,E,U,X,_,T,Q);if(b)B[j?X+2:X+1]=b}for(let X=O.length;Z&&X<Z.length;X++)if(Z[X]?.node)Z[X].node.remove();else if(Z[X]?.nodeType===Node.TEXT_NODE)Z[X].remove()}for(let X=O?.length||0;X<Z?.length;X++)if(Z[X]?.node)Z[X].node.remove();else if(Z[X]?.nodeType===Node.TEXT_NODE)Z[X].remove();return B}return}function g(z){return Array.isArray(z)&&z.length>0&&typeof z[0]==="string"}function y(z){return typeof z==="string"||z?.nodeType===Node.TEXT_NODE}function K(z,E,J){if(typeof E!=="function")return E;let G=E?.__memo,q=J?.__memo;if(Array.isArray(G)&&Array.isArray(q)&&G.length===q.length){let Q=!0;for(let $=0;$<G.length;$++)if(G[$]!==q[$]){Q=!1;break}if(Q)return J}let B=k(E,z);if(typeof B==="object")B.__memo=E?.__memo;return B}function k(z,E){if(typeof z==="function")return k(z(E),E);else return z}function S(z,E,J,G,q){if(!q&&!G)return;if(G)for(let B in G){let Q=G[B],$=q?.[B];if(Q!==$)if(q)q[B]=A(z,E,J,B,Q,$);else A(z,E,J,B,Q,void 0)}if(q&&G){for(let B in q)if(!(B in G)){let Q=q[B];q[B]=A(z,E,J,B,void 0,Q)}}else if(q)for(let B in q){let Q=q[B];q[B]=A(z,E,J,B,void 0,Q)}}function A(z,E,J,G,q,B){if(G==="style")if(!B)J.style.cssText="";else if(typeof B==="string"){if(q!==B)J.style.cssText=B}else if(q&&typeof q==="object"){for(let Q in{...q,...B})if(!q||B[Q]!==q[Q])J.style[Q]=B[Q];else if(q[Q]&&!B[Q])J.style[Q]=void 0}else for(let Q in B)J.style[Q]=B[Q];else if(G==="class")if(B)J.setAttribute("class",P(B));else J.removeAttribute("class");else if(G[0]==="o"&&G[1]==="n")if(B){let Q=null;if(typeof B==="function"){let $=B;Q=(Y)=>E($(z,Y))}else if(typeof B==="object")Q=()=>E(B);J[G]=Q}else J[G]=null;else if(B!==null&&B!==void 0&&B!==!1)J.setAttribute(G,B);else J.removeAttribute(G);return B}function P(z){if(typeof z==="string")return z;else if(Array.isArray(z))return z.map(P).join(" ");else if(typeof z==="object")return Object.keys(z).filter((E)=>z[E]).join(" ");else return""}var s="a",n="abbr",t="address",d="area",a="article",o="aside",e="audio",qq="b",zq="base",Bq="bdi",Eq="bdo",Gq="blockquote",Jq="body",Qq="br",Uq="button",Xq="canvas",Zq="caption",$q="cite",Lq="code",Wq="col",jq="colgroup",Hq="data",Yq="datalist",Oq="dd",Fq="del",Mq="details",Tq="dfn",Rq="dialog",Dq="div",Iq="dl",Aq="dt",Cq="em",fq="embed",Kq="fieldset",Sq="figcaption",Nq="figure",bq="footer",xq="form",kq="h1",Pq="h2",_q="h3",gq="h4",yq="h5",hq="h6",mq="head",uq="header",Vq="hgroup",vq="hr",wq="html",cq="i",pq="iframe",iq="img",rq="input",lq="ins",sq="kbd",nq="label",tq="legend",dq="li",aq="link",oq="main",eq="map",qz="mark",zz="menu",Bz="meta",Ez="meter",Gz="nav",Jz="noscript",Qz="object",Uz="ol",Xz="optgroup",Zz="option",$z="output",Lz="p",Wz="picture",jz="pre",Hz="progress",Yz="q",Oz="rp",Fz="rt",Mz="ruby",Tz="s",Rz="samp",Dz="script",Iz="search",Az="section",Cz="select",fz="slot",Kz="small",Sz="source",Nz="span",bz="strong",xz="style",kz="sub",Pz="summary",_z="sup",gz="table",yz="tbody",hz="td",mz="template",uz="textarea",Vz="tfoot",vz="th",wz="thead",cz="time",pz="title",iz="tr",rz="track",lz="u",sz="ul",nz="var",tz="video",dz="wbr",az="animate",oz="animateMotion",ez="animateTransform",qB="circle",zB="clipPath",BB="defs",EB="desc",GB="ellipse",JB="feBlend",QB="feColorMatrix",UB="feComponentTransfer",XB="feComposite",ZB="feConvolveMatrix",$B="feDiffuseLighting",LB="feDisplacementMap",WB="feDistantLight",jB="feDropShadow",HB="feFlood",YB="feFuncA",OB="feFuncB",FB="feFuncG",MB="feFuncR",TB="feGaussianBlur",RB="feImage",DB="feMerge",IB="feMergeNode",AB="feMorphology",CB="feOffset",fB="fePointLight",KB="feSpecularLighting",SB="feSpotLight",NB="feTile",bB="feTurbulence",xB="filter",kB="foreignObject",PB="g",_B="image",gB="line",yB="linearGradient",hB="marker",mB="mask",uB="metadata",VB="mpath",vB="path",wB="pattern",cB="polygon",pB="polyline",iB="radialGradient",rB="rect",lB="set",sB="stop",nB="svg",tB="switch",dB="symbol",aB="text",oB="textPath",eB="tspan",qE="use",zE="view",BE="annotation",EE="annotation-xml",GE="maction",JE="math",QE="merror",UE="mfrac",XE="mi",ZE="mmultiscripts",$E="mn",LE="mo",WE="mover",jE="mpadded",HE="mphantom",YE="mprescripts",OE="mroot",FE="mrow",ME="ms",TE="mspace",RE="msqrt",DE="mstyle",IE="msub",AE="msubsup",CE="msup",fE="mtable",KE="mtd",SE="mtext",NE="mtr",bE="munder",xE="munderover",kE="semantics";function _E(...z){if(!z||z.length===0)return null;if(z.length===1)return z[0];let E=z[0];for(let J=1;J<z.length;J++){let G=E,q=z[J];if(!G)E=q;else if(!q)continue;else if(typeof G==="string"&&typeof q==="string"){let B=G.split(" "),Q=q.split(" "),$=new Set([...B,...Q]);E=Array.from($).join(" ").trim()}else if(typeof G==="string"&&Array.isArray(q)){let B=new Set([...q,...G.split(" ")]);E=Array.from(B).join(" ").trim()}else if(Array.isArray(G)&&typeof q==="string"){let B=new Set([...G,...q.split(" ")]);E=Array.from(B).join(" ").trim()}else if(Array.isArray(G)&&Array.isArray(q)){let B=new Set([...G,...q]);E=Array.from(B).join(" ").trim()}else if(typeof G==="string"&&typeof q==="object")E={[G]:!0,...q};else if(typeof G==="object"&&typeof q==="string")E={...G,[q]:!0};else if(typeof G==="object"&&typeof q==="object")E={...G,...q};else if(typeof G==="object"&&Array.isArray(q)){let B={...G};for(let Q of q)B[Q]=!0;E=B}else if(Array.isArray(G)&&typeof q==="object"){let B={};for(let Q of G)B[Q]=!0;for(let Q of Object.keys(q))B[Q]=q[Q];E=B}else throw Error(`cannot merge classes of ${G} (${typeof G}) and ${q} (${typeof q})`)}return E}class h{state;path;keys;constructor(z,E){this.state=z;this.path=E;this.keys=E.split(".")}get(){let z=this.keys,E=this.state?this.state[z[0]]:void 0;for(let J=1;J<z.length&&!!E;J++)E=E[z[J]];return E}put(z){this.putDeep(z,this.state)}patch(z){if(Array.isArray(z)){let E=[];for(let J of z)E.push(this.createPatch(J));this.state.patch(E)}else this.state.patch(this.createPatch(z))}createPatch(z){let E={};return this.putDeep(z,E),E}putDeep(z,E){let J=this.keys;if(J.length>1){let G=0,q=E[J[G]];if(typeof q!=="object"||q===null)E[J[G]]=q={};for(G=1;G<J.length-1;G++){let B=q;if(q=q[J[G]],typeof q!=="object"||q===null)B[J[G]]=q={}}q[J[G]]=z}else if(typeof E[J[0]]==="object"&&typeof z==="object")Object.assign(E[J[0]],z);else E[J[0]]=z}}class m{state;get;put;patch;constructor(z,E,J,G){this.state=z;this.get=E;this.put=J;this.patch=G}}export{u as vode,p as tag,I as props,_E as mergeClass,v as memo,x as hydrate,R as globals,w as createState,c as createPatch,N as childrenStart,f as children,i as childCount,r as child,V as app,dz as WBR,zE as VIEW,tz as VIDEO,nz as VAR,qE as USE,sz as UL,lz as U,eB as TSPAN,rz as TRACK,iz as TR,pz as TITLE,cz as TIME,wz as THEAD,vz as TH,Vz as TFOOT,oB as TEXTPATH,uz as TEXTAREA,aB as TEXT,mz as TEMPLATE,hz as TD,yz as TBODY,gz as TABLE,dB as SYMBOL,tB as SWITCH,nB as SVG,_z as SUP,Pz as SUMMARY,kz as SUB,xz as STYLE,bz as STRONG,sB as STOP,Nz as SPAN,Sz as SOURCE,Kz as SMALL,fz as SLOT,lB as SET,kE as SEMANTICS,Cz as SELECT,Az as SECTION,Iz as SEARCH,Dz as SCRIPT,Rz as SAMP,Tz as S,Mz as RUBY,Fz as RT,Oz as RP,rB as RECT,iB as RADIALGRADIENT,Yz as Q,Hz as PROGRESS,jz as PRE,pB as POLYLINE,cB as POLYGON,Wz as PICTURE,wB as PATTERN,vB as PATH,Lz as P,$z as OUTPUT,Zz as OPTION,Xz as OPTGROUP,Uz as OL,Qz as OBJECT,Jz as NOSCRIPT,Gz as NAV,xE as MUNDEROVER,bE as MUNDER,NE as MTR,SE as MTEXT,KE as MTD,fE as MTABLE,CE as MSUP,AE as MSUBSUP,IE as MSUB,DE as MSTYLE,RE as MSQRT,TE as MSPACE,ME as MS,FE as MROW,OE as MROOT,YE as MPRESCRIPTS,HE as MPHANTOM,VB as MPATH,jE as MPADDED,WE as MOVER,LE as MO,$E as MN,ZE as MMULTISCRIPTS,XE as MI,UE as MFRAC,Ez as METER,uB as METADATA,Bz as META,QE as MERROR,zz as MENU,JE as MATH,mB as MASK,hB as MARKER,qz as MARK,eq as MAP,oq as MAIN,GE as MACTION,aq as LINK,yB as LINEARGRADIENT,gB as LINE,dq as LI,tq as LEGEND,nq as LABEL,h as KeyStateContext,sq as KBD,lq as INS,rq as INPUT,iq as IMG,_B as IMAGE,pq as IFRAME,cq as I,wq as HTML,vq as HR,Vq as HGROUP,uq as HEADER,mq as HEAD,hq as H6,yq as H5,gq as H4,_q as H3,Pq as H2,kq as H1,PB as G,xq as FORM,kB as FOREIGNOBJECT,bq as FOOTER,xB as FILTER,Nq as FIGURE,Sq as FIGCAPTION,Kq as FIELDSET,bB as FETURBULENCE,NB as FETILE,SB as FESPOTLIGHT,KB as FESPECULARLIGHTING,fB as FEPOINTLIGHT,CB as FEOFFSET,AB as FEMORPHOLOGY,IB as FEMERGENODE,DB as FEMERGE,RB as FEIMAGE,TB as FEGAUSSIANBLUR,MB as FEFUNCR,FB as FEFUNCG,OB as FEFUNCB,YB as FEFUNCA,HB as FEFLOOD,jB as FEDROPSHADOW,WB as FEDISTANTLIGHT,LB as FEDISPLACEMENTMAP,$B as FEDIFFUSELIGHTING,ZB as FECONVOLVEMATRIX,XB as FECOMPOSITE,UB as FECOMPONENTTRANSFER,QB as FECOLORMATRIX,JB as FEBLEND,fq as EMBED,Cq as EM,GB as ELLIPSE,m as DelegateStateContext,Aq as DT,Iq as DL,Dq as DIV,Rq as DIALOG,Tq as DFN,Mq as DETAILS,EB as DESC,Fq as DEL,BB as DEFS,Oq as DD,Yq as DATALIST,Hq as DATA,jq as COLGROUP,Wq as COL,Lq as CODE,zB as CLIPPATH,$q as CITE,qB as CIRCLE,Zq as CAPTION,Xq as CANVAS,Uq as BUTTON,Qq as BR,Jq as BODY,Gq as BLOCKQUOTE,Eq as BDO,Bq as BDI,zq as BASE,qq as B,e as AUDIO,o as ASIDE,a as ARTICLE,d as AREA,EE as ANNOTATION_XML,BE as ANNOTATION,ez as ANIMATETRANSFORM,oz as ANIMATEMOTION,az as ANIMATE,t as ADDRESS,n as ABBR,s as A};
package/dist/vode.mjs CHANGED
@@ -234,7 +234,13 @@ function child(vode2, index) {
234
234
  return vode2[index + childrenStart(vode2)];
235
235
  }
236
236
  function childrenStart(vode2) {
237
- return props(vode2) ? 2 : 1;
237
+ if (Array.isArray(vode2) && vode2.length > 0) {
238
+ if (!!vode2[1] && !Array.isArray(vode2[1]) && typeof vode2[1] === "object")
239
+ return 2;
240
+ else
241
+ return 1;
242
+ } else
243
+ return 0;
238
244
  }
239
245
  function mergeState(target, source, allowDeletion) {
240
246
  if (!source)
@@ -794,8 +800,9 @@ class KeyStateContext {
794
800
  animation.push(this.createPatch(v));
795
801
  }
796
802
  this.state.patch(animation);
803
+ } else {
804
+ this.state.patch(this.createPatch(value));
797
805
  }
798
- this.state.patch(this.createPatch(value));
799
806
  }
800
807
  createPatch(value) {
801
808
  const renderPatch = {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryupold/vode",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "a minimalist web framework",
5
5
  "author": "Michael Scherbakow (ryupold)",
6
6
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "build-classic": "esbuild index.ts --outfile=dist/vode.js --bundle --global-name=V",
29
29
  "build-classic-min": "esbuild index.ts --outfile=dist/vode.min.js --bundle --global-name=V --minify",
30
30
  "release": "bun run build && bun run build-min && bun run build-classic && bun run build-classic-min",
31
- "publish": "bun publish --provenance --access public",
31
+ "publish": "npm publish --access public",
32
32
  "clean": "tsc -b --clean",
33
33
  "watch": "tsc -b -w"
34
34
  },
@@ -104,7 +104,7 @@ export interface SubStateContext<SubState> {
104
104
  * app(element, state, (s) => [DIV]);
105
105
  *
106
106
  * // Create a context for the nested settings
107
- * const settingsCtx = new StateContext(state, 'user.profile.settings');
107
+ * const settingsCtx = new KeyStateContext(state, 'user.profile.settings');
108
108
  *
109
109
  * // Read current value
110
110
  * const settings = settingsCtx.get(); // { theme: 'dark', lang: 'en' }
@@ -147,12 +147,14 @@ export class KeyStateContext<S extends PatchableState, SubState>
147
147
  patch(value: SubState | DeepPartial<SubState> | Array<DeepPartial<SubState>> | undefined | null) {
148
148
  if (Array.isArray(value)) {
149
149
  const animation: AnimatedPatch<S> = [];
150
- for(const v of value){
150
+ for (const v of value) {
151
151
  animation.push(this.createPatch(v));
152
152
  }
153
153
  this.state.patch(animation);
154
154
  }
155
- this.state.patch(this.createPatch(value as DeepPartial<SubState>));
155
+ else {
156
+ this.state.patch(this.createPatch(value as DeepPartial<SubState>));
157
+ }
156
158
  }
157
159
 
158
160
  /**
@@ -160,7 +162,7 @@ export class KeyStateContext<S extends PatchableState, SubState>
160
162
  *
161
163
  * @example
162
164
  * ```typescript
163
- * const ctx = new StateContext(state, 'user.profile.settings');
165
+ * const ctx = new KeyStateContext(state, 'user.profile.settings');
164
166
  * const patch = ctx.createPatch({ theme: 'light' });
165
167
  * // patch is { user: { profile: { settings: { theme: 'light' } } } }
166
168
  * ```
package/src/vode.ts CHANGED
@@ -385,7 +385,12 @@ export function child<S = PatchableState>(vode: Vode<S>, index: number): ChildVo
385
385
 
386
386
  /** index in vode at which child-vodes start */
387
387
  export function childrenStart<S = PatchableState>(vode: ChildVode<S> | AttachedVode<S>): number {
388
- return props(vode) ? 2 : 1;
388
+ if (Array.isArray(vode) && vode.length > 0) {
389
+ if (!!vode[1] && !Array.isArray(vode[1]) && typeof vode[1] === "object")
390
+ return 2;
391
+ else return 1;
392
+ }
393
+ else return 0;
389
394
  }
390
395
 
391
396
  function mergeState(target: any, source: any, allowDeletion: boolean) {
package/version.txt DELETED
File without changes