@cardenelabs/cdl 0.58.0 → 0.59.1

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/index.cjs CHANGED
@@ -425,7 +425,147 @@ var en = {
425
425
  /** `shape-api-gateway` の 2 行目の宛先 */
426
426
  "apiGateway.orders": "/orders",
427
427
  /** `shape-api-gateway` の 3 行目の宛先 */
428
- "apiGateway.session": "/session"
428
+ "apiGateway.session": "/session",
429
+ // 読み出し (`readout.*`) と入力欄の固定の字 (#849)。
430
+ // `{名前}` は描く時に値を差し込む位置 (`字を差し込む`)。 語順が言語で変わるので、位置ごと辞書に持つ
431
+ /** 配列を描く読み出しで、値が空の時の字 */
432
+ "readout.empty": "empty",
433
+ /** `sparkline` で点がまだ無い時の字 */
434
+ "readout.sparkline.waiting": "waiting",
435
+ /** 時の流れの入力欄の速さ */
436
+ "input.timeline.speed": "{speed}x",
437
+ /** 時の流れの入力欄の経過と長さ (秒) */
438
+ "input.timeline.time": "{t}s / {d}s",
439
+ /** `sequence-timeline` の点の見出し */
440
+ "readout.sequenceTimeline.title": "{name}: t={t}",
441
+ /** `bubble-chart` の泡の見出し */
442
+ "readout.bubbleChart.title": "({x}, {y}) r={r}",
443
+ /** `calendar-heatmap` の升目の見出し (`i` は 0 から) */
444
+ "readout.calendarHeatmap.title": "day {i}: {v}",
445
+ /** `candlestick` の足の見出し (始値 / 高値 / 安値 / 終値) */
446
+ "readout.candlestick.title": "O:{o} H:{h} L:{l} C:{c}",
447
+ /** `slope` の左の目盛 */
448
+ "readout.slope.before": "before",
449
+ /** `slope` の右の目盛 */
450
+ "readout.slope.after": "after",
451
+ /** `bullet-chart` の実績の見出し */
452
+ "readout.bulletChart.actual": "actual: {v}",
453
+ /** `bullet-chart` の目標の見出し */
454
+ "readout.bulletChart.target": "target: {v}",
455
+ /** `rating` の塗った星の見出し */
456
+ "readout.rating.full": "full",
457
+ /** `rating` の半分塗った星の見出し */
458
+ "readout.rating.half": "half",
459
+ /** `rating` の塗っていない星の見出し */
460
+ "readout.rating.empty": "empty",
461
+ /** `price-tag` の割引額 */
462
+ "readout.priceTag.save": "You save {amount}",
463
+ /** `confidence-meter` の低い帯の名前 */
464
+ "readout.confidence.low": "low",
465
+ /** `confidence-meter` の中ほどの帯の名前 */
466
+ "readout.confidence.mid": "mid",
467
+ /** `confidence-meter` の高い帯の名前 */
468
+ "readout.confidence.high": "high",
469
+ /** 並べきれなかった件数 (`user-stack` / `kanban-board` / `user-presence`) */
470
+ "readout.more": "+{n} more",
471
+ /** `video-card` の再生数 */
472
+ "readout.videoCard.views": "{v} views",
473
+ /** `attendance-grid` の角の見出し */
474
+ "readout.attendance.corner": "day",
475
+ /** `calendar-month` の曜日 (日曜) */
476
+ "readout.weekday.0": "Sun",
477
+ /** `calendar-month` の曜日 (月曜) */
478
+ "readout.weekday.1": "Mon",
479
+ /** `calendar-month` の曜日 (火曜) */
480
+ "readout.weekday.2": "Tue",
481
+ /** `calendar-month` の曜日 (水曜) */
482
+ "readout.weekday.3": "Wed",
483
+ /** `calendar-month` の曜日 (木曜) */
484
+ "readout.weekday.4": "Thu",
485
+ /** `calendar-month` の曜日 (金曜) */
486
+ "readout.weekday.5": "Fri",
487
+ /** `calendar-month` の曜日 (土曜) */
488
+ "readout.weekday.6": "Sat",
489
+ /** `rating-thumb` の賛成の割合と票数 */
490
+ "readout.ratingThumb.summary": "{pct}% up \xB7 {total} votes",
491
+ /** `kpi-trend-tile` の前の期間の値 */
492
+ "readout.kpiTrend.prev": "prev {v}",
493
+ /** `quick-poll-emoji` の票の合計 */
494
+ "readout.poll.total": "total {n}",
495
+ /** `thread-summary` の参加者の数 */
496
+ "readout.thread.participants": "{n} participants",
497
+ /** `thread-summary` の最後に書いた人 */
498
+ "readout.thread.last": "last: {name}",
499
+ /** `read-receipt` の送信した段 */
500
+ "readout.readReceipt.sent": "sent",
501
+ /** `read-receipt` の相手に届いた段 */
502
+ "readout.readReceipt.delivered": "delivered",
503
+ /** `read-receipt` の読まれた段 */
504
+ "readout.readReceipt.read": "read",
505
+ /** `password-strength` の段階 0 */
506
+ "readout.password.0": "too weak",
507
+ /** `password-strength` の段階 1 */
508
+ "readout.password.1": "weak",
509
+ /** `password-strength` の段階 2 */
510
+ "readout.password.2": "fair",
511
+ /** `password-strength` の段階 3 */
512
+ "readout.password.3": "good",
513
+ /** `password-strength` の段階 4 */
514
+ "readout.password.4": "strong",
515
+ /** `file-dropzone` で取り込んだ後の字 */
516
+ "readout.dropzone.uploaded": "uploaded",
517
+ /** `file-dropzone` の空の時の 1 行目 */
518
+ "readout.dropzone.drop": "\u2B06 Drop file here",
519
+ /** `file-dropzone` の空の時の 2 行目 */
520
+ "readout.dropzone.browse": "or click to browse",
521
+ /** `log-stream` の重さ 0 (調べるための詳細) */
522
+ "readout.log.0": "DBG",
523
+ /** `log-stream` の重さ 1 (知らせ) */
524
+ "readout.log.1": "INF",
525
+ /** `log-stream` の重さ 2 (警告) */
526
+ "readout.log.2": "WRN",
527
+ /** `log-stream` の重さ 3 (異常) */
528
+ "readout.log.3": "ERR",
529
+ /** `cart-summary` の点数 */
530
+ "readout.cart.items": "Items",
531
+ /** `cart-summary` の小計 */
532
+ "readout.cart.subtotal": "Subtotal",
533
+ /** `cart-summary` の送料 */
534
+ "readout.cart.shipping": "Shipping",
535
+ /** `cart-summary` の合計 */
536
+ "readout.cart.total": "Total",
537
+ /** `pricing-tier` で名前が空の時の名前 */
538
+ "readout.pricing.plan": "Plan",
539
+ /** `pricing-tier` の価格の後ろ */
540
+ "readout.pricing.perMonth": "per month",
541
+ /** `pricing-tier` の押す札 */
542
+ "readout.pricing.get": "Get {name}",
543
+ /** `coupon-code` で番号が空の時の字 */
544
+ "readout.coupon.placeholder": "ENTER CODE",
545
+ /** `coupon-code` の割引の割合 */
546
+ "readout.coupon.off": "-{pct}% off",
547
+ /** `coupon-code` の押す札 */
548
+ "readout.coupon.apply": "Apply",
549
+ /** `article-preview` の書いた人 */
550
+ "readout.article.by": "by {author}",
551
+ /** `priority-badge` の高い優先度の表示 (値は `high` / `2` で読む) */
552
+ "readout.priority.high": "HIGH",
553
+ /** `priority-badge` の中ほどの優先度の表示 */
554
+ "readout.priority.med": "MED",
555
+ /** `priority-badge` の低い優先度の表示 (値は `low` / `0` で読む) */
556
+ "readout.priority.low": "LOW",
557
+ /** `kanban-board` の列の見出し (値は `todo` で読む) */
558
+ "readout.kanban.todo": "Todo",
559
+ /** `kanban-board` の列の見出し (値は `inprogress` で読む) */
560
+ "readout.kanban.inprogress": "In Progress",
561
+ /** `kanban-board` の列の見出し (値は `done` で読む) */
562
+ "readout.kanban.done": "Done",
563
+ /** `traffic-light` の赤の灯の見出し (値は `red` で読む) */
564
+ "readout.trafficLight.red": "red",
565
+ /** `traffic-light` の黄の灯の見出し (値は `yellow` / `amber` で読む) */
566
+ "readout.trafficLight.yellow": "yellow",
567
+ /** `traffic-light` の緑の灯の見出し (値は `green` で読む) */
568
+ "readout.trafficLight.green": "green"
429
569
  };
