@cardenelabs/cdl 0.73.0 → 0.75.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.js CHANGED
@@ -14608,7 +14608,38 @@ function fitArt(region, extent, art) {
14608
14608
  const dx = region.cx - s * \u7D75cx;
14609
14609
  const dy = region.cy - s * \u7D75cy;
14610
14610
  if (s >= 1 && dx === 0 && dy === 0) return \u7D44\u3080(1);
14611
- return /* @__PURE__ */ jsx("g", { transform: `translate(${dx} ${dy}) scale(${s})`, children: \u7D44\u3080(s) });
14611
+ return (
14612
+ /*
14613
+ * 包みに印を付ける (#886)。 **`scale(` を持つ変換は他にもある** = `event` は目立たせる
14614
+ * ための脈動を `scale(0.78)` から `scale(1)` で描き、絵を箱に収める縮小ではない。
14615
+ * 祖先の変換を正規表現で見る形だと、その脈動まで「絵の縮小」 として数える。
14616
+ */
14617
+ /* @__PURE__ */ jsx("g", { "data-cdl-art-fit": "1", transform: `translate(${dx} ${dy}) scale(${s})`, children: \u7D44\u3080(s) })
14618
+ );
14619
+ }
14620
+ var \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
14621
+ function \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size, letterSpacing = 0) {
14622
+ return Math.max(
14623
+ displayWidth(text) * size * MONO_ADVANCE_RATIO,
14624
+ textWidth(text, size, letterSpacing)
14625
+ );
14626
+ }
14627
+ function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u5B57\u3089) {
14628
+ const \u623B\u3057 = Number.isFinite(\u500D\u7387) && \u500D\u7387 > 0 ? 1 / \u500D\u7387 : 1;
14629
+ let \u4E0A\u9650 = Number.POSITIVE_INFINITY;
14630
+ for (const \u5B572 of \u5B57\u3089) {
14631
+ if (!(Number.isFinite(\u5B572.size) && \u5B572.size > 0)) continue;
14632
+ const { \u5E45, \u9AD8\u3055 } = \u5B572.\u5E2F;
14633
+ if (Number.isFinite(\u9AD8\u3055) && \u9AD8\u3055 > 0) {
14634
+ \u4E0A\u9650 = Math.min(\u4E0A\u9650, \u9AD8\u3055 * \u5E2F\u306E\u9AD8\u3055\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5B572.size);
14635
+ }
14636
+ const \u5B9F\u5E45 = \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(\u5B572.text, \u5B572.size, \u5B572.letterSpacing ?? 0);
14637
+ if (Number.isFinite(\u5E45) && \u5E45 > 0 && \u5B9F\u5E45 > 0) {
14638
+ \u4E0A\u9650 = Math.min(\u4E0A\u9650, \u5E45 / \u5B9F\u5E45);
14639
+ }
14640
+ }
14641
+ if (!Number.isFinite(\u4E0A\u9650)) return 1;
14642
+ return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
14612
14643
  }
14613
14644
 
14614
14645
  // src/render/tone.ts
@@ -29847,15 +29878,6 @@ var \u540D\u306E\u5B57 = 10.5;
29847
29878
  var \u5024\u306E\u5B57 = 11;
29848
29879
  var \u884C\u306E\u9593\u9694 = 22;
29849
29880
  var \u898B\u51FA\u3057\u306E\u5E2F = 32;
29850
- var \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 = 0.8;
29851
- function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(k) {
29852
- const \u623B\u3057 = Number.isFinite(k) && k > 0 ? 1 / k : 1;
29853
- const \u4E0A\u9650 = Math.min(
29854
- \u884C\u306E\u9593\u9694 * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u5024\u306E\u5B57,
29855
- \u898B\u51FA\u3057\u306E\u5E2F * \u5E2F\u306B\u5BFE\u3059\u308B\u4E0A\u9650 / \u898B\u51FA\u3057\u306E\u5B57
29856
- );
29857
- return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
29858
- }
29859
29881
  var BLOCK_SHADOW = 6;
29860
29882
  var NFT_W = 220;
29861
29883
  var NFT_H = 240;
@@ -29866,6 +29888,15 @@ var CHAIN_BLOCK_H = 66;
29866
29888
  var CHAIN_LINK_W = 12;
29867
29889
  var CHAIN_SHADOW = 3;
29868
29890
  var CHAIN_BLOCK_SW = 2.5;
29891
+ var CHAIN_HEAD_H = 16;
29892
+ var CHAIN_TEXT_W = CHAIN_BLOCK_W - 8;
29893
+ var CHAIN_ROW_GAP = 14;
29894
+ var CHAIN_NO_SIZE = 10;
29895
+ var CONTRACT_CALL_SIZE = 11;
29896
+ var NFT_ID_SIZE = 15;
29897
+ var CHAIN_HASH_SIZE = 7;
29898
+ var BTC_NO_SIZE = 9;
29899
+ var ETH_NO_SIZE = 9;
29869
29900
  var NODE_HEX_R = 44;
29870
29901
  var NODE_PEER_R = 12;
29871
29902
  var NODE_PEER_GAP = 22;
@@ -29979,30 +30010,40 @@ function ShapeSmartContractNode({ node, active, lang }) {
29979
30010
  gearPts.push(`${gearCx + Math.cos(a3) * gearTipR},${gearCy + Math.sin(a3) * gearTipR}`);
29980
30011
  gearPts.push(`${gearCx + Math.cos(a4) * gearBodyR},${gearCy + Math.sin(a4) * gearBodyR}`);
29981
30012
  }
29982
- const art = /* @__PURE__ */ jsxs("g", { children: [
29983
- /* @__PURE__ */ jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
29984
- /* @__PURE__ */ jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
29985
- [y + 40, y + 58, y + 76, y + 94].map((ly, i) => /* @__PURE__ */ jsx("rect", { x: x + 16, y: ly - 3, width: docW - 32 - i * 22, height: 5, rx: 1, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.7, stroke: "none" }, i)),
29986
- /* @__PURE__ */ jsx("text", { x: x + 16, y: y + docH - 46, fontSize: 11, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u5B57\u5F15("smartContract.call") }),
29987
- /* @__PURE__ */ jsx(
29988
- "polygon",
29989
- {
29990
- points: gearPts.join(" "),
29991
- fill: "var(--cdl-tone-accent, #2d6a8f)",
29992
- stroke: frame.stroke,
29993
- strokeWidth: 1.2,
29994
- strokeLinejoin: "round",
29995
- children: /* @__PURE__ */ jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
29996
- }
29997
- ),
29998
- /* @__PURE__ */ jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
29999
- ] });
30013
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30014
+ {
30015
+ text: \u5B57\u5F15("smartContract.call"),
30016
+ size: CONTRACT_CALL_SIZE,
30017
+ \u5E2F: { \u5E45: docW - 32, \u9AD8\u3055: 18 }
30018
+ }
30019
+ ];
30020
+ const art = (\u500D\u7387) => {
30021
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30022
+ return /* @__PURE__ */ jsxs("g", { children: [
30023
+ /* @__PURE__ */ jsx("path", { "data-cdl-role": "node-body", d: path, ...frame, strokeLinejoin: "round" }),
30024
+ /* @__PURE__ */ jsx("path", { d: foldPath, fill: "none", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30025
+ [y + 40, y + 58, y + 76, y + 94].map((ly, i) => /* @__PURE__ */ jsx("rect", { x: x + 16, y: ly - 3, width: docW - 32 - i * 22, height: 5, rx: 1, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.7, stroke: "none" }, i)),
30026
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: x + 16, y: y + docH - 46, fontSize: CONTRACT_CALL_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u5B57\u5F15("smartContract.call") }),
30027
+ /* @__PURE__ */ jsx(
30028
+ "polygon",
30029
+ {
30030
+ points: gearPts.join(" "),
30031
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30032
+ stroke: frame.stroke,
30033
+ strokeWidth: 1.2,
30034
+ strokeLinejoin: "round",
30035
+ children: /* @__PURE__ */ jsx("animateTransform", { attributeName: "transform", type: "rotate", from: `0 ${gearCx} ${gearCy}`, to: `360 ${gearCx} ${gearCy}`, dur: "8s", repeatCount: "indefinite" })
30036
+ }
30037
+ ),
30038
+ /* @__PURE__ */ jsx("circle", { cx: gearCx, cy: gearCy, r: gearBodyR * 0.4, fill: "var(--cdl-node-fill, #ffffff)", stroke: "none" })
30039
+ ] });
30040
+ };
30000
30041
  return /* @__PURE__ */ jsxs("g", { children: [
30001
30042
  fitArt(r, smartContractExtent(frame.strokeWidth), art),
30002
30043
  bottomLabel2(node, r.cx, r.label)
30003
30044
  ] });
