@retikz/core 0.1.0-beta.1 → 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 (113) hide show
  1. package/dist/es/compile/compile.d.ts +3 -3
  2. package/dist/es/compile/compile.d.ts.map +1 -1
  3. package/dist/es/compile/compile.js +4 -4
  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/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 +2 -2
  10. package/dist/es/compile/node.d.ts.map +1 -1
  11. package/dist/es/compile/node.js +6 -6
  12. package/dist/es/compile/path/arrow-geometry.d.ts +22 -0
  13. package/dist/es/compile/path/arrow-geometry.d.ts.map +1 -0
  14. package/dist/es/compile/path/arrow-geometry.js +40 -0
  15. package/dist/es/compile/path/index.js +6 -6
  16. package/dist/es/compile/path/label.d.ts +1 -1
  17. package/dist/es/compile/path/label.js +1 -1
  18. package/dist/es/compile/path/shrink.d.ts +4 -10
  19. package/dist/es/compile/path/shrink.d.ts.map +1 -1
  20. package/dist/es/compile/path/shrink.js +10 -20
  21. package/dist/es/compile/path/split.d.ts +4 -4
  22. package/dist/es/compile/path/split.d.ts.map +1 -1
  23. package/dist/es/compile/path/split.js +8 -8
  24. package/dist/es/index.d.ts +2 -2
  25. package/dist/es/index.d.ts.map +1 -1
  26. package/dist/es/index.js +2 -1
  27. package/dist/es/ir/coordinate.d.ts +1 -1
  28. package/dist/es/ir/coordinate.js +1 -1
  29. package/dist/es/ir/font.js +1 -1
  30. package/dist/es/ir/node.d.ts +4 -4
  31. package/dist/es/ir/node.d.ts.map +1 -1
  32. package/dist/es/ir/node.js +2 -2
  33. package/dist/es/ir/path/arrow.d.ts +2 -2
  34. package/dist/es/ir/path/arrow.d.ts.map +1 -1
  35. package/dist/es/ir/path/arrow.js +5 -5
  36. package/dist/es/ir/path/path.d.ts +3 -3
  37. package/dist/es/ir/path/path.d.ts.map +1 -1
  38. package/dist/es/ir/path/path.js +3 -3
  39. package/dist/es/ir/position/at-position.js +1 -1
  40. package/dist/es/ir/scene.d.ts +16 -16
  41. package/dist/es/primitive/ellipse.d.ts +1 -1
  42. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  43. package/dist/es/primitive/index.d.ts +1 -1
  44. package/dist/es/primitive/index.d.ts.map +1 -1
  45. package/dist/es/primitive/layout.d.ts +12 -0
  46. package/dist/es/primitive/layout.d.ts.map +1 -0
  47. package/dist/es/primitive/path.d.ts +4 -4
  48. package/dist/es/primitive/path.d.ts.map +1 -1
  49. package/dist/es/primitive/rect.d.ts +2 -2
  50. package/dist/es/primitive/rect.d.ts.map +1 -1
  51. package/dist/es/primitive/scene.d.ts +4 -4
  52. package/dist/es/primitive/scene.d.ts.map +1 -1
  53. package/dist/lib/compile/compile.cjs +4 -4
  54. package/dist/lib/compile/compile.d.ts +3 -3
  55. package/dist/lib/compile/compile.d.ts.map +1 -1
  56. package/dist/lib/compile/index.d.ts +1 -1
  57. package/dist/lib/compile/index.d.ts.map +1 -1
  58. package/dist/lib/compile/{view-box.cjs → layout.cjs} +4 -4
  59. package/dist/lib/compile/layout.d.ts +5 -0
  60. package/dist/lib/compile/layout.d.ts.map +1 -0
  61. package/dist/lib/compile/node.cjs +6 -6
  62. package/dist/lib/compile/node.d.ts +2 -2
  63. package/dist/lib/compile/node.d.ts.map +1 -1
  64. package/dist/lib/compile/path/arrow-geometry.cjs +41 -0
  65. package/dist/lib/compile/path/arrow-geometry.d.ts +22 -0
  66. package/dist/lib/compile/path/arrow-geometry.d.ts.map +1 -0
  67. package/dist/lib/compile/path/index.cjs +4 -4
  68. package/dist/lib/compile/path/label.cjs +1 -1
  69. package/dist/lib/compile/path/label.d.ts +1 -1
  70. package/dist/lib/compile/path/shrink.cjs +10 -20
  71. package/dist/lib/compile/path/shrink.d.ts +4 -10
  72. package/dist/lib/compile/path/shrink.d.ts.map +1 -1
  73. package/dist/lib/compile/path/split.cjs +8 -8
  74. package/dist/lib/compile/path/split.d.ts +4 -4
  75. package/dist/lib/compile/path/split.d.ts.map +1 -1
  76. package/dist/lib/index.cjs +2 -0
  77. package/dist/lib/index.d.ts +2 -2
  78. package/dist/lib/index.d.ts.map +1 -1
  79. package/dist/lib/ir/coordinate.cjs +1 -1
  80. package/dist/lib/ir/coordinate.d.ts +1 -1
  81. package/dist/lib/ir/font.cjs +1 -1
  82. package/dist/lib/ir/node.cjs +2 -2
  83. package/dist/lib/ir/node.d.ts +4 -4
  84. package/dist/lib/ir/node.d.ts.map +1 -1
  85. package/dist/lib/ir/path/arrow.cjs +5 -5
  86. package/dist/lib/ir/path/arrow.d.ts +2 -2
  87. package/dist/lib/ir/path/arrow.d.ts.map +1 -1
  88. package/dist/lib/ir/path/path.cjs +3 -3
  89. package/dist/lib/ir/path/path.d.ts +3 -3
  90. package/dist/lib/ir/path/path.d.ts.map +1 -1
  91. package/dist/lib/ir/position/at-position.cjs +1 -1
  92. package/dist/lib/ir/scene.d.ts +16 -16
  93. package/dist/lib/primitive/ellipse.d.ts +1 -1
  94. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  95. package/dist/lib/primitive/index.d.ts +1 -1
  96. package/dist/lib/primitive/index.d.ts.map +1 -1
  97. package/dist/lib/primitive/layout.d.ts +12 -0
  98. package/dist/lib/primitive/layout.d.ts.map +1 -0
  99. package/dist/lib/primitive/path.d.ts +4 -4
  100. package/dist/lib/primitive/path.d.ts.map +1 -1
  101. package/dist/lib/primitive/rect.d.ts +2 -2
  102. package/dist/lib/primitive/rect.d.ts.map +1 -1
  103. package/dist/lib/primitive/scene.d.ts +4 -4
  104. package/dist/lib/primitive/scene.d.ts.map +1 -1
  105. package/package.json +1 -2
  106. package/dist/es/compile/view-box.d.ts +0 -5
  107. package/dist/es/compile/view-box.d.ts.map +0 -1
  108. package/dist/es/primitive/view-box.d.ts +0 -12
  109. package/dist/es/primitive/view-box.d.ts.map +0 -1
  110. package/dist/lib/compile/view-box.d.ts +0 -5
  111. package/dist/lib/compile/view-box.d.ts.map +0 -1
  112. package/dist/lib/primitive/view-box.d.ts +0 -12
  113. package/dist/lib/primitive/view-box.d.ts.map +0 -1
