@cardenelabs/cdl 0.106.0 → 0.108.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 +77 -1
- package/dist/index.cjs +132 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +132 -39
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +247 -154
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +247 -154
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/shape-basement.tsx +20 -8
- package/src/kinds/shape-blockchain.tsx +17 -10
- package/src/kinds/shape-commerce.tsx +15 -6
- package/src/kinds/shape-finance.tsx +15 -6
- package/src/kinds/shape-hardware.tsx +15 -7
- package/src/kinds/shape-region.tsx +63 -2
- package/src/layout/spec.ts +81 -0
- package/src/layout/text-width.ts +52 -4
- package/src/visual-validate.ts +25 -5
package/dist/index.js
CHANGED
|
@@ -12239,6 +12239,11 @@ function isHalfwidthKana(code) {
|
|
|
12239
12239
|
}
|
|
12240
12240
|
var EMOJI_ADVANCE_EM = 1.05;
|
|
12241
12241
|
var MONO_EMOJI_ADVANCE_EM = 1.16;
|
|
12242
|
+
var DRAWN_CJK_RATIO = 1.08;
|
|
12243
|
+
var DRAWN_ASCII_RATIO = 1.16;
|
|
12244
|
+
function isAscii(code) {
|
|
12245
|
+
return code < 128;
|
|
12246
|
+
}
|
|
12242
12247
|
var WIDE_SYMBOL_ADVANCE_EM = 0.95;
|
|
12243
12248
|
function isEmoji(code) {
|
|
12244
12249
|
return code >= 126976 && code <= 129791 || // 絵文字の主要面
|
|
@@ -12277,29 +12282,31 @@ function measureTextWidth(text, opts = {}) {
|
|
|
12277
12282
|
const fontSize = opts.fontSize ?? 22;
|
|
12278
12283
|
const letterSpacing = opts.letterSpacing ?? 0;
|
|
12279
12284
|
const fontFamily = opts.fontFamily ?? "sans";
|
|
12285
|
+
const bound = opts.bound ?? "layout";
|
|
12280
12286
|
let advanceEmSum = 0;
|
|
12281
12287
|
let charCount = 0;
|
|
12282
12288
|
const \u6587\u5B57\u5217 = CLUSTER_JOINER_RE.test(text) ? segmentGraphemes(text) : [...text];
|
|
12283
12289
|
for (const ch of \u6587\u5B57\u5217) {
|
|
12284
12290
|
charCount++;
|
|
12285
12291
|
const code = ch.codePointAt(0) ?? 0;
|
|
12292
|
+
const \u5272\u308A\u623B\u3057 = bound === "drawn" && !isEmojiGrapheme(ch, code) ? isAscii(code) ? DRAWN_ASCII_RATIO : isCJK(code) ? DRAWN_CJK_RATIO : 1 : 1;
|
|
12286
12293
|
if (isEmojiGrapheme(ch, code)) {
|
|
12287
12294
|
advanceEmSum += fontFamily === "mono" ? MONO_EMOJI_ADVANCE_EM : EMOJI_ADVANCE_EM;
|
|
12288
12295
|
continue;
|
|
12289
12296
|
}
|
|
12290
12297
|
if (fontFamily === "mono") {
|
|
12291
|
-
advanceEmSum += isCJK(code) ? 1.08 : JETBRAINS_MONO_ADVANCE_EM;
|
|
12298
|
+
advanceEmSum += (isCJK(code) ? 1.08 : JETBRAINS_MONO_ADVANCE_EM) / \u5272\u308A\u623B\u3057;
|
|
12292
12299
|
continue;
|
|
12293
12300
|
}
|
|
12294
12301
|
if (isCJK(code)) {
|
|
12295
|
-
advanceEmSum += 1.08;
|
|
12302
|
+
advanceEmSum += 1.08 / \u5272\u308A\u623B\u3057;
|
|
12296
12303
|
continue;
|
|
12297
12304
|
}
|
|
12298
12305
|
const table = ch.length === 1 ? INTER_BOLD_ADVANCE_EM[ch] : void 0;
|
|
12299
|
-
advanceEmSum += table !== void 0 ? table : defaultAdvanceEm(ch, code);
|
|
12306
|
+
advanceEmSum += (table !== void 0 ? table : defaultAdvanceEm(ch, code)) / \u5272\u308A\u623B\u3057;
|
|
12300
12307
|
}
|
|
12301
12308
|
const w = advanceEmSum * fontSize + letterSpacing * charCount;
|
|
12302
|
-
return Math.max(w, fontSize * 1.2);
|
|
12309
|
+
return bound === "drawn" ? w : Math.max(w, fontSize * 1.2);
|
|
12303
12310
|
}
|
|
12304
12311
|
function \u53CE\u3081\u308B\u500D\u7387(text, opts, \u5E45) {
|
|
12305
12312
|
if (!(\u5E45 > 0) || !(opts.fontSize > 0)) return 1;
|
|
@@ -12440,6 +12447,51 @@ function titleFontSize(kind) {
|
|
|
12440
12447
|
return TITLE_FONT_SIZE.get(kind ?? "") ?? TITLE_FONT_SIZE_DEFAULT;
|
|
12441
12448
|
}
|
|
12442
12449
|
var TITLE_BOX_PADDING = 52;
|
|
12450
|
+
var KINDS_SCALING_TITLE_WHEN_LOW = /* @__PURE__ */ new Set(["actor", "event", "function", "storage"]);
|
|
12451
|
+
var KINDS_SCALING_TITLE_ALWAYS = /* @__PURE__ */ new Set([
|
|
12452
|
+
"card",
|
|
12453
|
+
"shape-file",
|
|
12454
|
+
"shape-folder",
|
|
12455
|
+
"shape-cloud",
|
|
12456
|
+
"shape-cylinder",
|
|
12457
|
+
"shape-hexagon",
|
|
12458
|
+
"shape-diamond",
|
|
12459
|
+
"shape-stack",
|
|
12460
|
+
"shape-person",
|
|
12461
|
+
"shape-server-rack",
|
|
12462
|
+
"shape-network-node",
|
|
12463
|
+
"shape-mobile-device",
|
|
12464
|
+
"shape-satellite",
|
|
12465
|
+
"shape-smart-contract",
|
|
12466
|
+
"shape-rpc-node",
|
|
12467
|
+
"shape-wallet",
|
|
12468
|
+
"shape-nft",
|
|
12469
|
+
"shape-token",
|
|
12470
|
+
"shape-blockchain",
|
|
12471
|
+
"shape-bitcoin-chain",
|
|
12472
|
+
"shape-ethereum-chain",
|
|
12473
|
+
"shape-blockchain-node",
|
|
12474
|
+
"shape-bank",
|
|
12475
|
+
"shape-trust-bank",
|
|
12476
|
+
"shape-payment-provider",
|
|
12477
|
+
"shape-credit-card",
|
|
12478
|
+
"shape-brokerage",
|
|
12479
|
+
"shape-exchange",
|
|
12480
|
+
"shape-atm",
|
|
12481
|
+
"shape-website",
|
|
12482
|
+
"shape-storefront",
|
|
12483
|
+
"shape-warehouse",
|
|
12484
|
+
"shape-online-shop",
|
|
12485
|
+
"shape-cdn-edge",
|
|
12486
|
+
"shape-api-gateway"
|
|
12487
|
+
]);
|
|
12488
|
+
var COMPACT_TITLE_MAX_H = 100;
|
|
12489
|
+
function titleScalesToFit(kind, h) {
|
|
12490
|
+
const k = kind ?? "";
|
|
12491
|
+
if (KINDS_SCALING_TITLE_ALWAYS.has(k)) return true;
|
|
12492
|
+
return KINDS_SCALING_TITLE_WHEN_LOW.has(k) && h < COMPACT_TITLE_MAX_H;
|
|
12493
|
+
}
|
|
12494
|
+
var MIN_TITLE_FONT_SIZE = 11;
|
|
12443
12495
|
var KINDS_DRAWN_BY_GENERIC = [
|
|
12444
12496
|
"person",
|
|
12445
12497
|
"user-group",
|
|
@@ -14647,6 +14699,14 @@ function \u5E45\u306E\u500D\u7387(text, size, letterSpacing, \u5E45) {
|
|
|
14647
14699
|
const \u5B9F\u5E45 = textWidth(text, size, letterSpacing);
|
|
14648
14700
|
return \u5B9F\u5E45 > \u5E45 ? \u5E45 / \u5B9F\u5E45 : 1;
|
|
14649
14701
|
}
|
|
14702
|
+
function \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055) {
|
|
14703
|
+
return \u5927\u304D\u3055 > MIN_TITLE_FONT_SIZE ? MIN_TITLE_FONT_SIZE / \u5927\u304D\u3055 : 0;
|
|
14704
|
+
}
|
|
14705
|
+
function \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u984C, \u5927\u304D\u3055, \u5B57\u9593, \u5E45\u4E0A\u9650, \u6E2C\u308B) {
|
|
14706
|
+
const \u4E0B\u9650 = \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055);
|
|
14707
|
+
if (!(\u4E0B\u9650 > 0) || !(\u5E45\u4E0A\u9650 > 0)) return 0;
|
|
14708
|
+
return \u5E45\u3067\u5207\u308B(\u984C, \u5927\u304D\u3055 * \u4E0B\u9650, \u5E45\u4E0A\u9650, (u, f) => \u6E2C\u308B(u, f, \u5B57\u9593 * \u4E0B\u9650)) === "" ? 0 : \u4E0B\u9650;
|
|
14709
|
+
}
|
|
14650
14710
|
var TITLE_MAX = 18;
|
|
14651
14711
|
var TITLE_MIN = 9;
|
|
14652
14712
|
var TITLE_RATIO = 0.17;
|
|
@@ -14806,16 +14866,19 @@ function bodyBand(node, opt) {
|
|
|
14806
14866
|
const h = Math.max(0, \u7BB1h - \u7E26\u4F59\u767D * ky);
|
|
14807
14867
|
return { x, y, w, h, cx: x + w / 2, cy: y + h / 2, \u53F3: x + w, \u5E95: y + h };
|
|
14808
14868
|
}
|
|
14809
|
-
function fitLabel(band, block, pos) {
|
|
14869
|
+
function fitLabel(band, block, pos, \u6A2A\u306E\u4E0B\u9650 = 0) {
|
|
14810
14870
|
const \u7E26 = block.\u4E0A + block.\u4E0B;
|
|
14811
14871
|
const \u6A2A = Math.max(0, block.\u5E45);
|
|
14812
14872
|
if (!(\u7E26 > 0)) return { k: 1, x: pos.x, y: pos.y };
|
|
14813
14873
|
if (!(band.h > 0) || !(band.w > 0)) return { k: 0, x: band.x + band.w / 2, y: band.y };
|
|
14814
|
-
const
|
|
14874
|
+
const \u6A2A\u3067 = \u6A2A > 0 ? Math.max(band.w / \u6A2A, \u6A2A\u306E\u4E0B\u9650) : 1;
|
|
14875
|
+
const k = Math.min(1, band.h / \u7E26, \u6A2A\u3067);
|
|
14815
14876
|
const \u534A = \u6A2A * k / 2;
|
|
14816
14877
|
return {
|
|
14817
14878
|
k,
|
|
14818
|
-
|
|
14879
|
+
// 下限で止めた塊は帯より広い。 その時は帯の中央に置いて左右へ均等に出す =
|
|
14880
|
+
// 寄せの式をそのまま当てると片側だけに出る (`compact-title.ts` と同じ判断)
|
|
14881
|
+
x: \u534A * 2 > band.w ? band.x + band.w / 2 : Math.max(band.x + \u534A, Math.min(pos.x, band.x + band.w - \u534A)),
|
|
14819
14882
|
y: Math.max(band.y + block.\u4E0A * k, Math.min(pos.y, band.y + band.h - block.\u4E0B * k))
|
|
14820
14883
|
};
|
|
14821
14884
|
}
|
|
@@ -17223,12 +17286,23 @@ function runAxes(laid, diag, violations, counts, push, profile, skippedAxes, \u5
|
|
|
17223
17286
|
if (!isRenderedNode(n)) continue;
|
|
17224
17287
|
const titleTrimmed = n.title?.trim() ?? "";
|
|
17225
17288
|
if (!titleTrimmed) continue;
|
|
17226
|
-
const
|
|
17227
|
-
|
|
17289
|
+
const \u4F59\u767D = drawsTitleOutsideBox(n.kind) ? 0 : TITLE_BOX_PADDING;
|
|
17290
|
+
const \u4F7F\u3048\u308B\u5E452 = n.w - \u4F59\u767D;
|
|
17291
|
+
const \u5B9F\u5E45 = measureTextWidth(titleTrimmed, { fontSize: titleFontSize(n.kind), bound: "drawn" });
|
|
17292
|
+
if (titleScalesToFit(n.kind, n.h)) {
|
|
17293
|
+
const \u7E2E\u3081\u305F\u5927\u304D\u3055 = \u5B9F\u5E45 > 0 ? titleFontSize(n.kind) * Math.min(1, \u4F7F\u3048\u308B\u5E452 / \u5B9F\u5E45) : titleFontSize(n.kind);
|
|
17294
|
+
if (\u7E2E\u3081\u305F\u5927\u304D\u3055 < MIN_TITLE_FONT_SIZE) {
|
|
17295
|
+
push(
|
|
17296
|
+
"text-readability",
|
|
17297
|
+
`node "${n.id}" title "${n.title}" \u304C node \u5E45 ${n.w}px \u306B\u53CE\u307E\u3089\u305A\u3001\u8AAD\u3081\u308B\u4E0B\u9650 ${MIN_TITLE_FONT_SIZE}px \u3092\u5272\u308B (\u7E2E\u3081\u3066 ${\u7E2E\u3081\u305F\u5927\u304D\u3055.toFixed(1)}px)`,
|
|
17298
|
+
"warn"
|
|
17299
|
+
);
|
|
17300
|
+
}
|
|
17301
|
+
} else if (\u5B9F\u5E45 > \u4F7F\u3048\u308B\u5E452 + 8) {
|
|
17228
17302
|
push(
|
|
17229
17303
|
"text-readability",
|
|
17230
17304
|
// 字ごとの実幅は小数になるので、読む人に出す時だけ丸める (判定は丸めない)
|
|
17231
|
-
`node "${n.id}" title "${n.title}" \u304C node \u5E45 ${n.w}px \u3092\u8D85\u904E\u3059\u308B\u53EF\u80FD\u6027 (\u671F\u5F85 ${Math.round(
|
|
17305
|
+
`node "${n.id}" title "${n.title}" \u304C node \u5E45 ${n.w}px \u3092\u8D85\u904E\u3059\u308B\u53EF\u80FD\u6027 (\u671F\u5F85 ${Math.round(\u5B9F\u5E45 + \u4F59\u767D)}px)`,
|
|
17232
17306
|
"warn"
|
|
17233
17307
|
);
|
|
17234
17308
|
}
|
|
@@ -28644,13 +28718,15 @@ function labelBlock(node, pos, size, band) {
|
|
|
28644
28718
|
node.eyebrow ? textWidth(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING) : 0,
|
|
28645
28719
|
node.subtitle ? textWidth(node.subtitle, SUB_SIZE) : 0
|
|
28646
28720
|
);
|
|
28647
|
-
const
|
|
28721
|
+
const \u4E0B\u9650 = \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", size, 0, band.w, textWidth);
|
|
28722
|
+
const { k, x, y: baseline } = fitLabel(band, { \u4E0A, \u4E0B, \u5E45 }, pos, \u4E0B\u9650);
|
|
28648
28723
|
return { k, x, baseline, \u4E0A\u7AEF: baseline - \u4E0A * k, \u4E0B\u7AEF: baseline + \u4E0B * k };
|
|
28649
28724
|
}
|
|
28650
28725
|
function commonLabel(node, pos, size, band) {
|
|
28651
28726
|
const \u584A = labelBlock(node, pos, size, band);
|
|
28652
28727
|
const k = \u584A.k;
|
|
28653
28728
|
const x = \u584A.x;
|
|
28729
|
+
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \u5E45\u3067\u5207\u308B(t, \u5927\u304D\u3055 * k, band.w, (u, f) => textWidth(u, f, \u5B57\u9593 * k));
|
|
28654
28730
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
28655
28731
|
node.eyebrow && /* @__PURE__ */ jsx(
|
|
28656
28732
|
"text",
|
|
@@ -28662,7 +28738,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
28662
28738
|
letterSpacing: EYEBROW_TRACKING * k,
|
|
28663
28739
|
textAnchor: "middle",
|
|
28664
28740
|
fill: "var(--cdl-tone-accent, #2d6a8f)",
|
|
28665
|
-
children: node.eyebrow
|
|
28741
|
+
children: \u5207\u308B(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING)
|
|
28666
28742
|
}
|
|
28667
28743
|
),
|
|
28668
28744
|
/* @__PURE__ */ jsx(
|
|
@@ -28675,7 +28751,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
28675
28751
|
fontWeight: 700,
|
|
28676
28752
|
textAnchor: "middle",
|
|
28677
28753
|
fill: "var(--cdl-text, #1a1f2a)",
|
|
28678
|
-
children: node.title
|
|
28754
|
+
children: \u5207\u308B(node.title ?? "", size)
|
|
28679
28755
|
}
|
|
28680
28756
|
),
|
|
28681
28757
|
node.subtitle && /* @__PURE__ */ jsx(
|
|
@@ -28686,7 +28762,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
28686
28762
|
fontSize: SUB_SIZE * k,
|
|
28687
28763
|
textAnchor: "middle",
|
|
28688
28764
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
28689
|
-
children: node.subtitle
|
|
28765
|
+
children: \u5207\u308B(node.subtitle, SUB_SIZE)
|
|
28690
28766
|
}
|
|
28691
28767
|
)
|
|
28692
28768
|
] });
|
|
@@ -29021,7 +29097,9 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29021
29097
|
node.eyebrow && plan.\u80A9\u66F8 ? textWidth(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING) : 0,
|
|
29022
29098
|
node.subtitle && plan.\u8AAC\u660E ? textWidth(node.subtitle, plan.\u8AAC\u660E.size) : 0
|
|
29023
29099
|
);
|
|
29024
|
-
const
|
|
29100
|
+
const \u4E0B\u9650 = \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", plan.\u540D\u524D.size, 0, \u5E45\u4E0A\u9650, textWidth);
|
|
29101
|
+
const k = \u5E45 > 0 && \u5E45\u4E0A\u9650 > 0 ? Math.min(1, Math.max(\u5E45\u4E0A\u9650 / \u5E45, \u4E0B\u9650)) : 1;
|
|
29102
|
+
const \u5207\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593 = 0) => \u5E45\u3067\u5207\u308B(t, \u5927\u304D\u3055 * k, \u5E45\u4E0A\u9650, (u, f) => textWidth(u, f, \u5B57\u9593 * k));
|
|
29025
29103
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29026
29104
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx(
|
|
29027
29105
|
"text",
|
|
@@ -29033,7 +29111,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29033
29111
|
letterSpacing: EYEBROW_TRACKING * k,
|
|
29034
29112
|
textAnchor: "middle",
|
|
29035
29113
|
fill: "var(--cdl-tone-accent, #2d6a8f)",
|
|
29036
|
-
children: node.eyebrow
|
|
29114
|
+
children: \u5207\u308B(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING)
|
|
29037
29115
|
}
|
|
29038
29116
|
),
|
|
29039
29117
|
/* @__PURE__ */ jsx(
|
|
@@ -29046,7 +29124,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29046
29124
|
fontWeight: 700,
|
|
29047
29125
|
textAnchor: "middle",
|
|
29048
29126
|
fill: "var(--cdl-text, #1a1f2a)",
|
|
29049
|
-
children: node.title
|
|
29127
|
+
children: \u5207\u308B(node.title ?? "", plan.\u540D\u524D.size)
|
|
29050
29128
|
}
|
|
29051
29129
|
),
|
|
29052
29130
|
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx(
|
|
@@ -29057,7 +29135,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
29057
29135
|
fontSize: plan.\u8AAC\u660E.size * k,
|
|
29058
29136
|
textAnchor: "middle",
|
|
29059
29137
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
29060
|
-
children: node.subtitle
|
|
29138
|
+
children: \u5207\u308B(node.subtitle, plan.\u8AAC\u660E.size)
|
|
29061
29139
|
}
|
|
29062
29140
|
)
|
|
29063
29141
|
] });
|
|
@@ -29980,17 +30058,19 @@ var externalLabel = (node, cx, bottomY) => /* @__PURE__ */ jsxs(Fragment, { chil
|
|
|
29980
30058
|
var LABEL_EYEBROW_SPACING = 2;
|
|
29981
30059
|
function \u5E45\u306B\u53CE\u3081\u308B2(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
29982
30060
|
const \u5E45 = textWidth(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
29983
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
29984
|
-
|
|
30061
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, textWidth))) : 1;
|
|
30062
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30063
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
30064
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => textWidth(u, f, spacing)) };
|
|
29985
30065
|
}
|
|
29986
30066
|
function bottomLabel(node, cx, plan) {
|
|
29987
30067
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B2(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING, node.w);
|
|
29988
30068
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B2(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
29989
30069
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B2(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
29990
30070
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
29991
|
-
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children:
|
|
29992
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children:
|
|
29993
|
-
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children:
|
|
30071
|
+
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
30072
|
+
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: \u540D.text }),
|
|
30073
|
+
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children: \u8AAC.text })
|
|
29994
30074
|
] });
|
|
29995
30075
|
}
|
|
29996
30076
|
var RACK_SLOT_TOP = 20;
|
|
@@ -30785,13 +30865,22 @@ function blockchainNodeExtent(strokeWidth) {
|
|
|
30785
30865
|
return { \u4E0A: \u7E26, \u4E0B: \u7E26, \u5DE6: \u6A2A, \u53F3: \u6A2A };
|
|
30786
30866
|
}
|
|
30787
30867
|
function bottomLabel2(node, cx, plan) {
|
|
30788
|
-
const \
|
|
30789
|
-
|
|
30790
|
-
|
|
30868
|
+
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593) => {
|
|
30869
|
+
const \u6E2C\u308B = (u, f, ls) => \u5B57\u306E\u5E45(u, f) + ls * [...u].length;
|
|
30870
|
+
const \u500D\u7387 = Math.max(\u5E45\u306E\u500D\u7387(t, \u5927\u304D\u3055, \u5B57\u9593, node.w), \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(t, \u5927\u304D\u3055, \u5B57\u9593, node.w, \u6E2C\u308B));
|
|
30871
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
30872
|
+
return { \u500D\u7387, text: \u5E45\u3067\u5207\u308B(t, size, node.w, (u, f) => \u5B57\u306E\u5E45(u, f) + \u5B57\u9593 * \u500D\u7387 * [...u].length) };
|
|
30873
|
+
};
|
|
30874
|
+
const \u80A9 = node.eyebrow && plan.\u80A9\u66F8 ? \u53CE\u3081\u308B(node.eyebrow, plan.\u80A9\u66F8.size, 2) : { \u500D\u7387: 1, text: node.eyebrow ?? "" };
|
|
30875
|
+
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0);
|
|
30876
|
+
const \u8AAC = node.subtitle && plan.\u8AAC\u660E ? \u53CE\u3081\u308B(node.subtitle, plan.\u8AAC\u660E.size, 0) : { \u500D\u7387: 1, text: node.subtitle ?? "" };
|
|
30877
|
+
const \u80A9\u66F8\u500D\u7387 = \u80A9.\u500D\u7387;
|
|
30878
|
+
const \u540D\u524D\u500D\u7387 = \u540D.\u500D\u7387;
|
|
30879
|
+
const \u8AAC\u660E\u500D\u7387 = \u8AAC.\u500D\u7387;
|
|
30791
30880
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
30792
|
-
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: plan.\u80A9\u66F8.size * \u80A9\u66F8\u500D\u7387, fontWeight: 700, letterSpacing: 2 * \u80A9\u66F8\u500D\u7387, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children:
|
|
30793
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: plan.\u540D\u524D.size * \u540D\u524D\u500D\u7387, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children:
|
|
30794
|
-
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: plan.\u8AAC\u660E.size * \u8AAC\u660E\u500D\u7387, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children:
|
|
30881
|
+
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: plan.\u80A9\u66F8.size * \u80A9\u66F8\u500D\u7387, fontWeight: 700, letterSpacing: 2 * \u80A9\u66F8\u500D\u7387, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
30882
|
+
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: plan.\u540D\u524D.size * \u540D\u524D\u500D\u7387, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: \u540D.text }),
|
|
30883
|
+
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: plan.\u8AAC\u660E.size * \u8AAC\u660E\u500D\u7387, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children: \u8AAC.text })
|
|
30795
30884
|
] });
|
|
30796
30885
|
}
|
|
30797
30886
|
function EthereumDiamond({ cx, cy, h, colors }) {
|
|
@@ -31400,17 +31489,19 @@ function \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31400
31489
|
}
|
|
31401
31490
|
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31402
31491
|
const \u5E45 = \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31403
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
31404
|
-
|
|
31492
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u5B57\u5E45))) : 1;
|
|
31493
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31494
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31495
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E45(u, f, spacing)) };
|
|
31405
31496
|
}
|
|
31406
31497
|
function bottomLabel3(node, cx, plan) {
|
|
31407
31498
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B3(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING2, node.w);
|
|
31408
31499
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31409
31500
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B3(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31410
31501
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
31411
|
-
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children:
|
|
31412
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children:
|
|
31413
|
-
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children:
|
|
31502
|
+
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
31503
|
+
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: \u540D.text }),
|
|
31504
|
+
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children: \u8AAC.text })
|
|
31414
31505
|
] });
|
|
31415
31506
|
}
|
|
31416
31507
|
var BANK_PEDIMENT_H = 44;
|
|
@@ -31883,17 +31974,19 @@ function \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
31883
31974
|
}
|
|
31884
31975
|
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
31885
31976
|
const \u5E45 = \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
31886
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
31887
|
-
|
|
31977
|
+
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, Math.max(\u7BB1\u5E45 / \u5E45, \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45, \u5B57\u5E452))) : 1;
|
|
31978
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
31979
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
31980
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E452(u, f, spacing)) };
|
|
31888
31981
|
}
|
|
31889
31982
|
function bottomLabel4(node, cx, plan) {
|
|
31890
31983
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B4(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING3, node.w);
|
|
31891
31984
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
31892
31985
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B4(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
31893
31986
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
31894
|
-
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children:
|
|
31895
|
-
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children:
|
|
31896
|
-
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children:
|
|
31987
|
+
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u80A9\u66F8.y, fontSize: \u80A9.size, fontWeight: 700, letterSpacing: \u80A9.spacing, textAnchor: "middle", fill: "var(--cdl-tone-accent, #2d6a8f)", children: \u80A9.text }),
|
|
31988
|
+
/* @__PURE__ */ jsx("text", { "data-cdl-role": "node-label", x: cx, y: plan.\u540D\u524D.y, fontSize: \u540D.size, fontWeight: 700, textAnchor: "middle", fill: "var(--cdl-text, #1a1f2a)", children: \u540D.text }),
|
|
31989
|
+
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx("text", { x: cx, y: plan.\u8AAC\u660E.y, fontSize: \u8AAC.size, textAnchor: "middle", fill: "var(--cdl-text-dim, #5a6270)", children: \u8AAC.text })
|
|
31897
31990
|
] });
|
|
31898
31991
|
}
|
|
31899
31992
|
var DROP_SHADOW_D = 4;
|