30004
30045
  }
30005
- var \u5B57\u306E\u5E45 = (text, size) => Math.max(displayWidth(text) * size * MONO_ADVANCE_RATIO, textWidth(text, size));
30046
+ var \u5B57\u306E\u5E45 = (text, size) => \u7D75\u306E\u4E2D\u306E\u5B57\u306E\u5E45(text, size);
30006
30047
  var BLOCK_DEFAULT_FIELDS = [
30007
30048
  { key: "hash", label: "blockchainBlock.hash", value: { text: "0xaf31c9d2..." } },
30008
30049
  { key: "prev", label: "blockchainBlock.prev", value: { text: "0x7b3f92c1..." } },
@@ -30031,8 +30072,19 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
30031
30072
  };
30032
30073
  });
30033
30074
  const \u898B\u51FA\u3057\u306E\u5E45 = bw - 14 - 30;
30075
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30076
+ { text: \u898B\u51FA\u3057, size: \u898B\u51FA\u3057\u306E\u5B57, \u5E2F: { \u5E45: \u898B\u51FA\u3057\u306E\u5E45, \u9AD8\u3055: \u898B\u51FA\u3057\u306E\u5E2F } },
30077
+ ...fields.flatMap((f) => [
30078
+ { text: f.label, size: \u540D\u306E\u5B57, \u5E2F: { \u5E45: bw - 28, \u9AD8\u3055: \u884C\u306E\u9593\u9694 } },
30079
+ {
30080
+ text: f.value,
30081
+ size: \u5024\u306E\u5B57,
30082
+ \u5E2F: { \u5E45: bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5B57) - 8, \u9AD8\u3055: \u884C\u306E\u9593\u9694 }
30083
+ }
30084
+ ])
30085
+ ];
30034
30086
  const art = (\u500D\u7387) => {
30035
- const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387);
30087
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30036
30088
  const \u984C\u306E\u5927\u304D\u3055 = \u898B\u51FA\u3057\u306E\u5B57 * \u500D;
30037
30089
  const \u540D\u306E\u5927\u304D\u3055 = \u540D\u306E\u5B57 * \u500D;
30038
30090
  const \u5024\u306E\u5927\u304D\u3055 = \u5024\u306E\u5B57 * \u500D;
