@cardenelabs/cdl 0.12.1 → 0.13.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 +17 -1
- package/dist/index.cjs +13 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +12 -3
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +12 -3
- package/dist/react.js.map +1 -1
- package/dist/{render-C7FKvMqq.d.cts → render-B5JHcUrb.d.cts} +8 -0
- package/dist/{render-C7FKvMqq.d.ts → render-B5JHcUrb.d.ts} +8 -0
- package/package.json +1 -1
- package/src/kinds/mind-map.tsx +4 -2
- package/src/presets.ts +3 -0
- package/src/render/payload-binding.ts +14 -4
- package/src/render/template-fields.ts +1 -0
- package/src/types.ts +8 -0
|
@@ -293,6 +293,14 @@ type GanttTaskPayload = {
|
|
|
293
293
|
type MindBranchPayload = {
|
|
294
294
|
rootId: string;
|
|
295
295
|
rootTitle: string;
|
|
296
|
+
/**
|
|
297
|
+
* 中心の箱の 2 行目に出す補足 (#530)。
|
|
298
|
+
*
|
|
299
|
+
* 枝 (`MindBranchNode`) は元から `subtitle` を持つのに中心だけ渡す口が無く、呼出側が
|
|
300
|
+
* 名前と補足を連結して `rootTitle` に入れていた。 1 行に全部入るため箱幅を超え、
|
|
301
|
+
* 末尾が切られる (実測 = 箱 120px に対し文字 163px)。
|
|
302
|
+
*/
|
|
303
|
+
rootSubtitle?: string;
|
|
296
304
|
branches: MindBranchNode[];
|
|
297
305
|
};
|
|
298
306
|
/** 1 branch node = id + title + parent + optional tone + subtitle */
|
|
@@ -293,6 +293,14 @@ type GanttTaskPayload = {
|
|
|
293
293
|
type MindBranchPayload = {
|
|
294
294
|
rootId: string;
|
|
295
295
|
rootTitle: string;
|
|
296
|
+
/**
|
|
297
|
+
* 中心の箱の 2 行目に出す補足 (#530)。
|
|
298
|
+
*
|
|
299
|
+
* 枝 (`MindBranchNode`) は元から `subtitle` を持つのに中心だけ渡す口が無く、呼出側が
|
|
300
|
+
* 名前と補足を連結して `rootTitle` に入れていた。 1 行に全部入るため箱幅を超え、
|
|
301
|
+
* 末尾が切られる (実測 = 箱 120px に対し文字 163px)。
|
|
302
|
+
*/
|
|
303
|
+
rootSubtitle?: string;
|
|
296
304
|
branches: MindBranchNode[];
|
|
297
305
|
};
|
|
298
306
|
/** 1 branch node = id + title + parent + optional tone + subtitle */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardenelabs/cdl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "CDL (Chainome Diagram Language). Mermaid-like declarative DSL that compiles to animated SVG diagrams. Built for blockchain / Solidity flows, generic enough for sequence / flow / state / ER / topology diagrams.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "cardene777",
|
package/src/kinds/mind-map.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JSX } from "react";
|
|
2
2
|
import { 使える幅, 幅で切る, 箱に積む } from "./box-lines";
|
|
3
|
-
import type { LaidNode, Tone, MindBranchNode } from "../types";
|
|
3
|
+
import type { LaidNode, Tone, MindBranchNode, MindBranchPayload } from "../types";
|
|
4
4
|
import { TONE } from "../render/tone";
|
|
5
5
|
import { resolveMindData } from "../render/payload-binding";
|
|
6
6
|
import { 進みを畳む, 伸ばすdash, 段の伸び } from "./draw-progress";
|
|
@@ -195,7 +195,7 @@ type LayoutEdge = {
|
|
|
195
195
|
};
|
|
196
196
|
|
|
197
197
|
export function computeMindMapLayout(
|
|
198
|
-
mindData:
|
|
198
|
+
mindData: MindBranchPayload,
|
|
199
199
|
cx: number,
|
|
200
200
|
cy: number,
|
|
201
201
|
canvasW: number,
|
|
@@ -209,6 +209,8 @@ export function computeMindMapLayout(
|
|
|
209
209
|
nodes.push({
|
|
210
210
|
id: mindData.rootId,
|
|
211
211
|
title: mindData.rootTitle,
|
|
212
|
+
// 中心も枝と同じく 2 行に積める (#530)。 高さ 52 に 15px + 9px の 2 行が入る
|
|
213
|
+
...(mindData.rootSubtitle === undefined ? {} : { subtitle: mindData.rootSubtitle }),
|
|
212
214
|
x: cx,
|
|
213
215
|
y: cy,
|
|
214
216
|
w: rootW,
|
package/src/presets.ts
CHANGED
|
@@ -1292,6 +1292,8 @@ export type MindMapPreset = {
|
|
|
1292
1292
|
/** 中心 topic ID + label */
|
|
1293
1293
|
rootId: string;
|
|
1294
1294
|
rootTitle: string;
|
|
1295
|
+
/** 中心の箱の 2 行目に出す補足 (#530)。 枝の `subtitle` と同じ扱い */
|
|
1296
|
+
rootSubtitle?: string;
|
|
1295
1297
|
branchWidth?: number;
|
|
1296
1298
|
defaultTone?: Tone;
|
|
1297
1299
|
};
|
|
@@ -1338,6 +1340,7 @@ export function mindMap(preset: MindMapPreset): MindMapBuilder {
|
|
|
1338
1340
|
mindData: {
|
|
1339
1341
|
rootId: preset.rootId,
|
|
1340
1342
|
rootTitle: preset.rootTitle,
|
|
1343
|
+
...(preset.rootSubtitle === undefined ? {} : { rootSubtitle: preset.rootSubtitle }),
|
|
1341
1344
|
branches: branches.map((br) => ({
|
|
1342
1345
|
id: br.id,
|
|
1343
1346
|
title: br.title,
|
|
@@ -252,9 +252,9 @@ export function resolveTreeData(
|
|
|
252
252
|
}
|
|
253
253
|
|
|
254
254
|
/**
|
|
255
|
-
* 放射の名前と補足を解決する。
|
|
255
|
+
* 放射の名前と補足を解決する。 中心と枝の名前 / 補足を見る。
|
|
256
256
|
*
|
|
257
|
-
* 補足を入れた理由は `resolveTreeData` と同じ (#471)。
|
|
257
|
+
* 補足を入れた理由は `resolveTreeData` と同じ (#471 / #530)。
|
|
258
258
|
*/
|
|
259
259
|
export function resolveMindData(
|
|
260
260
|
data: MindBranchPayload,
|
|
@@ -262,10 +262,13 @@ export function resolveMindData(
|
|
|
262
262
|
): ResolvedMindData {
|
|
263
263
|
const 読む =
|
|
264
264
|
data.rootTitle.includes("{") ||
|
|
265
|
+
(data.rootSubtitle?.includes("{") ?? false) ||
|
|
265
266
|
data.branches.some((b) => b.title.includes("{") || (b.subtitle?.includes("{") ?? false));
|
|
266
267
|
if (!読む) return data as ResolvedMindData;
|
|
267
268
|
|
|
268
269
|
const root = resolveBoundText(data.rootTitle, values);
|
|
270
|
+
const rootSubtitle =
|
|
271
|
+
data.rootSubtitle === undefined ? undefined : resolveBoundText(data.rootSubtitle, values);
|
|
269
272
|
const branches = data.branches.map((b) => {
|
|
270
273
|
const title = resolveBoundText(b.title, values);
|
|
271
274
|
const subtitle = b.subtitle === undefined ? undefined : resolveBoundText(b.subtitle, values);
|
|
@@ -276,6 +279,13 @@ export function resolveMindData(
|
|
|
276
279
|
};
|
|
277
280
|
return title.ok && (subtitle?.ok ?? true) ? 解決後 : { ...解決後, unresolved: true as const };
|
|
278
281
|
});
|
|
279
|
-
const 解決後: ResolvedMindData = {
|
|
280
|
-
|
|
282
|
+
const 解決後: ResolvedMindData = {
|
|
283
|
+
...data,
|
|
284
|
+
rootTitle: root.value,
|
|
285
|
+
...(rootSubtitle ? { rootSubtitle: rootSubtitle.value } : {}),
|
|
286
|
+
branches,
|
|
287
|
+
};
|
|
288
|
+
return root.ok && (rootSubtitle?.ok ?? true)
|
|
289
|
+
? 解決後
|
|
290
|
+
: { ...解決後, unresolved: true as const };
|
|
281
291
|
}
|
package/src/types.ts
CHANGED
|
@@ -359,6 +359,14 @@ export type GanttTaskPayload = {
|
|
|
359
359
|
export type MindBranchPayload = {
|
|
360
360
|
rootId: string;
|
|
361
361
|
rootTitle: string;
|
|
362
|
+
/**
|
|
363
|
+
* 中心の箱の 2 行目に出す補足 (#530)。
|
|
364
|
+
*
|
|
365
|
+
* 枝 (`MindBranchNode`) は元から `subtitle` を持つのに中心だけ渡す口が無く、呼出側が
|
|
366
|
+
* 名前と補足を連結して `rootTitle` に入れていた。 1 行に全部入るため箱幅を超え、
|
|
367
|
+
* 末尾が切られる (実測 = 箱 120px に対し文字 163px)。
|
|
368
|
+
*/
|
|
369
|
+
rootSubtitle?: string;
|
|
362
370
|
branches: MindBranchNode[];
|
|
363
371
|
};
|
|
364
372
|
|