haori 0.59.4 → 0.59.5

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
@@ -120,7 +120,7 @@ const ee = class ee {
120
120
  ee._prefix = "data-", ee._runtime = He, ee._strictBind = !1;
121
121
  let c = ee;
122
122
  typeof document < "u" && (document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", c.detect) : c.detect());
123
- class m {
123
+ class g {
124
124
  /**
125
125
  * 開発モードでのみコンソールに情報を出力します。
126
126
  *
@@ -164,11 +164,11 @@ const Rt = /^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$/, Ge = "new:
164
164
  static register(e, t) {
165
165
  const r = typeof e == "string" ? e.trim() : "";
166
166
  if (r === "") {
167
- m.error("[Haori]", "Enhancer name is required.");
167
+ g.error("[Haori]", "Enhancer name is required.");
168
168
  return;
169
169
  }
170
170
  if (!t || typeof t.init != "function") {
171
- m.error("[Haori]", `Enhancer "${r}" must have an init function.`);
171
+ g.error("[Haori]", `Enhancer "${r}" must have an init function.`);
172
172
  return;
173
173
  }
174
174
  x.enhancers.set(r, t), x.warnedUnknownNames.delete(r), typeof document < "u" && document.body && x.forEachTarget(document.body, (i) => {
@@ -369,7 +369,7 @@ const Rt = /^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$/, Ge = "new:
369
369
  */
370
370
  static resolveGlobal(e) {
371
371
  if (!Rt.test(e))
372
- return m.error(
372
+ return g.error(
373
373
  "[Haori]",
374
374
  `${c.prefix}enhance-new accepts a dot-separated global reference only: ${e}`
375
375
  ), null;
@@ -382,7 +382,7 @@ const Rt = /^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$/, Ge = "new:
382
382
  if (t = t[r], t === void 0)
383
383
  break;
384
384
  }
385
- return typeof t != "function" ? (V.isEnabled() && !x.warnedMissingGlobals.has(e) && (x.warnedMissingGlobals.add(e), m.warn(
385
+ return typeof t != "function" ? (V.isEnabled() && !x.warnedMissingGlobals.has(e) && (x.warnedMissingGlobals.add(e), g.warn(
386
386
  "[Haori]",
387
387
  `${c.prefix}enhance-new could not resolve the global reference (load the library before Haori runs): ${e}`
388
388
  )), null) : t;
@@ -394,7 +394,7 @@ const Rt = /^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$/, Ge = "new:
394
394
  * @returns 戻り値はありません。
395
395
  */
396
396
  static warnUnknownName(e) {
397
- !V.isEnabled() || x.warnedUnknownNames.has(e) || (x.warnedUnknownNames.add(e), m.warn(
397
+ !V.isEnabled() || x.warnedUnknownNames.has(e) || (x.warnedUnknownNames.add(e), g.warn(
398
398
  "[Haori]",
399
399
  `Enhancer "${e}" is not registered yet; the declaration is kept pending and applied when it is registered (Haori.enhancers.register('${e}', {init(el) {...}})).`
400
400
  ));
@@ -414,7 +414,7 @@ const Rt = /^[A-Za-z_$][A-Za-z0-9_$]*(\.[A-Za-z_$][A-Za-z0-9_$]*)*$/, Ge = "new:
414
414
  try {
415
415
  t();
416
416
  } catch (i) {
417
- m.error("[Haori]", `${e} failed:`, i);
417
+ g.error("[Haori]", `${e} failed:`, i);
418
418
  }
419
419
  };
420
420
  x.mutationCapture ? x.mutationCapture(r) : r();
@@ -555,16 +555,16 @@ function ct(b, e, t = {}) {
555
555
  a.add(d);
556
556
  for (let d = Math.max(0, i - n); d <= Math.min(r - 1, i + n); d += 1)
557
557
  a.add(d);
558
- const o = Array.from(a).sort((d, g) => d - g), l = [];
558
+ const o = Array.from(a).sort((d, m) => d - m), l = [];
559
559
  let u = null;
560
560
  for (const d of o) {
561
561
  if (u !== null && d - u > 1)
562
562
  if (d - u === 2) {
563
- const g = u + 1;
563
+ const m = u + 1;
564
564
  l.push({
565
- page: g,
566
- label: g + 1,
567
- active: g === i,
565
+ page: m,
566
+ label: m + 1,
567
+ active: m === i,
568
568
  ellipsis: !1
569
569
  });
570
570
  } else
@@ -578,7 +578,7 @@ function ct(b, e, t = {}) {
578
578
  }
579
579
  return l;
580
580
  }
581
- const Ft = /^(\d{4})-(\d{1,2})$/, Nt = 1200;
581
+ const Ft = /^(\d{4})-(\d{1,2})$/, kt = 1200;
582
582
  function xe(b, e) {
583
583
  const t = Number(b);
584
584
  return Number.isFinite(t) ? Math.trunc(t) : e;
@@ -595,7 +595,7 @@ function Oe(b, e) {
595
595
  const n = Number.isFinite(e) ? Math.trunc(e) : 0, s = r * 12 + (i - 1) + n, a = Math.floor(s / 12), o = s - a * 12 + 1;
596
596
  return `${String(a).padStart(4, "0")}-${ue(o)}`;
597
597
  }
598
- function kt(b) {
598
+ function Nt(b) {
599
599
  if (typeof b == "string" && b.trim() !== "")
600
600
  return Oe(b, 0);
601
601
  const e = /* @__PURE__ */ new Date();
@@ -605,10 +605,10 @@ function ut(b, e) {
605
605
  const t = Math.trunc(Number(b));
606
606
  if (!Number.isFinite(t) || t < 0)
607
607
  return [];
608
- const r = kt(e);
608
+ const r = Nt(e);
609
609
  if (r === "")
610
610
  return [];
611
- const i = Math.min(t, Nt), n = [];
611
+ const i = Math.min(t, kt), n = [];
612
612
  for (let s = 0; s <= i; s += 1) {
613
613
  const a = Oe(r, -s);
614
614
  n.push({ targetMonth: a, label: a.replace(/-/g, "/") });
@@ -738,13 +738,13 @@ class We {
738
738
  const r = await t.task();
739
739
  t.resolve(r);
740
740
  } catch (r) {
741
- t.reject(r), m.error("[Haori]", `Task ${t.timestamp} failed:`, r);
741
+ t.reject(r), g.error("[Haori]", `Task ${t.timestamp} failed:`, r);
742
742
  }
743
743
  if (performance.now() - e > this.MAX_BUDGET)
744
744
  break;
745
745
  }
746
746
  } catch (e) {
747
- m.error("[Haori]", "Error processing queue:", e);
747
+ g.error("[Haori]", "Error processing queue:", e);
748
748
  } finally {
749
749
  this.processing = !1, this.queue.length > 0 && this.scheduleProcessing();
750
750
  }
@@ -979,7 +979,7 @@ const R = class R {
979
979
  const t = e.filter(
980
980
  (r) => !this.loggedUnusableBindingKeys.has(r)
981
981
  );
982
- t.length !== 0 && (t.forEach((r) => this.loggedUnusableBindingKeys.add(r)), m.warn(
982
+ t.length !== 0 && (t.forEach((r) => this.loggedUnusableBindingKeys.add(r)), g.warn(
983
983
  "[Haori]",
984
984
  `Binding key(s) that cannot be used as identifiers are excluded from expressions: ${t.join(", ")}. Read them as haori.data['key'], or use ${c.prefix}form-object to collect nested values.`
985
985
  ));
@@ -1123,7 +1123,7 @@ let ${e.join(", ")};`;
1123
1123
  if (this.loggedBlockedIdentifierExpressions.has(e))
1124
1124
  return;
1125
1125
  const t = this.detectForbiddenIdentifiers(e);
1126
- t.length !== 0 && (this.loggedBlockedIdentifierExpressions.add(e), m.warn(
1126
+ t.length !== 0 && (this.loggedBlockedIdentifierExpressions.add(e), g.warn(
1127
1127
  "[Haori]",
1128
1128
  "Expression references blocked identifier(s): " + t.join(", ") + ". These are blocked in expressions and evaluate to undefined (often the cause of an empty result). Use spread {...a, ...b} instead of Object.assign.",
1129
1129
  e
@@ -1265,7 +1265,7 @@ let ${e.join(", ")};`;
1265
1265
  static recordUnresolvedIdentifiers(e, t) {
1266
1266
  if (!(e.length === 0 || this.evaluatingForDiagnosis)) {
1267
1267
  if (c.strictBind) {
1268
- m.error(
1268
+ g.error(
1269
1269
  "[Haori]",
1270
1270
  "Expression references key(s) that are not in the binding data: " + e.join(", ") + ". The result is treated as an unresolved reference.",
1271
1271
  t
@@ -1296,7 +1296,7 @@ let ${e.join(", ")};`;
1296
1296
  if (this.pendingUnresolvedIdentifiers.size === 0)
1297
1297
  return;
1298
1298
  const e = Array.from(this.pendingUnresolvedIdentifiers);
1299
- this.pendingUnresolvedIdentifiers.clear(), m.warn(
1299
+ this.pendingUnresolvedIdentifiers.clear(), g.warn(
1300
1300
  "[Haori]",
1301
1301
  "Expression key(s) were never provided by any binding: " + e.join(", ") + ". They are treated as unresolved references (rendered as empty). Check for typos if this is unexpected."
1302
1302
  );
@@ -1379,7 +1379,7 @@ let ${e.join(", ")};`;
1379
1379
  ${t}`;
1380
1380
  this.loggedScopeMissingIdentifiers.has(s) || (this.loggedScopeMissingIdentifiers.add(s), i.push(n));
1381
1381
  }
1382
- i.length !== 0 && m.warn(
1382
+ i.length !== 0 && g.warn(
1383
1383
  "[Haori]",
1384
1384
  `Expression key(s) are missing from this scope but are provided in another scope: ${i.join(", ")}. A binding is visible only to the target element itself and its descendants, so bind the response to this element or one of its ancestors (data-fetch-bind / data-{event}-bind):`,
1385
1385
  t
@@ -1448,18 +1448,18 @@ ${t}`;
1448
1448
  */
1449
1449
  static evaluateDetailed(e, t = {}) {
1450
1450
  if (this.scheduleForbiddenBindingValueCacheReset(), e.trim() === "")
1451
- return m.warn("[Haori]", e, "Expression is empty"), { value: null, unresolvedReference: !1 };
1451
+ return g.warn("[Haori]", e, "Expression is empty"), { value: null, unresolvedReference: !1 };
1452
1452
  if (this.containsDangerousPatterns(e)) {
1453
1453
  const d = this.detectDisallowedKeywords(e);
1454
1454
  if (d.length > 0) {
1455
- const g = d.some((y) => y === "function" || y === "return") ? " Statement keywords are not allowed in expressions; use an arrow function such as `x => ({key: value})` instead of `function(x){ return {key: value}; }`." : " These are statement keywords and cannot be used in expressions.";
1456
- m.warn(
1455
+ const m = d.some((y) => y === "function" || y === "return") ? " Statement keywords are not allowed in expressions; use an arrow function such as `x => ({key: value})` instead of `function(x){ return {key: value}; }`." : " These are statement keywords and cannot be used in expressions.";
1456
+ g.warn(
1457
1457
  "[Haori]",
1458
1458
  e,
1459
- "Expression uses disallowed keyword(s): " + d.join(", ") + "." + g
1459
+ "Expression uses disallowed keyword(s): " + d.join(", ") + "." + m
1460
1460
  );
1461
1461
  } else
1462
- m.warn(
1462
+ g.warn(
1463
1463
  "[Haori]",
1464
1464
  e,
1465
1465
  "Expression contains dangerous patterns"
@@ -1469,7 +1469,7 @@ ${t}`;
1469
1469
  const r = this.collectForbiddenKeys(t);
1470
1470
  if (r.length > 0) {
1471
1471
  const d = r.join(",");
1472
- this.loggedForbiddenKeySignatures.has(d) || (this.loggedForbiddenKeySignatures.add(d), this.scheduleForbiddenKeyLogReset(), m.error(
1472
+ this.loggedForbiddenKeySignatures.has(d) || (this.loggedForbiddenKeySignatures.add(d), this.scheduleForbiddenKeyLogReset(), g.error(
1473
1473
  "[Haori]",
1474
1474
  "Binding keys are reserved and ignored: " + r.join(", ") + ". These collide with blocked global/prototype names and cannot be used as top-level binding keys; the remaining keys are still evaluated."
1475
1475
  ));
@@ -1480,7 +1480,7 @@ ${t}`;
1480
1480
  /* @__PURE__ */ new WeakSet(),
1481
1481
  i
1482
1482
  ))
1483
- return m.warn(
1483
+ return g.warn(
1484
1484
  "[Haori]",
1485
1485
  t,
1486
1486
  "Binded values contain forbidden values"
@@ -1491,7 +1491,7 @@ ${t}`;
1491
1491
  ), s = this.BUILTIN_REFERENCE_PATTERN.test(
1492
1492
  n
1493
1493
  );
1494
- s && this.BUILTIN_NAMESPACE in t && m.warn(
1494
+ s && this.BUILTIN_NAMESPACE in t && g.warn(
1495
1495
  "[Haori]",
1496
1496
  `Binding key "${this.BUILTIN_NAMESPACE}" is reserved for built-in helpers; the bound value is ignored in expressions.`
1497
1497
  );
@@ -1511,7 +1511,7 @@ ${t}`;
1511
1511
  if (V.isEnabled()) {
1512
1512
  const d = this.extractBoundIdentifiers(e);
1513
1513
  this.recordScopeMissingIdentifiers(
1514
- d.size === 0 ? l : l.filter((g) => !d.has(g)),
1514
+ d.size === 0 ? l : l.filter((m) => !d.has(m)),
1515
1515
  e
1516
1516
  );
1517
1517
  }
@@ -1520,20 +1520,20 @@ ${t}`;
1520
1520
  });
1521
1521
  const u = o ? [] : l;
1522
1522
  for (let d = 0; d <= this.MAX_IDENTIFIER_RECOVERY_COUNT; d += 1) {
1523
- const g = this.prepareEvaluator(
1523
+ const m = this.prepareEvaluator(
1524
1524
  e,
1525
1525
  a,
1526
1526
  u
1527
1527
  );
1528
- if (g.compileFailed || g.evaluator === null)
1528
+ if (m.compileFailed || m.evaluator === null)
1529
1529
  return { value: null, unresolvedReference: !1 };
1530
1530
  try {
1531
1531
  const y = [], E = this.wrapBoundValues(a);
1532
- g.bindKeys.forEach((N) => {
1533
- y.push(E[N]);
1532
+ m.bindKeys.forEach((k) => {
1533
+ y.push(E[k]);
1534
1534
  });
1535
1535
  const A = this.withBlockedPropertyAccess(
1536
- () => g.evaluator(...y)
1536
+ () => m.evaluator(...y)
1537
1537
  );
1538
1538
  return A === void 0 && this.warnBlockedIdentifiers(e), {
1539
1539
  value: A,
@@ -1561,10 +1561,10 @@ ${t}`;
1561
1561
  e
1562
1562
  ), { value: void 0, unresolvedReference: !0 });
1563
1563
  }
1564
- return m.error("[Haori]", "Expression evaluation error:", e, y), y instanceof ReferenceError ? { value: void 0, unresolvedReference: !0 } : { value: null, unresolvedReference: !1 };
1564
+ return g.error("[Haori]", "Expression evaluation error:", e, y), y instanceof ReferenceError ? { value: void 0, unresolvedReference: !0 } : { value: null, unresolvedReference: !1 };
1565
1565
  }
1566
1566
  }
1567
- return m.error(
1567
+ return g.error(
1568
1568
  "[Haori]",
1569
1569
  "Failed to recover missing identifiers:",
1570
1570
  e,
@@ -1596,12 +1596,12 @@ ${t}`;
1596
1596
  evaluator: u,
1597
1597
  compileFailed: !1
1598
1598
  };
1599
- const d = this.buildAssignments(n), g = this.buildShadowDeclarations(o), y = this.toGuardedMemberExpression(
1599
+ const d = this.buildAssignments(n), m = this.buildShadowDeclarations(o), y = this.toGuardedMemberExpression(
1600
1600
  this.toOptionalChainExpression(e)
1601
1601
  ), E = d ? `"use strict";
1602
1602
  ${d};
1603
- return (${y});${g}` : `"use strict";
1604
- return (${y});${g}`;
1603
+ return (${y});${m}` : `"use strict";
1604
+ return (${y});${m}`;
1605
1605
  try {
1606
1606
  return u = new Function(...n, E), this.EXPRESSION_CACHE.set(l, u), this.compileFailedExpressions.delete(e), {
1607
1607
  bindKeys: n,
@@ -1609,11 +1609,11 @@ return (${y});${g}`;
1609
1609
  compileFailed: !1
1610
1610
  };
1611
1611
  } catch (A) {
1612
- return o.length > 0 ? (m.warn(
1612
+ return o.length > 0 ? (g.warn(
1613
1613
  "[Haori]",
1614
1614
  "Failed to shadow undeclared identifier(s): " + o.join(", ") + ". Falling back to evaluation without shadowing.",
1615
1615
  e
1616
- ), this.prepareEvaluator(e, t, [])) : (m.error("[Haori]", "Failed to compile expression:", e, A), this.compileFailedExpressions.add(e), {
1616
+ ), this.prepareEvaluator(e, t, [])) : (g.error("[Haori]", "Failed to compile expression:", e, A), this.compileFailedExpressions.add(e), {
1617
1617
  bindKeys: n,
1618
1618
  evaluator: null,
1619
1619
  compileFailed: !0
@@ -2590,8 +2590,8 @@ const ge = "data-haori-if-disabled", Xe = "input, select, textarea, button, fiel
2590
2590
  let r = 0, i = 0;
2591
2591
  const n = (l, u, d) => {
2592
2592
  r += d.totalDurationMs, i += d.calls;
2593
- const g = t.get(l);
2594
- if (g === void 0) {
2593
+ const m = t.get(l);
2594
+ if (m === void 0) {
2595
2595
  t.set(l, {
2596
2596
  where: u,
2597
2597
  template: d.template,
@@ -2604,10 +2604,10 @@ const ge = "data-haori-if-disabled", Xe = "input, select, textarea, button, fiel
2604
2604
  });
2605
2605
  return;
2606
2606
  }
2607
- g.elements += 1, g.calls += d.calls, g.totalDurationMs += d.totalDurationMs, g.maxDurationMs = Math.max(
2608
- g.maxDurationMs,
2607
+ m.elements += 1, m.calls += d.calls, m.totalDurationMs += d.totalDurationMs, m.maxDurationMs = Math.max(
2608
+ m.maxDurationMs,
2609
2609
  d.maxDurationMs
2610
- ), d.totalDurationMs > g.representativeDurationMs && (g.where = u, g.representativeDurationMs = d.totalDurationMs);
2610
+ ), d.totalDurationMs > m.representativeDurationMs && (m.where = u, m.representativeDurationMs = d.totalDurationMs);
2611
2611
  };
2612
2612
  P.snapshot().forEach((l) => {
2613
2613
  l.attributes.forEach((u) => {
@@ -2655,7 +2655,7 @@ ${u.template}`,
2655
2655
  const n = String(i + 1).padStart(2), s = r.totalDurationMs.toFixed(1).padStart(9), a = `${r.sharePercent.toFixed(1)}%`.padStart(6), o = String(r.calls).padStart(6), l = String(r.elements).padStart(4), u = r.maxDurationMs.toFixed(1).padStart(8);
2656
2656
  return `${n}. ${s}ms ${a} calls=${o} elements=${l} max=${u}ms ${r.where} ${r.template}`;
2657
2657
  });
2658
- m.info(
2658
+ g.info(
2659
2659
  "[Haori][evaluation-profile]",
2660
2660
  `total=${e.totalDurationMs.toFixed(1)}ms calls=${e.totalCalls} declarations=${e.entryCount}
2661
2661
  ` + t.join(`
@@ -2877,7 +2877,7 @@ const de = class de {
2877
2877
  t = new je(e);
2878
2878
  break;
2879
2879
  default:
2880
- return m.warn("[Haori]", "Unsupported node type:", e.nodeType), null;
2880
+ return g.warn("[Haori]", "Unsupported node type:", e.nodeType), null;
2881
2881
  }
2882
2882
  return t;
2883
2883
  }
@@ -3118,7 +3118,7 @@ const w = class w extends T {
3118
3118
  removeChild(e) {
3119
3119
  const t = this.children.indexOf(e);
3120
3120
  if (t < 0) {
3121
- m.warn("[Haori]", "Child fragment not found.", e);
3121
+ g.warn("[Haori]", "Child fragment not found.", e);
3122
3122
  return;
3123
3123
  }
3124
3124
  this.children.splice(t, 1), e.setParent(null);
@@ -3192,7 +3192,7 @@ const w = class w extends T {
3192
3192
  * 付け直しで描画済みの DOM から作り直すことになり、描いた結果を宣言として読み込み
3193
3193
  * ます(仕様「監視対象」の「走査した要素を外部のスクリプトが DOM の中で移したり、
3194
3194
  * 外して後で戻したりしても、宣言は保ちます」)。付け直しでは `Core.addNode()` が
3195
- * この断片をそのまま挿入して走査します。
3195
+ * この断片をそのまま木へつなぎ直して走査します。
3196
3196
  *
3197
3197
  * DOM は既に動いているため、DOM からの除去は行いません(同じ親の中で順を変えた
3198
3198
  * 場合、ノードはまだ親の下にあります)。外部ライブラリ連携は、DOM から外れる要素と
@@ -3212,7 +3212,7 @@ const w = class w extends T {
3212
3212
  * 外部ライブラリが配下に生成した DOM ごと取り込んでフォーム値の収集に載せます
3213
3213
  * (仕様「`data-external`」の「付け直した場合も、配下は走査した時点の構成のまま
3214
3214
  * 扱う」、課題 #42)。子の断片・属性・キャッシュ登録は保ち、付け直しでは
3215
- * `Core.addNode()` がこの断片をそのまま挿入して走査します。バインドデータの
3215
+ * `Core.addNode()` がこの断片をそのまま木へつなぎ直して走査します。バインドデータの
3216
3216
  * キャッシュは、付け直しで親を設定するとき(`setParent()`)に部分木ごと捨てられる
3217
3217
  * ため、ここでは捨てません(捨てる行を外しても結果が変わらないことを確認済み)。
3218
3218
  *
@@ -3657,7 +3657,7 @@ const w = class w extends T {
3657
3657
  if (i instanceof HTMLInputElement && i.type === "file")
3658
3658
  return e === null || e === "" ? (this.value = null, i.value === "" ? Promise.resolve() : z.enqueue(() => {
3659
3659
  i.value = "";
3660
- })) : (m.warn(
3660
+ })) : (g.warn(
3661
3661
  "[Haori]",
3662
3662
  "A value cannot be assigned to input[type=file]; only clearing is supported.",
3663
3663
  i
@@ -3678,7 +3678,7 @@ const w = class w extends T {
3678
3678
  Array.isArray(e) ? e.join(",") : e,
3679
3679
  t,
3680
3680
  r
3681
- ) : (m.warn(
3681
+ ) : (g.warn(
3682
3682
  "[Haori]",
3683
3683
  "setValue is not supported for this element type.",
3684
3684
  i
@@ -4087,7 +4087,7 @@ const w = class w extends T {
4087
4087
  if (!V.isEnabled())
4088
4088
  return;
4089
4089
  const n = `${e} ${r}`;
4090
- w.loggedUnresolvedAttributes.has(n) || (w.loggedUnresolvedAttributes.add(n), m.warn(
4090
+ w.loggedUnresolvedAttributes.has(n) || (w.loggedUnresolvedAttributes.add(n), g.warn(
4091
4091
  "[Haori]",
4092
4092
  `Attribute "${t}" was not applied because the expression has an unresolved reference; the attribute is removed and the synchronized value is emptied: ${e}="${r}"`,
4093
4093
  i
@@ -4110,7 +4110,7 @@ const w = class w extends T {
4110
4110
  */
4111
4111
  static warnTypeMismatchedComparison(e, t, r, i) {
4112
4112
  const n = `${e} ${t}`;
4113
- w.loggedTypeMismatchedComparisons.has(n) || (w.loggedTypeMismatchedComparisons.add(n), m.warn(
4113
+ w.loggedTypeMismatchedComparisons.has(n) || (w.loggedTypeMismatchedComparisons.add(n), g.warn(
4114
4114
  "[Haori]",
4115
4115
  `The strict comparison compares different types (${r.left} vs ${r.right}), so it is always false even though the values match. Align the types (for example with ${c.prefix}value-type) or compare converted values: ${e}="${t}"`,
4116
4116
  i
@@ -4290,7 +4290,7 @@ const w = class w extends T {
4290
4290
  if (!V.isEnabled())
4291
4291
  return;
4292
4292
  const i = e instanceof HTMLInputElement ? `[type=${e.type}]` : "", n = `${e.tagName}${i} ${t} ${r}`;
4293
- w.loggedValueTypeDeclarations.has(n) || (w.loggedValueTypeDeclarations.add(n), m.warn(
4293
+ w.loggedValueTypeDeclarations.has(n) || (w.loggedValueTypeDeclarations.add(n), g.warn(
4294
4294
  "Haori",
4295
4295
  `${c.prefix}value-type="${t}" を無視しました(${r}):`,
4296
4296
  e
@@ -4560,7 +4560,7 @@ const w = class w extends T {
4560
4560
  element: l,
4561
4561
  rawName: e,
4562
4562
  template: r
4563
- }), d = o.isEvaluate || o.isRawEvaluate, g = e === t && w.BOOLEAN_ATTRIBUTES.has(t.toLowerCase()), y = o.isSingleExpression(), E = fe.joinEvaluateResults(u.results), A = u.results.length === 1 ? u.results[0] : E, N = t === "value" && w.resolveDeclaredValueType(l) === "boolean", M = A === !1 && !N, q = !o.isForceEvaluation() && (t !== e ? u.hasUnresolvedReference || A === null || A === void 0 || M : g ? u.hasUnresolvedReference || A === null || A === void 0 || A === !1 : y ? u.hasUnresolvedReference || A === null || A === void 0 || M : d && E === "");
4563
+ }), d = o.isEvaluate || o.isRawEvaluate, m = e === t && w.BOOLEAN_ATTRIBUTES.has(t.toLowerCase()), y = o.isSingleExpression(), E = fe.joinEvaluateResults(u.results), A = u.results.length === 1 ? u.results[0] : E, k = t === "value" && w.resolveDeclaredValueType(l) === "boolean", M = A === !1 && !k, q = !o.isForceEvaluation() && (t !== e ? u.hasUnresolvedReference || A === null || A === void 0 || M : m ? u.hasUnresolvedReference || A === null || A === void 0 || A === !1 : y ? u.hasUnresolvedReference || A === null || A === void 0 || M : d && E === "");
4564
4564
  if (q && u.hasUnresolvedReference && w.warnUnresolvedAttribute(
4565
4565
  e,
4566
4566
  t,
@@ -4578,7 +4578,7 @@ const w = class w extends T {
4578
4578
  l
4579
4579
  );
4580
4580
  }
4581
- const I = o.isForceEvaluation() ? r : y ? A : E, K = i && o.isEvaluate && t === "value" && w.isValuePropertyTarget(l), J = l.getRootNode(), re = this.userEditSequence, H = K && w.isUserEditableValue(l) && (l === J.activeElement || this.hasPendingUserEdit()), _ = q || I === null || I === !1 && !N ? null : String(I), G = e !== t && l.getAttribute(e) !== r, D = _ === null ? l.hasAttribute(t) : l.getAttribute(t) !== _, $ = _ === null ? "" : _, Z = K && !H && l.value !== $, Q = t === "checked" && l instanceof HTMLInputElement && (l.type === "checkbox" || l.type === "radio"), se = t === "selected" && l instanceof HTMLOptionElement, ce = J.activeElement, W = ce !== null && (Q && l === ce || se && l.closest("select") === ce) || (Q || se) && this.hasPendingCheckableUserEdit(se), Y = this.getCheckableUserEditSequence(se), X = _ !== null, Ee = Q && o.isEvaluate && !W && l.checked !== X, Ie = se && o.isEvaluate && !W && l.selected !== X;
4581
+ const I = o.isForceEvaluation() ? r : y ? A : E, K = i && o.isEvaluate && t === "value" && w.isValuePropertyTarget(l), J = l.getRootNode(), re = this.userEditSequence, H = K && w.isUserEditableValue(l) && (l === J.activeElement || this.hasPendingUserEdit()), _ = q || I === null || I === !1 && !k ? null : String(I), G = e !== t && l.getAttribute(e) !== r, D = _ === null ? l.hasAttribute(t) : l.getAttribute(t) !== _, $ = _ === null ? "" : _, Z = K && !H && l.value !== $, Q = t === "checked" && l instanceof HTMLInputElement && (l.type === "checkbox" || l.type === "radio"), se = t === "selected" && l instanceof HTMLOptionElement, ce = J.activeElement, W = ce !== null && (Q && l === ce || se && l.closest("select") === ce) || (Q || se) && this.hasPendingCheckableUserEdit(se), Y = this.getCheckableUserEditSequence(se), X = _ !== null, Ee = Q && o.isEvaluate && !W && l.checked !== X, Ie = se && o.isEvaluate && !W && l.selected !== X;
4582
4582
  if (!G && !D && !Z && !Ee && !Ie)
4583
4583
  return K && !H && (this.value = this.normalizeValueForElement(
4584
4584
  l,
@@ -4746,43 +4746,72 @@ const w = class w extends T {
4746
4746
  if (this.isSkipMutationNode(e.getTarget()))
4747
4747
  return Promise.resolve();
4748
4748
  if (e === this)
4749
- return m.error("[Haori]", "Cannot insert element as child of itself"), Promise.reject(new Error("Self-insertion not allowed"));
4749
+ return g.error("[Haori]", "Cannot insert element as child of itself"), Promise.reject(new Error("Self-insertion not allowed"));
4750
4750
  const i = /* @__PURE__ */ new Set();
4751
4751
  let n = this.parent;
4752
4752
  for (; n; )
4753
4753
  i.add(n), n = n.getParent();
4754
4754
  if (i.has(e))
4755
- return m.error("[Haori]", "Cannot create circular reference"), Promise.reject(new Error("Circular reference detected"));
4756
- const s = e.getParent() === this;
4757
- let a = -1, o = -1;
4758
- s && (a = this.children.indexOf(e), t !== null && (o = this.children.indexOf(t)));
4759
- const l = e.getParent();
4760
- l !== null && l.removeChild(e);
4761
- let u = r === void 0 ? t?.getTarget() || null : r;
4755
+ return g.error("[Haori]", "Cannot create circular reference"), Promise.reject(new Error("Circular reference detected"));
4756
+ const s = this.linkChild(
4757
+ e,
4758
+ t,
4759
+ r
4760
+ ), a = this.skipMutationNodes;
4761
+ return this.skipMutationNodes = !0, this.holdSkipMutationNode(e.getTarget()), z.enqueue(() => {
4762
+ this.target.insertBefore(e.getTarget(), s);
4763
+ }).finally(() => {
4764
+ this.skipMutationNodes = a, this.releaseSkipMutationNode(e.getTarget());
4765
+ });
4766
+ }
4767
+ /**
4768
+ * 監視が観測した追加を、DOM を動かさずに内部の木へ反映します。
4769
+ *
4770
+ * ノードは既に DOM 上の追加された位置にあります。DOM から外して付け直すと、開いた
4771
+ * popover・`showModal()` で開いた `<dialog>` のモーダル状態・フォーカスが失われます
4772
+ * (仕様「監視対象」の「外部のスクリプトが DOM に追加したノードは、追加された位置の
4773
+ * まま取り込み、DOM から外して付け直すことはしません」)。
4774
+ *
4775
+ * @param newChild 追加された子ノード
4776
+ * @param referenceChild 追加された位置の次の子ノード(末尾の場合は null)
4777
+ * @returns 戻り値はありません。
4778
+ */
4779
+ attachObserved(e, t) {
4780
+ this.linkChild(e, t);
4781
+ }
4782
+ /**
4783
+ * 子ノードを内部の木の参照ノードの前へつなぎます。DOM は操作しません。
4784
+ *
4785
+ * @param newChild 新しい子ノード
4786
+ * @param referenceChild 参照ノード(末尾の場合は null)
4787
+ * @param referenceNodeOverride DOM で挿入する位置の次のノード(省略時は参照ノード)
4788
+ * @returns DOM で挿入する位置の次のノード
4789
+ */
4790
+ linkChild(e, t, r) {
4791
+ const i = e.getParent() === this;
4792
+ let n = -1, s = -1;
4793
+ i && (n = this.children.indexOf(e), t !== null && (s = this.children.indexOf(t)));
4794
+ const a = e.getParent();
4795
+ a !== null && a.removeChild(e);
4796
+ let o = r === void 0 ? t?.getTarget() || null : r;
4762
4797
  if (t === null)
4763
4798
  this.children.push(e);
4764
4799
  else {
4765
- let g;
4766
- if (s ? a !== -1 && a < o ? g = o - 1 : g = o : g = this.children.indexOf(t), g === -1) {
4767
- const y = this.resolveInsertionPointFromDom(
4800
+ let l;
4801
+ if (i ? n !== -1 && n < s ? l = s - 1 : l = s : l = this.children.indexOf(t), l === -1) {
4802
+ const u = this.resolveInsertionPointFromDom(
4768
4803
  t,
4769
4804
  !1
4770
4805
  );
4771
- y === null ? (m.warn(
4806
+ u === null ? (g.warn(
4772
4807
  "[Haori]",
4773
4808
  "Reference child not found in children.",
4774
4809
  t
4775
- ), this.children.push(e)) : (this.children.splice(y.index, 0, e), u = y.referenceNode);
4810
+ ), this.children.push(e)) : (this.children.splice(u.index, 0, e), o = u.referenceNode);
4776
4811
  } else
4777
- this.children.splice(g, 0, e);
4812
+ this.children.splice(l, 0, e);
4778
4813
  }
4779
- e.setParent(this), e.setMounted(this.mounted);
4780
- const d = this.skipMutationNodes;
4781
- return this.skipMutationNodes = !0, this.holdSkipMutationNode(e.getTarget()), z.enqueue(() => {
4782
- this.target.insertBefore(e.getTarget(), u);
4783
- }).finally(() => {
4784
- this.skipMutationNodes = d, this.releaseSkipMutationNode(e.getTarget());
4785
- });
4814
+ return e.setParent(this), e.setMounted(this.mounted), o;
4786
4815
  }
4787
4816
  /**
4788
4817
  * 指定した参照ノードの後に子ノードを挿入します。
@@ -4800,7 +4829,7 @@ const w = class w extends T {
4800
4829
  t,
4801
4830
  !0
4802
4831
  );
4803
- return i === null ? (m.warn(
4832
+ return i === null ? (g.warn(
4804
4833
  "[Haori]",
4805
4834
  "Reference child not found in children.",
4806
4835
  t
@@ -5256,7 +5285,7 @@ const Pe = class Pe {
5256
5285
  */
5257
5286
  checkRawExpressions() {
5258
5287
  for (let e = 0; e < this.contents.length; e++)
5259
- this.contents[e].type === 2 && this.contents.length > 1 && (m.error(
5288
+ this.contents[e].type === 2 && this.contents.length > 1 && (g.error(
5260
5289
  "[Haori]",
5261
5290
  "Raw expressions are not allowed in multi-content expressions."
5262
5291
  ), this.contents[e].type = 1);
@@ -5312,7 +5341,7 @@ const Pe = class Pe {
5312
5341
  } else
5313
5342
  n.push(l.text);
5314
5343
  } catch (u) {
5315
- m.error(
5344
+ g.error(
5316
5345
  "[Haori]",
5317
5346
  `Error evaluating ${i} expression: ${l.text}`,
5318
5347
  u
@@ -5407,7 +5436,7 @@ const ie = class ie extends fe {
5407
5436
  (i) => this.forceEvaluation && i.type === 0 || i.type === 1 || i.type === 2,
5408
5437
  "attribute"
5409
5438
  );
5410
- return this.forceEvaluation && r.results.length > 1 ? (m.error(
5439
+ return this.forceEvaluation && r.results.length > 1 ? (g.error(
5411
5440
  "[Haori]",
5412
5441
  "each or if expressions must have a single content.",
5413
5442
  r.results
@@ -5495,7 +5524,7 @@ const Se = class Se {
5495
5524
  */
5496
5525
  static openDialog(e) {
5497
5526
  return z.enqueue(() => {
5498
- e instanceof HTMLDialogElement ? (Se.clearMessagesSync(e), e.showModal()) : m.error("[Haori]", "Element is not a dialog: ", e);
5527
+ e instanceof HTMLDialogElement ? (Se.clearMessagesSync(e), e.showModal()) : g.error("[Haori]", "Element is not a dialog: ", e);
5499
5528
  }, !0);
5500
5529
  }
5501
5530
  /**
@@ -5505,7 +5534,7 @@ const Se = class Se {
5505
5534
  */
5506
5535
  static closeDialog(e) {
5507
5536
  return z.enqueue(() => {
5508
- e instanceof HTMLDialogElement ? e.close() : m.error("[Haori]", "Element is not a dialog: ", e);
5537
+ e instanceof HTMLDialogElement ? e.close() : g.error("[Haori]", "Element is not a dialog: ", e);
5509
5538
  }, !0);
5510
5539
  }
5511
5540
  /**
@@ -5926,7 +5955,7 @@ const h = class h {
5926
5955
  return;
5927
5956
  const t = e.getAttribute(`${c.prefix}form-name`);
5928
5957
  if (!t) {
5929
- m.warn(
5958
+ g.warn(
5930
5959
  "Haori",
5931
5960
  `${c.prefix}form-name evaluated to an empty key; the field falls back to the name attribute or is not collected.`,
5932
5961
  e.getTarget()
@@ -6337,11 +6366,11 @@ const h = class h {
6337
6366
  const u = h.resolveCollectedValue(e), d = h.isFileInput(e) && Array.isArray(u) ? u : [u];
6338
6367
  Array.isArray(t[String(n)]) ? t[String(n)].push(...d) : t[String(n)] = d;
6339
6368
  } else if (h.isGroupedCheckable(e)) {
6340
- const u = e.getTarget(), d = u instanceof HTMLInputElement ? u.checked : !0, g = u instanceof HTMLInputElement ? u.value : e.getValue(), y = d ? g : null, E = String(n);
6369
+ const u = e.getTarget(), d = u instanceof HTMLInputElement ? u.checked : !0, m = u instanceof HTMLInputElement ? u.value : e.getValue(), y = d ? m : null, E = String(n);
6341
6370
  y === null ? E in t || (t[E] = null) : t[E] === null || t[E] === void 0 ? t[E] = y : Array.isArray(t[E]) ? t[E].push(y) : t[E] = [t[E], y];
6342
6371
  } else
6343
6372
  t[String(n)] = h.resolveCollectedValue(e);
6344
- s && m.warn(
6373
+ s && g.warn(
6345
6374
  "Haori",
6346
6375
  `Element cannot have both ${c.prefix}form-object and name attributes.`
6347
6376
  );
@@ -6349,20 +6378,20 @@ const h = class h {
6349
6378
  h.getPartValues(u, t, r, i);
6350
6379
  } else if (s) {
6351
6380
  const u = {}, d = i === null ? null : /* @__PURE__ */ new Set();
6352
- for (const g of e.getChildElementFragments())
6381
+ for (const m of e.getChildElementFragments())
6353
6382
  h.getPartValues(
6354
- g,
6383
+ m,
6355
6384
  u,
6356
6385
  r,
6357
6386
  d
6358
6387
  );
6359
- d !== null && h.registerCollectedExcludedKeys(u, d), Object.keys(u).length > 0 ? t[String(s)] = u : i !== null && (d?.size ?? 0) > 0 && i.add(String(s)), a && m.warn(
6388
+ d !== null && h.registerCollectedExcludedKeys(u, d), Object.keys(u).length > 0 ? t[String(s)] = u : i !== null && (d?.size ?? 0) > 0 && i.add(String(s)), a && g.warn(
6360
6389
  "Haori",
6361
6390
  `Element cannot have both ${c.prefix}form-list and ${c.prefix}form-object attributes.`
6362
6391
  );
6363
6392
  } else if (a) {
6364
6393
  const u = [], d = [];
6365
- let g = !1;
6394
+ let m = !1;
6366
6395
  for (const y of e.getChildElementFragments()) {
6367
6396
  const E = {}, A = i === null ? null : /* @__PURE__ */ new Set();
6368
6397
  h.getPartValues(
@@ -6370,7 +6399,7 @@ const h = class h {
6370
6399
  E,
6371
6400
  r,
6372
6401
  A
6373
- ), A !== null && h.registerCollectedExcludedKeys(E, A), Object.keys(E).length > 0 ? (g = !0, u.push(E), d.push(y.getListKey())) : r !== null && (u.push({}), d.push(y.getListKey()));
6402
+ ), A !== null && h.registerCollectedExcludedKeys(E, A), Object.keys(E).length > 0 ? (m = !0, u.push(E), d.push(y.getListKey())) : r !== null && (u.push({}), d.push(y.getListKey()));
6374
6403
  }
6375
6404
  if (r === null) {
6376
6405
  const y = e.getAttribute(`${c.prefix}each-key`);
@@ -6380,7 +6409,7 @@ const h = class h {
6380
6409
  d,
6381
6410
  h.isCollectedListFromEachSource(e)
6382
6411
  ), h.warnDerivedRowsWithoutKey(e), t[String(a)] = u;
6383
- } else g && (t[String(a)] = u);
6412
+ } else m && (t[String(a)] = u);
6384
6413
  } else
6385
6414
  for (const u of e.getChildElementFragments())
6386
6415
  h.getPartValues(u, t, r, i);
@@ -6539,7 +6568,7 @@ const h = class h {
6539
6568
  if (!V.isEnabled() || r == null)
6540
6569
  return;
6541
6570
  const i = e.getTarget(), n = h.warnedArgOwnerNotRecord.get(i);
6542
- n?.has(t) || (n ? n.add(t) : h.warnedArgOwnerNotRecord.set(i, /* @__PURE__ */ new Set([t])), m.warn(
6571
+ n?.has(t) || (n ? n.add(t) : h.warnedArgOwnerNotRecord.set(i, /* @__PURE__ */ new Set([t])), g.warn(
6543
6572
  "[Haori]",
6544
6573
  `${c.prefix}form-arg="${t}" のキーを祖先が${Array.isArray(r) ? "配列" : `${typeof r} 型の値`}で持っています。${c.prefix}form-arg はそのキーの配下に入力欄が対応することを宣言するため、値はレコード(オブジェクト)である必要があります。このままでは収集値がそのキーへ直接入り、値の型が変わります。`
6545
6574
  ));
@@ -6656,9 +6685,9 @@ const h = class h {
6656
6685
  return r.querySelectorAll(o).forEach((l) => {
6657
6686
  if (!(l instanceof HTMLElement))
6658
6687
  return;
6659
- let u = null, d = !1, g = l;
6660
- for (; g && g !== r; )
6661
- g.hasAttribute(`${c.prefix}form-detach`) && (d = !0), (g.hasAttribute(n) || g.hasAttribute(s)) && (u = g), g = g.parentElement;
6688
+ let u = null, d = !1, m = l;
6689
+ for (; m && m !== r; )
6690
+ m.hasAttribute(`${c.prefix}form-detach`) && (d = !0), (m.hasAttribute(n) || m.hasAttribute(s)) && (u = m), m = m.parentElement;
6662
6691
  if (d)
6663
6692
  return;
6664
6693
  const y = u ?? l, E = y.getAttribute(n) || y.getAttribute(s) || y.getAttribute(`${c.prefix}form-name`) || y.getAttribute("name");
@@ -6691,7 +6720,7 @@ const h = class h {
6691
6720
  static applyOneCustomValidity(e, t) {
6692
6721
  const r = e.getTarget();
6693
6722
  if (!(r instanceof HTMLInputElement) && !(r instanceof HTMLSelectElement) && !(r instanceof HTMLTextAreaElement)) {
6694
- m.warn(
6723
+ g.warn(
6695
6724
  "Haori",
6696
6725
  `${t} は入力要素にのみ指定できます: ${r.tagName}`
6697
6726
  );
@@ -6707,7 +6736,7 @@ const h = class h {
6707
6736
  n
6708
6737
  );
6709
6738
  if (s.unresolvedReference) {
6710
- m.warn(
6739
+ g.warn(
6711
6740
  "Haori",
6712
6741
  `${t} の参照が解決できないため無効として扱います: ${i}`
6713
6742
  ), r.setCustomValidity(h.resolveValidityMessage(e));
@@ -6753,7 +6782,7 @@ const h = class h {
6753
6782
  if (!V.isEnabled() || !e)
6754
6783
  return;
6755
6784
  const r = `${c.prefix}validity`;
6756
- (e.hasAttribute(r) || e.getTarget().querySelector(`[${r}]`) !== null) && m.warn(
6785
+ (e.hasAttribute(r) || e.getTarget().querySelector(`[${r}]`) !== null) && g.warn(
6757
6786
  "Haori",
6758
6787
  `${r} は指定されていますが検証は行われません(${t})。${c.prefix}{event}-validate を指定するか、${c.prefix}{event}-if を使用してください。`
6759
6788
  );
@@ -6813,7 +6842,7 @@ const h = class h {
6813
6842
  * @param reason 退いた理由
6814
6843
  */
6815
6844
  static warnPositionalRowFallback(e) {
6816
- !V.isEnabled() || h.warnedPositionalRowFallbacks.has(e) || (h.warnedPositionalRowFallbacks.add(e), m.warn(
6845
+ !V.isEnabled() || h.warnedPositionalRowFallbacks.has(e) || (h.warnedPositionalRowFallbacks.add(e), g.warn(
6817
6846
  "[Haori]",
6818
6847
  `${c.prefix}form-list の行を出現順で対応付けます(${e})。配列と画面の行数・並びが一致していない場合、行の値を取り違えます。`
6819
6848
  ));
@@ -6836,7 +6865,7 @@ const h = class h {
6836
6865
  if (!V.isEnabled() || e.getRawAttribute(`${c.prefix}each-key`) !== null)
6837
6866
  return;
6838
6867
  const t = e.getRawAttribute(`${c.prefix}each`);
6839
- t === null || h.resolveLeadingPath(t) !== null || h.warnedDerivedRowsWithoutKey.has(t) || (h.warnedDerivedRowsWithoutKey.add(t), m.warn(
6868
+ t === null || h.resolveLeadingPath(t) !== null || h.warnedDerivedRowsWithoutKey.has(t) || (h.warnedDerivedRowsWithoutKey.add(t), g.warn(
6840
6869
  "[Haori]",
6841
6870
  `${c.prefix}each="${t}" の一覧を ${c.prefix}form-list で収集していますが、${c.prefix}each-key がありません。行と配列要素を出現順で対応付けるため、画面に出ていない要素があると行の値を取り違えます。${c.prefix}each-key を宣言してください。`
6842
6871
  ));
@@ -7474,16 +7503,16 @@ const h = class h {
7474
7503
  const o = [];
7475
7504
  if (e.hasAttribute(`${c.prefix}form-detach`) && !r)
7476
7505
  return Promise.resolve();
7477
- const l = h.resolveFieldName(e), u = e.getAttribute(`${c.prefix}form-object`), d = e.getAttribute(`${c.prefix}form-list`), g = e.hasAttribute(`${c.prefix}form-list`);
7506
+ const l = h.resolveFieldName(e), u = e.getAttribute(`${c.prefix}form-object`), d = e.getAttribute(`${c.prefix}form-list`), m = e.hasAttribute(`${c.prefix}form-list`);
7478
7507
  if (l) {
7479
7508
  const y = t[String(l)], E = n && h.hasResolvedDeclarativeState(e), A = n && typeof y > "u" && !h.isDeclarativeStateBound(e);
7480
- let N = y;
7481
- if (E ? N = void 0 : A && (N = null), h.isFileInput(e))
7482
- return (N === null || N === "") && o.push(
7509
+ let k = y;
7510
+ if (E ? k = void 0 : A && (k = null), h.isFileInput(e))
7511
+ return (k === null || k === "") && o.push(
7483
7512
  h.applyFragmentValue(e, null, i, a)
7484
7513
  ), Promise.all(o).then(() => {
7485
7514
  });
7486
- if (g && Array.isArray(N) && // チェックボックスグループと複数選択 select は配列そのものを状態として
7515
+ if (m && Array.isArray(k) && // チェックボックスグループと複数選択 select は配列そのものを状態として
7487
7516
  // 解釈する(後続の分岐)。位置で配ると選択状態を決められないため、
7488
7517
  // `data-form-list` を併記していても従来どおりそちらへ渡す。
7489
7518
  !h.isGroupedCheckable(e) && !h.isMultipleSelect(e)) {
@@ -7491,20 +7520,20 @@ const h = class h {
7491
7520
  s.set(M, q + 1), o.push(
7492
7521
  h.applyFragmentValue(
7493
7522
  e,
7494
- N[q] ?? null,
7523
+ k[q] ?? null,
7495
7524
  i,
7496
7525
  a
7497
7526
  )
7498
7527
  );
7499
- } else typeof N > "u" || (Array.isArray(N) && h.isGroupedCheckable(e) || Array.isArray(N) && h.isMultipleSelect(e) || typeof N == "string" || typeof N == "number" || typeof N == "boolean" || N === null ? o.push(
7528
+ } else typeof k > "u" || (Array.isArray(k) && h.isGroupedCheckable(e) || Array.isArray(k) && h.isMultipleSelect(e) || typeof k == "string" || typeof k == "number" || typeof k == "boolean" || k === null ? o.push(
7500
7529
  h.applyFragmentValue(
7501
7530
  e,
7502
- N,
7531
+ k,
7503
7532
  i,
7504
7533
  a
7505
7534
  )
7506
7535
  ) : o.push(
7507
- h.applyFragmentValue(e, String(N), i, a)
7536
+ h.applyFragmentValue(e, String(k), i, a)
7508
7537
  ));
7509
7538
  } else if (u) {
7510
7539
  const y = t[String(u)];
@@ -7526,13 +7555,13 @@ const h = class h {
7526
7555
  } else if (d) {
7527
7556
  const y = t[String(d)];
7528
7557
  if (Array.isArray(y)) {
7529
- const E = e.getChildElementFragments(), A = e.getAttribute(`${c.prefix}each-key`), N = h.isCollectedListFromEachSource(e) ? h.pairRowsWithItems(
7558
+ const E = e.getChildElementFragments(), A = e.getAttribute(`${c.prefix}each-key`), k = h.isCollectedListFromEachSource(e) ? h.pairRowsWithItems(
7530
7559
  E,
7531
7560
  y,
7532
7561
  A == null ? null : String(A)
7533
7562
  ) : null;
7534
7563
  for (let M = 0; M < E.length; M++) {
7535
- const q = E[M], I = N ? N[M] : y.length > M ? y[M] : null;
7564
+ const q = E[M], I = k ? k[M] : y.length > M ? y[M] : null;
7536
7565
  o.push(
7537
7566
  // 行ごとに values が切り替わるので出現位置も行単位で数える。
7538
7567
  h.setPartValues(
@@ -7876,9 +7905,9 @@ const h = class h {
7876
7905
  if (n === o) {
7877
7906
  const l = i.substring(s + 1, a), u = Number(l);
7878
7907
  if (isNaN(u))
7879
- m.error("Haori", `Invalid index: ${i}`);
7908
+ g.error("Haori", `Invalid index: ${i}`);
7880
7909
  else {
7881
- const d = e.getChildElementFragments().filter((g) => g.hasAttribute(`${c.prefix}row`));
7910
+ const d = e.getChildElementFragments().filter((m) => m.hasAttribute(`${c.prefix}row`));
7882
7911
  u < d.length && r.push(
7883
7912
  ...h.findFragmentByKeyParts(d[u], t.slice(1))
7884
7913
  );
@@ -8242,7 +8271,7 @@ class j {
8242
8271
  try {
8243
8272
  return Array.from(r.querySelectorAll(e));
8244
8273
  } catch (i) {
8245
- return m.error(
8274
+ return g.error(
8246
8275
  "Haori",
8247
8276
  `Invalid selector: ${e} (${t})`,
8248
8277
  i
@@ -8300,7 +8329,7 @@ class j {
8300
8329
  try {
8301
8330
  return r.querySelector(e);
8302
8331
  } catch (i) {
8303
- return m.error(
8332
+ return g.error(
8304
8333
  "Haori",
8305
8334
  `Invalid selector: ${e} (${t})`,
8306
8335
  i
@@ -8308,7 +8337,7 @@ class j {
8308
8337
  }
8309
8338
  }
8310
8339
  }
8311
- const k = class k {
8340
+ const N = class N {
8312
8341
  /**
8313
8342
  * ストレージ種別に対応する `Storage` を解決します。
8314
8343
  *
@@ -8326,7 +8355,7 @@ const k = class k {
8326
8355
  throw new Error("storage is not available");
8327
8356
  return t;
8328
8357
  } catch (t) {
8329
- return k.WARNED_KINDS.has(e) || (k.WARNED_KINDS.add(e), m.warn(
8358
+ return N.WARNED_KINDS.has(e) || (N.WARNED_KINDS.add(e), g.warn(
8330
8359
  "Haori",
8331
8360
  `${e}Storage が利用できないため ${c.prefix}store を無効にします:`,
8332
8361
  t
@@ -8363,8 +8392,8 @@ const k = class k {
8363
8392
  * @param message 警告メッセージ
8364
8393
  */
8365
8394
  static warnOnce(e, t, r) {
8366
- let i = k.WARNED_ELEMENTS.get(e);
8367
- i || (i = /* @__PURE__ */ new Set(), k.WARNED_ELEMENTS.set(e, i)), !i.has(t) && (i.add(t), m.warn("Haori", r));
8395
+ let i = N.WARNED_ELEMENTS.get(e);
8396
+ i || (i = /* @__PURE__ */ new Set(), N.WARNED_ELEMENTS.set(e, i)), !i.has(t) && (i.add(t), g.warn("Haori", r));
8368
8397
  }
8369
8398
  /**
8370
8399
  * `data-each` の行の内側かどうかを判定します。
@@ -8401,13 +8430,13 @@ const k = class k {
8401
8430
  return null;
8402
8431
  const i = r.trim();
8403
8432
  if (i === "")
8404
- return k.warnOnce(
8433
+ return N.warnOnce(
8405
8434
  t,
8406
8435
  "key",
8407
8436
  `${c.prefix}store にストレージキーが指定されていません。`
8408
8437
  ), null;
8409
8438
  if (i.includes("{{"))
8410
- return k.warnOnce(
8439
+ return N.warnOnce(
8411
8440
  t,
8412
8441
  "expression",
8413
8442
  `${c.prefix}store に式は使用できません(静的な文字列を指定してください): ${i}`
@@ -8416,7 +8445,7 @@ const k = class k {
8416
8445
  let s = "session";
8417
8446
  if (n !== null) {
8418
8447
  const d = n.trim();
8419
- d === "local" || d === "session" ? s = d : k.warnOnce(
8448
+ d === "local" || d === "session" ? s = d : N.warnOnce(
8420
8449
  t,
8421
8450
  "type",
8422
8451
  `${c.prefix}store-type は session または local を指定してください(session として扱います): ${d}`
@@ -8425,14 +8454,14 @@ const k = class k {
8425
8454
  const a = e.getRawAttribute(`${c.prefix}store-arg`), o = a === null || a.trim() === "" ? null : a.trim(), l = e.getRawAttribute(`${c.prefix}store-params`);
8426
8455
  let u = null;
8427
8456
  if (l !== null) {
8428
- const d = l.split("&").map((y) => y.trim()).filter((y) => y !== ""), g = d.filter((y) => !k.isReservedKey(y));
8429
- g.length !== d.length && k.warnOnce(
8457
+ const d = l.split("&").map((y) => y.trim()).filter((y) => y !== ""), m = d.filter((y) => !N.isReservedKey(y));
8458
+ m.length !== d.length && N.warnOnce(
8430
8459
  t,
8431
8460
  "reserved",
8432
8461
  `${c.prefix}store-params の予約キー(先頭が _ のキー)は対象外です。`
8433
- ), u = g.length > 0 ? g : null;
8462
+ ), u = m.length > 0 ? m : null;
8434
8463
  }
8435
- return u === null && o === null ? (k.warnOnce(
8464
+ return u === null && o === null ? (N.warnOnce(
8436
8465
  t,
8437
8466
  "target",
8438
8467
  `${c.prefix}store には ${c.prefix}store-params または ${c.prefix}store-arg のいずれかが必要です。`
@@ -8449,14 +8478,14 @@ const k = class k {
8449
8478
  * @returns レコード。読み取れない場合は null
8450
8479
  */
8451
8480
  static readRecord(e) {
8452
- const t = k.resolveStorage(e.kind);
8481
+ const t = N.resolveStorage(e.kind);
8453
8482
  if (!t)
8454
8483
  return null;
8455
8484
  let r;
8456
8485
  try {
8457
8486
  r = t.getItem(e.key);
8458
8487
  } catch (n) {
8459
- return m.warn(
8488
+ return g.warn(
8460
8489
  "Haori",
8461
8490
  `ストレージの読み取りに失敗しました: ${e.key}`,
8462
8491
  n
@@ -8468,13 +8497,13 @@ const k = class k {
8468
8497
  try {
8469
8498
  i = JSON.parse(r);
8470
8499
  } catch (n) {
8471
- return m.warn(
8500
+ return g.warn(
8472
8501
  "Haori",
8473
8502
  `保存済みデータが JSON として解釈できません: ${e.key}`,
8474
8503
  n
8475
8504
  ), null;
8476
8505
  }
8477
- return k.isPlainRecord(i) ? i : (m.warn(
8506
+ return N.isPlainRecord(i) ? i : (g.warn(
8478
8507
  "Haori",
8479
8508
  `保存済みデータがオブジェクトではありません: ${e.key}`
8480
8509
  ), null);
@@ -8492,8 +8521,8 @@ const k = class k {
8492
8521
  const s = t[e.arg];
8493
8522
  if (s === void 0)
8494
8523
  return {};
8495
- if (!k.isPlainRecord(s))
8496
- return m.warn(
8524
+ if (!N.isPlainRecord(s))
8525
+ return g.warn(
8497
8526
  "Haori",
8498
8527
  `保存済みデータの ${e.arg} がオブジェクトではありません: ` + e.key
8499
8528
  ), {};
@@ -8501,7 +8530,7 @@ const k = class k {
8501
8530
  }
8502
8531
  const i = e.params ?? Object.keys(r), n = {};
8503
8532
  for (const s of i)
8504
- k.isReservedKey(s) || Object.prototype.hasOwnProperty.call(r, s) && (n[s] = r[s]);
8533
+ N.isReservedKey(s) || Object.prototype.hasOwnProperty.call(r, s) && (n[s] = r[s]);
8505
8534
  return n;
8506
8535
  }
8507
8536
  /**
@@ -8518,7 +8547,7 @@ const k = class k {
8518
8547
  static selectFromData(e, t) {
8519
8548
  const r = e.params ?? Object.keys(t), i = {};
8520
8549
  for (const n of r) {
8521
- if (k.isReservedKey(n) || !Object.prototype.hasOwnProperty.call(t, n))
8550
+ if (N.isReservedKey(n) || !Object.prototype.hasOwnProperty.call(t, n))
8522
8551
  continue;
8523
8552
  const s = t[n];
8524
8553
  s !== void 0 && (i[n] = s);
@@ -8577,12 +8606,12 @@ const k = class k {
8577
8606
  * @param selected 基準にする選択内容
8578
8607
  */
8579
8608
  static seedSignature(e, t) {
8580
- const r = k.stringify(t);
8609
+ const r = N.stringify(t);
8581
8610
  if (r === null) {
8582
- k.SIGNATURES.delete(e);
8611
+ N.SIGNATURES.delete(e);
8583
8612
  return;
8584
8613
  }
8585
- k.SIGNATURES.set(e, { json: r, refs: k.createRefs(t) });
8614
+ N.SIGNATURES.set(e, { json: r, refs: N.createRefs(t) });
8586
8615
  }
8587
8616
  /**
8588
8617
  * レコードへ選択内容を書き込みます。
@@ -8596,19 +8625,19 @@ const k = class k {
8596
8625
  * @returns 書き込めたら true
8597
8626
  */
8598
8627
  static writeRecord(e, t) {
8599
- const r = k.resolveStorage(e.kind);
8628
+ const r = N.resolveStorage(e.kind);
8600
8629
  if (!r)
8601
8630
  return !1;
8602
- const i = k.readRecord(e) ?? {};
8631
+ const i = N.readRecord(e) ?? {};
8603
8632
  if (e.arg !== null) {
8604
- const n = i[e.arg], s = k.isPlainRecord(n) ? { ...n } : {};
8633
+ const n = i[e.arg], s = N.isPlainRecord(n) ? { ...n } : {};
8605
8634
  i[e.arg] = { ...s, ...t };
8606
8635
  } else
8607
8636
  Object.assign(i, t);
8608
8637
  try {
8609
8638
  return r.setItem(e.key, JSON.stringify(i)), !0;
8610
8639
  } catch (n) {
8611
- return m.warn(
8640
+ return g.warn(
8612
8641
  "Haori",
8613
8642
  `ストレージへの保存に失敗しました: ${e.key}`,
8614
8643
  n
@@ -8626,19 +8655,19 @@ const k = class k {
8626
8655
  * @returns 復元完了の Promise
8627
8656
  */
8628
8657
  static restore(e) {
8629
- const t = k.readDeclaration(e);
8658
+ const t = N.readDeclaration(e);
8630
8659
  if (!t)
8631
8660
  return Promise.resolve();
8632
8661
  const r = e.getTarget();
8633
- if (k.isInsideEachRow(e))
8634
- return k.warnOnce(
8662
+ if (N.isInsideEachRow(e))
8663
+ return N.warnOnce(
8635
8664
  r,
8636
8665
  "each-row",
8637
8666
  `${c.prefix}each の行の内側では ${c.prefix}store を使用できません(行データは親要素側で配列キーを指定してください)。`
8638
8667
  ), Promise.resolve();
8639
- k.RESTORED_ELEMENTS.add(r);
8640
- const i = k.readRecord(t), n = i ? k.extractFromRecord(t, i) : {}, s = { ...e.getRawBindingData() ?? {}, ...n };
8641
- return k.seedSignature(r, k.selectFromData(t, s)), Object.keys(n).length === 0 ? Promise.resolve() : C.setBindingData(r, s, {
8668
+ N.RESTORED_ELEMENTS.add(r);
8669
+ const i = N.readRecord(t), n = i ? N.extractFromRecord(t, i) : {}, s = { ...e.getRawBindingData() ?? {}, ...n };
8670
+ return N.seedSignature(r, N.selectFromData(t, s)), Object.keys(n).length === 0 ? Promise.resolve() : C.setBindingData(r, s, {
8642
8671
  reentrant: !0,
8643
8672
  kind: "nonSupply",
8644
8673
  sequence: S.nextSequence()
@@ -8655,34 +8684,34 @@ const k = class k {
8655
8684
  * @param fragment 対象フラグメント
8656
8685
  */
8657
8686
  static mirror(e) {
8658
- const t = k.readDeclaration(e);
8659
- if (!t || k.isInsideEachRow(e))
8687
+ const t = N.readDeclaration(e);
8688
+ if (!t || N.isInsideEachRow(e))
8660
8689
  return;
8661
8690
  const r = e.getTarget();
8662
- if (!k.RESTORED_ELEMENTS.has(r))
8691
+ if (!N.RESTORED_ELEMENTS.has(r))
8663
8692
  return;
8664
8693
  const i = e.getRawBindingData();
8665
8694
  if (!i)
8666
8695
  return;
8667
- const n = k.selectFromData(t, i);
8696
+ const n = N.selectFromData(t, i);
8668
8697
  if (Object.keys(n).length === 0)
8669
8698
  return;
8670
- const s = k.SIGNATURES.get(r);
8671
- if (s && k.hasSameRefs(s, n))
8699
+ const s = N.SIGNATURES.get(r);
8700
+ if (s && N.hasSameRefs(s, n))
8672
8701
  return;
8673
- const a = k.stringify(n);
8702
+ const a = N.stringify(n);
8674
8703
  if (a === null) {
8675
- m.warn(
8704
+ g.warn(
8676
8705
  "Haori",
8677
8706
  `保存対象を直列化できないためミラーを行いません: ${t.key}`
8678
8707
  );
8679
8708
  return;
8680
8709
  }
8681
8710
  if (s && s.json === a) {
8682
- s.refs = k.createRefs(n);
8711
+ s.refs = N.createRefs(n);
8683
8712
  return;
8684
8713
  }
8685
- k.writeRecord(t, n) && k.SIGNATURES.set(r, { json: a, refs: k.createRefs(n) });
8714
+ N.writeRecord(t, n) && N.SIGNATURES.set(r, { json: a, refs: N.createRefs(n) });
8686
8715
  }
8687
8716
  /**
8688
8717
  * レコードを破棄します。
@@ -8695,15 +8724,15 @@ const k = class k {
8695
8724
  * @param kind ストレージ種別
8696
8725
  */
8697
8726
  static clear(e, t) {
8698
- const r = k.resolveStorage(t);
8727
+ const r = N.resolveStorage(t);
8699
8728
  if (r) {
8700
8729
  try {
8701
8730
  r.removeItem(e);
8702
8731
  } catch (i) {
8703
- m.warn("Haori", `ストレージの破棄に失敗しました: ${e}`, i);
8732
+ g.warn("Haori", `ストレージの破棄に失敗しました: ${e}`, i);
8704
8733
  return;
8705
8734
  }
8706
- k.reseedDeclaringElements(e, t);
8735
+ N.reseedDeclaringElements(e, t);
8707
8736
  }
8708
8737
  }
8709
8738
  /**
@@ -8716,24 +8745,24 @@ const k = class k {
8716
8745
  document.querySelectorAll(
8717
8746
  `[${c.prefix}store]`
8718
8747
  ).forEach((i) => {
8719
- if (!k.RESTORED_ELEMENTS.has(i))
8748
+ if (!N.RESTORED_ELEMENTS.has(i))
8720
8749
  return;
8721
8750
  const n = T.get(i);
8722
8751
  if (!(n instanceof S))
8723
8752
  return;
8724
- const s = k.readDeclaration(n);
8753
+ const s = N.readDeclaration(n);
8725
8754
  if (!s || s.key !== e || s.kind !== t)
8726
8755
  return;
8727
8756
  const a = n.getRawBindingData();
8728
- k.seedSignature(
8757
+ N.seedSignature(
8729
8758
  i,
8730
- a ? k.selectFromData(s, a) : {}
8759
+ a ? N.selectFromData(s, a) : {}
8731
8760
  );
8732
8761
  });
8733
8762
  }
8734
8763
  };
8735
- k.SIGNATURES = /* @__PURE__ */ new WeakMap(), k.RESTORED_ELEMENTS = /* @__PURE__ */ new WeakSet(), k.WARNED_ELEMENTS = /* @__PURE__ */ new WeakMap(), k.WARNED_KINDS = /* @__PURE__ */ new Set();
8736
- let Fe = k;
8764
+ N.SIGNATURES = /* @__PURE__ */ new WeakMap(), N.RESTORED_ELEMENTS = /* @__PURE__ */ new WeakSet(), N.WARNED_ELEMENTS = /* @__PURE__ */ new WeakMap(), N.WARNED_KINDS = /* @__PURE__ */ new Set();
8765
+ let Fe = N;
8737
8766
  class bt {
8738
8767
  /**
8739
8768
  * URLのクエリパラメータを取得します。
@@ -8907,7 +8936,7 @@ function Kt(b, e) {
8907
8936
  t.body
8908
8937
  );
8909
8938
  let s = b;
8910
- Object.keys(i).length > 0 && (s = Et(s, i)), n && m.warn(
8939
+ Object.keys(i).length > 0 && (s = Et(s, i)), n && g.warn(
8911
8940
  "Haori",
8912
8941
  `The ${r} body cannot be converted into a query string and is dropped by the demo runtime normalization. Send the values with ${c.prefix}{event}-data / ${c.prefix}{event}-form, or use the embedded runtime.`
8913
8942
  ), delete t.body, t.method = "GET";
@@ -8934,15 +8963,15 @@ function zt(b) {
8934
8963
  }
8935
8964
  ] : [e, String(t)]) : String(b);
8936
8965
  }
8937
- function Ne(b) {
8938
- return b instanceof Blob ? !0 : Array.isArray(b) ? b.some(Ne) : b !== null && typeof b == "object" ? Object.values(b).some(
8939
- Ne
8966
+ function ke(b) {
8967
+ return b instanceof Blob ? !0 : Array.isArray(b) ? b.some(ke) : b !== null && typeof b == "object" ? Object.values(b).some(
8968
+ ke
8940
8969
  ) : !1;
8941
8970
  }
8942
8971
  function Gt(b) {
8943
8972
  return Object.values(b).some((e) => e instanceof Blob ? !1 : Array.isArray(e) ? e.some(
8944
- (t) => !(t instanceof Blob) && Ne(t)
8945
- ) : Ne(e));
8973
+ (t) => !(t instanceof Blob) && ke(t)
8974
+ ) : ke(e));
8946
8975
  }
8947
8976
  function Me(b) {
8948
8977
  return Ve(F.getValues(b));
@@ -9048,15 +9077,15 @@ const p = class p {
9048
9077
  (r === "click" || r === "error-click" ? j.queryAllInListOrder(i, t) : j.queryAll(i, t)).forEach((a) => {
9049
9078
  const o = T.get(a);
9050
9079
  o && n.push(o);
9051
- }), n.length === 0 && m.error("Haori", `Element not found: ${i} (${t})`);
9080
+ }), n.length === 0 && g.error("Haori", `Element not found: ${i} (${t})`);
9052
9081
  else if (r === "error-click")
9053
- m.error(
9082
+ g.error(
9054
9083
  "Haori",
9055
9084
  `${t} にはクリックする要素のセレクタが必要です。`
9056
9085
  );
9057
9086
  else if (r === "open" || r === "close" || r === "error-close") {
9058
9087
  const s = e.getTarget().closest("dialog");
9059
- s ? n.push(T.get(s)) : m.error("Haori", `Ancestor <dialog> not found (${t})`);
9088
+ s ? n.push(T.get(s)) : g.error("Haori", `Ancestor <dialog> not found (${t})`);
9060
9089
  } else
9061
9090
  n.push(e);
9062
9091
  return n;
@@ -9197,7 +9226,7 @@ const p = class p {
9197
9226
  const r = [];
9198
9227
  for (const i of (e ?? "").split("&")) {
9199
9228
  const n = i.trim();
9200
- /^\d{3}$/.test(n) ? r.push(Number(n)) : m.warn(
9229
+ /^\d{3}$/.test(n) ? r.push(Number(n)) : g.warn(
9201
9230
  "Haori",
9202
9231
  `${t} の "${n}" は 3 桁のステータスではないため無視します。`
9203
9232
  );
@@ -9269,9 +9298,9 @@ const p = class p {
9269
9298
  try {
9270
9299
  i = C.parseDataBind(r);
9271
9300
  } catch (n) {
9272
- return m.error("Haori", `Invalid fetch headers: ${n}`), null;
9301
+ return g.error("Haori", `Invalid fetch headers: ${n}`), null;
9273
9302
  }
9274
- return i === null || typeof i != "object" || Array.isArray(i) ? (m.warn(
9303
+ return i === null || typeof i != "object" || Array.isArray(i) ? (g.warn(
9275
9304
  "Haori",
9276
9305
  `${t} はヘッダー名と値のオブジェクトで指定してください(${Array.isArray(i) ? "配列" : `${typeof i} 型の値`}が指定されたため、ヘッダーは設定しません)。`
9277
9306
  ), null) : i;
@@ -9500,7 +9529,7 @@ const p = class p {
9500
9529
  }, i = t ? p.attrName(t, "if") : p.attrName(null, "if", !0);
9501
9530
  if (e.hasAttribute(i)) {
9502
9531
  const D = e.getRawAttribute(i);
9503
- typeof D == "string" && D.trim() !== "" ? (r.conditionExpression = F.unwrapConditionExpression(D), r.conditionAttributeName = i) : m.warn(
9532
+ typeof D == "string" && D.trim() !== "" ? (r.conditionExpression = F.unwrapConditionExpression(D), r.conditionAttributeName = i) : g.warn(
9504
9533
  "Haori",
9505
9534
  `${i} に条件式が指定されていません。`
9506
9535
  );
@@ -9522,7 +9551,7 @@ const p = class p {
9522
9551
  );
9523
9552
  Z !== null ? r.formFragment = F.getFormFragment(
9524
9553
  T.get(Z)
9525
- ) : m.error(
9554
+ ) : g.error(
9526
9555
  "Haori",
9527
9556
  `Form element not found: ${$} (${p.attrName(t, "form")})`
9528
9557
  );
@@ -9543,7 +9572,7 @@ ${$}
9543
9572
  `
9544
9573
  );
9545
9574
  } catch (Z) {
9546
- m.error("Haori", `Invalid before script: ${Z}`);
9575
+ g.error("Haori", `Invalid before script: ${Z}`);
9547
9576
  }
9548
9577
  }
9549
9578
  const D = p.attrName(t, "run");
@@ -9563,7 +9592,7 @@ ${$}
9563
9592
  ${$}
9564
9593
  `);
9565
9594
  } catch (Q) {
9566
- m.error("Haori", `Invalid run script: ${Q}`);
9595
+ g.error("Haori", `Invalid run script: ${Q}`);
9567
9596
  }
9568
9597
  }
9569
9598
  Z && (r.runScript = Z);
@@ -9585,17 +9614,17 @@ ${$}
9585
9614
  );
9586
9615
  u !== null && (a.headers = u);
9587
9616
  const d = t ? p.attrName(t, "fetch-content-type") : p.attrName(null, "content-type", !0);
9588
- let g = null;
9617
+ let m = null;
9589
9618
  if (e.hasAttribute(d)) {
9590
9619
  const D = e.getAttributeEvaluation(d);
9591
- D?.hasUnresolvedReference && (r.fetchHasUnresolvedReference = !0), g = p.normalizeAttributeText(
9620
+ D?.hasUnresolvedReference && (r.fetchHasUnresolvedReference = !0), m = p.normalizeAttributeText(
9592
9621
  D?.value
9593
9622
  );
9594
9623
  }
9595
- if (g !== null)
9624
+ if (m !== null)
9596
9625
  a.headers = p.withContentType(
9597
9626
  a.headers,
9598
- g
9627
+ m
9599
9628
  );
9600
9629
  else if (a.method && !p.hasDeclaredContentType(a.headers)) {
9601
9630
  const D = a.method.toUpperCase();
@@ -9607,7 +9636,7 @@ ${$}
9607
9636
  Object.keys(a).length > 0 && (r.fetchOptions = a);
9608
9637
  const y = t ? p.attrName(t, "fetch-download") : p.attrName(null, "download", !0);
9609
9638
  if (e.hasAttribute(y) && !s)
9610
- m.warn(
9639
+ g.warn(
9611
9640
  "Haori",
9612
9641
  `${y} は ${n} と併せて指定してください(保存する応答が無いため、この宣言は無視します)。`
9613
9642
  );
@@ -9617,7 +9646,7 @@ ${$}
9617
9646
  r.downloadFileName = D?.hasUnresolvedReference ? null : p.normalizeAttributeText(D?.value);
9618
9647
  }
9619
9648
  const E = t ? p.attrName(t, "fetch-download-folder") : p.attrName(null, "download-folder", !0);
9620
- e.hasAttribute(E) && (r.download ? r.downloadFolder = !0 : m.warn(
9649
+ e.hasAttribute(E) && (r.download ? r.downloadFolder = !0 : g.warn(
9621
9650
  "Haori",
9622
9651
  `${E} は ${y} と併せて指定してください(書き出す応答が無いため、この宣言は無視します)。`
9623
9652
  ));
@@ -9629,14 +9658,14 @@ ${$}
9629
9658
  $.length > 0 ? (r.bindFragments = [], $.forEach((Z) => {
9630
9659
  const Q = T.get(Z);
9631
9660
  Q && r.bindFragments.push(Q);
9632
- })) : m.error(
9661
+ })) : g.error(
9633
9662
  "Haori",
9634
9663
  `Bind element not found: ${D} (${A})`
9635
9664
  );
9636
9665
  }
9637
9666
  }
9638
- const N = p.attrName(t, "bind-arg"), M = p.attrName(null, "arg", !0), q = p.attrName(null, "bind-arg", !0);
9639
- t ? e.hasAttribute(N) && (r.bindArg = e.getRawAttribute(N)) : e.hasAttribute(M) ? r.bindArg = e.getRawAttribute(
9667
+ const k = p.attrName(t, "bind-arg"), M = p.attrName(null, "arg", !0), q = p.attrName(null, "bind-arg", !0);
9668
+ t ? e.hasAttribute(k) && (r.bindArg = e.getRawAttribute(k)) : e.hasAttribute(M) ? r.bindArg = e.getRawAttribute(
9640
9669
  M
9641
9670
  ) : e.hasAttribute(q) && (r.bindArg = e.getRawAttribute(q));
9642
9671
  const I = t ? p.attrName(t, "bind-params") : p.attrName(null, "bind-params", !0);
@@ -9672,7 +9701,7 @@ ${$}
9672
9701
  Y.length > 0 ? (r.adjustFragments = [], Y.forEach((X) => {
9673
9702
  const Ee = T.get(X);
9674
9703
  Ee && r.adjustFragments.push(Ee);
9675
- })) : m.error(
9704
+ })) : g.error(
9676
9705
  "Haori",
9677
9706
  `Adjust element not found: ${W} (${p.attrName(t, "adjust")})`
9678
9707
  );
@@ -9697,7 +9726,7 @@ ${W}
9697
9726
  `
9698
9727
  );
9699
9728
  } catch (Y) {
9700
- m.error("Haori", `Invalid after script: ${Y}`);
9729
+ g.error("Haori", `Invalid after script: ${Y}`);
9701
9730
  }
9702
9731
  }
9703
9732
  if (e.hasAttribute(p.attrName(t, "dialog")) && (r.dialogMessage = p.unescapeNewlines(
@@ -9785,7 +9814,7 @@ ${W}
9785
9814
  );
9786
9815
  Y !== null ? r.historyFormFragment = F.getFormFragment(
9787
9816
  T.get(Y)
9788
- ) : m.error(
9817
+ ) : g.error(
9789
9818
  "Haori",
9790
9819
  `Form element not found: ${W} (${p.attrName(t, "history-form")})`
9791
9820
  );
@@ -9857,12 +9886,12 @@ ${W}
9857
9886
  const Y = j.query(W, ce);
9858
9887
  if (Y !== null) {
9859
9888
  const X = T.get(Y);
9860
- X ? r.copySourceFragment = X : m.error(
9889
+ X ? r.copySourceFragment = X : g.error(
9861
9890
  "Haori",
9862
9891
  `Element is not managed by Haori: ${W} (${ce})`
9863
9892
  );
9864
9893
  } else
9865
- m.error(
9894
+ g.error(
9866
9895
  "Haori",
9867
9896
  `Element not found: ${W} (${ce})`
9868
9897
  );
@@ -9882,7 +9911,7 @@ ${W}
9882
9911
  );
9883
9912
  $ !== null ? r.formFragment = F.getFormFragment(
9884
9913
  T.get($)
9885
- ) : m.error(
9914
+ ) : g.error(
9886
9915
  "Haori",
9887
9916
  `Form element not found: ${D} (${p.attrName(null, "fetch-form", !0)})`
9888
9917
  );
@@ -9896,7 +9925,7 @@ ${W}
9896
9925
  D ? (j.queryAll(D, _).forEach((Q) => {
9897
9926
  const se = T.get(Q);
9898
9927
  se && $.push(se);
9899
- }), $.length === 0 && m.error(
9928
+ }), $.length === 0 && g.error(
9900
9929
  "Haori",
9901
9930
  `Element not found: ${D} (${_})`
9902
9931
  )) : $.push(e), $.length > 0 && (r.fetchStateFragments = $);
@@ -9905,7 +9934,7 @@ ${W}
9905
9934
  if (e.hasAttribute(G)) {
9906
9935
  const D = e.getRawAttribute(G), $ = D === null ? "" : D.trim();
9907
9936
  if ($ === "")
9908
- m.error(
9937
+ g.error(
9909
9938
  "Haori",
9910
9939
  `ストレージキーが指定されていません (${G})`
9911
9940
  );
@@ -9914,13 +9943,13 @@ ${W}
9914
9943
  const Z = e.getRawAttribute(
9915
9944
  `${G}-type`
9916
9945
  ), Q = Z === null ? "session" : Z.trim();
9917
- Q === "local" || Q === "session" ? r.storeClearKind = Q : (m.warn(
9946
+ Q === "local" || Q === "session" ? r.storeClearKind = Q : (g.warn(
9918
9947
  "Haori",
9919
9948
  `${G}-type は session または local を指定してください(session として扱います): ${Q}`
9920
9949
  ), r.storeClearKind = "session");
9921
9950
  }
9922
9951
  }
9923
- return s && !r.download && (!r.bindFragments || r.bindFragments.length === 0) && (r.bindFragments = [e], r.defaultSelfBind = !0), r.download && r.bindFragments && r.bindFragments.length > 0 && (m.warn(
9952
+ return s && !r.download && (!r.bindFragments || r.bindFragments.length === 0) && (r.bindFragments = [e], r.defaultSelfBind = !0), r.download && r.bindFragments && r.bindFragments.length > 0 && (g.warn(
9924
9953
  "Haori",
9925
9954
  `${y} と同時にバインド先が指定されています(応答はファイルとして保存し、バインドは行いません)。`
9926
9955
  ), r.bindFragments = null), p.recordRowWriteTargets(r), r;
@@ -10036,15 +10065,15 @@ ${W}
10036
10065
  ), !this.evaluateExecutionCondition())
10037
10066
  return this.skipped = !0, await this.commitEditOnStop(), !1;
10038
10067
  if (this.options.runScript) {
10039
- const g = this.options.targetFragment?.getTarget() ?? null;
10068
+ const m = this.options.targetFragment?.getTarget() ?? null;
10040
10069
  try {
10041
10070
  const y = this.options.runScript.call(
10042
- g,
10071
+ m,
10043
10072
  this.domEvent
10044
10073
  );
10045
10074
  y === !1 && this.domEvent && this.domEvent.preventDefault(), y != null && typeof y.then == "function" && await y;
10046
10075
  } catch (y) {
10047
- m.error("Haori", `Run script execution error: ${y}`);
10076
+ g.error("Haori", `Run script execution error: ${y}`);
10048
10077
  }
10049
10078
  }
10050
10079
  if (!await this.confirm())
@@ -10053,7 +10082,7 @@ ${W}
10053
10082
  return !1;
10054
10083
  this.options.resetBeforeFragments && this.options.resetBeforeFragments.length > 0 && (await Promise.all(
10055
10084
  this.options.resetBeforeFragments.map(
10056
- (g) => F.reset(g, this.operationSequence)
10085
+ (m) => F.reset(m, this.operationSequence)
10057
10086
  )
10058
10087
  ), this.captureHistorySnapshots());
10059
10088
  const r = this.prepareFetchRequest();
@@ -10061,14 +10090,14 @@ ${W}
10061
10090
  const i = r.payload;
10062
10091
  let n = r.url, s = r.options, a = !1, o = !1;
10063
10092
  if (this.options.beforeCallback) {
10064
- const g = this.options.beforeCallback(
10093
+ const m = this.options.beforeCallback(
10065
10094
  n || null,
10066
10095
  s || null
10067
10096
  );
10068
- if (g != null) {
10069
- if (g === !1 || typeof g == "object" && g.stop)
10097
+ if (m != null) {
10098
+ if (m === !1 || typeof m == "object" && m.stop)
10070
10099
  return !1;
10071
- typeof g == "object" && (a = "fetchUrl" in g, o = "fetchOptions" in g, n = a ? g.fetchUrl : n, s = o ? g.fetchOptions : s);
10100
+ typeof m == "object" && (a = "fetchUrl" in m, o = "fetchOptions" in m, n = a ? m.fetchUrl : n, s = o ? m.fetchOptions : s);
10072
10101
  }
10073
10102
  }
10074
10103
  const l = Object.keys(i).length > 0;
@@ -10078,13 +10107,13 @@ ${W}
10078
10107
  i,
10079
10108
  e
10080
10109
  );
10081
- const g = (s?.method || "GET").toUpperCase(), E = !a && o && r.transportMode === "query-get" && jt(s) && !Ue(g) ? r.baseUrl ?? n : n, A = Kt(
10110
+ const m = (s?.method || "GET").toUpperCase(), E = !a && o && r.transportMode === "query-get" && jt(s) && !Ue(m) ? r.baseUrl ?? n : n, A = Kt(
10082
10111
  E,
10083
10112
  s
10084
10113
  );
10085
10114
  n = A.url;
10086
- const N = { ...A.options }, M = A.normalized ? A.requestedMethod : r.requestedMethod, q = A.effectiveMethod, I = r.transportMode === "query-get" || A.normalized, K = A.queryString ?? r.queryString;
10087
- if (I && m.info("Haori demo fetch normalization", {
10115
+ const k = { ...A.options }, M = A.normalized ? A.requestedMethod : r.requestedMethod, q = A.effectiveMethod, I = r.transportMode === "query-get" || A.normalized, K = A.queryString ?? r.queryString;
10116
+ if (I && g.info("Haori demo fetch normalization", {
10088
10117
  runtime: c.runtime,
10089
10118
  requestedMethod: M,
10090
10119
  effectiveMethod: q,
@@ -10103,10 +10132,10 @@ ${W}
10103
10132
  return O.fetchStart(
10104
10133
  this.options.targetFragment.getTarget(),
10105
10134
  n,
10106
- N,
10135
+ k,
10107
10136
  l ? i : void 0,
10108
10137
  re
10109
- ), await this.injectFetchState("loading"), await p.invokeFetch(n, N).then((H) => this.handleFetchResult(
10138
+ ), await this.injectFetchState("loading"), await p.invokeFetch(n, k).then((H) => this.handleFetchResult(
10110
10139
  H,
10111
10140
  n || void 0,
10112
10141
  J
@@ -10122,7 +10151,7 @@ ${W}
10122
10151
  ), await this.runErrorActions(null), H;
10123
10152
  });
10124
10153
  }
10125
- return await fetch(n, N).then((J) => this.handleFetchResult(J, n || void 0));
10154
+ return await fetch(n, k).then((J) => this.handleFetchResult(J, n || void 0));
10126
10155
  }
10127
10156
  (!this.options.bindFragments || this.options.bindFragments.length === 0) && this.options.formFragment && l && await this.commitFormValues(
10128
10157
  this.options.formFragment,
@@ -10274,7 +10303,7 @@ ${W}
10274
10303
  }
10275
10304
  C.setAttribute(t, r.name, r.value).catch(
10276
10305
  (i) => {
10277
- m.error(
10306
+ g.error(
10278
10307
  "Haori",
10279
10308
  `ロックの解除で ${r.name} を適用し直せませんでした: ${i}`
10280
10309
  );
@@ -10305,7 +10334,7 @@ ${W}
10305
10334
  return this.downloadFolder = De, "ready";
10306
10335
  const e = globalThis.showDirectoryPicker;
10307
10336
  if (typeof e != "function")
10308
- return m.info(
10337
+ return g.info(
10309
10338
  "Haori",
10310
10339
  "この環境では保存先のフォルダを選ばせられないため、今までどおり保存します。"
10311
10340
  ), "fallback";
@@ -10313,7 +10342,7 @@ ${W}
10313
10342
  const t = await e.call(globalThis, { mode: "readwrite" });
10314
10343
  return De = t, this.downloadFolder = t, "ready";
10315
10344
  } catch (t) {
10316
- return t?.name === "AbortError" ? "cancelled" : (m.info(
10345
+ return t?.name === "AbortError" ? "cancelled" : (g.info(
10317
10346
  "Haori",
10318
10347
  `保存先のフォルダを選ばせられなかったため、今までどおり保存します: ${t}`
10319
10348
  ), "fallback");
@@ -10335,7 +10364,7 @@ ${W}
10335
10364
  const s = await e.blob();
10336
10365
  return this.downloadReceivedBytes = s.size, this.dropTotalBytesIfExceeded(), await this.injectFetchState("loading"), s;
10337
10366
  } catch (s) {
10338
- return m.error(
10367
+ return g.error(
10339
10368
  "Haori",
10340
10369
  `応答をファイルとして読み取れませんでした: ${s}`
10341
10370
  ), null;
@@ -10369,7 +10398,7 @@ ${W}
10369
10398
  a - r >= Ht && (r = a, await this.injectFetchState("loading"));
10370
10399
  }
10371
10400
  } catch (n) {
10372
- return m.error("Haori", `応答をファイルとして読み取れませんでした: ${n}`), !1;
10401
+ return g.error("Haori", `応答をファイルとして読み取れませんでした: ${n}`), !1;
10373
10402
  }
10374
10403
  return !0;
10375
10404
  }
@@ -10435,7 +10464,7 @@ ${W}
10435
10464
  if (l?.name === "NotFoundError")
10436
10465
  s = !1;
10437
10466
  else
10438
- return m.info(
10467
+ return g.info(
10439
10468
  "Haori",
10440
10469
  `保存先のフォルダを確かめられなかったため、今までどおり保存します: ${l}`
10441
10470
  ), "fallback";
@@ -10448,7 +10477,7 @@ ${W}
10448
10477
  try {
10449
10478
  a = await (await e.getFileHandle(n, { create: !0 })).createWritable();
10450
10479
  } catch (l) {
10451
- return m.info(
10480
+ return g.info(
10452
10481
  "Haori",
10453
10482
  `保存先のファイルを作れなかったため、今までどおり保存します: ${l}`
10454
10483
  ), "fallback";
@@ -10460,18 +10489,18 @@ ${W}
10460
10489
  try {
10461
10490
  return await a.close(), "saved";
10462
10491
  } catch (l) {
10463
- m.error("Haori", `ファイルを書き終えられませんでした: ${l}`);
10492
+ g.error("Haori", `ファイルを書き終えられませんでした: ${l}`);
10464
10493
  }
10465
10494
  try {
10466
10495
  await a.abort();
10467
10496
  } catch (l) {
10468
- m.error("Haori", `書きかけを取り消せませんでした: ${l}`);
10497
+ g.error("Haori", `書きかけを取り消せませんでした: ${l}`);
10469
10498
  }
10470
10499
  if (!s)
10471
10500
  try {
10472
10501
  await e.removeEntry(n);
10473
10502
  } catch (l) {
10474
- m.error(
10503
+ g.error(
10475
10504
  "Haori",
10476
10505
  `作りかけのファイルを取り除けませんでした: ${l}`
10477
10506
  );
@@ -10508,7 +10537,7 @@ ${W}
10508
10537
  t ?? this.options.fetchUrl ?? null
10509
10538
  );
10510
10539
  if (typeof URL > "u" || typeof URL.createObjectURL != "function")
10511
- return m.error(
10540
+ return g.error(
10512
10541
  "Haori",
10513
10542
  "この環境では Blob の URL を生成できないため、ファイルを保存できません。"
10514
10543
  ), "failed";
@@ -10570,7 +10599,7 @@ ${W}
10570
10599
  try {
10571
10600
  return decodeURIComponent(a);
10572
10601
  } catch (o) {
10573
- m.warn("Haori", `Content-Disposition を解釈できません: ${o}`);
10602
+ g.warn("Haori", `Content-Disposition を解釈できません: ${o}`);
10574
10603
  }
10575
10604
  }
10576
10605
  const r = /filename\s*=\s*"((?:[^"\\]|\\.)*)"/i.exec(e);
@@ -10621,17 +10650,17 @@ ${W}
10621
10650
  e.status,
10622
10651
  r
10623
10652
  );
10624
- const E = this.selectErrorActions(e.status), A = E?.bind === !0, N = await this.handleFetchError(
10653
+ const E = this.selectErrorActions(e.status), A = E?.bind === !0, k = await this.handleFetchError(
10625
10654
  A ? e.clone() : e,
10626
10655
  E?.noMessage !== !0 && !A
10627
10656
  );
10628
10657
  return A && await this.bindResult(e).catch((M) => {
10629
- m.error("Haori", "Failed to bind the error response:", M);
10658
+ g.error("Haori", "Failed to bind the error response:", M);
10630
10659
  }), await this.injectFetchState(
10631
10660
  "error",
10632
10661
  e.status,
10633
10662
  e.statusText || null,
10634
- N
10663
+ k
10635
10664
  ), await this.runErrorActions(e.status), !1;
10636
10665
  }
10637
10666
  if (this.options.targetFragment && t && r && O.fetchEnd(
@@ -10677,10 +10706,10 @@ ${W}
10677
10706
  );
10678
10707
  if (!a && this.options.openFragments && this.options.openFragments.length > 0 && this.options.openFragments.forEach((E) => {
10679
10708
  const A = E.getTarget();
10680
- A instanceof HTMLElement ? s.push(i.openDialog(A)) : m.error("Haori", "Element is not an HTML element: ", A);
10709
+ A instanceof HTMLElement ? s.push(i.openDialog(A)) : g.error("Haori", "Element is not an HTML element: ", A);
10681
10710
  }), !a && this.options.closeFragments && this.options.closeFragments.length > 0 && this.options.closeFragments.forEach((E) => {
10682
10711
  const A = E.getTarget();
10683
- A instanceof HTMLElement ? s.push(i.closeDialog(A)) : m.error("Haori", "Element is not an HTML element: ", A);
10712
+ A instanceof HTMLElement ? s.push(i.closeDialog(A)) : g.error("Haori", "Element is not an HTML element: ", A);
10684
10713
  }), await Promise.all(s), a)
10685
10714
  return !1;
10686
10715
  const o = p.unescapeNewlines(
@@ -10711,15 +10740,15 @@ ${W}
10711
10740
  const d = this.resolveLateAttribute(
10712
10741
  "redirect",
10713
10742
  this.options.redirectUrl
10714
- ), g = this.resolveLateAttribute(
10743
+ ), m = this.resolveLateAttribute(
10715
10744
  "redirect-replace",
10716
10745
  this.options.redirectReplaceUrl
10717
10746
  );
10718
- d && g && m.warn(
10747
+ d && m && g.warn(
10719
10748
  "Haori",
10720
10749
  `${p.attrName(this.eventType, "redirect")} と ${p.attrName(this.eventType, "redirect-replace")} の両方が指定されています。履歴を置き換える方を採用します。`
10721
10750
  );
10722
- const y = g || d;
10751
+ const y = m || d;
10723
10752
  if (y) {
10724
10753
  let E = y;
10725
10754
  const A = this.resolveLateAttribute(
@@ -10730,13 +10759,13 @@ ${W}
10730
10759
  const M = new URLSearchParams(window.location.search).get(A);
10731
10760
  if (M !== null) {
10732
10761
  const q = M.trim();
10733
- bt.isSafeLocalPath(q) ? E = q : m.warn(
10762
+ bt.isSafeLocalPath(q) ? E = q : g.warn(
10734
10763
  "Haori",
10735
10764
  `戻り先パスが安全なローカルパスではないため、既定の遷移先へフォールバックします: ${M}`
10736
10765
  );
10737
10766
  }
10738
10767
  }
10739
- g ? window.location.replace(E) : window.location.href = E;
10768
+ m ? window.location.replace(E) : window.location.href = E;
10740
10769
  }
10741
10770
  return !0;
10742
10771
  }
@@ -10774,7 +10803,7 @@ ${W}
10774
10803
  continue;
10775
10804
  const s = p.takeClickOutcome(n);
10776
10805
  if (s === null) {
10777
- m.warn(
10806
+ g.warn(
10778
10807
  "Haori",
10779
10808
  `${c.prefix}${this.eventType ?? "fetch"}-${r} はこの対象の完了を待てません(手続きが同期に起動していません)。`
10780
10809
  );
@@ -10805,7 +10834,7 @@ ${W}
10805
10834
  const i = pe(), n = [];
10806
10835
  t.closeFragments?.forEach((a) => {
10807
10836
  const o = a.getTarget();
10808
- o instanceof HTMLElement ? n.push(i.closeDialog(o)) : m.error("Haori", "Element is not an HTML element: ", o);
10837
+ o instanceof HTMLElement ? n.push(i.closeDialog(o)) : g.error("Haori", "Element is not an HTML element: ", o);
10809
10838
  }), await Promise.all(n);
10810
10839
  const s = p.normalizeAttributeText(
10811
10840
  this.resolveLateAttribute(`${t.key}-toast`, t.toastMessage)
@@ -10870,7 +10899,7 @@ ${W}
10870
10899
  if (!i || !n || !n.hasAttribute(i.attributeName))
10871
10900
  return r;
10872
10901
  const s = n.getAttributeEvaluation(i.attributeName);
10873
- return s === null ? r : s.hasUnresolvedReference && !i.hasUnresolvedReference ? (V.isEnabled() && m.warn(
10902
+ return s === null ? r : s.hasUnresolvedReference && !i.hasUnresolvedReference ? (V.isEnabled() && g.warn(
10874
10903
  "Haori",
10875
10904
  `${i.attributeName} の参照が手続きの途中で解決できなくなったため、手続き開始時の値を使います`
10876
10905
  ), r) : s.value ?? null;
@@ -10892,12 +10921,12 @@ ${W}
10892
10921
  const a = t ? e : window.location.pathname, o = new URL(a, window.location.href);
10893
10922
  if (o.origin !== window.location.origin) {
10894
10923
  const u = "history.pushState: cross-origin URL is not allowed: " + o.toString();
10895
- m.error("Haori", u);
10924
+ g.error("Haori", u);
10896
10925
  return;
10897
10926
  }
10898
10927
  const l = (u) => {
10899
- for (const [d, g] of Object.entries(u))
10900
- g != null && (Array.isArray(g) ? (o.searchParams.delete(d), g.forEach((y) => o.searchParams.append(d, String(y)))) : typeof g == "object" ? o.searchParams.set(d, JSON.stringify(g)) : o.searchParams.set(d, String(g)));
10928
+ for (const [d, m] of Object.entries(u))
10929
+ m != null && (Array.isArray(m) ? (o.searchParams.delete(d), m.forEach((y) => o.searchParams.append(d, String(y)))) : typeof m == "object" ? o.searchParams.set(d, JSON.stringify(m)) : o.searchParams.set(d, String(m)));
10901
10930
  };
10902
10931
  n && l(r), s && l(i), history.pushState(
10903
10932
  { [Bt]: !0 },
@@ -10905,7 +10934,7 @@ ${W}
10905
10934
  o.toString()
10906
10935
  ), C.refreshUrlParams();
10907
10936
  } catch (a) {
10908
- m.error("Haori", `history.pushState failed: ${a}`);
10937
+ g.error("Haori", `history.pushState failed: ${a}`);
10909
10938
  }
10910
10939
  }
10911
10940
  /**
@@ -10945,35 +10974,35 @@ ${W}
10945
10974
  try {
10946
10975
  const u = await e.json(), d = [];
10947
10976
  if (Array.isArray(u)) {
10948
- const g = /* @__PURE__ */ new Map(), y = [];
10977
+ const m = /* @__PURE__ */ new Map(), y = [];
10949
10978
  for (const E of u)
10950
10979
  if (E && typeof E == "object" && !Array.isArray(E)) {
10951
- const A = E.key, N = E.message, M = typeof A == "string" && A.length > 0 ? A : null, q = typeof N == "string" ? N : N != null ? String(N) : "";
10980
+ const A = E.key, k = E.message, M = typeof A == "string" && A.length > 0 ? A : null, q = typeof k == "string" ? k : k != null ? String(k) : "";
10952
10981
  if (q.length === 0)
10953
10982
  continue;
10954
10983
  if (M !== null) {
10955
- const I = g.get(M) ?? [];
10956
- I.push(q), g.set(M, I);
10984
+ const I = m.get(M) ?? [];
10985
+ I.push(q), m.set(M, I);
10957
10986
  } else
10958
10987
  y.push(q);
10959
10988
  } else typeof E == "string" && E.length > 0 && y.push(E);
10960
- for (const [E, A] of g)
10989
+ for (const [E, A] of m)
10961
10990
  d.push({ key: E, message: A.join(`
10962
10991
  `) });
10963
10992
  for (const E of y)
10964
10993
  d.push({ message: E });
10965
10994
  } else if (u && typeof u == "object") {
10966
10995
  if (typeof u.message == "string" && d.push({ message: u.message }), Array.isArray(u.messages))
10967
- for (const g of u.messages)
10968
- typeof g == "string" && d.push({ message: g });
10996
+ for (const m of u.messages)
10997
+ typeof m == "string" && d.push({ message: m });
10969
10998
  if (u.errors && typeof u.errors == "object")
10970
- for (const [g, y] of Object.entries(u.errors))
10971
- Array.isArray(y) ? d.push({ key: g, message: y.join(`
10972
- `) }) : typeof y == "string" ? d.push({ key: g, message: y }) : y != null && d.push({ key: g, message: String(y) });
10999
+ for (const [m, y] of Object.entries(u.errors))
11000
+ Array.isArray(y) ? d.push({ key: m, message: y.join(`
11001
+ `) }) : typeof y == "string" ? d.push({ key: m, message: y }) : y != null && d.push({ key: m, message: String(y) });
10973
11002
  if (d.length === 0)
10974
- for (const [g, y] of Object.entries(u))
10975
- g === "message" || g === "messages" || g === "errors" || (Array.isArray(y) ? d.push({ key: g, message: y.join(`
10976
- `) }) : typeof y == "string" && d.push({ key: g, message: y }));
11003
+ for (const [m, y] of Object.entries(u))
11004
+ m === "message" || m === "messages" || m === "errors" || (Array.isArray(y) ? d.push({ key: m, message: y.join(`
11005
+ `) }) : typeof y == "string" && d.push({ key: m, message: y }));
10977
11006
  }
10978
11007
  return await a(d);
10979
11008
  } catch {
@@ -11093,10 +11122,10 @@ ${W}
11093
11122
  r,
11094
11123
  this.options.formFragment ?? null
11095
11124
  ), s = ne.evaluateDetailed(t, n);
11096
- return s.unresolvedReference ? (e || m.warn(
11125
+ return s.unresolvedReference ? (e || g.warn(
11097
11126
  "Haori",
11098
11127
  `${i} の参照が解決できないため実行しません: ${t}`
11099
- ), !1) : s.value ? !0 : (!e && V.isEnabled() && m.warn(
11128
+ ), !1) : s.value ? !0 : (!e && V.isEnabled() && g.warn(
11100
11129
  "Haori",
11101
11130
  `${i} の条件が偽のため手続きを中断しました: ${t}`
11102
11131
  ), !1);
@@ -11158,7 +11187,7 @@ ${W}
11158
11187
  response: i
11159
11188
  });
11160
11189
  } catch (o) {
11161
- m.error("Haori", `Invalid bind-transform: ${o}`);
11190
+ g.error("Haori", `Invalid bind-transform: ${o}`);
11162
11191
  }
11163
11192
  if (this.options.bindParams) {
11164
11193
  const o = {};
@@ -11167,7 +11196,7 @@ ${W}
11167
11196
  }), i = o;
11168
11197
  }
11169
11198
  if (this.suppressEmptyReplaceBind && !this.options.bindArg && !this.options.bindMerge && i !== null && typeof i == "object" && !Array.isArray(i) && Object.keys(i).length === 0) {
11170
- m.warn(
11199
+ g.warn(
11171
11200
  "Haori",
11172
11201
  `Skipped binding because the input has no value to collect; the bind target would be replaced with an empty object. Add a name attribute to the input, or specify ${c.prefix}${this.eventType}-form.`
11173
11202
  );
@@ -11180,7 +11209,7 @@ ${W}
11180
11209
  if (l.kind === "skip")
11181
11210
  return;
11182
11211
  if (l.kind === "row") {
11183
- const g = this.options.bindArg;
11212
+ const m = this.options.bindArg;
11184
11213
  a.push({
11185
11214
  container: l.container,
11186
11215
  row: o,
@@ -11189,14 +11218,14 @@ ${W}
11189
11218
  apply: (y) => {
11190
11219
  const E = this.resolveCurrentRowItem(o, y), A = { ...E };
11191
11220
  if (i && typeof i == "object" && !Array.isArray(i)) {
11192
- const N = E[g], M = N !== null && typeof N == "object" && !Array.isArray(N) ? N : {};
11193
- A[g] = this.mergeAppendBindingData(
11221
+ const k = E[m], M = k !== null && typeof k == "object" && !Array.isArray(k) ? k : {};
11222
+ A[m] = this.mergeAppendBindingData(
11194
11223
  o,
11195
11224
  i,
11196
11225
  M
11197
11226
  );
11198
11227
  } else
11199
- A[g] = i;
11228
+ A[m] = i;
11200
11229
  return this.reconcileRowUserEdits(o, A);
11201
11230
  }
11202
11231
  });
@@ -11204,7 +11233,7 @@ ${W}
11204
11233
  }
11205
11234
  const u = { ...o.getRawBindingData() ?? {} }, d = this.options.bindArg;
11206
11235
  if (i && typeof i == "object" && !Array.isArray(i)) {
11207
- const g = u[d], y = g && typeof g == "object" && !Array.isArray(g) ? g : {};
11236
+ const m = u[d], y = m && typeof m == "object" && !Array.isArray(m) ? m : {};
11208
11237
  u[d] = this.mergeAppendBindingData(
11209
11238
  o,
11210
11239
  i,
@@ -11235,13 +11264,13 @@ ${W}
11235
11264
  });
11236
11265
  else if (typeof i == "string") {
11237
11266
  if (this.options.defaultSelfBind) {
11238
- m.warn(
11267
+ g.warn(
11239
11268
  "Haori",
11240
11269
  "string data is not bound because no bind target was specified."
11241
11270
  );
11242
11271
  return;
11243
11272
  }
11244
- return m.error("Haori", "string data cannot be bound without a bindArg."), Promise.reject(
11273
+ return g.error("Haori", "string data cannot be bound without a bindArg."), Promise.reject(
11245
11274
  new Error("string data cannot be bound without a bindArg.")
11246
11275
  );
11247
11276
  } else
@@ -11255,8 +11284,8 @@ ${W}
11255
11284
  row: o,
11256
11285
  attributeName: s,
11257
11286
  syncWhenUnchanged: "reflect",
11258
- apply: (g) => {
11259
- const y = this.options.bindMerge ? this.resolveCurrentRowItem(o, g) : g, E = this.mergeAppendBindingData(
11287
+ apply: (m) => {
11288
+ const y = this.options.bindMerge ? this.resolveCurrentRowItem(o, m) : m, E = this.mergeAppendBindingData(
11260
11289
  o,
11261
11290
  i,
11262
11291
  y
@@ -11577,12 +11606,12 @@ ${W}
11577
11606
  const n = { ...this.options.fetchOptions || {} }, s = new Headers(
11578
11607
  n.headers || void 0
11579
11608
  ), a = (n.method || "GET").toUpperCase(), o = c.runtime === "demo" && !Ue(a), l = o ? "GET" : a;
11580
- if (n.method = l, Object.keys(t).length > 0 && Ne(t)) {
11609
+ if (n.method = l, Object.keys(t).length > 0 && ke(t)) {
11581
11610
  const d = s.get("Content-Type") || "";
11582
- l !== "GET" && l !== "HEAD" && l !== "OPTIONS" && /multipart\/form-data/i.test(d) ? Gt(t) && m.warn(
11611
+ l !== "GET" && l !== "HEAD" && l !== "OPTIONS" && /multipart\/form-data/i.test(d) ? Gt(t) && g.warn(
11583
11612
  "Haori",
11584
11613
  `A File value nested under ${c.prefix}form-object / ${c.prefix}form-list cannot be sent. Place file inputs at the top level of the collected form values.`
11585
- ) : m.warn(
11614
+ ) : g.warn(
11586
11615
  "Haori",
11587
11616
  `A File value cannot be sent without ${c.prefix}fetch-content-type="multipart/form-data" and a body method such as POST.`
11588
11617
  );
@@ -11593,17 +11622,17 @@ ${W}
11593
11622
  const d = s.get("Content-Type") || "";
11594
11623
  if (/multipart\/form-data/i.test(d)) {
11595
11624
  s.delete("Content-Type");
11596
- const g = new FormData();
11625
+ const m = new FormData();
11597
11626
  for (const [y, E] of Object.entries(t))
11598
- E == null ? g.append(y, "") : E instanceof Blob ? g.append(y, E) : Array.isArray(E) ? E.forEach((A) => {
11599
- A instanceof Blob ? g.append(y, A) : g.append(y, Ae(A));
11600
- }) : g.append(y, Ae(E));
11601
- n.body = g;
11627
+ E == null ? m.append(y, "") : E instanceof Blob ? m.append(y, E) : Array.isArray(E) ? E.forEach((A) => {
11628
+ A instanceof Blob ? m.append(y, A) : m.append(y, Ae(A));
11629
+ }) : m.append(y, Ae(E));
11630
+ n.body = m;
11602
11631
  } else if (/application\/x-www-form-urlencoded/i.test(d)) {
11603
- const g = new URLSearchParams();
11632
+ const m = new URLSearchParams();
11604
11633
  for (const [y, E] of Object.entries(t))
11605
- E !== void 0 && (Array.isArray(E) ? E.forEach((A) => g.append(y, Ae(A))) : g.append(y, Ae(E)));
11606
- n.body = g;
11634
+ E !== void 0 && (Array.isArray(E) ? E.forEach((A) => m.append(y, Ae(A))) : m.append(y, Ae(E)));
11635
+ n.body = m;
11607
11636
  } else
11608
11637
  s.set("Content-Type", "application/json"), n.body = JSON.stringify(t);
11609
11638
  }
@@ -11699,11 +11728,11 @@ ${W}
11699
11728
  */
11700
11729
  getRowFragment() {
11701
11730
  if (!this.options.targetFragment)
11702
- return m.error("Haori", "Target fragment is not specified for row operation."), null;
11731
+ return g.error("Haori", "Target fragment is not specified for row operation."), null;
11703
11732
  const e = this.options.targetFragment.closestByAttribute(
11704
11733
  `${c.prefix}row`
11705
11734
  );
11706
- return e || (m.error("Haori", "Row fragment not found."), null);
11735
+ return e || (g.error("Haori", "Row fragment not found."), null);
11707
11736
  }
11708
11737
  /**
11709
11738
  * 行操作の対象となる `data-each` コンテナを解決します。
@@ -11719,20 +11748,20 @@ ${W}
11719
11748
  resolveRowContainer(e) {
11720
11749
  const t = this.options.targetFragment;
11721
11750
  if (!t)
11722
- return m.error("Haori", "Target fragment is not specified for row operation."), null;
11751
+ return g.error("Haori", "Target fragment is not specified for row operation."), null;
11723
11752
  const r = p.attrName(this.eventType, e), i = j.read(t, r);
11724
11753
  if (i !== null && i.trim() !== "") {
11725
11754
  const s = j.query(i, r, document);
11726
11755
  if (s === null)
11727
- return m.error(
11756
+ return g.error(
11728
11757
  "Haori",
11729
11758
  `Row container not found: ${i} (${r})`
11730
11759
  ), null;
11731
11760
  const a = T.get(s);
11732
- return a instanceof S ? a.hasAttribute(`${c.prefix}each`) ? a : (m.error(
11761
+ return a instanceof S ? a.hasAttribute(`${c.prefix}each`) ? a : (g.error(
11733
11762
  "Haori",
11734
11763
  `Row container must have ${c.prefix}each: ${i} (${r})`
11735
- ), null) : (m.error(
11764
+ ), null) : (g.error(
11736
11765
  "Haori",
11737
11766
  `Row container is not initialized: ${i} (${r})`
11738
11767
  ), null);
@@ -11759,45 +11788,45 @@ ${W}
11759
11788
  static resolveEachArray(e, t = !1) {
11760
11789
  const r = e.getRawAttribute(`${c.prefix}each`);
11761
11790
  if (r === null)
11762
- return t || m.error(
11791
+ return t || g.error(
11763
11792
  "Haori",
11764
11793
  `Row container has no ${c.prefix}each expression.`
11765
11794
  ), null;
11766
11795
  const i = e.getRawAttribute(`${c.prefix}each-array`), n = i !== null, s = n ? `${c.prefix}each-array` : `${c.prefix}each`, a = n ? i : r, o = a.trim().split(".");
11767
11796
  if (!(o.length > 0 && o.every((A) => /^[A-Za-z_$][\w$]*$/.test(A))))
11768
- return t || m.error(
11797
+ return t || g.error(
11769
11798
  "Haori",
11770
11799
  `Row operations require a plain identifier path for ${s} (got: ${a}).` + (n ? "" : ` Declare ${c.prefix}each-array to specify the array to write back to.`)
11771
11800
  ), null;
11772
11801
  if (n && e.getRawAttribute(`${c.prefix}each-key`) === null)
11773
- return t || m.error(
11802
+ return t || g.error(
11774
11803
  "Haori",
11775
11804
  `${c.prefix}each-array requires ${c.prefix}each-key (${c.prefix}each-array="${a}").`
11776
11805
  ), null;
11777
11806
  const u = p.resolveRowScopeBase(e, o[0]);
11778
11807
  if (u === "unresolvable")
11779
11808
  return null;
11780
- let d, g, y;
11809
+ let d, m, y;
11781
11810
  if (u)
11782
- d = u.owner, g = u.ownerData, y = [...u.path, ...o.slice(1)];
11811
+ d = u.owner, m = u.ownerData, y = [...u.path, ...o.slice(1)];
11783
11812
  else {
11784
- for (d = e, g = null; d; ) {
11813
+ for (d = e, m = null; d; ) {
11785
11814
  const A = d.getRawBindingData();
11786
11815
  if (A && o[0] in A && !p.isRowScopeKey(d, o[0])) {
11787
- g = A;
11816
+ m = A;
11788
11817
  break;
11789
11818
  }
11790
11819
  d = d.getParent();
11791
11820
  }
11792
11821
  y = o;
11793
11822
  }
11794
- if (!d || !g)
11795
- return t || m.error(
11823
+ if (!d || !m)
11824
+ return t || g.error(
11796
11825
  "Haori",
11797
11826
  `Binding data owner not found for ${s}="${a}".`
11798
11827
  ), null;
11799
- const E = p.readPathValue(g, y);
11800
- return Array.isArray(E) ? { owner: d, ownerData: g, array: E, path: y, mapped: n } : (t || m.error(
11828
+ const E = p.readPathValue(m, y);
11829
+ return Array.isArray(E) ? { owner: d, ownerData: m, array: E, path: y, mapped: n } : (t || g.error(
11801
11830
  "Haori",
11802
11831
  `${s}="${a}" does not resolve to an array.`
11803
11832
  ), null);
@@ -11830,7 +11859,7 @@ ${W}
11830
11859
  if (n.getAttribute(`${c.prefix}each-arg`) === t) {
11831
11860
  const s = p.resolveEachArray(n, !0);
11832
11861
  if (!s)
11833
- return m.error(
11862
+ return g.error(
11834
11863
  "Haori",
11835
11864
  `Row operations cannot resolve the write-back array for ${c.prefix}each="${e.getRawAttribute(
11836
11865
  `${c.prefix}each`
@@ -11941,10 +11970,10 @@ ${W}
11941
11970
  if (!r || !r.has(e))
11942
11971
  return { kind: "plain" };
11943
11972
  const i = r.get(e) ?? null;
11944
- return i === null ? (m.warn(
11973
+ return i === null ? (g.warn(
11945
11974
  "Haori",
11946
11975
  `Target is not a row of the ${c.prefix}each container (${t}).`
11947
- ), { kind: "skip" }) : p.getRowFragments(i).includes(e) ? { kind: "row", container: i } : (m.warn(
11976
+ ), { kind: "skip" }) : p.getRowFragments(i).includes(e) ? { kind: "row", container: i } : (g.warn(
11948
11977
  "Haori",
11949
11978
  `The target row is no longer in the ${c.prefix}each container; the write was skipped (${t}).`
11950
11979
  ), { kind: "skip" });
@@ -11977,16 +12006,16 @@ ${W}
11977
12006
  const d = p.resolveRowArrayIndex(u, a);
11978
12007
  if (d === null)
11979
12008
  continue;
11980
- const g = a[d];
11981
- if (g === null || typeof g != "object" || Array.isArray(g)) {
11982
- m.warn(
12009
+ const m = a[d];
12010
+ if (m === null || typeof m != "object" || Array.isArray(m)) {
12011
+ g.warn(
11983
12012
  "Haori",
11984
12013
  `Row data is not an object; the write was skipped (${u.attributeName}).`
11985
12014
  );
11986
12015
  continue;
11987
12016
  }
11988
- const y = u.apply(g);
11989
- if (p.isSameRowItem(g, y)) {
12017
+ const y = u.apply(m);
12018
+ if (p.isSameRowItem(m, y)) {
11990
12019
  u.syncWhenUnchanged && r.push(
11991
12020
  p.syncUnchangedRowValues(
11992
12021
  u.row,
@@ -12018,7 +12047,7 @@ ${W}
12018
12047
  );
12019
12048
  if (C.isEachUpdateRunning(n)) {
12020
12049
  l.catch((u) => {
12021
- m.error("Haori", "Failed to write row data.", u);
12050
+ g.error("Haori", "Failed to write row data.", u);
12022
12051
  });
12023
12052
  return;
12024
12053
  }
@@ -12104,27 +12133,27 @@ ${W}
12104
12133
  static resolveRowIndex(e, t, r, i) {
12105
12134
  const n = p.getRowFragments(e), s = n.indexOf(t);
12106
12135
  if (s === -1)
12107
- return m.warn(
12136
+ return g.warn(
12108
12137
  "Haori",
12109
12138
  `The target row is no longer in the ${c.prefix}each container; the write was skipped (${i}).`
12110
12139
  ), null;
12111
12140
  const a = e.getAttribute(`${c.prefix}each-key`), o = t.getListKey();
12112
12141
  if (a && o !== null) {
12113
12142
  const l = [];
12114
- r.forEach((g, y) => {
12143
+ r.forEach((m, y) => {
12115
12144
  C.createListKey(
12116
- g,
12145
+ m,
12117
12146
  String(a),
12118
12147
  y
12119
12148
  ) === o && l.push(y);
12120
12149
  });
12121
- const u = n.slice(0, s).filter((g) => g.getListKey() === o).length, d = l[u] ?? -1;
12122
- return d === -1 ? (m.warn(
12150
+ const u = n.slice(0, s).filter((m) => m.getListKey() === o).length, d = l[u] ?? -1;
12151
+ return d === -1 ? (g.warn(
12123
12152
  "Haori",
12124
12153
  `No array element corresponds to the target row (key "${o}"); the write was skipped (${i}).`
12125
12154
  ), null) : d;
12126
12155
  }
12127
- return s >= r.length ? (m.warn(
12156
+ return s >= r.length ? (g.warn(
12128
12157
  "Haori",
12129
12158
  `The target row index is out of range; the write was skipped (${i}).`
12130
12159
  ), null) : s;
@@ -12223,14 +12252,14 @@ ${W}
12223
12252
  () => l(o + 1)
12224
12253
  ))
12225
12254
  return Promise.resolve();
12226
- const g = /* @__PURE__ */ new Map();
12255
+ const m = /* @__PURE__ */ new Map();
12227
12256
  return a.forEach((y) => {
12228
12257
  const E = y.getListKey();
12229
- E !== null && !g.has(String(E)) && g.set(String(E), y);
12258
+ E !== null && !m.has(String(E)) && m.set(String(E), y);
12230
12259
  }), d.forEach((y, E) => {
12231
12260
  if (p.isSameRowItem(i.array[E], y))
12232
12261
  return;
12233
- const A = g.get(
12262
+ const A = m.get(
12234
12263
  C.createListKey(
12235
12264
  y,
12236
12265
  null,
@@ -12314,24 +12343,24 @@ class Xt {
12314
12343
  try {
12315
12344
  r = await fetch(e, t);
12316
12345
  } catch (n) {
12317
- throw m.error("[Haori]", "Failed to fetch import source:", e, n), new Error(`Failed to fetch: ${e}`);
12346
+ throw g.error("[Haori]", "Failed to fetch import source:", e, n), new Error(`Failed to fetch: ${e}`);
12318
12347
  }
12319
12348
  if (!r.ok) {
12320
12349
  yt(r.status);
12321
12350
  const n = `${r.status} ${r.statusText}`;
12322
- throw m.error("[Haori]", "Import HTTP error:", e, n), new Error(`Failed to load ${e}: ${n}`);
12351
+ throw g.error("[Haori]", "Import HTTP error:", e, n), new Error(`Failed to load ${e}: ${n}`);
12323
12352
  }
12324
12353
  let i;
12325
12354
  try {
12326
12355
  i = await r.text();
12327
12356
  } catch (n) {
12328
- throw m.error("[Haori]", "Failed to read response text:", e, n), new Error(`Failed to read response from: ${e}`);
12357
+ throw g.error("[Haori]", "Failed to read response text:", e, n), new Error(`Failed to read response from: ${e}`);
12329
12358
  }
12330
12359
  try {
12331
12360
  const s = new DOMParser().parseFromString(i, "text/html");
12332
- return s && s.body ? s.body.innerHTML : (m.warn("[Haori]", "No body found in imported document:", e), i);
12361
+ return s && s.body ? s.body.innerHTML : (g.warn("[Haori]", "No body found in imported document:", e), i);
12333
12362
  } catch (n) {
12334
- return m.error("[Haori]", "Failed to parse imported HTML:", e, n), i;
12363
+ return g.error("[Haori]", "Failed to parse imported HTML:", e, n), i;
12335
12364
  }
12336
12365
  }
12337
12366
  }
@@ -12507,7 +12536,7 @@ const f = class f {
12507
12536
  const r = e.getTarget();
12508
12537
  if (!t && f.initialValueRestores.size > 0 && e.hasAttribute(`${c.prefix}fetch-form`))
12509
12538
  return Promise.all(f.initialValueRestores).then(() => f.executeManagedFetch(e, !0)).catch((a) => {
12510
- m.error("Haori", `初期表示の取得に失敗しました: ${a}`);
12539
+ g.error("Haori", `初期表示の取得に失敗しました: ${a}`);
12511
12540
  }), Promise.resolve();
12512
12541
  const i = f.getReactiveFetchState(r), n = oe.resolveAutoFetchSignature(e);
12513
12542
  if (i.running)
@@ -12555,7 +12584,7 @@ const f = class f {
12555
12584
  });
12556
12585
  });
12557
12586
  }).catch((a) => {
12558
- t.removeAttribute(`${c.prefix}importing`), O.importError(t, n, a), m.error("[Haori]", "Failed to import HTML:", n, a);
12587
+ t.removeAttribute(`${c.prefix}importing`), O.importError(t, n, a), g.error("[Haori]", "Failed to import HTML:", n, a);
12559
12588
  }).finally(() => {
12560
12589
  if (r.running = !1, r.rerunRequested)
12561
12590
  return r.rerunRequested = !1, f.executeManagedImport(e);
@@ -12765,22 +12794,22 @@ const f = class f {
12765
12794
  case `${c.prefix}bind`: {
12766
12795
  if (r !== null && i && s instanceof S && s.consumeSelfWrittenBind(r))
12767
12796
  break;
12768
- const g = r === null ? {} : f.parseDataBind(r);
12797
+ const m = r === null ? {} : f.parseDataBind(r);
12769
12798
  if (i) {
12770
12799
  const y = n ?? S.nextSequence();
12771
12800
  return r === null ? (o.push(
12772
- f.setBindingData(e, g, {
12801
+ f.setBindingData(e, m, {
12773
12802
  reflectToAttribute: !1,
12774
12803
  sequence: y
12775
12804
  })
12776
12805
  ), o.push(s.removeAttribute(t))) : o.push(
12777
- f.setBindingData(e, g, {
12806
+ f.setBindingData(e, m, {
12778
12807
  sequence: y
12779
12808
  })
12780
12809
  ), Promise.all(o).then(() => {
12781
12810
  });
12782
12811
  }
12783
- r === null && s.clearBindingDataCache(), s.setBindingData(g);
12812
+ r === null && s.clearBindingDataCache(), s.setBindingData(m);
12784
12813
  break;
12785
12814
  }
12786
12815
  case `${c.prefix}derive`:
@@ -12827,8 +12856,8 @@ const f = class f {
12827
12856
  return r !== null && F.applyCustomValidity(s), Promise.all(o).then(() => {
12828
12857
  });
12829
12858
  case `${c.prefix}url-param`: {
12830
- const g = s.getAttribute(`${c.prefix}url-arg`), y = bt.readParams();
12831
- g === null && s.hasAttribute(`${c.prefix}store`) && m.warn(
12859
+ const m = s.getAttribute(`${c.prefix}url-arg`), y = bt.readParams();
12860
+ m === null && s.hasAttribute(`${c.prefix}store`) && g.warn(
12832
12861
  "Haori",
12833
12862
  `${c.prefix}url-param を ${c.prefix}url-arg なしで ${c.prefix}store と併用すると復元した値が消えます(${c.prefix}url-arg を指定してください)。`
12834
12863
  );
@@ -12837,11 +12866,11 @@ const f = class f {
12837
12866
  kind: "nonSupply",
12838
12867
  sequence: S.nextSequence()
12839
12868
  };
12840
- if (g === null)
12869
+ if (m === null)
12841
12870
  o.push(f.setBindingData(e, y, E));
12842
12871
  else {
12843
12872
  const A = s.getRawBindingData() || {};
12844
- A[String(g)] = y, o.push(f.setBindingData(e, A, E));
12873
+ A[String(m)] = y, o.push(f.setBindingData(e, A, E));
12845
12874
  }
12846
12875
  break;
12847
12876
  }
@@ -12850,8 +12879,8 @@ const f = class f {
12850
12879
  () => d === null ? void 0 : d()
12851
12880
  ).then(() => {
12852
12881
  if (l !== null)
12853
- return s.setDeriveInputSignature(u), l.then((g) => {
12854
- if (g)
12882
+ return s.setDeriveInputSignature(u), l.then((m) => {
12883
+ if (m)
12855
12884
  return f.reevaluateChildren(s);
12856
12885
  });
12857
12886
  }).then(() => {
@@ -12890,19 +12919,19 @@ const f = class f {
12890
12919
  ...r.editedPaths === void 0 ? {} : { editedPaths: r.editedPaths }
12891
12920
  }, d = o === "supply";
12892
12921
  d && i.markSupplyApplied(l);
12893
- const g = S.currentSequence(), y = i.getRawBindingData();
12922
+ const m = S.currentSequence(), y = i.getRawBindingData();
12894
12923
  d && (r.clearUserEdits ?? !0) && f.clearUserEditMarks(i, l);
12895
12924
  const E = a ? f.resolveByPathAuthority(i, y, t, u) : t;
12896
12925
  i.setBindingData(E), a && (O.bindChange(e, y, E, "manual"), Fe.mirror(i));
12897
12926
  const A = () => {
12898
12927
  i.markBindingWorkStart();
12899
- const N = i.getRawBindingData() ?? E;
12928
+ const k = i.getRawBindingData() ?? E;
12900
12929
  let M = a ? i.setAttribute(
12901
12930
  `${c.prefix}bind`,
12902
- JSON.stringify(f.withoutReservedBindingKeys(N))
12931
+ JSON.stringify(f.withoutReservedBindingKeys(k))
12903
12932
  ) : Promise.resolve();
12904
12933
  return e.tagName === "FORM" && (M = M.then(() => {
12905
- if (i.wasResetAfter(g))
12934
+ if (i.wasResetAfter(m))
12906
12935
  return;
12907
12936
  const q = i.getRawBindingData() ?? E;
12908
12937
  return F.syncValues(
@@ -12912,9 +12941,9 @@ const f = class f {
12912
12941
  u
12913
12942
  );
12914
12943
  })), M = M.then(
12915
- () => F.syncAncestorArgForms(i, g, u, y)
12944
+ () => F.syncAncestorArgForms(i, m, u, y)
12916
12945
  ), M = M.then(() => f.evaluateAll(i, n)), M = M.then(
12917
- () => S.retryUnappliedValueWrites(e, g)
12946
+ () => S.retryUnappliedValueWrites(e, m)
12918
12947
  ), M = M.then(
12919
12948
  () => f.reevaluateReactiveSpecialAttributes(i, n)
12920
12949
  ), M.then(
@@ -12981,7 +13010,7 @@ const f = class f {
12981
13010
  */
12982
13011
  static mergePathAuthority(e, t, r, i, n) {
12983
13012
  if (f.isPlainRecord(t) && f.isPlainRecord(r)) {
12984
- const u = t, d = r, g = {};
13013
+ const u = t, d = r, m = {};
12985
13014
  let y = Object.keys(u).some(
12986
13015
  (A) => !Object.prototype.hasOwnProperty.call(d, A)
12987
13016
  );
@@ -12990,20 +13019,20 @@ const f = class f {
12990
13019
  ...Object.keys(d)
12991
13020
  ]);
12992
13021
  for (const A of E) {
12993
- const N = n === "" ? A : `${n}.${A}`, M = f.mergePathAuthority(
13022
+ const k = n === "" ? A : `${n}.${A}`, M = f.mergePathAuthority(
12994
13023
  e,
12995
13024
  Object.prototype.hasOwnProperty.call(u, A) ? u[A] : f.ABSENT_PATH,
12996
13025
  Object.prototype.hasOwnProperty.call(d, A) ? d[A] : f.ABSENT_PATH,
12997
13026
  i,
12998
- N
13027
+ k
12999
13028
  );
13000
- M !== f.ABSENT_PATH && (g[A] = M), M !== (Object.prototype.hasOwnProperty.call(d, A) ? d[A] : f.ABSENT_PATH) && (y = !0);
13029
+ M !== f.ABSENT_PATH && (m[A] = M), M !== (Object.prototype.hasOwnProperty.call(d, A) ? d[A] : f.ABSENT_PATH) && (y = !0);
13001
13030
  }
13002
- return y ? g : d;
13031
+ return y ? m : d;
13003
13032
  }
13004
13033
  const s = f.resolveArrayPairing(e, t, r, n);
13005
13034
  if (s !== null) {
13006
- const u = t, d = r, g = d.map(
13035
+ const u = t, d = r, m = d.map(
13007
13036
  (y, E) => f.mergePathAuthority(
13008
13037
  e,
13009
13038
  u[E],
@@ -13012,7 +13041,7 @@ const f = class f {
13012
13041
  `${n}[${s[E]}]`
13013
13042
  )
13014
13043
  );
13015
- return g.some((y, E) => y !== d[E]) ? g : d;
13044
+ return m.some((y, E) => y !== d[E]) ? m : d;
13016
13045
  }
13017
13046
  if (f.isSameBindingValue(t, r))
13018
13047
  return r;
@@ -13186,7 +13215,7 @@ const f = class f {
13186
13215
  */
13187
13216
  static dumpScope(e) {
13188
13217
  const t = f.collectScope(e);
13189
- return V.isEnabled() && m.info("[Haori]", "scope dump for", e, t), t;
13218
+ return V.isEnabled() && g.info("[Haori]", "scope dump for", e, t), t;
13190
13219
  }
13191
13220
  /**
13192
13221
  * スコープの解決結果と由来を収集します。
@@ -13205,14 +13234,14 @@ const f = class f {
13205
13234
  const r = t.getBindingData(), i = {}, n = (l) => {
13206
13235
  const u = l.getTarget(), d = f.resolveElementId(u);
13207
13236
  return d !== "" ? `#${d}` : u.tagName.toLowerCase();
13208
- }, s = (l, u, d, g) => {
13237
+ }, s = (l, u, d, m) => {
13209
13238
  if (l)
13210
13239
  for (const y of Object.keys(l))
13211
13240
  y in i || (i[y] = {
13212
13241
  value: l[y],
13213
13242
  source: n(u),
13214
13243
  kind: d,
13215
- depth: g
13244
+ depth: m
13216
13245
  });
13217
13246
  };
13218
13247
  let a = t, o = 0;
@@ -13231,7 +13260,7 @@ const f = class f {
13231
13260
  try {
13232
13261
  return JSON.parse(e);
13233
13262
  } catch (t) {
13234
- return m.error("[Haori]", "Invalid JSON in data-bind:", t), {};
13263
+ return g.error("[Haori]", "Invalid JSON in data-bind:", t), {};
13235
13264
  }
13236
13265
  else {
13237
13266
  const t = new URLSearchParams(e), r = {};
@@ -13255,7 +13284,7 @@ const f = class f {
13255
13284
  if (n) {
13256
13285
  if (n.getParent() === r)
13257
13286
  return Promise.resolve();
13258
- if (r.insertBefore(n, i), n instanceof S)
13287
+ if (r.attachObserved(n, i), n instanceof S)
13259
13288
  return f.scan(n.getTarget());
13260
13289
  if (n instanceof ae)
13261
13290
  return f.evaluateText(n);
@@ -13376,14 +13405,14 @@ const f = class f {
13376
13405
  e.setDeriveInputSignature(E);
13377
13406
  })));
13378
13407
  }
13379
- let g = !1, y = 0;
13408
+ let m = !1, y = 0;
13380
13409
  return n && (r = r.then(() => {
13381
13410
  const E = e.isVisible();
13382
13411
  return y = S.currentSequence(), f.evaluateIf(e).then(() => {
13383
- g = !E && e.isVisible();
13412
+ m = !E && e.isVisible();
13384
13413
  });
13385
13414
  })), s ? (e.getDeriveSubtreeSignature() !== null && e.setDeriveSubtreeSignature(null), r.then(() => f.evaluateEachFixedChildren(e)).then(() => f.evaluateEach(e)).then(() => {
13386
- if (g)
13415
+ if (m)
13387
13416
  return f.applyEnhancersOnShow(e, y);
13388
13417
  })) : n ? (e.getDeriveSubtreeSignature() !== null && e.setDeriveSubtreeSignature(null), r.then(() => {
13389
13418
  })) : (i && (r = r.then(() => {
@@ -13478,7 +13507,7 @@ const f = class f {
13478
13507
  if (typeof t != "string" || t.indexOf("{{") >= 0)
13479
13508
  return;
13480
13509
  if (ne.hasCompileFailure(t)) {
13481
- m.warn(
13510
+ g.warn(
13482
13511
  "[Haori]",
13483
13512
  "data-if is hidden because the expression could not be compiled (see the preceding compile error):",
13484
13513
  t
@@ -13494,7 +13523,7 @@ const f = class f {
13494
13523
  const a = {};
13495
13524
  i.forEach((o) => {
13496
13525
  o in r && (a[o] = r[o]);
13497
- }), m.info(
13526
+ }), g.info(
13498
13527
  "[Haori]",
13499
13528
  "data-if is falsy (hidden):",
13500
13529
  t,
@@ -13633,7 +13662,7 @@ const f = class f {
13633
13662
  static triggerLoadOnShow(e) {
13634
13663
  const t = `${c.prefix}load-`;
13635
13664
  e.getTarget().getAttributeNames().some((i) => i.startsWith(t)) && new oe(e, "load").run().catch((i) => {
13636
- m.error("[Haori]", "data-load procedure error (on show):", i);
13665
+ g.error("[Haori]", "data-load procedure error (on show):", i);
13637
13666
  });
13638
13667
  }
13639
13668
  /**
@@ -13746,14 +13775,14 @@ ${r}
13746
13775
  ${r}
13747
13776
  `);
13748
13777
  } catch (n) {
13749
- m.error("[Haori]", `Invalid each-rendered-run script: ${n}`);
13778
+ g.error("[Haori]", `Invalid each-rendered-run script: ${n}`);
13750
13779
  }
13751
13780
  }
13752
13781
  if (i)
13753
13782
  try {
13754
13783
  i.call(e);
13755
13784
  } catch (n) {
13756
- m.error("[Haori]", `each-rendered-run execution error: ${n}`);
13785
+ g.error("[Haori]", `each-rendered-run execution error: ${n}`);
13757
13786
  }
13758
13787
  }
13759
13788
  /**
@@ -13784,7 +13813,7 @@ ${r}
13784
13813
  return;
13785
13814
  const i = String(r.getAttribute(t) ?? "").trim().toLowerCase();
13786
13815
  let n = !1;
13787
- if (i === "always" ? n = !0 : i !== "" && i !== "once" && (f.EACH_RENDERED_CHANGE_WARNED.has(r) || (f.EACH_RENDERED_CHANGE_WARNED.add(r), m.warn(
13816
+ if (i === "always" ? n = !0 : i !== "" && i !== "once" && (f.EACH_RENDERED_CHANGE_WARNED.has(r) || (f.EACH_RENDERED_CHANGE_WARNED.add(r), g.warn(
13788
13817
  "[Haori]",
13789
13818
  `Invalid ${t} value: "${i}". Use "once" (default) or "always".`
13790
13819
  ))), f.countEachRenderedRows(e) !== 0) {
@@ -13796,7 +13825,7 @@ ${r}
13796
13825
  try {
13797
13826
  r.dispatchEvent(new Event("change", { bubbles: !0 }));
13798
13827
  } catch (s) {
13799
- m.error("[Haori]", `each-rendered-change dispatch error: ${s}`);
13828
+ g.error("[Haori]", `each-rendered-change dispatch error: ${s}`);
13800
13829
  }
13801
13830
  }
13802
13831
  }
@@ -13890,7 +13919,7 @@ ${r}
13890
13919
  */
13891
13920
  static resolveEachItems(e) {
13892
13921
  const t = e.getAttributeEvaluation(`${c.prefix}each`), r = t?.value;
13893
- return t?.hasUnresolvedReference || r === !1 || r === null || r === void 0 ? [] : Array.isArray(r) ? r : (m.error("[Haori]", "Invalid each attribute:", r), null);
13922
+ return t?.hasUnresolvedReference || r === !1 || r === null || r === void 0 ? [] : Array.isArray(r) ? r : (g.error("[Haori]", "Invalid each attribute:", r), null);
13894
13923
  }
13895
13924
  /**
13896
13925
  * nested data-each の入力が同値で、要素自身に他の動的要素が無い場合は
@@ -14100,7 +14129,7 @@ ${r}
14100
14129
  });
14101
14130
  return Promise.all(r).then(() => {
14102
14131
  }).catch((i) => {
14103
- m.error("Haori", `${e} を読み直せませんでした: ${i}`);
14132
+ g.error("Haori", `${e} を読み直せませんでした: ${i}`);
14104
14133
  });
14105
14134
  }
14106
14135
  /**
@@ -14232,7 +14261,7 @@ ${r}
14232
14261
  */
14233
14262
  static logDerivedSubtreeProfileSnapshot(e, t) {
14234
14263
  const r = f.getOrCreateDerivedSubtreeProfile(e);
14235
- r !== null && (t === "skip-hit" ? r.skipHitCount += 1 : t === "skip-miss" ? r.skipMissCount += 1 : t === "skip-ineligible" && (r.skipIneligibleCount += 1), m.info("[Haori][derive-profile]", {
14264
+ r !== null && (t === "skip-hit" ? r.skipHitCount += 1 : t === "skip-miss" ? r.skipMissCount += 1 : t === "skip-ineligible" && (r.skipIneligibleCount += 1), g.info("[Haori][derive-profile]", {
14236
14265
  reason: t,
14237
14266
  hostId: r.hostId,
14238
14267
  signatureComputeTotal: r.signatureComputeTotal,
@@ -14299,7 +14328,7 @@ ${r}
14299
14328
  static updateDiff(e, t) {
14300
14329
  const r = e.getTemplate();
14301
14330
  if (r === null)
14302
- return m.error(
14331
+ return g.error(
14303
14332
  "[Haori]",
14304
14333
  `Template is not set for ${c.prefix}each="${e.getRawAttribute(`${c.prefix}each`)}". The container needs one element child as the row template.`,
14305
14334
  e.getTarget()
@@ -14316,7 +14345,7 @@ ${r}
14316
14345
  let d = e.getChildren().filter((I) => I instanceof S).filter(
14317
14346
  (I) => !I.hasAttribute(`${c.prefix}each-before`) && !I.hasAttribute(`${c.prefix}each-after`)
14318
14347
  );
14319
- const g = d.map((I) => I.getListKey()), y = /* @__PURE__ */ new Set();
14348
+ const m = d.map((I) => I.getListKey()), y = /* @__PURE__ */ new Set();
14320
14349
  d = d.filter((I, K) => {
14321
14350
  const J = String(I.getListKey()), re = l.get(J) ?? 0;
14322
14351
  if (re === 0) {
@@ -14334,7 +14363,7 @@ ${r}
14334
14363
  const J = A.get(K);
14335
14364
  J ? J.push(I) : A.set(K, [I]);
14336
14365
  });
14337
- const N = e.getChildElementFragments().filter((I) => !y.has(I)), M = N.filter(
14366
+ const k = e.getChildElementFragments().filter((I) => !y.has(I)), M = k.filter(
14338
14367
  (I) => I.hasAttribute(`${c.prefix}each-before`)
14339
14368
  ).length;
14340
14369
  let q = Promise.resolve();
@@ -14361,7 +14390,7 @@ ${r}
14361
14390
  f.repositionEachRow(
14362
14391
  e,
14363
14392
  H,
14364
- N,
14393
+ k,
14365
14394
  G
14366
14395
  ).then(($) => {
14367
14396
  if ($ !== null && O.rowMove(
@@ -14389,9 +14418,9 @@ ${r}
14389
14418
  s ? String(s) : null,
14390
14419
  I
14391
14420
  ).then(() => {
14392
- const D = N[G] ?? null;
14421
+ const D = k[G] ?? null;
14393
14422
  return e.insertBefore(H, D).then(() => {
14394
- N.splice(G, 0, H);
14423
+ k.splice(G, 0, H);
14395
14424
  }).then(() => f.initializeFreshEachRow(H)).then(() => f.applyRowFormValues(e, H, J)).then(() => {
14396
14425
  O.rowAdd(H.getTarget(), I, re, J);
14397
14426
  });
@@ -14403,7 +14432,7 @@ ${r}
14403
14432
  (G) => G !== null
14404
14433
  ), K = E.filter(
14405
14434
  (G) => G !== null
14406
- ), J = new Set(K), re = I.filter((G) => !J.has(G)), _ = g.filter(
14435
+ ), J = new Set(K), re = I.filter((G) => !J.has(G)), _ = m.filter(
14407
14436
  (G) => G !== null
14408
14437
  ).filter(
14409
14438
  (G) => !o.has(G)
@@ -14445,7 +14474,7 @@ ${r}
14445
14474
  ).filter(
14446
14475
  (r) => !r.hasAttribute(`${c.prefix}each-before`) && !r.hasAttribute(`${c.prefix}each-after`)
14447
14476
  );
14448
- t.length !== 0 && m.warn(
14477
+ t.length !== 0 && g.warn(
14449
14478
  "[Haori]",
14450
14479
  `${c.prefix}each="${e.getRawAttribute(`${c.prefix}each`)}" のコンテナに要素の子が 2 つ以上あります。テンプレートになるのは最初の子だけで、残り ${t.length} 個は行に入りません(${t.map((r) => r.getTarget().tagName.toLowerCase()).join(", ")})。行の中身は 1 つの要素で包んでください。`,
14451
14480
  e.getTarget()
@@ -14463,7 +14492,7 @@ ${r}
14463
14492
  * @returns 戻り値はありません。
14464
14493
  */
14465
14494
  static warnDuplicateEachKey(e) {
14466
- !V.isEnabled() || f.WARNED_DUPLICATE_EACH_KEYS.has(e) || (f.WARNED_DUPLICATE_EACH_KEYS.add(e), m.warn(
14495
+ !V.isEnabled() || f.WARNED_DUPLICATE_EACH_KEYS.has(e) || (f.WARNED_DUPLICATE_EACH_KEYS.add(e), g.warn(
14467
14496
  "[Haori]",
14468
14497
  `${c.prefix}each-key="${e}" の値が配列の中で重複しています。行は出現順で対応付けますが、キーによる行の識別はできません。`
14469
14498
  ));
@@ -14560,7 +14589,7 @@ ${r}
14560
14589
  else if (n)
14561
14590
  a = { [n]: t };
14562
14591
  else
14563
- return m.error(
14592
+ return g.error(
14564
14593
  "[Haori]",
14565
14594
  `Primitive value requires '${c.prefix}each-arg' attribute: ${t}`
14566
14595
  ), Promise.resolve(!1);
@@ -14780,7 +14809,7 @@ const Re = class Re {
14780
14809
  try {
14781
14810
  t();
14782
14811
  } catch (r) {
14783
- m.error("[Haori]", "Deferred event handling error:", r);
14812
+ g.error("[Haori]", "Deferred event handling error:", r);
14784
14813
  }
14785
14814
  }
14786
14815
  /**
@@ -14833,7 +14862,7 @@ const Re = class Re {
14833
14862
  if (e === null || e === "")
14834
14863
  return;
14835
14864
  if (Re.BUILTIN_EVENT_NAMES.has(e)) {
14836
- m.warn(
14865
+ g.warn(
14837
14866
  "[Haori]",
14838
14867
  `data-on="${e}" は組み込みイベントです。data-${e}-* を使用してください(data-on はカスタムイベント専用)。`
14839
14868
  );
@@ -14863,7 +14892,7 @@ const Re = class Re {
14863
14892
  return;
14864
14893
  const n = T.get(i);
14865
14894
  n instanceof S && this.isFromTarget(n, t) && new oe(n, "on", t).run().catch((s) => {
14866
- m.error("[Haori]", "Procedure execution error:", s);
14895
+ g.error("[Haori]", "Procedure execution error:", s);
14867
14896
  });
14868
14897
  });
14869
14898
  }
@@ -14950,7 +14979,7 @@ const Re = class Re {
14950
14979
  return;
14951
14980
  (t === "change" || t === "input") && this.syncUserEdit(e, t === "change");
14952
14981
  const n = () => {
14953
- const s = new oe(i, t, r).runWithOutcome().catch((a) => (m.error("[Haori]", "Procedure execution error:", a), "failure"));
14982
+ const s = new oe(i, t, r).runWithOutcome().catch((a) => (g.error("[Haori]", "Procedure execution error:", a), "failure"));
14954
14983
  if (t === "click") {
14955
14984
  oe.recordClickOutcome(e, s);
14956
14985
  const a = r.target;
@@ -15184,7 +15213,7 @@ const U = class U {
15184
15213
  new oe(t.fragment, "intersect").runWithResult().then((i) => {
15185
15214
  r = i;
15186
15215
  }).catch((i) => {
15187
- m.error("[Haori]", "Intersect procedure execution error:", i);
15216
+ g.error("[Haori]", "Intersect procedure execution error:", i);
15188
15217
  }).finally(() => {
15189
15218
  const i = U.registrations.get(e);
15190
15219
  if (i) {
@@ -15252,7 +15281,7 @@ const U = class U {
15252
15281
  if (typeof r != "string" || r.trim() === "")
15253
15282
  return null;
15254
15283
  const i = j.query(r, t, document);
15255
- return U.isHtmlElement(i) ? i : (m.error("[Haori]", `Intersect root element not found: ${r}`), null);
15284
+ return U.isHtmlElement(i) ? i : (g.error("[Haori]", `Intersect root element not found: ${r}`), null);
15256
15285
  }
15257
15286
  static resolveRootMargin(e) {
15258
15287
  const t = `${c.prefix}intersect-root-margin`, r = e.getAttribute(t);
@@ -15473,7 +15502,7 @@ const v = class v {
15473
15502
  "poll"
15474
15503
  ).runWithResult();
15475
15504
  } catch (n) {
15476
- m.error("[Haori]", "Poll procedure execution error:", n);
15505
+ g.error("[Haori]", "Poll procedure execution error:", n);
15477
15506
  } finally {
15478
15507
  t.fetching = !1;
15479
15508
  }
@@ -15653,7 +15682,7 @@ const v = class v {
15653
15682
  document
15654
15683
  );
15655
15684
  if (n.length === 0)
15656
- return m.error("[Haori]", `Poll state element not found: ${i}`), [];
15685
+ return g.error("[Haori]", `Poll state element not found: ${i}`), [];
15657
15686
  const s = [];
15658
15687
  return n.forEach((a) => {
15659
15688
  if (!a.isConnected)
@@ -15676,10 +15705,10 @@ const v = class v {
15676
15705
  if (!e.hasAttribute(t))
15677
15706
  return v.DEFAULT_INTERVAL_MS;
15678
15707
  const r = v.toNumber(e.getAttribute(t));
15679
- return r === null ? (m.warn(
15708
+ return r === null ? (g.warn(
15680
15709
  "[Haori]",
15681
15710
  `${t} は数値で指定してください。既定値 ${v.DEFAULT_INTERVAL_MS}ms を使用します。`
15682
- ), v.DEFAULT_INTERVAL_MS) : r < v.MIN_INTERVAL_MS ? (m.warn(
15711
+ ), v.DEFAULT_INTERVAL_MS) : r < v.MIN_INTERVAL_MS ? (g.warn(
15683
15712
  "[Haori]",
15684
15713
  `${t} の下限は ${v.MIN_INTERVAL_MS}ms です。${r}ms は下限へ切り上げます。`
15685
15714
  ), v.MIN_INTERVAL_MS) : r;
@@ -15695,7 +15724,7 @@ const v = class v {
15695
15724
  if (!e.hasAttribute(t))
15696
15725
  return null;
15697
15726
  const r = v.toNumber(e.getAttribute(t));
15698
- return r === null || r <= 0 ? (m.warn(
15727
+ return r === null || r <= 0 ? (g.warn(
15699
15728
  "[Haori]",
15700
15729
  `${t} は正の数値で指定してください。無制限として扱います。`
15701
15730
  ), null) : r;
@@ -15711,7 +15740,7 @@ const v = class v {
15711
15740
  if (!e.hasAttribute(t))
15712
15741
  return null;
15713
15742
  const r = v.toNumber(e.getAttribute(t));
15714
- return r === null || r < 1 ? (m.warn(
15743
+ return r === null || r < 1 ? (g.warn(
15715
15744
  "[Haori]",
15716
15745
  `${t} は 1 以上の数値で指定してください。無制限として扱います。`
15717
15746
  ), null) : Math.floor(r);
@@ -15770,7 +15799,7 @@ const v = class v {
15770
15799
  if (!e.hasAttribute(t))
15771
15800
  return !1;
15772
15801
  const r = e.getAttributeEvaluation(t);
15773
- return r ? r.hasUnresolvedReference ? (m.warn(
15802
+ return r ? r.hasUnresolvedReference ? (g.warn(
15774
15803
  "[Haori]",
15775
15804
  `${t} に未解決の参照が含まれています(停止条件は成立扱いにしません):`,
15776
15805
  e.getRawAttribute(t),
@@ -15807,7 +15836,7 @@ v.CONFIG_KEYS = /* @__PURE__ */ new Set([
15807
15836
  "state"
15808
15837
  ]), v.DEFAULT_INTERVAL_MS = 5e3, v.MIN_INTERVAL_MS = 100, v.registrations = /* @__PURE__ */ new Map(), v.visibilityListener = null;
15809
15838
  let we = v;
15810
- const Jt = "0.59.4";
15839
+ const Jt = "0.59.5";
15811
15840
  function Zt(b) {
15812
15841
  typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => b()) : Promise.resolve().then(b);
15813
15842
  }
@@ -15850,7 +15879,7 @@ const L = class L {
15850
15879
  return;
15851
15880
  const i = L.resolveVarName(r);
15852
15881
  if (i === "") {
15853
- t && (t.observer.disconnect(), L.registrations.delete(e)), m.warn(
15882
+ t && (t.observer.disconnect(), L.registrations.delete(e)), g.warn(
15854
15883
  "[Haori]",
15855
15884
  'data-each-visible requires a variable name (e.g. data-each-visible="visibleRange").'
15856
15885
  );
@@ -15868,9 +15897,9 @@ const L = class L {
15868
15897
  if (!u)
15869
15898
  return;
15870
15899
  let d = !1;
15871
- l.forEach((g) => {
15872
- const y = g.target;
15873
- u.observedRows.has(y) && (g.isIntersecting ? u.visibleRows.has(y) || (u.visibleRows.add(y), d = !0) : u.visibleRows.delete(y) && (d = !0));
15900
+ l.forEach((m) => {
15901
+ const y = m.target;
15902
+ u.observedRows.has(y) && (m.isIntersecting ? u.visibleRows.has(y) || (u.visibleRows.add(y), d = !0) : u.visibleRows.delete(y) && (d = !0));
15874
15903
  }), d && L.scheduleCompute(u);
15875
15904
  },
15876
15905
  {
@@ -15947,7 +15976,7 @@ const L = class L {
15947
15976
  if (typeof r != "string" || r.trim() === "")
15948
15977
  return null;
15949
15978
  const i = j.query(r, t, document);
15950
- return L.isHtmlElement(i) ? i : (m.error("[Haori]", `Visible range root element not found: ${r}`), null);
15979
+ return L.isHtmlElement(i) ? i : (g.error("[Haori]", `Visible range root element not found: ${r}`), null);
15951
15980
  }
15952
15981
  /**
15953
15982
  * rootMargin を解決します。
@@ -16046,7 +16075,7 @@ const L = class L {
16046
16075
  static publish(e, t) {
16047
16076
  const r = L.resolveBindOwner(e.fragment);
16048
16077
  if (!r) {
16049
- m.warn(
16078
+ g.warn(
16050
16079
  "[Haori]",
16051
16080
  "data-each-visible found no ancestor data-bind scope to publish into."
16052
16081
  );
@@ -16065,7 +16094,7 @@ const L = class L {
16065
16094
  kind: "nonSupply",
16066
16095
  sequence: S.nextSequence()
16067
16096
  }).catch((o) => {
16068
- m.error("[Haori]", "Failed to publish visible range:", o);
16097
+ g.error("[Haori]", "Failed to publish visible range:", o);
16069
16098
  });
16070
16099
  }
16071
16100
  /**
@@ -16114,11 +16143,11 @@ const B = class B {
16114
16143
  C.scan(document.head),
16115
16144
  C.scan(document.body)
16116
16145
  ]), [r, i] = t;
16117
- r.status !== "fulfilled" && m.error(
16146
+ r.status !== "fulfilled" && g.error(
16118
16147
  "[Haori]",
16119
16148
  "Failed to build head fragment:",
16120
16149
  r.reason
16121
- ), i.status !== "fulfilled" && m.error(
16150
+ ), i.status !== "fulfilled" && g.error(
16122
16151
  "[Haori]",
16123
16152
  "Failed to build body fragment:",
16124
16153
  i.reason
@@ -16370,7 +16399,7 @@ const B = class B {
16370
16399
  break;
16371
16400
  }
16372
16401
  case "characterData": {
16373
- r.target instanceof Text || r.target instanceof Comment ? C.changeText(r.target, r.target.textContent) : m.warn(
16402
+ r.target instanceof Text || r.target instanceof Comment ? C.changeText(r.target, r.target.textContent) : g.warn(
16374
16403
  "[Haori]",
16375
16404
  "Unsupported character data type:",
16376
16405
  r.target
@@ -16378,18 +16407,18 @@ const B = class B {
16378
16407
  break;
16379
16408
  }
16380
16409
  default:
16381
- m.warn("[Haori]", "Unknown mutation type:", r.type);
16410
+ g.warn("[Haori]", "Unknown mutation type:", r.type);
16382
16411
  continue;
16383
16412
  }
16384
16413
  } catch (i) {
16385
- m.error("[Haori]", "Error processing mutation:", i);
16414
+ g.error("[Haori]", "Error processing mutation:", i);
16386
16415
  }
16387
16416
  }
16388
16417
  };
16389
16418
  B._initialized = !1, B._mutationObservers = [], B._dispatcher = null, B._initialIntakes = null;
16390
- let ke = B;
16391
- te.setMutationCapture((b) => ke.captureMutations(b));
16392
- document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", ke.init) : ke.init();
16419
+ let Ne = B;
16420
+ te.setMutationCapture((b) => Ne.captureMutations(b));
16421
+ document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", Ne.init) : Ne.init();
16393
16422
  const Qt = () => Te.waitForRenders(), _t = Te.enhancers;
16394
16423
  export {
16395
16424
  C as Core,
@@ -16398,7 +16427,7 @@ export {
16398
16427
  F as Form,
16399
16428
  T as Fragment,
16400
16429
  Te as Haori,
16401
- m as Log,
16430
+ g as Log,
16402
16431
  z as Queue,
16403
16432
  Te as default,
16404
16433
  _t as enhancers,