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/dist/haori.es.js CHANGED
@@ -1,23 +1,23 @@
1
- const O = class O {
1
+ const C = class C {
2
2
  /**
3
3
  * 開発モードの状態を取得します。
4
4
  *
5
5
  * @returns 開発モードならtrue、そうでなければfalse
6
6
  */
7
7
  static isEnabled() {
8
- return O.devMode;
8
+ return C.devMode;
9
9
  }
10
10
  /**
11
11
  * 開発モードを有効化します。
12
12
  */
13
13
  static enable() {
14
- O.devMode = !0;
14
+ C.devMode = !0;
15
15
  }
16
16
  /**
17
17
  * 開発モードを無効化します。
18
18
  */
19
19
  static disable() {
20
- O.devMode = !1;
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
- O.devMode = t;
28
+ C.devMode = t;
29
29
  }
30
30
  };
31
- O.devMode = !1;
32
- let B = O;
31
+ C.devMode = !1;
32
+ let B = C;
33
33
  const z = "embedded";
34
- function rt(F) {
35
- return F === "embedded" || F === "demo";
34
+ function rt(P) {
35
+ return P === "embedded" || P === "demo";
36
36
  }
37
- function it(F) {
38
- return F === null ? null : rt(F) ? F : z;
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 u = D;
99
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", u.detect) : u.detect();
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 R = _;
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 u.runtime;
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
- u.setRuntime(t);
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 R.enqueue(() => {
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 R.enqueue(() => window.confirm(t), !0);
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 R.enqueue(() => {
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 R.enqueue(() => {
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 R.enqueue(() => {
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 R.enqueue(() => {
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(`${u.prefix}form-object`), n = t.getAttribute(`${u.prefix}form-list`);
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 ${u.prefix}form-object and name attributes.`
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 ${u.prefix}form-list and ${u.prefix}form-object attributes.`
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(`${u.prefix}form-object`), h = t.getAttribute(`${u.prefix}form-list`), m = t.getAttribute(`${u.prefix}form-detach`);
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 (!m || i) {
440
- const b = e[String(a)];
441
- h && Array.isArray(b) && r !== null ? s.push(
442
- y.applyFragmentValue(t, b[r] ?? null, n)
443
- ) : typeof b > "u" || (typeof b == "string" || typeof b == "number" || typeof b == "boolean" || b === null ? s.push(y.applyFragmentValue(t, b, n)) : s.push(
444
- y.applyFragmentValue(t, String(b), n)
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 b = e[String(o)];
449
- if (b && typeof b == "object")
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
- b,
454
+ g,
455
455
  null,
456
456
  i,
457
457
  n
458
458
  )
459
459
  );
460
460
  } else if (h) {
461
- const b = e[String(h)];
462
- if (Array.isArray(b)) {
461
+ const g = e[String(h)];
462
+ if (Array.isArray(g)) {
463
463
  const E = t.getChildElementFragments();
464
- for (let S = 0; S < E.length; S++) {
465
- const c = E[S];
466
- b.length > S ? s.push(
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
- b[S],
470
- S,
469
+ g[v],
470
+ v,
471
471
  i,
472
472
  n
473
473
  )
474
- ) : s.push(y.setPartValues(c, {}, S, i, n));
474
+ ) : s.push(y.setPartValues(c, {}, v, i, n));
475
475
  }
476
476
  }
477
477
  } else
478
- for (const b of t.getChildElementFragments())
478
+ for (const g of t.getChildElementFragments())
479
479
  s.push(
480
- y.setPartValues(b, e, null, i, n)
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 R.enqueue(() => {
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 P.evaluateAll(t);
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(`${u.prefix}each`))
517
+ if (n.hasAttribute(`${l.prefix}each`))
518
518
  for (const s of n.getChildElementFragments()) {
519
- const a = s.hasAttribute(`${u.prefix}each-before`), o = s.hasAttribute(`${u.prefix}each-after`);
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 = (m) => typeof a == "function" ? a.call(s, m, r, i) : s.addErrorMessage(m, r), h = y.findFragmentsByKey(t, e);
578
- return h.forEach((m) => {
579
- n.push(o(m.getTarget()));
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(`${u.prefix}form-object`))
604
- e.length > 1 && t.getAttribute(`${u.prefix}form-object`) === i && t.getChildElementFragments().forEach((s) => {
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(`${u.prefix}form-list`)) {
607
+ else if (t.hasAttribute(`${l.prefix}form-list`)) {
608
608
  if (e.length > 1) {
609
- const n = t.getAttribute(`${u.prefix}form-list`), s = i.lastIndexOf("["), a = i.lastIndexOf("]");
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), m = Number(h);
614
- if (isNaN(m))
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 b = t.getChildElementFragments().filter((E) => E.hasAttribute(`${u.prefix}row`));
618
- m < b.length && r.push(
619
- ...y.findFragmentByKeyParts(b[m], e.slice(1))
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, m = e[n - 3] || 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
- m
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 b = this.startsMemberAccess(i) ? "member" : "array";
779
- r.push(b);
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 H(t);
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 R.enqueue(() => {
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 R.enqueue(() => {
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 R.enqueue(() => {
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 T = I;
1384
- class x extends T {
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 = T.get(e);
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 = this.visible, t.display = this.display, t.template = this.template, t;
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, R.enqueue(() => {
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, R.enqueue(() => {
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 R.enqueue(() => {
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 R.enqueue(() => {
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 R.enqueue(() => {
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] : L.joinEvaluateResults(r);
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 = T.get(n);
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 m = r === void 0 ? e?.getTarget() || null : r;
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 S = this.resolveInsertionPointFromDom(
1842
+ const v = this.resolveInsertionPointFromDom(
1835
1843
  e,
1836
1844
  !1
1837
1845
  );
1838
- S === null ? (d.warn(
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(S.index, 0, t), m = S.referenceNode);
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 b = this.skipMutationNodes;
1848
- return this.skipMutationNodes = !0, R.enqueue(() => {
1849
- this.target.insertBefore(t.getTarget(), m);
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 = b;
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(`${u.prefix}if-false`, ""), Promise.resolve();
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(`${u.prefix}if-false`), this.visible = !0, Promise.resolve();
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 H extends T {
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 L(this.text);
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 H(this.target.cloneNode(!0));
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 L(t), this.evaluate());
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
- ) : R.enqueue(() => {
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 = L.joinEvaluateResults(
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 T {
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, R.enqueue(() => {
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 L = K;
2127
- const G = class G extends L {
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 w {
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
- w.dispatch(document, "ready", { version: t });
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
- w.dispatch(t, "render", { target: t });
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
- w.dispatch(t, "importstart", {
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
- w.dispatch(t, "importend", {
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
- w.dispatch(t, "importerror", { url: e, error: r });
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 m = e?.[h], b = r[h];
2266
- m !== b && n.push(h);
2273
+ const b = e?.[h], g = r[h];
2274
+ b !== g && n.push(h);
2267
2275
  }
2268
- w.dispatch(t, "bindchange", {
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
- w.dispatch(t, "eachupdate", {
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
- w.dispatch(t, "rowadd", { key: e, index: r, item: i });
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
- w.dispatch(t, "rowremove", { key: e, index: r });
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
- w.dispatch(t, "rowmove", { key: e, from: r, to: i });
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
- w.dispatch(t, "show", { visible: !0 });
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
- w.dispatch(t, "hide", { visible: !1 });
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
- w.dispatch(t, "fetchstart", {
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
- w.dispatch(t, "fetchend", {
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
- w.dispatch(t, "fetcherror", {
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(F) {
2407
- return lt.has(F.toUpperCase());
2414
+ function ut(P) {
2415
+ return lt.has(P.toUpperCase());
2408
2416
  }
2409
- function ct(F, t) {
2417
+ function ct(P, t) {
2410
2418
  for (const [e, r] of Object.entries(t))
2411
- r !== void 0 && (r === null ? F.append(e, "") : Array.isArray(r) ? r.forEach((i) => {
2412
- F.append(e, String(i));
2413
- }) : typeof r == "object" || typeof r == "function" ? F.append(e, JSON.stringify(r)) : F.append(e, String(r)));
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(F, t) {
2416
- const e = new URL(F, window.location.href), r = new URLSearchParams(e.search);
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 l = class l {
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 ? `${u.prefix}${t}-${e}` : r ? `${u.prefix}fetch-${e}` : `${u.prefix}${e}`;
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
- l.DATA_PLACEHOLDER_REGEX,
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" ? l.stringifyJsonTemplateValue(t) : String(t);
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
- l.DATA_PLACEHOLDER_REGEX,
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 l.isJsonStringContext(t, s) ? l.stringifyJsonTemplateStringContent(a) : l.stringifyJsonTemplateValue(a);
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 l.SINGLE_PLACEHOLDER_REGEX.test(n) ? P.parseDataBind(i) : n.startsWith("{") || n.startsWith("[") ? P.parseDataBind(
2533
- l.resolveDataJsonString(
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
- ) : P.parseDataBind(
2538
- l.resolveDataParamString(r, t.getBindingData())
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(l.attrName(e, "validate")) && (r.valid = !0), t.hasAttribute(l.attrName(e, "confirm")) && (r.confirmMessage = t.getAttribute(
2554
- l.attrName(e, "confirm")
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(l.attrName(e, "data")) && (r.data = l.resolveDataAttribute(
2564
+ `)), t.hasAttribute(u.attrName(e, "data")) && (r.data = u.resolveDataAttribute(
2557
2565
  t,
2558
- l.attrName(e, "data")
2559
- )), t.hasAttribute(l.attrName(e, "form"))) {
2566
+ u.attrName(e, "data")
2567
+ )), t.hasAttribute(u.attrName(e, "form"))) {
2560
2568
  const c = t.getRawAttribute(
2561
- l.attrName(e, "form")
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
- T.get(f)
2574
+ w.get(f)
2567
2575
  ) : d.error(
2568
2576
  "Haori",
2569
- `Form element not found: ${c} (${l.attrName(e, "form")})`
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(`${u.prefix}${e}-before-run`)) {
2582
+ if (t.hasAttribute(`${l.prefix}${e}-before-run`)) {
2575
2583
  const c = t.getRawAttribute(
2576
- `${u.prefix}${e}-before-run`
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 = l.attrName(e, "fetch"), n = t.hasAttribute(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 = l.attrName(e, "fetch-method");
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 = l.attrName(null, "method", !0);
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 = l.attrName(e, "fetch-headers");
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 = P.parseDataBind(f);
2614
- } catch (g) {
2615
- d.error("Haori", `Invalid fetch headers: ${g}`);
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 = l.attrName(
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 = P.parseDataBind(f);
2630
- } catch (g) {
2631
- d.error("Haori", `Invalid fetch headers: ${g}`);
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 = l.attrName(
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 = l.attrName(
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 ? l.attrName(e, "bind") : l.attrName(null, "bind", !0);
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((g) => {
2684
- const A = T.get(g);
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 = l.attrName(e, "bind-arg"), h = l.attrName(
2700
+ const o = u.attrName(e, "bind-arg"), h = u.attrName(
2693
2701
  null,
2694
2702
  "arg",
2695
2703
  !0
2696
- ), m = l.attrName(
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(m) && (r.bindArg = t.getRawAttribute(m));
2704
- const b = e ? l.attrName(e, "bind-params") : l.attrName(null, "bind-params", !0);
2705
- if (t.hasAttribute(b)) {
2706
- const c = t.getRawAttribute(b);
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 ? l.attrName(e, "bind-append") : l.attrName(null, "bind-append", !0);
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 S = e ? l.attrName(e, "copy-params") : null;
2715
- if (S && t.hasAttribute(S)) {
2722
+ const v = e ? u.attrName(e, "copy-params") : null;
2723
+ if (v && t.hasAttribute(v)) {
2716
2724
  const c = t.getRawAttribute(
2717
- S
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(l.attrName(e, "adjust"))) {
2730
+ if (t.hasAttribute(u.attrName(e, "adjust"))) {
2723
2731
  const f = t.getRawAttribute(
2724
- l.attrName(e, "adjust")
2732
+ u.attrName(e, "adjust")
2725
2733
  );
2726
2734
  if (f) {
2727
- const g = document.body.querySelectorAll(f);
2728
- g.length > 0 ? (r.adjustFragments = [], g.forEach((A) => {
2729
- const v = T.get(A);
2730
- v && r.adjustFragments.push(v);
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} (${l.attrName(e, "adjust")})`
2741
+ `Adjust element not found: ${f} (${u.attrName(e, "adjust")})`
2734
2742
  );
2735
2743
  }
2736
- if (t.hasAttribute(l.attrName(e, "adjust-value"))) {
2737
- const g = t.getRawAttribute(
2738
- l.attrName(e, "adjust-value")
2739
- ), A = Number(g);
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(l.attrName(e, "row-add")) && (r.rowAdd = !0), t.hasAttribute(l.attrName(e, "row-remove")) && (r.rowRemove = !0), t.hasAttribute(l.attrName(e, "row-prev")) && (r.rowMovePrev = !0), t.hasAttribute(l.attrName(e, "row-next")) && (r.rowMoveNext = !0), t.hasAttribute(`${u.prefix}${e}-after-run`)) {
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
- `${u.prefix}${e}-after-run`
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 (g) {
2756
- d.error("Haori", `Invalid after script: ${g}`);
2763
+ } catch (m) {
2764
+ d.error("Haori", `Invalid after script: ${m}`);
2757
2765
  }
2758
2766
  }
2759
- if (t.hasAttribute(l.attrName(e, "dialog")) && (r.dialogMessage = t.getAttribute(
2760
- l.attrName(e, "dialog")
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(l.attrName(e, "toast"))) {
2770
+ `)), t.hasAttribute(u.attrName(e, "toast"))) {
2763
2771
  r.toastMessage = t.getAttribute(
2764
- l.attrName(e, "toast")
2772
+ u.attrName(e, "toast")
2765
2773
  );
2766
2774
  const f = t.getRawAttribute(
2767
- l.attrName(e, "toast-level")
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(l.attrName(e, "redirect")) && (r.redirectUrl = t.getAttribute(
2772
- l.attrName(e, "redirect")
2773
- )), t.hasAttribute(l.attrName(e, "scroll-error")) && (r.scrollOnError = !0), t.hasAttribute(l.attrName(e, "scroll")) && (r.scrollTarget = t.getAttribute(
2774
- l.attrName(e, "scroll")
2775
- )), t.hasAttribute(l.attrName(e, "history")) && (r.historyUrl = t.getAttribute(
2776
- l.attrName(e, "history")
2777
- )), t.hasAttribute(l.attrName(e, "history-data")) && (r.historyData = l.resolveDataAttribute(
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
- l.attrName(e, "history-data")
2780
- )), t.hasAttribute(l.attrName(e, "history-form"))) {
2787
+ u.attrName(e, "history-data")
2788
+ )), t.hasAttribute(u.attrName(e, "history-form"))) {
2781
2789
  const f = t.getRawAttribute(
2782
- l.attrName(e, "history-form")
2790
+ u.attrName(e, "history-form")
2783
2791
  );
2784
2792
  if (f) {
2785
- const g = document.body.querySelector(f);
2786
- g !== null ? r.historyFormFragment = y.getFormFragment(
2787
- T.get(g)
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} (${l.attrName(e, "history-form")})`
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 g = l.attrName(e, f);
2804
- if (!t.hasAttribute(g))
2811
+ const m = u.attrName(e, f);
2812
+ if (!t.hasAttribute(m))
2805
2813
  return;
2806
- const A = t.getRawAttribute(g), v = [];
2814
+ const A = t.getRawAttribute(m), T = [];
2807
2815
  if (A ? (document.body.querySelectorAll(A).forEach((J) => {
2808
- const tt = T.get(J);
2809
- tt && v.push(tt);
2810
- }), v.length === 0 && d.error("Haori", `Element not found: ${A} (${g})`)) : v.push(t), v.length > 0)
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 = v;
2821
+ r.resetFragments = T;
2814
2822
  break;
2815
2823
  case "refetch":
2816
- r.refetchFragments = v;
2824
+ r.refetchFragments = T;
2817
2825
  break;
2818
2826
  case "click":
2819
- r.clickFragments = v;
2827
+ r.clickFragments = T;
2820
2828
  break;
2821
2829
  case "copy":
2822
- r.copyFragments = v;
2830
+ r.copyFragments = T;
2823
2831
  break;
2824
2832
  case "open":
2825
- r.openFragments = v;
2833
+ r.openFragments = T;
2826
2834
  break;
2827
2835
  case "close":
2828
- r.closeFragments = v;
2836
+ r.closeFragments = T;
2829
2837
  break;
2830
2838
  }
2831
2839
  });
2832
2840
  }
2833
- if (!e && (t.hasAttribute(l.attrName(null, "data", !0)) && (r.data = l.resolveDataAttribute(
2841
+ if (!e && (t.hasAttribute(u.attrName(null, "data", !0)) && (r.data = u.resolveDataAttribute(
2834
2842
  t,
2835
- l.attrName(null, "data", !0)
2836
- )), t.hasAttribute(l.attrName(null, "form", !0)))) {
2843
+ u.attrName(null, "data", !0)
2844
+ )), t.hasAttribute(u.attrName(null, "form", !0)))) {
2837
2845
  const c = t.getRawAttribute(
2838
- l.attrName(null, "form", !0)
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
- T.get(f)
2851
+ w.get(f)
2844
2852
  ) : d.error(
2845
2853
  "Haori",
2846
- `Form element not found: ${c} (${l.attrName(null, "fetch-form", !0)})`
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
- l.isElementFragment(t) ? this.options = l.buildOptions(t, e) : this.options = t;
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
- ), m = (o.method || "GET").toUpperCase(), b = u.runtime === "demo" && !ut(m), E = b ? "GET" : m;
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 [g, A] of Object.entries(i))
2930
- A == null ? f.append(g, "") : A instanceof Blob ? f.append(g, A) : Array.isArray(A) ? A.forEach((v) => f.append(g, String(v))) : typeof A == "object" ? f.append(g, JSON.stringify(A)) : f.append(g, String(A));
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 [g, A] of Object.entries(i))
2935
- A !== void 0 && (A === null ? f.append(g, "") : Array.isArray(A) ? A.forEach((v) => f.append(g, String(v))) : typeof A == "object" ? f.append(g, JSON.stringify(A)) : f.append(g, String(A)));
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 S;
2942
- if (b && (S = e && new URL(e, window.location.href).search || void 0, h.delete("Content-Type"), d.info("Haori demo fetch normalization", {
2943
- runtime: u.runtime,
2944
- requestedMethod: m,
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: S
2957
+ queryString: v
2950
2958
  })), this.options.targetFragment && e) {
2951
2959
  const c = performance.now(), f = {
2952
- runtime: u.runtime,
2953
- requestedMethod: m,
2960
+ runtime: l.runtime,
2961
+ requestedMethod: b,
2954
2962
  effectiveMethod: E,
2955
- transportMode: b ? "query-get" : "http",
2956
- ...b ? { queryString: S } : {}
2963
+ transportMode: g ? "query-get" : "http",
2964
+ ...g ? { queryString: v } : {}
2957
2965
  };
2958
- return w.fetchStart(
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((g) => this.handleFetchResult(
2965
- g,
2972
+ ), fetch(e, o).then((m) => this.handleFetchResult(
2973
+ m,
2966
2974
  e || void 0,
2967
2975
  c
2968
- )).catch((g) => {
2969
- throw e && w.fetchError(
2976
+ )).catch((m) => {
2977
+ throw e && N.fetchError(
2970
2978
  this.options.targetFragment.getTarget(),
2971
2979
  e,
2972
- g
2973
- ), g;
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
- `${u.prefix}bind`,
2989
+ `${l.prefix}bind`,
2982
2990
  JSON.stringify(i)
2983
2991
  );
2984
- const m = o.getBindingData();
2985
- Object.assign(m, i), await P.setBindingData(h, m);
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 && w.fetchError(
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 && w.fetchEnd(
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 l(a, null).run());
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((m) => n.searchParams.append(o, String(m))) : typeof h == "object" ? n.searchParams.set(o, JSON.stringify(h)) : n.searchParams.set(o, String(h)));
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(P.setBindingData(n.getTarget(), s));
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
- P.setBindingData(
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 P.setBindingData(i.getTarget(), n);
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
- `${u.prefix}row`
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(P.evaluateAll(r)), e.push(y.reset(r)), Promise.all(e).then(() => {
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(`${u.prefix}each-before`) && !i.hasAttribute(`${u.prefix}each-after`)).length <= 1 ? Promise.resolve() : t.remove();
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
- l.DATA_PLACEHOLDER_REGEX = /\{\{\{([\s\S]+?)\}\}\}|\{\{([\s\S]+?)\}\}/g, l.SINGLE_PLACEHOLDER_REGEX = /^(\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\})$/;
3365
- let V = l;
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 === `${u.prefix}${e}`
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 === `${u.prefix}${e}`
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 = `${u.prefix}${p.ATTRIBUTE_ALIAS_SUFFIX}`;
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 = T.get(t);
3476
+ const r = w.get(t);
3469
3477
  return r instanceof x ? r.hasAttribute(
3470
- `${u.prefix}${p.ATTRIBUTE_ALIAS_SUFFIX}${e}`
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 = T.get(t);
3506
+ const e = w.get(t);
3499
3507
  if (!e)
3500
3508
  return Promise.resolve();
3501
- t.parentNode && (T.get(t.parentNode)?.isMounted() || document.body.contains(t) ? e.setMounted(!0) : e.setMounted(!1));
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 = u.prefix + n;
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 = u.prefix + n;
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 H && n.push(p.evaluateText(s));
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 = T.get(t), n = p.getAliasedAttributeName(e);
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 `${u.prefix}bind`: {
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 `${u.prefix}if`:
3568
+ case `${l.prefix}if`:
3561
3569
  s.push(p.evaluateIf(i));
3562
3570
  break;
3563
- case `${u.prefix}each`:
3571
+ case `${l.prefix}each`:
3564
3572
  s.push(p.evaluateEach(i));
3565
3573
  break;
3566
- case `${u.prefix}fetch`:
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 `${u.prefix}import`: {
3580
+ case `${l.prefix}import`: {
3573
3581
  if (typeof r == "string") {
3574
3582
  const a = i.getTarget(), o = performance.now();
3575
- w.importStart(a, r), s.push(
3583
+ a.setAttribute(`${l.prefix}importing`, ""), N.importStart(a, r), s.push(
3576
3584
  dt.load(r).then((h) => {
3577
- const m = new TextEncoder().encode(h).length;
3578
- return R.enqueue(() => {
3585
+ const b = new TextEncoder().encode(h).length;
3586
+ return F.enqueue(() => {
3579
3587
  a.innerHTML = h;
3580
3588
  }).then(() => {
3581
- w.importEnd(a, r, m, o);
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
- w.importError(a, r, h), d.error("[Haori]", "Failed to import HTML:", r, h);
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 `${u.prefix}url-param`: {
3591
- const a = i.getAttribute(`${u.prefix}url-arg`), o = ft.readParams();
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 = T.get(t), i = r.getRawBindingData();
3628
+ const r = w.get(t), i = r.getRawBindingData();
3614
3629
  r.setBindingData(e);
3615
3630
  let n = r.setAttribute(
3616
- `${u.prefix}bind`,
3631
+ `${l.prefix}bind`,
3617
3632
  JSON.stringify(e)
3618
3633
  );
3619
3634
  if (t.tagName === "FORM") {
3620
- const s = r.getAttribute(`${u.prefix}form-arg`), a = s && e[String(s)] && typeof e[String(s)] == "object" && !Array.isArray(e[String(s)]) ? e[String(s)] : s ? {} : e;
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)), w.bindChange(t, i, e, "manual"), n.then(() => {
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 = T.get(t);
3668
+ const r = w.get(t);
3654
3669
  if (r.isSkipMutationNodes())
3655
3670
  return;
3656
- const i = T.get(e.nextSibling), n = T.get(e);
3657
- n && (r.insertBefore(n, i), n instanceof x ? p.scan(n.getTarget()) : n instanceof H && p.evaluateText(n));
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 = T.get(t);
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 = T.get(t);
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 = T.get(t);
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(`${u.prefix}form-arg`);
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(`${u.prefix}if`) && e.push(p.evaluateIf(t)), t.hasAttribute(`${u.prefix}each`) ? Promise.all(e).then(() => p.evaluateEach(t)).then(() => {
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 H && r.push(p.evaluateText(i));
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 H && e.push(p.evaluateText(r));
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(`${u.prefix}if`);
3755
- return r === !1 || r === void 0 || r === null || Number.isNaN(r) ? t.isVisible() && e.push(
3756
- t.hide().then(() => {
3757
- w.hide(t.getTarget());
3758
- })
3759
- ) : t.isVisible() || (e.push(
3760
- t.show().then(() => {
3761
- w.show(t.getTarget());
3762
- })
3763
- ), e.push(p.evaluateAll(t))), Promise.all(e).then(() => {
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(`${u.prefix}each-before`) || s.hasAttribute(`${u.prefix}each-after`))
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(`${u.prefix}each`);
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(`${u.prefix}each`);
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(`${u.prefix}each-index`);
3827
+ let i = t.getAttribute(`${l.prefix}each-index`);
3804
3828
  i && (i = String(i));
3805
- const n = t.getAttribute(`${u.prefix}each-key`), s = t.getAttribute(`${u.prefix}each-arg`), a = /* @__PURE__ */ new Map(), o = [];
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 g = p.createListKey(
3831
+ const m = p.createListKey(
3808
3832
  c,
3809
3833
  n ? String(n) : null,
3810
3834
  f
3811
3835
  );
3812
- o.push(g), a.set(g, { item: c, itemIndex: f });
3836
+ o.push(m), a.set(m, { item: c, itemIndex: f });
3813
3837
  });
3814
3838
  const h = [];
3815
- let m = t.getChildren().filter((c) => c instanceof x).filter(
3816
- (c) => !c.hasAttribute(`${u.prefix}each-before`) && !c.hasAttribute(`${u.prefix}each-after`)
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
- m = m.filter((c) => o.indexOf(String(c.getListKey())) === -1 ? (h.push(c.remove()), !1) : !0);
3819
- const b = m.map((c) => c.getListKey()), E = t.getChildren().filter((c) => c instanceof x).filter((c) => c.hasAttribute(`${u.prefix}each-before`)).length;
3820
- let S = Promise.resolve();
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 g = b.indexOf(c), { item: A, itemIndex: v } = a.get(c);
3846
+ const m = g.indexOf(c), { item: A, itemIndex: T } = a.get(c);
3823
3847
  let k;
3824
- if (g !== -1)
3825
- k = m[g], S = S.then(
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
- v,
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
- S = S.then(
3862
+ v = v.then(
3839
3863
  () => p.updateRowFragment(
3840
3864
  k,
3841
3865
  A,
3842
3866
  i,
3843
- v,
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(() => S).then(() => {
3878
+ }), Promise.all(h).then(() => v).then(() => {
3855
3879
  const c = o.filter(
3856
- (v) => v !== null
3857
- ), f = b.filter(
3858
- (v) => v !== null
3859
- ), g = c.filter(
3860
- (v) => !f.includes(v)
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
- (v) => !c.includes(v)
3886
+ (T) => !c.includes(T)
3863
3887
  );
3864
- w.eachUpdate(
3888
+ N.eachUpdate(
3865
3889
  t.getTarget(),
3866
- g,
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 '${u.prefix}each-arg' attribute: ${e}`
3940
+ `Primitive value requires '${l.prefix}each-arg' attribute: ${e}`
3917
3941
  ), Promise.resolve();
3918
- return t.setListKey(s), t.setBindingData(a), t.setAttribute(`${u.prefix}row`, s);
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 P = p;
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 = T.get(e);
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 = T.get(r);
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 N = class N {
4019
+ const S = class S {
3986
4020
  static syncTree(t) {
3987
- (t instanceof Element || t instanceof DocumentFragment) && (t instanceof HTMLElement && N.syncElement(t), t.querySelectorAll("*").forEach((e) => {
3988
- N.syncElement(e);
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 = N.registrations.get(t), r = T.get(t);
3993
- if (!r || !N.shouldObserve(r)) {
3994
- e && (e.observer.disconnect(), N.registrations.delete(t));
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 = N.resolveRoot(r), n = N.resolveRootMargin(r), s = N.resolveThreshold(r), a = r.hasAttribute(`${u.prefix}intersect-once`);
4000
- if (e && e.observer.root === i && e.observer.rootMargin === n && N.sameThreshold(
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(), N.registrations.delete(t));
4041
+ e && (e.observer.disconnect(), S.registrations.delete(t));
4008
4042
  const o = new IntersectionObserver(
4009
4043
  (h) => {
4010
- const m = N.registrations.get(t);
4011
- m && h.forEach((b) => {
4012
- !b.isIntersecting || m.running || N.isDisabled(m.fragment) || (m.running = !0, new V(m.fragment, "intersect").runWithResult().then((E) => {
4013
- E && m.once && (m.observer.disconnect(), N.registrations.delete(t));
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 = N.registrations.get(t);
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), N.registrations.set(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 = N.registrations.get(t);
4042
- e && (e.observer.disconnect(), N.registrations.delete(t));
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 = N.registrations.get(e);
4046
- r && (r.observer.disconnect(), N.registrations.delete(e));
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
- N.registrations.forEach((t) => {
4084
+ S.registrations.forEach((t) => {
4051
4085
  t.observer.disconnect();
4052
- }), N.registrations.clear();
4086
+ }), S.registrations.clear();
4053
4087
  }
4054
4088
  static shouldObserve(t) {
4055
4089
  return t.getAttributeNames().some((e) => {
4056
- if (!e.startsWith(`${u.prefix}intersect-`))
4090
+ if (!e.startsWith(`${l.prefix}intersect-`))
4057
4091
  return !1;
4058
- const r = e.slice(`${u.prefix}intersect-`.length);
4059
- return !N.CONFIG_KEYS.has(r);
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 = `${u.prefix}intersect-root`;
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 = `${u.prefix}intersect-root-margin`, r = t.getAttribute(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 = `${u.prefix}intersect-threshold`, r = t.getAttribute(e), i = typeof r == "number" ? r : Number.parseFloat(String(r ?? 0));
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 = `${u.prefix}intersect-disabled`, r = t.getAttribute(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
- N.CONFIG_KEYS = /* @__PURE__ */ new Set([
4127
+ S.CONFIG_KEYS = /* @__PURE__ */ new Set([
4094
4128
  "root",
4095
4129
  "root-margin",
4096
4130
  "threshold",
4097
4131
  "disabled",
4098
4132
  "once"
4099
- ]), N.registrations = /* @__PURE__ */ new Map();
4100
- let $ = N;
4101
- const C = class C {
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 (C._initialized)
4141
+ if (H._initialized)
4108
4142
  return;
4109
- C._initialized = !0;
4143
+ H._initialized = !0;
4110
4144
  const t = await Promise.allSettled([
4111
- P.scan(document.head),
4112
- P.scan(document.body)
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), C.observe(document.head), C.observe(document.body), new Q().start(), $.syncTree(document.body);
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 && P.isAliasedAttributeReflection(
4168
+ if (i.attributeName && R.isAliasedAttributeReflection(
4135
4169
  n,
4136
4170
  i.attributeName
4137
4171
  ))
4138
4172
  break;
4139
- P.setAttribute(
4173
+ R.setAttribute(
4140
4174
  n,
4141
4175
  i.attributeName,
4142
4176
  n.getAttribute(i.attributeName)
4143
- ), $.syncElement(n);
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
- $.cleanupTree(n), P.removeNode(n);
4187
+ L.cleanupTree(n), R.removeNode(n);
4154
4188
  }), Array.from(i.addedNodes).forEach((n) => {
4155
- n.parentElement instanceof HTMLElement && (P.addNode(n.parentElement, n), $.syncTree(n));
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 ? P.changeText(i.target, i.target.textContent) : d.warn(
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
- C._initialized = !1;
4188
- let q = C;
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.6";
4224
+ const pt = "0.4.8";
4191
4225
  export {
4192
- P as Core,
4193
- u as Env,
4226
+ R as Core,
4227
+ l as Env,
4194
4228
  y as Form,
4195
- T as Fragment,
4229
+ w as Fragment,
4196
4230
  X as Haori,
4197
4231
  d as Log,
4198
- R as Queue,
4232
+ F as Queue,
4199
4233
  X as default,
4200
4234
  pt as version
4201
4235
  };