@@ -30040,11 +30092,11 @@ function ShapeBlockchainBlockNode({ node, active, lang }) {
30040
30092
  /* @__PURE__ */ jsx("rect", { x: x + 6, y: y + 6, width: bw, height: bh, rx: 8, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30041
30093
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 8, ...frame }),
30042
30094
  /* @__PURE__ */ jsx("path", { d: `M ${x} ${y + 32} L ${x} ${y + 8} Q ${x} ${y}, ${x + 8} ${y} L ${x + bw - 8} ${y} Q ${x + bw} ${y}, ${x + bw} ${y + 8} L ${x + bw} ${y + 32} Z`, fill: "var(--cdl-tone-accent, #2d6a8f)", fillOpacity: 0.9, stroke: "none" }),
30043
- /* @__PURE__ */ jsx("text", { "data-cdl-role": "blockchain-block-title", x: x + 14, y: y + 22, fontSize: \u984C\u306E\u5927\u304D\u3055, fontWeight: 700, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#ffffff", children: \u5E45\u3067\u5207\u308B(\u898B\u51FA\u3057, \u984C\u306E\u5927\u304D\u3055, \u898B\u51FA\u3057\u306E\u5E45, \u5B57\u306E\u5E45) }),
30095
+ /* @__PURE__ */ jsx("text", { "data-cdl-role": "blockchain-block-title", "data-cdl-counter-scaled": "1", x: x + 14, y: y + 22, fontSize: \u984C\u306E\u5927\u304D\u3055, fontWeight: 700, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#ffffff", children: \u5E45\u3067\u5207\u308B(\u898B\u51FA\u3057, \u984C\u306E\u5927\u304D\u3055, \u898B\u51FA\u3057\u306E\u5E45, \u5B57\u306E\u5E45) }),
30044
30096
  /* @__PURE__ */ jsx("circle", { cx: x + bw - 16, cy: y + 16, r: 5.5, fill: "#7cd88f", stroke: "#ffffff", strokeWidth: 1.5 }),
30045
30097
  fields.map((f, i) => /* @__PURE__ */ jsxs("g", { children: [
30046
- /* @__PURE__ */ jsx("text", { x: x + 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u540D\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-text-dim, #5a6270)", children: f.label }),
30047
- /* @__PURE__ */ jsx("text", { "data-cdl-role": `blockchain-block-${f.key}`, x: x + bw - 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u5024\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, \u5024\u306E\u5927\u304D\u3055, bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5927\u304D\u3055) - 8, \u5B57\u306E\u5E45) }),
30098
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: x + 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u540D\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "var(--cdl-text-dim, #5a6270)", children: f.label }),
30099
+ /* @__PURE__ */ jsx("text", { "data-cdl-role": `blockchain-block-${f.key}`, "data-cdl-counter-scaled": "1", x: x + bw - 14, y: y + 54 + i * \u884C\u306E\u9593\u9694, fontSize: \u5024\u306E\u5927\u304D\u3055, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 600, textAnchor: "end", fill: "var(--cdl-text, #1a1f2a)", children: \u5E45\u3067\u5207\u308B(f.value, \u5024\u306E\u5927\u304D\u3055, bw - 28 - \u5B57\u306E\u5E45(f.label, \u540D\u306E\u5927\u304D\u3055) - 8, \u5B57\u306E\u5E45) }),
30048
30100
  /* @__PURE__ */ jsx("line", { x1: x + 14, y1: y + 60 + i * \u884C\u306E\u9593\u9694, x2: x + bw - 14, y2: y + 60 + i * \u884C\u306E\u9593\u9694, stroke: "var(--cdl-divider, #d4d4d8)", strokeWidth: 0.5, opacity: 0.5 })
30049
30101
  ] }, i)),
30050
30102
  /* @__PURE__ */ jsxs("g", { transform: `translate(${cx - 32}, ${y + bh - 26})`, children: [
@@ -30067,38 +30119,45 @@ function ShapeBlockchainNode({ node, active }) {
30067
30119
  const linkW = CHAIN_LINK_W;
30068
30120
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30069
30121
  const startX = cx - totalW / 2;
30070
- const art = /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30071
- const bx = startX + i * (blockW + linkW);
30072
- const isCurrent = i === blockCount - 1;
30073
- return /* @__PURE__ */ jsxs("g", { children: [
30074
- i > 0 && /* @__PURE__ */ jsxs("g", { children: [
30075
- /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
30076
- /* @__PURE__ */ jsx("circle", { cx: bx - linkW / 2, cy, r: 2.5, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.3;1;0.3", dur: `${1 + i * 0.2}s`, repeatCount: "indefinite" }) })
30077
- ] }),
30078
- /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30079
- /* @__PURE__ */ jsx(
30080
- "rect",
30081
- {
30082
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30083
- x: bx,
30084
- y: cy - blockH / 2,
30085
- width: blockW,
30086
- height: blockH,
30087
- rx: 4,
30088
- fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
30089
- stroke: frame.stroke,
30090
- strokeWidth: isCurrent ? 2.5 : 1.5
30091
- }
30092
- ),
30093
- /* @__PURE__ */ jsx("rect", { x: bx, y: cy - blockH / 2, width: blockW, height: 16, rx: 4, fill: isCurrent ? "#1a4a68" : "var(--cdl-divider, #d4d4d8)", fillOpacity: isCurrent ? 1 : 0.4, stroke: "none" }),
30094
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy - blockH / 2 + 12, fontSize: 10, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30095
- "#",
30096
- 420 + i
30097
- ] }),
30098
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy + 8, fontSize: 14, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: "#" }),
30099
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy + 22, fontSize: 7, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", opacity: 0.9, children: "0x\u2026" })
30100
- ] }, i);
30101
- }) });
30122
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30123
+ { text: "#420", size: CHAIN_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_HEAD_H } },
30124
+ { text: "0x\u2026", size: CHAIN_HASH_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: CHAIN_ROW_GAP } }
30125
+ ];
30126
+ const art = (\u500D\u7387) => {
30127
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30128
+ return /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30129
+ const bx = startX + i * (blockW + linkW);
30130
+ const isCurrent = i === blockCount - 1;
30131
+ return /* @__PURE__ */ jsxs("g", { children: [
30132
+ i > 0 && /* @__PURE__ */ jsxs("g", { children: [
30133
+ /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: frame.stroke, strokeWidth: 3, strokeLinecap: "round" }),
30134
+ /* @__PURE__ */ jsx("circle", { cx: bx - linkW / 2, cy, r: 2.5, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.3;1;0.3", dur: `${1 + i * 0.2}s`, repeatCount: "indefinite" }) })
30135
+ ] }),
30136
+ /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30137
+ /* @__PURE__ */ jsx(
30138
+ "rect",
30139
+ {
30140
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30141
+ x: bx,
30142
+ y: cy - blockH / 2,
30143
+ width: blockW,
30144
+ height: blockH,
30145
+ rx: 4,
30146
+ fill: isCurrent ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-node-fill, #ffffff)",
30147
+ stroke: frame.stroke,
30148
+ strokeWidth: isCurrent ? 2.5 : 1.5
30149
+ }
30150
+ ),
30151
+ /* @__PURE__ */ jsx("rect", { x: bx, y: cy - blockH / 2, width: blockW, height: CHAIN_HEAD_H, rx: 4, fill: isCurrent ? "#1a4a68" : "var(--cdl-divider, #d4d4d8)", fillOpacity: isCurrent ? 1 : 0.4, stroke: "none" }),
30152
+ /* @__PURE__ */ jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy - blockH / 2 + 12, fontSize: CHAIN_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30153
+ "#",
30154
+ 420 + i
30155
+ ] }),
30156
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy + 8, fontSize: 14, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: "#" }),
30157
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 22, fontSize: CHAIN_HASH_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", opacity: 0.9, children: "0x\u2026" })
30158
+ ] }, i);
30159
+ }) });
30160
+ };
30102
30161
  return /* @__PURE__ */ jsxs("g", { children: [
30103
30162
  fitArt(r, chainExtent(), art),
30104
30163
  bottomLabel2(node, r.cx, r.label)
@@ -30116,33 +30175,39 @@ function ShapeBitcoinChainNode({ node, active }) {
30116
30175
  const linkW = CHAIN_LINK_W;
30117
30176
  const totalW = blockCount * blockW + (blockCount - 1) * linkW;
30118
30177
  const startX = cx - totalW / 2;
30119
- const art = /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30120
- const bx = startX + i * (blockW + linkW);
30121
- const isCurrent = i === blockCount - 1;
30122
- return /* @__PURE__ */ jsxs("g", { children: [
30123
- i > 0 && /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
30124
- /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30125
- /* @__PURE__ */ jsx(
30126
- "rect",
30127
- {
30128
- "data-cdl-role": i === 0 ? "node-body" : void 0,
30129
- x: bx,
30130
- y: cy - blockH / 2,
30131
- width: blockW,
30132
- height: blockH,
30133
- rx: 4,
30134
- fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
30135
- stroke: btcOrange,
30136
- strokeWidth: isCurrent ? 2.5 : 1.5
30137
- }
30138
- ),
30139
- /* @__PURE__ */ jsx("text", { x: bx + blockW / 2, y: cy - 4, fontSize: 30, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : btcOrange, fontFamily: "Georgia, serif", children: "\u20BF" }),
30140
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy + 16, fontSize: 9, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30141
- "#",
30142
- 820 + i
30143
- ] })
30144
- ] }, i);
30145
- }) });
30178
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30179
+ { text: "#820", size: BTC_NO_SIZE, \u5E2F: { \u5E45: CHAIN_TEXT_W, \u9AD8\u3055: 20 } }
30180
+ ];
30181
+ const art = (\u500D\u7387) => {
30182
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30183
+ return /* @__PURE__ */ jsx("g", { children: Array.from({ length: blockCount }, (_, i) => i).map((i) => {
30184
+ const bx = startX + i * (blockW + linkW);
30185
+ const isCurrent = i === blockCount - 1;
30186
+ return /* @__PURE__ */ jsxs("g", { children: [
30187
+ i > 0 && /* @__PURE__ */ jsx("line", { x1: bx - linkW, y1: cy, x2: bx, y2: cy, stroke: btcOrange, strokeWidth: 3.5, strokeLinecap: "round" }),
30188
+ /* @__PURE__ */ jsx("rect", { x: bx + 3, y: cy - blockH / 2 + 3, width: blockW, height: blockH, rx: 4, fill: frame.stroke, opacity: 0.18, stroke: "none" }),
30189
+ /* @__PURE__ */ jsx(
30190
+ "rect",
30191
+ {
30192
+ "data-cdl-role": i === 0 ? "node-body" : void 0,
30193
+ x: bx,
30194
+ y: cy - blockH / 2,
30195
+ width: blockW,
30196
+ height: blockH,
30197
+ rx: 4,
30198
+ fill: isCurrent ? btcOrange : "var(--cdl-node-fill, #ffffff)",
30199
+ stroke: btcOrange,
30200
+ strokeWidth: isCurrent ? 2.5 : 1.5
30201
+ }
30202
+ ),
30203
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: bx + blockW / 2, y: cy - 4, fontSize: 30, fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : btcOrange, fontFamily: "Georgia, serif", children: "\u20BF" }),
30204
+ /* @__PURE__ */ jsxs("text", { "data-cdl-counter-scaled": "1", x: bx + blockW / 2, y: cy + 16, fontSize: BTC_NO_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30205
+ "#",
30206
+ 820 + i
30207
+ ] })
30208
+ ] }, i);
30209
+ }) });
30210
+ };
30146
30211
  return /* @__PURE__ */ jsxs("g", { children: [
30147
30212
  fitArt(r, chainExtent(), art),
30148
30213
  bottomLabel2(node, r.cx, r.label)
@@ -30182,7 +30247,7 @@ function ShapeEthereumChainNode({ node, active }) {
30182
30247
  }
30183
30248
  ),
30184
30249
  /* @__PURE__ */ jsx(EthereumDiamond, { cx: bx + blockW / 2, cy: cy - 6, h: 16, colors: iconColors }),
30185
- /* @__PURE__ */ jsxs("text", { x: bx + blockW / 2, y: cy + 22, fontSize: 9, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fontWeight: 700, textAnchor: "middle", fill: isCurrent ? "#ffffff" : "var(--cdl-text-dim, #5a6270)", children: [
30250
+ /* @__PURE__ */ 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: [
30186
30251
  "#",
30187
30252
  21400 + i
30188
30253
  ] })
@@ -30361,39 +30426,46 @@ function ShapeNftNode({ node, active }) {
30361
30426
  const artH = cardH * 0.72;
30362
30427
  const artCx = x + cardW / 2;
30363
30428
  const artCy = y + artH / 2;
30364
- const art = /* @__PURE__ */ jsxs("g", { children: [
30365
- /* @__PURE__ */ jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30366
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
30367
- /* @__PURE__ */ jsx(
30368
- "path",
30369
- {
30370
- d: `M ${x} ${y + artH} L ${x} ${y + 14} Q ${x} ${y}, ${x + 14} ${y} L ${x + cardW - 14} ${y} Q ${x + cardW} ${y}, ${x + cardW} ${y + 14} L ${x + cardW} ${y + artH} Z`,
30371
- fill: "var(--cdl-tone-accent, #2d6a8f)",
30372
- fillOpacity: 0.15,
30373
- stroke: "none"
30374
- }
30375
- ),
30376
- /* @__PURE__ */ jsx(
30377
- "text",
30378
- {
30379
- x: artCx,
30380
- y: artCy + 24,
30381
- fontSize: 68,
30382
- fontWeight: 900,
30383
- letterSpacing: 4,
30384
- textAnchor: "middle",
30385
- fill: "var(--cdl-tone-accent, #2d6a8f)",
30386
- fontFamily: "Georgia, serif",
30387
- children: "NFT"
30388
- }
30389
- ),
30390
- /* @__PURE__ */ jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
30391
- /* @__PURE__ */ jsx("text", { x: x + 16, y: y + artH + 30, fontSize: 15, fontWeight: 700, fill: "var(--cdl-text, #1a1f2a)", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "#1024" }),
30392
- /* @__PURE__ */ jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
30393
- /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
30394
- /* @__PURE__ */ jsx("path", { d: "M -4 0 L -1 3 L 4 -3", fill: "none", stroke: "#ffffff", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" })
30395
- ] })
30396
- ] });
30429
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30430
+ { text: "#1024", size: NFT_ID_SIZE, \u5E2F: { \u5E45: cardW - 16 - 34, \u9AD8\u3055: cardH - artH } }
30431
+ ];
30432
+ const art = (\u500D\u7387) => {
30433
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30434
+ return /* @__PURE__ */ jsxs("g", { children: [
30435
+ /* @__PURE__ */ jsx("rect", { x: x + 4, y: y + 4, width: cardW, height: cardH, rx: 14, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30436
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: cardW, height: cardH, rx: 14, ...frame }),
30437
+ /* @__PURE__ */ jsx(
30438
+ "path",
30439
+ {
30440
+ d: `M ${x} ${y + artH} L ${x} ${y + 14} Q ${x} ${y}, ${x + 14} ${y} L ${x + cardW - 14} ${y} Q ${x + cardW} ${y}, ${x + cardW} ${y + 14} L ${x + cardW} ${y + artH} Z`,
30441
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30442
+ fillOpacity: 0.15,
30443
+ stroke: "none"
30444
+ }
30445
+ ),
30446
+ /* @__PURE__ */ jsx(
30447
+ "text",
30448
+ {
30449
+ "data-cdl-counter-scaled": "0",
30450
+ x: artCx,
30451
+ y: artCy + 24,
30452
+ fontSize: 68,
30453
+ fontWeight: 900,
30454
+ letterSpacing: 4,
30455
+ textAnchor: "middle",
30456
+ fill: "var(--cdl-tone-accent, #2d6a8f)",
30457
+ fontFamily: "Georgia, serif",
30458
+ children: "NFT"
30459
+ }
30460
+ ),
30461
+ /* @__PURE__ */ jsx("line", { x1: x, y1: y + artH, x2: x + cardW, y2: y + artH, stroke: frame.stroke, strokeWidth: 1, opacity: 0.5 }),
30462
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: x + 16, y: y + artH + 30, fontSize: NFT_ID_SIZE * \u500D, fontWeight: 700, fill: "var(--cdl-text, #1a1f2a)", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: "#1024" }),
30463
+ /* @__PURE__ */ jsxs("g", { transform: `translate(${x + cardW - 20}, ${y + artH + 22})`, children: [
30464
+ /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 10, fill: "#27c93f", stroke: "#ffffff", strokeWidth: 2 }),
30465
+ /* @__PURE__ */ jsx("path", { d: "M -4 0 L -1 3 L 4 -3", fill: "none", stroke: "#ffffff", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" })
30466
+ ] })
30467
+ ] });
30468
+ };
30397
30469
  return /* @__PURE__ */ jsxs("g", { children: [
30398
30470
  fitArt(r, nftExtent(frame.strokeWidth), art),
30399
30471
  bottomLabel2(node, r.cx, r.label)
@@ -30522,7 +30594,7 @@ function ShapeBankNode({ node, active }) {
30522
30594
  }),
30523
30595
  /* @__PURE__ */ jsx("path", { d: `M ${x - BANK_BODY_OUT} ${y + pedimentH} L ${r.cx} ${y - BANK_PEDIMENT_RISE} L ${x + bldW + BANK_BODY_OUT} ${y + pedimentH} Z`, fill: "var(--cdl-node-fill, #ffffff)", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30524
30596
  /* @__PURE__ */ jsx("circle", { cx: r.cx, cy: y + pedimentH / 2 + 4, r: 14, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: frame.stroke, strokeWidth: 1.5 }),
30525
- /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH / 2 + 10, fontSize: 18, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "Georgia, serif", children: "$" }),
30597
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: r.cx, y: y + pedimentH / 2 + 10, fontSize: 18, fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "Georgia, serif", children: "$" }),
30526
30598
  /* @__PURE__ */ jsx("rect", { x: x - 4, y: y + pedimentH, width: bldW + 8, height: architraveH, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.4, stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
30527
30599
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
30528
30600
  const colCx = x + 12 + colGap + i * (colW + colGap) + colW / 2;
@@ -30588,7 +30660,7 @@ function ShapeTrustBankNode({ node, active, lang }) {
30588
30660
  return /* @__PURE__ */ jsx("rect", { x: r.cx - w / 2, y: y + bldH + i * BANK_STEP_DY, width: w, height: BANK_STEP_H, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.5 + i * 0.15, stroke: frame.stroke, strokeWidth: BANK_STEP_SW }, i);
30589
30661
  }),
30590
30662
  /* @__PURE__ */ jsx("path", { d: `M ${x - 6} ${y + pedimentH} L ${r.cx} ${y + 2} L ${x + bldW + 6} ${y + pedimentH} Z`, fill: "var(--cdl-node-fill, #ffffff)", stroke: frame.stroke, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30591
- /* @__PURE__ */ jsx("text", { x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: \u5B57\u5F15("trustBank.sign") }),
30663
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: r.cx, y: y + pedimentH - 8, fontSize: 15, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", fontFamily: "Georgia, serif", children: \u5B57\u5F15("trustBank.sign") }),
30592
30664
  /* @__PURE__ */ jsx("rect", { x: x - 4, y: y + pedimentH, width: bldW + 8, height: architraveH, fill: "var(--cdl-divider, #d4d4d8)", fillOpacity: 0.4, stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
30593
30665
  Array.from({ length: nCols }, (_, i) => i).map((i) => {
30594
30666
  const colCx = x + 15 + colGap + i * (colW + colGap) + colW / 2;
@@ -30662,6 +30734,9 @@ function ShapeCreditCardNode({ node, active }) {
30662
30734
  }
30663
30735
  var BROKERAGE_TICK_H = 12;
30664
30736
  var BROKERAGE_LOGO_H = 26;
30737
+ var BROKERAGE_TICK_INNER_H = 8;
30738
+ var BROKERAGE_TICKER_SIZE = 5.5;
30739
+ var BROKERAGE_SIGN_SIZE = 12;
30665
30740
  var BROKERAGE_GRID_TOP = 62;
30666
30741
  var BROKERAGE_CELL_W = 14;
30667
30742
  var BROKERAGE_CELL_H = 18;
@@ -30710,35 +30785,46 @@ function ShapeBrokerageNode({ node, active, lang }) {
30710
30785
  );
30711
30786
  const gridStartX = x + (w - (cols * cellW + (cols - 1) * gapX)) / 2;
30712
30787
  const goldCells = /* @__PURE__ */ new Set([`0,1`, `0,4`, `1,2`, `2,3`, `3,5`]);
30713
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
30714
- /* @__PURE__ */ jsx("ellipse", { cx, cy: y + h + BROKERAGE_SHADOW_DY, rx: w * BROKERAGE_SHADOW_RX_RATIO, ry: BROKERAGE_SHADOW_RY, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30715
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30716
- /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30717
- /* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30718
- /* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
30719
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 9, fontSize: 5.5, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("brokerage.ticker") }),
30720
- /* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30721
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 30, fontSize: 12, fontWeight: 700, letterSpacing: 2.5, textAnchor: "middle", fill: "#0f1830", children: \u5B57\u5F15("brokerage.sign") }),
30722
- Array.from({ length: rows }).map(
30723
- (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30724
- const wx = gridStartX + ci * (cellW + gapX);
30725
- const wy = gridStartY + ri * (cellH + gapY);
30726
- const isGold = goldCells.has(`${ri},${ci}`);
30727
- return /* @__PURE__ */ jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
30728
- })
30729
- ),
30730
- /* @__PURE__ */ jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
30731
- /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
30732
- /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
30733
- /* @__PURE__ */ jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
30734
- /* @__PURE__ */ jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
30735
- /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_FLOOR_OUT, y: y + h + BROKERAGE_FLOOR_DY, width: w + BROKERAGE_FLOOR_OUT * 2, height: BROKERAGE_FLOOR_H, fill: "#5a6270", stroke: "none" })
30736
- ] });
30788
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30789
+ {
30790
+ text: \u5B57\u5F15("brokerage.ticker"),
30791
+ size: BROKERAGE_TICKER_SIZE,
30792
+ \u5E2F: { \u5E45: w - 4, \u9AD8\u3055: BROKERAGE_TICK_INNER_H }
30793
+ }
30794
+ ];
30795
+ const \u7D75 = (\u500D\u7387) => {
30796
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30797
+ return /* @__PURE__ */ jsxs("g", { children: [
30798
+ /* @__PURE__ */ jsx("ellipse", { cx, cy: y + h + BROKERAGE_SHADOW_DY, rx: w * BROKERAGE_SHADOW_RX_RATIO, ry: BROKERAGE_SHADOW_RY, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
30799
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: w, height: h, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30800
+ /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_SHADE_OUT, y, width: BROKERAGE_SHADE_OUT * 2, height: h, fill: accentDarker }),
30801
+ /* @__PURE__ */ jsx("rect", { x, y, width: w, height: BROKERAGE_TICK_H, fill: "#0f1830", stroke: "none" }),
30802
+ /* @__PURE__ */ jsx("rect", { x: x + 2, y: y + 2, width: w - 4, height: 8, fill: "#1a2340", stroke: "none" }),
30803
+ /* @__PURE__ */ 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") }),
30804
+ /* @__PURE__ */ jsx("rect", { x, y: y + BROKERAGE_TICK_H, width: w, height: BROKERAGE_LOGO_H, fill: "#e5c07b", stroke: "none" }),
30805
+ /* @__PURE__ */ 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") }),
30806
+ Array.from({ length: rows }).map(
30807
+ (_, ri) => Array.from({ length: cols }).map((_2, ci) => {
30808
+ const wx = gridStartX + ci * (cellW + gapX);
30809
+ const wy = gridStartY + ri * (cellH + gapY);
30810
+ const isGold = goldCells.has(`${ri},${ci}`);
30811
+ return /* @__PURE__ */ jsx("rect", { x: wx, y: wy, width: cellW, height: cellH, fill: isGold ? "#e5c07b" : accentDarker }, `w${ri}${ci}`);
30812
+ })
30813
+ ),
30814
+ /* @__PURE__ */ jsx("rect", { x, y: y + h - BROKERAGE_BASE_H, width: w, height: 12, fill: accentDarker }),
30815
+ /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 12, fill: "#a89d8f", stroke: accentDarker, strokeWidth: 1.5 }),
30816
+ /* @__PURE__ */ jsx("circle", { cx, cy: y + h - 8, r: 9, fill: "#8b949e", stroke: accentDarker, strokeWidth: 1 }),
30817
+ /* @__PURE__ */ jsx("line", { x1: cx - 9, y1: y + h - 8, x2: cx + 9, y2: y + h - 8, stroke: accentDarker, strokeWidth: 0.8 }),
30818
+ /* @__PURE__ */ jsx("line", { x1: cx, y1: y + h - 17, x2: cx, y2: y + h - 1, stroke: accentDarker, strokeWidth: 0.8 }),
30819
+ /* @__PURE__ */ jsx("rect", { x: x - BROKERAGE_FLOOR_OUT, y: y + h + BROKERAGE_FLOOR_DY, width: w + BROKERAGE_FLOOR_OUT * 2, height: BROKERAGE_FLOOR_H, fill: "#5a6270", stroke: "none" })
30820
+ ] });
30821
+ };
30737
30822
  return /* @__PURE__ */ jsxs("g", { children: [
30738
30823
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
30739
30824
  bottomLabel3(node, r.cx, r.label)
30740
30825
  ] });
