@cardenelabs/cdl 0.75.0 → 0.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -359,7 +359,14 @@ function resolveLang(value) {
359
359
  }
360
360
  var en = {
361
361
  /** `shape-terminal` の 2 行目 (命令の出力) */
362
- "terminal.output": "\u2192 12 chunks in 1.8s",
362
+ /*
363
+ * `shape-terminal` の出力の行。
364
+ *
365
+ * **いちばん長い行が絵の倍率を決める** (#891)。 端末の中身は自分の座標で組んでから箱へ
366
+ * 収めるので、この行が長いほど全部の字が小さくなる。 120x110 の箱では 20 字の版で
367
+ * 7.71 world まで落ちていた。
368
+ */
369
+ "terminal.output": "\u2192 12 chunks",
363
370
  /** `shape-code-block` の札の file 名 */
364
371
  "codeBlock.fileName": "utils.ts",
365
372
  /** `shape-kanban-card` の課題の番号 */
@@ -394,8 +401,14 @@ var en = {
394
401
  "paymentProvider.sign": "PAY",
395
402
  /** `shape-payment-provider` の状態の札 */
396
403
  "paymentProvider.status": "PROCESSING",
397
- /** `shape-brokerage` の株価の帯 */
398
- "brokerage.ticker": "\u25B2NKY 38,240 \u25B2AAPL 194",
404
+ /**
405
+ * `shape-brokerage` の株価の帯。
406
+ *
407
+ * **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
408
+ * 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
409
+ * 担うので、銘柄を減らしても絵は変わらない。
410
+ */
411
+ "brokerage.ticker": "\u25B2NKY 38,240",
399
412
  /** `shape-brokerage` の看板 */
400
413
  "brokerage.sign": "$ SECURITIES",
401
414
  /** `shape-exchange` の看板 */
@@ -580,7 +593,7 @@ var en = {
580
593
  "readout.trafficLight.green": "green"
581
594
  };
582
595
  var ja = {
583
- "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
596
+ "terminal.output": "\u2192 12 \u500B\u3092\u7D50\u5408",
584
597
  "codeBlock.fileName": "\u5171\u901A.ts",
585
598
  "kanbanCard.id": "#1111",
586
599
  "kanbanCard.status": "\u9032\u884C\u4E2D",
@@ -598,7 +611,7 @@ var ja = {
598
611
  "trustBank.sign": "\u4FE1\u8A17",
599
612
  "paymentProvider.sign": "\u6C7A\u6E08",
600
613
  "paymentProvider.status": "\u51E6\u7406\u4E2D",
601
- "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240 \u25B2\u6771\u8A3C 2,710",
614
+ "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
602
615
  "brokerage.sign": "\xA5 \u8A3C\u5238",
603
616
  "exchange.sign": "\u53D6\u5F15\u6240",
604
617
  "exchange.sub": "\u6E05\u7B97",
@@ -1655,6 +1668,7 @@ function textWidth(s, size, \u5B57\u9001\u308A = 0) {
1655
1668
  }
1656
1669
  return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
1657
1670
  }
1671
+ var \u7E2E\u3093\u3060\u7D75\u306E\u5B57\u306E\u4E0B\u9650 = 8;
1658
1672
 
1659
1673
  // src/kinds/row-align.ts
1660
1674
  var GENERIC_ROW_LEFT_SIZE_PX = 18;
@@ -25254,6 +25268,11 @@ function \u5272\u5408\u8868\u8A18(frac) {
25254
25268
  const v = Math.round(frac * 1e3) / 10;
25255
25269
  return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
25256
25270
  }
25271
+ var \u7A74\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
25272
+ function \u4E2D\u592E\u306E\u5B57(\u6BD4\u4F8B\u3057\u305F\u5927\u304D\u3055, \u7A74\u306E\u534A\u5F84, \u6587) {
25273
+ const \u5165\u308B\u5927\u304D\u3055 = \u7A74\u306E\u534A\u5F84 * 2 * \u7A74\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / Math.max(textWidth(\u6587, 1), 1e-6);
25274
+ return Math.min(Math.max(\u6BD4\u4F8B\u3057\u305F\u5927\u304D\u3055, \u7E2E\u3093\u3060\u7D75\u306E\u5B57\u306E\u4E0B\u9650), \u5165\u308B\u5927\u304D\u3055);
25275
+ }
25257
25276
  function ChartPieNode({
25258
25277
  node,
25259
25278
  active,
@@ -25311,6 +25330,11 @@ function ChartPieNode({
25311
25330
  const cx = node.w / 2;
25312
25331
  const cy = PAD_TOP2 + chartAreaH / 2;
25313
25332
  const \u524D\u306Eslices = \u524D\u3042\u308A ? \u8F2A\u3092\u7D44\u3080(data, cx, cy, \u524D\u306E\u5916\u534A\u5F84, \u524D\u306E\u5185\u534A\u5F84, \u524D\u306E\u5272\u5408) : [];
25333
+ const \u7A74 = \u524D\u3042\u308A ? \u524D\u306E\u5185\u534A\u5F84 : \u5916\u306E\u5185\u534A\u5F84;
25334
+ const \u5408\u8A08\u306E\u6587 = \u5B9F\u5024\u8868\u8A18(Math.round(\u524D\u3042\u308A ? \u4ECA\u306E\u5408\u8A08 : total));
25335
+ const \u5408\u8A08\u306E\u5B57 = \u4E2D\u592E\u306E\u5B57(Math.round(radius * 0.26), \u7A74, \u5408\u8A08\u306E\u6587);
25336
+ const \u898B\u51FA\u3057\u306E\u5B572 = \u4E2D\u592E\u306E\u5B57(Math.round(radius * 0.12), \u7A74, "\u5408\u8A08");
25337
+ const \u5408\u8A08\u306E\u4E0B = Math.max(Math.round(radius * 0.2), \u5408\u8A08\u306E\u5B57 * 0.25 + \u898B\u51FA\u3057\u306E\u5B572 * 0.8);
25314
25338
  const slices = \u8F2A\u3092\u7D44\u3080(data, cx, cy, radius, \u5916\u306E\u5185\u534A\u5F84, \u4ECA\u306E\u5272\u5408);
25315
25339
  const \u958B\u304D = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
25316
25340
  const \u5207\u308A\u629C\u304Did = `cdl-pie-draw-${instanceId}`;
@@ -25389,19 +25413,19 @@ function ChartPieNode({
25389
25413
  x: cx,
25390
25414
  y: cy - 2,
25391
25415
  textAnchor: "middle",
25392
- fontSize: Math.round(radius * 0.26),
25416
+ fontSize: \u5408\u8A08\u306E\u5B57,
25393
25417
  fontWeight: 600,
25394
25418
  fill: "var(--cdl-text, #1a1f2a)",
25395
- children: \u5B9F\u5024\u8868\u8A18(Math.round(\u524D\u3042\u308A ? \u4ECA\u306E\u5408\u8A08 : total))
25419
+ children: \u5408\u8A08\u306E\u6587
25396
25420
  }
25397
25421
  ),
25398
25422
  /* @__PURE__ */ jsxRuntime.jsx(
25399
25423
  "text",
25400
25424
  {
25401
25425
  x: cx,
25402
- y: cy + Math.round(radius * 0.2),
25426
+ y: cy + \u5408\u8A08\u306E\u4E0B,
25403
25427
  textAnchor: "middle",
25404
- fontSize: Math.round(radius * 0.12),
25428
+ fontSize: \u898B\u51FA\u3057\u306E\u5B572,
25405
25429
  fill: "var(--cdl-text-dim, #5a6270)",
25406
25430
  children: "\u5408\u8A08"
25407
25431
  }
@@ -25604,6 +25628,10 @@ function \u8868\u306E\u5F62({ node, active, data, \u5272\u5408, x0, y0, drawing,
25604
25628
  const \u5185\u534A\u5F84 = R * 0.58;
25605
25629
  const cx = PAD + R;
25606
25630
  const cy = node.h / 2;
25631
+ const \u5408\u8A08\u306E\u6587 = \u5B9F\u5024\u8868\u8A18(Math.round(data.reduce((acc, d) => acc + d.value, 0)));
25632
+ const \u5408\u8A08\u306E\u5B57 = \u4E2D\u592E\u306E\u5B57(Math.round(R * 0.26), \u5185\u534A\u5F84, \u5408\u8A08\u306E\u6587);
25633
+ const \u898B\u51FA\u3057\u306E\u5B572 = \u4E2D\u592E\u306E\u5B57(Math.round(R * 0.12), \u5185\u534A\u5F84, "\u5408\u8A08");
25634
+ const \u5408\u8A08\u306E\u4E0B = Math.max(Math.round(R * 0.2), \u5408\u8A08\u306E\u5B57 * 0.25 + \u898B\u51FA\u3057\u306E\u5B572 * 0.8);
25607
25635
  const \u8868\u5DE6 = node.w - PAD - \u8868\u5E45;
25608
25636
  const \u53F3\u7AEF = node.w - PAD;
25609
25637
  const \u5272\u5408\u53F3 = \u53F3\u7AEF - \u5B9F\u6570\u5E45 - 24;
@@ -25645,19 +25673,19 @@ function \u8868\u306E\u5F62({ node, active, data, \u5272\u5408, x0, y0, drawing,
25645
25673
  x: cx,
25646
25674
  y: cy - 2,
25647
25675
  textAnchor: "middle",
25648
- fontSize: Math.round(R * 0.26),
25676
+ fontSize: \u5408\u8A08\u306E\u5B57,
25649
25677
  fontWeight: 600,
25650
25678
  fill: "var(--cdl-text, #1a1f2a)",
25651
- children: \u5B9F\u5024\u8868\u8A18(Math.round(data.reduce((acc, d) => acc + d.value, 0)))
25679
+ children: \u5408\u8A08\u306E\u6587
25652
25680
  }
25653
25681
  ),
25654
25682
  /* @__PURE__ */ jsxRuntime.jsx(
25655
25683
  "text",
25656
25684
  {
25657
25685
  x: cx,
25658
- y: cy + Math.round(R * 0.2),
25686
+ y: cy + \u5408\u8A08\u306E\u4E0B,
25659
25687
  textAnchor: "middle",
25660
- fontSize: Math.round(R * 0.12),
25688
+ fontSize: \u898B\u51FA\u3057\u306E\u5B572,
25661
25689
  fill: "var(--cdl-text-dim, #5a6270)",
25662
25690
  children: "\u5408\u8A08"
25663
25691
  }
@@ -28434,6 +28462,7 @@ function ShapeTerminalNode({ node, active, lang }) {
28434
28462
  const lineFont = "ui-monospace, SFMono-Regular, Menlo, monospace";
28435
28463
  const \u4F59\u767D = 16;
28436
28464
  const \u5E2F = 28;
28465
+ const \u5E2F\u306E\u5B57 = 12.5;
28437
28466
  const \u89D2 = 10;
28438
28467
  const \u5148\u982D = 26;
28439
28468
  const \u884C\u9593 = 22;
@@ -28443,7 +28472,7 @@ function ShapeTerminalNode({ node, active, lang }) {
28443
28472
  { \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" },
28444
28473
  { \u5DE6: 30, \u5B57: 12.5, \u8272: "#e6edf3", \u6587: "pnpm build" }
28445
28474
  ],
28446
- [{ \u5DE6: 16, \u5B57: 12, \u8272: "#8b95a5", \u6587: \u5B57\u5F15("terminal.output") }],
28475
+ [{ \u5DE6: 16, \u5B57: 12.5, \u8272: "#8b95a5", \u6587: \u5B57\u5F15("terminal.output") }],
28447
28476
  [{ \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" }]
28448
28477
  ];
28449
28478
  const \u81EA\u7136\u5E45 = Math.max(...\u884C.flat().map((c) => c.\u5DE6 + \u7B49\u5E45\u306E\u6841(c.\u6587) * MONO_ADVANCE * c.\u5B57)) + \u4F59\u767D;
@@ -28485,7 +28514,7 @@ function ShapeTerminalNode({ node, active, lang }) {
28485
28514
  {
28486
28515
  x: x + w / 2,
28487
28516
  y: y + barH / 2 + 4 * \u500D,
28488
- fontSize: 11 * \u500D,
28517
+ fontSize: \u5E2F\u306E\u5B57 * \u500D,
28489
28518
  fontFamily: lineFont,
28490
28519
  textAnchor: "middle",
28491
28520
  fill: "#7a8290",
@@ -28576,6 +28605,7 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28576
28605
  const \u592A\u3055 = 9;
28577
28606
  const \u9699\u9593 = 6;
28578
28607
  const \u6301\u3061\u4E0A\u3052 = 8;
28608
+ const \u884C\u756A\u53F7\u306E\u5B57 = 11;
28579
28609
  const lines = [
28580
28610
  [
28581
28611
  { c: "#c678dd", w: 40 },
@@ -28598,14 +28628,13 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28598
28628
  { c: "#e6edf3", w: 40 }
28599
28629
  ]
28600
28630
  ];
28601
- const \u6700\u9577 = Math.max(
28602
- ...lines.map(
28603
- (tokens) => tokens.reduce((sum, token) => sum + token.w, 0) + \u9699\u9593 * (tokens.length - 1)
28604
- )
28605
- );
28606
- const \u81EA\u7136\u5E45 = \u6E9D + \u5B57\u4E0B\u3052 + \u6700\u9577 + \u4F59\u767D;
28607
- const \u81EA\u7136\u9AD8 = \u30BF\u30D6\u9AD8 + \u884C\u982D + \u884C\u9593 * (lines.length - 1) + Math.max(\u592A\u3055 - \u6301\u3061\u4E0A\u3052, 10.5 * DESCENT3);
28608
- const \u500D = Math.min(1, w / \u81EA\u7136\u5E45, bodyH / \u81EA\u7136\u9AD8);
28631
+ const \u81EA\u7136\u9AD8 = \u30BF\u30D6\u9AD8 + \u884C\u982D + \u884C\u9593 * (lines.length - 1) + Math.max(\u592A\u3055 - \u6301\u3061\u4E0A\u3052, \u884C\u756A\u53F7\u306E\u5B57 * DESCENT3);
28632
+ const \u500D = Math.min(1, bodyH / \u81EA\u7136\u9AD8);
28633
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
28634
+ { text: \u5B57\u5F15("codeBlock.fileName"), size: 11, \u5E2F: { \u5E45: \u30BF\u30D6\u5E45, \u9AD8\u3055: \u30BF\u30D6\u9AD8 } },
28635
+ { text: "1", size: \u884C\u756A\u53F7\u306E\u5B57, \u5E2F: { \u5E45: \u6E9D - \u6301\u3061\u4E0A\u3052, \u9AD8\u3055: \u884C\u9593 } }
28636
+ ];
28637
+ const \u500D\u8FD4\u3057 = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D, \u6253\u3061\u6D88\u3059\u5B57\u3089);
28609
28638
  const tabW = \u30BF\u30D6\u5E45 * \u500D;
28610
28639
  const tabH = \u30BF\u30D6\u9AD8 * \u500D;
28611
28640
  const \u4E38 = \u89D2 * \u500D;
@@ -28641,9 +28670,10 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28641
28670
  /* @__PURE__ */ jsxRuntime.jsx(
28642
28671
  "text",
28643
28672
  {
28673
+ "data-cdl-counter-scaled": "1",
28644
28674
  x: x + tabW / 2,
28645
28675
  y: y + tabH / 2 + 4 * \u500D,
28646
- fontSize: 11 * \u500D,
28676
+ fontSize: 11 * \u500D * \u500D\u8FD4\u3057,
28647
28677
  fontFamily: lineFont,
28648
28678
  textAnchor: "middle",
28649
28679
  fill: "#e6edf3",
@@ -28665,9 +28695,10 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28665
28695
  /* @__PURE__ */ jsxRuntime.jsx(
28666
28696
  "text",
28667
28697
  {
28698
+ "data-cdl-counter-scaled": "1",
28668
28699
  x: x + gutterW - \u6301\u3061\u4E0A\u3052 * \u500D,
28669
28700
  y: codeY0 + i * lineH,
28670
- fontSize: 10.5 * \u500D,
28701
+ fontSize: \u884C\u756A\u53F7\u306E\u5B57 * \u500D * \u500D\u8FD4\u3057,
28671
28702
  fontFamily: lineFont,
28672
28703
  textAnchor: "end",
28673
28704
  fill: "#4a5266",
@@ -28675,12 +28706,13 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28675
28706
  }
28676
28707
  ),
28677
28708
  toks.map((t, j) => {
28678
- const rect = /* @__PURE__ */ jsxRuntime.jsx(
28709
+ const \u63CF\u304F\u5E45 = Math.min(t.w * \u500D, x + w - \u4F59\u767D * \u500D - cursor);
28710
+ const rect = \u63CF\u304F\u5E45 > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
28679
28711
  "rect",
28680
28712
  {
28681
28713
  x: cursor,
28682
28714
  y: codeY0 + i * lineH - \u6301\u3061\u4E0A\u3052 * \u500D,
28683
- width: t.w * \u500D,
28715
+ width: \u63CF\u304F\u5E45,
28684
28716
  height: \u592A\u3055 * \u500D,
28685
28717
  rx: 2 * \u500D,
28686
28718
  fill: t.c,
@@ -28688,7 +28720,7 @@ function ShapeCodeBlockNode({ node, active, lang }) {
28688
28720
  stroke: "none"
28689
28721
  },
28690
28722
  j
28691
- );
28723
+ ) : null;
28692
28724
  cursor += (t.w + \u9699\u9593) * \u500D;
28693
28725
  return rect;
28694
28726
  })
@@ -28733,21 +28765,23 @@ function ShapeKanbanCardNode({ node, active, lang }) {
28733
28765
  const w = Math.max(0, node.w - \u7DDA * 2 - \u5F71);
28734
28766
  const h = Math.max(0, node.h - \u7DDA * 2 - \u5F71);
28735
28767
  const \u5E2F\u9593\u4F59\u767D = 4;
28736
- const \u5DE6\u53F3\u4F59\u767D = 14;
28737
- const \u4E0A\u6BB5\u9699\u9593 = 8;
28768
+ const \u5DE6\u53F3\u4F59\u767D = 12;
28769
+ const \u4E0A\u6BB5\u9699\u9593 = 6;
28738
28770
  const \u512A\u5148\u5E2F\u9AD8 = 10;
28739
28771
  const ID\u6587 = \u5B57\u5F15("kanbanCard.id");
28740
28772
  const ID\u57FA\u6E96 = 30;
28741
28773
  const ID\u5B57 = 11;
28742
28774
  const ID\u5B57\u9593 = 1;
28743
28775
  const PILL\u4E0A = 20;
28744
- const PILL\u5E45 = 54;
28776
+ const PILL\u5E45 = 62;
28745
28777
  const PILL\u9AD8 = 16;
28746
- const PILL\u5B57 = 9;
28778
+ const PILL\u5B57 = 11;
28779
+ const PILL\u5B57\u9593 = 0;
28747
28780
  const FOOTER\u4E0B = 22;
28748
28781
  const AVATAR\u4E2D\u5FC3Y = 4;
28749
28782
  const AVATAR\u534A\u5F84 = 9;
28750
28783
  const AVATAR\u67A0 = 1.5;
28784
+ const AVATAR\u5B57 = 11;
28751
28785
  const \u540D\u524D\u5B57 = 17;
28752
28786
  const \u8AAC\u660E\u57FA\u6E96\u6BD4 = 20 / 17;
28753
28787
  const \u8AAC\u660E\u5B57\u6BD4 = 12 / 17;
@@ -28830,7 +28864,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
28830
28864
  y: pillY + 12 * \u500D,
28831
28865
  fontSize: PILL\u5B57 * \u500D,
28832
28866
  fontWeight: 700,
28833
- letterSpacing: 1 * \u500D,
28867
+ letterSpacing: PILL\u5B57\u9593 * \u500D,
28834
28868
  textAnchor: "middle",
28835
28869
  fill: "#5a4a1a",
28836
28870
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
@@ -28878,7 +28912,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
28878
28912
  {
28879
28913
  x: 9 * \u500D,
28880
28914
  y: 8 * \u500D,
28881
- fontSize: 10 * \u500D,
28915
+ fontSize: AVATAR\u5B57 * \u500D,
28882
28916
  fontWeight: 700,
28883
28917
  textAnchor: "middle",
28884
28918
  fill: "#ffffff",
@@ -28902,7 +28936,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
28902
28936
  {
28903
28937
  x: 23 * \u500D,
28904
28938
  y: 8 * \u500D,
28905
- fontSize: 10 * \u500D,
28939
+ fontSize: AVATAR\u5B57 * \u500D,
28906
28940
  fontWeight: 700,
28907
28941
  textAnchor: "middle",
28908
28942
  fill: "#ffffff",
@@ -29876,7 +29910,7 @@ var SMART_CONTRACT_H = 220;
29876
29910
  var BLOCK_W = 240;
29877
29911
  var BLOCK_H = 220;
29878
29912
  var \u898B\u51FA\u3057\u306E\u5B57 = 13;
29879
- var \u540D\u306E\u5B57 = 10.5;
29913
+ var \u540D\u306E\u5B57 = 11;
29880
29914
  var \u5024\u306E\u5B57 = 11;
29881
29915
  var \u884C\u306E\u9593\u9694 = 22;
29882
29916
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
@@ -29893,12 +29927,12 @@ var CHAIN_BLOCK_SW = 2.5;
29893
29927
  var CHAIN_HEAD_H = 16;
29894
29928
  var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
29895
29929
  var CHAIN_ROW_GAP = 14;
29896
- var CHAIN_NO_SIZE = 10;
29930
+ var CHAIN_NO_SIZE = 11;
29897
29931
  var CONTRACT_CALL_SIZE = 11;
29898
29932
  var NFT_ID_SIZE = 15;
29899
- var CHAIN_HASH_SIZE = 7;
29900
- var BTC_NO_SIZE = 9;
29901
- var ETH_NO_SIZE = 9;
29933
+ var CHAIN_HASH_SIZE = 11;
29934
+ var BTC_NO_SIZE = 11;
29935
+ var ETH_NO_SIZE = 11;
29902
29936
  var NODE_HEX_R = 44;
29903
29937
  var NODE_PEER_R = 12;
29904
29938
  var NODE_PEER_GAP = 22;
@@ -30227,34 +30261,40 @@ function ShapeEthereumChainNode({ node, active }) {
30227
30261
  const linkW = CHAIN_LINK_W;
30228
30262
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30229
30263
  const startX = cx - totalW / 2;
30230
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30231
- const bx = startX + i * (blockW + linkW);
30232
- const isCurrent = i === blockCount - 1;
30233
- const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
30234
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30235
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
30236
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30237
- /* @__PURE__ */ jsxRuntime.jsx(
30238
- "rect",
30239
- {
30240
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30241
- x: bx,
30242
- y: cy - blockH / 2,
30243
- width: blockW,
30244
- height: blockH,
30245
- rx: 4,
30246
- fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
30247
- stroke: ethPurple,
30248
- strokeWidth: isCurrent ? 2.5 : 1.5
30249
- }
30250
- ),
30251
- /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
30252
- /* @__PURE__ */ jsxRuntime.jsxs("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy + 22, fontSize: ETH_NO_SIZE, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30253
- "#",
30254
- 21400 + i
30255
- ] })
30256
- ] }, i);
30257
- }) });
30264
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30265
+ { text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
30266
+ ];
30267
+ const art = (\u500D\u7387) => {
30268
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30269
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30270
+ const bx = startX + i * (blockW + linkW);
30271
+ const isCurrent = i === blockCount - 1;
30272
+ const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
30273
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30274
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
30275
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30276
+ /* @__PURE__ */ jsxRuntime.jsx(
30277
+ "rect",
30278
+ {
30279
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30280
+ x: bx,
30281
+ y: cy - blockH / 2,
30282
+ width: blockW,
30283
+ height: blockH,
30284
+ rx: 4,
30285
+ fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
30286
+ stroke: ethPurple,
30287
+ strokeWidth: isCurrent ? 2.5 : 1.5
30288
+ }
30289
+ ),
30290
+ /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
30291
+ /* @__PURE__ */ jsxRuntime.jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 22, fontSize: ETH_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30292
+ "#",
30293
+ 214 + i
30294
+ ] })
30295
+ ] }, i);
30296
+ }) });
30297
+ };
30258
30298
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
30259
30299
  fitArt(r, chainExtent(), art),
30260
30300
  bottomLabel2(node, r.cx, r.label)
@@ -30705,7 +30745,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
30705
30745
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
30706
30746
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
30707
30747
  ] }),
