sprae 6.1.2 → 7.0.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/package.json +2 -1
- package/readme.md +38 -5
- package/sprae.auto.js +600 -243
- package/sprae.auto.min.js +1 -1
- package/sprae.js +600 -243
- package/sprae.min.js +1 -1
- package/src/core.js +2 -9
- package/src/directives.js +3 -1
- package/src/{state.js → state.proxy.js} +36 -15
- package/src/state.signals-proxy.js +104 -0
- package/src/state.signals.js +82 -0
package/sprae.auto.js
CHANGED
|
@@ -1,44 +1,386 @@
|
|
|
1
1
|
(() => {
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
// node_modules/@preact/signals-core/dist/signals-core.module.js
|
|
3
|
+
function i() {
|
|
4
|
+
throw new Error("Cycle detected");
|
|
5
|
+
}
|
|
6
|
+
var t = Symbol.for("preact-signals");
|
|
7
|
+
function r() {
|
|
8
|
+
if (!(v > 1)) {
|
|
9
|
+
var i2, t2 = false;
|
|
10
|
+
while (void 0 !== f) {
|
|
11
|
+
var r2 = f;
|
|
12
|
+
f = void 0;
|
|
13
|
+
e++;
|
|
14
|
+
while (void 0 !== r2) {
|
|
15
|
+
var n2 = r2.o;
|
|
16
|
+
r2.o = void 0;
|
|
17
|
+
r2.f &= -3;
|
|
18
|
+
if (!(8 & r2.f) && l(r2))
|
|
19
|
+
try {
|
|
20
|
+
r2.c();
|
|
21
|
+
} catch (r3) {
|
|
22
|
+
if (!t2) {
|
|
23
|
+
i2 = r3;
|
|
24
|
+
t2 = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
r2 = n2;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
e = 0;
|
|
31
|
+
v--;
|
|
32
|
+
if (t2)
|
|
33
|
+
throw i2;
|
|
34
|
+
} else
|
|
35
|
+
v--;
|
|
36
|
+
}
|
|
37
|
+
function n(i2) {
|
|
38
|
+
if (v > 0)
|
|
39
|
+
return i2();
|
|
40
|
+
v++;
|
|
41
|
+
try {
|
|
42
|
+
return i2();
|
|
43
|
+
} finally {
|
|
44
|
+
r();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
var o = void 0;
|
|
48
|
+
var f = void 0;
|
|
49
|
+
var v = 0;
|
|
50
|
+
var e = 0;
|
|
51
|
+
var u = 0;
|
|
52
|
+
function c(i2) {
|
|
53
|
+
if (void 0 !== o) {
|
|
54
|
+
var t2 = i2.n;
|
|
55
|
+
if (void 0 === t2 || t2.t !== o) {
|
|
56
|
+
t2 = { i: 0, S: i2, p: o.s, n: void 0, t: o, e: void 0, x: void 0, r: t2 };
|
|
57
|
+
if (void 0 !== o.s)
|
|
58
|
+
o.s.n = t2;
|
|
59
|
+
o.s = t2;
|
|
60
|
+
i2.n = t2;
|
|
61
|
+
if (32 & o.f)
|
|
62
|
+
i2.S(t2);
|
|
63
|
+
return t2;
|
|
64
|
+
} else if (-1 === t2.i) {
|
|
65
|
+
t2.i = 0;
|
|
66
|
+
if (void 0 !== t2.n) {
|
|
67
|
+
t2.n.p = t2.p;
|
|
68
|
+
if (void 0 !== t2.p)
|
|
69
|
+
t2.p.n = t2.n;
|
|
70
|
+
t2.p = o.s;
|
|
71
|
+
t2.n = void 0;
|
|
72
|
+
o.s.n = t2;
|
|
73
|
+
o.s = t2;
|
|
74
|
+
}
|
|
75
|
+
return t2;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function d(i2) {
|
|
80
|
+
this.v = i2;
|
|
81
|
+
this.i = 0;
|
|
82
|
+
this.n = void 0;
|
|
83
|
+
this.t = void 0;
|
|
84
|
+
}
|
|
85
|
+
d.prototype.brand = t;
|
|
86
|
+
d.prototype.h = function() {
|
|
87
|
+
return true;
|
|
9
88
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
89
|
+
d.prototype.S = function(i2) {
|
|
90
|
+
if (this.t !== i2 && void 0 === i2.e) {
|
|
91
|
+
i2.x = this.t;
|
|
92
|
+
if (void 0 !== this.t)
|
|
93
|
+
this.t.e = i2;
|
|
94
|
+
this.t = i2;
|
|
15
95
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
96
|
+
};
|
|
97
|
+
d.prototype.U = function(i2) {
|
|
98
|
+
if (void 0 !== this.t) {
|
|
99
|
+
var t2 = i2.e, r2 = i2.x;
|
|
100
|
+
if (void 0 !== t2) {
|
|
101
|
+
t2.x = r2;
|
|
102
|
+
i2.e = void 0;
|
|
103
|
+
}
|
|
104
|
+
if (void 0 !== r2) {
|
|
105
|
+
r2.e = t2;
|
|
106
|
+
i2.x = void 0;
|
|
107
|
+
}
|
|
108
|
+
if (i2 === this.t)
|
|
109
|
+
this.t = r2;
|
|
20
110
|
}
|
|
21
|
-
|
|
22
|
-
|
|
111
|
+
};
|
|
112
|
+
d.prototype.subscribe = function(i2) {
|
|
113
|
+
var t2 = this;
|
|
114
|
+
return O(function() {
|
|
115
|
+
var r2 = t2.value, n2 = 32 & this.f;
|
|
116
|
+
this.f &= -33;
|
|
117
|
+
try {
|
|
118
|
+
i2(r2);
|
|
119
|
+
} finally {
|
|
120
|
+
this.f |= n2;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
d.prototype.valueOf = function() {
|
|
125
|
+
return this.value;
|
|
126
|
+
};
|
|
127
|
+
d.prototype.toString = function() {
|
|
128
|
+
return this.value + "";
|
|
129
|
+
};
|
|
130
|
+
d.prototype.toJSON = function() {
|
|
131
|
+
return this.value;
|
|
132
|
+
};
|
|
133
|
+
d.prototype.peek = function() {
|
|
134
|
+
return this.v;
|
|
135
|
+
};
|
|
136
|
+
Object.defineProperty(d.prototype, "value", { get: function() {
|
|
137
|
+
var i2 = c(this);
|
|
138
|
+
if (void 0 !== i2)
|
|
139
|
+
i2.i = this.i;
|
|
140
|
+
return this.v;
|
|
141
|
+
}, set: function(t2) {
|
|
142
|
+
if (o instanceof _)
|
|
143
|
+
!function() {
|
|
144
|
+
throw new Error("Computed cannot have side-effects");
|
|
145
|
+
}();
|
|
146
|
+
if (t2 !== this.v) {
|
|
147
|
+
if (e > 100)
|
|
148
|
+
i();
|
|
149
|
+
this.v = t2;
|
|
150
|
+
this.i++;
|
|
151
|
+
u++;
|
|
152
|
+
v++;
|
|
153
|
+
try {
|
|
154
|
+
for (var n2 = this.t; void 0 !== n2; n2 = n2.x)
|
|
155
|
+
n2.t.N();
|
|
156
|
+
} finally {
|
|
157
|
+
r();
|
|
158
|
+
}
|
|
23
159
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
160
|
+
} });
|
|
161
|
+
function a(i2) {
|
|
162
|
+
return new d(i2);
|
|
163
|
+
}
|
|
164
|
+
function l(i2) {
|
|
165
|
+
for (var t2 = i2.s; void 0 !== t2; t2 = t2.n)
|
|
166
|
+
if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i)
|
|
167
|
+
return true;
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
function y(i2) {
|
|
171
|
+
for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {
|
|
172
|
+
var r2 = t2.S.n;
|
|
173
|
+
if (void 0 !== r2)
|
|
174
|
+
t2.r = r2;
|
|
175
|
+
t2.S.n = t2;
|
|
176
|
+
t2.i = -1;
|
|
177
|
+
if (void 0 === t2.n) {
|
|
178
|
+
i2.s = t2;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function w(i2) {
|
|
184
|
+
var t2 = i2.s, r2 = void 0;
|
|
185
|
+
while (void 0 !== t2) {
|
|
186
|
+
var n2 = t2.p;
|
|
187
|
+
if (-1 === t2.i) {
|
|
188
|
+
t2.S.U(t2);
|
|
189
|
+
if (void 0 !== n2)
|
|
190
|
+
n2.n = t2.n;
|
|
191
|
+
if (void 0 !== t2.n)
|
|
192
|
+
t2.n.p = n2;
|
|
193
|
+
} else
|
|
194
|
+
r2 = t2;
|
|
195
|
+
t2.S.n = t2.r;
|
|
196
|
+
if (void 0 !== t2.r)
|
|
197
|
+
t2.r = void 0;
|
|
198
|
+
t2 = n2;
|
|
199
|
+
}
|
|
200
|
+
i2.s = r2;
|
|
201
|
+
}
|
|
202
|
+
function _(i2) {
|
|
203
|
+
d.call(this, void 0);
|
|
204
|
+
this.x = i2;
|
|
205
|
+
this.s = void 0;
|
|
206
|
+
this.g = u - 1;
|
|
207
|
+
this.f = 4;
|
|
208
|
+
}
|
|
209
|
+
(_.prototype = new d()).h = function() {
|
|
210
|
+
this.f &= -3;
|
|
211
|
+
if (1 & this.f)
|
|
212
|
+
return false;
|
|
213
|
+
if (32 == (36 & this.f))
|
|
214
|
+
return true;
|
|
215
|
+
this.f &= -5;
|
|
216
|
+
if (this.g === u)
|
|
217
|
+
return true;
|
|
218
|
+
this.g = u;
|
|
219
|
+
this.f |= 1;
|
|
220
|
+
if (this.i > 0 && !l(this)) {
|
|
221
|
+
this.f &= -2;
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
var i2 = o;
|
|
225
|
+
try {
|
|
226
|
+
y(this);
|
|
227
|
+
o = this;
|
|
228
|
+
var t2 = this.x();
|
|
229
|
+
if (16 & this.f || this.v !== t2 || 0 === this.i) {
|
|
230
|
+
this.v = t2;
|
|
231
|
+
this.f &= -17;
|
|
232
|
+
this.i++;
|
|
233
|
+
}
|
|
234
|
+
} catch (i3) {
|
|
235
|
+
this.v = i3;
|
|
236
|
+
this.f |= 16;
|
|
237
|
+
this.i++;
|
|
238
|
+
}
|
|
239
|
+
o = i2;
|
|
240
|
+
w(this);
|
|
241
|
+
this.f &= -2;
|
|
242
|
+
return true;
|
|
243
|
+
};
|
|
244
|
+
_.prototype.S = function(i2) {
|
|
245
|
+
if (void 0 === this.t) {
|
|
246
|
+
this.f |= 36;
|
|
247
|
+
for (var t2 = this.s; void 0 !== t2; t2 = t2.n)
|
|
248
|
+
t2.S.S(t2);
|
|
249
|
+
}
|
|
250
|
+
d.prototype.S.call(this, i2);
|
|
251
|
+
};
|
|
252
|
+
_.prototype.U = function(i2) {
|
|
253
|
+
if (void 0 !== this.t) {
|
|
254
|
+
d.prototype.U.call(this, i2);
|
|
255
|
+
if (void 0 === this.t) {
|
|
256
|
+
this.f &= -33;
|
|
257
|
+
for (var t2 = this.s; void 0 !== t2; t2 = t2.n)
|
|
258
|
+
t2.S.U(t2);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
_.prototype.N = function() {
|
|
263
|
+
if (!(2 & this.f)) {
|
|
264
|
+
this.f |= 6;
|
|
265
|
+
for (var i2 = this.t; void 0 !== i2; i2 = i2.x)
|
|
266
|
+
i2.t.N();
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
_.prototype.peek = function() {
|
|
270
|
+
if (!this.h())
|
|
271
|
+
i();
|
|
272
|
+
if (16 & this.f)
|
|
273
|
+
throw this.v;
|
|
274
|
+
return this.v;
|
|
275
|
+
};
|
|
276
|
+
Object.defineProperty(_.prototype, "value", { get: function() {
|
|
277
|
+
if (1 & this.f)
|
|
278
|
+
i();
|
|
279
|
+
var t2 = c(this);
|
|
280
|
+
this.h();
|
|
281
|
+
if (void 0 !== t2)
|
|
282
|
+
t2.i = this.i;
|
|
283
|
+
if (16 & this.f)
|
|
284
|
+
throw this.v;
|
|
285
|
+
return this.v;
|
|
286
|
+
} });
|
|
287
|
+
function p(i2) {
|
|
288
|
+
return new _(i2);
|
|
289
|
+
}
|
|
290
|
+
function g(i2) {
|
|
291
|
+
var t2 = i2.u;
|
|
292
|
+
i2.u = void 0;
|
|
293
|
+
if ("function" == typeof t2) {
|
|
294
|
+
v++;
|
|
295
|
+
var n2 = o;
|
|
296
|
+
o = void 0;
|
|
297
|
+
try {
|
|
298
|
+
t2();
|
|
299
|
+
} catch (t3) {
|
|
300
|
+
i2.f &= -2;
|
|
301
|
+
i2.f |= 8;
|
|
302
|
+
b(i2);
|
|
303
|
+
throw t3;
|
|
304
|
+
} finally {
|
|
305
|
+
o = n2;
|
|
306
|
+
r();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
function b(i2) {
|
|
311
|
+
for (var t2 = i2.s; void 0 !== t2; t2 = t2.n)
|
|
312
|
+
t2.S.U(t2);
|
|
313
|
+
i2.x = void 0;
|
|
314
|
+
i2.s = void 0;
|
|
315
|
+
g(i2);
|
|
316
|
+
}
|
|
317
|
+
function x(i2) {
|
|
318
|
+
if (o !== this)
|
|
319
|
+
throw new Error("Out-of-order effect");
|
|
320
|
+
w(this);
|
|
321
|
+
o = i2;
|
|
322
|
+
this.f &= -2;
|
|
323
|
+
if (8 & this.f)
|
|
324
|
+
b(this);
|
|
325
|
+
r();
|
|
326
|
+
}
|
|
327
|
+
function E(i2) {
|
|
328
|
+
this.x = i2;
|
|
329
|
+
this.u = void 0;
|
|
330
|
+
this.s = void 0;
|
|
331
|
+
this.o = void 0;
|
|
332
|
+
this.f = 32;
|
|
333
|
+
}
|
|
334
|
+
E.prototype.c = function() {
|
|
335
|
+
var i2 = this.S();
|
|
336
|
+
try {
|
|
337
|
+
if (8 & this.f)
|
|
338
|
+
return;
|
|
339
|
+
if (void 0 === this.x)
|
|
340
|
+
return;
|
|
341
|
+
var t2 = this.x();
|
|
342
|
+
if ("function" == typeof t2)
|
|
343
|
+
this.u = t2;
|
|
344
|
+
} finally {
|
|
345
|
+
i2();
|
|
31
346
|
}
|
|
32
347
|
};
|
|
348
|
+
E.prototype.S = function() {
|
|
349
|
+
if (1 & this.f)
|
|
350
|
+
i();
|
|
351
|
+
this.f |= 1;
|
|
352
|
+
this.f &= -9;
|
|
353
|
+
g(this);
|
|
354
|
+
y(this);
|
|
355
|
+
v++;
|
|
356
|
+
var t2 = o;
|
|
357
|
+
o = this;
|
|
358
|
+
return x.bind(this, t2);
|
|
359
|
+
};
|
|
360
|
+
E.prototype.N = function() {
|
|
361
|
+
if (!(2 & this.f)) {
|
|
362
|
+
this.f |= 2;
|
|
363
|
+
this.o = f;
|
|
364
|
+
f = this;
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
E.prototype.d = function() {
|
|
368
|
+
this.f |= 8;
|
|
369
|
+
if (!(1 & this.f))
|
|
370
|
+
b(this);
|
|
371
|
+
};
|
|
372
|
+
function O(i2) {
|
|
373
|
+
var t2 = new E(i2);
|
|
374
|
+
try {
|
|
375
|
+
t2.c();
|
|
376
|
+
} catch (i3) {
|
|
377
|
+
t2.d();
|
|
378
|
+
throw i3;
|
|
379
|
+
}
|
|
380
|
+
return t2.d.bind(t2);
|
|
381
|
+
}
|
|
33
382
|
|
|
34
|
-
// src/state.js
|
|
35
|
-
var currentFx;
|
|
36
|
-
var batch = /* @__PURE__ */ new Set();
|
|
37
|
-
var pendingUpdate;
|
|
38
|
-
var targetFxs = /* @__PURE__ */ new WeakMap();
|
|
39
|
-
var targetProxy = /* @__PURE__ */ new WeakMap();
|
|
40
|
-
var proxyTarget = /* @__PURE__ */ new WeakMap();
|
|
41
|
-
var _parent = Symbol("parent");
|
|
383
|
+
// src/state.signals-proxy.js
|
|
42
384
|
var sandbox = {
|
|
43
385
|
Array,
|
|
44
386
|
Object,
|
|
@@ -50,149 +392,164 @@
|
|
|
50
392
|
window,
|
|
51
393
|
document,
|
|
52
394
|
history,
|
|
53
|
-
|
|
395
|
+
navigator,
|
|
396
|
+
location,
|
|
397
|
+
screen,
|
|
398
|
+
localStorage,
|
|
399
|
+
sessionStorage,
|
|
400
|
+
alert,
|
|
401
|
+
prompt,
|
|
402
|
+
confirm,
|
|
403
|
+
fetch,
|
|
404
|
+
performance,
|
|
405
|
+
setTimeout,
|
|
406
|
+
setInterval,
|
|
407
|
+
requestAnimationFrame
|
|
54
408
|
};
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
let
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
409
|
+
var isObject = (v2) => v2?.constructor === Object;
|
|
410
|
+
var memo = /* @__PURE__ */ new WeakMap();
|
|
411
|
+
var lastProp;
|
|
412
|
+
function createState(values, parent) {
|
|
413
|
+
if (!isObject(values) && !Array.isArray(values))
|
|
414
|
+
return values;
|
|
415
|
+
if (memo.has(values) && !parent)
|
|
416
|
+
return values;
|
|
417
|
+
const _len = Array.isArray(values) && a(values.length), signals = parent ? Object.create(memo.get(parent = createState(parent))) : Array.isArray(values) ? [] : {}, state = new Proxy(signals, {
|
|
418
|
+
has() {
|
|
419
|
+
return true;
|
|
420
|
+
},
|
|
421
|
+
get(signals2, key) {
|
|
422
|
+
let v2;
|
|
423
|
+
if (_len && key === "length")
|
|
424
|
+
v2 = Array.prototype[lastProp] ? _len.peek() : _len.value;
|
|
425
|
+
else
|
|
426
|
+
v2 = (signals2[key] || initSignal(key))?.valueOf();
|
|
427
|
+
if (_len)
|
|
428
|
+
lastProp = key;
|
|
429
|
+
return v2;
|
|
430
|
+
},
|
|
431
|
+
set(signals2, key, v2) {
|
|
432
|
+
if (_len && key === "length")
|
|
433
|
+
_len.value = signals2.length = v2;
|
|
434
|
+
else {
|
|
435
|
+
const s = signals2[key] || initSignal(key);
|
|
436
|
+
if (!s)
|
|
437
|
+
signals2[key] = a(createState(v2?.valueOf()));
|
|
438
|
+
else if (s._set)
|
|
439
|
+
s._set(v2);
|
|
440
|
+
else
|
|
441
|
+
s.value = createState(v2?.valueOf());
|
|
442
|
+
}
|
|
443
|
+
if (_len)
|
|
444
|
+
lastProp = null;
|
|
88
445
|
return true;
|
|
89
|
-
target[prop] = value;
|
|
90
|
-
let propFxs = targetFxs.get(target)?.[prop];
|
|
91
|
-
if (propFxs)
|
|
92
|
-
for (let fx2 of propFxs)
|
|
93
|
-
batch.add(fx2);
|
|
94
|
-
planUpdate();
|
|
95
|
-
return true;
|
|
96
|
-
},
|
|
97
|
-
deleteProperty(target, prop) {
|
|
98
|
-
target[prop] = void 0;
|
|
99
|
-
delete target[prop];
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
var state = (obj, parent) => {
|
|
104
|
-
if (targetProxy.has(obj))
|
|
105
|
-
return targetProxy.get(obj);
|
|
106
|
-
if (proxyTarget.has(obj))
|
|
107
|
-
return obj;
|
|
108
|
-
let proxy = new Proxy(obj, handler);
|
|
109
|
-
targetProxy.set(obj, proxy);
|
|
110
|
-
proxyTarget.set(proxy, obj);
|
|
111
|
-
let descriptors = Object.getOwnPropertyDescriptors(obj);
|
|
112
|
-
for (let name in descriptors) {
|
|
113
|
-
let desc = descriptors[name];
|
|
114
|
-
if (desc.get) {
|
|
115
|
-
if (desc.get)
|
|
116
|
-
desc.get = desc.get.bind(proxy), Object.defineProperty(obj, name, desc);
|
|
117
446
|
}
|
|
447
|
+
});
|
|
448
|
+
for (let key in values) {
|
|
449
|
+
signals[key] = initSignal(key);
|
|
118
450
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
var planUpdate = () => {
|
|
133
|
-
if (!pendingUpdate) {
|
|
134
|
-
pendingUpdate = true;
|
|
135
|
-
queueMicrotask(() => {
|
|
136
|
-
for (let fx2 of batch)
|
|
137
|
-
fx2.call();
|
|
138
|
-
batch.clear();
|
|
139
|
-
pendingUpdate = false;
|
|
140
|
-
});
|
|
451
|
+
function initSignal(key) {
|
|
452
|
+
if (values.hasOwnProperty(key)) {
|
|
453
|
+
const desc = Object.getOwnPropertyDescriptor(values, key);
|
|
454
|
+
if (desc?.get) {
|
|
455
|
+
(signals[key] = p(desc.get.bind(state)))._set = desc.set?.bind(state);
|
|
456
|
+
return signals[key];
|
|
457
|
+
}
|
|
458
|
+
return signals[key] = desc.value?.peek ? desc.value : a(createState(desc.value));
|
|
459
|
+
}
|
|
460
|
+
if (parent)
|
|
461
|
+
return parent[key];
|
|
462
|
+
if (sandbox.hasOwnProperty(key))
|
|
463
|
+
return sandbox[key];
|
|
141
464
|
}
|
|
142
|
-
|
|
465
|
+
memo.set(state, signals);
|
|
466
|
+
return state;
|
|
467
|
+
}
|
|
143
468
|
|
|
144
469
|
// src/domdiff.js
|
|
145
|
-
function domdiff_default(parent,
|
|
470
|
+
function domdiff_default(parent, a2, b2, before) {
|
|
146
471
|
const aIdx = /* @__PURE__ */ new Map();
|
|
147
472
|
const bIdx = /* @__PURE__ */ new Map();
|
|
148
|
-
let
|
|
473
|
+
let i2;
|
|
149
474
|
let j;
|
|
150
|
-
for (
|
|
151
|
-
aIdx.set(
|
|
475
|
+
for (i2 = 0; i2 < a2.length; i2++) {
|
|
476
|
+
aIdx.set(a2[i2], i2);
|
|
152
477
|
}
|
|
153
|
-
for (
|
|
154
|
-
bIdx.set(
|
|
478
|
+
for (i2 = 0; i2 < b2.length; i2++) {
|
|
479
|
+
bIdx.set(b2[i2], i2);
|
|
155
480
|
}
|
|
156
|
-
for (
|
|
157
|
-
var aElm =
|
|
481
|
+
for (i2 = j = 0; i2 !== a2.length || j !== b2.length; ) {
|
|
482
|
+
var aElm = a2[i2], bElm = b2[j];
|
|
158
483
|
if (aElm === null) {
|
|
159
|
-
|
|
160
|
-
} else if (
|
|
161
|
-
parent.removeChild(
|
|
162
|
-
|
|
163
|
-
} else if (
|
|
164
|
-
parent.insertBefore(bElm,
|
|
484
|
+
i2++;
|
|
485
|
+
} else if (b2.length <= j) {
|
|
486
|
+
parent.removeChild(a2[i2]);
|
|
487
|
+
i2++;
|
|
488
|
+
} else if (a2.length <= i2) {
|
|
489
|
+
parent.insertBefore(bElm, a2[i2] || before);
|
|
165
490
|
j++;
|
|
166
491
|
} else if (aElm === bElm) {
|
|
167
|
-
|
|
492
|
+
i2++;
|
|
168
493
|
j++;
|
|
169
494
|
} else {
|
|
170
495
|
var curElmInNew = bIdx.get(aElm);
|
|
171
496
|
var wantedElmInOld = aIdx.get(bElm);
|
|
172
497
|
if (curElmInNew === void 0) {
|
|
173
|
-
parent.removeChild(
|
|
174
|
-
|
|
498
|
+
parent.removeChild(a2[i2]);
|
|
499
|
+
i2++;
|
|
175
500
|
} else if (wantedElmInOld === void 0) {
|
|
176
501
|
parent.insertBefore(
|
|
177
502
|
bElm,
|
|
178
|
-
|
|
503
|
+
a2[i2] || before
|
|
179
504
|
);
|
|
180
505
|
j++;
|
|
181
506
|
} else {
|
|
182
507
|
parent.insertBefore(
|
|
183
|
-
|
|
184
|
-
|
|
508
|
+
a2[wantedElmInOld],
|
|
509
|
+
a2[i2] || before
|
|
185
510
|
);
|
|
186
|
-
|
|
187
|
-
if (wantedElmInOld >
|
|
188
|
-
|
|
511
|
+
a2[wantedElmInOld] = null;
|
|
512
|
+
if (wantedElmInOld > i2 + 1)
|
|
513
|
+
i2++;
|
|
189
514
|
j++;
|
|
190
515
|
}
|
|
191
516
|
}
|
|
192
517
|
}
|
|
193
|
-
return
|
|
518
|
+
return b2;
|
|
194
519
|
}
|
|
195
520
|
|
|
521
|
+
// src/util.js
|
|
522
|
+
var queueMicrotask = Promise.prototype.then.bind(Promise.resolve());
|
|
523
|
+
var refs = /* @__PURE__ */ new WeakMap();
|
|
524
|
+
var set = (value) => {
|
|
525
|
+
const ref = new WeakRef(value);
|
|
526
|
+
refs.set(value, ref);
|
|
527
|
+
return ref;
|
|
528
|
+
};
|
|
529
|
+
var get = (value) => refs.get(value) || set(value);
|
|
530
|
+
var WeakishMap = class extends Map {
|
|
531
|
+
#registry = new FinalizationRegistry((key) => super.delete(key));
|
|
532
|
+
get size() {
|
|
533
|
+
return [...this].length;
|
|
534
|
+
}
|
|
535
|
+
constructor(entries = []) {
|
|
536
|
+
super();
|
|
537
|
+
for (const [key, value] of entries)
|
|
538
|
+
this.set(key, value);
|
|
539
|
+
}
|
|
540
|
+
get(key) {
|
|
541
|
+
return super.get(key)?.deref();
|
|
542
|
+
}
|
|
543
|
+
set(key, value) {
|
|
544
|
+
let ref = super.get(key);
|
|
545
|
+
if (ref)
|
|
546
|
+
this.#registry.unregister(ref);
|
|
547
|
+
ref = get(value);
|
|
548
|
+
this.#registry.register(value, key, ref);
|
|
549
|
+
return super.set(key, ref);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
|
|
196
553
|
// src/directives.js
|
|
197
554
|
var primary = {};
|
|
198
555
|
var secondary = {};
|
|
@@ -214,12 +571,12 @@
|
|
|
214
571
|
break;
|
|
215
572
|
}
|
|
216
573
|
el.replaceWith(cur = holder);
|
|
217
|
-
return (
|
|
218
|
-
let
|
|
219
|
-
if (els[
|
|
574
|
+
return (state) => {
|
|
575
|
+
let i2 = clauses.findIndex((f2) => f2(state));
|
|
576
|
+
if (els[i2] != cur) {
|
|
220
577
|
;
|
|
221
|
-
(cur[_each] || cur).replaceWith(cur = els[
|
|
222
|
-
sprae(cur,
|
|
578
|
+
(cur[_each] || cur).replaceWith(cur = els[i2] || holder);
|
|
579
|
+
sprae(cur, state);
|
|
223
580
|
}
|
|
224
581
|
};
|
|
225
582
|
};
|
|
@@ -238,14 +595,14 @@
|
|
|
238
595
|
const scopes = new WeakishMap();
|
|
239
596
|
const itemEls = new WeakishMap();
|
|
240
597
|
let curEls = [];
|
|
241
|
-
return (
|
|
242
|
-
let list = evaluate(
|
|
598
|
+
return (state) => {
|
|
599
|
+
let list = evaluate(state);
|
|
243
600
|
if (!list)
|
|
244
601
|
list = [];
|
|
245
602
|
else if (typeof list === "number")
|
|
246
|
-
list = Array.from({ length: list }, (
|
|
603
|
+
list = Array.from({ length: list }, (_2, i2) => [i2 + 1, i2]);
|
|
247
604
|
else if (Array.isArray(list))
|
|
248
|
-
list = list.map((item,
|
|
605
|
+
list = list.map((item, i2) => [i2 + 1, item]);
|
|
249
606
|
else if (typeof list === "object")
|
|
250
607
|
list = Object.entries(list);
|
|
251
608
|
else
|
|
@@ -259,7 +616,7 @@
|
|
|
259
616
|
(el = itemEls.get(key)) || itemEls.set(key, el = tpl.cloneNode(true));
|
|
260
617
|
newEls.push(el);
|
|
261
618
|
if (key == null || !(scope = scopes.get(key))) {
|
|
262
|
-
scope =
|
|
619
|
+
scope = createState({ [each[0]]: item, [refExpr || ""]: null, [each[1]]: idx }, state);
|
|
263
620
|
if (key != null)
|
|
264
621
|
scopes.set(key, scope);
|
|
265
622
|
} else
|
|
@@ -268,19 +625,19 @@
|
|
|
268
625
|
}
|
|
269
626
|
domdiff_default(holder.parentNode, curEls, newEls, holder);
|
|
270
627
|
curEls = newEls;
|
|
271
|
-
for (let
|
|
272
|
-
sprae(newEls[
|
|
628
|
+
for (let i2 = 0; i2 < newEls.length; i2++) {
|
|
629
|
+
sprae(newEls[i2], elScopes[i2]);
|
|
273
630
|
}
|
|
274
631
|
};
|
|
275
632
|
};
|
|
276
633
|
primary["with"] = (el, expr, rootState) => {
|
|
277
634
|
let evaluate = parseExpr(el, expr, ":with");
|
|
278
635
|
const localState = evaluate(rootState);
|
|
279
|
-
let
|
|
280
|
-
sprae(el,
|
|
636
|
+
let state = createState(localState, rootState);
|
|
637
|
+
sprae(el, state);
|
|
281
638
|
};
|
|
282
|
-
primary["ref"] = (el, expr,
|
|
283
|
-
|
|
639
|
+
primary["ref"] = (el, expr, state) => {
|
|
640
|
+
state[expr] = el;
|
|
284
641
|
};
|
|
285
642
|
function parseForExpression(expression) {
|
|
286
643
|
let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
|
|
@@ -300,32 +657,32 @@
|
|
|
300
657
|
];
|
|
301
658
|
return [item, "", items];
|
|
302
659
|
}
|
|
303
|
-
secondary["render"] = (el, expr,
|
|
304
|
-
let evaluate = parseExpr(el, expr, ":render"), tpl = evaluate(
|
|
660
|
+
secondary["render"] = (el, expr, state) => {
|
|
661
|
+
let evaluate = parseExpr(el, expr, ":render"), tpl = evaluate(state);
|
|
305
662
|
if (!tpl)
|
|
306
663
|
exprError(new Error("Template not found"), el, expr, ":render");
|
|
307
664
|
let content = tpl.content.cloneNode(true);
|
|
308
665
|
el.replaceChildren(content);
|
|
309
|
-
sprae(el,
|
|
666
|
+
sprae(el, state);
|
|
310
667
|
};
|
|
311
668
|
secondary["id"] = (el, expr) => {
|
|
312
669
|
let evaluate = parseExpr(el, expr, ":id");
|
|
313
|
-
const update = (
|
|
314
|
-
return (
|
|
670
|
+
const update = (v2) => el.id = v2 || v2 === 0 ? v2 : "";
|
|
671
|
+
return (state) => update(evaluate(state));
|
|
315
672
|
};
|
|
316
673
|
secondary["class"] = (el, expr) => {
|
|
317
674
|
let evaluate = parseExpr(el, expr, ":class");
|
|
318
675
|
let initClassName = el.getAttribute("class");
|
|
319
|
-
return (
|
|
320
|
-
let
|
|
676
|
+
return (state) => {
|
|
677
|
+
let v2 = evaluate(state);
|
|
321
678
|
let className = [initClassName];
|
|
322
|
-
if (
|
|
323
|
-
if (typeof
|
|
324
|
-
className.push(
|
|
325
|
-
else if (Array.isArray(
|
|
326
|
-
className.push(...
|
|
679
|
+
if (v2) {
|
|
680
|
+
if (typeof v2 === "string")
|
|
681
|
+
className.push(v2);
|
|
682
|
+
else if (Array.isArray(v2))
|
|
683
|
+
className.push(...v2);
|
|
327
684
|
else
|
|
328
|
-
className.push(...Object.entries(
|
|
685
|
+
className.push(...Object.entries(v2).map(([k, v3]) => v3 ? k : ""));
|
|
329
686
|
}
|
|
330
687
|
if (className = className.filter(Boolean).join(" "))
|
|
331
688
|
el.setAttribute("class", className);
|
|
@@ -338,29 +695,29 @@
|
|
|
338
695
|
let initStyle = el.getAttribute("style") || "";
|
|
339
696
|
if (!initStyle.endsWith(";"))
|
|
340
697
|
initStyle += "; ";
|
|
341
|
-
return (
|
|
342
|
-
let
|
|
343
|
-
if (typeof
|
|
344
|
-
el.setAttribute("style", initStyle +
|
|
698
|
+
return (state) => {
|
|
699
|
+
let v2 = evaluate(state);
|
|
700
|
+
if (typeof v2 === "string")
|
|
701
|
+
el.setAttribute("style", initStyle + v2);
|
|
345
702
|
else {
|
|
346
703
|
el.setAttribute("style", initStyle);
|
|
347
|
-
for (let k in
|
|
348
|
-
el.style.setProperty(k,
|
|
704
|
+
for (let k in v2)
|
|
705
|
+
el.style.setProperty(k, v2[k]);
|
|
349
706
|
}
|
|
350
707
|
};
|
|
351
708
|
};
|
|
352
709
|
secondary["text"] = (el, expr) => {
|
|
353
710
|
let evaluate = parseExpr(el, expr, ":text");
|
|
354
|
-
return (
|
|
355
|
-
let value = evaluate(
|
|
711
|
+
return (state) => {
|
|
712
|
+
let value = evaluate(state);
|
|
356
713
|
el.textContent = value == null ? "" : value;
|
|
357
714
|
};
|
|
358
715
|
};
|
|
359
716
|
secondary[""] = (el, expr) => {
|
|
360
717
|
let evaluate = parseExpr(el, expr, ":");
|
|
361
718
|
if (evaluate)
|
|
362
|
-
return (
|
|
363
|
-
let value = evaluate(
|
|
719
|
+
return (state) => {
|
|
720
|
+
let value = evaluate(state);
|
|
364
721
|
for (let key in value)
|
|
365
722
|
attr(el, dashcase(key), value[key]);
|
|
366
723
|
};
|
|
@@ -374,33 +731,33 @@
|
|
|
374
731
|
el.value = value;
|
|
375
732
|
el.selectedOptions[0]?.setAttribute("selected", "");
|
|
376
733
|
} : (value) => el.value = value;
|
|
377
|
-
return (
|
|
734
|
+
return (state) => update(evaluate(state));
|
|
378
735
|
};
|
|
379
|
-
var directives_default = (el, expr,
|
|
736
|
+
var directives_default = (el, expr, state, name) => {
|
|
380
737
|
let evt = name.startsWith("on") && name.slice(2);
|
|
381
738
|
let evaluate = parseExpr(el, expr, ":" + name);
|
|
382
739
|
if (!evaluate)
|
|
383
740
|
return;
|
|
384
741
|
if (evt)
|
|
385
|
-
return (
|
|
386
|
-
let value = evaluate(
|
|
742
|
+
return (state2) => {
|
|
743
|
+
let value = evaluate(state2) || (() => {
|
|
387
744
|
});
|
|
388
745
|
return on(el, evt, value);
|
|
389
746
|
};
|
|
390
|
-
return (
|
|
747
|
+
return (state2) => attr(el, name, evaluate(state2));
|
|
391
748
|
};
|
|
392
|
-
var on = (el,
|
|
749
|
+
var on = (el, e2, fn) => {
|
|
393
750
|
if (!fn)
|
|
394
751
|
return;
|
|
395
752
|
const ctx = { evt: "", target: el, test: () => true };
|
|
396
|
-
ctx.evt = (
|
|
753
|
+
ctx.evt = (e2.startsWith("on") ? e2.slice(2) : e2).replace(
|
|
397
754
|
/\.(\w+)?-?([-\w]+)?/g,
|
|
398
755
|
(match, mod, param = "") => (ctx.test = mods[mod]?.(ctx, ...param.split("-")) || ctx.test, "")
|
|
399
756
|
);
|
|
400
757
|
const { evt, target, test, defer, stop, prevent, ...opts } = ctx;
|
|
401
758
|
if (defer)
|
|
402
759
|
fn = defer(fn);
|
|
403
|
-
const cb = (
|
|
760
|
+
const cb = (e3) => test(e3) && (stop && e3.stopPropagation(), prevent && e3.preventDefault(), fn.call(target, e3));
|
|
404
761
|
target.addEventListener(evt, cb, opts);
|
|
405
762
|
return () => target.removeEventListener(evt, cb, opts);
|
|
406
763
|
};
|
|
@@ -432,21 +789,21 @@
|
|
|
432
789
|
debounce(ctx, wait) {
|
|
433
790
|
ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);
|
|
434
791
|
},
|
|
435
|
-
outside: (ctx) => (
|
|
792
|
+
outside: (ctx) => (e2) => {
|
|
436
793
|
let target = ctx.target;
|
|
437
|
-
if (target.contains(
|
|
794
|
+
if (target.contains(e2.target))
|
|
438
795
|
return false;
|
|
439
|
-
if (
|
|
796
|
+
if (e2.target.isConnected === false)
|
|
440
797
|
return false;
|
|
441
798
|
if (target.offsetWidth < 1 && target.offsetHeight < 1)
|
|
442
799
|
return false;
|
|
443
800
|
return true;
|
|
444
801
|
},
|
|
445
|
-
self: (ctx) => (
|
|
446
|
-
ctrl: (ctx, ...param) => (
|
|
447
|
-
shift: (ctx, ...param) => (
|
|
448
|
-
alt: (ctx, ...param) => (
|
|
449
|
-
meta: (ctx, ...param) => (
|
|
802
|
+
self: (ctx) => (e2) => e2.target === ctx.target,
|
|
803
|
+
ctrl: (ctx, ...param) => (e2) => keys.ctrl(e2) && param.every((p2) => keys[p2] ? keys[p2](e2) : e2.key === p2),
|
|
804
|
+
shift: (ctx, ...param) => (e2) => keys.shift(e2) && param.every((p2) => keys[p2] ? keys[p2](e2) : e2.key === p2),
|
|
805
|
+
alt: (ctx, ...param) => (e2) => keys.alt(e2) && param.every((p2) => keys[p2] ? keys[p2](e2) : e2.key === p2),
|
|
806
|
+
meta: (ctx, ...param) => (e2) => keys.meta(e2) && param.every((p2) => keys[p2] ? keys[p2](e2) : e2.key === p2),
|
|
450
807
|
arrow: (ctx) => keys.arrow,
|
|
451
808
|
enter: (ctx) => keys.enter,
|
|
452
809
|
escape: (ctx) => keys.escape,
|
|
@@ -459,52 +816,52 @@
|
|
|
459
816
|
character: (ctx) => keys.character
|
|
460
817
|
};
|
|
461
818
|
var keys = {
|
|
462
|
-
ctrl: (
|
|
463
|
-
shift: (
|
|
464
|
-
alt: (
|
|
465
|
-
meta: (
|
|
466
|
-
arrow: (
|
|
467
|
-
enter: (
|
|
468
|
-
escape: (
|
|
469
|
-
tab: (
|
|
470
|
-
space: (
|
|
471
|
-
backspace: (
|
|
472
|
-
delete: (
|
|
473
|
-
digit: (
|
|
474
|
-
letter: (
|
|
475
|
-
character: (
|
|
819
|
+
ctrl: (e2) => e2.ctrlKey || e2.key === "Control" || e2.key === "Ctrl",
|
|
820
|
+
shift: (e2) => e2.shiftKey || e2.key === "Shift",
|
|
821
|
+
alt: (e2) => e2.altKey || e2.key === "Alt",
|
|
822
|
+
meta: (e2) => e2.metaKey || e2.key === "Meta" || e2.key === "Command",
|
|
823
|
+
arrow: (e2) => e2.key.startsWith("Arrow"),
|
|
824
|
+
enter: (e2) => e2.key === "Enter",
|
|
825
|
+
escape: (e2) => e2.key.startsWith("Esc"),
|
|
826
|
+
tab: (e2) => e2.key === "Tab",
|
|
827
|
+
space: (e2) => e2.key === "\xA0" || e2.key === "Space" || e2.key === " ",
|
|
828
|
+
backspace: (e2) => e2.key === "Backspace",
|
|
829
|
+
delete: (e2) => e2.key === "Delete",
|
|
830
|
+
digit: (e2) => /^\d$/.test(e2.key),
|
|
831
|
+
letter: (e2) => /^[a-zA-Z]$/.test(e2.key),
|
|
832
|
+
character: (e2) => /^\S$/.test(e2.key)
|
|
476
833
|
};
|
|
477
834
|
var throttle = (fn, limit) => {
|
|
478
|
-
let pause, planned, block = (
|
|
835
|
+
let pause, planned, block = (e2) => {
|
|
479
836
|
pause = true;
|
|
480
837
|
setTimeout(() => {
|
|
481
838
|
pause = false;
|
|
482
839
|
if (planned)
|
|
483
|
-
return planned = false, block(
|
|
840
|
+
return planned = false, block(e2), fn(e2);
|
|
484
841
|
}, limit);
|
|
485
842
|
};
|
|
486
|
-
return (
|
|
843
|
+
return (e2) => {
|
|
487
844
|
if (pause)
|
|
488
845
|
return planned = true;
|
|
489
|
-
block(
|
|
490
|
-
return fn(
|
|
846
|
+
block(e2);
|
|
847
|
+
return fn(e2);
|
|
491
848
|
};
|
|
492
849
|
};
|
|
493
850
|
var debounce = (fn, wait) => {
|
|
494
851
|
let timeout;
|
|
495
|
-
return (
|
|
852
|
+
return (e2) => {
|
|
496
853
|
clearTimeout(timeout);
|
|
497
854
|
timeout = setTimeout(() => {
|
|
498
855
|
timeout = null;
|
|
499
|
-
fn(
|
|
856
|
+
fn(e2);
|
|
500
857
|
}, wait);
|
|
501
858
|
};
|
|
502
859
|
};
|
|
503
|
-
var attr = (el, name,
|
|
504
|
-
if (
|
|
860
|
+
var attr = (el, name, v2) => {
|
|
861
|
+
if (v2 == null || v2 === false)
|
|
505
862
|
el.removeAttribute(name);
|
|
506
863
|
else
|
|
507
|
-
el.setAttribute(name,
|
|
864
|
+
el.setAttribute(name, v2 === true ? "" : typeof v2 === "number" || typeof v2 === "string" ? v2 : "");
|
|
508
865
|
};
|
|
509
866
|
var evaluatorMemo = {};
|
|
510
867
|
function parseExpr(el, expression, dir) {
|
|
@@ -512,16 +869,16 @@
|
|
|
512
869
|
if (!evaluate) {
|
|
513
870
|
try {
|
|
514
871
|
evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { return ${expression.trim()} };`);
|
|
515
|
-
} catch (
|
|
516
|
-
return exprError(
|
|
872
|
+
} catch (e2) {
|
|
873
|
+
return exprError(e2, el, expression, dir);
|
|
517
874
|
}
|
|
518
875
|
}
|
|
519
|
-
return (
|
|
876
|
+
return (state) => {
|
|
520
877
|
let result;
|
|
521
878
|
try {
|
|
522
|
-
result = evaluate.call(el,
|
|
523
|
-
} catch (
|
|
524
|
-
return exprError(
|
|
879
|
+
result = evaluate.call(el, state);
|
|
880
|
+
} catch (e2) {
|
|
881
|
+
return exprError(e2, el, expression, dir);
|
|
525
882
|
}
|
|
526
883
|
return result;
|
|
527
884
|
};
|
|
@@ -543,13 +900,13 @@ ${directive}=${expression ? `"${expression}"
|
|
|
543
900
|
|
|
544
901
|
// src/core.js
|
|
545
902
|
sprae.globals = sandbox;
|
|
546
|
-
var
|
|
903
|
+
var memo2 = /* @__PURE__ */ new WeakMap();
|
|
547
904
|
function sprae(container, values) {
|
|
548
905
|
if (!container.children)
|
|
549
906
|
return;
|
|
550
|
-
if (
|
|
551
|
-
return Object.assign(
|
|
552
|
-
const
|
|
907
|
+
if (memo2.has(container))
|
|
908
|
+
return n(() => Object.assign(memo2.get(container), values));
|
|
909
|
+
const state = createState(values || {});
|
|
553
910
|
const updates = [];
|
|
554
911
|
const init = (el, parent = el.parentNode) => {
|
|
555
912
|
for (let name in primary) {
|
|
@@ -557,16 +914,16 @@ ${directive}=${expression ? `"${expression}"
|
|
|
557
914
|
if (el.hasAttribute?.(attrName)) {
|
|
558
915
|
let expr = el.getAttribute(attrName);
|
|
559
916
|
el.removeAttribute(attrName);
|
|
560
|
-
updates.push(primary[name](el, expr,
|
|
561
|
-
if (
|
|
917
|
+
updates.push(primary[name](el, expr, state, name));
|
|
918
|
+
if (memo2.has(el))
|
|
562
919
|
return;
|
|
563
920
|
if (el.parentNode !== parent)
|
|
564
921
|
return false;
|
|
565
922
|
}
|
|
566
923
|
}
|
|
567
924
|
if (el.attributes) {
|
|
568
|
-
for (let
|
|
569
|
-
let attr2 = el.attributes[
|
|
925
|
+
for (let i2 = 0; i2 < el.attributes.length; ) {
|
|
926
|
+
let attr2 = el.attributes[i2], prefix = attr2.name[0];
|
|
570
927
|
if (prefix === ":" || prefix === "@") {
|
|
571
928
|
el.removeAttribute(attr2.name);
|
|
572
929
|
let expr = prefix === "@" ? `${attr2.value.includes("await") ? "async" : ""} event=>{${attr2.value}}` : attr2.value, names = attr2.name.slice(1).split(prefix);
|
|
@@ -574,29 +931,29 @@ ${directive}=${expression ? `"${expression}"
|
|
|
574
931
|
if (prefix === "@")
|
|
575
932
|
name = `on` + name;
|
|
576
933
|
let dir = secondary[name] || directives_default;
|
|
577
|
-
updates.push(dir(el, expr,
|
|
934
|
+
updates.push(dir(el, expr, state, name));
|
|
578
935
|
}
|
|
579
936
|
} else
|
|
580
|
-
|
|
937
|
+
i2++;
|
|
581
938
|
}
|
|
582
939
|
}
|
|
583
|
-
for (let
|
|
940
|
+
for (let i2 = 0, child; child = el.children[i2]; i2++) {
|
|
584
941
|
if (init(child, el) === false)
|
|
585
|
-
|
|
942
|
+
i2--;
|
|
586
943
|
}
|
|
587
944
|
};
|
|
588
945
|
init(container);
|
|
589
946
|
for (let update of updates)
|
|
590
947
|
if (update) {
|
|
591
948
|
let teardown;
|
|
592
|
-
|
|
949
|
+
O(() => {
|
|
593
950
|
if (typeof teardown === "function")
|
|
594
951
|
teardown();
|
|
595
|
-
teardown = update(
|
|
952
|
+
teardown = update(state);
|
|
596
953
|
});
|
|
597
954
|
}
|
|
598
|
-
|
|
599
|
-
return
|
|
955
|
+
memo2.set(container, state);
|
|
956
|
+
return state;
|
|
600
957
|
}
|
|
601
958
|
|
|
602
959
|
// src/index.js
|