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.js
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
|
|
@@ -60,122 +60,212 @@
|
|
|
60
60
|
return dec.toString(toBase);
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
if(y?.isComplex?.()) x = new y.constructor(x, 0);
|
|
75
|
-
if(y?.isMatrix?.()) x = y.constructor.nums(y.rows, y.cols, x);
|
|
76
|
-
return x[op](y)
|
|
77
|
-
}
|
|
78
|
-
if(x?.isComplex?.()){
|
|
79
|
-
if(typeof y === 'number' || y?.isComplex?.()) return x.clone()[op](y);
|
|
80
|
-
if(y?.isMatrix?.()){
|
|
81
|
-
x = y.constructor.nums(y.rows, y.cols, x);
|
|
82
|
-
return x.clone()[op](y)
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if(x?.isMatrix?.()){
|
|
86
|
-
return x.clone()[op](y)
|
|
87
|
-
}
|
|
63
|
+
const percentile = (X, p) => {
|
|
64
|
+
if (X.length === 0)
|
|
65
|
+
return NaN;
|
|
66
|
+
let a = X.sort((x, y) => x - y);
|
|
67
|
+
let index = (p / 100) * (a.length - 1);
|
|
68
|
+
let i = Math.floor(index);
|
|
69
|
+
let f = index - i;
|
|
70
|
+
if (i === a.length - 1)
|
|
71
|
+
return a[i];
|
|
72
|
+
return a[i] * (1 - f) + a[i + 1] * f;
|
|
88
73
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
74
|
+
|
|
75
|
+
const q1 = X => percentile(X, 25);
|
|
76
|
+
const median = X => percentile(X, 50);
|
|
77
|
+
const q3 = X => percentile(X, 75);
|
|
78
|
+
|
|
79
|
+
// Interquartile Range
|
|
80
|
+
const iqr = X => q3(X) - q1(X);
|
|
81
|
+
|
|
82
|
+
// Mean
|
|
83
|
+
const mean = (...x) => x.reduce((a, b) => a + b) / x.length;
|
|
84
|
+
const geo_mean = (...x) => (x.reduce((a, b) => a * b)) ** (1/x.length);
|
|
85
|
+
// Quadratic Mean
|
|
86
|
+
const rms = (...x) => {
|
|
87
|
+
const n = x.length;
|
|
88
|
+
return (Math.hypot(...x)/n)**(1/n)
|
|
94
89
|
};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
|
|
91
|
+
const weighted_mean=(values, weights)=>{
|
|
92
|
+
let sum = 0, sw = 0;
|
|
93
|
+
for (let i = 0; i < values.length; i++) {
|
|
94
|
+
sum += values[i] * weights[i];
|
|
95
|
+
sw += weights[i];
|
|
96
|
+
}
|
|
97
|
+
return sum / sw;
|
|
100
98
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
99
|
+
|
|
100
|
+
const harmonic_mean = (...x) => {
|
|
101
|
+
let s = 0, i = 0;
|
|
102
|
+
for(i=0; i<x.length; i++)
|
|
103
|
+
s += 1/x[i];
|
|
104
|
+
return x.length / s;
|
|
106
105
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
|
|
107
|
+
const power_mean = (X, p) =>{
|
|
108
|
+
let s = 0, i = 0, l = X.length;
|
|
109
|
+
for(i=0; i < l; i++)
|
|
110
|
+
s+= X[i]**p;
|
|
111
|
+
return (s / l) ** (1 / p);
|
|
112
112
|
};
|
|
113
|
-
const modulo=(a,...b)=>{
|
|
114
|
-
let res = a;
|
|
115
|
-
for(let i=0; i<b.length; i++)
|
|
116
|
-
res = arithmetic_helper('modulo', res, b[i]);
|
|
117
|
-
return res;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const min = (...x) => Math.min(...x);
|
|
121
|
-
const max = (...x) => Math.max(...x);
|
|
122
113
|
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (n < 0) return TypeError('n must be non-negative');
|
|
127
|
-
if (k < 0 || n < 0 || k > n) return 0;
|
|
128
|
-
if (k > n - k) k = n - k;
|
|
129
|
-
let c = 1, i;
|
|
130
|
-
for (i = 0; i < k; i++)
|
|
131
|
-
c = c * (n - i) / (i + 1);
|
|
132
|
-
return c;
|
|
114
|
+
const trimmed_mean = (X, k) =>{
|
|
115
|
+
let a = [...X].sort((a,b)=>a-b).slice(k, X.length - k);
|
|
116
|
+
return mean(...a);
|
|
133
117
|
};
|
|
134
118
|
|
|
135
|
-
const
|
|
119
|
+
const winsorized_mean = (X, k) =>{
|
|
120
|
+
let a = [...X].sort((a,b)=>a-b);
|
|
121
|
+
let low = a[k], high = a[a.length - k - 1];
|
|
122
|
+
a = a.map(x => Math.max(low, Math.min(high, x)));
|
|
123
|
+
return mean(a);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const midrange = (x) =>{
|
|
127
|
+
let min = Math.min(...x);
|
|
128
|
+
let max = Math.max(...x);
|
|
129
|
+
return (min + max) / 2;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const midhinge = (...x) =>{
|
|
133
|
+
let a = x.sort((a,b)=>a-b);
|
|
134
|
+
let q1 = a[Math.floor((a.length - 1) * 0.25)];
|
|
135
|
+
let q3 = a[Math.floor((a.length - 1) * 0.75)];
|
|
136
|
+
return (q1 + q3) / 2;
|
|
137
|
+
};
|
|
136
138
|
|
|
139
|
+
|
|
140
|
+
const interquartile_mean = (...x) =>{
|
|
141
|
+
let a = x.sort((a,b)=>a-b);
|
|
142
|
+
let q1 = a[Math.floor((a.length - 1) * 0.25)];
|
|
143
|
+
let q3 = a[Math.floor((a.length - 1) * 0.75)];
|
|
144
|
+
let m = a.filter(x => x >= q1 && x <= q3);
|
|
145
|
+
return mean(m);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
const contraharmonic_mean = (...x) =>{
|
|
150
|
+
let num = 0, den = 0, i, l = x.length;
|
|
151
|
+
for(i = 0; i < l; i++){
|
|
152
|
+
num += x[i]**2;
|
|
153
|
+
den += x[i];
|
|
154
|
+
}
|
|
155
|
+
return num / den;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// Population Variance
|
|
137
159
|
const variance = (...x) => {
|
|
138
160
|
const n = x.length;
|
|
139
161
|
if (n === 0) return NaN;
|
|
140
162
|
const x_mean = mean(...x);
|
|
141
163
|
return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / n;
|
|
142
164
|
};
|
|
143
|
-
|
|
144
165
|
const std = (...x) => Math.sqrt(variance(...x));
|
|
145
166
|
|
|
146
|
-
const
|
|
167
|
+
const sample_variance = (...x) => {
|
|
168
|
+
const n = x.length;
|
|
169
|
+
if (n < 2) return NaN;
|
|
170
|
+
const x_mean = mean(...x);
|
|
171
|
+
return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / (n - 1);
|
|
172
|
+
};
|
|
173
|
+
const sample_std = (...x) => Math.sqrt(sample_variance(...x));
|
|
174
|
+
|
|
175
|
+
const weighted_variance = (X, weights) => {
|
|
176
|
+
const n = X.length;
|
|
177
|
+
if (n === 0 || weights.length !== n) return NaN;
|
|
178
|
+
const sw = weights.reduce((sum, w) => sum + w, 0);
|
|
179
|
+
const mean = X.reduce((sum, x, i) => sum + x * weights[i], 0) / sw;
|
|
180
|
+
return X.reduce((sum, x, i) => sum + weights[i] * (x - mean) ** 2, 0) / sw;
|
|
181
|
+
};
|
|
182
|
+
const weighted_std = (X, weights) => Math.sqrt(weighted_variance(X, weights));
|
|
183
|
+
|
|
184
|
+
const rolling_variance = (X, windowSize) => {
|
|
185
|
+
if (windowSize < 1 || X.length < windowSize) return [];
|
|
147
186
|
let result = [];
|
|
148
|
-
let
|
|
149
|
-
|
|
150
|
-
|
|
187
|
+
for (let i = 0; i <= X.length - windowSize; i++) {
|
|
188
|
+
const w = X.slice(i, i + windowSize);
|
|
189
|
+
result.push(sample_variance(w)); // usually sample variance for rolling
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
};
|
|
193
|
+
const rolling_std = (X, windowSize) => Math.sqrt(rolling_variance(X, windowSize));
|
|
194
|
+
|
|
195
|
+
// Simple Moving Average
|
|
196
|
+
const sma = (X, w) =>{
|
|
197
|
+
let r = [];
|
|
198
|
+
for (let i = 0; i <= X.length - w; i++) {
|
|
199
|
+
let s = 0;
|
|
200
|
+
for (let j = 0; j < w; j++) s += X[i + j];
|
|
201
|
+
r.push(s / w);
|
|
202
|
+
}
|
|
203
|
+
return r;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
// exponential Moving Average
|
|
207
|
+
const ema = (X, alpha) =>{
|
|
208
|
+
let r = [], prev = X[0];
|
|
209
|
+
r.push(prev);
|
|
210
|
+
for (let i = 1; i < X.length; i++) {
|
|
211
|
+
prev = alpha * X[i] + (1 - alpha) * prev;
|
|
212
|
+
r.push(prev);
|
|
213
|
+
}
|
|
214
|
+
return r;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
// weightedMovingAverage
|
|
218
|
+
const wma = (X, weights) =>{
|
|
219
|
+
let k = weights.length;
|
|
220
|
+
let sw = weights.reduce((a,b)=>a+b, 0);
|
|
221
|
+
let r = [];
|
|
222
|
+
for (let i = 0; i <= X.length - k; i++) {
|
|
223
|
+
let s = 0;
|
|
224
|
+
for (let j = 0; j < k; j++) s += X[i+j] * weights[j];
|
|
225
|
+
r.push(s / sw);
|
|
226
|
+
}
|
|
227
|
+
return r;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const accum_sum = (arr) => {
|
|
231
|
+
let result = [];
|
|
232
|
+
let total = 0;
|
|
233
|
+
for (let x of arr) {
|
|
234
|
+
total += x;
|
|
151
235
|
result.push(total);
|
|
152
236
|
}
|
|
153
237
|
return result;
|
|
154
238
|
};
|
|
155
239
|
|
|
156
|
-
const
|
|
240
|
+
const accum_product = (arr) => {
|
|
157
241
|
let result = [];
|
|
158
|
-
let prod = 1
|
|
159
|
-
for(
|
|
160
|
-
prod
|
|
242
|
+
let prod = 1;
|
|
243
|
+
for (let x of arr) {
|
|
244
|
+
prod *= x;
|
|
161
245
|
result.push(prod);
|
|
162
246
|
}
|
|
163
247
|
return result;
|
|
164
248
|
};
|
|
165
249
|
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
return a[i];
|
|
175
|
-
return a[i] * (1 - f) + a[i + 1] * f;
|
|
250
|
+
const accum_max = (arr) => {
|
|
251
|
+
let result = [];
|
|
252
|
+
let m = -Infinity;
|
|
253
|
+
for (let x of arr) {
|
|
254
|
+
m = Math.max(m, x);
|
|
255
|
+
result.push(m);
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
176
258
|
};
|
|
177
259
|
|
|
178
|
-
const
|
|
260
|
+
const accum_min = (arr) => {
|
|
261
|
+
let result = [];
|
|
262
|
+
let m = Infinity;
|
|
263
|
+
for (let x of arr) {
|
|
264
|
+
m = Math.min(m, x);
|
|
265
|
+
result.push(m);
|
|
266
|
+
}
|
|
267
|
+
return result;
|
|
268
|
+
};
|
|
179
269
|
|
|
180
270
|
class Random {
|
|
181
271
|
static int(a, b){
|
|
@@ -250,9 +340,9 @@
|
|
|
250
340
|
static get sample(){
|
|
251
341
|
const R = this;
|
|
252
342
|
return {
|
|
253
|
-
int : (n,a,b) => Array.from({length:n}, () => R.int(a,b)),
|
|
254
|
-
float : (n,a,b) => Array.from({length:n}, () => R.float(a,b)),
|
|
255
|
-
char : (n,upper=false) => Array.from({length:n}, () => R.char(upper)),
|
|
343
|
+
int : (n, a, b) => Array.from({length:n}, () => R.int(a, b)),
|
|
344
|
+
float : (n, a, b) => Array.from({length:n}, () => R.float(a, b)),
|
|
345
|
+
char : (n, upper=false) => Array.from({length:n}, () => R.char(upper)),
|
|
256
346
|
bool : n => Array.from({length:n}, () => R.bool()),
|
|
257
347
|
bin : n => Array.from({length:n}, () => R.bin()),
|
|
258
348
|
oct : n => Array.from({length:n}, () => R.oct()),
|
|
@@ -893,6 +983,63 @@
|
|
|
893
983
|
...x
|
|
894
984
|
);
|
|
895
985
|
|
|
986
|
+
const arithmetic_helper=(op, x, y)=>{
|
|
987
|
+
if(typeof x === 'number'){
|
|
988
|
+
if(typeof y === 'number'){
|
|
989
|
+
switch(op){
|
|
990
|
+
case 'add' : return x + y;
|
|
991
|
+
case 'sub' : return x - y;
|
|
992
|
+
case 'mul' : return x * y;
|
|
993
|
+
case 'div' : return x / y;
|
|
994
|
+
case 'modulo' : return x % y;
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
if(y?.isComplex?.()) x = new y.constructor(x, 0);
|
|
998
|
+
if(y?.isMatrix?.()) x = y.constructor.nums(y.rows, y.cols, x);
|
|
999
|
+
return x[op](y)
|
|
1000
|
+
}
|
|
1001
|
+
if(x?.isComplex?.()){
|
|
1002
|
+
if(typeof y === 'number' || y?.isComplex?.()) return x.clone()[op](y);
|
|
1003
|
+
if(y?.isMatrix?.()){
|
|
1004
|
+
x = y.constructor.nums(y.rows, y.cols, x);
|
|
1005
|
+
return x.clone()[op](y)
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
if(x?.isMatrix?.()){
|
|
1009
|
+
return x.clone()[op](y)
|
|
1010
|
+
}
|
|
1011
|
+
};
|
|
1012
|
+
const add=(a,...b)=>{
|
|
1013
|
+
let res = a;
|
|
1014
|
+
for(let i=0; i<b.length; i++)
|
|
1015
|
+
res = arithmetic_helper('add', res, b[i]);
|
|
1016
|
+
return res;
|
|
1017
|
+
};
|
|
1018
|
+
const sub=(a,...b)=>{
|
|
1019
|
+
let res = a;
|
|
1020
|
+
for(let i=0; i<b.length; i++)
|
|
1021
|
+
res = arithmetic_helper('sub', res, b[i]);
|
|
1022
|
+
return res;
|
|
1023
|
+
};
|
|
1024
|
+
const mul=(a,...b)=>{
|
|
1025
|
+
let res = a;
|
|
1026
|
+
for(let i=0; i<b.length; i++)
|
|
1027
|
+
res = arithmetic_helper('mul', res, b[i]);
|
|
1028
|
+
return res;
|
|
1029
|
+
};
|
|
1030
|
+
const div=(a,...b)=>{
|
|
1031
|
+
let res = a;
|
|
1032
|
+
for(let i=0; i<b.length; i++)
|
|
1033
|
+
res = arithmetic_helper('div', res, b[i]);
|
|
1034
|
+
return res;
|
|
1035
|
+
};
|
|
1036
|
+
const modulo=(a,...b)=>{
|
|
1037
|
+
let res = a;
|
|
1038
|
+
for(let i=0; i<b.length; i++)
|
|
1039
|
+
res = arithmetic_helper('modulo', res, b[i]);
|
|
1040
|
+
return res;
|
|
1041
|
+
};
|
|
1042
|
+
|
|
896
1043
|
const deg2rad = (...deg) => mapfun$1(x => x * Math.PI / 180, ...deg);
|
|
897
1044
|
const rad2deg = (...rad) => mapfun$1(x => x / Math.PI * 180, ...rad);
|
|
898
1045
|
|
|
@@ -937,6 +1084,66 @@
|
|
|
937
1084
|
return rad ? phi : phi * 180 / Math.PI;
|
|
938
1085
|
};
|
|
939
1086
|
|
|
1087
|
+
const min = (...x) => Math.min(...x);
|
|
1088
|
+
const max = (...x) => Math.max(...x);
|
|
1089
|
+
|
|
1090
|
+
const binomial = (n, k) =>{
|
|
1091
|
+
if(n !== Math.floor(n)) return TypeError('n must be an integer');
|
|
1092
|
+
if(k !== Math.floor(k)) return TypeError('k must be an integer');
|
|
1093
|
+
if (n < 0) return TypeError('n must be non-negative');
|
|
1094
|
+
if (k < 0 || n < 0 || k > n) return 0;
|
|
1095
|
+
if (k > n - k) k = n - k;
|
|
1096
|
+
let c = 1, i;
|
|
1097
|
+
for (i = 0; i < k; i++)
|
|
1098
|
+
c = c * (n - i) / (i + 1);
|
|
1099
|
+
return c;
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
// export const mean = (...x) => x.reduce((a, b) => a + b) / x.length;
|
|
1103
|
+
|
|
1104
|
+
// export const variance = (...x) => {
|
|
1105
|
+
// const n = x.length;
|
|
1106
|
+
// if (n === 0) return NaN;
|
|
1107
|
+
// const x_mean = mean(...x);
|
|
1108
|
+
// return x.reduce((sum, xi) => sum + (xi - x_mean) ** 2, 0) / n;
|
|
1109
|
+
// };
|
|
1110
|
+
|
|
1111
|
+
// export const std = (...x) => Math.sqrt(variance(...x));
|
|
1112
|
+
|
|
1113
|
+
// export const accum_sum = (...x) => {
|
|
1114
|
+
// let result = [];
|
|
1115
|
+
// let total = 0, i, n = x.length;
|
|
1116
|
+
// for(i = 0; i < n ; i++){
|
|
1117
|
+
// total = add(total, x[i])
|
|
1118
|
+
// result.push(total);
|
|
1119
|
+
// }
|
|
1120
|
+
// return result;
|
|
1121
|
+
// };
|
|
1122
|
+
|
|
1123
|
+
const accum_prod = (...x) => {
|
|
1124
|
+
let result = [];
|
|
1125
|
+
let prod = 1, i, n = x.length;
|
|
1126
|
+
for(i = 0; i < n ; i++){
|
|
1127
|
+
prod = mul(prod, x[i]);
|
|
1128
|
+
result.push(prod);
|
|
1129
|
+
}
|
|
1130
|
+
return result;
|
|
1131
|
+
};
|
|
1132
|
+
|
|
1133
|
+
// export const percentile = (X, p) => {
|
|
1134
|
+
// if (X.length === 0)
|
|
1135
|
+
// return NaN;
|
|
1136
|
+
// let a = [...X].sort((x, y) => x - y);
|
|
1137
|
+
// let index = (p / 100) * (a.length - 1);
|
|
1138
|
+
// let i = Math.floor(index);
|
|
1139
|
+
// let f = index - i;
|
|
1140
|
+
// if (i === a.length - 1)
|
|
1141
|
+
// return a[i];
|
|
1142
|
+
// return a[i] * (1 - f) + a[i + 1] * f;
|
|
1143
|
+
// }
|
|
1144
|
+
|
|
1145
|
+
// export const median = X => percentile(X, 50);
|
|
1146
|
+
|
|
940
1147
|
const not = x => {
|
|
941
1148
|
if(x.isComplex?.()) return new x.constructor(not(x.a), not(x.b))
|
|
942
1149
|
if(x.isMatrix?.()) return new x.constructor(x.rows, x.cols, x.arr.flat(1).map(not))
|
|
@@ -2049,6 +2256,7 @@
|
|
|
2049
2256
|
else this.target = element?.parentElement;
|
|
2050
2257
|
Object.assign(this.cache, {
|
|
2051
2258
|
name,
|
|
2259
|
+
itemsTarget : this,
|
|
2052
2260
|
isInteractive : false,
|
|
2053
2261
|
parent:null,
|
|
2054
2262
|
isBody:false,
|
|
@@ -2085,7 +2293,7 @@
|
|
|
2085
2293
|
get element(){
|
|
2086
2294
|
return this.cache.element;
|
|
2087
2295
|
}
|
|
2088
|
-
|
|
2296
|
+
[Symbol.iterator](){
|
|
2089
2297
|
return this.items[Symbol.iterator]();
|
|
2090
2298
|
}
|
|
2091
2299
|
maintain() {
|
|
@@ -2311,12 +2519,6 @@
|
|
|
2311
2519
|
}
|
|
2312
2520
|
const text = (...str) => new ZikoUIText(...str);
|
|
2313
2521
|
|
|
2314
|
-
// import { isStateGetter } from "../../../hooks/use-state.js";
|
|
2315
|
-
// import {
|
|
2316
|
-
// is_camelcase,
|
|
2317
|
-
// camel2hyphencase
|
|
2318
|
-
// } from '../../../data/string/index.js';
|
|
2319
|
-
|
|
2320
2522
|
function append(...ele) {
|
|
2321
2523
|
__addItem__.call(this, "append", "push", ...ele);
|
|
2322
2524
|
return this;
|
|
@@ -2326,19 +2528,30 @@
|
|
|
2326
2528
|
return this;
|
|
2327
2529
|
}
|
|
2328
2530
|
function insertAt(index, ...ele) {
|
|
2329
|
-
|
|
2330
|
-
|
|
2531
|
+
const target = this.itemsTarget;
|
|
2532
|
+
|
|
2533
|
+
if (index >= target.items.length) return this.append(...ele);
|
|
2534
|
+
|
|
2331
2535
|
for (let i = 0; i < ele.length; i++) {
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2536
|
+
if (["number", "string"].includes(typeof ele[i]))
|
|
2537
|
+
ele[i] = text(ele[i]);
|
|
2538
|
+
|
|
2539
|
+
target.element?.insertBefore(
|
|
2540
|
+
ele[i].element,
|
|
2541
|
+
target.items[index].element
|
|
2542
|
+
);
|
|
2543
|
+
|
|
2544
|
+
target.items.splice(index, 0, ele[i]);
|
|
2335
2545
|
}
|
|
2336
|
-
|
|
2546
|
+
|
|
2547
|
+
target.maintain();
|
|
2548
|
+
|
|
2549
|
+
return this;
|
|
2337
2550
|
}
|
|
2338
2551
|
function remove(...ele) {
|
|
2339
2552
|
const remove = (ele) => {
|
|
2340
2553
|
if (typeof ele === "number") ele = this.items[ele];
|
|
2341
|
-
if (ele?.isUIElement) this.element?.removeChild(ele.element);
|
|
2554
|
+
if (ele?.isUIElement) this.itemsTarget.element?.removeChild(ele.element);
|
|
2342
2555
|
this.items = this.items.filter((n) => n !== ele);
|
|
2343
2556
|
};
|
|
2344
2557
|
for (let i = 0; i < ele.length; i++) remove(ele[i]);
|
|
@@ -2349,7 +2562,7 @@
|
|
|
2349
2562
|
}
|
|
2350
2563
|
function clear(){
|
|
2351
2564
|
this?.items?.forEach(n=>n.unmount());
|
|
2352
|
-
this.element.innerHTML =
|
|
2565
|
+
this.itemsTarget.element.innerHTML = '';
|
|
2353
2566
|
return this;
|
|
2354
2567
|
}
|
|
2355
2568
|
function replaceElementWith(new_element){
|
|
@@ -2361,12 +2574,12 @@
|
|
|
2361
2574
|
}
|
|
2362
2575
|
function after(ui){
|
|
2363
2576
|
if(ui?.isUIElement) ui=ui.element;
|
|
2364
|
-
this.element?.after(ui);
|
|
2577
|
+
this.itemsTarget.element?.after(ui);
|
|
2365
2578
|
return this;
|
|
2366
2579
|
}
|
|
2367
2580
|
function before(ui){
|
|
2368
2581
|
if(ui?.isUIElement) ui=ui.element;
|
|
2369
|
-
this.element?.before(ui);
|
|
2582
|
+
this.itemsTarget.element?.before(ui);
|
|
2370
2583
|
return this;
|
|
2371
2584
|
}
|
|
2372
2585
|
|
|
@@ -2374,6 +2587,9 @@
|
|
|
2374
2587
|
|
|
2375
2588
|
|
|
2376
2589
|
async function __addItem__(adder, pusher, ...ele) {
|
|
2590
|
+
const itemsTarget_el = this.itemsTarget.element;
|
|
2591
|
+
const itemsTarget = this.itemsTarget;
|
|
2592
|
+
|
|
2377
2593
|
if (this.cache.isFrozzen) {
|
|
2378
2594
|
console.warn("You can't append new item to frozzen element");
|
|
2379
2595
|
return this;
|
|
@@ -2389,22 +2605,22 @@
|
|
|
2389
2605
|
(newValue) => (ele[i].element.textContent = newValue),
|
|
2390
2606
|
ele[i]
|
|
2391
2607
|
);
|
|
2392
|
-
// this.element.appendChild(textNode);
|
|
2608
|
+
// this.itemsTarget.element.appendChild(textNode);
|
|
2393
2609
|
}
|
|
2394
2610
|
}
|
|
2395
2611
|
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
2396
2612
|
if (ele[i]?.isUINode) {
|
|
2397
2613
|
ele[i].cache.parent = this;
|
|
2398
|
-
|
|
2399
|
-
ele[i].target = this.element;
|
|
2400
|
-
|
|
2614
|
+
itemsTarget_el?.[adder](ele[i].element);
|
|
2615
|
+
ele[i].target = this.itemsTarget.element;
|
|
2616
|
+
itemsTarget.items[pusher](ele[i]);
|
|
2401
2617
|
}
|
|
2402
2618
|
else if(ele[i] instanceof Promise){
|
|
2403
2619
|
const UIEle = await ele[i];
|
|
2404
2620
|
UIEle.cache.parent = this;
|
|
2405
|
-
|
|
2406
|
-
UIEle.target = this.element;
|
|
2407
|
-
|
|
2621
|
+
itemsTarget_el?.[adder](UIEle.element);
|
|
2622
|
+
UIEle.target = this.itemsTarget.element;
|
|
2623
|
+
itemsTarget.items[pusher](UIEle);
|
|
2408
2624
|
}
|
|
2409
2625
|
else if (ele[i] instanceof Object) {
|
|
2410
2626
|
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
@@ -2895,7 +3111,14 @@
|
|
|
2895
3111
|
|
|
2896
3112
|
if(element)this.init(element, name, type, render);
|
|
2897
3113
|
}
|
|
2898
|
-
on(event_name, callback, {details_setter, category = 'global', isCustom = false,preventDefault = false} = {}){
|
|
3114
|
+
on(event_name, callback, {details_setter, category = 'global', isCustom = false, preventDefault = false} = {}){
|
|
3115
|
+
if(event_name instanceof Array) event_name.forEach(
|
|
3116
|
+
event => this.on(
|
|
3117
|
+
event,
|
|
3118
|
+
callback,
|
|
3119
|
+
{details_setter, category, isCustom, preventDefault}
|
|
3120
|
+
)
|
|
3121
|
+
);
|
|
2899
3122
|
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
2900
3123
|
isCustom && this.exp.events[category].cache.customEvents.add(event_name);
|
|
2901
3124
|
const EVENT = this.exp.events[category];
|
|
@@ -2909,10 +3132,22 @@
|
|
|
2909
3132
|
}
|
|
2910
3133
|
_off(event, category = 'global'){
|
|
2911
3134
|
this.exp.events[category].removeListener(event);
|
|
3135
|
+
return this
|
|
2912
3136
|
}
|
|
2913
3137
|
get element(){
|
|
2914
3138
|
return this.cache.element;
|
|
2915
3139
|
}
|
|
3140
|
+
get itemsTarget(){
|
|
3141
|
+
return this.cache.itemsTarget;
|
|
3142
|
+
}
|
|
3143
|
+
get itemsTargetElement(){
|
|
3144
|
+
return this.itemsTarget.element;
|
|
3145
|
+
}
|
|
3146
|
+
setItemsTarget(parent){
|
|
3147
|
+
this.cache.itemsTarget = parent;
|
|
3148
|
+
this.items = parent.items;
|
|
3149
|
+
return this;
|
|
3150
|
+
}
|
|
2916
3151
|
isInteractive(){
|
|
2917
3152
|
return this.cache.isInteractive;
|
|
2918
3153
|
}
|
|
@@ -3519,14 +3754,14 @@
|
|
|
3519
3754
|
};
|
|
3520
3755
|
|
|
3521
3756
|
this.append(...items);
|
|
3522
|
-
this
|
|
3757
|
+
this.render();
|
|
3523
3758
|
}
|
|
3524
3759
|
get activeItem(){
|
|
3525
3760
|
return this.items[this.states.activeIndex]
|
|
3526
3761
|
}
|
|
3527
|
-
|
|
3762
|
+
render() {
|
|
3528
3763
|
this.items.forEach((n, i) => {
|
|
3529
|
-
|
|
3764
|
+
|
|
3530
3765
|
const initialDisplay = n.element?.style?.display || '';
|
|
3531
3766
|
this.#DISPLAYS_MAP.set(n, initialDisplay);
|
|
3532
3767
|
|
|
@@ -3577,6 +3812,22 @@
|
|
|
3577
3812
|
|
|
3578
3813
|
const Fragment = (...items) => new UIFragment(...items);
|
|
3579
3814
|
|
|
3815
|
+
class UIFor extends UIFragment{
|
|
3816
|
+
constructor({each, fallback, mapFn = () => {}} = {}){
|
|
3817
|
+
super();
|
|
3818
|
+
this.config = {
|
|
3819
|
+
each,
|
|
3820
|
+
fallback,
|
|
3821
|
+
mapFn
|
|
3822
|
+
};
|
|
3823
|
+
this.append(
|
|
3824
|
+
...this.config.each.map((n,i) => this.config.mapFn(n, i))
|
|
3825
|
+
);
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
|
|
3829
|
+
const For = ({each, fallback, mapFn} = {}) => new UIFor({each, fallback, mapFn});
|
|
3830
|
+
|
|
3580
3831
|
const { PI, sqrt: sqrt$1, cos: cos$2, sin: sin$2, acos, pow } = Math;
|
|
3581
3832
|
|
|
3582
3833
|
const linear = t => t;
|
|
@@ -4993,6 +5244,7 @@
|
|
|
4993
5244
|
exports.EventController = EventController;
|
|
4994
5245
|
exports.FileBasedRouting = FileBasedRouting;
|
|
4995
5246
|
exports.Flex = Flex;
|
|
5247
|
+
exports.For = For;
|
|
4996
5248
|
exports.Fragment = Fragment;
|
|
4997
5249
|
exports.HTMLWrapper = HTMLWrapper;
|
|
4998
5250
|
exports.KeyListeners = KeyListeners;
|
|
@@ -5030,7 +5282,10 @@
|
|
|
5030
5282
|
exports.ZikoUISuspense = ZikoUISuspense;
|
|
5031
5283
|
exports.ZikoUIText = ZikoUIText;
|
|
5032
5284
|
exports.abs = abs;
|
|
5285
|
+
exports.accum_max = accum_max;
|
|
5286
|
+
exports.accum_min = accum_min;
|
|
5033
5287
|
exports.accum_prod = accum_prod;
|
|
5288
|
+
exports.accum_product = accum_product;
|
|
5034
5289
|
exports.accum_sum = accum_sum;
|
|
5035
5290
|
exports.acos = acos$1;
|
|
5036
5291
|
exports.acosh = acosh;
|
|
@@ -5056,6 +5311,7 @@
|
|
|
5056
5311
|
exports.clock = clock;
|
|
5057
5312
|
exports.cloneUI = cloneUI;
|
|
5058
5313
|
exports.complex = complex;
|
|
5314
|
+
exports.contraharmonic_mean = contraharmonic_mean;
|
|
5059
5315
|
exports.cos = cos$3;
|
|
5060
5316
|
exports.cosh = cosh$2;
|
|
5061
5317
|
exports.coth = coth;
|
|
@@ -5072,9 +5328,12 @@
|
|
|
5072
5328
|
exports.discret = discret;
|
|
5073
5329
|
exports.div = div;
|
|
5074
5330
|
exports.elastic = elastic;
|
|
5331
|
+
exports.ema = ema;
|
|
5075
5332
|
exports.exp = exp$1;
|
|
5076
5333
|
exports.floor = floor;
|
|
5077
5334
|
exports.fract = fract;
|
|
5335
|
+
exports.geo_mean = geo_mean;
|
|
5336
|
+
exports.harmonic_mean = harmonic_mean;
|
|
5078
5337
|
exports.hypot = hypot;
|
|
5079
5338
|
exports.in_back = in_back;
|
|
5080
5339
|
exports.in_bounce = in_bounce;
|
|
@@ -5096,6 +5355,8 @@
|
|
|
5096
5355
|
exports.in_quart = in_quart;
|
|
5097
5356
|
exports.in_quint = in_quint;
|
|
5098
5357
|
exports.in_sin = in_sin;
|
|
5358
|
+
exports.interquartile_mean = interquartile_mean;
|
|
5359
|
+
exports.iqr = iqr;
|
|
5099
5360
|
exports.isPrimitive = isPrimitive;
|
|
5100
5361
|
exports.isStateGetter = isStateGetter;
|
|
5101
5362
|
exports.json2arr = json2arr;
|
|
@@ -5120,6 +5381,8 @@
|
|
|
5120
5381
|
exports.max = max;
|
|
5121
5382
|
exports.mean = mean;
|
|
5122
5383
|
exports.median = median;
|
|
5384
|
+
exports.midhinge = midhinge;
|
|
5385
|
+
exports.midrange = midrange;
|
|
5123
5386
|
exports.min = min;
|
|
5124
5387
|
exports.modulo = modulo;
|
|
5125
5388
|
exports.mul = mul;
|
|
@@ -5127,6 +5390,7 @@
|
|
|
5127
5390
|
exports.nor = nor;
|
|
5128
5391
|
exports.norm = norm;
|
|
5129
5392
|
exports.normalize_css_value = normalize_css_value;
|
|
5393
|
+
exports.not = not;
|
|
5130
5394
|
exports.nthr = nthr;
|
|
5131
5395
|
exports.or = or;
|
|
5132
5396
|
exports.out_back = out_back;
|
|
@@ -5141,12 +5405,20 @@
|
|
|
5141
5405
|
exports.out_sin = out_sin;
|
|
5142
5406
|
exports.percentile = percentile;
|
|
5143
5407
|
exports.pow = pow$1;
|
|
5408
|
+
exports.power_mean = power_mean;
|
|
5409
|
+
exports.q1 = q1;
|
|
5410
|
+
exports.q3 = q3;
|
|
5144
5411
|
exports.rad2deg = rad2deg;
|
|
5145
5412
|
exports.register_click_away_event = register_click_away_event;
|
|
5146
5413
|
exports.register_swipe_event = register_swipe_event;
|
|
5147
5414
|
exports.register_view_event = register_view_event;
|
|
5148
5415
|
exports.remove_class = remove_class;
|
|
5416
|
+
exports.rms = rms;
|
|
5417
|
+
exports.rolling_std = rolling_std;
|
|
5418
|
+
exports.rolling_variance = rolling_variance;
|
|
5149
5419
|
exports.round = round;
|
|
5420
|
+
exports.sample_std = sample_std;
|
|
5421
|
+
exports.sample_variance = sample_variance;
|
|
5150
5422
|
exports.script = script;
|
|
5151
5423
|
exports.sec = sec;
|
|
5152
5424
|
exports.sig = sig;
|
|
@@ -5154,6 +5426,7 @@
|
|
|
5154
5426
|
exports.sin = sin$3;
|
|
5155
5427
|
exports.sinh = sinh$1;
|
|
5156
5428
|
exports.sleep = sleep;
|
|
5429
|
+
exports.sma = sma;
|
|
5157
5430
|
exports.sqrt = sqrt$2;
|
|
5158
5431
|
exports.std = std;
|
|
5159
5432
|
exports.step = step;
|
|
@@ -5173,6 +5446,7 @@
|
|
|
5173
5446
|
exports.timeTaken = timeTaken;
|
|
5174
5447
|
exports.time_memory_Taken = time_memory_Taken;
|
|
5175
5448
|
exports.timeout = timeout;
|
|
5449
|
+
exports.trimmed_mean = trimmed_mean;
|
|
5176
5450
|
exports.trunc = trunc;
|
|
5177
5451
|
exports.useDerived = useDerived;
|
|
5178
5452
|
exports.useEventEmitter = useEventEmitter;
|
|
@@ -5192,6 +5466,11 @@
|
|
|
5192
5466
|
exports.waitForUIElm = waitForUIElm;
|
|
5193
5467
|
exports.waitForUIElmSync = waitForUIElmSync;
|
|
5194
5468
|
exports.watchQueryParams = watchQueryParams;
|
|
5469
|
+
exports.weighted_mean = weighted_mean;
|
|
5470
|
+
exports.weighted_std = weighted_std;
|
|
5471
|
+
exports.weighted_variance = weighted_variance;
|
|
5472
|
+
exports.winsorized_mean = winsorized_mean;
|
|
5473
|
+
exports.wma = wma;
|
|
5195
5474
|
exports.xnor = xnor;
|
|
5196
5475
|
exports.xor = xor;
|
|
5197
5476
|
|