430
570
  var ja = {
431
571
  "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
@@ -461,13 +601,85 @@ var ja = {
461
601
  "apiGateway.delete": "DELETE",
462
602
  "apiGateway.users": "/\u5229\u7528\u8005",
463
603
  "apiGateway.orders": "/\u6CE8\u6587",
464
- "apiGateway.session": "/\u63A5\u7D9A"
604
+ "apiGateway.session": "/\u63A5\u7D9A",
605
+ "readout.empty": "\u306A\u3057",
606
+ "readout.sparkline.waiting": "\u5F85\u6A5F\u4E2D",
607
+ "input.timeline.speed": "{speed}\u500D",
608
+ "input.timeline.time": "{t}\u79D2 / {d}\u79D2",
609
+ "readout.sequenceTimeline.title": "{name}: \u6642\u523B {t}",
610
+ "readout.bubbleChart.title": "({x}, {y}) \u534A\u5F84 {r}",
611
+ "readout.calendarHeatmap.title": "{i} \u65E5\u76EE: {v}",
612
+ "readout.candlestick.title": "\u59CB {o} \u9AD8 {h} \u5B89 {l} \u7D42 {c}",
613
+ "readout.slope.before": "\u524D",
614
+ "readout.slope.after": "\u5F8C",
615
+ "readout.bulletChart.actual": "\u5B9F\u7E3E: {v}",
616
+ "readout.bulletChart.target": "\u76EE\u6A19: {v}",
617
+ "readout.rating.full": "\u6E80",
618
+ "readout.rating.half": "\u534A\u5206",
619
+ "readout.rating.empty": "\u7A7A",
620
+ "readout.priceTag.save": "{amount} \u304A\u5F97",
621
+ "readout.confidence.low": "\u4F4E",
622
+ "readout.confidence.mid": "\u4E2D",
623
+ "readout.confidence.high": "\u9AD8",
624
+ "readout.more": "\u307B\u304B {n}",
625
+ "readout.videoCard.views": "{v} \u56DE\u8996\u8074",
626
+ "readout.attendance.corner": "\u65E5",
627
+ "readout.weekday.0": "\u65E5",
628
+ "readout.weekday.1": "\u6708",
629
+ "readout.weekday.2": "\u706B",
630
+ "readout.weekday.3": "\u6C34",
631
+ "readout.weekday.4": "\u6728",
632
+ "readout.weekday.5": "\u91D1",
633
+ "readout.weekday.6": "\u571F",
634
+ "readout.ratingThumb.summary": "\u8CDB\u6210 {pct}% \xB7 {total} \u7968",
635
+ "readout.kpiTrend.prev": "\u524D\u56DE {v}",
636
+ "readout.poll.total": "\u5408\u8A08 {n}",
637
+ "readout.thread.participants": "{n} \u4EBA",
638
+ "readout.thread.last": "\u6700\u5F8C: {name}",
639
+ "readout.readReceipt.sent": "\u9001\u4FE1\u6E08\u307F",
640
+ "readout.readReceipt.delivered": "\u914D\u4FE1\u6E08\u307F",
641
+ "readout.readReceipt.read": "\u65E2\u8AAD",
642
+ "readout.password.0": "\u5F31\u3059\u304E\u308B",
643
+ "readout.password.1": "\u5F31\u3044",
644
+ "readout.password.2": "\u666E\u901A",
645
+ "readout.password.3": "\u826F\u3044",
646
+ "readout.password.4": "\u5F37\u3044",
647
+ "readout.dropzone.uploaded": "\u53D6\u308A\u8FBC\u307F\u6E08\u307F",
648
+ "readout.dropzone.drop": "\u2B06 \u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F",
649
+ "readout.dropzone.browse": "\u307E\u305F\u306F\u62BC\u3057\u3066\u9078\u3076",
650
+ "readout.log.0": "\u8A73\u7D30",
651
+ "readout.log.1": "\u60C5\u5831",
652
+ "readout.log.2": "\u8B66\u544A",
653
+ "readout.log.3": "\u7570\u5E38",
654
+ "readout.cart.items": "\u70B9\u6570",
655
+ "readout.cart.subtotal": "\u5C0F\u8A08",
656
+ "readout.cart.shipping": "\u9001\u6599",
657
+ "readout.cart.total": "\u5408\u8A08",
658
+ "readout.pricing.plan": "\u30D7\u30E9\u30F3",
659
+ "readout.pricing.perMonth": "\u6708\u984D",
660
+ "readout.pricing.get": "{name}\u3092\u9078\u3076",
661
+ "readout.coupon.placeholder": "\u30B3\u30FC\u30C9\u3092\u5165\u529B",
662
+ "readout.coupon.off": "-{pct}% \u5F15\u304D",
663
+ "readout.coupon.apply": "\u9069\u7528",
664
+ "readout.article.by": "\u6587: {author}",
665
+ "readout.priority.high": "\u9AD8",
666
+ "readout.priority.med": "\u4E2D",
667
+ "readout.priority.low": "\u4F4E",
668
+ "readout.kanban.todo": "\u672A\u7740\u624B",
669
+ "readout.kanban.inprogress": "\u9032\u884C\u4E2D",
670
+ "readout.kanban.done": "\u5B8C\u4E86",
671
+ "readout.trafficLight.red": "\u8D64",
672
+ "readout.trafficLight.yellow": "\u9EC4",
673
+ "readout.trafficLight.green": "\u7DD1"
465
674
  };
466
675
  var CDL_TEXT = { en, ja };
467
676
  function \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang) {
468
677
  const \u8A00\u8A9E = lang ?? "en";
469
678
  return (key) => CDL_TEXT[\u8A00\u8A9E][key];
470
679
  }
680
+ function \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(template, values) {
681
+ return template.replace(/\{(\w+)\}/g, (whole, name) => name in values ? String(values[name]) : whole);
682
+ }
471
683
 
472
684
  // src/formula/ast.ts
473
685
  var ALLOWED_MATH_FNS = /* @__PURE__ */ new Set([
@@ -1379,6 +1591,83 @@ function textWidth(s, size, \u5B57\u9001\u308A = 0) {
1379
1591
  }
1380
1592
  return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
1381
1593
  }
1594
+
1595
+ // src/kinds/row-align.ts
1596
+ var GENERIC_ROW_LEFT_SIZE_PX = 18;
1597
+ var GENERIC_ROW_RIGHT_SIZE_PX = 21;
1598
+ var MONO_ADVANCE_RATIO = 0.6;
1599
+ var STORAGE_CHAR_ADVANCE_PX = 26 * MONO_ADVANCE_RATIO;
1600
+ var ROW_PAD_X_PX = 26;
1601
+ var ROW_COL_GAP_PX = 16;
1602
+ var STORAGE_COL_GAP_PX = 32;
1603
+ var ROW_RIGHT_PAD_PX = 26;
1604
+ var DELIMITERS = [" -> ", " \u2192 ", " = ", ": ", ":"];
1605
+ function splitRow(row) {
1606
+ for (const d of DELIMITERS) {
1607
+ const idx = row.indexOf(d);
1608
+ if (idx > 0) {
1609
+ return {
1610
+ left: row.slice(0, idx).trim(),
1611
+ right: row.slice(idx + d.length).trim(),
1612
+ split: true
1613
+ };
1614
+ }
1615
+ }
1616
+ return { left: row.trim(), right: "", split: false };
1617
+ }
1618
+ function rowColumnWidth(text, size, mono) {
1619
+ return mono ? displayWidth(text) * size * MONO_ADVANCE_RATIO : textWidth(text, size);
1620
+ }
1621
+ function displayWidth(text) {
1622
+ let w = 0;
1623
+ for (const ch of text) {
1624
+ const code = ch.codePointAt(0) ?? 0;
1625
+ w += code >= 32 && code <= 126 ? 1 : 2;
1626
+ }
1627
+ return w;
1628
+ }
1629
+ function \u6841\u3067\u5272\u308B(text, \u6841) {
1630
+ let w = 0;
1631
+ let \u53D6\u3063\u305F = "";
1632
+ for (const ch of text) {
1633
+ const code = ch.codePointAt(0) ?? 0;
1634
+ const \u5B57\u306E\u6841 = code >= 32 && code <= 126 ? 1 : 2;
1635
+ if (w + \u5B57\u306E\u6841 > \u6841) break;
1636
+ w += \u5B57\u306E\u6841;
1637
+ \u53D6\u3063\u305F += ch;
1638
+ }
1639
+ return [\u53D6\u3063\u305F, text.slice(\u53D6\u3063\u305F.length)];
1640
+ }
1641
+ function \u6841\u3067\u7701\u304F(text, \u4E0A\u9650) {
1642
+ if (displayWidth(text) <= \u4E0A\u9650) return text;
1643
+ return `${\u6841\u3067\u5272\u308B(text, \u4E0A\u9650 - 1)[0]}\u2026`;
1644
+ }
1645
+ function requiredRowsWidth(rows, kind) {
1646
+ if (!rows || rows.length === 0) return 0;
1647
+ const splits = rows.map(splitRow);
1648
+ const \u4E00\u756A\u5E83\u3044 = (\u53D6\u308B) => splits.reduce((m, s) => Math.max(m, \u53D6\u308B(s)), 0);
1649
+ const storage = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, 26, true)) + STORAGE_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, 26, true)) + ROW_RIGHT_PAD_PX;
1650
+ const generic = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, GENERIC_ROW_LEFT_SIZE_PX, false)) + ROW_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, GENERIC_ROW_RIGHT_SIZE_PX, true)) + ROW_RIGHT_PAD_PX;
1651
+ if (kind === void 0) return Math.ceil(Math.max(storage, generic));
1652
+ return Math.ceil(kind === "storage" ? storage : generic);
1653
+ }
1654
+ var \u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E = react.createContext("en");
1655
+ function use\u5B57\u5F15() {
1656
+ const lang = react.useContext(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E);
1657
+ return (key, values) => values ? \u5B57\u3092\u5DEE\u3057\u8FBC\u3080(CDL_TEXT[lang][key], values) : CDL_TEXT[lang][key];
1658
+ }
1659
+ function \u5B57({ k, v }) {
1660
+ const \u5F15\u304F = use\u5B57\u5F15();
1661
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: \u5F15\u304F(k, v) });
1662
+ }
1663
+ function \u5B57\u306E\u898B\u51FA\u3057({
1664
+ k,
1665
+ v,
1666
+ \u524D = ""
1667
+ }) {
1668
+ const \u5F15\u304F = use\u5B57\u5F15();
1669
+ return /* @__PURE__ */ jsxRuntime.jsx("title", { children: k === void 0 ? "" : `${\u524D}${\u5F15\u304F(k, v)}` });
1670
+ }
1382
1671
  function createInteractiveSignalsAccessor(diagram2, signals, formula, scroll) {
1383
1672
  const kindByInputId = /* @__PURE__ */ new Map();
1384
1673
  for (const inp of diagram2.inputs ?? []) {
@@ -1693,20 +1982,23 @@ function useInteractiveIntegration(diagram2, options = {}) {
1693
1982
  const readouts = diagram2.readouts ?? [];
1694
1983
  if (inputs.length === 0 && scrolls.length === 0 && formulasList.length === 0 && readouts.length === 0)
1695
1984
  return null;
1696
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
1697
- inputs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
1698
- formulasList.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
1699
- FormulaReadout,
1700
- {
1701
- id: f.id,
1702
- expression: f.expression,
1703
- value: stateOverrides[f.id]
1704
- },
1705
- f.id
1706
- )) }),
1707
- scrolls.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsxRuntime.jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
1708
- readouts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
1709
- ] });
1985
+ return (
1986
+ // 操作部の中の読み出しと入力欄へ、図の言語を届ける (#849)。 型の外の値は英語に落ちる
1987
+ /* @__PURE__ */ jsxRuntime.jsx(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E.Provider, { value: resolveLang(diagram2.lang), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-root", "data-cdl-interactive-panel": "true", children: [
1988
+ inputs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: inputs.map((input) => /* @__PURE__ */ jsxRuntime.jsx(InputWidget, { input, signal: signals[input.id] }, input.id)) }),
1989
+ formulasList.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: formulasList.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
1990
+ FormulaReadout,
1991
+ {
1992
+ id: f.id,
1993
+ expression: f.expression,
1994
+ value: stateOverrides[f.id]
1995
+ },
1996
+ f.id
1997
+ )) }),
1998
+ scrolls.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: scrolls.map((s) => /* @__PURE__ */ jsxRuntime.jsx(ScrollReadout, { id: s.id, progress: stateOverrides[s.id] }, s.id)) }),
1999
+ readouts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-group", children: readouts.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ReadoutWidget, { readout: r, stateOverrides: mergedStateValues }, r.id)) })
2000
+ ] }) })
2001
+ );
1710
2002
  }, [diagram2, signals, stateOverrides, mergedStateValues]);
