haori 0.4.6 → 0.4.8
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/README.ja.md +2 -1
- package/README.md +2 -1
- package/dist/haori.cjs.js +8 -8
- package/dist/haori.cjs.js.map +1 -1
- package/dist/haori.es.js +426 -392
- package/dist/haori.es.js.map +1 -1
- package/dist/haori.iife.js +8 -8
- package/dist/haori.iife.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/package.json +1 -1
- package/dist/src/core.d.ts +6 -0
- package/dist/src/core.d.ts.map +1 -1
- package/dist/src/core.js +50 -14
- package/dist/src/core.js.map +1 -1
- package/dist/src/fragment.d.ts +4 -0
- package/dist/src/fragment.d.ts.map +1 -1
- package/dist/src/fragment.js +20 -1
- package/dist/src/fragment.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/observer.d.ts.map +1 -1
- package/dist/src/observer.js +3 -0
- package/dist/src/observer.js.map +1 -1
- package/dist/tests/core.test.js +84 -1
- package/dist/tests/core.test.js.map +1 -1
- package/dist/tests/data-fetch-tbody-dom.test.js +9 -26
- package/dist/tests/data-fetch-tbody-dom.test.js.map +1 -1
- package/dist/tests/fetch-and-procedure-scenarios.test.js +19 -11
- package/dist/tests/fetch-and-procedure-scenarios.test.js.map +1 -1
- package/dist/tests/fragment.test.js +8 -0
- package/dist/tests/fragment.test.js.map +1 -1
- package/dist/tests/observer.test.d.ts +2 -0
- package/dist/tests/observer.test.d.ts.map +1 -0
- package/dist/tests/observer.test.js +64 -0
- package/dist/tests/observer.test.js.map +1 -0
- package/package.json +1 -1
package/dist/haori.es.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
const
|
|
1
|
+
const C = class C {
|
|
2
2
|
/**
|
|
3
3
|
* 開発モードの状態を取得します。
|
|
4
4
|
*
|
|
5
5
|
* @returns 開発モードならtrue、そうでなければfalse
|
|
6
6
|
*/
|
|
7
7
|
static isEnabled() {
|
|
8
|
-
return
|
|
8
|
+
return C.devMode;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* 開発モードを有効化します。
|
|
12
12
|
*/
|
|
13
13
|
static enable() {
|
|
14
|
-
|
|
14
|
+
C.devMode = !0;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* 開発モードを無効化します。
|
|
18
18
|
*/
|
|
19
19
|
static disable() {
|
|
20
|
-
|
|
20
|
+
C.devMode = !1;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* 開発モードを切り替えます。
|
|
@@ -25,17 +25,17 @@ const O = class O {
|
|
|
25
25
|
* @param enabled trueで有効化、falseで無効化
|
|
26
26
|
*/
|
|
27
27
|
static set(t) {
|
|
28
|
-
|
|
28
|
+
C.devMode = t;
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
let B =
|
|
31
|
+
C.devMode = !1;
|
|
32
|
+
let B = C;
|
|
33
33
|
const z = "embedded";
|
|
34
|
-
function rt(
|
|
35
|
-
return
|
|
34
|
+
function rt(P) {
|
|
35
|
+
return P === "embedded" || P === "demo";
|
|
36
36
|
}
|
|
37
|
-
function it(
|
|
38
|
-
return
|
|
37
|
+
function it(P) {
|
|
38
|
+
return P === null ? null : rt(P) ? P : z;
|
|
39
39
|
}
|
|
40
40
|
const D = class D {
|
|
41
41
|
/**
|
|
@@ -95,8 +95,8 @@ const D = class D {
|
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
D._prefix = "data-", D._runtime = z;
|
|
98
|
-
let
|
|
99
|
-
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded",
|
|
98
|
+
let l = D;
|
|
99
|
+
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", l.detect) : l.detect();
|
|
100
100
|
class d {
|
|
101
101
|
/**
|
|
102
102
|
* 開発モードでのみコンソールに情報を出力します。
|
|
@@ -221,7 +221,7 @@ const _ = class _ {
|
|
|
221
221
|
}
|
|
222
222
|
};
|
|
223
223
|
_.ASYNC_QUEUE = new st();
|
|
224
|
-
let
|
|
224
|
+
let F = _;
|
|
225
225
|
class X {
|
|
226
226
|
/**
|
|
227
227
|
* 実行モードを取得します。
|
|
@@ -229,7 +229,7 @@ class X {
|
|
|
229
229
|
* @return 実行モード。
|
|
230
230
|
*/
|
|
231
231
|
static get runtime() {
|
|
232
|
-
return
|
|
232
|
+
return l.runtime;
|
|
233
233
|
}
|
|
234
234
|
/**
|
|
235
235
|
* 実行モードを設定します。
|
|
@@ -238,7 +238,7 @@ class X {
|
|
|
238
238
|
* @return 戻り値はありません。
|
|
239
239
|
*/
|
|
240
240
|
static setRuntime(t) {
|
|
241
|
-
|
|
241
|
+
l.setRuntime(t);
|
|
242
242
|
}
|
|
243
243
|
/**
|
|
244
244
|
* 通知ダイアログを表示します。
|
|
@@ -247,7 +247,7 @@ class X {
|
|
|
247
247
|
* @returns 通知が閉じられると解決されるPromise
|
|
248
248
|
*/
|
|
249
249
|
static dialog(t) {
|
|
250
|
-
return
|
|
250
|
+
return F.enqueue(() => {
|
|
251
251
|
window.alert(t);
|
|
252
252
|
}, !0);
|
|
253
253
|
}
|
|
@@ -275,7 +275,7 @@ class X {
|
|
|
275
275
|
* @returns ユーザーがOKをクリックした場合はtrue、キャンセルした場合はfalseが解決されるPromise
|
|
276
276
|
*/
|
|
277
277
|
static confirm(t) {
|
|
278
|
-
return
|
|
278
|
+
return F.enqueue(() => window.confirm(t), !0);
|
|
279
279
|
}
|
|
280
280
|
/**
|
|
281
281
|
* ダイアログを開きます。
|
|
@@ -283,7 +283,7 @@ class X {
|
|
|
283
283
|
* @param element 開くダイアログのHTML要素
|
|
284
284
|
*/
|
|
285
285
|
static openDialog(t) {
|
|
286
|
-
return
|
|
286
|
+
return F.enqueue(() => {
|
|
287
287
|
t instanceof HTMLDialogElement ? t.showModal() : d.error("[Haori]", "Element is not a dialog: ", t);
|
|
288
288
|
}, !0);
|
|
289
289
|
}
|
|
@@ -293,7 +293,7 @@ class X {
|
|
|
293
293
|
* @param element 閉じるダイアログのHTML要素
|
|
294
294
|
*/
|
|
295
295
|
static closeDialog(t) {
|
|
296
|
-
return
|
|
296
|
+
return F.enqueue(() => {
|
|
297
297
|
t instanceof HTMLDialogElement ? t.close() : d.error("[Haori]", "Element is not a dialog: ", t);
|
|
298
298
|
}, !0);
|
|
299
299
|
}
|
|
@@ -314,7 +314,7 @@ class X {
|
|
|
314
314
|
* @param level メッセージのレベル(省略可能)
|
|
315
315
|
*/
|
|
316
316
|
static addMessage(t, e, r) {
|
|
317
|
-
return
|
|
317
|
+
return F.enqueue(() => {
|
|
318
318
|
const i = t instanceof HTMLFormElement ? t : t.parentElement ?? t;
|
|
319
319
|
i.setAttribute("data-message", e), r !== void 0 ? i.setAttribute("data-message-level", r) : i.removeAttribute("data-message-level");
|
|
320
320
|
}, !0);
|
|
@@ -325,7 +325,7 @@ class X {
|
|
|
325
325
|
* @param parent メッセージをクリアする親要素
|
|
326
326
|
*/
|
|
327
327
|
static clearMessages(t) {
|
|
328
|
-
return
|
|
328
|
+
return F.enqueue(() => {
|
|
329
329
|
t.removeAttribute("data-message"), t.removeAttribute("data-message-level"), t.querySelectorAll("[data-message]").forEach((e) => {
|
|
330
330
|
e.removeAttribute("data-message"), e.removeAttribute("data-message-level");
|
|
331
331
|
});
|
|
@@ -361,11 +361,11 @@ class y {
|
|
|
361
361
|
* @returns values と同じオブジェクト
|
|
362
362
|
*/
|
|
363
363
|
static getPartValues(t, e) {
|
|
364
|
-
const r = t.getAttribute("name"), i = t.getAttribute(`${
|
|
364
|
+
const r = t.getAttribute("name"), i = t.getAttribute(`${l.prefix}form-object`), n = t.getAttribute(`${l.prefix}form-list`);
|
|
365
365
|
if (r) {
|
|
366
366
|
n ? Array.isArray(e[String(r)]) ? e[String(r)].push(t.getValue()) : e[String(r)] = [t.getValue()] : e[String(r)] = t.getValue(), i && d.warn(
|
|
367
367
|
"Haori",
|
|
368
|
-
`Element cannot have both ${
|
|
368
|
+
`Element cannot have both ${l.prefix}form-object and name attributes.`
|
|
369
369
|
);
|
|
370
370
|
for (const s of t.getChildElementFragments())
|
|
371
371
|
y.getPartValues(s, e);
|
|
@@ -375,7 +375,7 @@ class y {
|
|
|
375
375
|
y.getPartValues(a, s);
|
|
376
376
|
Object.keys(s).length > 0 && (e[String(i)] = s), n && d.warn(
|
|
377
377
|
"Haori",
|
|
378
|
-
`Element cannot have both ${
|
|
378
|
+
`Element cannot have both ${l.prefix}form-list and ${l.prefix}form-object attributes.`
|
|
379
379
|
);
|
|
380
380
|
} else if (n) {
|
|
381
381
|
const s = [];
|
|
@@ -434,50 +434,50 @@ class y {
|
|
|
434
434
|
* @returns Promise(DOMの更新が完了したら解決される)
|
|
435
435
|
*/
|
|
436
436
|
static setPartValues(t, e, r = null, i = !1, n = !0) {
|
|
437
|
-
const s = [], a = t.getAttribute("name"), o = t.getAttribute(`${
|
|
437
|
+
const s = [], a = t.getAttribute("name"), o = t.getAttribute(`${l.prefix}form-object`), h = t.getAttribute(`${l.prefix}form-list`), b = t.getAttribute(`${l.prefix}form-detach`);
|
|
438
438
|
if (a) {
|
|
439
|
-
if (!
|
|
440
|
-
const
|
|
441
|
-
h && Array.isArray(
|
|
442
|
-
y.applyFragmentValue(t,
|
|
443
|
-
) : typeof
|
|
444
|
-
y.applyFragmentValue(t, String(
|
|
439
|
+
if (!b || i) {
|
|
440
|
+
const g = e[String(a)];
|
|
441
|
+
h && Array.isArray(g) && r !== null ? s.push(
|
|
442
|
+
y.applyFragmentValue(t, g[r] ?? null, n)
|
|
443
|
+
) : typeof g > "u" || (typeof g == "string" || typeof g == "number" || typeof g == "boolean" || g === null ? s.push(y.applyFragmentValue(t, g, n)) : s.push(
|
|
444
|
+
y.applyFragmentValue(t, String(g), n)
|
|
445
445
|
));
|
|
446
446
|
}
|
|
447
447
|
} else if (o) {
|
|
448
|
-
const
|
|
449
|
-
if (
|
|
448
|
+
const g = e[String(o)];
|
|
449
|
+
if (g && typeof g == "object")
|
|
450
450
|
for (const E of t.getChildElementFragments())
|
|
451
451
|
s.push(
|
|
452
452
|
y.setPartValues(
|
|
453
453
|
E,
|
|
454
|
-
|
|
454
|
+
g,
|
|
455
455
|
null,
|
|
456
456
|
i,
|
|
457
457
|
n
|
|
458
458
|
)
|
|
459
459
|
);
|
|
460
460
|
} else if (h) {
|
|
461
|
-
const
|
|
462
|
-
if (Array.isArray(
|
|
461
|
+
const g = e[String(h)];
|
|
462
|
+
if (Array.isArray(g)) {
|
|
463
463
|
const E = t.getChildElementFragments();
|
|
464
|
-
for (let
|
|
465
|
-
const c = E[
|
|
466
|
-
|
|
464
|
+
for (let v = 0; v < E.length; v++) {
|
|
465
|
+
const c = E[v];
|
|
466
|
+
g.length > v ? s.push(
|
|
467
467
|
y.setPartValues(
|
|
468
468
|
c,
|
|
469
|
-
|
|
470
|
-
|
|
469
|
+
g[v],
|
|
470
|
+
v,
|
|
471
471
|
i,
|
|
472
472
|
n
|
|
473
473
|
)
|
|
474
|
-
) : s.push(y.setPartValues(c, {},
|
|
474
|
+
) : s.push(y.setPartValues(c, {}, v, i, n));
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
477
|
} else
|
|
478
|
-
for (const
|
|
478
|
+
for (const g of t.getChildElementFragments())
|
|
479
479
|
s.push(
|
|
480
|
-
y.setPartValues(
|
|
480
|
+
y.setPartValues(g, e, null, i, n)
|
|
481
481
|
);
|
|
482
482
|
return Promise.all(s).then(() => {
|
|
483
483
|
});
|
|
@@ -493,7 +493,7 @@ class y {
|
|
|
493
493
|
y.clearValues(t), await Promise.all([
|
|
494
494
|
y.clearMessages(t),
|
|
495
495
|
y.clearEachClones(t)
|
|
496
|
-
]), await
|
|
496
|
+
]), await F.enqueue(() => {
|
|
497
497
|
const e = t.getTarget();
|
|
498
498
|
if (e instanceof HTMLFormElement)
|
|
499
499
|
e.reset();
|
|
@@ -504,7 +504,7 @@ class y {
|
|
|
504
504
|
n.appendChild(e), n.reset(), r.insertBefore(e, i);
|
|
505
505
|
}
|
|
506
506
|
}
|
|
507
|
-
}), await
|
|
507
|
+
}), await R.evaluateAll(t);
|
|
508
508
|
}
|
|
509
509
|
/**
|
|
510
510
|
* data-each によって生成された複製(テンプレート以外)を削除します。
|
|
@@ -514,9 +514,9 @@ class y {
|
|
|
514
514
|
*/
|
|
515
515
|
static clearEachClones(t) {
|
|
516
516
|
const e = [], r = (n) => {
|
|
517
|
-
if (n.hasAttribute(`${
|
|
517
|
+
if (n.hasAttribute(`${l.prefix}each`))
|
|
518
518
|
for (const s of n.getChildElementFragments()) {
|
|
519
|
-
const a = s.hasAttribute(`${
|
|
519
|
+
const a = s.hasAttribute(`${l.prefix}each-before`), o = s.hasAttribute(`${l.prefix}each-after`);
|
|
520
520
|
!a && !o && e.push(s.remove());
|
|
521
521
|
}
|
|
522
522
|
}, i = (n) => {
|
|
@@ -574,9 +574,9 @@ class y {
|
|
|
574
574
|
* @return Promise(メッセージの追加が完了したら解決される)
|
|
575
575
|
*/
|
|
576
576
|
static addMessage(t, e, r, i) {
|
|
577
|
-
const n = [], s = et(), a = s.addMessage, o = (
|
|
578
|
-
return h.forEach((
|
|
579
|
-
n.push(o(
|
|
577
|
+
const n = [], s = et(), a = s.addMessage, o = (b) => typeof a == "function" ? a.call(s, b, r, i) : s.addErrorMessage(b, r), h = y.findFragmentsByKey(t, e);
|
|
578
|
+
return h.forEach((b) => {
|
|
579
|
+
n.push(o(b.getTarget()));
|
|
580
580
|
}), h.length === 0 && n.push(o(t.getTarget())), Promise.all(n).then(() => {
|
|
581
581
|
});
|
|
582
582
|
}
|
|
@@ -600,23 +600,23 @@ class y {
|
|
|
600
600
|
*/
|
|
601
601
|
static findFragmentByKeyParts(t, e) {
|
|
602
602
|
const r = [], i = e[0];
|
|
603
|
-
if (e.length == 1 && t.getAttribute("name") === i && r.push(t), t.hasAttribute(`${
|
|
604
|
-
e.length > 1 && t.getAttribute(`${
|
|
603
|
+
if (e.length == 1 && t.getAttribute("name") === i && r.push(t), t.hasAttribute(`${l.prefix}form-object`))
|
|
604
|
+
e.length > 1 && t.getAttribute(`${l.prefix}form-object`) === i && t.getChildElementFragments().forEach((s) => {
|
|
605
605
|
r.push(...y.findFragmentByKeyParts(s, e.slice(1)));
|
|
606
606
|
});
|
|
607
|
-
else if (t.hasAttribute(`${
|
|
607
|
+
else if (t.hasAttribute(`${l.prefix}form-list`)) {
|
|
608
608
|
if (e.length > 1) {
|
|
609
|
-
const n = t.getAttribute(`${
|
|
609
|
+
const n = t.getAttribute(`${l.prefix}form-list`), s = i.lastIndexOf("["), a = i.lastIndexOf("]");
|
|
610
610
|
if (s !== -1 && a !== -1 && s < a) {
|
|
611
611
|
const o = i.substring(0, s);
|
|
612
612
|
if (n === o) {
|
|
613
|
-
const h = i.substring(s + 1, a),
|
|
614
|
-
if (isNaN(
|
|
613
|
+
const h = i.substring(s + 1, a), b = Number(h);
|
|
614
|
+
if (isNaN(b))
|
|
615
615
|
d.error("Haori", `Invalid index: ${i}`);
|
|
616
616
|
else {
|
|
617
|
-
const
|
|
618
|
-
|
|
619
|
-
...y.findFragmentByKeyParts(b
|
|
617
|
+
const g = t.getChildElementFragments().filter((E) => E.hasAttribute(`${l.prefix}row`));
|
|
618
|
+
b < g.length && r.push(
|
|
619
|
+
...y.findFragmentByKeyParts(g[b], e.slice(1))
|
|
620
620
|
);
|
|
621
621
|
}
|
|
622
622
|
}
|
|
@@ -753,12 +753,12 @@ return (${t});`;
|
|
|
753
753
|
const r = [];
|
|
754
754
|
let i = null;
|
|
755
755
|
for (let n = 0; n < e.length; n++) {
|
|
756
|
-
const s = e[n], a = e[n + 1] || null, o = r[r.length - 1] || null, h = e[n - 2] || null,
|
|
756
|
+
const s = e[n], a = e[n + 1] || null, o = r[r.length - 1] || null, h = e[n - 2] || null, b = e[n - 3] || null;
|
|
757
757
|
if (this.startsObjectKey(
|
|
758
758
|
o,
|
|
759
759
|
i,
|
|
760
760
|
h,
|
|
761
|
-
|
|
761
|
+
b
|
|
762
762
|
) && (s.value === "[" || s.type === "identifier" && this.FORBIDDEN_PROPERTY_NAMES.has(s.value) || s.type === "string" && this.FORBIDDEN_PROPERTY_NAMES.has(
|
|
763
763
|
this.decodeStringLiteral(s.value)
|
|
764
764
|
)) || s.type === "identifier" && (this.DISALLOWED_KEYWORDS.has(s.value) || this.STRICT_FORBIDDEN_NAMES.includes(s.value) || (i?.value === "." || i?.value === "?.") && this.FORBIDDEN_PROPERTY_NAMES.has(s.value)) || o === "member" && s.value !== "]" && s.type === "string" && this.FORBIDDEN_PROPERTY_NAMES.has(
|
|
@@ -775,8 +775,8 @@ return (${t});`;
|
|
|
775
775
|
break;
|
|
776
776
|
}
|
|
777
777
|
case "[": {
|
|
778
|
-
const
|
|
779
|
-
r.push(
|
|
778
|
+
const g = this.startsMemberAccess(i) ? "member" : "array";
|
|
779
|
+
r.push(g);
|
|
780
780
|
break;
|
|
781
781
|
}
|
|
782
782
|
case "{":
|
|
@@ -1268,7 +1268,7 @@ const I = class I {
|
|
|
1268
1268
|
e = new x(t);
|
|
1269
1269
|
break;
|
|
1270
1270
|
case Node.TEXT_NODE:
|
|
1271
|
-
e = new
|
|
1271
|
+
e = new O(t);
|
|
1272
1272
|
break;
|
|
1273
1273
|
case Node.COMMENT_NODE:
|
|
1274
1274
|
e = new Z(t);
|
|
@@ -1296,7 +1296,7 @@ const I = class I {
|
|
|
1296
1296
|
return Promise.resolve();
|
|
1297
1297
|
if (this.parent) {
|
|
1298
1298
|
const t = this.parent, e = t.skipMutationNodes;
|
|
1299
|
-
return
|
|
1299
|
+
return F.enqueue(() => {
|
|
1300
1300
|
t.skipMutationNodes = !0, this.target.parentNode === t.getTarget() && t.getTarget().removeChild(this.target), this.mounted = !1;
|
|
1301
1301
|
}).finally(() => {
|
|
1302
1302
|
t.skipMutationNodes = e;
|
|
@@ -1304,7 +1304,7 @@ const I = class I {
|
|
|
1304
1304
|
} else {
|
|
1305
1305
|
const t = this.target.parentNode;
|
|
1306
1306
|
if (t)
|
|
1307
|
-
return
|
|
1307
|
+
return F.enqueue(() => {
|
|
1308
1308
|
this.target.parentNode === t && t.removeChild(this.target), this.mounted = !1;
|
|
1309
1309
|
});
|
|
1310
1310
|
this.mounted = !1;
|
|
@@ -1321,7 +1321,7 @@ const I = class I {
|
|
|
1321
1321
|
return Promise.resolve();
|
|
1322
1322
|
if (this.parent) {
|
|
1323
1323
|
const t = this.parent, e = t.skipMutationNodes;
|
|
1324
|
-
return
|
|
1324
|
+
return F.enqueue(() => {
|
|
1325
1325
|
t.skipMutationNodes = !0, this.target.parentNode !== t.getTarget() && t.getTarget().appendChild(this.target), this.mounted = !0;
|
|
1326
1326
|
}).finally(() => {
|
|
1327
1327
|
t.skipMutationNodes = e;
|
|
@@ -1380,8 +1380,8 @@ const I = class I {
|
|
|
1380
1380
|
}
|
|
1381
1381
|
};
|
|
1382
1382
|
I.FRAGMENT_CACHE = /* @__PURE__ */ new WeakMap();
|
|
1383
|
-
let
|
|
1384
|
-
class x extends
|
|
1383
|
+
let w = I;
|
|
1384
|
+
class x extends w {
|
|
1385
1385
|
/**
|
|
1386
1386
|
* エレメントフラグメントのコンストラクタ。
|
|
1387
1387
|
* アトリビュートや子フラグメントの作成も行います。
|
|
@@ -1411,7 +1411,7 @@ class x extends T {
|
|
|
1411
1411
|
this.attributeMap.set(e, i);
|
|
1412
1412
|
}
|
|
1413
1413
|
}), t.childNodes.forEach((e) => {
|
|
1414
|
-
const r =
|
|
1414
|
+
const r = w.get(e);
|
|
1415
1415
|
r.setParent(this), this.children.push(r);
|
|
1416
1416
|
});
|
|
1417
1417
|
}
|
|
@@ -1470,7 +1470,15 @@ class x extends T {
|
|
|
1470
1470
|
}), this.children.forEach((e) => {
|
|
1471
1471
|
const r = e.clone();
|
|
1472
1472
|
t.getTarget().appendChild(r.getTarget()), t.pushChild(r);
|
|
1473
|
-
}), t.mounted = !1, t.bindingData = this.bindingData, t.clearBindingDataCache(), t.visible =
|
|
1473
|
+
}), t.mounted = !1, t.bindingData = this.bindingData, t.clearBindingDataCache(), t.visible = !0, t.display = this.display, t.template = this.template, t.normalizeClonedVisibilityState(), t;
|
|
1474
|
+
}
|
|
1475
|
+
/**
|
|
1476
|
+
* clone 時に runtime の hidden 状態だけを落とします。
|
|
1477
|
+
*/
|
|
1478
|
+
normalizeClonedVisibilityState() {
|
|
1479
|
+
(this.visible === !1 || this.getTarget().style.display === "none" || this.getTarget().hasAttribute(`${l.prefix}if-false`)) && (this.visible = !0, this.display = "", this.getTarget().style.display = "", this.getTarget().removeAttribute(`${l.prefix}if-false`)), this.children.forEach((t) => {
|
|
1480
|
+
t instanceof x && t.normalizeClonedVisibilityState();
|
|
1481
|
+
});
|
|
1474
1482
|
}
|
|
1475
1483
|
/**
|
|
1476
1484
|
* フラグメントとノードを削除します。
|
|
@@ -1600,12 +1608,12 @@ class x extends T {
|
|
|
1600
1608
|
if (r instanceof HTMLInputElement && (r.type === "checkbox" || r.type === "radio")) {
|
|
1601
1609
|
const i = this.getAttribute("value"), n = r.type === "checkbox" && i === "true";
|
|
1602
1610
|
let s;
|
|
1603
|
-
return n ? s = t === !0 || t === "true" : i === "false" ? s = t === !1 : s = i === String(t), this.value = n ? s : s ? t : null, r.checked === s ? Promise.resolve() : (this.skipChangeValue = !0,
|
|
1611
|
+
return n ? s = t === !0 || t === "true" : i === "false" ? s = t === !1 : s = i === String(t), this.value = n ? s : s ? t : null, r.checked === s ? Promise.resolve() : (this.skipChangeValue = !0, F.enqueue(() => {
|
|
1604
1612
|
r.checked = s, e && r.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
1605
1613
|
}).finally(() => {
|
|
1606
1614
|
this.skipChangeValue = !1;
|
|
1607
1615
|
}));
|
|
1608
|
-
} else return r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement || r instanceof HTMLSelectElement ? (this.value = t, this.skipChangeValue = !0,
|
|
1616
|
+
} else return r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement || r instanceof HTMLSelectElement ? (this.value = t, this.skipChangeValue = !0, F.enqueue(() => {
|
|
1609
1617
|
r.value = t === null ? "" : String(t), e && ((r instanceof HTMLInputElement && this.INPUT_EVENT_TYPES.includes(r.type) || r instanceof HTMLTextAreaElement) && r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new Event("change", { bubbles: !0 })));
|
|
1610
1618
|
}).finally(() => {
|
|
1611
1619
|
this.skipChangeValue = !1;
|
|
@@ -1685,7 +1693,7 @@ class x extends T {
|
|
|
1685
1693
|
return Promise.resolve();
|
|
1686
1694
|
this.attributeMap.delete(t), this.skipMutationAttributes = !0;
|
|
1687
1695
|
const r = this.getTarget();
|
|
1688
|
-
return
|
|
1696
|
+
return F.enqueue(() => {
|
|
1689
1697
|
r.removeAttribute(t), e !== t && r.removeAttribute(e);
|
|
1690
1698
|
}).finally(() => {
|
|
1691
1699
|
this.skipMutationAttributes = !1;
|
|
@@ -1708,7 +1716,7 @@ class x extends T {
|
|
|
1708
1716
|
const n = new U(t, r);
|
|
1709
1717
|
this.attributeMap.set(t, n), this.skipMutationAttributes = !0;
|
|
1710
1718
|
const s = this.getTarget(), a = n.isForceEvaluation() ? r : this.getAttribute(t);
|
|
1711
|
-
return
|
|
1719
|
+
return F.enqueue(() => {
|
|
1712
1720
|
if (s.getAttribute(t) !== r && s.setAttribute(t, r), a === null || a === !1)
|
|
1713
1721
|
s.removeAttribute(e);
|
|
1714
1722
|
else {
|
|
@@ -1730,7 +1738,7 @@ class x extends T {
|
|
|
1730
1738
|
return Promise.resolve();
|
|
1731
1739
|
this.attributeMap.delete(t), this.skipMutationAttributes = !0;
|
|
1732
1740
|
const e = this.getTarget();
|
|
1733
|
-
return
|
|
1741
|
+
return F.enqueue(() => {
|
|
1734
1742
|
e.removeAttribute(t);
|
|
1735
1743
|
}).finally(() => {
|
|
1736
1744
|
this.skipMutationAttributes = !1;
|
|
@@ -1748,7 +1756,7 @@ class x extends T {
|
|
|
1748
1756
|
if (e === void 0)
|
|
1749
1757
|
return null;
|
|
1750
1758
|
const r = e.evaluate(this.getBindingData());
|
|
1751
|
-
return r.length === 1 ? r[0] :
|
|
1759
|
+
return r.length === 1 ? r[0] : $.joinEvaluateResults(r);
|
|
1752
1760
|
}
|
|
1753
1761
|
/**
|
|
1754
1762
|
* 属性の生の値を取得します。
|
|
@@ -1791,7 +1799,7 @@ class x extends T {
|
|
|
1791
1799
|
const i = e ? r.nextSibling : r;
|
|
1792
1800
|
let n = e ? r.nextSibling : r;
|
|
1793
1801
|
for (; n !== null; ) {
|
|
1794
|
-
const s =
|
|
1802
|
+
const s = w.get(n);
|
|
1795
1803
|
if (s !== null) {
|
|
1796
1804
|
const a = this.children.indexOf(s);
|
|
1797
1805
|
if (a !== -1)
|
|
@@ -1825,30 +1833,30 @@ class x extends T {
|
|
|
1825
1833
|
s && (a = this.children.indexOf(t), e !== null && (o = this.children.indexOf(e)));
|
|
1826
1834
|
const h = t.getParent();
|
|
1827
1835
|
h !== null && h.removeChild(t);
|
|
1828
|
-
let
|
|
1836
|
+
let b = r === void 0 ? e?.getTarget() || null : r;
|
|
1829
1837
|
if (e === null)
|
|
1830
1838
|
this.children.push(t);
|
|
1831
1839
|
else {
|
|
1832
1840
|
let E;
|
|
1833
1841
|
if (s ? a !== -1 && a < o ? E = o - 1 : E = o : E = this.children.indexOf(e), E === -1) {
|
|
1834
|
-
const
|
|
1842
|
+
const v = this.resolveInsertionPointFromDom(
|
|
1835
1843
|
e,
|
|
1836
1844
|
!1
|
|
1837
1845
|
);
|
|
1838
|
-
|
|
1846
|
+
v === null ? (d.warn(
|
|
1839
1847
|
"[Haori]",
|
|
1840
1848
|
"Reference child not found in children.",
|
|
1841
1849
|
e
|
|
1842
|
-
), this.children.push(t)) : (this.children.splice(
|
|
1850
|
+
), this.children.push(t)) : (this.children.splice(v.index, 0, t), b = v.referenceNode);
|
|
1843
1851
|
} else
|
|
1844
1852
|
this.children.splice(E, 0, t);
|
|
1845
1853
|
}
|
|
1846
1854
|
t.setParent(this), t.setMounted(this.mounted);
|
|
1847
|
-
const
|
|
1848
|
-
return this.skipMutationNodes = !0,
|
|
1849
|
-
this.target.insertBefore(t.getTarget(),
|
|
1855
|
+
const g = this.skipMutationNodes;
|
|
1856
|
+
return this.skipMutationNodes = !0, F.enqueue(() => {
|
|
1857
|
+
this.target.insertBefore(t.getTarget(), b);
|
|
1850
1858
|
}).finally(() => {
|
|
1851
|
-
this.skipMutationNodes =
|
|
1859
|
+
this.skipMutationNodes = g;
|
|
1852
1860
|
});
|
|
1853
1861
|
}
|
|
1854
1862
|
/**
|
|
@@ -1919,7 +1927,7 @@ class x extends T {
|
|
|
1919
1927
|
* @returns エレメントの非表示のPromise
|
|
1920
1928
|
*/
|
|
1921
1929
|
hide() {
|
|
1922
|
-
return this.visible = !1, this.display = this.getTarget().style.display, this.getTarget().style.display = "none", this.getTarget().setAttribute(`${
|
|
1930
|
+
return this.visible = !1, this.display = this.getTarget().style.display, this.getTarget().style.display = "none", this.getTarget().setAttribute(`${l.prefix}if-false`, ""), Promise.resolve();
|
|
1923
1931
|
}
|
|
1924
1932
|
/**
|
|
1925
1933
|
* エレメントを表示します。
|
|
@@ -1927,7 +1935,7 @@ class x extends T {
|
|
|
1927
1935
|
* @return エレメントの表示のPromise
|
|
1928
1936
|
*/
|
|
1929
1937
|
show() {
|
|
1930
|
-
return this.getTarget().style.display = this.display ?? "", this.getTarget().removeAttribute(`${
|
|
1938
|
+
return this.getTarget().style.display = this.display ?? "", this.getTarget().removeAttribute(`${l.prefix}if-false`), this.visible = !0, Promise.resolve();
|
|
1931
1939
|
}
|
|
1932
1940
|
/**
|
|
1933
1941
|
* 指定した属性名を持つ最も近い親要素を返します。
|
|
@@ -1943,7 +1951,7 @@ class x extends T {
|
|
|
1943
1951
|
return e === null ? null : e.closestByAttribute(t);
|
|
1944
1952
|
}
|
|
1945
1953
|
}
|
|
1946
|
-
class
|
|
1954
|
+
class O extends w {
|
|
1947
1955
|
/**
|
|
1948
1956
|
* テキストフラグメントのコンストラクタ。
|
|
1949
1957
|
* 対象テキストノードの内容を初期化します。
|
|
@@ -1951,7 +1959,7 @@ class H extends T {
|
|
|
1951
1959
|
* @param target 対象テキストノード
|
|
1952
1960
|
*/
|
|
1953
1961
|
constructor(t) {
|
|
1954
|
-
super(t), this.skipMutation = !1, this.text = t.textContent || "", this.contents = new
|
|
1962
|
+
super(t), this.skipMutation = !1, this.text = t.textContent || "", this.contents = new $(this.text);
|
|
1955
1963
|
}
|
|
1956
1964
|
/**
|
|
1957
1965
|
* フラグメントをクローンします。
|
|
@@ -1959,7 +1967,7 @@ class H extends T {
|
|
|
1959
1967
|
* @returns クローンされたフラグメント
|
|
1960
1968
|
*/
|
|
1961
1969
|
clone() {
|
|
1962
|
-
const t = new
|
|
1970
|
+
const t = new O(this.target.cloneNode(!0));
|
|
1963
1971
|
return t.mounted = !1, t.text = this.text, t.contents = this.contents, t;
|
|
1964
1972
|
}
|
|
1965
1973
|
/**
|
|
@@ -1977,7 +1985,7 @@ class H extends T {
|
|
|
1977
1985
|
* @returns 更新のPromise
|
|
1978
1986
|
*/
|
|
1979
1987
|
setContent(t) {
|
|
1980
|
-
return this.skipMutation || this.text === t ? Promise.resolve() : (this.text = t, this.contents = new
|
|
1988
|
+
return this.skipMutation || this.text === t ? Promise.resolve() : (this.text = t, this.contents = new $(t), this.evaluate());
|
|
1981
1989
|
}
|
|
1982
1990
|
/**
|
|
1983
1991
|
* フラグメントを評価します。
|
|
@@ -1987,10 +1995,10 @@ class H extends T {
|
|
|
1987
1995
|
evaluate() {
|
|
1988
1996
|
return this.contents.isRawEvaluate && this.parent === null ? Promise.reject(
|
|
1989
1997
|
new Error("Parent fragment is required for raw evaluation")
|
|
1990
|
-
) :
|
|
1998
|
+
) : F.enqueue(() => {
|
|
1991
1999
|
this.skipMutation = !0, this.contents.isRawEvaluate ? this.parent.getTarget().innerHTML = this.contents.evaluate(
|
|
1992
2000
|
this.parent.getBindingData()
|
|
1993
|
-
)[0] : this.contents.isEvaluate ? this.target.textContent =
|
|
2001
|
+
)[0] : this.contents.isEvaluate ? this.target.textContent = $.joinEvaluateResults(
|
|
1994
2002
|
this.contents.evaluate(this.parent.getBindingData())
|
|
1995
2003
|
) : this.target.textContent = this.text;
|
|
1996
2004
|
}).finally(() => {
|
|
@@ -1998,7 +2006,7 @@ class H extends T {
|
|
|
1998
2006
|
});
|
|
1999
2007
|
}
|
|
2000
2008
|
}
|
|
2001
|
-
class Z extends
|
|
2009
|
+
class Z extends w {
|
|
2002
2010
|
/**
|
|
2003
2011
|
* コメントフラグメントのコンストラクタ。
|
|
2004
2012
|
* 対象コメントノードの内容を初期化します。
|
|
@@ -2032,7 +2040,7 @@ class Z extends T {
|
|
|
2032
2040
|
* @return 更新のPromise
|
|
2033
2041
|
*/
|
|
2034
2042
|
setContent(t) {
|
|
2035
|
-
return this.skipMutation || this.text === t ? Promise.resolve() : (this.text = t,
|
|
2043
|
+
return this.skipMutation || this.text === t ? Promise.resolve() : (this.text = t, F.enqueue(() => {
|
|
2036
2044
|
this.skipMutation = !0, this.target.textContent = this.text;
|
|
2037
2045
|
}).finally(() => {
|
|
2038
2046
|
this.skipMutation = !1;
|
|
@@ -2123,8 +2131,8 @@ const K = class K {
|
|
|
2123
2131
|
}
|
|
2124
2132
|
};
|
|
2125
2133
|
K.PLACEHOLDER_REGEX = /\{\{\{([\s\S]+?)\}\}\}|\{\{([\s\S]+?)\}\}/g;
|
|
2126
|
-
let
|
|
2127
|
-
const G = class G extends
|
|
2134
|
+
let $ = K;
|
|
2135
|
+
const G = class G extends $ {
|
|
2128
2136
|
/**
|
|
2129
2137
|
* コンストラクタ。
|
|
2130
2138
|
*
|
|
@@ -2180,7 +2188,7 @@ G.FORCE_EVALUATION_ATTRIBUTES = [
|
|
|
2180
2188
|
"hor-each"
|
|
2181
2189
|
];
|
|
2182
2190
|
let U = G;
|
|
2183
|
-
class
|
|
2191
|
+
class N {
|
|
2184
2192
|
/**
|
|
2185
2193
|
* カスタムイベントを発火します。
|
|
2186
2194
|
*
|
|
@@ -2204,7 +2212,7 @@ class w {
|
|
|
2204
2212
|
* @param version ライブラリバージョン
|
|
2205
2213
|
*/
|
|
2206
2214
|
static ready(t) {
|
|
2207
|
-
|
|
2215
|
+
N.dispatch(document, "ready", { version: t });
|
|
2208
2216
|
}
|
|
2209
2217
|
/**
|
|
2210
2218
|
* renderイベントを発火します。
|
|
@@ -2212,7 +2220,7 @@ class w {
|
|
|
2212
2220
|
* @param target 評価対象要素
|
|
2213
2221
|
*/
|
|
2214
2222
|
static render(t) {
|
|
2215
|
-
|
|
2223
|
+
N.dispatch(t, "render", { target: t });
|
|
2216
2224
|
}
|
|
2217
2225
|
/**
|
|
2218
2226
|
* importstartイベントを発火します。
|
|
@@ -2221,7 +2229,7 @@ class w {
|
|
|
2221
2229
|
* @param url インポート対象URL
|
|
2222
2230
|
*/
|
|
2223
2231
|
static importStart(t, e) {
|
|
2224
|
-
|
|
2232
|
+
N.dispatch(t, "importstart", {
|
|
2225
2233
|
url: e,
|
|
2226
2234
|
startedAt: performance.now()
|
|
2227
2235
|
});
|
|
@@ -2235,7 +2243,7 @@ class w {
|
|
|
2235
2243
|
* @param startedAt 開始時刻
|
|
2236
2244
|
*/
|
|
2237
2245
|
static importEnd(t, e, r, i) {
|
|
2238
|
-
|
|
2246
|
+
N.dispatch(t, "importend", {
|
|
2239
2247
|
url: e,
|
|
2240
2248
|
bytes: r,
|
|
2241
2249
|
durationMs: performance.now() - i
|
|
@@ -2249,7 +2257,7 @@ class w {
|
|
|
2249
2257
|
* @param error エラー内容
|
|
2250
2258
|
*/
|
|
2251
2259
|
static importError(t, e, r) {
|
|
2252
|
-
|
|
2260
|
+
N.dispatch(t, "importerror", { url: e, error: r });
|
|
2253
2261
|
}
|
|
2254
2262
|
/**
|
|
2255
2263
|
* bindchangeイベントを発火します。
|
|
@@ -2262,10 +2270,10 @@ class w {
|
|
|
2262
2270
|
static bindChange(t, e, r, i = "other") {
|
|
2263
2271
|
const n = [], s = new Set(Object.keys(e || {})), a = new Set(Object.keys(r)), o = /* @__PURE__ */ new Set([...s, ...a]);
|
|
2264
2272
|
for (const h of o) {
|
|
2265
|
-
const
|
|
2266
|
-
|
|
2273
|
+
const b = e?.[h], g = r[h];
|
|
2274
|
+
b !== g && n.push(h);
|
|
2267
2275
|
}
|
|
2268
|
-
|
|
2276
|
+
N.dispatch(t, "bindchange", {
|
|
2269
2277
|
previous: e || {},
|
|
2270
2278
|
next: r,
|
|
2271
2279
|
changedKeys: n,
|
|
@@ -2281,7 +2289,7 @@ class w {
|
|
|
2281
2289
|
* @param order 現在の順序
|
|
2282
2290
|
*/
|
|
2283
2291
|
static eachUpdate(t, e, r, i) {
|
|
2284
|
-
|
|
2292
|
+
N.dispatch(t, "eachupdate", {
|
|
2285
2293
|
added: e,
|
|
2286
2294
|
removed: r,
|
|
2287
2295
|
order: i,
|
|
@@ -2297,7 +2305,7 @@ class w {
|
|
|
2297
2305
|
* @param item 行データ
|
|
2298
2306
|
*/
|
|
2299
2307
|
static rowAdd(t, e, r, i) {
|
|
2300
|
-
|
|
2308
|
+
N.dispatch(t, "rowadd", { key: e, index: r, item: i });
|
|
2301
2309
|
}
|
|
2302
2310
|
/**
|
|
2303
2311
|
* rowremoveイベントを発火します。
|
|
@@ -2307,7 +2315,7 @@ class w {
|
|
|
2307
2315
|
* @param index インデックス
|
|
2308
2316
|
*/
|
|
2309
2317
|
static rowRemove(t, e, r) {
|
|
2310
|
-
|
|
2318
|
+
N.dispatch(t, "rowremove", { key: e, index: r });
|
|
2311
2319
|
}
|
|
2312
2320
|
/**
|
|
2313
2321
|
* rowmoveイベントを発火します。
|
|
@@ -2318,7 +2326,7 @@ class w {
|
|
|
2318
2326
|
* @param to 移動後インデックス
|
|
2319
2327
|
*/
|
|
2320
2328
|
static rowMove(t, e, r, i) {
|
|
2321
|
-
|
|
2329
|
+
N.dispatch(t, "rowmove", { key: e, from: r, to: i });
|
|
2322
2330
|
}
|
|
2323
2331
|
/**
|
|
2324
2332
|
* showイベントを発火します。
|
|
@@ -2326,7 +2334,7 @@ class w {
|
|
|
2326
2334
|
* @param target data-if要素
|
|
2327
2335
|
*/
|
|
2328
2336
|
static show(t) {
|
|
2329
|
-
|
|
2337
|
+
N.dispatch(t, "show", { visible: !0 });
|
|
2330
2338
|
}
|
|
2331
2339
|
/**
|
|
2332
2340
|
* hideイベントを発火します。
|
|
@@ -2334,7 +2342,7 @@ class w {
|
|
|
2334
2342
|
* @param target data-if要素
|
|
2335
2343
|
*/
|
|
2336
2344
|
static hide(t) {
|
|
2337
|
-
|
|
2345
|
+
N.dispatch(t, "hide", { visible: !1 });
|
|
2338
2346
|
}
|
|
2339
2347
|
/**
|
|
2340
2348
|
* fetchstartイベントを発火します。
|
|
@@ -2347,7 +2355,7 @@ class w {
|
|
|
2347
2355
|
* @return 戻り値はありません。
|
|
2348
2356
|
*/
|
|
2349
2357
|
static fetchStart(t, e, r, i, n) {
|
|
2350
|
-
|
|
2358
|
+
N.dispatch(t, "fetchstart", {
|
|
2351
2359
|
url: e,
|
|
2352
2360
|
options: r || {},
|
|
2353
2361
|
payload: i,
|
|
@@ -2364,7 +2372,7 @@ class w {
|
|
|
2364
2372
|
* @param startedAt 開始時刻
|
|
2365
2373
|
*/
|
|
2366
2374
|
static fetchEnd(t, e, r, i) {
|
|
2367
|
-
|
|
2375
|
+
N.dispatch(t, "fetchend", {
|
|
2368
2376
|
url: e,
|
|
2369
2377
|
status: r,
|
|
2370
2378
|
durationMs: performance.now() - i
|
|
@@ -2380,7 +2388,7 @@ class w {
|
|
|
2380
2388
|
* @param startedAt 開始時刻(存在する場合)
|
|
2381
2389
|
*/
|
|
2382
2390
|
static fetchError(t, e, r, i, n) {
|
|
2383
|
-
|
|
2391
|
+
N.dispatch(t, "fetcherror", {
|
|
2384
2392
|
url: e,
|
|
2385
2393
|
status: i,
|
|
2386
2394
|
error: r,
|
|
@@ -2403,20 +2411,20 @@ function W() {
|
|
|
2403
2411
|
) ? t : X;
|
|
2404
2412
|
}
|
|
2405
2413
|
const lt = /* @__PURE__ */ new Set(["GET", "HEAD", "OPTIONS"]);
|
|
2406
|
-
function ut(
|
|
2407
|
-
return lt.has(
|
|
2414
|
+
function ut(P) {
|
|
2415
|
+
return lt.has(P.toUpperCase());
|
|
2408
2416
|
}
|
|
2409
|
-
function ct(
|
|
2417
|
+
function ct(P, t) {
|
|
2410
2418
|
for (const [e, r] of Object.entries(t))
|
|
2411
|
-
r !== void 0 && (r === null ?
|
|
2412
|
-
|
|
2413
|
-
}) : typeof r == "object" || typeof r == "function" ?
|
|
2419
|
+
r !== void 0 && (r === null ? P.append(e, "") : Array.isArray(r) ? r.forEach((i) => {
|
|
2420
|
+
P.append(e, String(i));
|
|
2421
|
+
}) : typeof r == "object" || typeof r == "function" ? P.append(e, JSON.stringify(r)) : P.append(e, String(r)));
|
|
2414
2422
|
}
|
|
2415
|
-
function ht(
|
|
2416
|
-
const e = new URL(
|
|
2423
|
+
function ht(P, t) {
|
|
2424
|
+
const e = new URL(P, window.location.href), r = new URLSearchParams(e.search);
|
|
2417
2425
|
return ct(r, t), e.search = r.toString(), e.toString();
|
|
2418
2426
|
}
|
|
2419
|
-
const
|
|
2427
|
+
const u = class u {
|
|
2420
2428
|
/**
|
|
2421
2429
|
* イベント属性名を正しく生成します。
|
|
2422
2430
|
* 例: ("click", "fetch") => "data-click-fetch"
|
|
@@ -2425,7 +2433,7 @@ const l = class l {
|
|
|
2425
2433
|
* 非イベント変種が "data-fetch-xxx" として存在するものについては、event が null の場合にそちらを返します。
|
|
2426
2434
|
*/
|
|
2427
2435
|
static attrName(t, e, r = !1) {
|
|
2428
|
-
return t ? `${
|
|
2436
|
+
return t ? `${l.prefix}${t}-${e}` : r ? `${l.prefix}fetch-${e}` : `${l.prefix}${e}`;
|
|
2429
2437
|
}
|
|
2430
2438
|
/**
|
|
2431
2439
|
* data 属性のテンプレート式評価結果を URLSearchParams 向けに組み立てます。
|
|
@@ -2436,7 +2444,7 @@ const l = class l {
|
|
|
2436
2444
|
*/
|
|
2437
2445
|
static resolveDataParamString(t, e) {
|
|
2438
2446
|
return t.replace(
|
|
2439
|
-
|
|
2447
|
+
u.DATA_PLACEHOLDER_REGEX,
|
|
2440
2448
|
(r, i, n) => {
|
|
2441
2449
|
const s = j.evaluate(
|
|
2442
2450
|
i ?? n ?? "",
|
|
@@ -2493,7 +2501,7 @@ const l = class l {
|
|
|
2493
2501
|
static stringifyJsonTemplateStringContent(t) {
|
|
2494
2502
|
if (t == null || Number.isNaN(t))
|
|
2495
2503
|
return "";
|
|
2496
|
-
const e = typeof t == "object" ?
|
|
2504
|
+
const e = typeof t == "object" ? u.stringifyJsonTemplateValue(t) : String(t);
|
|
2497
2505
|
return JSON.stringify(e).slice(1, -1);
|
|
2498
2506
|
}
|
|
2499
2507
|
/**
|
|
@@ -2505,13 +2513,13 @@ const l = class l {
|
|
|
2505
2513
|
*/
|
|
2506
2514
|
static resolveDataJsonString(t, e) {
|
|
2507
2515
|
return t.replace(
|
|
2508
|
-
|
|
2516
|
+
u.DATA_PLACEHOLDER_REGEX,
|
|
2509
2517
|
(r, i, n, s) => {
|
|
2510
2518
|
const a = j.evaluate(
|
|
2511
2519
|
i ?? n ?? "",
|
|
2512
2520
|
e
|
|
2513
2521
|
);
|
|
2514
|
-
return
|
|
2522
|
+
return u.isJsonStringContext(t, s) ? u.stringifyJsonTemplateStringContent(a) : u.stringifyJsonTemplateValue(a);
|
|
2515
2523
|
}
|
|
2516
2524
|
);
|
|
2517
2525
|
}
|
|
@@ -2529,13 +2537,13 @@ const l = class l {
|
|
|
2529
2537
|
if (typeof i != "string" || r === null)
|
|
2530
2538
|
return null;
|
|
2531
2539
|
const n = r.trim();
|
|
2532
|
-
return
|
|
2533
|
-
|
|
2540
|
+
return u.SINGLE_PLACEHOLDER_REGEX.test(n) ? R.parseDataBind(i) : n.startsWith("{") || n.startsWith("[") ? R.parseDataBind(
|
|
2541
|
+
u.resolveDataJsonString(
|
|
2534
2542
|
r,
|
|
2535
2543
|
t.getBindingData()
|
|
2536
2544
|
)
|
|
2537
|
-
) :
|
|
2538
|
-
|
|
2545
|
+
) : R.parseDataBind(
|
|
2546
|
+
u.resolveDataParamString(r, t.getBindingData())
|
|
2539
2547
|
);
|
|
2540
2548
|
}
|
|
2541
2549
|
/**
|
|
@@ -2550,30 +2558,30 @@ const l = class l {
|
|
|
2550
2558
|
targetFragment: t
|
|
2551
2559
|
};
|
|
2552
2560
|
if (e) {
|
|
2553
|
-
if (t.hasAttribute(
|
|
2554
|
-
|
|
2561
|
+
if (t.hasAttribute(u.attrName(e, "validate")) && (r.valid = !0), t.hasAttribute(u.attrName(e, "confirm")) && (r.confirmMessage = t.getAttribute(
|
|
2562
|
+
u.attrName(e, "confirm")
|
|
2555
2563
|
).replace(/\\n/g, `
|
|
2556
|
-
`)), t.hasAttribute(
|
|
2564
|
+
`)), t.hasAttribute(u.attrName(e, "data")) && (r.data = u.resolveDataAttribute(
|
|
2557
2565
|
t,
|
|
2558
|
-
|
|
2559
|
-
)), t.hasAttribute(
|
|
2566
|
+
u.attrName(e, "data")
|
|
2567
|
+
)), t.hasAttribute(u.attrName(e, "form"))) {
|
|
2560
2568
|
const c = t.getRawAttribute(
|
|
2561
|
-
|
|
2569
|
+
u.attrName(e, "form")
|
|
2562
2570
|
);
|
|
2563
2571
|
if (c) {
|
|
2564
2572
|
const f = document.body.querySelector(c);
|
|
2565
2573
|
f !== null ? r.formFragment = y.getFormFragment(
|
|
2566
|
-
|
|
2574
|
+
w.get(f)
|
|
2567
2575
|
) : d.error(
|
|
2568
2576
|
"Haori",
|
|
2569
|
-
`Form element not found: ${c} (${
|
|
2577
|
+
`Form element not found: ${c} (${u.attrName(e, "form")})`
|
|
2570
2578
|
);
|
|
2571
2579
|
} else
|
|
2572
2580
|
r.formFragment = y.getFormFragment(t);
|
|
2573
2581
|
} else e === "change" && (r.formFragment = y.getFormFragment(t));
|
|
2574
|
-
if (t.hasAttribute(`${
|
|
2582
|
+
if (t.hasAttribute(`${l.prefix}${e}-before-run`)) {
|
|
2575
2583
|
const c = t.getRawAttribute(
|
|
2576
|
-
`${
|
|
2584
|
+
`${l.prefix}${e}-before-run`
|
|
2577
2585
|
);
|
|
2578
2586
|
try {
|
|
2579
2587
|
r.beforeCallback = new Function(
|
|
@@ -2589,34 +2597,34 @@ ${c}
|
|
|
2589
2597
|
}
|
|
2590
2598
|
}
|
|
2591
2599
|
}
|
|
2592
|
-
const i =
|
|
2600
|
+
const i = u.attrName(e, "fetch"), n = t.hasAttribute(i);
|
|
2593
2601
|
n && (r.fetchUrl = t.getAttribute(i));
|
|
2594
2602
|
const s = {};
|
|
2595
2603
|
if (e) {
|
|
2596
|
-
const c =
|
|
2604
|
+
const c = u.attrName(e, "fetch-method");
|
|
2597
2605
|
t.hasAttribute(c) && (s.method = t.getAttribute(
|
|
2598
2606
|
c
|
|
2599
2607
|
));
|
|
2600
2608
|
} else {
|
|
2601
|
-
const c =
|
|
2609
|
+
const c = u.attrName(null, "method", !0);
|
|
2602
2610
|
t.hasAttribute(c) && (s.method = t.getAttribute(
|
|
2603
2611
|
c
|
|
2604
2612
|
));
|
|
2605
2613
|
}
|
|
2606
2614
|
if (e) {
|
|
2607
|
-
const c =
|
|
2615
|
+
const c = u.attrName(e, "fetch-headers");
|
|
2608
2616
|
if (t.hasAttribute(c)) {
|
|
2609
2617
|
const f = t.getRawAttribute(
|
|
2610
2618
|
c
|
|
2611
2619
|
);
|
|
2612
2620
|
try {
|
|
2613
|
-
s.headers =
|
|
2614
|
-
} catch (
|
|
2615
|
-
d.error("Haori", `Invalid fetch headers: ${
|
|
2621
|
+
s.headers = R.parseDataBind(f);
|
|
2622
|
+
} catch (m) {
|
|
2623
|
+
d.error("Haori", `Invalid fetch headers: ${m}`);
|
|
2616
2624
|
}
|
|
2617
2625
|
}
|
|
2618
2626
|
} else {
|
|
2619
|
-
const c =
|
|
2627
|
+
const c = u.attrName(
|
|
2620
2628
|
null,
|
|
2621
2629
|
"headers",
|
|
2622
2630
|
!0
|
|
@@ -2626,14 +2634,14 @@ ${c}
|
|
|
2626
2634
|
c
|
|
2627
2635
|
);
|
|
2628
2636
|
try {
|
|
2629
|
-
s.headers =
|
|
2630
|
-
} catch (
|
|
2631
|
-
d.error("Haori", `Invalid fetch headers: ${
|
|
2637
|
+
s.headers = R.parseDataBind(f);
|
|
2638
|
+
} catch (m) {
|
|
2639
|
+
d.error("Haori", `Invalid fetch headers: ${m}`);
|
|
2632
2640
|
}
|
|
2633
2641
|
}
|
|
2634
2642
|
}
|
|
2635
2643
|
if (e) {
|
|
2636
|
-
const c =
|
|
2644
|
+
const c = u.attrName(
|
|
2637
2645
|
e,
|
|
2638
2646
|
"fetch-content-type"
|
|
2639
2647
|
);
|
|
@@ -2653,7 +2661,7 @@ ${c}
|
|
|
2653
2661
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
2654
2662
|
});
|
|
2655
2663
|
} else {
|
|
2656
|
-
const c =
|
|
2664
|
+
const c = u.attrName(
|
|
2657
2665
|
null,
|
|
2658
2666
|
"content-type",
|
|
2659
2667
|
!0
|
|
@@ -2675,13 +2683,13 @@ ${c}
|
|
|
2675
2683
|
});
|
|
2676
2684
|
}
|
|
2677
2685
|
Object.keys(s).length > 0 && (r.fetchOptions = s);
|
|
2678
|
-
const a = e ?
|
|
2686
|
+
const a = e ? u.attrName(e, "bind") : u.attrName(null, "bind", !0);
|
|
2679
2687
|
if (t.hasAttribute(a)) {
|
|
2680
2688
|
const c = t.getRawAttribute(a);
|
|
2681
2689
|
if (c) {
|
|
2682
2690
|
const f = document.body.querySelectorAll(c);
|
|
2683
|
-
f.length > 0 ? (r.bindFragments = [], f.forEach((
|
|
2684
|
-
const A =
|
|
2691
|
+
f.length > 0 ? (r.bindFragments = [], f.forEach((m) => {
|
|
2692
|
+
const A = w.get(m);
|
|
2685
2693
|
A && r.bindFragments.push(A);
|
|
2686
2694
|
})) : d.error(
|
|
2687
2695
|
"Haori",
|
|
@@ -2689,60 +2697,60 @@ ${c}
|
|
|
2689
2697
|
);
|
|
2690
2698
|
}
|
|
2691
2699
|
}
|
|
2692
|
-
const o =
|
|
2700
|
+
const o = u.attrName(e, "bind-arg"), h = u.attrName(
|
|
2693
2701
|
null,
|
|
2694
2702
|
"arg",
|
|
2695
2703
|
!0
|
|
2696
|
-
),
|
|
2704
|
+
), b = u.attrName(
|
|
2697
2705
|
null,
|
|
2698
2706
|
"bind-arg",
|
|
2699
2707
|
!0
|
|
2700
2708
|
);
|
|
2701
2709
|
e ? t.hasAttribute(o) && (r.bindArg = t.getRawAttribute(o)) : t.hasAttribute(h) ? r.bindArg = t.getRawAttribute(
|
|
2702
2710
|
h
|
|
2703
|
-
) : t.hasAttribute(
|
|
2704
|
-
const
|
|
2705
|
-
if (t.hasAttribute(
|
|
2706
|
-
const c = t.getRawAttribute(
|
|
2711
|
+
) : t.hasAttribute(b) && (r.bindArg = t.getRawAttribute(b));
|
|
2712
|
+
const g = e ? u.attrName(e, "bind-params") : u.attrName(null, "bind-params", !0);
|
|
2713
|
+
if (t.hasAttribute(g)) {
|
|
2714
|
+
const c = t.getRawAttribute(g);
|
|
2707
2715
|
r.bindParams = c.split("&").map((f) => f.trim());
|
|
2708
2716
|
}
|
|
2709
|
-
const E = e ?
|
|
2717
|
+
const E = e ? u.attrName(e, "bind-append") : u.attrName(null, "bind-append", !0);
|
|
2710
2718
|
if (t.hasAttribute(E)) {
|
|
2711
2719
|
const c = t.getRawAttribute(E);
|
|
2712
2720
|
r.bindAppendParams = c.split("&").map((f) => f.trim()).filter(Boolean);
|
|
2713
2721
|
}
|
|
2714
|
-
const
|
|
2715
|
-
if (
|
|
2722
|
+
const v = e ? u.attrName(e, "copy-params") : null;
|
|
2723
|
+
if (v && t.hasAttribute(v)) {
|
|
2716
2724
|
const c = t.getRawAttribute(
|
|
2717
|
-
|
|
2725
|
+
v
|
|
2718
2726
|
);
|
|
2719
2727
|
r.copyParams = c.split("&").map((f) => f.trim()).filter(Boolean);
|
|
2720
2728
|
}
|
|
2721
2729
|
if (e) {
|
|
2722
|
-
if (t.hasAttribute(
|
|
2730
|
+
if (t.hasAttribute(u.attrName(e, "adjust"))) {
|
|
2723
2731
|
const f = t.getRawAttribute(
|
|
2724
|
-
|
|
2732
|
+
u.attrName(e, "adjust")
|
|
2725
2733
|
);
|
|
2726
2734
|
if (f) {
|
|
2727
|
-
const
|
|
2728
|
-
|
|
2729
|
-
const
|
|
2730
|
-
|
|
2735
|
+
const m = document.body.querySelectorAll(f);
|
|
2736
|
+
m.length > 0 ? (r.adjustFragments = [], m.forEach((A) => {
|
|
2737
|
+
const T = w.get(A);
|
|
2738
|
+
T && r.adjustFragments.push(T);
|
|
2731
2739
|
})) : d.error(
|
|
2732
2740
|
"Haori",
|
|
2733
|
-
`Adjust element not found: ${f} (${
|
|
2741
|
+
`Adjust element not found: ${f} (${u.attrName(e, "adjust")})`
|
|
2734
2742
|
);
|
|
2735
2743
|
}
|
|
2736
|
-
if (t.hasAttribute(
|
|
2737
|
-
const
|
|
2738
|
-
|
|
2739
|
-
), A = Number(
|
|
2744
|
+
if (t.hasAttribute(u.attrName(e, "adjust-value"))) {
|
|
2745
|
+
const m = t.getRawAttribute(
|
|
2746
|
+
u.attrName(e, "adjust-value")
|
|
2747
|
+
), A = Number(m);
|
|
2740
2748
|
isNaN(A) || (r.adjustValue = A);
|
|
2741
2749
|
}
|
|
2742
2750
|
}
|
|
2743
|
-
if (t.hasAttribute(
|
|
2751
|
+
if (t.hasAttribute(u.attrName(e, "row-add")) && (r.rowAdd = !0), t.hasAttribute(u.attrName(e, "row-remove")) && (r.rowRemove = !0), t.hasAttribute(u.attrName(e, "row-prev")) && (r.rowMovePrev = !0), t.hasAttribute(u.attrName(e, "row-next")) && (r.rowMoveNext = !0), t.hasAttribute(`${l.prefix}${e}-after-run`)) {
|
|
2744
2752
|
const f = t.getRawAttribute(
|
|
2745
|
-
`${
|
|
2753
|
+
`${l.prefix}${e}-after-run`
|
|
2746
2754
|
);
|
|
2747
2755
|
try {
|
|
2748
2756
|
r.afterCallback = new Function(
|
|
@@ -2752,42 +2760,42 @@ ${c}
|
|
|
2752
2760
|
${f}
|
|
2753
2761
|
`
|
|
2754
2762
|
);
|
|
2755
|
-
} catch (
|
|
2756
|
-
d.error("Haori", `Invalid after script: ${
|
|
2763
|
+
} catch (m) {
|
|
2764
|
+
d.error("Haori", `Invalid after script: ${m}`);
|
|
2757
2765
|
}
|
|
2758
2766
|
}
|
|
2759
|
-
if (t.hasAttribute(
|
|
2760
|
-
|
|
2767
|
+
if (t.hasAttribute(u.attrName(e, "dialog")) && (r.dialogMessage = t.getAttribute(
|
|
2768
|
+
u.attrName(e, "dialog")
|
|
2761
2769
|
).replace(/\\n/g, `
|
|
2762
|
-
`)), t.hasAttribute(
|
|
2770
|
+
`)), t.hasAttribute(u.attrName(e, "toast"))) {
|
|
2763
2771
|
r.toastMessage = t.getAttribute(
|
|
2764
|
-
|
|
2772
|
+
u.attrName(e, "toast")
|
|
2765
2773
|
);
|
|
2766
2774
|
const f = t.getRawAttribute(
|
|
2767
|
-
|
|
2775
|
+
u.attrName(e, "toast-level")
|
|
2768
2776
|
), A = ["info", "warning", "error", "success"].includes(f);
|
|
2769
2777
|
r.toastLevel = A ? f : null;
|
|
2770
2778
|
}
|
|
2771
|
-
if (t.hasAttribute(
|
|
2772
|
-
|
|
2773
|
-
)), t.hasAttribute(
|
|
2774
|
-
|
|
2775
|
-
)), t.hasAttribute(
|
|
2776
|
-
|
|
2777
|
-
)), t.hasAttribute(
|
|
2779
|
+
if (t.hasAttribute(u.attrName(e, "redirect")) && (r.redirectUrl = t.getAttribute(
|
|
2780
|
+
u.attrName(e, "redirect")
|
|
2781
|
+
)), t.hasAttribute(u.attrName(e, "scroll-error")) && (r.scrollOnError = !0), t.hasAttribute(u.attrName(e, "scroll")) && (r.scrollTarget = t.getAttribute(
|
|
2782
|
+
u.attrName(e, "scroll")
|
|
2783
|
+
)), t.hasAttribute(u.attrName(e, "history")) && (r.historyUrl = t.getAttribute(
|
|
2784
|
+
u.attrName(e, "history")
|
|
2785
|
+
)), t.hasAttribute(u.attrName(e, "history-data")) && (r.historyData = u.resolveDataAttribute(
|
|
2778
2786
|
t,
|
|
2779
|
-
|
|
2780
|
-
)), t.hasAttribute(
|
|
2787
|
+
u.attrName(e, "history-data")
|
|
2788
|
+
)), t.hasAttribute(u.attrName(e, "history-form"))) {
|
|
2781
2789
|
const f = t.getRawAttribute(
|
|
2782
|
-
|
|
2790
|
+
u.attrName(e, "history-form")
|
|
2783
2791
|
);
|
|
2784
2792
|
if (f) {
|
|
2785
|
-
const
|
|
2786
|
-
|
|
2787
|
-
|
|
2793
|
+
const m = document.body.querySelector(f);
|
|
2794
|
+
m !== null ? r.historyFormFragment = y.getFormFragment(
|
|
2795
|
+
w.get(m)
|
|
2788
2796
|
) : d.error(
|
|
2789
2797
|
"Haori",
|
|
2790
|
-
`Form element not found: ${f} (${
|
|
2798
|
+
`Form element not found: ${f} (${u.attrName(e, "history-form")})`
|
|
2791
2799
|
);
|
|
2792
2800
|
} else
|
|
2793
2801
|
r.historyFormFragment = y.getFormFragment(t);
|
|
@@ -2800,50 +2808,50 @@ ${f}
|
|
|
2800
2808
|
"open",
|
|
2801
2809
|
"close"
|
|
2802
2810
|
].forEach((f) => {
|
|
2803
|
-
const
|
|
2804
|
-
if (!t.hasAttribute(
|
|
2811
|
+
const m = u.attrName(e, f);
|
|
2812
|
+
if (!t.hasAttribute(m))
|
|
2805
2813
|
return;
|
|
2806
|
-
const A = t.getRawAttribute(
|
|
2814
|
+
const A = t.getRawAttribute(m), T = [];
|
|
2807
2815
|
if (A ? (document.body.querySelectorAll(A).forEach((J) => {
|
|
2808
|
-
const tt =
|
|
2809
|
-
tt &&
|
|
2810
|
-
}),
|
|
2816
|
+
const tt = w.get(J);
|
|
2817
|
+
tt && T.push(tt);
|
|
2818
|
+
}), T.length === 0 && d.error("Haori", `Element not found: ${A} (${m})`)) : T.push(t), T.length > 0)
|
|
2811
2819
|
switch (f) {
|
|
2812
2820
|
case "reset":
|
|
2813
|
-
r.resetFragments =
|
|
2821
|
+
r.resetFragments = T;
|
|
2814
2822
|
break;
|
|
2815
2823
|
case "refetch":
|
|
2816
|
-
r.refetchFragments =
|
|
2824
|
+
r.refetchFragments = T;
|
|
2817
2825
|
break;
|
|
2818
2826
|
case "click":
|
|
2819
|
-
r.clickFragments =
|
|
2827
|
+
r.clickFragments = T;
|
|
2820
2828
|
break;
|
|
2821
2829
|
case "copy":
|
|
2822
|
-
r.copyFragments =
|
|
2830
|
+
r.copyFragments = T;
|
|
2823
2831
|
break;
|
|
2824
2832
|
case "open":
|
|
2825
|
-
r.openFragments =
|
|
2833
|
+
r.openFragments = T;
|
|
2826
2834
|
break;
|
|
2827
2835
|
case "close":
|
|
2828
|
-
r.closeFragments =
|
|
2836
|
+
r.closeFragments = T;
|
|
2829
2837
|
break;
|
|
2830
2838
|
}
|
|
2831
2839
|
});
|
|
2832
2840
|
}
|
|
2833
|
-
if (!e && (t.hasAttribute(
|
|
2841
|
+
if (!e && (t.hasAttribute(u.attrName(null, "data", !0)) && (r.data = u.resolveDataAttribute(
|
|
2834
2842
|
t,
|
|
2835
|
-
|
|
2836
|
-
)), t.hasAttribute(
|
|
2843
|
+
u.attrName(null, "data", !0)
|
|
2844
|
+
)), t.hasAttribute(u.attrName(null, "form", !0)))) {
|
|
2837
2845
|
const c = t.getRawAttribute(
|
|
2838
|
-
|
|
2846
|
+
u.attrName(null, "form", !0)
|
|
2839
2847
|
);
|
|
2840
2848
|
if (c) {
|
|
2841
2849
|
const f = document.body.querySelector(c);
|
|
2842
2850
|
f !== null ? r.formFragment = y.getFormFragment(
|
|
2843
|
-
|
|
2851
|
+
w.get(f)
|
|
2844
2852
|
) : d.error(
|
|
2845
2853
|
"Haori",
|
|
2846
|
-
`Form element not found: ${c} (${
|
|
2854
|
+
`Form element not found: ${c} (${u.attrName(null, "fetch-form", !0)})`
|
|
2847
2855
|
);
|
|
2848
2856
|
} else
|
|
2849
2857
|
r.formFragment = y.getFormFragment(t);
|
|
@@ -2869,7 +2877,7 @@ ${f}
|
|
|
2869
2877
|
* @param arg2 イベント名
|
|
2870
2878
|
*/
|
|
2871
2879
|
constructor(t, e = null) {
|
|
2872
|
-
|
|
2880
|
+
u.isElementFragment(t) ? this.options = u.buildOptions(t, e) : this.options = t;
|
|
2873
2881
|
}
|
|
2874
2882
|
/**
|
|
2875
2883
|
* 一連の処理を実行します。オプションが空の場合は即座にresolveされます。
|
|
@@ -2918,7 +2926,7 @@ ${f}
|
|
|
2918
2926
|
if (e) {
|
|
2919
2927
|
const o = { ...r || {} }, h = new Headers(
|
|
2920
2928
|
o.headers || void 0
|
|
2921
|
-
),
|
|
2929
|
+
), b = (o.method || "GET").toUpperCase(), g = l.runtime === "demo" && !ut(b), E = g ? "GET" : b;
|
|
2922
2930
|
if (o.method = E, E === "GET" || E === "HEAD" || E === "OPTIONS")
|
|
2923
2931
|
n && (e = ht(e, i));
|
|
2924
2932
|
else if (n) {
|
|
@@ -2926,51 +2934,51 @@ ${f}
|
|
|
2926
2934
|
if (/multipart\/form-data/i.test(c)) {
|
|
2927
2935
|
h.delete("Content-Type");
|
|
2928
2936
|
const f = new FormData();
|
|
2929
|
-
for (const [
|
|
2930
|
-
A == null ? f.append(
|
|
2937
|
+
for (const [m, A] of Object.entries(i))
|
|
2938
|
+
A == null ? f.append(m, "") : A instanceof Blob ? f.append(m, A) : Array.isArray(A) ? A.forEach((T) => f.append(m, String(T))) : typeof A == "object" ? f.append(m, JSON.stringify(A)) : f.append(m, String(A));
|
|
2931
2939
|
o.body = f;
|
|
2932
2940
|
} else if (/application\/x-www-form-urlencoded/i.test(c)) {
|
|
2933
2941
|
const f = new URLSearchParams();
|
|
2934
|
-
for (const [
|
|
2935
|
-
A !== void 0 && (A === null ? f.append(
|
|
2942
|
+
for (const [m, A] of Object.entries(i))
|
|
2943
|
+
A !== void 0 && (A === null ? f.append(m, "") : Array.isArray(A) ? A.forEach((T) => f.append(m, String(T))) : typeof A == "object" ? f.append(m, JSON.stringify(A)) : f.append(m, String(A)));
|
|
2936
2944
|
o.body = f;
|
|
2937
2945
|
} else
|
|
2938
2946
|
h.set("Content-Type", "application/json"), o.body = JSON.stringify(i);
|
|
2939
2947
|
}
|
|
2940
2948
|
o.headers = h;
|
|
2941
|
-
let
|
|
2942
|
-
if (
|
|
2943
|
-
runtime:
|
|
2944
|
-
requestedMethod:
|
|
2949
|
+
let v;
|
|
2950
|
+
if (g && (v = e && new URL(e, window.location.href).search || void 0, h.delete("Content-Type"), d.info("Haori demo fetch normalization", {
|
|
2951
|
+
runtime: l.runtime,
|
|
2952
|
+
requestedMethod: b,
|
|
2945
2953
|
effectiveMethod: E,
|
|
2946
2954
|
transportMode: "query-get",
|
|
2947
2955
|
url: e,
|
|
2948
2956
|
payload: n ? i : void 0,
|
|
2949
|
-
queryString:
|
|
2957
|
+
queryString: v
|
|
2950
2958
|
})), this.options.targetFragment && e) {
|
|
2951
2959
|
const c = performance.now(), f = {
|
|
2952
|
-
runtime:
|
|
2953
|
-
requestedMethod:
|
|
2960
|
+
runtime: l.runtime,
|
|
2961
|
+
requestedMethod: b,
|
|
2954
2962
|
effectiveMethod: E,
|
|
2955
|
-
transportMode:
|
|
2956
|
-
...
|
|
2963
|
+
transportMode: g ? "query-get" : "http",
|
|
2964
|
+
...g ? { queryString: v } : {}
|
|
2957
2965
|
};
|
|
2958
|
-
return
|
|
2966
|
+
return N.fetchStart(
|
|
2959
2967
|
this.options.targetFragment.getTarget(),
|
|
2960
2968
|
e,
|
|
2961
2969
|
o,
|
|
2962
2970
|
n ? i : void 0,
|
|
2963
2971
|
f
|
|
2964
|
-
), fetch(e, o).then((
|
|
2965
|
-
|
|
2972
|
+
), fetch(e, o).then((m) => this.handleFetchResult(
|
|
2973
|
+
m,
|
|
2966
2974
|
e || void 0,
|
|
2967
2975
|
c
|
|
2968
|
-
)).catch((
|
|
2969
|
-
throw e &&
|
|
2976
|
+
)).catch((m) => {
|
|
2977
|
+
throw e && N.fetchError(
|
|
2970
2978
|
this.options.targetFragment.getTarget(),
|
|
2971
2979
|
e,
|
|
2972
|
-
|
|
2973
|
-
),
|
|
2980
|
+
m
|
|
2981
|
+
), m;
|
|
2974
2982
|
});
|
|
2975
2983
|
}
|
|
2976
2984
|
return fetch(e, o).then((c) => this.handleFetchResult(c, e || void 0));
|
|
@@ -2978,11 +2986,11 @@ ${f}
|
|
|
2978
2986
|
if ((!this.options.bindFragments || this.options.bindFragments.length === 0) && this.options.formFragment && n) {
|
|
2979
2987
|
const o = this.options.formFragment, h = o.getTarget();
|
|
2980
2988
|
h.setAttribute(
|
|
2981
|
-
`${
|
|
2989
|
+
`${l.prefix}bind`,
|
|
2982
2990
|
JSON.stringify(i)
|
|
2983
2991
|
);
|
|
2984
|
-
const
|
|
2985
|
-
Object.assign(
|
|
2992
|
+
const b = o.getBindingData();
|
|
2993
|
+
Object.assign(b, i), await R.setBindingData(h, b);
|
|
2986
2994
|
}
|
|
2987
2995
|
const s = n ? i : {}, a = new Response(JSON.stringify(s), {
|
|
2988
2996
|
headers: { "Content-Type": "application/json" }
|
|
@@ -2995,14 +3003,14 @@ ${f}
|
|
|
2995
3003
|
async handleFetchResult(t, e, r) {
|
|
2996
3004
|
const i = W();
|
|
2997
3005
|
if (!t.ok)
|
|
2998
|
-
return this.options.targetFragment && e &&
|
|
3006
|
+
return this.options.targetFragment && e && N.fetchError(
|
|
2999
3007
|
this.options.targetFragment.getTarget(),
|
|
3000
3008
|
e,
|
|
3001
3009
|
new Error(`${t.status} ${t.statusText}`),
|
|
3002
3010
|
t.status,
|
|
3003
3011
|
r
|
|
3004
3012
|
), await this.handleFetchError(t), !1;
|
|
3005
|
-
if (this.options.targetFragment && e && r &&
|
|
3013
|
+
if (this.options.targetFragment && e && r && N.fetchEnd(
|
|
3006
3014
|
this.options.targetFragment.getTarget(),
|
|
3007
3015
|
e,
|
|
3008
3016
|
t.status,
|
|
@@ -3021,7 +3029,7 @@ ${f}
|
|
|
3021
3029
|
), await this.copy();
|
|
3022
3030
|
const s = [];
|
|
3023
3031
|
return this.options.refetchFragments && this.options.refetchFragments.length > 0 && this.options.refetchFragments.forEach((a) => {
|
|
3024
|
-
s.push(new
|
|
3032
|
+
s.push(new u(a, null).run());
|
|
3025
3033
|
}), this.options.clickFragments && this.options.clickFragments.length > 0 && this.options.clickFragments.forEach((a) => {
|
|
3026
3034
|
const o = a.getTarget();
|
|
3027
3035
|
typeof o.click == "function" ? o.click() : o.dispatchEvent(
|
|
@@ -3060,7 +3068,7 @@ ${f}
|
|
|
3060
3068
|
}
|
|
3061
3069
|
const s = (a) => {
|
|
3062
3070
|
for (const [o, h] of Object.entries(a))
|
|
3063
|
-
h != null && (Array.isArray(h) ? h.forEach((
|
|
3071
|
+
h != null && (Array.isArray(h) ? h.forEach((b) => n.searchParams.append(o, String(b))) : typeof h == "object" ? n.searchParams.set(o, JSON.stringify(h)) : n.searchParams.set(o, String(h)));
|
|
3064
3072
|
};
|
|
3065
3073
|
e && s(this.options.historyData), r && s(
|
|
3066
3074
|
y.getValues(
|
|
@@ -3196,7 +3204,7 @@ ${f}
|
|
|
3196
3204
|
);
|
|
3197
3205
|
} else
|
|
3198
3206
|
s[a] = r;
|
|
3199
|
-
i.push(
|
|
3207
|
+
i.push(R.setBindingData(n.getTarget(), s));
|
|
3200
3208
|
});
|
|
3201
3209
|
else {
|
|
3202
3210
|
if (typeof r == "string")
|
|
@@ -3209,7 +3217,7 @@ ${f}
|
|
|
3209
3217
|
r
|
|
3210
3218
|
);
|
|
3211
3219
|
i.push(
|
|
3212
|
-
|
|
3220
|
+
R.setBindingData(
|
|
3213
3221
|
n.getTarget(),
|
|
3214
3222
|
s
|
|
3215
3223
|
)
|
|
@@ -3244,7 +3252,7 @@ ${f}
|
|
|
3244
3252
|
...i.getBindingData(),
|
|
3245
3253
|
...e
|
|
3246
3254
|
};
|
|
3247
|
-
return
|
|
3255
|
+
return R.setBindingData(i.getTarget(), n);
|
|
3248
3256
|
});
|
|
3249
3257
|
return Promise.all(r).then(() => {
|
|
3250
3258
|
});
|
|
@@ -3291,7 +3299,7 @@ ${f}
|
|
|
3291
3299
|
if (!this.options.targetFragment)
|
|
3292
3300
|
return d.error("Haori", "Target fragment is not specified for row operation."), null;
|
|
3293
3301
|
const t = this.options.targetFragment.closestByAttribute(
|
|
3294
|
-
`${
|
|
3302
|
+
`${l.prefix}row`
|
|
3295
3303
|
);
|
|
3296
3304
|
return t || (d.error("Haori", "Row fragment not found."), null);
|
|
3297
3305
|
}
|
|
@@ -3309,7 +3317,7 @@ ${f}
|
|
|
3309
3317
|
const e = [], r = t.clone();
|
|
3310
3318
|
return e.push(
|
|
3311
3319
|
t.getParent().insertAfter(r, t)
|
|
3312
|
-
), e.push(
|
|
3320
|
+
), e.push(R.evaluateAll(r)), e.push(y.reset(r)), Promise.all(e).then(() => {
|
|
3313
3321
|
});
|
|
3314
3322
|
}
|
|
3315
3323
|
/**
|
|
@@ -3324,7 +3332,7 @@ ${f}
|
|
|
3324
3332
|
if (!t)
|
|
3325
3333
|
return Promise.reject(new Error("Row fragment not found."));
|
|
3326
3334
|
const e = t.getParent();
|
|
3327
|
-
return e && e.getChildElementFragments().filter((i) => !i.hasAttribute(`${
|
|
3335
|
+
return e && e.getChildElementFragments().filter((i) => !i.hasAttribute(`${l.prefix}each-before`) && !i.hasAttribute(`${l.prefix}each-after`)).length <= 1 ? Promise.resolve() : t.remove();
|
|
3328
3336
|
}
|
|
3329
3337
|
/**
|
|
3330
3338
|
* 前の行へ移動します。
|
|
@@ -3361,8 +3369,8 @@ ${f}
|
|
|
3361
3369
|
return r ? r.insertAfter(t, e) : Promise.resolve();
|
|
3362
3370
|
}
|
|
3363
3371
|
};
|
|
3364
|
-
|
|
3365
|
-
let V =
|
|
3372
|
+
u.DATA_PLACEHOLDER_REGEX = /\{\{\{([\s\S]+?)\}\}\}|\{\{([\s\S]+?)\}\}/g, u.SINGLE_PLACEHOLDER_REGEX = /^(\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\})$/;
|
|
3373
|
+
let V = u;
|
|
3366
3374
|
class ft {
|
|
3367
3375
|
/**
|
|
3368
3376
|
* URLのクエリパラメータを取得します。
|
|
@@ -3423,7 +3431,7 @@ const p = class p {
|
|
|
3423
3431
|
*/
|
|
3424
3432
|
static isDeferredAttributeName(t) {
|
|
3425
3433
|
return p.DEFERRED_ATTRIBUTE_SUFFIXES.some(
|
|
3426
|
-
(e) => t === `${
|
|
3434
|
+
(e) => t === `${l.prefix}${e}`
|
|
3427
3435
|
);
|
|
3428
3436
|
}
|
|
3429
3437
|
/**
|
|
@@ -3434,7 +3442,7 @@ const p = class p {
|
|
|
3434
3442
|
*/
|
|
3435
3443
|
static isEvaluateAllExcludedAttributeName(t) {
|
|
3436
3444
|
return p.EVALUATE_ALL_EXCLUDED_ATTRIBUTE_SUFFIXES.some(
|
|
3437
|
-
(e) => t === `${
|
|
3445
|
+
(e) => t === `${l.prefix}${e}`
|
|
3438
3446
|
);
|
|
3439
3447
|
}
|
|
3440
3448
|
/**
|
|
@@ -3454,7 +3462,7 @@ const p = class p {
|
|
|
3454
3462
|
* @returns 実際の属性名。data-attr-* でない場合は null
|
|
3455
3463
|
*/
|
|
3456
3464
|
static getAliasedAttributeName(t) {
|
|
3457
|
-
const e = `${
|
|
3465
|
+
const e = `${l.prefix}${p.ATTRIBUTE_ALIAS_SUFFIX}`;
|
|
3458
3466
|
return !t.startsWith(e) || t.length <= e.length ? null : t.slice(e.length);
|
|
3459
3467
|
}
|
|
3460
3468
|
/**
|
|
@@ -3465,9 +3473,9 @@ const p = class p {
|
|
|
3465
3473
|
* @returns data-attr-* の内部反映なら true
|
|
3466
3474
|
*/
|
|
3467
3475
|
static isAliasedAttributeReflection(t, e) {
|
|
3468
|
-
const r =
|
|
3476
|
+
const r = w.get(t);
|
|
3469
3477
|
return r instanceof x ? r.hasAttribute(
|
|
3470
|
-
`${
|
|
3478
|
+
`${l.prefix}${p.ATTRIBUTE_ALIAS_SUFFIX}${e}`
|
|
3471
3479
|
) : !1;
|
|
3472
3480
|
}
|
|
3473
3481
|
/**
|
|
@@ -3495,14 +3503,14 @@ const p = class p {
|
|
|
3495
3503
|
* @returns Promise (スキャンが完了したときに解決される)
|
|
3496
3504
|
*/
|
|
3497
3505
|
static scan(t) {
|
|
3498
|
-
const e =
|
|
3506
|
+
const e = w.get(t);
|
|
3499
3507
|
if (!e)
|
|
3500
3508
|
return Promise.resolve();
|
|
3501
|
-
t.parentNode && (
|
|
3509
|
+
t.parentNode && (w.get(t.parentNode)?.isMounted() || document.body.contains(t) ? e.setMounted(!0) : e.setMounted(!1));
|
|
3502
3510
|
let r = Promise.resolve();
|
|
3503
3511
|
const i = /* @__PURE__ */ new Set();
|
|
3504
3512
|
for (const n of p.PRIORITY_ATTRIBUTE_SUFFIXES) {
|
|
3505
|
-
const s =
|
|
3513
|
+
const s = l.prefix + n;
|
|
3506
3514
|
e.hasAttribute(s) && (r = r.then(
|
|
3507
3515
|
() => p.setAttribute(
|
|
3508
3516
|
e.getTarget(),
|
|
@@ -3520,7 +3528,7 @@ const p = class p {
|
|
|
3520
3528
|
));
|
|
3521
3529
|
}
|
|
3522
3530
|
for (const n of p.DEFERRED_ATTRIBUTE_SUFFIXES) {
|
|
3523
|
-
const s =
|
|
3531
|
+
const s = l.prefix + n;
|
|
3524
3532
|
e.hasAttribute(s) && (r = r.then(
|
|
3525
3533
|
() => p.setAttribute(
|
|
3526
3534
|
e.getTarget(),
|
|
@@ -3532,7 +3540,7 @@ const p = class p {
|
|
|
3532
3540
|
return r.then(() => {
|
|
3533
3541
|
const n = [];
|
|
3534
3542
|
return e.getChildren().forEach((s) => {
|
|
3535
|
-
s instanceof x ? n.push(p.scan(s.getTarget())) : s instanceof
|
|
3543
|
+
s instanceof x ? n.push(p.scan(s.getTarget())) : s instanceof O && n.push(p.evaluateText(s));
|
|
3536
3544
|
}), Promise.all(n).then(() => {
|
|
3537
3545
|
});
|
|
3538
3546
|
}).then(() => {
|
|
@@ -3548,47 +3556,54 @@ const p = class p {
|
|
|
3548
3556
|
* @returns Promise (DOM操作が完了したときに解決される)
|
|
3549
3557
|
*/
|
|
3550
3558
|
static setAttribute(t, e, r) {
|
|
3551
|
-
const i =
|
|
3559
|
+
const i = w.get(t), n = p.getAliasedAttributeName(e);
|
|
3552
3560
|
if (n !== null)
|
|
3553
3561
|
return r === null ? i.removeAliasedAttribute(e, n) : i.setAliasedAttribute(e, n, r);
|
|
3554
3562
|
const s = [];
|
|
3555
3563
|
switch (e) {
|
|
3556
|
-
case `${
|
|
3564
|
+
case `${l.prefix}bind`: {
|
|
3557
3565
|
r === null ? (i.clearBindingDataCache(), i.setBindingData({})) : i.setBindingData(p.parseDataBind(r));
|
|
3558
3566
|
break;
|
|
3559
3567
|
}
|
|
3560
|
-
case `${
|
|
3568
|
+
case `${l.prefix}if`:
|
|
3561
3569
|
s.push(p.evaluateIf(i));
|
|
3562
3570
|
break;
|
|
3563
|
-
case `${
|
|
3571
|
+
case `${l.prefix}each`:
|
|
3564
3572
|
s.push(p.evaluateEach(i));
|
|
3565
3573
|
break;
|
|
3566
|
-
case `${
|
|
3574
|
+
case `${l.prefix}fetch`:
|
|
3567
3575
|
s.push(
|
|
3568
3576
|
new V(i, null).run().then(() => {
|
|
3569
3577
|
})
|
|
3570
3578
|
);
|
|
3571
3579
|
break;
|
|
3572
|
-
case `${
|
|
3580
|
+
case `${l.prefix}import`: {
|
|
3573
3581
|
if (typeof r == "string") {
|
|
3574
3582
|
const a = i.getTarget(), o = performance.now();
|
|
3575
|
-
|
|
3583
|
+
a.setAttribute(`${l.prefix}importing`, ""), N.importStart(a, r), s.push(
|
|
3576
3584
|
dt.load(r).then((h) => {
|
|
3577
|
-
const
|
|
3578
|
-
return
|
|
3585
|
+
const b = new TextEncoder().encode(h).length;
|
|
3586
|
+
return F.enqueue(() => {
|
|
3579
3587
|
a.innerHTML = h;
|
|
3580
3588
|
}).then(() => {
|
|
3581
|
-
|
|
3589
|
+
if (a.removeAttribute(`${l.prefix}importing`), N.importEnd(a, r, b, o), !document.body.hasAttribute("data-haori-ready")) {
|
|
3590
|
+
const g = [];
|
|
3591
|
+
return a.childNodes.forEach((E) => {
|
|
3592
|
+
const v = w.get(E);
|
|
3593
|
+
v instanceof x ? g.push(p.scan(v.getTarget())) : v instanceof O && g.push(p.evaluateText(v));
|
|
3594
|
+
}), Promise.all(g).then(() => {
|
|
3595
|
+
});
|
|
3596
|
+
}
|
|
3582
3597
|
});
|
|
3583
3598
|
}).catch((h) => {
|
|
3584
|
-
|
|
3599
|
+
a.removeAttribute(`${l.prefix}importing`), N.importError(a, r, h), d.error("[Haori]", "Failed to import HTML:", r, h);
|
|
3585
3600
|
})
|
|
3586
3601
|
);
|
|
3587
3602
|
}
|
|
3588
3603
|
break;
|
|
3589
3604
|
}
|
|
3590
|
-
case `${
|
|
3591
|
-
const a = i.getAttribute(`${
|
|
3605
|
+
case `${l.prefix}url-param`: {
|
|
3606
|
+
const a = i.getAttribute(`${l.prefix}url-arg`), o = ft.readParams();
|
|
3592
3607
|
if (a === null)
|
|
3593
3608
|
s.push(p.setBindingData(t, o));
|
|
3594
3609
|
else {
|
|
@@ -3610,17 +3625,17 @@ const p = class p {
|
|
|
3610
3625
|
* @returns Promise (DOM操作が完了したときに解決される)
|
|
3611
3626
|
*/
|
|
3612
3627
|
static setBindingData(t, e) {
|
|
3613
|
-
const r =
|
|
3628
|
+
const r = w.get(t), i = r.getRawBindingData();
|
|
3614
3629
|
r.setBindingData(e);
|
|
3615
3630
|
let n = r.setAttribute(
|
|
3616
|
-
`${
|
|
3631
|
+
`${l.prefix}bind`,
|
|
3617
3632
|
JSON.stringify(e)
|
|
3618
3633
|
);
|
|
3619
3634
|
if (t.tagName === "FORM") {
|
|
3620
|
-
const s = r.getAttribute(`${
|
|
3635
|
+
const s = r.getAttribute(`${l.prefix}form-arg`), a = s && e[String(s)] && typeof e[String(s)] == "object" && !Array.isArray(e[String(s)]) ? e[String(s)] : s ? {} : e;
|
|
3621
3636
|
n = n.then(() => y.syncValues(r, a));
|
|
3622
3637
|
}
|
|
3623
|
-
return n = n.then(() => p.evaluateAll(r)),
|
|
3638
|
+
return n = n.then(() => p.evaluateAll(r)), N.bindChange(t, i, e, "manual"), n.then(() => {
|
|
3624
3639
|
});
|
|
3625
3640
|
}
|
|
3626
3641
|
/**
|
|
@@ -3650,11 +3665,11 @@ const p = class p {
|
|
|
3650
3665
|
* @param node 追加するノード
|
|
3651
3666
|
*/
|
|
3652
3667
|
static addNode(t, e) {
|
|
3653
|
-
const r =
|
|
3668
|
+
const r = w.get(t);
|
|
3654
3669
|
if (r.isSkipMutationNodes())
|
|
3655
3670
|
return;
|
|
3656
|
-
const i =
|
|
3657
|
-
n && (r.insertBefore(n, i), n instanceof x ? p.scan(n.getTarget()) : n instanceof
|
|
3671
|
+
const i = w.get(e.nextSibling), n = w.get(e);
|
|
3672
|
+
n && (r.insertBefore(n, i), n instanceof x ? p.scan(n.getTarget()) : n instanceof O && p.evaluateText(n));
|
|
3658
3673
|
}
|
|
3659
3674
|
/**
|
|
3660
3675
|
* ノードを親要素から削除します。
|
|
@@ -3662,7 +3677,7 @@ const p = class p {
|
|
|
3662
3677
|
* @param node 削除するノード
|
|
3663
3678
|
*/
|
|
3664
3679
|
static removeNode(t) {
|
|
3665
|
-
const e =
|
|
3680
|
+
const e = w.get(t);
|
|
3666
3681
|
if (e) {
|
|
3667
3682
|
const r = e.getParent();
|
|
3668
3683
|
if (r && r.isSkipMutationNodes())
|
|
@@ -3677,7 +3692,7 @@ const p = class p {
|
|
|
3677
3692
|
* @param text 新しいテキスト
|
|
3678
3693
|
*/
|
|
3679
3694
|
static changeText(t, e) {
|
|
3680
|
-
const r =
|
|
3695
|
+
const r = w.get(t);
|
|
3681
3696
|
r && r.setContent(e);
|
|
3682
3697
|
}
|
|
3683
3698
|
/**
|
|
@@ -3689,14 +3704,14 @@ const p = class p {
|
|
|
3689
3704
|
* @returns Promise (DOM操作が完了したときに解決される)
|
|
3690
3705
|
*/
|
|
3691
3706
|
static changeValue(t, e) {
|
|
3692
|
-
const r =
|
|
3707
|
+
const r = w.get(t);
|
|
3693
3708
|
if (r.getValue() === e)
|
|
3694
3709
|
return Promise.resolve();
|
|
3695
3710
|
const i = [];
|
|
3696
3711
|
i.push(r.setValue(e));
|
|
3697
3712
|
const n = p.getFormFragment(r);
|
|
3698
3713
|
if (n) {
|
|
3699
|
-
const s = y.getValues(n), a = n.getAttribute(`${
|
|
3714
|
+
const s = y.getValues(n), a = n.getAttribute(`${l.prefix}form-arg`);
|
|
3700
3715
|
let o;
|
|
3701
3716
|
a ? (o = n.getRawBindingData(), o || (o = {}), o[String(a)] = s) : o = s, i.push(p.setBindingData(n.getTarget(), o));
|
|
3702
3717
|
}
|
|
@@ -3723,14 +3738,14 @@ const p = class p {
|
|
|
3723
3738
|
*/
|
|
3724
3739
|
static evaluateAll(t) {
|
|
3725
3740
|
const e = [];
|
|
3726
|
-
return e.push(p.reevaluateInterpolatedAttributes(t)), t.hasAttribute(`${
|
|
3741
|
+
return e.push(p.reevaluateInterpolatedAttributes(t)), t.hasAttribute(`${l.prefix}if`) && e.push(p.evaluateIf(t)), t.hasAttribute(`${l.prefix}each`) ? Promise.all(e).then(() => p.evaluateEach(t)).then(() => {
|
|
3727
3742
|
const r = [];
|
|
3728
3743
|
return t.getChildren().forEach((i) => {
|
|
3729
|
-
i instanceof x ? r.push(p.evaluateAll(i)) : i instanceof
|
|
3744
|
+
i instanceof x ? r.push(p.evaluateAll(i)) : i instanceof O && r.push(p.evaluateText(i));
|
|
3730
3745
|
}), Promise.all(r).then(() => {
|
|
3731
3746
|
});
|
|
3732
3747
|
}) : (t.getChildren().forEach((r) => {
|
|
3733
|
-
r instanceof x ? e.push(p.evaluateAll(r)) : r instanceof
|
|
3748
|
+
r instanceof x ? e.push(p.evaluateAll(r)) : r instanceof O && e.push(p.evaluateText(r));
|
|
3734
3749
|
}), Promise.all(e).then(() => {
|
|
3735
3750
|
}));
|
|
3736
3751
|
}
|
|
@@ -3751,16 +3766,25 @@ const p = class p {
|
|
|
3751
3766
|
* @return Promise (DOM操作が完了したときに解決される)
|
|
3752
3767
|
*/
|
|
3753
3768
|
static evaluateIf(t) {
|
|
3754
|
-
const e = [], r = t.getAttribute(`${
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3758
|
-
|
|
3759
|
-
|
|
3760
|
-
|
|
3761
|
-
|
|
3762
|
-
|
|
3763
|
-
|
|
3769
|
+
const e = [], r = t.getAttribute(`${l.prefix}if`);
|
|
3770
|
+
if (r === !1 || r === void 0 || r === null || Number.isNaN(r))
|
|
3771
|
+
e.push(
|
|
3772
|
+
t.hide().then(() => {
|
|
3773
|
+
N.hide(t.getTarget());
|
|
3774
|
+
})
|
|
3775
|
+
);
|
|
3776
|
+
else {
|
|
3777
|
+
const i = [];
|
|
3778
|
+
t.getChildren().forEach((n) => {
|
|
3779
|
+
n instanceof x ? i.push(p.evaluateAll(n)) : n instanceof O && i.push(p.evaluateText(n));
|
|
3780
|
+
}), e.push(
|
|
3781
|
+
t.show().then(() => {
|
|
3782
|
+
N.show(t.getTarget());
|
|
3783
|
+
})
|
|
3784
|
+
), e.push(Promise.all(i).then(() => {
|
|
3785
|
+
}));
|
|
3786
|
+
}
|
|
3787
|
+
return Promise.all(e).then(() => {
|
|
3764
3788
|
});
|
|
3765
3789
|
}
|
|
3766
3790
|
/**
|
|
@@ -3777,17 +3801,17 @@ const p = class p {
|
|
|
3777
3801
|
let i = !1;
|
|
3778
3802
|
t.getChildren().forEach((s) => {
|
|
3779
3803
|
if (!i && s instanceof x) {
|
|
3780
|
-
if (s.hasAttribute(`${
|
|
3804
|
+
if (s.hasAttribute(`${l.prefix}each-before`) || s.hasAttribute(`${l.prefix}each-after`))
|
|
3781
3805
|
return;
|
|
3782
3806
|
e = s.clone(), t.setTemplate(e), i = !0, t.removeChild(s);
|
|
3783
3807
|
const a = s.getTarget();
|
|
3784
3808
|
a.parentNode && a.parentNode.removeChild(a), s.setMounted(!1);
|
|
3785
3809
|
}
|
|
3786
3810
|
});
|
|
3787
|
-
const n = t.getAttribute(`${
|
|
3811
|
+
const n = t.getAttribute(`${l.prefix}each`);
|
|
3788
3812
|
return Array.isArray(n) ? this.updateDiff(t, n) : (d.error("[Haori]", "Invalid each attribute:", n), Promise.reject(new Error("Invalid each attribute.")));
|
|
3789
3813
|
}
|
|
3790
|
-
const r = t.getAttribute(`${
|
|
3814
|
+
const r = t.getAttribute(`${l.prefix}each`);
|
|
3791
3815
|
return Array.isArray(r) ? this.updateDiff(t, r) : (d.error("[Haori]", "Invalid each attribute:", r), Promise.reject(new Error("Invalid each attribute.")));
|
|
3792
3816
|
}
|
|
3793
3817
|
/**
|
|
@@ -3800,70 +3824,70 @@ const p = class p {
|
|
|
3800
3824
|
const r = t.getTemplate();
|
|
3801
3825
|
if (r === null)
|
|
3802
3826
|
return d.error("[Haori]", "Template is not set for each element."), Promise.resolve();
|
|
3803
|
-
let i = t.getAttribute(`${
|
|
3827
|
+
let i = t.getAttribute(`${l.prefix}each-index`);
|
|
3804
3828
|
i && (i = String(i));
|
|
3805
|
-
const n = t.getAttribute(`${
|
|
3829
|
+
const n = t.getAttribute(`${l.prefix}each-key`), s = t.getAttribute(`${l.prefix}each-arg`), a = /* @__PURE__ */ new Map(), o = [];
|
|
3806
3830
|
e.forEach((c, f) => {
|
|
3807
|
-
const
|
|
3831
|
+
const m = p.createListKey(
|
|
3808
3832
|
c,
|
|
3809
3833
|
n ? String(n) : null,
|
|
3810
3834
|
f
|
|
3811
3835
|
);
|
|
3812
|
-
o.push(
|
|
3836
|
+
o.push(m), a.set(m, { item: c, itemIndex: f });
|
|
3813
3837
|
});
|
|
3814
3838
|
const h = [];
|
|
3815
|
-
let
|
|
3816
|
-
(c) => !c.hasAttribute(`${
|
|
3839
|
+
let b = t.getChildren().filter((c) => c instanceof x).filter(
|
|
3840
|
+
(c) => !c.hasAttribute(`${l.prefix}each-before`) && !c.hasAttribute(`${l.prefix}each-after`)
|
|
3817
3841
|
);
|
|
3818
|
-
|
|
3819
|
-
const
|
|
3820
|
-
let
|
|
3842
|
+
b = b.filter((c) => o.indexOf(String(c.getListKey())) === -1 ? (h.push(c.remove()), !1) : !0);
|
|
3843
|
+
const g = b.map((c) => c.getListKey()), E = t.getChildren().filter((c) => c instanceof x).filter((c) => c.hasAttribute(`${l.prefix}each-before`)).length;
|
|
3844
|
+
let v = Promise.resolve();
|
|
3821
3845
|
return o.forEach((c, f) => {
|
|
3822
|
-
const
|
|
3846
|
+
const m = g.indexOf(c), { item: A, itemIndex: T } = a.get(c);
|
|
3823
3847
|
let k;
|
|
3824
|
-
if (
|
|
3825
|
-
k = m
|
|
3848
|
+
if (m !== -1)
|
|
3849
|
+
k = b[m], v = v.then(
|
|
3826
3850
|
() => p.updateRowFragment(
|
|
3827
3851
|
k,
|
|
3828
3852
|
A,
|
|
3829
3853
|
i,
|
|
3830
|
-
|
|
3854
|
+
T,
|
|
3831
3855
|
s ? String(s) : null,
|
|
3832
3856
|
c
|
|
3833
|
-
).then(() => p.evaluateAll(k))
|
|
3857
|
+
).then(() => p.evaluateAll(k)).then(() => p.scheduleEvaluateAll(k))
|
|
3834
3858
|
);
|
|
3835
3859
|
else {
|
|
3836
3860
|
k = r.clone();
|
|
3837
3861
|
const J = E + f;
|
|
3838
|
-
|
|
3862
|
+
v = v.then(
|
|
3839
3863
|
() => p.updateRowFragment(
|
|
3840
3864
|
k,
|
|
3841
3865
|
A,
|
|
3842
3866
|
i,
|
|
3843
|
-
|
|
3867
|
+
T,
|
|
3844
3868
|
s ? String(s) : null,
|
|
3845
3869
|
c
|
|
3846
3870
|
).then(
|
|
3847
3871
|
() => t.insertBefore(
|
|
3848
3872
|
k,
|
|
3849
3873
|
t.getChildren()[J] || null
|
|
3850
|
-
).then(() => p.evaluateAll(k))
|
|
3874
|
+
).then(() => p.evaluateAll(k)).then(() => p.scheduleEvaluateAll(k))
|
|
3851
3875
|
)
|
|
3852
3876
|
);
|
|
3853
3877
|
}
|
|
3854
|
-
}), Promise.all(h).then(() =>
|
|
3878
|
+
}), Promise.all(h).then(() => v).then(() => {
|
|
3855
3879
|
const c = o.filter(
|
|
3856
|
-
(
|
|
3857
|
-
), f =
|
|
3858
|
-
(
|
|
3859
|
-
),
|
|
3860
|
-
(
|
|
3880
|
+
(T) => T !== null
|
|
3881
|
+
), f = g.filter(
|
|
3882
|
+
(T) => T !== null
|
|
3883
|
+
), m = c.filter(
|
|
3884
|
+
(T) => !f.includes(T)
|
|
3861
3885
|
), A = f.filter(
|
|
3862
|
-
(
|
|
3886
|
+
(T) => !c.includes(T)
|
|
3863
3887
|
);
|
|
3864
|
-
|
|
3888
|
+
N.eachUpdate(
|
|
3865
3889
|
t.getTarget(),
|
|
3866
|
-
|
|
3890
|
+
m,
|
|
3867
3891
|
A,
|
|
3868
3892
|
c
|
|
3869
3893
|
);
|
|
@@ -3913,9 +3937,19 @@ const p = class p {
|
|
|
3913
3937
|
else
|
|
3914
3938
|
return d.error(
|
|
3915
3939
|
"[Haori]",
|
|
3916
|
-
`Primitive value requires '${
|
|
3940
|
+
`Primitive value requires '${l.prefix}each-arg' attribute: ${e}`
|
|
3917
3941
|
), Promise.resolve();
|
|
3918
|
-
return t.setListKey(s), t.setBindingData(a), t.setAttribute(`${
|
|
3942
|
+
return t.setListKey(s), t.setBindingData(a), t.setAttribute(`${l.prefix}row`, s);
|
|
3943
|
+
}
|
|
3944
|
+
/**
|
|
3945
|
+
* フラグメントの再評価を次のイベントループで実行します。
|
|
3946
|
+
*
|
|
3947
|
+
* @param fragment 再評価対象のフラグメント
|
|
3948
|
+
*/
|
|
3949
|
+
static scheduleEvaluateAll(t) {
|
|
3950
|
+
setTimeout(() => {
|
|
3951
|
+
p.evaluateAll(t);
|
|
3952
|
+
}, 100);
|
|
3919
3953
|
}
|
|
3920
3954
|
};
|
|
3921
3955
|
p.ATTRIBUTE_ALIAS_SUFFIX = "attr-", p.PRIORITY_ATTRIBUTE_SUFFIXES = ["bind", "if", "each"], p.DEFERRED_ATTRIBUTE_SUFFIXES = ["fetch", "url-param"], p.EVALUATE_ALL_EXCLUDED_ATTRIBUTE_SUFFIXES = [
|
|
@@ -3926,7 +3960,7 @@ p.ATTRIBUTE_ALIAS_SUFFIX = "attr-", p.PRIORITY_ATTRIBUTE_SUFFIXES = ["bind", "if
|
|
|
3926
3960
|
"import",
|
|
3927
3961
|
"url-param"
|
|
3928
3962
|
], p.ATTRIBUTE_PLACEHOLDER_REGEX = /\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/;
|
|
3929
|
-
let
|
|
3963
|
+
let R = p;
|
|
3930
3964
|
const Y = class Y {
|
|
3931
3965
|
/**
|
|
3932
3966
|
* コンストラクタ。
|
|
@@ -3935,7 +3969,7 @@ const Y = class Y {
|
|
|
3935
3969
|
*/
|
|
3936
3970
|
constructor(t = document) {
|
|
3937
3971
|
this.onClick = (e) => this.delegate(e, "click"), this.onChange = (e) => this.delegate(e, "change"), this.onLoadCapture = (e) => this.delegate(e, "load"), this.onWindowLoad = () => {
|
|
3938
|
-
const e = document.documentElement, r =
|
|
3972
|
+
const e = document.documentElement, r = w.get(e);
|
|
3939
3973
|
r && new V(r, "load").run();
|
|
3940
3974
|
}, this.onPopstate = (e) => {
|
|
3941
3975
|
const r = e.state;
|
|
@@ -3965,7 +3999,7 @@ const Y = class Y {
|
|
|
3965
3999
|
const r = this.getElementFromTarget(t.target);
|
|
3966
4000
|
if (!r)
|
|
3967
4001
|
return;
|
|
3968
|
-
const i =
|
|
4002
|
+
const i = w.get(r);
|
|
3969
4003
|
i && (e === "change" && i instanceof x && i.syncValue(), new V(i, e).run().catch((n) => {
|
|
3970
4004
|
d.error("[Haori]", "Procedure execution error:", n);
|
|
3971
4005
|
}));
|
|
@@ -3982,35 +4016,35 @@ const Y = class Y {
|
|
|
3982
4016
|
};
|
|
3983
4017
|
Y.HISTORY_STATE_KEY = "__haoriHistoryState__";
|
|
3984
4018
|
let Q = Y;
|
|
3985
|
-
const
|
|
4019
|
+
const S = class S {
|
|
3986
4020
|
static syncTree(t) {
|
|
3987
|
-
(t instanceof Element || t instanceof DocumentFragment) && (t instanceof HTMLElement &&
|
|
3988
|
-
|
|
4021
|
+
(t instanceof Element || t instanceof DocumentFragment) && (t instanceof HTMLElement && S.syncElement(t), t.querySelectorAll("*").forEach((e) => {
|
|
4022
|
+
S.syncElement(e);
|
|
3989
4023
|
}));
|
|
3990
4024
|
}
|
|
3991
4025
|
static syncElement(t) {
|
|
3992
|
-
const e =
|
|
3993
|
-
if (!r || !
|
|
3994
|
-
e && (e.observer.disconnect(),
|
|
4026
|
+
const e = S.registrations.get(t), r = w.get(t);
|
|
4027
|
+
if (!r || !S.shouldObserve(r)) {
|
|
4028
|
+
e && (e.observer.disconnect(), S.registrations.delete(t));
|
|
3995
4029
|
return;
|
|
3996
4030
|
}
|
|
3997
4031
|
if (typeof IntersectionObserver > "u")
|
|
3998
4032
|
return;
|
|
3999
|
-
const i =
|
|
4000
|
-
if (e && e.observer.root === i && e.observer.rootMargin === n &&
|
|
4033
|
+
const i = S.resolveRoot(r), n = S.resolveRootMargin(r), s = S.resolveThreshold(r), a = r.hasAttribute(`${l.prefix}intersect-once`);
|
|
4034
|
+
if (e && e.observer.root === i && e.observer.rootMargin === n && S.sameThreshold(
|
|
4001
4035
|
e.observer.thresholds,
|
|
4002
4036
|
s
|
|
4003
4037
|
) && e.once === a) {
|
|
4004
4038
|
e.fragment = r;
|
|
4005
4039
|
return;
|
|
4006
4040
|
}
|
|
4007
|
-
e && (e.observer.disconnect(),
|
|
4041
|
+
e && (e.observer.disconnect(), S.registrations.delete(t));
|
|
4008
4042
|
const o = new IntersectionObserver(
|
|
4009
4043
|
(h) => {
|
|
4010
|
-
const
|
|
4011
|
-
|
|
4012
|
-
!
|
|
4013
|
-
E &&
|
|
4044
|
+
const b = S.registrations.get(t);
|
|
4045
|
+
b && h.forEach((g) => {
|
|
4046
|
+
!g.isIntersecting || b.running || S.isDisabled(b.fragment) || (b.running = !0, new V(b.fragment, "intersect").runWithResult().then((E) => {
|
|
4047
|
+
E && b.once && (b.observer.disconnect(), S.registrations.delete(t));
|
|
4014
4048
|
}).catch((E) => {
|
|
4015
4049
|
d.error(
|
|
4016
4050
|
"[Haori]",
|
|
@@ -4018,7 +4052,7 @@ const N = class N {
|
|
|
4018
4052
|
E
|
|
4019
4053
|
);
|
|
4020
4054
|
}).finally(() => {
|
|
4021
|
-
const E =
|
|
4055
|
+
const E = S.registrations.get(t);
|
|
4022
4056
|
E && (E.running = !1);
|
|
4023
4057
|
}));
|
|
4024
4058
|
});
|
|
@@ -4029,7 +4063,7 @@ const N = class N {
|
|
|
4029
4063
|
threshold: s
|
|
4030
4064
|
}
|
|
4031
4065
|
);
|
|
4032
|
-
o.observe(t),
|
|
4066
|
+
o.observe(t), S.registrations.set(t, {
|
|
4033
4067
|
fragment: r,
|
|
4034
4068
|
observer: o,
|
|
4035
4069
|
once: a,
|
|
@@ -4038,29 +4072,29 @@ const N = class N {
|
|
|
4038
4072
|
}
|
|
4039
4073
|
static cleanupTree(t) {
|
|
4040
4074
|
if (t instanceof HTMLElement) {
|
|
4041
|
-
const e =
|
|
4042
|
-
e && (e.observer.disconnect(),
|
|
4075
|
+
const e = S.registrations.get(t);
|
|
4076
|
+
e && (e.observer.disconnect(), S.registrations.delete(t));
|
|
4043
4077
|
}
|
|
4044
4078
|
(t instanceof Element || t instanceof DocumentFragment) && t.querySelectorAll("*").forEach((e) => {
|
|
4045
|
-
const r =
|
|
4046
|
-
r && (r.observer.disconnect(),
|
|
4079
|
+
const r = S.registrations.get(e);
|
|
4080
|
+
r && (r.observer.disconnect(), S.registrations.delete(e));
|
|
4047
4081
|
});
|
|
4048
4082
|
}
|
|
4049
4083
|
static disconnectAll() {
|
|
4050
|
-
|
|
4084
|
+
S.registrations.forEach((t) => {
|
|
4051
4085
|
t.observer.disconnect();
|
|
4052
|
-
}),
|
|
4086
|
+
}), S.registrations.clear();
|
|
4053
4087
|
}
|
|
4054
4088
|
static shouldObserve(t) {
|
|
4055
4089
|
return t.getAttributeNames().some((e) => {
|
|
4056
|
-
if (!e.startsWith(`${
|
|
4090
|
+
if (!e.startsWith(`${l.prefix}intersect-`))
|
|
4057
4091
|
return !1;
|
|
4058
|
-
const r = e.slice(`${
|
|
4059
|
-
return !
|
|
4092
|
+
const r = e.slice(`${l.prefix}intersect-`.length);
|
|
4093
|
+
return !S.CONFIG_KEYS.has(r);
|
|
4060
4094
|
});
|
|
4061
4095
|
}
|
|
4062
4096
|
static resolveRoot(t) {
|
|
4063
|
-
const e = `${
|
|
4097
|
+
const e = `${l.prefix}intersect-root`;
|
|
4064
4098
|
if (!t.hasAttribute(e))
|
|
4065
4099
|
return null;
|
|
4066
4100
|
const r = t.getAttribute(e);
|
|
@@ -4070,15 +4104,15 @@ const N = class N {
|
|
|
4070
4104
|
return i instanceof HTMLElement ? i : (d.error("[Haori]", `Intersect root element not found: ${r}`), null);
|
|
4071
4105
|
}
|
|
4072
4106
|
static resolveRootMargin(t) {
|
|
4073
|
-
const e = `${
|
|
4107
|
+
const e = `${l.prefix}intersect-root-margin`, r = t.getAttribute(e);
|
|
4074
4108
|
return r === null || r === !1 || r === "" ? "0px" : String(r);
|
|
4075
4109
|
}
|
|
4076
4110
|
static resolveThreshold(t) {
|
|
4077
|
-
const e = `${
|
|
4111
|
+
const e = `${l.prefix}intersect-threshold`, r = t.getAttribute(e), i = typeof r == "number" ? r : Number.parseFloat(String(r ?? 0));
|
|
4078
4112
|
return Number.isNaN(i) ? 0 : Math.min(1, Math.max(0, i));
|
|
4079
4113
|
}
|
|
4080
4114
|
static isDisabled(t) {
|
|
4081
|
-
const e = `${
|
|
4115
|
+
const e = `${l.prefix}intersect-disabled`, r = t.getAttribute(e);
|
|
4082
4116
|
if (r === null || r === !1)
|
|
4083
4117
|
return !1;
|
|
4084
4118
|
if (typeof r == "boolean")
|
|
@@ -4090,28 +4124,28 @@ const N = class N {
|
|
|
4090
4124
|
return t.length === 1 && t[0] === e;
|
|
4091
4125
|
}
|
|
4092
4126
|
};
|
|
4093
|
-
|
|
4127
|
+
S.CONFIG_KEYS = /* @__PURE__ */ new Set([
|
|
4094
4128
|
"root",
|
|
4095
4129
|
"root-margin",
|
|
4096
4130
|
"threshold",
|
|
4097
4131
|
"disabled",
|
|
4098
4132
|
"once"
|
|
4099
|
-
]),
|
|
4100
|
-
let
|
|
4101
|
-
const
|
|
4133
|
+
]), S.registrations = /* @__PURE__ */ new Map();
|
|
4134
|
+
let L = S;
|
|
4135
|
+
const H = class H {
|
|
4102
4136
|
/**
|
|
4103
4137
|
* 初期化メソッド。
|
|
4104
4138
|
* ドキュメントのheadとbodyを監視対象として設定します。
|
|
4105
4139
|
*/
|
|
4106
4140
|
static async init() {
|
|
4107
|
-
if (
|
|
4141
|
+
if (H._initialized)
|
|
4108
4142
|
return;
|
|
4109
|
-
|
|
4143
|
+
H._initialized = !0;
|
|
4110
4144
|
const t = await Promise.allSettled([
|
|
4111
|
-
|
|
4112
|
-
|
|
4145
|
+
R.scan(document.head),
|
|
4146
|
+
R.scan(document.body)
|
|
4113
4147
|
]), [e, r] = t;
|
|
4114
|
-
e.status !== "fulfilled" && d.error("[Haori]", "Failed to build head fragment:", e.reason), r.status !== "fulfilled" && d.error("[Haori]", "Failed to build body fragment:", r.reason),
|
|
4148
|
+
e.status !== "fulfilled" && d.error("[Haori]", "Failed to build head fragment:", e.reason), r.status !== "fulfilled" && d.error("[Haori]", "Failed to build body fragment:", r.reason), await F.wait(), document.body.setAttribute("data-haori-ready", ""), H.observe(document.head), H.observe(document.body), new Q().start(), L.syncTree(document.body);
|
|
4115
4149
|
}
|
|
4116
4150
|
/**
|
|
4117
4151
|
* 指定された要素を監視します。
|
|
@@ -4131,16 +4165,16 @@ const C = class C {
|
|
|
4131
4165
|
i.attributeName
|
|
4132
4166
|
);
|
|
4133
4167
|
const n = i.target;
|
|
4134
|
-
if (i.attributeName &&
|
|
4168
|
+
if (i.attributeName && R.isAliasedAttributeReflection(
|
|
4135
4169
|
n,
|
|
4136
4170
|
i.attributeName
|
|
4137
4171
|
))
|
|
4138
4172
|
break;
|
|
4139
|
-
|
|
4173
|
+
R.setAttribute(
|
|
4140
4174
|
n,
|
|
4141
4175
|
i.attributeName,
|
|
4142
4176
|
n.getAttribute(i.attributeName)
|
|
4143
|
-
),
|
|
4177
|
+
), L.syncElement(n);
|
|
4144
4178
|
break;
|
|
4145
4179
|
}
|
|
4146
4180
|
case "childList": {
|
|
@@ -4150,9 +4184,9 @@ const C = class C {
|
|
|
4150
4184
|
Array.from(i.removedNodes).map((n) => n.nodeName),
|
|
4151
4185
|
Array.from(i.addedNodes).map((n) => n.nodeName)
|
|
4152
4186
|
), Array.from(i.removedNodes).forEach((n) => {
|
|
4153
|
-
|
|
4187
|
+
L.cleanupTree(n), R.removeNode(n);
|
|
4154
4188
|
}), Array.from(i.addedNodes).forEach((n) => {
|
|
4155
|
-
n.parentElement instanceof HTMLElement && (
|
|
4189
|
+
n.parentElement instanceof HTMLElement && (R.addNode(n.parentElement, n), L.syncTree(n));
|
|
4156
4190
|
});
|
|
4157
4191
|
break;
|
|
4158
4192
|
}
|
|
@@ -4162,7 +4196,7 @@ const C = class C {
|
|
|
4162
4196
|
"Character data changed:",
|
|
4163
4197
|
i.target,
|
|
4164
4198
|
i.target.textContent
|
|
4165
|
-
), i.target instanceof Text || i.target instanceof Comment ?
|
|
4199
|
+
), i.target instanceof Text || i.target instanceof Comment ? R.changeText(i.target, i.target.textContent) : d.warn(
|
|
4166
4200
|
"[Haori]",
|
|
4167
4201
|
"Unsupported character data type:",
|
|
4168
4202
|
i.target
|
|
@@ -4184,18 +4218,18 @@ const C = class C {
|
|
|
4184
4218
|
}), d.info("[Haori]", "Observer initialized for", t);
|
|
4185
4219
|
}
|
|
4186
4220
|
};
|
|
4187
|
-
|
|
4188
|
-
let q =
|
|
4221
|
+
H._initialized = !1;
|
|
4222
|
+
let q = H;
|
|
4189
4223
|
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", q.init) : q.init();
|
|
4190
|
-
const pt = "0.4.
|
|
4224
|
+
const pt = "0.4.8";
|
|
4191
4225
|
export {
|
|
4192
|
-
|
|
4193
|
-
|
|
4226
|
+
R as Core,
|
|
4227
|
+
l as Env,
|
|
4194
4228
|
y as Form,
|
|
4195
|
-
|
|
4229
|
+
w as Fragment,
|
|
4196
4230
|
X as Haori,
|
|
4197
4231
|
d as Log,
|
|
4198
|
-
|
|
4232
|
+
F as Queue,
|
|
4199
4233
|
X as default,
|
|
4200
4234
|
pt as version
|
|
4201
4235
|
};
|