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