ziko 2.0.0-beta.16.2 → 2.0.0-beta.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ziko.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  /*
3
3
  Project: ziko
4
4
  Author: Zakaria Elalaoui
5
- Date: 2026-10-05
5
+ Date: 2026-10-10
6
6
  Git-Repo : https://github.com/zikojs/ziko
7
7
  Git-Wiki : https://github.com/zikojs/ziko/wiki
8
8
  Released under MIT License
@@ -171,20 +171,17 @@ const __UI__ = new UIStore();
171
171
  const __Config__ = {
172
172
  default:{
173
173
  target:null,
174
- render:true,
175
- // math:{
176
- // mode:"deg"
177
- // }
174
+ autoMount:false,
178
175
  },
179
176
  setDefault:function(pairs){
180
- const keys=Object.keys(pairs);
181
- const values=Object.values(pairs);
177
+ const keys = Object.keys(pairs);
178
+ const values = Object.values(pairs);
182
179
  for(let i=0; i<keys.length; i++) this.default[keys[i]]=values[i];
183
180
  },
184
181
  init:()=>{
185
182
  // document.documentElement.setAttribute("data-engine","zikojs")
186
183
  },
187
- renderingMode :"spa",
184
+ renderingMode :'spa',
188
185
  isSSC : false,
189
186
  };
190
187
 
@@ -278,7 +275,7 @@ let UIElement$1 = class UIElement extends UINode{
278
275
  constructor(){
279
276
  super();
280
277
  }
281
- init({element, name, type, mount, props = {}, items = []} = {}){
278
+ init({element, name, type, autoMount, props = {}, items = []} = {}){
282
279
  this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
283
280
  if(typeof element === "string") {
284
281
  switch(type){
@@ -323,7 +320,7 @@ let UIElement$1 = class UIElement extends UINode{
323
320
  globalThis.__Ziko__.__UI__[this.cache.name]
324
321
  ? globalThis.__Ziko__.__UI__[this.cache.name]?.push(this)
325
322
  : globalThis.__Ziko__.__UI__[this.cache.name]=[this];
326
- element && mount && this?.mount?.();
323
+ element && autoMount && this?.mount?.();
327
324
  globalThis.__Ziko__.__UI__.push(this);
328
325
 
329
326
  const parsed_props = parse_props(props);
@@ -1153,7 +1150,7 @@ class UIElement extends UIElement$1 {
1153
1150
  element,
1154
1151
  name = "",
1155
1152
  type = "html",
1156
- render = __Ziko__.__Config__.default.render,
1153
+ autoMount = __Ziko__.__Config__.default.autoMount,
1157
1154
  props,
1158
1155
  } = {}) {
1159
1156
  super();
@@ -1162,18 +1159,14 @@ class UIElement extends UIElement$1 {
1162
1159
  };
1163
1160
  register_to_class(
1164
1161
  this,
1165
- // LifecycleMethods,
1166
1162
  AttrsMethods,
1167
- // DomMethods,
1168
- // StyleMethods,
1169
- // IndexingMethods,
1170
1163
  PtrListeners,
1171
1164
  ClickListeners,
1172
1165
  KeyListeners,
1173
1166
  ViewListeners,
1174
1167
  );
1175
1168
 
1176
- if (element) this.init({ element, name, type, render, props });
1169
+ if (element) this.init({ element, name, type, autoMount, props });
1177
1170
  }
1178
1171
  on(
1179
1172
  event_name,
@@ -1349,11 +1342,11 @@ class UIElement extends UIElement$1 {
1349
1342
  // Dom
1350
1343
 
1351
1344
  append(...ele) {
1352
- this.__addItems__("append", "push", ...ele);
1345
+ this.#__addItems__("append", "push", ...ele);
1353
1346
  return this;
1354
1347
  }
1355
1348
  prepend(...ele) {
1356
- this.this.__addItems__("prepend", "unshift", ...ele);
1349
+ this.this.#__addItems__("prepend", "unshift", ...ele);
1357
1350
  return this;
1358
1351
  }
1359
1352
  insertAt(index, ...ele) {
@@ -1380,29 +1373,36 @@ class UIElement extends UIElement$1 {
1380
1373
  return this;
1381
1374
  }
1382
1375
 
1383
- async __addItem__(adder, pusher, item, referenceNode = null, index = null) {
1376
+ async #__addItem__(adder, pusher, item, referenceNode = null, index = null) {
1384
1377
  const { element: itemsTargetEl, items } = this.itemsTarget;
1385
- if (["number", "string"].includes(typeof item)) item = text(item);
1386
- if (typeof item === "function" && isStateGetter(item)) {
1378
+ if(["number", "string"].includes(typeof item)) item = text(item);
1379
+ if(typeof item === "function" && isStateGetter(item)) {
1387
1380
  const getter = item();
1388
- item = getter.value;
1389
-
1390
- getter._subscribe((newValue) => {
1391
- if (newValue?.isUIElement?.()) {
1392
- item.element.replaceWith(newValue.element);
1393
- item = newValue;
1394
- } else {
1395
- item.element.textContent = newValue;
1381
+ let currentItem = normalize(getter.value);
1382
+ item = currentItem;
1383
+ getter._subscribe((value) => {
1384
+ const nextItem = normalize(value);
1385
+ if (nextItem === currentItem) return;
1386
+ const currentIndex = items.indexOf(currentItem);
1387
+ if (currentIndex !== -1) {
1388
+ currentItem.element.replaceWith(nextItem.element);
1389
+ items[currentIndex] = nextItem;
1390
+ }
1391
+ else if (currentItem.element.parentNode) {
1392
+ currentItem.element.replaceWith(nextItem.element);
1393
+ }
1394
+ else {
1395
+ return;
1396
1396
  }
1397
+ nextItem.cache.parent = this;
1398
+ nextItem.target = itemsTargetEl;
1399
+ currentItem = nextItem;
1397
1400
  });
1398
1401
  }
1399
- if (
1400
- typeof globalThis?.Node === "function" &&
1401
- item instanceof globalThis.Node
1402
- )
1403
- item = new UIElement({element : item});
1404
- if (item instanceof Promise) item = await item;
1405
- if (item?.isUINode) {
1402
+ if( typeof globalThis?.Node === "function" && item instanceof globalThis.Node)
1403
+ item = new UIElement({ element: item });
1404
+ if(item instanceof Promise) item = await item;
1405
+ if(item?.isUINode) {
1406
1406
  item.cache.parent = this;
1407
1407
  item.target = itemsTargetEl;
1408
1408
  if (adder === "insertBefore" && itemsTargetEl)
@@ -1414,15 +1414,25 @@ class UIElement extends UIElement$1 {
1414
1414
  return;
1415
1415
  }
1416
1416
  }
1417
-
1418
- async __addItems__(adder, pusher, ...elements) {
1417
+ async #__addItems__(adder, pusher, ...elements) {
1419
1418
  for (const item of elements) {
1420
- await this.__addItem__(adder, pusher, item);
1419
+ await this.#__addItem__(adder, pusher, item);
1421
1420
  }
1422
1421
  this.maintain();
1423
1422
  return this;
1424
1423
  }
1425
- }
1424
+ }
1425
+
1426
+ const normalize = (value) => {
1427
+ if (value?.isUINode) return value;
1428
+ if (
1429
+ typeof globalThis.Node === "function" &&
1430
+ value instanceof globalThis.Node
1431
+ ) {
1432
+ return new UIElement({ element: value });
1433
+ }
1434
+ return text(value ?? "");
1435
+ };
1426
1436
 
1427
1437
  const HTMLTags = [
1428
1438
  'a',
package/dist/ziko.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /*
3
3
  Project: ziko
4
4
  Author: Zakaria Elalaoui
5
- Date: 2026-10-05
5
+ Date: 2026-10-10
6
6
  Git-Repo : https://github.com/zikojs/ziko
7
7
  Git-Wiki : https://github.com/zikojs/ziko/wiki
8
8
  Released under MIT License
@@ -175,20 +175,17 @@
175
175
  const __Config__ = {
176
176
  default:{
177
177
  target:null,
178
- render:true,
179
- // math:{
180
- // mode:"deg"
181
- // }
178
+ autoMount:false,
182
179
  },
183
180
  setDefault:function(pairs){
184
- const keys=Object.keys(pairs);
185
- const values=Object.values(pairs);
181
+ const keys = Object.keys(pairs);
182
+ const values = Object.values(pairs);
186
183
  for(let i=0; i<keys.length; i++) this.default[keys[i]]=values[i];
187
184
  },
188
185
  init:()=>{
189
186
  // document.documentElement.setAttribute("data-engine","zikojs")
190
187
  },
191
- renderingMode :"spa",
188
+ renderingMode :'spa',
192
189
  isSSC : false,
193
190
  };
194
191
 
@@ -282,7 +279,7 @@
282
279
  constructor(){
283
280
  super();
284
281
  }
285
- init({element, name, type, mount, props = {}, items = []} = {}){
282
+ init({element, name, type, autoMount, props = {}, items = []} = {}){
286
283
  this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
287
284
  if(typeof element === "string") {
288
285
  switch(type){
@@ -327,7 +324,7 @@
327
324
  globalThis.__Ziko__.__UI__[this.cache.name]
328
325
  ? globalThis.__Ziko__.__UI__[this.cache.name]?.push(this)
329
326
  : globalThis.__Ziko__.__UI__[this.cache.name]=[this];
330
- element && mount && this?.mount?.();
327
+ element && autoMount && this?.mount?.();
331
328
  globalThis.__Ziko__.__UI__.push(this);
332
329
 
333
330
  const parsed_props = parse_props(props);
@@ -1157,7 +1154,7 @@
1157
1154
  element,
1158
1155
  name = "",
1159
1156
  type = "html",
1160
- render = __Ziko__.__Config__.default.render,
1157
+ autoMount = __Ziko__.__Config__.default.autoMount,
1161
1158
  props,
1162
1159
  } = {}) {
1163
1160
  super();
@@ -1166,18 +1163,14 @@
1166
1163
  };
1167
1164
  register_to_class(
1168
1165
  this,
1169
- // LifecycleMethods,
1170
1166
  AttrsMethods,
1171
- // DomMethods,
1172
- // StyleMethods,
1173
- // IndexingMethods,
1174
1167
  PtrListeners,
1175
1168
  ClickListeners,
1176
1169
  KeyListeners,
1177
1170
  ViewListeners,
1178
1171
  );
1179
1172
 
1180
- if (element) this.init({ element, name, type, render, props });
1173
+ if (element) this.init({ element, name, type, autoMount, props });
1181
1174
  }
1182
1175
  on(
1183
1176
  event_name,
@@ -1353,11 +1346,11 @@
1353
1346
  // Dom
1354
1347
 
1355
1348
  append(...ele) {
1356
- this.__addItems__("append", "push", ...ele);
1349
+ this.#__addItems__("append", "push", ...ele);
1357
1350
  return this;
1358
1351
  }
1359
1352
  prepend(...ele) {
1360
- this.this.__addItems__("prepend", "unshift", ...ele);
1353
+ this.this.#__addItems__("prepend", "unshift", ...ele);
1361
1354
  return this;
1362
1355
  }
1363
1356
  insertAt(index, ...ele) {
@@ -1384,29 +1377,36 @@
1384
1377
  return this;
1385
1378
  }
1386
1379
 
1387
- async __addItem__(adder, pusher, item, referenceNode = null, index = null) {
1380
+ async #__addItem__(adder, pusher, item, referenceNode = null, index = null) {
1388
1381
  const { element: itemsTargetEl, items } = this.itemsTarget;
1389
- if (["number", "string"].includes(typeof item)) item = text(item);
1390
- if (typeof item === "function" && isStateGetter(item)) {
1382
+ if(["number", "string"].includes(typeof item)) item = text(item);
1383
+ if(typeof item === "function" && isStateGetter(item)) {
1391
1384
  const getter = item();
1392
- item = getter.value;
1393
-
1394
- getter._subscribe((newValue) => {
1395
- if (newValue?.isUIElement?.()) {
1396
- item.element.replaceWith(newValue.element);
1397
- item = newValue;
1398
- } else {
1399
- item.element.textContent = newValue;
1385
+ let currentItem = normalize(getter.value);
1386
+ item = currentItem;
1387
+ getter._subscribe((value) => {
1388
+ const nextItem = normalize(value);
1389
+ if (nextItem === currentItem) return;
1390
+ const currentIndex = items.indexOf(currentItem);
1391
+ if (currentIndex !== -1) {
1392
+ currentItem.element.replaceWith(nextItem.element);
1393
+ items[currentIndex] = nextItem;
1394
+ }
1395
+ else if (currentItem.element.parentNode) {
1396
+ currentItem.element.replaceWith(nextItem.element);
1397
+ }
1398
+ else {
1399
+ return;
1400
1400
  }
1401
+ nextItem.cache.parent = this;
1402
+ nextItem.target = itemsTargetEl;
1403
+ currentItem = nextItem;
1401
1404
  });
1402
1405
  }
1403
- if (
1404
- typeof globalThis?.Node === "function" &&
1405
- item instanceof globalThis.Node
1406
- )
1407
- item = new UIElement({element : item});
1408
- if (item instanceof Promise) item = await item;
1409
- if (item?.isUINode) {
1406
+ if( typeof globalThis?.Node === "function" && item instanceof globalThis.Node)
1407
+ item = new UIElement({ element: item });
1408
+ if(item instanceof Promise) item = await item;
1409
+ if(item?.isUINode) {
1410
1410
  item.cache.parent = this;
1411
1411
  item.target = itemsTargetEl;
1412
1412
  if (adder === "insertBefore" && itemsTargetEl)
@@ -1418,15 +1418,25 @@
1418
1418
  return;
1419
1419
  }
1420
1420
  }
1421
-
1422
- async __addItems__(adder, pusher, ...elements) {
1421
+ async #__addItems__(adder, pusher, ...elements) {
1423
1422
  for (const item of elements) {
1424
- await this.__addItem__(adder, pusher, item);
1423
+ await this.#__addItem__(adder, pusher, item);
1425
1424
  }
1426
1425
  this.maintain();
1427
1426
  return this;
1428
1427
  }
1429
- }
1428
+ }
1429
+
1430
+ const normalize = (value) => {
1431
+ if (value?.isUINode) return value;
1432
+ if (
1433
+ typeof globalThis.Node === "function" &&
1434
+ value instanceof globalThis.Node
1435
+ ) {
1436
+ return new UIElement({ element: value });
1437
+ }
1438
+ return text(value ?? "");
1439
+ };
1430
1440
 
1431
1441
  const HTMLTags = [
1432
1442
  'a',
package/dist/ziko.min.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /*
2
2
  Project: ziko
3
3
  Author: Zakaria Elalaoui
4
- Date: 2026-10-05
4
+ Date: 2026-10-10
5
5
  Git-Repo : https://github.com/zikojs/ziko
6
6
  Git-Wiki : https://github.com/zikojs/ziko/wiki
7
7
  Released under MIT License
8
8
  */