30708
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: y + boxH - 16, fontSize: 9, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
30748
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: y + boxH - 16, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("paymentProvider.status") }),
30709
30749
  bottomLabel3(node, r.cx, r.label)
30710
30750
  ] });
30711
30751
  }
@@ -30734,12 +30774,12 @@ function ShapeCreditCardNode({ node, active }) {
30734
30774
  bottomLabel3(node, r.cx, r.label)
30735
30775
  ] });
30736
30776
  }
30737
- var BROKERAGE_TICK_H = 12;
30777
+ var BROKERAGE_TICK_H = 18;
30738
30778
  var BROKERAGE_LOGO_H = 26;
30739
- var BROKERAGE_TICK_INNER_H = 8;
30740
- var BROKERAGE_TICKER_SIZE = 5.5;
30779
+ var BROKERAGE_TICKER_SIZE = 11;
30780
+ var BROKERAGE_TICK_INNER_H = 14;
30741
30781
  var BROKERAGE_SIGN_SIZE = 12;
30742
- var BROKERAGE_GRID_TOP = 62;
30782
+ var BROKERAGE_GRID_TOP = 68;
30743
30783
  var BROKERAGE_CELL_W = 14;
30744
30784
  var BROKERAGE_CELL_H = 18;
30745
30785
  var BROKERAGE_GAP_X = 8;