1711
2003
  return { stateOverrides, panel, svgRef, containerRef };
1712
2004
  }
@@ -3567,7 +3859,7 @@ function SparklineReadout({
3567
3859
  if (points.length < 2) {
3568
3860
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sparkline", "data-cdl-readout": id, children: [
3569
3861
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
3570
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? "waiting" : "\u2014" }),
3862
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-sparkline-empty", style: { width: w, height: h }, children: points.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.sparkline.waiting" }) : "\u2014" }),
3571
3863
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-sparkline-value", children: Number.isFinite(value) ? value : "\u2014" })
3572
3864
  ] });
3573
3865
  }
@@ -3830,27 +4122,24 @@ function TimelineWidget({
3830
4122
  className: "cdl-ip-timeline-scrubber"
3831
4123
  }
3832
4124
  ),
3833
- /* @__PURE__ */ jsxRuntime.jsxs(
4125
+ /* @__PURE__ */ jsxRuntime.jsx(
3834
4126
  "button",
3835
4127
  {
3836
4128
  type: "button",
3837
4129
  className: "cdl-ip-timeline-btn cdl-ip-timeline-speed",
3838
4130
  onClick: cycleSpeed,
3839
4131
  "aria-label": "speed",
3840
- children: [
3841
- speed,
3842
- "x"
3843
- ]
4132
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "input.timeline.speed", v: { speed } })
3844
4133
  }
3845
4134
  )
3846
4135
  ] }),
3847
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-timeline-time", children: [
3848
- (progress * (input.duration / 1e3)).toFixed(1),
3849
- "s /",
3850
- " ",
3851
- (input.duration / 1e3).toFixed(1),
3852
- "s"
3853
- ] })
4136
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-timeline-time", children: /* @__PURE__ */ jsxRuntime.jsx(
4137
+ \u5B57,
4138
+ {
4139
+ k: "input.timeline.time",
4140
+ v: { t: (progress * (input.duration / 1e3)).toFixed(1), d: (input.duration / 1e3).toFixed(1) }
4141
+ }
4142
+ ) })
3854
4143
  ] });
3855
4144
  }
