@retikz/core 0.1.0-alpha.5 → 0.1.0-beta.2

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 (231) hide show
  1. package/dist/es/compile/compile.d.ts +20 -3
  2. package/dist/es/compile/compile.d.ts.map +1 -1
  3. package/dist/es/compile/compile.js +44 -19
  4. package/dist/es/compile/index.d.ts +2 -2
  5. package/dist/es/compile/index.d.ts.map +1 -1
  6. package/dist/es/compile/layout.d.ts +5 -0
  7. package/dist/es/compile/layout.d.ts.map +1 -0
  8. package/dist/es/compile/{view-box.js → layout.js} +4 -4
  9. package/dist/es/compile/node.d.ts +4 -4
  10. package/dist/es/compile/node.d.ts.map +1 -1
  11. package/dist/es/compile/node.js +7 -7
  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/arrow-geometry.d.ts +22 -0
  16. package/dist/es/compile/path/arrow-geometry.d.ts.map +1 -0
  17. package/dist/es/compile/path/arrow-geometry.js +40 -0
  18. package/dist/es/compile/{path.d.ts → path/index.d.ts} +18 -7
  19. package/dist/es/compile/path/index.d.ts.map +1 -0
  20. package/dist/es/compile/path/index.js +308 -0
  21. package/dist/es/compile/path/label.d.ts +18 -0
  22. package/dist/es/compile/path/label.d.ts.map +1 -0
  23. package/dist/es/compile/path/label.js +102 -0
  24. package/dist/es/compile/path/relative.d.ts +8 -0
  25. package/dist/es/compile/path/relative.d.ts.map +1 -0
  26. package/dist/es/compile/path/relative.js +48 -0
  27. package/dist/es/compile/path/shrink.d.ts +18 -0
  28. package/dist/es/compile/path/shrink.d.ts.map +1 -0
  29. package/dist/es/compile/path/shrink.js +126 -0
  30. package/dist/es/compile/path/split.d.ts +15 -0
  31. package/dist/es/compile/path/split.d.ts.map +1 -0
  32. package/dist/es/compile/path/split.js +46 -0
  33. package/dist/es/compile/text-metrics.d.ts +4 -1
  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/geometry/_transform.d.ts +21 -0
  37. package/dist/es/geometry/_transform.d.ts.map +1 -0
  38. package/dist/es/geometry/_transform.js +27 -0
  39. package/dist/es/geometry/bend.d.ts +1 -1
  40. package/dist/es/geometry/bend.js +1 -1
  41. package/dist/es/geometry/circle.d.ts +2 -3
  42. package/dist/es/geometry/circle.d.ts.map +1 -1
  43. package/dist/es/geometry/circle.js +1 -16
  44. package/dist/es/geometry/diamond.d.ts +2 -3
  45. package/dist/es/geometry/diamond.d.ts.map +1 -1
  46. package/dist/es/geometry/diamond.js +1 -16
  47. package/dist/es/geometry/ellipse.d.ts +2 -3
  48. package/dist/es/geometry/ellipse.d.ts.map +1 -1
  49. package/dist/es/geometry/ellipse.js +1 -16
  50. package/dist/es/geometry/polar.d.ts +2 -2
  51. package/dist/es/geometry/polar.d.ts.map +1 -1
  52. package/dist/es/geometry/polar.js +2 -6
  53. package/dist/es/geometry/rect.d.ts.map +1 -1
  54. package/dist/es/geometry/rect.js +1 -18
  55. package/dist/es/geometry/segment.d.ts +5 -1
  56. package/dist/es/geometry/segment.d.ts.map +1 -1
  57. package/dist/es/index.d.ts +11 -7
  58. package/dist/es/index.d.ts.map +1 -1
  59. package/dist/es/index.js +5 -2
  60. package/dist/es/ir/coordinate.d.ts +1 -1
  61. package/dist/es/ir/coordinate.js +1 -1
  62. package/dist/es/ir/font.d.ts +21 -0
  63. package/dist/es/ir/font.d.ts.map +1 -0
  64. package/dist/es/ir/font.js +15 -0
  65. package/dist/es/ir/index.d.ts +2 -0
  66. package/dist/es/ir/index.d.ts.map +1 -1
  67. package/dist/es/ir/node.d.ts +32 -143
  68. package/dist/es/ir/node.d.ts.map +1 -1
  69. package/dist/es/ir/node.js +7 -31
  70. package/dist/es/ir/path/arrow.d.ts +14 -14
  71. package/dist/es/ir/path/arrow.d.ts.map +1 -1
  72. package/dist/es/ir/path/arrow.js +5 -5
  73. package/dist/es/ir/path/path.d.ts +19 -19
  74. package/dist/es/ir/path/path.d.ts.map +1 -1
  75. package/dist/es/ir/path/path.js +4 -4
  76. package/dist/es/ir/path/step.d.ts +1 -1
  77. package/dist/es/ir/path/step.d.ts.map +1 -1
  78. package/dist/es/ir/path/step.js +8 -8
  79. package/dist/es/ir/position/at-position.js +1 -1
  80. package/dist/es/ir/position/offset-position.js +1 -1
  81. package/dist/es/ir/position/polar-position.d.ts.map +1 -1
  82. package/dist/es/ir/position/polar-position.js +2 -2
  83. package/dist/es/ir/position/position.d.ts.map +1 -1
  84. package/dist/es/ir/position/position.js +1 -1
  85. package/dist/es/ir/scene.d.ts +128 -128
  86. package/dist/es/ir/text.d.ts +96 -0
  87. package/dist/es/ir/text.d.ts.map +1 -0
  88. package/dist/es/ir/text.js +20 -0
  89. package/dist/es/parsers/parseTargetSugar.d.ts +4 -0
  90. package/dist/es/parsers/parseTargetSugar.d.ts.map +1 -1
  91. package/dist/es/parsers/parseTargetSugar.js +3 -2
  92. package/dist/es/primitive/ellipse.d.ts +3 -3
  93. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  94. package/dist/es/primitive/group.d.ts +23 -7
  95. package/dist/es/primitive/group.d.ts.map +1 -1
  96. package/dist/es/primitive/index.d.ts +1 -1
  97. package/dist/es/primitive/index.d.ts.map +1 -1
  98. package/dist/es/primitive/layout.d.ts +12 -0
  99. package/dist/es/primitive/layout.d.ts.map +1 -0
  100. package/dist/es/primitive/path.d.ts +55 -15
  101. package/dist/es/primitive/path.d.ts.map +1 -1
  102. package/dist/es/primitive/rect.d.ts +3 -3
  103. package/dist/es/primitive/rect.d.ts.map +1 -1
  104. package/dist/es/primitive/scene.d.ts +4 -4
  105. package/dist/es/primitive/scene.d.ts.map +1 -1
  106. package/dist/es/primitive/text.d.ts +10 -3
  107. package/dist/es/primitive/text.d.ts.map +1 -1
  108. package/dist/es/types.d.ts +8 -0
  109. package/dist/es/types.d.ts.map +1 -1
  110. package/dist/lib/compile/compile.cjs +44 -19
  111. package/dist/lib/compile/compile.d.ts +20 -3
  112. package/dist/lib/compile/compile.d.ts.map +1 -1
  113. package/dist/lib/compile/index.d.ts +2 -2
  114. package/dist/lib/compile/index.d.ts.map +1 -1
  115. package/dist/lib/compile/{view-box.cjs → layout.cjs} +4 -4
  116. package/dist/lib/compile/layout.d.ts +5 -0
  117. package/dist/lib/compile/layout.d.ts.map +1 -0
  118. package/dist/lib/compile/node.cjs +7 -7
  119. package/dist/lib/compile/node.d.ts +4 -4
  120. package/dist/lib/compile/node.d.ts.map +1 -1
  121. package/dist/lib/compile/path/anchor.cjs +58 -0
  122. package/dist/lib/compile/path/anchor.d.ts +19 -0
  123. package/dist/lib/compile/path/anchor.d.ts.map +1 -0
  124. package/dist/lib/compile/path/arrow-geometry.cjs +41 -0
  125. package/dist/lib/compile/path/arrow-geometry.d.ts +22 -0
  126. package/dist/lib/compile/path/arrow-geometry.d.ts.map +1 -0
  127. package/dist/lib/compile/path/index.cjs +308 -0
  128. package/dist/lib/compile/{path.d.ts → path/index.d.ts} +18 -7
  129. package/dist/lib/compile/path/index.d.ts.map +1 -0
  130. package/dist/lib/compile/path/label.cjs +103 -0
  131. package/dist/lib/compile/path/label.d.ts +18 -0
  132. package/dist/lib/compile/path/label.d.ts.map +1 -0
  133. package/dist/lib/compile/path/relative.cjs +48 -0
  134. package/dist/lib/compile/path/relative.d.ts +8 -0
  135. package/dist/lib/compile/path/relative.d.ts.map +1 -0
  136. package/dist/lib/compile/path/shrink.cjs +128 -0
  137. package/dist/lib/compile/path/shrink.d.ts +18 -0
  138. package/dist/lib/compile/path/shrink.d.ts.map +1 -0
  139. package/dist/lib/compile/path/split.cjs +46 -0
  140. package/dist/lib/compile/path/split.d.ts +15 -0
  141. package/dist/lib/compile/path/split.d.ts.map +1 -0
  142. package/dist/lib/compile/text-metrics.cjs +11 -5
  143. package/dist/lib/compile/text-metrics.d.ts +4 -1
  144. package/dist/lib/compile/text-metrics.d.ts.map +1 -1
  145. package/dist/lib/geometry/_transform.cjs +28 -0
  146. package/dist/lib/geometry/_transform.d.ts +21 -0
  147. package/dist/lib/geometry/_transform.d.ts.map +1 -0
  148. package/dist/lib/geometry/bend.cjs +1 -1
  149. package/dist/lib/geometry/bend.d.ts +1 -1
  150. package/dist/lib/geometry/circle.cjs +5 -20
  151. package/dist/lib/geometry/circle.d.ts +2 -3
  152. package/dist/lib/geometry/circle.d.ts.map +1 -1
  153. package/dist/lib/geometry/diamond.cjs +5 -20
  154. package/dist/lib/geometry/diamond.d.ts +2 -3
  155. package/dist/lib/geometry/diamond.d.ts.map +1 -1
  156. package/dist/lib/geometry/ellipse.cjs +5 -20
  157. package/dist/lib/geometry/ellipse.d.ts +2 -3
  158. package/dist/lib/geometry/ellipse.d.ts.map +1 -1
  159. package/dist/lib/geometry/polar.cjs +2 -6
  160. package/dist/lib/geometry/polar.d.ts +2 -2
  161. package/dist/lib/geometry/polar.d.ts.map +1 -1
  162. package/dist/lib/geometry/rect.cjs +5 -22
  163. package/dist/lib/geometry/rect.d.ts.map +1 -1
  164. package/dist/lib/geometry/segment.d.ts +5 -1
  165. package/dist/lib/geometry/segment.d.ts.map +1 -1
  166. package/dist/lib/index.cjs +7 -3
  167. package/dist/lib/index.d.ts +11 -7
  168. package/dist/lib/index.d.ts.map +1 -1
  169. package/dist/lib/ir/coordinate.cjs +1 -1
  170. package/dist/lib/ir/coordinate.d.ts +1 -1
  171. package/dist/lib/ir/font.cjs +15 -0
  172. package/dist/lib/ir/font.d.ts +21 -0
  173. package/dist/lib/ir/font.d.ts.map +1 -0
  174. package/dist/lib/ir/index.d.ts +2 -0
  175. package/dist/lib/ir/index.d.ts.map +1 -1
  176. package/dist/lib/ir/node.cjs +8 -35
  177. package/dist/lib/ir/node.d.ts +32 -143
  178. package/dist/lib/ir/node.d.ts.map +1 -1
  179. package/dist/lib/ir/path/arrow.cjs +5 -5
  180. package/dist/lib/ir/path/arrow.d.ts +14 -14
  181. package/dist/lib/ir/path/arrow.d.ts.map +1 -1
  182. package/dist/lib/ir/path/path.cjs +4 -4
  183. package/dist/lib/ir/path/path.d.ts +19 -19
  184. package/dist/lib/ir/path/path.d.ts.map +1 -1
  185. package/dist/lib/ir/path/step.cjs +8 -8
  186. package/dist/lib/ir/path/step.d.ts +1 -1
  187. package/dist/lib/ir/path/step.d.ts.map +1 -1
  188. package/dist/lib/ir/position/at-position.cjs +1 -1
  189. package/dist/lib/ir/position/offset-position.cjs +1 -1
  190. package/dist/lib/ir/position/polar-position.cjs +2 -2
  191. package/dist/lib/ir/position/polar-position.d.ts.map +1 -1
  192. package/dist/lib/ir/position/position.cjs +1 -1
  193. package/dist/lib/ir/position/position.d.ts.map +1 -1
  194. package/dist/lib/ir/scene.d.ts +128 -128
  195. package/dist/lib/ir/text.cjs +21 -0
  196. package/dist/lib/ir/text.d.ts +96 -0
  197. package/dist/lib/ir/text.d.ts.map +1 -0
  198. package/dist/lib/parsers/parseTargetSugar.cjs +3 -2
  199. package/dist/lib/parsers/parseTargetSugar.d.ts +4 -0
  200. package/dist/lib/parsers/parseTargetSugar.d.ts.map +1 -1
  201. package/dist/lib/primitive/ellipse.d.ts +3 -3
  202. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  203. package/dist/lib/primitive/group.d.ts +23 -7
  204. package/dist/lib/primitive/group.d.ts.map +1 -1
  205. package/dist/lib/primitive/index.d.ts +1 -1
  206. package/dist/lib/primitive/index.d.ts.map +1 -1
  207. package/dist/lib/primitive/layout.d.ts +12 -0
  208. package/dist/lib/primitive/layout.d.ts.map +1 -0
  209. package/dist/lib/primitive/path.d.ts +55 -15
  210. package/dist/lib/primitive/path.d.ts.map +1 -1
  211. package/dist/lib/primitive/rect.d.ts +3 -3
  212. package/dist/lib/primitive/rect.d.ts.map +1 -1
  213. package/dist/lib/primitive/scene.d.ts +4 -4
  214. package/dist/lib/primitive/scene.d.ts.map +1 -1
  215. package/dist/lib/primitive/text.d.ts +10 -3
  216. package/dist/lib/primitive/text.d.ts.map +1 -1
  217. package/dist/lib/types.d.ts +8 -0
  218. package/dist/lib/types.d.ts.map +1 -1
  219. package/package.json +12 -4
  220. package/dist/es/compile/path.d.ts.map +0 -1
  221. package/dist/es/compile/path.js +0 -636
  222. package/dist/es/compile/view-box.d.ts +0 -5
  223. package/dist/es/compile/view-box.d.ts.map +0 -1
  224. package/dist/es/primitive/view-box.d.ts +0 -12
  225. package/dist/es/primitive/view-box.d.ts.map +0 -1
  226. package/dist/lib/compile/path.cjs +0 -636
  227. package/dist/lib/compile/path.d.ts.map +0 -1
  228. package/dist/lib/compile/view-box.d.ts +0 -5
  229. package/dist/lib/compile/view-box.d.ts.map +0 -1
  230. package/dist/lib/primitive/view-box.d.ts +0 -12
  231. package/dist/lib/primitive/view-box.d.ts.map +0 -1
