@cardenelabs/cdl 0.75.0 → 0.76.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/CHANGELOG.md +48 -1
- package/dist/index.cjs +80 -61
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +80 -61
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +80 -61
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +80 -61
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/shape-blockchain.tsx +21 -15
- package/src/kinds/shape-commerce.tsx +5 -3
- package/src/kinds/shape-finance.tsx +64 -36
- package/src/kinds/shape-software.tsx +3 -2
- package/src/lang.ts +9 -3
- package/src/visual-validate.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,52 @@ CDL (Chainome Diagram Language) の主要変更履歴。
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.76.0] - 2026-09-26
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **絵の中の字が読める大きさに届くようになった** (#888 / #892)
|
|
13
|
+
|
|
14
|
+
箱の中に描く絵 (`shape-*.tsx` の図案) の字を、絵が 1 つも縮まない箱で実効 world 11 以上に
|
|
15
|
+
した。 変更前は 13 種別 54 件が 11 を割っており、最小は相場の板の 5.5 だった。
|
|
16
|
+
|
|
17
|
+
**指定だけを見ても実際の大きさは判らない**。 絵は箱に合わせて丸ごと縮むので、
|
|
18
|
+
実効 world (指定 x 包みの倍率) が実際に描かれる大きさになる。 画面 px は図の大きさと器で
|
|
19
|
+
変わるため種別単体では測れず、同じ指定 5.5 が単体の見本で 8.3px、3 段の場面で 2.9px、
|
|
20
|
+
4 列の流れで 3.2px になっていた。
|
|
21
|
+
|
|
22
|
+
読む内容と通し番号の 35 件を指定 11 以上へ上げ、字が入らない入れ物を広げた。
|
|
23
|
+
|
|
24
|
+
| 種別 | 広げた入れ物 | 変更前 | 変更後 |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| `shape-brokerage` | 電光掲示板 (内側 / 外側) | 8 / 12 | 14 / 18 |
|
|
27
|
+
| `shape-atm` | 操作面の幅 (本体の上限も揃える) | 140 | 152 |
|
|
28
|
+
| `shape-exchange` | 中央の六角形の半径 | 45 | 52 |
|
|
29
|
+
| `shape-storefront` | 扉の営業札 | 40x12 | 50x16 |
|
|
30
|
+
| `shape-kanban-card` | 状態の札 | 54 | 70 |
|
|
31
|
+
|
|
32
|
+
**相場の字は 1 銘柄に絞った** (`brokerage.ticker` の英語と日本語)。 指定 11 の 2 銘柄は
|
|
33
|
+
幅 181 で、板の内側 136 に収めるにはビルを 190 まで広げることになり、窓の格子 124 の
|
|
34
|
+
左右に空き壁が残る。
|
|
35
|
+
|
|
36
|
+
**連鎖の番号は 3 桁に揃えた** (`shape-ethereum-chain` が `#21400` から `#214`)。
|
|
37
|
+
6 桁は幅 56.8 で帯 42 に入らず #887 で打ち消しから外していたが、3 桁なら 37.8 で収まる
|
|
38
|
+
ので他の 2 つの連鎖と同じ扱いに戻した。
|
|
39
|
+
|
|
40
|
+
入れ物に余白が無い 19 件は据え置いた。 鍵盤の鍵 10 (18x10 の鍵)、行番号 4、担当者の
|
|
41
|
+
頭文字 2、判子と硬貨の記号 3 で、理由は `test/art-text-declarations.ts` が 1 件ずつ持つ。
|
|
42
|
+
|
|
43
|
+
### Removed
|
|
44
|
+
|
|
45
|
+
- **死んでいた下限の定数を消した** (#888 / #892)
|
|
46
|
+
|
|
47
|
+
`visual-validate.ts` の `MIN_FONT_SIZE` (12) は `void` されていて 1 度も効かず、
|
|
48
|
+
comment の「cdl は 12px 以下を描かない」 は実物と違っていた。
|
|
49
|
+
|
|
50
|
+
残る 4 つの下限は座標系ごとに名前が分かれている。 world 側が `MIN_TEXT_SIZE` (11) /
|
|
51
|
+
`TITLE_MIN` (9) / `絵の中の字の下限` (11、本版で命名)、画面側が
|
|
52
|
+
`RESPONSIVE_MIN_ON_SCREEN_FONT_PX` (12)。
|
|
53
|
+
|
|
8
54
|
## [0.75.0] - 2026-09-26
|
|
9
55
|
|
|
10
56
|
### Changed
|
|
@@ -3125,7 +3171,8 @@ Initial OSS release.
|
|
|
3125
3171
|
使わない = annotated tag を push しても GitHub Release は作られず、 Release を作っていない版で
|
|
3126
3172
|
行き止まりになる。
|
|
3127
3173
|
|
|
3128
|
-
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.
|
|
3174
|
+
[Unreleased]: https://github.com/cardene777/cdl/compare/v0.76.0...HEAD
|
|
3175
|
+
[0.76.0]: https://github.com/cardene777/cdl/compare/v0.75.0...v0.76.0
|
|
3129
3176
|
[0.75.0]: https://github.com/cardene777/cdl/compare/v0.74.0...v0.75.0
|
|
3130
3177
|
[0.74.0]: https://github.com/cardene777/cdl/compare/v0.73.0...v0.74.0
|
|
3131
3178
|
[0.73.0]: https://github.com/cardene777/cdl/compare/v0.72.0...v0.73.0
|
package/dist/index.cjs
CHANGED
|
@@ -394,8 +394,14 @@ var en = {
|
|
|
394
394
|
"paymentProvider.sign": "PAY",
|
|
395
395
|
/** `shape-payment-provider` の状態の札 */
|
|
396
396
|
"paymentProvider.status": "PROCESSING",
|
|
397
|
-
/**
|
|
398
|
-
|
|
397
|
+
/**
|
|
398
|
+
* `shape-brokerage` の株価の帯。
|
|
399
|
+
*
|
|
400
|
+
* **1 銘柄に絞る** (#888)。 電光掲示板の内側は幅 136 しか無く、2 銘柄を指定 11 で描くと
|
|
401
|
+
* 幅 181 になってビルの外へ出る。 板が流れている雰囲気は帯そのもの (黒地に緑の等幅) が
|
|
402
|
+
* 担うので、銘柄を減らしても絵は変わらない。
|
|
403
|
+
*/
|
|
404
|
+
"brokerage.ticker": "\u25B2NKY 38,240",
|
|
399
405
|
/** `shape-brokerage` の看板 */
|
|
400
406
|
"brokerage.sign": "$ SECURITIES",
|
|
401
407
|
/** `shape-exchange` の看板 */
|
|
@@ -598,7 +604,7 @@ var ja = {
|
|
|
598
604
|
"trustBank.sign": "\u4FE1\u8A17",
|
|
599
605
|
"paymentProvider.sign": "\u6C7A\u6E08",
|
|
600
606
|
"paymentProvider.status": "\u51E6\u7406\u4E2D",
|
|
601
|
-
"brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240
|
|
607
|
+
"brokerage.ticker": "\u25B2\u65E5\u7D4C 38,240",
|
|
602
608
|
"brokerage.sign": "\xA5 \u8A3C\u5238",
|
|
603
609
|
"exchange.sign": "\u53D6\u5F15\u6240",
|
|
604
610
|
"exchange.sub": "\u6E05\u7B97",
|
|
@@ -28741,9 +28747,9 @@ function ShapeKanbanCardNode({ node, active, lang }) {
|
|
|
28741
28747
|
const ID\u5B57 = 11;
|
|
28742
28748
|
const ID\u5B57\u9593 = 1;
|
|
28743
28749
|
const PILL\u4E0A = 20;
|
|
28744
|
-
const PILL\u5E45 =
|
|
28750
|
+
const PILL\u5E45 = 70;
|
|
28745
28751
|
const PILL\u9AD8 = 16;
|
|
28746
|
-
const PILL\u5B57 =
|
|
28752
|
+
const PILL\u5B57 = 11;
|
|
28747
28753
|
const FOOTER\u4E0B = 22;
|
|
28748
28754
|
const AVATAR\u4E2D\u5FC3Y = 4;
|
|
28749
28755
|
const AVATAR\u534A\u5F84 = 9;
|
|
@@ -29876,7 +29882,7 @@ var SMART_CONTRACT_H = 220;
|
|
|
29876
29882
|
var BLOCK_W = 240;
|
|
29877
29883
|
var BLOCK_H = 220;
|
|
29878
29884
|
var \u898B\u51FA\u3057\u306E\u5B57 = 13;
|
|
29879
|
-
var \u540D\u306E\u5B57 =
|
|
29885
|
+
var \u540D\u306E\u5B57 = 11;
|
|
29880
29886
|
var \u5024\u306E\u5B57 = 11;
|
|
29881
29887
|
var \u884C\u306E\u9593\u9694 = 22;
|
|
29882
29888
|
var \u898B\u51FA\u3057\u306E\u5E2F = 32;
|
|
@@ -29893,12 +29899,12 @@ var CHAIN_BLOCK_SW = 2.5;
|
|
|
29893
29899
|
var CHAIN_HEAD_H = 16;
|
|
29894
29900
|
var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
|
|
29895
29901
|
var CHAIN_ROW_GAP = 14;
|
|
29896
|
-
var CHAIN_NO_SIZE =
|
|
29902
|
+
var CHAIN_NO_SIZE = 11;
|
|
29897
29903
|
var CONTRACT_CALL_SIZE = 11;
|
|
29898
29904
|
var NFT_ID_SIZE = 15;
|
|
29899
|
-
var CHAIN_HASH_SIZE =
|
|
29900
|
-
var BTC_NO_SIZE =
|
|
29901
|
-
var ETH_NO_SIZE =
|
|
29905
|
+
var CHAIN_HASH_SIZE = 11;
|
|
29906
|
+
var BTC_NO_SIZE = 11;
|
|
29907
|
+
var ETH_NO_SIZE = 11;
|
|
29902
29908
|
var NODE_HEX_R = 44;
|
|
29903
29909
|
var NODE_PEER_R = 12;
|
|
29904
29910
|
var NODE_PEER_GAP = 22;
|
|
@@ -30227,34 +30233,40 @@ function ShapeEthereumChainNode({ node, active }) {
|
|
|
30227
30233
|
const linkW = CHAIN_LINK_W;
|
|
30228
30234
|
const totalW = blockCount * blockW + (blockCount - 1) * linkW;
|
|
30229
30235
|
const startX = cx - totalW / 2;
|
|
30230
|
-
const
|
|
30231
|
-
|
|
30232
|
-
|
|
30233
|
-
|
|
30234
|
-
|
|
30235
|
-
|
|
30236
|
-
|
|
30237
|
-
|
|
30238
|
-
|
|
30239
|
-
|
|
30240
|
-
|
|
30241
|
-
|
|
30242
|
-
|
|
30243
|
-
|
|
30244
|
-
|
|
30245
|
-
|
|
30246
|
-
|
|
30247
|
-
|
|
30248
|
-
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30255
|
-
|
|
30256
|
-
|
|
30257
|
-
|
|
30236
|
+
const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
|
|
30237
|
+
{ text: "#214", size: ETH_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
|
|
30238
|
+
];
|
|
30239
|
+
const art = (\u500D\u7387) => {
|
|
30240
|
+
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
|
|
30241
|
+
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
|
|
30242
|
+
const bx = startX + i * (blockW + linkW);
|
|
30243
|
+
const isCurrent = i === blockCount - 1;
|
|
30244
|
+
const iconColors = isCurrent ? { light: "#ffffff", medium: "#e5e5f5", dark: "#c9c9e0", darker: "#a4a4c9", stroke: "#ffffff" } : { light: "#8a92b2", medium: "#62688f", dark: "#454a75", darker: "#3c3c3b", stroke: ethPurple };
|
|
30245
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
30246
|
+
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: ethPurple, strokeWidth: 3.5, strokeLinecap: "round" }),
|
|
30247
|
+
/* @__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" }),
|
|
30248
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30249
|
+
"rect",
|
|
30250
|
+
{
|
|
30251
|
+
"data-cdl-role": i === 0 ? "node-body" : void 0,
|
|
30252
|
+
x: bx,
|
|
30253
|
+
y: cy - blockH / 2,
|
|
30254
|
+
width: blockW,
|
|
30255
|
+
height: blockH,
|
|
30256
|
+
rx: 4,
|
|
30257
|
+
fill: isCurrent ? ethPurple : "var(--cdl-node-fill, #ffffff)",
|
|
30258
|
+
stroke: ethPurple,
|
|
30259
|
+
strokeWidth: isCurrent ? 2.5 : 1.5
|
|
30260
|
+
}
|
|
30261
|
+
),
|
|
30262
|
+
/* @__PURE__ */ jsxRuntime.jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
|
|
30263
|
+
/* @__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: [
|
|
30264
|
+
"#",
|
|
30265
|
+
214 + i
|
|
30266
|
+
] })
|
|
30267
|
+
] }, i);
|
|
30268
|
+
}) });
|
|
30269
|
+
};
|
|
30258
30270
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
30259
30271
|
fitArt(r, chainExtent(), art),
|
|
30260
30272
|
bottomLabel2(node, r.cx, r.label)
|
|
@@ -30705,7 +30717,7 @@ function ShapePaymentProviderNode({ node, active, lang }) {
|
|
|
30705
30717
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx, cy: cy + 4, r: 10, fill: "#e5c07b", stroke: accentDarker, strokeWidth: 1.5 }),
|
|
30706
30718
|
/* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: cy + 9, fontSize: 13, fontWeight: 700, textAnchor: "middle", fill: accentDarker, fontFamily: "Georgia, serif", children: "$" })
|
|
30707
30719
|
] }),
|
|
30708
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: cx, y: y + boxH - 16, fontSize:
|
|
30720
|
+
/* @__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
30721
|
bottomLabel3(node, r.cx, r.label)
|
|
30710
30722
|
] });
|
|
30711
30723
|
}
|
|
@@ -30734,12 +30746,12 @@ function ShapeCreditCardNode({ node, active }) {
|
|
|
30734
30746
|
bottomLabel3(node, r.cx, r.label)
|
|
30735
30747
|
] });
|
|
30736
30748
|
}
|
|
30737
|
-
var BROKERAGE_TICK_H =
|
|
30749
|
+
var BROKERAGE_TICK_H = 18;
|
|
30738
30750
|
var BROKERAGE_LOGO_H = 26;
|
|
30739
|
-
var
|
|
30740
|
-
var
|
|
30751
|
+
var BROKERAGE_TICKER_SIZE = 11;
|
|
30752
|
+
var BROKERAGE_TICK_INNER_H = 14;
|
|
30741
30753
|
var BROKERAGE_SIGN_SIZE = 12;
|
|
30742
|
-
var BROKERAGE_GRID_TOP =
|
|
30754
|
+
var BROKERAGE_GRID_TOP = 68;
|
|
30743
30755
|
var BROKERAGE_CELL_W = 14;
|
|
30744
30756
|
var BROKERAGE_CELL_H = 18;
|
|
30745
30757
|
var BROKERAGE_GAP_X = 8;
|
|
@@ -30801,10 +30813,10 @@ function ShapeBrokerageNode({ node, active, lang }) {
|
|
|
30801
30813
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
|
|
30802
30814
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
|
|
30803
30815
|
/* @__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:
|
|
30805
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "1", x: cx, y: y +
|
|
30816
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: BROKERAGE_TICK_INNER_H, fill: "#1a2340", stroke: "none" }),
|
|
30817
|
+
/* @__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
30818
|
/* @__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 +
|
|
30819
|
+
/* @__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
30820
|
Array.from({ length: rows }).map(
|
|
30809
30821
|
(_, ri) => Array.from({ length: cols }).map((_2, ci) => {
|
|
30810
30822
|
const wx = gridStartX + ci * (cellW + gapX);
|
|
@@ -30826,7 +30838,8 @@ function ShapeBrokerageNode({ node, active, lang }) {
|
|
|
30826
30838
|
bottomLabel3(node, r.cx, r.label)
|
|
30827
30839
|
] });
|
|
30828
30840
|
}
|
|
30829
|
-
var EXCHANGE_SUB_SIZE =
|
|
30841
|
+
var EXCHANGE_SUB_SIZE = 11;
|
|
30842
|
+
var EXCHANGE_HEX_R = 52;
|
|
30830
30843
|
function ShapeExchangeNode({ node, active, lang }) {
|
|
30831
30844
|
const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
|
|
30832
30845
|
const frame = commonFrame5(active);
|
|
@@ -30846,7 +30859,8 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30846
30859
|
idx: i
|
|
30847
30860
|
};
|
|
30848
30861
|
});
|
|
30849
|
-
const hexR =
|
|
30862
|
+
const hexR = EXCHANGE_HEX_R;
|
|
30863
|
+
const \u516D\u89D2\u306E\u6A2A\u5E45 = (d) => hexR * Math.sqrt(3) * Math.min(1, Math.max(0, (hexR - Math.abs(d)) / (hexR / 2)));
|
|
30850
30864
|
const hexPoints = [-90, -30, 30, 90, 150, 210].map((deg) => {
|
|
30851
30865
|
const rad = deg * Math.PI / 180;
|
|
30852
30866
|
return { x: cx + Math.cos(rad) * hexR, y: cy + Math.sin(rad) * hexR };
|
|
@@ -30854,7 +30868,7 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30854
30868
|
const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
|
|
30855
30869
|
const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
|
|
30856
30870
|
const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
|
|
30857
|
-
const \u5B57\u4E0B =
|
|
30871
|
+
const \u5B57\u4E0B = 28 + EXCHANGE_SUB_SIZE * 0.25;
|
|
30858
30872
|
const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
|
|
30859
30873
|
const \u305A\u308C = cy - r.cy;
|
|
30860
30874
|
const \u5E83\u304C\u308A = {
|
|
@@ -30864,7 +30878,11 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30864
30878
|
\u53F3: \u5916
|
|
30865
30879
|
};
|
|
30866
30880
|
const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
|
|
30867
|
-
{
|
|
30881
|
+
{
|
|
30882
|
+
text: \u5B57\u5F15("exchange.sub"),
|
|
30883
|
+
size: EXCHANGE_SUB_SIZE,
|
|
30884
|
+
\u5E2F: { \u5E45: \u516D\u89D2\u306E\u6A2A\u5E45(\u5B57\u4E0B), \u9AD8\u3055: 14 }
|
|
30885
|
+
}
|
|
30868
30886
|
];
|
|
30869
30887
|
const \u7D75 = (\u500D\u7387) => {
|
|
30870
30888
|
const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
|
|
@@ -30878,9 +30896,9 @@ function ShapeExchangeNode({ node, active, lang }) {
|
|
|
30878
30896
|
] }, `d${i}`);
|
|
30879
30897
|
}),
|
|
30880
30898
|
/* @__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 -
|
|
30899
|
+
/* @__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
30900
|
/* @__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 +
|
|
30901
|
+
/* @__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
30902
|
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
30903
|
] });
|
|
30886
30904
|
};
|
|
@@ -30898,10 +30916,10 @@ var ATM_SHADOW_RX_RATIO = 0.6;
|
|
|
30898
30916
|
var ATM_FLOOR_UP = 6;
|
|
30899
30917
|
var ATM_FLOOR_H = 10;
|
|
30900
30918
|
var ATM_FLOOR_RESERVE = 12;
|
|
30901
|
-
var ATM_PANEL_W =
|
|
30919
|
+
var ATM_PANEL_W = 152;
|
|
30902
30920
|
var ATM_PANEL_H = 146;
|
|
30903
30921
|
var ATM_W_MIN = 100;
|
|
30904
|
-
var ATM_W_MAX =
|
|
30922
|
+
var ATM_W_MAX = ATM_PANEL_W;
|
|
30905
30923
|
var ATM_H_MIN = ATM_SIGN_H + ATM_SIGN_GAP + 30 + ATM_FLOOR_RESERVE;
|
|
30906
30924
|
function ShapeAtmNode({ node, active, lang }) {
|
|
30907
30925
|
const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
|
|
@@ -30942,9 +30960,9 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30942
30960
|
/* @__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
30961
|
/* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
|
|
30944
30962
|
/* @__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:
|
|
30946
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y:
|
|
30947
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize:
|
|
30963
|
+
/* @__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" }),
|
|
30964
|
+
/* @__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") }),
|
|
30965
|
+
/* @__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
30966
|
/* @__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
30967
|
(() => {
|
|
30950
30968
|
const keys = [
|
|
@@ -30962,7 +30980,7 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30962
30980
|
const keyW = 18;
|
|
30963
30981
|
const keyH = 10;
|
|
30964
30982
|
const keyGap = 4;
|
|
30965
|
-
const startX = \u9762\u5DE6 +
|
|
30983
|
+
const startX = \u9762\u5DE6 + (ATM_PANEL_W - (5 * keyW + 4 * keyGap)) / 2;
|
|
30966
30984
|
return keys.map((k, i) => {
|
|
30967
30985
|
const row = Math.floor(i / 5);
|
|
30968
30986
|
const col = i % 5;
|
|
@@ -30979,7 +30997,7 @@ function ShapeAtmNode({ node, active, lang }) {
|
|
|
30979
30997
|
})(),
|
|
30980
30998
|
/* @__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
30999
|
/* @__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:
|
|
31000
|
+
/* @__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
31001
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
|
|
30984
31002
|
] }),
|
|
30985
31003
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
|
|
@@ -31088,6 +31106,7 @@ function ShapeStorefrontNode({ node, active, lang }) {
|
|
|
31088
31106
|
const doorH = facadeH - 30;
|
|
31089
31107
|
const doorX = x + bw - doorW - 12;
|
|
31090
31108
|
const doorY = facadeY + 20;
|
|
31109
|
+
const \u672D\u5E45 = Math.min(doorW - 6, 50);
|
|
31091
31110
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
31092
31111
|
/* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx, cy: y + bh + 8, rx: bw * 0.5, ry: 5, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
|
|
31093
31112
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x, y, width: bw, height: signH, fill: accent, stroke: accentDark, strokeWidth: 2 }),
|
|
@@ -31104,8 +31123,8 @@ function ShapeStorefrontNode({ node, active, lang }) {
|
|
|
31104
31123
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: doorX + 4, y: doorY + 4, width: doorW - 8, height: doorH - 8, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1.5 }),
|
|
31105
31124
|
/* @__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
31125
|
/* @__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 -
|
|
31108
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: doorX + doorW / 2, y: doorY + doorH * 0.85 +
|
|
31126
|
+
/* @__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 }),
|
|
31127
|
+
/* @__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
31128
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: doorX + 6, cy: doorY + doorH * 0.55, r: 1.5, fill: "#c15a4a" }),
|
|
31110
31129
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: x - 6, y: y + bh - 6, width: bw + 12, height: 8, fill: "#5a6270", stroke: "none" }),
|
|
31111
31130
|
bottomLabel4(node, r.cx, r.label)
|