@@ -30801,10 +30841,10 @@ function ShapeBrokerageNode({ node, active, lang }) {
30801
30841
  /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30802
30842
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30803
30843
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30804
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
30805
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y + 9, fontSize: BROKERAGE_TICKER_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
30844
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
30845
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y + 12, fontSize: BROKERAGE_TICKER_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
30806
30846
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30807
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + 30, fontSize: BROKERAGE_SIGN_SIZE, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
30847
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + BROKERAGE_TICK_H + 18, fontSize: BROKERAGE_SIGN_SIZE, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
30808
30848
  Array.from({ length: rows }).map(
30809
30849
  (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30810
30850
  const wx = gridStartX + ci * (cellW + gapX);
@@ -30826,7 +30866,8 @@ function ShapeBrokerageNode({ node, active, lang }) {
30826
30866
  bottomLabel3(node, r.cx, r.label)
30827
30867
  ] });
30828
30868
  }
30829
- var EXCHANGE_SUB_SIZE = 8;
30869
+ var EXCHANGE_SUB_SIZE = 11;
30870
+ var EXCHANGE_HEX_R = 52;
30830
30871
  function ShapeExchangeNode({ node, active, lang }) {
30831
30872
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30832
30873
  const frame = commonFrame5(active);
@@ -30846,7 +30887,8 @@ function ShapeExchangeNode({ node, active, lang }) {
30846
30887
  idx: i
30847
30888
  };
30848
30889
  });