@@ -12,117 +12,6 @@ export declare const NODE_SHAPES: {
12
12
  };
13
13
  /** 节点形状字面量类型 */
14
14
  export type NodeShape = ValueOf<typeof NODE_SHAPES>;
15
- /** 节点字体规格:family/size/weight/style 全部可选,透传 SVG `<text>` font-* 属性 */
16
- export declare const FontSchema: z.ZodObject<{
17
- family: z.ZodOptional<z.ZodString>;
18
- size: z.ZodOptional<z.ZodNumber>;
19
- weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
20
- style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
21
- }, "strip", z.ZodTypeAny, {
22
- family?: string | undefined;
23
- size?: number | undefined;
24
- weight?: number | "normal" | "bold" | undefined;
25
- style?: "normal" | "italic" | "oblique" | undefined;
26
- }, {
27
- family?: string | undefined;
28
- size?: number | undefined;
29
- weight?: number | "normal" | "bold" | undefined;
30
- style?: "normal" | "italic" | "oblique" | undefined;
31
- }>;
32
- /** 节点字体规格 IR 类型(所有字段可选,编译期解析默认值) */
33
- export type IRFont = z.infer<typeof FontSchema>;
34
- /**
35
- * 单行文本规格:纯字符串走块级默认,对象形式可覆盖 fill/opacity/font
36
- * @description 行级覆盖只生效于本行 `<tspan>`;font 子字段未填则继承块级;align/lineHeight 不可被行覆盖
37
- */
38
- export declare const LineSpecSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
39
- text: z.ZodString;
40
- fill: z.ZodOptional<z.ZodString>;
41
- opacity: z.ZodOptional<z.ZodNumber>;
42
- font: z.ZodOptional<z.ZodObject<{
43
- family: z.ZodOptional<z.ZodString>;
44
- size: z.ZodOptional<z.ZodNumber>;
45
- weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
46
- style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
47
- }, "strip", z.ZodTypeAny, {
48
- family?: string | undefined;
49
- size?: number | undefined;
50
- weight?: number | "normal" | "bold" | undefined;
51
- style?: "normal" | "italic" | "oblique" | undefined;
52
- }, {
53
- family?: string | undefined;
54
- size?: number | undefined;
55
- weight?: number | "normal" | "bold" | undefined;
56
- style?: "normal" | "italic" | "oblique" | undefined;
57
- }>>;
58
- }, "strip", z.ZodTypeAny, {
59
- text: string;
60
- fill?: string | undefined;
61
- opacity?: number | undefined;
62
- font?: {
63
- family?: string | undefined;
64
- size?: number | undefined;
65
- weight?: number | "normal" | "bold" | undefined;
66
- style?: "normal" | "italic" | "oblique" | undefined;
67
- } | undefined;
68
- }, {
69
- text: string;
70
- fill?: string | undefined;
71
- opacity?: number | undefined;
72
- font?: {
73
- family?: string | undefined;
74
- size?: number | undefined;
75
- weight?: number | "normal" | "bold" | undefined;
76
- style?: "normal" | "italic" | "oblique" | undefined;
77
- } | undefined;
78
- }>]>;
79
- /** 行规格 IR 类型 */
80
- export type IRLineSpec = z.infer<typeof LineSpecSchema>;
81
- /**
82
- * 节点文本:单字符串或非空多行 LineSpec 数组
83
- * @description 选数组而非 `\n` 字符串:JSON 友好无 escape,行级覆盖天然落字段
84
- */
85
- export declare const NodeTextSchema: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
86
- text: z.ZodString;
87
- fill: z.ZodOptional<z.ZodString>;
88
- opacity: z.ZodOptional<z.ZodNumber>;
89
- font: z.ZodOptional<z.ZodObject<{
90
- family: z.ZodOptional<z.ZodString>;
91
- size: z.ZodOptional<z.ZodNumber>;
92
- weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
93
- style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
94
- }, "strip", z.ZodTypeAny, {
95
- family?: string | undefined;
96
- size?: number | undefined;
97
- weight?: number | "normal" | "bold" | undefined;
98
- style?: "normal" | "italic" | "oblique" | undefined;
99
- }, {
100
- family?: string | undefined;
101
- size?: number | undefined;
102
- weight?: number | "normal" | "bold" | undefined;
103
- style?: "normal" | "italic" | "oblique" | undefined;
104
- }>>;
105
- }, "strip", z.ZodTypeAny, {
106
- text: string;
107
- fill?: string | undefined;
108
- opacity?: number | undefined;
109
- font?: {
110
- family?: string | undefined;
111
- size?: number | undefined;
112
- weight?: number | "normal" | "bold" | undefined;
113
- style?: "normal" | "italic" | "oblique" | undefined;
114
- } | undefined;
115
- }, {
116
- text: string;
117
- fill?: string | undefined;
118
- opacity?: number | undefined;
119
- font?: {
120
- family?: string | undefined;
121
- size?: number | undefined;
122
- weight?: number | "normal" | "bold" | undefined;
123
- style?: "normal" | "italic" | "oblique" | undefined;
124
- } | undefined;
125
- }>]>, "many">]>;
126
15
  /** 节点文本对齐(TikZ `align=` 同义) */
