@cardenelabs/cdl 0.19.0 → 0.20.1
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 +58 -1
- package/dist/index.cjs +98 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +98 -23
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +98 -23
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +98 -23
- package/dist/react.js.map +1 -1
- package/package.json +1 -1
- package/src/kinds/actor.tsx +8 -4
- package/src/kinds/card.tsx +5 -2
- package/src/kinds/event.tsx +5 -2
- package/src/kinds/function.tsx +5 -2
- package/src/kinds/generic.tsx +6 -2
- package/src/kinds/storage.tsx +6 -2
- package/src/layout/edges.ts +27 -5
- package/src/layout/nodes.ts +54 -4
- package/src/layout/spec.ts +128 -0
package/dist/react.cjs
CHANGED
|
@@ -800,6 +800,54 @@ function buildDiagramAltText(topic, phase) {
|
|
|
800
800
|
else if (body) parts.push(body);
|
|
801
801
|
return parts.join(" ");
|
|
802
802
|
}
|
|
803
|
+
var \u6BB5\u306E\u4F4D\u7F6E = {
|
|
804
|
+
actor: { \u76EE\u5370: { y: 38, size: 18 }, \u540D\u524D: { y: 86, size: 32 }, \u8AAC\u660E: { y: 140, size: 20 } },
|
|
805
|
+
function: { \u76EE\u5370: { y: 38, size: 18 }, \u540D\u524D: { y: 86, size: 24 }, \u8AAC\u660E: { y: 126, size: 20 } },
|
|
806
|
+
event: { \u76EE\u5370: { y: 38, size: 18 }, \u540D\u524D: { y: 88, size: 26 }, \u8AAC\u660E: { y: 128, size: 21 } },
|
|
807
|
+
card: { \u76EE\u5370: { y: 38, size: 18 }, \u540D\u524D: { y: 86, size: 24 }, \u8AAC\u660E: { y: 124, size: 21 } },
|
|
808
|
+
storage: {
|
|
809
|
+
\u76EE\u5370: { y: 38, size: 18 },
|
|
810
|
+
\u540D\u524D: { y: STORAGE_TITLE_BASELINE, size: STORAGE_TITLE_FONT },
|
|
811
|
+
\u8AAC\u660E: { y: 118, size: 20 }
|
|
812
|
+
}
|
|
813
|
+
};
|
|
814
|
+
var \u6C4E\u7528\u306E\u6BB5 = {
|
|
815
|
+
\u76EE\u5370: { y: 32, size: 17 },
|
|
816
|
+
\u540D\u524D: { y: GENERIC_TITLE_TOP, size: GENERIC_TITLE_FONT },
|
|
817
|
+
\u8AAC\u660E: { y: 96, size: 17 }
|
|
818
|
+
};
|
|
819
|
+
function \u6BB5\u3092\u7A4D\u3080\u7BB1\u304B(kind, hasRows) {
|
|
820
|
+
if (hasRows) return false;
|
|
821
|
+
if (kind === void 0) return false;
|
|
822
|
+
if (genericTextCentered(kind, false)) return false;
|
|
823
|
+
return kind in \u6BB5\u306E\u4F4D\u7F6E || rendersRows(kind);
|
|
824
|
+
}
|
|
825
|
+
function \u6BB5\u3092\u5F15\u304F(kind) {
|
|
826
|
+
const \u56FA\u6709 = \u6BB5\u306E\u4F4D\u7F6E[kind];
|
|
827
|
+
if (\u56FA\u6709) return \u56FA\u6709;
|
|
828
|
+
if (rendersRows(kind)) return \u6C4E\u7528\u306E\u6BB5;
|
|
829
|
+
return null;
|
|
830
|
+
}
|
|
831
|
+
function \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052(kind, hasRows = false) {
|
|
832
|
+
if (!\u6BB5\u3092\u7A4D\u3080\u7BB1\u304B(kind, hasRows)) return 0;
|
|
833
|
+
const \u6BB5 = \u6BB5\u3092\u5F15\u304F(kind);
|
|
834
|
+
if (!\u6BB5) return 0;
|
|
835
|
+
const \u4E0A\u3052\u308B = \u6BB5.\u540D\u524D.y - \u6BB5.\u76EE\u5370.y + (\u6BB5.\u76EE\u5370.size - \u6BB5.\u540D\u524D.size) * GLYPH_CAP_RATIO;
|
|
836
|
+
return Math.max(0, Math.round(\u4E0A\u3052\u308B));
|
|
837
|
+
}
|
|
838
|
+
function \u8AAC\u660E\u306A\u3057\u3067\u7E2E\u3080\u91CF(kind, hasRows = false) {
|
|
839
|
+
if (!\u6BB5\u3092\u7A4D\u3080\u7BB1\u304B(kind, hasRows)) return 0;
|
|
840
|
+
const \u6BB5 = \u6BB5\u3092\u5F15\u304F(kind);
|
|
841
|
+
if (!\u6BB5) return 0;
|
|
842
|
+
return Math.max(0, \u6BB5.\u8AAC\u660E.y - \u6BB5.\u540D\u524D.y);
|
|
843
|
+
}
|
|
844
|
+
function \u4E2D\u8EAB\u304B\u3089\u51FA\u3059\u9AD8\u3055(kind, \u6E80\u8F09h, \u4E2D\u8EAB) {
|
|
845
|
+
if (!\u6BB5\u3092\u7A4D\u3080\u7BB1\u304B(kind, \u4E2D\u8EAB.hasRows)) return \u6E80\u8F09h;
|
|
846
|
+
if (\u4E2D\u8EAB.hasValue) return \u6E80\u8F09h;
|
|
847
|
+
const \u5F15\u304F = (\u4E2D\u8EAB.hasEyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052(kind)) + (\u4E2D\u8EAB.hasSubtitle ? 0 : \u8AAC\u660E\u306A\u3057\u3067\u7E2E\u3080\u91CF(kind));
|
|
848
|
+
return Math.max(MIN_BOX_H, \u6E80\u8F09h - \u5F15\u304F);
|
|
849
|
+
}
|
|
850
|
+
var MIN_BOX_H = 44;
|
|
803
851
|
|
|
804
852
|
// src/layout/footer-shape.ts
|
|
805
853
|
var SHAPE_DRAW_UP_EXTENT = {
|
|
@@ -2269,7 +2317,7 @@ function layoutEdges(diag, nodes, lanes = []) {
|
|
|
2269
2317
|
for (const p of list) parallelGroupedIds.add(p.e.id);
|
|
2270
2318
|
}
|
|
2271
2319
|
const distributedInParallel = /* @__PURE__ */ new Set();
|
|
2272
|
-
const FAN_LABEL_GAP =
|
|
2320
|
+
const FAN_LABEL_GAP = CLEARANCE_LABEL_LABEL;
|
|
2273
2321
|
const computeEffectiveSides = (p) => {
|
|
2274
2322
|
if (p.e.routing === "back-detour") {
|
|
2275
2323
|
return { effFromSide: "top", effToSide: "top" };
|
|
@@ -2659,7 +2707,17 @@ function layoutEdges(diag, nodes, lanes = []) {
|
|
|
2659
2707
|
const applyFanDispersion = (list, tracked) => {
|
|
2660
2708
|
if (list.length < 2) return;
|
|
2661
2709
|
const obstaclePatterns = new Set(list.map((r) => detectsBlockingObstacle(r.p)));
|
|
2662
|
-
if (obstaclePatterns.size > 1)
|
|
2710
|
+
if (obstaclePatterns.size > 1) {
|
|
2711
|
+
const \u5F62\u3054\u3068 = /* @__PURE__ */ new Map();
|
|
2712
|
+
for (const r of list) {
|
|
2713
|
+
const \u5F62 = detectsBlockingObstacle(r.p);
|
|
2714
|
+
\u5F62\u3054\u3068.set(\u5F62, [...\u5F62\u3054\u3068.get(\u5F62) ?? [], r]);
|
|
2715
|
+
}
|
|
2716
|
+
for (const \u540C\u3058\u5F62 of \u5F62\u3054\u3068.values()) {
|
|
2717
|
+
if (\u540C\u3058\u5F62.length < list.length) applyFanDispersion(\u540C\u3058\u5F62, tracked);
|
|
2718
|
+
}
|
|
2719
|
+
return;
|
|
2720
|
+
}
|
|
2663
2721
|
if (list.some((r) => r.e.overlay)) return;
|
|
2664
2722
|
const items = list.map((r) => ({
|
|
2665
2723
|
r,
|
|
@@ -3752,7 +3810,8 @@ function autoStorageHeight(n, defaultH) {
|
|
|
3752
3810
|
if (n.h != null) return n.h;
|
|
3753
3811
|
const \u5370\u3042\u308A = n.rowMarks !== void 0;
|
|
3754
3812
|
const \u547C\u3073\u540D\u306E\u5206 = \u5370\u3042\u308A && n.subtitle ? SUBTITLE_ROW_SHIFT : 0;
|
|
3755
|
-
|
|
3813
|
+
const \u7E70\u308A\u4E0A\u3052 = n.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("storage");
|
|
3814
|
+
if (!n.rows || n.rows.length === 0) return 115 + \u547C\u3073\u540D\u306E\u5206 - \u7E70\u308A\u4E0A\u3052;
|
|
3756
3815
|
const \u5FC5\u8981 = requiredRowsHeight("storage", n.rows.length) ?? defaultH;
|
|
3757
3816
|
if (\u5370\u3042\u308A) return \u5FC5\u8981 + \u547C\u3073\u540D\u306E\u5206;
|
|
3758
3817
|
return Math.max(defaultH, \u5FC5\u8981);
|
|
@@ -3763,6 +3822,16 @@ function autoRowsWidth(n, defaultW) {
|
|
|
3763
3822
|
const required = requiredRowsWidth(n.rows, n.kind);
|
|
3764
3823
|
return Math.max(defaultW, required);
|
|
3765
3824
|
}
|
|
3825
|
+
function \u7BB1\u306E\u9AD8\u3055(n, \u65E2\u5B9Ah) {
|
|
3826
|
+
if (n.h != null) return n.h;
|
|
3827
|
+
if (n.kind === "storage") return autoStorageHeight(n, \u65E2\u5B9Ah);
|
|
3828
|
+
return \u4E2D\u8EAB\u304B\u3089\u51FA\u3059\u9AD8\u3055(n.kind, \u65E2\u5B9Ah, {
|
|
3829
|
+
hasEyebrow: Boolean(n.eyebrow),
|
|
3830
|
+
hasSubtitle: Boolean(n.subtitle),
|
|
3831
|
+
hasValue: Boolean(n.value),
|
|
3832
|
+
hasRows: (n.rows?.length ?? 0) > 0
|
|
3833
|
+
});
|
|
3834
|
+
}
|
|
3766
3835
|
function requiredStackGapForEdgeLabels(diag, allStacks) {
|
|
3767
3836
|
const byId = new Map(diag.nodes.map((n) => [n.id, n]));
|
|
3768
3837
|
const rankOf = new Map(allStacks.map((stack, i) => [stack, i]));
|
|
@@ -3792,7 +3861,7 @@ function layoutNodes(diag, lanes) {
|
|
|
3792
3861
|
const rowH = /* @__PURE__ */ new Map();
|
|
3793
3862
|
for (const stack of allStacks) {
|
|
3794
3863
|
const nodesAtStack = diag.nodes.filter((n) => n.stack === stack);
|
|
3795
|
-
const h = Math.max(...nodesAtStack.map((n) =>
|
|
3864
|
+
const h = Math.max(...nodesAtStack.map((n) => \u7BB1\u306E\u9AD8\u3055(n, NODE_SIZE[n.kind].h)));
|
|
3796
3865
|
rowH.set(stack, h);
|
|
3797
3866
|
}
|
|
3798
3867
|
const rowCy = /* @__PURE__ */ new Map();
|
|
@@ -3846,7 +3915,7 @@ function layoutNodes(diag, lanes) {
|
|
|
3846
3915
|
const \u6BB5\u306E\u82AF = rowCy.get(n.stack);
|
|
3847
3916
|
const \u6BB5\u306E\u9AD8\u3055 = rowH.get(n.stack);
|
|
3848
3917
|
const \u81EA\u524D\u306E\u9AD8\u3055 = n.rowMarks !== void 0;
|
|
3849
|
-
const h = n.h ?? (\u81EA\u524D\u306E\u9AD8\u3055 ?
|
|
3918
|
+
const h = n.h ?? (\u81EA\u524D\u306E\u9AD8\u3055 ? \u7BB1\u306E\u9AD8\u3055(n, size.h) : \u6BB5\u306E\u9AD8\u3055);
|
|
3850
3919
|
const cy = \u6BB5\u306E\u82AF;
|
|
3851
3920
|
const w = autoRowsWidth(n, size.w);
|
|
3852
3921
|
out.push({
|
|
@@ -5887,7 +5956,8 @@ function ActorNode({ node, active, value }) {
|
|
|
5887
5956
|
const accent = nodeAccent(node, "var(--cdl-tone-accent, #2d6a8f)");
|
|
5888
5957
|
const x = node.cx - node.w / 2;
|
|
5889
5958
|
const y = node.cy - node.h / 2;
|
|
5890
|
-
const \
|
|
5959
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("actor");
|
|
5960
|
+
const \u540D\u524D = titlePlacement(node, { x: 26, y: 86 - \u7E70\u308A\u4E0A\u3052, size: 32 }, { hasEyebrow: Boolean(node.eyebrow) });
|
|
5891
5961
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x} ${y})`, children: [
|
|
5892
5962
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5893
5963
|
"rect",
|
|
@@ -5922,13 +5992,13 @@ function ActorNode({ node, active, value }) {
|
|
|
5922
5992
|
{
|
|
5923
5993
|
"data-cdl-role": "node-row-divider",
|
|
5924
5994
|
x1: 26,
|
|
5925
|
-
y1: 110,
|
|
5995
|
+
y1: 110 - \u7E70\u308A\u4E0A\u3052,
|
|
5926
5996
|
x2: node.w - 26,
|
|
5927
|
-
y2: 110,
|
|
5997
|
+
y2: 110 - \u7E70\u308A\u4E0A\u3052,
|
|
5928
5998
|
stroke: "var(--cdl-row-divider, #7e848e)"
|
|
5929
5999
|
}
|
|
5930
6000
|
),
|
|
5931
|
-
node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 140, fontSize: 20, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle }),
|
|
6001
|
+
node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 140 - \u7E70\u308A\u4E0A\u3052, fontSize: 20, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle }),
|
|
5932
6002
|
value && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5933
6003
|
"text",
|
|
5934
6004
|
{
|
|
@@ -5953,7 +6023,8 @@ function CardNode({ node, active }) {
|
|
|
5953
6023
|
}
|
|
5954
6024
|
const compact = isCompactBox(node.h);
|
|
5955
6025
|
const \u5C0F\u578B\u306B\u547C\u3073\u540D = compact && Boolean(node.subtitle);
|
|
5956
|
-
const
|
|
6026
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("card");
|
|
6027
|
+
const titleY = compact ? \u5C0F\u578B\u306B\u547C\u3073\u540D ? node.h / 2 - 2 : node.h / 2 + 8 : 86 - \u7E70\u308A\u4E0A\u3052;
|
|
5957
6028
|
const titleX = compact ? node.w / 2 : 26;
|
|
5958
6029
|
const paddingX = compact ? 16 : 52;
|
|
5959
6030
|
const availableW = node.w - paddingX;
|
|
@@ -5990,7 +6061,7 @@ function CardNode({ node, active }) {
|
|
|
5990
6061
|
children: node.title
|
|
5991
6062
|
}
|
|
5992
6063
|
),
|
|
5993
|
-
!compact && node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 124, fontSize: subtitleSize, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle }),
|
|
6064
|
+
!compact && node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 124 - \u7E70\u308A\u4E0A\u3052, fontSize: subtitleSize, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle }),
|
|
5994
6065
|
\u5C0F\u578B\u306B\u547C\u3073\u540D && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5995
6066
|
"text",
|
|
5996
6067
|
{
|
|
@@ -6251,7 +6322,8 @@ function EventNode({
|
|
|
6251
6322
|
const accent = nodeAccent(node, "var(--cdl-tone-success, #4ea36a)");
|
|
6252
6323
|
const x = node.cx - node.w / 2;
|
|
6253
6324
|
const y = node.cy - node.h / 2;
|
|
6254
|
-
const \
|
|
6325
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("event");
|
|
6326
|
+
const \u540D\u524D = titlePlacement(node, { x: 26, y: 88 - \u7E70\u308A\u4E0A\u3052, size: 26 }, { hasEyebrow: Boolean(node.eyebrow) });
|
|
6255
6327
|
const scale = active ? 0.78 + 0.22 * progress : 0.92;
|
|
6256
6328
|
const opacity = active ? 0.5 + 0.5 * progress : 0.65;
|
|
6257
6329
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6293,7 +6365,7 @@ function EventNode({
|
|
|
6293
6365
|
"text",
|
|
6294
6366
|
{
|
|
6295
6367
|
x: 26,
|
|
6296
|
-
y: 128,
|
|
6368
|
+
y: 128 - \u7E70\u308A\u4E0A\u3052,
|
|
6297
6369
|
fontSize: 21,
|
|
6298
6370
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
6299
6371
|
style: { fontFamily: "'JetBrains Mono', monospace" },
|
|
@@ -6309,7 +6381,8 @@ function FunctionNode({ node, active }) {
|
|
|
6309
6381
|
const stroke = nodeAccent(node, active ? "var(--cdl-tone-accent, #2d6a8f)" : "var(--cdl-tone-teal, #2f8770)");
|
|
6310
6382
|
const x = node.cx - node.w / 2;
|
|
6311
6383
|
const y = node.cy - node.h / 2;
|
|
6312
|
-
const \
|
|
6384
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("function");
|
|
6385
|
+
const \u540D\u524D = titlePlacement(node, { x: 26, y: 86 - \u7E70\u308A\u4E0A\u3052, size: 24 }, { hasEyebrow: Boolean(node.eyebrow) });
|
|
6313
6386
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { transform: `translate(${x} ${y})`, children: [
|
|
6314
6387
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6315
6388
|
"rect",
|
|
@@ -6341,7 +6414,7 @@ function FunctionNode({ node, active }) {
|
|
|
6341
6414
|
children: node.title
|
|
6342
6415
|
}
|
|
6343
6416
|
),
|
|
6344
|
-
node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 126, fontSize: 20, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle })
|
|
6417
|
+
node.subtitle && /* @__PURE__ */ jsxRuntime.jsx("text", { x: 26, y: 126 - \u7E70\u308A\u4E0A\u3052, fontSize: 20, fill: "var(--cdl-text-dim, #5a6270)", children: node.subtitle })
|
|
6345
6418
|
] });
|
|
6346
6419
|
}
|
|
6347
6420
|
var ROW_GLYPH_HALF = 7;
|
|
@@ -6376,7 +6449,8 @@ function StorageNode({
|
|
|
6376
6449
|
const accent = nodeAccent(node, "var(--cdl-tone-accent, #2d6a8f)");
|
|
6377
6450
|
const x = node.cx - node.w / 2;
|
|
6378
6451
|
const y = node.cy - node.h / 2;
|
|
6379
|
-
const \
|
|
6452
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow || rows.length > 0 ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052("storage");
|
|
6453
|
+
const \u540D\u524D = titlePlacement(node, { x: 26, y: STORAGE_TITLE_BASELINE - \u7E70\u308A\u4E0A\u3052, size: STORAGE_TITLE_FONT }, { hasEyebrow: Boolean(node.eyebrow) });
|
|
6380
6454
|
const splits = rows.map((r) => splitRow(r));
|
|
6381
6455
|
const leftMaxWidth = splits.reduce((m, s) => Math.max(m, displayWidth(s.left)), 0);
|
|
6382
6456
|
const rightColX = ROW_PAD_X_PX + leftMaxWidth * STORAGE_CHAR_ADVANCE_PX + STORAGE_COL_GAP_PX;
|
|
@@ -6413,7 +6487,7 @@ function StorageNode({
|
|
|
6413
6487
|
{
|
|
6414
6488
|
"data-cdl-role": "node-subtitle",
|
|
6415
6489
|
x: ROW_PAD_X_PX,
|
|
6416
|
-
y: SUBTITLE_BASELINE,
|
|
6490
|
+
y: SUBTITLE_BASELINE - \u7E70\u308A\u4E0A\u3052,
|
|
6417
6491
|
fontSize: SUBTITLE_FONT,
|
|
6418
6492
|
fill: "var(--cdl-text-dim, #5a6270)",
|
|
6419
6493
|
children: node.subtitle
|
|
@@ -6731,9 +6805,10 @@ function GenericNode({
|
|
|
6731
6805
|
const textAnchor = centered ? "middle" : "start";
|
|
6732
6806
|
const textX = centered ? w / 2 : 20;
|
|
6733
6807
|
const cylinderShift = genericTextShift(node.kind);
|
|
6808
|
+
const \u7E70\u308A\u4E0A\u3052 = node.eyebrow || centered ? 0 : \u76EE\u5370\u306A\u3057\u306E\u7E70\u308A\u4E0A\u3052(node.kind, hasRows);
|
|
6734
6809
|
const eyebrowY = centered ? h / 2 - 26 : 32 + cylinderShift;
|
|
6735
|
-
const titleY = genericTitleBaselineY(node.kind, h, hasRows);
|
|
6736
|
-
const subtitleY = centered ? h / 2 + 28 : 96 + cylinderShift;
|
|
6810
|
+
const titleY = genericTitleBaselineY(node.kind, h, hasRows) - \u7E70\u308A\u4E0A\u3052;
|
|
6811
|
+
const subtitleY = centered ? h / 2 + 28 : 96 + cylinderShift - \u7E70\u308A\u4E0A\u3052;
|
|
6737
6812
|
const iconX = centered ? w / 2 + 40 : w - 48;
|
|
6738
6813
|
const iconY = centered ? h / 2 - 44 : 18 + cylinderShift;
|
|
6739
6814
|
const dominantBaseline = centered ? "middle" : void 0;
|
|
@@ -8770,10 +8845,10 @@ function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
|
8770
8845
|
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
8771
8846
|
return [...new \u533A\u5207\u308A(void 0, { granularity: "grapheme" }).segment(text)].map((g) => g.segment);
|
|
8772
8847
|
}
|
|
8773
|
-
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\
|
|
8848
|
+
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\u30552) {
|
|
8774
8849
|
const \u5019\u88DC = \u884C.filter((r, i) => i === 0 || r.text.trim() !== "");
|
|
8775
8850
|
if (\u5019\u88DC.length === 0) return [];
|
|
8776
|
-
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\
|
|
8851
|
+
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\u30552 - \u4E0A\u4E0B\u306E\u4F59\u767D * 2;
|
|
8777
8852
|
const \u9AD8\u3055 = (rs) => rs.reduce((a, r) => a + r.fontSize * \u884C\u9001\u308A\u306E\u6BD4, 0);
|
|
8778
8853
|
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
8779
8854
|
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
@@ -9400,7 +9475,7 @@ function QuadrantNode({
|
|
|
9400
9475
|
function \u7BB1\u306E\u6587\u5B57({
|
|
9401
9476
|
\u884C,
|
|
9402
9477
|
x,
|
|
9403
|
-
\u7BB1\u306E\u9AD8\u3055,
|
|
9478
|
+
\u7BB1\u306E\u9AD8\u3055: \u7BB1\u306E\u9AD8\u30552,
|
|
9404
9479
|
fill,
|
|
9405
9480
|
\u540D\u524D\u306E\u592A\u3055
|
|
9406
9481
|
}) {
|
|
@@ -9409,7 +9484,7 @@ function \u7BB1\u306E\u6587\u5B57({
|
|
|
9409
9484
|
{
|
|
9410
9485
|
"data-cdl-role": r.\u5F79\u5272 === "subtitle" ? "tree-node-subtitle" : void 0,
|
|
9411
9486
|
x,
|
|
9412
|
-
y: \u7BB1\u306E\u9AD8\
|
|
9487
|
+
y: \u7BB1\u306E\u9AD8\u30552 / 2 + r.dy,
|
|
9413
9488
|
fontSize: r.fontSize,
|
|
9414
9489
|
fontWeight: r.\u5F79\u5272 === "title" ? \u540D\u524D\u306E\u592A\u3055 : 500,
|
|
9415
9490
|
textAnchor: "middle",
|