@cardenelabs/cdl 0.107.0 → 0.109.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 +59 -1
- package/dist/index.cjs +72 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +72 -35
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +187 -150
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +187 -150
- 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/render/header.tsx +10 -1
- package/src/render.tsx +17 -0
package/dist/react.js
CHANGED
|
@@ -3192,6 +3192,111 @@ function requiredRowsWidth(rows, kind) {
|
|
|
3192
3192
|
if (kind === void 0) return Math.ceil(Math.max(storage, generic));
|
|
3193
3193
|
return Math.ceil(kind === "storage" ? storage : generic);
|
|
3194
3194
|
}
|
|
3195
|
+
|
|
3196
|
+
// src/kinds/compact-title.ts
|
|
3197
|
+
function estimateTextWidth(text, fontSize) {
|
|
3198
|
+
let w = 0;
|
|
3199
|
+
for (const ch of text) {
|
|
3200
|
+
const isFullWidth = /[\u3000-\u9FFF\uFF00-\uFFEF]/.test(ch);
|
|
3201
|
+
w += fontSize * (isFullWidth ? 1.05 : 0.62);
|
|
3202
|
+
}
|
|
3203
|
+
return w;
|
|
3204
|
+
}
|
|
3205
|
+
function fitTextSize(text, maxWidth, targetSize, minSize) {
|
|
3206
|
+
let size = targetSize;
|
|
3207
|
+
while (size > minSize && estimateTextWidth(text, size) > maxWidth) {
|
|
3208
|
+
size -= 1;
|
|
3209
|
+
}
|
|
3210
|
+
return size;
|
|
3211
|
+
}
|
|
3212
|
+
var COMPACT_MAX_H = 100;
|
|
3213
|
+
var COMPACT_PADDING_X = 16;
|
|
3214
|
+
var MIN_TEXT_SIZE = 11;
|
|
3215
|
+
var ASCENT = 0.72;
|
|
3216
|
+
var DESCENT = 0.25;
|
|
3217
|
+
var MIN_BAND_H = MIN_TEXT_SIZE * (ASCENT + DESCENT);
|
|
3218
|
+
var EYEBROW_BASELINE = 38;
|
|
3219
|
+
var EYEBROW_SIZE = 18;
|
|
3220
|
+
var EYEBROW_GAP = 8;
|
|
3221
|
+
var BOTTOM_INSET = 4;
|
|
3222
|
+
var eyebrowBottom = () => EYEBROW_BASELINE + EYEBROW_SIZE * DESCENT;
|
|
3223
|
+
var titleBandTop = (hasEyebrow) => eyebrowBottom() + EYEBROW_GAP ;
|
|
3224
|
+
var isCompactBox = (h) => h < COMPACT_MAX_H;
|
|
3225
|
+
function titlePlacement(node, \u901A\u5E38, opts = {}) {
|
|
3226
|
+
if (!isCompactBox(node.h)) {
|
|
3227
|
+
return { x: \u901A\u5E38.x, y: \u901A\u5E38.y, size: \u901A\u5E38.size, anchor: "start" };
|
|
3228
|
+
}
|
|
3229
|
+
const \u9AD8\u3055 = Math.max(0, node.h);
|
|
3230
|
+
const \u76EE\u5370\u3042\u308A = opts.hasEyebrow === true;
|
|
3231
|
+
const \u4E0A = \u76EE\u5370\u3042\u308A && \u9AD8\u3055 >= eyebrowBottom() ? titleBandTop() : 0;
|
|
3232
|
+
const \u751F\u306E\u5E2F = Math.max(0, \u9AD8\u3055 - \u4E0A);
|
|
3233
|
+
const \u4E0B\u4F59\u767D = \u751F\u306E\u5E2F >= MIN_BAND_H + BOTTOM_INSET ? BOTTOM_INSET : 0;
|
|
3234
|
+
const \u5E2F = \u751F\u306E\u5E2F - \u4E0B\u4F59\u767D;
|
|
3235
|
+
const \u5E45\u3067 = fitTextSize(
|
|
3236
|
+
node.title,
|
|
3237
|
+
Math.max(0, node.w - COMPACT_PADDING_X),
|
|
3238
|
+
\u901A\u5E38.size,
|
|
3239
|
+
MIN_TEXT_SIZE
|
|
3240
|
+
);
|
|
3241
|
+
const \u5E2F\u3067 = Math.floor(\u5E2F / (ASCENT + DESCENT));
|
|
3242
|
+
const size = Math.max(MIN_TEXT_SIZE, Math.min(\u5E45\u3067, \u5E2F\u3067));
|
|
3243
|
+
const \u5B57\u9AD8 = size * (ASCENT + DESCENT);
|
|
3244
|
+
const y = \u5B57\u9AD8 <= \u5E2F ? \u4E0A + \u5E2F / 2 + size * (ASCENT - DESCENT) / 2 : \u4E0A > 0 ? \u4E0A + size * ASCENT : (\u9AD8\u3055 - \u5B57\u9AD8) / 2 + size * ASCENT;
|
|
3245
|
+
return { x: node.w / 2, y, size, anchor: "middle" };
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
// src/kinds/box-lines.ts
|
|
3249
|
+
var \u884C\u9001\u308A\u306E\u6BD4 = 1.15;
|
|
3250
|
+
var \u5B57\u306E\u9AD8\u3055\u306E\u6BD4 = 0.72;
|
|
3251
|
+
var \u4E0A\u4E0B\u306E\u4F59\u767D = 2;
|
|
3252
|
+
var \u5DE6\u53F3\u306E\u4F59\u767D = 8;
|
|
3253
|
+
function \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45) {
|
|
3254
|
+
return \u7BB1\u306E\u5E45 - \u5DE6\u53F3\u306E\u4F59\u767D * 2;
|
|
3255
|
+
}
|
|
3256
|
+
function \u5E45\u3067\u5207\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
3257
|
+
if (\u4F7F\u3048\u308B\u5E452 <= 0) return "";
|
|
3258
|
+
if (\u6E2C\u308B(text, fontSize) <= \u4F7F\u3048\u308B\u5E452) return text;
|
|
3259
|
+
const \u7701\u7565 = "\u2026";
|
|
3260
|
+
const \u7701\u7565\u306E\u5E45 = \u6E2C\u308B(\u7701\u7565, fontSize);
|
|
3261
|
+
if (\u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) return "";
|
|
3262
|
+
let \u51FA = "";
|
|
3263
|
+
let \u5E45 = 0;
|
|
3264
|
+
for (const c of \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text)) {
|
|
3265
|
+
const \u5B57\u306E\u5E452 = \u6E2C\u308B(c, fontSize);
|
|
3266
|
+
if (\u5E45 + \u5B57\u306E\u5E452 + \u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) break;
|
|
3267
|
+
\u5E45 += \u5B57\u306E\u5E452;
|
|
3268
|
+
\u51FA += c;
|
|
3269
|
+
}
|
|
3270
|
+
return `${\u51FA}${\u7701\u7565}`;
|
|
3271
|
+
}
|
|
3272
|
+
var \u7E2E\u3081\u306E\u4E0B\u9650 = MIN_TEXT_SIZE;
|
|
3273
|
+
function \u5E45\u306B\u53CE\u3081\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
3274
|
+
let size = fontSize;
|
|
3275
|
+
while (size > \u7E2E\u3081\u306E\u4E0B\u9650 && \u6E2C\u308B(text, size) > \u4F7F\u3048\u308B\u5E452) size -= 1;
|
|
3276
|
+
return { text: \u5E45\u3067\u5207\u308B(text, size, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B), fontSize: size };
|
|
3277
|
+
}
|
|
3278
|
+
function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
3279
|
+
const \u533A\u5207\u308A = Intl.Segmenter;
|
|
3280
|
+
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
3281
|
+
return [...new \u533A\u5207\u308A(void 0, { granularity: "grapheme" }).segment(text)].map((g) => g.segment);
|
|
3282
|
+
}
|
|
3283
|
+
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\u30553) {
|
|
3284
|
+
const \u5019\u88DC = \u884C.filter((r, i) => i === 0 || r.text.trim() !== "");
|
|
3285
|
+
if (\u5019\u88DC.length === 0) return [];
|
|
3286
|
+
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\u30553 - \u4E0A\u4E0B\u306E\u4F59\u767D * 2;
|
|
3287
|
+
const \u9AD8\u3055 = (rs) => rs.reduce((a, r) => a + r.fontSize * \u884C\u9001\u308A\u306E\u6BD4, 0);
|
|
3288
|
+
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
3289
|
+
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
3290
|
+
const \u5E45 = \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45);
|
|
3291
|
+
const \u53CE\u3081\u305F = \u6B8B\u3059.map((r) => ({ ...r, ...\u5E45\u306B\u53CE\u3081\u308B(r.text, r.fontSize, \u5E45) }));
|
|
3292
|
+
const \u7DCF\u9AD8 = \u9AD8\u3055(\u53CE\u3081\u305F);
|
|
3293
|
+
let \u7A4D\u307F = -\u7DCF\u9AD8 / 2;
|
|
3294
|
+
return \u53CE\u3081\u305F.map((r) => {
|
|
3295
|
+
const dy = \u7A4D\u307F + (\u884C\u9001\u308A\u306E\u6BD4 + \u5B57\u306E\u9AD8\u3055\u306E\u6BD4) / 2 * r.fontSize;
|
|
3296
|
+
\u7A4D\u307F += r.fontSize * \u884C\u9001\u308A\u306E\u6BD4;
|
|
3297
|
+
return { ...r, dy };
|
|
3298
|
+
});
|
|
3299
|
+
}
|
|
3195
3300
|
function \u66F8\u3044\u305F\u5024\u304B\u63A7\u3048(\u66F8\u3044\u305F, \u63A7\u3048) {
|
|
3196
3301
|
const v = (\u66F8\u3044\u305F ?? "").trim();
|
|
3197
3302
|
return v === "" ? \u63A7\u3048 : v;
|
|
@@ -3201,14 +3306,22 @@ function \u5E45\u306E\u500D\u7387(text, size, letterSpacing, \u5E45) {
|
|
|
3201
3306
|
const \u5B9F\u5E45 = textWidth(text, size, letterSpacing);
|
|
3202
3307
|
return \u5B9F\u5E45 > \u5E45 ? \u5E45 / \u5B9F\u5E45 : 1;
|
|
3203
3308
|
}
|
|
3309
|
+
function \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055) {
|
|
3310
|
+
return \u5927\u304D\u3055 > MIN_TITLE_FONT_SIZE ? MIN_TITLE_FONT_SIZE / \u5927\u304D\u3055 : 0;
|
|
3311
|
+
}
|
|
3312
|
+
function \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(\u984C, \u5927\u304D\u3055, \u5B57\u9593, \u5E45\u4E0A\u9650, \u6E2C\u308B) {
|
|
3313
|
+
const \u4E0B\u9650 = \u8AAD\u3081\u308B\u4E0B\u9650\u306E\u500D\u7387(\u5927\u304D\u3055);
|
|
3314
|
+
if (!(\u4E0B\u9650 > 0) || !(\u5E45\u4E0A\u9650 > 0)) return 0;
|
|
3315
|
+
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;
|
|
3316
|
+
}
|
|
3204
3317
|
var TITLE_MAX = 18;
|
|
3205
3318
|
var TITLE_MIN = 9;
|
|
3206
3319
|
var TITLE_RATIO = 0.17;
|
|
3207
3320
|
var SUB_RATIO = 0.72;
|
|
3208
3321
|
var LINE_GAP = 3;
|
|
3209
3322
|
var BOTTOM_PAD = 4;
|
|
3210
|
-
var
|
|
3211
|
-
var
|
|
3323
|
+
var ASCENT2 = 0.72;
|
|
3324
|
+
var DESCENT2 = 0.25;
|
|
3212
3325
|
var ART_GAP = 4;
|
|
3213
3326
|
var ART_MIN_BAND = 45;
|
|
3214
3327
|
var \u843D\u3068\u3057\u3066\u3082\u63CF\u304F\u7A2E\u5225 = {
|
|
@@ -3273,9 +3386,9 @@ function labelPlan(node) {
|
|
|
3273
3386
|
y -= \u540D\u524D\u5927 + LINE_GAP;
|
|
3274
3387
|
const \u80A9\u66F8 = \u80A9\u66F8\u3042\u308A2 ? { y, size: \u5C0F\u3055\u3044\u5B57 } : null;
|
|
3275
3388
|
const \u4E0A\u306E\u884C = \u80A9\u66F8 ?? \u540D\u524D;
|
|
3276
|
-
return { \u540D\u524D, \u8AAC\u660E, \u80A9\u66F8, \u4E0A\u7AEF: \u4E0A\u306E\u884C.y - \u4E0A\u306E\u884C.size *
|
|
3389
|
+
return { \u540D\u524D, \u8AAC\u660E, \u80A9\u66F8, \u4E0A\u7AEF: \u4E0A\u306E\u884C.y - \u4E0A\u306E\u884C.size * ASCENT2 };
|
|
3277
3390
|
};
|
|
3278
|
-
const \u5165\u308B = (\u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2) => \u7A4D\u3080(1, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, 1 *
|
|
3391
|
+
const \u5165\u308B = (\u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2) => \u7A4D\u3080(1, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, 1 * DESCENT2).\u4E0A\u7AEF >= \u5929;
|
|
3279
3392
|
let \u8AAC\u660E\u3042\u308A = Boolean(node.subtitle);
|
|
3280
3393
|
let \u80A9\u66F8\u3042\u308A = Boolean(node.eyebrow);
|
|
3281
3394
|
const \u843D\u3068\u3057\u305F = [];
|
|
@@ -3293,14 +3406,14 @@ function labelPlan(node) {
|
|
|
3293
3406
|
for (let size = \u4E0A\u9650; size >= 1; size--) {
|
|
3294
3407
|
const \u5C0F\u3055\u3044\u5B572 = Math.max(1, Math.round(size * SUB_RATIO));
|
|
3295
3408
|
const \u4E0B\u306E\u884C\u5927 = \u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B572 : size;
|
|
3296
|
-
if (\u7A4D\u3080(size, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u306E\u884C\u5927 *
|
|
3409
|
+
if (\u7A4D\u3080(size, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u306E\u884C\u5927 * DESCENT2).\u4E0A\u7AEF >= \u5929) {
|
|
3297
3410
|
\u540D\u524D\u5927 = size;
|
|
3298
3411
|
break;
|
|
3299
3412
|
}
|
|
3300
3413
|
}
|
|
3301
|
-
if (\u540D\u524D\u5927 === 0) \u540D\u524D\u5927 = \u9AD8\u3055 / (
|
|
3414
|
+
if (\u540D\u524D\u5927 === 0) \u540D\u524D\u5927 = \u9AD8\u3055 / (ASCENT2 + DESCENT2);
|
|
3302
3415
|
const \u5C0F\u3055\u3044\u5B57 = Math.max(1, Math.round(\u540D\u524D\u5927 * SUB_RATIO));
|
|
3303
|
-
const \u5F35\u308A\u51FA\u3057 = (\u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B57 : \u540D\u524D\u5927) *
|
|
3416
|
+
const \u5F35\u308A\u51FA\u3057 = (\u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B57 : \u540D\u524D\u5927) * DESCENT2;
|
|
3304
3417
|
const \u4F59\u308A = Math.max(0, \u7A4D\u3080(\u540D\u524D\u5927, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u5F35\u308A\u51FA\u3057).\u4E0A\u7AEF - \u5929);
|
|
3305
3418
|
const \u4E0B\u4F59\u767D = Math.min(Math.max(BOTTOM_PAD, \u5F35\u308A\u51FA\u3057), \u5F35\u308A\u51FA\u3057 + \u4F59\u308A);
|
|
3306
3419
|
return \u7A4D\u3080(\u540D\u524D\u5927, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u4F59\u767D);
|
|
@@ -3360,16 +3473,19 @@ function bodyBand(node, opt) {
|
|
|
3360
3473
|
const h = Math.max(0, \u7BB1h - \u7E26\u4F59\u767D * ky);
|
|
3361
3474
|
return { x, y, w, h, cx: x + w / 2, cy: y + h / 2, \u53F3: x + w, \u5E95: y + h };
|
|
3362
3475
|
}
|
|
3363
|
-
function fitLabel(band, block, pos) {
|
|
3476
|
+
function fitLabel(band, block, pos, \u6A2A\u306E\u4E0B\u9650 = 0) {
|
|
3364
3477
|
const \u7E26 = block.\u4E0A + block.\u4E0B;
|
|
3365
3478
|
const \u6A2A = Math.max(0, block.\u5E45);
|
|
3366
3479
|
if (!(\u7E26 > 0)) return { k: 1, x: pos.x, y: pos.y };
|
|
3367
3480
|
if (!(band.h > 0) || !(band.w > 0)) return { k: 0, x: band.x + band.w / 2, y: band.y };
|
|
3368
|
-
const
|
|
3481
|
+
const \u6A2A\u3067 = \u6A2A > 0 ? Math.max(band.w / \u6A2A, \u6A2A\u306E\u4E0B\u9650) : 1;
|
|
3482
|
+
const k = Math.min(1, band.h / \u7E26, \u6A2A\u3067);
|
|
3369
3483
|
const \u534A = \u6A2A * k / 2;
|
|
3370
3484
|
return {
|
|
3371
3485
|
k,
|
|
3372
|
-
|
|
3486
|
+
// 下限で止めた塊は帯より広い。 その時は帯の中央に置いて左右へ均等に出す =
|
|
3487
|
+
// 寄せの式をそのまま当てると片側だけに出る (`compact-title.ts` と同じ判断)
|
|
3488
|
+
x: \u534A * 2 > band.w ? band.x + band.w / 2 : Math.max(band.x + \u534A, Math.min(pos.x, band.x + band.w - \u534A)),
|
|
3373
3489
|
y: Math.max(band.y + block.\u4E0A * k, Math.min(pos.y, band.y + band.h - block.\u4E0B * k))
|
|
3374
3490
|
};
|
|
3375
3491
|
}
|
|
@@ -3422,111 +3538,6 @@ function \u6253\u3061\u6D88\u3057\u306E\u500D\u7387(\u500D\u7387, \u5B57\u3089)
|
|
|
3422
3538
|
return Math.max(1, Math.min(\u623B\u3057, \u4E0A\u9650));
|
|
3423
3539
|
}
|
|
3424
3540
|
|
|
3425
|
-
// src/kinds/compact-title.ts
|
|
3426
|
-
function estimateTextWidth(text, fontSize) {
|
|
3427
|
-
let w = 0;
|
|
3428
|
-
for (const ch of text) {
|
|
3429
|
-
const isFullWidth = /[\u3000-\u9FFF\uFF00-\uFFEF]/.test(ch);
|
|
3430
|
-
w += fontSize * (isFullWidth ? 1.05 : 0.62);
|
|
3431
|
-
}
|
|
3432
|
-
return w;
|
|
3433
|
-
}
|
|
3434
|
-
function fitTextSize(text, maxWidth, targetSize, minSize) {
|
|
3435
|
-
let size = targetSize;
|
|
3436
|
-
while (size > minSize && estimateTextWidth(text, size) > maxWidth) {
|
|
3437
|
-
size -= 1;
|
|
3438
|
-
}
|
|
3439
|
-
return size;
|
|
3440
|
-
}
|
|
3441
|
-
var COMPACT_MAX_H = 100;
|
|
3442
|
-
var COMPACT_PADDING_X = 16;
|
|
3443
|
-
var MIN_TEXT_SIZE = 11;
|
|
3444
|
-
var ASCENT2 = 0.72;
|
|
3445
|
-
var DESCENT2 = 0.25;
|
|
3446
|
-
var MIN_BAND_H = MIN_TEXT_SIZE * (ASCENT2 + DESCENT2);
|
|
3447
|
-
var EYEBROW_BASELINE = 38;
|
|
3448
|
-
var EYEBROW_SIZE = 18;
|
|
3449
|
-
var EYEBROW_GAP = 8;
|
|
3450
|
-
var BOTTOM_INSET = 4;
|
|
3451
|
-
var eyebrowBottom = () => EYEBROW_BASELINE + EYEBROW_SIZE * DESCENT2;
|
|
3452
|
-
var titleBandTop = (hasEyebrow) => eyebrowBottom() + EYEBROW_GAP ;
|
|
3453
|
-
var isCompactBox = (h) => h < COMPACT_MAX_H;
|
|
3454
|
-
function titlePlacement(node, \u901A\u5E38, opts = {}) {
|
|
3455
|
-
if (!isCompactBox(node.h)) {
|
|
3456
|
-
return { x: \u901A\u5E38.x, y: \u901A\u5E38.y, size: \u901A\u5E38.size, anchor: "start" };
|
|
3457
|
-
}
|
|
3458
|
-
const \u9AD8\u3055 = Math.max(0, node.h);
|
|
3459
|
-
const \u76EE\u5370\u3042\u308A = opts.hasEyebrow === true;
|
|
3460
|
-
const \u4E0A = \u76EE\u5370\u3042\u308A && \u9AD8\u3055 >= eyebrowBottom() ? titleBandTop() : 0;
|
|
3461
|
-
const \u751F\u306E\u5E2F = Math.max(0, \u9AD8\u3055 - \u4E0A);
|
|
3462
|
-
const \u4E0B\u4F59\u767D = \u751F\u306E\u5E2F >= MIN_BAND_H + BOTTOM_INSET ? BOTTOM_INSET : 0;
|
|
3463
|
-
const \u5E2F = \u751F\u306E\u5E2F - \u4E0B\u4F59\u767D;
|
|
3464
|
-
const \u5E45\u3067 = fitTextSize(
|
|
3465
|
-
node.title,
|
|
3466
|
-
Math.max(0, node.w - COMPACT_PADDING_X),
|
|
3467
|
-
\u901A\u5E38.size,
|
|
3468
|
-
MIN_TEXT_SIZE
|
|
3469
|
-
);
|
|
3470
|
-
const \u5E2F\u3067 = Math.floor(\u5E2F / (ASCENT2 + DESCENT2));
|
|
3471
|
-
const size = Math.max(MIN_TEXT_SIZE, Math.min(\u5E45\u3067, \u5E2F\u3067));
|
|
3472
|
-
const \u5B57\u9AD8 = size * (ASCENT2 + DESCENT2);
|
|
3473
|
-
const y = \u5B57\u9AD8 <= \u5E2F ? \u4E0A + \u5E2F / 2 + size * (ASCENT2 - DESCENT2) / 2 : \u4E0A > 0 ? \u4E0A + size * ASCENT2 : (\u9AD8\u3055 - \u5B57\u9AD8) / 2 + size * ASCENT2;
|
|
3474
|
-
return { x: node.w / 2, y, size, anchor: "middle" };
|
|
3475
|
-
}
|
|
3476
|
-
|
|
3477
|
-
// src/kinds/box-lines.ts
|
|
3478
|
-
var \u884C\u9001\u308A\u306E\u6BD4 = 1.15;
|
|
3479
|
-
var \u5B57\u306E\u9AD8\u3055\u306E\u6BD4 = 0.72;
|
|
3480
|
-
var \u4E0A\u4E0B\u306E\u4F59\u767D = 2;
|
|
3481
|
-
var \u5DE6\u53F3\u306E\u4F59\u767D = 8;
|
|
3482
|
-
function \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45) {
|
|
3483
|
-
return \u7BB1\u306E\u5E45 - \u5DE6\u53F3\u306E\u4F59\u767D * 2;
|
|
3484
|
-
}
|
|
3485
|
-
function \u5E45\u3067\u5207\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
3486
|
-
if (\u4F7F\u3048\u308B\u5E452 <= 0) return "";
|
|
3487
|
-
if (\u6E2C\u308B(text, fontSize) <= \u4F7F\u3048\u308B\u5E452) return text;
|
|
3488
|
-
const \u7701\u7565 = "\u2026";
|
|
3489
|
-
const \u7701\u7565\u306E\u5E45 = \u6E2C\u308B(\u7701\u7565, fontSize);
|
|
3490
|
-
if (\u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) return "";
|
|
3491
|
-
let \u51FA = "";
|
|
3492
|
-
let \u5E45 = 0;
|
|
3493
|
-
for (const c of \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text)) {
|
|
3494
|
-
const \u5B57\u306E\u5E452 = \u6E2C\u308B(c, fontSize);
|
|
3495
|
-
if (\u5E45 + \u5B57\u306E\u5E452 + \u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) break;
|
|
3496
|
-
\u5E45 += \u5B57\u306E\u5E452;
|
|
3497
|
-
\u51FA += c;
|
|
3498
|
-
}
|
|
3499
|
-
return `${\u51FA}${\u7701\u7565}`;
|
|
3500
|
-
}
|
|
3501
|
-
var \u7E2E\u3081\u306E\u4E0B\u9650 = MIN_TEXT_SIZE;
|
|
3502
|
-
function \u5E45\u306B\u53CE\u3081\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
3503
|
-
let size = fontSize;
|
|
3504
|
-
while (size > \u7E2E\u3081\u306E\u4E0B\u9650 && \u6E2C\u308B(text, size) > \u4F7F\u3048\u308B\u5E452) size -= 1;
|
|
3505
|
-
return { text: \u5E45\u3067\u5207\u308B(text, size, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B), fontSize: size };
|
|
3506
|
-
}
|
|
3507
|
-
function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
3508
|
-
const \u533A\u5207\u308A = Intl.Segmenter;
|
|
3509
|
-
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
3510
|
-
return [...new \u533A\u5207\u308A(void 0, { granularity: "grapheme" }).segment(text)].map((g) => g.segment);
|
|
3511
|
-
}
|
|
3512
|
-
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\u30553) {
|
|
3513
|
-
const \u5019\u88DC = \u884C.filter((r, i) => i === 0 || r.text.trim() !== "");
|
|
3514
|
-
if (\u5019\u88DC.length === 0) return [];
|
|
3515
|
-
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\u30553 - \u4E0A\u4E0B\u306E\u4F59\u767D * 2;
|
|
3516
|
-
const \u9AD8\u3055 = (rs) => rs.reduce((a, r) => a + r.fontSize * \u884C\u9001\u308A\u306E\u6BD4, 0);
|
|
3517
|
-
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
3518
|
-
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
3519
|
-
const \u5E45 = \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45);
|
|
3520
|
-
const \u53CE\u3081\u305F = \u6B8B\u3059.map((r) => ({ ...r, ...\u5E45\u306B\u53CE\u3081\u308B(r.text, r.fontSize, \u5E45) }));
|
|
3521
|
-
const \u7DCF\u9AD8 = \u9AD8\u3055(\u53CE\u3081\u305F);
|
|
3522
|
-
let \u7A4D\u307F = -\u7DCF\u9AD8 / 2;
|
|
3523
|
-
return \u53CE\u3081\u305F.map((r) => {
|
|
3524
|
-
const dy = \u7A4D\u307F + (\u884C\u9001\u308A\u306E\u6BD4 + \u5B57\u306E\u9AD8\u3055\u306E\u6BD4) / 2 * r.fontSize;
|
|
3525
|
-
\u7A4D\u307F += r.fontSize * \u884C\u9001\u308A\u306E\u6BD4;
|
|
3526
|
-
return { ...r, dy };
|
|
3527
|
-
});
|
|
3528
|
-
}
|
|
3529
|
-
|
|
3530
3541
|
// src/render/tone.ts
|
|
3531
3542
|
var TONE = {
|
|
3532
3543
|
accent: "var(--cdl-tone-accent, #2d6a8f)",
|
|
@@ -10902,12 +10913,13 @@ function CdlHeader({
|
|
|
10902
10913
|
stateValues,
|
|
10903
10914
|
states,
|
|
10904
10915
|
onJumpPhase,
|
|
10905
|
-
headingLevel = 3
|
|
10916
|
+
headingLevel = 3,
|
|
10917
|
+
showTopic = true
|
|
10906
10918
|
}) {
|
|
10907
10919
|
const HeadingTag = `h${headingLevel}`;
|
|
10908
10920
|
return /* @__PURE__ */ jsxs("div", { className: "border-b border-[var(--cdl-divider,#d4d4d8)]/35 px-7 py-6", children: [
|
|
10909
10921
|
/* @__PURE__ */ jsxs("div", { className: "mb-5 flex items-center gap-3", children: [
|
|
10910
|
-
/* @__PURE__ */ jsx("div", { className: "text-[10px] font-bold uppercase tracking-[0.2em]", style: { color: "var(--cdl-text-accent, #2d6a8f)" }, children: topic }),
|
|
10922
|
+
showTopic && /* @__PURE__ */ jsx("div", { className: "text-[10px] font-bold uppercase tracking-[0.2em]", style: { color: "var(--cdl-text-accent, #2d6a8f)" }, children: topic }),
|
|
10911
10923
|
/* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [
|
|
10912
10924
|
phases.map((p, idx) => {
|
|
10913
10925
|
const active = idx === phaseIdx;
|
|
@@ -11839,7 +11851,7 @@ function CardNode({ node, active }) {
|
|
|
11839
11851
|
const textAnchor = compact ? "middle" : "start";
|
|
11840
11852
|
const subtitleY = 124 - \u305A\u3089\u3057;
|
|
11841
11853
|
const \u6700\u5927\u306E\u884C\u9001\u308A = SUBTITLE_SIZE * \u884C\u9001\u308A\u306E\u500D\u7387;
|
|
11842
|
-
const \u4E8C\u884C\u304C\u5165\u308B = !compact && subtitleY - \u6700\u5927\u306E\u884C\u9001\u308A / 2 - SUBTITLE_SIZE *
|
|
11854
|
+
const \u4E8C\u884C\u304C\u5165\u308B = !compact && subtitleY - \u6700\u5927\u306E\u884C\u9001\u308A / 2 - SUBTITLE_SIZE * ASCENT > titleY + titleSize * DESCENT && subtitleY + \u6700\u5927\u306E\u884C\u9001\u308A / 2 + SUBTITLE_SIZE * DESCENT <= node.h - 4;
|
|
11843
11855
|
const \u8AAC\u660E = node.subtitle ? \u8AAC\u660E\u6587\u3092\u5272\u308A\u4ED8\u3051\u308B(node.subtitle, availableW, { \u4E8C\u884C\u307E\u3067: \u4E8C\u884C\u304C\u5165\u308B }) : void 0;
|
|
11844
11856
|
const subtitleSize = \u8AAC\u660E?.size ?? 21;
|
|
11845
11857
|
const \u884C\u9001\u308A = subtitleSize * \u884C\u9001\u308A\u306E\u500D\u7387;
|
|
@@ -16136,20 +16148,22 @@ var EYEBROW_TRACKING = 2;
|
|
|
16136
16148
|
var SUB_SIZE = 11;
|
|
16137
16149
|
var SUB_GAP = 4;
|
|
16138
16150
|
function labelBlock(node, pos, size, band) {
|
|
16139
|
-
const \u4E0A = node.eyebrow ? size + EYEBROW_GAP2 + EYEBROW_SIZE2 *
|
|
16140
|
-
const \u4E0B = node.subtitle ? size + SUB_GAP + SUB_SIZE *
|
|
16151
|
+
const \u4E0A = node.eyebrow ? size + EYEBROW_GAP2 + EYEBROW_SIZE2 * ASCENT2 : size * ASCENT2;
|
|
16152
|
+
const \u4E0B = node.subtitle ? size + SUB_GAP + SUB_SIZE * DESCENT2 : size * DESCENT2;
|
|
16141
16153
|
const \u5E45 = Math.max(
|
|
16142
16154
|
textWidth(node.title ?? "", size),
|
|
16143
16155
|
node.eyebrow ? textWidth(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING) : 0,
|
|
16144
16156
|
node.subtitle ? textWidth(node.subtitle, SUB_SIZE) : 0
|
|
16145
16157
|
);
|
|
16146
|
-
const
|
|
16158
|
+
const \u4E0B\u9650 = \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", size, 0, band.w, textWidth);
|
|
16159
|
+
const { k, x, y: baseline } = fitLabel(band, { \u4E0A, \u4E0B, \u5E45 }, pos, \u4E0B\u9650);
|
|
16147
16160
|
return { k, x, baseline, \u4E0A\u7AEF: baseline - \u4E0A * k, \u4E0B\u7AEF: baseline + \u4E0B * k };
|
|
16148
16161
|
}
|
|
16149
16162
|
function commonLabel(node, pos, size, band) {
|
|
16150
16163
|
const \u584A = labelBlock(node, pos, size, band);
|
|
16151
16164
|
const k = \u584A.k;
|
|
16152
16165
|
const x = \u584A.x;
|
|
16166
|
+
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));
|
|
16153
16167
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16154
16168
|
node.eyebrow && /* @__PURE__ */ jsx(
|
|
16155
16169
|
"text",
|
|
@@ -16161,7 +16175,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
16161
16175
|
letterSpacing: EYEBROW_TRACKING * k,
|
|
16162
16176
|
textAnchor: "middle",
|
|
16163
16177
|
fill: "var(--cdl-tone-accent, #2d6a8f)",
|
|
16164
|
-
children: node.eyebrow
|
|
16178
|
+
children: \u5207\u308B(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING)
|
|
16165
16179
|
}
|
|
16166
16180
|
),
|
|
16167
16181
|
/* @__PURE__ */ jsx(
|
|
@@ -16174,7 +16188,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
16174
16188
|
fontWeight: 700,
|
|
16175
16189
|
textAnchor: "middle",
|
|
16176
16190
|
fill: "var(--cdl-text, #1a1f2a)",
|
|
16177
|
-
children: node.title
|
|
16191
|
+
children: \u5207\u308B(node.title ?? "", size)
|
|
16178
16192
|
}
|
|
16179
16193
|
),
|
|
16180
16194
|
node.subtitle && /* @__PURE__ */ jsx(
|
|
@@ -16185,7 +16199,7 @@ function commonLabel(node, pos, size, band) {
|
|
|
16185
16199
|
fontSize: SUB_SIZE * k,
|
|
16186
16200
|
textAnchor: "middle",
|
|
16187
16201
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
16188
|
-
children: node.subtitle
|
|
16202
|
+
children: \u5207\u308B(node.subtitle, SUB_SIZE)
|
|
16189
16203
|
}
|
|
16190
16204
|
)
|
|
16191
16205
|
] });
|
|
@@ -16520,7 +16534,9 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
16520
16534
|
node.eyebrow && plan.\u80A9\u66F8 ? textWidth(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING) : 0,
|
|
16521
16535
|
node.subtitle && plan.\u8AAC\u660E ? textWidth(node.subtitle, plan.\u8AAC\u660E.size) : 0
|
|
16522
16536
|
);
|
|
16523
|
-
const
|
|
16537
|
+
const \u4E0B\u9650 = \u5207\u3063\u3066\u53CE\u307E\u308B\u4E0B\u9650(node.title ?? "", plan.\u540D\u524D.size, 0, \u5E45\u4E0A\u9650, textWidth);
|
|
16538
|
+
const k = \u5E45 > 0 && \u5E45\u4E0A\u9650 > 0 ? Math.min(1, Math.max(\u5E45\u4E0A\u9650 / \u5E45, \u4E0B\u9650)) : 1;
|
|
16539
|
+
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));
|
|
16524
16540
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16525
16541
|
node.eyebrow && plan.\u80A9\u66F8 && /* @__PURE__ */ jsx(
|
|
16526
16542
|
"text",
|
|
@@ -16532,7 +16548,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
16532
16548
|
letterSpacing: EYEBROW_TRACKING * k,
|
|
16533
16549
|
textAnchor: "middle",
|
|
16534
16550
|
fill: "var(--cdl-tone-accent, #2d6a8f)",
|
|
16535
|
-
children: node.eyebrow
|
|
16551
|
+
children: \u5207\u308B(node.eyebrow, plan.\u80A9\u66F8.size, EYEBROW_TRACKING)
|
|
16536
16552
|
}
|
|
16537
16553
|
),
|
|
16538
16554
|
/* @__PURE__ */ jsx(
|
|
@@ -16545,7 +16561,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
16545
16561
|
fontWeight: 700,
|
|
16546
16562
|
textAnchor: "middle",
|
|
16547
16563
|
fill: "var(--cdl-text, #1a1f2a)",
|
|
16548
|
-
children: node.title
|
|
16564
|
+
children: \u5207\u308B(node.title ?? "", plan.\u540D\u524D.size)
|
|
16549
16565
|
}
|
|
16550
16566
|
),
|
|
16551
16567
|
node.subtitle && plan.\u8AAC\u660E && /* @__PURE__ */ jsx(
|
|
@@ -16556,7 +16572,7 @@ function planLabel(node, cx, \u5E45\u4E0A\u9650, plan) {
|
|
|
16556
16572
|
fontSize: plan.\u8AAC\u660E.size * k,
|
|
16557
16573
|
textAnchor: "middle",
|
|
16558
16574
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
16559
|
-
children: node.subtitle
|
|
16575
|
+
children: \u5207\u308B(node.subtitle, plan.\u8AAC\u660E.size)
|
|
16560
16576
|
}
|
|
16561
16577
|
)
|
|
16562
16578
|
] });
|
|
@@ -17479,17 +17495,19 @@ var externalLabel = (node, cx, bottomY) => /* @__PURE__ */ jsxs(Fragment, { chil
|
|
|
17479
17495
|
var LABEL_EYEBROW_SPACING = 2;
|
|
17480
17496
|
function \u5E45\u306B\u53CE\u3081\u308B2(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
17481
17497
|
const \u5E45 = textWidth(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
17482
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
17483
|
-
|
|
17498
|
+
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;
|
|
17499
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
17500
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
17501
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => textWidth(u, f, spacing)) };
|
|
17484
17502
|
}
|
|
17485
17503
|
function bottomLabel(node, cx, plan) {
|
|
17486
17504
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B2(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING, node.w);
|
|
17487
17505
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B2(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
17488
17506
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B2(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
17489
17507
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17490
|
-
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:
|
|
17491
|
-
/* @__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:
|
|
17492
|
-
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:
|
|
17508
|
+
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 }),
|
|
17509
|
+
/* @__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 }),
|
|
17510
|
+
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 })
|
|
17493
17511
|
] });
|
|
17494
17512
|
}
|
|
17495
17513
|
var RACK_SLOT_TOP = 20;
|
|
@@ -18284,13 +18302,22 @@ function blockchainNodeExtent(strokeWidth) {
|
|
|
18284
18302
|
return { \u4E0A: \u7E26, \u4E0B: \u7E26, \u5DE6: \u6A2A, \u53F3: \u6A2A };
|
|
18285
18303
|
}
|
|
18286
18304
|
function bottomLabel2(node, cx, plan) {
|
|
18287
|
-
const \
|
|
18288
|
-
|
|
18289
|
-
|
|
18305
|
+
const \u53CE\u3081\u308B = (t, \u5927\u304D\u3055, \u5B57\u9593) => {
|
|
18306
|
+
const \u6E2C\u308B = (u, f, ls) => \u5B57\u306E\u5E45(u, f) + ls * [...u].length;
|
|
18307
|
+
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));
|
|
18308
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
18309
|
+
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) };
|
|
18310
|
+
};
|
|
18311
|
+
const \u80A9 = node.eyebrow && plan.\u80A9\u66F8 ? \u53CE\u3081\u308B(node.eyebrow, plan.\u80A9\u66F8.size, 2) : { \u500D\u7387: 1, text: node.eyebrow ?? "" };
|
|
18312
|
+
const \u540D = \u53CE\u3081\u308B(node.title ?? "", plan.\u540D\u524D.size, 0);
|
|
18313
|
+
const \u8AAC = node.subtitle && plan.\u8AAC\u660E ? \u53CE\u3081\u308B(node.subtitle, plan.\u8AAC\u660E.size, 0) : { \u500D\u7387: 1, text: node.subtitle ?? "" };
|
|
18314
|
+
const \u80A9\u66F8\u500D\u7387 = \u80A9.\u500D\u7387;
|
|
18315
|
+
const \u540D\u524D\u500D\u7387 = \u540D.\u500D\u7387;
|
|
18316
|
+
const \u8AAC\u660E\u500D\u7387 = \u8AAC.\u500D\u7387;
|
|
18290
18317
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18291
|
-
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:
|
|
18292
|
-
/* @__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:
|
|
18293
|
-
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:
|
|
18318
|
+
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 }),
|
|
18319
|
+
/* @__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 }),
|
|
18320
|
+
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 })
|
|
18294
18321
|
] });
|
|
18295
18322
|
}
|
|
18296
18323
|
function EthereumDiamond({ cx, cy, h, colors }) {
|
|
@@ -18899,17 +18926,19 @@ function \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
18899
18926
|
}
|
|
18900
18927
|
function \u5E45\u306B\u53CE\u3081\u308B3(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
18901
18928
|
const \u5E45 = \u5B57\u5E45(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
18902
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
18903
|
-
|
|
18929
|
+
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;
|
|
18930
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
18931
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
18932
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E45(u, f, spacing)) };
|
|
18904
18933
|
}
|
|
18905
18934
|
function bottomLabel3(node, cx, plan) {
|
|
18906
18935
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B3(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING2, node.w);
|
|
18907
18936
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B3(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
18908
18937
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B3(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
18909
18938
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18910
|
-
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:
|
|
18911
|
-
/* @__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:
|
|
18912
|
-
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:
|
|
18939
|
+
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 }),
|
|
18940
|
+
/* @__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 }),
|
|
18941
|
+
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 })
|
|
18913
18942
|
] });
|
|
18914
18943
|
}
|
|
18915
18944
|
var BANK_PEDIMENT_H = 44;
|
|
@@ -19382,17 +19411,19 @@ function \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593) {
|
|
|
19382
19411
|
}
|
|
19383
19412
|
function \u5E45\u306B\u53CE\u3081\u308B4(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593, \u7BB1\u5E45) {
|
|
19384
19413
|
const \u5E45 = \u5B57\u5E452(\u6587\u5B57\u5217, \u5927\u304D\u3055, \u5B57\u9593);
|
|
19385
|
-
const \u500D\u7387 = \u5E45 > 0 && \u7BB1\u5E45 > 0 ? Math.min(1, \u7BB1\u5E45 / \u5E45) : 1;
|
|
19386
|
-
|
|
19414
|
+
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;
|
|
19415
|
+
const size = \u5927\u304D\u3055 * \u500D\u7387;
|
|
19416
|
+
const spacing = \u5B57\u9593 * \u500D\u7387;
|
|
19417
|
+
return { size, spacing, text: \u5E45\u3067\u5207\u308B(\u6587\u5B57\u5217, size, \u7BB1\u5E45, (u, f) => \u5B57\u5E452(u, f, spacing)) };
|
|
19387
19418
|
}
|
|
19388
19419
|
function bottomLabel4(node, cx, plan) {
|
|
19389
19420
|
const \u80A9 = \u5E45\u306B\u53CE\u3081\u308B4(node.eyebrow ?? "", plan.\u80A9\u66F8?.size ?? 0, LABEL_EYEBROW_SPACING3, node.w);
|
|
19390
19421
|
const \u540D = \u5E45\u306B\u53CE\u3081\u308B4(node.title ?? "", plan.\u540D\u524D.size, 0, node.w);
|
|
19391
19422
|
const \u8AAC = \u5E45\u306B\u53CE\u3081\u308B4(node.subtitle ?? "", plan.\u8AAC\u660E?.size ?? 0, 0, node.w);
|
|
19392
19423
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19393
|
-
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:
|
|
19394
|
-
/* @__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:
|
|
19395
|
-
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:
|
|
19424
|
+
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 }),
|
|
19425
|
+
/* @__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 }),
|
|
19426
|
+
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 })
|
|
19396
19427
|
] });
|
|
19397
19428
|
}
|
|
19398
19429
|
var DROP_SHADOW_D = 4;
|
|
@@ -29601,6 +29632,11 @@ function CdlDiagramView({ diagram, laid: laidProp, hideHeader = false, hideMiniP
|
|
|
29601
29632
|
return mergeStateValues(baseStateValues, interactive.stateOverrides);
|
|
29602
29633
|
}, [isInteractive, baseStateValues, interactive.stateOverrides]);
|
|
29603
29634
|
const \u5024\u306E\u540D\u524D = useMemo(() => \u5024\u306E\u540D\u524D\u306E\u8868\u3092\u4F5C\u308B(diagram.inputs), [diagram.inputs]);
|
|
29635
|
+
const \u56F3\u304C\u8A71\u984C\u3092\u63CF\u304F = useMemo(() => {
|
|
29636
|
+
const \u8A71\u984C = laid.topic.trim();
|
|
29637
|
+
if (\u8A71\u984C === "") return false;
|
|
29638
|
+
return laid.nodes.some((n) => drawsFigureTitle(n.kind) && (n.title ?? "").trim() === \u8A71\u984C);
|
|
29639
|
+
}, [laid.nodes, laid.topic]);
|
|
29604
29640
|
return /* @__PURE__ */ jsxs(
|
|
29605
29641
|
"div",
|
|
29606
29642
|
{
|
|
@@ -29625,7 +29661,8 @@ function CdlDiagramView({ diagram, laid: laidProp, hideHeader = false, hideMiniP
|
|
|
29625
29661
|
timeline.goto(idx);
|
|
29626
29662
|
timeline.play();
|
|
29627
29663
|
},
|
|
29628
|
-
headingLevel
|
|
29664
|
+
headingLevel,
|
|
29665
|
+
showTopic: !\u56F3\u304C\u8A71\u984C\u3092\u63CF\u304F
|
|
29629
29666
|
}
|
|
29630
29667
|
),
|
|
29631
29668
|
isInteractive && interactive.panel,
|