30741
30826
  }
30827
+ var EXCHANGE_SUB_SIZE = 8;
30742
30828
  function ShapeExchangeNode({ node, active, lang }) {
30743
30829
  const \u5B57\u5F15 = \u5B57\u5F15\u304D\u3092\u4F5C\u308B(lang);
30744
30830
  const frame = commonFrame5(active);
@@ -30766,7 +30852,7 @@ function ShapeExchangeNode({ node, active, lang }) {
30766
30852
  const hexPath = hexPoints.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ") + " Z";
30767
30853
  const \u7BC0\u70B9 = Math.max(0, nodeR) + 8 + 1.5 / 2;
30768
30854
  const \u516D\u89D2 = hexR + frame.strokeWidth / 2;
30769
- const \u5B57\u4E0B = 26 + 8 * 0.25;
30855
+ const \u5B57\u4E0B = 26 + EXCHANGE_SUB_SIZE * 0.25;
30770
30856
  const \u5916 = Math.max(\u7BC0\u70B9, \u516D\u89D2);
30771
30857
  const \u305A\u308C = cy - r.cy;
30772
30858
  const \u5E83\u304C\u308A = {
@@ -30775,21 +30861,27 @@ function ShapeExchangeNode({ node, active, lang }) {
30775
30861
  \u5DE6: \u5916,
30776
30862
  \u53F3: \u5916
30777
30863
  };
30778
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
30779
- nodes.map((n, i) => /* @__PURE__ */ jsx("line", { x1: cx, y1: cy, x2: n.cx, y2: n.cy, stroke: accentDarker, strokeWidth: 1.5, strokeDasharray: "3 2" }, `l${i}`)),
30780
- nodes.map((n, i) => {
30781
- const isGreen = i % 2 === 0;
30782
- return /* @__PURE__ */ jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
30783
- /* @__PURE__ */ jsx("animate", { attributeName: "cx", values: isGreen ? `${n.cx};${cx};${n.cx}` : `${cx};${n.cx};${cx}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` }),
30784
- /* @__PURE__ */ jsx("animate", { attributeName: "cy", values: isGreen ? `${n.cy};${cy};${n.cy}` : `${cy};${n.cy};${cy}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` })
30785
- ] }, `d${i}`);
30786
- }),
30787
- /* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30788
- /* @__PURE__ */ jsx("text", { x: cx, y: cy - 8, fontSize: 10, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("exchange.sign") }),
30789
- /* @__PURE__ */ jsx("text", { "data-cdl-role": "node-body", x: cx, y: cy + 12, fontSize: 22, fontWeight: 700, textAnchor: "middle", fill: "#e5c07b", children: "\u21C4" }),
30790
- /* @__PURE__ */ jsx("text", { x: cx, y: cy + 26, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("exchange.sub") }),
30791
- nodes.map((n, i) => /* @__PURE__ */ jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
30792
- ] });
30864
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = [
30865
+ { text: \u5B57\u5F15("exchange.sub"), size: EXCHANGE_SUB_SIZE, \u5E2F: { \u5E45: \u5916 * 2, \u9AD8\u3055: 14 } }
30866
+ ];
30867
+ const \u7D75 = (\u500D\u7387) => {
30868
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
30869
+ return /* @__PURE__ */ jsxs("g", { children: [
30870
+ nodes.map((n, i) => /* @__PURE__ */ jsx("line", { x1: cx, y1: cy, x2: n.cx, y2: n.cy, stroke: accentDarker, strokeWidth: 1.5, strokeDasharray: "3 2" }, `l${i}`)),
30871
+ nodes.map((n, i) => {
30872
+ const isGreen = i % 2 === 0;
30873
+ return /* @__PURE__ */ jsxs("circle", { r: 4, fill: isGreen ? "#4ea36a" : "#c15a4a", stroke: "none", children: [
30874
+ /* @__PURE__ */ jsx("animate", { attributeName: "cx", values: isGreen ? `${n.cx};${cx};${n.cx}` : `${cx};${n.cx};${cx}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` }),
30875
+ /* @__PURE__ */ jsx("animate", { attributeName: "cy", values: isGreen ? `${n.cy};${cy};${n.cy}` : `${cy};${n.cy};${cy}`, dur: `${1.5 + i % 3 * 0.3}s`, repeatCount: "indefinite", begin: `${i * 0.15}s` })
30876
+ ] }, `d${i}`);
30877
+ }),
30878
+ /* @__PURE__ */ jsx("path", { d: hexPath, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth, strokeLinejoin: "round" }),
30879
+ /* @__PURE__ */ 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") }),
30880
+ /* @__PURE__ */ 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" }),
30881
+ /* @__PURE__ */ 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") }),
30882
+ nodes.map((n, i) => /* @__PURE__ */ jsx("circle", { cx: n.cx, cy: n.cy, r: 8, fill: n.fill, stroke: accentDarker, strokeWidth: 1.5 }, `n${i}`))
30883
+ ] });
30884
+ };
30793
30885
  return /* @__PURE__ */ jsxs("g", { children: [
30794
30886
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
30795
30887
  bottomLabel3(node, r.cx, r.label)
@@ -30844,13 +30936,13 @@ function ShapeAtmNode({ node, active, lang }) {
30844
30936
  const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
30845
30937
  /* @__PURE__ */ jsx("ellipse", { cx, cy: y + totalH + ATM_SHADOW_DY, rx: totalW * ATM_SHADOW_RX_RATIO, ry: ATM_SHADOW_RY, fill: frame.stroke, opacity: 0.15, stroke: "none" }),
30846
30938
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: signY, width: totalW, height: signH, fill: accentDarker, stroke: "#000", strokeWidth: ATM_SIGN_SW }),
30847
- /* @__PURE__ */ jsx("text", { x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
30939
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: centerX, y: signY + 17, fontSize: 11, fontWeight: 700, letterSpacing: 2, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.sign") }),
30848
30940
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x: atmX, y: atmY, width: atmW, height: atmH, rx: 6, fill: "#255a7a", stroke: accentDarker, strokeWidth: frame.strokeWidth }),
30849
30941
  /* @__PURE__ */ jsxs("g", { transform: `translate(${centerX} ${atmY}) scale(${\u9762})`, children: [
30850
30942
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 10, width: ATM_PANEL_W - 16, height: 52, rx: 3, fill: "#0f1830", stroke: "#000", strokeWidth: 1.5 }),
30851
- /* @__PURE__ */ jsx("text", { x: 0, y: 30, fontSize: 10, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: "\u304A\u5F15\u51FA\u3057" }),
30852
- /* @__PURE__ */ jsx("text", { x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30853
- /* @__PURE__ */ jsx("text", { x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30943
+ /* @__PURE__ */ 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" }),
30944
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 44, fontSize: 8, fontWeight: 700, textAnchor: "middle", fill: "#a4b5f2", children: \u5B57\u5F15("atm.screen") }),
30945
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 56, fontSize: 10, fontWeight: 700, textAnchor: "middle", fill: "#4ea36a", children: "\xA5 20,000" }),
30854
30946
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 8, y: 68, width: ATM_PANEL_W - 16, height: 42, rx: 2, fill: "#8b949e", stroke: "#5a6270", strokeWidth: 1 }),
30855
30947
  (() => {
30856
30948
  const keys = [
@@ -30876,7 +30968,7 @@ function ShapeAtmNode({ node, active, lang }) {
30876
30968
  const ky = 74 + row * (keyH + 2);
30877
30969
  return /* @__PURE__ */ jsxs("g", { children: [
30878
30970
  /* @__PURE__ */ jsx("rect", { x: kx, y: ky, width: keyW, height: keyH, fill: k[1], stroke: "#0f1830", strokeWidth: 0.8 }),
30879
- /* @__PURE__ */ jsx("text", { x: kx + keyW / 2, y: ky + 7, fontSize: (
30971
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: kx + keyW / 2, y: ky + 7, fontSize: (
30880
30972
  /* 決める鍵 (末尾) は 2 字あるので小さく描く。 字は言語で変わるため位置で見分ける */
30881
30973
  i === keys.length - 1 ? 6 : 7
30882
30974
  ), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", children: k[0] })
@@ -30885,7 +30977,7 @@ function ShapeAtmNode({ node, active, lang }) {
30885
30977
  })(),
30886
30978
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 116, width: ATM_PANEL_W - 24, height: 8, rx: 1.5, fill: "#0f1830", stroke: accentDarker, strokeWidth: 1 }),
30887
30979
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 15, y: 118, width: ATM_PANEL_W - 30, height: 4, rx: 0.5, fill: "#e5c07b" }),
30888
- /* @__PURE__ */ jsx("text", { x: 0, y: 132, fontSize: 6, fontWeight: 700, letterSpacing: 1, textAnchor: "middle", fill: "#e5c07b", children: \u5B57\u5F15("atm.cardSlot") }),
30980
+ /* @__PURE__ */ 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") }),
30889
30981
  /* @__PURE__ */ jsx("rect", { x: \u9762\u5DE6 + 12, y: 136, width: ATM_PANEL_W - 24, height: 4, rx: 1, fill: "#0f1830" })
30890
30982
  ] }),
30891
30983
  /* @__PURE__ */ jsx("rect", { x: centerX - totalW / 2, y: floorY, width: totalW, height: 6, fill: "#8b949e", stroke: "none" }),
@@ -31058,7 +31150,7 @@ function ShapeWarehouseNode({ node, active, lang }) {
31058
31150
  /* @__PURE__ */ jsx("path", { d: `M ${x - WAREHOUSE_ROOF_OUT} ${y + roofH} L ${x + 12} ${y + 2} L ${x + bw - 12} ${y + 2} L ${x + bw + WAREHOUSE_ROOF_OUT} ${y + roofH} Z`, fill: "#5a6270", stroke: accentDarker, strokeWidth: WAREHOUSE_ROOF_SW, strokeLinejoin: "round" }),
31059
31151
  /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y: y + roofH, width: bw, height: bh - roofH - 12, fill: "#a89d8f", stroke: "#5a6270", strokeWidth: frame.strokeWidth }),
31060
31152
  /* @__PURE__ */ jsx("rect", { x, y: y + roofH, width: bw, height: signH, fill: "#c15a4a", stroke: "#8b3f2f", strokeWidth: 1.5 }),
31061
- /* @__PURE__ */ jsx("text", { x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("warehouse.sign") }),
31153
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + roofH + 17, fontSize: 12, fontWeight: 900, letterSpacing: 6, textAnchor: "middle", fill: "#ffffff", children: \u5B57\u5F15("warehouse.sign") }),
31062
31154
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: shutterH, fill: "#8b949e", stroke: accentDarker, strokeWidth: 2 }),
31063
31155
  /* @__PURE__ */ jsx("rect", { x: shutterX, y: shutterY, width: shutterW, height: 5, fill: "#5a6270", stroke: "none" }),
