@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.
Files changed (275) hide show
  1. package/dist/es/compile/compile.d.ts +23 -13
  2. package/dist/es/compile/compile.d.ts.map +1 -1
  3. package/dist/es/compile/compile.js +44 -25
  4. package/dist/es/compile/index.d.ts +1 -1
  5. package/dist/es/compile/index.d.ts.map +1 -1
  6. package/dist/es/compile/node.d.ts +40 -59
  7. package/dist/es/compile/node.d.ts.map +1 -1
  8. package/dist/es/compile/node.js +51 -43
  9. package/dist/es/compile/parseTarget.d.ts +3 -8
  10. package/dist/es/compile/parseTarget.d.ts.map +1 -1
  11. package/dist/es/compile/parseTarget.js +7 -19
  12. package/dist/es/compile/path/anchor.d.ts +19 -0
  13. package/dist/es/compile/path/anchor.d.ts.map +1 -0
  14. package/dist/es/compile/path/anchor.js +54 -0
  15. package/dist/es/compile/path/index.d.ts +24 -0
  16. package/dist/es/compile/path/index.d.ts.map +1 -0
  17. package/dist/es/compile/path/index.js +308 -0
  18. package/dist/es/compile/path/label.d.ts +18 -0
  19. package/dist/es/compile/path/label.d.ts.map +1 -0
  20. package/dist/es/compile/path/label.js +102 -0
  21. package/dist/es/compile/path/relative.d.ts +8 -0
  22. package/dist/es/compile/path/relative.d.ts.map +1 -0
  23. package/dist/es/compile/path/relative.js +48 -0
  24. package/dist/es/compile/path/shrink.d.ts +24 -0
  25. package/dist/es/compile/path/shrink.d.ts.map +1 -0
  26. package/dist/es/compile/path/shrink.js +136 -0
  27. package/dist/es/compile/path/split.d.ts +15 -0
  28. package/dist/es/compile/path/split.d.ts.map +1 -0
  29. package/dist/es/compile/path/split.js +46 -0
  30. package/dist/es/compile/position.d.ts +4 -8
  31. package/dist/es/compile/position.d.ts.map +1 -1
  32. package/dist/es/compile/position.js +10 -10
  33. package/dist/es/compile/text-metrics.d.ts +6 -5
  34. package/dist/es/compile/text-metrics.d.ts.map +1 -1
  35. package/dist/es/compile/text-metrics.js +11 -5
  36. package/dist/es/compile/view-box.d.ts +1 -4
  37. package/dist/es/compile/view-box.d.ts.map +1 -1
  38. package/dist/es/compile/view-box.js +1 -4
  39. package/dist/es/geometry/_transform.d.ts +21 -0
  40. package/dist/es/geometry/_transform.d.ts.map +1 -0
  41. package/dist/es/geometry/_transform.js +27 -0
  42. package/dist/es/geometry/arc.d.ts +3 -28
  43. package/dist/es/geometry/arc.d.ts.map +1 -1
  44. package/dist/es/geometry/arc.js +4 -31
  45. package/dist/es/geometry/bend.d.ts +2 -13
  46. package/dist/es/geometry/bend.d.ts.map +1 -1
  47. package/dist/es/geometry/bend.js +2 -13
  48. package/dist/es/geometry/circle.d.ts +6 -15
  49. package/dist/es/geometry/circle.d.ts.map +1 -1
  50. package/dist/es/geometry/circle.js +2 -20
  51. package/dist/es/geometry/diamond.d.ts +10 -26
  52. package/dist/es/geometry/diamond.d.ts.map +1 -1
  53. package/dist/es/geometry/diamond.js +5 -30
  54. package/dist/es/geometry/ellipse.d.ts +10 -17
  55. package/dist/es/geometry/ellipse.d.ts.map +1 -1
  56. package/dist/es/geometry/ellipse.js +5 -24
  57. package/dist/es/geometry/point.d.ts +8 -9
  58. package/dist/es/geometry/point.d.ts.map +1 -1
  59. package/dist/es/geometry/point.js +8 -9
  60. package/dist/es/geometry/polar.d.ts +12 -21
  61. package/dist/es/geometry/polar.d.ts.map +1 -1
  62. package/dist/es/geometry/polar.js +8 -19
  63. package/dist/es/geometry/rect.d.ts +8 -32
  64. package/dist/es/geometry/rect.d.ts.map +1 -1
  65. package/dist/es/geometry/rect.js +6 -49
  66. package/dist/es/geometry/segment.d.ts +15 -18
  67. package/dist/es/geometry/segment.d.ts.map +1 -1
  68. package/dist/es/geometry/segment.js +9 -16
  69. package/dist/es/index.d.ts +13 -13
  70. package/dist/es/index.d.ts.map +1 -1
  71. package/dist/es/index.js +7 -4
  72. package/dist/es/ir/coordinate.d.ts +18 -10
  73. package/dist/es/ir/coordinate.d.ts.map +1 -1
  74. package/dist/es/ir/coordinate.js +6 -11
  75. package/dist/es/ir/font.d.ts +21 -0
  76. package/dist/es/ir/font.d.ts.map +1 -0
  77. package/dist/es/ir/font.js +15 -0
  78. package/dist/es/ir/index.d.ts +2 -0
  79. package/dist/es/ir/index.d.ts.map +1 -1
  80. package/dist/es/ir/node.d.ts +51 -181
  81. package/dist/es/ir/node.d.ts.map +1 -1
  82. package/dist/es/ir/node.js +15 -70
  83. package/dist/es/ir/path/arrow.d.ts +210 -12
  84. package/dist/es/ir/path/arrow.d.ts.map +1 -1
  85. package/dist/es/ir/path/arrow.js +39 -12
  86. package/dist/es/ir/path/path.d.ts +477 -153
  87. package/dist/es/ir/path/path.d.ts.map +1 -1
  88. package/dist/es/ir/path/path.js +6 -6
  89. package/dist/es/ir/path/step.d.ts +395 -223
  90. package/dist/es/ir/path/step.d.ts.map +1 -1
  91. package/dist/es/ir/path/step.js +21 -22
  92. package/dist/es/ir/path/target.d.ts +25 -16
  93. package/dist/es/ir/path/target.d.ts.map +1 -1
  94. package/dist/es/ir/path/target.js +8 -6
  95. package/dist/es/ir/position/at-position.d.ts +4 -11
  96. package/dist/es/ir/position/at-position.d.ts.map +1 -1
  97. package/dist/es/ir/position/at-position.js +2 -9
  98. package/dist/es/ir/position/index.d.ts +1 -0
  99. package/dist/es/ir/position/index.d.ts.map +1 -1
  100. package/dist/es/ir/position/offset-position.d.ts +14 -0
  101. package/dist/es/ir/position/offset-position.d.ts.map +1 -0
  102. package/dist/es/ir/position/offset-position.js +14 -0
  103. package/dist/es/ir/position/polar-position.d.ts +1 -4
  104. package/dist/es/ir/position/polar-position.d.ts.map +1 -1
  105. package/dist/es/ir/position/polar-position.js +3 -6
  106. package/dist/es/ir/position/position.d.ts.map +1 -1
  107. package/dist/es/ir/position/position.js +1 -1
  108. package/dist/es/ir/scene.d.ts +1236 -422
  109. package/dist/es/ir/scene.d.ts.map +1 -1
  110. package/dist/es/ir/text.d.ts +96 -0
  111. package/dist/es/ir/text.d.ts.map +1 -0
  112. package/dist/es/ir/text.js +20 -0
  113. package/dist/es/parsers/parseTargetSugar.d.ts +4 -0
  114. package/dist/es/parsers/parseTargetSugar.d.ts.map +1 -1
  115. package/dist/es/parsers/parseTargetSugar.js +7 -19
  116. package/dist/es/parsers/parseWay.d.ts +26 -118
  117. package/dist/es/parsers/parseWay.d.ts.map +1 -1
  118. package/dist/es/parsers/parseWay.js +19 -61
  119. package/dist/es/primitive/ellipse.d.ts +4 -14
  120. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  121. package/dist/es/primitive/group.d.ts +37 -3
  122. package/dist/es/primitive/group.d.ts.map +1 -1
  123. package/dist/es/primitive/path.d.ts +107 -7
  124. package/dist/es/primitive/path.d.ts.map +1 -1
  125. package/dist/es/primitive/rect.d.ts +2 -2
  126. package/dist/es/primitive/rect.d.ts.map +1 -1
  127. package/dist/es/primitive/scene.d.ts +2 -4
  128. package/dist/es/primitive/scene.d.ts.map +1 -1
  129. package/dist/es/primitive/text.d.ts +16 -32
  130. package/dist/es/primitive/text.d.ts.map +1 -1
  131. package/dist/es/primitive/view-box.d.ts +1 -1
  132. package/dist/es/primitive/view-box.d.ts.map +1 -1
  133. package/dist/es/types.d.ts +8 -0
  134. package/dist/es/types.d.ts.map +1 -1
  135. package/dist/lib/compile/compile.cjs +44 -25
  136. package/dist/lib/compile/compile.d.ts +23 -13
  137. package/dist/lib/compile/compile.d.ts.map +1 -1
  138. package/dist/lib/compile/index.d.ts +1 -1
  139. package/dist/lib/compile/index.d.ts.map +1 -1
  140. package/dist/lib/compile/node.cjs +51 -43
  141. package/dist/lib/compile/node.d.ts +40 -59
  142. package/dist/lib/compile/node.d.ts.map +1 -1
  143. package/dist/lib/compile/parseTarget.cjs +7 -19
  144. package/dist/lib/compile/parseTarget.d.ts +3 -8
  145. package/dist/lib/compile/parseTarget.d.ts.map +1 -1
  146. package/dist/lib/compile/path/anchor.cjs +58 -0
  147. package/dist/lib/compile/path/anchor.d.ts +19 -0
  148. package/dist/lib/compile/path/anchor.d.ts.map +1 -0
  149. package/dist/lib/compile/path/index.cjs +308 -0
  150. package/dist/lib/compile/path/index.d.ts +24 -0
  151. package/dist/lib/compile/path/index.d.ts.map +1 -0
  152. package/dist/lib/compile/path/label.cjs +103 -0
  153. package/dist/lib/compile/path/label.d.ts +18 -0
  154. package/dist/lib/compile/path/label.d.ts.map +1 -0
  155. package/dist/lib/compile/path/relative.cjs +48 -0
  156. package/dist/lib/compile/path/relative.d.ts +8 -0
  157. package/dist/lib/compile/path/relative.d.ts.map +1 -0
  158. package/dist/lib/compile/path/shrink.cjs +138 -0
  159. package/dist/lib/compile/path/shrink.d.ts +24 -0
  160. package/dist/lib/compile/path/shrink.d.ts.map +1 -0
  161. package/dist/lib/compile/path/split.cjs +46 -0
  162. package/dist/lib/compile/path/split.d.ts +15 -0
  163. package/dist/lib/compile/path/split.d.ts.map +1 -0
  164. package/dist/lib/compile/position.cjs +10 -10
  165. package/dist/lib/compile/position.d.ts +4 -8
  166. package/dist/lib/compile/position.d.ts.map +1 -1
  167. package/dist/lib/compile/text-metrics.cjs +11 -5
  168. package/dist/lib/compile/text-metrics.d.ts +6 -5
  169. package/dist/lib/compile/text-metrics.d.ts.map +1 -1
  170. package/dist/lib/compile/view-box.cjs +1 -4
  171. package/dist/lib/compile/view-box.d.ts +1 -4
  172. package/dist/lib/compile/view-box.d.ts.map +1 -1
  173. package/dist/lib/geometry/_transform.cjs +28 -0
  174. package/dist/lib/geometry/_transform.d.ts +21 -0
  175. package/dist/lib/geometry/_transform.d.ts.map +1 -0
  176. package/dist/lib/geometry/arc.cjs +3 -31
  177. package/dist/lib/geometry/arc.d.ts +3 -28
  178. package/dist/lib/geometry/arc.d.ts.map +1 -1
  179. package/dist/lib/geometry/bend.cjs +2 -13
  180. package/dist/lib/geometry/bend.d.ts +2 -13
  181. package/dist/lib/geometry/bend.d.ts.map +1 -1
  182. package/dist/lib/geometry/circle.cjs +6 -24
  183. package/dist/lib/geometry/circle.d.ts +6 -15
  184. package/dist/lib/geometry/circle.d.ts.map +1 -1
  185. package/dist/lib/geometry/diamond.cjs +9 -34
  186. package/dist/lib/geometry/diamond.d.ts +10 -26
  187. package/dist/lib/geometry/diamond.d.ts.map +1 -1
  188. package/dist/lib/geometry/ellipse.cjs +9 -28
  189. package/dist/lib/geometry/ellipse.d.ts +10 -17
  190. package/dist/lib/geometry/ellipse.d.ts.map +1 -1
  191. package/dist/lib/geometry/point.cjs +8 -9
  192. package/dist/lib/geometry/point.d.ts +8 -9
  193. package/dist/lib/geometry/point.d.ts.map +1 -1
  194. package/dist/lib/geometry/polar.cjs +8 -19
  195. package/dist/lib/geometry/polar.d.ts +12 -21
  196. package/dist/lib/geometry/polar.d.ts.map +1 -1
  197. package/dist/lib/geometry/rect.cjs +10 -53
  198. package/dist/lib/geometry/rect.d.ts +8 -32
  199. package/dist/lib/geometry/rect.d.ts.map +1 -1
  200. package/dist/lib/geometry/segment.cjs +9 -16
  201. package/dist/lib/geometry/segment.d.ts +15 -18
  202. package/dist/lib/geometry/segment.d.ts.map +1 -1
  203. package/dist/lib/index.cjs +14 -5
  204. package/dist/lib/index.d.ts +13 -13
  205. package/dist/lib/index.d.ts.map +1 -1
  206. package/dist/lib/ir/coordinate.cjs +6 -11
  207. package/dist/lib/ir/coordinate.d.ts +18 -10
  208. package/dist/lib/ir/coordinate.d.ts.map +1 -1
  209. package/dist/lib/ir/font.cjs +15 -0
  210. package/dist/lib/ir/font.d.ts +21 -0
  211. package/dist/lib/ir/font.d.ts.map +1 -0
  212. package/dist/lib/ir/index.d.ts +2 -0
  213. package/dist/lib/ir/index.d.ts.map +1 -1
  214. package/dist/lib/ir/node.cjs +16 -74
  215. package/dist/lib/ir/node.d.ts +51 -181
  216. package/dist/lib/ir/node.d.ts.map +1 -1
  217. package/dist/lib/ir/path/arrow.cjs +43 -11
  218. package/dist/lib/ir/path/arrow.d.ts +210 -12
  219. package/dist/lib/ir/path/arrow.d.ts.map +1 -1
  220. package/dist/lib/ir/path/path.cjs +5 -5
  221. package/dist/lib/ir/path/path.d.ts +477 -153
  222. package/dist/lib/ir/path/path.d.ts.map +1 -1
  223. package/dist/lib/ir/path/step.cjs +21 -22
  224. package/dist/lib/ir/path/step.d.ts +395 -223
  225. package/dist/lib/ir/path/step.d.ts.map +1 -1
  226. package/dist/lib/ir/path/target.cjs +9 -7
  227. package/dist/lib/ir/path/target.d.ts +25 -16
  228. package/dist/lib/ir/path/target.d.ts.map +1 -1
  229. package/dist/lib/ir/position/at-position.cjs +2 -9
  230. package/dist/lib/ir/position/at-position.d.ts +4 -11
  231. package/dist/lib/ir/position/at-position.d.ts.map +1 -1
  232. package/dist/lib/ir/position/index.d.ts +1 -0
  233. package/dist/lib/ir/position/index.d.ts.map +1 -1
  234. package/dist/lib/ir/position/offset-position.cjs +14 -0
  235. package/dist/lib/ir/position/offset-position.d.ts +14 -0
  236. package/dist/lib/ir/position/offset-position.d.ts.map +1 -0
  237. package/dist/lib/ir/position/polar-position.cjs +3 -6
  238. package/dist/lib/ir/position/polar-position.d.ts +1 -4
  239. package/dist/lib/ir/position/polar-position.d.ts.map +1 -1
  240. package/dist/lib/ir/position/position.cjs +1 -1
  241. package/dist/lib/ir/position/position.d.ts.map +1 -1
  242. package/dist/lib/ir/scene.d.ts +1236 -422
  243. package/dist/lib/ir/scene.d.ts.map +1 -1
  244. package/dist/lib/ir/text.cjs +21 -0
  245. package/dist/lib/ir/text.d.ts +96 -0
  246. package/dist/lib/ir/text.d.ts.map +1 -0
  247. package/dist/lib/parsers/parseTargetSugar.cjs +7 -19
  248. package/dist/lib/parsers/parseTargetSugar.d.ts +4 -0
  249. package/dist/lib/parsers/parseTargetSugar.d.ts.map +1 -1
  250. package/dist/lib/parsers/parseWay.cjs +19 -61
  251. package/dist/lib/parsers/parseWay.d.ts +26 -118
  252. package/dist/lib/parsers/parseWay.d.ts.map +1 -1
  253. package/dist/lib/primitive/ellipse.d.ts +4 -14
  254. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  255. package/dist/lib/primitive/group.d.ts +37 -3
  256. package/dist/lib/primitive/group.d.ts.map +1 -1
  257. package/dist/lib/primitive/path.d.ts +107 -7
  258. package/dist/lib/primitive/path.d.ts.map +1 -1
  259. package/dist/lib/primitive/rect.d.ts +2 -2
  260. package/dist/lib/primitive/rect.d.ts.map +1 -1
  261. package/dist/lib/primitive/scene.d.ts +2 -4
  262. package/dist/lib/primitive/scene.d.ts.map +1 -1
  263. package/dist/lib/primitive/text.d.ts +16 -32
  264. package/dist/lib/primitive/text.d.ts.map +1 -1
  265. package/dist/lib/primitive/view-box.d.ts +1 -1
  266. package/dist/lib/primitive/view-box.d.ts.map +1 -1
  267. package/dist/lib/types.d.ts +8 -0
  268. package/dist/lib/types.d.ts.map +1 -1
  269. package/package.json +13 -4
  270. package/dist/es/compile/path.d.ts +0 -30
  271. package/dist/es/compile/path.d.ts.map +0 -1
  272. package/dist/es/compile/path.js +0 -617
  273. package/dist/lib/compile/path.cjs +0 -617
  274. package/dist/lib/compile/path.d.ts +0 -30
  275. package/dist/lib/compile/path.d.ts.map +0 -1
