amateras 0.13.1 → 0.13.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.
package/build/core.js CHANGED
@@ -1 +1 @@
1
- import{_null as t,forEach as s,_Object_assign as e,map as o,_Array_from as i,_Object_entries as r,isUndefined as n,isNull as l,toArray as h,_instanceof as a,isString as d,isFunction as p,isArray as u}from"@amateras/utils";const c=window,f=document,m=t=>!t||t(),g=t=>!1,b=/* @__PURE__ */Symbol("ProtoType"),y=/* @__PURE__ */Symbol("Statement"),P=/* @__PURE__ */Symbol("Signal");class w{static disposers=/* @__PURE__ */new Set;promises=/* @__PURE__ */new Set;root;constructor(t){this.root=t,t.ondispose(()=>this.dispose())}dispose(){this.promises.clear(),this.root=t,s(w.disposers,t=>t(this))}static assign(t){e(w.prototype,t)}asyncTask(t){this.promises.add(t),t.finally(()=>this.promises.delete(t))}}class S{static proto=t;static[b]="Proto";static[y]=!1;static disposer=[];disposers=t;layout;parent=t;global=S.proto?.global??new w(this);sibling=t;firstProto=t;lastProto=t;builded=!1;listeners=t;constructor(s){this.layout=s??t}dispose(){s(S.disposer,t=>t(this)),s(this.disposers,t=>t()),s(this.protos,t=>t.dispose()),this.global=t,this.sibling=t,this.firstProto=t,this.lastProto=t,this.disposers=t,this.parent=t,this.layout=t}get children(){return o(this.protos,t=>t.constructor[y]?t.children:t).flat()}get protos(){let t=/* @__PURE__ */new Set,s=this.firstProto;if(s){let e=s;for(;e;)t.add(e),e=e.sibling}return t}append(...e){s(e,s=>{if(s.parent!==this&&s.parent?.removeProtos(s),this.lastProto){if(this.lastProto===s)return;this.firstProto===s&&(this.firstProto=s.sibling),s.sibling=t,this.lastProto.sibling=s,this.lastProto=s}else this.firstProto=s,this.lastProto=s;s.parent=this,s.global=this.global})}replaceProtos(...t){this.clear(),this.processProtos(...t)}insert(t,s=-1){if(0===s)this.firstProto&&(t.sibling=this.firstProto),this.firstProto=t;else{let e=i(this.protos),o=s<0?e.length+s+1:s;e.splice(o,0,t),this.processProtos(...e)}t.parent=this,t.global=this.global}removeProtos(...t){let e=this.protos;s(t,t=>{t.parent=null,t.sibling=null,e.delete(t)}),this.processProtos(...e)}processProtos(...e){let o=null;e.length?s(e,(t,s)=>{0===s&&(this.firstProto=t),o&&(o.sibling=t),o=t,t.parent=this}):this.firstProto=t,this.lastProto=o}build(t=!0){return this.clear(!0),$.context(S,this,()=>this.layout?.(this)),this.builded=!0,t&&s(this.protos,t=>{t.build()}),this.dispatch("builded",this),this}toString(){return o(this.protos,t=>`${t}`).join("")}toDOM(t=!0){return t?o(this.protos,s=>s.toDOM(t)).flat():[]}ondispose(t){this.disposers=this.disposers??[],this.disposers.push(t)}removeNode(){s(this.protos,t=>t.removeNode())}clear(t=!1){let e=this.protos;this.removeProtos(...e),t&&s(e,t=>t.dispose())}findAbove(s){let e=this.parent;return e?s(e)?e:e.findAbove(s):t}findBelow(s){for(let t of this.protos){if(s(t))return t;let e=t.findBelow(s);if(e)return e}return t}findBelowAll(t){let s=[];for(let e of this.protos)t(e)&&s.push(e),s.push(...e.findBelowAll(t));return s}mutate(){}get text(){return this.children.map(t=>t.text).join("")}dispatch(t,e,o){o?.bubbles&&this.parent?.dispatch(t,e,o);let i=this.listeners?.[t];s(i,t=>t(e))}listen(t,s){let e=this.listeners??{};this.listeners=e;let o=e[t]??/* @__PURE__ */new Set;this.listeners[t]=o,o.add(s)}}class M extends S{node=t;modifiers=t;constructor(t){super(t)}ondom(t){this.modifiers=this.modifiers??[],this.modifiers.push(t)}dispose(){super.dispose(),this.node=t,this.modifiers=t}inDOM(){return!!m()&&document.contains(this.node)}removeNode(){this.node?.remove()}}const _=["img","hr","br","input","link","meta"];class v extends M{tagname;#t={};#s="";__props__;constructor(t,s,e){super(()=>e?.(this)),this.tagname=t,this.__props__=s}dispose(){super.dispose(),this.layout=null}build(s){return this.__props__&&(this.props(this.__props__),this.__props__=t),super.build(s),this}props({...t}){let{class:s,...e}=t;s&&this.addClass(...s.split(" ")),this.attrProcess(e)}on(t,s,e){let o=o=>{o.addEventListener(t,s,e),this.ondispose(()=>this.node?.removeEventListener(t,s))};this.node?o(this.node):this.ondom(o)}toString(){return this.parseHTML()}parseHTML(t){let s=this.tagname,e=t?.children??(this.#s||o(this.protos,t=>`${t}`).join("")),i=t?.attr??o(r(this.#t),([t,s])=>s.length?`${t}="${s}"`:t).join(" "),n=i.length?" "+i:"";return _.includes(s)?`<${s}${n} />`:`<${s}${n}>${e}</${s}>`}toDOM(t=!0){if(this.node)return[this.node];let e=document.createElement(this.tagname);return this.node=e,this.#s?this.node.innerHTML=this.#s:t&&e.append(...o(this.protos,s=>s.toDOM(t)).flat()),s(r(this.#t),([t,s])=>e.setAttribute(t,s)),s(this.modifiers,t=>t(e)),[e]}attrProcess(t){s(r(t),([t,s])=>{for(let e of $.process.attr){let o=e(t,s,this);if(!n(o))return}this.attr(t,s)})}innerHTML(t){this.#s=t,this.node&&(this.node.innerHTML=t)}attr(s,e){return arguments.length?n(e)?this.#t[s]??t:(l(e)?(delete this.#t[s],this.node?.removeAttribute(s)):(this.#t[s]=e,this.node?.setAttribute(s,e)),this):this.#t}addClass(...t){this.token("add","class",...t),this.node?.classList.add(...t)}removeClass(...t){this.token("delete","class",...t),this.node?.classList.remove(...t)}style(t){let s=()=>this.node&&e(this.node.style,t);s(),this.node||this.ondom(s)}token(t,e,...o){let r=this.#t[e],n=new Set(r?.split(" ")??[]);s(o,s=>n[t](s)),this.#t[e]=i(n).join(" ")}}class T extends M{#e;constructor(t){super(),this.#e=t}get content(){return this.#e}set content(t){this.#e=t,this.node&&(this.node.textContent=t)}toString(){return this.#e}toDOM(){if(this.node)return[this.node];let t=new Text(this.#e);return this.node=t,s(this.modifiers,s=>s(t)),[t]}get text(){return this.#e}}class x extends M{constructor(t){super(t),m()&&(this.node=new Text)}toDOM(){return[this.node,...super.toDOM()]}removeNode(){super.removeNode(),s(this.protos,t=>t.removeNode())}}function L(e,...o){const i=S.proto,r=[],l=t=>{e&&i?.append(t),r.push(t)};for(let t of H.process.craft){let s=t(...o);if(!n(s))return s}const[h,c,f]=o;if(a(h,S))return l(h),h;if(d(h)){let t=p(c)?[,c]:[c,f],s=new v(h,...t);return l(s),s}if(p(h)){let t=new h(...p(c)?[{},c]:[c,f]);if(a(t,S))return l(t),t}if(u(h)){let e=s=>{for(let t of H.process.text){let e=t(s);if(!n(e))return l(e)}let e=n(s)?t:new T(`${s}`);e&&l(e)},[i,...h]=o;return i.raw?s(i,(s,o)=>{let i=s.length?new T(s):t,r=h[o];i&&l(i),e(r)}):s(i,t=>e(t)),r}}function H(...t){return L(!0,...t)}var D;(D=H||(H={})).process={craft:/* @__PURE__ */new Set,text:/* @__PURE__ */new Set,attr:/* @__PURE__ */new Set},D.craft=(...t)=>L(!1,...t),D.dispose=t=>{S.proto?.ondispose(t)},D.render=(t,s)=>{let e=D(t).build().toDOM();document.querySelector(s)?.replaceChildren(...e)},D.context=(t,s,e)=>{let o=t.proto;t.proto=s,e(),t.proto=o},D.call=t=>t(),D.match=(t,s)=>{var e=/* @__PURE__ */new Map,o=/* @__PURE__ */Symbol("default"),i={case:(t,s)=>(e.set(t,s),i),default:t=>(e.set(o,t),i)};return s(i),e.get(t)?.()??e.get(o)?.()},D.async=t=>{S.proto?.global.asyncTask(t())},D.stylesheet=m()?new CSSStyleSheet:t,D.styleMap=/* @__PURE__ */new Map,D.style=(t,e)=>{let o=h(e);if(t){let e=D.styleMap.get(t)??/* @__PURE__ */new Set;s(o,t=>e.add(t)),D.styleMap.set(t,e)}D.stylesheet&&s(o,t=>D.stylesheet.insertRule(t))},D.stylesheet&&document.adoptedStyleSheets.push(D.stylesheet),m()&&document.querySelector("style#__ssr__")?.remove(),globalThis.$=H;export{H as $,v as ElementProto,w as GlobalState,M as NodeProto,S as Proto,x as ProxyProto,T as TextProto,f as _document,c as _window,m as onclient,g as onserver,b as symbol_ProtoType,P as symbol_Signal,y as symbol_Statement};
1
+ import{_null as t,forEach as s,_Object_assign as e,map as o,_Array_from as i,_Object_entries as r,isUndefined as n,isNull as l,toArray as h,_instanceof as a,isString as d,isFunction as p,isArray as u}from"@amateras/utils";const c=window,f=document,m=t=>!t||t(),g=t=>!1,b=/* @__PURE__ */Symbol("ProtoType"),y=/* @__PURE__ */Symbol("Statement"),P=/* @__PURE__ */Symbol("Signal");class w{static disposers=/* @__PURE__ */new Set;promises=/* @__PURE__ */new Set;root;constructor(t){this.root=t,t.ondispose(()=>this.dispose())}dispose(){this.promises.clear(),this.root=t,s(w.disposers,t=>t(this))}static assign(t){e(w.prototype,t)}asyncTask(t){this.promises.add(t),t.finally(()=>this.promises.delete(t))}}class S{static proto=t;static[b]="Proto";static[y]=!1;static disposer=[];disposers=t;layout;parent=t;global=S.proto?.global??new w(this);sibling=t;firstProto=t;lastProto=t;builded=!1;listeners=t;constructor(s){this.layout=s??t}dispose(){s(S.disposer,t=>t(this)),s(this.disposers,t=>t()),s(this.protos,t=>t.dispose()),this.global=t,this.sibling=t,this.firstProto=t,this.lastProto=t,this.disposers=t,this.parent=t,this.layout=t}get children(){return o(this.protos,t=>t.constructor[y]?t.children:t).flat()}get protos(){let t=/* @__PURE__ */new Set,s=this.firstProto;if(s){let e=s;for(;e;)t.add(e),e=e.sibling}return t}append(...e){s(e,s=>{if(s.parent!==this&&s.parent?.removeProtos(s),this.lastProto){if(this.lastProto===s)return;this.firstProto===s&&(this.firstProto=s.sibling),s.sibling=t,this.lastProto.sibling=s,this.lastProto=s}else this.firstProto=s,this.lastProto=s;s.parent=this,s.global=this.global})}replaceProtos(...t){this.clear(),this.processProtos(...t)}insert(t,s=-1){if(0===s)this.firstProto&&(t.sibling=this.firstProto),this.firstProto=t;else{let e=i(this.protos),o=s<0?e.length+s+1:s;e.splice(o,0,t),this.processProtos(...e)}t.parent=this,t.global=this.global}removeProtos(...t){let e=this.protos;s(t,t=>{t.parent=null,t.sibling=null,e.delete(t)}),this.processProtos(...e)}processProtos(...e){let o=null;e.length?s(e,(t,s)=>{0===s&&(this.firstProto=t),o&&(o.sibling=t),o=t,t.parent=this}):this.firstProto=t,this.lastProto=o}build(t=!0){return this.clear(!0),$.context(S,this,()=>this.layout?.(this)),this.builded=!0,t&&s(this.protos,t=>{t.build()}),this.dispatch("builded",this),this}toString(){return o(this.protos,t=>`${t}`).join("")}toDOM(t=!0){return t?o(this.protos,s=>s.toDOM(t)).flat():[]}ondispose(t){this.disposers=this.disposers??[],this.disposers.push(t)}removeNode(){s(this.protos,t=>t.removeNode())}clear(t=!1){let e=this.protos;this.removeProtos(...e),t&&s(e,t=>t.dispose())}findAbove(s){let e=this.parent;return e?s(e)?e:e.findAbove(s):t}findBelow(s){for(let t of this.protos){if(s(t))return t;let e=t.findBelow(s);if(e)return e}return t}findBelowAll(t){let s=[];for(let e of this.protos)t(e)&&s.push(e),s.push(...e.findBelowAll(t));return s}mutate(){}get text(){return this.children.map(t=>t.text).join("")}dispatch(t,e,o){o?.bubbles&&this.parent?.dispatch(t,e,o);let i=this.listeners?.[t];s(i,t=>t(e))}listen(t,s){let e=this.listeners??{};this.listeners=e;let o=e[t]??/* @__PURE__ */new Set;this.listeners[t]=o,o.add(s)}}class M extends S{node=t;modifiers=t;constructor(t){super(t)}ondom(t){this.modifiers=this.modifiers??[],this.modifiers.push(t)}dispose(){super.dispose(),this.node=t,this.modifiers=t}inDOM(){return!!m()&&document.contains(this.node)}removeNode(){this.node?.remove()}}const _=["img","hr","br","input","link","meta"];class v extends M{tagname;#t={};#s="";__props__;constructor(t,s,e){super(()=>e?.(this)),this.tagname=t,this.__props__=s}dispose(){super.dispose(),this.layout=null}build(s){return this.__props__&&(this.props(this.__props__),this.__props__=t),super.build(s),this}props({...t}){let{class:s,...e}=t;s&&this.addClass(...s.split(" ")),this.attrProcess(e)}on(t,s,e){let o=o=>{o.addEventListener(t,s,e),this.ondispose(()=>this.node?.removeEventListener(t,s))};this.node?o(this.node):this.ondom(o)}toString(){return this.parseHTML()}parseHTML(t){let s=this.tagname,e=t?.children??(this.#s||o(this.protos,t=>`${t}`).join("")),i=t?.attr??o(r(this.#t),([t,s])=>s.length?`${t}="${s}"`:t).join(" "),n=i.length?" "+i:"";return _.includes(s)?`<${s}${n} />`:`<${s}${n}>${e}</${s}>`}toDOM(t=!0){if(this.node)return[this.node];let e=document.createElement(this.tagname);return this.node=e,this.#s?this.node.innerHTML=this.#s:t&&e.append(...o(this.protos,s=>s.toDOM(t)).flat()),s(r(this.#t),([t,s])=>e.setAttribute(t,s)),s(this.modifiers,t=>t(e)),[e]}attrProcess(t){s(r(t),([t,s])=>{for(let e of $.process.attr){let o=e(t,s,this);if(!n(o))return}this.attr(t,s)})}innerHTML(t){this.#s=t,this.node&&(this.node.innerHTML=t)}attr(s,e){return arguments.length?n(e)?this.#t[s]??t:(l(e)?(delete this.#t[s],this.node?.removeAttribute(s)):(this.#t[s]=e,this.node?.setAttribute(s,e)),this):this.#t}addClass(...t){this.token("add","class",...t),this.node?.classList.add(...t)}removeClass(...t){this.token("delete","class",...t),this.node?.classList.remove(...t)}style(t){let s=()=>this.node&&e(this.node.style,t);s(),this.node||this.ondom(s)}token(t,e,...o){let r=this.#t[e],n=new Set(r?.split(" ")??[]);s(o,s=>n[t](s)),this.#t[e]=i(n).join(" ")}}class T extends M{#e;constructor(t){super(),this.#e=t}get content(){return this.#e}set content(t){this.#e=t,this.node&&(this.node.textContent=t)}toString(){return this.#e}toDOM(){if(this.node)return[this.node];let t=new Text(this.#e);return this.node=t,s(this.modifiers,s=>s(t)),[t]}get text(){return this.#e}}class x extends M{constructor(t){super(t),m()&&(this.node=new Text)}toDOM(){return[this.node,...super.toDOM()]}removeNode(){super.removeNode(),s(this.protos,t=>t.removeNode())}}function L(e,...o){const i=S.proto,r=[],l=t=>{e&&i?.append(t),r.push(t)};for(let t of H.process.craft){let s=t(...o);if(!n(s))return l(s),s}const[h,c,f]=o;if(a(h,S))return l(h),h;if(d(h)){let t=p(c)?[,c]:[c,f],s=new v(h,...t);return l(s),s}if(p(h)){let t=new h(...p(c)?[{},c]:[c,f]);if(a(t,S))return l(t),t}if(u(h)){let e=s=>{for(let t of H.process.text){let e=t(s);if(!n(e))return l(e)}let e=n(s)?t:new T(`${s}`);e&&l(e)},[i,...h]=o;return i.raw?s(i,(s,o)=>{let i=s.length?new T(s):t,r=h[o];i&&l(i),e(r)}):s(i,t=>e(t)),r}}function H(...t){return L(!0,...t)}var D;(D=H||(H={})).process={craft:/* @__PURE__ */new Set,text:/* @__PURE__ */new Set,attr:/* @__PURE__ */new Set},D.craft=(...t)=>L(!1,...t),D.dispose=t=>{S.proto?.ondispose(t)},D.render=(t,s)=>{let e=D(t).build().toDOM();document.querySelector(s)?.replaceChildren(...e)},D.context=(t,s,e)=>{let o=t.proto;t.proto=s,e(),t.proto=o},D.call=t=>t(),D.match=(t,s)=>{var e=/* @__PURE__ */new Map,o=/* @__PURE__ */Symbol("default"),i={case:(t,s)=>(e.set(t,s),i),default:t=>(e.set(o,t),i)};return s(i),e.get(t)?.()??e.get(o)?.()},D.async=t=>{S.proto?.global.asyncTask(t())},D.stylesheet=m()?new CSSStyleSheet:t,D.styleMap=/* @__PURE__ */new Map,D.style=(t,e)=>{let o=h(e);if(t){let e=D.styleMap.get(t)??/* @__PURE__ */new Set;s(o,t=>e.add(t)),D.styleMap.set(t,e)}D.stylesheet&&s(o,t=>D.stylesheet.insertRule(t))},D.stylesheet&&document.adoptedStyleSheets.push(D.stylesheet),m()&&document.querySelector("style#__ssr__")?.remove(),globalThis.$=H;export{H as $,v as ElementProto,w as GlobalState,M as NodeProto,S as Proto,x as ProxyProto,T as TextProto,f as _document,c as _window,m as onclient,g as onserver,b as symbol_ProtoType,P as symbol_Signal,y as symbol_Statement};
package/build/for.js CHANGED
@@ -1 +1 @@
1
- import{ProxyProto as t,symbol_Statement as e,Proto as s}from"@amateras/core";import{forEach as i,_Array_from as o,_null as r}from"@amateras/utils";class a extends t{static[e]=!0;#t;list$;#e=/* @__PURE__ */new Map;constructor(t,e){super(),this.list$=t,this.#t=e;let s=()=>{const t=this.exec();i(this.protos,t=>t.builded||t.build()),i(t,t=>t.removeNode());let e=this.node,s=e?.parentNode;if(e&&s){let t=this.toDOM(),a=o(s.childNodes).indexOf(e);i(t,t=>{if(t!==e){if(s.childNodes[a]!==t){let e=s.childNodes[a+1]??r;s.insertBefore(t,e)}}a++})}this.parent?.mutate()};this.list$.subscribe(s),this.ondispose(()=>this.list$.unsubscribe(s))}build(){return this.#e=/* @__PURE__ */new Map,this.exec(),this.protos.forEach(t=>t.builded||t.build()),this}exec(){let t=this.protos,e=/* @__PURE__ */new Set;return i(this.list$.value,(i,o)=>{$.context(s,this,()=>{let s=this.#t,r=this.#e.get(i)??new l(()=>s(i,o));this.#e.set(i,r),t.delete(r),e.add(r)})}),this.replaceProtos(...e),t}removeNode(){this.node?.remove(),i(this.protos,t=>t.removeNode())}dispose(){super.dispose(),i(this.#e.values(),t=>t.dispose()),this.#e.clear()}}class l extends s{static[e]=!0}globalThis.For=a,$.process.craft.add((t,e,i)=>{if(t===a){let t=new a(e,i);return s.proto?.append(t),t}});export{a as For,l as ForItem};
1
+ import{ProxyProto as t,symbol_Statement as e,Proto as s}from"@amateras/core";import{forEach as i,_Array_from as o,_null as r}from"@amateras/utils";class a extends t{static[e]=!0;#t;list$;#e=/* @__PURE__ */new Map;constructor(t,e){super(),this.list$=t,this.#t=e;let s=()=>{const t=this.exec();i(this.protos,t=>t.builded||t.build()),i(t,t=>t.removeNode());let e=this.node,s=e?.parentNode;if(e&&s){let t=this.toDOM(),a=o(s.childNodes).indexOf(e);i(t,t=>{if(t!==e){if(s.childNodes[a]!==t){let e=s.childNodes[a+1]??r;s.insertBefore(t,e)}}a++})}this.parent?.mutate()};this.list$.subscribe(s),this.ondispose(()=>this.list$.unsubscribe(s))}build(){return this.#e=/* @__PURE__ */new Map,this.exec(),this.protos.forEach(t=>t.builded||t.build()),this}exec(){let t=this.protos,e=/* @__PURE__ */new Set;return i(this.list$.value,(i,o)=>{$.context(s,this,()=>{let s=this.#t,r=this.#e.get(i)??new l(()=>s(i,o));this.#e.set(i,r),t.delete(r),e.add(r)})}),this.replaceProtos(...e),t}removeNode(){this.node?.remove(),i(this.protos,t=>t.removeNode())}dispose(){super.dispose(),i(this.#e.values(),t=>t.dispose()),this.#e.clear()}}class l extends s{static[e]=!0}globalThis.For=a,$.process.craft.add((t,e,s)=>{if(t===a)return new a(e,s)});export{a as For,l as ForItem};
package/build/if.js CHANGED
@@ -1 +1 @@
1
- import{Proto as t,symbol_Statement as e,ProxyProto as s}from"@amateras/core";import{_null as i,forEach as a,_instanceof as l,isIncluded as r}from"@amateras/utils";import{Signal as n}from"@amateras/signal";class o extends t{static[e]=!0;exp$;constructor(t,e){super(()=>e(this.exp$)),this.exp$=t}dispose(){super.dispose(),this.exp$=i}validate(){return!this.exp$||!!this.exp$.value}}class p extends o{}class d extends o{}class h extends o{}class m extends s{static[e]=!0;statements=i;statement=i;build(){super.build(!1),this.validate()?.build();let t=()=>{let t=this.validate();t?.builded||t?.build(),this.statement!==t&&(this.statement=t??i,a(this.statements,e=>e!==t&&e.removeNode()),this.node?.replaceWith(...this.toDOM()),this.parent?.mutate())};return a(this.statements,e=>{e.exp$?.subscribe(t),e.ondispose(()=>{e.exp$?.unsubscribe(t)})}),this}dispose(){super.dispose(),a(this.statements,t=>t.dispose()),this.statement=i,this.statements=i}validate(){if(this.clear(),this.statements)for(let t of this.statements)if(t.validate())return this.append(t),t}}globalThis.If=h,globalThis.Else=p,globalThis.ElseIf=d;let u=null;$.process.craft.add((e,s,a)=>{let o=t.proto;if(e===h&&(u=new m,o?.append(u)),l(u,m)){if(r(e,[h,p,d])){{let t=new e(...l(s,n)?[s,a]:[i,s]);u.statements=u.statements??[],u.statements?.push(t)}return u}u=i}else if(r(e,[p,d]))throw"ElseIf/Else must be after If or ElseIf"});
1
+ import{Proto as t,symbol_Statement as s,ProxyProto as e}from"@amateras/core";import{_null as i,forEach as a,_instanceof as l,isIncluded as r}from"@amateras/utils";import{Signal as n}from"@amateras/signal";class h extends t{static[s]=!0;exp$;constructor(t,s){super(()=>s(this.exp$)),this.exp$=t}dispose(){super.dispose(),this.exp$=i}validate(){return!this.exp$||!!this.exp$.value}}class o extends h{}class d extends h{}class p extends h{}class m extends e{static[s]=!0;statements=i;statement=i;build(){super.build(!1),this.validate()?.build();let t=()=>{let t=this.validate();t?.builded||t?.build(),this.statement!==t&&(this.statement=t??i,a(this.statements,s=>s!==t&&s.removeNode()),this.node?.replaceWith(...this.toDOM()),this.parent?.mutate())};return a(this.statements,s=>{s.exp$?.subscribe(t),s.ondispose(()=>{s.exp$?.unsubscribe(t)})}),this}dispose(){super.dispose(),a(this.statements,t=>t.dispose()),this.statement=i,this.statements=i}validate(){if(this.clear(),this.statements)for(let t of this.statements)if(t.validate())return this.append(t),t}}globalThis.If=p,globalThis.Else=o,globalThis.ElseIf=d;let u=null;$.process.craft.add((t,s,e)=>{if(t===p&&(u=new m),l(u,m)){if(r(t,[p,o,d])){{let a=new t(...l(s,n)?[s,e]:[i,s]);u.statements=u.statements??[],u.statements?.push(a)}return u}u=i}else if(r(t,[o,d]))throw"ElseIf/Else must be after If or ElseIf"});
@@ -1 +1 @@
1
- const t=`https://unpkg.com/amateras@${"0.13.1"}/build`,e={...{amateras:`${t}/core.js`},...Object.fromEntries(["core","utils","signal","for","if","match","css","i18n","idb","meta","prefetch","router","widget"].map(e=>{const r=`amateras/${e}`,s=`${t}/${e}.js`;return[[r,s],[`@${r}`,s]]}).flat())},r=document.querySelector('script[type="importmap"]');if(r){const t=JSON.parse(r.innerHTML);t.imports={...t.imports,...e},r.innerHTML=JSON.stringify(t,null,"\t")}else{const t=document.createElement("script");t.setAttribute("type","importmap"),t.innerHTML=JSON.stringify({imports:e},null,"\t"),document.head.prepend(t)}
1
+ const t=`https://unpkg.com/amateras@${"0.13.2"}/build`,e={...{amateras:`${t}/core.js`},...Object.fromEntries(["core","utils","signal","for","if","match","css","i18n","idb","meta","prefetch","router","widget"].map(e=>{const r=`amateras/${e}`,s=`${t}/${e}.js`;return[[r,s],[`@${r}`,s]]}).flat())},r=document.querySelector('script[type="importmap"]');if(r){const t=JSON.parse(r.innerHTML);t.imports={...t.imports,...e},r.innerHTML=JSON.stringify(t,null,"\t")}else{const t=document.createElement("script");t.setAttribute("type","importmap"),t.innerHTML=JSON.stringify({imports:e},null,"\t"),document.head.prepend(t)}
package/build/match.js CHANGED
@@ -1 +1 @@
1
- import{Proto as t,symbol_Statement as e,ProxyProto as s}from"@amateras/core";import{isArray as i,_null as a,forEach as d,is as r}from"@amateras/utils";class h extends t{static[e]=!0;condition;constructor(t,e){super(e),this.condition=i(t)?t:[t]}}class l extends t{static[e]=!0;constructor(t){super(t)}}class o extends s{static[e]=!0;exp$;cases=/* @__PURE__ */new Set;matched=a;#t=a;constructor(t,e){super(()=>{e((t,e,s)=>{$(t,e,s)})}),this.exp$=t}dispose(){d(this.cases,t=>t.dispose()),this.#t?.dispose(),this.matched=a,this.#t=a,this.cases.clear()}build(){super.build(!1),this.validate();let t=()=>{let t=this.matched,e=this.validate();t!==e&&(d(this.cases,t=>t!==e&&t.removeNode()),e!==this.#t&&this.#t?.removeNode(),this.node?.replaceWith(...this.toDOM()),this.parent?.mutate())};return d(this.cases,e=>{this.exp$.subscribe(t),e.ondispose(()=>this.exp$.unsubscribe(t))}),this}case(t,e){let s=new h(t,e);return this.cases.add(s),s}default(t){let e=new l(t);return this.#t=e,e}validate(){this.clear();for(let t of this.cases)if(t.condition.includes(this.exp$.value))return this.append(t),t.builded||t.build(),this.matched=t;if(this.#t)return this.append(this.#t),this.#t.builded||this.#t.build(),this.matched=this.#t}}globalThis.Match=o,globalThis.Case=h,globalThis.Default=l,$.process.craft.add((e,s,i)=>{if(e===o){let e=new o(s,i);return t.proto?.append(e),e}return e===h?r(t.proto,o)?.case(s,i):e===l?r(t.proto,o)?.default(s):void 0});
1
+ import{Proto as t,symbol_Statement as e,ProxyProto as s}from"@amateras/core";import{isArray as i,_null as a,forEach as d,is as h}from"@amateras/utils";class l extends t{static[e]=!0;condition;constructor(t,e){super(e),this.condition=i(t)?t:[t]}}class r extends t{static[e]=!0;constructor(t){super(t)}}class c extends s{static[e]=!0;exp$;cases=/* @__PURE__ */new Set;matched=a;#t=a;constructor(t,e){super(()=>{e((t,e,s)=>{$(t,e,s)})}),this.exp$=t}dispose(){d(this.cases,t=>t.dispose()),this.#t?.dispose(),this.matched=a,this.#t=a,this.cases.clear()}build(){super.build(!1),this.validate();let t=()=>{let t=this.matched,e=this.validate();t!==e&&(d(this.cases,t=>t!==e&&t.removeNode()),e!==this.#t&&this.#t?.removeNode(),this.node?.replaceWith(...this.toDOM()),this.parent?.mutate())};return d(this.cases,e=>{this.exp$.subscribe(t),e.ondispose(()=>this.exp$.unsubscribe(t))}),this}case(t,e){let s=new l(t,e);return this.cases.add(s),s}default(t){let e=new r(t);return this.#t=e,e}validate(){this.clear();for(let t of this.cases)if(t.condition.includes(this.exp$.value))return this.append(t),t.builded||t.build(),this.matched=t;if(this.#t)return this.append(this.#t),this.#t.builded||this.#t.build(),this.matched=this.#t}}globalThis.Match=c,globalThis.Case=l,globalThis.Default=r,$.process.craft.add((e,s,i)=>e===c?new c(s,i):e===l?h(t.proto,c)?.case(s,i):e===r?h(t.proto,c)?.default(s):void 0);
package/build/router.js CHANGED
@@ -1 +1 @@
1
- import{ElementProto as t,ProxyProto as e,onclient as s,Proto as r,symbol_ProtoType as o,GlobalState as i}from"@amateras/core";import{_undefined as l,toURL as a,_null as n,is as h,_instanceof as c,isUndefined as u,isFunction as p,map as d,isArray as f,forEach as w,_JSON_parse as v,_Object_entries as g,_JSON_stringify as y,_Object_assign as m}from"@amateras/utils";class b extends t{constructor(t,e){super("a",t,e),this.on("click",t=>{if(t.shiftKey||t.ctrlKey)return;t.preventDefault();let e=this.attr("target"),s=this.attr("href");s&&("_replace"===e?$.replace(s):$.open(s,e??l))})}}class k extends e{page=n;constructor(){super()}switch(t){if(this.page!==t&&(this.clear(),this.layout=()=>$(t),this.append(t),this.page!==t&&this.page?.removeNode(),this.page=t,t.builded||t.build(),t.updateTitle(),s())){let t=this.toDOM();this.node?.replaceWith(...t)}}}class x extends r{slot=new k;route;title=n;constructor(t,e,s){super(()=>e({params:s,slot:this.slot})),this.route=t}updateTitle(){let t=this.title??this.findAbove(t=>h(t,x)?.title)?.title??n,e=t=>{s()&&(document.title=t),this.global.title=t};t&&(c(t,Promise)?t.then(t=>{this.title=t,e(t)}):e(t))}}class P{routes=/* @__PURE__ */new Map;path;paths=/* @__PURE__ */new Map;validPaths=[];constructor(t){this.path=t,this.paths.set(t,l)}routing(t){let e=t.split("/"),s={},r="";t:for(let[i,l]of this.paths){s={};let t=i.split("/"),o=[];for(let s=0;s<Math.max(e.length,t.length);s++)o.push([t[s],e[s]]);e:for(let[e,i]of o){let t=()=>{r=""},o=()=>{r+=("/"!==r?"/":"")+i};if(u(e))break e;if(u(i)){t();continue t}if(e?.includes(":")){let[r,l]=e.split(":");if(!i.startsWith(r)){t();continue t}s[l]=i.replace(r,""),o();continue e}if(e!==i){t();continue t}o()}if(r){s={...s,...p(l)?l():l};break t}}if(!r)return;let o=P.resolvePath(this.path,s);return this.validPaths=d(this.paths,t=>P.resolvePath(t[0],s)),[o,r,s]}static resolvePath(t,e){return t.replaceAll(/:([^/]+)/g,(t,s)=>`${e[s]}`)}alias(t,e){this.paths.set(t,e)}}class S extends P{constructor(t){super(t)}async resolve(t,e,s){let r=this.routing(t);if(!r)return;let[,o,i]=r;s={...s,...i};let l=t.replace(o,"");for(let[a,n]of this.routes){let t=await n.resolve(l||"/",e,s);if(t)return[this,...t]}return[this]}}class T extends P{pages=/* @__PURE__ */new Map;page=n;#t;constructor(t,e){super(t),this.#t=e}async resolve(t,e,s){let r=this.routing(t);if(!r)return;let[o,i,l]=r;s={...s,...l};let a=await this.usePage(o,s,e),n=t.replace(i,"");for(let[h,c]of this.routes){let t=await c.resolve(n||"/",a.slot,s);if(t)return[this,...t]}return n?void 0:[this]}async usePage(t,e,s){let i=this.pages.get(t);if(!i){let l,a=this.#t;if(f(a)){let t=await a[0]().then(t=>t.default);l=()=>$(t,e,()=>$(i.slot))}else l="Widget"===this.#t[o]?()=>$(this.#t,e,()=>$(i.slot)):this.#t;$.context(r,s,()=>{i=new x(this,l,e)}),this.pages.set(t,i)}return this.page=i,s.switch(i),i}}let R=0;const[_,E]=[1,2],[L,M]=["forward","back"],A="__scroll_history__",D=s()?sessionStorage:n,N=s()?window.addEventListener:n,H=s()?window.removeEventListener:n;s()&&(history.scrollRestoration="manual");const W=t=>{const e=I.scrollHistory;if(t){let s=t.target;"#document"===s.nodeName?e[R]={[s.nodeName]:{x:window.scrollX,y:window.scrollY}}:""!==s.id&&(e[R]={[s.id]:{x:s.scrollLeft,y:s.scrollTop}})}else w(g(e),([t])=>+t>=R&&delete e[+t]);D?.setItem(A,y(e))};class I extends r{direction=L;prev=n;routes=/* @__PURE__ */new Map;slot=new k;static routers=/* @__PURE__ */new Set;constructor(){super(()=>$(this.slot)),s()&&I.routers.add(this)}set href(t){this.global.router.href=t}build(){if(s()){const t=()=>{const t=history.state?.index??0;R>t&&(this.direction=M),R<t&&(this.direction=L),R=t,this.prev=this.href,this.href=a(location.href),this.resolve(location.href)};t(),N?.("popstate",t),N?.("scroll",W,{capture:!0,passive:!1}),this.ondispose(()=>{H?.("popstate",t),H?.("scroll",W,{capture:!0})})}return super.build()}async resolve(t){if(!t)return;let e=a(t);for(let[,s]of this.routes){let t=await s.resolve(e.pathname,this.slot,{});if(t){this.global.router.routes=t;let e=[""],s=[];w(t,t=>(e=d(t.validPaths,t=>d(e,e=>e+t)).flat(),s.push(...e),e)),this.global.router.matchPaths=s;break}}w(this.global.router.navlinks,t=>t.checkActive()),I.dispatchEvent(),I.scrollRestoration()}static open(t,e="_self"){a(t).origin!==origin?open(t,e):I.writeState(t,_,e)}static forward(){history.forward()}static back(){history.back()}static replace(t){I.writeState(t,E)}static get scrollData(){return this.scrollHistory[R]??{}}static get scrollHistory(){return v(D?.getItem(A)??"{}")}static scrollRestoration(){if(s()){let t=I.scrollData??{x:0,y:0},e=g(t);e.length?w(e,([t,{x:e,y:s}])=>{"#document"===t?window.scrollTo(e,s):document.querySelector(`#${t}`)?.scrollTo(e,s)}):window.scrollTo(0,0)}}static writeState(t,e,r){if(!t)return;let o=a(t);if(!s()||o.href!==location.href){if(r&&"_self"!==r)return open(o,r);e===_&&R++,s()&&W(),w(this.routers,r=>{r.direction=L,s()&&(r.prev=a(location.href),history[e===_?"pushState":"replaceState"]({index:R},"",o)),r.href=o,r.resolve(t)}),I.dispatchEvent()}}static dispatchEvent(){s()&&window.dispatchEvent(new Event("pathchange"))}}const K=t=>class extends I{static[o]="Router";constructor(){super(),t(this)}};let q={route(t,e,s){let r=new T(t,e);return this.routes.set(t,r),s?.(r),this},group(t,e){let s=new S(t);return this.routes.set(t,s),e?.(s),this},notfound(){}};m(P.prototype,q),m(I.prototype,q),m(i.prototype,{router:{routers:/* @__PURE__ */new Set,resolve(t){return d(this.routers,e=>e.resolve(t))},href:new URL("http://localhost"),routes:[],matchPaths:[],navlinks:/* @__PURE__ */new Set}}),i.disposers.add(({router:t})=>{t.routers.clear(),t.routes=[],t.matchPaths=[],t.navlinks.clear()}),m($,{router:t=>K(t),open:I.open,replace:I.replace,back:I.back,forward:I.forward,scrollRestoration:I.scrollRestoration,title(t){let e=r.proto?.findAbove(t=>h(t,x));e&&(e.title=t,e.updateTitle())}}),globalThis.Link=b,globalThis.NavLink=class extends b{constructor(t,e){super(t,e),this.global.router.navlinks.add(this)}checkActive(){let t=this.attr("href");if(t){for(let e of this.global.router.matchPaths)if(a(e).href===a(t).href)return this.attr("active","");this.attr("active",n)}}},$.process.craft.add(t=>{if(p(t)&&"Router"===t[o]){let e=r.proto,s=new t;return e?.global.router.routers.add(s),e?.append(s),s}});export{b as Link,x as Page,P as Route,S as RouteGroup,T as RouteNode,k as RouteSlot,I as RouterProto};
1
+ import{ElementProto as t,ProxyProto as e,onclient as s,Proto as r,symbol_ProtoType as o,GlobalState as i}from"@amateras/core";import{_undefined as l,toURL as a,_null as n,is as h,_instanceof as c,isUndefined as u,isFunction as p,map as d,isArray as f,forEach as w,_JSON_parse as v,_Object_entries as g,_JSON_stringify as y,_Object_assign as m}from"@amateras/utils";class b extends t{constructor(t,e){super("a",t,e),this.on("click",t=>{if(t.shiftKey||t.ctrlKey)return;t.preventDefault();let e=this.attr("target"),s=this.attr("href");s&&("_replace"===e?$.replace(s):$.open(s,e??l))})}}class k extends e{page=n;constructor(){super()}switch(t){if(this.page!==t&&(this.clear(),this.layout=()=>$(t),this.append(t),this.page!==t&&this.page?.removeNode(),this.page=t,t.builded||t.build(),t.updateTitle(),s())){let t=this.toDOM();this.node?.replaceWith(...t)}}}class x extends r{slot=new k;route;title=n;constructor(t,e,s){super(()=>e({params:s,slot:this.slot})),this.route=t}updateTitle(){let t=this.title??this.findAbove(t=>h(t,x)?.title)?.title??n,e=t=>{s()&&(document.title=t),this.global.title=t};t&&(c(t,Promise)?t.then(t=>{this.title=t,e(t)}):e(t))}}class P{routes=/* @__PURE__ */new Map;path;paths=/* @__PURE__ */new Map;validPaths=[];constructor(t){this.path=t,this.paths.set(t,l)}routing(t){let e=t.split("/"),s={},r="";t:for(let[i,l]of this.paths){s={};let t=i.split("/"),o=[];for(let s=0;s<Math.max(e.length,t.length);s++)o.push([t[s],e[s]]);e:for(let[e,i]of o){let t=()=>{r=""},o=()=>{r+=("/"!==r?"/":"")+i};if(u(e))break e;if(u(i)){t();continue t}if(e?.includes(":")){let[r,l]=e.split(":");if(!i.startsWith(r)){t();continue t}s[l]=i.replace(r,""),o();continue e}if(e!==i){t();continue t}o()}if(r){s={...s,...p(l)?l():l};break t}}if(!r)return;let o=P.resolvePath(this.path,s);return this.validPaths=d(this.paths,t=>P.resolvePath(t[0],s)),[o,r,s]}static resolvePath(t,e){return t.replaceAll(/:([^/]+)/g,(t,s)=>`${e[s]}`)}alias(t,e){this.paths.set(t,e)}}class S extends P{constructor(t){super(t)}async resolve(t,e,s){let r=this.routing(t);if(!r)return;let[,o,i]=r;s={...s,...i};let l=t.replace(o,"");for(let[a,n]of this.routes){let t=await n.resolve(l||"/",e,s);if(t)return[this,...t]}return[this]}}class T extends P{pages=/* @__PURE__ */new Map;page=n;#t;constructor(t,e){super(t),this.#t=e}async resolve(t,e,s){let r=this.routing(t);if(!r)return;let[o,i,l]=r;s={...s,...l};let a=await this.usePage(o,s,e),n=t.replace(i,"");for(let[h,c]of this.routes){let t=await c.resolve(n||"/",a.slot,s);if(t)return[this,...t]}return n?void 0:[this]}async usePage(t,e,s){let i=this.pages.get(t);if(!i){let l,a=this.#t;if(f(a)){let t=await a[0]().then(t=>t.default);l=()=>$(t,e,()=>$(i.slot))}else l="Widget"===this.#t[o]?()=>$(this.#t,e,()=>$(i.slot)):this.#t;$.context(r,s,()=>{i=new x(this,l,e)}),this.pages.set(t,i)}return this.page=i,s.switch(i),i}}let R=0;const[_,E]=[1,2],[L,M]=["forward","back"],A="__scroll_history__",D=s()?sessionStorage:n,N=s()?window.addEventListener:n,H=s()?window.removeEventListener:n;s()&&(history.scrollRestoration="manual");const W=t=>{const e=I.scrollHistory;if(t){let s=t.target;"#document"===s.nodeName?e[R]={[s.nodeName]:{x:window.scrollX,y:window.scrollY}}:""!==s.id&&(e[R]={[s.id]:{x:s.scrollLeft,y:s.scrollTop}})}else w(g(e),([t])=>+t>=R&&delete e[+t]);D?.setItem(A,y(e))};class I extends r{direction=L;prev=n;routes=/* @__PURE__ */new Map;slot=new k;static routers=/* @__PURE__ */new Set;constructor(){super(()=>$(this.slot)),s()&&I.routers.add(this)}set href(t){this.global.router.href=t}build(){if(s()){const t=()=>{const t=history.state?.index??0;R>t&&(this.direction=M),R<t&&(this.direction=L),R=t,this.prev=this.href,this.href=a(location.href),this.resolve(location.href)};t(),N?.("popstate",t),N?.("scroll",W,{capture:!0,passive:!1}),this.ondispose(()=>{H?.("popstate",t),H?.("scroll",W,{capture:!0})})}return super.build()}async resolve(t){if(!t)return;let e=a(t);for(let[,s]of this.routes){let t=await s.resolve(e.pathname,this.slot,{});if(t){this.global.router.routes=t;let e=[""],s=[];w(t,t=>(e=d(t.validPaths,t=>d(e,e=>e+t)).flat(),s.push(...e),e)),this.global.router.matchPaths=s;break}}w(this.global.router.navlinks,t=>t.checkActive()),I.dispatchEvent(),I.scrollRestoration()}static open(t,e="_self"){a(t).origin!==origin?open(t,e):I.writeState(t,_,e)}static forward(){history.forward()}static back(){history.back()}static replace(t){I.writeState(t,E)}static get scrollData(){return this.scrollHistory[R]??{}}static get scrollHistory(){return v(D?.getItem(A)??"{}")}static scrollRestoration(){if(s()){let t=I.scrollData??{x:0,y:0},e=g(t);e.length?w(e,([t,{x:e,y:s}])=>{"#document"===t?window.scrollTo(e,s):document.querySelector(`#${t}`)?.scrollTo(e,s)}):window.scrollTo(0,0)}}static writeState(t,e,r){if(!t)return;let o=a(t);if(!s()||o.href!==location.href){if(r&&"_self"!==r)return open(o,r);e===_&&R++,s()&&W(),w(this.routers,r=>{r.direction=L,s()&&(r.prev=a(location.href),history[e===_?"pushState":"replaceState"]({index:R},"",o)),r.href=o,r.resolve(t)}),I.dispatchEvent()}}static dispatchEvent(){s()&&window.dispatchEvent(new Event("pathchange"))}}const K=t=>class extends I{static[o]="Router";constructor(){super(),t(this)}};let q={route(t,e,s){let r=new T(t,e);return this.routes.set(t,r),s?.(r),this},group(t,e){let s=new S(t);return this.routes.set(t,s),e?.(s),this},notfound(){}};m(P.prototype,q),m(I.prototype,q),m(i.prototype,{router:{routers:/* @__PURE__ */new Set,resolve(t){return d(this.routers,e=>e.resolve(t))},href:new URL("http://localhost"),routes:[],matchPaths:[],navlinks:/* @__PURE__ */new Set}}),i.disposers.add(({router:t})=>{t.routers.clear(),t.routes=[],t.matchPaths=[],t.navlinks.clear()}),m($,{router:t=>K(t),open:I.open,replace:I.replace,back:I.back,forward:I.forward,scrollRestoration:I.scrollRestoration,title(t){let e=r.proto?.findAbove(t=>h(t,x));e&&(e.title=t,e.updateTitle())}}),globalThis.Link=b,globalThis.NavLink=class extends b{constructor(t,e){super(t,e),this.global.router.navlinks.add(this)}checkActive(){let t=this.attr("href");if(t){for(let e of this.global.router.matchPaths)if(a(e).href===a(t).href)return this.attr("active","");this.attr("active",n)}}},$.process.craft.add(t=>{if(p(t)&&"Router"===t[o]){let e=r.proto,s=new t;return e?.global.router.routers.add(s),s}});export{b as Link,x as Page,P as Route,S as RouteGroup,T as RouteNode,k as RouteSlot,I as RouterProto};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amateras",
3
- "version": "0.13.1",
3
+ "version": "0.13.2",
4
4
  "description": "Amateras is a JavaScript library for building user interface.",
5
5
  "module": "index.ts",
6
6
  "type": "module",
@@ -14,7 +14,10 @@ function createProto(insert: boolean, ...args: any) {
14
14
  }
15
15
  for (let process of $.process.craft) {
16
16
  let result = process(...args);
17
- if (!isUndefined(result)) return result;
17
+ if (!isUndefined(result)) {
18
+ addProtoToParent(result);
19
+ return result;
20
+ }
18
21
  }
19
22
  const [arg1, arg2, arg3] = args;
20
23
 
@@ -1,14 +1,11 @@
1
1
  import { For } from "#structure/For";
2
- import { Proto } from '@amateras/core';
3
2
  import './global';
4
3
 
5
4
  globalThis.For = For;
6
5
 
7
6
  $.process.craft.add((value, list, layout) => {
8
7
  if (value === For) {
9
- let forProto = new For(list, layout);
10
- Proto.proto?.append(forProto);
11
- return forProto;
8
+ return new For(list, layout);
12
9
  }
13
10
  })
14
11
 
@@ -1,6 +1,5 @@
1
1
  import './global';
2
2
  import { If } from "#structure/If";
3
- import { Proto } from "@amateras/core";
4
3
  import { _instanceof, _null, isIncluded } from "@amateras/utils";
5
4
  import { Signal, type SignalObject, type SignalTypes } from '@amateras/signal';
6
5
  import { ElseIf } from '#structure/ElseIf';
@@ -25,11 +24,9 @@ export type IfLayout<T> = (value: T extends SignalTypes<infer V>
25
24
  let condition: Condition | null = null;
26
25
  // add condition statement craft function
27
26
  $.process.craft.add((value, arg1, arg2) => {
28
- let parentProto = Proto.proto;
29
27
  // when value equal If, mean this is a new start of condition statement
30
28
  if (value === If) {
31
29
  condition = new Condition();
32
- parentProto?.append(condition);
33
30
  }
34
31
 
35
32
  // if condition is null, mean this is not a condition statement code
@@ -20,9 +20,7 @@ $.process.craft.add((value, arg1, arg2) => {
20
20
  }
21
21
  }
22
22
  if (value === Match) {
23
- let proto = new Match(arg1, arg2);
24
- Proto.proto?.append(proto);
25
- return proto
23
+ return new Match(arg1, arg2);
26
24
  }
27
25
  if (value === Case) {
28
26
  return is(Proto.proto, Match)?.case(arg1, arg2)
@@ -94,7 +94,6 @@ $.process.craft.add((value) => {
94
94
  let proto = Proto.proto;
95
95
  let router = new value() as RouterProto;
96
96
  proto?.global.router.routers.add(router);
97
- proto?.append(router);
98
97
  return router;
99
98
  }
100
99
  })