31064
31156
  Array.from({ length: 10 }, (_, i) => i).map((i) => /* @__PURE__ */ jsx(
@@ -31213,6 +31305,10 @@ var API_ROW_PITCH_MIN = 30;
31213
31305
  var API_ROW_BOTTOM_PAD = 12;
31214
31306
  var API_ROWS = 3;
31215
31307
  var API_H_MIN = API_ROW_TOP + (API_ROWS - 1) * API_ROW_PITCH_MIN + API_ROW_H + API_ROW_BOTTOM_PAD;
31308
+ var API_PATH_SIZE = 12;
31309
+ var API_SIGN_SIZE = 14;
31310
+ var API_METHOD_BOX_W = 54;
31311
+ var API_METHOD_TEXT_W = 48;
31216
31312
  var API_W_MIN = 200;
31217
31313
  var API_W_MAX = 300;
31218
31314
  function ShapeApiGatewayNode({ node, active, lang }) {
@@ -31227,28 +31323,37 @@ function ShapeApiGatewayNode({ node, active, lang }) {
31227
31323
  const x = cx - bw / 2;
31228
31324
  const y = r.cy - \u7E26 / 2 + \u4F59\u767D;
31229
31325
  const \u5E83\u304C\u308A = { \u4E0A: \u7E26 / 2, \u4E0B: \u7E26 / 2, \u5DE6: bw / 2 + \u4F59\u767D, \u53F3: bw / 2 + \u4F59\u767D };
31230
- const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * 48 / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
31326
+ const \u7A2E\u985E\u306E\u5B57 = (s) => Math.min(11, 11 * API_METHOD_TEXT_W / Math.max(displayWidth(s) * 11 * MONO_ADVANCE_RATIO, textWidth(s, 11)));
31231
31327
  const rowPitch = Math.max(
31232
31328
  API_ROW_PITCH_MIN,
31233
31329
  (bh - API_ROW_TOP - API_ROW_H - API_ROW_BOTTOM_PAD) / (API_ROWS - 1)
31234
31330
  );
31235
- const \u7D75 = /* @__PURE__ */ jsxs("g", { children: [
31236
- /* @__PURE__ */ jsx("rect", { x: x + DROP_SHADOW_D, y: y + DROP_SHADOW_D, width: bw, height: bh, rx: 10, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
31237
- /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
31238
- /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
31239
- /* @__PURE__ */ jsx("text", { x: cx, y: y + 24, fontSize: 14, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("apiGateway.sign") }),
31240
- [
31241
- { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
31242
- { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
31243
- { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
31244
- ].map((e, i) => /* @__PURE__ */ jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
31245
- /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
31246
- /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: 54, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
31247
- /* @__PURE__ */ jsx("text", { x: 27, y: 16, fontSize: \u7A2E\u985E\u306E\u5B57(e.method), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
31248
- /* @__PURE__ */ jsx("text", { x: 64, y: 16, fontSize: 12, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
31249
- /* @__PURE__ */ jsx("circle", { cx: bw - 44, cy: 12, r: 4, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.2 + i * 0.3}s`, repeatCount: "indefinite" }) })
31250
- ] }, i))
31251
- ] });
31331
+ const \u884C\u3089 = [
31332
+ { method: "GET", path: \u5B57\u5F15("apiGateway.users"), color: "#27c93f" },
31333
+ { method: "POST", path: \u5B57\u5F15("apiGateway.orders"), color: "#e5c07b" },
31334
+ { method: \u5B57\u5F15("apiGateway.delete"), path: \u5B57\u5F15("apiGateway.session"), color: "#c9302c" }
31335
+ ];
31336
+ const \u6253\u3061\u6D88\u3059\u5B57\u3089 = \u884C\u3089.map((e) => ({
31337
+ text: e.path,
31338
+ size: API_PATH_SIZE,
31339
+ \u5E2F: { \u5E45: bw - 32 - 64 - 16, \u9AD8\u3055: API_ROW_H }
31340
+ }));
31341
+ const \u7D75 = (\u500D\u7387) => {
31342
+ const \u500D = \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u6253\u3061\u6D88\u3059\u5B57\u3089);
31343
+ return /* @__PURE__ */ jsxs("g", { children: [
31344
+ /* @__PURE__ */ jsx("rect", { x: x + DROP_SHADOW_D, y: y + DROP_SHADOW_D, width: bw, height: bh, rx: 10, fill: frame.stroke, opacity: 0.2, stroke: "none" }),
31345
+ /* @__PURE__ */ jsx("rect", { "data-cdl-role": "node-body", x, y, width: bw, height: bh, rx: 10, fill: "#1a2332", stroke: frame.stroke, strokeWidth: frame.strokeWidth }),
31346
+ /* @__PURE__ */ jsx("rect", { x, y, width: bw, height: 36, rx: 10, fill: "var(--cdl-tone-accent, #2d6a8f)", stroke: "none" }),
31347
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: cx, y: y + 24, fontSize: API_SIGN_SIZE, fontWeight: 700, letterSpacing: 3, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: \u5B57\u5F15("apiGateway.sign") }),
31348
+ \u884C\u3089.map((e, i) => /* @__PURE__ */ jsxs("g", { transform: `translate(${x + 16}, ${y + API_ROW_TOP + i * rowPitch})`, children: [
31349
+ /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: bw - 32, height: API_ROW_H, rx: 4, fill: "#0f1419", stroke: "none" }),
31350
+ /* @__PURE__ */ jsx("rect", { x: 0, y: 0, width: API_METHOD_BOX_W, height: API_ROW_H, rx: 4, fill: e.color, stroke: "none" }),
31351
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 27, y: 16, fontSize: \u7A2E\u985E\u306E\u5B57(e.method), fontWeight: 700, textAnchor: "middle", fill: "#ffffff", fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", children: e.method }),
31352
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "1", x: 64, y: 16, fontSize: API_PATH_SIZE * \u500D, fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace", fill: "#e6edf3", children: e.path }),
31353
+ /* @__PURE__ */ jsx("circle", { cx: bw - 44, cy: 12, r: 4, fill: "#27c93f", stroke: "none", children: /* @__PURE__ */ jsx("animate", { attributeName: "opacity", values: "0.4;1;0.4", dur: `${1.2 + i * 0.3}s`, repeatCount: "indefinite" }) })
31354
+ ] }, i))
31355
+ ] });
31356
+ };
31252
31357
  return /* @__PURE__ */ jsxs("g", { children: [
31253
31358
  fitArt(r, \u5E83\u304C\u308A, \u7D75),
31254
31359
  bottomLabel4(node, r.cx, r.label)
@@ -31468,11 +31573,11 @@ function ShapeNotaryNode({ node, active }) {
31468
31573
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 14, x2: chestX + 14, y2: chestY + 14, stroke: "#8b949e", strokeWidth: 1 }),
31469
31574
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 22, x2: chestX + 8, y2: chestY + 22, stroke: "#8b949e", strokeWidth: 1 }),
31470
31575
  /* @__PURE__ */ jsx("line", { x1: chestX - 14, y1: chestY + 34, x2: chestX + 2, y2: chestY + 34, stroke: "#0f3450", strokeWidth: 1.5 }),
31471
- /* @__PURE__ */ jsx("text", { x: chestX + 6, y: chestY + 37, fontSize: 8, fill: "#0f3450", fontFamily: "cursive", fontStyle: "italic", children: "\u2713" }),
31576
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: chestX + 6, y: chestY + 37, fontSize: 8, fill: "#0f3450", fontFamily: "cursive", fontStyle: "italic", children: "\u2713" }),
31472
31577
  haloBadge(bx, by, `nt-halo-${node.id}`, "#c15a4a", /* @__PURE__ */ jsxs("g", { children: [
31473
31578
  /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 12, fill: "#c15a4a", stroke: "none" }),
31474
31579
  /* @__PURE__ */ jsx("circle", { cx: 0, cy: 0, r: 8, fill: "none", stroke: "#ffffff", strokeWidth: 1.2 }),
31475
- /* @__PURE__ */ jsx("text", { x: 0, y: 4, fontFamily: "Georgia, serif", fontSize: 10, fontWeight: 700, fill: "#ffffff", textAnchor: "middle", children: "\u5370" })
31580
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: 0, y: 4, fontFamily: "Georgia, serif", fontSize: 10, fontWeight: 700, fill: "#ffffff", textAnchor: "middle", children: "\u5370" })
31476
31581
  ] }))
31477
31582
  ] })),
31478
31583
  bottomLabel5(node, r.cx, r.label)
@@ -31531,7 +31636,7 @@ function ShapeCustomerServiceNode({ node, active }) {
31531
31636
  p.render,
31532
31637
  collarV(cx, cy, p.strokeColor),
31533
31638
  /* @__PURE__ */ jsx("rect", { x: chestX - 22, y: chestY + 5, width: 44, height: 22, rx: 11, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 2 }),
31534
- /* @__PURE__ */ jsx("text", { x: chestX, y: chestY + 20, fontSize: 12, fontWeight: 900, fill: "#5a3a10", textAnchor: "middle", letterSpacing: 2, children: "24H" }),
31639
+ /* @__PURE__ */ jsx("text", { "data-cdl-counter-scaled": "0", x: chestX, y: chestY + 20, fontSize: 12, fontWeight: 900, fill: "#5a3a10", textAnchor: "middle", letterSpacing: 2, children: "24H" }),
31535
31640
  haloBadge(bx, by, `cs-halo-${node.id}`, "#a67c00", /* @__PURE__ */ jsxs("g", { children: [
31536
31641
  /* @__PURE__ */ jsx("path", { d: "M -11 4 C -11 -10, -6 -12, 0 -12 C 6 -12, 11 -10, 11 4", fill: "none", stroke: "#a67c00", strokeWidth: 2.5, strokeLinecap: "round" }),
31537
31642
  /* @__PURE__ */ jsx("rect", { x: -13, y: 2, width: 6, height: 11, rx: 1.5, fill: "#e5c07b", stroke: "#a67c00", strokeWidth: 1.5 }),