@retikz/core 0.1.0-alpha.4 → 0.1.0-beta.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/dist/es/compile/compile.d.ts +23 -13
- package/dist/es/compile/compile.d.ts.map +1 -1
- package/dist/es/compile/compile.js +44 -25
- package/dist/es/compile/index.d.ts +1 -1
- package/dist/es/compile/index.d.ts.map +1 -1
- package/dist/es/compile/node.d.ts +40 -59
- package/dist/es/compile/node.d.ts.map +1 -1
- package/dist/es/compile/node.js +51 -43
- package/dist/es/compile/parseTarget.d.ts +3 -8
- package/dist/es/compile/parseTarget.d.ts.map +1 -1
- package/dist/es/compile/parseTarget.js +7 -19
- package/dist/es/compile/path/anchor.d.ts +19 -0
- package/dist/es/compile/path/anchor.d.ts.map +1 -0
- package/dist/es/compile/path/anchor.js +54 -0
- package/dist/es/compile/path/index.d.ts +24 -0
- package/dist/es/compile/path/index.d.ts.map +1 -0
- package/dist/es/compile/path/index.js +308 -0
- package/dist/es/compile/path/label.d.ts +18 -0
- package/dist/es/compile/path/label.d.ts.map +1 -0
- package/dist/es/compile/path/label.js +102 -0
- package/dist/es/compile/path/relative.d.ts +8 -0
- package/dist/es/compile/path/relative.d.ts.map +1 -0
- package/dist/es/compile/path/relative.js +48 -0
- package/dist/es/compile/path/shrink.d.ts +24 -0
- package/dist/es/compile/path/shrink.d.ts.map +1 -0
- package/dist/es/compile/path/shrink.js +136 -0
- package/dist/es/compile/path/split.d.ts +15 -0
- package/dist/es/compile/path/split.d.ts.map +1 -0
- package/dist/es/compile/path/split.js +46 -0
- package/dist/es/compile/position.d.ts +4 -8
- package/dist/es/compile/position.d.ts.map +1 -1
- package/dist/es/compile/position.js +10 -10
- package/dist/es/compile/text-metrics.d.ts +6 -5
- package/dist/es/compile/text-metrics.d.ts.map +1 -1
- package/dist/es/compile/text-metrics.js +11 -5
- package/dist/es/compile/view-box.d.ts +1 -4
- package/dist/es/compile/view-box.d.ts.map +1 -1
- package/dist/es/compile/view-box.js +1 -4
- package/dist/es/geometry/_transform.d.ts +21 -0
- package/dist/es/geometry/_transform.d.ts.map +1 -0
- package/dist/es/geometry/_transform.js +27 -0
- package/dist/es/geometry/arc.d.ts +3 -28
- package/dist/es/geometry/arc.d.ts.map +1 -1
- package/dist/es/geometry/arc.js +4 -31
- package/dist/es/geometry/bend.d.ts +2 -13
- package/dist/es/geometry/bend.d.ts.map +1 -1
- package/dist/es/geometry/bend.js +2 -13
- package/dist/es/geometry/circle.d.ts +6 -15
- package/dist/es/geometry/circle.d.ts.map +1 -1
- package/dist/es/geometry/circle.js +2 -20
- package/dist/es/geometry/diamond.d.ts +10 -26
- package/dist/es/geometry/diamond.d.ts.map +1 -1
- package/dist/es/geometry/diamond.js +5 -30
- package/dist/es/geometry/ellipse.d.ts +10 -17
- package/dist/es/geometry/ellipse.d.ts.map +1 -1
- package/dist/es/geometry/ellipse.js +5 -24
- package/dist/es/geometry/point.d.ts +8 -9
- package/dist/es/geometry/point.d.ts.map +1 -1
- package/dist/es/geometry/point.js +8 -9
- package/dist/es/geometry/polar.d.ts +12 -21
- package/dist/es/geometry/polar.d.ts.map +1 -1
- package/dist/es/geometry/polar.js +8 -19
- package/dist/es/geometry/rect.d.ts +8 -32
- package/dist/es/geometry/rect.d.ts.map +1 -1
- package/dist/es/geometry/rect.js +6 -49
- package/dist/es/geometry/segment.d.ts +15 -18
- package/dist/es/geometry/segment.d.ts.map +1 -1
- package/dist/es/geometry/segment.js +9 -16
- package/dist/es/index.d.ts +13 -13
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/index.js +7 -4
- package/dist/es/ir/coordinate.d.ts +18 -10
- package/dist/es/ir/coordinate.d.ts.map +1 -1
- package/dist/es/ir/coordinate.js +6 -11
- package/dist/es/ir/font.d.ts +21 -0
- package/dist/es/ir/font.d.ts.map +1 -0
- package/dist/es/ir/font.js +15 -0
- package/dist/es/ir/index.d.ts +2 -0
- package/dist/es/ir/index.d.ts.map +1 -1
- package/dist/es/ir/node.d.ts +51 -181
- package/dist/es/ir/node.d.ts.map +1 -1
- package/dist/es/ir/node.js +15 -70
- package/dist/es/ir/path/arrow.d.ts +210 -12
- package/dist/es/ir/path/arrow.d.ts.map +1 -1
- package/dist/es/ir/path/arrow.js +39 -12
- package/dist/es/ir/path/path.d.ts +477 -153
- package/dist/es/ir/path/path.d.ts.map +1 -1
- package/dist/es/ir/path/path.js +6 -6
- package/dist/es/ir/path/step.d.ts +395 -223
- package/dist/es/ir/path/step.d.ts.map +1 -1
- package/dist/es/ir/path/step.js +21 -22
- package/dist/es/ir/path/target.d.ts +25 -16
- package/dist/es/ir/path/target.d.ts.map +1 -1
- package/dist/es/ir/path/target.js +8 -6
- package/dist/es/ir/position/at-position.d.ts +4 -11
- package/dist/es/ir/position/at-position.d.ts.map +1 -1
- package/dist/es/ir/position/at-position.js +2 -9
- package/dist/es/ir/position/index.d.ts +1 -0
- package/dist/es/ir/position/index.d.ts.map +1 -1
- package/dist/es/ir/position/offset-position.d.ts +14 -0
- package/dist/es/ir/position/offset-position.d.ts.map +1 -0
- package/dist/es/ir/position/offset-position.js +14 -0
- package/dist/es/ir/position/polar-position.d.ts +1 -4
- package/dist/es/ir/position/polar-position.d.ts.map +1 -1
- package/dist/es/ir/position/polar-position.js +3 -6
- package/dist/es/ir/position/position.d.ts.map +1 -1
- package/dist/es/ir/position/position.js +1 -1
- package/dist/es/ir/scene.d.ts +1236 -422
- package/dist/es/ir/scene.d.ts.map +1 -1
- package/dist/es/ir/text.d.ts +96 -0
- package/dist/es/ir/text.d.ts.map +1 -0
- package/dist/es/ir/text.js +20 -0
- package/dist/es/parsers/parseTargetSugar.d.ts +4 -0
- package/dist/es/parsers/parseTargetSugar.d.ts.map +1 -1
- package/dist/es/parsers/parseTargetSugar.js +7 -19
- package/dist/es/parsers/parseWay.d.ts +26 -118
- package/dist/es/parsers/parseWay.d.ts.map +1 -1
- package/dist/es/parsers/parseWay.js +19 -61
- package/dist/es/primitive/ellipse.d.ts +4 -14
- package/dist/es/primitive/ellipse.d.ts.map +1 -1
- package/dist/es/primitive/group.d.ts +37 -3
- package/dist/es/primitive/group.d.ts.map +1 -1
- package/dist/es/primitive/path.d.ts +107 -7
- package/dist/es/primitive/path.d.ts.map +1 -1
- package/dist/es/primitive/rect.d.ts +2 -2
- package/dist/es/primitive/rect.d.ts.map +1 -1
- package/dist/es/primitive/scene.d.ts +2 -4
- package/dist/es/primitive/scene.d.ts.map +1 -1
- package/dist/es/primitive/text.d.ts +16 -32
- package/dist/es/primitive/text.d.ts.map +1 -1
- package/dist/es/primitive/view-box.d.ts +1 -1
- package/dist/es/primitive/view-box.d.ts.map +1 -1
- package/dist/es/types.d.ts +8 -0
- package/dist/es/types.d.ts.map +1 -1
- package/dist/lib/compile/compile.cjs +44 -25
- package/dist/lib/compile/compile.d.ts +23 -13
- package/dist/lib/compile/compile.d.ts.map +1 -1
- package/dist/lib/compile/index.d.ts +1 -1
- package/dist/lib/compile/index.d.ts.map +1 -1
- package/dist/lib/compile/node.cjs +51 -43
- package/dist/lib/compile/node.d.ts +40 -59
- package/dist/lib/compile/node.d.ts.map +1 -1
- package/dist/lib/compile/parseTarget.cjs +7 -19
- package/dist/lib/compile/parseTarget.d.ts +3 -8
- package/dist/lib/compile/parseTarget.d.ts.map +1 -1
- package/dist/lib/compile/path/anchor.cjs +58 -0
- package/dist/lib/compile/path/anchor.d.ts +19 -0
- package/dist/lib/compile/path/anchor.d.ts.map +1 -0
- package/dist/lib/compile/path/index.cjs +308 -0
- package/dist/lib/compile/path/index.d.ts +24 -0
- package/dist/lib/compile/path/index.d.ts.map +1 -0
- package/dist/lib/compile/path/label.cjs +103 -0
- package/dist/lib/compile/path/label.d.ts +18 -0
- package/dist/lib/compile/path/label.d.ts.map +1 -0
- package/dist/lib/compile/path/relative.cjs +48 -0
- package/dist/lib/compile/path/relative.d.ts +8 -0
- package/dist/lib/compile/path/relative.d.ts.map +1 -0
- package/dist/lib/compile/path/shrink.cjs +138 -0
- package/dist/lib/compile/path/shrink.d.ts +24 -0
- package/dist/lib/compile/path/shrink.d.ts.map +1 -0
- package/dist/lib/compile/path/split.cjs +46 -0
- package/dist/lib/compile/path/split.d.ts +15 -0
- package/dist/lib/compile/path/split.d.ts.map +1 -0
- package/dist/lib/compile/position.cjs +10 -10
- package/dist/lib/compile/position.d.ts +4 -8
- package/dist/lib/compile/position.d.ts.map +1 -1
- package/dist/lib/compile/text-metrics.cjs +11 -5
- package/dist/lib/compile/text-metrics.d.ts +6 -5
- package/dist/lib/compile/text-metrics.d.ts.map +1 -1
- package/dist/lib/compile/view-box.cjs +1 -4
- package/dist/lib/compile/view-box.d.ts +1 -4
- package/dist/lib/compile/view-box.d.ts.map +1 -1
- package/dist/lib/geometry/_transform.cjs +28 -0
- package/dist/lib/geometry/_transform.d.ts +21 -0
- package/dist/lib/geometry/_transform.d.ts.map +1 -0
- package/dist/lib/geometry/arc.cjs +3 -31
- package/dist/lib/geometry/arc.d.ts +3 -28
- package/dist/lib/geometry/arc.d.ts.map +1 -1
- package/dist/lib/geometry/bend.cjs +2 -13
- package/dist/lib/geometry/bend.d.ts +2 -13
- package/dist/lib/geometry/bend.d.ts.map +1 -1
- package/dist/lib/geometry/circle.cjs +6 -24
- package/dist/lib/geometry/circle.d.ts +6 -15
- package/dist/lib/geometry/circle.d.ts.map +1 -1
- package/dist/lib/geometry/diamond.cjs +9 -34
- package/dist/lib/geometry/diamond.d.ts +10 -26
- package/dist/lib/geometry/diamond.d.ts.map +1 -1
- package/dist/lib/geometry/ellipse.cjs +9 -28
- package/dist/lib/geometry/ellipse.d.ts +10 -17
- package/dist/lib/geometry/ellipse.d.ts.map +1 -1
- package/dist/lib/geometry/point.cjs +8 -9
- package/dist/lib/geometry/point.d.ts +8 -9
- package/dist/lib/geometry/point.d.ts.map +1 -1
- package/dist/lib/geometry/polar.cjs +8 -19
- package/dist/lib/geometry/polar.d.ts +12 -21
- package/dist/lib/geometry/polar.d.ts.map +1 -1
- package/dist/lib/geometry/rect.cjs +10 -53
- package/dist/lib/geometry/rect.d.ts +8 -32
- package/dist/lib/geometry/rect.d.ts.map +1 -1
- package/dist/lib/geometry/segment.cjs +9 -16
- package/dist/lib/geometry/segment.d.ts +15 -18
- package/dist/lib/geometry/segment.d.ts.map +1 -1
- package/dist/lib/index.cjs +14 -5
- package/dist/lib/index.d.ts +13 -13
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/ir/coordinate.cjs +6 -11
- package/dist/lib/ir/coordinate.d.ts +18 -10
- package/dist/lib/ir/coordinate.d.ts.map +1 -1
- package/dist/lib/ir/font.cjs +15 -0
- package/dist/lib/ir/font.d.ts +21 -0
- package/dist/lib/ir/font.d.ts.map +1 -0
- package/dist/lib/ir/index.d.ts +2 -0
- package/dist/lib/ir/index.d.ts.map +1 -1
- package/dist/lib/ir/node.cjs +16 -74
- package/dist/lib/ir/node.d.ts +51 -181
- package/dist/lib/ir/node.d.ts.map +1 -1
- package/dist/lib/ir/path/arrow.cjs +43 -11
- package/dist/lib/ir/path/arrow.d.ts +210 -12
- package/dist/lib/ir/path/arrow.d.ts.map +1 -1
- package/dist/lib/ir/path/path.cjs +5 -5
- package/dist/lib/ir/path/path.d.ts +477 -153
- package/dist/lib/ir/path/path.d.ts.map +1 -1
- package/dist/lib/ir/path/step.cjs +21 -22
- package/dist/lib/ir/path/step.d.ts +395 -223
- package/dist/lib/ir/path/step.d.ts.map +1 -1
- package/dist/lib/ir/path/target.cjs +9 -7
- package/dist/lib/ir/path/target.d.ts +25 -16
- package/dist/lib/ir/path/target.d.ts.map +1 -1
- package/dist/lib/ir/position/at-position.cjs +2 -9
- package/dist/lib/ir/position/at-position.d.ts +4 -11
- package/dist/lib/ir/position/at-position.d.ts.map +1 -1
- package/dist/lib/ir/position/index.d.ts +1 -0
- package/dist/lib/ir/position/index.d.ts.map +1 -1
- package/dist/lib/ir/position/offset-position.cjs +14 -0
- package/dist/lib/ir/position/offset-position.d.ts +14 -0
- package/dist/lib/ir/position/offset-position.d.ts.map +1 -0
- package/dist/lib/ir/position/polar-position.cjs +3 -6
- package/dist/lib/ir/position/polar-position.d.ts +1 -4
- package/dist/lib/ir/position/polar-position.d.ts.map +1 -1
- package/dist/lib/ir/position/position.cjs +1 -1
- package/dist/lib/ir/position/position.d.ts.map +1 -1
- package/dist/lib/ir/scene.d.ts +1236 -422
- package/dist/lib/ir/scene.d.ts.map +1 -1
- package/dist/lib/ir/text.cjs +21 -0
- package/dist/lib/ir/text.d.ts +96 -0
- package/dist/lib/ir/text.d.ts.map +1 -0
- package/dist/lib/parsers/parseTargetSugar.cjs +7 -19
- package/dist/lib/parsers/parseTargetSugar.d.ts +4 -0
- package/dist/lib/parsers/parseTargetSugar.d.ts.map +1 -1
- package/dist/lib/parsers/parseWay.cjs +19 -61
- package/dist/lib/parsers/parseWay.d.ts +26 -118
- package/dist/lib/parsers/parseWay.d.ts.map +1 -1
- package/dist/lib/primitive/ellipse.d.ts +4 -14
- package/dist/lib/primitive/ellipse.d.ts.map +1 -1
- package/dist/lib/primitive/group.d.ts +37 -3
- package/dist/lib/primitive/group.d.ts.map +1 -1
- package/dist/lib/primitive/path.d.ts +107 -7
- package/dist/lib/primitive/path.d.ts.map +1 -1
- package/dist/lib/primitive/rect.d.ts +2 -2
- package/dist/lib/primitive/rect.d.ts.map +1 -1
- package/dist/lib/primitive/scene.d.ts +2 -4
- package/dist/lib/primitive/scene.d.ts.map +1 -1
- package/dist/lib/primitive/text.d.ts +16 -32
- package/dist/lib/primitive/text.d.ts.map +1 -1
- package/dist/lib/primitive/view-box.d.ts +1 -1
- package/dist/lib/primitive/view-box.d.ts.map +1 -1
- package/dist/lib/types.d.ts +8 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +13 -4
- package/dist/es/compile/path.d.ts +0 -30
- package/dist/es/compile/path.d.ts.map +0 -1
- package/dist/es/compile/path.js +0 -617
- package/dist/lib/compile/path.cjs +0 -617
- package/dist/lib/compile/path.d.ts +0 -30
- package/dist/lib/compile/path.d.ts.map +0 -1
package/dist/es/ir/node.d.ts
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { ValueOf } from '../types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - `rectangle`:矩形(默认;UML 类、流程图常规节点)
|
|
8
|
-
* - `circle`:圆形(流程图起止、状态机)
|
|
9
|
-
* - `ellipse`:椭圆(状态机、集合图)
|
|
10
|
-
* - `diamond`:菱形(流程图判定)
|
|
11
|
-
*
|
|
12
|
-
* 每个 shape 的几何语义:node 的视觉边界包住"text 矩形 + padding"——
|
|
13
|
-
* - rectangle: 视觉 rect = text rect
|
|
14
|
-
* - circle: 外接圆,r = √(innerHalfW² + innerHalfH²)
|
|
15
|
-
* - ellipse: 外接椭圆,rx = innerHalfW×√2、ry = innerHalfH×√2
|
|
16
|
-
* - diamond: 外接菱形,halfA = 2×innerHalfW、halfB = 2×innerHalfH
|
|
4
|
+
* 节点形状常量(用 const + ValueOf 派生,不用 TS enum)
|
|
5
|
+
* @description rectangle 默认;circle/ellipse/diamond 几何语义:node 视觉边界包"text 矩形 + padding";rectangle: 视觉=text;circle: r=√(innerHalfW²+innerHalfH²);ellipse: rx=innerHalfW×√2,ry=innerHalfH×√2;diamond: halfA=2×innerHalfW,halfB=2×innerHalfH
|
|
17
6
|
*/
|
|
18
7
|
export declare const NODE_SHAPES: {
|
|
19
8
|
readonly rectangle: "rectangle";
|
|
@@ -21,152 +10,18 @@ export declare const NODE_SHAPES: {
|
|
|
21
10
|
readonly ellipse: "ellipse";
|
|
22
11
|
readonly diamond: "diamond";
|
|
23
12
|
};
|
|
24
|
-
/**
|
|
13
|
+
/** 节点形状字面量类型 */
|
|
25
14
|
export type NodeShape = ValueOf<typeof NODE_SHAPES>;
|
|
26
|
-
/**
|
|
27
|
-
* 节点字体规格——family / size / weight / style 全部可选;
|
|
28
|
-
* 单字段透传到 SVG `<text>` 的 `font-*` 属性 / `font-size`。
|
|
29
|
-
*
|
|
30
|
-
* 取代 alpha.1 的标量 `fontSize` 字段(已删)。
|
|
31
|
-
*/
|
|
32
|
-
export declare const FontSchema: z.ZodObject<{
|
|
33
|
-
family: z.ZodOptional<z.ZodString>;
|
|
34
|
-
size: z.ZodOptional<z.ZodNumber>;
|
|
35
|
-
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
36
|
-
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
37
|
-
}, "strip", z.ZodTypeAny, {
|
|
38
|
-
family?: string | undefined;
|
|
39
|
-
size?: number | undefined;
|
|
40
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
41
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
42
|
-
}, {
|
|
43
|
-
family?: string | undefined;
|
|
44
|
-
size?: number | undefined;
|
|
45
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
46
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
47
|
-
}>;
|
|
48
|
-
/** 节点字体规格(IR 层)——所有字段可选,编译期解析默认值 */
|
|
49
|
-
export type IRFont = z.infer<typeof FontSchema>;
|
|
50
|
-
/**
|
|
51
|
-
* 单行文本规格——纯字符串走块级默认样式;对象形式可对该行覆盖 fill / opacity / font。
|
|
52
|
-
*
|
|
53
|
-
* 行级覆盖只生效于本行的 `<tspan>`:
|
|
54
|
-
* - `fill`:仅这一行颜色
|
|
55
|
-
* - `opacity`:仅这一行 0~1 透明度
|
|
56
|
-
* - `font`:family / size / weight / style 任意子集;未填字段继承块级 font
|
|
57
|
-
*
|
|
58
|
-
* 块级 `align` / `lineHeight` 不可被行覆盖(多行块整体属性)。
|
|
59
|
-
*/
|
|
60
|
-
export declare const LineSpecSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
61
|
-
text: z.ZodString;
|
|
62
|
-
fill: z.ZodOptional<z.ZodString>;
|
|
63
|
-
opacity: z.ZodOptional<z.ZodNumber>;
|
|
64
|
-
font: z.ZodOptional<z.ZodObject<{
|
|
65
|
-
family: z.ZodOptional<z.ZodString>;
|
|
66
|
-
size: z.ZodOptional<z.ZodNumber>;
|
|
67
|
-
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
68
|
-
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
69
|
-
}, "strip", z.ZodTypeAny, {
|
|
70
|
-
family?: string | undefined;
|
|
71
|
-
size?: number | undefined;
|
|
72
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
73
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
74
|
-
}, {
|
|
75
|
-
family?: string | undefined;
|
|
76
|
-
size?: number | undefined;
|
|
77
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
78
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
79
|
-
}>>;
|
|
80
|
-
}, "strip", z.ZodTypeAny, {
|
|
81
|
-
text: string;
|
|
82
|
-
fill?: string | undefined;
|
|
83
|
-
opacity?: number | undefined;
|
|
84
|
-
font?: {
|
|
85
|
-
family?: string | undefined;
|
|
86
|
-
size?: number | undefined;
|
|
87
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
88
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
89
|
-
} | undefined;
|
|
90
|
-
}, {
|
|
91
|
-
text: string;
|
|
92
|
-
fill?: string | undefined;
|
|
93
|
-
opacity?: number | undefined;
|
|
94
|
-
font?: {
|
|
95
|
-
family?: string | undefined;
|
|
96
|
-
size?: number | undefined;
|
|
97
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
98
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
99
|
-
} | undefined;
|
|
100
|
-
}>]>;
|
|
101
|
-
/** 行规格 IR 类型(string 或对象) */
|
|
102
|
-
export type IRLineSpec = z.infer<typeof LineSpecSchema>;
|
|
103
|
-
/**
|
|
104
|
-
* 节点文本——单行字符串或非空多行数组(每元素一个 LineSpec):
|
|
105
|
-
* - `'Hello'` 等价于 `[{ text: 'Hello' }]`,按一行渲染
|
|
106
|
-
* - `['Line 1', 'Line 2']` 两行无样式覆盖
|
|
107
|
-
* - `[{ text: 'Heading', fill: 'red', font: { weight: 'bold' } }, 'body']` 混排
|
|
108
|
-
*
|
|
109
|
-
* 选 `Array<LineSpec>` 而非 `'\n'` 字符串:JSON 友好(无 escape);行级覆盖天然落字段。
|
|
110
|
-
*/
|
|
111
|
-
export declare const NodeTextSchema: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
112
|
-
text: z.ZodString;
|
|
113
|
-
fill: z.ZodOptional<z.ZodString>;
|
|
114
|
-
opacity: z.ZodOptional<z.ZodNumber>;
|
|
115
|
-
font: z.ZodOptional<z.ZodObject<{
|
|
116
|
-
family: z.ZodOptional<z.ZodString>;
|
|
117
|
-
size: z.ZodOptional<z.ZodNumber>;
|
|
118
|
-
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
119
|
-
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
120
|
-
}, "strip", z.ZodTypeAny, {
|
|
121
|
-
family?: string | undefined;
|
|
122
|
-
size?: number | undefined;
|
|
123
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
124
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
125
|
-
}, {
|
|
126
|
-
family?: string | undefined;
|
|
127
|
-
size?: number | undefined;
|
|
128
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
129
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
130
|
-
}>>;
|
|
131
|
-
}, "strip", z.ZodTypeAny, {
|
|
132
|
-
text: string;
|
|
133
|
-
fill?: string | undefined;
|
|
134
|
-
opacity?: number | undefined;
|
|
135
|
-
font?: {
|
|
136
|
-
family?: string | undefined;
|
|
137
|
-
size?: number | undefined;
|
|
138
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
139
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
140
|
-
} | undefined;
|
|
141
|
-
}, {
|
|
142
|
-
text: string;
|
|
143
|
-
fill?: string | undefined;
|
|
144
|
-
opacity?: number | undefined;
|
|
145
|
-
font?: {
|
|
146
|
-
family?: string | undefined;
|
|
147
|
-
size?: number | undefined;
|
|
148
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
149
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
150
|
-
} | undefined;
|
|
151
|
-
}>]>, "many">]>;
|
|
152
|
-
/** 节点文本对齐(多行内文本对齐)——TikZ `align=` 同义词 */
|
|
15
|
+
/** 节点文本对齐(TikZ `align=` 同义) */
|
|
153
16
|
export declare const NODE_TEXT_ALIGNS: {
|
|
154
17
|
readonly left: "left";
|
|
155
18
|
readonly center: "center";
|
|
156
19
|
readonly right: "right";
|
|
157
20
|
};
|
|
158
|
-
/** 多行文本对齐字面量类型 */
|
|
159
21
|
export type NodeTextAlign = ValueOf<typeof NODE_TEXT_ALIGNS>;
|
|
160
22
|
/**
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
* 一个 Node 可挂多个 label(数组形态);label 自身不参与 viewBox(视觉外延少时可接受)。
|
|
164
|
-
*
|
|
165
|
-
* `position` 接受两种形态:
|
|
166
|
-
* - 8 方向枚举(`above` / `right` / `above-left` ...):标签贴在 node 该方向边界外
|
|
167
|
-
* - 数字角度:以 node 中心为原点,按该角度方向投射;约定与 polar 一致(0° = +x,90° = +y 屏幕下方)
|
|
168
|
-
*
|
|
169
|
-
* 默认 `position = 'above'`,`distance = 4`(user units,标签与 node 边界的距离)。
|
|
23
|
+
* 节点附属标签 label(TikZ `[label=above:foo]` 同义)
|
|
24
|
+
* @description 可挂多个;label 不参与 viewBox。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
|
|
170
25
|
*/
|
|
171
26
|
export declare const NodeLabelSchema: z.ZodObject<{
|
|
172
27
|
text: z.ZodString;
|
|
@@ -202,7 +57,6 @@ export declare const NodeLabelSchema: z.ZodObject<{
|
|
|
202
57
|
}, "strip", z.ZodTypeAny, {
|
|
203
58
|
text: string;
|
|
204
59
|
distance?: number | undefined;
|
|
205
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
206
60
|
opacity?: number | undefined;
|
|
207
61
|
font?: {
|
|
208
62
|
family?: string | undefined;
|
|
@@ -210,11 +64,11 @@ export declare const NodeLabelSchema: z.ZodObject<{
|
|
|
210
64
|
weight?: number | "normal" | "bold" | undefined;
|
|
211
65
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
212
66
|
} | undefined;
|
|
67
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
213
68
|
textColor?: string | undefined;
|
|
214
69
|
}, {
|
|
215
70
|
text: string;
|
|
216
71
|
distance?: number | undefined;
|
|
217
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
218
72
|
opacity?: number | undefined;
|
|
219
73
|
font?: {
|
|
220
74
|
family?: string | undefined;
|
|
@@ -222,9 +76,10 @@ export declare const NodeLabelSchema: z.ZodObject<{
|
|
|
222
76
|
weight?: number | "normal" | "bold" | undefined;
|
|
223
77
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
224
78
|
} | undefined;
|
|
79
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
225
80
|
textColor?: string | undefined;
|
|
226
81
|
}>;
|
|
227
|
-
/** Node label IR
|
|
82
|
+
/** Node label IR 类型 */
|
|
228
83
|
export type IRNodeLabel = z.infer<typeof NodeLabelSchema>;
|
|
229
84
|
export declare const NodeSchema: z.ZodObject<{
|
|
230
85
|
type: z.ZodLiteral<"node">;
|
|
@@ -256,6 +111,15 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
256
111
|
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
257
112
|
of: string;
|
|
258
113
|
distance?: number | undefined;
|
|
114
|
+
}>, z.ZodObject<{
|
|
115
|
+
of: z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodType<import('./position').PolarPosition, z.ZodTypeDef, import('./position').PolarPosition>]>;
|
|
116
|
+
offset: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
117
|
+
}, "strip", z.ZodTypeAny, {
|
|
118
|
+
of: string | [number, number] | import('./position').PolarPosition;
|
|
119
|
+
offset: [number, number];
|
|
120
|
+
}, {
|
|
121
|
+
of: string | [number, number] | import('./position').PolarPosition;
|
|
122
|
+
offset: [number, number];
|
|
259
123
|
}>]>;
|
|
260
124
|
rotate: z.ZodOptional<z.ZodNumber>;
|
|
261
125
|
text: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
@@ -377,7 +241,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
377
241
|
}, "strip", z.ZodTypeAny, {
|
|
378
242
|
text: string;
|
|
379
243
|
distance?: number | undefined;
|
|
380
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
381
244
|
opacity?: number | undefined;
|
|
382
245
|
font?: {
|
|
383
246
|
family?: string | undefined;
|
|
@@ -385,11 +248,11 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
385
248
|
weight?: number | "normal" | "bold" | undefined;
|
|
386
249
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
387
250
|
} | undefined;
|
|
251
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
388
252
|
textColor?: string | undefined;
|
|
389
253
|
}, {
|
|
390
254
|
text: string;
|
|
391
255
|
distance?: number | undefined;
|
|
392
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
393
256
|
opacity?: number | undefined;
|
|
394
257
|
font?: {
|
|
395
258
|
family?: string | undefined;
|
|
@@ -397,6 +260,7 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
397
260
|
weight?: number | "normal" | "bold" | undefined;
|
|
398
261
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
399
262
|
} | undefined;
|
|
263
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
400
264
|
textColor?: string | undefined;
|
|
401
265
|
}>, z.ZodArray<z.ZodObject<{
|
|
402
266
|
text: z.ZodString;
|
|
@@ -432,7 +296,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
432
296
|
}, "strip", z.ZodTypeAny, {
|
|
433
297
|
text: string;
|
|
434
298
|
distance?: number | undefined;
|
|
435
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
436
299
|
opacity?: number | undefined;
|
|
437
300
|
font?: {
|
|
438
301
|
family?: string | undefined;
|
|
@@ -440,11 +303,11 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
440
303
|
weight?: number | "normal" | "bold" | undefined;
|
|
441
304
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
442
305
|
} | undefined;
|
|
306
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
443
307
|
textColor?: string | undefined;
|
|
444
308
|
}, {
|
|
445
309
|
text: string;
|
|
446
310
|
distance?: number | undefined;
|
|
447
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
448
311
|
opacity?: number | undefined;
|
|
449
312
|
font?: {
|
|
450
313
|
family?: string | undefined;
|
|
@@ -452,6 +315,7 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
452
315
|
weight?: number | "normal" | "bold" | undefined;
|
|
453
316
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
454
317
|
} | undefined;
|
|
318
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
455
319
|
textColor?: string | undefined;
|
|
456
320
|
}>, "many">]>>;
|
|
457
321
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -460,6 +324,9 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
460
324
|
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
461
325
|
of: string;
|
|
462
326
|
distance?: number | undefined;
|
|
327
|
+
} | {
|
|
328
|
+
of: string | [number, number] | import('./position').PolarPosition;
|
|
329
|
+
offset: [number, number];
|
|
463
330
|
};
|
|
464
331
|
fill?: string | undefined;
|
|
465
332
|
text?: string | (string | {
|
|
@@ -473,10 +340,18 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
473
340
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
474
341
|
} | undefined;
|
|
475
342
|
})[] | undefined;
|
|
343
|
+
opacity?: number | undefined;
|
|
344
|
+
font?: {
|
|
345
|
+
family?: string | undefined;
|
|
346
|
+
size?: number | undefined;
|
|
347
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
348
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
349
|
+
} | undefined;
|
|
350
|
+
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
351
|
+
scale?: number | undefined;
|
|
476
352
|
label?: {
|
|
477
353
|
text: string;
|
|
478
354
|
distance?: number | undefined;
|
|
479
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
480
355
|
opacity?: number | undefined;
|
|
481
356
|
font?: {
|
|
482
357
|
family?: string | undefined;
|
|
@@ -484,11 +359,11 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
484
359
|
weight?: number | "normal" | "bold" | undefined;
|
|
485
360
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
486
361
|
} | undefined;
|
|
362
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
487
363
|
textColor?: string | undefined;
|
|
488
364
|
} | {
|
|
489
365
|
text: string;
|
|
490
366
|
distance?: number | undefined;
|
|
491
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
492
367
|
opacity?: number | undefined;
|
|
493
368
|
font?: {
|
|
494
369
|
family?: string | undefined;
|
|
@@ -496,20 +371,13 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
496
371
|
weight?: number | "normal" | "bold" | undefined;
|
|
497
372
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
498
373
|
} | undefined;
|
|
374
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
499
375
|
textColor?: string | undefined;
|
|
500
376
|
}[] | undefined;
|
|
501
|
-
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
502
377
|
stroke?: string | undefined;
|
|
503
378
|
strokeWidth?: number | undefined;
|
|
504
|
-
opacity?: number | undefined;
|
|
505
379
|
fillOpacity?: number | undefined;
|
|
506
380
|
drawOpacity?: number | undefined;
|
|
507
|
-
font?: {
|
|
508
|
-
family?: string | undefined;
|
|
509
|
-
size?: number | undefined;
|
|
510
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
511
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
512
|
-
} | undefined;
|
|
513
381
|
textColor?: string | undefined;
|
|
514
382
|
id?: string | undefined;
|
|
515
383
|
rotate?: number | undefined;
|
|
@@ -522,7 +390,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
522
390
|
minimumWidth?: number | undefined;
|
|
523
391
|
minimumHeight?: number | undefined;
|
|
524
392
|
minimumSize?: number | undefined;
|
|
525
|
-
scale?: number | undefined;
|
|
526
393
|
xScale?: number | undefined;
|
|
527
394
|
yScale?: number | undefined;
|
|
528
395
|
innerXSep?: number | undefined;
|
|
@@ -536,6 +403,9 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
536
403
|
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
537
404
|
of: string;
|
|
538
405
|
distance?: number | undefined;
|
|
406
|
+
} | {
|
|
407
|
+
of: string | [number, number] | import('./position').PolarPosition;
|
|
408
|
+
offset: [number, number];
|
|
539
409
|
};
|
|
540
410
|
fill?: string | undefined;
|
|
541
411
|
text?: string | (string | {
|
|
@@ -549,10 +419,18 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
549
419
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
550
420
|
} | undefined;
|
|
551
421
|
})[] | undefined;
|
|
422
|
+
opacity?: number | undefined;
|
|
423
|
+
font?: {
|
|
424
|
+
family?: string | undefined;
|
|
425
|
+
size?: number | undefined;
|
|
426
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
427
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
428
|
+
} | undefined;
|
|
429
|
+
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
430
|
+
scale?: number | undefined;
|
|
552
431
|
label?: {
|
|
553
432
|
text: string;
|
|
554
433
|
distance?: number | undefined;
|
|
555
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
556
434
|
opacity?: number | undefined;
|
|
557
435
|
font?: {
|
|
558
436
|
family?: string | undefined;
|
|
@@ -560,11 +438,11 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
560
438
|
weight?: number | "normal" | "bold" | undefined;
|
|
561
439
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
562
440
|
} | undefined;
|
|
441
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
563
442
|
textColor?: string | undefined;
|
|
564
443
|
} | {
|
|
565
444
|
text: string;
|
|
566
445
|
distance?: number | undefined;
|
|
567
|
-
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
568
446
|
opacity?: number | undefined;
|
|
569
447
|
font?: {
|
|
570
448
|
family?: string | undefined;
|
|
@@ -572,20 +450,13 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
572
450
|
weight?: number | "normal" | "bold" | undefined;
|
|
573
451
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
574
452
|
} | undefined;
|
|
453
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
575
454
|
textColor?: string | undefined;
|
|
576
455
|
}[] | undefined;
|
|
577
|
-
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
578
456
|
stroke?: string | undefined;
|
|
579
457
|
strokeWidth?: number | undefined;
|
|
580
|
-
opacity?: number | undefined;
|
|
581
458
|
fillOpacity?: number | undefined;
|
|
582
459
|
drawOpacity?: number | undefined;
|
|
583
|
-
font?: {
|
|
584
|
-
family?: string | undefined;
|
|
585
|
-
size?: number | undefined;
|
|
586
|
-
weight?: number | "normal" | "bold" | undefined;
|
|
587
|
-
style?: "normal" | "italic" | "oblique" | undefined;
|
|
588
|
-
} | undefined;
|
|
589
460
|
textColor?: string | undefined;
|
|
590
461
|
id?: string | undefined;
|
|
591
462
|
rotate?: number | undefined;
|
|
@@ -598,7 +469,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
598
469
|
minimumWidth?: number | undefined;
|
|
599
470
|
minimumHeight?: number | undefined;
|
|
600
471
|
minimumSize?: number | undefined;
|
|
601
|
-
scale?: number | undefined;
|
|
602
472
|
xScale?: number | undefined;
|
|
603
473
|
yScale?: number | undefined;
|
|
604
474
|
innerXSep?: number | undefined;
|
|
@@ -607,6 +477,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
607
477
|
padding?: number | undefined;
|
|
608
478
|
margin?: number | undefined;
|
|
609
479
|
}>;
|
|
610
|
-
/**
|
|
480
|
+
/** 节点:可定位的形状容器(矩形/圆/椭圆/菱形)+ 可选文本标签 */
|
|
611
481
|
export type IRNode = z.infer<typeof NodeSchema>;
|
|
612
482
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/es/ir/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ir/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ir/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAKxC;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC;AAEpD,+BAA+B;AAC/B,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCzB,CAAC;AAEJ,uBAAuB;AACvB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+KpB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
package/dist/es/ir/node.js
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import { PositionSchema } from "./position/position.js";
|
|
2
2
|
import { PolarPositionSchema } from "./position/polar-position.js";
|
|
3
3
|
import { AT_DIRECTIONS, AtPositionSchema } from "./position/at-position.js";
|
|
4
|
+
import { OffsetPositionSchema } from "./position/offset-position.js";
|
|
5
|
+
import { FontSchema } from "./font.js";
|
|
6
|
+
import { TextBlockSchema } from "./text.js";
|
|
4
7
|
import { z } from "zod";
|
|
5
8
|
//#region src/ir/node.ts
|
|
6
9
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - `rectangle`:矩形(默认;UML 类、流程图常规节点)
|
|
11
|
-
* - `circle`:圆形(流程图起止、状态机)
|
|
12
|
-
* - `ellipse`:椭圆(状态机、集合图)
|
|
13
|
-
* - `diamond`:菱形(流程图判定)
|
|
14
|
-
*
|
|
15
|
-
* 每个 shape 的几何语义:node 的视觉边界包住"text 矩形 + padding"——
|
|
16
|
-
* - rectangle: 视觉 rect = text rect
|
|
17
|
-
* - circle: 外接圆,r = √(innerHalfW² + innerHalfH²)
|
|
18
|
-
* - ellipse: 外接椭圆,rx = innerHalfW×√2、ry = innerHalfH×√2
|
|
19
|
-
* - diamond: 外接菱形,halfA = 2×innerHalfW、halfB = 2×innerHalfH
|
|
10
|
+
* 节点形状常量(用 const + ValueOf 派生,不用 TS enum)
|
|
11
|
+
* @description rectangle 默认;circle/ellipse/diamond 几何语义:node 视觉边界包"text 矩形 + padding";rectangle: 视觉=text;circle: r=√(innerHalfW²+innerHalfH²);ellipse: rx=innerHalfW×√2,ry=innerHalfH×√2;diamond: halfA=2×innerHalfW,halfB=2×innerHalfH
|
|
20
12
|
*/
|
|
21
13
|
var NODE_SHAPES = {
|
|
22
14
|
rectangle: "rectangle",
|
|
@@ -24,63 +16,15 @@ var NODE_SHAPES = {
|
|
|
24
16
|
ellipse: "ellipse",
|
|
25
17
|
diamond: "diamond"
|
|
26
18
|
};
|
|
27
|
-
/**
|
|
28
|
-
* 节点字体规格——family / size / weight / style 全部可选;
|
|
29
|
-
* 单字段透传到 SVG `<text>` 的 `font-*` 属性 / `font-size`。
|
|
30
|
-
*
|
|
31
|
-
* 取代 alpha.1 的标量 `fontSize` 字段(已删)。
|
|
32
|
-
*/
|
|
33
|
-
var FontSchema = z.object({
|
|
34
|
-
family: z.string().optional().describe("CSS font-family string, e.g. \"serif\", \"monospace\", \"Inter, sans-serif\""),
|
|
35
|
-
size: z.number().positive().optional().describe("Font size in user units; falls back to the renderer default when omitted"),
|
|
36
|
-
weight: z.union([z.enum(["normal", "bold"]), z.number()]).optional().describe("CSS font-weight: keyword `normal` / `bold` or numeric 100..900"),
|
|
37
|
-
style: z.enum([
|
|
38
|
-
"normal",
|
|
39
|
-
"italic",
|
|
40
|
-
"oblique"
|
|
41
|
-
]).optional().describe("CSS font-style")
|
|
42
|
-
}).describe("Font properties for the node text label; all fields optional, nested object form (replaces the alpha.1 `fontSize` scalar).");
|
|
43
|
-
/**
|
|
44
|
-
* 单行文本规格——纯字符串走块级默认样式;对象形式可对该行覆盖 fill / opacity / font。
|
|
45
|
-
*
|
|
46
|
-
* 行级覆盖只生效于本行的 `<tspan>`:
|
|
47
|
-
* - `fill`:仅这一行颜色
|
|
48
|
-
* - `opacity`:仅这一行 0~1 透明度
|
|
49
|
-
* - `font`:family / size / weight / style 任意子集;未填字段继承块级 font
|
|
50
|
-
*
|
|
51
|
-
* 块级 `align` / `lineHeight` 不可被行覆盖(多行块整体属性)。
|
|
52
|
-
*/
|
|
53
|
-
var LineSpecSchema = z.union([z.string(), z.object({
|
|
54
|
-
text: z.string().describe("Line content"),
|
|
55
|
-
fill: z.string().optional().describe("Per-line text color; overrides block default"),
|
|
56
|
-
opacity: z.number().min(0).max(1).optional().describe("Per-line opacity 0..1"),
|
|
57
|
-
font: FontSchema.optional().describe("Per-line font overrides; missing fields inherit from block-level `font`")
|
|
58
|
-
})]).describe("Single line of text: bare string for default styling, or an object with per-line `fill` / `opacity` / `font` overrides.");
|
|
59
|
-
/**
|
|
60
|
-
* 节点文本——单行字符串或非空多行数组(每元素一个 LineSpec):
|
|
61
|
-
* - `'Hello'` 等价于 `[{ text: 'Hello' }]`,按一行渲染
|
|
62
|
-
* - `['Line 1', 'Line 2']` 两行无样式覆盖
|
|
63
|
-
* - `[{ text: 'Heading', fill: 'red', font: { weight: 'bold' } }, 'body']` 混排
|
|
64
|
-
*
|
|
65
|
-
* 选 `Array<LineSpec>` 而非 `'\n'` 字符串:JSON 友好(无 escape);行级覆盖天然落字段。
|
|
66
|
-
*/
|
|
67
|
-
var NodeTextSchema = z.union([z.string(), z.array(LineSpecSchema).min(1)]).describe("Text label rendered inside the node: a single string for one line, or a non-empty array of line specs (string for default, object for per-line overrides).");
|
|
68
|
-
/** 节点文本对齐(多行内文本对齐)——TikZ `align=` 同义词 */
|
|
19
|
+
/** 节点文本对齐(TikZ `align=` 同义) */
|
|
69
20
|
var NODE_TEXT_ALIGNS = {
|
|
70
21
|
left: "left",
|
|
71
22
|
center: "center",
|
|
72
23
|
right: "right"
|
|
73
24
|
};
|
|
74
25
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* 一个 Node 可挂多个 label(数组形态);label 自身不参与 viewBox(视觉外延少时可接受)。
|
|
78
|
-
*
|
|
79
|
-
* `position` 接受两种形态:
|
|
80
|
-
* - 8 方向枚举(`above` / `right` / `above-left` ...):标签贴在 node 该方向边界外
|
|
81
|
-
* - 数字角度:以 node 中心为原点,按该角度方向投射;约定与 polar 一致(0° = +x,90° = +y 屏幕下方)
|
|
82
|
-
*
|
|
83
|
-
* 默认 `position = 'above'`,`distance = 4`(user units,标签与 node 边界的距离)。
|
|
26
|
+
* 节点附属标签 label(TikZ `[label=above:foo]` 同义)
|
|
27
|
+
* @description 可挂多个;label 不参与 viewBox。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
|
|
84
28
|
*/
|
|
85
29
|
var NodeLabelSchema = z.object({
|
|
86
30
|
text: z.string().describe("Label text content; rendered as a single line."),
|
|
@@ -97,10 +41,11 @@ var NodeSchema = z.object({
|
|
|
97
41
|
position: z.union([
|
|
98
42
|
PositionSchema,
|
|
99
43
|
PolarPositionSchema,
|
|
100
|
-
AtPositionSchema
|
|
101
|
-
|
|
44
|
+
AtPositionSchema,
|
|
45
|
+
OffsetPositionSchema
|
|
46
|
+
]).describe("Center point of the node content box; Cartesian [x, y], polar, relative-to-another-node (`at`-style with `direction` / `of` / `distance?`), or offset from a base point (`{ of, offset }` form mirroring TikZ `calc`). All non-Cartesian forms resolve at compile time."),
|
|
102
47
|
rotate: z.number().optional().describe("Rotation in degrees around the node center; positive = clockwise (matches TikZ rotate=...)"),
|
|
103
|
-
text:
|
|
48
|
+
text: TextBlockSchema.optional(),
|
|
104
49
|
align: z.nativeEnum(NODE_TEXT_ALIGNS).optional().describe("Multi-line text alignment within the text block; `left` / `center` / `right`. Defaults to `center` (matches TikZ)."),
|
|
105
50
|
lineHeight: z.number().positive().optional().describe("Line height in user units; falls back to `font.size × 1.2` when omitted."),
|
|
106
51
|
fill: z.string().optional().describe("Background color of the node shape; any CSS color (e.g. \"lightblue\", \"#fafafa\", \"rgba(...)\")"),
|
|
@@ -110,8 +55,8 @@ var NodeSchema = z.object({
|
|
|
110
55
|
strokeWidth: z.number().optional().describe("Border width in user units; defaults to 1 when omitted"),
|
|
111
56
|
dashed: z.boolean().optional().describe("Border style preset: dashed line (TikZ `dashed`); compiled to a default dash pattern. `dashArray` takes precedence."),
|
|
112
57
|
dotted: z.boolean().optional().describe("Border style preset: dotted line (TikZ `dotted`); compiled to a default dot pattern. `dashArray` and `dashed` take precedence."),
|
|
113
|
-
dashArray: z.string().optional().describe("Explicit
|
|
114
|
-
roundedCorners: z.number().nonnegative().optional().describe("Corner radius in user units; only effective on `rectangle` shape
|
|
58
|
+
dashArray: z.string().optional().describe("Explicit stroke dash pattern (e.g. \"4 2\"; same format as SVG/CSS `stroke-dasharray`); overrides `dashed` / `dotted`."),
|
|
59
|
+
roundedCorners: z.number().nonnegative().optional().describe("Corner radius in user units; only effective on `rectangle` shape."),
|
|
115
60
|
minimumWidth: z.number().nonnegative().optional().describe("Minimum visual border width in user units; floors the bounding box width."),
|
|
116
61
|
minimumHeight: z.number().nonnegative().optional().describe("Minimum visual border height in user units; floors the bounding box height."),
|
|
117
62
|
minimumSize: z.number().nonnegative().optional().describe("Symmetric alias for `minimumWidth` + `minimumHeight`; axis-specific fields take precedence."),
|
|
@@ -129,4 +74,4 @@ var NodeSchema = z.object({
|
|
|
129
74
|
label: z.union([NodeLabelSchema, z.array(NodeLabelSchema)]).optional().describe("Extra label(s) attached around the node border (TikZ `[label=above:foo]`); single object or array form. Compiled into one TextPrim per label, positioned by `position` direction / angle and `distance`.")
|
|
130
75
|
}).describe("Node primitive: a positioned, optionally textual shape (rectangle / circle / ellipse / diamond)");
|
|
131
76
|
//#endregion
|
|
132
|
-
export {
|
|
77
|
+
export { NODE_SHAPES, NODE_TEXT_ALIGNS, NodeLabelSchema, NodeSchema };
|