ziko 1.4.0 → 1.6.0
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 +396 -117
- package/dist/ziko.js +396 -117
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +369 -118
- package/package.json +1 -1
- package/src/dom/components/for/index.js +17 -0
- package/src/dom/components/index.js +2 -1
- package/src/dom/components/swap/index.js +3 -3
- package/src/dom/constructors/UIElement.js +23 -4
- package/src/dom/constructors/UIElementCore.js +2 -1
- package/src/dom/constructors/mixins/dom.js +31 -22
- package/src/math/complex/index.d.ts +207 -30
- package/src/math/functions/arithmetic/index.d.ts +95 -0
- package/src/math/functions/conversions/index.d.ts +101 -0
- package/src/math/functions/index.d.ts +97 -90
- package/src/math/functions/logic/index.d.ts +50 -8
- package/src/math/functions/logic/index.js +1 -1
- package/src/math/functions/mapfun/index.d.ts +46 -80
- package/src/math/functions/mapfun/index.d.ts.txt +162 -0
- package/src/math/functions/signal/index.d.ts +146 -0
- package/src/math/functions/stats/index.js +33 -33
- package/src/math/functions/ufunc/index.d.ts +96 -0
- package/src/math/functions/utils/index.d.ts +118 -1
- package/src/math/index.d.ts +4 -0
- package/src/math/index.js +1 -16
- package/src/math/random/index.d.ts +162 -0
- package/src/math/random/index.js +4 -4
- package/src/math/stats/accum/index.d.ts +43 -0
- package/src/math/stats/average/index.d.ts +123 -0
- package/src/math/stats/index.d.ts +5 -0
- package/src/math/stats/percentile/index.d.ts +66 -0
- package/src/math/stats/rolling/index.d.ts +47 -0
- package/src/math/stats/variability/index.d.ts +93 -0
- package/src/math/index.d.ts.txt +0 -5
package/dist/ziko.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date :
|
|
5
|
+
Date : Fri Jul 31 2026 17:26:32 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
|
|
@@ -56,122 +56,212 @@ const base2base = (value, fromBase, toBase) => {
|
|
|
56
56
|
return dec.toString(toBase);
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
if(y?.isComplex?.()) x = new y.constructor(x, 0);
|
|
71
|
-
if(y?.isMatrix?.()) x = y.constructor.nums(y.rows, y.cols, x);
|
|
72
|
-
return x[op](y)
|
|
73
|
-
}
|
|
74
|
-
if(x?.isComplex?.()){
|
|
75
|
-
if(typeof y === 'number' || y?.isComplex?.()) return x.clone()[op](y);
|
|
76
|
-
if(y?.isMatrix?.()){
|
|
77
|
-
x = y.constructor.nums(y.rows, y.cols, x);
|
|
78
|
-
return x.clone()[op](y)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if(x?.isMatrix?.()){
|
|
82
|
-
return x.clone()[op](y)
|
|
83
|
-
}
|
|
59
|
+
const percentile = (X, p) => {
|
|
60
|
+
if (X.length === 0)
|
|
61
|
+
return NaN;
|
|
62
|
+
let a = X.sort((x, y) => x - y);
|
|
63
|
+
let index = (p / 100) * (a.length - 1);
|
|
64
|
+
let i = Math.floor(index);
|
|
65
|
+
let f = index - i;
|
|
66
|
+
if (i === a.length - 1)
|
|
67
|
+
return a[i];
|
|
68
|
+
return a[i] * (1 - f) + a[i + 1] * f;
|
|
84
69
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
|
|
71
|
+
const q1 = X => percentile(X, 25);
|
|
72
|
+
const median = X => percentile(X, 50);
|
|
73
|
+
const q3 = X => percentile(X, 75);
|
|
74
|
+
|
|
75
|
+
// Interquartile Range
|
|
76
|
+
const iqr = X => q3(X) - q1(X);
|
|
77
|
+
|
|
78
|
+
// Mean
|
|
79
|
+
const mean = (...x) => x.reduce((a, b) => a + b) / x.length;
|
|
80
|
+
const geo_mean = (...x) => (x.reduce((a, b) => a * b)) ** (1/x.length);
|
|
81
|
+
// Quadratic Mean
|
|
82
|
+
const rms = (...x) => {
|
|
83
|
+
const n = x.length;
|
|
84
|
+
return (Math.hypot(...x)/n)**(1/n)
|
|
90
85
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
86
|
+
|
|
87
|
+
const weighted_mean=(values, weights)=>{
|
|
88
|
+
let sum = 0, sw = 0;
|
|
89
|
+
for (let i = 0; i < values.length; i++) {
|
|
90
|
+
sum += values[i] * weights[i];
|
|
91
|
+
sw += weights[i];
|
|
92
|
+
}
|
|
93
|
+
return sum / sw;
|
|
96
94
|
};
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
|
|
96
|
+
const harmonic_mean = (...x) => {
|
|
97
|
+
let s = 0, i = 0;
|
|
98
|
+
for(i=0; i<x.length; i++)
|
|
99
|
+
s += 1/x[i];
|
|
100
|
+
return x.length / s;
|
|
102
101
|
};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
102
|
+
|
|
103
|
+
const power_mean = (X, p) =>{
|
|
104
|
+
let s = 0, i = 0, l = X.length;
|
|
105
|
+
for(i=0; i < l; i++)
|
|
106
|
+
s+= X[i]**p;
|
|
107
|
+
return (s / l) ** (1 / p);
|
|
108
108
|
};
|
|
109
|
-
const modulo=(a,...b)=>{
|
|
110
|
-
let res = a;
|
|
111
|
-
for(let i=0; i<b.length; i++)
|
|
112
|
-
res = arithmetic_helper('modulo', res, b[i]);
|
|
113
|
-
return res;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
const min = (...x) => Math.min(...x);
|
|
117
|
-
const max = (...x) => Math.max(...x);
|
|
118
109
|
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if (n < 0) return TypeError('n must be non-negative');
|
|
123
|
-
if (k < 0 || n < 0 || k > n) return 0;
|
|
124
|
-
if (k > n - k) k = n - k;
|
|
125
|
-
let c = 1, i;
|
|
126
|
-
for (i = 0; i < k; i++)
|
|
127
|
-
c = c * (n - i) / (i + 1);
|
|
128
|
-
return c;
|
|
110
|
+
const trimmed_mean = (X, k) =>{
|
|
111
|
+
let a = [...X].sort((a,b)=>a-b).slice(k, X.length - k);
|
|
112
|
+
return mean(...a);
|
|
129
113
|
};
|
|
130
114
|
|
|
131
|
-
const
|
|
115
|
+
const winsorized_mean = (X, k) =>{
|
|
116
|
+
let a = [...X].sort((a,b)=>a-b);
|
|
117
|
+
let low = a[k], high = a[a.length - k - 1];
|
|
118
|
+
a = a.map(x => Math.max(low, Math.min(high, x)));
|
|
119
|
+
return mean(a);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const midrange = (x) =>{
|
|
123
|
+
let min = Math.min(...x);
|
|
124
|
+
let max = Math.max(...x);
|
|
125
|
+
return (min + max) / 2;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const midhinge = (...x) =>{
|
|
129
|
+
let a = x.sort((a,b)=>a-b);
|
|
130
|
+
let q1 = a[Math.floor((a.length - 1) * 0.25)];
|
|
131
|
+
let q3 = a[Math.floor((a.length - 1) * 0.75)];
|
|
132
|
+
return (q1 + q3) / 2;
|
|
133
|
+
};
|
|
132
134
|
|
|
135
|
+
|
|
136
|
+
const interquartile_mean = (...x) =>{
|
|
137
|
+
let a = x.sort((a,b)=>a-b);
|
|
138
|
+
let q1 = a[Math.floor((a.length - 1) * 0.25)];
|
|
139
|
+
let q3 = a[Math.floor((a.length - 1) * 0.75)];
|
|
140
|
+
let m = a.filter(x => x >= q1 && x <= q3);
|
|
141
|
+
return mean(m);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
const contraharmonic_mean = (...x) =>{
|
|
146
|
+
let num = 0, den = 0, i, l = x.length;
|
|
147
|
+
for(i = 0; i < l; i++){
|
|
148
|
+
num += x[i]**2;
|
|
149
|
+
den += x[i];
|
|
150
|
+
}
|
|
151
|
+
return num / den;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// Population Variance
|
|
133
155
|
const variance = (...x) => {
|
|
134
156
|
const n = x.length;
|
|
135
157
|
if (n === 0) return NaN;
|
|
136
158
|
const x_mean = mean(...x);
|
|
137
159
|
return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / n;
|
|
138
160
|
};
|
|
139
|
-
|
|
140
161
|
const std = (...x) => Math.sqrt(variance(...x));
|
|
141
162
|
|
|
142
|
-
const
|
|
163
|
+
const sample_variance = (...x) => {
|
|
164
|
+
const n = x.length;
|
|
165
|
+
if (n < 2) return NaN;
|
|
166
|
+
const x_mean = mean(...x);
|
|
167
|
+
return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / (n - 1);
|
|
168
|
+
};
|
|
169
|
+
const sample_std = (...x) => Math.sqrt(sample_variance(...x));
|
|
170
|
+
|
|
171
|
+
const weighted_variance = (X, weights) => {
|
|
172
|
+
const n = X.length;
|
|
173
|
+
if (n === 0 || weights.length !== n) return NaN;
|
|
174
|
+
const sw = weights.reduce((sum, w) => sum + w, 0);
|
|
175
|
+
const mean = X.reduce((sum, x, i) => sum + x * weights[i], 0) / sw;
|
|
176
|
+
return X.reduce((sum, x, i) => sum + weights[i] * (x - mean) ** 2, 0) / sw;
|
|
177
|
+
};
|
|
178
|
+
const weighted_std = (X, weights) => Math.sqrt(weighted_variance(X, weights));
|
|
179
|
+
|
|
180
|
+
const rolling_variance = (X, windowSize) => {
|
|
181
|
+
if (windowSize < 1 || X.length < windowSize) return [];
|
|
143
182
|
let result = [];
|
|
144
|
-
let
|
|
145
|
-
|
|
146
|
-
|
|
183
|
+
for (let i = 0; i <= X.length - windowSize; i++) {
|
|
184
|
+
const w = X.slice(i, i + windowSize);
|
|
185
|
+
result.push(sample_variance(w)); // usually sample variance for rolling
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
};
|
|
189
|
+
const rolling_std = (X, windowSize) => Math.sqrt(rolling_variance(X, windowSize));
|
|
190
|
+
|
|
191
|
+
// Simple Moving Average
|
|
192
|
+
const sma = (X, w) =>{
|
|
193
|
+
let r = [];
|
|
194
|
+
for (let i = 0; i <= X.length - w; i++) {
|
|
195
|
+
let s = 0;
|
|
196
|
+
for (let j = 0; j < w; j++) s += X[i + j];
|
|
197
|
+
r.push(s / w);
|
|
198
|
+
}
|
|
199
|
+
return r;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// exponential Moving Average
|
|
203
|
+
const ema = (X, alpha) =>{
|
|
204
|
+
let r = [], prev = X[0];
|
|
205
|
+
r.push(prev);
|
|
206
|
+
for (let i = 1; i < X.length; i++) {
|
|
207
|
+
prev = alpha * X[i] + (1 - alpha) * prev;
|
|
208
|
+
r.push(prev);
|
|
209
|
+
}
|
|
210
|
+
return r;
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
// weightedMovingAverage
|
|
214
|
+
const wma = (X, weights) =>{
|
|
215
|
+
let k = weights.length;
|
|
216
|
+
let sw = weights.reduce((a,b)=>a+b, 0);
|
|
217
|
+
let r = [];
|
|
218
|
+
for (let i = 0; i <= X.length - k; i++) {
|
|
219
|
+
let s = 0;
|
|
220
|
+
for (let j = 0; j < k; j++) s += X[i+j] * weights[j];
|
|
221
|
+
r.push(s / sw);
|
|
222
|
+
}
|
|
223
|
+
return r;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
const accum_sum = (arr) => {
|
|
227
|
+
let result = [];
|
|
228
|
+
let total = 0;
|
|
229
|
+
for (let x of arr) {
|
|
230
|
+
total += x;
|
|
147
231
|
result.push(total);
|
|
148
232
|
}
|
|
149
233
|
return result;
|
|
150
234
|
};
|
|
151
235
|
|
|
152
|
-
const
|
|
236
|
+
const accum_product = (arr) => {
|
|
153
237
|
let result = [];
|
|
154
|
-
let prod = 1
|
|
155
|
-
for(
|
|
156
|
-
prod
|
|
238
|
+
let prod = 1;
|
|
239
|
+
for (let x of arr) {
|
|
240
|
+
prod *= x;
|
|
157
241
|
result.push(prod);
|
|
158
242
|
}
|
|
159
243
|
return result;
|
|
160
244
|
};
|
|
161
245
|
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return a[i];
|
|
171
|
-
return a[i] * (1 - f) + a[i + 1] * f;
|
|
246
|
+
const accum_max = (arr) => {
|
|
247
|
+
let result = [];
|
|
248
|
+
let m = -Infinity;
|
|
249
|
+
for (let x of arr) {
|
|
250
|
+
m = Math.max(m, x);
|
|
251
|
+
result.push(m);
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
172
254
|
};
|
|
173
255
|
|
|
174
|
-
const
|
|
256
|
+
const accum_min = (arr) => {
|
|
257
|
+
let result = [];
|
|
258
|
+
let m = Infinity;
|
|
259
|
+
for (let x of arr) {
|
|
260
|
+
m = Math.min(m, x);
|
|
261
|
+
result.push(m);
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
};
|
|
175
265
|
|
|
176
266
|
class Random {
|
|
177
267
|
static int(a, b){
|
|
@@ -246,9 +336,9 @@ class Random {
|
|
|
246
336
|
static get sample(){
|
|
247
337
|
const R = this;
|
|
248
338
|
return {
|
|
249
|
-
int : (n,a,b) => Array.from({length:n}, () => R.int(a,b)),
|
|
250
|
-
float : (n,a,b) => Array.from({length:n}, () => R.float(a,b)),
|
|
251
|
-
char : (n,upper=false) => Array.from({length:n}, () => R.char(upper)),
|
|
339
|
+
int : (n, a, b) => Array.from({length:n}, () => R.int(a, b)),
|
|
340
|
+
float : (n, a, b) => Array.from({length:n}, () => R.float(a, b)),
|
|
341
|
+
char : (n, upper=false) => Array.from({length:n}, () => R.char(upper)),
|
|
252
342
|
bool : n => Array.from({length:n}, () => R.bool()),
|
|
253
343
|
bin : n => Array.from({length:n}, () => R.bin()),
|
|
254
344
|
oct : n => Array.from({length:n}, () => R.oct()),
|
|
@@ -889,6 +979,63 @@ const sig = (...x) => mapfun$1(
|
|
|
889
979
|
...x
|
|
890
980
|
);
|
|
891
981
|
|
|
982
|
+
const arithmetic_helper=(op, x, y)=>{
|
|
983
|
+
if(typeof x === 'number'){
|
|
984
|
+
if(typeof y === 'number'){
|
|
985
|
+
switch(op){
|
|
986
|
+
case 'add' : return x + y;
|
|
987
|
+
case 'sub' : return x - y;
|
|
988
|
+
case 'mul' : return x * y;
|
|
989
|
+
case 'div' : return x / y;
|
|
990
|
+
case 'modulo' : return x % y;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
if(y?.isComplex?.()) x = new y.constructor(x, 0);
|
|
994
|
+
if(y?.isMatrix?.()) x = y.constructor.nums(y.rows, y.cols, x);
|
|
995
|
+
return x[op](y)
|
|
996
|
+
}
|
|
997
|
+
if(x?.isComplex?.()){
|
|
998
|
+
if(typeof y === 'number' || y?.isComplex?.()) return x.clone()[op](y);
|
|
999
|
+
if(y?.isMatrix?.()){
|
|
1000
|
+
x = y.constructor.nums(y.rows, y.cols, x);
|
|
1001
|
+
return x.clone()[op](y)
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
if(x?.isMatrix?.()){
|
|
1005
|
+
return x.clone()[op](y)
|
|
1006
|
+
}
|
|
1007
|
+
};
|
|
1008
|
+
const add=(a,...b)=>{
|
|
1009
|
+
let res = a;
|
|
1010
|
+
for(let i=0; i<b.length; i++)
|
|
1011
|
+
res = arithmetic_helper('add', res, b[i]);
|
|
1012
|
+
return res;
|
|
1013
|
+
};
|
|
1014
|
+
const sub=(a,...b)=>{
|
|
1015
|
+
let res = a;
|
|
1016
|
+
for(let i=0; i<b.length; i++)
|
|
1017
|
+
res = arithmetic_helper('sub', res, b[i]);
|
|
1018
|
+
return res;
|
|
1019
|
+
};
|
|
1020
|
+
const mul=(a,...b)=>{
|
|
1021
|
+
let res = a;
|
|
1022
|
+
for(let i=0; i<b.length; i++)
|
|
1023
|
+
res = arithmetic_helper('mul', res, b[i]);
|
|
1024
|
+
return res;
|
|
1025
|
+
};
|
|
1026
|
+
const div=(a,...b)=>{
|
|
1027
|
+
let res = a;
|
|
1028
|
+
for(let i=0; i<b.length; i++)
|
|
1029
|
+
res = arithmetic_helper('div', res, b[i]);
|
|
1030
|
+
return res;
|
|
1031
|
+
};
|
|
1032
|
+
const modulo=(a,...b)=>{
|
|
1033
|
+
let res = a;
|
|
1034
|
+
for(let i=0; i<b.length; i++)
|
|
1035
|
+
res = arithmetic_helper('modulo', res, b[i]);
|
|
1036
|
+
return res;
|
|
1037
|
+
};
|
|
1038
|
+
|
|
892
1039
|
const deg2rad = (...deg) => mapfun$1(x => x * Math.PI / 180, ...deg);
|
|
893
1040
|
const rad2deg = (...rad) => mapfun$1(x => x / Math.PI * 180, ...rad);
|
|
894
1041
|
|
|
@@ -933,6 +1080,66 @@ const atan2 = (y, x, rad = true) => {
|
|
|
933
1080
|
return rad ? phi : phi * 180 / Math.PI;
|
|
934
1081
|
};
|
|
935
1082
|
|
|
1083
|
+
const min = (...x) => Math.min(...x);
|
|
1084
|
+
const max = (...x) => Math.max(...x);
|
|
1085
|
+
|
|
1086
|
+
const binomial = (n, k) =>{
|
|
1087
|
+
if(n !== Math.floor(n)) return TypeError('n must be an integer');
|
|
1088
|
+
if(k !== Math.floor(k)) return TypeError('k must be an integer');
|
|
1089
|
+
if (n < 0) return TypeError('n must be non-negative');
|
|
1090
|
+
if (k < 0 || n < 0 || k > n) return 0;
|
|
1091
|
+
if (k > n - k) k = n - k;
|
|
1092
|
+
let c = 1, i;
|
|
1093
|
+
for (i = 0; i < k; i++)
|
|
1094
|
+
c = c * (n - i) / (i + 1);
|
|
1095
|
+
return c;
|
|
1096
|
+
};
|
|
1097
|
+
|
|
1098
|
+
// export const mean = (...x) => x.reduce((a, b) => a + b) / x.length;
|
|
1099
|
+
|
|
1100
|
+
// export const variance = (...x) => {
|
|
1101
|
+
// const n = x.length;
|
|
1102
|
+
// if (n === 0) return NaN;
|
|
1103
|
+
// const x_mean = mean(...x);
|
|
1104
|
+
// return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / n;
|
|
1105
|
+
// };
|
|
1106
|
+
|
|
1107
|
+
// export const std = (...x) => Math.sqrt(variance(...x));
|
|
1108
|
+
|
|
1109
|
+
// export const accum_sum = (...x) => {
|
|
1110
|
+
// let result = [];
|
|
1111
|
+
// let total = 0, i, n = x.length;
|
|
1112
|
+
// for(i = 0; i < n ; i++){
|
|
1113
|
+
// total = add(total, x[i])
|
|
1114
|
+
// result.push(total);
|
|
1115
|
+
// }
|
|
1116
|
+
// return result;
|
|
1117
|
+
// };
|
|
1118
|
+
|
|
1119
|
+
const accum_prod = (...x) => {
|
|
1120
|
+
let result = [];
|
|
1121
|
+
let prod = 1, i, n = x.length;
|
|
1122
|
+
for(i = 0; i < n ; i++){
|
|
1123
|
+
prod = mul(prod, x[i]);
|
|
1124
|
+
result.push(prod);
|
|
1125
|
+
}
|
|
1126
|
+
return result;
|
|
1127
|
+
};
|
|
1128
|
+
|
|
1129
|
+
// export const percentile = (X, p) => {
|
|
1130
|
+
// if (X.length === 0)
|
|
1131
|
+
// return NaN;
|
|
1132
|
+
// let a = [...X].sort((x, y) => x - y);
|
|
1133
|
+
// let index = (p / 100) * (a.length - 1);
|
|
1134
|
+
// let i = Math.floor(index);
|
|
1135
|
+
// let f = index - i;
|
|
1136
|
+
// if (i === a.length - 1)
|
|
1137
|
+
// return a[i];
|
|
1138
|
+
// return a[i] * (1 - f) + a[i + 1] * f;
|
|
1139
|
+
// }
|
|
1140
|
+
|
|
1141
|
+
// export const median = X => percentile(X, 50);
|
|
1142
|
+
|
|
936
1143
|
const not = x => {
|
|
937
1144
|
if(x.isComplex?.()) return new x.constructor(not(x.a), not(x.b))
|
|
938
1145
|
if(x.isMatrix?.()) return new x.constructor(x.rows, x.cols, x.arr.flat(1).map(not))
|
|
@@ -2045,6 +2252,7 @@ class UIElementCore extends UINode{
|
|
|
2045
2252
|
else this.target = element?.parentElement;
|
|
2046
2253
|
Object.assign(this.cache, {
|
|
2047
2254
|
name,
|
|
2255
|
+
itemsTarget : this,
|
|
2048
2256
|
isInteractive : false,
|
|
2049
2257
|
parent:null,
|
|
2050
2258
|
isBody:false,
|
|
@@ -2081,7 +2289,7 @@ class UIElementCore extends UINode{
|
|
|
2081
2289
|
get element(){
|
|
2082
2290
|
return this.cache.element;
|
|
2083
2291
|
}
|
|
2084
|
-
|
|
2292
|
+
[Symbol.iterator](){
|
|
2085
2293
|
return this.items[Symbol.iterator]();
|
|
2086
2294
|
}
|
|
2087
2295
|
maintain() {
|
|
@@ -2307,12 +2515,6 @@ class ZikoUIText extends UINode {
|
|
|
2307
2515
|
}
|
|
2308
2516
|
const text = (...str) => new ZikoUIText(...str);
|
|
2309
2517
|
|
|
2310
|
-
// import { isStateGetter } from "../../../hooks/use-state.js";
|
|
2311
|
-
// import {
|
|
2312
|
-
// is_camelcase,
|
|
2313
|
-
// camel2hyphencase
|
|
2314
|
-
// } from '../../../data/string/index.js';
|
|
2315
|
-
|
|
2316
2518
|
function append(...ele) {
|
|
2317
2519
|
__addItem__.call(this, "append", "push", ...ele);
|
|
2318
2520
|
return this;
|
|
@@ -2322,19 +2524,30 @@ function prepend(...ele) {
|
|
|
2322
2524
|
return this;
|
|
2323
2525
|
}
|
|
2324
2526
|
function insertAt(index, ...ele) {
|
|
2325
|
-
|
|
2326
|
-
|
|
2527
|
+
const target = this.itemsTarget;
|
|
2528
|
+
|
|
2529
|
+
if (index >= target.items.length) return this.append(...ele);
|
|
2530
|
+
|
|
2327
2531
|
for (let i = 0; i < ele.length; i++) {
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2532
|
+
if (["number", "string"].includes(typeof ele[i]))
|
|
2533
|
+
ele[i] = text(ele[i]);
|
|
2534
|
+
|
|
2535
|
+
target.element?.insertBefore(
|
|
2536
|
+
ele[i].element,
|
|
2537
|
+
target.items[index].element
|
|
2538
|
+
);
|
|
2539
|
+
|
|
2540
|
+
target.items.splice(index, 0, ele[i]);
|
|
2331
2541
|
}
|
|
2332
|
-
|
|
2542
|
+
|
|
2543
|
+
target.maintain();
|
|
2544
|
+
|
|
2545
|
+
return this;
|
|
2333
2546
|
}
|
|
2334
2547
|
function remove(...ele) {
|
|
2335
2548
|
const remove = (ele) => {
|
|
2336
2549
|
if (typeof ele === "number") ele = this.items[ele];
|
|
2337
|
-
if (ele?.isUIElement) this.element?.removeChild(ele.element);
|
|
2550
|
+
if (ele?.isUIElement) this.itemsTarget.element?.removeChild(ele.element);
|
|
2338
2551
|
this.items = this.items.filter((n) => n !== ele);
|
|
2339
2552
|
};
|
|
2340
2553
|
for (let i = 0; i < ele.length; i++) remove(ele[i]);
|
|
@@ -2345,7 +2558,7 @@ function remove(...ele) {
|
|
|
2345
2558
|
}
|
|
2346
2559
|
function clear(){
|
|
2347
2560
|
this?.items?.forEach(n=>n.unmount());
|
|
2348
|
-
this.element.innerHTML =
|
|
2561
|
+
this.itemsTarget.element.innerHTML = '';
|
|
2349
2562
|
return this;
|
|
2350
2563
|
}
|
|
2351
2564
|
function replaceElementWith(new_element){
|
|
@@ -2357,12 +2570,12 @@ function replaceElementWith(new_element){
|
|
|
2357
2570
|
}
|
|
2358
2571
|
function after(ui){
|
|
2359
2572
|
if(ui?.isUIElement) ui=ui.element;
|
|
2360
|
-
this.element?.after(ui);
|
|
2573
|
+
this.itemsTarget.element?.after(ui);
|
|
2361
2574
|
return this;
|
|
2362
2575
|
}
|
|
2363
2576
|
function before(ui){
|
|
2364
2577
|
if(ui?.isUIElement) ui=ui.element;
|
|
2365
|
-
this.element?.before(ui);
|
|
2578
|
+
this.itemsTarget.element?.before(ui);
|
|
2366
2579
|
return this;
|
|
2367
2580
|
}
|
|
2368
2581
|
|
|
@@ -2370,6 +2583,9 @@ function before(ui){
|
|
|
2370
2583
|
|
|
2371
2584
|
|
|
2372
2585
|
async function __addItem__(adder, pusher, ...ele) {
|
|
2586
|
+
const itemsTarget_el = this.itemsTarget.element;
|
|
2587
|
+
const itemsTarget = this.itemsTarget;
|
|
2588
|
+
|
|
2373
2589
|
if (this.cache.isFrozzen) {
|
|
2374
2590
|
console.warn("You can't append new item to frozzen element");
|
|
2375
2591
|
return this;
|
|
@@ -2385,22 +2601,22 @@ async function __addItem__(adder, pusher, ...ele) {
|
|
|
2385
2601
|
(newValue) => (ele[i].element.textContent = newValue),
|
|
2386
2602
|
ele[i]
|
|
2387
2603
|
);
|
|
2388
|
-
// this.element.appendChild(textNode);
|
|
2604
|
+
// this.itemsTarget.element.appendChild(textNode);
|
|
2389
2605
|
}
|
|
2390
2606
|
}
|
|
2391
2607
|
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
2392
2608
|
if (ele[i]?.isUINode) {
|
|
2393
2609
|
ele[i].cache.parent = this;
|
|
2394
|
-
|
|
2395
|
-
ele[i].target = this.element;
|
|
2396
|
-
|
|
2610
|
+
itemsTarget_el?.[adder](ele[i].element);
|
|
2611
|
+
ele[i].target = this.itemsTarget.element;
|
|
2612
|
+
itemsTarget.items[pusher](ele[i]);
|
|
2397
2613
|
}
|
|
2398
2614
|
else if(ele[i] instanceof Promise){
|
|
2399
2615
|
const UIEle = await ele[i];
|
|
2400
2616
|
UIEle.cache.parent = this;
|
|
2401
|
-
|
|
2402
|
-
UIEle.target = this.element;
|
|
2403
|
-
|
|
2617
|
+
itemsTarget_el?.[adder](UIEle.element);
|
|
2618
|
+
UIEle.target = this.itemsTarget.element;
|
|
2619
|
+
itemsTarget.items[pusher](UIEle);
|
|
2404
2620
|
}
|
|
2405
2621
|
else if (ele[i] instanceof Object) {
|
|
2406
2622
|
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
@@ -2891,7 +3107,14 @@ let UIElement$1 = class UIElement extends UIElementCore{
|
|
|
2891
3107
|
|
|
2892
3108
|
if(element)this.init(element, name, type, render);
|
|
2893
3109
|
}
|
|
2894
|
-
on(event_name, callback, {details_setter, category = 'global', isCustom = false,preventDefault = false} = {}){
|
|
3110
|
+
on(event_name, callback, {details_setter, category = 'global', isCustom = false, preventDefault = false} = {}){
|
|
3111
|
+
if(event_name instanceof Array) event_name.forEach(
|
|
3112
|
+
event => this.on(
|
|
3113
|
+
event,
|
|
3114
|
+
callback,
|
|
3115
|
+
{details_setter, category, isCustom, preventDefault}
|
|
3116
|
+
)
|
|
3117
|
+
);
|
|
2895
3118
|
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
2896
3119
|
isCustom && this.exp.events[category].cache.customEvents.add(event_name);
|
|
2897
3120
|
const EVENT = this.exp.events[category];
|
|
@@ -2905,10 +3128,22 @@ let UIElement$1 = class UIElement extends UIElementCore{
|
|
|
2905
3128
|
}
|
|
2906
3129
|
_off(event, category = 'global'){
|
|
2907
3130
|
this.exp.events[category].removeListener(event);
|
|
3131
|
+
return this
|
|
2908
3132
|
}
|
|
2909
3133
|
get element(){
|
|
2910
3134
|
return this.cache.element;
|
|
2911
3135
|
}
|
|
3136
|
+
get itemsTarget(){
|
|
3137
|
+
return this.cache.itemsTarget;
|
|
3138
|
+
}
|
|
3139
|
+
get itemsTargetElement(){
|
|
3140
|
+
return this.itemsTarget.element;
|
|
3141
|
+
}
|
|
3142
|
+
setItemsTarget(parent){
|
|
3143
|
+
this.cache.itemsTarget = parent;
|
|
3144
|
+
this.items = parent.items;
|
|
3145
|
+
return this;
|
|
3146
|
+
}
|
|
2912
3147
|
isInteractive(){
|
|
2913
3148
|
return this.cache.isInteractive;
|
|
2914
3149
|
}
|
|
@@ -3515,14 +3750,14 @@ class UISwap extends UIElement$1 {
|
|
|
3515
3750
|
};
|
|
3516
3751
|
|
|
3517
3752
|
this.append(...items);
|
|
3518
|
-
this
|
|
3753
|
+
this.render();
|
|
3519
3754
|
}
|
|
3520
3755
|
get activeItem(){
|
|
3521
3756
|
return this.items[this.states.activeIndex]
|
|
3522
3757
|
}
|
|
3523
|
-
|
|
3758
|
+
render() {
|
|
3524
3759
|
this.items.forEach((n, i) => {
|
|
3525
|
-
|
|
3760
|
+
|
|
3526
3761
|
const initialDisplay = n.element?.style?.display || '';
|
|
3527
3762
|
this.#DISPLAYS_MAP.set(n, initialDisplay);
|
|
3528
3763
|
|
|
@@ -3573,6 +3808,22 @@ class UIFragment extends UIElement$1{
|
|
|
3573
3808
|
|
|
3574
3809
|
const Fragment = (...items) => new UIFragment(...items);
|
|
3575
3810
|
|
|
3811
|
+
class UIFor extends UIFragment{
|
|
3812
|
+
constructor({each, fallback, mapFn = () => {}} = {}){
|
|
3813
|
+
super();
|
|
3814
|
+
this.config = {
|
|
3815
|
+
each,
|
|
3816
|
+
fallback,
|
|
3817
|
+
mapFn
|
|
3818
|
+
};
|
|
3819
|
+
this.append(
|
|
3820
|
+
...this.config.each.map((n,i) => this.config.mapFn(n, i))
|
|
3821
|
+
);
|
|
3822
|
+
}
|
|
3823
|
+
}
|
|
3824
|
+
|
|
3825
|
+
const For = ({each, fallback, mapFn} = {}) => new UIFor({each, fallback, mapFn});
|
|
3826
|
+
|
|
3576
3827
|
const { PI, sqrt: sqrt$1, cos: cos$2, sin: sin$2, acos, pow } = Math;
|
|
3577
3828
|
|
|
3578
3829
|
const linear = t => t;
|
|
@@ -4989,6 +5240,7 @@ exports.EPSILON = EPSILON;
|
|
|
4989
5240
|
exports.EventController = EventController;
|
|
4990
5241
|
exports.FileBasedRouting = FileBasedRouting;
|
|
4991
5242
|
exports.Flex = Flex;
|
|
5243
|
+
exports.For = For;
|
|
4992
5244
|
exports.Fragment = Fragment;
|
|
4993
5245
|
exports.HTMLWrapper = HTMLWrapper;
|
|
4994
5246
|
exports.KeyListeners = KeyListeners;
|
|
@@ -5026,7 +5278,10 @@ exports.ZikoSPA = ZikoSPA;
|
|
|
5026
5278
|
exports.ZikoUISuspense = ZikoUISuspense;
|
|
5027
5279
|
exports.ZikoUIText = ZikoUIText;
|
|
5028
5280
|
exports.abs = abs;
|
|
5281
|
+
exports.accum_max = accum_max;
|
|
5282
|
+
exports.accum_min = accum_min;
|
|
5029
5283
|
exports.accum_prod = accum_prod;
|
|
5284
|
+
exports.accum_product = accum_product;
|
|
5030
5285
|
exports.accum_sum = accum_sum;
|
|
5031
5286
|
exports.acos = acos$1;
|
|
5032
5287
|
exports.acosh = acosh;
|
|
@@ -5052,6 +5307,7 @@ exports.clamp = clamp;
|
|
|
5052
5307
|
exports.clock = clock;
|
|
5053
5308
|
exports.cloneUI = cloneUI;
|
|
5054
5309
|
exports.complex = complex;
|
|
5310
|
+
exports.contraharmonic_mean = contraharmonic_mean;
|
|
5055
5311
|
exports.cos = cos$3;
|
|
5056
5312
|
exports.cosh = cosh$2;
|
|
5057
5313
|
exports.coth = coth;
|
|
@@ -5068,9 +5324,12 @@ exports.deg2rad = deg2rad;
|
|
|
5068
5324
|
exports.discret = discret;
|
|
5069
5325
|
exports.div = div;
|
|
5070
5326
|
exports.elastic = elastic;
|
|
5327
|
+
exports.ema = ema;
|
|
5071
5328
|
exports.exp = exp$1;
|
|
5072
5329
|
exports.floor = floor;
|
|
5073
5330
|
exports.fract = fract;
|
|
5331
|
+
exports.geo_mean = geo_mean;
|
|
5332
|
+
exports.harmonic_mean = harmonic_mean;
|
|
5074
5333
|
exports.hypot = hypot;
|
|
5075
5334
|
exports.in_back = in_back;
|
|
5076
5335
|
exports.in_bounce = in_bounce;
|
|
@@ -5092,6 +5351,8 @@ exports.in_quad = in_quad;
|
|
|
5092
5351
|
exports.in_quart = in_quart;
|
|
5093
5352
|
exports.in_quint = in_quint;
|
|
5094
5353
|
exports.in_sin = in_sin;
|
|
5354
|
+
exports.interquartile_mean = interquartile_mean;
|
|
5355
|
+
exports.iqr = iqr;
|
|
5095
5356
|
exports.isPrimitive = isPrimitive;
|
|
5096
5357
|
exports.isStateGetter = isStateGetter;
|
|
5097
5358
|
exports.json2arr = json2arr;
|
|
@@ -5116,6 +5377,8 @@ exports.matrix4 = matrix4;
|
|
|
5116
5377
|
exports.max = max;
|
|
5117
5378
|
exports.mean = mean;
|
|
5118
5379
|
exports.median = median;
|
|
5380
|
+
exports.midhinge = midhinge;
|
|
5381
|
+
exports.midrange = midrange;
|
|
5119
5382
|
exports.min = min;
|
|
5120
5383
|
exports.modulo = modulo;
|
|
5121
5384
|
exports.mul = mul;
|
|
@@ -5123,6 +5386,7 @@ exports.nand = nand;
|
|
|
5123
5386
|
exports.nor = nor;
|
|
5124
5387
|
exports.norm = norm;
|
|
5125
5388
|
exports.normalize_css_value = normalize_css_value;
|
|
5389
|
+
exports.not = not;
|
|
5126
5390
|
exports.nthr = nthr;
|
|
5127
5391
|
exports.or = or;
|
|
5128
5392
|
exports.out_back = out_back;
|
|
@@ -5137,12 +5401,20 @@ exports.out_quint = out_quint;
|
|
|
5137
5401
|
exports.out_sin = out_sin;
|
|
5138
5402
|
exports.percentile = percentile;
|
|
5139
5403
|
exports.pow = pow$1;
|
|
5404
|
+
exports.power_mean = power_mean;
|
|
5405
|
+
exports.q1 = q1;
|
|
5406
|
+
exports.q3 = q3;
|
|
5140
5407
|
exports.rad2deg = rad2deg;
|
|
5141
5408
|
exports.register_click_away_event = register_click_away_event;
|
|
5142
5409
|
exports.register_swipe_event = register_swipe_event;
|
|
5143
5410
|
exports.register_view_event = register_view_event;
|
|
5144
5411
|
exports.remove_class = remove_class;
|
|
5412
|
+
exports.rms = rms;
|
|
5413
|
+
exports.rolling_std = rolling_std;
|
|
5414
|
+
exports.rolling_variance = rolling_variance;
|
|
5145
5415
|
exports.round = round;
|
|
5416
|
+
exports.sample_std = sample_std;
|
|
5417
|
+
exports.sample_variance = sample_variance;
|
|
5146
5418
|
exports.script = script;
|
|
5147
5419
|
exports.sec = sec;
|
|
5148
5420
|
exports.sig = sig;
|
|
@@ -5150,6 +5422,7 @@ exports.sign = sign;
|
|
|
5150
5422
|
exports.sin = sin$3;
|
|
5151
5423
|
exports.sinh = sinh$1;
|
|
5152
5424
|
exports.sleep = sleep;
|
|
5425
|
+
exports.sma = sma;
|
|
5153
5426
|
exports.sqrt = sqrt$2;
|
|
5154
5427
|
exports.std = std;
|
|
5155
5428
|
exports.step = step;
|
|
@@ -5169,6 +5442,7 @@ exports.tick = tick;
|
|
|
5169
5442
|
exports.timeTaken = timeTaken;
|
|
5170
5443
|
exports.time_memory_Taken = time_memory_Taken;
|
|
5171
5444
|
exports.timeout = timeout;
|
|
5445
|
+
exports.trimmed_mean = trimmed_mean;
|
|
5172
5446
|
exports.trunc = trunc;
|
|
5173
5447
|
exports.useDerived = useDerived;
|
|
5174
5448
|
exports.useEventEmitter = useEventEmitter;
|
|
@@ -5188,5 +5462,10 @@ exports.waitElm = waitElm;
|
|
|
5188
5462
|
exports.waitForUIElm = waitForUIElm;
|
|
5189
5463
|
exports.waitForUIElmSync = waitForUIElmSync;
|
|
5190
5464
|
exports.watchQueryParams = watchQueryParams;
|
|
5465
|
+
exports.weighted_mean = weighted_mean;
|
|
5466
|
+
exports.weighted_std = weighted_std;
|
|
5467
|
+
exports.weighted_variance = weighted_variance;
|
|
5468
|
+
exports.winsorized_mean = winsorized_mean;
|
|
5469
|
+
exports.wma = wma;
|
|
5191
5470
|
exports.xnor = xnor;
|
|
5192
5471
|
exports.xor = xor;
|