UNPKG

ziko

Version:

A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...

10 lines 73.8 kB
/*
  Project: ziko.js
  Author: Zakaria Elalaoui
  Date : Thu Dec 25 2025 01:19:21 GMT+0100 (UTC+01:00)
  Git-Repo : https://github.com/zakarialaoui10/ziko.js
  Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
  Released under MIT License
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Ziko={})}(this,(function(t){"use strict";const{PI:e,E:s}=Math,r=Number.EPSILON,n=(t,...e)=>{const s=e.map((e=>{return"object"!=typeof(s=e)&&"function"!=typeof s||null===s||e?.__mapfun__?t(e):e instanceof Array?e.map((e=>n(t,e))):ArrayBuffer.isView(e)?e.map((e=>t(e))):e instanceof Set?new Set(n(t,...e)):e instanceof Map?new Map([...e].map((e=>[e[0],n(t,e[1])]))):e.isMatrix?.()?new e.constructor(e.rows,e.cols,n(e.arr.flat(1))):e instanceof Object?Object.fromEntries(Object.entries(e).map((e=>[e[0],n(t,e[1])]))):void 0;var s}));return 1==s.length?s[0]:s},i=(t,e)=>t.isComplex?.()?new t.constructor(e(t.a),e(t.b)):t.isMatrix?.()?new t.constructor(t.rows,t.cols,t.arr.flat(1).map(e)):(t instanceof Array&&n(e,...t),e(t)),o=(t,e,s)=>{if("number"==typeof e){if("number"==typeof s)switch(t){case"add":return e+s;case"sub":return e-s;case"mul":return e*s;case"div":return e/s;case"modulo":return e%s}return s?.isComplex?.()&&(e=new s.constructor(e,0)),s?.isMatrix?.()&&(e=s.constructor.nums(s.rows,s.cols,e)),e[t](s)}if(e?.isComplex?.()){if("number"==typeof s||s?.isComplex?.())return e.clone()[t](s);if(s?.isMatrix?.())return(e=s.constructor.nums(s.rows,s.cols,e)).clone()[t](s)}if(e?.isMatrix?.())return e.clone()[t](s)},h=(t,...e)=>{let s=t;for(let t=0;t<e.length;t++)s=o("add",s,e[t]);return s},c=(t,...e)=>{let s=t;for(let t=0;t<e.length;t++)s=o("sub",s,e[t]);return s},l=(t,...e)=>{let s=t;for(let t=0;t<e.length;t++)s=o("mul",s,e[t]);return s},u=(t,...e)=>{let s=t;for(let t=0;t<e.length;t++)s=o("div",s,e[t]);return s},p=(t,...e)=>{let s=t;for(let t=0;t<e.length;t++)s=o("modulo",s,e[t]);return s},m=(...t)=>t.reduce(((t,e)=>t+e))/t.length,f=(...t)=>{const e=t.length;if(0===e)return NaN;const s=m(...t);return t.reduce(((t,e)=>t+(e-s)**2),0)/e},d=(...t)=>{let e,s=[],r=0,n=t.length;for(e=0;e<n;e++)r=h(r,t[e]),s.push(r);return s},g=(t,e)=>{if(0===t.length)return NaN;let s=[...t].sort(((t,e)=>t-e)),r=e/100*(s.length-1),n=Math.floor(r),i=r-n;return n===s.length-1?s[n]:s[n]*(1-i)+s[n+1]*i};class w{static int(t,e){return Math.floor(this.float(t,e))}static float(t,e){return void 0!==e?Math.random()*(e-t)+t:Math.random()*t}static bin(){return this.int(2)}static oct(){return this.int(8)}static dec(){return this.int(10)}static hex(){return((t,e,s)=>{const r=parseInt(t,e);if(Number.isNaN(r))throw new TypeError("Invalid value for the given base");return r.toString(s)})(this.int(16),10,16)}static char(t=!1){const e=t?this.int(65,91):this.int(97,123);return String.fromCharCode(e)}static bool(){return Boolean(this.int(2))}static get color(){return{hex:()=>`#${this.int(16777215).toString(16).padStart(6,"0")}`,hexa:()=>{const[t,e,s,r]=Array.from({length:4},(()=>this.int(255).toString(16).padStart(2,"0")));return`#${t}${e}${s}${r}`},rgb:()=>{const[t,e,s]=Array.from({length:3},(()=>this.int(255)));return`rgb(${t}, ${e}, ${s})`},rgba:()=>{const[t,e,s]=Array.from({length:3},(()=>this.int(255)));return`rgba(${t}, ${e}, ${s}, ${Math.random().toFixed(2)})`},hsl:()=>`hsl(${this.int(360)}, ${this.int(100)}%, ${this.int(100)}%)`,hsla:()=>`hsla(${this.int(360)}, ${this.int(100)}%, ${this.int(100)}%, ${Math.random().toFixed(2)})`,gray:()=>{const t=this.int(255);return`rgb(${t}, ${t}, ${t})`}}}static get sample(){const t=this;return{int:(e,s,r)=>Array.from({length:e},(()=>t.int(s,r))),float:(e,s,r)=>Array.from({length:e},(()=>t.float(s,r))),char:(e,s=!1)=>Array.from({length:e},(()=>t.char(s))),bool:e=>Array.from({length:e},(()=>t.bool())),bin:e=>Array.from({length:e},(()=>t.bin())),oct:e=>Array.from({length:e},(()=>t.oct())),dec:e=>Array.from({length:e},(()=>t.dec())),hex:e=>Array.from({length:e},(()=>t.hex())),get color(){return{hex:e=>Array.from({length:e},(()=>t.color.hex())),hexa:e=>Array.from({length:e},(()=>t.color.hexa())),rgb:e=>Array.from({length:e},(()=>t.color.rgb())),rgba:e=>Array.from({length:e},(()=>t.color.rgba())),hsl:e=>Array.from({length:e},(()=>t.color.hsl())),hsla:e=>Array.from({length:e},(()=>t.color.hsla())),gray:e=>Array.from({length:e},(()=>t.color.gray()))}},choice:(e,s,r)=>Array.from({length:e},(()=>t.choice(s,r)))}}static shuffle(t){return[...t].sort((()=>.5-Math.random()))}static choice(t=[1,2,3],e=new Array(t.length).fill(1/t.length)){const s=d(...e).map((t=>100*t)),r=new Array(100);r.fill(t[0],0,s[0]);for(let e=1;e<t.length;e++)r.fill(t[e],s[e-1],s[e]);return r[this.int(r.length)]}}globalThis.Random=w;class y{constructor(t=0,e=0){[this.a,this.b]=((t,e,s)=>{let r,n;return e instanceof t?(r=e.a,n=e.b):"object"==typeof e?"a"in e&&"b"in e?(r=e.a,n=e.b):"a"in e&&"z"in e?(r=e.a,n=Math.sqrt(e.z**2-e.a**2)):"a"in e&&"phi"in e?(r=e.a,n=e.a*Math.tan(e.phi)):"b"in e&&"z"in e?(n=e.b,r=Math.sqrt(e.z**2-e.b**2)):"b"in e&&"phi"in e?(n=s,r=e.b/Math.tan(e.phi)):"z"in e&&"phi"in e&&(r=+e.z*Math.cos(e.phi).toFixed(15),n=+e.z*Math.sin(e.phi).toFixed(15)):"number"==typeof e&&"number"==typeof s&&(r=+e.toFixed(32),n=+s.toFixed(32)),[r,n]})(y,t,e)}get __mapfun__(){return!0}isComplex(){return!0}toString(){let t="";return t=0!==this.a?this.b>=0?`${this.a}+${this.b}*i`:`${this.a}-${Math.abs(this.b)}*i`:this.b>=0?`${this.b}*i`:`-${Math.abs(this.b)}*i`,t}serialize(){return JSON.stringify({type:"complex",data:this})}static deserialize(t){"string"==typeof t&&(t=JSON.parse(t));let{data:e,type:s}=t;return"complex"===s&&"a"in e&&"b"in e?new y(e.a,e.b):TypeError("Not a valid complex")}toFixed(t){return this.a=+this.a.toFixed(t),this.b=+this.b.toFixed(t),this}toPrecision(t){return this.a=+this.a.toPrecision(t),this.b=+this.b.toPrecision(t),this}clone(){return new y(this.a,this.b)}get z(){return Math.hypot(this.a,this.b)}get phi(){return Math.atan2(this.b,this.a)}static zero(){return new y(0,0)}static fromPolar(t,e){return new y(+(t*cos(e)).toFixed(13),+(t*sin(e)).toFixed(13))}static get random(){return{int:(t,e)=>new y(...w.sample.int(2,t,e)),float:(t,e)=>new y(...w.sample.float(2,t,e))}}static twiddle(t,e){const s=-2*Math.PI*t/e;return new y(Math.cos(s),Math.sin(s))}get conj(){return new y(this.a,-this.b)}get inv(){return new y(this.a/Math.hypot(this.a,this.b),-this.b/Math.hypot(this.a,this.b))}add(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new y(t[e],0)),this.a+=t[e].a,this.b+=t[e].b;return this}sub(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new y(t[e],0)),this.a-=t[e].a,this.b-=t[e].b;return this}mul(...t){let{z:e,phi:s}=this;for(let r=0;r<t.length;r++)"number"==typeof t[r]&&(t[r]=new y(t[r],0)),e*=t[r].z,s+=t[r].phi;return this.a=e*Math.cos(s),this.b=e*Math.sin(s),this.toFixed(8)}div(...t){let{z:e,phi:s}=this;for(let r=0;r<t.length;r++)"number"==typeof t[r]&&(t[r]=new y(t[r],0)),e/=t[r].z,s-=t[r].phi;return this.a=e*Math.cos(s),this.b=e*Math.sin(s),this.toFixed(8)}modulo(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new y(t[e],0)),this.a%=t[e].a,this.b%=t[e].b;return this}pow(...t){let{z:e,phi:s}=this;for(let r=0;r<t.length;r++)"number"==typeof t[r]&&(t[r]=new y(t[r],0)),e*=Math.exp(t[r].a*Math.log(e)-t[r].b*s),s+=t[r].b*Math.log(e)+t[r].a*s;return this.a=e*Math.cos(s),this.b=e*Math.sin(s),this}get expo(){return[this.z,this.phi]}nthr(t=2){return _({z:this.z**(1/t),phi:this.phi/t})}get sqrt(){return this.nthr(2)}get cbrt(){return this.nthr(3)}get log(){return _(this.z,this.phi)}get cos(){return _(Math.cos(this.a)*Math.cosh(this.b),Math.sin(this.a)*Math.sinh(this.b))}get sin(){return _(Math.sin(this.a)*Math.cosh(this.b),Math.cos(this.a)*Math.sinh(this.b))}get tan(){const t=cos(2*this.a)+cosh(2*this.b);return _(Math.sin(2*this.a)/t,Math.sinh(2*this.b)/t)}}const _=(t,e)=>{if((t instanceof Array||ArrayBuffer.isView(t))&&(e instanceof Array||ArrayBuffer.isView(t)))return t.map(((s,r)=>_(t[r],e[r])));if(t.isMatrix?.()&&e.isMatrix?.()){if(t.shape[0]!==e.shape[0]||t.shape[1]!==e.shape[1])return Error(0);const s=t.arr.map(((s,r)=>_(t.arr[r],e.arr[r])));return new t.constructor(t.rows,t.cols,...s)}return new y(t,e)},v=(...t)=>n((t=>t.isComplex?.()?t.z:Math.abs(t)),...t),x=(...t)=>{const e=t.pop();return n((t=>t.isComplex?.()?e.isComplex?.()?new t.constructor({z:Math.exp(e.a*Math.log(t.z)-e.b*t.phi),phi:e.b*Math.log(t.z)+e.a*t.phi}):new t.constructor({z:t.z**e,phi:t.phi*e}):e.isComplex?.()?new t.constructor({z:Math.exp(e.a*Math.log(t)),phi:e.b*Math.log(t)}):Math.pow(t,e)),...t)},M=(...t)=>n((t=>t.isComplex?.()?new t.constructor({z:t.z**.5,phi:t.phi/2}):t<0?_(0,Math.sqrt(-t)).toFixed(8):+Math.sqrt(t).toFixed(8)),...t),E=(...t)=>{const e=t.pop();if("number"!=typeof e)throw Error("nthr expects a real number n");return n((t=>t.isComplex?.()?new t.constructor({z:t.z**(1/e),phi:t.phi/e}):t<0?e%2==2?_(0,(-t)**(1/e)).toFixed(8):+(-1*(-t)**(1/e)).toFixed(8):+(t**(1/e)).toFixed(8)),...t)},k=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.log(t.z),t.phi).toFixed(8):+Math.log(t).toFixed(8)),...t),C=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.floor(t.a),Math.floor(t.b)):Math.floor(t)),...t),T=(t,e,s)=>i(t,(t=>e!==s?(t-e)/(s-e):0)),S=(t,e,s)=>i(t,(t=>(s-e)*t+e)),O=(t,e,s)=>i(t,(t=>Math.min(Math.max(t,e),s))),A=(t,e,s,r,n)=>i(t,(t=>S(T(t,e,s),r,n))),j=(t,e,s=!0)=>{if(t instanceof Array&&!(e instanceof Array))return n((t=>j(t,e,s)),...t);if(e instanceof Array&&!(t instanceof Array))return n((e=>j(t,e,s)),...e);if(t instanceof Array&&e instanceof Array)return t.map(((t,r)=>j(t,e[r],s)));const r=Math.atan2(t,e);return s?r:180*r/Math.PI},P=t=>t.isComplex?.()?new t.constructor(P(t.a),P(t.b)):t.isMatrix?.()?new t.constructor(t.rows,t.cols,t.arr.flat(1).map(P)):+!t,I=(t,e)=>{if(t.every((t=>t.isComplex?.()))){const s=t.map((t=>t.a)),r=t.map((t=>t.b));return new t[0].constructor(e(...s),e(...r))}if(t.every((t=>t.isMatrix?.()))){if(!t.every((e=>e.rows===t[0].rows&&e.cols===t[0].cols)))return TypeError("All matrices must have the same shape");const{rows:s,cols:r}=t[0],n=Array.from({length:s},((s,n)=>Array.from({length:r},((s,r)=>e(...t.map((t=>t.arr[n][r])))))));return new t[0].constructor(n)}return null},R=(...t)=>{const e=I(t,R);return null!==e?e:t.reduce(((t,e)=>t&e),1)},F=(...t)=>{const e=I(t,F);return null!==e?e:t.reduce(((t,e)=>t|e),0)},z=(...t)=>{const e=I(t,z);return null!==e?e:t.reduce(((t,e)=>t^e),0)},$=(t,e)=>{for(let e=0;e<t.arr.length;e++)Object.defineProperty(t,e,{value:t.arr[e],writable:!0,configurable:!0,enumerable:!1});for(let s=t.arr.length;s<e;s++)delete t[s]};function D(t,e){var s=[];for(let e=0;e<t.length;e++)s.push(t[e].slice(0));s.splice(0,1);for(let t=0;t<s.length;t++)s[t].splice(e,1);return s}function L(t,e){if(t=t.clone(),e=e.clone(),t.rows!==e.rows)return;let s=t.arr;for(let r=0;r<t.rows;r++)for(let n=t.cols;n<t.cols+e.cols;n++)s[r][n]=e.arr[r][n-t.cols];return t.cols+=e.cols,new t.constructor(t.rows,t.cols,s.flat(1))}function N(t,e){if(t=t.clone(),e=e.clone(),t.cols!==e.cols)return;let s=t.arr;for(let r=t.rows;r<t.rows+e.rows;r++){s[r]=[];for(let n=0;n<t.cols;n++)s[r][n]=e.arr[r-t.rows][n]}return t.rows+=e.rows,new t.constructor(t.rows,t.cols,s.flat(1))}class U{constructor(t,e,s=[]){[this.rows,this.cols,this.arr]=((t,e,s,r)=>{if(!(e instanceof t)){let t,n,i=[];if(e instanceof Array)i=e,e=i.length,s=i[0].length;else for(t=0;t<e;t++)for(i.push([]),i[t].push(new Array(s)),n=0;n<s;n++)i[t][n]=r[t*s+n],null==r[t*s+n]&&(i[t][n]=0);return[e,s,i]}arr=e.arr,s=(e=e.rows).cols})(U,t,e,s),$(this)}isMatrix(){return!0}clone(){return new U(this.rows,this.cols,this.arr.flat(1))}toComplex(){return this.arr=n((t=>t?.isComplex?.()?t:new y(t,0)),...this.arr),$(this),this}[Symbol.iterator](){return this.arr[Symbol.iterator]()}get size(){return this.rows*this.cols}get shape(){return[this.rows,this.cols]}at(t=0,e=void 0){if(t<0&&(t+=this.rows),t<0||t>=this.rows)throw new Error("Row index out of bounds");if(void 0===e)return this.arr[t];if(e<0&&(e+=this.cols),e<0||e>=this.cols)throw new Error("Column index out of bounds");return this.arr[t][e]}slice(t=0,e=0,s=this.rows-1,r=this.cols-1){s<0&&(s=this.rows+s),r<0&&(r=this.cols+r);let n=s-t,i=r-e,o=new Array(i);for(let s=0;s<n;s++){o[s]=[];for(let r=0;r<i;r++)o[s][r]=this.arr[s+t][r+e]}return this.arr=o,$(this.rows),this.rows=n,this.cols=i,this}reshape(t,e){if(t*e!=this.rows*this.cols)throw Error("size not matched");const s=this.rows;return Object.assign(this,new U(t,e,this.arr.flat(1))),$(s),this}get T(){let t=[];for(let e=0;e<this.arr[0].length;e++){t[e]=[];for(let s=0;s<this.arr.length;s++)t[e][s]=this.arr[s][e]}return new U(this.cols,this.rows,t.flat(1))}get det(){return(t=this).isSquare?1==t.rows?t.arr[0][0]:function t(e){if(2==e.length)return e.flat(1).some((t=>t?.isMatrix?.()))?void console.warn("Tensors are not completely supported yet ..."):c(l(e[0][0],e[1][1]),l(e[0][1],e[1][0]));for(var s=0,r=0;r<e.length;r++){const n=h(l(x(-1,r),l(e[0][r],t(D(e,r)))));s=h(s,n)}return s}(t.arr):new Error("is not square matrix");var t}get inv(){return function(t){if(t.row!==t.cols)throw Error('is not a square matrix"');if(0===t.det)throw Error("determinant should not equal 0");const{arr:e}=t;if(e.length===e[0].length){var s=0,r=0,n=0,i=e.length,o=0,a=[],h=[];for(s=0;s<i;s+=1)for(a[a.length]=[],h[h.length]=[],n=0;n<i;n+=1)a[s][n]=s==n?1:0,h[s][n]=e[s][n];for(s=0;s<i;s+=1){if(0==(o=h[s][s])){for(r=s+1;r<i;r+=1)if(0!=h[r][s]){for(n=0;n<i;n++)o=h[s][n],h[s][n]=h[r][n],h[r][n]=o,o=a[s][n],a[s][n]=a[r][n],a[r][n]=o;break}if(0==(o=h[s][s]))return}for(n=0;n<i;n++)h[s][n]=h[s][n]/o,a[s][n]=a[s][n]/o;for(r=0;r<i;r++)if(r!=s)for(o=h[r][s],n=0;n<i;n++)h[r][n]-=o*h[s][n],a[r][n]-=o*a[s][n]}return new t.constructor(a)}}(this)}static eye(t){let e=new U(t,t);for(let s=0;s<t;s++)for(let r=0;r<t;r++)e.arr[s][r]=s===r?1:0;return e}static zeros(t,e){let s=new U(t,e);for(let n=0;n<t;n++)for(var r=0;r<e;r++)s.arr[n][r]=0;return s}static ones(t,e){let s=new U(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=1;return s}static nums(t,e,s){let r=new U(t,e);for(let n=0;n<t;n++)for(let t=0;t<e;t++)r.arr[n][t]=s;return r}static get random(){return{int:(t,e,s,r)=>new U(t,e,w.sample.int(t*e,s,r)),float:(t,e,s)=>new U(t,e,w.sample.float(t*e,s,b))}}get range(){return{map:(t,e,s,r)=>(this.arr=A(this.arr,t,e,s,r),this),norm:(t,e)=>(this.arr=T(this.arr,t,e),this),lerp:(t,e)=>(this.arr=S(this.arr,t,e),this),clamp:(t,e)=>(this.arr=O(this.arr,t,e),this)}}hstack(...t){const e=[this,...t].reduce(((t,e)=>L(t,e)));return Object.assign(this,e),$(this),this}vstack(...t){const e=[this,...t].reduce(((t,e)=>N(t,e)));return Object.assign(this,e),$(this),this}hqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>L(t,e)));return Object.assign(this,e),$(this),this}vqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>N(t,e)));return Object.assign(this,e),$(this),this}forEach(t){return this.arr.flat(1).forEach(t),this}forEachRow(t){return this.arr.forEach(t),this}forEachCol(t){return this.clone().T.forEachRow(t),this}map(t){const e=this.arr.flat(1).map(t);return new U(this.rows,this.cols,e)}mapRows(t=(()=>{})){return this.arr=this.arr.map(t),this}mapCols(t){return this.clone().T.mapRows(t).T}sort(t=(()=>{})){const e=this.arr.flat(1).sort(t);return new U(this.rows,this.cols,e)}shuffle(){return this.sort((()=>.5-Math.random()))}sortRows(t=(()=>{})){return this.arr=this.arr.map((e=>e.sort(t))),this}shuffleRows(){return this.sortRows((()=>.5-Math.random()))}sortCols(t){return this.clone().T.sortRows(t).T}shuffleCols(){return this.sortCols((()=>.5-Math.random()))}reduce(t,e){const s=e?this.arr.flat(1).reduce(t,e):this.arr.flat(1).reduce(t);return new U([[s]])}reduceRows(t,e){const s=e?this.arr.map((s=>s.reduce(t,e))):this.arr.map((e=>e.reduce(t)));return new U(1,this.cols,s)}reduceCols(t,e){return this.T.reduceRows(t,e).T}filterRows(t){const e=this.arr.map((e=>e.some((e=>t(e))))),s=[];let r;for(r=0;r<e.length;r++)e[r]&&s.push(this.arr[r]);return new U(s)}filterCols(t){const e=this.T.filterRows(t);return new U(e).T}every(t){return this.arr.flat(1).every(t)}everyRow(t){return this.arr.map((e=>e.every(t)))}everyCol(t){return this.T.arr.map((e=>e.every(t)))}some(t){return this.arr.flat(1).some(t)}someRow(t){return this.arr.map((e=>e.some(t)))}someCol(t){return this.T.arr.map((e=>e.some(t)))}get isSquare(){return this.rows===this.cols}get isSym(){if(!this.isSquare)return!1;for(let t=0;t<this.rows;t++)for(let e=t+1;e<this.cols;e++)if(this.arr[t][e]!==this.arr[e][t])return!1;return!0}get isAntiSym(){if(!this.isSquare)return!1;const t=this.rows;for(let e=0;e<t;e++){if(0!==this.arr[e][e])return!1;for(let s=e+1;s<t;s++)if(this.arr[e][s]!==-this.arr[s][e])return!1}return!0}get isDiag(){if(!this.isSquare)return!1;const t=this.rows;for(let e=0;e<t;e++)for(let s=e+1;s<t;s++)if(0!==this.arr[e][s]||0!==this.arr[s][e])return!1;return!0}get isOrtho(){return!!this.isSquare&&(this.isDiag&&(1==this.det||-1==this.det))}get isIdemp(){if(!this.isSquare)return!1;const t=this.rows,e=this.arr,s=[];for(let r=0;r<t;r++){s[r]=[];for(let n=0;n<t;n++){let i=0;for(let s=0;s<t;s++)i+=e[r][s]*e[s][n];s[r][n]=i}}for(let r=0;r<t;r++)for(let n=0;n<t;n++)if(s[r][n]!==e[r][n])return!1;return!0}get isUpperTri(){if(!this.isSquare)return!1;const t=this.rows;for(let e=1;e<t;e++)for(let t=0;t<e;t++)if(0!==this.arr[e][t])return!1;return!0}get isLowerTri(){if(!this.isSquare)return!1;const t=this.rows;for(let e=0;e<t-1;e++)for(let s=e+1;s<t;s++)if(0!==this.arr[e][s])return!1;return!0}toPrecision(t){for(let e=0;e<this.cols;e++)for(let s=0;s<this.rows;s++)this.arr[e][s]=+this.arr[e][s].toPrecision(t);return this}toFixed(t){for(let e=0;e<this.cols;e++)for(let s=0;s<this.rows;s++)this.arr[e][s]=+this.arr[e][s].toFixed(t);return this}splice(t,e,s,...r){}getRows(t,e=t+1){return this.slice(t,0,e,this.cols)}getCols(t,e=t+1){return this.slice(0,t,this.rows,e)}#t(t,...e){for(let r=0;r<e.length;r++){("number"==typeof e[r]||e[r]?.isComplex?.())&&(e[r]=U.nums(this.rows,this.cols,e[r]));for(let n=0;n<this.rows;n++)for(var s=0;s<this.cols;s++)this.arr[n][s]=t(this.arr[n][s],e[r].arr[n][s])}return new U(this.rows,this.cols,this.arr.flat(1))}add(...t){return this.#t(h,...t)}sub(...t){return this.#t(c,...t)}mul(...t){return this.#t(l,...t)}div(...t){return this.#t(u,...t)}modulo(...t){return this.#t(p,...t)}dot(t){for(var e=[],s=0;s<this.arr.length;s++){e[s]=[];for(var r=0;r<t.arr[0].length;r++){e[s][r]=0;for(var n=0;n<this.arr[0].length;n++)e[s][r]=h(e[s][r],l(this.arr[s][n],t.arr[n][r]))}}return new U(this.arr.length,t.arr[0].length,e.flat(1))}pow(t){let e=this.clone(),s=this.clone();for(let r=0;r<t-1;r++)s=s.dot(e);return s}sum(){let t=0;for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t=h(t,this.arr[e][s]);return t}prod(){let t=1;for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t=l(t,this.arr[e][s]);return t}hasComplex(){return this.arr.flat(1/0).some((t=>t instanceof y))}get min(){this.hasComplex()&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(Math.min(...this.arr[e]));return Math.min(...t)}get max(){this.hasComplex()&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(Math.max(...this.arr[e]));return Math.max(...t)}get minRows(){this.hasComplex()&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(Math.min(...this.arr[e]));return t}get maxRows(){this.hasComplex()&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(Math.max(...this.arr[e]));return t}get minCols(){return this.hasComplex()&&console.error("Complex numbers are not comparable"),this.T.minRows}get maxCols(){return this.hasComplex()&&console.error("Complex numbers are not comparable"),this.T.maxRows}static fromVector(t){return new U(t.length,1,t)}serialize(){const t=n((t=>t.serialize?.()||t),...this.arr);return JSON.stringify({type:"matrix",data:{rows:this.rows,cols:this.cols,arr:t}})}static deserialize(t){"string"==typeof t&&(t=JSON.parse(t));const{type:e,data:s}=t;if("matrix"!==e)return TypeError("Not a valid Matrix");let{arr:r}=s;return r=n((t=>{if("string"==typeof t){const e=JSON.parse(t),{type:s}=e;if("complex"===s)return y.deserialize(e)}return t}),...r),new U(r)}flip(){return this.flipeH().flipeV()}flipeH(){return this.arr=this.arr.map((t=>[...t].reverse())),$(this),this}flipeV(){return this.arr=this.arr.reverse(),$(this),this}}const q=t=>new Array(t).fill(0),Z=t=>new Array(t).fill(1),B=(t,e)=>new Array(e).fill(t),H=(t,e,s,r=!1)=>{let n=[];if(t<e)for(let i=t;r?i<=e:i<e;i+=s)n.push(10*i/10);else for(let i=t;r?i>=e:i>e;i-=s)n.push(10*i/10);return n},V=(t,e,s=v(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[o,a]=[t,e].sort(((t,e)=>e-t));var n=[];let h;h=r?(o-a)/(s-1):(o-a)/s;for(var i=0;i<s;i++)t<e?n.push(a+h*i):n.push(o-h*i);return n}if([t,e].some((t=>t.isComplex?.()))){const n=new s.constructor(t),i=new s.constructor(e);s=s||Math.abs(n.a-i.a)+1;const o=V(n.a,i.a,s,r),a=V(n.b,i.b,s,r);let h=new Array(s).fill(null);return h=h.map(((t,e)=>new t.constructor(o[e],a[e]))),h}}},W=(t,e,r=e-t+1,n=s,i=!0)=>V(t,e,r,i).map((t=>x(n,t))),G=(t,e,s=v(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[n,i]=[t,e].sort(((t,e)=>e-t));let o;o=E(n/i,r?s-1:s);const a=[i];for(let t=1;t<s;t++)a.push(a[t-1]*o);return t<e?a:a.reverse()}if([t,e].some((t=>t.isComplex?.()))){const n=new s.constructor(t),i=new s.constructor(e);let o;s=s||Math.abs(n.a-i.a)+1,o=E(i.div(n),r?s-1:s);const a=[n];for(let t=1;t<s;t++)a.push(l(a[t-1],o));return a}}},K=(t,e,s)=>{const[r,n]=[Math.min(e,s),Math.max(e,s)];return t>=r&&t<=n},J=(t,e,s=1e-4)=>Math.abs(t-e)<=s,Y=(t,e)=>t.reduce(((t,s)=>[...t,...e.map((t=>[s,t]))]),[]),X=(t,e)=>{let s,r=1;if(t==C(t)&&e==C(e)){for(s=2;s<=t&&s<=e;++s)t%s==0&&e%s==0&&(r=s);return r}console.log("error")},Q=(t,e)=>{let s;if(t==C(t)&&e==C(e)){for(s=t>e?t:e;s%t!=0||s%e!=0;)++s;return s}console.log("error")},tt={zeros:q,ones:Z,nums:B,arange:H,linspace:V,logspace:W,geomspace:G,cartesianProduct:Y,ppcm:Q,pgcd:X,inRange:K,isApproximatlyEqual:J};class et{constructor(t){this.cache={node:t}}isZikoUINode(){return!0}get node(){return this.cache.node}}class st extends Array{constructor(...t){super(...t)}clear(){return this.length=0,this}getItemById(t){return this.find((e=>e.element.id===t))}getItemsByTagName(t){return this.filter((e=>e.element.tagName.toLowerCase()===t.toLowerCase()))}getElementsByClassName(t){return this.filter((e=>e.element.classList?.contains(t)))}querySelector(t){const e=globalThis?.document?.querySelector(t);return e&&this.find((t=>t.element===e))||null}querySelectorAll(t){const e=globalThis?.document?.querySelectorAll(t);return Array.from(e).map((t=>this.find((e=>e.element===t)))).filter(Boolean)}}const rt=new st,nt={default:{target:null,render:!0,math:{mode:"deg"}},setDefault:function(t){const e=Object.keys(t),s=Object.values(t);for(let t=0;t<e.length;t++)this.default[e[t]]=s[t]},init:()=>{},renderingMode:"spa",isSSC:!1},it={store:new Map,index:0,register:function(t){this.store.set(this.index++,t)},reset(){this.index=0,this.store.clear()}},ot={ui_index:0,get_ui_index:function(){return this.ui_index++},register_ui:function(t){}};class at{#e;#s;#r;#n;#i;#o;constructor(t=""){this.#e=new BroadcastChannel(t),this.#s=new Map,this.#r=new Map,this.#n="ziko-channel:"+1e17*Math.random(),this.#i=new Set([this.#n]),this.#o=new Set,this.#e.addEventListener("message",(t=>{const{last_sent_event:e,userId:s,eventData:r,rooms:n}=t.data;if(s===this.#n)return;if(n&&n.length&&!n.some((t=>this.#o.has(t))))return;this.#i.add(s),this.#s=new Map(r);const i=this.#r.get(e);i&&i.forEach((({fn:t,rooms:s})=>{s&&0!==s.length&&n&&!n.some((t=>s.includes(t)))||t(this.#s.get(e))}))}))}emit(t,e,s){return this.#s.set(t,e),"string"==typeof s&&(s=[s]),this.#e.postMessage({eventData:Array.from(this.#s.entries()),last_sent_event:t,userId:this.#n,rooms:s&&s.length?s:void 0}),this}on(t,e=console.log,s){return this.#r.has(t)||this.#r.set(t,[]),"string"==typeof s&&(s=[s]),this.#r.get(t).push({fn:e,rooms:s}),this}off(t,e){return this.#r.has(t)?(this.#r.set(t,this.#r.get(t).filter((t=>t.fn!==e))),this):this}once(t,e,s){const r=s=>{e(s),this.off(t,r)};return this.on(t,r,s),this}join(...t){return t.forEach((t=>this.#o.add(t))),this}leave(...t){return t.length?t.forEach((t=>this.#o.delete(t))):this.#o.clear(),this}close(){return this.#e.close(),this}}const ht=t=>new at(t);class ct{constructor(t,e,s,r=!0){this.cache={storage:t,globalKey:e,channel:r?ht(`Ziko:useStorage-${e}`):null,oldItemKeys:new Set},this.#a(s,r)}get items(){const t=this.cache.storage.getItem(this.cache.globalKey);if(!t)return{};try{return JSON.parse(t)}catch{return{}}}#h(){const t=this.items;this.cache.oldItemKeys.forEach((t=>delete this[t]));for(const e in t)this[e]=t[e],this.cache.oldItemKeys.add(e)}#a(t,e){if(e&&this.cache.channel&&this.cache.channel.on("Ziko-Storage-Updated",(()=>this.#h())),t)if(this.cache.storage.getItem(this.cache.globalKey)){const t=this.items;Object.keys(t).forEach((t=>this.cache.oldItemKeys.add(t))),this.#h()}else this.set(t);else this.#h()}set(t){return this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(t)),this.cache.channel&&this.cache.channel.emit("Ziko-Storage-Updated",t),this.#h(),this}add(t){return this.set({...this.items,...t}),this}remove(...t){const e={...this.items};return t.forEach((t=>{delete e[t],delete this[t],this.cache.oldItemKeys.delete(t)})),this.set(e),this}get(t){return this.items[t]}clear(){return this.cache.storage.removeItem(this.cache.globalKey),this.cache.oldItemKeys.forEach((t=>delete this[t])),this.cache.oldItemKeys.clear(),this.#h(),this}onStorageUpdated(t){return this.cache.channel&&this.cache.channel.on("Ziko-Storage-Updated",t),this}}const lt=(t,e,s=!0)=>new ct(sessionStorage,t,e,s);var ut={store:new Map,index:0,session_storage:null,register:function(t){if(!(void 0).SSR&&(void 0).DEV){this.session||(this.session_storage=lt("ziko-state",{}));const e=this.session_storage.get(this.index);e?t.value=e:this.session_storage.add({[this.index]:t.value})}this.store.set(this.index++,t)},update:function(t,e){!(void 0).SSR&&(void 0).DEV&&this.session_storage.add({[t]:e})}};function pt(){var t;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:rt,__HYDRATION__:it,__State__:ut,__Config__:nt,__CACHE__:ot},t=__Ziko__,Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}))}pt();class mt extends et{constructor(){super()}init(t,e,s,r){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof t)switch(s){case"html":t=globalThis?.document?.createElement(t);break;case"svg":t=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg",t);break;default:throw Error("Not supported")}else this.target=t?.parentElement;Object.assign(this.cache,{name:e,isInteractive:!1,parent:null,isBody:!1,isRoot:!1,isHidden:!1,isFrozzen:!1,legacyParent:null,attributes:{},filters:{},temp:{}}),this.events={ptr:null,mouse:null,wheel:null,key:null,drag:null,drop:null,click:null,clipboard:null,focus:null,swipe:null,custom:null},this.observer={resize:null,intersection:null},t&&Object.assign(this.cache,{element:t}),this.items=new st,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],t&&r&&this?.render?.(),globalThis.__Ziko__.__UI__.push(this)}get element(){return this.cache.element}[Symbol.iterator](){return this.items[Symbol.iterator]()}maintain(){for(let t=0;t<this.items.length;t++)Object.defineProperty(this,t,{value:this.items[t],writable:!0,configurable:!0,enumerable:!1})}isInteractive(){return this.cache.isInteractive}isUIElement(){return!0}}function ft(t,...e){e.forEach((e=>function(t,e){const s=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(s)){const r=s[e];"get"in r||"set"in r||"function"!=typeof r.value?Object.defineProperty(Object.getPrototypeOf(t),e,r):"function"==typeof r.value&&(Object.getPrototypeOf(t).hasOwnProperty(e)||Object.defineProperty(Object.getPrototypeOf(t),e,r))}}(t,e)))}var dt=Object.freeze({__proto__:null,mount:function(t=this.target,e=0){return e>0?(setTimeout((()=>this.mount(t,0)),e),this):(this.isBody||(t?.isUIElement&&(t=t.element),this.target=t,this.target?.appendChild(this.element)),this)},unmount:function(t=0){return t>0?(setTimeout((()=>this.unmount(0)),t),this):(this.cache.parent?this.cache.parent.remove(this):this.target?.children?.length&&[...this.target.children].includes(this.element)&&this.target.removeChild(this.element),this)}});function gt(t){const{store:e,index:s}=__Ziko__.__State__;__Ziko__.__State__.register({value:t,subscribers:new Set,paused:!1});let r=e.get(s);return[function(){return{value:r.value,isStateGetter:()=>!0,_subscribe:t=>r.subscribers.add(t)}},function(t){r.paused||("function"==typeof t&&(t=t(r.value)),t!==r.value&&(r.value=t,r.subscribers.forEach((t=>t(r.value))),__Ziko__.__State__.update(s,t)))},{pause:()=>{r.paused=!0},resume:()=>{r.paused=!1},clear:()=>{r.subscribers.clear()},force:t=>{"function"==typeof t&&(t=t(r.value)),r.value=t,r.subscribers.forEach((t=>t(r.value)))},getSubscribers:()=>new Set(r.subscribers)}]}globalThis.__Ziko__||pt();const bt=t=>"function"==typeof t&&t?.()?.isStateGetter?.(),wt=(t="")=>t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase())),yt=(t="")=>{if(0===t.length)return!1;return/^[a-z][a-zA-Z0-9]*$/.test(t)};class _t extends et{constructor(...t){super("span","text",!1,...t),this.element=globalThis?.document?.createTextNode(...t)}isText(){return!0}}const vt=(...t)=>new _t(...t);async function xt(t,e,...s){if(this.cache.isFrozzen)return console.warn("You can't append new item to frozzen element"),this;for(let r=0;r<s.length;r++){if(["number","string"].includes(typeof s[r])&&(s[r]=vt(s[r])),s[r]instanceof Function){const t=s[r]();t.isStateGetter&&(s[r]=vt(t.value),t._subscribe((t=>s[r].element.textContent=t),s[r]))}if("function"==typeof globalThis?.Node&&s[r]instanceof globalThis?.Node&&(s[r]=new this.constructor(s[r])),s[r]?.isZikoUINode)s[r].cache.parent=this,this.element?.[t](s[r].element),s[r].target=this.element,this.items[e](s[r]);else if(s[r]instanceof Promise){const n=await s[r];n.cache.parent=this,this.element?.[t](n.element),n.target=this.element,this.items[e](n)}else s[r]instanceof Object&&(s[r]?.style&&this.style(s[r]?.style),s[r]?.attr&&Object.entries(s[r].attr).forEach((t=>this.setAttr(""+t[0],t[1]))))}return this.maintain(),this}function Mt(t,e){if(globalThis.SVGAElement&&this.element instanceof globalThis.SVGAElement&&(t=yt(t)?wt(t):t),!this?.attr[t]||this?.attr[t]!==e){if(bt(e)){e()._subscribe((e=>this.element?.setAttribute(t,e)),this)}else this.element?.setAttribute(t,e);Object.assign(this.cache.attributes,{[t]:e})}}var Et=Object.freeze({__proto__:null,getAttr:function(t){return t=is_camelcase(t)?camel2hyphencase(t):t,this.element.attributes[t].value},removeAttr:function(...t){for(let e=0;e<t.length;e++)this.element?.removeAttribute(t[e]);return this},setAttr:function(t,e){if(t instanceof Object){const[s,r]=[Object.keys(t),Object.values(t)];for(let t=0;t<s.length;t++)r[t]instanceof Array&&(e[t]=r[t].join(" ")),Mt.call(this,s[t],r[t])}else e instanceof Array&&(e=e.join(" ")),Mt.call(this,t,e);return this},setContentEditable:function(t=!0){return this.setAttr("contenteditable",t),this}});var kt=Object.freeze({__proto__:null,after:function(t){return t?.isUIElement&&(t=t.element),this.element?.after(t),this},append:function(...t){return xt.call(this,"append","push",...t),this},before:function(t){return t?.isUIElement&&(t=t.element),this.element?.before(t),this},clear:function(){return this?.items?.forEach((t=>t.unmount())),this.element.innerHTML="",this},insertAt:function(t,...e){if(t>=this.element.children.length)this.append(...e);else for(let s=0;s<e.length;s++)["number","string"].includes(typeof e[s])&&(e[s]=vt(e[s])),this.element?.insertBefore(e[s].element,this.items[t].element),this.items.splice(t,0,e[s]);return this},prepend:function(...t){return this.__addItem__.call(this,"prepend","unshift",...t),this},remove:function(...t){const e=t=>{"number"==typeof t&&(t=this.items[t]),t?.isUIElement&&this.element?.removeChild(t.element),this.items=this.items.filter((e=>e!==t))};for(let s=0;s<t.length;s++)e(t[s]);for(let t=0;t<this.items.length;t++)Object.assign(this,{[[t]]:this.items[t]});return this},replaceElementWith:function(t){return this.cache.element.replaceWith(t),this.cache.element=t,this}});const Ct={Click:["Click","DblClick","ClickAway"],Ptr:["PtrMove","PtrDown","PtrUp","PtrLeave","PtrEnter","PtrOut","PtrCancel"],Mouse:["MouseMove","MouseDown","MouseUp","MouseEnter","MouseLeave","MouseOut"],Key:["KeyDown","KeyPress","KeyUp"],Clipboard:["Copy","Cut","Paste"],Focus:["focus","blur"],Drag:["Drag","DragStart","DragEnd","Drop"],Wheel:["Wheel"],View:["EnterView","ExitView","ResizeView"],Swipe:["SwipeLeft","SwipeUp","SwipeRight","SwipeDown"]};function Tt(t,e,s,r){this.cache.currentEvent=e,this.cache.event=t,s?.call(this),r?.hasOwnProperty("prototype")?r?.call(this):r?.call(null,this),this.cache.preventDefault[e]&&t.preventDefault(),this.cache.stopPropagation[e]&&t.stopPropagation(),this.cache.stopImmediatePropagation[e]&&t.stopImmediatePropagation(),this.cache.callbacks[e]?.(this)}function St(t,...e){return(0===e.length?Object.keys(this.cache.paused):e).forEach((e=>{this.cache.paused.hasOwnProperty(e)&&(this.targetElement?.[t](e,this.cache.__controllers__[e],this.cache.options[e]),this.cache.paused[e]="removeEventListener"===t)})),this}const Ot=(t="")=>t.startsWith("Ptr")?`pointer${t.split("Ptr")[1].toLowerCase()}`:t.toLowerCase();class At{constructor(t,e=null,s=[],r,n){this.target=e,this.cache={signature:t,currentEvent:null,event:null,options:{},preventDefault:{},stopPropagation:{},stopImmediatePropagation:{},paused:{},callbacks:{},__controllers__:{}},s&&this._register_events(s,r,n)}_register_events(t,e,s,r=!0){const n=t?.map((t=>Ot(t)));return n?.forEach(((n,i)=>{this.cache.preventDefault[n]=!1,this.cache.options[n]={},this.cache.paused[n]=!1,this.cache.__controllers__[n]=t=>Tt.call(this,t,n,e,s),r&&(this[`on${t[i]}`]=t=>this.__onEvent(n,this.cache.options[n],{},t))})),this}__onEvent(t,e,s,r){return r?(this.cache.callbacks[t]=r,this.__handle(t,this.cache.__controllers__[t],e,s),this):this}get targetElement(){return this.target?.element}get isParent(){return this.target?.element===this.event?.srcElement}get item(){return this.target.find((t=>t.element==this.event?.srcElement))?.[0]}get currentEvent(){return this.cache.currentEvent}get event(){return this.cache.event}get detail(){return this.cache.event.detail}setTarget(t){return this.target=t,this}__handle(t,e,s){return this.targetElement?.addEventListener(t,e,s),this}#c(t,...e){return(0===e.length?Object.keys(this.cache[t]):e).forEach((e=>{this.cache[t].hasOwnProperty(e)&&(this.cache[t][e]=!0)})),this}preventDefault(...t){return this.#c("preventDefault",...t)}stopPropagation(...t){return this.#c("stopPropagation",...t)}stopImmediatePropagation(...t){return this.#c("stopImmediatePropagation",...t)}setEventOptions(t,e){const s=Ot(t);return this.pause(),Object.assign(this.cache.options[s],e),this.resume(),this}pause(...t){return St.call(this,"removeEventListener",...t)}resume(...t){return St.call(this,"addEventListener",...t)}dispose(){return this.pause(),this.target.events[this.cache.signature]=null,this}}function jt(){switch(this.currentEvent){case"keydown":this.kd=this.event.key;break;case"keypress":this.kp=this.event.key;break;case"keyup":this.ku=this.event.key}}function Pt(){const t=this.targetElement.getBoundingClientRect(),e=this.event;let s=e.clientX-t.left|0,r=e.clientY-t.top|0;if(this.cache.useNormalisedCoordinates){const t=this.targetElement.clientWidth,e=this.targetElement.clientHeight;s=+(s/t*2-1).toFixed(8),r=+(r/e*-2+1).toFixed(8)}switch(this.currentEvent){case"pointerdown":this.dx=s,this.dy=r,this.isDown=!0;break;case"pointermove":this.mx=s,this.my=r,this.isMoving=!0;break;case"pointerup":this.ux=s,this.uy=r,this.isDown=!1,this.isMoving=!1}}function It(){const t=this.targetElement.getBoundingClientRect(),e=this.event;let s=e.clientX-t.left|0,r=e.clientY-t.top|0;if(this.cache.useNormalisedCoordinates){const t=this.targetElement.clientWidth,e=this.targetElement.clientHeight;s=+(s/t*2-1).toFixed(8),r=+(r/e*-2+1).toFixed(8)}switch(this.currentEvent){case"mousedown":this.dx=s,this.dy=r,this.isDown=!0;break;case"mousemove":this.mx=s,this.my=r,this.isMoving=!0;break;case"mouserup":this.ux=s,this.uy=r,this.isDown=!1,this.isMoving=!1}}function Rt(){const t=this.event,e=t.touches?.[0]||t.changedTouches?.[0];if(!e)return;const s=this.targetElement.getBoundingClientRect();let r=e.clientX-s.left,n=e.clientY-s.top;if(this.cache.useNormalisedCoordinates){const t=this.targetElement.clientWidth,e=this.targetElement.clientHeight;r=+(r/t*2-1).toFixed(8),n=+(n/e*-2+1).toFixed(8)}switch(this.currentEvent){case"touchstart":this.dx=r,this.dy=n,this.isDown=!0;break;case"touchmove":this.mx=r,this.my=n,this.isMoving=!0;break;case"touchend":this.ux=r,this.uy=n,this.isDown=!1}}class Ft extends At{constructor(t,e=null,s=[],r,n){super(t,e,s,r,n),Object.assign(this.cache,{useNormalisedCoordinates:!1}),this.isDown=!1,this.isMoving=!1,this.dx=0,this.dy=0,this.mx=0,this.my=0,this.ux=0,this.uy=0}get isDragging(){return this.isDown&&this.isMoving}useNormalisedCoordinates(t=!0){return this.cache.useNormalisedCoordinates=t,this}}class zt extends Event{constructor(t,e){super("clickaway",{bubbles:!0,cancelable:!0}),this.originalEvent=t,this.targetElement=e}}const $t=(t,e)=>{let s=0;return(...r)=>{const n=(new Date).getTime();n-s<e||(s=n,t(...r))}};class Dt extends CustomEvent{constructor(t,e,{bubbles:s=!0,cancelable:r=!0}={}){super(t,{detail:e,bubbles:s,cancelable:r})}}class Lt extends CustomEvent{constructor(t,e){super(t,{detail:e,bubbles:!0,cancelable:!0})}}const Nt=(t,e)=>(function(t){function e(e){if(!t.contains(e.target)){const s=new zt(e,t);t.dispatchEvent(s)}}console.log(t),globalThis?.document?.addEventListener("click",e)}(t.element),new At("click",t,Ct.Click,null,e)),Ut=(t,e)=>new At("clipboard",t,Ct.Clipboard,null,e),qt=(t,e)=>new At("drag",t,Ct.Drag,null,e),Zt=(t,e)=>new At("focus",t,Ct.Focus,null,e),Bt=(t,e)=>new At("key",t,Ct.Key,jt,e),Ht=(t,e)=>new Ft("mouse",t,Ct.Mouse,It,e),Vt=(t,e)=>new Ft("ptr",t,Ct.Ptr,Pt,e),Wt=(t,e)=>new At("wheel",t,Ct.Wheel,null,e),Gt=(t,e)=>(function(t,{intersection:e=!0,resize:s=!0,threshold:r=0,throttleResize:n=100,throttleEnterExit:i=0}={}){let o,a;const h=e=>{for(let s of e){const{width:e,height:r}=s.contentRect;t.dispatchEvent(new Dt("resizeview",{width:e,height:r,entry:s}))}},c=n>0?$t(h,n):h,l=e=>{for(let s of e){const e=s.isIntersecting?"enterview":"exitview";t.dispatchEvent(new Dt(e,s))}},u=i>0?$t(l,i):l;e&&(o=new IntersectionObserver(u,{threshold:r}),o.observe(t)),s&&(a=new ResizeObserver(c),a.observe(t))}(t.element),new At("view",t,Ct.View,null,e)),Kt=(t,e)=>(function(t,e=50,s=100,r=500){let n=0,i=0,o=0,a=!1;function h(t){n=t.clientX,i=t.clientY,o=performance.now(),a=!0}function c(h){if(!a)return;a=!1;const c=h.clientX-n,l=h.clientY-i;let u=null,p=null;performance.now()-o<=r&&(Math.abs(c)>=e&&Math.abs(l)<=s?(u=c<0?"left":"right",p="swipe"+u):Math.abs(l)>=e&&Math.abs(c)<=s&&(u=l<0?"up":"down",p="swipe"+u)),p&&t.dispatchEvent(new Lt(p,{direction:u,distX:c,distY:l,originalEvent:h}))}t.addEventListener("pointerdown",h,{passive:!0}),t.addEventListener("pointerup",c,{passive:!0})}(t.element),new At("swipe",t,Ct.Swipe,null,e));class Jt extends At{constructor(t,e,s){super("custom",t,e,Yt,s)}_register_events(t){return super._register_events(t,null,null,!1),this}emit(t,e={}){const s=new CustomEvent(t,{detail:e,bubbles:!0,cancelable:!0});return this.targetElement.dispatchEvent(s),this}on(t,...e){return this.cache.options.hasOwnProperty(t)||this._register_events([t]),this.__onEvent(t,this.cache.options[t],{},...e),this}}function Yt(){}const Xt=(t,e,s)=>new Jt(t,e,s),Qt={ptr:Vt,mouse:Ht,key:Bt,click:Nt,drag:qt,clipboard:Ut,focus:Zt,wheel:Wt,view:Gt,swipe:Kt},te={on(t,...e){return this.events.custom||(this.events.custom=Xt(this)),this.events.custom.on(t,...e),this},emit(t,e={}){return this.events.custom||(this.events.custom=Xt(this)),this.events.custom.emit(t,e),this}};Object.entries(Ct).forEach((([t,e])=>{const s=t.toLowerCase();e.forEach((t=>{const e=`on${t}`;te[e]=function(t){return this.events[s]||(this.events[s]=Qt[s](this)),this.events[s][e](t),this}}))}));var ee=Object.freeze({__proto__:null,at:function(t){return this.items.at(t)},find:function(t){return this.items.filter(t)},forEach:function(t){return this.items.forEach(t),this},map:function(t){return this.items.map(t)}});var se=Object.freeze({__proto__:null,animate:function(t,{duration:e=1e3,iterations:s=1,easing:r="ease"}={}){return this.element?.animate(t,{duration:e,iterations:s,easing:r}),this},hide:function(){},show:function(){},size:function(t,e){return this.style({width:t,height:e})},style:function(t){if(!this.element?.style)return this;for(let e in t){const s=t[e];if(bt(s)){const t=s();Object.assign(this.element.style,{[e]:t.value}),t._subscribe((t=>{console.log({newValue:t}),Object.assign(this.element.style,{[e]:t})}))}else Object.assign(this.element.style,{[e]:s})}return this}});let re=class extends mt{constructor({element:t,name:e="",type:s="html",render:r=__Ziko__.__Config__.default.render}={}){super(),ft(this,dt,Et,kt,se,ee,te),t&&this.init(t,e,s,r)}get element(){return this.cache.element}isInteractive(){return this.cache.isInteractive}useClient(t){return this.cache.isInteractive||(this.element.setAttribute("data-hydration-index",globalThis.__Ziko__.__HYDRATION__.index),globalThis.__Ziko__.__HYDRATION__.register((()=>this)),this.cache.isInteractive=!0),t&&this.element.setAttribute("data-hydration-directive",t),this}get st(){return this.cache.style}get attr(){return this.cache.attributes}get evt(){return this.events}get html(){return this.element.innerHTML}get text(){return this.element.textContent}get isBody(){return this.element===globalThis?.document.body}get parent(){return this.cache.parent}get width(){return this.element.getBoundingClientRect().width}get height(){return this.element.getBoundingClientRect().height}get top(){return this.element.getBoundingClientRect().top}get right(){return this.element.getBoundingClientRect().right}get bottom(){return this.element.getBoundingClientRect().bottom}get left(){return this.element.getBoundingClientRect().left}};class ne extends re{constructor(...t){super({element:"div",name:"view"}),this.append(...t)}}const ie=["a","abb","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","i","iframe","img","ipnut","ins","kbd","label","legend","li","main","map","mark","menu","meter","nav","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","small","source","span","strong","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"],oe=["svg","g","defs","symbol","use","image","switch","rect","circle","ellipse","line","polyline","polygon","path","text","tspan","textPath","altGlyph","altGlyphDef","altGlyphItem","glyph","glyphRef","linearGradient","radialGradient","pattern","solidColor","filter","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDropShadow","feFlood","feFuncA","feFuncR","feFuncG","feFuncB","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","animate","animateMotion","animateTransform","set","script","desc","title","metadata","foreignObject"],ae=new Proxy({},{get(t,e){if("string"!=typeof e)return;let s,r=e.replaceAll("_","-").toLowerCase();return ie.includes(r)&&(s="html"),oe.includes(r)&&(s="svg"),(...t)=>0===t.length?new re({element:r,name:r,type:s}):["string","number"].includes(typeof t[0])||t[0]instanceof re||"function"==typeof t[0]&&t[0]().isStateGetter()?new re({element:r,name:r,type:s}).append(...t):new re({element:r,type:s}).setAttr(t.shift()).append(...t)}});class he extends re{constructor(t="div",e="100%",s="100%"){super({element:t,name:"Flex"}),this.direction="cols","number"==typeof e&&(e+="%"),"number"==typeof s&&(s+="%"),this.style({width:e,height:s}),this.style({display:"flex"})}get isFlex(){return!0}resp(t,e=!0){return this.wrap(e),this.element.clientWidth<t?this.vertical():this.horizontal(),this}setSpaceAround(){return this.style({justifyContent:"space-around"}),this}setSpaceBetween(){return this.style({justifyContent:"space-between"}),this}setBaseline(){return this.style({alignItems:"baseline"}),this}gap(t){return"row"===this.direction?this.style({columnGap:t}):"column"===this.direction&&this.style({rowGap:t}),this}wrap(t="wrap"){return this.style({flexWrap:"string"==typeof t?t:["no-wrap","wrap","wrap-reverse"][+t]}),this}_justifyContent(t="center"){return this.style({justifyContent:t}),this}vertical(t,e,s=1){return ce.call(this,s),this.style({alignItems:"number"==typeof t?ue.call(this,t):t,justifyContent:"number"==typeof e?pe.call(this,e):e}),this}horizontal(t,e,s=1){return le.call(this,s),this.style({alignItems:"number"==typeof e?pe.call(this,e):e,justifyContent:"number"==typeof t?ue.call(this,t):t}),this}show(){return this.isHidden=!1,this.style({display:"flex"}),this}}function ce(t){return 1==t?this.style({flexDirection:"column"}):-1==t&&this.style({flexDirection:"column-reverse"}),this}function le(t){return 1==t?this.style({flexDirection:"row"}):-1==t&&this.style({flexDirection:"row-reverse"}),this}function ue(t){return"number"==typeof t&&(t=["flex-start","center","flex-end"][t+1]),t}function pe(t){return ue(-t)}class me extends mt{constructor({element:t,name:e,type:s,render:r}){super({element:t,name:e,type:s,render:r})}}class fe extends me{constructor(t,e){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=t,this.append(t),(async()=>{try{const s=await e();t.unmount(),this.append(s)}catch(t){console.log({error:t})}})()}}class de extends re{constructor(t){super({element:"div",name:"html_wrappper"}),this.element.append(function(t){if(globalThis?.DOMParser){const e=(new DOMParser).parseFromString(`<div>${t}</div>`,"text/html");return e.body.firstChild.style.display="contents",e.body.firstChild}}(t)),this.style({display:"contents"})}}class ge extends re{constructor(t){super({element:"div",name:"html_wrappper"}),this.element.append(function(t){if("undefined"!=typeof DOMParser){const e=(new DOMParser).parseFromString(t.trim(),"image/svg+xml").documentElement;if("parsererror"===e.nodeName)throw new Error("Invalid SVG string");if(e.hasAttribute("xmlns"))return e;const{children:s,attributes:r}=e,n=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:t,value:e}of r)n.setAttribute(t,e);return n.append(...s),globalThis.svg=e,globalThis.children=s,globalThis.attributes=r,globalThis.element=n,n}throw new Error("DOMParser is not available in this environment")}(t)),this.style({display:"contents"})}}class be extends re{constructor(t,e){super(),this.key=t,this.cases=e,this.init()}init(){Object.values(this.cases).filter((t=>t!=this.current)).forEach((t=>t.unmount())),super.init(this.current.element)}get current(){const t=Object.keys(this.cases).find((t=>t==this.key))??"default";return this.cases[t]}updateKey(t){return this.key=t,this.replaceElementWith(this.current.element),this}}const{PI:we,sqrt:ye,cos:_e,sin:ve,acos:xe,pow:Me}=Math,Ee=t=>t,ke=(t,e=7.5625,s=2.75)=>t<1/s?e*t*t:t<2/s?e*(t-=1.5/s)*t+.75:t<2.5/s?e*(t-=2.25/s)*t+.9375:e*(t-=2.625/s)*t+.984375;class Ce{constructor(t,{ease:e=Ee,step:s=50,t0:r=0,start:n=!0,duration:i=3e3}={}){this.callback=t,this.state={isRunning:!1,animationId:null,startTime:null,ease:e,step:s,autoStart:n,duration:i},this.t=0,this.tx=0,this.ty=0,this.i=0,this.state.autoStart&&this.start()}#l=()=>{this.t+=this.state.step,this.i++,this.tx=A(this.t,0,this.state.duration,0,1),this.ty=this.state.ease(this.tx),this.callback(this),this.t>=this.state.duration&&(clearInterval(this.state.animationId),this.state.isRunning=!1)};#u(t=!0){return this.state.isRunning||(t&&this.reset(!1),this.state.isRunning=!0,this.state.startTime=Date.now(),this.state.animationId=setInterval(this.#l,this.state.step)),this}start(){return this.#u(!0)}pause(){return this.state.isRunning&&(clearInterval(this.state.animationId),this.state.isRunning=!1),this}resume(){return this.#u(!1)}stop(){return this.pause(),this.reset(!1),this}reset(t=!0){return this.t=0,this.tx=0,this.ty=0,this.i=0,t&&this.start(),this}}class Te{constructor(t,e,s=1/0,r){this.ms=e,this.fn=t,this.count=s,this.frame=1,this.id=null,this.running=!1,r&&this.start()}start(){return this.running||(this.running=!0,this.frame=1,this.id=setInterval((()=>{this.frame>this.count?this.stop():(this.fn.call(null,this),this.frame++)}),this.ms)),this}stop(){return this.running&&(this.running=!1,clearInterval(this.id),this.id=null),this}isRunning(){return this.running}}class Se extends Te{constructor(t=1e3/60){super(t,(()=>this._tick())),this.elapsed=0,this._lastTime=performance.now(),this._callbacks=new Set}_tick(){const t=performance.now(),e=t-this._lastTime;this.elapsed+=e,this._lastTime=t;for(const t of this._callbacks)t({elapsed:this.elapsed,delta:e})}onTick(t){return this._callbacks.add(t),()=>this._callbacks.delete(t)}reset(){this.elapsed=0,this._lastTime=performance.now()}pause(){super.stop()}resume(){this._lastTime=performance.now(),super.start()}}class Oe{constructor(t=[],{repeat:e=1,loop:s=!1}={}){this.tasks=t,this.repeat=e,this.loop=s,this.stopped=!1,this.running=!1,this.onStart=null,this.onTask=null,this.onEnd=null}async run(){if(this.running)return;this.running=!0,this.stopped=!1,this.onStart&&this.onStart();let t=this.repeat;do{for(const t of this.tasks){if(this.stopped)return;if(Array.isArray(t))await Promise.all(t.map((({fn:t,delay:e=0})=>new Promise((async s=>{e>0&&await new Promise((t=>setTimeout(t,e))),this.onTask&&this.onTask(t),await t(),s()})))));else{const{fn:e,delay:s=0}=t;s>0&&await new Promise((t=>setTimeout(t,s))),this.onTask&&this.onTask(e),await e()}}}while(this.loop&&!this.stopped&&(t===1/0||t-- >1));!this.stopped&&this.onEnd&&this.onEnd(),this.running=!1}stop(){this.stopped=!0,this.running=!1}addTask(t){this.tasks.push(t)}clearTasks(){this.tasks=[]}}class Ae{constructor(t,{step:e=1e3,t0:s=0,t1:r=1/0,autoplay:n=!0}={}){this.callback=t,this.cache={isRunning:!1,id:null,last_tick:null,step:e,t0:s,t1:r,autoplay:n,pauseTime:null,frame:0},n&&(s?this.startAfter(s):this.start(),r!==1/0&&this.stopAfter(r))}get frame(){return this.cache.frame}get elapsed(){return this.cache.elapsed}start(){return this.cache.isRunning||(this.cache.frame=0,this.cache.isRunning=!0,this.cache.last_tick=Date.now(),this.animate()),this}pause(){return this.cache.isRunning&&(clearTimeout(this.cache.id),this.cache.isRunning=!1,this.cache.pauseTime=Date.now()),this}resume(){if(!this.cache.isRunning){if(this.cache.isRunning=!0,this.cache.pauseTime){const t=Date.now()-this.cache.pauseTime;this.cache.last_tick+=t}this.animate()}return this}stop(){return this.pause(),this.cache.frame=0,this}startAfter(t=1e3){return setTimeout((()=>this.start()),t),this}stopAfter(t=1e3){return setTimeout((()=>this.stop()),t),this}animate=()=>{if(this.cache.isRunning){const t=Date.now(),e=t-this.cache.last_tick;e>=this.cache.step&&(this.cache.elapsed=t-(this.cache.t0||0),this.callback(this),this.cache.frame++,this.cache.last_tick=t-e%this.cache.step),this.cache.id=setTimeout(this.animate,0)}}}const je=t=>{const e=new XMLHttpRequest;if(e.open("GET",t,!1),e.send(),200===e.status)return e.responseText;throw new Error(`Failed to fetch data from ${t}. Status: ${e.status}`)};globalThis.fetchdom=async function(t="https://github.com/zakarialaoui10"){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const s=await e.text();return(new DOMParser).parseFromString(s,"text/html").documentElement}catch(t){throw console.error("Failed to fetch DOM:",t),t}},globalThis.fetchdomSync=function(t="https://github.com/zakarialaoui10"){try{const e=je(t);return(new DOMParser).parseFromString(e,"text/html").documentElement}catch(t){throw console.error("Failed to fetch DOM synchronously:",t),t}};const Pe=(t,e=",")=>t.trim().trimEnd().split("\n").map((t=>t.split(e))),Ie=(t,e=",")=>{const[s,...r]=Pe(t,e);return r.map((t=>{const e={};return s.forEach(((s,r)=>{e[s]=t[r]})),e}))},Re=t=>t instanceof Array?[Object.keys(t[0]),...t.map((t=>Object.values(t)))]:[Object.keys(t)],Fe=(t,e)=>Re(t).map((t=>t.join(e))).join("\n"),ze=(t,e=",")=>Fe(t instanceof Object?t:JSON.parse(t),e),$e=(t,e)=>{const s=[];if(Array.isArray(t))t.forEach((t=>{if("object"==typeof t&&null!==t){s.push(`${e}-`);const r=$e(t,`${e}  `);s.push(...r)}else s.push(`${e}- ${t}`)}));else for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];if("object"==typeof n&&null!==n){s.push(`${e}${r}:`);const t=$e(n,`${e}  `);s.push(...t)}else s.push(`${e}${r}: ${n}`)}return s},De=(t,e="")=>$e(t,e).join("\n"),Le=(t,e)=>De(t instanceof Object?t:JSON.parse(t),e),Ne=(t,e=1)=>{let s="";for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];s+="\n"+" ".repeat(e)+`<${r}>`,s+="object"==typeof n?Ne(n,e+2):`${n}`,s+=`</${r}>`}return s.trim()},Ue=t=>(new XMLSerializer).serializeToString(t),qe=t=>btoa(Ue(t)),Ze=t=>"data:image/svg+xml;base64,"+qe(t),Be=t=>JSON.stringify(n((t=>["number","string","boolean","bigint"].includes(typeof t)?String(t):t instanceof y||t instanceof U?t.toString():t instanceof Array?Ve(t):void 0),t),null,"  ").replace(/"([^"]+)":/g,"$1:").replace(/: "([^"]+)"/g,": $1"),He=t=>{if(!Array.isArray(t))return 0;let e=1;for(const s of t)if(Array.isArray(s)){const t=He(s);t+1>e&&(e=t+1)}return e},Ve=t=>{let e=0;return function t(s){let r=He(s),n=0;return s.some((t=>Array.isArray(t)))&&(e++,n=1),"["+s.map(((r,n)=>["number","string","boolean","bigint"].includes(typeof r)?String(r):r instanceof y?r.toString():r instanceof Array?`\n${"  ".repeat(e)}${t(r)}${n===s.length-1?"\n":""}`:r instanceof Object?Be(r):void 0))+`${"  ".repeat((r+e+1)*n)}]`}(t)},We=(t,e=0)=>{t=Ge(t);let s="";const r="  ".repeat(e);for(let n in t)if("object"==typeof t[n]){s+=`${r}${n} {\n`;const i=t[n];for(let t in i)"object"==typeof i[t]?s+=We({[t]:i[t]},e+1):s+=`${r}  ${t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))}: ${i[t]};\n`;s+=`${r}}\n`}return s};function Ge(t){return"object"!=typeof t||null===t?t:Object.keys(t).reduce(((e,s)=>(e[s.trim()]=Ge(t[s]),e)),Array.isArray(t)?[]:{})}class Ke{constructor({head:t=null,wrapper:e=null,target:s=null}){this.head=t,this.wrapper=e,this.target=s,this.init()}get isZikoApp(){return!0}init(){this.head&&this.setHead(this.head),this.wrapper&&this.setWrapper(this.wrapper),this.target&&this.setTarget(this.target),this.wrapper&&this.target&&this.wrapper.mount(this.target)}setTarget(t){return t instanceof HTMLElement?this.target=t:"string"==typeof t&&(this.target=globalThis?.document?.querySelector(t)),this}setWrapper(t){return t?.isUIElement?this.wrapper=t:"function"==typeof t&&(this.wrapper=t()),this}}function Je(t){return/:\w+/.test(t)}class Ye extends Ke{constructor({head:t,wrapper:e,target:s,routes:r}){super({head:t,wrapper:e,target:s}),this.routes=new Map([["404",vt("Error 404")],...Object.entries(r)]),this.clear(),globalThis.onpopstate=this.mount(location.pathname)}clear(){return[...this.routes].forEach((t=>{!Je(t[0])&&t[1]?.isUIElement&&t[1].unmount()})),this}mount(t){const[e,s]=[...this.routes].find((e=>function(t,e){const s=t.split("/"),r=e.split("/");if(s.length!==r.length)return!1;for(let t=0;t<s.length;t++){const e=s[t],n=r[t];if(!e.startsWith(":")&&e!==n)return!1}return!0}(e[0],t)));let r;if(Je(e)){const n=function(t,e){const s=t.split("/"),r=e.split("/"),n={};if(s.length!==r.length)return n;for(let t=0;t<s.length;t++){const e=s[t],i=r[t];if(e.startsWith(":"))n[e.slice(1)]=i;else if(e!==i)return{}}return n}(e,t);r=s.call(this,n)}else s?.isUIElement&&s.mount(this.wrapper),"function"==typeof s&&(r=s());return r?.isUIElement&&r.mount(this.wrapper),r instanceof Promise&&r.then((t=>t.mount(this.wrapper))),globalThis.history.pushState({},"",t),this}}const Xe=({head:t,wrapper:e,target:s,routes:r})=>new Ye({head:t,wrapper:e,target:s,routes:r});function Qe(t,e="./src/pages",s=["js","ts"]){"/"===e.at(-1)&&(e=e.slice(0,-1));const r=t.replace(/\\/g,"/").replace(/\[(\w+)\]/g,"$1/:$1").split("/"),n=e.split("/"),i=r.indexOf(n.at(-1));if(-1!==i){const t=r.slice(i+1),e=r.at(-1),n="index.js"===e||"index.ts"===e,o=s.some((t=>e===`.${t}`||e.endsWith(`.${t}`)));if(n)return"/"+(t.length>1?t.slice(0,-1).join("/"):"");if(o)return"/"+t.join("/").replace(/\.(js|ts)$/,"")}return""}class ts{#p;#m=new Map;#f=0;constructor(){const t=new Blob(['\n            this.onmessage = function(e) {\n                const { id, funStr, args, close } = e.data;\n                try {\n                    const func = new Function("return " + funStr)();\n                    const result = func(...args);\n                    postMessage({ id, result });\n                } catch (error) {\n                    postMessage({ id, error: error.message });\n                } finally {\n                    if (close) self.close();\n                }\n            }\n        '],{type:"text/javascript"});this.#p=new Worker(URL.createObjectURL(t)),this.#p.addEventListener("message",(t=>{const{id:e,result:s,error:r}=t.data,n=this.#m.get(e);n&&(n(s,r),this.#m.delete(e))}))}call(t,e,s=[],r=!0){if("function"!=typeof t)throw new TypeError("func must be a function");const n=++this.#f;return this.#m.set(n,e),this.#p.postMessage({id:n,funStr:t.toString(),args:s,close:r}),this}terminate(){this.#p.terminate()}}class es{constructor(t=10){this.events={},this.maxListeners=t}on(t,e){return this.events[t]||(this.events[t]=[]),this.events[t].push(e),this.events[t].length>this.maxListeners&&console.warn(`Warning: Possible memory leak. Event '${t}' has more than ${this.maxListeners} listeners.`),this}once(t,e){const s=(...r)=>{this.off(t,s),e(...r)};return this.on(t,s)}off(t,e){const s=this.events[t];if(!s)return this;const r=s.indexOf(e);return-1!==r&&s.splice(r,1),this}emit(t,e){const s=this.events[t];return!!s&&([...s].forEach((s=>{try{s(e)}catch(e){console.error(`Error in listener for '${t}':`,e)}})),!0)}remove(t){return delete this.events[t],this}clear(){return this.events={},this}setMaxListeners(t){return this.maxListeners=t,this}}const ss=t=>new es(t);class rs{#d;#g;#b=null;constructor(t=[],e=(()=>{})){this.#d=t,this.#g=e,this.#a()}#w(){return this.#d.some((({query:t})=>globalThis.matchMedia(t).matches))}#a(){this.#d.forEach((({query:t,callback:e})=>{const s=globalThis.matchMedia(t),r=()=>{const t=this.#w();s.matches?(e(),this.#b=e):t||this.#b===this.#g||(this.#g(),this.#b=this.#g)};r(),s.addEventListener("change",r)}))}}class ns{constructor(t=document.title,e=!0){this.cache={emitter:null},e&&this.useEventEmitter(),this.set(t)}useEventEmitter(){return this.cache.emitter=ss(),this}setTitle(t){return t!==document.title&&(document.title=t,this.cache.emitter&&this.cache.emitter.emit("ziko:title-changed",t)),this}get current(){return document.title}onChange(t){return this.cache.emitter&&this.cache.emitter.on("ziko:title-changed",t),this}}class is{constructor(t,{namespace:e="Ziko",ValidateCssProps:s=!1}={}){this.currentPropsMap=t,this.namespace=e,this.ValidateCssProps=s,this.use(t)}use(t){return this.ValidateCssProps&&function(t){const e=new Set(Object.keys(document.documentElement.style));for(const s in t)if(!e.has(s))throw new Error(`Invalid CSS property: "${s}"`)}(t),this.currentPropsMap=t,this.#h(),this}#h(){const t=globalThis?.document?.documentElement?.style;for(const e in this.currentPropsMap){const s=this.namespace?`--${this.namespace}-${e}`:`--${e}`;t.setProperty(s,this.currentPropsMap[e]),Object.defineProperty(this,e,{value:`var(${s})`,writable:!0,configurable:!0,enumerable:!1})}}}let{sqrt:os,cos:as,sin:hs,exp:cs,log:ls,cosh:us,sinh:ps}=Math;for(const t of Object.getOwnPropertyNames(Math)){const e=Math[t];"function"==typeof e&&(Math[t]=new Proxy(e,{apply(e,s,r){const n=r[0];if("number"==typeof n||0===r.length)return e.apply(s,r);if(n?.isComplex?.()){const{a:t,b:i,z:o,phi:a}=n,h=(t,e)=>new n.constructor(t,e);switch(e.name){case"abs":return n.z;case"sqrt":return h(os(o)*as(a/2),os(o)*hs(a/2));case"log":return h(ls(o),a);case"exp":return h(cs(t)*as(i),cs(t)*hs(i));case"cos":return h(as(t)*us(i),-hs(t)*ps(i));case"sin":return h(hs(t)*us(i),as(t)*ps(i));case"tan":{const e=as(2*t)+us(2*i);return h(hs(2*t)/e,ps(2*i)/e)}case"cosh":return h(us(t)*as(i),ps(t)*hs(i));case"sinh":return h(ps(t)*as(i),us(t)*hs(i));case"tanh":{const e=us(2*t)+as(2*i);return h(ps(2*t)/e,hs(2*i)/e)}default:return e.apply(s,r)}}throw new TypeError(`Math.${t} expects only numbers`)}}))}globalThis?.document&&document?.addEventListener("DOMContentLoaded",__Ziko__.__Config__.init()),t.App=({head:t,wrapper:e,target:s})=>new Ke({head:t,wrapper:e,target:s}),t.Clock=Se,t.Complex=y,t.E=s,t.EPSILON=r,t.FileBasedRouting=async function(t){const e=Object.keys(t),s=function(t){if(0===t.length)return"";const e=t.map((t=>t.split("/"))),s=Math.min(...e.map((t=>t.length)));let r=[];for(let t=0;t<s;t++){const s=e[0][t];if(!e.every((e=>e[t]===s||e[t].startsWith("["))))break;r.push(s)}return r.join("/")+(r.length?"/":"")}(e),r={};for(let n=0;n<e.length;n++){const i=await t[e[n]](),o=await i.default;Object.assign(r,{[Qe(e[n],s)]:o})}return Xe({target:document.body,routes:{"/":()=>{},...r},wrapper:ae.section()})},t.Flex=(...t)=>{let e="div";return"string"==typeof t[0]&&(e=t[0],t.pop()),new he(e).append(...t)},t.HTMLWrapper=t=>new de(t),t.Matrix=U,t.PI=e,t.Random=w,t.SPA=Xe,t.SVGWrapper=t=>new ge(t),t.Scheduler=(t,{repeat:e=null}={})=>new Oe(t,{repeat:e}),t.Suspense=(t,e)=>new fe(t,e),t.Switch=({key:t,cases:e})=>new be(t,e),t.Tick=Te,t.TimeAnimation=Ce,t.TimeLoop=Ae,t.TimeScheduler=Oe,t.UIElement=re,t.UIHTMLWrapper=de,t.UINode=et,t.UISVGWrapper=ge,t.UISwitch=be,t.UIView=ne,t.UseRoot=is,t.UseThread=ts,t.Utils=tt,t.View=(...t)=>new ne(...t),t.ZikoApp=Ke,t.ZikoEvent=At,t.ZikoSPA=Ye,t.ZikoUIFlex=he,t.ZikoUISuspense=fe,t.ZikoUIText=_t,t.abs=v,t.accum_prod=(...t)=>{let e,s=[],r=1,n=t.length;for(e=0;e<n;e++)r=l(r,t[e]),s.push(r);return s},t.accum_sum=d,t.acos=(...t)=>n((t=>{if(t?.isComplex){const{a:e,b:s}=t,r=Math.hypot(e+1,s),n=Math.hypot(e-1,s);return globalThis.Rp=r,globalThis.Rm=n,new t.constructor(Math.acos((r-n)/2),-Math.acosh((r+n)/2)).toFixed(8)}return+Math.acos(t).toFixed(8)}),...t),t.acosh=(...t)=>n((t=>t?.isComplex?k(t.clone().add(M(t.clone().mul(t.clone()).sub(1)))):+Math.acosh(t).toFixed(8)),...t),t.acot=(...t)=>n((t=>{if(t?.isComplex){const{a:e,b:s}=t;return new t.constructor(Math.atan(2*e/(e**2+(s-1)*(s+1)))/2,Math.log((e**2+(s-1)**2)/(e**2+(s+1)**2))/4).toFixed(8)}return+(Math.PI/2-Math.atan(t)).toFixed(8)}),...t),t.add=h,t.and=R,t.animation=(t,{ease:e,t0:s,t1:r,start:n,duration:i}={})=>new Ce(t,{ease:e,t0:s,t1:r,start:n,duration:i}),t.apply_fun=i,t.arange=H,t.arc=t=>1-ve(xe(t)),t.arr2str=Ve,t.asin=(...t)=>n((t=>{if(t?.isComplex){const{a:e,b:s}=t,r=Math.hypot(e+1,s),n=Math.hypot(e-1,s);return new t.constructor(Math.asin((r-n)/2),Math.acosh((r+n)/2)).toFixed(8)}return+Math.asin(t).toFixed(8)}),...t),t.asinh=(...t)=>n((t=>t?.isComplex?k(t.clone().add(M(t.clone().mul(t.clone()).add(1)))):+Math.asinh(t).toFixed(8)),...t),t.atan=(...t)=>n((t=>{if(t?.isComplex){const{a:e,b:s}=t;return new t.constructor(Math.atan(2*e/(1-e**2-s**2))/2,Math.log((e**2+(1+s)**2)/(e**2+(1-s)**2))/4).toFixed(8)}return+Math.atan(t).toFixed(8)}),...t),t.atan2=j,t.atanh=(...t)=>n((t=>+Math.atanh(t).toFixed(8)),...t),t.back=(t,e=1)=>t**2*((e+1)*t-e),t.bind_click_event=Nt,t.bind_clipboard_event=Ut,t.bind_drag_event=qt,t.bind_focus_event=Zt,t.bind_key_event=Bt,t.bind_mouse_event=Ht,t.bind_pointer_event=Vt,t.bind_swipe_event=Kt,t.bind_touch_event=(t,e)=>new Ft("touch",t,Ct.Touch,Rt,e),t.bind_view_event=Gt,t.bind_wheel_event=Wt,t.binomial=(t,e)=>{if(t!==Math.floor(t))return TypeError("n must be an integer");if(e!==Math.floor(e))return TypeError("k must be an integer");if(t<0)return TypeError("n must be non-negative");if(e<0||t<0||e>t)return 0;e>t-e&&(e=t-e);let s,r=1;for(s=0;s<e;s++)r=r*(t-s)/(s+1);return r},t.cartesianProduct=Y,t.cbrt=(...t)=>n((t=>t.isComplex?.()?new t.constructor({z:t.z**(1/3),phi:t.phi/3}).toFixed(8):+Math.cbrt(t).toFixed(8)),...t),t.ceil=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.ceil(t.a),Math.ceil(t.b)):Math.ceil(t)),...t),t.clamp=O,t.clock=t=>new Se(t),t.complex=_,t.cos=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.cos(t.a)*Math.cosh(t.b),-Math.sin(t.a)*Math.sinh(t.b)).toFixed(8):+Math.cos(t).toFixed(8)),...t),t.cosh=(...t)=>n((t=>t?.isComplex?new t.constructor(Math.cosh(t.a)*Math.cos(t.b),Math.sinh(t.a)*Math.sin(t.b)).toFixed(8):+Math.cosh(t).toFixed(8)),...t),t.coth=(...t)=>n((t=>{if(t?.isComplex){const{a:e,b:s}=t,r=Math.sinh(e)**2*Math.cos(s)**2+Math.cosh(e)**2*Math.sin(s)**2;return new t.constructor(Math.cosh(e)*Math.sinh(e)/r,-Math.sin(s)*Math.cos(s)/r).toFixed(8)}return+(1/Math.tanh(t)).toFixed(8)}),...t),t.croot=(...t)=>{const e=t.pop();if(!e.isComplex?.())throw Error("croot expect Complex number as root");return n((t=>{"number"==typeof t&&(t=new e.constructor(t,0));const{a:s,b:r}=e,{z:n,phi:i}=t,o=Math.hypot(s,r),a=Math.exp((Math.log(n)*s+i*r)/o),h=(i*s-Math.log(n)*r)/o;return new e.constructor(a*Math.cos(h),a*Math.sin(h)).toFixed(8)}),...t)},t.csv2arr=Pe,t.csv2json=(t,e=",")=>JSON.stringify(Ie(t,e)),t.csv2matrix=(t,e=",")=>new U(Pe(t,e)),t.csv2object=Ie,t.csv2sql=(t,e)=>{const s=t.trim().trimEnd().split("\n").filter((t=>t));let r=`INSERT INTO ${e} (${s[0].split(",").join(", ")}) Values `,n=[];for(let t=1;t<s.length;t++){const e=s[t].split(",");n.push(`(${e})`)}return r+n.join(",\n")},t.debounce=(t,e=1e3)=>(...s)=>setTimeout((()=>t(...s)),e),t.defineParamsGetter=function(t){Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}})},t.define_wc=function(t,e,s={},{mode:r="open"}={}){globalThis.customElements?.get(t)?console.warn(`Custom element "${t}" is already defined`):-1!==t.search("-")?globalThis.customElements?.define(t,class extends HTMLElement{static get observedAttributes(){return["style",...Object.keys(s)]}constructor(){super(),this.attachShadow({mode:r}),this.props={},this.mask={...s}}connectedCallback(){this.render()}render(){this.shadowRoot.innerHTML="";const t=e(this.props);t instanceof Array?t.forEach((t=>t.mount(this.shadowRoot))):t.mount(this.shadowRoot)}attributeChangedCallback(t,e,s){Object.assign(this.props,{[t]:this.mask[t].type(s)}),this.render()}}):console.warn(`"${t}" is not a valid custom element name`)},t.deg2rad=(...t)=>n((t=>t*Math.PI/180),...t),t.discret=(t,e=5)=>Math.ceil(t*e)/e,t.div=u,t.elastic=t=>-2*Me(2,10*(t-1))*_e(20*we*t/3*t),t.event_controller=Tt,t.exp=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.exp(t.a)*Math.cos(t.b),Math.exp(t.a)*Math.sin(t.b)).toFixed(8):+Math.exp(t).toFixed(8)),...t),t.floor=C,t.fract=(...t)=>n((t=>t.isComplex?.()?new t.constructor(t.a-Math.trunc(t.a),t.b-Math.trunc(t.b)):t-Math.trunc(t)),...t),t.geomspace=G,t.getEvent=Ot,t.hypot=(...t)=>{const e=t.find((t=>t.isComplex?.()));if(e){const s=t.map((t=>t.isComplex?.()?t:new e.constructor(t,0)));return Math.hypot(...s.map((t=>t.z)))}return Math.hypot(...t)},t.inRange=K,t.in_back=(t,e=1.70158,s=e+1)=>s*Me(t,3)-e*t**2,t.in_bounce=(t,e=7.5625,s=2.75)=>1-ke(1-t,e,s),t.in_circ=t=>1-ye(1-t**2),t.in_cubic=t=>t**3,t.in_elastic=(t,e=2*we/3)=>0===t?0:1===t?1:-Me(2,10*t-10)*ve((10*t-10.75)*e),t.in_expo=t=>0===t?0:2**(10*t-10),t.in_out_back=(t,e=1.70158,s=1.525*e)=>t<.5?Me(2*t,2)*(2*(s+1)*t-s)/2:(Me(2*t-2,2)*((s+1)*(2*t-2)+s)+2)/2,t.in_out_bounce=(t,e=7.5625,s=2.75)=>t<.5?ke(1-2*t,e,s)/2:ke(2*t-1,e,s)/2,t.in_out_circ=t=>t<.5?(1-ye(1-(2*t)**2))/2:(ye(1-(-2*t+2)**2)+1)/2,t.in_out_cubic=t=>t<.5?4*t**3:1-(-2*t+2)**3/2,t.in_out_elastic=(t,e=2*we/4.5)=>0===t?0:1===t?1:t<.5?-Me(2,20*t-10)*ve((20*t-11.125)*e)/2:Me(2,-20*t+10)*ve((20*t-11.125)*e)/2+1,t.in_out_expo=t=>0===t?0:1===t?1:t<.5?2**(20*t-10)/2:(2-2**(-20*t+10))/2,t.in_out_quad=t=>t<.5?2*t**2:1-(-2*t+2)**2/2,t.in_out_quart=t=>t<.5?8*t**4:1-(-2*t+2)**4/2,t.in_out_quint=t=>t<.5?16*t**5:1-(-2*t+2)**5/2,t.in_out_sin=t=>-(_e(we*t)-1)/2,t.in_quad=t=>t**2,t.in_quart=t=>t**4,t.in_quint=t=>t**5,t.in_sin=t=>1-_e(t*we/2),t.isApproximatlyEqual=J,t.isStateGetter=bt,t.json2arr=t=>Re(t instanceof Object?t:JSON.parse(t)),t.json2css=We,t.json2csv=ze,t.json2csvFile=(t,e)=>{const s=ze(t,e),r=new Blob([s],{type:"text/csv;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2xml=Ne,t.json2xmlFile=(t,e)=>{const s=Ne(t,e),r=new Blob([s],{type:"text/xml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2yml=Le,t.json2ymlFile=(t,e)=>{const s=Le(t,e),r=new Blob([s],{type:"text/yml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.lerp=S,t.linear=Ee,t.linspace=V,t.ln=k,t.logspace=W,t.loop=(t,e={})=>new Ae(t,e),t.map=A,t.mapfun=n,t.matrix=(t,e,s)=>new U(t,e,s),t.matrix2=(...t)=>new U(2,2,t),t.matrix3=(...t)=>new U(3,3,t),t.matrix4=(...t)=>new U(4,4,t),t.max=(...t)=>Math.max(...t),t.mean=m,t.median=t=>g(t,50),t.min=(...t)=>Math.min(...t),t.modulo=p,t.mul=l,t.nand=(...t)=>P(R(...t)),t.nor=(...t)=>P(F(...t)),t.norm=T,t.nthr=E,t.nums=B,t.obj2str=Be,t.ones=Z,t.or=F,t.out_back=(t,e=1.70158,s=e+1)=>1+s*Me(t-1,3)+e*Me(t-1,2),t.out_bounce=ke,t.out_circ=t=>ye(1-(t-1)**2),t.out_cubic=t=>1-(1-t)**3,t.out_elastic=(t,e=2*we/3)=>0===t?0:1===t?1:Me(2,-10*t)*ve((10*t-.75)*e)+1,t.out_expo=t=>1===t?1:1-2**(-10*t),t.out_quad=t=>1-(1-t)**2,t.out_quart=t=>1-(1-t)**4,t.out_quint=t=>1-(1-t)**5,t.out_sin=t=>ve(t*we/2),t.percentile=g,t.pgcd=X,t.pow=x,t.ppcm=Q,t.preload=je,t.rad2deg=(...t)=>n((t=>t/Math.PI*180),...t),t.round=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.round(t.a),Math.round(t.b)):Math.round(t)),...t),t.sec=(...t)=>n((t=>(t.isComplex?.(),+(1/Math.cos(t)).toFixed(8))),...t),t.sig=(...t)=>n((t=>1/(1+Math.exp(-t)).toFixed(8)),...t),t.sign=(...t)=>n((t=>{if(t.isComplex?.()){const{z:e,phi:s}=t;return 0===e?new t.constructor(0,0):new t.constructor({z:1,phi:s})}return Math.sign(t)}),...t),t.sin=(...t)=>n((t=>t?.isComplex?new t.constructor(Math.sin(t.a)*Math.cosh(t.b),Math.cos(t.a)*Math.sinh(t.b)).toFixed(8):+Math.sin(t).toFixed(8)),...t),t.sinh=(...t)=>n((t=>t?.isComplex?new t.constructor(Math.sinh(t.a)*Math.cos(t.b),Math.cosh(t.a)*Math.sin(t.b)).toFixed(8):+Math.sinh(t).toFixed(8)),...t),t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.sqrt=M,t.std=(...t)=>Math.sqrt(f(...t)),t.step=(t,e=5)=>Math.floor(t*e)/e,t.step_fps=t=>1e3/t,t.sub=c,t.svg2ascii=qe,t.svg2img=(t,e=!0)=>ae.img(Ze(t)).mount(e),t.svg2imgUrl=Ze,t.svg2str=Ue,t.tags=ae,t.tan=(...t)=>n((t=>{if(t?.isComplex){const e=Math.cos(2*t.a)+Math.cosh(2*t.b);return new t.constructor(Math.sin(2*t.a)/e,Math.sinh(2*t.b)/e).toFixed(8)}return+Math.tan(t).toFixed(8)}),...t),t.tanh=(...t)=>n((t=>{if(t?.isComplex){const e=Math.cosh(2*a)+Math.cos(2*b);return new t.constructor(Math.sinh(2*a)/e,Math.sin(2*b)/e).toFixed(8)}return+Math.tanh(t).toFixed(8)}),...t),t.text=vt,t.throttle=$t,t.tick=(t,e,s=1/0,r=!0)=>new Te(t,e,s,r),t.timeTaken=t=>{console.time("timeTaken");const e=t();return console.timeEnd("timeTaken"),e},t.time_memory_Taken=t=>{const e=Date.now(),s=performance.memory.usedJSHeapSize,r=t();return{elapsedTime:Date.now()-e,usedMemory:performance.memory.usedJSHeapSize-s,result:r}},t.timeout=function(t,e){let s;const r=new Promise((r=>{s=setTimeout((()=>{e&&e(),r()}),t)}));return{id:s,clear:()=>clearTimeout(s),promise:r}},t.toggle_event_listener=St,t.trunc=(...t)=>n((t=>t.isComplex?.()?new t.constructor(Math.trunc(t.a),Math.trunc(t.b)):Math.trunc(t)),...t),t.useDerived=function(t,e){let s=t(...e.map((t=>t().value)));const r=new Set;return e.forEach((n=>{n()._subscribe((()=>{{const n=t(...e.map((t=>t().value)));n!==s&&(s=n,r.forEach((t=>t(s))))}}))})),()=>({value:s,isStateGetter:()=>!0,_subscribe:t=>r.add(t)})},t.useEventEmitter=ss,t.useIPC=ht,t.useLocaleStorage=(t,e,s=!0)=>new ct(localStorage,t,e,s),t.useMediaQuery=(t,e)=>new rs(t,e),t.useReactive=t=>n((t=>{const e=gt(t);return{get:e[0],set:e[1]}}),t),t.useRoot=(t,e={})=>new is(t,e),t.useSessionStorage=lt,t.useState=gt,t.useThread=(t,e,s=[],r=!0)=>(new ts).call(t,e,s,r),t.useTitle=(t,e=!0)=>new ns(t,e),t.variance=f,t.wait=t=>new Promise((e=>setTimeout(e,t))),t.waitForUIElm=t=>new Promise((e=>{if(t.element)return e(t.element);const s=new MutationObserver((()=>{t.element&&(e(t.element),s.disconnect())}));s.observe(document?.body,{childList:!0,subtree:!0})})),t.waitForUIElmSync=(t,e=2e3)=>{const s=Date.now();for(;Date.now()-s<e;)if(t.element)return t.element},t.xnor=(...t)=>P(z(...t)),t.xor=z,t.zeros=q}));