30849
- const hexR = 45;
30890
+ const hexR = EXCHANGE_HEX_R;
30891
+ const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
30850
30892
  const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
30851
30893
  const rad = deg * Math.PI / 180;
30852
30894
  return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
@@ -30854,7 +30896,7 @@ function ShapeExchangeNode({ node, active, lang }) {
30854
30896
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
30855
30897
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
30856
30898
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
30857
- const \u5B57\u4E0B = 26 + EXCHANGE_SUB_SIZE * 0.25;
30899
+ const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
30858
30900
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
30859
30901
  const \u305A\u308C = cy - r.cy;
30860
30902
  const \u5E83\u304C\u308A = {
@@ -30864,7 +30906,11 @@ function ShapeExchangeNode({ node, active, lang }) {
30864
30906
  \u53F3: \u5916
30865
30907
  };
30866
30908
  const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30867
- { text: \u5B57\u5F15("exchange.sub"), size: EXCHANGE_SUB_SIZE, \u5E2F: { \u5E45: \u5916 * 2, \u9AD8\u3055: 14 } }
30909
+ {
30910
+ text: \u5B57\u5F15("exchange.sub"),
30911
+ size: EXCHANGE_SUB_SIZE,
30912
+ \u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
30913
+ }
30868
30914
  ];
30869
30915
  const \u7D75 = (\u500D\u7387) => {
30870
30916
  const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
@@ -30878,9 +30924,9 @@ function ShapeExchangeNode({ node, active, lang }) {
30878
30924
  ] }, `d${i}`);
