ziko 0.49.5 → 0.49.6
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 +73 -31
- package/dist/ziko.js +73 -31
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +73 -32
- package/package.json +1 -1
- package/src/__ziko__/__state__.js +1 -1
- package/src/hooks/index.js +2 -1
- package/src/hooks/use-derived.js +1 -1
- package/src/use/index.js +2 -2
- package/src/use/use-storage.js.txt +73 -0
- package/types/hooks/index.d.ts +4 -1
- package/types/hooks/use-derived.d.ts +14 -0
- package/types/hooks/use-reactive.d.ts +14 -0
- package/types/hooks/use-state.d.ts +25 -0
- /package/src/{use → hooks}/use-storage.js +0 -0
- /package/src/use/{use-channel.js → use-channel.js.txt} +0 -0
package/dist/ziko.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date : Wed Nov 26 2025
|
|
5
|
+
Date : Wed Nov 26 2025 12:01:55 GMT+0100 (UTC+01:00)
|
|
6
6
|
Git-Repo : https://github.com/zakarialaoui10/ziko.js
|
|
7
7
|
Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
|
|
8
8
|
Released under MIT License
|
|
@@ -1180,60 +1180,101 @@ const __CACHE__ = {
|
|
|
1180
1180
|
};
|
|
1181
1181
|
|
|
1182
1182
|
class UseChannel {
|
|
1183
|
+
// private fields
|
|
1184
|
+
#channel;
|
|
1185
|
+
#eventData;
|
|
1186
|
+
#handlers;
|
|
1187
|
+
#uuid;
|
|
1188
|
+
#subscribers;
|
|
1189
|
+
#currentRooms; // now a Set for multiple rooms
|
|
1190
|
+
|
|
1183
1191
|
constructor(name = "") {
|
|
1184
|
-
this
|
|
1185
|
-
this
|
|
1186
|
-
this
|
|
1187
|
-
this
|
|
1188
|
-
this
|
|
1192
|
+
this.#channel = new BroadcastChannel(name);
|
|
1193
|
+
this.#eventData = new Map();
|
|
1194
|
+
this.#handlers = new Map(); // Map<event, Array<{fn, rooms}>>
|
|
1195
|
+
this.#uuid = "ziko-channel:" + Random.string(10);
|
|
1196
|
+
this.#subscribers = new Set([this.#uuid]);
|
|
1197
|
+
this.#currentRooms = new Set(); // multiple rooms
|
|
1189
1198
|
|
|
1190
|
-
this
|
|
1191
|
-
const { last_sent_event, userId, eventData } = e.data;
|
|
1199
|
+
this.#channel.addEventListener("message", (e) => {
|
|
1200
|
+
const { last_sent_event, userId, eventData, rooms } = e.data;
|
|
1192
1201
|
|
|
1193
|
-
// ignore own
|
|
1194
|
-
if (userId === this.uuid) return;
|
|
1202
|
+
if (userId === this.#uuid) return; // ignore own messages
|
|
1195
1203
|
|
|
1196
|
-
|
|
1204
|
+
// broadcast if no rooms, else check intersection
|
|
1205
|
+
if (rooms && rooms.length && !rooms.some(r => this.#currentRooms.has(r))) return;
|
|
1197
1206
|
|
|
1198
|
-
|
|
1199
|
-
this
|
|
1207
|
+
this.#subscribers.add(userId);
|
|
1208
|
+
this.#eventData = new Map(eventData);
|
|
1200
1209
|
|
|
1201
|
-
const
|
|
1202
|
-
|
|
1210
|
+
const handlersList = this.#handlers.get(last_sent_event);
|
|
1211
|
+
if (!handlersList) return;
|
|
1203
1212
|
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1213
|
+
handlersList.forEach(({ fn, rooms: handlerRooms }) => {
|
|
1214
|
+
// trigger if listener has no room filter, or intersects subscriber rooms
|
|
1215
|
+
if (!handlerRooms || handlerRooms.length === 0 ||
|
|
1216
|
+
!rooms || rooms.some(r => handlerRooms.includes(r))) {
|
|
1217
|
+
fn(this.#eventData.get(last_sent_event));
|
|
1218
|
+
}
|
|
1219
|
+
});
|
|
1207
1220
|
});
|
|
1208
1221
|
}
|
|
1209
1222
|
|
|
1210
|
-
emit(event, data) {
|
|
1211
|
-
this
|
|
1223
|
+
emit(event, data, rooms) {
|
|
1224
|
+
this.#eventData.set(event, data);
|
|
1225
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1212
1226
|
|
|
1213
|
-
this
|
|
1214
|
-
eventData: this.
|
|
1227
|
+
this.#channel.postMessage({
|
|
1228
|
+
eventData: Array.from(this.#eventData.entries()),
|
|
1215
1229
|
last_sent_event: event,
|
|
1216
|
-
userId: this
|
|
1230
|
+
userId: this.#uuid,
|
|
1231
|
+
rooms: rooms && rooms.length ? rooms : undefined
|
|
1217
1232
|
});
|
|
1233
|
+
|
|
1218
1234
|
return this;
|
|
1219
1235
|
}
|
|
1220
1236
|
|
|
1221
|
-
on(event, handler = console.log) {
|
|
1222
|
-
if (!this
|
|
1223
|
-
|
|
1224
|
-
}
|
|
1225
|
-
this.handlers.get(event).push(handler);
|
|
1237
|
+
on(event, handler = console.log, rooms) {
|
|
1238
|
+
if (!this.#handlers.has(event)) this.#handlers.set(event, []);
|
|
1239
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1240
|
+
this.#handlers.get(event).push({ fn: handler, rooms });
|
|
1226
1241
|
return this;
|
|
1227
1242
|
}
|
|
1228
1243
|
|
|
1229
|
-
|
|
1230
|
-
this.
|
|
1244
|
+
off(event, handler) {
|
|
1245
|
+
if (!this.#handlers.has(event)) return this;
|
|
1246
|
+
this.#handlers.set(
|
|
1247
|
+
event,
|
|
1248
|
+
this.#handlers.get(event).filter(h => h.fn !== handler)
|
|
1249
|
+
);
|
|
1231
1250
|
return this;
|
|
1232
1251
|
}
|
|
1233
1252
|
|
|
1234
|
-
|
|
1253
|
+
once(event, handler, rooms) {
|
|
1254
|
+
const wrapper = (data) => {
|
|
1255
|
+
handler(data);
|
|
1256
|
+
this.off(event, wrapper);
|
|
1257
|
+
};
|
|
1258
|
+
this.on(event, wrapper, rooms);
|
|
1235
1259
|
return this;
|
|
1236
1260
|
}
|
|
1261
|
+
|
|
1262
|
+
join(...rooms) {
|
|
1263
|
+
rooms.forEach(r => this.#currentRooms.add(r));
|
|
1264
|
+
return this;
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
leave(...rooms) {
|
|
1268
|
+
if (!rooms.length) this.#currentRooms.clear();
|
|
1269
|
+
else rooms.forEach(r => this.#currentRooms.delete(r));
|
|
1270
|
+
return this;
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
close() {
|
|
1274
|
+
this.#channel.close();
|
|
1275
|
+
return this;
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1237
1278
|
}
|
|
1238
1279
|
|
|
1239
1280
|
const useChannel = (name) => new UseChannel(name);
|
|
@@ -5590,6 +5631,7 @@ exports.tick = tick;
|
|
|
5590
5631
|
exports.timeTaken = timeTaken;
|
|
5591
5632
|
exports.time_memory_Taken = time_memory_Taken;
|
|
5592
5633
|
exports.timeout = timeout;
|
|
5634
|
+
exports.useChannel = useChannel;
|
|
5593
5635
|
exports.useDerived = useDerived;
|
|
5594
5636
|
exports.useEventEmitter = useEventEmitter;
|
|
5595
5637
|
exports.useLocaleStorage = useLocaleStorage;
|
package/dist/ziko.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date : Wed Nov 26 2025
|
|
5
|
+
Date : Wed Nov 26 2025 12:01:55 GMT+0100 (UTC+01:00)
|
|
6
6
|
Git-Repo : https://github.com/zakarialaoui10/ziko.js
|
|
7
7
|
Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
|
|
8
8
|
Released under MIT License
|
|
@@ -1184,60 +1184,101 @@
|
|
|
1184
1184
|
};
|
|
1185
1185
|
|
|
1186
1186
|
class UseChannel {
|
|
1187
|
+
// private fields
|
|
1188
|
+
#channel;
|
|
1189
|
+
#eventData;
|
|
1190
|
+
#handlers;
|
|
1191
|
+
#uuid;
|
|
1192
|
+
#subscribers;
|
|
1193
|
+
#currentRooms; // now a Set for multiple rooms
|
|
1194
|
+
|
|
1187
1195
|
constructor(name = "") {
|
|
1188
|
-
this
|
|
1189
|
-
this
|
|
1190
|
-
this
|
|
1191
|
-
this
|
|
1192
|
-
this
|
|
1196
|
+
this.#channel = new BroadcastChannel(name);
|
|
1197
|
+
this.#eventData = new Map();
|
|
1198
|
+
this.#handlers = new Map(); // Map<event, Array<{fn, rooms}>>
|
|
1199
|
+
this.#uuid = "ziko-channel:" + Random.string(10);
|
|
1200
|
+
this.#subscribers = new Set([this.#uuid]);
|
|
1201
|
+
this.#currentRooms = new Set(); // multiple rooms
|
|
1193
1202
|
|
|
1194
|
-
this
|
|
1195
|
-
const { last_sent_event, userId, eventData } = e.data;
|
|
1203
|
+
this.#channel.addEventListener("message", (e) => {
|
|
1204
|
+
const { last_sent_event, userId, eventData, rooms } = e.data;
|
|
1196
1205
|
|
|
1197
|
-
// ignore own
|
|
1198
|
-
if (userId === this.uuid) return;
|
|
1206
|
+
if (userId === this.#uuid) return; // ignore own messages
|
|
1199
1207
|
|
|
1200
|
-
|
|
1208
|
+
// broadcast if no rooms, else check intersection
|
|
1209
|
+
if (rooms && rooms.length && !rooms.some(r => this.#currentRooms.has(r))) return;
|
|
1201
1210
|
|
|
1202
|
-
|
|
1203
|
-
this
|
|
1211
|
+
this.#subscribers.add(userId);
|
|
1212
|
+
this.#eventData = new Map(eventData);
|
|
1204
1213
|
|
|
1205
|
-
const
|
|
1206
|
-
|
|
1214
|
+
const handlersList = this.#handlers.get(last_sent_event);
|
|
1215
|
+
if (!handlersList) return;
|
|
1207
1216
|
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1217
|
+
handlersList.forEach(({ fn, rooms: handlerRooms }) => {
|
|
1218
|
+
// trigger if listener has no room filter, or intersects subscriber rooms
|
|
1219
|
+
if (!handlerRooms || handlerRooms.length === 0 ||
|
|
1220
|
+
!rooms || rooms.some(r => handlerRooms.includes(r))) {
|
|
1221
|
+
fn(this.#eventData.get(last_sent_event));
|
|
1222
|
+
}
|
|
1223
|
+
});
|
|
1211
1224
|
});
|
|
1212
1225
|
}
|
|
1213
1226
|
|
|
1214
|
-
emit(event, data) {
|
|
1215
|
-
this
|
|
1227
|
+
emit(event, data, rooms) {
|
|
1228
|
+
this.#eventData.set(event, data);
|
|
1229
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1216
1230
|
|
|
1217
|
-
this
|
|
1218
|
-
eventData: this.
|
|
1231
|
+
this.#channel.postMessage({
|
|
1232
|
+
eventData: Array.from(this.#eventData.entries()),
|
|
1219
1233
|
last_sent_event: event,
|
|
1220
|
-
userId: this
|
|
1234
|
+
userId: this.#uuid,
|
|
1235
|
+
rooms: rooms && rooms.length ? rooms : undefined
|
|
1221
1236
|
});
|
|
1237
|
+
|
|
1222
1238
|
return this;
|
|
1223
1239
|
}
|
|
1224
1240
|
|
|
1225
|
-
on(event, handler = console.log) {
|
|
1226
|
-
if (!this
|
|
1227
|
-
|
|
1228
|
-
}
|
|
1229
|
-
this.handlers.get(event).push(handler);
|
|
1241
|
+
on(event, handler = console.log, rooms) {
|
|
1242
|
+
if (!this.#handlers.has(event)) this.#handlers.set(event, []);
|
|
1243
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1244
|
+
this.#handlers.get(event).push({ fn: handler, rooms });
|
|
1230
1245
|
return this;
|
|
1231
1246
|
}
|
|
1232
1247
|
|
|
1233
|
-
|
|
1234
|
-
this.
|
|
1248
|
+
off(event, handler) {
|
|
1249
|
+
if (!this.#handlers.has(event)) return this;
|
|
1250
|
+
this.#handlers.set(
|
|
1251
|
+
event,
|
|
1252
|
+
this.#handlers.get(event).filter(h => h.fn !== handler)
|
|
1253
|
+
);
|
|
1235
1254
|
return this;
|
|
1236
1255
|
}
|
|
1237
1256
|
|
|
1238
|
-
|
|
1257
|
+
once(event, handler, rooms) {
|
|
1258
|
+
const wrapper = (data) => {
|
|
1259
|
+
handler(data);
|
|
1260
|
+
this.off(event, wrapper);
|
|
1261
|
+
};
|
|
1262
|
+
this.on(event, wrapper, rooms);
|
|
1239
1263
|
return this;
|
|
1240
1264
|
}
|
|
1265
|
+
|
|
1266
|
+
join(...rooms) {
|
|
1267
|
+
rooms.forEach(r => this.#currentRooms.add(r));
|
|
1268
|
+
return this;
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
leave(...rooms) {
|
|
1272
|
+
if (!rooms.length) this.#currentRooms.clear();
|
|
1273
|
+
else rooms.forEach(r => this.#currentRooms.delete(r));
|
|
1274
|
+
return this;
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
close() {
|
|
1278
|
+
this.#channel.close();
|
|
1279
|
+
return this;
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1241
1282
|
}
|
|
1242
1283
|
|
|
1243
1284
|
const useChannel = (name) => new UseChannel(name);
|
|
@@ -5594,6 +5635,7 @@
|
|
|
5594
5635
|
exports.timeTaken = timeTaken;
|
|
5595
5636
|
exports.time_memory_Taken = time_memory_Taken;
|
|
5596
5637
|
exports.timeout = timeout;
|
|
5638
|
+
exports.useChannel = useChannel;
|
|
5597
5639
|
exports.useDerived = useDerived;
|
|
5598
5640
|
exports.useEventEmitter = useEventEmitter;
|
|
5599
5641
|
exports.useLocaleStorage = useLocaleStorage;
|
package/dist/ziko.min.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
2
|
Project: ziko.js
|
|
3
3
|
Author: Zakaria Elalaoui
|
|
4
|
-
Date : Wed Nov 26 2025
|
|
4
|
+
Date : Wed Nov 26 2025 12:01:55 GMT+0100 (UTC+01:00)
|
|
5
5
|
Git-Repo : https://github.com/zakarialaoui10/ziko.js
|
|
6
6
|
Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
|
|
7
7
|
Released under MIT License
|
|
8
8
|
*/
|
|
9
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Ziko={})}(this,(function(t){"use strict";const{PI:e,E:s}=Math,r=Number.EPSILON,{PI:n,cos:i,sin:a,tan:o,acos:c,asin:h,atan:l,cosh:u,sinh:f,tanh:m,acosh:p,asinh:d,atanh:g,log:b}=Math;let w={cos:i,sin:a,tan:o,sinc:t=>a(n*t)/(n*t),sec:t=>1/i(t),csc:t=>1/a(t),cot:t=>1/o(t),acos:c,asin:h,atan:l,acot:t=>n/2-l(t),cosh:u,sinh:f,tanh:m,coth:t=>.5*b((1+t)/(1-t)),acosh:p,asinh:d,atanh:g};w=new Proxy(w,{get(t,e){if(e in t)return s=>+t[e](s).toFixed(15)}});const y=(t,...e)=>{const s=e.map((e=>{if(null===e)return t(null);if(["number","string","boolean","bigint","undefined"].includes(typeof e))return t(e);if(e instanceof Array)return e.map((e=>y(t,e)));if(ArrayBuffer.isView(e))return e.map((e=>t(e)));if(e instanceof Set)return new Set(y(t,...e));if(e instanceof Map)return new Map([...e].map((e=>[e[0],y(t,e[1])])));if(e instanceof Je)return new Je(e.rows,e.cols,y(e.arr.flat(1)));if(e instanceof Xe){const[s,r,n,i]=[e.a,e.b,e.z,e.phi];switch(t){case Math.log:return Qe(is(n),i);case Math.exp:return Qe(ns(s)*as(r),ns(s)*os(r));case Math.abs:return n;case Math.sqrt:return Qe(es(n)*as(i/2),es(n)*os(i/2));case w.cos:return Qe(as(s)*hs(r),-os(s)*ls(r));case w.sin:return Qe(os(s)*hs(r),as(s)*ls(r));case w.tan:{const t=as(2*s)+hs(2*r);return Qe(os(2*s)/t,ls(2*r)/t)}case w.cosh:return Qe(hs(s)*as(r),ls(s)*os(r));case w.sinh:return Qe(ls(s)*as(r),hs(s)*os(r));case w.tanh:{const t=hs(2*s)+as(2*r);return Qe(ls(2*s)/t,os(2*r)/t)}default:return t(e)}}else if(e instanceof Object)return Object.fromEntries(Object.entries(e).map((e=>[e[0],y(t,e[1])])))}));return 1==s.length?s[0]:s},_=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t+e;if(e instanceof Xe)return Qe(t+e.a,e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).add(e);if(e instanceof Array)return e.map((e=>A(e,t)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.add(e))):t.clone.add(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>A(t,e)));if(t.length===e.length)return t.map(((t,s)=>A(t,e[s])))}}},v=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t-e;if(e instanceof Xe)return Qe(t-e.a,-e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).sub(e);if(e instanceof Array)return e.map((e=>O(e,t)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.sub(e))):t.clone.sub(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>O(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>O(t,e[s])))}}},x=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t*e;if(e instanceof Xe)return Qe(t*e.a,t*e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).mul(e);if(e instanceof Array)return e.map((e=>j(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.mul(e))):t.clone.mul(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>j(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>j(t,e[s])))}}},k=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t/e;if(e instanceof Xe)return Qe(t/e.a,t/e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).div(e);if(e instanceof Array)return e.map((e=>T(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.div(e))):t.clone.div(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>T(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>T(t,e[s])))}}},E=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t%e;if(e instanceof Xe)return Qe(t%e.a,t%e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).modulo(e);if(e instanceof Array)return e.map((e=>T(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.div(e))):t.clone.div(e);if(t instanceof Array&&!(e instanceof Array))return t.map((t=>A(t,e)))}},A=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=_(s,e[t]);return s},O=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=v(s,e[t]);return s},j=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=x(s,e[t]);return s},T=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=k(s,e[t]);return s},S=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=E(s,e[t]);return s},C=t=>new Array(t).fill(0),I=t=>new Array(t).fill(1),M=(t,e)=>new Array(e).fill(t),D=(t,e,s)=>{if("number"==typeof t)return e!==s?(t-e)/(s-e):0;if(t instanceof Je)return new Je(t.rows,t.cols,D(t.arr.flat(1),e,s));if(t instanceof Xe)return new Xe(D(t.a,e,s),D(t.b,e,s));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>D(t,e,s)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=D(t[s])}}},P=(t,e,s)=>{if("number"==typeof t)return(s-e)*t+e;if(t instanceof Je)return new Je(t.rows,t.cols,P(t.arr.flat(1),e,s));if(t instanceof Xe)return new Xe(P(t.a,e,s),P(t.b,e,s));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>P(t,e,s)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=P(t[s])}}},$=(t,e,s,r,n)=>{if("number"==typeof t)return P(D(t,e,s),r,n);if(t instanceof Je)return new Je(t.rows,t.cols,$(t.arr.flat(1),e,s,r,n));if(t instanceof Xe)return new Xe($(t.a,s,r,n),$(t.b,e,s,r,n));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>$(t,e,s,r,n)));{let i=new Array(t.length);for(let a=0;a<t.length;a++)i[a]=$(t[a],e,s,r,n)}}},F=(t,e,s)=>{const[r,n]=[H(e,s),G(e,s)];if("number"==typeof t)return H(G(t,r),n);if(t instanceof Je)return new Je(t.rows,t.cols,F(t.arr.flat(1),r,n));if(t instanceof Xe)return new Xe(F(t.a,r,n),F(t.b,r,n));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>F(t,r,n)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=F(t[s],r,n)}}},z=(t,e,s,r=!1)=>{let n=[];if(t<e)for(let i=t;r?i<=e:i<e;i+=s)n.push(10*i/10);else for(let i=t;r?i>=e:i>e;i-=s)n.push(10*i/10);return n},R=(t,e,s=ts(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[a,o]=[t,e].sort(((t,e)=>e-t));var n=[];let c;c=r?(a-o)/(s-1):(a-o)/s;for(var i=0;i<s;i++)t<e?n.push(o+c*i):n.push(a-c*i);return n}if([t,e].some((t=>t instanceof Xe))){const n=Qe(t),i=Qe(e);s=s||Math.abs(n.a-i.a)+1;const a=R(n.a,i.a,s,r),o=R(n.b,i.b,s,r);let c=new Array(s).fill(null);return c=c.map(((t,e)=>Qe(a[e],o[e]))),c}}},L=(t,e,r=e-t+1,n=s,i=!0)=>R(t,e,r,i).map((t=>ss(n,t))),q=(t,e,s=ts(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[n,i]=[t,e].sort(((t,e)=>e-t));let a;a=rs(n/i,r?s-1:s);const o=[i];for(let t=1;t<s;t++)o.push(o[t-1]*a);return t<e?o:o.reverse()}if([t,e].some((t=>t instanceof Xe))){const n=Qe(t),i=Qe(e);let a;s=s||Math.abs(n.a-i.a)+1,a=rs(i.div(n),r?s-1:s);const o=[n];for(let t=1;t<s;t++)o.push(j(o[t-1],a));return o}}},Z=(...t)=>mapfun((t=>t*Math.PI/180),...t),N=(...t)=>mapfun((t=>t/Math.PI*180),...t),B=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t[0];for(let s=1;s<t.length;s++)e+=t[s];return e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(B(...t[s])):t[s]instanceof Object&&e.push(B(...Object.values(t[s])));return 1===e.length?e[0]:e},U=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t[0];for(let s=1;s<t.length;s++)e*=t[s];return e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(U(...t[s])):t[s]instanceof Object&&e.push(U(...Object.values(t[s])));return 1===e.length?e[0]:e},H=(...t)=>{if(t.every((t=>"number"==typeof t)))return Math.min(...t);const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(H(...t[s])):t[s]instanceof Object&&e.push(Object.fromEntries([Object.entries(t[s]).sort(((t,e)=>t[1]-e[1]))[0]]));return 1===e.length?e[0]:e},G=(...t)=>{if(t.every((t=>"number"==typeof t)))return Math.max(...t);const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(H(...t[s])):t[s]instanceof Object&&e.push(Object.fromEntries([Object.entries(t[s]).sort(((t,e)=>e[1]-t[1]))[0]]));return 1===e.length?e[0]:e},V=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t.reduce(((t,e)=>[...t,t[t.length-1]+e]),[0]);return e.shift(),e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(V(...t[s])):t[s]instanceof Object&&e.push(null);return 1===e.length?e[0]:e},W=(t,e,s)=>{const[r,n]=[Math.min(e,s),Math.max(e,s)];return t>=r&&t<=n},K=(t,e,s=1e-4)=>Math.abs(t-e)<=s,J=(t,e)=>t.reduce(((t,s)=>[...t,...e.map((t=>[s,t]))]),[]),Y=(t,e)=>{let s,r=1;if(t==us(t)&&e==us(e)){for(s=2;s<=t&&s<=e;++s)t%s==0&&e%s==0&&(r=s);return r}console.log("error")},X=(t,e)=>{let s;if(t==us(t)&&e==us(e)){for(s=t>e?t:e;s%t!=0||s%e!=0;)++s;return s}console.log("error")},Q={add:A,sub:O,mul:j,div:T,modulo:S,zeros:C,ones:I,nums:M,norm:D,lerp:P,map:$,clamp:F,arange:z,linspace:R,logspace:L,geomspace:q,sum:B,prod:U,accum:V,cartesianProduct:J,ppcm:X,pgcd:Y,deg2rad:Z,rad2deg:N,inRange:W,isApproximatlyEqual:K},tt={_mode:Number,_map:function(t,e,s){return e instanceof Je?new Je(e.rows,e.cols,e.arr.flat(1).map((e=>t(e,s)))):e instanceof Xe?new Xe(t(e.a,s),t(e.b,s)):e instanceof Array?e.map((e=>t(e,s))):void 0},dec2base(t,e){return this._mode=e<=10?Number:String,"number"==typeof t?this._mode((t>>>0).toString(e)):this._map(this.dec2base,t,e)},dec2bin(t){return this.dec2base(t,2)},dec2oct(t){return this.dec2base(t,8)},dec2hex(t){return this.dec2base(t,16)},bin2base(t,e){return this.dec2base(this.bin2dec(t),e)},bin2dec(t){return this._mode("0b"+t)},bin2oct(t){return this.bin2base(t,8)},bin2hex(t){return this.bin2base(t,16)},oct2dec(t){return this._mode("0o"+t)},oct2bin(t){return this.dec2bin(this.oct2dec(t))},oct2hex(t){return this.dec2hex(this.oct2dec(t))},oct2base(t,e){return this.dec2base(this.oct2dec(t),e)},hex2dec(t){return this._mode("0x"+t)},hex2bin(t){return this.dec2bin(this.hex2dec(t))},hex2oct(t){return this.dec2oct(this.hex2dec(t))},hex2base(t,e){return this.dec2base(this.hex2dec(t),e)},IEEE32toDec(t){let e=t.split(" ").join("").padEnd(32,"0"),s=e[0],r=2**(+("0b"+e.slice(1,9))-127);return(-1)**s*(1+e.slice(9,32).split("").map((t=>+t)).map(((t,e)=>t*2**(-e-1))).reduce(((t,e)=>t+e),0))*r},IEEE64toDec(t){let e=t.split(" ").join("").padEnd(64,"0"),s=e[0],r=2**(+("0b"+e.slice(1,12))-1023);return(-1)**s*(1+e.slice(13,64).split("").map((t=>+t)).map(((t,e)=>t*2**(-e-1))).reduce(((t,e)=>t+e),0))*r}},et={_mode:Number,_map:function(t,e,s){return e instanceof Je?new Je(e.rows,e.cols,e.arr.flat(1).map((e=>t(e,s)))):e instanceof Xe?new Xe(t(e.a,s),t(e.b,s)):e instanceof Array?e.map((e=>t(e,s))):void 0},not:function(t){return["number","boolean"].includes(typeof t)?et._mode(!t):this._map(this.not,t)},and:function(t,...e){return["number","boolean"].includes(typeof t)?et._mode(e.reduce(((t,e)=>t&e),t)):this._map(this.and,t,e)},or:function(t,...e){return["number","boolean"].includes(typeof t)?et._mode(e.reduce(((t,e)=>t|e),t)):this._map(this.or,t,e)},nand:function(t,...e){return this.not(this.and(t,e))},nor:function(t,...e){return this.not(this.or(t,e))},xor:function(t,...e){let s=[t,...e];return["number","boolean"].includes(typeof t)?this._mode(1===s.reduce(((t,e)=>(1==+e&&(t+=1),t)),0)):this._map(this.xor,t,e)},xnor:function(t,...e){return et.not(et.xor(t,e))}};class st{static withDiscount(t,e){if(1===e)return t.map((t=>[t]));const s=[];return t.forEach(((r,n)=>{this.withDiscount(t.slice(n),e-1).forEach((t=>{s.push([r].concat(t))}))})),s}static withoutDiscount(t,e){if(1===e)return t.map((t=>[t]));const s=[];return t.forEach(((r,n)=>{this.withoutDiscount(t.slice(n+1),e-1).forEach((t=>{s.push([r].concat(t))}))})),s}}class rt{static float(t=1,e){return e?Math.random()*(e-t)+t:t*Math.random()}static int(t,e){return Math.floor(this.float(t,e))}static char(t){t=t??this.bool();const e=String.fromCharCode(this.int(97,120));return t?e.toUpperCase():e}static bool(){return[!1,!0][Math.floor(2*Math.random())]}static string(t,e){return t instanceof Array?new Array(this.int(...t)).fill(0).map((()=>this.char(e))).join(""):new Array(t).fill(0).map((()=>this.char(e))).join("")}static bin(){return this.int(2)}static oct(){return this.int(8)}static dec(){return this.int(8)}static hex(){return this.int(16)}static choice(t=[1,2,3],e=new Array(t.length).fill(1/t.length)){let s=new Array(100);e=Q.accum(...e).map((t=>100*t)),s.fill(t[0],0,e[0]);for(let r=1;r<t.length;r++)s.fill(t[r],e[r-1],e[r]);return s[this.int(s.length-1)]}static shuffleArr(t){return t.sort((()=>.5-Math.random()))}static shuffleMatrix(t){const{rows:e,cols:s,arr:r}=t;return Ye(e,s,r.flat().sort((()=>.5-Math.random())))}static floats(t,e,s){return new Array(t).fill(0).map((()=>this.float(e,s)))}static ints(t,e,s){return new Array(t).fill(0).map((()=>this.int(e,s)))}static bools(t){return new Array(t).fill(0).map((()=>this.bool()))}static bins(t){return new Array(t).fill(0).map((()=>this.int(2)))}static octs(t){return new Array(t).fill(0).map((()=>this.int(8)))}static decs(t){return new Array(t).fill(0).map((()=>this.int(10)))}static hexs(t){return new Array(t).fill(0).map((()=>this.int(16)))}static choices(t,e,s){return new Array(t).fill(0).map((()=>this.choice(e,s)))}static perm(...t){return t.permS[this.int(t.length)]}static color(){return"#"+tt.dec2hex(this.float(16777216)).padStart(6,0)}static colors(t){return new Array(t).fill(null).map((()=>this.color()))}static complex(t=[0,1],e=[0,1]){return t instanceof Array?new Xe(this.float(t[0],t[1]),this.float(e[0],e[1])):new Xe(...this.floats(2,t,e))}static complexInt(t=[0,1],e=[0,1]){return new Xe(this.int(t[0],t[1]),this.int(e[0],e[1]))}static complexBin(){return new Xe(...this.bins(2))}static complexOct(){return new Xe(...this.octs(2))}static complexDec(){return new Xe(...this.decs(10))}static complexHex(){return new Xe(...this.octs(2))}static complexes(t,e=0,s=1){return new Array(t).fill(0).map((()=>this.complex(e,s)))}static complexesInt(t,e=0,s=1){return new Array(t).fill(0).map((()=>this.complexInt(e,s)))}static complexesBin(t){return new Array(t).fill(0).map((()=>this.complexBin()))}static complexesOct(t){return new Array(t).fill(0).map((()=>this.complexOct()))}static complexesDec(t){return new Array(t).fill(0).map((()=>this.complexDec()))}static complexesHex(t){return new Array(t).fill(0).map((()=>this.complexHex()))}static matrix(t,e,s,r){return Ye(t,e,this.floats(t*e,s,r))}static matrixInt(t,e,s,r){return Ye(t,e,this.ints(t*e,s,r))}static matrixBin(t,e){return Ye(t,e,this.bins(t*e))}static matrixOct(t,e){return Ye(t,e,this.octs(t*e))}static matrixDec(t,e){return Ye(t,e,this.decs(t*e))}static matrixHex(t,e){return Ye(t,e,this.hex(t*e))}static matrixColor(t,e){return Ye(t,e,this.colors(t*e))}static matrixComplex(t,e,s,r){return Ye(t,e,this.complexes(t*e,s,r))}static matrixComplexInt(t,e,s,r){return Ye(t,e,this.complexesInt(t*e,s,r))}static matrixComplexBin(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexOct(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexDec(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexHex(t,e){return Ye(t,e,this.complexesBin(t*e))}}const nt=t=>{const e=new XMLHttpRequest;if(e.open("GET",t,!1),e.send(),200===e.status)return e.responseText;throw new Error(`Failed to fetch data from ${t}. Status: ${e.status}`)};globalThis.fetchdom=async function(t="https://github.com/zakarialaoui10"){const e=await fetch(t),s=await e.text();return(new DOMParser).parseFromString(s,"text/xml").documentElement},globalThis.fetchdomSync=function(t="https://github.com/zakarialaoui10"){const e=nt(t);return(new DOMParser).parseFromString(e,"text/xml").documentElement};const it=(t,e=",")=>t.trim().trimEnd().split("\n").map((t=>t.split(e))),at=(t,e=",")=>{const[s,...r]=it(t,e);return r.map((t=>{const e={};return s.forEach(((s,r)=>{e[s]=t[r]})),e}))},ot=t=>t instanceof Array?[Object.keys(t[0]),...t.map((t=>Object.values(t)))]:[Object.keys(t)],ct=(t,e)=>ot(t).map((t=>t.join(e))).join("\n"),ht=(t,e=",")=>ct(t instanceof Object?t:JSON.parse(t),e),lt=(t,e)=>{const s=[];if(Array.isArray(t))t.forEach((t=>{if("object"==typeof t&&null!==t){s.push(`${e}-`);const r=lt(t,`${e} `);s.push(...r)}else s.push(`${e}- ${t}`)}));else for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];if("object"==typeof n&&null!==n){s.push(`${e}${r}:`);const t=lt(n,`${e} `);s.push(...t)}else s.push(`${e}${r}: ${n}`)}return s},ut=(t,e="")=>lt(t,e).join("\n"),ft=(t,e)=>ut(t instanceof Object?t:JSON.parse(t),e),mt=(t,e=1)=>{let s="";for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];s+="\n"+" ".repeat(e)+`<${r}>`,s+="object"==typeof n?mt(n,e+2):`${n}`,s+=`</${r}>`}return s.trim()};class pt{constructor(t){this.cache={node:t}}isZikoUINode(){return!0}get node(){return this.cache.node}}class dt 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 gt=new dt,bt={default:{target:null,render:!0,math:{mode:"deg"}},setDefault:function(t){const e=Object.keys(t),s=Object.values(t);for(let t=0;t<e.length;t++)this.default[e[t]]=s[t]},init:()=>{},renderingMode:"spa",isSSC:!1},wt={store:new Map,index:0,register:function(t){this.store.set(this.index++,t)},reset(){this.index=0,this.store.clear()}},yt={ui_index:0,get_ui_index:function(){return this.ui_index++},register_ui:function(t){}};class _t{constructor(t=""){this.channel=new BroadcastChannel(t),this.eventData=new Map,this.handlers=new Map,this.uuid="ziko-channel:"+rt.string(10),this.subscribers=new Set([this.uuid]),this.channel.addEventListener("message",(t=>{const{last_sent_event:e,userId:s,eventData:r}=t.data;if(s===this.uuid)return;this.subscribers.add(s),this.eventData=new Map(r);const n=this.eventData.get(e),i=this.handlers.get(e);i&&i.forEach((t=>t(n)))}))}emit(t,e){return this.eventData.set(t,e),this.channel.postMessage({eventData:this.eventData,last_sent_event:t,userId:this.uuid}),this}on(t,e=console.log){return this.handlers.has(t)||this.handlers.set(t,[]),this.handlers.get(t).push(e),this}close(){return this.channel.close(),this}get broadcast(){return this}}const vt=t=>new _t(t);class xt{constructor(t,e,s){this.cache={storage:t,globalKey:e,channel:vt(`Ziko:useStorage-${e}`),oldItemKeys:new Set},this.#t(s),this.#e()}get items(){return JSON.parse(this.cache.storage[this.cache.globalKey]??null)}#e(){for(let t in this.items)Object.assign(this,{[[t]]:this.items[t]})}#t(t){this.cache.channel=vt(`Ziko:useStorage-${this.cache.globalKey}`),this.cache.channel.on("Ziko-Storage-Updated",(()=>this.#e())),t&&(this.cache.storage[this.cache.globalKey]?Object.keys(this.items).forEach((t=>this.cache.oldItemKeys.add(t))):this.set(t))}set(t){return this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(t)),this.cache.channel.emit("Ziko-Storage-Updated",{}),Object.keys(t).forEach((t=>this.cache.oldItemKeys.add(t))),this.#e(),this}add(t){const e={...this.items,...t};return this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(e)),this.#e(),this}remove(...t){const e={...this.items};for(let s=0;s<t.length;s++)delete e[t[s]],delete this[t[s]];return this.set(e),this}get(t){return this.items[t]}clear(){return this.cache.storage.removeItem(this.cache.globalKey),this.#e(),this}}const kt=(t,e)=>new xt(sessionStorage,t,e),Et={store:new Map,index:0,session_storage:null,register:function(t){if(!(void 0).SSR&&(void 0).DEV){this.session||(this.session_storage=kt("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 At(){var t;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:gt,__HYDRATION__:wt,__State__:Et,__Config__:bt,__CACHE__:yt},t=__Ziko__,Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}))}At();class Ot extends pt{constructor(){super()}init(t,e,s,r){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof t)switch(s){case"html":t=globalThis?.document?.createElement(t);break;case"svg":t=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg",t);break;default:throw Error("Not supported")}else this.target=t?.parentElement;Object.assign(this.cache,{name:e,isInteractive:!1,parent:null,isBody:!1,isRoot:!1,isHidden:!1,isFrozzen:!1,legacyParent:null,attributes:{},filters:{},temp:{}}),this.events={ptr:null,mouse:null,wheel:null,key:null,drag:null,drop:null,click:null,clipboard:null,focus:null,swipe:null,custom:null},this.observer={resize:null,intersection:null},t&&Object.assign(this.cache,{element:t}),this.items=new dt,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],t&&r&&this?.render?.(),globalThis.__Ziko__.__UI__.push(this)}get element(){return this.cache.element}[Symbol.iterator](){return this.items[Symbol.iterator]()}maintain(){for(let t=0;t<this.items.length;t++)Object.defineProperty(this,t,{value:this.items[t],writable:!0,configurable:!0,enumerable:!1})}isInteractive(){return this.cache.isInteractive}isUIElement(){return!0}}function jt(t,...e){e.forEach((e=>function(t,e){const s=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(s)){const r=s[e];"get"in r||"set"in r||"function"!=typeof r.value?Object.defineProperty(Object.getPrototypeOf(t),e,r):"function"==typeof r.value&&(Object.getPrototypeOf(t).hasOwnProperty(e)||Object.defineProperty(Object.getPrototypeOf(t),e,r))}}(t,e)))}function Tt(t){const{store:e,index:s}=__Ziko__.__State__;__Ziko__.__State__.register({value:t,subscribers:new Set,paused:!1});let r=e.get(s);return[function(){return{value:r.value,isStateGetter:()=>!0,_subscribe:t=>r.subscribers.add(t)}},function(t){r.paused||("function"==typeof t&&(t=t(r.value)),t!==r.value&&(r.value=t,r.subscribers.forEach((t=>t(r.value))),__Ziko__.__State__.update(s,t)))},{pause:()=>{r.paused=!0},resume:()=>{r.paused=!1},clear:()=>{r.subscribers.clear()},force:t=>{"function"==typeof t&&(t=t(r.value)),r.value=t,r.subscribers.forEach((t=>t(r.value)))},getSubscribers:()=>new Set(r.subscribers)}]}globalThis.__Ziko__||At();const St=t=>"function"==typeof t&&t?.()?.isStateGetter?.(),Ct=(t="")=>t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase())),It=(t="")=>{if(0===t.length)return!1;return/^[a-z][a-zA-Z0-9]*$/.test(t)};class Mt extends pt{constructor(...t){super("span","text",!1,...t),this.element=globalThis?.document?.createTextNode(...t)}isText(){return!0}}const Dt=(...t)=>new Mt(...t);async function Pt(t,e,...s){if(this.cache.isFrozzen)return console.warn("You can't append new item to frozzen element"),this;for(let r=0;r<s.length;r++){if(["number","string"].includes(typeof s[r])&&(s[r]=Dt(s[r])),s[r]instanceof Function){const t=s[r]();t.isStateGetter&&(s[r]=Dt(t.value),t._subscribe((t=>s[r].element.textContent=t),s[r]))}if("function"==typeof globalThis?.Node&&s[r]instanceof globalThis?.Node&&(s[r]=new this.constructor(s[r])),s[r]?.isZikoUINode)s[r].cache.parent=this,this.element?.[t](s[r].element),s[r].target=this.element,this.items[e](s[r]);else if(s[r]instanceof Promise){const n=await s[r];n.cache.parent=this,this.element?.[t](n.element),n.target=this.element,this.items[e](n)}else s[r]instanceof Object&&(s[r]?.style&&this.style(s[r]?.style),s[r]?.attr&&Object.entries(s[r].attr).forEach((t=>this.setAttr(""+t[0],t[1]))))}return this.maintain(),this}function $t(t,e){if(globalThis.SVGAElement&&this.element instanceof globalThis.SVGAElement&&(t=It(t)?Ct(t):t),!this?.attr[t]||this?.attr[t]!==e){if(St(e)){e()._subscribe((e=>this.element?.setAttribute(t,e)),this)}else this.element?.setAttribute(t,e);Object.assign(this.cache.attributes,{[t]:e})}}var Ft=Object.freeze({__proto__:null,getAttr:function(t){return t=is_camelcase(t)?camel2hyphencase(t):t,this.element.attributes[t].value},removeAttr:function(...t){for(let e=0;e<t.length;e++)this.element?.removeAttribute(t[e]);return this},setAttr:function(t,e){if(t instanceof Object){const[s,r]=[Object.keys(t),Object.values(t)];for(let t=0;t<s.length;t++)r[t]instanceof Array&&(e[t]=r[t].join(" ")),$t.call(this,s[t],r[t])}else e instanceof Array&&(e=e.join(" ")),$t.call(this,t,e);return this},setContentEditable:function(t=!0){return this.setAttr("contenteditable",t),this}});var zt=Object.freeze({__proto__:null,after:function(t){return t?.isUIElement&&(t=t.element),this.element?.after(t),this},append:function(...t){return Pt.call(this,"append","push",...t),this},before:function(t){return t?.isUIElement&&(t=t.element),this.element?.before(t),this},clear:function(){return this?.items?.forEach((t=>t.unmount())),this.element.innerHTML="",this},insertAt:function(t,...e){if(t>=this.element.children.length)this.append(...e);else for(let s=0;s<e.length;s++)["number","string"].includes(typeof e[s])&&(e[s]=Dt(e[s])),this.element?.insertBefore(e[s].element,this.items[t].element),this.items.splice(t,0,e[s]);return this},mount:function(t=this.target){if(!this.isBody)return t?.isUIElement&&(t=t.element),this.target=t,this.target?.appendChild(this.element),this},prepend:function(...t){return this.__addItem__.call(this,"prepend","unshift",...t),this},remove:function(...t){const e=t=>{"number"==typeof t&&(t=this.items[t]),t?.isUIElement&&this.element?.removeChild(t.element),this.items=this.items.filter((e=>e!==t))};for(let s=0;s<t.length;s++)e(t[s]);for(let t=0;t<this.items.length;t++)Object.assign(this,{[[t]]:this.items[t]});return this},renderAfter:function(t=1){return setTimeout((()=>this.mount()),t),this},replaceElementWith:function(t){return this.cache.element.replaceWith(t),this.cache.element=t,this},unmount:function(){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},unrenderAfter:function(t=1){return setTimeout((()=>this.unmount()),t),this}});const Rt={Click:["Click","DblClick","ClickAway"],Ptr:["PtrMove","PtrDown","PtrUp","PtrLeave","PtrEnter","PtrOut","PtrCancel"],Mouse:["MouseMove","MouseDown","MouseUp","MouseEnter","MouseLeave","MouseOut"],Key:["KeyDown","KeyPress","KeyUp"],Clipboard:["Copy","Cut","Paste"],Focus:["focus","blur"],Drag:["Drag","DragStart","DragEnd","Drop"],Wheel:["Wheel"]},Lt=(t="")=>t.startsWith("Ptr")?`pointer${t.split("Ptr")[1].toLowerCase()}`:t.toLowerCase();function qt(t,e,s,r,n){this.cache.currentEvent=e,this.cache.event=t,s?.call(this),r?.hasOwnProperty("prototype")?r?.call(this):r?.call(null,this),this.cache.preventDefault[e]&&t.preventDefault(),this.cache.stopPropagation[e]&&t.stopPropagation(),this.cache.stopImmediatePropagation[e]&&t.stopImmediatePropagation(),this.cache.stream.enabled[e]&&n&&this.cache.stream.history[e].push(n),this.cache.callbacks[e]?.map((t=>t(this)))}class Zt{constructor(t=null,e=[],s,r){this.target=t,this.cache={currentEvent:null,event:null,options:{},preventDefault:{},stopPropagation:{},stopImmediatePropagation:{},event_flow:{},paused:{},stream:{enabled:{},clear:{},history:{}},callbacks:{},__controllers__:{}},e&&this._register_events(e,s,r)}_register_events(t,e,s,r=!0){const n=t?.map((t=>Lt(t)));return n?.forEach(((n,i)=>{Object.assign(this.cache.preventDefault,{[n]:!1}),Object.assign(this.cache.options,{[n]:{}}),Object.assign(this.cache.paused,{[n]:!1}),Object.assign(this.cache.stream.enabled,{[n]:!1}),Object.assign(this.cache.stream.clear,{[n]:!1}),Object.assign(this.cache.stream.history,{[n]:[]}),Object.assign(this.cache.__controllers__,{[n]:t=>qt.call(this,t,n,e,s)}),r&&Object.assign(this,{[`on${t[i]}`]:(...t)=>this.__onEvent(n,this.cache.options[n],{},...t)})})),this}get targetElement(){return this.target?.element}get isParent(){return this.target?.element===this.event.srcElement}get item(){return this.target.find((t=>t.element==this.event?.srcElement))?.[0]}get currentEvent(){return this.cache.currentEvent}get event(){return this.cache.event}setTarget(t){return this.target=t,this}__handle(t,e,s,r){return this.targetElement?.addEventListener(t,e,s),this}__onEvent(t,e,s,...r){if(0===r.length){if(console.log("00"),!this.cache.callbacks[t])return this;console.log("Call"),this.cache.callbacks[t].map((t=>e=>t.call(this,e)))}else this.cache.callbacks[t]=r.map((t=>e=>t.call(this,e)));return this.__handle(t,this.cache.__controllers__[t],e,s),this}#s(t,e,s){"default"===s&&Object.assign(this.cache[t],{...this.cache[t],...e});const r="default"===s?this.cache[t]:Object.fromEntries(Object.keys(this.cache.preventDefault).map((t=>[t,s])));return Object.assign(this.cache[t],{...r,...e}),this}preventDefault(t={},e="default"){return this.#s("preventDefault",t,e),this}stopPropagation(t={},e="default"){return this.#s("stopPropagation",t,e),this}stopImmediatePropagation(t={},e="default"){return this.#s("stopImmediatePropagation",t,e),this}setEventOptions(t,e){return this.pause({[t]:!0},"default"),Object.assign(this.cache.options[Lt(t)],e),this.resume({[t]:!0},"default"),this}pause(t={},e="default"){t={..."default"===e?this.cache.stream.enabled:Object.entries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t};for(let e in t)t[e]&&(this.targetElement?.removeEventListener(e,this.cache.__controllers__[e],this.cache.options[e]),this.cache.paused[e]=!0);return this}resume(t={},e="default"){t={..."default"===e?this.cache.stream.enabled:Object.entries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t};for(let e in t)t[e]&&(this.targetElement?.addEventListener(e,this.cache.__controllers__[e],this.cache.options[e]),this.cache.paused[e]=!1);return this}stream(t={},e="default"){this.cache.stream.t0=Date.now();return t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t},Object.assign(this.cache.stream.enabled,t),this}clear(){return this}dispose(t={},e="default"){return this.pause(t,e),this}}class Nt extends Zt{constructor(t,e){super(t,Rt.Click,Bt,e)}}function Bt(){"click"===this.currentEvent?this.dx=0:this.dx=1}const Ut=(t,e)=>new Nt(t,e);class Ht extends Zt{constructor(t,e){super(t,Rt.Clipboard,Gt,e)}}function Gt(){}const Vt=(t,e)=>new Ht(t,e);class Wt extends Zt{constructor(t,e,s){super(t,e,Kt,s)}_register_events(t){return super._register_events(t,null,null,!1),this}emit(t,e={}){const s=new Event(t);return this.targetElement.dispatchEvent(s),this}on(t,...e){return this.cache.options.hasOwnProperty(t)||this._register_events([t]),this.__onEvent(t,this.cache.options[t],{},...e),this}}function Kt(){}class Jt extends Zt{constructor(t,e){super(t,Rt.Drag,Yt,e)}}function Yt(){}const Xt=(t,e)=>new Jt(t,e);class Qt extends Zt{constructor(t,e){super(t,Rt.Focus,te,e)}}function te(){}const ee=(t,e)=>new Qt(t,e);class se extends Zt{constructor(t,e){super(t,Rt.Hash,re,e)}}function re(){}class ne extends Zt{constructor(t,e){super(t,Rt.Key,ie,e)}}function ie(){switch(this.currentEvent){case"keydown":this.kd=this.event.key;break;case"keypress":this.kp=this.event.key;break;case"keyup":this.ku=this.event.key}}const ae=(t,e)=>new ne(t,e);class oe extends Zt{constructor(t,e){super(t,Rt.Mouse,ce,e)}}function ce(){}const he=(t,e)=>new oe(t,e);class le extends Zt{constructor(t,e){super(t,Rt.Ptr,ue,e),this.isDown=!1}}function ue(){switch(this.currentEvent){case"pointerdown":this.dx=parseInt(this.event.offsetX),this.dy=parseInt(this.event.offsetY),this.isDown=!0;break;case"pointermove":this.mx=parseInt(this.event.offsetX),this.my=parseInt(this.event.offsetY),this.isMoving=!0;break;case"pointerup":{this.ux=parseInt(this.event.offsetX),this.uy=parseInt(this.event.offsetY),this.isDown=!1,console.log(this.target.width);const t=(this.ux-this.dx)/this.target.width,e=(this.dy-this.uy)/this.target.height,s=t<0?"left":t>0?"right":"none",r=e<0?"bottom":e>0?"top":"none";this.swippe={h:s,v:r,delta_x:t,delta_y:e}}}}const fe=(t,e)=>new le(t,e);class me extends Zt{constructor(t,e){super(t,Rt.Touch,pe,e)}}function pe(){}class de extends Zt{constructor(t,e){super(t,Rt.Wheel,ge,e)}}function ge(){}const be=(t,e)=>new de(t,e),we={ptr:fe,mouse:he,key:ae,click:Ut,drag:Xt,clipboard:Vt,focus:ee,wheel:be},ye={};Object.entries(Rt).forEach((([t,e])=>{e.forEach((e=>{const s=`on${e}`;ye[s]=function(...e){return this.events[t]||(this.events[t]=we[t.toLowerCase()](this)),this.events[t][s](...e),this}}))}));var _e=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 ve=Object.freeze({__proto__:null,animate:function(t,{duration:e=1e3,iterations:s=1,easing:r="ease"}={}){return this.element?.animate(t,{duration:e,iterations:s,easing:r}),this},hide:function(){},show:function(){},size:function(t,e){return this.style({width:t,height:e})},style:function(t){if(!this.element?.style)return this;for(let e in t){const s=t[e];if(St(s)){const t=s();Object.assign(this.element.style,{[e]:t.value}),t._subscribe((t=>{console.log({newValue:t}),Object.assign(this.element.style,{[e]:t})}))}else Object.assign(this.element.style,{[e]:s})}return this}});function xe(t,e,s,r){return this.event=t,this.cache.preventDefault[e]&&t.preventDefault(),console.log({setter:s}),s&&s(),this.cache.stream.enabled[e]&&r&&this.cache.stream.history[e].push(r),this.cache.callbacks[e].map((t=>t(this))),this}class ke{constructor(t){this.target=null,this.setTarget(t),this.__dispose=this.dispose.bind(this)}get targetElement(){return this.target.element}setTarget(t){return this.target=t,this}__handle(t,e,s){const r="drag"===t?t:`${this.cache.prefixe}${t}`;return this.dispose(s),this.targetElement?.addEventListener(r,e),this}__onEvent(t,e,...s){if(0===s.length){if(!(this.cache.callbacks.length>1))return this;this.cache.callbacks.map((t=>e=>t.call(this,e)))}else this.cache.callbacks[t]=s.map((t=>e=>t.call(this,e)));return this.__handle(t,this.__controller[t],e),this}preventDefault(t={}){return Object.assign(this.cache.preventDefault,t),this}pause(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.targetElement?.removeEventListener(`${this.cache.prefixe}${e}`,this.__controller[`${this.cache.prefixe}${e}`]),this.cache.paused[`${this.cache.prefixe}${e}`]=!0);return this}resume(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.targetElement?.addEventListener(`${this.cache.prefixe}${e}`,this.__controller[`${this.cache.prefixe}${e}`]),this.cache.paused[`${this.cache.prefixe}${e}`]=!1);return this}dispose(t={}){return this.pause(t),this}stream(t={}){this.cache.stream.t0=Date.now();return t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t},Object.assign(this.cache.stream.enabled,t),this}clear(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.clear).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.cache.stream.history[e]=[]);return this}}const Ee=t=>function(e){xe.call(this,e,t,null,null)};class Ae extends ke{constructor(t){super(t),this.event=null,this.cache={prefixe:"",preventDefault:{},paused:{},stream:{enabled:{},clear:{},history:{}},callbacks:{}},this.__controller={}}#t(t){return this.cache.preventDefault[t]=!1,this.cache.paused[t]=!1,this.cache.stream.enabled=!1,this.cache.stream.clear=!1,this.cache.stream.history=[],this.cache.callbacks[t]=[],this.__controller[t]=Ee(t).bind(this),this}on(t,...e){return this.__controller[t]||this.#t(t),this.__onEvent(t,{},...e),this}emit(t,e={}){this.__controller[t]||this.#t(t),this.detail=e;const s=new Event(t);return this.targetElement.dispatchEvent(s),this}}const Oe=t=>new Ae(t);let je=class extends Ot{constructor({element:t,name:e="",type:s="html",render:r=__Ziko__.__Config__.default.render}={}){super(),jt(this,Ft,zt,ve,_e,ye),t&&this.init(t,e,s,r)}get element(){return this.cache.element}isInteractive(){return this.cache.isInteractive}useClient(t){return this.cache.isInteractive||(this.element.setAttribute("data-hydration-index",globalThis.__Ziko__.__HYDRATION__.index),globalThis.__Ziko__.__HYDRATION__.register((()=>this)),this.cache.isInteractive=!0),t&&this.element.setAttribute("data-hydration-directive",t),this}get st(){return this.cache.style}get attr(){return this.cache.attributes}get evt(){return this.events}get html(){return this.element.innerHTML}get text(){return this.element.textContent}get isBody(){return this.element===globalThis?.document.body}get parent(){return this.cache.parent}get width(){return this.element.getBoundingClientRect().width}get height(){return this.element.getBoundingClientRect().height}get top(){return this.element.getBoundingClientRect().top}get right(){return this.element.getBoundingClientRect().right}get bottom(){return this.element.getBoundingClientRect().bottom}get left(){return this.element.getBoundingClientRect().left}on(t,...e){return this.events.custom||(this.events.custom=Oe(this)),this.events.custom.on(t,...e),this}emit(t,e={}){return this.events.custom||(this.events.custom=Oe(this)),this.events.custom.emit(t,e),this}};class Te extends je{constructor(...t){super({element:"div",name:"view"}),this.append(...t)}}const Se=["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"],Ce=["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"],Ie=new Proxy({},{get(t,e){if("string"!=typeof e)return;let s,r=e.replaceAll("_","-").toLowerCase();return Se.includes(r)&&(s="html"),Ce.includes(r)&&(s="svg"),(...t)=>0===t.length?new je({element:r,name:r,type:s}):["string","number"].includes(typeof t[0])||t[0]instanceof je||"function"==typeof t[0]&&t[0]().isStateGetter()?new je({element:r,name:r,type:s}).append(...t):new je({element:r,type:s}).setAttr(t.shift()).append(...t)}});class Me extends je{constructor(t="div",e="100%",s="100%"){super({element:t,name:"Flex"}),this.direction="cols","number"==typeof e&&(e+="%"),"number"==typeof s&&(s+="%"),this.style({width:e,height:s}),this.style({display:"flex"})}get isFlex(){return!0}resp(t,e=!0){return this.wrap(e),this.element.clientWidth<t?this.vertical():this.horizontal(),this}setSpaceAround(){return this.style({justifyContent:"space-around"}),this}setSpaceBetween(){return this.style({justifyContent:"space-between"}),this}setBaseline(){return this.style({alignItems:"baseline"}),this}gap(t){return"row"===this.direction?this.style({columnGap:t}):"column"===this.direction&&this.style({rowGap:t}),this}wrap(t="wrap"){return this.style({flexWrap:"string"==typeof t?t:["no-wrap","wrap","wrap-reverse"][+t]}),this}_justifyContent(t="center"){return this.style({justifyContent:t}),this}vertical(t,e,s=1){return De.call(this,s),this.style({alignItems:"number"==typeof t?$e.call(this,t):t,justifyContent:"number"==typeof e?Fe.call(this,e):e}),this}horizontal(t,e,s=1){return Pe.call(this,s),this.style({alignItems:"number"==typeof e?Fe.call(this,e):e,justifyContent:"number"==typeof t?$e.call(this,t):t}),this}show(){return this.isHidden=!1,this.style({display:"flex"}),this}}function De(t){return 1==t?this.style({flexDirection:"column"}):-1==t&&this.style({flexDirection:"column-reverse"}),this}function Pe(t){return 1==t?this.style({flexDirection:"row"}):-1==t&&this.style({flexDirection:"row-reverse"}),this}function $e(t){return"number"==typeof t&&(t=["flex-start","center","flex-end"][t+1]),t}function Fe(t){return $e(-t)}class ze extends Ot{constructor({element:t,name:e,type:s,render:r}){super({element:t,name:e,type:s,render:r})}}class Re extends ze{constructor(t,e){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=t,this.append(t),(async()=>{try{const s=await e();t.unmount(),this.append(s)}catch(t){console.log({error:t})}})()}}class Le extends je{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 qe extends je{constructor(t){super({element:"div",name:"html_wrappper"}),this.element.append(function(t){if("undefined"!=typeof DOMParser){const e=(new DOMParser).parseFromString(t.trim(),"image/svg+xml").documentElement;if("parsererror"===e.nodeName)throw new Error("Invalid SVG string");if(e.hasAttribute("xmlns"))return e;const{children:s,attributes:r}=e,n=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:t,value:e}of r)n.setAttribute(t,e);return n.append(...s),globalThis.svg=e,globalThis.children=s,globalThis.attributes=r,globalThis.element=n,n}throw new Error("DOMParser is not available in this environment")}(t)),this.style({display:"contents"})}}class Ze extends je{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 Ne=t=>(new XMLSerializer).serializeToString(t),Be=t=>btoa(Ne(t)),Ue=t=>"data:image/svg+xml;base64,"+Be(t),He=t=>JSON.stringify(y((t=>["number","string","boolean","bigint"].includes(typeof t)?String(t):t instanceof Xe||t instanceof Je?t.toString():t instanceof Array?Ve(t):void 0),t),null," ").replace(/"([^"]+)":/g,"$1:").replace(/: "([^"]+)"/g,": $1"),Ge=t=>{if(!Array.isArray(t))return 0;let e=1;for(const s of t)if(Array.isArray(s)){const t=Ge(s);t+1>e&&(e=t+1)}return e},Ve=t=>{let e=0;return function t(s){let r=Ge(s),n=0;return s.some((t=>Array.isArray(t)))&&(e++,n=1),"["+s.map(((r,n)=>["number","string","boolean","bigint"].includes(typeof r)?String(r):r instanceof Xe?r.toString():r instanceof Array?`\n${" ".repeat(e)}${t(r)}${n===s.length-1?"\n":""}`:r instanceof Object?He(r):void 0))+`${" ".repeat((r+e+1)*n)}]`}(t)},We=(t,e=0)=>{t=Ke(t);let s="";const r=" ".repeat(e);for(let n in t)if("object"==typeof t[n]){s+=`${r}${n} {\n`;const i=t[n];for(let t in i)"object"==typeof i[t]?s+=We({[t]:i[t]},e+1):s+=`${r} ${t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))}: ${i[t]};\n`;s+=`${r}}\n`}return s};function Ke(t){return"object"!=typeof t||null===t?t:Object.keys(t).reduce(((e,s)=>(e[s.trim()]=Ke(t[s]),e)),Array.isArray(t)?[]:{})}class Je{constructor(t,e,s=[]){if(t instanceof Je)this.arr=t.arr,this.rows=t.rows,this.cols=t.cols;else{let r,n,i=[];if(arguments[0]instanceof Array)t=arguments[0].length,e=arguments[0][0].length,i=arguments[0];else for(r=0;r<t;r++)for(i.push([]),i[r].push(new Array(e)),n=0;n<e;n++)i[r][n]=s[r*e+n],null==s[r*e+n]&&(i[r][n]=0);this.rows=t,this.cols=e,this.arr=i}this.#e()}toString(){return Ve(this.arr)}at(t=0,e=void 0){return t<0&&(t=this.rows+t),null==e?this.arr[t]:(e<0&&(e=this.cols+e),this.arr[t][e])}reshape(t,e){if(t*e==this.rows*this.cols)return new Je(t,e,this.arr.flat(1));console.error("Err")}static eye(t){let e=new Je(t,t);for(let s=0;s<t;s++)for(let r=0;r<t;r++)e.arr[s][r]=s===r?1:0;return e}get clone(){return new Je(this.rows,this.cols,this.arr.flat(1))}get size(){return this.rows*this.cols}get shape(){return[this.rows,this.cols]}get reel(){return new Je(this.cols,this.rows,this.arr.flat(1).reel)}get imag(){return new Je(this.cols,this.rows,this.arr.flat(1).imag)}[Symbol.iterator](){return this.arr[Symbol.iterator]()}#e(){for(let t=0;t<this.arr.length;t++)Object.defineProperty(this,t,{value:this.arr[t],writable:!0,configurable:!0,enumerable:!1})}get(t=0,e=0){return-1==e?this.arr[t]:-1==t?this.arr.map((t=>t[e])):this.arr[t][e]}set(t=0,e=0,s){if(-1==e)return this.arr[t]=s;if(-1==t){for(let t=0;t<this.cols;t++)this.arr[t][e]=s[t]||0;return this.arr}return this.arr[t][e]=s}get isSquare(){return this.rows/this.cols==1}get isSym(){if(!this.isSquare)return!1;const t=this.T,e=this.clone;return 0==Je.sub(e,t).max&&0==Je.sub(e,t).min}get isAntiSym(){if(!this.isSquare)return!1;const t=this.T,e=this.clone;return 0==Je.add(e,t).max&&0==Je.add(e,t).min}get isDiag(){if(!this.isSquare)return!1;const t=this.T,e=this.clone,s=Je.mul(e,t),r=Je.dot(t,e);return 0==Je.sub(s,r).max&&0==Je.sub(s,r).min}get isOrtho(){return!!this.isSquare&&(this.isDiag&&(1==this.det||-1==this.det))}get isIdemp(){if(!this.isSquare)return!1;const t=this.clone,e=Je.dot(t,t);return 0==Je.sub(e,t).max&&0==Je.sub(e,t).min}get T(){let t=[];for(let e=0;e<this.arr[0].length;e++){t[e]=[];for(let s=0;s<this.arr.length;s++)t[e][s]=this.arr[s][e]}return new Je(this.cols,this.rows,t.flat(1))}get det(){if(!this.isSquare)return new Error("is not square matrix");if(1==this.rows)return this.arr[0][0];function t(t,e){var s=[];for(let e=0;e<t.length;e++)s.push(t[e].slice(0));s.splice(0,1);for(let t=0;t<s.length;t++)s[t].splice(e,1);return s}return function e(s){if(2==s.length)return s.flat(1).some((t=>t instanceof Je))?void console.warn("Tensors are not completely supported yet ..."):Q.sub(Q.mul(s[0][0],s[1][1]),Q.mul(s[0][1],s[1][0]));for(var r=0,n=0;n<s.length;n++){const i=Q.add(Q.mul(ss(-1,n),Q.mul(s[0][n],e(t(s,n)))));r=Q.add(r,i)}return r}(this.arr)}get inv(){if(!this.isSquare)return new Error("is not square matrix");if(0===this.det)return"determinat = 0 !!!";let t=function(t){if(t.length!==t[0].length)return;var e=0,s=0,r=0,n=t.length,i=0,a=[],o=[];for(e=0;e<n;e+=1)for(a[a.length]=[],o[o.length]=[],r=0;r<n;r+=1)a[e][r]=e==r?1:0,o[e][r]=t[e][r];for(e=0;e<n;e+=1){if(0==(i=o[e][e])){for(s=e+1;s<n;s+=1)if(0!=o[s][e]){for(r=0;r<n;r++)i=o[e][r],o[e][r]=o[s][r],o[s][r]=i,i=a[e][r],a[e][r]=a[s][r],a[s][r]=i;break}if(0==(i=o[e][e]))return}for(r=0;r<n;r++)o[e][r]=o[e][r]/i,a[e][r]=a[e][r]/i;for(s=0;s<n;s++)if(s!=e)for(i=o[s][e],r=0;r<n;r++)o[s][r]-=i*o[e][r],a[s][r]-=i*a[e][r]}return a}(this.arr);return new Je(this.rows,this.cols,t.flat(1))}static zeros(t,e){let s=new Je(t,e);for(let n=0;n<t;n++)for(var r=0;r<e;r++)s.arr[n][r]=0;return s}static ones(t,e){let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=1;return s}static nums(t,e,s){let r=new Je(t,e);for(let n=0;n<t;n++)for(let t=0;t<e;t++)r.arr[n][t]=s;return r}static get rand(){return{int:(t,e,s,r)=>{let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.randInt(s,r);return n},bin:(t,e)=>{let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=rt.randBin;return s},hex:(t,e)=>{let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=rt.randHex;return s},choices:(t,e,s,r)=>{let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.choice(s,r);return n},permutation:(t,e,s)=>{}}}static rands(t,e,s=1,r){let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.rand(s,r);return n}map(t,e,s,r){return Q.map(this,t,e,s,r)}lerp(t,e){return Q.lerp(this,t,e)}norm(t,e){return Q.norm(this,t,e)}clamp(t,e){return Q.clamp(this,t,e)}static map(t,e,s,r,n){return Q.map(t,e,s,r,n)}static lerp(t,e,s){return Q.lerp(t,e,s)}static norm(t,e,s){return Q.norm(t,e,s)}static clamp(t,e,s){return Q.clamp(Ye,e,s)}toPrecision(t){for(let e=0;e<this.cols;e++)for(let s=0;s<this.rows;s++)this.arr[e][s]=+this.arr[e][s].toPrecision(t);return this}get toBin(){let t=this.arr.flat(1).toBin;return new Je(this.rows,this.cols,t)}get toOct(){let t=this.arr.flat(1).toOct;return new Je(this.rows,this.cols,t)}get toHex(){let t=this.arr.flat(1).toHex;return new Je(this.rows,this.cols,t)}max2min(){let t=this.arr.flat(1).max2min;return new Je(this.rows,this.cols,t)}min2max(){let t=this.arr.flat(1).min2max;return new Je(this.rows,this.cols,t)}sortRows(t=void 0){let e=this.arr.map((e=>e.sort(t))).flat(1);return new Je(this.rows,this.cols,e)}sortCols(t=void 0){let e=this.T.arr.map((e=>e.sort(t))).flat(1);return new Je(this.rows,this.cols,e).T}filterByRows(t){var e=this.arr.map((e=>e.map((e=>+(""+e).includes(t))))).map((t=>!!Logic.or(...t))),s=this.arr.filter(((t,s)=>!0===e[s]));return 0===s.length&&s.push([]),console.log(s),new Je(s)}filterByCols(t){return new Je(this.T.arr.filter((e=>e.includes(t))))}sortAll(t=void 0){let e=this.arr.flat(1).sort(t);return new Je(this.rows,this.cols,e)}count(t){return this.arr.flat(1).count(t)}toBase(t){let e=this.arr.flat(1).toBase(t);return new Je(this.rows,this.cols,e)}#r(t){if(this.rows!==t.rows)return;let e=this.arr;for(let s=0;s<this.rows;s++)for(let r=this.cols;r<this.cols+t.cols;r++)e[s][r]=t.arr[s][r-this.cols];return this.cols+=t.cols,new Je(this.rows,this.cols,e.flat(1))}hstack(...t){const e=[this,...t].reduce(((t,e)=>t.#r(e)));return Object.assign(this,e),this}static hstack(t,...e){return t.clone.hstack(...e)}#n(t){if(this.cols!==t.cols)return;let e=this.arr;for(let s=this.rows;s<this.rows+t.rows;s++){e[s]=[];for(let r=0;r<this.cols;r++)e[s][r]=t.arr[s-this.rows][r]}return this.rows+=t.rows,new Je(this.rows,this.cols,e.flat(1))}vstack(...t){const e=[this,...t].reduce(((t,e)=>t.#n(e)));return Object.assign(this,e),this}static vstack(t,...e){return t.clone.vstack(...e)}hqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>t.#r(e)));return Object.assign(this,e),this}vqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>t.#n(e)));return Object.assign(this,e),this}static hqueue(t,...e){return t.clone.hqueue(...e)}static vqueue(t,...e){return t.clone.vqueue(...e)}slice(t=0,e=0,s=this.rows-1,r=this.cols-1){let n=s-t,i=r-e,a=new Array(i);for(let s=0;s<n;s++){a[s]=[];for(let r=0;r<i;r++)a[s][r]=this.arr[s+t][r+e]}return new Je(n,i,a.flat(1))}static slice(t,e=0,s=0,r=this.rows-1,n=this.cols-1){return t.slice(e,s,r,n)}splice(t,e,s,...r){}getRows(t,e=t+1){return this.slice(t,0,e,this.cols)}getCols(t,e=t+1){return this.slice(0,t,this.rows,e)}static getRows(t,e,s=e+1){return t.slice(e,0,s,t.cols)}static getCols(t,e,s=e+1){return t.slice(0,e,t.rows,s)}add(...t){for(let s=0;s<t.length;s++){("number"==typeof t[s]||t[s]instanceof Xe)&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.add(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}sub(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.sub(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static add(t,...e){return t.clone.add(...e)}static sub(t,...e){return t.clone.sub(...e)}mul(...t){for(let r=0;r<t.length;r++){"number"==typeof t[r]&&(t[r]=Je.nums(this.rows,this.cols,t[r]));for(var e=0;e<this.rows;e++)for(var s=0;s<this.cols;s++)this.arr[e][s]=Q.mul(this.arr[e][s],t[r].arr[e][s])}return new Je(this.rows,this.cols,this.arr.flat(1))}div(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.div(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static div(t,...e){return t.clone.div(...e)}static mul(t,...e){return t.clone.mul(...e)}modulo(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.modulo(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static modulo(t,...e){return t.clone.modulo(...e)}dot(t){for(var e=[],s=0;s<this.arr.length;s++){e[s]=[];for(var r=0;r<t.arr[0].length;r++){e[s][r]=0;for(var n=0;n<this.arr[0].length;n++)e[s][r]=Q.add(e[s][r],Q.mul(this.arr[s][n],t.arr[n][r]))}}return new Je(this.arr.length,t.arr[0].length,e.flat(1))}static dot(t,e){return t.dot(e)}pow(t){let e=this.clone,s=this.clone;for(let r=0;r<t-1;r++)s=s.dot(e);return s}static pow(t,e){return t.clone.pow(e)}get somme(){let t=0;for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t+=this.arr[e][s];return t}get DoesItContainComplexNumbers(){return this.arr.flat(1/0).some((t=>t instanceof Xe))}get min(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(H(...this.arr[e]));return H(...t)}get max(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(G(...this.arr[e]));return G(...t)}get minRows(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(H(...this.arr[e]));return t}get maxRows(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(G(...this.arr[e]));return t}get minCols(){return this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable"),this.T.minRows}get maxCols(){return this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable"),this.T.maxRows}static fromVector(t){return new Je(t.length,1,t)}get toArray(){let t=[];for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t.push(this.arr[e][s]);return t}get print(){let t="[";for(let e=0;e<this.arr.length;e++)t+=(0!=e?" ":"")+` [${this.arr[e].map((t=>" "+t.toString()+" "))}],\n`;console.log(t.substring(0,t.length-2)+" ]"),document.write(t.substring(0,t.length-2)+" ]")}get table(){console.table(this.arr)}get serialize(){return JSON.stringify(this)}static deserialize(t){"string"==typeof t&&(t=JSON.parse(t));let e=new Je(t.rows,t.cols);return e.arr=t.arr,e}toTable(){var t=new DocumentFragment,e=new Array(this.rows).fill(null).map((()=>document?.createElement("tr"))),s=this.arr.map((t=>t.map((()=>document?.createElement("td")))));for(let t=0;t<s.length;t++)for(let r=0;r<s[0].length;r++)s[t][r].innerHTML=this.arr[t][r],e[t].appendChild(s[t][r]);return e.map((e=>t.appendChild(e))),t}toGrid(t,e={}){let s=Grid();return s.append(...this.map(t).arr.flat(1).map((t=>t.style(e)))),s.Columns(this.cols),s}sortTable(t=0,{type:e="num",order:s="asc"}={}){var r=this.T.arr.map((t=>t.map(((t,e)=>Object.assign({},{x:t,y:e}))))),n=this.T.arr.map((t=>t.map(((t,e)=>Object.assign({},{x:t,y:e})))));"num"===e?"asc"===s?r[t].sort(((t,e)=>t.x-e.x)):"desc"===s?r[t].sort(((t,e)=>e.x-t.x)):"toggle"===s&&(r[t][0].x>r[t][1].x?r[t].sort(((t,e)=>e.x-t.x)):r[t].sort(((t,e)=>t.x-e.x))):"alpha"===e&&("asc"===s?r[t].sort(((t,e)=>(""+t.x).localeCompare(""+e.x))):"desc"===s&&r[t].sort(((t,e)=>(""+e.x).localeCompare(""+t.x)))),s=r[t].map((t=>t.y));for(let e=0;e<r.length;e++)e!==t&&r[e].map(((t,e)=>t.y=s[e]));for(let e=0;e<r.length;e++)e!==t&&n[e].map(((t,n)=>t.x=r[e][s[n]].x));n[t]=r[t];var i=n.map((t=>t.map((t=>t.x))));return new Je(i).T}}const Ye=(t,e,s)=>new Je(t,e,s);class Xe{constructor(t=0,e=0){t instanceof Xe?(this.a=t.a,this.b=t.b):"object"==typeof t?"a"in t&&"b"in t?(this.a=t.a,this.b=t.b):"a"in t&&"z"in t?(this.a=t.a,this.b=es(t.z**2-t.a**2)):"a"in t&&"phi"in t?(this.a=t.a,this.b=t.a*cs(t.phi)):"b"in t&&"z"in t?(this.b=t.b,this.a=es(t.z**2-t.b**2)):"b"in t&&"phi"in t?(this.b=e,this.a=t.b/cs(t.phi)):"z"in t&&"phi"in t&&(this.a=t.z*as(t.phi),this.a=t.z*os(t.phi)):"number"==typeof t&&"number"==typeof e&&(this.a=+t.toFixed(32),this.b=+e.toFixed(32))}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}get clone(){return new Xe(this.a,this.b)}get z(){return ms(this.a,this.b)}get phi(){return fs(this.b,this.a)}static Zero(){return new Xe(0,0)}get conj(){return new Xe(this.a,-this.b)}get inv(){return new Xe(this.a/(ss(this.a,2)+ss(this.b,2)),-this.b/(ss(this.a,2)+ss(this.b,2)))}add(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=t.map((t=>t.a)),s=t.map((t=>t.b));return this.a+=+B(...e).toFixed(15),this.b+=+B(...s).toFixed(15),this}sub(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=t.map((t=>t.a)),s=t.map((t=>t.b));return this.a-=+B(...e).toFixed(15),this.b-=+B(...s).toFixed(15),this}mul(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=+U(this.z,...t.map((t=>t.z))).toFixed(15),s=+B(this.phi,...t.map((t=>t.phi))).toFixed(15);return this.a=+(e*as(s).toFixed(15)).toFixed(14),this.b=+(e*os(s).toFixed(15)).toFixed(14),this}div(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=+(this.z/U(...t.map((t=>t.z)))).toFixed(15),s=+(this.phi-B(...t.map((t=>t.phi)))).toFixed(15);return this.a=+(e*as(s).toFixed(15)).toFixed(15),this.b=+(e*os(s).toFixed(15)).toFixed(15),this}pow(t){if(us(t)===t&&t>0){let e=+(this.z**t).toFixed(15),s=+(this.phi*t).toFixed(15);this.a=+(e*as(s).toFixed(15)).toFixed(15),this.b=+(e*os(s).toFixed(15)).toFixed(15)}return this}static fromExpo(t,e){return new Xe(+(t*as(e)).toFixed(13),+(t*os(e)).toFixed(13))}get expo(){return[this.z,this.phi]}static add(t,...e){return t.clone.add(...e)}static sub(t,...e){return t.clone.sub(...e)}static mul(t,...e){return t.clone.mul(...e)}static div(t,...e){return t.clone.div(...e)}static pow(t,e){return t.clone.pow(e)}static xpowZ(t){return Qe(t**this.a*as(this.b*is(t)),t**this.a*os(this.b*is(t)))}sqrtn(t=2){return Qe(rs(this.z,t)*as(this.phi/t),rs(this.z,t)*os(this.phi/t))}get sqrt(){return this.sqrtn(2)}get log(){return Qe(this.z,this.phi)}get cos(){return Qe(as(this.a)*hs(this.b),os(this.a)*ls(this.b))}get sin(){return Qe(os(this.a)*hs(this.b),as(this.a)*ls(this.b))}get tan(){const t=as(2*this.a)+hs(2*this.b);return Qe(os(2*this.a)/t,ls(2*this.b)/t)}}const Qe=(t,e)=>{if((t instanceof Array||ArrayBuffer.isView(t))&&(e instanceof Array||ArrayBuffer.isView(t)))return t.map(((s,r)=>Qe(t[r],e[r])));if(t instanceof Je&&e instanceof Je){if(t.shape[0]!==e.shape[0]||t.shape[1]!==e.shape[1])return Error(0);const s=t.arr.map(((s,r)=>Qe(t.arr[r],e.arr[r])));return new Je(t.rows,t.cols,...s)}return new Xe(t,e)},ts=(...t)=>y(Math.abs,...t),es=(...t)=>y(Math.sqrt,...t),ss=(t,e)=>{if("number"==typeof t)return"number"==typeof e?Math.pow(t,e):e instanceof Xe?Xe.fromExpo(t**e.a,e.b*is(t)):y((e=>ss(t,e)),...e);if(t instanceof Xe)return"number"==typeof e?Xe.fromExpo(t.z**e,t.phi*e):e instanceof Xe?Xe.fromExpo(t.z**e.a*ns(-t.phi*e.b),is(t.z)*e.b+e.a*t.phi):y((e=>ss(t,e)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>ss(t,e)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>ss(t[r],e)),...e));return s}}},rs=(t,e)=>{if("number"==typeof t)return"number"==typeof e?Math.pow(t,1/e):y((e=>rs(t,e)),...e);if(t instanceof Xe)return"number"==typeof e?Xe.fromExpo(rs(t.z,e),t.phi/e):y((e=>rs(t,e)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>rs(t,e)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>rs(t[r],e)),...e));return s}}},ns=(...t)=>y(Math.exp,...t),is=(...t)=>y(Math.log,...t),as=(...t)=>y(w.cos,...t),os=(...t)=>y(w.sin,...t),cs=(...t)=>y(w.tan,...t),hs=(...t)=>y(w.cosh,...t),ls=(...t)=>y(w.sinh,...t),us=(...t)=>y(Math.floor,...t),fs=(t,e,s=!0)=>{if("number"==typeof t)return"number"==typeof e?s?Math.atan2(t,e):180*Math.atan2(t,e)/Math.PI:y((e=>fs(t,e,s)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>fs(t,e,s)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>ss(t[r],e)),...e));return s}}},ms=(...t)=>t.every((t=>"number"==typeof t))?Math.hypot(...t):t.every((t=>t instanceof Array))?y(Math.hypot,...t):void 0,{PI:ps,sqrt:ds,cos:gs,sin:bs,acos:ws,pow:ys}=Math,_s=t=>t,vs=(t,e=7.5625,s=2.75)=>t<1/s?e*t*t:t<2/s?e*(t-=1.5/s)*t+.75:t<2.5/s?e*(t-=2.25/s)*t+.9375:e*(t-=2.625/s)*t+.984375;class xs{constructor(t,{ease:e=_s,step:s=50,t0:r=0,start:n=!0,duration:i=3e3}={}){this.callback=t,this.state={isRunning:!1,animationId:null,startTime:null,ease:e,step:s,autoStart:n,duration:i},this.t=0,this.tx=0,this.ty=0,this.i=0,this.state.autoStart&&this.start()}#i=()=>{this.t+=this.state.step,this.i++,this.tx=$(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)};#a(t=!0){return this.state.isRunning||(t&&this.reset(!1),this.state.isRunning=!0,this.state.startTime=Date.now(),this.state.animationId=setInterval(this.#i,this.state.step)),this}start(){return this.#a(!0)}pause(){return this.state.isRunning&&(clearInterval(this.state.animationId),this.state.isRunning=!1),this}resume(){return this.#a(!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 ks{constructor(t,e,s=1/0,r){this.ms=e,this.fn=t,this.count=s,this.frame=1,this.id=null,this.running=!1,r&&this.start()}start(){return this.running||(this.running=!0,this.frame=1,this.id=setInterval((()=>{this.frame>this.count?this.stop():(this.fn.call(null,this),this.frame++)}),this.ms)),this}stop(){return this.running&&(this.running=!1,clearInterval(this.id),this.id=null),this}isRunning(){return this.running}}class Es extends ks{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 As{constructor(t=[],{repeat:e=1,loop:s=!1}={}){this.tasks=t,this.repeat=e,this.loop=s,this.stopped=!1,this.running=!1,this.onStart=null,this.onTask=null,this.onEnd=null}async run(){if(this.running)return;this.running=!0,this.stopped=!1,this.onStart&&this.onStart();let t=this.repeat;do{for(const t of this.tasks){if(this.stopped)return;if(Array.isArray(t))await Promise.all(t.map((({fn:t,delay:e=0})=>new Promise((async s=>{e>0&&await new Promise((t=>setTimeout(t,e))),this.onTask&&this.onTask(t),await t(),s()})))));else{const{fn:e,delay:s=0}=t;s>0&&await new Promise((t=>setTimeout(t,s))),this.onTask&&this.onTask(e),await e()}}}while(this.loop&&!this.stopped&&(t===1/0||t-- >1));!this.stopped&&this.onEnd&&this.onEnd(),this.running=!1}stop(){this.stopped=!0,this.running=!1}addTask(t){this.tasks.push(t)}clearTasks(){this.tasks=[]}}class Os{constructor(t,{step:e=1e3,t0:s=0,t1:r=1/0,autoplay:n=!0}={}){this.callback=t,this.cache={isRunning:!1,id:null,last_tick:null,step:e,t0:s,t1:r,autoplay:n,pauseTime:null,frame:0},n&&(s?this.startAfter(s):this.start(),r!==1/0&&this.stopAfter(r))}get frame(){return this.cache.frame}get elapsed(){return this.cache.elapsed}start(){return this.cache.isRunning||(this.cache.frame=0,this.cache.isRunning=!0,this.cache.last_tick=Date.now(),this.animate()),this}pause(){return this.cache.isRunning&&(clearTimeout(this.cache.id),this.cache.isRunning=!1,this.cache.pauseTime=Date.now()),this}resume(){if(!this.cache.isRunning){if(this.cache.isRunning=!0,this.cache.pauseTime){const t=Date.now()-this.cache.pauseTime;this.cache.last_tick+=t}this.animate()}return this}stop(){return this.pause(),this.cache.frame=0,this}startAfter(t=1e3){return setTimeout((()=>this.start()),t),this}stopAfter(t=1e3){return setTimeout((()=>this.stop()),t),this}animate=()=>{if(this.cache.isRunning){const t=Date.now(),e=t-this.cache.last_tick;e>=this.cache.step&&(this.cache.elapsed=t-(this.cache.t0||0),this.callback(this),this.cache.frame++,this.cache.last_tick=t-e%this.cache.step),this.cache.id=setTimeout(this.animate,0)}}}class js{constructor(){this.events={},this.maxListeners=10}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e),this.events[t].length>this.maxListeners&&console.warn(`Warning: Possible memory leak. Event '${t}' has more than ${this.maxListeners} listeners.`)}once(t,e){const s=r=>{this.off(t,s),e(r)};this.on(t,s)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}emit(t,e){const s=this.events[t];s&&s.forEach((t=>{t(e)}))}clear(t){t?delete this.events[t]:this.events={}}setMaxListener(t,e){this.maxListeners=e}removeAllListeners(t){t?this.events[t]=[]:this.events={}}}const Ts=()=>new js;class Ss{constructor(t,e=!0){this.#t(),this.cache={Emitter:null},e&&this.useEventEmitter(),this.set(t)}#t(){return this.__FavIcon__=document.querySelector("link[rel*='icon']")||document?.createElement("link"),this.__FavIcon__.type="image/x-icon",this.__FavIcon__.rel="shortcut icon",this}set(t){return t!==this.__FavIcon__.href&&(this.__FavIcon__.href=t,this.cache.Emitter&&this.cache.Emitter.emit("ziko:favicon-changed")),this}get current(){return document.__FavIcon__.href}onChange(t){return this.cache.Emitter&&this.cache.Emitter.on("ziko:favicon-changed",t),this}useEventEmitter(){return this.cache.Emitter=Ts(),this}}class Cs{constructor({viewport:t,charset:e,description:s,author:r,keywords:n}){this.document=globalThis?.document,this.meta={},this.init({viewport:t,charset:e,description:s,author:r,keywords:n})}init({viewport:t,charset:e,description:s,author:r,keywords:n}){t&&this.setViewport(t),e&&this.setCharset(e),s&&this.describe(s),r&&this.setAuthor(r),n&&this.setKeywords(n)}set(t,e){const s="charset"===(t=t.toLowerCase()),r=s?document.querySelector("meta[charset]"):document.querySelector(`meta[name=${t}]`);return this.meta=r??document?.createElement("meta"),s?this.meta.setAttribute("charset",e):(this.meta.setAttribute("name",t),this.meta.setAttribute("content",e)),r||this.document.head.append(this.meta),this}setCharset(t="utf-8"){return this.set("charset",t),this}describe(t){return this.set("description",t),this}setViewport(t="width=device-width, initial-scale=1.0"){return this.set("viewport",t),this}setKeywords(...t){return t=[...new Set(t)].join(", "),this.set("keywords",t),this}setAuthor(t){return this.set("author",t),this}}class Is{constructor(t=document.title,e=!0){this.cache={Emitter:null},e&&this.useEventEmitter(),this.set(t)}useEventEmitter(){return this.cache.Emitter=Ts(),this}set(t){return t!==document.title&&(document.title=t,this.cache.Emitter&&this.cache.Emitter.emit("ziko:title-changed")),this}get current(){return document.title}onChange(t){return this.cache.Emitter&&this.cache.Emitter.on("ziko:title-changed",t),this}}class Ms{constructor({title:t,lang:e,icon:s,meta:r,noscript:n}){this.html=globalThis?.document?.documentElement,this.head=globalThis?.document?.head,t&&((t,e)=>{new Is(t,e)})(t),e&&this.setLang(e),s&&((t,e)=>{new Ss(t,e)})(s),r&&(({viewport:t,charset:e,description:s,author:r,keywords:n})=>{new Cs({viewport:t,charset:e,description:s,author:r,keywords:n})})(r),n&&this.setNoScript()}setLang(t){this.html.setAttribute("lang",t)}setNoScript(t){}}class Ds{constructor({head:t=null,wrapper:e=null,target:s=null}){this.head=t,this.wrapper=e,this.target=s,this.init()}get isZikoApp(){return!0}init(){this.head&&this.setHead(this.head),this.wrapper&&this.setWrapper(this.wrapper),this.target&&this.setTarget(this.target),this.wrapper&&this.target&&this.wrapper.mount(this.target)}setTarget(t){return t instanceof HTMLElement?this.target=t:"string"==typeof t&&(this.target=globalThis?.document?.querySelector(t)),this}setWrapper(t){return t?.isUIElement?this.wrapper=t:"function"==typeof t&&(this.wrapper=t()),this}setHead(t){return this.head=t instanceof Ms?t:(({title:t,lang:e,icon:s,meta:r,noscript:n})=>new Ms({title:t,lang:e,icon:s,meta:r,noscript:n}))(t),this}}function Ps(t){return/:\w+/.test(t)}class $s extends Ds{constructor({head:t,wrapper:e,target:s,routes:r}){super({head:t,wrapper:e,target:s}),this.routes=new Map([["404",Dt("Error 404")],...Object.entries(r)]),this.clear(),globalThis.onpopstate=this.mount(location.pathname)}clear(){return[...this.routes].forEach((t=>{!Ps(t[0])&&t[1]?.isUIElement&&t[1].unmount()})),this}mount(t){const[e,s]=[...this.routes].find((e=>function(t,e){const s=t.split("/"),r=e.split("/");if(s.length!==r.length)return!1;for(let t=0;t<s.length;t++){const e=s[t],n=r[t];if(!e.startsWith(":")&&e!==n)return!1}return!0}(e[0],t)));let r;if(Ps(e)){const n=function(t,e){const s=t.split("/"),r=e.split("/"),n={};if(s.length!==r.length)return n;for(let t=0;t<s.length;t++){const e=s[t],i=r[t];if(e.startsWith(":"))n[e.slice(1)]=i;else if(e!==i)return{}}return n}(e,t);r=s.call(this,n)}else s?.isUIElement&&s.mount(this.wrapper),"function"==typeof s&&(r=s());return r?.isUIElement&&r.mount(this.wrapper),r instanceof Promise&&r.then((t=>t.mount(this.wrapper))),globalThis.history.pushState({},"",t),this}}const Fs=({head:t,wrapper:e,target:s,routes:r})=>new $s({head:t,wrapper:e,target:s,routes:r});function zs(t,e="./src/pages",s=["js","ts"]){"/"===e.at(-1)&&(e=e.slice(0,-1));const r=t.replace(/\\/g,"/").replace(/\[(\w+)\]/g,"$1/:$1").split("/"),n=e.split("/"),i=r.indexOf(n.at(-1));if(-1!==i){const t=r.slice(i+1),e=r.at(-1),n="index.js"===e||"index.ts"===e,a=s.some((t=>e===`.${t}`||e.endsWith(`.${t}`)));if(n)return"/"+(t.length>1?t.slice(0,-1).join("/"):"");if(a)return"/"+t.join("/").replace(/\.(js|ts)$/,"")}return""}class Rs{#o;constructor(){this.#o=function(t){try{let e=new Function("return "+t.data.fun)()();postMessage({result:e})}catch(t){postMessage({error:t.message})}finally{t.data.close&&self.close()}}.toString(),this.blob=new Blob(["this.onmessage = "+this.#o],{type:"text/javascript"}),this.worker=new Worker(window.URL.createObjectURL(this.blob))}call(t,e,s=!0){return this.worker.postMessage({fun:t.toString(),close:s}),this.worker.onmessage=function(t){t.data.error?console.error(t.data.error):e(t.data.result)},this}}class Ls{constructor(t,{namespace:e="Ziko",register:s,ValidateCssProps:r=!1}={}){this.currentPropsMap=t,this.namespace=e,this.ValidateCssProps=r,this.use(t)}use(t){return this.ValidateCssProps&&function(t){const e=new Set(Object.keys(document.documentElement.style));for(let s in t)if(!e.has(s))throw new Error(`Invalid CSS property: "${s}"`)}(t),this.currentPropsMap=t,this.#e(),this}#e(){const t=globalThis?.document?.documentElement?.style;for(let e in this.currentPropsMap){const s=this.namespace?`--${this.namespace}-${e}`:`--${e}`;t.setProperty(s,this.currentPropsMap[e]),Object.defineProperty(this,e,{value:`var(${s})`,writable:!0,configurable:!0,enumerable:!1})}}}let{sqrt:qs,cos:Zs,sin:Ns,exp:Bs,log:Us,cosh:Hs,sinh:Gs}=Math;for(const t of Object.getOwnPropertyNames(Math)){const e=Math[t];"function"==typeof e&&(Math[t]=new Proxy(e,{apply(e,s,r){const n=r[0];if("number"==typeof n||0===r.length)return e.apply(s,r);if(n?.isComplex?.()){const{a:t,b:i,z:a,phi:o}=n,c=(t,e)=>new n.constructor(t,e);switch(e.name){case"abs":return n.z;case"sqrt":return c(qs(a)*Zs(o/2),qs(a)*Ns(o/2));case"log":return c(Us(a),o);case"exp":return c(Bs(t)*Zs(i),Bs(t)*Ns(i));case"cos":return c(Zs(t)*Hs(i),-Ns(t)*Gs(i));case"sin":return c(Ns(t)*Hs(i),Zs(t)*Gs(i));case"tan":{const e=Zs(2*t)+Hs(2*i);return c(Ns(2*t)/e,Gs(2*i)/e)}case"cosh":return c(Hs(t)*Zs(i),Gs(t)*Ns(i));case"sinh":return c(Gs(t)*Zs(i),Hs(t)*Ns(i));case"tanh":{const e=Hs(2*t)+Zs(2*i);return c(Gs(2*t)/e,Ns(2*i)/e)}default:return e.apply(s,r)}}throw new TypeError(`Math.${t} expects only numbers`)}}))}globalThis?.document&&document?.addEventListener("DOMContentLoaded",__Ziko__.__Config__.init()),t.App=({head:t,wrapper:e,target:s})=>new Ds({head:t,wrapper:e,target:s}),t.Base=tt,t.Clock=Es,t.Combinaison=st,t.Complex=Xe,t.E=s,t.EPSILON=r,t.FileBasedRouting=async function(t){const e=Object.keys(t),s=function(t){if(0===t.length)return"";const e=t.map((t=>t.split("/"))),s=Math.min(...e.map((t=>t.length)));let r=[];for(let t=0;t<s;t++){const s=e[0][t];if(!e.every((e=>e[t]===s||e[t].startsWith("["))))break;r.push(s)}return r.join("/")+(r.length?"/":"")}(e),r={};for(let n=0;n<e.length;n++){const i=await t[e[n]](),a=await i.default;Object.assign(r,{[zs(e[n],s)]:a})}return Fs({target:document.body,routes:{"/":()=>{},...r},wrapper:Ie.section()})},t.Flex=(...t)=>{let e="div";return"string"==typeof t[0]&&(e=t[0],t.pop()),new Me(e).append(...t)},t.HTMLWrapper=t=>new Le(t),t.Logic=et,t.Matrix=Je,t.PI=e,t.Permutation=class{static withDiscount(t,e=t.length){if(1===e)return t.map((t=>[t]));const s=[];let r;return r=this.withDiscount(t,e-1),t.forEach((t=>{r.forEach((e=>{s.push([t].concat(e))}))})),s}static withoutDiscount(t){if(1===t.length)return t.map((t=>[t]));const e=[],s=this.withoutDiscount(t.slice(1)),r=t[0];for(let t=0;t<s.length;t++){const n=s[t];for(let t=0;t<=n.length;t++){const s=n.slice(0,t),i=n.slice(t);e.push(s.concat([r],i))}}return e}},t.Random=rt,t.SPA=Fs,t.SVGWrapper=t=>new qe(t),t.Scheduler=(t,{repeat:e=null}={})=>new As(t,{repeat:e}),t.Suspense=(t,e)=>new Re(t,e),t.Switch=({key:t,cases:e})=>new Ze(t,e),t.Tick=ks,t.TimeAnimation=xs,t.TimeLoop=Os,t.TimeScheduler=As,t.UIElement=je,t.UIHTMLWrapper=Le,t.UINode=pt,t.UISVGWrapper=qe,t.UISwitch=Ze,t.UIView=Te,t.UseRoot=Ls,t.Utils=Q,t.View=(...t)=>new Te(...t),t.ZikoApp=Ds,t.ZikoEventClick=Nt,t.ZikoEventClipboard=Ht,t.ZikoEventCustom=Wt,t.ZikoEventDrag=Jt,t.ZikoEventFocus=Qt,t.ZikoEventHash=se,t.ZikoEventKey=ne,t.ZikoEventMouse=oe,t.ZikoEventPointer=le,t.ZikoEventTouch=me,t.ZikoEventWheel=de,t.ZikoSPA=$s,t.ZikoUIFlex=Me,t.ZikoUISuspense=Re,t.ZikoUIText=Mt,t.__ZikoEvent__=Zt,t.abs=ts,t.accum=V,t.acos=(...t)=>y(w.acos,...t),t.acosh=(...t)=>y(w.acosh,...t),t.acot=(...t)=>y(w.acot,...t),t.add=A,t.animation=(t,{ease:e,t0:s,t1:r,start:n,duration:i}={})=>new xs(t,{ease:e,t0:s,t1:r,start:n,duration:i}),t.arange=z,t.arc=t=>1-bs(ws(t)),t.arr2str=Ve,t.asin=(...t)=>y(w.asin,...t),t.asinh=(...t)=>y(w.asinh,...t),t.atan=(...t)=>y(w.atan,...t),t.atan2=fs,t.atanh=(...t)=>y(w.atanh,...t),t.back=(t,e=1)=>t**2*((e+1)*t-e),t.bindCustomEvent=(t,e,s)=>new Wt(t,e,s),t.bindHashEvent=(t,e)=>new se(t,e),t.bindTouchEvent=(t,e)=>new me(t,e),t.bind_click_event=Ut,t.bind_clipboard_event=Vt,t.bind_drag_event=Xt,t.bind_focus_event=ee,t.bind_key_event=ae,t.bind_mouse_event=he,t.bind_pointer_event=fe,t.bind_wheel_event=be,t.cartesianProduct=J,t.ceil=(...t)=>y(Math.ceil,...t),t.clamp=F,t.clock=t=>new Es(t),t.combinaison=(t,e,s=!1)=>st[s?"withDiscount":"withoutDiscount"](t,e),t.complex=Qe,t.cos=as,t.cosh=hs,t.cot=(...t)=>y(w.cot,...t),t.coth=(...t)=>y(w.coth,...t),t.csc=(...t)=>y(w.csc,...t),t.csv2arr=it,t.csv2json=(t,e=",")=>JSON.stringify(at(t,e)),t.csv2matrix=(t,e=",")=>new Je(it(t,e)),t.csv2object=at,t.csv2sql=(t,e)=>{const s=t.trim().trimEnd().split("\n").filter((t=>t));let r=`INSERT INTO ${e} (${s[0].split(",").join(", ")}) Values `,n=[];for(let t=1;t<s.length;t++){const e=s[t].split(",");n.push(`(${e})`)}return r+n.join(",\n")},t.debounce=(t,e=1e3)=>(...s)=>setTimeout((()=>t(...s)),e),t.defineParamsGetter=function(t){Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}})},t.define_wc=function(t,e,s={},{mode:r="open"}={}){globalThis.customElements?.get(t)?console.warn(`Custom element "${t}" is already defined`):-1!==t.search("-")?globalThis.customElements?.define(t,class extends HTMLElement{static get observedAttributes(){return["style",...Object.keys(s)]}constructor(){super(),this.attachShadow({mode:r}),this.props={},this.mask={...s}}connectedCallback(){this.render()}render(){this.shadowRoot.innerHTML="";const t=e(this.props);t instanceof Array?t.forEach((t=>t.mount(this.shadowRoot))):t.mount(this.shadowRoot)}attributeChangedCallback(t,e,s){Object.assign(this.props,{[t]:this.mask[t].type(s)}),this.render()}}):console.warn(`"${t}" is not a valid custom element name`)},t.deg2rad=Z,t.discret=(t,e=5)=>Math.ceil(t*e)/e,t.div=T,t.e=ns,t.elastic=t=>-2*ys(2,10*(t-1))*gs(20*ps*t/3*t),t.fact=(...t)=>y((t=>{let e,s=1;if(0==t)s=1;else if(t>0)for(e=1;e<=t;e++)s*=e;else s=NaN;return s}),...t),t.floor=us,t.geomspace=q,t.getEvent=Lt,t.hypot=ms,t.inRange=W,t.in_back=(t,e=1.70158,s=e+1)=>s*ys(t,3)-e*t**2,t.in_bounce=(t,e=7.5625,s=2.75)=>1-vs(1-t,e,s),t.in_circ=t=>1-ds(1-t**2),t.in_cubic=t=>t**3,t.in_elastic=(t,e=2*ps/3)=>0===t?0:1===t?1:-ys(2,10*t-10)*bs((10*t-10.75)*e),t.in_expo=t=>0===t?0:2**(10*t-10),t.in_out_back=(t,e=1.70158,s=1.525*e)=>t<.5?ys(2*t,2)*(2*(s+1)*t-s)/2:(ys(2*t-2,2)*((s+1)*(2*t-2)+s)+2)/2,t.in_out_bounce=(t,e=7.5625,s=2.75)=>t<.5?vs(1-2*t,e,s)/2:vs(2*t-1,e,s)/2,t.in_out_circ=t=>t<.5?(1-ds(1-(2*t)**2))/2:(ds(1-(-2*t+2)**2)+1)/2,t.in_out_cubic=t=>t<.5?4*t**3:1-(-2*t+2)**3/2,t.in_out_elastic=(t,e=2*ps/4.5)=>0===t?0:1===t?1:t<.5?-ys(2,20*t-10)*bs((20*t-11.125)*e)/2:ys(2,-20*t+10)*bs((20*t-11.125)*e)/2+1,t.in_out_expo=t=>0===t?0:1===t?1:t<.5?2**(20*t-10)/2:(2-2**(-20*t+10))/2,t.in_out_quad=t=>t<.5?2*t**2:1-(-2*t+2)**2/2,t.in_out_quart=t=>t<.5?8*t**4:1-(-2*t+2)**4/2,t.in_out_quint=t=>t<.5?16*t**5:1-(-2*t+2)**5/2,t.in_out_sin=t=>-(gs(ps*t)-1)/2,t.in_quad=t=>t**2,t.in_quart=t=>t**4,t.in_quint=t=>t**5,t.in_sin=t=>1-gs(t*ps/2),t.isApproximatlyEqual=K,t.isStateGetter=St,t.json2arr=t=>ot(t instanceof Object?t:JSON.parse(t)),t.json2css=We,t.json2csv=ht,t.json2csvFile=(t,e)=>{const s=ht(t,e),r=new Blob([s],{type:"text/csv;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2xml=mt,t.json2xmlFile=(t,e)=>{const s=mt(t,e),r=new Blob([s],{type:"text/xml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2yml=ft,t.json2ymlFile=(t,e)=>{const s=ft(t,e),r=new Blob([s],{type:"text/yml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.lerp=P,t.linear=_s,t.linspace=R,t.ln=is,t.logspace=L,t.loop=(t,e={})=>new Os(t,e),t.map=$,t.mapfun=y,t.matrix=Ye,t.matrix2=(...t)=>new Je(2,2,t),t.matrix3=(...t)=>new Je(3,3,t),t.matrix4=(...t)=>new Je(4,4,t),t.max=G,t.min=H,t.modulo=S,t.mul=j,t.norm=D,t.nums=M,t.obj2str=He,t.ones=I,t.out_back=(t,e=1.70158,s=e+1)=>1+s*ys(t-1,3)+e*ys(t-1,2),t.out_bounce=vs,t.out_circ=t=>ds(1-(t-1)**2),t.out_cubic=t=>1-(1-t)**3,t.out_elastic=(t,e=2*ps/3)=>0===t?0:1===t?1:ys(2,-10*t)*bs((10*t-.75)*e)+1,t.out_expo=t=>1===t?1:1-2**(-10*t),t.out_quad=t=>1-(1-t)**2,t.out_quart=t=>1-(1-t)**4,t.out_quint=t=>1-(1-t)**5,t.out_sin=t=>bs(t*ps/2),t.pgcd=Y,t.pow=ss,t.powerSet=t=>{const e=[],s=2**t.length;for(let r=0;r<s;r+=1){const s=[];for(let e=0;e<t.length;e+=1)r&1<<e&&s.push(t[e]);e.push(s)}return e},t.ppcm=X,t.preload=nt,t.prod=U,t.rad2deg=N,t.round=(...t)=>y(Math.round,...t),t.sec=(...t)=>y(w.sec,...t),t.sig=(...t)=>y((t=>1/(1+ns(-t))),...t),t.sign=(...t)=>y(Math.sign,...t),t.sin=os,t.sinc=(...t)=>y(w.sinc,...t),t.sinh=ls,t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.sqrt=es,t.sqrtn=rs,t.step=(t,e=5)=>Math.floor(t*e)/e,t.step_fps=t=>1e3/t,t.sub=O,t.subSet=null,t.sum=B,t.svg2ascii=Be,t.svg2img=(t,e=!0)=>Ie.img(Ue(t)).mount(e),t.svg2imgUrl=Ue,t.svg2str=Ne,t.tags=Ie,t.tan=cs,t.tanh=(...t)=>y(w.tanh,...t),t.text=Dt,t.throttle=(t,e)=>{let s=0;return(...r)=>{const n=(new Date).getTime();n-s<e||(s=n,t(...r))}},t.tick=(t,e,s=1/0,r=!0)=>new ks(t,e,s,r),t.timeTaken=t=>{console.time("timeTaken");const e=t();return console.timeEnd("timeTaken"),e},t.time_memory_Taken=t=>{const e=Date.now(),s=performance.memory.usedJSHeapSize,r=t();return{elapsedTime:Date.now()-e,usedMemory:performance.memory.usedJSHeapSize-s,result:r}},t.timeout=function(t,e){let s;const r=new Promise((r=>{s=setTimeout((()=>{e&&e(),r()}),t)}));return{id:s,clear:()=>clearTimeout(s),promise:r}},t.useDerived=function(t,e){let s=t(...e.map((t=>t().value)));const r=new Set;return e.forEach((n=>{n()._subscribe((()=>{{const n=t(...e.map((t=>t().value)));n!==s&&(s=n,r.forEach((t=>t(s))))}}))})),()=>({value:s,isStateGetter:()=>!0,_subscribe:t=>r.add(t)})},t.useEventEmitter=Ts,t.useLocaleStorage=(t,e)=>new xt(localStorage,t,e),t.useReactive=t=>y((t=>{const e=Tt(t);return{get:e[0],set:e[1]}}),t),t.useRoot=(t,{namespace:e,register:s,ValidateCssProps:r}={})=>new Ls(t,{namespace:e,register:s,ValidateCssProps:r}),t.useSessionStorage=kt,t.useState=Tt,t.useThread=(t,e,s)=>{const r=new Rs;return t&&r.call(t,e,s),r},t.wait=t=>new Promise((e=>setTimeout(e,t))),t.waitForUIElm=t=>new Promise((e=>{if(t.element)return e(t.element);const s=new MutationObserver((()=>{t.element&&(e(t.element),s.disconnect())}));s.observe(document?.body,{childList:!0,subtree:!0})})),t.waitForUIElmSync=(t,e=2e3)=>{const s=Date.now();for(;Date.now()-s<e;)if(t.element)return t.element},t.zeros=C}));
|
|
9
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Ziko={})}(this,(function(t){"use strict";const{PI:e,E:s}=Math,r=Number.EPSILON,{PI:n,cos:i,sin:a,tan:o,acos:c,asin:h,atan:l,cosh:u,sinh:f,tanh:m,acosh:p,asinh:d,atanh:g,log:b}=Math;let w={cos:i,sin:a,tan:o,sinc:t=>a(n*t)/(n*t),sec:t=>1/i(t),csc:t=>1/a(t),cot:t=>1/o(t),acos:c,asin:h,atan:l,acot:t=>n/2-l(t),cosh:u,sinh:f,tanh:m,coth:t=>.5*b((1+t)/(1-t)),acosh:p,asinh:d,atanh:g};w=new Proxy(w,{get(t,e){if(e in t)return s=>+t[e](s).toFixed(15)}});const y=(t,...e)=>{const s=e.map((e=>{if(null===e)return t(null);if(["number","string","boolean","bigint","undefined"].includes(typeof e))return t(e);if(e instanceof Array)return e.map((e=>y(t,e)));if(ArrayBuffer.isView(e))return e.map((e=>t(e)));if(e instanceof Set)return new Set(y(t,...e));if(e instanceof Map)return new Map([...e].map((e=>[e[0],y(t,e[1])])));if(e instanceof Je)return new Je(e.rows,e.cols,y(e.arr.flat(1)));if(e instanceof Xe){const[s,r,n,i]=[e.a,e.b,e.z,e.phi];switch(t){case Math.log:return Qe(is(n),i);case Math.exp:return Qe(ns(s)*as(r),ns(s)*os(r));case Math.abs:return n;case Math.sqrt:return Qe(es(n)*as(i/2),es(n)*os(i/2));case w.cos:return Qe(as(s)*hs(r),-os(s)*ls(r));case w.sin:return Qe(os(s)*hs(r),as(s)*ls(r));case w.tan:{const t=as(2*s)+hs(2*r);return Qe(os(2*s)/t,ls(2*r)/t)}case w.cosh:return Qe(hs(s)*as(r),ls(s)*os(r));case w.sinh:return Qe(ls(s)*as(r),hs(s)*os(r));case w.tanh:{const t=hs(2*s)+as(2*r);return Qe(ls(2*s)/t,os(2*r)/t)}default:return t(e)}}else if(e instanceof Object)return Object.fromEntries(Object.entries(e).map((e=>[e[0],y(t,e[1])])))}));return 1==s.length?s[0]:s},_=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t+e;if(e instanceof Xe)return Qe(t+e.a,e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).add(e);if(e instanceof Array)return e.map((e=>A(e,t)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.add(e))):t.clone.add(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>A(t,e)));if(t.length===e.length)return t.map(((t,s)=>A(t,e[s])))}}},v=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t-e;if(e instanceof Xe)return Qe(t-e.a,-e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).sub(e);if(e instanceof Array)return e.map((e=>O(e,t)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.sub(e))):t.clone.sub(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>O(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>O(t,e[s])))}}},x=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t*e;if(e instanceof Xe)return Qe(t*e.a,t*e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).mul(e);if(e instanceof Array)return e.map((e=>j(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.mul(e))):t.clone.mul(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>j(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>j(t,e[s])))}}},E=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t/e;if(e instanceof Xe)return Qe(t/e.a,t/e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).div(e);if(e instanceof Array)return e.map((e=>T(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.div(e))):t.clone.div(e);if(t instanceof Array){if(!(e instanceof Array))return t.map((t=>T(t,e)));if(e instanceof Array&&t.length===e.length)return t.map(((t,s)=>T(t,e[s])))}}},k=(t,e)=>{if("number"==typeof t){if("number"==typeof e)return t%e;if(e instanceof Xe)return Qe(t%e.a,t%e.b);if(e instanceof Je)return Je.nums(e.rows,e.cols,t).modulo(e);if(e instanceof Array)return e.map((e=>T(t,e)))}else{if(t instanceof Xe||t instanceof Je)return e instanceof Array?e.map((e=>t.clone.div(e))):t.clone.div(e);if(t instanceof Array&&!(e instanceof Array))return t.map((t=>A(t,e)))}},A=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=_(s,e[t]);return s},O=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=v(s,e[t]);return s},j=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=x(s,e[t]);return s},T=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=E(s,e[t]);return s},S=(t,...e)=>{var s=t;for(let t=0;t<e.length;t++)s=k(s,e[t]);return s},C=t=>new Array(t).fill(0),I=t=>new Array(t).fill(1),M=(t,e)=>new Array(e).fill(t),D=(t,e,s)=>{if("number"==typeof t)return e!==s?(t-e)/(s-e):0;if(t instanceof Je)return new Je(t.rows,t.cols,D(t.arr.flat(1),e,s));if(t instanceof Xe)return new Xe(D(t.a,e,s),D(t.b,e,s));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>D(t,e,s)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=D(t[s])}}},P=(t,e,s)=>{if("number"==typeof t)return(s-e)*t+e;if(t instanceof Je)return new Je(t.rows,t.cols,P(t.arr.flat(1),e,s));if(t instanceof Xe)return new Xe(P(t.a,e,s),P(t.b,e,s));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>P(t,e,s)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=P(t[s])}}},$=(t,e,s,r,n)=>{if("number"==typeof t)return P(D(t,e,s),r,n);if(t instanceof Je)return new Je(t.rows,t.cols,$(t.arr.flat(1),e,s,r,n));if(t instanceof Xe)return new Xe($(t.a,s,r,n),$(t.b,e,s,r,n));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>$(t,e,s,r,n)));{let i=new Array(t.length);for(let a=0;a<t.length;a++)i[a]=$(t[a],e,s,r,n)}}},R=(t,e,s)=>{const[r,n]=[H(e,s),G(e,s)];if("number"==typeof t)return H(G(t,r),n);if(t instanceof Je)return new Je(t.rows,t.cols,R(t.arr.flat(1),r,n));if(t instanceof Xe)return new Xe(R(t.a,r,n),R(t.b,r,n));if(t instanceof Array){if(t.every((t=>typeof("number"===t))))return t.map((t=>R(t,r,n)));{let e=new Array(t.length);for(let s=0;s<t.length;s++)e[s]=R(t[s],r,n)}}},F=(t,e,s,r=!1)=>{let n=[];if(t<e)for(let i=t;r?i<=e:i<e;i+=s)n.push(10*i/10);else for(let i=t;r?i>=e:i>e;i-=s)n.push(10*i/10);return n},z=(t,e,s=ts(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[a,o]=[t,e].sort(((t,e)=>e-t));var n=[];let c;c=r?(a-o)/(s-1):(a-o)/s;for(var i=0;i<s;i++)t<e?n.push(o+c*i):n.push(a-c*i);return n}if([t,e].some((t=>t instanceof Xe))){const n=Qe(t),i=Qe(e);s=s||Math.abs(n.a-i.a)+1;const a=z(n.a,i.a,s,r),o=z(n.b,i.b,s,r);let c=new Array(s).fill(null);return c=c.map(((t,e)=>Qe(a[e],o[e]))),c}}},L=(t,e,r=e-t+1,n=s,i=!0)=>z(t,e,r,i).map((t=>ss(n,t))),q=(t,e,s=ts(e-t)+1,r=!0)=>{if(Math.floor(s)===s){if([t,e].every((t=>"number"==typeof t))){const[n,i]=[t,e].sort(((t,e)=>e-t));let a;a=rs(n/i,r?s-1:s);const o=[i];for(let t=1;t<s;t++)o.push(o[t-1]*a);return t<e?o:o.reverse()}if([t,e].some((t=>t instanceof Xe))){const n=Qe(t),i=Qe(e);let a;s=s||Math.abs(n.a-i.a)+1,a=rs(i.div(n),r?s-1:s);const o=[n];for(let t=1;t<s;t++)o.push(j(o[t-1],a));return o}}},Z=(...t)=>mapfun((t=>t*Math.PI/180),...t),N=(...t)=>mapfun((t=>t/Math.PI*180),...t),B=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t[0];for(let s=1;s<t.length;s++)e+=t[s];return e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(B(...t[s])):t[s]instanceof Object&&e.push(B(...Object.values(t[s])));return 1===e.length?e[0]:e},U=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t[0];for(let s=1;s<t.length;s++)e*=t[s];return e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(U(...t[s])):t[s]instanceof Object&&e.push(U(...Object.values(t[s])));return 1===e.length?e[0]:e},H=(...t)=>{if(t.every((t=>"number"==typeof t)))return Math.min(...t);const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(H(...t[s])):t[s]instanceof Object&&e.push(Object.fromEntries([Object.entries(t[s]).sort(((t,e)=>t[1]-e[1]))[0]]));return 1===e.length?e[0]:e},G=(...t)=>{if(t.every((t=>"number"==typeof t)))return Math.max(...t);const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(H(...t[s])):t[s]instanceof Object&&e.push(Object.fromEntries([Object.entries(t[s]).sort(((t,e)=>e[1]-t[1]))[0]]));return 1===e.length?e[0]:e},V=(...t)=>{if(t.every((t=>"number"==typeof t))){let e=t.reduce(((t,e)=>[...t,t[t.length-1]+e]),[0]);return e.shift(),e}const e=[];for(let s=0;s<t.length;s++)t[s]instanceof Array?e.push(V(...t[s])):t[s]instanceof Object&&e.push(null);return 1===e.length?e[0]:e},W=(t,e,s)=>{const[r,n]=[Math.min(e,s),Math.max(e,s)];return t>=r&&t<=n},K=(t,e,s=1e-4)=>Math.abs(t-e)<=s,J=(t,e)=>t.reduce(((t,s)=>[...t,...e.map((t=>[s,t]))]),[]),Y=(t,e)=>{let s,r=1;if(t==us(t)&&e==us(e)){for(s=2;s<=t&&s<=e;++s)t%s==0&&e%s==0&&(r=s);return r}console.log("error")},X=(t,e)=>{let s;if(t==us(t)&&e==us(e)){for(s=t>e?t:e;s%t!=0||s%e!=0;)++s;return s}console.log("error")},Q={add:A,sub:O,mul:j,div:T,modulo:S,zeros:C,ones:I,nums:M,norm:D,lerp:P,map:$,clamp:R,arange:F,linspace:z,logspace:L,geomspace:q,sum:B,prod:U,accum:V,cartesianProduct:J,ppcm:X,pgcd:Y,deg2rad:Z,rad2deg:N,inRange:W,isApproximatlyEqual:K},tt={_mode:Number,_map:function(t,e,s){return e instanceof Je?new Je(e.rows,e.cols,e.arr.flat(1).map((e=>t(e,s)))):e instanceof Xe?new Xe(t(e.a,s),t(e.b,s)):e instanceof Array?e.map((e=>t(e,s))):void 0},dec2base(t,e){return this._mode=e<=10?Number:String,"number"==typeof t?this._mode((t>>>0).toString(e)):this._map(this.dec2base,t,e)},dec2bin(t){return this.dec2base(t,2)},dec2oct(t){return this.dec2base(t,8)},dec2hex(t){return this.dec2base(t,16)},bin2base(t,e){return this.dec2base(this.bin2dec(t),e)},bin2dec(t){return this._mode("0b"+t)},bin2oct(t){return this.bin2base(t,8)},bin2hex(t){return this.bin2base(t,16)},oct2dec(t){return this._mode("0o"+t)},oct2bin(t){return this.dec2bin(this.oct2dec(t))},oct2hex(t){return this.dec2hex(this.oct2dec(t))},oct2base(t,e){return this.dec2base(this.oct2dec(t),e)},hex2dec(t){return this._mode("0x"+t)},hex2bin(t){return this.dec2bin(this.hex2dec(t))},hex2oct(t){return this.dec2oct(this.hex2dec(t))},hex2base(t,e){return this.dec2base(this.hex2dec(t),e)},IEEE32toDec(t){let e=t.split(" ").join("").padEnd(32,"0"),s=e[0],r=2**(+("0b"+e.slice(1,9))-127);return(-1)**s*(1+e.slice(9,32).split("").map((t=>+t)).map(((t,e)=>t*2**(-e-1))).reduce(((t,e)=>t+e),0))*r},IEEE64toDec(t){let e=t.split(" ").join("").padEnd(64,"0"),s=e[0],r=2**(+("0b"+e.slice(1,12))-1023);return(-1)**s*(1+e.slice(13,64).split("").map((t=>+t)).map(((t,e)=>t*2**(-e-1))).reduce(((t,e)=>t+e),0))*r}},et={_mode:Number,_map:function(t,e,s){return e instanceof Je?new Je(e.rows,e.cols,e.arr.flat(1).map((e=>t(e,s)))):e instanceof Xe?new Xe(t(e.a,s),t(e.b,s)):e instanceof Array?e.map((e=>t(e,s))):void 0},not:function(t){return["number","boolean"].includes(typeof t)?et._mode(!t):this._map(this.not,t)},and:function(t,...e){return["number","boolean"].includes(typeof t)?et._mode(e.reduce(((t,e)=>t&e),t)):this._map(this.and,t,e)},or:function(t,...e){return["number","boolean"].includes(typeof t)?et._mode(e.reduce(((t,e)=>t|e),t)):this._map(this.or,t,e)},nand:function(t,...e){return this.not(this.and(t,e))},nor:function(t,...e){return this.not(this.or(t,e))},xor:function(t,...e){let s=[t,...e];return["number","boolean"].includes(typeof t)?this._mode(1===s.reduce(((t,e)=>(1==+e&&(t+=1),t)),0)):this._map(this.xor,t,e)},xnor:function(t,...e){return et.not(et.xor(t,e))}};class st{static withDiscount(t,e){if(1===e)return t.map((t=>[t]));const s=[];return t.forEach(((r,n)=>{this.withDiscount(t.slice(n),e-1).forEach((t=>{s.push([r].concat(t))}))})),s}static withoutDiscount(t,e){if(1===e)return t.map((t=>[t]));const s=[];return t.forEach(((r,n)=>{this.withoutDiscount(t.slice(n+1),e-1).forEach((t=>{s.push([r].concat(t))}))})),s}}class rt{static float(t=1,e){return e?Math.random()*(e-t)+t:t*Math.random()}static int(t,e){return Math.floor(this.float(t,e))}static char(t){t=t??this.bool();const e=String.fromCharCode(this.int(97,120));return t?e.toUpperCase():e}static bool(){return[!1,!0][Math.floor(2*Math.random())]}static string(t,e){return t instanceof Array?new Array(this.int(...t)).fill(0).map((()=>this.char(e))).join(""):new Array(t).fill(0).map((()=>this.char(e))).join("")}static bin(){return this.int(2)}static oct(){return this.int(8)}static dec(){return this.int(8)}static hex(){return this.int(16)}static choice(t=[1,2,3],e=new Array(t.length).fill(1/t.length)){let s=new Array(100);e=Q.accum(...e).map((t=>100*t)),s.fill(t[0],0,e[0]);for(let r=1;r<t.length;r++)s.fill(t[r],e[r-1],e[r]);return s[this.int(s.length-1)]}static shuffleArr(t){return t.sort((()=>.5-Math.random()))}static shuffleMatrix(t){const{rows:e,cols:s,arr:r}=t;return Ye(e,s,r.flat().sort((()=>.5-Math.random())))}static floats(t,e,s){return new Array(t).fill(0).map((()=>this.float(e,s)))}static ints(t,e,s){return new Array(t).fill(0).map((()=>this.int(e,s)))}static bools(t){return new Array(t).fill(0).map((()=>this.bool()))}static bins(t){return new Array(t).fill(0).map((()=>this.int(2)))}static octs(t){return new Array(t).fill(0).map((()=>this.int(8)))}static decs(t){return new Array(t).fill(0).map((()=>this.int(10)))}static hexs(t){return new Array(t).fill(0).map((()=>this.int(16)))}static choices(t,e,s){return new Array(t).fill(0).map((()=>this.choice(e,s)))}static perm(...t){return t.permS[this.int(t.length)]}static color(){return"#"+tt.dec2hex(this.float(16777216)).padStart(6,0)}static colors(t){return new Array(t).fill(null).map((()=>this.color()))}static complex(t=[0,1],e=[0,1]){return t instanceof Array?new Xe(this.float(t[0],t[1]),this.float(e[0],e[1])):new Xe(...this.floats(2,t,e))}static complexInt(t=[0,1],e=[0,1]){return new Xe(this.int(t[0],t[1]),this.int(e[0],e[1]))}static complexBin(){return new Xe(...this.bins(2))}static complexOct(){return new Xe(...this.octs(2))}static complexDec(){return new Xe(...this.decs(10))}static complexHex(){return new Xe(...this.octs(2))}static complexes(t,e=0,s=1){return new Array(t).fill(0).map((()=>this.complex(e,s)))}static complexesInt(t,e=0,s=1){return new Array(t).fill(0).map((()=>this.complexInt(e,s)))}static complexesBin(t){return new Array(t).fill(0).map((()=>this.complexBin()))}static complexesOct(t){return new Array(t).fill(0).map((()=>this.complexOct()))}static complexesDec(t){return new Array(t).fill(0).map((()=>this.complexDec()))}static complexesHex(t){return new Array(t).fill(0).map((()=>this.complexHex()))}static matrix(t,e,s,r){return Ye(t,e,this.floats(t*e,s,r))}static matrixInt(t,e,s,r){return Ye(t,e,this.ints(t*e,s,r))}static matrixBin(t,e){return Ye(t,e,this.bins(t*e))}static matrixOct(t,e){return Ye(t,e,this.octs(t*e))}static matrixDec(t,e){return Ye(t,e,this.decs(t*e))}static matrixHex(t,e){return Ye(t,e,this.hex(t*e))}static matrixColor(t,e){return Ye(t,e,this.colors(t*e))}static matrixComplex(t,e,s,r){return Ye(t,e,this.complexes(t*e,s,r))}static matrixComplexInt(t,e,s,r){return Ye(t,e,this.complexesInt(t*e,s,r))}static matrixComplexBin(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexOct(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexDec(t,e){return Ye(t,e,this.complexesBin(t*e))}static matrixComplexHex(t,e){return Ye(t,e,this.complexesBin(t*e))}}const nt=t=>{const e=new XMLHttpRequest;if(e.open("GET",t,!1),e.send(),200===e.status)return e.responseText;throw new Error(`Failed to fetch data from ${t}. Status: ${e.status}`)};globalThis.fetchdom=async function(t="https://github.com/zakarialaoui10"){const e=await fetch(t),s=await e.text();return(new DOMParser).parseFromString(s,"text/xml").documentElement},globalThis.fetchdomSync=function(t="https://github.com/zakarialaoui10"){const e=nt(t);return(new DOMParser).parseFromString(e,"text/xml").documentElement};const it=(t,e=",")=>t.trim().trimEnd().split("\n").map((t=>t.split(e))),at=(t,e=",")=>{const[s,...r]=it(t,e);return r.map((t=>{const e={};return s.forEach(((s,r)=>{e[s]=t[r]})),e}))},ot=t=>t instanceof Array?[Object.keys(t[0]),...t.map((t=>Object.values(t)))]:[Object.keys(t)],ct=(t,e)=>ot(t).map((t=>t.join(e))).join("\n"),ht=(t,e=",")=>ct(t instanceof Object?t:JSON.parse(t),e),lt=(t,e)=>{const s=[];if(Array.isArray(t))t.forEach((t=>{if("object"==typeof t&&null!==t){s.push(`${e}-`);const r=lt(t,`${e} `);s.push(...r)}else s.push(`${e}- ${t}`)}));else for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];if("object"==typeof n&&null!==n){s.push(`${e}${r}:`);const t=lt(n,`${e} `);s.push(...t)}else s.push(`${e}${r}: ${n}`)}return s},ut=(t,e="")=>lt(t,e).join("\n"),ft=(t,e)=>ut(t instanceof Object?t:JSON.parse(t),e),mt=(t,e=1)=>{let s="";for(const r in t)if(t.hasOwnProperty(r)){const n=t[r];s+="\n"+" ".repeat(e)+`<${r}>`,s+="object"==typeof n?mt(n,e+2):`${n}`,s+=`</${r}>`}return s.trim()};class pt{constructor(t){this.cache={node:t}}isZikoUINode(){return!0}get node(){return this.cache.node}}class dt 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 gt=new dt,bt={default:{target:null,render:!0,math:{mode:"deg"}},setDefault:function(t){const e=Object.keys(t),s=Object.values(t);for(let t=0;t<e.length;t++)this.default[e[t]]=s[t]},init:()=>{},renderingMode:"spa",isSSC:!1},wt={store:new Map,index:0,register:function(t){this.store.set(this.index++,t)},reset(){this.index=0,this.store.clear()}},yt={ui_index:0,get_ui_index:function(){return this.ui_index++},register_ui:function(t){}};class _t{#t;#e;#s;#r;#n;#i;constructor(t=""){this.#t=new BroadcastChannel(t),this.#e=new Map,this.#s=new Map,this.#r="ziko-channel:"+rt.string(10),this.#n=new Set([this.#r]),this.#i=new Set,this.#t.addEventListener("message",(t=>{const{last_sent_event:e,userId:s,eventData:r,rooms:n}=t.data;if(s===this.#r)return;if(n&&n.length&&!n.some((t=>this.#i.has(t))))return;this.#n.add(s),this.#e=new Map(r);const i=this.#s.get(e);i&&i.forEach((({fn:t,rooms:s})=>{s&&0!==s.length&&n&&!n.some((t=>s.includes(t)))||t(this.#e.get(e))}))}))}emit(t,e,s){return this.#e.set(t,e),"string"==typeof s&&(s=[s]),this.#t.postMessage({eventData:Array.from(this.#e.entries()),last_sent_event:t,userId:this.#r,rooms:s&&s.length?s:void 0}),this}on(t,e=console.log,s){return this.#s.has(t)||this.#s.set(t,[]),"string"==typeof s&&(s=[s]),this.#s.get(t).push({fn:e,rooms:s}),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,s){const r=s=>{e(s),this.off(t,r)};return this.on(t,r,s),this}join(...t){return t.forEach((t=>this.#i.add(t))),this}leave(...t){return t.length?t.forEach((t=>this.#i.delete(t))):this.#i.clear(),this}close(){return this.#t.close(),this}}const vt=t=>new _t(t);class xt{constructor(t,e,s){this.cache={storage:t,globalKey:e,channel:vt(`Ziko:useStorage-${e}`),oldItemKeys:new Set},this.#a(s),this.#o()}get items(){return JSON.parse(this.cache.storage[this.cache.globalKey]??null)}#o(){for(let t in this.items)Object.assign(this,{[[t]]:this.items[t]})}#a(t){this.cache.channel=vt(`Ziko:useStorage-${this.cache.globalKey}`),this.cache.channel.on("Ziko-Storage-Updated",(()=>this.#o())),t&&(this.cache.storage[this.cache.globalKey]?Object.keys(this.items).forEach((t=>this.cache.oldItemKeys.add(t))):this.set(t))}set(t){return this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(t)),this.cache.channel.emit("Ziko-Storage-Updated",{}),Object.keys(t).forEach((t=>this.cache.oldItemKeys.add(t))),this.#o(),this}add(t){const e={...this.items,...t};return this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(e)),this.#o(),this}remove(...t){const e={...this.items};for(let s=0;s<t.length;s++)delete e[t[s]],delete this[t[s]];return this.set(e),this}get(t){return this.items[t]}clear(){return this.cache.storage.removeItem(this.cache.globalKey),this.#o(),this}}const Et=(t,e)=>new xt(sessionStorage,t,e),kt={store:new Map,index:0,session_storage:null,register:function(t){if(!(void 0).SSR&&(void 0).DEV){this.session||(this.session_storage=Et("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 At(){var t;globalThis?.__Ziko__||(globalThis.__Ziko__={__UI__:gt,__HYDRATION__:wt,__State__:kt,__Config__:bt,__CACHE__:yt},t=__Ziko__,Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}}))}At();class Ot extends pt{constructor(){super()}init(t,e,s,r){if(this.target=globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body,"string"==typeof t)switch(s){case"html":t=globalThis?.document?.createElement(t);break;case"svg":t=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg",t);break;default:throw Error("Not supported")}else this.target=t?.parentElement;Object.assign(this.cache,{name:e,isInteractive:!1,parent:null,isBody:!1,isRoot:!1,isHidden:!1,isFrozzen:!1,legacyParent:null,attributes:{},filters:{},temp:{}}),this.events={ptr:null,mouse:null,wheel:null,key:null,drag:null,drop:null,click:null,clipboard:null,focus:null,swipe:null,custom:null},this.observer={resize:null,intersection:null},t&&Object.assign(this.cache,{element:t}),this.items=new dt,globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this],t&&r&&this?.render?.(),globalThis.__Ziko__.__UI__.push(this)}get element(){return this.cache.element}[Symbol.iterator](){return this.items[Symbol.iterator]()}maintain(){for(let t=0;t<this.items.length;t++)Object.defineProperty(this,t,{value:this.items[t],writable:!0,configurable:!0,enumerable:!1})}isInteractive(){return this.cache.isInteractive}isUIElement(){return!0}}function jt(t,...e){e.forEach((e=>function(t,e){const s=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(s)){const r=s[e];"get"in r||"set"in r||"function"!=typeof r.value?Object.defineProperty(Object.getPrototypeOf(t),e,r):"function"==typeof r.value&&(Object.getPrototypeOf(t).hasOwnProperty(e)||Object.defineProperty(Object.getPrototypeOf(t),e,r))}}(t,e)))}function Tt(t){const{store:e,index:s}=__Ziko__.__State__;__Ziko__.__State__.register({value:t,subscribers:new Set,paused:!1});let r=e.get(s);return[function(){return{value:r.value,isStateGetter:()=>!0,_subscribe:t=>r.subscribers.add(t)}},function(t){r.paused||("function"==typeof t&&(t=t(r.value)),t!==r.value&&(r.value=t,r.subscribers.forEach((t=>t(r.value))),__Ziko__.__State__.update(s,t)))},{pause:()=>{r.paused=!0},resume:()=>{r.paused=!1},clear:()=>{r.subscribers.clear()},force:t=>{"function"==typeof t&&(t=t(r.value)),r.value=t,r.subscribers.forEach((t=>t(r.value)))},getSubscribers:()=>new Set(r.subscribers)}]}globalThis.__Ziko__||At();const St=t=>"function"==typeof t&&t?.()?.isStateGetter?.(),Ct=(t="")=>t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase())),It=(t="")=>{if(0===t.length)return!1;return/^[a-z][a-zA-Z0-9]*$/.test(t)};class Mt extends pt{constructor(...t){super("span","text",!1,...t),this.element=globalThis?.document?.createTextNode(...t)}isText(){return!0}}const Dt=(...t)=>new Mt(...t);async function Pt(t,e,...s){if(this.cache.isFrozzen)return console.warn("You can't append new item to frozzen element"),this;for(let r=0;r<s.length;r++){if(["number","string"].includes(typeof s[r])&&(s[r]=Dt(s[r])),s[r]instanceof Function){const t=s[r]();t.isStateGetter&&(s[r]=Dt(t.value),t._subscribe((t=>s[r].element.textContent=t),s[r]))}if("function"==typeof globalThis?.Node&&s[r]instanceof globalThis?.Node&&(s[r]=new this.constructor(s[r])),s[r]?.isZikoUINode)s[r].cache.parent=this,this.element?.[t](s[r].element),s[r].target=this.element,this.items[e](s[r]);else if(s[r]instanceof Promise){const n=await s[r];n.cache.parent=this,this.element?.[t](n.element),n.target=this.element,this.items[e](n)}else s[r]instanceof Object&&(s[r]?.style&&this.style(s[r]?.style),s[r]?.attr&&Object.entries(s[r].attr).forEach((t=>this.setAttr(""+t[0],t[1]))))}return this.maintain(),this}function $t(t,e){if(globalThis.SVGAElement&&this.element instanceof globalThis.SVGAElement&&(t=It(t)?Ct(t):t),!this?.attr[t]||this?.attr[t]!==e){if(St(e)){e()._subscribe((e=>this.element?.setAttribute(t,e)),this)}else this.element?.setAttribute(t,e);Object.assign(this.cache.attributes,{[t]:e})}}var Rt=Object.freeze({__proto__:null,getAttr:function(t){return t=is_camelcase(t)?camel2hyphencase(t):t,this.element.attributes[t].value},removeAttr:function(...t){for(let e=0;e<t.length;e++)this.element?.removeAttribute(t[e]);return this},setAttr:function(t,e){if(t instanceof Object){const[s,r]=[Object.keys(t),Object.values(t)];for(let t=0;t<s.length;t++)r[t]instanceof Array&&(e[t]=r[t].join(" ")),$t.call(this,s[t],r[t])}else e instanceof Array&&(e=e.join(" ")),$t.call(this,t,e);return this},setContentEditable:function(t=!0){return this.setAttr("contenteditable",t),this}});var Ft=Object.freeze({__proto__:null,after:function(t){return t?.isUIElement&&(t=t.element),this.element?.after(t),this},append:function(...t){return Pt.call(this,"append","push",...t),this},before:function(t){return t?.isUIElement&&(t=t.element),this.element?.before(t),this},clear:function(){return this?.items?.forEach((t=>t.unmount())),this.element.innerHTML="",this},insertAt:function(t,...e){if(t>=this.element.children.length)this.append(...e);else for(let s=0;s<e.length;s++)["number","string"].includes(typeof e[s])&&(e[s]=Dt(e[s])),this.element?.insertBefore(e[s].element,this.items[t].element),this.items.splice(t,0,e[s]);return this},mount:function(t=this.target){if(!this.isBody)return t?.isUIElement&&(t=t.element),this.target=t,this.target?.appendChild(this.element),this},prepend:function(...t){return this.__addItem__.call(this,"prepend","unshift",...t),this},remove:function(...t){const e=t=>{"number"==typeof t&&(t=this.items[t]),t?.isUIElement&&this.element?.removeChild(t.element),this.items=this.items.filter((e=>e!==t))};for(let s=0;s<t.length;s++)e(t[s]);for(let t=0;t<this.items.length;t++)Object.assign(this,{[[t]]:this.items[t]});return this},renderAfter:function(t=1){return setTimeout((()=>this.mount()),t),this},replaceElementWith:function(t){return this.cache.element.replaceWith(t),this.cache.element=t,this},unmount:function(){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},unrenderAfter:function(t=1){return setTimeout((()=>this.unmount()),t),this}});const zt={Click:["Click","DblClick","ClickAway"],Ptr:["PtrMove","PtrDown","PtrUp","PtrLeave","PtrEnter","PtrOut","PtrCancel"],Mouse:["MouseMove","MouseDown","MouseUp","MouseEnter","MouseLeave","MouseOut"],Key:["KeyDown","KeyPress","KeyUp"],Clipboard:["Copy","Cut","Paste"],Focus:["focus","blur"],Drag:["Drag","DragStart","DragEnd","Drop"],Wheel:["Wheel"]},Lt=(t="")=>t.startsWith("Ptr")?`pointer${t.split("Ptr")[1].toLowerCase()}`:t.toLowerCase();function qt(t,e,s,r,n){this.cache.currentEvent=e,this.cache.event=t,s?.call(this),r?.hasOwnProperty("prototype")?r?.call(this):r?.call(null,this),this.cache.preventDefault[e]&&t.preventDefault(),this.cache.stopPropagation[e]&&t.stopPropagation(),this.cache.stopImmediatePropagation[e]&&t.stopImmediatePropagation(),this.cache.stream.enabled[e]&&n&&this.cache.stream.history[e].push(n),this.cache.callbacks[e]?.map((t=>t(this)))}class Zt{constructor(t=null,e=[],s,r){this.target=t,this.cache={currentEvent:null,event:null,options:{},preventDefault:{},stopPropagation:{},stopImmediatePropagation:{},event_flow:{},paused:{},stream:{enabled:{},clear:{},history:{}},callbacks:{},__controllers__:{}},e&&this._register_events(e,s,r)}_register_events(t,e,s,r=!0){const n=t?.map((t=>Lt(t)));return n?.forEach(((n,i)=>{Object.assign(this.cache.preventDefault,{[n]:!1}),Object.assign(this.cache.options,{[n]:{}}),Object.assign(this.cache.paused,{[n]:!1}),Object.assign(this.cache.stream.enabled,{[n]:!1}),Object.assign(this.cache.stream.clear,{[n]:!1}),Object.assign(this.cache.stream.history,{[n]:[]}),Object.assign(this.cache.__controllers__,{[n]:t=>qt.call(this,t,n,e,s)}),r&&Object.assign(this,{[`on${t[i]}`]:(...t)=>this.__onEvent(n,this.cache.options[n],{},...t)})})),this}get targetElement(){return this.target?.element}get isParent(){return this.target?.element===this.event.srcElement}get item(){return this.target.find((t=>t.element==this.event?.srcElement))?.[0]}get currentEvent(){return this.cache.currentEvent}get event(){return this.cache.event}setTarget(t){return this.target=t,this}__handle(t,e,s,r){return this.targetElement?.addEventListener(t,e,s),this}__onEvent(t,e,s,...r){if(0===r.length){if(console.log("00"),!this.cache.callbacks[t])return this;console.log("Call"),this.cache.callbacks[t].map((t=>e=>t.call(this,e)))}else this.cache.callbacks[t]=r.map((t=>e=>t.call(this,e)));return this.__handle(t,this.cache.__controllers__[t],e,s),this}#c(t,e,s){"default"===s&&Object.assign(this.cache[t],{...this.cache[t],...e});const r="default"===s?this.cache[t]:Object.fromEntries(Object.keys(this.cache.preventDefault).map((t=>[t,s])));return Object.assign(this.cache[t],{...r,...e}),this}preventDefault(t={},e="default"){return this.#c("preventDefault",t,e),this}stopPropagation(t={},e="default"){return this.#c("stopPropagation",t,e),this}stopImmediatePropagation(t={},e="default"){return this.#c("stopImmediatePropagation",t,e),this}setEventOptions(t,e){return this.pause({[t]:!0},"default"),Object.assign(this.cache.options[Lt(t)],e),this.resume({[t]:!0},"default"),this}pause(t={},e="default"){t={..."default"===e?this.cache.stream.enabled:Object.entries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t};for(let e in t)t[e]&&(this.targetElement?.removeEventListener(e,this.cache.__controllers__[e],this.cache.options[e]),this.cache.paused[e]=!0);return this}resume(t={},e="default"){t={..."default"===e?this.cache.stream.enabled:Object.entries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t};for(let e in t)t[e]&&(this.targetElement?.addEventListener(e,this.cache.__controllers__[e],this.cache.options[e]),this.cache.paused[e]=!1);return this}stream(t={},e="default"){this.cache.stream.t0=Date.now();return t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,e]))),...t},Object.assign(this.cache.stream.enabled,t),this}clear(){return this}dispose(t={},e="default"){return this.pause(t,e),this}}class Nt extends Zt{constructor(t,e){super(t,zt.Click,Bt,e)}}function Bt(){"click"===this.currentEvent?this.dx=0:this.dx=1}const Ut=(t,e)=>new Nt(t,e);class Ht extends Zt{constructor(t,e){super(t,zt.Clipboard,Gt,e)}}function Gt(){}const Vt=(t,e)=>new Ht(t,e);class Wt extends Zt{constructor(t,e,s){super(t,e,Kt,s)}_register_events(t){return super._register_events(t,null,null,!1),this}emit(t,e={}){const s=new Event(t);return this.targetElement.dispatchEvent(s),this}on(t,...e){return this.cache.options.hasOwnProperty(t)||this._register_events([t]),this.__onEvent(t,this.cache.options[t],{},...e),this}}function Kt(){}class Jt extends Zt{constructor(t,e){super(t,zt.Drag,Yt,e)}}function Yt(){}const Xt=(t,e)=>new Jt(t,e);class Qt extends Zt{constructor(t,e){super(t,zt.Focus,te,e)}}function te(){}const ee=(t,e)=>new Qt(t,e);class se extends Zt{constructor(t,e){super(t,zt.Hash,re,e)}}function re(){}class ne extends Zt{constructor(t,e){super(t,zt.Key,ie,e)}}function ie(){switch(this.currentEvent){case"keydown":this.kd=this.event.key;break;case"keypress":this.kp=this.event.key;break;case"keyup":this.ku=this.event.key}}const ae=(t,e)=>new ne(t,e);class oe extends Zt{constructor(t,e){super(t,zt.Mouse,ce,e)}}function ce(){}const he=(t,e)=>new oe(t,e);class le extends Zt{constructor(t,e){super(t,zt.Ptr,ue,e),this.isDown=!1}}function ue(){switch(this.currentEvent){case"pointerdown":this.dx=parseInt(this.event.offsetX),this.dy=parseInt(this.event.offsetY),this.isDown=!0;break;case"pointermove":this.mx=parseInt(this.event.offsetX),this.my=parseInt(this.event.offsetY),this.isMoving=!0;break;case"pointerup":{this.ux=parseInt(this.event.offsetX),this.uy=parseInt(this.event.offsetY),this.isDown=!1,console.log(this.target.width);const t=(this.ux-this.dx)/this.target.width,e=(this.dy-this.uy)/this.target.height,s=t<0?"left":t>0?"right":"none",r=e<0?"bottom":e>0?"top":"none";this.swippe={h:s,v:r,delta_x:t,delta_y:e}}}}const fe=(t,e)=>new le(t,e);class me extends Zt{constructor(t,e){super(t,zt.Touch,pe,e)}}function pe(){}class de extends Zt{constructor(t,e){super(t,zt.Wheel,ge,e)}}function ge(){}const be=(t,e)=>new de(t,e),we={ptr:fe,mouse:he,key:ae,click:Ut,drag:Xt,clipboard:Vt,focus:ee,wheel:be},ye={};Object.entries(zt).forEach((([t,e])=>{e.forEach((e=>{const s=`on${e}`;ye[s]=function(...e){return this.events[t]||(this.events[t]=we[t.toLowerCase()](this)),this.events[t][s](...e),this}}))}));var _e=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 ve=Object.freeze({__proto__:null,animate:function(t,{duration:e=1e3,iterations:s=1,easing:r="ease"}={}){return this.element?.animate(t,{duration:e,iterations:s,easing:r}),this},hide:function(){},show:function(){},size:function(t,e){return this.style({width:t,height:e})},style:function(t){if(!this.element?.style)return this;for(let e in t){const s=t[e];if(St(s)){const t=s();Object.assign(this.element.style,{[e]:t.value}),t._subscribe((t=>{console.log({newValue:t}),Object.assign(this.element.style,{[e]:t})}))}else Object.assign(this.element.style,{[e]:s})}return this}});function xe(t,e,s,r){return this.event=t,this.cache.preventDefault[e]&&t.preventDefault(),console.log({setter:s}),s&&s(),this.cache.stream.enabled[e]&&r&&this.cache.stream.history[e].push(r),this.cache.callbacks[e].map((t=>t(this))),this}class Ee{constructor(t){this.target=null,this.setTarget(t),this.__dispose=this.dispose.bind(this)}get targetElement(){return this.target.element}setTarget(t){return this.target=t,this}__handle(t,e,s){const r="drag"===t?t:`${this.cache.prefixe}${t}`;return this.dispose(s),this.targetElement?.addEventListener(r,e),this}__onEvent(t,e,...s){if(0===s.length){if(!(this.cache.callbacks.length>1))return this;this.cache.callbacks.map((t=>e=>t.call(this,e)))}else this.cache.callbacks[t]=s.map((t=>e=>t.call(this,e)));return this.__handle(t,this.__controller[t],e),this}preventDefault(t={}){return Object.assign(this.cache.preventDefault,t),this}pause(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.targetElement?.removeEventListener(`${this.cache.prefixe}${e}`,this.__controller[`${this.cache.prefixe}${e}`]),this.cache.paused[`${this.cache.prefixe}${e}`]=!0);return this}resume(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.targetElement?.addEventListener(`${this.cache.prefixe}${e}`,this.__controller[`${this.cache.prefixe}${e}`]),this.cache.paused[`${this.cache.prefixe}${e}`]=!1);return this}dispose(t={}){return this.pause(t),this}stream(t={}){this.cache.stream.t0=Date.now();return t={...Object.fromEntries(Object.keys(this.cache.stream.enabled).map((t=>[t,!0]))),...t},Object.assign(this.cache.stream.enabled,t),this}clear(t={}){t={...Object.fromEntries(Object.keys(this.cache.stream.clear).map((t=>[t,!0]))),...t};for(let e in t)t[e]&&(this.cache.stream.history[e]=[]);return this}}const ke=t=>function(e){xe.call(this,e,t,null,null)};class Ae extends Ee{constructor(t){super(t),this.event=null,this.cache={prefixe:"",preventDefault:{},paused:{},stream:{enabled:{},clear:{},history:{}},callbacks:{}},this.__controller={}}#a(t){return this.cache.preventDefault[t]=!1,this.cache.paused[t]=!1,this.cache.stream.enabled=!1,this.cache.stream.clear=!1,this.cache.stream.history=[],this.cache.callbacks[t]=[],this.__controller[t]=ke(t).bind(this),this}on(t,...e){return this.__controller[t]||this.#a(t),this.__onEvent(t,{},...e),this}emit(t,e={}){this.__controller[t]||this.#a(t),this.detail=e;const s=new Event(t);return this.targetElement.dispatchEvent(s),this}}const Oe=t=>new Ae(t);let je=class extends Ot{constructor({element:t,name:e="",type:s="html",render:r=__Ziko__.__Config__.default.render}={}){super(),jt(this,Rt,Ft,ve,_e,ye),t&&this.init(t,e,s,r)}get element(){return this.cache.element}isInteractive(){return this.cache.isInteractive}useClient(t){return this.cache.isInteractive||(this.element.setAttribute("data-hydration-index",globalThis.__Ziko__.__HYDRATION__.index),globalThis.__Ziko__.__HYDRATION__.register((()=>this)),this.cache.isInteractive=!0),t&&this.element.setAttribute("data-hydration-directive",t),this}get st(){return this.cache.style}get attr(){return this.cache.attributes}get evt(){return this.events}get html(){return this.element.innerHTML}get text(){return this.element.textContent}get isBody(){return this.element===globalThis?.document.body}get parent(){return this.cache.parent}get width(){return this.element.getBoundingClientRect().width}get height(){return this.element.getBoundingClientRect().height}get top(){return this.element.getBoundingClientRect().top}get right(){return this.element.getBoundingClientRect().right}get bottom(){return this.element.getBoundingClientRect().bottom}get left(){return this.element.getBoundingClientRect().left}on(t,...e){return this.events.custom||(this.events.custom=Oe(this)),this.events.custom.on(t,...e),this}emit(t,e={}){return this.events.custom||(this.events.custom=Oe(this)),this.events.custom.emit(t,e),this}};class Te extends je{constructor(...t){super({element:"div",name:"view"}),this.append(...t)}}const Se=["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"],Ce=["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"],Ie=new Proxy({},{get(t,e){if("string"!=typeof e)return;let s,r=e.replaceAll("_","-").toLowerCase();return Se.includes(r)&&(s="html"),Ce.includes(r)&&(s="svg"),(...t)=>0===t.length?new je({element:r,name:r,type:s}):["string","number"].includes(typeof t[0])||t[0]instanceof je||"function"==typeof t[0]&&t[0]().isStateGetter()?new je({element:r,name:r,type:s}).append(...t):new je({element:r,type:s}).setAttr(t.shift()).append(...t)}});class Me extends je{constructor(t="div",e="100%",s="100%"){super({element:t,name:"Flex"}),this.direction="cols","number"==typeof e&&(e+="%"),"number"==typeof s&&(s+="%"),this.style({width:e,height:s}),this.style({display:"flex"})}get isFlex(){return!0}resp(t,e=!0){return this.wrap(e),this.element.clientWidth<t?this.vertical():this.horizontal(),this}setSpaceAround(){return this.style({justifyContent:"space-around"}),this}setSpaceBetween(){return this.style({justifyContent:"space-between"}),this}setBaseline(){return this.style({alignItems:"baseline"}),this}gap(t){return"row"===this.direction?this.style({columnGap:t}):"column"===this.direction&&this.style({rowGap:t}),this}wrap(t="wrap"){return this.style({flexWrap:"string"==typeof t?t:["no-wrap","wrap","wrap-reverse"][+t]}),this}_justifyContent(t="center"){return this.style({justifyContent:t}),this}vertical(t,e,s=1){return De.call(this,s),this.style({alignItems:"number"==typeof t?$e.call(this,t):t,justifyContent:"number"==typeof e?Re.call(this,e):e}),this}horizontal(t,e,s=1){return Pe.call(this,s),this.style({alignItems:"number"==typeof e?Re.call(this,e):e,justifyContent:"number"==typeof t?$e.call(this,t):t}),this}show(){return this.isHidden=!1,this.style({display:"flex"}),this}}function De(t){return 1==t?this.style({flexDirection:"column"}):-1==t&&this.style({flexDirection:"column-reverse"}),this}function Pe(t){return 1==t?this.style({flexDirection:"row"}):-1==t&&this.style({flexDirection:"row-reverse"}),this}function $e(t){return"number"==typeof t&&(t=["flex-start","center","flex-end"][t+1]),t}function Re(t){return $e(-t)}class Fe extends Ot{constructor({element:t,name:e,type:s,render:r}){super({element:t,name:e,type:s,render:r})}}class ze extends Fe{constructor(t,e){super({element:"div",name:"suspense"}),this.setAttr({dataTemp:"suspense"}),this.fallback_ui=t,this.append(t),(async()=>{try{const s=await e();t.unmount(),this.append(s)}catch(t){console.log({error:t})}})()}}class Le extends je{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 qe extends je{constructor(t){super({element:"div",name:"html_wrappper"}),this.element.append(function(t){if("undefined"!=typeof DOMParser){const e=(new DOMParser).parseFromString(t.trim(),"image/svg+xml").documentElement;if("parsererror"===e.nodeName)throw new Error("Invalid SVG string");if(e.hasAttribute("xmlns"))return e;const{children:s,attributes:r}=e,n=document.createElementNS("http://www.w3.org/2000/svg","svg");for(let{name:t,value:e}of r)n.setAttribute(t,e);return n.append(...s),globalThis.svg=e,globalThis.children=s,globalThis.attributes=r,globalThis.element=n,n}throw new Error("DOMParser is not available in this environment")}(t)),this.style({display:"contents"})}}class Ze extends je{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 Ne=t=>(new XMLSerializer).serializeToString(t),Be=t=>btoa(Ne(t)),Ue=t=>"data:image/svg+xml;base64,"+Be(t),He=t=>JSON.stringify(y((t=>["number","string","boolean","bigint"].includes(typeof t)?String(t):t instanceof Xe||t instanceof Je?t.toString():t instanceof Array?Ve(t):void 0),t),null," ").replace(/"([^"]+)":/g,"$1:").replace(/: "([^"]+)"/g,": $1"),Ge=t=>{if(!Array.isArray(t))return 0;let e=1;for(const s of t)if(Array.isArray(s)){const t=Ge(s);t+1>e&&(e=t+1)}return e},Ve=t=>{let e=0;return function t(s){let r=Ge(s),n=0;return s.some((t=>Array.isArray(t)))&&(e++,n=1),"["+s.map(((r,n)=>["number","string","boolean","bigint"].includes(typeof r)?String(r):r instanceof Xe?r.toString():r instanceof Array?`\n${" ".repeat(e)}${t(r)}${n===s.length-1?"\n":""}`:r instanceof Object?He(r):void 0))+`${" ".repeat((r+e+1)*n)}]`}(t)},We=(t,e=0)=>{t=Ke(t);let s="";const r=" ".repeat(e);for(let n in t)if("object"==typeof t[n]){s+=`${r}${n} {\n`;const i=t[n];for(let t in i)"object"==typeof i[t]?s+=We({[t]:i[t]},e+1):s+=`${r} ${t.replace(/[A-Z]/g,(t=>"-"+t.toLowerCase()))}: ${i[t]};\n`;s+=`${r}}\n`}return s};function Ke(t){return"object"!=typeof t||null===t?t:Object.keys(t).reduce(((e,s)=>(e[s.trim()]=Ke(t[s]),e)),Array.isArray(t)?[]:{})}class Je{constructor(t,e,s=[]){if(t instanceof Je)this.arr=t.arr,this.rows=t.rows,this.cols=t.cols;else{let r,n,i=[];if(arguments[0]instanceof Array)t=arguments[0].length,e=arguments[0][0].length,i=arguments[0];else for(r=0;r<t;r++)for(i.push([]),i[r].push(new Array(e)),n=0;n<e;n++)i[r][n]=s[r*e+n],null==s[r*e+n]&&(i[r][n]=0);this.rows=t,this.cols=e,this.arr=i}this.#o()}toString(){return Ve(this.arr)}at(t=0,e=void 0){return t<0&&(t=this.rows+t),null==e?this.arr[t]:(e<0&&(e=this.cols+e),this.arr[t][e])}reshape(t,e){if(t*e==this.rows*this.cols)return new Je(t,e,this.arr.flat(1));console.error("Err")}static eye(t){let e=new Je(t,t);for(let s=0;s<t;s++)for(let r=0;r<t;r++)e.arr[s][r]=s===r?1:0;return e}get clone(){return new Je(this.rows,this.cols,this.arr.flat(1))}get size(){return this.rows*this.cols}get shape(){return[this.rows,this.cols]}get reel(){return new Je(this.cols,this.rows,this.arr.flat(1).reel)}get imag(){return new Je(this.cols,this.rows,this.arr.flat(1).imag)}[Symbol.iterator](){return this.arr[Symbol.iterator]()}#o(){for(let t=0;t<this.arr.length;t++)Object.defineProperty(this,t,{value:this.arr[t],writable:!0,configurable:!0,enumerable:!1})}get(t=0,e=0){return-1==e?this.arr[t]:-1==t?this.arr.map((t=>t[e])):this.arr[t][e]}set(t=0,e=0,s){if(-1==e)return this.arr[t]=s;if(-1==t){for(let t=0;t<this.cols;t++)this.arr[t][e]=s[t]||0;return this.arr}return this.arr[t][e]=s}get isSquare(){return this.rows/this.cols==1}get isSym(){if(!this.isSquare)return!1;const t=this.T,e=this.clone;return 0==Je.sub(e,t).max&&0==Je.sub(e,t).min}get isAntiSym(){if(!this.isSquare)return!1;const t=this.T,e=this.clone;return 0==Je.add(e,t).max&&0==Je.add(e,t).min}get isDiag(){if(!this.isSquare)return!1;const t=this.T,e=this.clone,s=Je.mul(e,t),r=Je.dot(t,e);return 0==Je.sub(s,r).max&&0==Je.sub(s,r).min}get isOrtho(){return!!this.isSquare&&(this.isDiag&&(1==this.det||-1==this.det))}get isIdemp(){if(!this.isSquare)return!1;const t=this.clone,e=Je.dot(t,t);return 0==Je.sub(e,t).max&&0==Je.sub(e,t).min}get T(){let t=[];for(let e=0;e<this.arr[0].length;e++){t[e]=[];for(let s=0;s<this.arr.length;s++)t[e][s]=this.arr[s][e]}return new Je(this.cols,this.rows,t.flat(1))}get det(){if(!this.isSquare)return new Error("is not square matrix");if(1==this.rows)return this.arr[0][0];function t(t,e){var s=[];for(let e=0;e<t.length;e++)s.push(t[e].slice(0));s.splice(0,1);for(let t=0;t<s.length;t++)s[t].splice(e,1);return s}return function e(s){if(2==s.length)return s.flat(1).some((t=>t instanceof Je))?void console.warn("Tensors are not completely supported yet ..."):Q.sub(Q.mul(s[0][0],s[1][1]),Q.mul(s[0][1],s[1][0]));for(var r=0,n=0;n<s.length;n++){const i=Q.add(Q.mul(ss(-1,n),Q.mul(s[0][n],e(t(s,n)))));r=Q.add(r,i)}return r}(this.arr)}get inv(){if(!this.isSquare)return new Error("is not square matrix");if(0===this.det)return"determinat = 0 !!!";let t=function(t){if(t.length!==t[0].length)return;var e=0,s=0,r=0,n=t.length,i=0,a=[],o=[];for(e=0;e<n;e+=1)for(a[a.length]=[],o[o.length]=[],r=0;r<n;r+=1)a[e][r]=e==r?1:0,o[e][r]=t[e][r];for(e=0;e<n;e+=1){if(0==(i=o[e][e])){for(s=e+1;s<n;s+=1)if(0!=o[s][e]){for(r=0;r<n;r++)i=o[e][r],o[e][r]=o[s][r],o[s][r]=i,i=a[e][r],a[e][r]=a[s][r],a[s][r]=i;break}if(0==(i=o[e][e]))return}for(r=0;r<n;r++)o[e][r]=o[e][r]/i,a[e][r]=a[e][r]/i;for(s=0;s<n;s++)if(s!=e)for(i=o[s][e],r=0;r<n;r++)o[s][r]-=i*o[e][r],a[s][r]-=i*a[e][r]}return a}(this.arr);return new Je(this.rows,this.cols,t.flat(1))}static zeros(t,e){let s=new Je(t,e);for(let n=0;n<t;n++)for(var r=0;r<e;r++)s.arr[n][r]=0;return s}static ones(t,e){let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=1;return s}static nums(t,e,s){let r=new Je(t,e);for(let n=0;n<t;n++)for(let t=0;t<e;t++)r.arr[n][t]=s;return r}static get rand(){return{int:(t,e,s,r)=>{let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.randInt(s,r);return n},bin:(t,e)=>{let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=rt.randBin;return s},hex:(t,e)=>{let s=new Je(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.arr[r][t]=rt.randHex;return s},choices:(t,e,s,r)=>{let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.choice(s,r);return n},permutation:(t,e,s)=>{}}}static rands(t,e,s=1,r){let n=new Je(t,e);for(let i=0;i<t;i++)for(let t=0;t<e;t++)n.arr[i][t]=rt.rand(s,r);return n}map(t,e,s,r){return Q.map(this,t,e,s,r)}lerp(t,e){return Q.lerp(this,t,e)}norm(t,e){return Q.norm(this,t,e)}clamp(t,e){return Q.clamp(this,t,e)}static map(t,e,s,r,n){return Q.map(t,e,s,r,n)}static lerp(t,e,s){return Q.lerp(t,e,s)}static norm(t,e,s){return Q.norm(t,e,s)}static clamp(t,e,s){return Q.clamp(Ye,e,s)}toPrecision(t){for(let e=0;e<this.cols;e++)for(let s=0;s<this.rows;s++)this.arr[e][s]=+this.arr[e][s].toPrecision(t);return this}get toBin(){let t=this.arr.flat(1).toBin;return new Je(this.rows,this.cols,t)}get toOct(){let t=this.arr.flat(1).toOct;return new Je(this.rows,this.cols,t)}get toHex(){let t=this.arr.flat(1).toHex;return new Je(this.rows,this.cols,t)}max2min(){let t=this.arr.flat(1).max2min;return new Je(this.rows,this.cols,t)}min2max(){let t=this.arr.flat(1).min2max;return new Je(this.rows,this.cols,t)}sortRows(t=void 0){let e=this.arr.map((e=>e.sort(t))).flat(1);return new Je(this.rows,this.cols,e)}sortCols(t=void 0){let e=this.T.arr.map((e=>e.sort(t))).flat(1);return new Je(this.rows,this.cols,e).T}filterByRows(t){var e=this.arr.map((e=>e.map((e=>+(""+e).includes(t))))).map((t=>!!Logic.or(...t))),s=this.arr.filter(((t,s)=>!0===e[s]));return 0===s.length&&s.push([]),console.log(s),new Je(s)}filterByCols(t){return new Je(this.T.arr.filter((e=>e.includes(t))))}sortAll(t=void 0){let e=this.arr.flat(1).sort(t);return new Je(this.rows,this.cols,e)}count(t){return this.arr.flat(1).count(t)}toBase(t){let e=this.arr.flat(1).toBase(t);return new Je(this.rows,this.cols,e)}#h(t){if(this.rows!==t.rows)return;let e=this.arr;for(let s=0;s<this.rows;s++)for(let r=this.cols;r<this.cols+t.cols;r++)e[s][r]=t.arr[s][r-this.cols];return this.cols+=t.cols,new Je(this.rows,this.cols,e.flat(1))}hstack(...t){const e=[this,...t].reduce(((t,e)=>t.#h(e)));return Object.assign(this,e),this}static hstack(t,...e){return t.clone.hstack(...e)}#l(t){if(this.cols!==t.cols)return;let e=this.arr;for(let s=this.rows;s<this.rows+t.rows;s++){e[s]=[];for(let r=0;r<this.cols;r++)e[s][r]=t.arr[s-this.rows][r]}return this.rows+=t.rows,new Je(this.rows,this.cols,e.flat(1))}vstack(...t){const e=[this,...t].reduce(((t,e)=>t.#l(e)));return Object.assign(this,e),this}static vstack(t,...e){return t.clone.vstack(...e)}hqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>t.#h(e)));return Object.assign(this,e),this}vqueue(...t){const e=[this,...t].reverse().reduce(((t,e)=>t.#l(e)));return Object.assign(this,e),this}static hqueue(t,...e){return t.clone.hqueue(...e)}static vqueue(t,...e){return t.clone.vqueue(...e)}slice(t=0,e=0,s=this.rows-1,r=this.cols-1){let n=s-t,i=r-e,a=new Array(i);for(let s=0;s<n;s++){a[s]=[];for(let r=0;r<i;r++)a[s][r]=this.arr[s+t][r+e]}return new Je(n,i,a.flat(1))}static slice(t,e=0,s=0,r=this.rows-1,n=this.cols-1){return t.slice(e,s,r,n)}splice(t,e,s,...r){}getRows(t,e=t+1){return this.slice(t,0,e,this.cols)}getCols(t,e=t+1){return this.slice(0,t,this.rows,e)}static getRows(t,e,s=e+1){return t.slice(e,0,s,t.cols)}static getCols(t,e,s=e+1){return t.slice(0,e,t.rows,s)}add(...t){for(let s=0;s<t.length;s++){("number"==typeof t[s]||t[s]instanceof Xe)&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.add(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}sub(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.sub(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static add(t,...e){return t.clone.add(...e)}static sub(t,...e){return t.clone.sub(...e)}mul(...t){for(let r=0;r<t.length;r++){"number"==typeof t[r]&&(t[r]=Je.nums(this.rows,this.cols,t[r]));for(var e=0;e<this.rows;e++)for(var s=0;s<this.cols;s++)this.arr[e][s]=Q.mul(this.arr[e][s],t[r].arr[e][s])}return new Je(this.rows,this.cols,this.arr.flat(1))}div(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.div(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static div(t,...e){return t.clone.div(...e)}static mul(t,...e){return t.clone.mul(...e)}modulo(...t){for(let s=0;s<t.length;s++){"number"==typeof t[s]&&(t[s]=Je.nums(this.rows,this.cols,t[s]));for(let r=0;r<this.rows;r++)for(var e=0;e<this.cols;e++)this.arr[r][e]=Q.modulo(this.arr[r][e],t[s].arr[r][e])}return new Je(this.rows,this.cols,this.arr.flat(1))}static modulo(t,...e){return t.clone.modulo(...e)}dot(t){for(var e=[],s=0;s<this.arr.length;s++){e[s]=[];for(var r=0;r<t.arr[0].length;r++){e[s][r]=0;for(var n=0;n<this.arr[0].length;n++)e[s][r]=Q.add(e[s][r],Q.mul(this.arr[s][n],t.arr[n][r]))}}return new Je(this.arr.length,t.arr[0].length,e.flat(1))}static dot(t,e){return t.dot(e)}pow(t){let e=this.clone,s=this.clone;for(let r=0;r<t-1;r++)s=s.dot(e);return s}static pow(t,e){return t.clone.pow(e)}get somme(){let t=0;for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t+=this.arr[e][s];return t}get DoesItContainComplexNumbers(){return this.arr.flat(1/0).some((t=>t instanceof Xe))}get min(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(H(...this.arr[e]));return H(...t)}get max(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(G(...this.arr[e]));return G(...t)}get minRows(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(H(...this.arr[e]));return t}get maxRows(){this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable");let t=[];for(let e=0;e<this.rows;e++)t.push(G(...this.arr[e]));return t}get minCols(){return this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable"),this.T.minRows}get maxCols(){return this.DoesItContainComplexNumbers&&console.error("Complex numbers are not comparable"),this.T.maxRows}static fromVector(t){return new Je(t.length,1,t)}get toArray(){let t=[];for(let e=0;e<this.rows;e++)for(let s=0;s<this.cols;s++)t.push(this.arr[e][s]);return t}get print(){let t="[";for(let e=0;e<this.arr.length;e++)t+=(0!=e?" ":"")+` [${this.arr[e].map((t=>" "+t.toString()+" "))}],\n`;console.log(t.substring(0,t.length-2)+" ]"),document.write(t.substring(0,t.length-2)+" ]")}get table(){console.table(this.arr)}get serialize(){return JSON.stringify(this)}static deserialize(t){"string"==typeof t&&(t=JSON.parse(t));let e=new Je(t.rows,t.cols);return e.arr=t.arr,e}toTable(){var t=new DocumentFragment,e=new Array(this.rows).fill(null).map((()=>document?.createElement("tr"))),s=this.arr.map((t=>t.map((()=>document?.createElement("td")))));for(let t=0;t<s.length;t++)for(let r=0;r<s[0].length;r++)s[t][r].innerHTML=this.arr[t][r],e[t].appendChild(s[t][r]);return e.map((e=>t.appendChild(e))),t}toGrid(t,e={}){let s=Grid();return s.append(...this.map(t).arr.flat(1).map((t=>t.style(e)))),s.Columns(this.cols),s}sortTable(t=0,{type:e="num",order:s="asc"}={}){var r=this.T.arr.map((t=>t.map(((t,e)=>Object.assign({},{x:t,y:e}))))),n=this.T.arr.map((t=>t.map(((t,e)=>Object.assign({},{x:t,y:e})))));"num"===e?"asc"===s?r[t].sort(((t,e)=>t.x-e.x)):"desc"===s?r[t].sort(((t,e)=>e.x-t.x)):"toggle"===s&&(r[t][0].x>r[t][1].x?r[t].sort(((t,e)=>e.x-t.x)):r[t].sort(((t,e)=>t.x-e.x))):"alpha"===e&&("asc"===s?r[t].sort(((t,e)=>(""+t.x).localeCompare(""+e.x))):"desc"===s&&r[t].sort(((t,e)=>(""+e.x).localeCompare(""+t.x)))),s=r[t].map((t=>t.y));for(let e=0;e<r.length;e++)e!==t&&r[e].map(((t,e)=>t.y=s[e]));for(let e=0;e<r.length;e++)e!==t&&n[e].map(((t,n)=>t.x=r[e][s[n]].x));n[t]=r[t];var i=n.map((t=>t.map((t=>t.x))));return new Je(i).T}}const Ye=(t,e,s)=>new Je(t,e,s);class Xe{constructor(t=0,e=0){t instanceof Xe?(this.a=t.a,this.b=t.b):"object"==typeof t?"a"in t&&"b"in t?(this.a=t.a,this.b=t.b):"a"in t&&"z"in t?(this.a=t.a,this.b=es(t.z**2-t.a**2)):"a"in t&&"phi"in t?(this.a=t.a,this.b=t.a*cs(t.phi)):"b"in t&&"z"in t?(this.b=t.b,this.a=es(t.z**2-t.b**2)):"b"in t&&"phi"in t?(this.b=e,this.a=t.b/cs(t.phi)):"z"in t&&"phi"in t&&(this.a=t.z*as(t.phi),this.a=t.z*os(t.phi)):"number"==typeof t&&"number"==typeof e&&(this.a=+t.toFixed(32),this.b=+e.toFixed(32))}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}get clone(){return new Xe(this.a,this.b)}get z(){return ms(this.a,this.b)}get phi(){return fs(this.b,this.a)}static Zero(){return new Xe(0,0)}get conj(){return new Xe(this.a,-this.b)}get inv(){return new Xe(this.a/(ss(this.a,2)+ss(this.b,2)),-this.b/(ss(this.a,2)+ss(this.b,2)))}add(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=t.map((t=>t.a)),s=t.map((t=>t.b));return this.a+=+B(...e).toFixed(15),this.b+=+B(...s).toFixed(15),this}sub(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=t.map((t=>t.a)),s=t.map((t=>t.b));return this.a-=+B(...e).toFixed(15),this.b-=+B(...s).toFixed(15),this}mul(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=+U(this.z,...t.map((t=>t.z))).toFixed(15),s=+B(this.phi,...t.map((t=>t.phi))).toFixed(15);return this.a=+(e*as(s).toFixed(15)).toFixed(14),this.b=+(e*os(s).toFixed(15)).toFixed(14),this}div(...t){for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(t[e]=new Xe(t[e],0));let e=+(this.z/U(...t.map((t=>t.z)))).toFixed(15),s=+(this.phi-B(...t.map((t=>t.phi)))).toFixed(15);return this.a=+(e*as(s).toFixed(15)).toFixed(15),this.b=+(e*os(s).toFixed(15)).toFixed(15),this}pow(t){if(us(t)===t&&t>0){let e=+(this.z**t).toFixed(15),s=+(this.phi*t).toFixed(15);this.a=+(e*as(s).toFixed(15)).toFixed(15),this.b=+(e*os(s).toFixed(15)).toFixed(15)}return this}static fromExpo(t,e){return new Xe(+(t*as(e)).toFixed(13),+(t*os(e)).toFixed(13))}get expo(){return[this.z,this.phi]}static add(t,...e){return t.clone.add(...e)}static sub(t,...e){return t.clone.sub(...e)}static mul(t,...e){return t.clone.mul(...e)}static div(t,...e){return t.clone.div(...e)}static pow(t,e){return t.clone.pow(e)}static xpowZ(t){return Qe(t**this.a*as(this.b*is(t)),t**this.a*os(this.b*is(t)))}sqrtn(t=2){return Qe(rs(this.z,t)*as(this.phi/t),rs(this.z,t)*os(this.phi/t))}get sqrt(){return this.sqrtn(2)}get log(){return Qe(this.z,this.phi)}get cos(){return Qe(as(this.a)*hs(this.b),os(this.a)*ls(this.b))}get sin(){return Qe(os(this.a)*hs(this.b),as(this.a)*ls(this.b))}get tan(){const t=as(2*this.a)+hs(2*this.b);return Qe(os(2*this.a)/t,ls(2*this.b)/t)}}const Qe=(t,e)=>{if((t instanceof Array||ArrayBuffer.isView(t))&&(e instanceof Array||ArrayBuffer.isView(t)))return t.map(((s,r)=>Qe(t[r],e[r])));if(t instanceof Je&&e instanceof Je){if(t.shape[0]!==e.shape[0]||t.shape[1]!==e.shape[1])return Error(0);const s=t.arr.map(((s,r)=>Qe(t.arr[r],e.arr[r])));return new Je(t.rows,t.cols,...s)}return new Xe(t,e)},ts=(...t)=>y(Math.abs,...t),es=(...t)=>y(Math.sqrt,...t),ss=(t,e)=>{if("number"==typeof t)return"number"==typeof e?Math.pow(t,e):e instanceof Xe?Xe.fromExpo(t**e.a,e.b*is(t)):y((e=>ss(t,e)),...e);if(t instanceof Xe)return"number"==typeof e?Xe.fromExpo(t.z**e,t.phi*e):e instanceof Xe?Xe.fromExpo(t.z**e.a*ns(-t.phi*e.b),is(t.z)*e.b+e.a*t.phi):y((e=>ss(t,e)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>ss(t,e)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>ss(t[r],e)),...e));return s}}},rs=(t,e)=>{if("number"==typeof t)return"number"==typeof e?Math.pow(t,1/e):y((e=>rs(t,e)),...e);if(t instanceof Xe)return"number"==typeof e?Xe.fromExpo(rs(t.z,e),t.phi/e):y((e=>rs(t,e)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>rs(t,e)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>rs(t[r],e)),...e));return s}}},ns=(...t)=>y(Math.exp,...t),is=(...t)=>y(Math.log,...t),as=(...t)=>y(w.cos,...t),os=(...t)=>y(w.sin,...t),cs=(...t)=>y(w.tan,...t),hs=(...t)=>y(w.cosh,...t),ls=(...t)=>y(w.sinh,...t),us=(...t)=>y(Math.floor,...t),fs=(t,e,s=!0)=>{if("number"==typeof t)return"number"==typeof e?s?Math.atan2(t,e):180*Math.atan2(t,e)/Math.PI:y((e=>fs(t,e,s)),...e);if(t instanceof Array){if("number"==typeof e)return y((t=>fs(t,e,s)),...t);if(e instanceof Array){const s=[];for(let r=0;r<t.length;r++)s.push(y((e=>ss(t[r],e)),...e));return s}}},ms=(...t)=>t.every((t=>"number"==typeof t))?Math.hypot(...t):t.every((t=>t instanceof Array))?y(Math.hypot,...t):void 0,{PI:ps,sqrt:ds,cos:gs,sin:bs,acos:ws,pow:ys}=Math,_s=t=>t,vs=(t,e=7.5625,s=2.75)=>t<1/s?e*t*t:t<2/s?e*(t-=1.5/s)*t+.75:t<2.5/s?e*(t-=2.25/s)*t+.9375:e*(t-=2.625/s)*t+.984375;class xs{constructor(t,{ease:e=_s,step:s=50,t0:r=0,start:n=!0,duration:i=3e3}={}){this.callback=t,this.state={isRunning:!1,animationId:null,startTime:null,ease:e,step:s,autoStart:n,duration:i},this.t=0,this.tx=0,this.ty=0,this.i=0,this.state.autoStart&&this.start()}#u=()=>{this.t+=this.state.step,this.i++,this.tx=$(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)};#f(t=!0){return this.state.isRunning||(t&&this.reset(!1),this.state.isRunning=!0,this.state.startTime=Date.now(),this.state.animationId=setInterval(this.#u,this.state.step)),this}start(){return this.#f(!0)}pause(){return this.state.isRunning&&(clearInterval(this.state.animationId),this.state.isRunning=!1),this}resume(){return this.#f(!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 Es{constructor(t,e,s=1/0,r){this.ms=e,this.fn=t,this.count=s,this.frame=1,this.id=null,this.running=!1,r&&this.start()}start(){return this.running||(this.running=!0,this.frame=1,this.id=setInterval((()=>{this.frame>this.count?this.stop():(this.fn.call(null,this),this.frame++)}),this.ms)),this}stop(){return this.running&&(this.running=!1,clearInterval(this.id),this.id=null),this}isRunning(){return this.running}}class ks extends Es{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 As{constructor(t=[],{repeat:e=1,loop:s=!1}={}){this.tasks=t,this.repeat=e,this.loop=s,this.stopped=!1,this.running=!1,this.onStart=null,this.onTask=null,this.onEnd=null}async run(){if(this.running)return;this.running=!0,this.stopped=!1,this.onStart&&this.onStart();let t=this.repeat;do{for(const t of this.tasks){if(this.stopped)return;if(Array.isArray(t))await Promise.all(t.map((({fn:t,delay:e=0})=>new Promise((async s=>{e>0&&await new Promise((t=>setTimeout(t,e))),this.onTask&&this.onTask(t),await t(),s()})))));else{const{fn:e,delay:s=0}=t;s>0&&await new Promise((t=>setTimeout(t,s))),this.onTask&&this.onTask(e),await e()}}}while(this.loop&&!this.stopped&&(t===1/0||t-- >1));!this.stopped&&this.onEnd&&this.onEnd(),this.running=!1}stop(){this.stopped=!0,this.running=!1}addTask(t){this.tasks.push(t)}clearTasks(){this.tasks=[]}}class Os{constructor(t,{step:e=1e3,t0:s=0,t1:r=1/0,autoplay:n=!0}={}){this.callback=t,this.cache={isRunning:!1,id:null,last_tick:null,step:e,t0:s,t1:r,autoplay:n,pauseTime:null,frame:0},n&&(s?this.startAfter(s):this.start(),r!==1/0&&this.stopAfter(r))}get frame(){return this.cache.frame}get elapsed(){return this.cache.elapsed}start(){return this.cache.isRunning||(this.cache.frame=0,this.cache.isRunning=!0,this.cache.last_tick=Date.now(),this.animate()),this}pause(){return this.cache.isRunning&&(clearTimeout(this.cache.id),this.cache.isRunning=!1,this.cache.pauseTime=Date.now()),this}resume(){if(!this.cache.isRunning){if(this.cache.isRunning=!0,this.cache.pauseTime){const t=Date.now()-this.cache.pauseTime;this.cache.last_tick+=t}this.animate()}return this}stop(){return this.pause(),this.cache.frame=0,this}startAfter(t=1e3){return setTimeout((()=>this.start()),t),this}stopAfter(t=1e3){return setTimeout((()=>this.stop()),t),this}animate=()=>{if(this.cache.isRunning){const t=Date.now(),e=t-this.cache.last_tick;e>=this.cache.step&&(this.cache.elapsed=t-(this.cache.t0||0),this.callback(this),this.cache.frame++,this.cache.last_tick=t-e%this.cache.step),this.cache.id=setTimeout(this.animate,0)}}}class js{constructor(){this.events={},this.maxListeners=10}on(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e),this.events[t].length>this.maxListeners&&console.warn(`Warning: Possible memory leak. Event '${t}' has more than ${this.maxListeners} listeners.`)}once(t,e){const s=r=>{this.off(t,s),e(r)};this.on(t,s)}off(t,e){const s=this.events[t];if(s){const t=s.indexOf(e);-1!==t&&s.splice(t,1)}}emit(t,e){const s=this.events[t];s&&s.forEach((t=>{t(e)}))}clear(t){t?delete this.events[t]:this.events={}}setMaxListener(t,e){this.maxListeners=e}removeAllListeners(t){t?this.events[t]=[]:this.events={}}}const Ts=()=>new js;class Ss{constructor(t,e=!0){this.#a(),this.cache={Emitter:null},e&&this.useEventEmitter(),this.set(t)}#a(){return this.__FavIcon__=document.querySelector("link[rel*='icon']")||document?.createElement("link"),this.__FavIcon__.type="image/x-icon",this.__FavIcon__.rel="shortcut icon",this}set(t){return t!==this.__FavIcon__.href&&(this.__FavIcon__.href=t,this.cache.Emitter&&this.cache.Emitter.emit("ziko:favicon-changed")),this}get current(){return document.__FavIcon__.href}onChange(t){return this.cache.Emitter&&this.cache.Emitter.on("ziko:favicon-changed",t),this}useEventEmitter(){return this.cache.Emitter=Ts(),this}}class Cs{constructor({viewport:t,charset:e,description:s,author:r,keywords:n}){this.document=globalThis?.document,this.meta={},this.init({viewport:t,charset:e,description:s,author:r,keywords:n})}init({viewport:t,charset:e,description:s,author:r,keywords:n}){t&&this.setViewport(t),e&&this.setCharset(e),s&&this.describe(s),r&&this.setAuthor(r),n&&this.setKeywords(n)}set(t,e){const s="charset"===(t=t.toLowerCase()),r=s?document.querySelector("meta[charset]"):document.querySelector(`meta[name=${t}]`);return this.meta=r??document?.createElement("meta"),s?this.meta.setAttribute("charset",e):(this.meta.setAttribute("name",t),this.meta.setAttribute("content",e)),r||this.document.head.append(this.meta),this}setCharset(t="utf-8"){return this.set("charset",t),this}describe(t){return this.set("description",t),this}setViewport(t="width=device-width, initial-scale=1.0"){return this.set("viewport",t),this}setKeywords(...t){return t=[...new Set(t)].join(", "),this.set("keywords",t),this}setAuthor(t){return this.set("author",t),this}}class Is{constructor(t=document.title,e=!0){this.cache={Emitter:null},e&&this.useEventEmitter(),this.set(t)}useEventEmitter(){return this.cache.Emitter=Ts(),this}set(t){return t!==document.title&&(document.title=t,this.cache.Emitter&&this.cache.Emitter.emit("ziko:title-changed")),this}get current(){return document.title}onChange(t){return this.cache.Emitter&&this.cache.Emitter.on("ziko:title-changed",t),this}}class Ms{constructor({title:t,lang:e,icon:s,meta:r,noscript:n}){this.html=globalThis?.document?.documentElement,this.head=globalThis?.document?.head,t&&((t,e)=>{new Is(t,e)})(t),e&&this.setLang(e),s&&((t,e)=>{new Ss(t,e)})(s),r&&(({viewport:t,charset:e,description:s,author:r,keywords:n})=>{new Cs({viewport:t,charset:e,description:s,author:r,keywords:n})})(r),n&&this.setNoScript()}setLang(t){this.html.setAttribute("lang",t)}setNoScript(t){}}class Ds{constructor({head:t=null,wrapper:e=null,target:s=null}){this.head=t,this.wrapper=e,this.target=s,this.init()}get isZikoApp(){return!0}init(){this.head&&this.setHead(this.head),this.wrapper&&this.setWrapper(this.wrapper),this.target&&this.setTarget(this.target),this.wrapper&&this.target&&this.wrapper.mount(this.target)}setTarget(t){return t instanceof HTMLElement?this.target=t:"string"==typeof t&&(this.target=globalThis?.document?.querySelector(t)),this}setWrapper(t){return t?.isUIElement?this.wrapper=t:"function"==typeof t&&(this.wrapper=t()),this}setHead(t){return this.head=t instanceof Ms?t:(({title:t,lang:e,icon:s,meta:r,noscript:n})=>new Ms({title:t,lang:e,icon:s,meta:r,noscript:n}))(t),this}}function Ps(t){return/:\w+/.test(t)}class $s extends Ds{constructor({head:t,wrapper:e,target:s,routes:r}){super({head:t,wrapper:e,target:s}),this.routes=new Map([["404",Dt("Error 404")],...Object.entries(r)]),this.clear(),globalThis.onpopstate=this.mount(location.pathname)}clear(){return[...this.routes].forEach((t=>{!Ps(t[0])&&t[1]?.isUIElement&&t[1].unmount()})),this}mount(t){const[e,s]=[...this.routes].find((e=>function(t,e){const s=t.split("/"),r=e.split("/");if(s.length!==r.length)return!1;for(let t=0;t<s.length;t++){const e=s[t],n=r[t];if(!e.startsWith(":")&&e!==n)return!1}return!0}(e[0],t)));let r;if(Ps(e)){const n=function(t,e){const s=t.split("/"),r=e.split("/"),n={};if(s.length!==r.length)return n;for(let t=0;t<s.length;t++){const e=s[t],i=r[t];if(e.startsWith(":"))n[e.slice(1)]=i;else if(e!==i)return{}}return n}(e,t);r=s.call(this,n)}else s?.isUIElement&&s.mount(this.wrapper),"function"==typeof s&&(r=s());return r?.isUIElement&&r.mount(this.wrapper),r instanceof Promise&&r.then((t=>t.mount(this.wrapper))),globalThis.history.pushState({},"",t),this}}const Rs=({head:t,wrapper:e,target:s,routes:r})=>new $s({head:t,wrapper:e,target:s,routes:r});function Fs(t,e="./src/pages",s=["js","ts"]){"/"===e.at(-1)&&(e=e.slice(0,-1));const r=t.replace(/\\/g,"/").replace(/\[(\w+)\]/g,"$1/:$1").split("/"),n=e.split("/"),i=r.indexOf(n.at(-1));if(-1!==i){const t=r.slice(i+1),e=r.at(-1),n="index.js"===e||"index.ts"===e,a=s.some((t=>e===`.${t}`||e.endsWith(`.${t}`)));if(n)return"/"+(t.length>1?t.slice(0,-1).join("/"):"");if(a)return"/"+t.join("/").replace(/\.(js|ts)$/,"")}return""}class zs{#m;constructor(){this.#m=function(t){try{let e=new Function("return "+t.data.fun)()();postMessage({result:e})}catch(t){postMessage({error:t.message})}finally{t.data.close&&self.close()}}.toString(),this.blob=new Blob(["this.onmessage = "+this.#m],{type:"text/javascript"}),this.worker=new Worker(window.URL.createObjectURL(this.blob))}call(t,e,s=!0){return this.worker.postMessage({fun:t.toString(),close:s}),this.worker.onmessage=function(t){t.data.error?console.error(t.data.error):e(t.data.result)},this}}class Ls{constructor(t,{namespace:e="Ziko",register:s,ValidateCssProps:r=!1}={}){this.currentPropsMap=t,this.namespace=e,this.ValidateCssProps=r,this.use(t)}use(t){return this.ValidateCssProps&&function(t){const e=new Set(Object.keys(document.documentElement.style));for(let s in t)if(!e.has(s))throw new Error(`Invalid CSS property: "${s}"`)}(t),this.currentPropsMap=t,this.#o(),this}#o(){const t=globalThis?.document?.documentElement?.style;for(let e in this.currentPropsMap){const s=this.namespace?`--${this.namespace}-${e}`:`--${e}`;t.setProperty(s,this.currentPropsMap[e]),Object.defineProperty(this,e,{value:`var(${s})`,writable:!0,configurable:!0,enumerable:!1})}}}let{sqrt:qs,cos:Zs,sin:Ns,exp:Bs,log:Us,cosh:Hs,sinh:Gs}=Math;for(const t of Object.getOwnPropertyNames(Math)){const e=Math[t];"function"==typeof e&&(Math[t]=new Proxy(e,{apply(e,s,r){const n=r[0];if("number"==typeof n||0===r.length)return e.apply(s,r);if(n?.isComplex?.()){const{a:t,b:i,z:a,phi:o}=n,c=(t,e)=>new n.constructor(t,e);switch(e.name){case"abs":return n.z;case"sqrt":return c(qs(a)*Zs(o/2),qs(a)*Ns(o/2));case"log":return c(Us(a),o);case"exp":return c(Bs(t)*Zs(i),Bs(t)*Ns(i));case"cos":return c(Zs(t)*Hs(i),-Ns(t)*Gs(i));case"sin":return c(Ns(t)*Hs(i),Zs(t)*Gs(i));case"tan":{const e=Zs(2*t)+Hs(2*i);return c(Ns(2*t)/e,Gs(2*i)/e)}case"cosh":return c(Hs(t)*Zs(i),Gs(t)*Ns(i));case"sinh":return c(Gs(t)*Zs(i),Hs(t)*Ns(i));case"tanh":{const e=Hs(2*t)+Zs(2*i);return c(Gs(2*t)/e,Ns(2*i)/e)}default:return e.apply(s,r)}}throw new TypeError(`Math.${t} expects only numbers`)}}))}globalThis?.document&&document?.addEventListener("DOMContentLoaded",__Ziko__.__Config__.init()),t.App=({head:t,wrapper:e,target:s})=>new Ds({head:t,wrapper:e,target:s}),t.Base=tt,t.Clock=ks,t.Combinaison=st,t.Complex=Xe,t.E=s,t.EPSILON=r,t.FileBasedRouting=async function(t){const e=Object.keys(t),s=function(t){if(0===t.length)return"";const e=t.map((t=>t.split("/"))),s=Math.min(...e.map((t=>t.length)));let r=[];for(let t=0;t<s;t++){const s=e[0][t];if(!e.every((e=>e[t]===s||e[t].startsWith("["))))break;r.push(s)}return r.join("/")+(r.length?"/":"")}(e),r={};for(let n=0;n<e.length;n++){const i=await t[e[n]](),a=await i.default;Object.assign(r,{[Fs(e[n],s)]:a})}return Rs({target:document.body,routes:{"/":()=>{},...r},wrapper:Ie.section()})},t.Flex=(...t)=>{let e="div";return"string"==typeof t[0]&&(e=t[0],t.pop()),new Me(e).append(...t)},t.HTMLWrapper=t=>new Le(t),t.Logic=et,t.Matrix=Je,t.PI=e,t.Permutation=class{static withDiscount(t,e=t.length){if(1===e)return t.map((t=>[t]));const s=[];let r;return r=this.withDiscount(t,e-1),t.forEach((t=>{r.forEach((e=>{s.push([t].concat(e))}))})),s}static withoutDiscount(t){if(1===t.length)return t.map((t=>[t]));const e=[],s=this.withoutDiscount(t.slice(1)),r=t[0];for(let t=0;t<s.length;t++){const n=s[t];for(let t=0;t<=n.length;t++){const s=n.slice(0,t),i=n.slice(t);e.push(s.concat([r],i))}}return e}},t.Random=rt,t.SPA=Rs,t.SVGWrapper=t=>new qe(t),t.Scheduler=(t,{repeat:e=null}={})=>new As(t,{repeat:e}),t.Suspense=(t,e)=>new ze(t,e),t.Switch=({key:t,cases:e})=>new Ze(t,e),t.Tick=Es,t.TimeAnimation=xs,t.TimeLoop=Os,t.TimeScheduler=As,t.UIElement=je,t.UIHTMLWrapper=Le,t.UINode=pt,t.UISVGWrapper=qe,t.UISwitch=Ze,t.UIView=Te,t.UseRoot=Ls,t.Utils=Q,t.View=(...t)=>new Te(...t),t.ZikoApp=Ds,t.ZikoEventClick=Nt,t.ZikoEventClipboard=Ht,t.ZikoEventCustom=Wt,t.ZikoEventDrag=Jt,t.ZikoEventFocus=Qt,t.ZikoEventHash=se,t.ZikoEventKey=ne,t.ZikoEventMouse=oe,t.ZikoEventPointer=le,t.ZikoEventTouch=me,t.ZikoEventWheel=de,t.ZikoSPA=$s,t.ZikoUIFlex=Me,t.ZikoUISuspense=ze,t.ZikoUIText=Mt,t.__ZikoEvent__=Zt,t.abs=ts,t.accum=V,t.acos=(...t)=>y(w.acos,...t),t.acosh=(...t)=>y(w.acosh,...t),t.acot=(...t)=>y(w.acot,...t),t.add=A,t.animation=(t,{ease:e,t0:s,t1:r,start:n,duration:i}={})=>new xs(t,{ease:e,t0:s,t1:r,start:n,duration:i}),t.arange=F,t.arc=t=>1-bs(ws(t)),t.arr2str=Ve,t.asin=(...t)=>y(w.asin,...t),t.asinh=(...t)=>y(w.asinh,...t),t.atan=(...t)=>y(w.atan,...t),t.atan2=fs,t.atanh=(...t)=>y(w.atanh,...t),t.back=(t,e=1)=>t**2*((e+1)*t-e),t.bindCustomEvent=(t,e,s)=>new Wt(t,e,s),t.bindHashEvent=(t,e)=>new se(t,e),t.bindTouchEvent=(t,e)=>new me(t,e),t.bind_click_event=Ut,t.bind_clipboard_event=Vt,t.bind_drag_event=Xt,t.bind_focus_event=ee,t.bind_key_event=ae,t.bind_mouse_event=he,t.bind_pointer_event=fe,t.bind_wheel_event=be,t.cartesianProduct=J,t.ceil=(...t)=>y(Math.ceil,...t),t.clamp=R,t.clock=t=>new ks(t),t.combinaison=(t,e,s=!1)=>st[s?"withDiscount":"withoutDiscount"](t,e),t.complex=Qe,t.cos=as,t.cosh=hs,t.cot=(...t)=>y(w.cot,...t),t.coth=(...t)=>y(w.coth,...t),t.csc=(...t)=>y(w.csc,...t),t.csv2arr=it,t.csv2json=(t,e=",")=>JSON.stringify(at(t,e)),t.csv2matrix=(t,e=",")=>new Je(it(t,e)),t.csv2object=at,t.csv2sql=(t,e)=>{const s=t.trim().trimEnd().split("\n").filter((t=>t));let r=`INSERT INTO ${e} (${s[0].split(",").join(", ")}) Values `,n=[];for(let t=1;t<s.length;t++){const e=s[t].split(",");n.push(`(${e})`)}return r+n.join(",\n")},t.debounce=(t,e=1e3)=>(...s)=>setTimeout((()=>t(...s)),e),t.defineParamsGetter=function(t){Object.defineProperties(t,{QueryParams:{get:function(){return function(t){const e={};return t.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi,(t=>{const[s,r]=t.split("=");e[s]=r})),e}(globalThis.location.search.substring(1))},configurable:!1,enumerable:!0},HashParams:{get:function(){return globalThis.location.hash.substring(1).split("#")},configurable:!1,enumerable:!0}})},t.define_wc=function(t,e,s={},{mode:r="open"}={}){globalThis.customElements?.get(t)?console.warn(`Custom element "${t}" is already defined`):-1!==t.search("-")?globalThis.customElements?.define(t,class extends HTMLElement{static get observedAttributes(){return["style",...Object.keys(s)]}constructor(){super(),this.attachShadow({mode:r}),this.props={},this.mask={...s}}connectedCallback(){this.render()}render(){this.shadowRoot.innerHTML="";const t=e(this.props);t instanceof Array?t.forEach((t=>t.mount(this.shadowRoot))):t.mount(this.shadowRoot)}attributeChangedCallback(t,e,s){Object.assign(this.props,{[t]:this.mask[t].type(s)}),this.render()}}):console.warn(`"${t}" is not a valid custom element name`)},t.deg2rad=Z,t.discret=(t,e=5)=>Math.ceil(t*e)/e,t.div=T,t.e=ns,t.elastic=t=>-2*ys(2,10*(t-1))*gs(20*ps*t/3*t),t.fact=(...t)=>y((t=>{let e,s=1;if(0==t)s=1;else if(t>0)for(e=1;e<=t;e++)s*=e;else s=NaN;return s}),...t),t.floor=us,t.geomspace=q,t.getEvent=Lt,t.hypot=ms,t.inRange=W,t.in_back=(t,e=1.70158,s=e+1)=>s*ys(t,3)-e*t**2,t.in_bounce=(t,e=7.5625,s=2.75)=>1-vs(1-t,e,s),t.in_circ=t=>1-ds(1-t**2),t.in_cubic=t=>t**3,t.in_elastic=(t,e=2*ps/3)=>0===t?0:1===t?1:-ys(2,10*t-10)*bs((10*t-10.75)*e),t.in_expo=t=>0===t?0:2**(10*t-10),t.in_out_back=(t,e=1.70158,s=1.525*e)=>t<.5?ys(2*t,2)*(2*(s+1)*t-s)/2:(ys(2*t-2,2)*((s+1)*(2*t-2)+s)+2)/2,t.in_out_bounce=(t,e=7.5625,s=2.75)=>t<.5?vs(1-2*t,e,s)/2:vs(2*t-1,e,s)/2,t.in_out_circ=t=>t<.5?(1-ds(1-(2*t)**2))/2:(ds(1-(-2*t+2)**2)+1)/2,t.in_out_cubic=t=>t<.5?4*t**3:1-(-2*t+2)**3/2,t.in_out_elastic=(t,e=2*ps/4.5)=>0===t?0:1===t?1:t<.5?-ys(2,20*t-10)*bs((20*t-11.125)*e)/2:ys(2,-20*t+10)*bs((20*t-11.125)*e)/2+1,t.in_out_expo=t=>0===t?0:1===t?1:t<.5?2**(20*t-10)/2:(2-2**(-20*t+10))/2,t.in_out_quad=t=>t<.5?2*t**2:1-(-2*t+2)**2/2,t.in_out_quart=t=>t<.5?8*t**4:1-(-2*t+2)**4/2,t.in_out_quint=t=>t<.5?16*t**5:1-(-2*t+2)**5/2,t.in_out_sin=t=>-(gs(ps*t)-1)/2,t.in_quad=t=>t**2,t.in_quart=t=>t**4,t.in_quint=t=>t**5,t.in_sin=t=>1-gs(t*ps/2),t.isApproximatlyEqual=K,t.isStateGetter=St,t.json2arr=t=>ot(t instanceof Object?t:JSON.parse(t)),t.json2css=We,t.json2csv=ht,t.json2csvFile=(t,e)=>{const s=ht(t,e),r=new Blob([s],{type:"text/csv;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2xml=mt,t.json2xmlFile=(t,e)=>{const s=mt(t,e),r=new Blob([s],{type:"text/xml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.json2yml=ft,t.json2ymlFile=(t,e)=>{const s=ft(t,e),r=new Blob([s],{type:"text/yml;charset=utf-8;"});return{str:s,blob:r,url:URL.createObjectURL(r)}},t.lerp=P,t.linear=_s,t.linspace=z,t.ln=is,t.logspace=L,t.loop=(t,e={})=>new Os(t,e),t.map=$,t.mapfun=y,t.matrix=Ye,t.matrix2=(...t)=>new Je(2,2,t),t.matrix3=(...t)=>new Je(3,3,t),t.matrix4=(...t)=>new Je(4,4,t),t.max=G,t.min=H,t.modulo=S,t.mul=j,t.norm=D,t.nums=M,t.obj2str=He,t.ones=I,t.out_back=(t,e=1.70158,s=e+1)=>1+s*ys(t-1,3)+e*ys(t-1,2),t.out_bounce=vs,t.out_circ=t=>ds(1-(t-1)**2),t.out_cubic=t=>1-(1-t)**3,t.out_elastic=(t,e=2*ps/3)=>0===t?0:1===t?1:ys(2,-10*t)*bs((10*t-.75)*e)+1,t.out_expo=t=>1===t?1:1-2**(-10*t),t.out_quad=t=>1-(1-t)**2,t.out_quart=t=>1-(1-t)**4,t.out_quint=t=>1-(1-t)**5,t.out_sin=t=>bs(t*ps/2),t.pgcd=Y,t.pow=ss,t.powerSet=t=>{const e=[],s=2**t.length;for(let r=0;r<s;r+=1){const s=[];for(let e=0;e<t.length;e+=1)r&1<<e&&s.push(t[e]);e.push(s)}return e},t.ppcm=X,t.preload=nt,t.prod=U,t.rad2deg=N,t.round=(...t)=>y(Math.round,...t),t.sec=(...t)=>y(w.sec,...t),t.sig=(...t)=>y((t=>1/(1+ns(-t))),...t),t.sign=(...t)=>y(Math.sign,...t),t.sin=os,t.sinc=(...t)=>y(w.sinc,...t),t.sinh=ls,t.sleep=t=>new Promise((e=>setTimeout(e,t))),t.sqrt=es,t.sqrtn=rs,t.step=(t,e=5)=>Math.floor(t*e)/e,t.step_fps=t=>1e3/t,t.sub=O,t.subSet=null,t.sum=B,t.svg2ascii=Be,t.svg2img=(t,e=!0)=>Ie.img(Ue(t)).mount(e),t.svg2imgUrl=Ue,t.svg2str=Ne,t.tags=Ie,t.tan=cs,t.tanh=(...t)=>y(w.tanh,...t),t.text=Dt,t.throttle=(t,e)=>{let s=0;return(...r)=>{const n=(new Date).getTime();n-s<e||(s=n,t(...r))}},t.tick=(t,e,s=1/0,r=!0)=>new Es(t,e,s,r),t.timeTaken=t=>{console.time("timeTaken");const e=t();return console.timeEnd("timeTaken"),e},t.time_memory_Taken=t=>{const e=Date.now(),s=performance.memory.usedJSHeapSize,r=t();return{elapsedTime:Date.now()-e,usedMemory:performance.memory.usedJSHeapSize-s,result:r}},t.timeout=function(t,e){let s;const r=new Promise((r=>{s=setTimeout((()=>{e&&e(),r()}),t)}));return{id:s,clear:()=>clearTimeout(s),promise:r}},t.useChannel=vt,t.useDerived=function(t,e){let s=t(...e.map((t=>t().value)));const r=new Set;return e.forEach((n=>{n()._subscribe((()=>{{const n=t(...e.map((t=>t().value)));n!==s&&(s=n,r.forEach((t=>t(s))))}}))})),()=>({value:s,isStateGetter:()=>!0,_subscribe:t=>r.add(t)})},t.useEventEmitter=Ts,t.useLocaleStorage=(t,e)=>new xt(localStorage,t,e),t.useReactive=t=>y((t=>{const e=Tt(t);return{get:e[0],set:e[1]}}),t),t.useRoot=(t,{namespace:e,register:s,ValidateCssProps:r}={})=>new Ls(t,{namespace:e,register:s,ValidateCssProps:r}),t.useSessionStorage=Et,t.useState=Tt,t.useThread=(t,e,s)=>{const r=new zs;return t&&r.call(t,e,s),r},t.wait=t=>new Promise((e=>setTimeout(e,t))),t.waitForUIElm=t=>new Promise((e=>{if(t.element)return e(t.element);const s=new MutationObserver((()=>{t.element&&(e(t.element),s.disconnect())}));s.observe(document?.body,{childList:!0,subtree:!0})})),t.waitForUIElmSync=(t,e=2e3)=>{const s=Date.now();for(;Date.now()-s<e;)if(t.element)return t.element},t.zeros=C}));
|
package/dist/ziko.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date : Wed Nov 26 2025
|
|
5
|
+
Date : Wed Nov 26 2025 12:01:55 GMT+0100 (UTC+01:00)
|
|
6
6
|
Git-Repo : https://github.com/zakarialaoui10/ziko.js
|
|
7
7
|
Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
|
|
8
8
|
Released under MIT License
|
|
@@ -1178,60 +1178,101 @@ const __CACHE__ = {
|
|
|
1178
1178
|
};
|
|
1179
1179
|
|
|
1180
1180
|
class UseChannel {
|
|
1181
|
+
// private fields
|
|
1182
|
+
#channel;
|
|
1183
|
+
#eventData;
|
|
1184
|
+
#handlers;
|
|
1185
|
+
#uuid;
|
|
1186
|
+
#subscribers;
|
|
1187
|
+
#currentRooms; // now a Set for multiple rooms
|
|
1188
|
+
|
|
1181
1189
|
constructor(name = "") {
|
|
1182
|
-
this
|
|
1183
|
-
this
|
|
1184
|
-
this
|
|
1185
|
-
this
|
|
1186
|
-
this
|
|
1190
|
+
this.#channel = new BroadcastChannel(name);
|
|
1191
|
+
this.#eventData = new Map();
|
|
1192
|
+
this.#handlers = new Map(); // Map<event, Array<{fn, rooms}>>
|
|
1193
|
+
this.#uuid = "ziko-channel:" + Random.string(10);
|
|
1194
|
+
this.#subscribers = new Set([this.#uuid]);
|
|
1195
|
+
this.#currentRooms = new Set(); // multiple rooms
|
|
1187
1196
|
|
|
1188
|
-
this
|
|
1189
|
-
const { last_sent_event, userId, eventData } = e.data;
|
|
1197
|
+
this.#channel.addEventListener("message", (e) => {
|
|
1198
|
+
const { last_sent_event, userId, eventData, rooms } = e.data;
|
|
1190
1199
|
|
|
1191
|
-
// ignore own
|
|
1192
|
-
if (userId === this.uuid) return;
|
|
1200
|
+
if (userId === this.#uuid) return; // ignore own messages
|
|
1193
1201
|
|
|
1194
|
-
|
|
1202
|
+
// broadcast if no rooms, else check intersection
|
|
1203
|
+
if (rooms && rooms.length && !rooms.some(r => this.#currentRooms.has(r))) return;
|
|
1195
1204
|
|
|
1196
|
-
|
|
1197
|
-
this
|
|
1205
|
+
this.#subscribers.add(userId);
|
|
1206
|
+
this.#eventData = new Map(eventData);
|
|
1198
1207
|
|
|
1199
|
-
const
|
|
1200
|
-
|
|
1208
|
+
const handlersList = this.#handlers.get(last_sent_event);
|
|
1209
|
+
if (!handlersList) return;
|
|
1201
1210
|
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1211
|
+
handlersList.forEach(({ fn, rooms: handlerRooms }) => {
|
|
1212
|
+
// trigger if listener has no room filter, or intersects subscriber rooms
|
|
1213
|
+
if (!handlerRooms || handlerRooms.length === 0 ||
|
|
1214
|
+
!rooms || rooms.some(r => handlerRooms.includes(r))) {
|
|
1215
|
+
fn(this.#eventData.get(last_sent_event));
|
|
1216
|
+
}
|
|
1217
|
+
});
|
|
1205
1218
|
});
|
|
1206
1219
|
}
|
|
1207
1220
|
|
|
1208
|
-
emit(event, data) {
|
|
1209
|
-
this
|
|
1221
|
+
emit(event, data, rooms) {
|
|
1222
|
+
this.#eventData.set(event, data);
|
|
1223
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1210
1224
|
|
|
1211
|
-
this
|
|
1212
|
-
eventData: this.
|
|
1225
|
+
this.#channel.postMessage({
|
|
1226
|
+
eventData: Array.from(this.#eventData.entries()),
|
|
1213
1227
|
last_sent_event: event,
|
|
1214
|
-
userId: this
|
|
1228
|
+
userId: this.#uuid,
|
|
1229
|
+
rooms: rooms && rooms.length ? rooms : undefined
|
|
1215
1230
|
});
|
|
1231
|
+
|
|
1216
1232
|
return this;
|
|
1217
1233
|
}
|
|
1218
1234
|
|
|
1219
|
-
on(event, handler = console.log) {
|
|
1220
|
-
if (!this
|
|
1221
|
-
|
|
1222
|
-
}
|
|
1223
|
-
this.handlers.get(event).push(handler);
|
|
1235
|
+
on(event, handler = console.log, rooms) {
|
|
1236
|
+
if (!this.#handlers.has(event)) this.#handlers.set(event, []);
|
|
1237
|
+
if(typeof rooms === 'string') rooms = [rooms];
|
|
1238
|
+
this.#handlers.get(event).push({ fn: handler, rooms });
|
|
1224
1239
|
return this;
|
|
1225
1240
|
}
|
|
1226
1241
|
|
|
1227
|
-
|
|
1228
|
-
this.
|
|
1242
|
+
off(event, handler) {
|
|
1243
|
+
if (!this.#handlers.has(event)) return this;
|
|
1244
|
+
this.#handlers.set(
|
|
1245
|
+
event,
|
|
1246
|
+
this.#handlers.get(event).filter(h => h.fn !== handler)
|
|
1247
|
+
);
|
|
1229
1248
|
return this;
|
|
1230
1249
|
}
|
|
1231
1250
|
|
|
1232
|
-
|
|
1251
|
+
once(event, handler, rooms) {
|
|
1252
|
+
const wrapper = (data) => {
|
|
1253
|
+
handler(data);
|
|
1254
|
+
this.off(event, wrapper);
|
|
1255
|
+
};
|
|
1256
|
+
this.on(event, wrapper, rooms);
|
|
1233
1257
|
return this;
|
|
1234
1258
|
}
|
|
1259
|
+
|
|
1260
|
+
join(...rooms) {
|
|
1261
|
+
rooms.forEach(r => this.#currentRooms.add(r));
|
|
1262
|
+
return this;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
leave(...rooms) {
|
|
1266
|
+
if (!rooms.length) this.#currentRooms.clear();
|
|
1267
|
+
else rooms.forEach(r => this.#currentRooms.delete(r));
|
|
1268
|
+
return this;
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
close() {
|
|
1272
|
+
this.#channel.close();
|
|
1273
|
+
return this;
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1235
1276
|
}
|
|
1236
1277
|
|
|
1237
1278
|
const useChannel = (name) => new UseChannel(name);
|
|
@@ -5386,4 +5427,4 @@ if(globalThis?.document){
|
|
|
5386
5427
|
document?.addEventListener("DOMContentLoaded", __Ziko__.__Config__.init());
|
|
5387
5428
|
}
|
|
5388
5429
|
|
|
5389
|
-
export { App, Base, Clock, Combinaison, Complex, E, EPSILON, FileBasedRouting, Flex, HTMLWrapper, Logic$1 as Logic, Matrix, PI$2 as PI, Permutation, Random, SPA, SVGWrapper, Scheduler, Suspense, Switch, Tick, TimeAnimation, TimeLoop, TimeScheduler, UIElement$1 as UIElement, UIHTMLWrapper, UINode, UISVGWrapper, UISwitch, UIView, UseRoot, Utils, View, ZikoApp, ZikoEventClick, ZikoEventClipboard, ZikoEventCustom, ZikoEventDrag, ZikoEventFocus, ZikoEventHash, ZikoEventKey, ZikoEventMouse, ZikoEventPointer, ZikoEventTouch, ZikoEventWheel, ZikoSPA, ZikoUIFlex, ZikoUISuspense, ZikoUIText, __ZikoEvent__, abs, accum, acos$1 as acos, acosh, acot, add, animation, arange, arc, arr2str, asin, asinh, atan, atan2, atanh, back, bindCustomEvent, bindHashEvent, bindTouchEvent, bind_click_event, bind_clipboard_event, bind_drag_event, bind_focus_event, bind_key_event, bind_mouse_event, bind_pointer_event, bind_wheel_event, cartesianProduct, ceil, clamp, clock, combinaison, complex, cos$2 as cos, cosh$1 as cosh, cot, coth, csc, csv2arr, csv2json, csv2matrix, csv2object, csv2sql, debounce, defineParamsGetter, define_wc, deg2rad, discret, div, e, elastic, fact, floor, geomspace, getEvent, hypot, inRange, in_back, in_bounce, in_circ, in_cubic, in_elastic, in_expo, in_out_back, in_out_bounce, in_out_circ, in_out_cubic, in_out_elastic, in_out_expo, in_out_quad, in_out_quart, in_out_quint, in_out_sin, in_quad, in_quart, in_quint, in_sin, isApproximatlyEqual, isStateGetter, json2arr, json2css, json2csv, json2csvFile, json2xml, json2xmlFile, json2yml, json2ymlFile, lerp, linear, linspace, ln, logspace, loop, map$1 as map, mapfun$1 as mapfun, matrix, matrix2, matrix3, matrix4, max, min, modulo, mul, norm, nums, obj2str, ones, out_back, out_bounce, out_circ, out_cubic, out_elastic, out_expo, out_quad, out_quart, out_quint, out_sin, pgcd, pow$1 as pow, powerSet, ppcm, preload, prod, rad2deg, round, sec, sig, sign, sin$2 as sin, sinc, sinh$1 as sinh, sleep, sqrt$2 as sqrt, sqrtn, step, step_fps, sub, subSet, sum, svg2ascii, svg2img, svg2imgUrl, svg2str, tags, tan, tanh, text, throttle, tick, timeTaken, time_memory_Taken, timeout, useDerived, useEventEmitter, useLocaleStorage, useReactive, useRoot, useSessionStorage, useState, useThread, wait, waitForUIElm, waitForUIElmSync, zeros };
|
|
5430
|
+
export { App, Base, Clock, Combinaison, Complex, E, EPSILON, FileBasedRouting, Flex, HTMLWrapper, Logic$1 as Logic, Matrix, PI$2 as PI, Permutation, Random, SPA, SVGWrapper, Scheduler, Suspense, Switch, Tick, TimeAnimation, TimeLoop, TimeScheduler, UIElement$1 as UIElement, UIHTMLWrapper, UINode, UISVGWrapper, UISwitch, UIView, UseRoot, Utils, View, ZikoApp, ZikoEventClick, ZikoEventClipboard, ZikoEventCustom, ZikoEventDrag, ZikoEventFocus, ZikoEventHash, ZikoEventKey, ZikoEventMouse, ZikoEventPointer, ZikoEventTouch, ZikoEventWheel, ZikoSPA, ZikoUIFlex, ZikoUISuspense, ZikoUIText, __ZikoEvent__, abs, accum, acos$1 as acos, acosh, acot, add, animation, arange, arc, arr2str, asin, asinh, atan, atan2, atanh, back, bindCustomEvent, bindHashEvent, bindTouchEvent, bind_click_event, bind_clipboard_event, bind_drag_event, bind_focus_event, bind_key_event, bind_mouse_event, bind_pointer_event, bind_wheel_event, cartesianProduct, ceil, clamp, clock, combinaison, complex, cos$2 as cos, cosh$1 as cosh, cot, coth, csc, csv2arr, csv2json, csv2matrix, csv2object, csv2sql, debounce, defineParamsGetter, define_wc, deg2rad, discret, div, e, elastic, fact, floor, geomspace, getEvent, hypot, inRange, in_back, in_bounce, in_circ, in_cubic, in_elastic, in_expo, in_out_back, in_out_bounce, in_out_circ, in_out_cubic, in_out_elastic, in_out_expo, in_out_quad, in_out_quart, in_out_quint, in_out_sin, in_quad, in_quart, in_quint, in_sin, isApproximatlyEqual, isStateGetter, json2arr, json2css, json2csv, json2csvFile, json2xml, json2xmlFile, json2yml, json2ymlFile, lerp, linear, linspace, ln, logspace, loop, map$1 as map, mapfun$1 as mapfun, matrix, matrix2, matrix3, matrix4, max, min, modulo, mul, norm, nums, obj2str, ones, out_back, out_bounce, out_circ, out_cubic, out_elastic, out_expo, out_quad, out_quart, out_quint, out_sin, pgcd, pow$1 as pow, powerSet, ppcm, preload, prod, rad2deg, round, sec, sig, sign, sin$2 as sin, sinc, sinh$1 as sinh, sleep, sqrt$2 as sqrt, sqrtn, step, step_fps, sub, subSet, sum, svg2ascii, svg2img, svg2imgUrl, svg2str, tags, tan, tanh, text, throttle, tick, timeTaken, time_memory_Taken, timeout, useChannel, useDerived, useEventEmitter, useLocaleStorage, useReactive, useRoot, useSessionStorage, useState, useThread, wait, waitForUIElm, waitForUIElmSync, zeros };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziko",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.6",
|
|
4
4
|
"description": "A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"front-end",
|
package/src/hooks/index.js
CHANGED
package/src/hooks/use-derived.js
CHANGED
|
@@ -4,7 +4,7 @@ export function useDerived(deriveFn, sources) {
|
|
|
4
4
|
let paused = false;
|
|
5
5
|
|
|
6
6
|
sources.forEach(source => {
|
|
7
|
-
const srcValue = source();
|
|
7
|
+
const srcValue = source();
|
|
8
8
|
srcValue._subscribe(() => {
|
|
9
9
|
if (!paused) {
|
|
10
10
|
const newVal = deriveFn(...sources.map(s => s().value));
|
package/src/use/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './use-channel.js';
|
|
1
|
+
// export * from './use-channel.js';
|
|
2
2
|
export * from './use-event-emmiter.js';
|
|
3
3
|
export * from './use-thread.js';
|
|
4
4
|
|
|
@@ -8,4 +8,4 @@ export * from './use-favicon.js'
|
|
|
8
8
|
// export * from './use-link.js'
|
|
9
9
|
// export * from 'use-meta.js'
|
|
10
10
|
|
|
11
|
-
export * from './use-storage.js'
|
|
11
|
+
// export * from './use-storage.js'
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// To do : remove old items
|
|
2
|
+
import { useChannel } from "./use-channel.js";
|
|
3
|
+
class UseStorage{
|
|
4
|
+
constructor(storage, globalKey, initialValue){
|
|
5
|
+
this.cache={
|
|
6
|
+
storage,
|
|
7
|
+
globalKey,
|
|
8
|
+
channel:useChannel(`Ziko:useStorage-${globalKey}`),
|
|
9
|
+
oldItemKeys:new Set()
|
|
10
|
+
}
|
|
11
|
+
this.#init(initialValue);
|
|
12
|
+
this.#maintain();
|
|
13
|
+
}
|
|
14
|
+
get items(){
|
|
15
|
+
return JSON.parse(this.cache.storage[this.cache.globalKey]??null);
|
|
16
|
+
}
|
|
17
|
+
#maintain() {
|
|
18
|
+
for(let i in this.items)Object.assign(this, { [[i]]: this.items[i] });
|
|
19
|
+
}
|
|
20
|
+
#init(initialValue){
|
|
21
|
+
this.cache.channel=useChannel(`Ziko:useStorage-${this.cache.globalKey}`);
|
|
22
|
+
this.cache.channel.on("Ziko-Storage-Updated",()=>this.#maintain());
|
|
23
|
+
if(!initialValue)return;
|
|
24
|
+
if(this.cache.storage[this.cache.globalKey]){
|
|
25
|
+
Object.keys(this.items).forEach(key=>this.cache.oldItemKeys.add(key));
|
|
26
|
+
// console.group("Ziko:useStorage")
|
|
27
|
+
// console.warn(`Storage key '${this.cache.globalKey}' already exists. we will not overwrite it.`);
|
|
28
|
+
// console.info(`%cWe'll keep the existing data.`,"background-color:#2222dd; color:gold;");
|
|
29
|
+
// console.group("")
|
|
30
|
+
}
|
|
31
|
+
else this.set(initialValue);
|
|
32
|
+
}
|
|
33
|
+
set(data){
|
|
34
|
+
this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(data));
|
|
35
|
+
this.cache.channel.emit("Ziko-Storage-Updated",{});
|
|
36
|
+
Object.keys(data).forEach(key=>this.cache.oldItemKeys.add(key));
|
|
37
|
+
this.#maintain();
|
|
38
|
+
return this
|
|
39
|
+
}
|
|
40
|
+
add(data){
|
|
41
|
+
const db={
|
|
42
|
+
...this.items,
|
|
43
|
+
...data
|
|
44
|
+
}
|
|
45
|
+
this.cache.storage.setItem(this.cache.globalKey,JSON.stringify(db));
|
|
46
|
+
this.#maintain();
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
remove(...keys){
|
|
50
|
+
const db={...this.items};
|
|
51
|
+
for(let i=0;i<keys.length;i++){
|
|
52
|
+
delete db[keys[i]];
|
|
53
|
+
delete this[keys[i]];
|
|
54
|
+
}
|
|
55
|
+
this.set(db);
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
get(key){
|
|
59
|
+
return this.items[key];
|
|
60
|
+
}
|
|
61
|
+
clear(){
|
|
62
|
+
this.cache.storage.removeItem(this.cache.globalKey);
|
|
63
|
+
this.#maintain();
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
const useLocaleStorage=(key,initialValue)=>new UseStorage(localStorage,key,initialValue);
|
|
69
|
+
const useSessionStorage=(key,initialValue)=>new UseStorage(sessionStorage,key,initialValue);
|
|
70
|
+
export{
|
|
71
|
+
useLocaleStorage,
|
|
72
|
+
useSessionStorage
|
|
73
|
+
}
|
package/types/hooks/index.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function useDerived<T>(
|
|
2
|
+
deriveFn: (...values: any[]) => T,
|
|
3
|
+
sources: Array<
|
|
4
|
+
() => {
|
|
5
|
+
value: any;
|
|
6
|
+
isStateGetter: () => true;
|
|
7
|
+
_subscribe: (fn: (value: any) => void) => void;
|
|
8
|
+
}
|
|
9
|
+
>
|
|
10
|
+
): () => {
|
|
11
|
+
value: T;
|
|
12
|
+
isStateGetter: () => true;
|
|
13
|
+
_subscribe: (fn: (value: T) => void) => void;
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { mapfun, MapfunResult } from "../math/utils/mapfun.d.ts";
|
|
2
|
+
import { useState } from "./use-state.d.ts";
|
|
3
|
+
|
|
4
|
+
export function useReactive<
|
|
5
|
+
T
|
|
6
|
+
>(
|
|
7
|
+
nested_value: T
|
|
8
|
+
): MapfunResult<
|
|
9
|
+
(n: any) => {
|
|
10
|
+
get: ReturnType<typeof useState<any>>[0];
|
|
11
|
+
set: ReturnType<typeof useState<any>>[1];
|
|
12
|
+
},
|
|
13
|
+
T
|
|
14
|
+
>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function useState<T>(
|
|
2
|
+
initialValue: T
|
|
3
|
+
): [
|
|
4
|
+
/** getter function */
|
|
5
|
+
() => {
|
|
6
|
+
value: T;
|
|
7
|
+
isStateGetter: () => true;
|
|
8
|
+
_subscribe: (fn: (value: T) => void) => void;
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
/** setter function */
|
|
12
|
+
(newValue: T | ((prev: T) => T)) => void,
|
|
13
|
+
|
|
14
|
+
/** controller */
|
|
15
|
+
{
|
|
16
|
+
pause: () => void;
|
|
17
|
+
resume: () => void;
|
|
18
|
+
clear: () => void;
|
|
19
|
+
force: (newValue: T | ((prev: T) => T)) => void;
|
|
20
|
+
getSubscribers: () => Set<(value: T) => void>;
|
|
21
|
+
}
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
/** check if argument is a state getter */
|
|
25
|
+
export function isStateGetter(arg: any): boolean;
|
|
File without changes
|
|
File without changes
|