@@ -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.")
@@ -3,7 +3,7 @@ export declare const PathSchema: z.ZodObject<{
3
3
  type: z.ZodLiteral<"path">;
4
4
  stroke: z.ZodOptional<z.ZodString>;
5
5
  strokeWidth: z.ZodOptional<z.ZodNumber>;
6
- strokeDasharray: z.ZodOptional<z.ZodString>;
6
+ dashPattern: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
7
7
  arrow: z.ZodOptional<z.ZodEnum<["none", "->", "<-", "<->"]>>;
8
8
  arrowDetail: z.ZodOptional<z.ZodObject<{
9
9
  shape: z.ZodOptional<z.ZodNativeEnum<{
@@ -838,7 +838,7 @@ export declare const PathSchema: z.ZodObject<{
838
838
  opacity?: number | undefined;
839
839
  stroke?: string | undefined;
840
840
  strokeWidth?: number | undefined;
841
- strokeDasharray?: string | undefined;
841
+ dashPattern?: number[] | undefined;
842
842
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
843
843
  arrowDetail?: {
844
844
  length?: number | undefined;
@@ -1013,7 +1013,7 @@ export declare const PathSchema: z.ZodObject<{
1013
1013
  opacity?: number | undefined;
1014
1014
  stroke?: string | undefined;
1015
1015
  strokeWidth?: number | undefined;
1016
- strokeDasharray?: string | undefined;
1016
+ dashPattern?: number[] | undefined;
1017
1017
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
1018
1018
  arrowDetail?: {
1019
1019
  length?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiGpB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkGpB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -6,7 +6,7 @@ var PathSchema = z.object({
6
6
  type: z.literal("path").describe("Discriminator marking this child as a path"),
7
7
  stroke: z.string().optional().describe("Stroke color of the path; any CSS color. Defaults to currentColor when omitted"),
8
8
  strokeWidth: z.number().optional().describe("Stroke width in user units; defaults to 1 when omitted"),
9
- strokeDasharray: z.string().optional().describe("Stroke dash pattern (e.g. \"4 2\"; same format as SVG/CSS `stroke-dasharray`); leave empty for solid line"),
9
+ dashPattern: z.array(z.number().finite().nonnegative()).min(1).optional().describe("Stroke dash pattern lengths in user units (e.g. [4, 2]); omitted means solid line"),
10
10
  arrow: z.enum([
11
11
  "none",
12
12
  "->",
@@ -20,12 +20,12 @@ var PathSchema = z.object({
20
20
  "butt",
21
21
  "round",
22
22
  "square"
23
- ]).optional().describe("Stroke endpoint shape (`butt` / `round` / `square`; same semantics as SVG/CSS `stroke-linecap`). Default `butt` (sharp end); `round` adds a half-disc cap; `square` extends a half-stroke past the endpoint."),
23
+ ]).optional().describe("Stroke endpoint shape (`butt` / `round` / `square`; matches TikZ `line cap`). Default `butt` (sharp end); `round` adds a half-disc cap; `square` extends a half-stroke past the endpoint."),
24
24
  lineJoin: z.enum([
25
25
  "miter",
26
26
  "round",
27
27
  "bevel"
28
- ]).optional().describe("Stroke corner shape (`miter` / `round` / `bevel`; same semantics as SVG/CSS `stroke-linejoin`). Default `miter` (sharp corner); `round` rounds the join; `bevel` cuts the corner flat."),
28
+ ]).optional().describe("Stroke corner shape (`miter` / `round` / `bevel`; matches TikZ `line join`). Default `miter` (sharp corner); `round` rounds the join; `bevel` cuts the corner flat."),
29
29
  thickness: z.enum([
30
30
  "ultraThin",
31
31
  "veryThin",
@@ -17,7 +17,7 @@ var AT_DIRECTIONS = {
17
17
  var AtPositionSchema = z.object({
18
18
  direction: z.nativeEnum(AT_DIRECTIONS).describe("Direction from the referenced node toward this node, in visual convention (above = visually upward, screen y-)."),
19
19
  of: z.string().min(1).describe("Id of the referenced node or coordinate; must be defined earlier in the IR (forward references rejected, mirroring polar `origin` and string targets)."),
20
- distance: z.number().positive().optional().describe("Distance from the referenced node center to this node center in user units. Falls back to the Tikz `nodeDistance` compile-time context, then to 1.")
20
+ distance: z.number().positive().optional().describe("Distance from the referenced node center to this node center in user units. Falls back to the TikZ `nodeDistance` compile-time context, then to 1.")
21
21
  }).describe("Relative position: place this node at `direction` direction from `of`, `distance` away. Mirrors TikZ `[<direction>=<distance> of <id>]` from the positioning library.");
22
22
  //#endregion
23
23
  export { AT_DIRECTIONS, AtPositionSchema };
@@ -94,7 +94,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
94
94
  strokeWidth: z.ZodOptional<z.ZodNumber>;
95
95
  dashed: z.ZodOptional<z.ZodBoolean>;
96
96
  dotted: z.ZodOptional<z.ZodBoolean>;
97
- dashArray: z.ZodOptional<z.ZodString>;
97
+ dashArray: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
98
98
  roundedCorners: z.ZodOptional<z.ZodNumber>;
99
99
  minimumWidth: z.ZodOptional<z.ZodNumber>;
100
100
  minimumHeight: z.ZodOptional<z.ZodNumber>;
@@ -303,7 +303,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
303
303
  lineHeight?: number | undefined;
304
304
  dashed?: boolean | undefined;
305
305
  dotted?: boolean | undefined;
306
- dashArray?: string | undefined;
306
+ dashArray?: number[] | undefined;
307
307
  roundedCorners?: number | undefined;
308
308
  minimumWidth?: number | undefined;
309
309
  minimumHeight?: number | undefined;
@@ -382,7 +382,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
382
382
  lineHeight?: number | undefined;
383
383
  dashed?: boolean | undefined;
384
384
  dotted?: boolean | undefined;
385
- dashArray?: string | undefined;
385
+ dashArray?: number[] | undefined;
386
386
  roundedCorners?: number | undefined;
387
387
  minimumWidth?: number | undefined;
388
388
  minimumHeight?: number | undefined;
@@ -398,7 +398,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
398
398
  type: z.ZodLiteral<"path">;
399
399
  stroke: z.ZodOptional<z.ZodString>;
400
400
  strokeWidth: z.ZodOptional<z.ZodNumber>;
401
- strokeDasharray: z.ZodOptional<z.ZodString>;
401
+ dashPattern: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
402
402
  arrow: z.ZodOptional<z.ZodEnum<["none", "->", "<-", "<->"]>>;
403
403
  arrowDetail: z.ZodOptional<z.ZodObject<{
404
404
  shape: z.ZodOptional<z.ZodNativeEnum<{
@@ -1233,7 +1233,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1233
1233
  opacity?: number | undefined;
1234
1234
  stroke?: string | undefined;
1235
1235
  strokeWidth?: number | undefined;
1236
- strokeDasharray?: string | undefined;
1236
+ dashPattern?: number[] | undefined;
1237
1237
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
1238
1238
  arrowDetail?: {
1239
1239
  length?: number | undefined;
@@ -1408,7 +1408,7 @@ export declare const ChildSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
1408
1408
  opacity?: number | undefined;
1409
1409
  stroke?: string | undefined;
1410
1410
  strokeWidth?: number | undefined;
1411
- strokeDasharray?: string | undefined;
1411
+ dashPattern?: number[] | undefined;
1412
1412
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
1413
1413
  arrowDetail?: {
1414
1414
  length?: number | undefined;
@@ -1603,7 +1603,7 @@ export declare const SceneSchema: z.ZodObject<{
1603
1603
  strokeWidth: z.ZodOptional<z.ZodNumber>;
1604
1604
  dashed: z.ZodOptional<z.ZodBoolean>;
1605
1605
  dotted: z.ZodOptional<z.ZodBoolean>;
1606
- dashArray: z.ZodOptional<z.ZodString>;
1606
+ dashArray: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
1607
1607
  roundedCorners: z.ZodOptional<z.ZodNumber>;
1608
1608
  minimumWidth: z.ZodOptional<z.ZodNumber>;
1609
1609
  minimumHeight: z.ZodOptional<z.ZodNumber>;
@@ -1812,7 +1812,7 @@ export declare const SceneSchema: z.ZodObject<{
1812
1812
  lineHeight?: number | undefined;
1813
1813
  dashed?: boolean | undefined;
1814
1814
  dotted?: boolean | undefined;
1815
- dashArray?: string | undefined;
1815
+ dashArray?: number[] | undefined;
1816
1816
  roundedCorners?: number | undefined;
1817
1817
  minimumWidth?: number | undefined;
1818
1818
  minimumHeight?: number | undefined;
@@ -1891,7 +1891,7 @@ export declare const SceneSchema: z.ZodObject<{
1891
1891
  lineHeight?: number | undefined;
1892
1892
  dashed?: boolean | undefined;
1893
1893
  dotted?: boolean | undefined;
1894
- dashArray?: string | undefined;
1894
+ dashArray?: number[] | undefined;
1895
1895
  roundedCorners?: number | undefined;
1896
1896
  minimumWidth?: number | undefined;
1897
1897
  minimumHeight?: number | undefined;
@@ -1907,7 +1907,7 @@ export declare const SceneSchema: z.ZodObject<{
1907
1907
  type: z.ZodLiteral<"path">;
1908
1908
  stroke: z.ZodOptional<z.ZodString>;
1909
1909
  strokeWidth: z.ZodOptional<z.ZodNumber>;
1910
- strokeDasharray: z.ZodOptional<z.ZodString>;
1910
+ dashPattern: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
1911
1911
  arrow: z.ZodOptional<z.ZodEnum<["none", "->", "<-", "<->"]>>;
1912
1912
  arrowDetail: z.ZodOptional<z.ZodObject<{
1913
1913
  shape: z.ZodOptional<z.ZodNativeEnum<{
@@ -2742,7 +2742,7 @@ export declare const SceneSchema: z.ZodObject<{
2742
2742
  opacity?: number | undefined;
2743
2743
  stroke?: string | undefined;
2744
2744
  strokeWidth?: number | undefined;
2745
- strokeDasharray?: string | undefined;
2745
+ dashPattern?: number[] | undefined;
2746
2746
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
2747
2747
  arrowDetail?: {
2748
2748
  length?: number | undefined;
@@ -2917,7 +2917,7 @@ export declare const SceneSchema: z.ZodObject<{
2917
2917
  opacity?: number | undefined;
2918
2918
  stroke?: string | undefined;
2919
2919
  strokeWidth?: number | undefined;
2920
- strokeDasharray?: string | undefined;
2920
+ dashPattern?: number[] | undefined;
2921
2921
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
2922
2922
  arrowDetail?: {
2923
2923
  length?: number | undefined;
@@ -3151,7 +3151,7 @@ export declare const SceneSchema: z.ZodObject<{
3151
3151
  opacity?: number | undefined;
3152
3152
  stroke?: string | undefined;
3153
3153
  strokeWidth?: number | undefined;
3154
- strokeDasharray?: string | undefined;
3154
+ dashPattern?: number[] | undefined;
3155
3155
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
3156
3156
  arrowDetail?: {
3157
3157
  length?: number | undefined;
@@ -3256,7 +3256,7 @@ export declare const SceneSchema: z.ZodObject<{
3256
3256
  lineHeight?: number | undefined;
3257
3257
  dashed?: boolean | undefined;
3258
3258
  dotted?: boolean | undefined;
3259
- dashArray?: string | undefined;
3259
+ dashArray?: number[] | undefined;
3260
3260
  roundedCorners?: number | undefined;
3261
3261
  minimumWidth?: number | undefined;
3262
3262
  minimumHeight?: number | undefined;
@@ -3420,7 +3420,7 @@ export declare const SceneSchema: z.ZodObject<{
3420
3420
  opacity?: number | undefined;
3421
3421
  stroke?: string | undefined;
3422
3422
  strokeWidth?: number | undefined;
3423
- strokeDasharray?: string | undefined;
3423
+ dashPattern?: number[] | undefined;
3424
3424
  arrow?: "none" | "->" | "<-" | "<->" | undefined;
3425
3425
  arrowDetail?: {
3426
3426
  length?: number | undefined;
@@ -3525,7 +3525,7 @@ export declare const SceneSchema: z.ZodObject<{
3525
3525
  lineHeight?: number | undefined;
3526
3526
  dashed?: boolean | undefined;
3527
3527
  dotted?: boolean | undefined;
3528
- dashArray?: string | undefined;
3528
+ dashArray?: number[] | undefined;
3529
3529
  roundedCorners?: number | undefined;
3530
3530
  minimumWidth?: number | undefined;
3531
3531
  minimumHeight?: number | undefined;
@@ -17,7 +17,7 @@ export type EllipsePrim = {
17
17
  /** 描边透明度 0~1 */
18
18
  strokeOpacity?: number;
19
19
  strokeWidth?: number;
20
- strokeDasharray?: string;
20
+ dashPattern?: Array<number>;
21
21
  /** 整体透明度 0~1 */
22
22
  opacity?: number;
23
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/primitive/ellipse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/primitive/ellipse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -3,6 +3,6 @@ export * from './ellipse';
3
3
  export * from './text';
4
4
  export * from './path';
5
5
  export * from './group';
6
- export * from './view-box';
6
+ export * from './layout';
7
7
  export * from './scene';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitive/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitive/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ /** 场景整体布局边界 */
2
+ export type Layout = {
3
+ /** 布局边界左上角横坐标 */
4
+ x: number;
5
+ /** 布局边界左上角纵坐标 */
6
+ y: number;
7
+ /** 布局边界宽度 */
8
+ width: number;
9
+ /** 布局边界高度 */
10
+ height: number;
11
+ };
12
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/primitive/layout.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,MAAM,MAAM,MAAM,GAAG;IACnB,iBAAiB;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,iBAAiB;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -109,16 +109,16 @@ export type PathPrim = {
109
109
  fill?: string;
110
110
  /** 填充透明度 0~1 */
111
111
  fillOpacity?: number;
112
- /** SVG fill-rule:`nonzero`(默认)/ `evenodd`(环形 / 孔洞场景) */
112
+ /** 填充规则:`nonzero`(默认)/ `evenodd`(环形 / 孔洞场景) */
113
113
  fillRule?: 'nonzero' | 'evenodd';
114
114
  /** 描边色 */
115
115
  stroke?: string;
116
- /** 描边透明度 0~1(SVG stroke-opacity) */
116
+ /** 描边透明度 0~1 */
117
117
  strokeOpacity?: number;
118
118
  /** 描边宽度 */
119
119
  strokeWidth?: number;
120
- /** SVG stroke-dasharray 模式 */
121
- strokeDasharray?: string;
120
+ /** 描边 dash pattern */
121
+ dashPattern?: Array<number>;
122
122
  /** 端点形状 */
123
123
  strokeLinecap?: 'butt' | 'round' | 'square';
124
124
  /** 拐点形状 */
@@ -1 +1 @@
1
- {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/primitive/path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/primitive/path.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,8 @@ export type RectPrim = {
20
20
  strokeOpacity?: number;
21
21
  /** 描边宽度 */
22
22
  strokeWidth?: number;
23
- /** 描边 dash 模式(如 '4 2',与 SVG/CSS `stroke-dasharray` 同格式) */
24
- strokeDasharray?: string;
23
+ /** 描边 dash pattern(如 [4, 2]) */
24
+ dashPattern?: Array<number>;
25
25
  /** 圆角半径(同时作用于 rx/ry) */
26
26
  cornerRadius?: number;
27
27
  /** 整体透明度 0~1 */
@@ -1 +1 @@
1
- {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/primitive/rect.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/primitive/rect.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,CAAC,EAAE,MAAM,CAAC;IACV,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -3,17 +3,17 @@ import { GroupPrim } from './group';
3
3
  import { PathPrim } from './path';
4
4
  import { RectPrim } from './rect';
5
5
  import { TextPrim } from './text';
6
- import { ViewBox } from './view-box';
6
+ import { Layout } from './layout';
7
7
  /**
8
8
  * Scene primitive:渲染目标无关的最大公约子集
9
9
  * @description 所有 adapter(SVG/Canvas/PDF/Skia)都应能消费;不允许出现 SVG-only 或 Canvas-only 特性(filter/marker/imageData)
10
10
  */
11
11
  export type ScenePrimitive = RectPrim | EllipsePrim | TextPrim | PathPrim | GroupPrim;
12
- /** 场景:渲染目标无关的"已布局好的图元集合 + viewBox" */
12
+ /** 场景:渲染目标无关的"已布局好的图元集合 + layout" */
13
13
  export type Scene = {
14
14
  /** 已布局好的图元数组,按渲染顺序排列 */
15
15
  primitives: Array<ScenePrimitive>;
16
- /** 整个场景的视口范围 */
17
- viewBox: ViewBox;
16
+ /** 整个场景的布局边界 */
17
+ layout: Layout;
18
18
  };
19
19
  //# sourceMappingURL=scene.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/primitive/scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtF,sCAAsC;AACtC,MAAM,MAAM,KAAK,GAAG;IAClB,wBAAwB;IACxB,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,gBAAgB;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/primitive/scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtF,qCAAqC;AACrC,MAAM,MAAM,KAAK,GAAG;IAClB,wBAAwB;IACxB,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -4,7 +4,7 @@ const require_node = require("./node.cjs");
4
4
  const require_text_metrics = require("./text-metrics.cjs");
5
5
  const require_index = require("./path/index.cjs");
6
6
  const require_precision = require("./precision.cjs");
7
- const require_view_box = require("./view-box.cjs");
7
+ const require_layout = require("./layout.cjs");
8
8
  //#region src/compile/compile.ts
9
9
  /**
10
10
  * 把 coordinate 注册成 0×0 NodeLayout
@@ -38,11 +38,11 @@ var defaultWarnDispatcher = (warning) => {
38
38
  };
39
39
  /**
40
40
  * IR → Scene 纯函数转换,所有 adapter 共享
41
- * @description Pass 1 处理 Node/coordinate 并注册 nodeIndex、发 primitive、累积 bbox;Pass 2 解析 Path 端点写 d 字符串;末端按 precision 折算 viewBox
41
+ * @description Pass 1 处理 Node/coordinate 并注册 nodeIndex、发 primitive、累积 bbox;Pass 2 解析 Path 端点写 d 字符串;末端按 precision 折算 layout
42
42
  */
43
43
  var compileToScene = (ir, options = {}) => {
44
44
  const measureText = options.measureText ?? require_text_metrics.fallbackMeasurer;
45
- const viewBoxPadding = options.padding ?? 10;
45
+ const layoutPadding = options.padding ?? 10;
46
46
  const round = require_precision.makeRound(options.precision ?? 2);
47
47
  const nodeDistance = options.nodeDistance;
48
48
  const onWarn = options.onWarn ?? defaultWarnDispatcher;
@@ -84,7 +84,7 @@ var compileToScene = (ir, options = {}) => {
84
84
  }
85
85
  return {
86
86
  primitives,
87
- viewBox: require_view_box.computeViewBox(allPoints, viewBoxPadding, round)
87
+ layout: require_layout.computeLayout(allPoints, layoutPadding, round)
88
88
  };
89
89
  };
90
90
  //#endregion
@@ -17,11 +17,11 @@ export type CompileWarning = {
17
17
  export type CompileOptions = {
18
18
  /** 注入文字度量函数;不传则用 fallback(不准但可跑) */
19
19
  measureText?: TextMeasurer;
20
- /** viewBox 周围的留白(user units),默认 10 */
20
+ /** layout 周围的留白(user units),默认 10 */
21
21
  padding?: number;
22
22
  /**
23
23
  * 输出坐标的小数位精度;默认 2
24
- * @description 仅作用于 Scene primitive / path d / viewBox;内部几何计算保持完整 double 精度
24
+ * @description 仅作用于 Scene primitive / path d / layout;内部几何计算保持完整 double 精度
25
25
  */
26
26
  precision?: number;
27
27
  /**
@@ -37,7 +37,7 @@ export type CompileOptions = {
37
37
  };
38
38
  /**
39
39
  * IR → Scene 纯函数转换,所有 adapter 共享
40
- * @description Pass 1 处理 Node/coordinate 并注册 nodeIndex、发 primitive、累积 bbox;Pass 2 解析 Path 端点写 d 字符串;末端按 precision 折算 viewBox
40
+ * @description Pass 1 处理 Node/coordinate 并注册 nodeIndex、发 primitive、累积 bbox;Pass 2 解析 Path 端点写 d 字符串;末端按 precision 折算 layout
41
41
  */
42
42
  export declare const compileToScene: (ir: IR, options?: CompileOptions) => Scene;
43
43
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/compile/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,cAAc,CAAC;AAK1D,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAuBrE,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,IAAI,EACA,2BAA2B,GAC3B,gBAAgB,GAChB,0BAA0B,GAC1B,wBAAwB,GACxB,yBAAyB,GACzB,sBAAsB,GACtB,8BAA8B,GAC9B,oBAAoB,GACpB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,oCAAoC;IACpC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C,CAAC;AAWF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,EAAE,EAAE,UAAS,cAAmB,KAAG,KAkErE,CAAC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/compile/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAc,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,cAAc,CAAC;AAK1D,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AAuBrE,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,IAAI,EACA,2BAA2B,GAC3B,gBAAgB,GAChB,0BAA0B,GAC1B,wBAAwB,GACxB,yBAAyB,GACzB,sBAAsB,GACtB,8BAA8B,GAC9B,oBAAoB,GACpB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,oCAAoC;IACpC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C,CAAC;AAWF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,EAAE,EAAE,UAAS,cAAmB,KAAG,KAkErE,CAAC"}
@@ -5,5 +5,5 @@ export * from './path/index';
5
5
  export * from './position';
6
6
  export * from './precision';
7
7
  export * from './text-metrics';
8
- export * from './view-box';
8
+ export * from './layout';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compile/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compile/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
- //#region src/compile/view-box.ts
2
- /** 由所有 bbox 候选点算出 viewBox(含 padding);points 为空时返回 100×100 兜底 */
3
- var computeViewBox = (points, padding, round) => {
1
+ //#region src/compile/layout.ts
2
+ /** 由所有 bbox 候选点算出布局边界(含 padding);points 为空时返回 100×100 兜底 */
3
+ var computeLayout = (points, padding, round) => {
4
4
  if (points.length === 0) return {
5
5
  x: 0,
6
6
  y: 0,
@@ -25,4 +25,4 @@ var computeViewBox = (points, padding, round) => {
25
25
  };
26
26
  };
27
27
  //#endregion
28
- exports.computeViewBox = computeViewBox;
28
+ exports.computeLayout = computeLayout;
@@ -0,0 +1,5 @@
1
+ import { IRPosition } from '../ir';
2
+ import { Layout } from '../primitive';
3
+ /** 由所有 bbox 候选点算出布局边界(含 padding);points 为空时返回 100×100 兜底 */
4
+ export declare const computeLayout: (points: Array<IRPosition>, padding: number, round: (n: number) => number) => Layout;
5
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/compile/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,4DAA4D;AAC5D,eAAO,MAAM,aAAa,GACxB,QAAQ,KAAK,CAAC,UAAU,CAAC,EACzB,SAAS,MAAM,EACf,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,KAC3B,MAkBF,CAAC"}
@@ -12,9 +12,9 @@ var DEG_TO_RAD = Math.PI / 180;
12
12
  var DEFAULT_LABEL_DISTANCE = 4;
13
13
  var SQRT2 = Math.SQRT2;
14
14
  /** dashed 预设:4 px 实线 + 2 px 间隙循环 */
15
- var DASHED_PATTERN = "4 2";
15
+ var DASHED_PATTERN = [4, 2];
16
16
  /** dotted 预设:1 px 圆点 + 2 px 间隙 */
17
- var DOTTED_PATTERN = "1 2";
17
+ var DOTTED_PATTERN = [1, 2];
18
18
  /** dashed / dotted / dashArray 优先级:dashArray > dashed > dotted */
19
19
  var resolveDashArray = (dashArray, dashed, dotted) => {
20
20
  if (dashArray !== void 0) return dashArray;
@@ -259,7 +259,7 @@ var layoutNode = (node, measureText, nodeIndex, nodeDistance) => {
259
259
  stroke: node.stroke,
260
260
  strokeOpacity: node.drawOpacity,
261
261
  strokeWidth: node.strokeWidth,
262
- strokeDasharray: resolveDashArray(node.dashArray, node.dashed, node.dotted),
262
+ dashPattern: resolveDashArray(node.dashArray, node.dashed, node.dotted),
263
263
  roundedCorners: node.roundedCorners,
264
264
  textColor: node.textColor,
265
265
  opacity: node.opacity,
@@ -281,7 +281,7 @@ var emitRectShape = (layout, round) => {
281
281
  stroke: layout.stroke ?? "currentColor",
282
282
  strokeOpacity: layout.strokeOpacity,
283
283
  strokeWidth: layout.strokeWidth ?? 1,
284
- strokeDasharray: layout.strokeDasharray,
284
+ dashPattern: layout.dashPattern,
285
285
  cornerRadius: layout.roundedCorners,
286
286
  opacity: layout.opacity
287
287
  };
@@ -298,7 +298,7 @@ var emitEllipseShape = (layout, round) => ({
298
298
  stroke: layout.stroke ?? "currentColor",
299
299
  strokeOpacity: layout.strokeOpacity,
300
300
  strokeWidth: layout.strokeWidth ?? 1,
301
- strokeDasharray: layout.strokeDasharray,
301
+ dashPattern: layout.dashPattern,
302
302
  opacity: layout.opacity
303
303
  });
304
304
  /** diamond → PathPrim(4 顶点 + close 闭合) */
@@ -334,7 +334,7 @@ var emitDiamondShape = (layout, round) => {
334
334
  stroke: layout.stroke ?? "currentColor",
335
335
  strokeOpacity: layout.strokeOpacity,
336
336
  strokeWidth: layout.strokeWidth ?? 1,
337
- strokeDasharray: layout.strokeDasharray,
337
+ dashPattern: layout.dashPattern,
338
338
  opacity: layout.opacity
339
339
  };
340
340
  };
@@ -48,8 +48,8 @@ export type NodeLayout = {
48
48
  strokeOpacity?: number;
49
49
  /** 边框宽度,emit 时 1 兜底 */
50
50
  strokeWidth?: number;
51
- /** 描边 dash 模式(与 SVG/CSS `stroke-dasharray` 同格式),已把 dashed/dotted 预设解析为具体 pattern */
52
- strokeDasharray?: string;
51
+ /** 描边 dash pattern,已把 dashed/dotted 预设解析为具体 pattern */
52
+ dashPattern?: Array<number>;
53
53
  /** rectangle 圆角半径(非 rect shape 无效) */
54
54
  roundedCorners?: number;
55
55
  /** 文字颜色,emit 时 'currentColor' 兜底 */
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ const require_arrow = require("../../ir/path/arrow.cjs");
2
+ //#region src/compile/path/arrow-geometry.ts
3
+ /** 标准箭头局部坐标基准尺寸 */
4
+ var ARROW_GEOMETRY_BASE_SIZE = 10;
5
+ /** 箭头形状是否为空心描边形状 */
6
+ var isHollowArrowShape = (shape) => require_arrow.HOLLOW_ARROW_SHAPES.has(shape);
7
+ /** 解析端点箭头在标准局部坐标中的中性几何 */
8
+ var resolveArrowShapeGeometry = (spec) => {
9
+ const lineWidth = spec.lineWidth ?? 1.5;
10
+ const base = {
11
+ baseSize: ARROW_GEOMETRY_BASE_SIZE,
12
+ tipX: ARROW_GEOMETRY_BASE_SIZE,
13
+ lineContactX: 0,
14
+ defaultLength: 6,
15
+ defaultWidth: 6
16
+ };
17
+ switch (spec.shape) {
18
+ case "normal":
19
+ case "diamond":
20
+ case "circle": return base;
21
+ case "stealth": return {
22
+ ...base,
23
+ lineContactX: 3
24
+ };
25
+ case "open":
26
+ case "openDiamond": return {
27
+ ...base,
28
+ tipX: 9,
29
+ lineContactX: 1 - lineWidth / 2,
30
+ hollowLineWidth: lineWidth
31
+ };
32
+ case "openCircle": return {
33
+ ...base,
34
+ lineContactX: 0,
35
+ hollowLineWidth: lineWidth
36
+ };
37
+ }
38
+ };
39
+ //#endregion
40
+ exports.isHollowArrowShape = isHollowArrowShape;
41
+ exports.resolveArrowShapeGeometry = resolveArrowShapeGeometry;