@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/react.cjs CHANGED
@@ -364,7 +364,14 @@ function resolveLang(value) {
364
364
  }
365
365
  var en = {
366
366
  /** `shape-terminal` の 2 行目 (命令の出力) */
367
- "terminal.output": "\u2192 12 chunks in 1.8s",
367
+ /*
368
+ * `shape-terminal` の出力の行。
369
+ *
370
+ * **いちばん長い行が絵の倍率を決める** (#891)。 端末の中身は自分の座標で組んでから箱へ
371
+ * 収めるので、この行が長いほど全部の字が小さくなる。 120x110 の箱では 20 字の版で
372
+ * 7.71 world まで落ちていた。
373
+ */
374
+ "terminal.output": "\u2192 12 chunks",
368
375
  /** `shape-code-block` の札の file 名 */
369
376
  "codeBlock.fileName": "utils.ts",
370
377
  /** `shape-kanban-card` の課題の番号 */
@@ -399,8 +406,14 @@ var en = {
399
406
  "paymentProvider.sign": "PAY",
400
407
  /** `shape-payment-provider` の状態の札 */
401
408
  "paymentProvider.status": "PROCESSING",
402
- /** `shape-brokerage` の株価の帯 */
403
- "brokerage.ticker": "\u25B2NKY 38,240 \u25B2AAPL 194",
409
+ /**
410
+ * `shape-brokerage` の株価の帯。
411
+ *
412
+ * **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
413
+ * 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
414
+ * 担うので、銘柄を減らしても絵は変わらない。
415
+ */
416
+ "brokerage.ticker": "\u25B2NKY 38,240",
404
417
  /** `shape-brokerage` の看板 */
405
418
  "brokerage.sign": "$ SECURITIES",
406
419
  /** `shape-exchange` の看板 */
@@ -585,7 +598,7 @@ var en = {
585
598
  "readout.trafficLight.green": "green"
586
599
  };
587
600
  var ja = {
588
- "terminal.output": "\u2192 1.8 \u79D2\u3067\u5B8C\u4E86",
601
+ "terminal.output": "\u2192 12 \u500B\u3092\u7D50\u5408",
589
602
  "codeBlock.fileName": "\u5171\u901A.ts",
590
603
  "kanbanCard.id": "#1111",
591
604
  "kanbanCard.status": "\u9032\u884C\u4E2D",
@@ -603,7 +616,7 @@ var ja = {
603
616
  "trustBank.sign": "\u4FE1\u8A17",
604
617
  "paymentProvider.sign": "\u6C7A\u6E08",
605
618
  "paymentProvider.status": "\u51E6\u7406\u4E2D",
606
- "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240 \u25B2\u6771\u8A3C 2,710",
619
+ "brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
607
620
  "brokerage.sign": "\xA5 \u8A3C\u5238",
608
621
  "exchange.sign": "\u53D6\u5F15\u6240",
609
622
  "exchange.sub": "\u6E05\u7B97",
@@ -2872,6 +2885,7 @@ function textWidth(s, size, \u5B57\u9001\u308A = 0) {
2872
2885
  }
2873
2886
  return \u5E45 * size + \u5B57\u9001\u308A * \u5B57\u6570;
2874
2887
  }
2888
+ var \u7E2E\u3093\u3060\u7D75\u306E\u5B57\u306E\u4E0B\u9650 = 8;
2875
2889
 
2876
2890
  // src/kinds/row-align.ts
2877
2891
  var GENERIC_ROW_LEFT_SIZE_PX = 18;
@@ -12716,6 +12730,11 @@ function \u5272\u5408\u8868\u8A18(frac) {
12716
12730
  const v = Math.round(frac * 1e3) / 10;
12717
12731
  return `${Number.isInteger(v) ? v : v.toFixed(1)}%`;
12718
12732
  }
12733
+ var \u7A74\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
12734
+ function \u4E2D\u592E\u306E\u5B57(\u6BD4\u4F8B\u3057\u305F\u5927\u304D\u3055, \u7A74\u306E\u534A\u5F84, \u6587) {
12735
+ 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);
12736
+ 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);
12737
+ }
12719
12738
  function ChartPieNode({
12720
12739
  node,
12721
12740
  active,
@@ -12773,6 +12792,11 @@ function ChartPieNode({
12773
12792
  const cx = node.w / 2;
12774
12793
  const cy = PAD_TOP2 + chartAreaH / 2;
12775
12794
  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) : [];
12795
+ const \u7A74 = \u524D\u3042\u308A ? \u524D\u306E\u5185\u534A\u5F84 : \u5916\u306E\u5185\u534A\u5F84;
12796
+ const \u5408\u8A08\u306E\u6587 = \u5B9F\u5024\u8868\u8A18(Math.round(\u524D\u3042\u308A ? \u4ECA\u306E\u5408\u8A08 : total));
12797
+ const \u5408\u8A08\u306E\u5B57 = \u4E2D\u592E\u306E\u5B57(Math.round(radius * 0.26), \u7A74, \u5408\u8A08\u306E\u6587);
12798
+ const \u898B\u51FA\u3057\u306E\u5B572 = \u4E2D\u592E\u306E\u5B57(Math.round(radius * 0.12), \u7A74, "\u5408\u8A08");
12799
+ 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);
12776
12800
  const slices = \u8F2A\u3092\u7D44\u3080(data, cx, cy, radius, \u5916\u306E\u5185\u534A\u5F84, \u4ECA\u306E\u5272\u5408);
12777
12801
  const \u958B\u304D = \u9032\u307F\u3092\u7573\u3080(drawing, progress);
12778
12802
  const \u5207\u308A\u629C\u304Did = `cdl-pie-draw-${instanceId}`;
@@ -12851,19 +12875,19 @@ function ChartPieNode({
12851
12875
  x: cx,
12852
12876
  y: cy - 2,
12853
12877
  textAnchor: "middle",
12854
- fontSize: Math.round(radius * 0.26),
12878
+ fontSize: \u5408\u8A08\u306E\u5B57,
12855
12879
  fontWeight: 600,
12856
12880
  fill: "var(--cdl-text, #1a1f2a)",
12857
- children: \u5B9F\u5024\u8868\u8A18(Math.round(\u524D\u3042\u308A ? \u4ECA\u306E\u5408\u8A08 : total))
12881
+ children: \u5408\u8A08\u306E\u6587
12858
12882
  }
12859
12883
  ),
12860
12884
  /* @__PURE__ */ jsxRuntime.jsx(
12861
12885
  "text",
12862
12886
  {
12863
12887
  x: cx,
12864
- y: cy + Math.round(radius * 0.2),
12888
+ y: cy + \u5408\u8A08\u306E\u4E0B,
12865
12889
  textAnchor: "middle",
12866
- fontSize: Math.round(radius * 0.12),
12890
+ fontSize: \u898B\u51FA\u3057\u306E\u5B572,
12867
12891
  fill: "var(--cdl-text-dim, #5a6270)",
12868
12892
  children: "\u5408\u8A08"
12869
12893
  }
@@ -13066,6 +13090,10 @@ function \u8868\u306E\u5F62({ node, active, data, \u5272\u5408, x0, y0, drawing,
13066
13090
  const \u5185\u534A\u5F84 = R * 0.58;
13067
13091
  const cx = PAD + R;
13068
13092
  const cy = node.h / 2;
13093
+ const \u5408\u8A08\u306E\u6587 = \u5B9F\u5024\u8868\u8A18(Math.round(data.reduce((acc, d) => acc + d.value, 0)));
13094
+ const \u5408\u8A08\u306E\u5B57 = \u4E2D\u592E\u306E\u5B57(Math.round(R * 0.26), \u5185\u534A\u5F84, \u5408\u8A08\u306E\u6587);
13095
+ const \u898B\u51FA\u3057\u306E\u5B572 = \u4E2D\u592E\u306E\u5B57(Math.round(R * 0.12), \u5185\u534A\u5F84, "\u5408\u8A08");
13096
+ 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);
13069
13097
  const \u8868\u5DE6 = node.w - PAD - \u8868\u5E45;
13070
13098
  const \u53F3\u7AEF = node.w - PAD;
13071
13099
  const \u5272\u5408\u53F3 = \u53F3\u7AEF - \u5B9F\u6570\u5E45 - 24;
@@ -13107,19 +13135,19 @@ function \u8868\u306E\u5F62({ node, active, data, \u5272\u5408, x0, y0, drawing,
13107
13135
  x: cx,
13108
13136
  y: cy - 2,
13109
13137
  textAnchor: "middle",
13110
- fontSize: Math.round(R * 0.26),
13138
+ fontSize: \u5408\u8A08\u306E\u5B57,
13111
13139
  fontWeight: 600,
13112
13140
  fill: "var(--cdl-text, #1a1f2a)",
13113
- children: \u5B9F\u5024\u8868\u8A18(Math.round(data.reduce((acc, d) => acc + d.value, 0)))
13141
+ children: \u5408\u8A08\u306E\u6587
13114
13142
  }
13115
13143
  ),
13116
13144
  /* @__PURE__ */ jsxRuntime.jsx(
13117
13145
  "text",
13118
13146
  {
13119
13147
  x: cx,
13120
- y: cy + Math.round(R * 0.2),
13148
+ y: cy + \u5408\u8A08\u306E\u4E0B,
13121
13149
  textAnchor: "middle",
13122
- fontSize: Math.round(R * 0.12),
13150
+ fontSize: \u898B\u51FA\u3057\u306E\u5B572,
13123
13151
  fill: "var(--cdl-text-dim, #5a6270)",
13124
13152
  children: "\u5408\u8A08"
13125
13153
  }
@@ -15896,6 +15924,7 @@ function ShapeTerminalNode({ node, active, lang }) {
15896
15924
  const lineFont = "ui-monospace, SFMono-Regular, Menlo, monospace";
15897
15925
  const \u4F59\u767D = 16;
15898
15926
  const \u5E2F = 28;
15927
+ const \u5E2F\u306E\u5B57 = 12.5;
15899
15928
  const \u89D2 = 10;
15900
15929
  const \u5148\u982D = 26;
15901
15930
  const \u884C\u9593 = 22;
@@ -15905,7 +15934,7 @@ function ShapeTerminalNode({ node, active, lang }) {
15905
15934
  { \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" },
15906
15935
  { \u5DE6: 30, \u5B57: 12.5, \u8272: "#e6edf3", \u6587: "pnpm build" }
15907
15936
  ],
15908
- [{ \u5DE6: 16, \u5B57: 12, \u8272: "#8b95a5", \u6587: \u5B57\u5F15("terminal.output") }],
15937
+ [{ \u5DE6: 16, \u5B57: 12.5, \u8272: "#8b95a5", \u6587: \u5B57\u5F15("terminal.output") }],
15909
15938
  [{ \u5DE6: 16, \u5B57: 12.5, \u8272: "#7cd88f", \u6587: "$" }]
15910
15939
  ];
15911
15940
  const \u81EA\u7136\u5E45 = Math.max(...\u884C.flat().map((c) => c.\u5DE6 + \u7B49\u5E45\u306E\u6841(c.\u6587) * MONO_ADVANCE * c.\u5B57)) + \u4F59\u767D;
@@ -15947,7 +15976,7 @@ function ShapeTerminalNode({ node, active, lang }) {
15947
15976
  {
15948
15977
  x: x + w / 2,
15949
15978
  y: y + barH / 2 + 4 * \u500D,
15950
- fontSize: 11 * \u500D,
15979
+ fontSize: \u5E2F\u306E\u5B57 * \u500D,
15951
15980
  fontFamily: lineFont,
15952
15981
  textAnchor: "middle",
15953
15982
  fill: "#7a8290",
@@ -16038,6 +16067,7 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16038
16067
  const \u592A\u3055 = 9;
16039
16068
  const \u9699\u9593 = 6;
16040
16069
  const \u6301\u3061\u4E0A\u3052 = 8;
16070
+ const \u884C\u756A\u53F7\u306E\u5B57 = 11;
16041
16071
  const lines = [
16042
16072
  [
16043
16073
  { c: "#c678dd", w: 40 },
@@ -16060,14 +16090,13 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16060
16090
  { c: "#e6edf3", w: 40 }
16061
16091
  ]
16062
16092
  ];
16063
- const \u6700\u9577 = Math.max(
16064
- ...lines.map(
16065
- (tokens) => tokens.reduce((sum, token) => sum + token.w, 0) + \u9699\u9593 * (tokens.length - 1)
16066
- )
16067
- );
16068
- const \u81EA\u7136\u5E45 = \u6E9D + \u5B57\u4E0B\u3052 + \u6700\u9577 + \u4F59\u767D;
16069
- 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);
16070
- const \u500D = Math.min(1, w / \u81EA\u7136\u5E45, bodyH / \u81EA\u7136\u9AD8);
16093
+ 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);
16094
+ const \u500D = Math.min(1, bodyH / \u81EA\u7136\u9AD8);
16095
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
16096
+ { text: \u5B57\u5F15("codeBlock.fileName"), size: 11, \u5E2F: { \u5E45: \u30BF\u30D6\u5E45, \u9AD8\u3055: \u30BF\u30D6\u9AD8 } },
16097
+ { text: "1", size: \u884C\u756A\u53F7\u306E\u5B57, \u5E2F: { \u5E45: \u6E9D - \u6301\u3061\u4E0A\u3052, \u9AD8\u3055: \u884C\u9593 } }
16098
+ ];
16099
+ const \u500D\u8FD4\u3057 = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D, \u6253\u3061\u6D88\u3059\u5B57\u3089);
16071
16100
  const tabW = \u30BF\u30D6\u5E45 * \u500D;
16072
16101
  const tabH = \u30BF\u30D6\u9AD8 * \u500D;
16073
16102
  const \u4E38 = \u89D2 * \u500D;
@@ -16103,9 +16132,10 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16103
16132
  /* @__PURE__ */ jsxRuntime.jsx(
16104
16133
  "text",
16105
16134
  {
16135
+ "data-cdl-counter-scaled": "1",
16106
16136
  x: x + tabW / 2,
16107
16137
  y: y + tabH / 2 + 4 * \u500D,
16108
- fontSize: 11 * \u500D,
16138
+ fontSize: 11 * \u500D * \u500D\u8FD4\u3057,
16109
16139
  fontFamily: lineFont,
16110
16140
  textAnchor: "middle",
16111
16141
  fill: "#e6edf3",
@@ -16127,9 +16157,10 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16127
16157
  /* @__PURE__ */ jsxRuntime.jsx(
16128
16158
  "text",
16129
16159
  {
16160
+ "data-cdl-counter-scaled": "1",
16130
16161
  x: x + gutterW - \u6301\u3061\u4E0A\u3052 * \u500D,
16131
16162
  y: codeY0 + i * lineH,
16132
- fontSize: 10.5 * \u500D,
16163
+ fontSize: \u884C\u756A\u53F7\u306E\u5B57 * \u500D * \u500D\u8FD4\u3057,
16133
16164
  fontFamily: lineFont,
16134
16165
  textAnchor: "end",
16135
16166
  fill: "#4a5266",
@@ -16137,12 +16168,13 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16137
16168
  }
16138
16169
  ),
16139
16170
  toks.map((t, j) => {
16140
- const rect = /* @__PURE__ */ jsxRuntime.jsx(
16171
+ const \u63CF\u304F\u5E45 = Math.min(t.w * \u500D, x + w - \u4F59\u767D * \u500D - cursor);
16172
+ const rect = \u63CF\u304F\u5E45 > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
16141
16173
  "rect",
16142
16174
  {
16143
16175
  x: cursor,
16144
16176
  y: codeY0 + i * lineH - \u6301\u3061\u4E0A\u3052 * \u500D,
16145
- width: t.w * \u500D,
16177
+ width: \u63CF\u304F\u5E45,
16146
16178
  height: \u592A\u3055 * \u500D,
16147
16179
  rx: 2 * \u500D,
16148
16180
  fill: t.c,
@@ -16150,7 +16182,7 @@ function ShapeCodeBlockNode({ node, active, lang }) {
16150
16182
  stroke: "none"
16151
16183
  },
16152
16184
  j
16153
- );
16185
+ ) : null;
16154
16186
  cursor += (t.w + \u9699\u9593) * \u500D;
16155
16187
  return rect;
16156
16188
  })
@@ -16195,21 +16227,23 @@ function ShapeKanbanCardNode({ node, active, lang }) {
16195
16227
  const w = Math.max(0, node.w - \u7DDA * 2 - \u5F71);
16196
16228
  const h = Math.max(0, node.h - \u7DDA * 2 - \u5F71);
16197
16229
  const \u5E2F\u9593\u4F59\u767D = 4;
16198
- const \u5DE6\u53F3\u4F59\u767D = 14;
16199
- const \u4E0A\u6BB5\u9699\u9593 = 8;
16230
+ const \u5DE6\u53F3\u4F59\u767D = 12;
16231
+ const \u4E0A\u6BB5\u9699\u9593 = 6;
16200
16232
  const \u512A\u5148\u5E2F\u9AD8 = 10;
16201
16233
  const ID\u6587 = \u5B57\u5F15("kanbanCard.id");
16202
16234
  const ID\u57FA\u6E96 = 30;
16203
16235
  const ID\u5B57 = 11;
16204
16236
  const ID\u5B57\u9593 = 1;
16205
16237
  const PILL\u4E0A = 20;
16206
- const PILL\u5E45 = 54;
16238
+ const PILL\u5E45 = 62;
16207
16239
  const PILL\u9AD8 = 16;
16208
- const PILL\u5B57 = 9;
16240
+ const PILL\u5B57 = 11;
16241
+ const PILL\u5B57\u9593 = 0;
16209
16242
  const FOOTER\u4E0B = 22;
16210
16243
  const AVATAR\u4E2D\u5FC3Y = 4;
16211
16244
  const AVATAR\u534A\u5F84 = 9;
16212
16245
  const AVATAR\u67A0 = 1.5;
16246
+ const AVATAR\u5B57 = 11;
16213
16247
  const \u540D\u524D\u5B57 = 17;
16214
16248
  const \u8AAC\u660E\u57FA\u6E96\u6BD4 = 20 / 17;
16215
16249
  const \u8AAC\u660E\u5B57\u6BD4 = 12 / 17;
@@ -16292,7 +16326,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
16292
16326
  y: pillY + 12 * \u500D,
16293
16327
  fontSize: PILL\u5B57 * \u500D,
16294
16328
  fontWeight: 700,
16295
- letterSpacing: 1 * \u500D,
16329
+ letterSpacing: PILL\u5B57\u9593 * \u500D,
16296
16330
  textAnchor: "middle",
16297
16331
  fill: "#5a4a1a",
16298
16332
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
@@ -16340,7 +16374,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
16340
16374
  {
16341
16375
  x: 9 * \u500D,
16342
16376
  y: 8 * \u500D,
16343
- fontSize: 10 * \u500D,
16377
+ fontSize: AVATAR\u5B57 * \u500D,
16344
16378
  fontWeight: 700,
16345
16379
  textAnchor: "middle",
16346
16380
  fill: "#ffffff",
@@ -16364,7 +16398,7 @@ function ShapeKanbanCardNode({ node, active, lang }) {
16364
16398
  {
16365
16399
  x: 23 * \u500D,
16366
16400
  y: 8 * \u500D,
16367
- fontSize: 10 * \u500D,
16401
+ fontSize: AVATAR\u5B57 * \u500D,
16368
16402
  fontWeight: 700,
16369
16403
  textAnchor: "middle",
16370
16404
  fill: "#ffffff",
@@ -17338,7 +17372,7 @@ var SMART_CONTRACT_H = 220;
17338
17372
  var BLOCK_W = 240;
17339
17373
  var BLOCK_H = 220;
17340
17374
  var \u898B\u51FA\u3057\u306E\u5B57 = 13;
17341
- var \u540D\u306E\u5B57 = 10.5;
17375
+ var \u540D\u306E\u5B57 = 11;
17342
17376
  var \u5024\u306E\u5B57 = 11;
17343
17377
  var \u884C\u306E\u9593\u9694 = 22;
17344
17378
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
@@ -17355,12 +17389,12 @@ var CHAIN_BLOCK_SW = 2.5;
17355
17389
  var CHAIN_HEAD_H = 16;
17356
17390
  var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
17357
17391
  var CHAIN_ROW_GAP = 14;
17358
- var CHAIN_NO_SIZE = 10;
17392
+ var CHAIN_NO_SIZE = 11;
17359
17393
  var CONTRACT_CALL_SIZE = 11;
17360
17394
  var NFT_ID_SIZE = 15;
17361
- var CHAIN_HASH_SIZE = 7;
17362
- var BTC_NO_SIZE = 9;
17363
- var ETH_NO_SIZE = 9;
17395
+ var CHAIN_HASH_SIZE = 11;
17396
+ var BTC_NO_SIZE = 11;
17397
+ var ETH_NO_SIZE = 11;
17364
17398
  var NODE_HEX_R = 44;
17365
17399
  var NODE_PEER_R = 12;
17366
17400
  var NODE_PEER_GAP = 22;
@@ -17689,34 +17723,40 @@ function ShapeEthereumChainNode({ node, active }) {
17689
17723
  const linkW = CHAIN_LINK_W;
17690
17724
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
17691
17725
  const startX = cx - totalW / 2;
17692
- const art = /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17693
- const bx = startX + i * (blockW + linkW);
17694
- const isCurrent = i === blockCount - 1;
17695
- const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
17696
- return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17697
- i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
17698
- /* @__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" }),
17699
- /* @__PURE__ */ jsxRuntime.jsx(
17700
- "rect",
17701
- {
17702
- "data-cdl-role": i === 0 ? "node-body" : void 0,
17703
- x: bx,
17704
- y: cy - blockH / 2,
17705
- width: blockW,
17706
- height: blockH,
17707
- rx: 4,
17708
- fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
17709
- stroke: ethPurple,
17710
- strokeWidth: isCurrent ? 2.5 : 1.5
17711
- }
17712
- ),
17713
- /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
17714
- /* @__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: [
17715
- "#",
17716
- 21400 + i
17717
- ] })
17718
- ] }, i);
17719
- }) });
17726
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
17727
+ { text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
17728
+ ];
17729
+ const art = (\u500D\u7387) => {
17730
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
17731
+ return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
17732
+ const bx = startX + i * (blockW + linkW);
17733
+ const isCurrent = i === blockCount - 1;
17734
+ const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
17735
+ return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17736
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
17737
+ /* @__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" }),
17738
+ /* @__PURE__ */ jsxRuntime.jsx(
17739
+ "rect",
17740
+ {
17741
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
17742
+ x: bx,
17743
+ y: cy - blockH / 2,
17744
+ width: blockW,
17745
+ height: blockH,
17746
+ rx: 4,
17747
+ fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
17748
+ stroke: ethPurple,
17749
+ strokeWidth: isCurrent ? 2.5 : 1.5
17750
+ }
17751
+ ),
17752
+ /* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
17753
+ /* @__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: [
17754
+ "#",
17755
+ 214 + i
17756
+ ] })
17757
+ ] }, i);
17758
+ }) });
17759
+ };
17720
17760
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
17721
17761
  fitArt(r, chainExtent(), art),
17722
17762
  bottomLabel2(node, r.cx, r.label)
@@ -18167,7 +18207,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
18167
18207
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
18168
18208
  /* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
18169
18209
  ] }),
18170
- /* @__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") }),
18210
+ /* @__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") }),
18171
18211
  bottomLabel3(node, r.cx, r.label)
18172
18212
  ] });
18173
18213
  }
@@ -18196,12 +18236,12 @@ function ShapeCreditCardNode({ node, active }) {
18196
18236
  bottomLabel3(node, r.cx, r.label)
18197
18237
  ] });
18198
18238
  }
18199
- var BROKERAGE_TICK_H = 12;
18239
+ var BROKERAGE_TICK_H = 18;
18200
18240
  var BROKERAGE_LOGO_H = 26;
18201
- var BROKERAGE_TICK_INNER_H = 8;
18202
- var BROKERAGE_TICKER_SIZE = 5.5;
18241
+ var BROKERAGE_TICKER_SIZE = 11;
18242
+ var BROKERAGE_TICK_INNER_H = 14;
18203
18243
  var BROKERAGE_SIGN_SIZE = 12;
18204
- var BROKERAGE_GRID_TOP = 62;
18244
+ var BROKERAGE_GRID_TOP = 68;
18205
18245
  var BROKERAGE_CELL_W = 14;
18206
18246
  var BROKERAGE_CELL_H = 18;
18207
18247
  var BROKERAGE_GAP_X = 8;
@@ -18263,10 +18303,10 @@ function ShapeBrokerageNode({ node, active, lang }) {
18263
18303
  /* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
18264
18304
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
18265
18305
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
18266
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
18267
- /* @__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") }),
18306
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
18307
+ /* @__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") }),
18268
18308
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
18269
- /* @__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") }),
18309
+ /* @__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") }),
18270
18310
  Array.from({ length: rows }).map(
18271
18311
  (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
18272
18312
  const wx = gridStartX + ci * (cellW + gapX);
@@ -18288,7 +18328,8 @@ function ShapeBrokerageNode({ node, active, lang }) {
18288
18328
  bottomLabel3(node, r.cx, r.label)
18289
18329
  ] });
18290
18330
  }
18291
- var EXCHANGE_SUB_SIZE = 8;
18331
+ var EXCHANGE_SUB_SIZE = 11;
18332
+ var EXCHANGE_HEX_R = 52;
18292
18333
  function ShapeExchangeNode({ node, active, lang }) {
18293
18334
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
18294
18335
  const frame = commonFrame5(active);
@@ -18308,7 +18349,8 @@ function ShapeExchangeNode({ node, active, lang }) {
18308
18349
  idx: i
18309
18350
  };
18310
18351
  });
18311
- const hexR = 45;
18352
+ const hexR = EXCHANGE_HEX_R;
18353
+ const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
18312
18354
  const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
18313
18355
  const rad = deg * Math.PI / 180;
18314
18356
  return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
@@ -18316,7 +18358,7 @@ function ShapeExchangeNode({ node, active, lang }) {
18316
18358
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
18317
18359
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
18318
18360
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
18319
- const \u5B57\u4E0B = 26 + EXCHANGE_SUB_SIZE * 0.25;
18361
+ const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
18320
18362
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
18321
18363
  const \u305A\u308C = cy - r.cy;
18322
18364
  const \u5E83\u304C\u308A = {
@@ -18326,7 +18368,11 @@ function ShapeExchangeNode({ node, active, lang }) {
18326
18368
  \u53F3: \u5916
18327
18369
  };
18328
18370
  const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
18329
- { text: \u5B57\u5F15("exchange.sub"), size: EXCHANGE_SUB_SIZE, \u5E2F: { \u5E45: \u5916 * 2, \u9AD8\u3055: 14 } }
18371
+ {
18372
+ text: \u5B57\u5F15("exchange.sub"),
18373
+ size: EXCHANGE_SUB_SIZE,
18374
+ \u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
18375
+ }
18330
18376
  ];
18331
18377
  const \u7D75 = (\u500D\u7387) => {
18332
18378
  const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
@@ -18340,9 +18386,9 @@ function ShapeExchangeNode({ node, active, lang }) {
18340
18386
  ] }, `d${i}`);
18341
18387
  }),
18342
18388
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
18343
- /* @__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") }),
18389
+ /* @__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") }),
18344
18390
  /* @__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" }),
18345
- /* @__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") }),
18391
+ /* @__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") }),
18346
18392
  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}`))
18347
18393
  ] });
18348
18394
  };
@@ -18360,10 +18406,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
18360
18406
  var ATM_FLOOR_UP = 6;
18361
18407
  var ATM_FLOOR_H = 10;
18362
18408
  var ATM_FLOOR_RESERVE = 12;
18363
- var ATM_PANEL_W = 140;
18409
+ var ATM_PANEL_W = 152;
18364
18410
  var ATM_PANEL_H = 146;
18365
18411
  var ATM_W_MIN = 100;
18366
- var ATM_W_MAX = 140;
18412
+ var ATM_W_MAX = ATM_PANEL_W;
18367
18413
  var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
18368
18414
  function ShapeAtmNode({ node, active, lang }) {
18369
18415
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
@@ -18404,9 +18450,9 @@ function ShapeAtmNode({ node, active, lang }) {
18404
18450
  /* @__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 }),
18405
18451
  /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
18406
18452
  /* @__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 }),
18407
- /* @__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" }),
18408
- /* @__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") }),
18409
- /* @__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" }),
18453
+ /* @__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" }),
18454
+ /* @__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") }),
18455
+ /* @__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" }),
18410
18456
  /* @__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 }),
18411
18457
  (() => {
18412
18458
  const keys = [
@@ -18424,7 +18470,7 @@ function ShapeAtmNode({ node, active, lang }) {
18424
18470
  const keyW = 18;
18425
18471
  const keyH = 10;
18426
18472
  const keyGap = 4;
18427
- const startX = \u9762\u5DE6 + 14;
18473
+ const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
18428
18474
  return keys.map((k, i) => {
18429
18475
  const row = Math.floor(i / 5);
18430
18476
  const col = i % 5;
@@ -18441,7 +18487,7 @@ function ShapeAtmNode({ node, active, lang }) {
18441
18487
  })(),
18442
18488
  /* @__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 }),
18443
18489
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
18444
- /* @__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") }),
18490
+ /* @__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") }),
18445
18491
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
18446
18492
  ] }),
18447
18493
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -18550,6 +18596,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
18550
18596
  const doorH = facadeH - 30;
18551
18597
  const doorX = x + bw - doorW - 12;
18552
18598
  const doorY = facadeY + 20;
18599
+ const \u672D\u5E45 = Math.min(doorW - 6, 50);
18553
18600
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
18554
18601
  /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
18555
18602
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
@@ -18566,8 +18613,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
18566
18613
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
18567
18614
  /* @__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 }),
18568
18615
  /* @__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 }),
18569
- /* @__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 }),
18570
- /* @__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") }),
18616
+ /* @__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 }),
18617
+ /* @__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") }),
18571
18618
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
18572
18619
  /* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
18573
18620
  bottomLabel4(node, r.cx, r.label)