@@ -1,19 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { ValueOf } from '../types';
3
3
  /**
4
- * 节点形状常量。值是 IR `shape` 字段的字面字符串;
5
- * const + ValueOf 派生(不用 TS enum)。
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
- /** 节点形状字面量类型,由 `NODE_SHAPES` 派生 */
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
- * 节点附属标签(label)——TikZ `[label=above:foo]` / `[label={[red]30:foo}]` 同义。
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
+ * 节点附属标签 labelTikZ `[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 类型——单条 label 的字段集 */
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
@@ -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;AAGxC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,mCAAmC;AACnC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAwBpB,CAAC;AAEJ,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEhD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBxB,CAAC;AAEJ,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAIxB,CAAC;AAEJ,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCzB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+KpB,CAAC;AAEJ,4CAA4C;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,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"}
@@ -1,16 +1,8 @@
1
+ let zod = require("zod");
1
2
  //#region src/ir/path/arrow.ts
2
3
  /**
3
- * 箭头形状常量。值就是 IR / Scene arrow 字段的字面字符串;
4
- * const 而不是 TS enum——避免 enum 在数值场景生成 reverse-mapping、
5
- * 在 string 场景与字面量类型不互通的两个坑。
6
- *
7
- * - `normal`:实心三角(默认;最常见)
8
- * - `open`:空心三角(UML 泛化 / 继承)
9
- * - `stealth`:尖锐倒钩三角(流图常见、视觉锐利)
10
- * - `diamond`:实心菱形(UML 组合)
11
- * - `openDiamond`:空心菱形(UML 聚合)
12
- * - `circle`:实心圆点(连接点 / dot end)
13
- * - `openCircle`:空心圆点(白圈 / o-end)
4
+ * 箭头形状常量(用 const 而非 TS enum 避免 reverse-mapping 和字面量不互通)
5
+ * @description normal 实心三角(默认);open 空心三角(UML 泛化/继承);stealth 尖锐倒钩;diamond 实心菱形(UML 组合);openDiamond 空心菱形(聚合);circle 实心圆点;openCircle 空心圆点
14
6
  */
15
7
  var ARROW_SHAPES = {
16
8
  normal: "normal",
@@ -21,5 +13,45 @@ var ARROW_SHAPES = {
21
13
  circle: "circle",
22
14
  openCircle: "openCircle"
23
15
  };
16
+ /**
17
+ * 空心 shape 集合(fill 字段在这些 shape 上 silent no-op)
18
+ * @description compile 与 render 都引用此表判定 fill 是否丢弃;空心 shape 用 color 主导描边、lineWidth 控描边粗
19
+ */
20
+ var HOLLOW_ARROW_SHAPES = new Set([
21
+ "open",
22
+ "openDiamond",
23
+ "openCircle"
24
+ ]);
25
+ /** marker 默认尺寸(length / width 的 fallback;arrowMarkers viewBox 内的几何也按 10 单位定义) */
26
+ var ARROW_MARKER_DEFAULT_SIZE = 6;
27
+ /** 空心 shape 描边默认粗细(lineWidth fallback;refX / shrink 计算都用它做"back stroke 半宽") */
28
+ var ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = 1.5;
29
+ /**
30
+ * 端点级箭头视觉规格 schema
31
+ * @description 顶层 8 字段全 optional;fill 在空心 shape 上 silent no-op(schema 不拒绝、compile/render 丢字段);start/end 子对象用相同字段集(无 start/end 递归)
32
+ */
33
+ var ArrowEndDetailSchema = zod.z.object({
34
+ shape: zod.z.nativeEnum(ARROW_SHAPES).optional().describe("Arrow tip shape. Defaults to `normal` (filled triangle). Other values: `open` (hollow triangle), `stealth` (sharp barb), `diamond`, `openDiamond`, `circle`, `openCircle`."),
35
+ scale: zod.z.number().positive().optional().describe("Uniform tip scale factor; multiplies `length` and `width` (e.g. `length=10, scale=1.5` → effective 15). Defaults to 1."),
36
+ length: zod.z.number().nonnegative().optional().describe("Tip length in user units (the dimension along the path direction). Defaults to ~6 (matching the legacy hardcoded markerWidth)."),
37
+ width: zod.z.number().nonnegative().optional().describe("Tip width in user units (perpendicular to the path). Defaults to ~6 (matching the legacy hardcoded markerHeight)."),
38
+ color: zod.z.string().optional().describe("Stroke color override. When omitted, the marker inherits the path stroke via `context-stroke`."),
39
+ fill: zod.z.string().optional().describe("Fill color override (effective only on solid shapes). Hollow shapes (`open` / `openDiamond` / `openCircle`) silently ignore this field — `color` drives the stroke."),
40
+ opacity: zod.z.number().min(0).max(1).optional().describe("Arrow opacity 0..1, independent from the path opacity. When omitted, inherits the path opacity."),
41
+ lineWidth: zod.z.number().nonnegative().optional().describe("Stroke width for hollow shapes (user units). Defaults to 1.5. Solid shapes ignore this field.")
42
+ }).describe("Per-end arrow visual spec: shape + visual fields (scale / length / width / color / fill / opacity / lineWidth). All optional; omitted fields fall through to top-level `arrowDetail` defaults and then built-in defaults.");
43
+ /**
44
+ * Path 级箭头详细配置 schema
45
+ * @description 顶层视觉字段(与 `ArrowEndDetailSchema` 同字段集)作为起末共享默认;`start` / `end` 子对象逐字段 merge 顶层(缺省字段继承,已填字段 override)
46
+ */
47
+ var ArrowDetailSchema = ArrowEndDetailSchema.extend({
48
+ start: ArrowEndDetailSchema.optional().describe("Start-end override (effective only when `arrow` includes a start arrow: `<-` / `<->`). Fields merge into the top-level defaults; omitted fields inherit, present fields override."),
49
+ end: ArrowEndDetailSchema.optional().describe("End-end override (effective only when `arrow` includes an end arrow: `->` / `<->`). Fields merge into the top-level defaults; omitted fields inherit, present fields override.")
50
+ }).describe("Path-level arrow detail. Top-level visual fields (shape / scale / length / width / color / fill / opacity / lineWidth) act as shared defaults for both ends; `start` / `end` sub-objects per-field override the defaults.");
24
51
  //#endregion
52
+ exports.ARROW_MARKER_DEFAULT_SIZE = ARROW_MARKER_DEFAULT_SIZE;
53
+ exports.ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH;
25
54
  exports.ARROW_SHAPES = ARROW_SHAPES;
55
+ exports.ArrowDetailSchema = ArrowDetailSchema;
56
+ exports.ArrowEndDetailSchema = ArrowEndDetailSchema;
57
+ exports.HOLLOW_ARROW_SHAPES = HOLLOW_ARROW_SHAPES;