9
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Ziko={})}(this,function(e){"use strict";const{PI:t,E:s}=Math,n=Number.EPSILON,i=e=>"object"!=typeof e&&"function"!=typeof e||null===e,r=(e,...t)=>{const s=t.map(t=>i(t)||t?.__mapfun__?e(t):t instanceof Array?t.map(t=>r(e,t)):ArrayBuffer.isView(t)?t.map(t=>e(t)):t instanceof Set?new Set(r(e,...t)):t instanceof Map?new Map([...t].map(t=>[t[0],r(e,t[1])])):t.isMatrix?.()?new t.constructor(t.rows,t.cols,r(t.arr.flat(1))):t instanceof Object?Object.fromEntries(Object.entries(t).map(t=>[t[0],r(e,t[1])])):void 0);return 1==s.length?s[0]:s},a=(e,t)=>e.isComplex?.()?new e.constructor(t(e.a),t(e.b)):e.isMatrix?.()?new e.constructor(e.rows,e.cols,e.arr.flat(1).map(t)):e instanceof Array?r(t,...e):t(e),o=(e,t,s)=>a(e,e=>t!==s?(e-t)/(s-t):0),c=(e,t,s)=>a(e,e=>(s-t)*e+t),l=(e,t,s=!0)=>{if(e instanceof Array&&!(t instanceof Array))return r(e=>l(e,t,s),...e);if(t instanceof Array&&!(e instanceof Array))return r(t=>l(e,t,s),...t);if(e instanceof Array&&t instanceof Array)return e.map((e,n)=>l(e,t[n],s));const n=Math.atan2(e,t);return s?n:180*n/Math.PI};class h{constructor(e){this.cache={node:e}}isUINode(){return!0}get node(){return this.cache.node}}class u extends Array{constructor(...e){super(...e)}clear(){return this.length=0,this}getItemById(e){return this.find(t=>t.element.id===e)}getItemsByTagName(e){return this.filter(t=>t.element.tagName.toLowerCase()===e.toLowerCase())}getElementsByClassName(e){return this.filter(t=>t.element.classList?.contains(e))}querySelector(e){const t=globalThis?.document?.querySelector(e);return t&&this.find(e=>e.element===t)||null}querySelectorAll(e){const t=globalThis?.document?.querySelectorAll(e);return Array.from(t).map(e=>this.find(t=>t.element===e)).filter(Boolean)}}const p=new u,m={default:{target:null,render:!0},setDefault:function(e){const t=Object.keys(e),s=Object.values(e);for(let e=0;e<t.length;e++)this.default[t[e]]=s[e]},init:()=>{},renderingMode:"spa",isSSC:!1},d={store:new Map,index:0,register:function(e){this.store.set(this.index++,e)},reset(){this.index=0,this.store.clear()}},f={ui_index:0,get_ui_index:function(){return this.ui_index++},register_ui:function(e){}};var g={store:new Map,index:0,session_storage:null,register:function(e){},update:function(e,t){}};var y;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:p,__HYDRATION__:d,__State__:g,__Config__:m,__CACHE__:f,__PROVIDERS__:{}},y=__Ziko__,Object.defineProperties(y,{QueryParams:{get:function(){return function(e){const t={};return e.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,e=>{const[s,n]=e.split("=");t[s]=n}),t}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}));let b=class extends h{constructor(){super()}init({element:e,name:t,type:s,mount:n,props:i={},items:r=[]}={}){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof e)switch(s){case"html":e=globalThis?.document?.createElement(e);break;case"svg":e=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg",e);break;default:throw Error("Not supported")}else this.target=e?.parentElement;Object.assign(this.cache,{name:t,itemsTarget:this,isInteractive:!1,parent:null}),e&&Object.assign(this.cache,{element:e}),this.items=new u,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],e&&n&&this?.mount?.(),globalThis.__Ziko__.__UI__.push(this);const a=((e={})=>{const t={methods:{},events:{},style:{},attrs:{}};for(const[s,n]of Object.entries(e))"style"===s?t.style=n:s.startsWith("$")?t.methods[s.slice(1)]=n:/^on[A-Z]/.test(s)?t.events[s]=n:t.attrs[s]=n;return t})(i);this.parsed_props=a,this.style(a.style),this.setAttr(a.attrs);Object.entries(a.events).forEach(([e,t])=>this[e](t.bind(this))),r.length>0&&this.append(...r)}get element(){return this.cache.element}[Symbol.iterator](){return this.items[Symbol.iterator]()}maintain(){for(let e=0;e<this.items.length;e++)Object.defineProperty(this,e,{value:this.items[e],writable:!0,configurable:!0,enumerable:!1})}isInteractive(){return this.cache.isInteractive}isUIElement(){return!0}};function _(e,...t){t.forEach(t=>function(e,t){const s=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(s)){const n=s[t];"get"in n||"set"in n||"function"!=typeof n.value?Object.defineProperty(Object.getPrototypeOf(e),t,n):"function"==typeof n.value&&(Object.getPrototypeOf(e).hasOwnProperty(t)||Object.defineProperty(Object.getPrototypeOf(e),t,n))}}(e,t))}const v=Symbol.for("ziko/hooks/STATE_GETTER");function w(e){const t={value:e,subscribers:new Set,paused:!1};function s(){return{value:t.value,_subscribe:e=>(t.subscribers.add(e),()=>t.subscribers.delete(e))}}s[v]=!0;return[s,function(e){t.paused||("function"==typeof e&&(e=e(t.value)),Object.is(e,t.value)||(t.value=e,t.subscribers.forEach(e=>e(t.value))))},{pause:()=>{t.paused=!0},resume:()=>{t.paused=!1},clear:()=>{t.subscribers.clear()},force:e=>{"function"==typeof e&&(e=e(t.value)),t.value=e,t.subscribers.forEach(e=>e(t.value))},getSubscribers:()=>new Set(t.subscribers)}]}const k=e=>"function"==typeof e&&!0===e[v],E=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`-${e.toLowerCase()}`:e.toLowerCase()),x=(e="")=>{if(0===e.length)return!1;return/^[a-z][a-zA-Z0-9]*$/.test(e)};function C(e,t){if(globalThis.SVGAElement&&this.element instanceof globalThis.SVGAElement&&(e=x(e)?E(e):e),k(t)){t()._subscribe(t=>this.element?.setAttribute(e,t),this)}else this.element?.setAttribute(e,t)}var T=Object.freeze({__proto__:null,_set_attrs_:C,getAttr:function(e){return this.element.attributes[e].value},removeAttr:function(...e){for(let t=0;t<e.length;t++)this.element?.removeAttribute(e[t]);return this},setAttr:function(e,t){if(e instanceof Object){const[s,n]=[Object.keys(e),Object.values(e)];for(let e=0;e<s.length;e++)n[e]instanceof Array&&(t[e]=n[e].join(" ")),C.call(this,s[e],n[e])}else t instanceof Array&&(t=t.join(" ")),C.call(this,e,t);return this},setContentEditable:function(e=!0){return this.setAttr("contenteditable",e),this}});class A extends h{constructor(...e){super("span","text",!1,...e),this.element=globalThis?.document?.createTextNode(...e)}isText(){return!0}}const I=(...e)=>new A(...e);class S{constructor(e,t){this.cache={category:t,target:e,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(e,t,{preventDefault:s=!1,paused:n=!1}={}){return this.cache.listeners[e]={callback:s=>{this.cache.event=s,this.cache.listeners[e].preventDefault&&s.preventDefault(),this.cache.listeners[e].paused||(this.cache.currentEvent=e,t.call(this,this))},preventDefault:s,paused:n},this.element.addEventListener(e,this.cache.listeners[e].callback),this}removeListener(e){return this.element.removeEventListener(e,this.cache.listeners[e].callback),this}pause(e){return this.cache.listeners[e].paused=!0,this}resume(e){return this.cache.listeners[e].paused=!1,this}preventDefault(e){return this.cache.listeners[e].preventDefault=!0,this}useDefault(e){return this.cache.listeners[e].preventDefault=!1,this}}class L extends Event{constructor(e,t){super("clickaway",{bubbles:!0,cancelable:!0}),this.originalEvent=e,this.targetElement=t}}function O(e){function t(t){if(!e.contains(t.target)){const s=new L(t,e);e.dispatchEvent(s)}}return globalThis?.document?.addEventListener("click",t),()=>globalThis?.document?.removeEventListener("click",t)}const j=(e,t=!1)=>{const s=e.element.getBoundingClientRect(),n=e.event;let i=n?.clientX-s.left|0,r=n?.clientY-s.top|0;if(t){const t=e.element.clientWidth,s=e.element.clientHeight;i=+(i/t*2-1).toFixed(8),r=+(r/s*-2+1).toFixed(8)}return{x:i,y:r}},P="click",M={onClick(e){return this.on("click",e,{category:P})},onDblClick(e){return this.on("dblclick",e,{category:P})},onClickAway(e){var t,s,n;return t=this,s=P,n="clickaway",t.exp.events?.[s]?.cache?.customEvents?.has(n)||O(this.element),this.on("clickaway",e,{category:P,isCustom:!0})}},D="ptr",W={onPtrDown(e,t=!1){return this.on("pointerdown",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.dx=s,e.dy=n,e.isDown=!0,e.isDragging=e.isMoving??!1}})},onPtrMove(e,t=!1){return this.on("pointermove",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.mx=s,e.my=n,e.isMoving=!0,e.isDragging=e.isDown??!1}})},onPtrUp(e,t=!1){return this.on("pointerup",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.ux=s,e.uy=n,e.isDown=!1,e.isMoving=!1,e.isDragging=!1}})}},U="key",Z={onKeyDown(e){return this.on("keydown",e,{category:U,details_setter:e=>{e.kd=e.event.key}})},onKeyPress(e){return this.on("keypress",e,{category:U,details_setter:e=>{e.kp=e.event.key}})},onKeyUp(e){return this.on("keydown",e,{category:U,details_setter:e=>{e.ku=e.event.key}})}};class R{constructor(e,t,s=1/0,n){this.ms=t,this.fn=e,this.count=s,this.frame=1,this.id=null,this.running=!1,n&&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 $ extends R{constructor(e=1e3/60){super(e,()=>this._tick()),this.elapsed=0,this._lastTime=performance.now(),this._callbacks=new Set}_tick(){const e=performance.now(),t=e-this._lastTime;this.elapsed+=t,this._lastTime=e;for(const e of this._callbacks)e({elapsed:this.elapsed,delta:t})}onTick(e){return this._callbacks.add(e),()=>this._callbacks.delete(e)}reset(){this.elapsed=0,this._lastTime=performance.now()}pause(){super.stop()}resume(){this._lastTime=performance.now(),super.start()}}class F{constructor(e=[],{repeat:t=1,loop:s=!1}={}){this.tasks=e,this.repeat=t,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 e=this.repeat;do{for(const e of this.tasks){if(this.stopped)return;if(Array.isArray(e))await Promise.all(e.map(({fn:e,delay:t=0})=>new Promise(async s=>{t>0&&await new Promise(e=>setTimeout(e,t)),this.onTask&&this.onTask(e),await e(),s()})));else{const{fn:t,delay:s=0}=e;s>0&&await new Promise(e=>setTimeout(e,s)),this.onTask&&this.onTask(t),await t()}}}while(this.loop&&!this.stopped&&(e===1/0||e-- >1));!this.stopped&&this.onEnd&&this.onEnd(),this.running=!1}stop(){this.stopped=!0,this.running=!1}addTask(e){this.tasks.push(e)}clearTasks(){this.tasks=[]}}const N=(e,t)=>{let s=0;return(...n)=>{const i=(new Date).getTime();i-s<t||(s=i,e(...n))}};class B extends CustomEvent{constructor(e,t,{bubbles:s=!0,cancelable:n=!0}={}){super(e,{detail:t,bubbles:s,cancelable:n})}}function z(e,{intersection:t=!0,resize:s=!0,threshold:n=0,throttleResize:i=100,throttleEnterExit:r=0}={}){let a,o;const c=t=>{for(let s of t){const{width:t,height:n}=s.contentRect;e.dispatchEvent(new B("resizeview",{width:t,height:n,entry:s}))}},l=i>0?N(c,i):c,h=t=>{for(let s of t){const t=s.isIntersecting?"enterview":"exitview";e.dispatchEvent(new B(t,s))}},u=r>0?N(h,r):h;return t&&(a=new IntersectionObserver(u,{threshold:n}),a.observe(e)),s&&(o=new ResizeObserver(l),o.observe(e)),()=>{a&&(a.unobserve(e),a.disconnect()),o&&(o.unobserve(e),o.disconnect())}}const G="view",V={onEnterView(e){return this.exp.events?.[G]||z(this.element),this.on("enterview",e,{category:G,isCustom:!0})},onExitView(e){return this.exp.events?.[G]||z(this.element),this.on("exitview",e,{category:G,isCustom:!0})},onResizeView(e){return this.exp.events?.[G]||z(this.element),this.on("resizeview",e,{category:G,isCustom:!0})}};class H extends CustomEvent{constructor(e,t){super(e,{detail:t,bubbles:!0,cancelable:!0})}}class Y extends b{constructor({element:e,name:t="",type:s="html",render:n=__Ziko__.__Config__.default.render,props:i}={}){super(),this.exp={events:{}},_(this,T,W,M,Z,V),e&&this.init({element:e,name:t,type:s,render:n,props:i})}on(e,t,{details_setter:s,category:n="global",isCustom:i=!1,preventDefault:r=!1}={}){e instanceof Array&&e.forEach(e=>this.on(e,t,{details_setter:s,category:n,isCustom:i,preventDefault:r})),n&&!this.exp.events.hasOwnProperty(n)&&(this.exp.events[n]=new S(this,n)),i&&this.exp.events[n].cache.customEvents.add(e);const a=this.exp.events[n];return a.addListener(e,e=>{s&&s(a),t(e)},{preventDefault:r}),this}off(e,t="global"){return this.exp.events[t].removeListener(e),this}get element(){return this.cache.element}get itemsTarget(){return this.cache.itemsTarget}get itemsTargetElement(){return this.itemsTarget.element}setItemsTarget(e){return this.cache.itemsTarget=e,this.items=e.items,this}isInteractive(){return this.cache.isInteractive}useClient(e){return this.cache.isInteractive||(this.element.setAttribute("data-hydration-index",globalThis.__Ziko__.__HYDRATION__.index),globalThis.__Ziko__.__HYDRATION__.register(()=>this.constructor),this.cache.isInteractive=!0),e&&this.element.setAttribute("data-hydration-directive",e),this}get attr(){return this.cache.attributes}get evt(){return this.events}get html(){return this.element.innerHTML}get text(){return this.element.textContent}get parent(){return this.cache.parent}get rect(){return this.element.getBoundingClientRect()}mount(e=this.target,t=0){return this.isBody||(e?.isUIElement&&(e=e.element),this.target=e,this.target?.appendChild(this.element)),this}unmount(){return this.cache.parent?this.cache.parent.remove(this):this.target?.children?.length&&[...this.target.children].includes(this.element)&&this.target.removeChild(this.element),this}at(e){return this.items.at(e)}forEach(e){return this.items.forEach(e),this}map(e){return this.items.map(e)}find(e){return this.items.filter(e)}style(e){if(!this.element?.style)return this;for(let t in e){const s=e[t];if(k(s)){const e=s();Object.assign(this.element.style,{[t]:e.value}),e._subscribe(e=>{Object.assign(this.element.style,{[t]:e})})}else Object.assign(this.element.style,{[t]:s})}return this}size(e,t){return this.style({width:e,height:t})}hide(){}show(){}append(...e){return this.__addItems__("append","push",...e),this}prepend(...e){return this.this.__addItems__("prepend","unshift",...e),this}insertAt(e,...t){const s=this.itemsTarget;if(e>=s.items.length)return this.append(...t);for(let n=0;n<t.length;n++)["number","string"].includes(typeof t[n])&&(t[n]=I(t[n])),s.element?.insertBefore(t[n].element,s.items[e].element),s.items.splice(e,0,t[n]);return s.maintain(),this}remove(...e){const t=e=>{"number"==typeof e&&(e=this.items[e]),e?.isUIElement&&this.itemsTarget.element?.removeChild(e.element),this.items=this.items.filter(t=>t!==e)};for(let s=0;s<e.length;s++)t(e[s]);for(let e=0;e<this.items.length;e++)Object.assign(this,{[[e]]:this.items[e]});return this}async __addItem__(e,t,s,n=null,i=null){const{element:r,items:a}=this.itemsTarget;if(["number","string"].includes(typeof s)&&(s=I(s)),"function"==typeof s&&k(s)){const e=s();s=e.value,e._subscribe(e=>{e?.isUIElement?.()?(s.element.replaceWith(e.element),s=e):s.element.textContent=e})}if("function"==typeof globalThis?.Node&&s instanceof globalThis.Node&&(s=new Y({element:s})),s instanceof Promise&&(s=await s),s?.isUINode)return s.cache.parent=this,s.target=r,"insertBefore"===e&&r?r.insertBefore(s.element,n):"function"==typeof r?.[e]&&r[e](s.element),void("splice"===t&&null!==i?a.splice(i,0,s):"function"==typeof a?.[t]&&a[t](s))}async __addItems__(e,t,...s){for(const n of s)await this.__addItem__(e,t,n);return this.maintain(),this}}const q=["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"],K=["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"],X=["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"],Q=e=>(...t)=>{const s=t[0];return s?.isUIElement?.()||i(s)?new e({},...t):new e(s,...t.slice(1))},J=new Proxy({},{get(e,t){if("string"!=typeof t)return;let s,n=t.replaceAll("_","-").toLowerCase();return q.includes(n)&&(s="html"),K.includes(n)&&(s="svg"),X.includes(n)&&(s="mathml"),(...e)=>{const t=new Y({element:n,name:n,type:s}),i=e[0];return 0===e.length?t:["string","number"].includes(typeof i)||i instanceof Y||k(i)||i instanceof HTMLElement?t.append(...e):new Y({element:n,type:s,props:e.shift()}).append(...e)}}});class ee{constructor(e=10){this.events={},this.maxListeners=e}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this.events[e].length>this.maxListeners&&console.warn(`Warning: Possible memory leak. Event '${e}' has more than ${this.maxListeners} listeners.`),this}once(e,t){const s=(...n)=>{this.off(e,s),t(...n)};return this.on(e,s)}off(e,t){const s=this.events[e];if(!s)return this;const n=s.indexOf(t);return-1!==n&&s.splice(n,1),this}emit(e,t){const s=this.events[e];return!!s&&([...s].forEach(s=>{try{s(t)}catch(t){console.error(`Error in listener for '${e}':`,t)}}),!0)}remove(e){return delete this.events[e],this}clear(){return this.events={},this}setMaxListeners(e){return this.maxListeners=e,this}}function te(e,t="./src/pages",s=["js","ts","jsx","tsx"]){let n=t.endsWith("/")?t.slice(0,-1):t;const i=e.replace(/\\/g,"/");let r=i;n&&i.includes(n)&&(r=i.split(n).pop());const a=r.split("/").filter(Boolean).filter(e=>!/^\([^)]+\)$/.test(e));if(0===a.length)return"/";const o=a[a.length-1],c=new RegExp(`\\.(${s.join("|")})$`),l=s.some(e=>o===`index.${e}`),h=o.replace(c,"");if(a.pop(),!l){const e=h.split(/\.(?![^\[]*\])/);a.push(...e)}return"/"+a.join("/")}function se(e,t){const s=e.split("/").filter(Boolean),n=t.split("/").filter(Boolean);let i=0,r=0;for(;i<s.length&&r<n.length;){const e=s[i];if(e.startsWith("[[...")&&e.endsWith("]]")){if(0===s.length-i-1)return!0;let e=0;for(let t=i+1;t<s.length;t++)s[t].endsWith("]+")||e++;const t=n.length-r-e;if(t<0)return!1;r+=t,i++;continue}if(e.startsWith("[...")&&e.endsWith("]")){if(0===s.length-i-1)return!0;let e=0;for(let t=i+1;t<s.length;t++)s[t].endsWith("]+")||e++;const t=n.length-r;if(t<e)return!1;const a=t-e;if(a<1)return!1;r+=a,i++;continue}if(e.startsWith("[")&&e.endsWith("]+"))n[r]&&r++,i++;else if(e.startsWith("[")&&e.endsWith("]"))i++,r++;else{if(e!==n[r])return!1;i++,r++}}for(;i<s.length;){const e=s[i];if(e.startsWith("[[...")&&e.endsWith("]]"))i++;else{if(!e.endsWith("]+"))return!1;i++}}return i===s.length&&r===n.length}function ne(e){return/(:\w+|\[\[\.\.\.\w+\]\]|\[\.\.\.\w+\]|\[\w+\]\+?)/.test(e)}function ie(e){return[...e].sort((e,t)=>{const s=e.includes("[[..."),n=t.includes("[[..."),i=e.includes("[...")&&!s,r=t.includes("[...")&&!n,a=ne(e),o=ne(t);return s&&!n?1:!s&&n?-1:i&&!r?1:!i&&r||!a&&o?-1:a&&!o?1:t.length-e.length})}const{meta:re,link:ae,script:oe}=J;class ce{constructor({title:e,icon:t,description:s,lang:n,links:i=[],script:r=[],meta:a=[]}={},...o){this.options={title:e,icon:t,description:s,lang:n,links:i,meta:a,script:r},this.ui=o,this.render()}render(){if("undefined"==typeof document)return{...this.options,body:this.ui};const{title:e,icon:t,description:s,lang:n,links:i,meta:r,script:a}=this.options;e&&(document.title=e),n&&(document.documentElement.lang=n),t&&document.head.appendChild(ae({rel:"icon",href:t})),s&&document.head.appendChild(re({name:"description",content:s}));for(const e of i)document.head.appendChild(ae(e));for(const e of r)document.head.appendChild(re(e));for(const e of a)document.head.appendChild(oe(e))}mount(e){return this.ui.forEach(t=>t.mount(e)),this}}const le=async(e,t,s,n)=>{if(!t)return;let i=await t(s);if(n&&(i=n(i)),i instanceof ce)return i.ui.forEach(t=>t.mount(e));i instanceof Array?i.forEach(t=>t.mount(e)):i.mount(e)};const he=e=>Object.fromEntries(new URLSearchParams(globalThis?.location?.search));class ue extends Y{constructor(e,t){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=e,this.append(e),(async()=>{try{const s=await t();e.unmount(),this.append(s)}catch(e){console.log({error:e})}})()}}class pe extends Y{#e=new WeakMap;constructor({activeIndex:e=0}={},...t){super({element:"div"}),this.style({display:"contents"}),this.states={activeIndex:e},this.append(...t),requestAnimationFrame(()=>{this.render()})}get activeItem(){return this.items[this.states.activeIndex]}render(){this.items.forEach((e,t)=>{const s=getComputedStyle(e.element).display;this.#e.set(e,s),t!==this.states.activeIndex&&e.style({display:"none"})})}get DS(){return this.#e}next(e=1){return this.activate(this.states.activeIndex+e)}previous(e=1){return this.activate(this.states.activeIndex-e)}activate(e){if(!this.items.length)return this;const t=this.items.at(this.states.activeIndex);t&&t.style({display:"none"});const s=this.items.length;this.states.activeIndex=(e%s+s)%s;const n=this.items.at(this.states.activeIndex);if(n){const e=this.#e.get(n)||"block";n.style({display:"none"===e?"block":e})}return this}}const me=Q(pe);class de extends Y{constructor(...e){super({element:document.createDocumentFragment()}),this.append(...e)}isFragment(){return!0}}class fe extends de{constructor({each:e,fallback:t,mapFn:s=()=>{}}={}){super(),this.config={each:e,fallback:t,mapFn:s},this.append(...this.config.each.map((e,t)=>this.config.mapFn(e,t)))}}class ge extends Y{constructor(e,t){super(),this.key=e,this.cases=t,this.init()}init(){Object.values(this.cases).filter(e=>e!=this.current).forEach(e=>e.unmount()),super.init(this.current.element)}get current(){const e=Object.keys(this.cases).find(e=>e==this.key)??"default";return this.cases[e]}updateKey(e){return this.key=e,this.replaceElementWith(this.current.element),this}}class ye extends Y{constructor(e){super({element:"div",name:"html_wrappper"}),this.element.append(function(e){if(globalThis?.DOMParser){const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html");return t.body.firstChild.style.display="contents",t.body.firstChild}}(e)),this.style({display:"contents"})}}class be extends Y{constructor(e){super({element:"div",name:"html_wrappper"}),this.element.append(function(e){if("undefined"!=typeof DOMParser){const t=(new DOMParser).parseFromString(e.trim(),"image/svg+xml").documentElement;if("parsererror"===t.nodeName)throw new Error("Invalid SVG string");if(t.hasAttribute("xmlns"))return t;const{children:s,attributes:n}=t,i=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:e,value:t}of n)i.setAttribute(e,t);return i.append(...s),i}throw new Error("DOMParser is not available in this environment")}(e)),this.style({display:"contents"})}}globalThis?.document&&document?.addEventListener("DOMContentLoaded",__Ziko__.__Config__.init()),e.ClickAwayEvent=L,e.ClickListeners=M,e.Clock=$,e.E=s,e.EPSILON=n,e.EventController=S,e.For=({each:e,fallback:t,mapFn:s}={})=>new fe({each:e,fallback:t,mapFn:s}),e.Fragment=(...e)=>new de(...e),e.HTMLWrapper=e=>new ye(e),e.KeyListeners=Z,e.PI=t,e.PtrListeners=W,e.SVGWrapper=e=>new be(e),e.Scheduler=(e,{repeat:t=null}={})=>new F(e,{repeat:t}),e.Suspense=(e,t)=>new ue(e,t),e.Swap=me,e.SwipeEvent=H,e.Switch=({key:e,cases:t})=>new ge(e,t),e.Tick=R,e.TimeScheduler=F,e.UIElement=Y,e.UIFragment=de,e.UIHTMLWrapper=ye,e.UISVGWrapper=be,e.UISuspense=ue,e.UISwap=pe,e.UISwitch=ge,e.UIView=class extends Y{constructor(...e){super({element:"div",name:"view"}),this.append(...e)}},e.View=(...e)=>Q(Y),e.ViewEvent=B,e.ViewListeners=V,e.apply_fun=a,e.atan2=l,e.camel2constantcase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`_${e}`:e).toUpperCase(),e.camel2hyphencase=E,e.camel2pascalcase=(e="")=>e.charAt(0).toUpperCase()+e.slice(1),e.camel2snakecase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`_${e.toLowerCase()}`:e.toLowerCase()),e.clamp=(e,t,s)=>a(e,e=>Math.min(Math.max(e,t),s)),e.clock=e=>new $(e),e.constant2camelcase=(e="")=>e.toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),e.constant2hyphencase=(e="")=>e.toLowerCase().replace(/_/g,"-"),e.constant2pascalcase=(e="")=>e.toLowerCase().split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.constant2snakecase=(e="")=>e.toLowerCase(),e.createFileBasedRouter=async function({pages:e={},url:t=("undefined"!=typeof location?location.pathname:"/"),target:s=("undefined"!=typeof document?document.body:null),extensions:n=["js","ts"],base:i="/",lazy:r=!0,renderer:a=le,wrapper:o,namedExportHandler:c={Get:async(e,t)=>{if("function"==typeof e)return await e(t)}}}={}){let l=s;s&&"object"==typeof s&&"element"in s&&(l=s.element);let h="."===i?"":i.replace(/\/$/,"");h&&!h.startsWith("/")&&(h="/"+h);let u=decodeURIComponent(t.replace(/\/$/,""))||"/";h&&u.startsWith(h)&&(u=u.slice(h.length)||"/");let p=u.startsWith("/")?u:"/"+u;const m=Object.keys(e),d=function(e){if(0===e.length)return"";const t=e.map(e=>{const t=e.split("/");return t.pop(),t}),s=Math.min(...t.map(e=>e.length));let n=[];for(let e=0;e<s;e++){const s=t[0][e];if(!t.every(t=>t[e]===s||t[e].startsWith("[")))break;n.push(s)}return n.join("/")+(n.length?"/":"")}(m);let f=null,g=null,y=null,b=null,_={};if(r){const t={};for(const e of m){t[te(e,d,n)]=e}const s=ie(Object.keys(t));for(const e of s)if(se(e,p)){f=e;break}if(null===f)return{mask:null,component:null,params:{},matched:!1};b=t[f];try{y=await e[b]();const{default:t,...s}=y;g=t,_=s}catch(e){return console.error(`[Router] Failed to load module for route: ${b}`,e),{mask:null,component:null,params:{},matched:!1,error:e}}}else{const t={},s={};for(const i of m){const r=await e[i](),{default:a}=r,o=te(i,d,n);t[o]=a,s[o]={module:r,rawRoute:i}}const i=ie(Object.keys(t));for(const e of i)if(se(e,p)){f=e,g=t[e];break}if(null===f)return{mask:null,component:null,params:{},matched:!1};if(f in s){y=s[f].module,b=s[f].rawRoute;const{default:e,...t}=y;_=t}}const v=ne(f)?function(e,t){const s=e.split("/").filter(Boolean),n=t.split("/").filter(Boolean),i={};let r=0,a=0;for(;r<s.length&&a<n.length;){const e=s[r];if(e.startsWith("[[...")&&e.endsWith("]]")){const t=e.slice(5,-2);if(0==s.length-r-1){i[t]=n.slice(a).join("/");break}let o=0;for(let e=r+1;e<s.length;e++)s[e].endsWith("]+")||o++;const c=n.length-a-o;if(!(c>=0))return{};i[t]=n.slice(a,a+c).join("/"),a+=c,r++;continue}if(e.startsWith("[...")&&e.endsWith("]")){const t=e.slice(4,-1);if(0==s.length-r-1){i[t]=n.slice(a).join("/");break}let o=0;for(let e=r+1;e<s.length;e++)s[e].endsWith("]+")||o++;const c=n.length-a-o;if(!(c>=1))return{};i[t]=n.slice(a,a+c).join("/"),a+=c,r++;continue}if(e.startsWith("[")&&e.endsWith("]+")){const t=e.slice(1,-2);n[a]&&(i[t]=n[a],a++),r++;continue}if(e.startsWith("[")&&e.endsWith("]"))i[e.slice(1,-1)]=n[a];else if(e!==n[a])return{};r++,a++}for(;r<s.length;){const e=s[r];if(e.startsWith("[[...")&&e.endsWith("]]")){const t=e.slice(5,-2);t in i||(i[t]="")}r++}return i}(f,p):{};for(const e in c)e in _&&"function"==typeof c[e]&&await c[e](_[e],{route:b,mask:f,module:y,currentPath:p,params:v});return l&&"function"==typeof a&&await a(l,g,v,o),{mask:f,component:g,params:v,namedExports:_,matched:!0}},e.debounce=(e,t=1e3)=>(...s)=>setTimeout(()=>e(...s),t),e.deg2rad=(...e)=>r(e=>e*Math.PI/180,...e),e.hyphen2camelcase=(e="")=>e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()),e.hyphen2constantcase=(e="")=>e.replace(/-/g,"_").toUpperCase(),e.hyphen2pascalcase=(e="")=>e.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.hyphen2snakecase=(e="")=>e.replace(/-/g,"_"),e.hypot=(...e)=>{const t=e.find(e=>e.isComplex?.());if(t){const s=e.map(e=>e.isComplex?.()?e:new t.constructor(e,0));return Math.hypot(...s.map(e=>e.z))}return Math.hypot(...e)},e.isStateGetter=k,e.is_anagram=(e,t)=>(e=e.split("").sort(),t=t.split("").sort(),JSON.stringify(e)===JSON.stringify(t)),e.is_camelcase=x,e.is_hyphencase=(e="")=>e.split("-").length>0,e.is_isogram=(e="")=>[...new Set(e.toLowerCase())].length===e.length,e.is_palindrome=e=>{const t=e.toLocaleLowerCase();let s,n=t.length;for(s=0;s<n/2;s++)if(t[s]!=t[n-s-1])return!1;return!0},e.is_pascalcalse=(e="")=>{if(0===e.length)return!1;return/^[A-Z][a-zA-Z0-9]*$/.test(e)},e.is_snakeCase=(e="")=>e.split("_").length>0,e.lerp=c,e.map=(e,t,s,n,i)=>a(e,e=>c(o(e,t,s),n,i)),e.mapfun=r,e.norm=o,e.pascal2camelcase=(e="")=>e.charAt(0).toLowerCase()+e.slice(1),e.pascal2constantcase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e:`_${e}`).toUpperCase(),e.pascal2hyphencase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e.toLowerCase():`-${e.toLowerCase()}`),e.pascal2snakecase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e.toLowerCase():`_${e.toLowerCase()}`),e.rad2deg=(...e)=>r(e=>e/Math.PI*180,...e),e.register_click_away_event=O,e.register_swipe_event=function(e,t=5,s=100,n=500){let i=0,r=0,a=0,o=!1;function c(e){i=e.clientX,r=e.clientY,a=performance.now(),o=!0}function l(c){if(!o)return;o=!1;const l=c.clientX-i,h=c.clientY-r;let u=null,p=null;performance.now()-a<=n&&(Math.abs(l)>=t&&Math.abs(h)<=s?(u=l<0?"left":"right",p="swipe"+u):Math.abs(h)>=t&&Math.abs(l)<=s&&(u=h<0?"up":"down",p="swipe"+u)),p&&e.dispatchEvent(new H(p,{direction:u,distX:l,distY:h,originalEvent:c}))}return e.addEventListener("pointerdown",c,{passive:!0}),e.addEventListener("pointerup",l,{passive:!0}),()=>{e.removeEventListener("pointerdown",c),e.removeEventListener("pointerup",l)}},e.register_view_event=z,e.sleep=e=>new Promise(t=>setTimeout(t,e)),e.snake2camelcase=(e="")=>e.replace(/_([a-zA-Z])/g,(e,t)=>t.toUpperCase()),e.snake2constantcase=(e="")=>e.toUpperCase(),e.snake2hyphencase=(e="")=>e.replace(/_/g,"-"),e.snake2pascalcase=(e="")=>e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.tags=J,e.throttle=N,e.tick=(e,t,s=1/0,n=!0)=>new R(e,t,s,n),e.timeout=function(e,t){let s;const n=new Promise(n=>{s=setTimeout(()=>{t&&t(),n()},e)});return{id:s,clear:()=>clearTimeout(s),promise:n}},e.useDerived=function(e,t){const s=()=>e(...t.map(e=>e().value));let n=s();const i=new Set,r=()=>{const e=s();Object.is(e,n)||(n=e,i.forEach(e=>e(n)))};t.map(e=>e()._subscribe(r));const a=()=>({value:n,_subscribe:e=>(i.add(e),()=>i.delete(e))});return a[v]=!0,a},e.useEffect=(e,t=[])=>{const s=t.filter(k);let n;const i=()=>{"function"==typeof n&&n(),n=e(s.map(e=>e().value))},r=s.map(e=>e()._subscribe(i));return i(),()=>{r.forEach(e=>e()),"function"==typeof n&&(n(),n=void 0)}},e.useEventEmitter=e=>new ee(e),e.useQueryParams=function(){const e=()=>he();return[e,(t,s=!0)=>{const n=e(),i="function"==typeof t?t(n):t,r=s?{...n,...i}:i,a=new URLSearchParams(r).toString();window.history.pushState({},"",`${window.location.pathname}${a?`?${a}`:""}`),window.dispatchEvent(new CustomEvent("queryparamschange",{detail:r}))}]},e.useReactive=e=>r(e=>{const t=w(e);return{get:t[0],set:t[1]}},e),e.useState=w,e.watchQueryParams=function(e){let t=location.search;const s=()=>{const s=location.search;s!==t&&(t=s,e(he()))};window.addEventListener("popstate",s);const n=history.pushState;history.pushState=function(...e){n.apply(this,e),s()};const i=history.replaceState;return history.replaceState=function(...e){i.apply(this,e),s()},e(he()),()=>{window.removeEventListener("popstate",s)}}});
9
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Ziko={})}(this,function(e){"use strict";const{PI:t,E:s}=Math,n=Number.EPSILON,i=e=>"object"!=typeof e&&"function"!=typeof e||null===e,r=(e,...t)=>{const s=t.map(t=>i(t)||t?.__mapfun__?e(t):t instanceof Array?t.map(t=>r(e,t)):ArrayBuffer.isView(t)?t.map(t=>e(t)):t instanceof Set?new Set(r(e,...t)):t instanceof Map?new Map([...t].map(t=>[t[0],r(e,t[1])])):t.isMatrix?.()?new t.constructor(t.rows,t.cols,r(t.arr.flat(1))):t instanceof Object?Object.fromEntries(Object.entries(t).map(t=>[t[0],r(e,t[1])])):void 0);return 1==s.length?s[0]:s},a=(e,t)=>e.isComplex?.()?new e.constructor(t(e.a),t(e.b)):e.isMatrix?.()?new e.constructor(e.rows,e.cols,e.arr.flat(1).map(t)):e instanceof Array?r(t,...e):t(e),o=(e,t,s)=>a(e,e=>t!==s?(e-t)/(s-t):0),c=(e,t,s)=>a(e,e=>(s-t)*e+t),l=(e,t,s=!0)=>{if(e instanceof Array&&!(t instanceof Array))return r(e=>l(e,t,s),...e);if(t instanceof Array&&!(e instanceof Array))return r(t=>l(e,t,s),...t);if(e instanceof Array&&t instanceof Array)return e.map((e,n)=>l(e,t[n],s));const n=Math.atan2(e,t);return s?n:180*n/Math.PI};class h{constructor(e){this.cache={node:e}}isUINode(){return!0}get node(){return this.cache.node}}class u extends Array{constructor(...e){super(...e)}clear(){return this.length=0,this}getItemById(e){return this.find(t=>t.element.id===e)}getItemsByTagName(e){return this.filter(t=>t.element.tagName.toLowerCase()===e.toLowerCase())}getElementsByClassName(e){return this.filter(t=>t.element.classList?.contains(e))}querySelector(e){const t=globalThis?.document?.querySelector(e);return t&&this.find(e=>e.element===t)||null}querySelectorAll(e){const t=globalThis?.document?.querySelectorAll(e);return Array.from(t).map(e=>this.find(t=>t.element===e)).filter(Boolean)}}const p=new u,m={default:{target:null,autoMount:!1},setDefault:function(e){const t=Object.keys(e),s=Object.values(e);for(let e=0;e<t.length;e++)this.default[t[e]]=s[e]},init:()=>{},renderingMode:"spa",isSSC:!1},d={store:new Map,index:0,register:function(e){this.store.set(this.index++,e)},reset(){this.index=0,this.store.clear()}},f={ui_index:0,get_ui_index:function(){return this.ui_index++},register_ui:function(e){}};var g={store:new Map,index:0,session_storage:null,register:function(e){},update:function(e,t){}};var y;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:p,__HYDRATION__:d,__State__:g,__Config__:m,__CACHE__:f,__PROVIDERS__:{}},y=__Ziko__,Object.defineProperties(y,{QueryParams:{get:function(){return function(e){const t={};return e.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,e=>{const[s,n]=e.split("=");t[s]=n}),t}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}));let b=class extends h{constructor(){super()}init({element:e,name:t,type:s,autoMount:n,props:i={},items:r=[]}={}){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof e)switch(s){case"html":e=globalThis?.document?.createElement(e);break;case"svg":e=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg",e);break;default:throw Error("Not supported")}else this.target=e?.parentElement;Object.assign(this.cache,{name:t,itemsTarget:this,isInteractive:!1,parent:null}),e&&Object.assign(this.cache,{element:e}),this.items=new u,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],e&&n&&this?.mount?.(),globalThis.__Ziko__.__UI__.push(this);const a=((e={})=>{const t={methods:{},events:{},style:{},attrs:{}};for(const[s,n]of Object.entries(e))"style"===s?t.style=n:s.startsWith("$")?t.methods[s.slice(1)]=n:/^on[A-Z]/.test(s)?t.events[s]=n:t.attrs[s]=n;return t})(i);this.parsed_props=a,this.style(a.style),this.setAttr(a.attrs);Object.entries(a.events).forEach(([e,t])=>this[e](t.bind(this))),r.length>0&&this.append(...r)}get element(){return this.cache.element}[Symbol.iterator](){return this.items[Symbol.iterator]()}maintain(){for(let e=0;e<this.items.length;e++)Object.defineProperty(this,e,{value:this.items[e],writable:!0,configurable:!0,enumerable:!1})}isInteractive(){return this.cache.isInteractive}isUIElement(){return!0}};function _(e,...t){t.forEach(t=>function(e,t){const s=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(s)){const n=s[t];"get"in n||"set"in n||"function"!=typeof n.value?Object.defineProperty(Object.getPrototypeOf(e),t,n):"function"==typeof n.value&&(Object.getPrototypeOf(e).hasOwnProperty(t)||Object.defineProperty(Object.getPrototypeOf(e),t,n))}}(e,t))}const v=Symbol.for("ziko/hooks/STATE_GETTER");function w(e){const t={value:e,subscribers:new Set,paused:!1};function s(){return{value:t.value,_subscribe:e=>(t.subscribers.add(e),()=>t.subscribers.delete(e))}}s[v]=!0;return[s,function(e){t.paused||("function"==typeof e&&(e=e(t.value)),Object.is(e,t.value)||(t.value=e,t.subscribers.forEach(e=>e(t.value))))},{pause:()=>{t.paused=!0},resume:()=>{t.paused=!1},clear:()=>{t.subscribers.clear()},force:e=>{"function"==typeof e&&(e=e(t.value)),t.value=e,t.subscribers.forEach(e=>e(t.value))},getSubscribers:()=>new Set(t.subscribers)}]}const k=e=>"function"==typeof e&&!0===e[v],x=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`-${e.toLowerCase()}`:e.toLowerCase()),E=(e="")=>{if(0===e.length)return!1;return/^[a-z][a-zA-Z0-9]*$/.test(e)};function T(e,t){if(globalThis.SVGAElement&&this.element instanceof globalThis.SVGAElement&&(e=E(e)?x(e):e),k(t)){t()._subscribe(t=>this.element?.setAttribute(e,t),this)}else this.element?.setAttribute(e,t)}var C=Object.freeze({__proto__:null,_set_attrs_:T,getAttr:function(e){return this.element.attributes[e].value},removeAttr:function(...e){for(let t=0;t<e.length;t++)this.element?.removeAttribute(e[t]);return this},setAttr:function(e,t){if(e instanceof Object){const[s,n]=[Object.keys(e),Object.values(e)];for(let e=0;e<s.length;e++)n[e]instanceof Array&&(t[e]=n[e].join(" ")),T.call(this,s[e],n[e])}else t instanceof Array&&(t=t.join(" ")),T.call(this,e,t);return this},setContentEditable:function(e=!0){return this.setAttr("contenteditable",e),this}});class A extends h{constructor(...e){super("span","text",!1,...e),this.element=globalThis?.document?.createTextNode(...e)}isText(){return!0}}const I=(...e)=>new A(...e);class S{constructor(e,t){this.cache={category:t,target:e,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(e,t,{preventDefault:s=!1,paused:n=!1}={}){return this.cache.listeners[e]={callback:s=>{this.cache.event=s,this.cache.listeners[e].preventDefault&&s.preventDefault(),this.cache.listeners[e].paused||(this.cache.currentEvent=e,t.call(this,this))},preventDefault:s,paused:n},this.element.addEventListener(e,this.cache.listeners[e].callback),this}removeListener(e){return this.element.removeEventListener(e,this.cache.listeners[e].callback),this}pause(e){return this.cache.listeners[e].paused=!0,this}resume(e){return this.cache.listeners[e].paused=!1,this}preventDefault(e){return this.cache.listeners[e].preventDefault=!0,this}useDefault(e){return this.cache.listeners[e].preventDefault=!1,this}}class L extends Event{constructor(e,t){super("clickaway",{bubbles:!0,cancelable:!0}),this.originalEvent=e,this.targetElement=t}}function O(e){function t(t){if(!e.contains(t.target)){const s=new L(t,e);e.dispatchEvent(s)}}return globalThis?.document?.addEventListener("click",t),()=>globalThis?.document?.removeEventListener("click",t)}const j=(e,t=!1)=>{const s=e.element.getBoundingClientRect(),n=e.event;let i=n?.clientX-s.left|0,r=n?.clientY-s.top|0;if(t){const t=e.element.clientWidth,s=e.element.clientHeight;i=+(i/t*2-1).toFixed(8),r=+(r/s*-2+1).toFixed(8)}return{x:i,y:r}},M="click",P={onClick(e){return this.on("click",e,{category:M})},onDblClick(e){return this.on("dblclick",e,{category:M})},onClickAway(e){var t,s,n;return t=this,s=M,n="clickaway",t.exp.events?.[s]?.cache?.customEvents?.has(n)||O(this.element),this.on("clickaway",e,{category:M,isCustom:!0})}},D="ptr",W={onPtrDown(e,t=!1){return this.on("pointerdown",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.dx=s,e.dy=n,e.isDown=!0,e.isDragging=e.isMoving??!1}})},onPtrMove(e,t=!1){return this.on("pointermove",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.mx=s,e.my=n,e.isMoving=!0,e.isDragging=e.isDown??!1}})},onPtrUp(e,t=!1){return this.on("pointerup",e,{category:D,details_setter:e=>{const{x:s,y:n}=j(e,t);e.ux=s,e.uy=n,e.isDown=!1,e.isMoving=!1,e.isDragging=!1}})}},U="key",Z={onKeyDown(e){return this.on("keydown",e,{category:U,details_setter:e=>{e.kd=e.event.key}})},onKeyPress(e){return this.on("keypress",e,{category:U,details_setter:e=>{e.kp=e.event.key}})},onKeyUp(e){return this.on("keydown",e,{category:U,details_setter:e=>{e.ku=e.event.key}})}};class N{constructor(e,t,s=1/0,n){this.ms=t,this.fn=e,this.count=s,this.frame=1,this.id=null,this.running=!1,n&&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 R extends N{constructor(e=1e3/60){super(e,()=>this._tick()),this.elapsed=0,this._lastTime=performance.now(),this._callbacks=new Set}_tick(){const e=performance.now(),t=e-this._lastTime;this.elapsed+=t,this._lastTime=e;for(const e of this._callbacks)e({elapsed:this.elapsed,delta:t})}onTick(e){return this._callbacks.add(e),()=>this._callbacks.delete(e)}reset(){this.elapsed=0,this._lastTime=performance.now()}pause(){super.stop()}resume(){this._lastTime=performance.now(),super.start()}}class ${constructor(e=[],{repeat:t=1,loop:s=!1}={}){this.tasks=e,this.repeat=t,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 e=this.repeat;do{for(const e of this.tasks){if(this.stopped)return;if(Array.isArray(e))await Promise.all(e.map(({fn:e,delay:t=0})=>new Promise(async s=>{t>0&&await new Promise(e=>setTimeout(e,t)),this.onTask&&this.onTask(e),await e(),s()})));else{const{fn:t,delay:s=0}=e;s>0&&await new Promise(e=>setTimeout(e,s)),this.onTask&&this.onTask(t),await t()}}}while(this.loop&&!this.stopped&&(e===1/0||e-- >1));!this.stopped&&this.onEnd&&this.onEnd(),this.running=!1}stop(){this.stopped=!0,this.running=!1}addTask(e){this.tasks.push(e)}clearTasks(){this.tasks=[]}}const F=(e,t)=>{let s=0;return(...n)=>{const i=(new Date).getTime();i-s<t||(s=i,e(...n))}};class B extends CustomEvent{constructor(e,t,{bubbles:s=!0,cancelable:n=!0}={}){super(e,{detail:t,bubbles:s,cancelable:n})}}function z(e,{intersection:t=!0,resize:s=!0,threshold:n=0,throttleResize:i=100,throttleEnterExit:r=0}={}){let a,o;const c=t=>{for(let s of t){const{width:t,height:n}=s.contentRect;e.dispatchEvent(new B("resizeview",{width:t,height:n,entry:s}))}},l=i>0?F(c,i):c,h=t=>{for(let s of t){const t=s.isIntersecting?"enterview":"exitview";e.dispatchEvent(new B(t,s))}},u=r>0?F(h,r):h;return t&&(a=new IntersectionObserver(u,{threshold:n}),a.observe(e)),s&&(o=new ResizeObserver(l),o.observe(e)),()=>{a&&(a.unobserve(e),a.disconnect()),o&&(o.unobserve(e),o.disconnect())}}const G="view",V={onEnterView(e){return this.exp.events?.[G]||z(this.element),this.on("enterview",e,{category:G,isCustom:!0})},onExitView(e){return this.exp.events?.[G]||z(this.element),this.on("exitview",e,{category:G,isCustom:!0})},onResizeView(e){return this.exp.events?.[G]||z(this.element),this.on("resizeview",e,{category:G,isCustom:!0})}};class H extends CustomEvent{constructor(e,t){super(e,{detail:t,bubbles:!0,cancelable:!0})}}class Y extends b{constructor({element:e,name:t="",type:s="html",autoMount:n=__Ziko__.__Config__.default.autoMount,props:i}={}){super(),this.exp={events:{}},_(this,C,W,P,Z,V),e&&this.init({element:e,name:t,type:s,autoMount:n,props:i})}on(e,t,{details_setter:s,category:n="global",isCustom:i=!1,preventDefault:r=!1}={}){e instanceof Array&&e.forEach(e=>this.on(e,t,{details_setter:s,category:n,isCustom:i,preventDefault:r})),n&&!this.exp.events.hasOwnProperty(n)&&(this.exp.events[n]=new S(this,n)),i&&this.exp.events[n].cache.customEvents.add(e);const a=this.exp.events[n];return a.addListener(e,e=>{s&&s(a),t(e)},{preventDefault:r}),this}off(e,t="global"){return this.exp.events[t].removeListener(e),this}get element(){return this.cache.element}get itemsTarget(){return this.cache.itemsTarget}get itemsTargetElement(){return this.itemsTarget.element}setItemsTarget(e){return this.cache.itemsTarget=e,this.items=e.items,this}isInteractive(){return this.cache.isInteractive}useClient(e){return this.cache.isInteractive||(this.element.setAttribute("data-hydration-index",globalThis.__Ziko__.__HYDRATION__.index),globalThis.__Ziko__.__HYDRATION__.register(()=>this.constructor),this.cache.isInteractive=!0),e&&this.element.setAttribute("data-hydration-directive",e),this}get attr(){return this.cache.attributes}get evt(){return this.events}get html(){return this.element.innerHTML}get text(){return this.element.textContent}get parent(){return this.cache.parent}get rect(){return this.element.getBoundingClientRect()}mount(e=this.target,t=0){return this.isBody||(e?.isUIElement&&(e=e.element),this.target=e,this.target?.appendChild(this.element)),this}unmount(){return this.cache.parent?this.cache.parent.remove(this):this.target?.children?.length&&[...this.target.children].includes(this.element)&&this.target.removeChild(this.element),this}at(e){return this.items.at(e)}forEach(e){return this.items.forEach(e),this}map(e){return this.items.map(e)}find(e){return this.items.filter(e)}style(e){if(!this.element?.style)return this;for(let t in e){const s=e[t];if(k(s)){const e=s();Object.assign(this.element.style,{[t]:e.value}),e._subscribe(e=>{Object.assign(this.element.style,{[t]:e})})}else Object.assign(this.element.style,{[t]:s})}return this}size(e,t){return this.style({width:e,height:t})}hide(){}show(){}append(...e){return this.#e("append","push",...e),this}prepend(...e){return this.this.#e("prepend","unshift",...e),this}insertAt(e,...t){const s=this.itemsTarget;if(e>=s.items.length)return this.append(...t);for(let n=0;n<t.length;n++)["number","string"].includes(typeof t[n])&&(t[n]=I(t[n])),s.element?.insertBefore(t[n].element,s.items[e].element),s.items.splice(e,0,t[n]);return s.maintain(),this}remove(...e){const t=e=>{"number"==typeof e&&(e=this.items[e]),e?.isUIElement&&this.itemsTarget.element?.removeChild(e.element),this.items=this.items.filter(t=>t!==e)};for(let s=0;s<e.length;s++)t(e[s]);for(let e=0;e<this.items.length;e++)Object.assign(this,{[[e]]:this.items[e]});return this}async#t(e,t,s,n=null,i=null){const{element:r,items:a}=this.itemsTarget;if(["number","string"].includes(typeof s)&&(s=I(s)),"function"==typeof s&&k(s)){const e=s();let t=q(e.value);s=t,e._subscribe(e=>{const s=q(e);if(s===t)return;const n=a.indexOf(t);if(-1!==n)t.element.replaceWith(s.element),a[n]=s;else{if(!t.element.parentNode)return;t.element.replaceWith(s.element)}s.cache.parent=this,s.target=r,t=s})}if("function"==typeof globalThis?.Node&&s instanceof globalThis.Node&&(s=new Y({element:s})),s instanceof Promise&&(s=await s),s?.isUINode)return s.cache.parent=this,s.target=r,"insertBefore"===e&&r?r.insertBefore(s.element,n):"function"==typeof r?.[e]&&r[e](s.element),void("splice"===t&&null!==i?a.splice(i,0,s):"function"==typeof a?.[t]&&a[t](s))}async#e(e,t,...s){for(const n of s)await this.#t(e,t,n);return this.maintain(),this}}const q=e=>e?.isUINode?e:"function"==typeof globalThis.Node&&e instanceof globalThis.Node?new Y({element:e}):I(e??""),K=["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"],X=["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"],Q=["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"],J=e=>(...t)=>{const s=t[0];return s?.isUIElement?.()||i(s)?new e({},...t):new e(s,...t.slice(1))},ee=new Proxy({},{get(e,t){if("string"!=typeof t)return;let s,n=t.replaceAll("_","-").toLowerCase();return K.includes(n)&&(s="html"),X.includes(n)&&(s="svg"),Q.includes(n)&&(s="mathml"),(...e)=>{const t=new Y({element:n,name:n,type:s}),i=e[0];return 0===e.length?t:["string","number"].includes(typeof i)||i instanceof Y||k(i)||i instanceof HTMLElement?t.append(...e):new Y({element:n,type:s,props:e.shift()}).append(...e)}}});class te{constructor(e=10){this.events={},this.maxListeners=e}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),this.events[e].length>this.maxListeners&&console.warn(`Warning: Possible memory leak. Event '${e}' has more than ${this.maxListeners} listeners.`),this}once(e,t){const s=(...n)=>{this.off(e,s),t(...n)};return this.on(e,s)}off(e,t){const s=this.events[e];if(!s)return this;const n=s.indexOf(t);return-1!==n&&s.splice(n,1),this}emit(e,t){const s=this.events[e];return!!s&&([...s].forEach(s=>{try{s(t)}catch(t){console.error(`Error in listener for '${e}':`,t)}}),!0)}remove(e){return delete this.events[e],this}clear(){return this.events={},this}setMaxListeners(e){return this.maxListeners=e,this}}function se(e,t="./src/pages",s=["js","ts","jsx","tsx"]){let n=t.endsWith("/")?t.slice(0,-1):t;const i=e.replace(/\\/g,"/");let r=i;n&&i.includes(n)&&(r=i.split(n).pop());const a=r.split("/").filter(Boolean).filter(e=>!/^\([^)]+\)$/.test(e));if(0===a.length)return"/";const o=a[a.length-1],c=new RegExp(`\\.(${s.join("|")})$`),l=s.some(e=>o===`index.${e}`),h=o.replace(c,"");if(a.pop(),!l){const e=h.split(/\.(?![^\[]*\])/);a.push(...e)}return"/"+a.join("/")}function ne(e,t){const s=e.split("/").filter(Boolean),n=t.split("/").filter(Boolean);let i=0,r=0;for(;i<s.length&&r<n.length;){const e=s[i];if(e.startsWith("[[...")&&e.endsWith("]]")){if(0===s.length-i-1)return!0;let e=0;for(let t=i+1;t<s.length;t++)s[t].endsWith("]+")||e++;const t=n.length-r-e;if(t<0)return!1;r+=t,i++;continue}if(e.startsWith("[...")&&e.endsWith("]")){if(0===s.length-i-1)return!0;let e=0;for(let t=i+1;t<s.length;t++)s[t].endsWith("]+")||e++;const t=n.length-r;if(t<e)return!1;const a=t-e;if(a<1)return!1;r+=a,i++;continue}if(e.startsWith("[")&&e.endsWith("]+"))n[r]&&r++,i++;else if(e.startsWith("[")&&e.endsWith("]"))i++,r++;else{if(e!==n[r])return!1;i++,r++}}for(;i<s.length;){const e=s[i];if(e.startsWith("[[...")&&e.endsWith("]]"))i++;else{if(!e.endsWith("]+"))return!1;i++}}return i===s.length&&r===n.length}function ie(e){return/(:\w+|\[\[\.\.\.\w+\]\]|\[\.\.\.\w+\]|\[\w+\]\+?)/.test(e)}function re(e){return[...e].sort((e,t)=>{const s=e.includes("[[..."),n=t.includes("[[..."),i=e.includes("[...")&&!s,r=t.includes("[...")&&!n,a=ie(e),o=ie(t);return s&&!n?1:!s&&n?-1:i&&!r?1:!i&&r||!a&&o?-1:a&&!o?1:t.length-e.length})}const{meta:ae,link:oe,script:ce}=ee;class le{constructor({title:e,icon:t,description:s,lang:n,links:i=[],script:r=[],meta:a=[]}={},...o){this.options={title:e,icon:t,description:s,lang:n,links:i,meta:a,script:r},this.ui=o,this.render()}render(){if("undefined"==typeof document)return{...this.options,body:this.ui};const{title:e,icon:t,description:s,lang:n,links:i,meta:r,script:a}=this.options;e&&(document.title=e),n&&(document.documentElement.lang=n),t&&document.head.appendChild(oe({rel:"icon",href:t})),s&&document.head.appendChild(ae({name:"description",content:s}));for(const e of i)document.head.appendChild(oe(e));for(const e of r)document.head.appendChild(ae(e));for(const e of a)document.head.appendChild(ce(e))}mount(e){return this.ui.forEach(t=>t.mount(e)),this}}const he=async(e,t,s,n)=>{if(!t)return;let i=await t(s);if(n&&(i=n(i)),i instanceof le)return i.ui.forEach(t=>t.mount(e));i instanceof Array?i.forEach(t=>t.mount(e)):i.mount(e)};const ue=e=>Object.fromEntries(new URLSearchParams(globalThis?.location?.search));class pe extends Y{constructor(e,t){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=e,this.append(e),(async()=>{try{const s=await t();e.unmount(),this.append(s)}catch(e){console.log({error:e})}})()}}class me extends Y{#s=new WeakMap;constructor({activeIndex:e=0}={},...t){super({element:"div"}),this.style({display:"contents"}),this.states={activeIndex:e},this.append(...t),requestAnimationFrame(()=>{this.render()})}get activeItem(){return this.items[this.states.activeIndex]}render(){this.items.forEach((e,t)=>{const s=getComputedStyle(e.element).display;this.#s.set(e,s),t!==this.states.activeIndex&&e.style({display:"none"})})}get DS(){return this.#s}next(e=1){return this.activate(this.states.activeIndex+e)}previous(e=1){return this.activate(this.states.activeIndex-e)}activate(e){if(!this.items.length)return this;const t=this.items.at(this.states.activeIndex);t&&t.style({display:"none"});const s=this.items.length;this.states.activeIndex=(e%s+s)%s;const n=this.items.at(this.states.activeIndex);if(n){const e=this.#s.get(n)||"block";n.style({display:"none"===e?"block":e})}return this}}const de=J(me);class fe extends Y{constructor(...e){super({element:document.createDocumentFragment()}),this.append(...e)}isFragment(){return!0}}class ge extends fe{constructor({each:e,fallback:t,mapFn:s=()=>{}}={}){super(),this.config={each:e,fallback:t,mapFn:s},this.append(...this.config.each.map((e,t)=>this.config.mapFn(e,t)))}}class ye extends Y{constructor(e,t){super(),this.key=e,this.cases=t,this.init()}init(){Object.values(this.cases).filter(e=>e!=this.current).forEach(e=>e.unmount()),super.init(this.current.element)}get current(){const e=Object.keys(this.cases).find(e=>e==this.key)??"default";return this.cases[e]}updateKey(e){return this.key=e,this.replaceElementWith(this.current.element),this}}class be extends Y{constructor(e){super({element:"div",name:"html_wrappper"}),this.element.append(function(e){if(globalThis?.DOMParser){const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html");return t.body.firstChild.style.display="contents",t.body.firstChild}}(e)),this.style({display:"contents"})}}class _e extends Y{constructor(e){super({element:"div",name:"html_wrappper"}),this.element.append(function(e){if("undefined"!=typeof DOMParser){const t=(new DOMParser).parseFromString(e.trim(),"image/svg+xml").documentElement;if("parsererror"===t.nodeName)throw new Error("Invalid SVG string");if(t.hasAttribute("xmlns"))return t;const{children:s,attributes:n}=t,i=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:e,value:t}of n)i.setAttribute(e,t);return i.append(...s),i}throw new Error("DOMParser is not available in this environment")}(e)),this.style({display:"contents"})}}globalThis?.document&&document?.addEventListener("DOMContentLoaded",__Ziko__.__Config__.init()),e.ClickAwayEvent=L,e.ClickListeners=P,e.Clock=R,e.E=s,e.EPSILON=n,e.EventController=S,e.For=({each:e,fallback:t,mapFn:s}={})=>new ge({each:e,fallback:t,mapFn:s}),e.Fragment=(...e)=>new fe(...e),e.HTMLWrapper=e=>new be(e),e.KeyListeners=Z,e.PI=t,e.PtrListeners=W,e.SVGWrapper=e=>new _e(e),e.Scheduler=(e,{repeat:t=null}={})=>new $(e,{repeat:t}),e.Suspense=(e,t)=>new pe(e,t),e.Swap=de,e.SwipeEvent=H,e.Switch=({key:e,cases:t})=>new ye(e,t),e.Tick=N,e.TimeScheduler=$,e.UIElement=Y,e.UIFragment=fe,e.UIHTMLWrapper=be,e.UISVGWrapper=_e,e.UISuspense=pe,e.UISwap=me,e.UISwitch=ye,e.UIView=class extends Y{constructor(...e){super({element:"div",name:"view"}),this.append(...e)}},e.View=(...e)=>J(Y),e.ViewEvent=B,e.ViewListeners=V,e.apply_fun=a,e.atan2=l,e.camel2constantcase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`_${e}`:e).toUpperCase(),e.camel2hyphencase=x,e.camel2pascalcase=(e="")=>e.charAt(0).toUpperCase()+e.slice(1),e.camel2snakecase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>t?`_${e.toLowerCase()}`:e.toLowerCase()),e.clamp=(e,t,s)=>a(e,e=>Math.min(Math.max(e,t),s)),e.clock=e=>new R(e),e.constant2camelcase=(e="")=>e.toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),e.constant2hyphencase=(e="")=>e.toLowerCase().replace(/_/g,"-"),e.constant2pascalcase=(e="")=>e.toLowerCase().split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.constant2snakecase=(e="")=>e.toLowerCase(),e.createFileBasedRouter=async function({pages:e={},url:t=("undefined"!=typeof location?location.pathname:"/"),target:s=("undefined"!=typeof document?document.body:null),extensions:n=["js","ts"],base:i="/",lazy:r=!0,renderer:a=he,wrapper:o,namedExportHandler:c={Get:async(e,t)=>{if("function"==typeof e)return await e(t)}}}={}){let l=s;s&&"object"==typeof s&&"element"in s&&(l=s.element);let h="."===i?"":i.replace(/\/$/,"");h&&!h.startsWith("/")&&(h="/"+h);let u=decodeURIComponent(t.replace(/\/$/,""))||"/";h&&u.startsWith(h)&&(u=u.slice(h.length)||"/");let p=u.startsWith("/")?u:"/"+u;const m=Object.keys(e),d=function(e){if(0===e.length)return"";const t=e.map(e=>{const t=e.split("/");return t.pop(),t}),s=Math.min(...t.map(e=>e.length));let n=[];for(let e=0;e<s;e++){const s=t[0][e];if(!t.every(t=>t[e]===s||t[e].startsWith("[")))break;n.push(s)}return n.join("/")+(n.length?"/":"")}(m);let f=null,g=null,y=null,b=null,_={};if(r){const t={};for(const e of m){t[se(e,d,n)]=e}const s=re(Object.keys(t));for(const e of s)if(ne(e,p)){f=e;break}if(null===f)return{mask:null,component:null,params:{},matched:!1};b=t[f];try{y=await e[b]();const{default:t,...s}=y;g=t,_=s}catch(e){return console.error(`[Router] Failed to load module for route: ${b}`,e),{mask:null,component:null,params:{},matched:!1,error:e}}}else{const t={},s={};for(const i of m){const r=await e[i](),{default:a}=r,o=se(i,d,n);t[o]=a,s[o]={module:r,rawRoute:i}}const i=re(Object.keys(t));for(const e of i)if(ne(e,p)){f=e,g=t[e];break}if(null===f)return{mask:null,component:null,params:{},matched:!1};if(f in s){y=s[f].module,b=s[f].rawRoute;const{default:e,...t}=y;_=t}}const v=ie(f)?function(e,t){const s=e.split("/").filter(Boolean),n=t.split("/").filter(Boolean),i={};let r=0,a=0;for(;r<s.length&&a<n.length;){const e=s[r];if(e.startsWith("[[...")&&e.endsWith("]]")){const t=e.slice(5,-2);if(0==s.length-r-1){i[t]=n.slice(a).join("/");break}let o=0;for(let e=r+1;e<s.length;e++)s[e].endsWith("]+")||o++;const c=n.length-a-o;if(!(c>=0))return{};i[t]=n.slice(a,a+c).join("/"),a+=c,r++;continue}if(e.startsWith("[...")&&e.endsWith("]")){const t=e.slice(4,-1);if(0==s.length-r-1){i[t]=n.slice(a).join("/");break}let o=0;for(let e=r+1;e<s.length;e++)s[e].endsWith("]+")||o++;const c=n.length-a-o;if(!(c>=1))return{};i[t]=n.slice(a,a+c).join("/"),a+=c,r++;continue}if(e.startsWith("[")&&e.endsWith("]+")){const t=e.slice(1,-2);n[a]&&(i[t]=n[a],a++),r++;continue}if(e.startsWith("[")&&e.endsWith("]"))i[e.slice(1,-1)]=n[a];else if(e!==n[a])return{};r++,a++}for(;r<s.length;){const e=s[r];if(e.startsWith("[[...")&&e.endsWith("]]")){const t=e.slice(5,-2);t in i||(i[t]="")}r++}return i}(f,p):{};for(const e in c)e in _&&"function"==typeof c[e]&&await c[e](_[e],{route:b,mask:f,module:y,currentPath:p,params:v});return l&&"function"==typeof a&&await a(l,g,v,o),{mask:f,component:g,params:v,namedExports:_,matched:!0}},e.debounce=(e,t=1e3)=>(...s)=>setTimeout(()=>e(...s),t),e.deg2rad=(...e)=>r(e=>e*Math.PI/180,...e),e.hyphen2camelcase=(e="")=>e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()),e.hyphen2constantcase=(e="")=>e.replace(/-/g,"_").toUpperCase(),e.hyphen2pascalcase=(e="")=>e.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.hyphen2snakecase=(e="")=>e.replace(/-/g,"_"),e.hypot=(...e)=>{const t=e.find(e=>e.isComplex?.());if(t){const s=e.map(e=>e.isComplex?.()?e:new t.constructor(e,0));return Math.hypot(...s.map(e=>e.z))}return Math.hypot(...e)},e.isStateGetter=k,e.is_anagram=(e,t)=>(e=e.split("").sort(),t=t.split("").sort(),JSON.stringify(e)===JSON.stringify(t)),e.is_camelcase=E,e.is_hyphencase=(e="")=>e.split("-").length>0,e.is_isogram=(e="")=>[...new Set(e.toLowerCase())].length===e.length,e.is_palindrome=e=>{const t=e.toLocaleLowerCase();let s,n=t.length;for(s=0;s<n/2;s++)if(t[s]!=t[n-s-1])return!1;return!0},e.is_pascalcalse=(e="")=>{if(0===e.length)return!1;return/^[A-Z][a-zA-Z0-9]*$/.test(e)},e.is_snakeCase=(e="")=>e.split("_").length>0,e.lerp=c,e.map=(e,t,s,n,i)=>a(e,e=>c(o(e,t,s),n,i)),e.mapfun=r,e.norm=o,e.pascal2camelcase=(e="")=>e.charAt(0).toLowerCase()+e.slice(1),e.pascal2constantcase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e:`_${e}`).toUpperCase(),e.pascal2hyphencase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e.toLowerCase():`-${e.toLowerCase()}`),e.pascal2snakecase=(e="")=>e.replace(/[A-Z]/g,(e,t)=>0===t?e.toLowerCase():`_${e.toLowerCase()}`),e.rad2deg=(...e)=>r(e=>e/Math.PI*180,...e),e.register_click_away_event=O,e.register_swipe_event=function(e,t=5,s=100,n=500){let i=0,r=0,a=0,o=!1;function c(e){i=e.clientX,r=e.clientY,a=performance.now(),o=!0}function l(c){if(!o)return;o=!1;const l=c.clientX-i,h=c.clientY-r;let u=null,p=null;performance.now()-a<=n&&(Math.abs(l)>=t&&Math.abs(h)<=s?(u=l<0?"left":"right",p="swipe"+u):Math.abs(h)>=t&&Math.abs(l)<=s&&(u=h<0?"up":"down",p="swipe"+u)),p&&e.dispatchEvent(new H(p,{direction:u,distX:l,distY:h,originalEvent:c}))}return e.addEventListener("pointerdown",c,{passive:!0}),e.addEventListener("pointerup",l,{passive:!0}),()=>{e.removeEventListener("pointerdown",c),e.removeEventListener("pointerup",l)}},e.register_view_event=z,e.sleep=e=>new Promise(t=>setTimeout(t,e)),e.snake2camelcase=(e="")=>e.replace(/_([a-zA-Z])/g,(e,t)=>t.toUpperCase()),e.snake2constantcase=(e="")=>e.toUpperCase(),e.snake2hyphencase=(e="")=>e.replace(/_/g,"-"),e.snake2pascalcase=(e="")=>e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(""),e.tags=ee,e.throttle=F,e.tick=(e,t,s=1/0,n=!0)=>new N(e,t,s,n),e.timeout=function(e,t){let s;const n=new Promise(n=>{s=setTimeout(()=>{t&&t(),n()},e)});return{id:s,clear:()=>clearTimeout(s),promise:n}},e.useDerived=function(e,t){const s=()=>e(...t.map(e=>e().value));let n=s();const i=new Set,r=()=>{const e=s();Object.is(e,n)||(n=e,i.forEach(e=>e(n)))};t.map(e=>e()._subscribe(r));const a=()=>({value:n,_subscribe:e=>(i.add(e),()=>i.delete(e))});return a[v]=!0,a},e.useEffect=(e,t=[])=>{const s=t.filter(k);let n;const i=()=>{"function"==typeof n&&n(),n=e(s.map(e=>e().value))},r=s.map(e=>e()._subscribe(i));return i(),()=>{r.forEach(e=>e()),"function"==typeof n&&(n(),n=void 0)}},e.useEventEmitter=e=>new te(e),e.useQueryParams=function(){const e=()=>ue();return[e,(t,s=!0)=>{const n=e(),i="function"==typeof t?t(n):t,r=s?{...n,...i}:i,a=new URLSearchParams(r).toString();window.history.pushState({},"",`${window.location.pathname}${a?`?${a}`:""}`),window.dispatchEvent(new CustomEvent("queryparamschange",{detail:r}))}]},e.useReactive=e=>r(e=>{const t=w(e);return{get:t[0],set:t[1]}},e),e.useState=w,e.watchQueryParams=function(e){let t=location.search;const s=()=>{const s=location.search;s!==t&&(t=s,e(ue()))};window.addEventListener("popstate",s);const n=history.pushState;history.pushState=function(...e){n.apply(this,e),s()};const i=history.replaceState;return history.replaceState=function(...e){i.apply(this,e),s()},e(ue()),()=>{window.removeEventListener("popstate",s)}}});
10
10
  //# sourceMappingURL=ziko.min.js.map