3856
4145
  function RangeWidget({
@@ -4088,7 +4377,7 @@ function ArrayBarReadout({
4088
4377
  const range = max - min || 1;
4089
4378
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-array-bar", "data-cdl-readout": id, children: [
4090
4379
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4091
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : arr.map((v, i) => {
4380
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-array-bar-row", children: arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : arr.map((v, i) => {
4092
4381
  const h = Math.max(0, Math.min(1, (v - min) / range));
4093
4382
  return /* @__PURE__ */ jsxRuntime.jsx(
4094
4383
  "span",
@@ -4165,7 +4454,7 @@ function StackedBarReadout({
4165
4454
  const range = max - min || 1;
4166
4455
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-stacked-bar", "data-cdl-readout": id, children: [
4167
4456
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4168
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : Array.from({ length: n }).map((_, i) => {
4457
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-stacked-bar-row", children: n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : Array.from({ length: n }).map((_, i) => {
4169
4458
  const va = arrA[i] ?? 0;
4170
4459
  const vb = arrB[i] ?? 0;
4171
4460
  const hA = Math.max(0, Math.min(1, (va - min) / range));
@@ -4260,7 +4549,7 @@ function MatrixReadout({
4260
4549
  };
4261
4550
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-matrix", "data-cdl-readout": id, children: [
4262
4551
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4263
- rows === 0 || cols === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx(
4552
+ rows === 0 || cols === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx(
4264
4553
  "svg",
4265
4554
  {
4266
4555
  className: "cdl-ip-readout-matrix-svg",
@@ -4318,7 +4607,7 @@ function ProgressGroupReadout({
4318
4607
  const labelArr = labels ? safeParseArray(labels).map(String) : [];
4319
4608
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-progress-group", "data-cdl-readout": id, children: [
4320
4609
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4321
- arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
4610
+ arr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-progress-group-list", children: arr.map((v, i) => {
4322
4611
  const pct = Math.max(0, Math.min(100, v / (max || 1) * 100));
4323
4612
  const rowLabel = labelArr[i] ?? String(i + 1);
4324
4613
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-progress-group-row", children: [
@@ -4380,7 +4669,7 @@ function SequenceTimelineReadout({
4380
4669
  const xFor = (t) => pad + (Math.max(min, Math.min(max, t)) - min) / range * (viewW - pad * 2);
4381
4670
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sequence-timeline", "data-cdl-readout": id, children: [
4382
4671
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4383
- events.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs(
4672
+ events.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs(
4384
4673
  "svg",
4385
4674
  {
4386
4675
  className: "cdl-ip-readout-sequence-timeline-svg",
@@ -4394,7 +4683,7 @@ function SequenceTimelineReadout({
4394
4683
  events.map((e, i) => {
4395
4684
  const x = xFor(e.t);
4396
4685
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-event-marker": e.name, children: [
4397
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${e.name}: t=${e.t}` }) }),
4686
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: x, cy: trackY, r: 5, fill: color, stroke: "#fff", strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.sequenceTimeline.title", v: { name: e.name, t: e.t } }) }),
4398
4687
  /* @__PURE__ */ jsxRuntime.jsx("text", { x, y: trackY - 12, textAnchor: sequenceLabelAnchor(x, e.name, 10, viewW), fontSize: 10, fill: "var(--v4-ink, #1a1f2a)", children: e.name }),
4399
4688
  /* @__PURE__ */ jsxRuntime.jsx("text", { x, y: trackY + 18, textAnchor: "middle", fontSize: 9, fill: "var(--v4-mute, #64748b)", children: e.t })
4400
4689
  ] }, i);
@@ -4437,7 +4726,7 @@ function RadarReadout({
4437
4726
  const polygon = points.length ? points.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(" ") : "";
4438
4727
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-radar", "data-cdl-readout": id, children: [
4439
4728
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4440
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4729
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-radar-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4441
4730
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsxRuntime.jsx(
4442
4731
  "polygon",
4443
4732
  {
@@ -4499,14 +4788,14 @@ function BubbleChartReadout({
4499
4788
  const maxCircleR = 18;
4500
4789
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-bubble-chart", "data-cdl-readout": id, children: [
4501
4790
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4502
- bubbles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4791
+ bubbles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-bubble-chart-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4503
4792
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: pad, x2: viewW - pad, y1: viewH - pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
4504
4793
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: pad, x2: pad, y1: pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.4)" }),
4505
4794
  bubbles.map((b, i) => {
4506
4795
  const cx = pad + (Math.max(xMin, Math.min(xMax, b.x)) - xMin) / xRange * w;
4507
4796
  const cy = viewH - pad - (Math.max(yMin, Math.min(yMax, b.y)) - yMin) / yRange * h;
4508
4797
  const r = 4 + (Math.max(rMin, Math.min(rMax, b.r)) - rMin) / rRange * (maxCircleR - 4);
4509
- return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `(${b.x}, ${b.y}) r=${b.r}` }) }, i);
4798
+ return /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r, fill: color, fillOpacity: 0.35, stroke: color, strokeWidth: 1.5, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bubbleChart.title", v: { x: b.x, y: b.y, r: b.r } }) }, i);
4510
4799
  })
4511
4800
  ] })
4512
4801
  ] });
@@ -4529,7 +4818,7 @@ function DonutReadout({
4529
4818
  let acc = 0;
4530
4819
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-donut", "data-cdl-readout": id, children: [
4531
4820
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4532
- arr.length === 0 || total === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
4821
+ arr.length === 0 || total === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-donut-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: arr.map((v, i) => {
4533
4822
  const from = acc;
4534
4823
  const to = acc + v / total;
4535
4824
  acc = to;
@@ -4590,7 +4879,7 @@ function CalendarHeatmapReadout({
4590
4879
  height: cellSize,
4591
4880
  rx: 2,
4592
4881
  fill,
4593
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `day ${i}: ${v}` })
4882
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.calendarHeatmap.title", v: { i, v } })
4594
4883
  },
4595
4884
  i
4596
4885
  );
@@ -4710,7 +4999,7 @@ function CandlestickReadout({
4710
4999
  const candleW = candles.length === 0 ? 0 : Math.max(3, (w - (candles.length - 1) * 3) / candles.length);
4711
5000
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-candlestick", "data-cdl-readout": id, children: [
4712
5001
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4713
- candles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
5002
+ candles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-candlestick-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: candles.map((cd, i) => {
4714
5003
  const cx = pad + i * (candleW + 3) + candleW / 2;
4715
5004
  const yHigh = yFor(cd.h);
4716
5005
  const yLow = yFor(cd.l);
@@ -4731,7 +5020,7 @@ function CandlestickReadout({
4731
5020
  height: bodyH,
4732
5021
  fill: isUp ? color : color,
4733
5022
  fillOpacity: isUp ? 1 : 0.85,
4734
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `O:${cd.o} H:${cd.h} L:${cd.l} C:${cd.c}` })
5023
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.candlestick.title", v: { o: cd.o, h: cd.h, l: cd.l, c: cd.c } })
4735
5024
  }
4736
5025
  )
4737
5026
  ] }, i);
@@ -4765,7 +5054,7 @@ function VennReadout({
4765
5054
  const cxB = viewW / 2 + gap / 2;
4766
5055
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-venn", "data-cdl-readout": id, children: [
4767
5056
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4768
- sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5057
+ sizeA === 0 && sizeB === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-venn-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4769
5058
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cxA, cy, r: rA, fill: colorA, fillOpacity: 0.4, stroke: colorA, strokeWidth: 1.5 }),
4770
5059
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: cxB, cy, r: rB, fill: colorB, fillOpacity: 0.4, stroke: colorB, strokeWidth: 1.5 }),
4771
5060
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cxA - rA + 8, y: cy - 4, fontSize: 11, fill: "var(--v4-ink, #1a1f2a)", fontWeight: 600, children: labelA }),
@@ -4816,11 +5105,11 @@ function SlopeReadout({
4816
5105
  const yFor = (v) => pad + (1 - (Math.max(min, Math.min(max, v)) - min) / range) * h;
4817
5106
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-slope", "data-cdl-readout": id, children: [
4818
5107
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4819
- slopes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5108
+ slopes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-slope-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
4820
5109
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: xL, x2: xL, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
4821
5110
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: xR, x2: xR, y1: pad - 4, y2: viewH - pad + 4, stroke: "rgba(148,163,184,0.4)" }),
4822
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "before" }),
4823
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: "after" }),
5111
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: xL, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.slope.before" }) }),
5112
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: xR, y: viewH - 4, fontSize: 9, textAnchor: "middle", fill: "var(--v4-mute, #64748b)", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.slope.after" }) }),
4824
5113
  slopes.map((s, i) => {
4825
5114
  const yB = yFor(s.before);
4826
5115
  const yA = yFor(s.after);
@@ -4867,7 +5156,7 @@ function FunnelReadout({
4867
5156
  const [bR, bG, bB] = hexToRgb(colorBottom);
4868
5157
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-funnel", "data-cdl-readout": id, children: [
4869
5158
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4870
- stages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
5159
+ stages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-funnel-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: stages.map((s, i) => {
4871
5160
  const ratio = i / Math.max(1, stages.length - 1);
4872
5161
  const w = maxCount > 0 ? s.count / maxCount * (viewW - 12) : 0;
4873
5162
  const yTop = i * stageH + 2;
@@ -4929,7 +5218,7 @@ function GanttReadout({
4929
5218
  const xFor = (v) => labelW + (Math.max(min, Math.min(max, v)) - min) / range * (viewW - labelW - pad);
4930
5219
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-gantt", "data-cdl-readout": id, children: [
4931
5220
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
4932
- tasks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
5221
+ tasks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-gantt-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: tasks.map((t, i) => {
4933
5222
  const y = pad + i * rowH;
4934
5223
  const x1 = xFor(t.start);
4935
5224
  const x2 = xFor(t.start + t.duration);
@@ -5020,7 +5309,7 @@ function TreemapReadout({
5020
5309
  }
5021
5310
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-treemap", "data-cdl-readout": id, children: [
5022
5311
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5023
- rects.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
5312
+ rects.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-treemap-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: rects.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
5024
5313
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: r.x + 1, y: r.y + 1, width: Math.max(0, r.w - 2), height: Math.max(0, r.h - 2), fill: colors[i % colors.length] ?? "#94a3b8", rx: 2, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${r.name}: ${r.size}` }) }),
5025
5314
  r.w > 40 && r.h > 20 ? /* @__PURE__ */ jsxRuntime.jsx("text", { x: r.x + 6, y: r.y + 14, fontSize: 10, fill: "#fff", fontWeight: 600, children: r.name }) : null
5026
5315
  ] }, i)) })
@@ -5086,7 +5375,7 @@ function SankeyReadout({
5086
5375
  const rightUsed = {};
5087
5376
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-sankey", "data-cdl-readout": id, children: [
5088
5377
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5089
- flows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5378
+ flows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-sankey-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5090
5379
  leftNodes.map((n, i) => {
5091
5380
  const p = leftPos[n.name];
5092
5381
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
@@ -5148,7 +5437,7 @@ function PolarAreaReadout({
5148
5437
  const maxR = Math.min(cx, cy) - 20;
5149
5438
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-polar-area", "data-cdl-readout": id, children: [
5150
5439
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5151
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5440
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-polar-area-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5152
5441
  [0.33, 0.66, 1].map((t) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy, r: maxR * t, fill: "none", stroke: "rgba(148,163,184,0.2)", strokeWidth: 1 }, t)),
5153
5442
  arr.map((v, i) => {
5154
5443
  const ratio = Math.sqrt(Math.max(0, Math.min(max, v)) / (max || 1));
@@ -5194,7 +5483,7 @@ function StepIndicatorReadout({
5194
5483
  const cy = viewH / 2 - 2;
5195
5484
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-step-indicator", "data-cdl-readout": id, children: [
5196
5485
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5197
- n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5486
+ n === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-step-indicator-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5198
5487
  n > 1 ? Array.from({ length: n - 1 }).map((_, i) => {
5199
5488
  const x1 = pad + i * step;
5200
5489
  const x2 = pad + (i + 1) * step;
@@ -5284,8 +5573,8 @@ function BulletChartReadout({
5284
5573
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad, width: badX - pad, height: trackH, fill: "rgba(239,68,68,0.25)", rx: 2 }),
5285
5574
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: badX, y: pad, width: avgX - badX, height: trackH, fill: "rgba(234,179,8,0.25)" }),
5286
5575
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: avgX, y: pad, width: pad + w - avgX, height: trackH, fill: "rgba(34,197,94,0.25)" }),
5287
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `actual: ${safeActual}` }) }),
5288
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: `target: ${safeTarget}` }) })
5576
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad + trackH * 0.3, width: actualX - pad, height: trackH * 0.4, fill: colorActual, rx: 2, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.actual", v: { v: safeActual } }) }),
5577
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: targetX, x2: targetX, y1: pad - 2, y2: pad + trackH + 2, stroke: "#0f172a", strokeWidth: 2, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: "readout.bulletChart.target", v: { v: safeTarget } }) })
5289
5578
  ] })
5290
5579
  ] });
5291
5580
  }
@@ -5340,7 +5629,7 @@ function LeaderboardReadout({
5340
5629
  const medals = ["#eab308", "#94a3b8", "#c2410c"];
5341
5630
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-leaderboard", "data-cdl-readout": id, children: [
5342
5631
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5343
- sorted.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
5632
+ sorted.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-leaderboard-list", children: sorted.map((it, i) => {
5344
5633
  const pct = topMax > 0 ? it.value / topMax * 100 : 0;
5345
5634
  const rankColor = i < medals.length ? medals[i] : "#cbd5e1";
5346
5635
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-leaderboard-row", children: [
@@ -5391,7 +5680,7 @@ function TrafficLightReadout({
5391
5680
  style: {
5392
5681
  filter: isActive ? `drop-shadow(0 0 6px ${colors[i]})` : void 0
5393
5682
  },
5394
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: isActive ? ["red", "yellow", "green"][i] : "" })
5683
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { k: isActive ? ["readout.trafficLight.red", "readout.trafficLight.yellow", "readout.trafficLight.green"][i] : void 0 })
5395
5684
  },
5396
5685
  i
5397
5686
  );
@@ -5430,7 +5719,7 @@ function TagCloudReadout({
5430
5719
  const sizeFor = (w) => minSize + (w - minW) / range * (maxSize - minSize);
5431
5720
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-tag-cloud", "data-cdl-readout": id, children: [
5432
5721
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5433
- tags.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
5722
+ tags.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-tag-cloud-list", children: tags.map((t, i) => /* @__PURE__ */ jsxRuntime.jsx(
5434
5723
  "span",
5435
5724
  {
5436
5725
  className: "cdl-ip-readout-tag-cloud-tag",
@@ -5467,7 +5756,7 @@ function ActivityFeedReadout({
5467
5756
  const shown = events.slice(0, max);
5468
5757
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-activity-feed", "data-cdl-readout": id, children: [
5469
5758
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5470
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
5759
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-activity-feed-list", children: shown.map((e, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-activity-feed-row", children: [
5471
5760
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-activity-feed-bullet", style: { background: color } }),
5472
5761
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-activity-feed-content", children: [
5473
5762
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-activity-feed-actor", children: e.actor }),
@@ -5518,7 +5807,7 @@ function RatingReadout({
5518
5807
  strokeWidth: 1
5519
5808
  }
5520
5809
  ),
5521
- isEmpty ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${i + 1}: empty` }) : /* @__PURE__ */ jsxRuntime.jsx("title", { children: `${i + 1}: ${isFull ? "full" : "half"}` })
5810
+ isEmpty ? /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: "readout.rating.empty" }) : /* @__PURE__ */ jsxRuntime.jsx(\u5B57\u306E\u898B\u51FA\u3057, { \u524D: `${i + 1}: `, k: isFull ? "readout.rating.full" : "readout.rating.half" })
5522
5811
  ]
5523
5812
  },
5524
5813
  i
@@ -5614,7 +5903,7 @@ function ChatBubbleReadout({
5614
5903
  const shown = messages.slice(0, max);
5615
5904
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-chat-bubble", "data-cdl-readout": id, children: [
5616
5905
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5617
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
5906
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-chat-bubble-list", children: shown.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
5618
5907
  "li",
5619
5908
  {
5620
5909
  className: `cdl-ip-readout-chat-bubble-row ${m.isSelf ? "self" : "other"}`,
@@ -5706,7 +5995,7 @@ function ChecklistReadout({
5706
5995
  const pct = items.length === 0 ? 0 : Math.round(done / items.length * 100);
5707
5996
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-checklist", "data-cdl-readout": id, children: [
5708
5997
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
5709
- items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5998
+ items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5710
5999
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-checklist-progress", children: [
5711
6000
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-checklist-progress-text", children: [
5712
6001
  done,
@@ -5817,11 +6106,7 @@ function PriceTagReadout({
5817
6106
  "%"
5818
6107
  ] }) : null
5819
6108
  ] }),
5820
- savings > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-price-tag-savings", children: [
5821
- "You save ",
5822
- currency,
5823
- savings
5824
- ] }) : null
6109
+ savings > 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-price-tag-savings", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.priceTag.save", v: { amount: `${currency}${savings}` } }) }) : null
5825
6110
  ] });
5826
6111
  }
5827
6112
  function SpinnerReadout({
@@ -5958,6 +6243,11 @@ function StopwatchReadout({
5958
6243
  }
5959
6244
  );
5960
6245
  }
6246
+ var \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57 = {
6247
+ low: "readout.confidence.low",
6248
+ mid: "readout.confidence.mid",
6249
+ high: "readout.confidence.high"
6250
+ };
5961
6251
  function ConfidenceMeterReadout({
5962
6252
  id,
5963
6253
  label,
@@ -5990,7 +6280,7 @@ function ConfidenceMeterReadout({
5990
6280
  Math.round(safeValue),
5991
6281
  "%"
5992
6282
  ] }),
5993
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: bandLabel })
6283
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-confidence-meter-band", style: { color: bandColor }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: \u78BA\u4FE1\u5EA6\u306E\u5E2F\u306E\u5B57[bandLabel] }) })
5994
6284
  ] }),
5995
6285
  /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-confidence-meter-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
5996
6286
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: pad, y: pad, width: lowX - pad, height: h, fill: "rgba(239,68,68,0.2)", rx: 2 }),
@@ -6025,7 +6315,7 @@ function ReactionBarReadout({
6025
6315
  }
6026
6316
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-reaction-bar", "data-cdl-readout": id, children: [
6027
6317
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6028
- reactions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
6318
+ reactions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-reaction-bar-row", children: reactions.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-reaction-bar-pill", style: { borderColor: color }, children: [
6029
6319
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-reaction-bar-emoji", children: r.emoji }),
6030
6320
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-reaction-bar-count", style: { color }, children: r.count })
6031
6321
  ] }, i)) })
@@ -6058,7 +6348,7 @@ function PillGroupReadout({
6058
6348
  }
6059
6349
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pill-group", "data-cdl-readout": id, children: [
6060
6350
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6061
- pills.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx(
6351
+ pills.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-pill-group-row", children: pills.map((p, i) => /* @__PURE__ */ jsxRuntime.jsx(
6062
6352
  "span",
6063
6353
  {
6064
6354
  className: "cdl-ip-readout-pill-group-pill",
@@ -6146,7 +6436,7 @@ function MetricsGridReadout({
6146
6436
  }
6147
6437
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-metrics-grid", "data-cdl-readout": id, children: [
6148
6438
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6149
- items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
6439
+ items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-metrics-grid-grid", children: items.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-cell", children: [
6150
6440
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-metrics-grid-value", style: { color }, children: [
6151
6441
  m.value,
6152
6442
  m.unit ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "cdl-ip-readout-metrics-grid-unit", children: [
@@ -6233,7 +6523,7 @@ function IconTileReadout({
6233
6523
  }
6234
6524
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-icon-tile", "data-cdl-readout": id, children: [
6235
6525
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6236
- tiles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
6526
+ tiles.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-row", children: tiles.map((t, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-cell", children: [
6237
6527
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-icon", style: { background: color }, children: t.icon }),
6238
6528
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-icon-tile-content", children: [
6239
6529
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-icon-tile-value", children: t.value }),
@@ -6274,7 +6564,7 @@ function TokenListReadout({
6274
6564
  }
6275
6565
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-token-list", "data-cdl-readout": id, children: [
6276
6566
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6277
- tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
6567
+ tokens.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-token-list-items", children: tokens.map((t, i) => {
6278
6568
  const isUp = t.delta >= 0;
6279
6569
  const deltaColor = isUp ? colorUp : colorDown;
6280
6570
  const arrow = isUp ? "\u25B2" : "\u25BC";
@@ -6328,7 +6618,7 @@ function MapPinReadout({
6328
6618
  const yFor = (v) => pad + (Math.max(yMin, Math.min(yMax, v)) - yMin) / yRange * (viewH - pad * 2);
6329
6619
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-map-pin", "data-cdl-readout": id, children: [
6330
6620
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6331
- pins.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
6621
+ pins.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("svg", { className: "cdl-ip-readout-map-pin-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: [
6332
6622
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width: viewW, height: viewH, fill: "rgba(148,163,184,0.08)", stroke: "rgba(148,163,184,0.3)", strokeWidth: 1, rx: 4 }),
6333
6623
  [0.25, 0.5, 0.75].map((t) => /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
6334
6624
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: pad + (viewW - pad * 2) * t, x2: pad + (viewW - pad * 2) * t, y1: pad, y2: viewH - pad, stroke: "rgba(148,163,184,0.15)" }),
@@ -6356,9 +6646,9 @@ function PriorityBadgeReadout({
6356
6646
  if (p === "high" || p === "2") level = "high";
6357
6647
  else if (p === "low" || p === "0") level = "low";
6358
6648
  const spec = {
6359
- high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "HIGH" },
6360
- med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "MED" },
6361
- low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "LOW" }
6649
+ high: { icon: "\u25B2", color: "#ef4444", bg: "rgba(239,68,68,0.12)", text: "readout.priority.high" },
6650
+ med: { icon: "\u25CF", color: "#eab308", bg: "rgba(234,179,8,0.12)", text: "readout.priority.med" },
6651
+ low: { icon: "\u25BC", color: "#64748b", bg: "rgba(100,116,139,0.12)", text: "readout.priority.low" }
6362
6652
  };
6363
6653
  const cur = spec[level];
6364
6654
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-priority-badge", "data-cdl-readout": id, "data-cdl-priority": level, children: [
@@ -6371,7 +6661,7 @@ function PriorityBadgeReadout({
6371
6661
  style: { background: cur.bg, borderColor: cur.color, color: cur.color },
6372
6662
  children: [
6373
6663
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-priority-badge-icon", children: cur.icon }),
6374
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: cur.text })
6664
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: cur.text }) })
6375
6665
  ]
6376
6666
  }
6377
6667
  ),
@@ -6410,7 +6700,7 @@ function PodiumReadout({
6410
6700
  const order = [1, 0, 2];
6411
6701
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-podium", "data-cdl-readout": id, children: [
6412
6702
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6413
- podium.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
6703
+ podium.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { className: "cdl-ip-readout-podium-svg", viewBox: `0 0 ${viewW} ${viewH}`, width: viewW, height: viewH, children: order.map((rankIdx, colIdx) => {
6414
6704
  const w = podium[rankIdx];
6415
6705
  if (!w) return null;
6416
6706
  const x = pad + colIdx * (colW + pad);
@@ -6453,7 +6743,7 @@ function PollBarReadout({
6453
6743
  const maxCount = options.length ? Math.max(...options.map((o) => o.count)) : 0;
6454
6744
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-poll-bar", "data-cdl-readout": id, children: [
6455
6745
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6456
- options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
6746
+ options.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-poll-bar-list", children: options.map((o, i) => {
6457
6747
  const pct = Math.round(o.count / total * 100);
6458
6748
  const isWinner = o.count === maxCount && maxCount > 0;
6459
6749
  const fillColor = isWinner ? colorWinner : color;
@@ -6488,6 +6778,7 @@ function UserStackReadout({
6488
6778
  max,
6489
6779
  size
6490
6780
  }) {
6781
+ const \u5F15\u304F = use\u5B57\u5F15();
6491
6782
  const names = safeParseArray(value).map(String);
6492
6783
  const shown = names.slice(0, max);
6493
6784
  const overflow = names.length > max;
@@ -6496,7 +6787,7 @@ function UserStackReadout({
6496
6787
  const initialsOf = (name) => name.split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0]?.toUpperCase() ?? "").join("") || "?";
6497
6788
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-user-stack", "data-cdl-readout": id, children: [
6498
6789
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6499
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
6790
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-user-stack-row", children: [
6500
6791
  shown.map((name, i) => /* @__PURE__ */ jsxRuntime.jsx(
6501
6792
  "span",
6502
6793
  {
@@ -6524,7 +6815,7 @@ function UserStackReadout({
6524
6815
  fontSize: `${Math.round(size * 0.35)}px`,
6525
6816
  marginLeft: `-${size * 0.3}px`
6526
6817
  },
6527
- title: `+${overflowCount} more`,
6818
+ title: \u5F15\u304F("readout.more", { n: overflowCount }),
6528
6819
  children: [
6529
6820
  "+",
6530
6821
  overflowCount
@@ -6559,7 +6850,7 @@ function CommitListReadout({
6559
6850
  const shown = commits.slice(0, max);
6560
6851
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-commit-list", "data-cdl-readout": id, children: [
6561
6852
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6562
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
6853
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-commit-list-items", children: shown.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-commit-list-row", children: [
6563
6854
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-sha", style: { color }, children: c.sha }),
6564
6855
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-msg", children: c.msg }),
6565
6856
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-commit-list-author", children: c.author })
@@ -6639,7 +6930,7 @@ function EventLogReadout({
6639
6930
  };
6640
6931
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-event-log", "data-cdl-readout": id, children: [
6641
6932
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6642
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
6933
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-event-log-items", children: shown.map((e, i) => {
6643
6934
  const spec = severitySpec[e.severity] ?? severitySpec.info;
6644
6935
  return /* @__PURE__ */ jsxRuntime.jsxs(
6645
6936
  "li",
@@ -6682,7 +6973,7 @@ function SearchResultReadout({
6682
6973
  const shown = hits.slice(0, max);
6683
6974
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-search-result", "data-cdl-readout": id, children: [
6684
6975
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6685
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
6976
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-search-result-items", children: shown.map((h, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-search-result-row", children: [
6686
6977
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-title", style: { color }, children: h.title }),
6687
6978
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-snippet", children: h.snippet }),
6688
6979
  h.url ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-search-result-url", children: h.url }) : null
@@ -6715,7 +7006,7 @@ function RoadmapReadout({
6715
7006
  const colors = ["#2563eb", "#22c55e", "#eab308", "#a855f7"];
6716
7007
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-roadmap", "data-cdl-readout": id, style: { minWidth: `${viewW}px` }, children: [
6717
7008
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6718
- quarters.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
7009
+ quarters.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-row", style: { minHeight: `${viewH}px` }, children: quarters.map((q, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-roadmap-column", children: [
6719
7010
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-roadmap-header", style: { background: colors[i % colors.length] }, children: q.quarter }),
6720
7011
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-roadmap-items", children: q.items.map((it, j) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "cdl-ip-readout-roadmap-item", children: it }, j)) })
6721
7012
  ] }, i)) })
@@ -6747,7 +7038,7 @@ function WeatherForecastReadout({
6747
7038
  }
6748
7039
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-weather-forecast", "data-cdl-readout": id, children: [
6749
7040
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6750
- days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
7041
+ days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-row", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-day", children: [
6751
7042
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-name", children: d.day }),
6752
7043
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-weather-forecast-icon", children: d.icon }),
6753
7044
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-weather-forecast-high", children: [
@@ -6791,17 +7082,14 @@ function VideoCardReadout({
6791
7082
  const shown = videos.slice(0, max);
6792
7083
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-video-card", "data-cdl-readout": id, children: [
6793
7084
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6794
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
7085
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-video-card-list", children: shown.map((v, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "cdl-ip-readout-video-card-row", children: [
6795
7086
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-thumb", style: { background: color }, children: [
6796
7087
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-video-card-thumb-icon", children: v.emoji }),
6797
7088
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-video-card-duration", children: v.duration })
6798
7089
  ] }),
6799
7090
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-info", children: [
6800
7091
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-video-card-title", children: v.title }),
6801
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-video-card-views", children: [
6802
- v.views,
6803
- " views"
6804
- ] })
7092
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-video-card-views", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.videoCard.views", v: { v: v.views } }) })
6805
7093
  ] })
6806
7094
  ] }, i)) })
6807
7095
  ] });
@@ -6818,7 +7106,7 @@ function OrderStatusReadout({
6818
7106
  const safeCurrent = Number.isFinite(current) ? Math.max(0, Math.min(stepArr.length - 1, Math.round(current))) : 0;
6819
7107
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-order-status", "data-cdl-readout": id, "data-cdl-step": safeCurrent, children: [
6820
7108
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6821
- stepArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
7109
+ stepArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "cdl-ip-readout-order-status-list", children: stepArr.map((s, i) => {
6822
7110
  const isDone = i < safeCurrent;
6823
7111
  const isCurrent = i === safeCurrent;
6824
7112
  const isPending = i > safeCurrent;
@@ -6868,9 +7156,9 @@ function AttendanceGridReadout({
6868
7156
  const memberArr = safeParseArray(members).map(String);
6869
7157
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-attendance-grid", "data-cdl-readout": id, children: [
6870
7158
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6871
- rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
7159
+ rows.length === 0 || memberArr.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "cdl-ip-readout-attendance-grid-table", children: [
6872
7160
  /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
6873
- /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: "day" }),
7161
+ /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-corner", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.attendance.corner" }) }),
6874
7162
  memberArr.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx("th", { className: "cdl-ip-readout-attendance-grid-member", children: m }, i))
6875
7163
  ] }) }),
6876
7164
  /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
@@ -6924,7 +7212,7 @@ function TimezoneClockReadout({
6924
7212
  }
6925
7213
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-timezone-clock", "data-cdl-readout": id, children: [
6926
7214
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6927
- clocks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
7215
+ clocks.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-row", children: clocks.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-cell", children: [
6928
7216
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-city", children: c.city }),
6929
7217
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-timezone-clock-time", style: { color }, children: c.time }),
6930
7218
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-timezone-clock-offset", children: [
@@ -6958,7 +7246,7 @@ function FormSummaryReadout({
6958
7246
  }
6959
7247
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-form-summary", "data-cdl-readout": id, children: [
6960
7248
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6961
- fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
7249
+ fields.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "cdl-ip-readout-form-summary-list", children: fields.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-form-summary-row", children: [
6962
7250
  /* @__PURE__ */ jsxRuntime.jsx("dt", { className: "cdl-ip-readout-form-summary-key", children: f.name }),
6963
7251
  /* @__PURE__ */ jsxRuntime.jsx("dd", { className: "cdl-ip-readout-form-summary-value", style: { color }, children: f.value })
6964
7252
  ] }, i)) })
@@ -6991,7 +7279,7 @@ function SongQueueReadout({
6991
7279
  const safeCurrent = Number.isFinite(current) ? Math.round(current) : -1;
6992
7280
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-song-queue", "data-cdl-readout": id, "data-cdl-current": safeCurrent, children: [
6993
7281
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
6994
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
7282
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "cdl-ip-readout-song-queue-list", children: shown.map((s, i) => {
6995
7283
  const isCurrent = i === safeCurrent;
6996
7284
  return /* @__PURE__ */ jsxRuntime.jsxs(
6997
7285
  "li",
@@ -7036,12 +7324,20 @@ function CalendarMonthReadout({
7036
7324
  } catch {
7037
7325
  }
7038
7326
  }
7039
- const weekDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
7327
+ const weekDays = [
7328
+ "readout.weekday.0",
7329
+ "readout.weekday.1",
7330
+ "readout.weekday.2",
7331
+ "readout.weekday.3",
7332
+ "readout.weekday.4",
7333
+ "readout.weekday.5",
7334
+ "readout.weekday.6"
7335
+ ];
7040
7336
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-calendar-month", "data-cdl-readout": id, children: [
7041
7337
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
7042
- days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
7338
+ days.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-calendar-month-widget", children: [
7043
7339
  monthName ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-header", children: monthName }) : null,
7044
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: w }, w)) }),
7340
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-weekdays", children: weekDays.map((w) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-calendar-month-weekday", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: w }) }, w)) }),
7045
7341
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cdl-ip-readout-calendar-month-grid", children: days.map((d, i) => /* @__PURE__ */ jsxRuntime.jsxs(
7046
7342
  "div",
7047
7343
  {
@@ -7084,7 +7380,7 @@ function TerminalReadout({
7084
7380
  const shown = lines.slice(0, max);
7085
7381
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-terminal", "data-cdl-readout": id, children: [
7086
7382
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
7087
- shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: "empty" }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
7383
+ shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-array-bar-empty", children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.empty" }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-window", children: [
7088
7384
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-readout-terminal-titlebar", children: [
7089
7385
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#ef4444" } }),
7090
7386
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-readout-terminal-dot", style: { background: "#eab308" } }),
@@ -7183,10 +7479,11 @@ function KanbanBoardReadout({
7183
7479
  columnWidth,
7184
7480
  max
7185
7481
  }) {
7482
+ const \u5F15\u304F = use\u5B57\u5F15();
7186
7483
  const buckets = {
7187
- todo: { key: "todo", label: "Todo", color: "#94a3b8", tasks: [] },
7188
- inprogress: { key: "inprogress", label: "In Progress", color: "#2563eb", tasks: [] },
7189
- done: { key: "done", label: "Done", color: "#22c55e", tasks: [] }
7484
+ todo: { key: "todo", label: \u5F15\u304F("readout.kanban.todo"), color: "#94a3b8", tasks: [] },
7485
+ inprogress: { key: "inprogress", label: \u5F15\u304F("readout.kanban.inprogress"), color: "#2563eb", tasks: [] },
7486
+ done: { key: "done", label: \u5F15\u304F("readout.kanban.done"), color: "#22c55e", tasks: [] }
7190
7487
  };
7191
7488
  const trimmed = value.trim();
7192
7489
  if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
@@ -7297,13 +7594,13 @@ function KanbanBoardReadout({
7297
7594
  style: { userSelect: "none" },
7298
7595
  children: [
7299
7596
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: task.title }),
7300
- task.title.length > 18 ? `${task.title.slice(0, 17)}\u2026` : task.title
7597
+ \u6841\u3067\u7701\u304F(task.title, 18)
7301
7598
  ]
7302
7599
  }
7303
7600
  )
7304
7601
  ] }, ti);
7305
7602
  }),
7306
- overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
7603
+ overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
7307
7604
  "text",
7308
7605
  {
7309
7606
  x: x + columnWidth / 2,
@@ -7312,11 +7609,7 @@ function KanbanBoardReadout({
7312
7609
  textAnchor: "middle",
7313
7610
  fill: "#64748b",
7314
7611
  style: { userSelect: "none" },
7315
- children: [
7316
- "+",
7317
- overflow,
7318
- " more"
7319
- ]
7612
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
7320
7613
  }
7321
7614
  ) : null
7322
7615
  ] }, k);
@@ -7438,7 +7731,7 @@ function TimelineVerticalReadout({
7438
7731
  style: { userSelect: "none" },
7439
7732
  children: [
7440
7733
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: ev.title }),
7441
- ev.title.length > 38 ? `${ev.title.slice(0, 37)}\u2026` : ev.title
7734
+ \u6841\u3067\u7701\u304F(ev.title, 38)
7442
7735
  ]
7443
7736
  }
7444
7737
  ),
@@ -7452,7 +7745,7 @@ function TimelineVerticalReadout({
7452
7745
  style: { userSelect: "none" },
7453
7746
  children: [
7454
7747
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: ev.description }),
7455
- ev.description.length > 44 ? `${ev.description.slice(0, 43)}\u2026` : ev.description
7748
+ \u6841\u3067\u7701\u304F(ev.description, 44)
7456
7749
  ]
7457
7750
  }
7458
7751
  ) : null
@@ -7795,7 +8088,7 @@ function StepProgressReadout({
7795
8088
  style: { userSelect: "none" },
7796
8089
  children: [
7797
8090
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: s }),
7798
- s.length > 10 ? `${s.slice(0, 9)}\u2026` : s
8091
+ \u6841\u3067\u7701\u304F(s, 10)
7799
8092
  ]
7800
8093
  }
7801
8094
  )
@@ -7856,7 +8149,7 @@ function UserPresenceReadout({
7856
8149
  fontWeight: 500,
7857
8150
  fill: "#0f172a",
7858
8151
  style: { userSelect: "none" },
7859
- children: u.name.length > 24 ? `${u.name.slice(0, 23)}\u2026` : u.name
8152
+ children: \u6841\u3067\u7701\u304F(u.name, 24)
7860
8153
  }
7861
8154
  ),
7862
8155
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -7873,7 +8166,7 @@ function UserPresenceReadout({
7873
8166
  )
7874
8167
  ] }, i);
7875
8168
  }),
7876
- overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
8169
+ overflow > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
7877
8170
  "text",
7878
8171
  {
7879
8172
  x: width / 2,
@@ -7882,11 +8175,7 @@ function UserPresenceReadout({
7882
8175
  textAnchor: "middle",
7883
8176
  fill: "#64748b",
7884
8177
  style: { userSelect: "none" },
7885
- children: [
7886
- "+",
7887
- overflow,
7888
- " more"
7889
- ]
8178
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.more", v: { n: overflow } })
7890
8179
  }
7891
8180
  ) : null
7892
8181
  ]
@@ -7937,12 +8226,7 @@ function RatingThumbReadout({
7937
8226
  "\u25B2 ",
7938
8227
  upCount
7939
8228
  ] }),
7940
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: [
7941
- upPct,
7942
- "% up \xB7 ",
7943
- total,
7944
- " votes"
7945
- ] }),
8229
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: width / 2, y: 20, fontSize: 11, textAnchor: "middle", fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.ratingThumb.summary", v: { pct: upPct, total } }) }),
7946
8230
  /* @__PURE__ */ jsxRuntime.jsxs(
7947
8231
  "text",
7948
8232
  {
@@ -8027,7 +8311,7 @@ function OrgChartMiniReadout({
8027
8311
  style: { userSelect: "none" },
8028
8312
  children: [
8029
8313
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: n.name }),
8030
- n.name.length > 10 ? `${n.name.slice(0, 9)}\u2026` : n.name
8314
+ \u6841\u3067\u7701\u304F(n.name, 10)
8031
8315
  ]
8032
8316
  }
8033
8317
  ),
@@ -8117,11 +8401,7 @@ function KpiTrendTileReadout({
8117
8401
  deltaPct.toFixed(1),
8118
8402
  "%)"
8119
8403
  ] }),
8120
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: [
8121
- "prev ",
8122
- prev,
8123
- unit
8124
- ] }),
8404
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 78, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.kpiTrend.prev", v: { v: `${prev}${unit}` } }) }),
8125
8405
  history.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx("polyline", { points, fill: "none", stroke: arrowColor, strokeWidth: 2 }) : null
8126
8406
  ]
8127
8407
  }
@@ -8209,7 +8489,7 @@ function QuickPollEmojiReadout({
8209
8489
  )
8210
8490
  ] }, i);
8211
8491
  }),
8212
- /* @__PURE__ */ jsxRuntime.jsxs(
8492
+ /* @__PURE__ */ jsxRuntime.jsx(
8213
8493
  "text",
8214
8494
  {
8215
8495
  x: width - 8,
@@ -8218,10 +8498,7 @@ function QuickPollEmojiReadout({
8218
8498
  textAnchor: "end",
8219
8499
  fill: "#64748b",
8220
8500
  style: { userSelect: "none" },
8221
- children: [
8222
- "total ",
8223
- total
8224
- ]
8501
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.poll.total", v: { n: total } })
8225
8502
  }
8226
8503
  )
8227
8504
  ]
@@ -8356,14 +8633,8 @@ function ThreadSummaryReadout({
8356
8633
  height,
8357
8634
  children: [
8358
8635
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width, height, fill: "#f8fafc", rx: 6 }),
8359
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: [
8360
- participants,
8361
- " participants"
8362
- ] }),
8363
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: [
8364
- "last: ",
8365
- lastAuthor
8366
- ] }),
8636
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 22, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.thread.participants", v: { n: participants } }) }),
8637
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 42, fontSize: 11, fill: "#334155", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.thread.last", v: { name: lastAuthor } }) }),
8367
8638
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: 12, y: 60, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: timeAgo }),
8368
8639
  unread > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-thread-unread": "1", children: [
8369
8640
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: width - 24, cy: 26, r: 14, fill: colorUnread }),
@@ -8394,7 +8665,7 @@ function ReadReceiptReadout({
8394
8665
  colorPending
8395
8666
  }) {
8396
8667
  const status = Number.isFinite(value) ? Math.max(0, Math.min(2, Math.floor(value))) : 0;
8397
- const labelText = status === 0 ? "sent" : status === 1 ? "delivered" : "read";
8668
+ const labelKey = status === 0 ? "readout.readReceipt.sent" : status === 1 ? "readout.readReceipt.delivered" : "readout.readReceipt.read";
8398
8669
  const iconColor = status === 2 ? colorRead : colorPending;
8399
8670
  const width = 180;
8400
8671
  const height = 32;
@@ -8429,7 +8700,7 @@ function ReadReceiptReadout({
8429
8700
  }
8430
8701
  ) : null
8431
8702
  ] }),
8432
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: labelText })
8703
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 52, y: height / 2 + 4, fontSize: 11, fontWeight: 600, fill: iconColor, style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: labelKey }) })
8433
8704
  ]
8434
8705
  }
8435
8706
  )
@@ -8443,7 +8714,7 @@ function PasswordStrengthReadout({
8443
8714
  colorWeak
8444
8715
  }) {
8445
8716
  const level = Number.isFinite(value) ? Math.max(0, Math.min(4, Math.floor(value))) : 0;
8446
- const labels = ["too weak", "weak", "fair", "good", "strong"];
8717
+ const labels = ["readout.password.0", "readout.password.1", "readout.password.2", "readout.password.3", "readout.password.4"];
8447
8718
  const colors = [colorWeak, "#f97316", "#eab308", "#84cc16", colorStrong];
8448
8719
  const barW = 46;
8449
8720
  const gap = 6;
@@ -8487,7 +8758,7 @@ function PasswordStrengthReadout({
8487
8758
  textAnchor: "end",
8488
8759
  fill: level > 0 ? colors[level] ?? colorStrong : "#94a3b8",
8489
8760
  style: { userSelect: "none" },
8490
- children: labels[level]
8761
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: labels[level] })
8491
8762
  }
8492
8763
  )
8493
8764
  ]
@@ -8620,9 +8891,9 @@ function FileDropzoneReadout({
8620
8891
  ),
8621
8892
  /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 54, y: 34, fontSize: 12, fontWeight: 600, fill: "#0f172a", style: { userSelect: "none" }, children: [
8622
8893
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: filename }),
8623
- filename.length > 26 ? `${filename.slice(0, 25)}\u2026` : filename
8894
+ \u6841\u3067\u7701\u304F(filename, 26)
8624
8895
  ] }),
8625
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: "uploaded" })
8896
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: 54, y: 50, fontSize: 10, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.uploaded" }) })
8626
8897
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-dropzone-empty": "1", children: [
8627
8898
  /* @__PURE__ */ jsxRuntime.jsx(
8628
8899
  "text",
@@ -8634,7 +8905,7 @@ function FileDropzoneReadout({
8634
8905
  textAnchor: "middle",
8635
8906
  fill: "#64748b",
8636
8907
  style: { userSelect: "none" },
8637
- children: "\u2B06 Drop file here"
8908
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.drop" })
8638
8909
  }
8639
8910
  ),
8640
8911
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8646,7 +8917,7 @@ function FileDropzoneReadout({
8646
8917
  textAnchor: "middle",
8647
8918
  fill: "#94a3b8",
8648
8919
  style: { userSelect: "none" },
8649
- children: "or click to browse"
8920
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.dropzone.browse" })
8650
8921
  }
8651
8922
  )
8652
8923
  ] })
@@ -8681,7 +8952,7 @@ function LogStreamReadout({
8681
8952
  }
8682
8953
  }
8683
8954
  const shown = rows.slice(-5);
8684
- const levelLabels = ["DBG", "INF", "WRN", "ERR"];
8955
+ const levelLabels = ["readout.log.0", "readout.log.1", "readout.log.2", "readout.log.3"];
8685
8956
  const levelColors = ["#94a3b8", "#2563eb", "#f97316", "#ef4444"];
8686
8957
  const width = 300;
8687
8958
  const rowH = 18;
@@ -8699,7 +8970,7 @@ function LogStreamReadout({
8699
8970
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 0, y: 0, width, height, fill: "#0f172a", rx: 4 }),
8700
8971
  shown.map((r, i) => {
8701
8972
  const y = 4 + i * rowH;
8702
- const displayMsg = r.msg.length > 24 ? `${r.msg.slice(0, 23)}\u2026` : r.msg;
8973
+ const displayMsg = \u6841\u3067\u7701\u304F(r.msg, 24);
8703
8974
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-log-row": i, children: [
8704
8975
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: 6, y: y + 12, fontSize: 9, fill: "#94a3b8", fontFamily: "monospace", style: { userSelect: "none" }, children: r.ts }),
8705
8976
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 62, y: y + 3, width: 26, height: 12, fill: levelColors[r.level] ?? "#94a3b8", rx: 2 }),
@@ -8714,7 +8985,7 @@ function LogStreamReadout({
8714
8985
  fill: "#ffffff",
8715
8986
  fontFamily: "monospace",
8716
8987
  style: { userSelect: "none" },
8717
- children: levelLabels[r.level] ?? "INF"
8988
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: levelLabels[r.level] ?? "readout.log.1" })
8718
8989
  }
8719
8990
  ),
8720
8991
  /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 94, y: y + 12, fontSize: 10, fill: "#e2e8f0", fontFamily: "monospace", style: { userSelect: "none" }, children: [
@@ -8799,7 +9070,7 @@ function AlertBannerReadout({
8799
9070
  style: { userSelect: "none" },
8800
9071
  children: [
8801
9072
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: message }),
8802
- message.length > 32 ? `${message.slice(0, 31)}\u2026` : message
9073
+ \u6841\u3067\u7701\u304F(message, 32)
8803
9074
  ]
8804
9075
  }
8805
9076
  )
@@ -8869,7 +9140,7 @@ function ServiceHealthReadout({
8869
9140
  style: { userSelect: "none" },
8870
9141
  children: [
8871
9142
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: s.name }),
8872
- s.name.length > 10 ? `${s.name.slice(0, 9)}\u2026` : s.name
9143
+ \u6841\u3067\u7701\u304F(s.name, 10)
8873
9144
  ]
8874
9145
  }
8875
9146
  )
@@ -8908,10 +9179,10 @@ function CartSummaryReadout({
8908
9179
  if (!Number.isFinite(shipping)) shipping = 0;
8909
9180
  if (!Number.isFinite(total)) total = 0;
8910
9181
  const rows = [
8911
- { l: "Items", v: `${items}`, bold: false },
8912
- { l: "Subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
8913
- { l: "Shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
8914
- { l: "Total", v: `${currency}${total.toFixed(2)}`, bold: true }
9182
+ { l: "readout.cart.items", v: `${items}`, bold: false },
9183
+ { l: "readout.cart.subtotal", v: `${currency}${subtotal.toFixed(2)}`, bold: false },
9184
+ { l: "readout.cart.shipping", v: `${currency}${shipping.toFixed(2)}`, bold: false },
9185
+ { l: "readout.cart.total", v: `${currency}${total.toFixed(2)}`, bold: true }
8915
9186
  ];
8916
9187
  const width = 260;
8917
9188
  const rowH = 20;
@@ -8941,7 +9212,7 @@ function CartSummaryReadout({
8941
9212
  fontWeight: isTotal ? 700 : 500,
8942
9213
  fill: isTotal ? colorTotal : "#334155",
8943
9214
  style: { userSelect: "none" },
8944
- children: r.l
9215
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: r.l })
8945
9216
  }
8946
9217
  ),
8947
9218
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8989,6 +9260,8 @@ function PricingTierReadout({
8989
9260
  }
8990
9261
  }
8991
9262
  if (!Number.isFinite(price)) price = 0;
9263
+ const \u5F15\u304F = use\u5B57\u5F15();
9264
+ const \u898B\u305B\u308B\u540D\u524D = planName || \u5F15\u304F("readout.pricing.plan");
8992
9265
  const width = 240;
8993
9266
  const height = 176;
8994
9267
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-pricing-tier", "data-cdl-readout": id, children: [
@@ -9013,7 +9286,7 @@ function PricingTierReadout({
9013
9286
  textAnchor: "middle",
9014
9287
  fill: "#ffffff",
9015
9288
  style: { userSelect: "none" },
9016
- children: planName || "Plan"
9289
+ children: \u898B\u305B\u308B\u540D\u524D
9017
9290
  }
9018
9291
  ),
9019
9292
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -9041,12 +9314,12 @@ function PricingTierReadout({
9041
9314
  textAnchor: "middle",
9042
9315
  fill: "#64748b",
9043
9316
  style: { userSelect: "none" },
9044
- children: "per month"
9317
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.pricing.perMonth" })
9045
9318
  }
9046
9319
  ),
9047
9320
  features.slice(0, 3).map((f, i) => {
9048
9321
  const y = 96 + i * 18;
9049
- const displayF = f.length > 24 ? `${f.slice(0, 23)}\u2026` : f;
9322
+ const displayF = \u6841\u3067\u7701\u304F(f, 24);
9050
9323
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-tier-feature": i, children: [
9051
9324
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: 16, y, fontSize: 11, fill: colorAccent, style: { userSelect: "none" }, children: "\u2713" }),
9052
9325
  /* @__PURE__ */ jsxRuntime.jsxs("text", { x: 30, y, fontSize: 11, fill: "#0f172a", style: { userSelect: "none" }, children: [
@@ -9056,7 +9329,7 @@ function PricingTierReadout({
9056
9329
  ] }, i);
9057
9330
  }),
9058
9331
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 16, y: 150, width: width - 32, height: 20, fill: colorAccent, rx: 4 }),
9059
- /* @__PURE__ */ jsxRuntime.jsxs(
9332
+ /* @__PURE__ */ jsxRuntime.jsx(
9060
9333
  "text",
9061
9334
  {
9062
9335
  x: width / 2,
@@ -9066,10 +9339,7 @@ function PricingTierReadout({
9066
9339
  textAnchor: "middle",
9067
9340
  fill: "#ffffff",
9068
9341
  style: { userSelect: "none" },
9069
- children: [
9070
- "Get ",
9071
- planName || "Plan"
9072
- ]
9342
+ children: \u5F15\u304F("readout.pricing.get", { name: \u898B\u305B\u308B\u540D\u524D })
9073
9343
  }
9074
9344
  )
9075
9345
  ]
@@ -9135,12 +9405,12 @@ function CouponCodeReadout({
9135
9405
  fill: applied ? colorApplied : "#94a3b8",
9136
9406
  fontFamily: "monospace",
9137
9407
  style: { userSelect: "none" },
9138
- children: code || "ENTER CODE"
9408
+ children: code || /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.placeholder" })
9139
9409
  }
9140
9410
  ),
9141
9411
  applied ? /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-coupon-applied": "1", children: [
9142
9412
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: boxW + 12, y: 10, width: 90, height: height - 20, fill: colorApplied, rx: 4 }),
9143
- /* @__PURE__ */ jsxRuntime.jsxs(
9413
+ /* @__PURE__ */ jsxRuntime.jsx(
9144
9414
  "text",
9145
9415
  {
9146
9416
  x: boxW + 57,
@@ -9150,11 +9420,7 @@ function CouponCodeReadout({
9150
9420
  textAnchor: "middle",
9151
9421
  fill: "#ffffff",
9152
9422
  style: { userSelect: "none" },
9153
- children: [
9154
- "-",
9155
- discountPct,
9156
- "% off"
9157
- ]
9423
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.off", v: { pct: discountPct } })
9158
9424
  }
9159
9425
  )
9160
9426
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-coupon-empty": "1", children: [
@@ -9169,7 +9435,7 @@ function CouponCodeReadout({
9169
9435
  textAnchor: "middle",
9170
9436
  fill: "#ffffff",
9171
9437
  style: { userSelect: "none" },
9172
- children: "Apply"
9438
+ children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.coupon.apply" })
9173
9439
  }
9174
9440
  )
9175
9441
  ] })
@@ -9204,6 +9470,7 @@ function ArticlePreviewReadout({
9204
9470
  const width = 300;
9205
9471
  const height = 116;
9206
9472
  const thumbW = 80;
9473
+ const [\u629C\u7C8B\u306E\u4E00\u884C\u76EE, \u629C\u7C8B\u306E\u6B8B\u308A] = \u6841\u3067\u5272\u308B(excerpt, 28);
9207
9474
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "cdl-ip-item cdl-ip-readout-article-preview", "data-cdl-readout": id, children: [
9208
9475
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cdl-ip-label", children: label }),
9209
9476
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -9240,19 +9507,16 @@ function ArticlePreviewReadout({
9240
9507
  style: { userSelect: "none" },
9241
9508
  children: [
9242
9509
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: title }),
9243
- title.length > 26 ? `${title.slice(0, 25)}\u2026` : title
9510
+ \u6841\u3067\u7701\u304F(title, 26)
9244
9511
  ]
9245
9512
  }
9246
9513
  ),
9247
9514
  /* @__PURE__ */ jsxRuntime.jsxs("text", { x: thumbW + 20, y: 44, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: [
9248
9515
  /* @__PURE__ */ jsxRuntime.jsx("title", { children: excerpt }),
9249
- excerpt.length > 28 ? `${excerpt.slice(0, 27)}\u2026` : excerpt
9250
- ] }),
9251
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: thumbW + 20, y: 60, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: excerpt.length > 56 ? `${excerpt.slice(28, 55)}\u2026` : excerpt.slice(28, 56) }),
9252
- /* @__PURE__ */ jsxRuntime.jsxs("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: [
9253
- "by ",
9254
- author
9516
+ \u629C\u7C8B\u306E\u4E00\u884C\u76EE
9255
9517
  ] }),
9518
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: thumbW + 20, y: 60, fontSize: 10, fill: "#334155", style: { userSelect: "none" }, children: \u6841\u3067\u7701\u304F(\u629C\u7C8B\u306E\u6B8B\u308A, 28) }),
9519
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: thumbW + 20, y: height - 14, fontSize: 10, fontWeight: 600, fill: "#64748b", style: { userSelect: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(\u5B57, { k: "readout.article.by", v: { author } }) }),
9256
9520
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: width - 8, y: height - 14, fontSize: 10, textAnchor: "end", fill: "#94a3b8", style: { userSelect: "none" }, children: timeAgo })
9257
9521
  ]
9258
9522
  }
@@ -9303,7 +9567,7 @@ function TocNavReadout({
9303
9567
  shown.map((it, i) => {
9304
9568
  const y = 4 + i * rowH;
9305
9569
  const indent = 12 + it.level * 16;
9306
- const displayT = it.title.length > 30 ? `${it.title.slice(0, 29)}\u2026` : it.title;
9570
+ const displayT = \u6841\u3067\u7701\u304F(it.title, 30);
9307
9571
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { "data-cdl-toc-item": i, children: [
9308
9572
  it.active ? /* @__PURE__ */ jsxRuntime.jsx("rect", { x: 4, y, width: 3, height: rowH - 4, fill: colorActive, rx: 1 }) : null,
9309
9573
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -20612,50 +20876,6 @@ function recomputeContainedLanes(lanes, nodes) {
20612
20876
  });
20613
20877
  }
20614
20878
 
20615
- // src/kinds/row-align.ts
20616
- var GENERIC_ROW_LEFT_SIZE_PX = 18;
20617
- var GENERIC_ROW_RIGHT_SIZE_PX = 21;
20618
- var MONO_ADVANCE_RATIO = 0.6;
20619
- var STORAGE_CHAR_ADVANCE_PX = 26 * MONO_ADVANCE_RATIO;
20620
- var ROW_PAD_X_PX = 26;
20621
- var ROW_COL_GAP_PX = 16;
20622
- var STORAGE_COL_GAP_PX = 32;
20623
- var ROW_RIGHT_PAD_PX = 26;
20624
- var DELIMITERS = [" -> ", " \u2192 ", " = ", ": ", ":"];
20625
- function splitRow(row) {
20626
- for (const d of DELIMITERS) {
20627
- const idx = row.indexOf(d);
20628
- if (idx > 0) {
20629
- return {
20630
- left: row.slice(0, idx).trim(),
20631
- right: row.slice(idx + d.length).trim(),
20632
- split: true
20633
- };
20634
- }
20635
- }
20636
- return { left: row.trim(), right: "", split: false };
20637
- }
20638
- function rowColumnWidth(text, size, mono) {
20639
- return mono ? displayWidth(text) * size * MONO_ADVANCE_RATIO : textWidth(text, size);
20640
- }
20641
- function displayWidth(text) {
20642
- let w = 0;
20643
- for (const ch of text) {
20644
- const code = ch.codePointAt(0) ?? 0;
20645
- w += code >= 32 && code <= 126 ? 1 : 2;
20646
- }
20647
- return w;
20648
- }
20649
- function requiredRowsWidth(rows, kind) {
20650
- if (!rows || rows.length === 0) return 0;
20651
- const splits = rows.map(splitRow);
20652
- const \u4E00\u756A\u5E83\u3044 = (\u53D6\u308B) => splits.reduce((m, s) => Math.max(m, \u53D6\u308B(s)), 0);
20653
- const storage = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, 26, true)) + STORAGE_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, 26, true)) + ROW_RIGHT_PAD_PX;
20654
- const generic = ROW_PAD_X_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.left, GENERIC_ROW_LEFT_SIZE_PX, false)) + ROW_COL_GAP_PX + \u4E00\u756A\u5E83\u3044((s) => rowColumnWidth(s.right, GENERIC_ROW_RIGHT_SIZE_PX, true)) + ROW_RIGHT_PAD_PX;
20655
- if (kind === void 0) return Math.ceil(Math.max(storage, generic));
20656
- return Math.ceil(kind === "storage" ? storage : generic);
20657
- }
20658
-
20659
20879
  // src/layout/head-label.ts
20660
20880
  var \u7AEF\u306E\u5B57\u3092\u623B\u3059\u8DDD\u96E2 = 22;
20661
20881
  var \u7AEF\u306E\u5B57\u3068\u7DDA\u306E\u9699\u9593 = 8;
@@ -23553,12 +23773,12 @@ function \u5272\u308B\u5019\u88DC(text) {
23553
23773
  \u7A7A\u767D.push([text.slice(0, m.index).trim(), text.slice(m.index + m[0].length).trim()]);
23554
23774
  }
23555
23775
  if (\u7A7A\u767D.length > 0) return \u7A7A\u767D.filter(\u5165\u3063\u3066\u3044\u308B);
23556
- const \u5B57 = [];
23776
+ const \u5B572 = [];
23557
23777
  const \u4E26\u3073 = [...text];
23558
23778
  for (let i = 1; i < \u4E26\u3073.length; i += 1) {
23559
- \u5B57.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
23779
+ \u5B572.push([\u4E26\u3073.slice(0, i).join(""), \u4E26\u3073.slice(i).join("")]);
23560
23780
  }
23561
- return \u5B57.filter(\u5165\u3063\u3066\u3044\u308B);
23781
+ return \u5B572.filter(\u5165\u3063\u3066\u3044\u308B);
23562
23782
  }
23563
23783
  function \u5165\u3063\u3066\u3044\u308B([\u5DE6, \u53F3]) {
23564
23784
  return \u5DE6 !== "" && \u53F3 !== "";
@@ -25917,9 +26137,9 @@ function \u533A\u753B\u306E\u5272\u4ED8(w, h, \u4EF6\u6570, \u524D\u3092\u51FA\u
25917
26137
  \u67A0: (idx) => ({ x: \u5E45 * idx, y: 0, w: \u5E45, h })
25918
26138
  };
25919
26139
  }
25920
- function \u53CE\u3081\u308B\u7D1A(\u5B57, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
26140
+ function \u53CE\u3081\u308B\u7D1A(\u5B572, \u4F7F\u3048\u308B\u5E452, \u521D\u671F, \u4E0B\u9650) {
25921
26141
  let \u7D1A = \u521D\u671F;
25922
- while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B57, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
26142
+ while (\u7D1A > \u4E0B\u9650 && textWidth(\u5B572, \u7D1A) > \u4F7F\u3048\u308B\u5E452) \u7D1A -= 1;
25923
26143
  return \u7D1A;
25924
26144
  }
25925
26145
  function \u5F27\u306E\u90533(cx, cy, r, \u5272\u5408) {