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 ...
9 lines • 71.6 kB
JavaScript
/*
Project: ziko.js
Author: Zakaria Elalaoui
Date : Thu Jun 04 2026 14:34:29 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:r}=Math,s=Number.EPSILON,n=(t,...e)=>{const r=e.map(e=>{return"object"!=typeof(r=e)&&"function"!=typeof r||null===r||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 r});return 1==r.length?r[0]:r},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,r)=>{if("number"==typeof e){if("number"==typeof r)switch(t){case"add":return e+r;case"sub":return e-r;case"mul":return e*r;case"div":return e/r;case"modulo":return e%r}return r?.isComplex?.()&&(e=new r.constructor(e,0)),r?.isMatrix?.()&&(e=r.constructor.nums(r.rows,r.cols,e)),e[t](r)}if(e?.isComplex?.()){if("number"==typeof r||r?.isComplex?.())return e.clone()[t](r);if(r?.isMatrix?.())return(e=r.constructor.nums(r.rows,r.cols,e)).clone()[t](r)}if(e?.isMatrix?.())return e.clone()[t](r)},h=(t,...e)=>{let r=t;for(let t=0;t<e.length;t++)r=o("add",r,e[t]);return r},c=(t,...e)=>{let r=t;for(let t=0;t<e.length;t++)r=o("sub",r,e[t]);return r},l=(t,...e)=>{let r=t;for(let t=0;t<e.length;t++)r=o("mul",r,e[t]);return r},u=(t,...e)=>{let r=t;for(let t=0;t<e.length;t++)r=o("div",r,e[t]);return r},m=(t,...e)=>{let r=t;for(let t=0;t<e.length;t++)r=o("modulo",r,e[t]);return r},p=(...t)=>t.reduce((t,e)=>t+e)/t.length,f=(...t)=>{const e=t.length;if(0===e)return NaN;const r=p(...t);return t.reduce((t,e)=>t+(e-r)**2,0)/e},d=(...t)=>{let e,r=[],s=0,n=t.length;for(e=0;e<n;e++)s=h(s,t[e]),r.push(s);return r},g=(t,e)=>{if(0===t.length)return NaN;let r=[...t].sort((t,e)=>t-e),s=e/100*(r.length-1),n=Math.floor(s),i=s-n;return n===r.length-1?r[n]:r[n]*(1-i)+r[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,r)=>{const s=parseInt(t,e);if(Number.isNaN(s))throw new TypeError("Invalid value for the given base");return s.toString(r)})(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,r,s]=Array.from({length:4},()=>this.int(255).toString(16).padStart(2,"0"));return`#${t}${e}${r}${s}`},rgb:()=>{const[t,e,r]=Array.from({length:3},()=>this.int(255));return`rgb(${t}, ${e}, ${r})`},rgba:()=>{const[t,e,r]=Array.from({length:3},()=>this.int(255));return`rgba(${t}, ${e}, ${r}, ${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,r,s)=>Array.from({length:e},()=>t.int(r,s)),float:(e,r,s)=>Array.from({length:e},()=>t.float(r,s)),char:(e,r=!1)=>Array.from({length:e},()=>t.char(r)),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,r,s)=>Array.from({length:e},()=>t.choice(r,s))}}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 r=d(...e).map(t=>100*t),s=new Array(100);s.fill(t[0],0,r[0]);for(let e=1;e<t.length;e++)s.fill(t[e],r[e-1],r[e]);return s[this.int(s.length)]}}globalThis.Random=w;class y{constructor(t=0,e=0){[this.a,this.b]=((t,e,r)=>{let s,n;return e instanceof t?(s=e.a,n=e.b):"object"==typeof e?"a"in e&&"b"in e?(s=e.a,n=e.b):"a"in e&&"z"in e?(s=e.a,n=Math.sqrt(e.z**2-e.a**2)):"a"in e&&"phi"in e?(s=e.a,n=e.a*Math.tan(e.phi)):"b"in e&&"z"in e?(n=e.b,s=Math.sqrt(e.z**2-e.b**2)):"b"in e&&"phi"in e?(n=r,s=e.b/Math.tan(e.phi)):"z"in e&&"phi"in e&&(s=+e.z*Math.cos(e.phi).toFixed(15),n=+e.z*Math.sin(e.phi).toFixed(15)):"number"==typeof e&&"number"==typeof r&&(s=+e.toFixed(32),n=+r.toFixed(32)),[s,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:r}=t;return"complex"===r&&"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 r=-2*Math.PI*t/e;return new y(Math.cos(r),Math.sin(r))}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:r}=this;for(let s=0;s<t.length;s++)"number"==typeof t[s]&&(t[s]=new y(t[s],0)),e*=t[s].z,r+=t[s].phi;return this.a=e*Math.cos(r),this.b=e*Math.sin(r),this.toFixed(8)}div(...t){let{z:e,phi:r}=this;for(let s=0;s<t.length;s++)"number"==typeof t[s]&&(t[s]=new y(t[s],0)),e/=t[s].z,r-=t[s].phi;return this.a=e*Math.cos(r),this.b=e*Math.sin(r),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:r}=this;for(let s=0;s<t.length;s++)"number"==typeof t[s]&&(t[s]=new y(t[s],0)),e*=Math.exp(t[s].a*Math.log(e)-t[s].b*r),r+=t[s].b*Math.log(e)+t[s].a*r;return this.a=e*Math.cos(r),this.b=e*Math.sin(r),this}get expo(){return[this.z,this.phi]}nthr(t=2){return v({z:this.z**(1/t),phi:this.phi/t})}get sqrt(){return this.nthr(2)}get cbrt(){return this.nthr(3)}get log(){return v(this.z,this.phi)}get cos(){return v(Math.cos(this.a)*Math.cosh(this.b),Math.sin(this.a)*Math.sinh(this.b))}get sin(){return v(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 v(Math.sin(2*this.a)/t,Math.sinh(2*this.b)/t)}}const v=(t,e)=>{if((t instanceof Array||ArrayBuffer.isView(t))&&(e instanceof Array||ArrayBuffer.isView(t)))return t.map((r,s)=>v(t[s],e[s]));if(t.isMatrix?.()&&e.isMatrix?.()){if(t.shape[0]!==e.shape[0]||t.shape[1]!==e.shape[1])return Error(0);const r=t.arr.map((r,s)=>v(t.arr[s],e.arr[s]));return new t.constructor(t.rows,t.cols,...r)}return new y(t,e)},x=(...t)=>n(t=>t.isComplex?.()?t.z:Math.abs(t),...t),_=(...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?v(0,Math.sqrt(-t)).toFixed(8):+Math.sqrt(t).toFixed(8),...t),k=(...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?v(0,(-t)**(1/e)).toFixed(8):+(-1*(-t)**(1/e)).toFixed(8):+(t**(1/e)).toFixed(8),...t)},C=(...t)=>n(t=>t.isComplex?.()?new t.constructor(Math.log(t.z),t.phi).toFixed(8):+Math.log(t).toFixed(8),...t),E=(...t)=>n(t=>t.isComplex?.()?new t.constructor(Math.floor(t.a),Math.floor(t.b)):Math.floor(t),...t),T=(t,e,r)=>i(t,t=>e!==r?(t-e)/(r-e):0),S=(t,e,r)=>i(t,t=>(r-e)*t+e),A=(t,e,r)=>i(t,t=>Math.min(Math.max(t,e),r)),j=(t,e,r,s,n)=>i(t,t=>S(T(t,e,r),s,n)),O=(t,e,r=!0)=>{if(t instanceof Array&&!(e instanceof Array))return n(t=>O(t,e,r),...t);if(e instanceof Array&&!(t instanceof Array))return n(e=>O(t,e,r),...e);if(t instanceof Array&&e instanceof Array)return t.map((t,s)=>O(t,e[s],r));const s=Math.atan2(t,e);return r?s:180*s/Math.PI},R=t=>t.isComplex?.()?new t.constructor(R(t.a),R(t.b)):t.isMatrix?.()?new t.constructor(t.rows,t.cols,t.arr.flat(1).map(R)):+!t,I=(t,e)=>{if(t.every(t=>t.isComplex?.())){const r=t.map(t=>t.a),s=t.map(t=>t.b);return new t[0].constructor(e(...r),e(...s))}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:r,cols:s}=t[0],n=Array.from({length:r},(r,n)=>Array.from({length:s},(r,s)=>e(...t.map(t=>t.arr[n][s]))));return new t[0].constructor(n)}return null},P=(...t)=>{const e=I(t,P);return null!==e?e:t.reduce((t,e)=>t&e,1)},z=(...t)=>{const e=I(t,z);return null!==e?e:t.reduce((t,e)=>t|e,0)},$=(...t)=>{const e=I(t,$);return null!==e?e:t.reduce((t,e)=>t^e,0)},F=(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 r=t.arr.length;r<e;r++)delete t[r]};function D(t,e){var r=[];for(let e=0;e<t.length;e++)r.push(t[e].slice(0));r.splice(0,1);for(let t=0;t<r.length;t++)r[t].splice(e,1);return r}function L(t,e){if(t=t.clone(),e=e.clone(),t.rows!==e.rows)return;let r=t.arr;for(let s=0;s<t.rows;s++)for(let n=t.cols;n<t.cols+e.cols;n++)r[s][n]=e.arr[s][n-t.cols];return t.cols+=e.cols,new t.constructor(t.rows,t.cols,r.flat(1))}function U(t,e){if(t=t.clone(),e=e.clone(),t.cols!==e.cols)return;let r=t.arr;for(let s=t.rows;s<t.rows+e.rows;s++){r[s]=[];for(let n=0;n<t.cols;n++)r[s][n]=e.arr[s-t.rows][n]}return t.rows+=e.rows,new t.constructor(t.rows,t.cols,r.flat(1))}class N{constructor(t,e,r=[]){[this.rows,this.cols,this.arr]=((t,e,r,s)=>{if(!(e instanceof t)){let t,n,i=[];if(e instanceof Array)i=e,e=i.length,r=i[0].length;else for(t=0;t<e;t++)for(i.push([]),i[t].push(new Array(r)),n=0;n<r;n++)i[t][n]=s[t*r+n],null==s[t*r+n]&&(i[t][n]=0);return[e,r,i]}arr=e.arr,r=(e=e.rows).cols})(N,t,e,r),F(this)}isMatrix(){return!0}clone(){return new N(this.rows,this.cols,this.arr.flat(1))}toComplex(){return this.arr=n(t=>t?.isComplex?.()?t:new y(t,0),...this.arr),F(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,r=this.rows-1,s=this.cols-1){r<0&&(r=this.rows+r),s<0&&(s=this.cols+s);let n=r-t,i=s-e,o=new Array(i);for(let r=0;r<n;r++){o[r]=[];for(let s=0;s<i;s++)o[r][s]=this.arr[r+t][s+e]}return this.arr=o,F(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 r=this.rows;return Object.assign(this,new N(t,e,this.arr.flat(1))),F(r),this}get T(){let t=[];for(let e=0;e<this.arr[0].length;e++){t[e]=[];for(let r=0;r<this.arr.length;r++)t[e][r]=this.arr[r][e]}return new N(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 r=0,s=0;s<e.length;s++){const n=h(l(_(-1,s),l(e[0][s],t(D(e,s)))));r=h(r,n)}return r}(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 r=0,s=0,n=0,i=e.length,o=0,a=[],h=[];for(r=0;r<i;r+=1)for(a[a.length]=[],h[h.length]=[],n=0;n<i;n+=1)a[r][n]=r==n?1:0,h[r][n]=e[r][n];for(r=0;r<i;r+=1){if(0==(o=h[r][r])){for(s=r+1;s<i;s+=1)if(0!=h[s][r]){for(n=0;n<i;n++)o=h[r][n],h[r][n]=h[s][n],h[s][n]=o,o=a[r][n],a[r][n]=a[s][n],a[s][n]=o;break}if(0==(o=h[r][r]))return}for(n=0;n<i;n++)h[r][n]=h[r][n]/o,a[r][n]=a[r][n]/o;for(s=0;s<i;s++)if(s!=r)for(o=h[s][r],n=0;n<i;n++)h[s][n]-=o*h[r][n],a[s][n]-=o*a[r][n]}return new t.constructor(a)}}(this)}static eye(t){let e=new N(t,t);for(let r=0;r<t;r++)for(let s=0;s<t;s++)e.arr[r][s]=r===s?1:0;return e}static zeros(t,e){let r=new N(t,e);for(let n=0;n<t;n++)for(var s=0;s<e;s++)r.arr[n][s]=0;return r}static ones(t,e){let r=new N(t,e);for(let s=0;s<t;s++)for(let t=0;t<e;t++)r.arr[s][t]=1;return r}static nums(t,e,r){let s=new N(t,e);for(let n=0;n<t;n++)for(let t=0;t<e;t++)s.arr[n][t]=r;return s}static get random(){return{int:(t,e,r,s)=>new N(t,e,w.sample.int(t*e,r,s)),float:(t,e,r)=>new N(t,e,w.sample.float(t*e,r,b))}}get range(){return{map:(t,e,r,s)=>(this.arr=j(this.arr,t,e,r,s),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=A(this.arr,t,e),this)}}hstack(...t){const e=[this,...t].reduce((t,e)=>L(t,e));return Object.assign(this,e),F(this),this}vstack(...t){const e=[this,...t].reduce((t,e)=>U(t,e));return Object.assign(this,e),F(this),this}hqueue(...t){const e=[this,...t].reverse().reduce((t,e)=>L(t,e));return Object.assign(this,e),F(this),this}vqueue(...t){const e=[this,...t].reverse().reduce((t,e)=>U(t,e));return Object.assign(this,e),F(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 N(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 N(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 r=e?this.arr.flat(1).reduce(t,e):this.arr.flat(1).reduce(t);return new N([[r]])}reduceRows(t,e){const r=e?this.arr.map(r=>r.reduce(t,e)):this.arr.map(e=>e.reduce(t));return new N(1,this.cols,r)}reduceCols(t,e){return this.T.reduceRows(t,e).T}filterRows(t){const e=this.arr.map(e=>e.some(e=>t(e))),r=[];let s;for(s=0;s<e.length;s++)e[s]&&r.push(this.arr[s]);return new N(r)}filterCols(t){const e=this.T.filterRows(t);return new N(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 r=e+1;r<t;r++)if(this.arr[e][r]!==-this.arr[r][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 r=e+1;r<t;r++)if(0!==this.arr[e][r]||0!==this.arr[r][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,r=[];for(let s=0;s<t;s++){r[s]=[];for(let n=0;n<t;n++){let i=0;for(let r=0;r<t;r++)i+=e[s][r]*e[r][n];r[s][n]=i}}for(let s=0;s<t;s++)for(let n=0;n<t;n++)if(r[s][n]!==e[s][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 r=e+1;r<t;r++)if(0!==this.arr[e][r])return!1;return!0}toPrecision(t){for(let e=0;e<this.cols;e++)for(let r=0;r<this.rows;r++)this.arr[e][r]=+this.arr[e][r].toPrecision(t);return this}toFixed(t){for(let e=0;e<this.cols;e++)for(let r=0;r<this.rows;r++)this.arr[e][r]=+this.arr[e][r].toFixed(t);return this}splice(t,e,r,...s){}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 s=0;s<e.length;s++){("number"==typeof e[s]||e[s]?.isComplex?.())&&(e[s]=N.nums(this.rows,this.cols,e[s]));for(let n=0;n<this.rows;n++)for(var r=0;r<this.cols;r++)this.arr[n][r]=t(this.arr[n][r],e[s].arr[n][r])}return new N(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(m,...t)}dot(t){for(var e=[],r=0;r<this.arr.length;r++){e[r]=[];for(var s=0;s<t.arr[0].length;s++){e[r][s]=0;for(var n=0;n<this.arr[0].length;n++)e[r][s]=h(e[r][s],l(this.arr[r][n],t.arr[n][s]))}}return new N(this.arr.length,t.arr[0].length,e.flat(1))}pow(t){let e=this.clone(),r=this.clone();for(let s=0;s<t-1;s++)r=r.dot(e);return r}sum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.cols;r++)t=h(t,this.arr[e][r]);return t}prod(){let t=1;for(let e=0;e<this.rows;e++)for(let r=0;r<this.cols;r++)t=l(t,this.arr[e][r]);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 N(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:r}=t;if("matrix"!==e)return TypeError("Not a valid Matrix");let{arr:s}=r;return s=n(t=>{if("string"==typeof t){const e=JSON.parse(t),{type:r}=e;if("complex"===r)return y.deserialize(e)}return t},...s),new N(s)}flip(){return this.flipeH().flipeV()}flipeH(){return this.arr=this.arr.map(t=>[...t].reverse()),F(this),this}flipeV(){return this.arr=this.arr.reverse(),F(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),V=(t,e,r,s=!1)=>{let n=[];if(t<e)for(let i=t;s?i<=e:i<e;i+=r)n.push(10*i/10);else for(let i=t;s?i>=e:i>e;i-=r)n.push(10*i/10);return n},G=(t,e,r=x(e-t)+1,s=!0)=>{if(Math.floor(r)===r){if([t,e].every(t=>"number"==typeof t)){const[o,a]=[t,e].sort((t,e)=>e-t);var n=[];let h;h=s?(o-a)/(r-1):(o-a)/r;for(var i=0;i<r;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 r.constructor(t),i=new r.constructor(e);r=r||Math.abs(n.a-i.a)+1;const o=G(n.a,i.a,r,s),a=G(n.b,i.b,r,s);let h=new Array(r).fill(null);return h=h.map((t,e)=>new t.constructor(o[e],a[e])),h}}},H=(t,e,s=e-t+1,n=r,i=!0)=>G(t,e,s,i).map(t=>_(n,t)),W=(t,e,r=x(e-t)+1,s=!0)=>{if(Math.floor(r)===r){if([t,e].every(t=>"number"==typeof t)){const[n,i]=[t,e].sort((t,e)=>e-t);let o;o=k(n/i,s?r-1:r);const a=[i];for(let t=1;t<r;t++)a.push(a[t-1]*o);return t<e?a:a.reverse()}if([t,e].some(t=>t.isComplex?.())){const n=new r.constructor(t),i=new r.constructor(e);let o;r=r||Math.abs(n.a-i.a)+1,o=k(i.div(n),s?r-1:r);const a=[n];for(let t=1;t<r;t++)a.push(l(a[t-1],o));return a}}},K=(t,e,r)=>{const[s,n]=[Math.min(e,r),Math.max(e,r)];return t>=s&&t<=n},J=(t,e,r=1e-4)=>Math.abs(t-e)<=r,Q=(t,e)=>t.reduce((t,r)=>[...t,...e.map(t=>[r,t])],[]),Y=(t,e)=>{let r,s=1;if(t==E(t)&&e==E(e)){for(r=2;r<=t&&r<=e;++r)t%r==0&&e%r==0&&(s=r);return s}console.log("error")},X=(t,e)=>{let r;if(t==E(t)&&e==E(e)){for(r=t>e?t:e;r%t!=0||r%e!=0;)++r;return r}console.log("error")},tt={zeros:q,ones:Z,nums:B,arange:V,linspace:G,logspace:H,geomspace:W,cartesianProduct:Q,ppcm:X,pgcd:Y,inRange:K,isApproximatlyEqual:J};class et{constructor(t){this.cache={node:t}}isUINode(){return!0}get node(){return this.cache.node}}class rt 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 st=new rt,nt={default:{target:null,render:!0,math:{mode:"deg"}},setDefault:function(t){const e=Object.keys(t),r=Object.values(t);for(let t=0;t<e.length;t++)this.default[e[t]]=r[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;#r;#s;#n;#i;#o;constructor(t=""){this.#e=new BroadcastChannel(t),this.#r=new Map,this.#s=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:r,eventData:s,rooms:n}=t.data;if(r===this.#n)return;if(n&&n.length&&!n.some(t=>this.#o.has(t)))return;this.#i.add(r),this.#r=new Map(s);const i=this.#s.get(e);i&&i.forEach(({fn:t,rooms:r})=>{r&&0!==r.length&&n&&!n.some(t=>r.includes(t))||t(this.#r.get(e))})})}emit(t,e,r){return this.#r.set(t,e),"string"==typeof r&&(r=[r]),this.#e.postMessage({eventData:Array.from(this.#r.entries()),last_sent_event:t,userId:this.#n,rooms:r&&r.length?r:void 0}),this}on(t,e=console.log,r){return this.#s.has(t)||this.#s.set(t,[]),"string"==typeof r&&(r=[r]),this.#s.get(t).push({fn:e,rooms:r}),this}off(t,e){return this.#s.has(t)?(this.#s.set(t,this.#s.get(t).filter(t=>t.fn!==e)),this):this}once(t,e,r){const s=r=>{e(r),this.off(t,s)};return this.on(t,s,r),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,r,s=!0){this.cache={storage:t,globalKey:e,channel:s?ht(`Ziko:useStorage-${e}`):null,oldItemKeys:new Set},this.#a(r,s)}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,r=!0)=>new ct(sessionStorage,t,e,r);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 mt(){var t;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:st,__HYDRATION__:it,__State__:ut,__Config__:nt,__CACHE__:ot,__PROVIDERS__:{}},t=__Ziko__,Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,t=>{const[r,s]=t.split("=");e[r]=s}),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}))}mt();class pt extends et{constructor(){super()}init(t,e,r,s){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof t)switch(r){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,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 rt,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],t&&s&&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 r=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(r)){const s=r[e];"get"in s||"set"in s||"function"!=typeof s.value?Object.defineProperty(Object.getPrototypeOf(t),e,s):"function"==typeof s.value&&(Object.getPrototypeOf(t).hasOwnProperty(e)||Object.defineProperty(Object.getPrototypeOf(t),e,s))}}(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:r}=__Ziko__.__State__;__Ziko__.__State__.register({value:t,subscribers:new Set,paused:!1});let s=e.get(r);return[function(){return{value:s.value,isStateGetter:()=>!0,_subscribe:t=>s.subscribers.add(t)}},function(t){s.paused||("function"==typeof t&&(t=t(s.value)),t!==s.value&&(s.value=t,s.subscribers.forEach(t=>t(s.value)),__Ziko__.__State__.update(r,t)))},{pause:()=>{s.paused=!0},resume:()=>{s.paused=!1},clear:()=>{s.subscribers.clear()},force:t=>{"function"==typeof t&&(t=t(s.value)),s.value=t,s.subscribers.forEach(t=>t(s.value))},getSubscribers:()=>new Set(s.subscribers)}]}globalThis.__Ziko__||mt();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)};function vt(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 xt=Object.freeze({__proto__:null,_set_attrs_:vt,getAttr:function(t){return t=yt(t)?wt(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[r,s]=[Object.keys(t),Object.values(t)];for(let t=0;t<r.length;t++)s[t]instanceof Array&&(e[t]=s[t].join(" ")),vt.call(this,r[t],s[t])}else e instanceof Array&&(e=e.join(" ")),vt.call(this,t,e);return this},setContentEditable:function(t=!0){return this.setAttr("contenteditable",t),this}});class _t extends et{constructor(...t){super("span","text",!1,...t),this.element=globalThis?.document?.createTextNode(...t)}isText(){return!0}}const Mt=(...t)=>new _t(...t);async function kt(t,e,...r){if(this.cache.isFrozzen)return console.warn("You can't append new item to frozzen element"),this;for(let s=0;s<r.length;s++){if(["number","string"].includes(typeof r[s])&&(r[s]=Mt(r[s])),r[s]instanceof Function){const t=r[s]();t.isStateGetter&&(r[s]=Mt(t.value),t._subscribe(t=>r[s].element.textContent=t,r[s]))}if("function"==typeof globalThis?.Node&&r[s]instanceof globalThis?.Node&&(r[s]=new this.constructor(r[s])),r[s]?.isUINode)r[s].cache.parent=this,this.element?.[t](r[s].element),r[s].target=this.element,this.items[e](r[s]);else if(r[s]instanceof Promise){const n=await r[s];n.cache.parent=this,this.element?.[t](n.element),n.target=this.element,this.items[e](n)}else r[s]instanceof Object&&(r[s]?.style&&this.style(r[s]?.style),r[s]?.attr&&Object.entries(r[s].attr).forEach(t=>this.setAttr(""+t[0],t[1])))}return this.maintain(),this}var Ct=Object.freeze({__proto__:null,__addItem__:kt,after:function(t){return t?.isUIElement&&(t=t.element),this.element?.after(t),this},append:function(...t){return kt.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 r=0;r<e.length;r++)["number","string"].includes(typeof e[r])&&(e[r]=Mt(e[r])),this.element?.insertBefore(e[r].element,this.items[t].element),this.items.splice(t,0,e[r]);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 r=0;r<t.length;r++)e(t[r]);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}});var Et=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 Tt=Object.freeze({__proto__:null,animate:function(t,{duration:e=1e3,iterations:r=1,easing:s="ease"}={}){return this.element?.animate(t,{duration:e,iterations:r,easing:s}),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 r=t[e];if(bt(r)){const t=r();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]:r})}return this}});class St{constructor(t,e){this.cache={category:e,target:t,listeners:{},currentEvent:null,event:null,customEvents:new Set}}get event(){return this.cache.event}get target(){return this.cache.target}get element(){return this.cache.target.element}get currentEvent(){return this.cache.currentEvent}addListener(t,e,{preventDefault:r=!1,paused:s=!1}={}){return this.cache.listeners[t]={callback:r=>{this.cache.event=r,this.cache.listeners[t].preventDefault&&r.preventDefault(),this.cache.listeners[t].paused||(this.cache.currentEvent=t,e.call(this,this))},preventDefault:r,paused:s},this.element.addEventListener(t,this.cache.listeners[t].callback),this}removeListener(t){return this.element.removeEventListener(t,this.cache.listeners[t].callback),this}pause(t){return this.cache.listeners[t].paused=!0,this}resume(t){return this.cache.listeners[t].paused=!1,this}preventDefault(t){return this.cache.listeners[t].preventDefault=!0,this}useDefault(t){return this.cache.listeners[t].preventDefault=!1,this}}class At extends Event{constructor(t,e){super("clickaway",{bubbles:!0,cancelable:!0}),this.originalEvent=t,this.targetElement=e}}function jt(t){function e(e){if(!t.contains(e.target)){const r=new At(e,t);t.dispatchEvent(r)}}return globalThis?.document?.addEventListener("click",e),()=>globalThis?.document?.removeEventListener("click",e)}const Ot=(t,e=!1)=>{const r=t.element.getBoundingClientRect(),s=t.event;let n=s?.clientX-r.left|0,i=s?.clientY-r.top|0;if(e){const e=t.element.clientWidth,r=t.element.clientHeight;n=+(n/e*2-1).toFixed(8),i=+(i/r*-2+1).toFixed(8)}return{x:n,y:i}},Rt="click",It={onClick(t){return this.on("click",t,{category:Rt})},onDblClick(t){return this.on("dblclick",t,{category:Rt})},onClickAway(t){var e,r,s;return e=this,r=Rt,s="clickaway",e.exp.events?.[r]?.cache?.customEvents?.has(s)||jt(this.element),this.on("clickaway",t,{category:Rt,isCustom:!0})}},Pt="ptr",zt={onPtrDown(t,e=!1){return this.on("pointerdown",t,{category:Pt,details_setter:t=>{const{x:r,y:s}=Ot(t,e);t.dx=r,t.dy=s,t.isDown=!0,t.isDragging=t.isMoving??!1}})},onPtrMove(t,e=!1){return this.on("pointermove",t,{category:Pt,details_setter:t=>{const{x:r,y:s}=Ot(t,e);t.mx=r,t.my=s,t.isMoving=!0,t.isDragging=t.isDown??!1}})},onPtrUp(t,e=!1){return this.on("pointerup",t,{category:Pt,details_setter:t=>{const{x:r,y:s}=Ot(t,e);t.ux=r,t.uy=s,t.isDown=!1,t.isMoving=!1,t.isDragging=!1}})}},$t="key",Ft={onKeyDown(t){return this.on("keydown",t,{category:$t,details_setter:t=>{t.kd=t.event.key}})},onKeyPress(t){return this.on("keypress",t,{category:$t,details_setter:t=>{t.kp=t.event.key}})},onKeyUp(t){return this.on("keydown",t,{category:$t,details_setter:t=>{t.ku=t.event.key}})}},Dt=(t,e)=>{let r=0;return(...s)=>{const n=(new Date).getTime();n-r<e||(r=n,t(...s))}};class Lt extends CustomEvent{constructor(t,e,{bubbles:r=!0,cancelable:s=!0}={}){super(t,{detail:e,bubbles:r,cancelable:s})}}function Ut(t,{intersection:e=!0,resize:r=!0,threshold:s=0,throttleResize:n=100,throttleEnterExit:i=0}={}){let o,a;const h=e=>{for(let r of e){const{width:e,height:s}=r.contentRect;t.dispatchEvent(new Lt("resizeview",{width:e,height:s,entry:r}))}},c=n>0?Dt(h,n):h,l=e=>{for(let r of e){const e=r.isIntersecting?"enterview":"exitview";t.dispatchEvent(new Lt(e,r))}},u=i>0?Dt(l,i):l;return e&&(o=new IntersectionObserver(u,{threshold:s}),o.observe(t)),r&&(a=new ResizeObserver(c),a.observe(t)),()=>{o&&(o.unobserve(t),o.disconnect()),a&&(a.unobserve(t),a.disconnect())}}const Nt="view",qt={onEnterView(t){return this.exp.events?.[Nt]||Ut(this.element),this.on("enterview",t,{category:Nt,isCustom:!0})},onExitView(t){return this.exp.events?.[Nt]||Ut(this.element),this.on("exitview",t,{category:Nt,isCustom:!0})},onResizeView(t){return this.exp.events?.[Nt]||Ut(this.element),this.on("resizeview",t,{category:Nt,isCustom:!0})}};class Zt extends CustomEvent{constructor(t,e){super(t,{detail:e,bubbles:!0,cancelable:!0})}}let Bt=class extends pt{constructor({element:t,name:e="",type:r="html",render:s=__Ziko__.__Config__.default.render}={}){super(),this.exp={events:{}},ft(this,dt,xt,Ct,Tt,Et,zt,It,Ft,qt),t&&this.init(t,e,r,s)}on(t,e,{details_setter:r,category:s="global",isCustom:n=!1,preventDefault:i=!1}={}){s&&!this.exp.events.hasOwnProperty(s)&&(this.exp.events[s]=new St(this,s)),n&&this.exp.events[s].cache.customEvents.add(t);const o=this.exp.events[s];return o.addListener(t,t=>{r&&r(o),e(t)},{preventDefault:i}),this}_off(t,e="global"){this.exp.events[e].removeListener(t)}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}};function Vt(t){return"object"!=typeof t&&"function"!=typeof t||null===t}class Gt extends Bt{constructor(...t){super({element:"div",name:"view"}),this.append(...t)}}const Ht=["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"],Wt=["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"],Kt=["math","annotation","merror","mfrac","mi","mprescripts","mn","mo","mover","mpadded","mphantom","mprescripts","mroot","mrow","ms","semantics","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"],Jt=new Proxy({},{get(t,e){if("string"!=typeof e)return;let r,s=e.replaceAll("_","-").toLowerCase();return Ht.includes(s)&&(r="html"),Wt.includes(s)&&(r="svg"),Kt.includes(s)&&(r="mathml"),(...t)=>0===t.length?new Bt({element:s,name:s,type:r}):["string","number"].includes(typeof t[0])||t[0]instanceof Bt||"function"==typeof t[0]&&t[0]().isStateGetter()?new Bt({element:s,name:s,type:r}).append(...t):new Bt({element:s,type:r}).setAttr(t.shift()).append(...t)}});function Qt(t){return 1==t?this.style({flexDirection:"column"}):-1==t&&this.style({flexDirection:"column-reverse"}),this}function Yt(t){return 1==t?this.style({flexDirection:"row"}):-1==t&&this.style({flexDirection:"row-reverse"}),this}function Xt(t){return"number"==typeof t&&(t=["flex-start","center","flex-end"][t+1]),t}function te(t){return Xt(-t)}class ee extends Bt{constructor({tag:t="div",orientation:e="h",order:r,w:s="100%",h:n="100%"}={}){super({element:t,name:"Flex"}),this.direction="cols",this.style({display:"flex"})}isFlex(){return!0}responsify(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,r=1){return Qt.call(this,r),this.style({alignItems:"number"==typeof t?Xt.call(this,t):t,justifyContent:"number"==typeof e?te.call(this,e):e}),this}horizontal(t,e,r=1){return Yt.call(this,r),this.style({alignItems:"number"==typeof e?te.call(this,e):e,justifyContent:"number"==typeof t?Xt.call(this,t):t}),this}show(){return this.isHidden=!1,this.style({display:"flex"}),this}}class re extends pt{constructor({element:t,name:e,type:r,render:s}){super({element:t,name:e,type:r,render:s})}}class se extends re{constructor(t,e){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=t,this.append(t),(async()=>{try{const r=await e();t.unmount(),this.append(r)}catch(t){console.log({error:t})}})()}}class ne extends Bt{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 ie extends Bt{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:r,attributes:s}=e,n=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:t,value:e}of s)n.setAttribute(t,e);return n.append(...r),globalThis.svg=e,globalThis.children=r,globalThis.attributes=s,globalThis.element=n,n}throw new Error("DOMParser is not available in this environment")}(t)),this.style({display:"contents"})}}class oe extends Bt{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:ae,sqrt:he,cos:ce,sin:le,acos:ue,pow:me}=Math,pe=t=>t,fe=(t,e=7.5625,r=2.75)=>t<1/r?e*t*t:t<2/r?e*(t-=1.5/r)*t+.75:t<2.5/r?e*(t-=2.25/r)*t+.9375:e*(t-=2.625/r)*t+.984375;class de{constructor(t,{ease:e=pe,step:r=50,t0:s=0,start:n=!0,duration:i=3e3}={}){this.callback=t,this.state={isRunning:!1,animationId:null,startTime:null,ease:e,step:r,autoStart:n,duration:i},this.t=0,this.tx=0,this.ty=0,this.i=0,this.state.autoStart&&this.start()}#c=()=>{this.t+=this.state.step,this.i++,this.tx=j(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)};#l(t=!0){return this.state.isRunning||(t&&this.reset(!1),this.state.isRunning=!0,this.state.startTime=Date.now(),this.state.animationId=setInterval(this.#c,this.state.step)),this}start(){return this.#l(!0)}pause(){return this.state.isRunning&&(clearInterval(this.state.animationId),this.state.isRunning=!1),this}resume(){return this.#l(!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 ge{constructor(t,e,r=1/0,s){this.ms=e,this.fn=t,this.count=r,this.frame=1,this.id=null,this.running=!1,s&&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 be extends ge{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 we{constructor(t=[],{repeat:e=1,loop:r=!1}={}){this.tasks=t,this.repeat=e,this.loop=r,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 r=>{e>0&&await new Promise(t=>setTimeout(t,e)),this.onTask&&this.onTask(t),await t(),r()})));else{const{fn:e,delay:r=0}=t;r>0&&await new Promise(t=>setTimeout(t,r)),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 ye{constructor(t,{step:e=1e3,t0:r=0,t1:s=1/0,autoplay:n=!0}={}){this.callback=t,this.cache={isRunning:!1,id:null,last_tick:null,step:e,t0:r,t1:s,autoplay:n,pauseTime:null,frame:0},n&&(r?this.startAfter(r):this.start(),s!==1/0&&this.stopAfter(s))}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 ve=(t,e=",")=>t.trim().trimEnd().split("\n").map(t=>t.split(e)),xe=(t,e=",")=>{const[r,...s]=ve(t,e);return s.map(t=>{const e={};return r.forEach((r,s)=>{e[r]=t[s]}),e})},_e=t=>t instanceof Array?[Object.keys(t[0]),...t.map(t=>Object.values(t))]:[Object.keys(t)],Me=(t,e)=>_e(t).map(t=>t.join(e)).join("\n"),ke=(t,e=",")=>Me(t instanceof Object?t:JSON.parse(t),e),Ce=(t,e)=>{const r=[];if(Array.isArray(t))t.forEach(t=>{if("object"==typeof t&&null!==t){r.push(`${e}-`);const s=Ce(t,`${e} `);r.push(...s)}else r.push(`${e}- ${t}`)});else for(const s in t)if(t.hasOwnProperty(s)){const n=t[s];if("object"==typeof n&&null!==n){r.push(`${e}${s}:`);const t=Ce(n,`${e} `);r.push(...t)}else r.push(`${e}${s}: ${n}`)}return r},Ee=(t,e="")=>Ce(t,e).join("\n"),Te=(t,e)=>Ee(t instanceof Object?t:JSON.parse(t),e),Se=(t,e=1)=>{let r="";for(const s in t)if(t.hasOwnProperty(s)){const n=t[s];r+="\n"+" ".repeat(e)+`<${s}>`,r+="object"==typeof n?Se(n,e+2):`${n}`,r+=`</${s}>`}return r.trim()},Ae=t=>(new XMLSerializer).serializeToString(t),je=t=>btoa(Ae(t)),Oe=t=>"data:image/svg+xml;base64,"+je(t),Re=t=>JSON.stringify(n(t=>["number","string","boolean","bigint"].includes(typeof t)?String(t):t instanceof y||t instanceof N?t.toString():t instanceof Array?Pe(t):void 0,t),null," ").replace(/"([^"]+)":/g,"$1:").replace(/: "([^"]+)"/g,": $1"),Ie=