30879
30925
  }),
30880
30926
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30881
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30927
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: cy - 10, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30882
30928
  /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
30883
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: cy + 26, fontSize: EXCHANGE_SUB_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30929
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: cy + 28, fontSize: EXCHANGE_SUB_SIZE * \u500D, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30884
30930
  nodes.map((n, i) => /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
30885
30931
  ] });
30886
30932
  };
@@ -30898,10 +30944,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
30898
30944
  var ATM_FLOOR_UP = 6;
30899
30945
  var ATM_FLOOR_H = 10;
30900
30946
  var ATM_FLOOR_RESERVE = 12;
30901
- var ATM_PANEL_W = 140;
30947
+ var ATM_PANEL_W = 152;
30902
30948
  var ATM_PANEL_H = 146;
30903
30949
  var ATM_W_MIN = 100;
30904
- var ATM_W_MAX = 140;
30950
+ var ATM_W_MAX = ATM_PANEL_W;
30905
30951
  var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
30906
30952
  function ShapeAtmNode({ node, active, lang }) {
30907
30953
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
@@ -30942,9 +30988,9 @@ function ShapeAtmNode({ node, active, lang }) {
30942
30988
  /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x: atmX, y: atmY, width: atmW, height: atmH, rx: 6, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30943
30989
  /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
30944
30990
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 8, y: 10, width: ATM_PANEL_W - 16, height: 52, rx: 3, fill: "#0f1830", stroke: "#000", strokeWidth: 1.5 }),
30945
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30946
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30947
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30991
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 28, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30992
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 42, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30993
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 11, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30948
30994
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 8, y: 68, width: ATM_PANEL_W - 16, height: 42, rx: 2, fill: "#8b949e", stroke: "#5a6270", strokeWidth: 1 }),
30949
30995
  (() => {
30950
30996
  const keys = [
@@ -30962,7 +31008,7 @@ function ShapeAtmNode({ node, active, lang }) {
30962
31008
  const keyW = 18;
30963
31009
  const keyH = 10;
30964
31010
  const keyGap = 4;
30965
- const startX = \u9762\u5DE6 + 14;
31011
+ const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
30966
31012
  return keys.map((k, i) => {
30967
31013
  const row = Math.floor(i / 5);
30968
31014
  const col = i % 5;
@@ -30979,7 +31025,7 @@ function ShapeAtmNode({ node, active, lang }) {
30979
31025
  })(),
30980
31026
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 116, width: ATM_PANEL_W - 24, height: 8, rx: 1.5, fill: "#0f1830", stroke: accentDarker, strokeWidth: 1 }),
30981
31027
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
30982
- /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
31028
+ /* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 132, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
30983
31029
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
30984
31030
  ] }),
30985
31031
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -31088,6 +31134,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
31088
31134
  const doorH = facadeH - 30;
31089
31135
  const doorX = x + bw - doorW - 12;
31090
31136
  const doorY = facadeY + 20;
31137
+ const \u672D\u5E45 = Math.min(doorW - 6, 50);
31091
31138
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
31092
31139
  /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
31093
31140
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
@@ -31104,8 +31151,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
31104
31151
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
31105
31152
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.38, x2: doorX + doorW - 4, y2: doorY + doorH * 0.38, stroke: accentDarker, strokeWidth: 1 }),
31106
31153
  /* @__PURE__ */ jsxRuntime.jsx("line", { x1: doorX + 4, y1: doorY + doorH * 0.72, x2: doorX + doorW - 4, y2: doorY + doorH * 0.72, stroke: accentDarker, strokeWidth: 1 }),
31107
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + doorW / 2 - 20, y: doorY + doorH * 0.85, width: 40, height: 12, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),
31108
- /* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 9, fontSize: 8, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: \u5B57\u5F15("storefront.open") }),
31154
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + doorW / 2 - \u672D\u5E45 / 2, y: doorY + doorH * 0.85, width: \u672D\u5E45, height: 16, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),
31155
+ /* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 + 11, fontSize: 11, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#5a3a10", children: \u5B57\u5F15("storefront.open") }),
31109
31156
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
31110
31157
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
31111
31158
  bottomLabel4(node, r.cx, r.label)