127
16
  export declare const NODE_TEXT_ALIGNS: {
128
17
  readonly left: "left";
@@ -132,7 +21,7 @@ export declare const NODE_TEXT_ALIGNS: {
132
21
  export type NodeTextAlign = ValueOf<typeof NODE_TEXT_ALIGNS>;
133
22
  /**
134
23
  * 节点附属标签 label(TikZ `[label=above:foo]` 同义)
135
- * @description 可挂多个;label 不参与 viewBox。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
24
+ * @description 可挂多个;label 不参与 layout。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
136
25
  */
137
26
  export declare const NodeLabelSchema: z.ZodObject<{
138
27
  text: z.ZodString;
@@ -169,25 +58,25 @@ export declare const NodeLabelSchema: z.ZodObject<{
169
58
  text: string;
170
59
  distance?: number | undefined;
171
60
  opacity?: number | undefined;
172
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
173
61
  font?: {
174
62
  family?: string | undefined;
175
63
  size?: number | undefined;
176
64
  weight?: number | "normal" | "bold" | undefined;
177
65
  style?: "normal" | "italic" | "oblique" | undefined;
178
66
  } | undefined;
67
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
179
68
  textColor?: string | undefined;
180
69
  }, {
181
70
  text: string;
182
71
  distance?: number | undefined;
183
72
  opacity?: number | undefined;
184
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
185
73
  font?: {
186
74
  family?: string | undefined;
187
75
  size?: number | undefined;
188
76
  weight?: number | "normal" | "bold" | undefined;
189
77
  style?: "normal" | "italic" | "oblique" | undefined;
190
78
  } | undefined;
79
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
191
80
  textColor?: string | undefined;
192
81
  }>;
193
82
  /** Node label IR 类型 */
@@ -287,7 +176,7 @@ export declare const NodeSchema: z.ZodObject<{
287
176
  strokeWidth: z.ZodOptional<z.ZodNumber>;
288
177
  dashed: z.ZodOptional<z.ZodBoolean>;
289
178
  dotted: z.ZodOptional<z.ZodBoolean>;
290
- dashArray: z.ZodOptional<z.ZodString>;
179
+ dashArray: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
291
180
  roundedCorners: z.ZodOptional<z.ZodNumber>;
292
181
  minimumWidth: z.ZodOptional<z.ZodNumber>;
293
182
  minimumHeight: z.ZodOptional<z.ZodNumber>;
@@ -353,25 +242,25 @@ export declare const NodeSchema: z.ZodObject<{
353
242
  text: string;
354
243
  distance?: number | undefined;
355
244
  opacity?: number | undefined;
356
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
357
245
  font?: {
358
246
  family?: string | undefined;
359
247
  size?: number | undefined;
360
248
  weight?: number | "normal" | "bold" | undefined;
361
249
  style?: "normal" | "italic" | "oblique" | undefined;
362
250
  } | undefined;
251
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
363
252
  textColor?: string | undefined;
364
253
  }, {
365
254
  text: string;
366
255
  distance?: number | undefined;
367
256
  opacity?: number | undefined;
368
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
369
257
  font?: {
370
258
  family?: string | undefined;
371
259
  size?: number | undefined;
372
260
  weight?: number | "normal" | "bold" | undefined;
373
261
  style?: "normal" | "italic" | "oblique" | undefined;
374
262
  } | undefined;
263
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
375
264
  textColor?: string | undefined;
376
265
  }>, z.ZodArray<z.ZodObject<{
377
266
  text: z.ZodString;
@@ -408,25 +297,25 @@ export declare const NodeSchema: z.ZodObject<{
408
297
  text: string;
409
298
  distance?: number | undefined;
410
299
  opacity?: number | undefined;
411
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
412
300
  font?: {
413
301
  family?: string | undefined;
414
302
  size?: number | undefined;
415
303
  weight?: number | "normal" | "bold" | undefined;
416
304
  style?: "normal" | "italic" | "oblique" | undefined;
417
305
  } | undefined;
306
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
418
307
  textColor?: string | undefined;
419
308
  }, {
420
309
  text: string;
421
310
  distance?: number | undefined;
422
311
  opacity?: number | undefined;
423
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
424
312
  font?: {
425
313
  family?: string | undefined;
426
314
  size?: number | undefined;
427
315
  weight?: number | "normal" | "bold" | undefined;
428
316
  style?: "normal" | "italic" | "oblique" | undefined;
429
317
  } | undefined;
318
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
430
319
  textColor?: string | undefined;
431
320
  }>, "many">]>>;
432
321
  }, "strip", z.ZodTypeAny, {
@@ -440,9 +329,6 @@ export declare const NodeSchema: z.ZodObject<{
440
329
  offset: [number, number];
441
330
  };
442
331
  fill?: string | undefined;
443
- shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
444
- scale?: number | undefined;
445
- opacity?: number | undefined;
446
332
  text?: string | (string | {
447
333
  text: string;
448
334
  fill?: string | undefined;
@@ -454,41 +340,44 @@ export declare const NodeSchema: z.ZodObject<{
454
340
  style?: "normal" | "italic" | "oblique" | undefined;
455
341
  } | undefined;
456
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;
457
352
  label?: {
458
353
  text: string;
459
354
  distance?: number | undefined;
460
355
  opacity?: number | undefined;
461
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
462
356
  font?: {
463
357
  family?: string | undefined;
464
358
  size?: number | undefined;
465
359
  weight?: number | "normal" | "bold" | undefined;
466
360
  style?: "normal" | "italic" | "oblique" | undefined;
467
361
  } | undefined;
362
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
468
363
  textColor?: string | undefined;
469
364
  } | {
470
365
  text: string;
471
366
  distance?: number | undefined;
472
367
  opacity?: number | undefined;
473
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
474
368
  font?: {
475
369
  family?: string | undefined;
476
370
  size?: number | undefined;
477
371
  weight?: number | "normal" | "bold" | undefined;
478
372
  style?: "normal" | "italic" | "oblique" | undefined;
479
373
  } | undefined;
374
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
480
375
  textColor?: string | undefined;
481
376
  }[] | undefined;
482
377
  stroke?: string | undefined;
483
378
  strokeWidth?: number | undefined;
484
379
  fillOpacity?: number | undefined;
485
380
  drawOpacity?: number | undefined;
486
- font?: {
487
- family?: string | undefined;
488
- size?: number | undefined;
489
- weight?: number | "normal" | "bold" | undefined;
490
- style?: "normal" | "italic" | "oblique" | undefined;
491
- } | undefined;
492
381
  textColor?: string | undefined;
493
382
  id?: string | undefined;
494
383
  rotate?: number | undefined;
@@ -496,7 +385,7 @@ export declare const NodeSchema: z.ZodObject<{
496
385
  lineHeight?: number | undefined;
497
386
  dashed?: boolean | undefined;
498
387
  dotted?: boolean | undefined;
499
- dashArray?: string | undefined;
388
+ dashArray?: number[] | undefined;
500
389
  roundedCorners?: number | undefined;
501
390
  minimumWidth?: number | undefined;
502
391
  minimumHeight?: number | undefined;
@@ -519,9 +408,6 @@ export declare const NodeSchema: z.ZodObject<{
519
408
  offset: [number, number];
520
409
  };
521
410
  fill?: string | undefined;
522
- shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
523
- scale?: number | undefined;
524
- opacity?: number | undefined;
525
411
  text?: string | (string | {
526
412
  text: string;
527
413
  fill?: string | undefined;
@@ -533,41 +419,44 @@ export declare const NodeSchema: z.ZodObject<{
533
419
  style?: "normal" | "italic" | "oblique" | undefined;
534
420
  } | undefined;
535
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;
536
431
  label?: {
537
432
  text: string;
538
433
  distance?: number | undefined;
539
434
  opacity?: number | undefined;
540
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
541
435
  font?: {
542
436
  family?: string | undefined;
543
437
  size?: number | undefined;
544
438
  weight?: number | "normal" | "bold" | undefined;
545
439
  style?: "normal" | "italic" | "oblique" | undefined;
546
440
  } | undefined;
441
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
547
442
  textColor?: string | undefined;
548
443
  } | {
549
444
  text: string;
550
445
  distance?: number | undefined;
551
446
  opacity?: number | undefined;
552
- position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
553
447
  font?: {
554
448
  family?: string | undefined;
555
449
  size?: number | undefined;
556
450
  weight?: number | "normal" | "bold" | undefined;
557
451
  style?: "normal" | "italic" | "oblique" | undefined;
558
452
  } | undefined;
453
+ position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
559
454
  textColor?: string | undefined;
560
455
  }[] | undefined;
561
456
  stroke?: string | undefined;
562
457
  strokeWidth?: number | undefined;
563
458
  fillOpacity?: number | undefined;
564
459
  drawOpacity?: number | undefined;
565
- font?: {
566
- family?: string | undefined;
567
- size?: number | undefined;
568
- weight?: number | "normal" | "bold" | undefined;
569
- style?: "normal" | "italic" | "oblique" | undefined;
570
- } | undefined;
571
460
  textColor?: string | undefined;
572
461
  id?: string | undefined;
573
462
  rotate?: number | undefined;
@@ -575,7 +464,7 @@ export declare const NodeSchema: z.ZodObject<{
575
464
  lineHeight?: number | undefined;
576
465
  dashed?: boolean | undefined;
577
466
  dotted?: boolean | undefined;
578
- dashArray?: string | undefined;
467
+ dashArray?: number[] | undefined;
579
468
  roundedCorners?: number | undefined;
580
469
  minimumWidth?: number | undefined;
581
470
  minimumHeight?: number | undefined;
@@ -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;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,gBAAgB;AAChB,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC;AAEpD,qEAAqE;AACrE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAwBpB,CAAC;AAEJ,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBxB,CAAC;AAEJ,gBAAgB;AAChB,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAIxB,CAAC;AAEJ,+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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgLpB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -2,6 +2,8 @@ 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
4
  import { OffsetPositionSchema } from "./position/offset-position.js";
5
+ import { FontSchema } from "./font.js";
6
+ import { TextBlockSchema } from "./text.js";
5
7
  import { z } from "zod";
6
8
  //#region src/ir/node.ts
7
9
  /**
@@ -14,32 +16,6 @@ var NODE_SHAPES = {
14
16
  ellipse: "ellipse",
15
17
  diamond: "diamond"
16
18
  };
17
- /** 节点字体规格:family/size/weight/style 全部可选,透传 SVG `<text>` font-* 属性 */
18
- var FontSchema = z.object({
19
- family: z.string().optional().describe("CSS font-family string, e.g. \"serif\", \"monospace\", \"Inter, sans-serif\""),
20
- size: z.number().positive().optional().describe("Font size in user units; falls back to the renderer default when omitted"),
21
- weight: z.union([z.enum(["normal", "bold"]), z.number()]).optional().describe("CSS font-weight: keyword `normal` / `bold` or numeric 100..900"),
22
- style: z.enum([
23
- "normal",
24
- "italic",
25
- "oblique"
26
- ]).optional().describe("CSS font-style")
27
- }).describe("Font properties for the node text label; all fields optional, nested object form.");
28
- /**
29
- * 单行文本规格:纯字符串走块级默认,对象形式可覆盖 fill/opacity/font
30
- * @description 行级覆盖只生效于本行 `<tspan>`;font 子字段未填则继承块级;align/lineHeight 不可被行覆盖
31
- */
32
- var LineSpecSchema = z.union([z.string(), z.object({
33
- text: z.string().describe("Line content"),
34
- fill: z.string().optional().describe("Per-line text color; overrides block default"),
35
- opacity: z.number().min(0).max(1).optional().describe("Per-line opacity 0..1"),
36
- font: FontSchema.optional().describe("Per-line font overrides; missing fields inherit from block-level `font`")
37
- })]).describe("Single line of text: bare string for default styling, or an object with per-line `fill` / `opacity` / `font` overrides.");
38
- /**
39
- * 节点文本:单字符串或非空多行 LineSpec 数组
40
- * @description 选数组而非 `\n` 字符串:JSON 友好无 escape,行级覆盖天然落字段
41
- */
42
- 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).");
43
19
  /** 节点文本对齐(TikZ `align=` 同义) */
44
20
  var NODE_TEXT_ALIGNS = {
45
21
  left: "left",
@@ -48,7 +24,7 @@ var NODE_TEXT_ALIGNS = {
48
24
  };
49
25
  /**
50
26
  * 节点附属标签 label(TikZ `[label=above:foo]` 同义)
51
- * @description 可挂多个;label 不参与 viewBox。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
27
+ * @description 可挂多个;label 不参与 layout。position 支持 8 方向枚举或数字角度(polar 约定:0°=+x,90°=+y 屏幕下方);默认 position='above',distance=4
52
28
  */
53
29
  var NodeLabelSchema = z.object({
54
30
  text: z.string().describe("Label text content; rendered as a single line."),
@@ -69,7 +45,7 @@ var NodeSchema = z.object({
69
45
  OffsetPositionSchema
70
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."),
71
47
  rotate: z.number().optional().describe("Rotation in degrees around the node center; positive = clockwise (matches TikZ rotate=...)"),
72
- text: NodeTextSchema.optional(),
48
+ text: TextBlockSchema.optional(),
73
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)."),
74
50
  lineHeight: z.number().positive().optional().describe("Line height in user units; falls back to `font.size × 1.2` when omitted."),
75
51
  fill: z.string().optional().describe("Background color of the node shape; any CSS color (e.g. \"lightblue\", \"#fafafa\", \"rgba(...)\")"),
@@ -79,8 +55,8 @@ var NodeSchema = z.object({
79
55
  strokeWidth: z.number().optional().describe("Border width in user units; defaults to 1 when omitted"),
80
56
  dashed: z.boolean().optional().describe("Border style preset: dashed line (TikZ `dashed`); compiled to a default dash pattern. `dashArray` takes precedence."),
81
57
  dotted: z.boolean().optional().describe("Border style preset: dotted line (TikZ `dotted`); compiled to a default dot pattern. `dashArray` and `dashed` take precedence."),
82
- dashArray: z.string().optional().describe("Explicit SVG stroke-dasharray value (e.g. \"4 2\"); overrides `dashed` / `dotted`."),
83
- roundedCorners: z.number().nonnegative().optional().describe("Corner radius in user units; only effective on `rectangle` shape (rx / ry on `<rect>`)."),
58
+ dashArray: z.array(z.number().finite().nonnegative()).min(1).optional().describe("Explicit stroke dash pattern lengths in user units (e.g. [4, 2]); overrides `dashed` / `dotted`."),
59
+ roundedCorners: z.number().nonnegative().optional().describe("Corner radius in user units; only effective on `rectangle` shape."),
84
60
  minimumWidth: z.number().nonnegative().optional().describe("Minimum visual border width in user units; floors the bounding box width."),
85
61
  minimumHeight: z.number().nonnegative().optional().describe("Minimum visual border height in user units; floors the bounding box height."),
86
62
  minimumSize: z.number().nonnegative().optional().describe("Symmetric alias for `minimumWidth` + `minimumHeight`; axis-specific fields take precedence."),
@@ -98,4 +74,4 @@ var NodeSchema = z.object({
98
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`.")
99
75
  }).describe("Node primitive: a positioned, optionally textual shape (rectangle / circle / ellipse / diamond)");
100
76
  //#endregion
101
- export { FontSchema, LineSpecSchema, NODE_SHAPES, NODE_TEXT_ALIGNS, NodeLabelSchema, NodeSchema, NodeTextSchema };
77
+ export { NODE_SHAPES, NODE_TEXT_ALIGNS, NodeLabelSchema, NodeSchema };
@@ -20,9 +20,9 @@ export type ArrowShape = ValueOf<typeof ARROW_SHAPES>;
20
20
  * @description compile 与 render 都引用此表判定 fill 是否丢弃;空心 shape 用 color 主导描边、lineWidth 控描边粗
21
21
  */
22
22
  export declare const HOLLOW_ARROW_SHAPES: Set<ArrowShape>;
23
- /** marker 默认尺寸(length / width 的 fallback;arrowMarkers viewBox 内的几何也按 10 单位定义) */
23
+ /** 箭头默认尺寸(length / width 的 fallback */
24
24
  export declare const ARROW_MARKER_DEFAULT_SIZE = 6;
25
- /** 空心 shape 描边默认粗细(lineWidth fallback;refX / shrink 计算都用它做"back stroke 半宽") */
25
+ /** 空心 shape 描边默认粗细(lineWidth fallback) */
26
26
  export declare const ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = 1.5;
27
27
  /**
28
28
  * 端点级箭头视觉规格 schema
@@ -48,20 +48,20 @@ export declare const ArrowEndDetailSchema: z.ZodObject<{
48
48
  }, "strip", z.ZodTypeAny, {
49
49
  length?: number | undefined;
50
50
  fill?: string | undefined;
51
+ opacity?: number | undefined;
51
52
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
52
53
  scale?: number | undefined;
53
54
  width?: number | undefined;
54
55
  color?: string | undefined;
55
- opacity?: number | undefined;
56
56
  lineWidth?: number | undefined;
57
57
  }, {
58
58
  length?: number | undefined;
59
59
  fill?: string | undefined;
60
+ opacity?: number | undefined;
60
61
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
61
62
  scale?: number | undefined;
62
63
  width?: number | undefined;
63
64
  color?: string | undefined;
64
- opacity?: number | undefined;
65
65
  lineWidth?: number | undefined;
66
66
  }>;
67
67
  /**
@@ -106,20 +106,20 @@ export declare const ArrowDetailSchema: z.ZodObject<{
106
106
  }, "strip", z.ZodTypeAny, {
107
107
  length?: number | undefined;
108
108
  fill?: string | undefined;
109
+ opacity?: number | undefined;
109
110
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
110
111
  scale?: number | undefined;
111
112
  width?: number | undefined;
112
113
  color?: string | undefined;
113
- opacity?: number | undefined;
114
114
  lineWidth?: number | undefined;
115
115
  }, {
116
116
  length?: number | undefined;
117
117
  fill?: string | undefined;
118
+ opacity?: number | undefined;
118
119
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
119
120
  scale?: number | undefined;
120
121
  width?: number | undefined;
121
122
  color?: string | undefined;
122
- opacity?: number | undefined;
123
123
  lineWidth?: number | undefined;
124
124
  }>>;
125
125
  end: z.ZodOptional<z.ZodObject<{
@@ -142,78 +142,78 @@ export declare const ArrowDetailSchema: z.ZodObject<{
142
142
  }, "strip", z.ZodTypeAny, {
143
143
  length?: number | undefined;
144
144
  fill?: string | undefined;
145
+ opacity?: number | undefined;
145
146
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
146
147
  scale?: number | undefined;
147
148
  width?: number | undefined;
148
149
  color?: string | undefined;
149
- opacity?: number | undefined;
150
150
  lineWidth?: number | undefined;
151
151
  }, {
152
152
  length?: number | undefined;
153
153
  fill?: string | undefined;
154
+ opacity?: number | undefined;
154
155
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
155
156
  scale?: number | undefined;
156
157
  width?: number | undefined;
157
158
  color?: string | undefined;
158
- opacity?: number | undefined;
159
159
  lineWidth?: number | undefined;
160
160
  }>>;
161
161
  }, "strip", z.ZodTypeAny, {
162
162
  length?: number | undefined;
163
163
  fill?: string | undefined;
164
+ opacity?: number | undefined;
164
165
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
165
166
  scale?: number | undefined;
166
167
  width?: number | undefined;
167
168
  color?: string | undefined;
168
- opacity?: number | undefined;
169
169
  lineWidth?: number | undefined;
170
170
  start?: {
171
171
  length?: number | undefined;
172
172
  fill?: string | undefined;
173
+ opacity?: number | undefined;
173
174
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
174
175
  scale?: number | undefined;
175
176
  width?: number | undefined;
176
177
  color?: string | undefined;
177
- opacity?: number | undefined;
178
178
  lineWidth?: number | undefined;
179
179
  } | undefined;
180
180
  end?: {
181
181
  length?: number | undefined;
182
182
  fill?: string | undefined;
183
+ opacity?: number | undefined;
183
184
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
184
185
  scale?: number | undefined;
185
186
  width?: number | undefined;
186
187
  color?: string | undefined;
187
- opacity?: number | undefined;
188
188
  lineWidth?: number | undefined;
189
189
  } | undefined;
190
190
  }, {
191
191
  length?: number | undefined;
192
192
  fill?: string | undefined;
193
+ opacity?: number | undefined;
193
194
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
194
195
  scale?: number | undefined;
195
196
  width?: number | undefined;
196
197
  color?: string | undefined;
197
- opacity?: number | undefined;
198
198
  lineWidth?: number | undefined;
199
199
  start?: {
200
200
  length?: number | undefined;
201
201
  fill?: string | undefined;
202
+ opacity?: number | undefined;
202
203
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
203
204
  scale?: number | undefined;
204
205
  width?: number | undefined;
205
206
  color?: string | undefined;
206
- opacity?: number | undefined;
207
207
  lineWidth?: number | undefined;
208
208
  } | undefined;
209
209
  end?: {
210
210
  length?: number | undefined;
211
211
  fill?: string | undefined;
212
+ opacity?: number | undefined;
212
213
  shape?: "normal" | "open" | "stealth" | "diamond" | "openDiamond" | "circle" | "openCircle" | undefined;
213
214
  scale?: number | undefined;
214
215
  width?: number | undefined;
215
216
  color?: string | undefined;
216
- opacity?: number | undefined;
217
217
  lineWidth?: number | undefined;
218
218
  } | undefined;
219
219
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"arrow.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/arrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX,gBAAgB;AAChB,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iBAA6D,CAAC;AAE9F,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,+EAA+E;AAC/E,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2D9B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEF,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,mBAAmB;AACnB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"arrow.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/arrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX,gBAAgB;AAChB,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,YAAY,CAAC,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iBAA6D,CAAC;AAE9F,wCAAwC;AACxC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,0CAA0C;AAC1C,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2D9B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEF,gBAAgB;AAChB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,mBAAmB;AACnB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -22,9 +22,9 @@ var HOLLOW_ARROW_SHAPES = new Set([
22
22
  "openDiamond",
23
23
  "openCircle"
24
24
  ]);
25
- /** marker 默认尺寸(length / width 的 fallback;arrowMarkers viewBox 内的几何也按 10 单位定义) */
25
+ /** 箭头默认尺寸(length / width 的 fallback */
26
26
  var ARROW_MARKER_DEFAULT_SIZE = 6;
27
- /** 空心 shape 描边默认粗细(lineWidth fallback;refX / shrink 计算都用它做"back stroke 半宽") */
27
+ /** 空心 shape 描边默认粗细(lineWidth fallback) */
28
28
  var ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = 1.5;
29
29
  /**
30
30
  * 端点级箭头视觉规格 schema
@@ -33,9 +33,9 @@ var ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = 1.5;
33
33
  var ArrowEndDetailSchema = z.object({
34
34
  shape: 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
35
  scale: 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: 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: z.number().nonnegative().optional().describe("Tip width in user units (perpendicular to the path). Defaults to ~6 (matching the legacy hardcoded markerHeight)."),
38
- color: z.string().optional().describe("Stroke color override. When omitted, the marker inherits the path stroke via `context-stroke`."),
36
+ length: z.number().nonnegative().optional().describe("Tip length in user units (the dimension along the path direction). Defaults to ~6."),
37
+ width: z.number().nonnegative().optional().describe("Tip width in user units (perpendicular to the path). Defaults to ~6."),
38
+ color: z.string().optional().describe("Stroke color override. When omitted, the renderer should inherit the path stroke."),
39
39
  fill: 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
40
  opacity: z.number().min(0).max(1).optional().describe("Arrow opacity 0..1, independent from the path opacity. When omitted, inherits the path opacity."),
41
41
  lineWidth: z.number().nonnegative().optional().describe("Stroke width for hollow shapes (user units). Defaults to 1.5. Solid shapes ignore this field.")