@retikz/core 0.2.0-alpha.4 → 0.2.0-alpha.6

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 (141) hide show
  1. package/dist/es/compile/anchor-cache.d.ts +10 -0
  2. package/dist/es/compile/anchor-cache.d.ts.map +1 -1
  3. package/dist/es/compile/anchor-cache.js +25 -1
  4. package/dist/es/compile/index.d.ts +0 -1
  5. package/dist/es/compile/index.d.ts.map +1 -1
  6. package/dist/es/compile/path/anchor.d.ts.map +1 -1
  7. package/dist/es/compile/path/anchor.js +17 -18
  8. package/dist/es/compile/path/index.d.ts.map +1 -1
  9. package/dist/es/compile/path/index.js +98 -13
  10. package/dist/es/compile/path/relative.d.ts.map +1 -1
  11. package/dist/es/compile/path/relative.js +5 -1
  12. package/dist/es/geometry/_edge.d.ts +29 -0
  13. package/dist/es/geometry/_edge.d.ts.map +1 -0
  14. package/dist/es/geometry/_edge.js +35 -0
  15. package/dist/es/geometry/arc.d.ts +11 -0
  16. package/dist/es/geometry/arc.d.ts.map +1 -1
  17. package/dist/es/geometry/arc.js +27 -1
  18. package/dist/es/geometry/circle.d.ts +3 -0
  19. package/dist/es/geometry/circle.d.ts.map +1 -1
  20. package/dist/es/geometry/circle.js +7 -0
  21. package/dist/es/geometry/diamond.d.ts +3 -0
  22. package/dist/es/geometry/diamond.d.ts.map +1 -1
  23. package/dist/es/geometry/diamond.js +29 -0
  24. package/dist/es/geometry/ellipse.d.ts +3 -0
  25. package/dist/es/geometry/ellipse.d.ts.map +1 -1
  26. package/dist/es/geometry/ellipse.js +7 -0
  27. package/dist/es/geometry/rect.d.ts +26 -0
  28. package/dist/es/geometry/rect.d.ts.map +1 -1
  29. package/dist/es/geometry/rect.js +90 -1
  30. package/dist/es/geometry/segment.d.ts +2 -0
  31. package/dist/es/geometry/segment.d.ts.map +1 -1
  32. package/dist/es/geometry/segment.js +12 -1
  33. package/dist/es/index.d.ts +3 -3
  34. package/dist/es/index.d.ts.map +1 -1
  35. package/dist/es/index.js +6 -5
  36. package/dist/es/ir/coordinate.d.ts +2 -2
  37. package/dist/es/ir/node.d.ts +4 -4
  38. package/dist/es/ir/path/path.d.ts +828 -111
  39. package/dist/es/ir/path/path.d.ts.map +1 -1
  40. package/dist/es/ir/path/step.d.ts +1209 -168
  41. package/dist/es/ir/path/step.d.ts.map +1 -1
  42. package/dist/es/ir/path/step.js +36 -11
  43. package/dist/es/ir/path/target.d.ts +71 -1
  44. package/dist/es/ir/path/target.d.ts.map +1 -1
  45. package/dist/es/ir/path/target.js +24 -3
  46. package/dist/es/ir/scope.d.ts +1228 -190
  47. package/dist/es/ir/scope.d.ts.map +1 -1
  48. package/dist/es/parsers/index.d.ts +1 -0
  49. package/dist/es/parsers/index.d.ts.map +1 -1
  50. package/dist/es/parsers/parseNodeTarget.d.ts +4 -0
  51. package/dist/es/parsers/parseNodeTarget.d.ts.map +1 -0
  52. package/dist/es/parsers/parseNodeTarget.js +33 -0
  53. package/dist/es/parsers/parseTargetSugar.d.ts +4 -2
  54. package/dist/es/parsers/parseTargetSugar.d.ts.map +1 -1
  55. package/dist/es/parsers/parseTargetSugar.js +6 -3
  56. package/dist/es/parsers/parseWay.d.ts +1 -1
  57. package/dist/es/parsers/parseWay.d.ts.map +1 -1
  58. package/dist/es/shapes/circle.d.ts.map +1 -1
  59. package/dist/es/shapes/circle.js +1 -0
  60. package/dist/es/shapes/diamond.d.ts.map +1 -1
  61. package/dist/es/shapes/diamond.js +1 -0
  62. package/dist/es/shapes/ellipse.d.ts.map +1 -1
  63. package/dist/es/shapes/ellipse.js +1 -0
  64. package/dist/es/shapes/rectangle.d.ts.map +1 -1
  65. package/dist/es/shapes/rectangle.js +1 -0
  66. package/dist/es/shapes/types.d.ts +6 -0
  67. package/dist/es/shapes/types.d.ts.map +1 -1
  68. package/dist/lib/compile/anchor-cache.cjs +25 -0
  69. package/dist/lib/compile/anchor-cache.d.ts +10 -0
  70. package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
  71. package/dist/lib/compile/index.d.ts +0 -1
  72. package/dist/lib/compile/index.d.ts.map +1 -1
  73. package/dist/lib/compile/path/anchor.cjs +16 -17
  74. package/dist/lib/compile/path/anchor.d.ts.map +1 -1
  75. package/dist/lib/compile/path/index.cjs +96 -11
  76. package/dist/lib/compile/path/index.d.ts.map +1 -1
  77. package/dist/lib/compile/path/relative.cjs +5 -1
  78. package/dist/lib/compile/path/relative.d.ts.map +1 -1
  79. package/dist/lib/geometry/_edge.cjs +38 -0
  80. package/dist/lib/geometry/_edge.d.ts +29 -0
  81. package/dist/lib/geometry/_edge.d.ts.map +1 -0
  82. package/dist/lib/geometry/arc.cjs +28 -0
  83. package/dist/lib/geometry/arc.d.ts +11 -0
  84. package/dist/lib/geometry/arc.d.ts.map +1 -1
  85. package/dist/lib/geometry/circle.cjs +7 -0
  86. package/dist/lib/geometry/circle.d.ts +3 -0
  87. package/dist/lib/geometry/circle.d.ts.map +1 -1
  88. package/dist/lib/geometry/diamond.cjs +29 -0
  89. package/dist/lib/geometry/diamond.d.ts +3 -0
  90. package/dist/lib/geometry/diamond.d.ts.map +1 -1
  91. package/dist/lib/geometry/ellipse.cjs +7 -0
  92. package/dist/lib/geometry/ellipse.d.ts +3 -0
  93. package/dist/lib/geometry/ellipse.d.ts.map +1 -1
  94. package/dist/lib/geometry/rect.cjs +90 -0
  95. package/dist/lib/geometry/rect.d.ts +26 -0
  96. package/dist/lib/geometry/rect.d.ts.map +1 -1
  97. package/dist/lib/geometry/segment.cjs +12 -0
  98. package/dist/lib/geometry/segment.d.ts +2 -0
  99. package/dist/lib/geometry/segment.d.ts.map +1 -1
  100. package/dist/lib/index.cjs +7 -2
  101. package/dist/lib/index.d.ts +3 -3
  102. package/dist/lib/index.d.ts.map +1 -1
  103. package/dist/lib/ir/coordinate.d.ts +2 -2
  104. package/dist/lib/ir/node.d.ts +4 -4
  105. package/dist/lib/ir/path/path.d.ts +828 -111
  106. package/dist/lib/ir/path/path.d.ts.map +1 -1
  107. package/dist/lib/ir/path/step.cjs +36 -10
  108. package/dist/lib/ir/path/step.d.ts +1209 -168
  109. package/dist/lib/ir/path/step.d.ts.map +1 -1
  110. package/dist/lib/ir/path/target.cjs +25 -2
  111. package/dist/lib/ir/path/target.d.ts +71 -1
  112. package/dist/lib/ir/path/target.d.ts.map +1 -1
  113. package/dist/lib/ir/scope.d.ts +1228 -190
  114. package/dist/lib/ir/scope.d.ts.map +1 -1
  115. package/dist/lib/parsers/index.d.ts +1 -0
  116. package/dist/lib/parsers/index.d.ts.map +1 -1
  117. package/dist/lib/parsers/parseNodeTarget.cjs +33 -0
  118. package/dist/lib/parsers/parseNodeTarget.d.ts +4 -0
  119. package/dist/lib/parsers/parseNodeTarget.d.ts.map +1 -0
  120. package/dist/lib/parsers/parseTargetSugar.cjs +6 -3
  121. package/dist/lib/parsers/parseTargetSugar.d.ts +4 -2
  122. package/dist/lib/parsers/parseTargetSugar.d.ts.map +1 -1
  123. package/dist/lib/parsers/parseWay.d.ts +1 -1
  124. package/dist/lib/parsers/parseWay.d.ts.map +1 -1
  125. package/dist/lib/shapes/circle.cjs +1 -0
  126. package/dist/lib/shapes/circle.d.ts.map +1 -1
  127. package/dist/lib/shapes/diamond.cjs +1 -0
  128. package/dist/lib/shapes/diamond.d.ts.map +1 -1
  129. package/dist/lib/shapes/ellipse.cjs +1 -0
  130. package/dist/lib/shapes/ellipse.d.ts.map +1 -1
  131. package/dist/lib/shapes/rectangle.cjs +1 -0
  132. package/dist/lib/shapes/rectangle.d.ts.map +1 -1
  133. package/dist/lib/shapes/types.d.ts +6 -0
  134. package/dist/lib/shapes/types.d.ts.map +1 -1
  135. package/package.json +1 -1
  136. package/dist/es/compile/parseTarget.d.ts +0 -20
  137. package/dist/es/compile/parseTarget.d.ts.map +0 -1
  138. package/dist/es/compile/parseTarget.js +0 -36
  139. package/dist/lib/compile/parseTarget.cjs +0 -36
  140. package/dist/lib/compile/parseTarget.d.ts +0 -20
  141. package/dist/lib/compile/parseTarget.d.ts.map +0 -1
@@ -0,0 +1,29 @@
1
+ import { Position } from './point';
2
+ /** 边上比例点 `{ side, t }` 的四个 side(north/south/east/west) */
3
+ export type Side = 'north' | 'south' | 'east' | 'west';
4
+ /**
5
+ * rect 四直边 t=0 / t=1 端点对应的角 anchor
6
+ * @description 方向约定单一真源:north/south = 西→东(t=0 在 west 端),east/west = 北→南(t=0 在 north 端)。
7
+ * 仅 rect 直边用两角端点;circle/ellipse 用 `edgeAngleDeg` 角度表、diamond 用过顶点折线。
8
+ */
9
+ export declare const EDGE_ENDS: {
10
+ readonly north: readonly ["north-west", "north-east"];
11
+ readonly south: readonly ["south-west", "south-east"];
12
+ readonly east: readonly ["north-east", "south-east"];
13
+ readonly west: readonly ["north-west", "south-west"];
14
+ };
15
+ /** 线性插值 a + (b − a)·t */
16
+ export declare const lerpPoint: (a: Position, b: Position, t: number) => Position;
17
+ /**
18
+ * circle / ellipse 周长弧段:side 的局部参数角 θ(t),单位度
19
+ * @description 约定同 geometry 既有 `(cosθ, sinθ)` + y 轴向下 ⇒ east=0° / south=90° / west=180° / north=270°,
20
+ * 顺时针为正。每条 side 是一段 90° 弧(等角插值);三点(t=0/0.5/1)与 9-anchor 重合。
21
+ */
22
+ export declare const edgeAngleDeg: (side: Side, t: number) => number;
23
+ /**
24
+ * diamond 过 cardinal 顶点的两段折线
25
+ * @description t∈[0,0.5] 走 p0→vertex、t∈[0.5,1] 走 vertex→p1;t=0.5 恰落 vertex。
26
+ * p0/p1 为相邻边中点 anchor、vertex 为 cardinal 顶点 anchor——全落真实斜边
27
+ */
28
+ export declare const polylineViaVertex: (p0: Position, vertex: Position, p1: Position, t: number) => Position;
29
+ //# sourceMappingURL=_edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_edge.d.ts","sourceRoot":"","sources":["../../../src/geometry/_edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,0DAA0D;AAC1D,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,SAAS;;;;;CAK8C,CAAC;AAErE,yBAAyB;AACzB,eAAO,MAAM,SAAS,GAAI,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,KAAG,QAG/D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,EAAE,GAAG,MAAM,KAAG,MAWpD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,QAAQ,EACZ,QAAQ,QAAQ,EAChB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,QAA4F,CAAC"}
@@ -22,6 +22,34 @@ var arcBoundingPoints = (center, radius, startAngleDeg, endAngleDeg) => {
22
22
  }
23
23
  return points;
24
24
  };
25
+ /**
26
+ * 椭圆弧参数点:中心 + 半轴 rx/ry + 参数角(度)→ 椭圆周上点
27
+ * @description 与 arcEndPoint 同角度约定(SVG y-down);endpoint = [cx + rx·cosθ, cy + ry·sinθ]。
28
+ * θ 是参数角(非真实极角,rx≠ry 时两者不等)
29
+ */
30
+ var ellipseArcPoint = (center, radiusX, radiusY, angleDeg) => {
31
+ const rad = angleDeg * DEG_TO_RAD;
32
+ return [center[0] + Math.cos(rad) * radiusX, center[1] + Math.sin(rad) * radiusY];
33
+ };
34
+ /**
35
+ * 椭圆弧 bbox 极值候选:起点、终点,加 [start,end] 区间内所有 90°·k 参数角处的椭圆周点
36
+ * @description 轴对齐椭圆的 x 极值在 θ=0/180、y 极值在 θ=90/270,与正圆同结构(仅半轴用 rx/ry)
37
+ */
38
+ var ellipseArcBoundingPoints = (center, radiusX, radiusY, startAngleDeg, endAngleDeg) => {
39
+ const points = [ellipseArcPoint(center, radiusX, radiusY, startAngleDeg), ellipseArcPoint(center, radiusX, radiusY, endAngleDeg)];
40
+ const lo = Math.min(startAngleDeg, endAngleDeg);
41
+ const hi = Math.max(startAngleDeg, endAngleDeg);
42
+ const kStart = Math.ceil(lo / 90);
43
+ const kEnd = Math.floor(hi / 90);
44
+ for (let k = kStart; k <= kEnd; k++) {
45
+ const angle = k * 90;
46
+ if (angle === startAngleDeg || angle === endAngleDeg) continue;
47
+ points.push(ellipseArcPoint(center, radiusX, radiusY, angle));
48
+ }
49
+ return points;
50
+ };
25
51
  //#endregion
26
52
  exports.arcBoundingPoints = arcBoundingPoints;
27
53
  exports.arcEndPoint = arcEndPoint;
54
+ exports.ellipseArcBoundingPoints = ellipseArcBoundingPoints;
55
+ exports.ellipseArcPoint = ellipseArcPoint;
@@ -6,4 +6,15 @@ export declare const arcEndPoint: (center: Position, radius: number, angleDeg: n
6
6
  * @description 弧投影到 x/y 轴的极值只可能在弧端点或圆周轴向四点出现。endAngle < startAngle 时按 min..max 扫描;跨 360°(270→450)按数值区间正确处理;不去重——端角恰在 90°·k 上时调用方处理
7
7
  */
8
8
  export declare const arcBoundingPoints: (center: Position, radius: number, startAngleDeg: number, endAngleDeg: number) => Array<Position>;
9
+ /**
10
+ * 椭圆弧参数点:中心 + 半轴 rx/ry + 参数角(度)→ 椭圆周上点
11
+ * @description 与 arcEndPoint 同角度约定(SVG y-down);endpoint = [cx + rx·cosθ, cy + ry·sinθ]。
12
+ * θ 是参数角(非真实极角,rx≠ry 时两者不等)
13
+ */
14
+ export declare const ellipseArcPoint: (center: Position, radiusX: number, radiusY: number, angleDeg: number) => Position;
15
+ /**
16
+ * 椭圆弧 bbox 极值候选:起点、终点,加 [start,end] 区间内所有 90°·k 参数角处的椭圆周点
17
+ * @description 轴对齐椭圆的 x 极值在 θ=0/180、y 极值在 θ=90/270,与正圆同结构(仅半轴用 rx/ry)
18
+ */
19
+ export declare const ellipseArcBoundingPoints: (center: Position, radiusX: number, radiusY: number, startAngleDeg: number, endAngleDeg: number) => Array<Position>;
9
20
  //# sourceMappingURL=arc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../../src/geometry/arc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAWxC,iDAAiD;AACjD,eAAO,MAAM,WAAW,GACtB,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,QAMF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,aAAa,MAAM,KAClB,KAAK,CAAC,QAAQ,CAiBhB,CAAC"}
1
+ {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../../src/geometry/arc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAWxC,iDAAiD;AACjD,eAAO,MAAM,WAAW,GACtB,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,QAMF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,aAAa,MAAM,KAClB,KAAK,CAAC,QAAQ,CAiBhB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,QAAQ,EAChB,SAAS,MAAM,EACf,SAAS,MAAM,EACf,UAAU,MAAM,KACf,QAMF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,QAAQ,EAChB,SAAS,MAAM,EACf,SAAS,MAAM,EACf,eAAe,MAAM,EACrB,aAAa,MAAM,KAClB,KAAK,CAAC,QAAQ,CAehB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  const require__transform = require("./_transform.cjs");
2
+ const require__edge = require("./_edge.cjs");
2
3
  //#region src/geometry/circle.ts
4
+ var DEG_TO_RAD = Math.PI / 180;
3
5
  var SQRT_HALF = Math.SQRT1_2;
4
6
  /** 圆形相关基础工具 */
5
7
  var circle = {
@@ -55,6 +57,11 @@ var circle = {
55
57
  if (len === 0) return [c.x, c.y];
56
58
  const t = c.radius / len;
57
59
  return require__transform.localToWorld(c, [lx * t, ly * t]);
60
+ },
61
+ /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实圆周;含旋转) */
62
+ edgePoint: (c, side, t) => {
63
+ const rad = require__edge.edgeAngleDeg(side, t) * DEG_TO_RAD;
64
+ return require__transform.localToWorld(c, [c.radius * Math.cos(rad), c.radius * Math.sin(rad)]);
58
65
  }
59
66
  };
60
67
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { Side } from './_edge';
1
2
  import { Position } from './point';
2
3
  import { RectAnchor } from './rect';
3
4
  /** 圆形:几何中心 + 半径,预留旋转字段保持与 Rect 同形 API */
@@ -19,5 +20,7 @@ export declare const circle: {
19
20
  anchor: (c: Circle, name: RectAnchor) => Position;
20
21
  /** 从圆心向 toward 方向射线与圆周交点(Path 端点贴 Node 边界用) */
21
22
  boundaryPoint: (c: Circle, toward: Position) => Position;
23
+ /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实圆周;含旋转) */
24
+ edgePoint: (c: Circle, side: Side, t: number) => Position;
22
25
  };
23
26
  //# sourceMappingURL=circle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,MAAM;IACjB,SAAS;gBACG,MAAM,KAAG,QAAQ;IAC7B,oBAAoB;kBACN,MAAM,KAAK,QAAQ,KAAG,OAAO;IAI3C,2BAA2B;gBACf,MAAM,QAAQ,UAAU,KAAG,QAAQ;IAsC/C,+CAA+C;uBAC5B,MAAM,UAAU,QAAQ,KAAG,QAAQ;CAOvD,CAAC"}
1
+ {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/geometry/circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,yCAAyC;AACzC,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,MAAM;IACjB,SAAS;gBACG,MAAM,KAAG,QAAQ;IAC7B,oBAAoB;kBACN,MAAM,KAAK,QAAQ,KAAG,OAAO;IAI3C,2BAA2B;gBACf,MAAM,QAAQ,UAAU,KAAG,QAAQ;IAsC/C,+CAA+C;uBAC5B,MAAM,UAAU,QAAQ,KAAG,QAAQ;IAOtD,oDAAoD;mBACrC,MAAM,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIxD,CAAC"}
@@ -1,5 +1,29 @@
1
1
  const require__transform = require("./_transform.cjs");
2
+ const require__edge = require("./_edge.cjs");
2
3
  //#region src/geometry/diamond.ts
4
+ /** 每条 side 的过顶点折线三 anchor:[邻边中点, cardinal 顶点, 邻边中点](方向 north/south=西→东、east/west=北→南) */
5
+ var DIAMOND_EDGE = {
6
+ north: [
7
+ "north-west",
8
+ "north",
9
+ "north-east"
10
+ ],
11
+ south: [
12
+ "south-west",
13
+ "south",
14
+ "south-east"
15
+ ],
16
+ east: [
17
+ "north-east",
18
+ "east",
19
+ "south-east"
20
+ ],
21
+ west: [
22
+ "north-west",
23
+ "west",
24
+ "south-west"
25
+ ]
26
+ };
3
27
  /** 菱形相关基础工具 */
4
28
  var diamond = {
5
29
  /** 中心 */
@@ -56,6 +80,11 @@ var diamond = {
56
80
  if (denom === 0) return [d.x, d.y];
57
81
  const t = 1 / denom;
58
82
  return require__transform.localToWorld(d, [lx * t, ly * t]);
83
+ },
84
+ /** 边上比例点:side 过 cardinal 顶点的两段折线 t∈[0,1] 处(落真实斜边;含旋转) */
85
+ edgePoint: (d, side, t) => {
86
+ const [mid0, vertex, mid1] = DIAMOND_EDGE[side];
87
+ return require__edge.polylineViaVertex(diamond.anchor(d, mid0), diamond.anchor(d, vertex), diamond.anchor(d, mid1), t);
59
88
  }
60
89
  };
61
90
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { Side } from './_edge';
1
2
  import { Position } from './point';
2
3
  import { RectAnchor } from './rect';
3
4
  /** 菱形:中心 + halfA/halfB 半轴长 + 可选旋转;顶点在 (±halfA,0) 与 (0,±halfB) */
@@ -24,5 +25,7 @@ export declare const diamond: {
24
25
  * @description 菱形方程 |x|/halfA + |y|/halfB = 1;沿方向 (lx,ly) 缩放 t 倍命中:t = 1 / (|lx|/halfA + |ly|/halfB)
25
26
  */
26
27
  boundaryPoint: (d: Diamond, toward: Position) => Position;
28
+ /** 边上比例点:side 过 cardinal 顶点的两段折线 t∈[0,1] 处(落真实斜边;含旋转) */
29
+ edgePoint: (d: Diamond, side: Side, t: number) => Position;
27
30
  };
28
31
  //# sourceMappingURL=diamond.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/geometry/diamond.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,oDAAoD;kBACtC,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI5C,sDAAsD;gBAC1C,OAAO,QAAQ,UAAU,KAAG,QAAQ;IAqClD;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;CAOxD,CAAC"}
1
+ {"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/geometry/diamond.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAqB,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAUzC,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,oDAAoD;kBACtC,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI5C,sDAAsD;gBAC1C,OAAO,QAAQ,UAAU,KAAG,QAAQ;IAqClD;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;IAOvD,yDAAyD;mBAC1C,OAAO,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CASzD,CAAC"}
@@ -1,5 +1,7 @@
1
1
  const require__transform = require("./_transform.cjs");
2
+ const require__edge = require("./_edge.cjs");
2
3
  //#region src/geometry/ellipse.ts
4
+ var DEG_TO_RAD = Math.PI / 180;
3
5
  var SQRT_HALF = Math.SQRT1_2;
4
6
  /** 椭圆相关基础工具 */
5
7
  var ellipse = {
@@ -61,6 +63,11 @@ var ellipse = {
61
63
  const b = ly / e.ry;
62
64
  const t = 1 / Math.sqrt(a * a + b * b);
63
65
  return require__transform.localToWorld(e, [lx * t, ly * t]);
66
+ },
67
+ /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实椭圆周;含旋转) */
68
+ edgePoint: (e, side, t) => {
69
+ const rad = require__edge.edgeAngleDeg(side, t) * DEG_TO_RAD;
70
+ return require__transform.localToWorld(e, [e.rx * Math.cos(rad), e.ry * Math.sin(rad)]);
64
71
  }
65
72
  };
66
73
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { Side } from './_edge';
1
2
  import { Position } from './point';
2
3
  import { RectAnchor } from './rect';
3
4
  /** 椭圆:中心 + 半长轴 rx / 半短轴 ry + 可选旋转 */
@@ -27,5 +28,7 @@ export declare const ellipse: {
27
28
  * @description 椭圆方程 (x/rx)² + (y/ry)² = 1;沿 (lx,ly) 缩放 t 倍命中 t = 1 / √((lx/rx)² + (ly/ry)²)
28
29
  */
29
30
  boundaryPoint: (e: Ellipse, toward: Position) => Position;
31
+ /** 边上比例点:side 的 90° 周长弧段 t∈[0,1] 处(等角,落真实椭圆周;含旋转) */
32
+ edgePoint: (e: Ellipse, side: Side, t: number) => Position;
30
33
  };
31
34
  //# sourceMappingURL=ellipse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/geometry/ellipse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,qCAAqC;AACrC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,0BAA0B;kBACZ,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI9C;;;OAGG;gBACW,OAAO,QAAQ,UAAU,KAAG,QAAQ;IAqClD;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;CAQxD,CAAC"}
1
+ {"version":3,"file":"ellipse.d.ts","sourceRoot":"","sources":["../../../src/geometry/ellipse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,qCAAqC;AACrC,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,eAAe;AACf,eAAO,MAAM,OAAO;IAClB,SAAS;gBACG,OAAO,KAAG,QAAQ;IAC9B,0BAA0B;kBACZ,OAAO,KAAK,QAAQ,KAAG,OAAO;IAI9C;;;OAGG;gBACW,OAAO,QAAQ,UAAU,KAAG,QAAQ;IAqClD;;;OAGG;uBACkB,OAAO,UAAU,QAAQ,KAAG,QAAQ;IAQvD,qDAAqD;mBACtC,OAAO,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAIzD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  const require__transform = require("./_transform.cjs");
2
+ const require__edge = require("./_edge.cjs");
2
3
  //#region src/geometry/rect.ts
3
4
  /** 矩形 9 个标准 anchor 名常量(与 RectAnchor 配对,用 RECT_ANCHORS.NORTH 避免拼错) */
4
5
  var RECT_ANCHORS = {
@@ -71,8 +72,97 @@ var rect = {
71
72
  const ty = localY === 0 ? Infinity : halfH / Math.abs(localY);
72
73
  const t = Math.min(tx, ty);
73
74
  return require__transform.localToWorld(r, [localX * t, localY * t]);
75
+ },
76
+ /** 边上比例点:side 直边 t∈[0,1] 处(两角 anchor 线性插值,含旋转);方向见 EDGE_ENDS */
77
+ edgePoint: (r, side, t) => {
78
+ const [a, b] = require__edge.EDGE_ENDS[side];
79
+ return require__edge.lerpPoint(rect.anchor(r, a), rect.anchor(r, b), t);
74
80
  }
75
81
  };
82
+ /**
83
+ * 矩形 outline:两对角 → 顺时针 path 算子序列
84
+ * @description from/to 任意顺序,归一化 (x0,y0)=min、(x1,y1)=max。直角 = 4 line + close(起点左上 (x0,y0));
85
+ * 圆角 = 4 line + 4 quarter-arc + close(起点 (x0+r, y0))。roundedCorners clamp 到 min(w,h)/2。
86
+ * 角度约定同 geometry/arc(y-down:0=+x, 90=+y/下, 180=-x, 270=-y/上)。
87
+ */
88
+ var rectOutline = (from, to, roundedCorners) => {
89
+ const x0 = Math.min(from[0], to[0]);
90
+ const x1 = Math.max(from[0], to[0]);
91
+ const y0 = Math.min(from[1], to[1]);
92
+ const y1 = Math.max(from[1], to[1]);
93
+ const r = roundedCorners === void 0 ? 0 : Math.min(roundedCorners, (x1 - x0) / 2, (y1 - y0) / 2);
94
+ if (r <= 0) return [
95
+ {
96
+ kind: "move",
97
+ to: [x0, y0]
98
+ },
99
+ {
100
+ kind: "line",
101
+ to: [x1, y0]
102
+ },
103
+ {
104
+ kind: "line",
105
+ to: [x1, y1]
106
+ },
107
+ {
108
+ kind: "line",
109
+ to: [x0, y1]
110
+ },
111
+ { kind: "close" }
112
+ ];
113
+ return [
114
+ {
115
+ kind: "move",
116
+ to: [x0 + r, y0]
117
+ },
118
+ {
119
+ kind: "line",
120
+ to: [x1 - r, y0]
121
+ },
122
+ {
123
+ kind: "arc",
124
+ center: [x1 - r, y0 + r],
125
+ radius: r,
126
+ startAngle: 270,
127
+ endAngle: 360
128
+ },
129
+ {
130
+ kind: "line",
131
+ to: [x1, y1 - r]
132
+ },
133
+ {
134
+ kind: "arc",
135
+ center: [x1 - r, y1 - r],
136
+ radius: r,
137
+ startAngle: 0,
138
+ endAngle: 90
139
+ },
140
+ {
141
+ kind: "line",
142
+ to: [x0 + r, y1]
143
+ },
144
+ {
145
+ kind: "arc",
146
+ center: [x0 + r, y1 - r],
147
+ radius: r,
148
+ startAngle: 90,
149
+ endAngle: 180
150
+ },
151
+ {
152
+ kind: "line",
153
+ to: [x0, y0 + r]
154
+ },
155
+ {
156
+ kind: "arc",
157
+ center: [x0 + r, y0 + r],
158
+ radius: r,
159
+ startAngle: 180,
160
+ endAngle: 270
161
+ },
162
+ { kind: "close" }
163
+ ];
164
+ };
76
165
  //#endregion
77
166
  exports.RECT_ANCHORS = RECT_ANCHORS;
78
167
  exports.rect = rect;
168
+ exports.rectOutline = rectOutline;
@@ -1,3 +1,4 @@
1
+ import { Side } from './_edge';
1
2
  import { Position } from './point';
2
3
  /** 轴对齐矩形:几何中心 + 宽高 + 可选绕中心旋转 */
3
4
  export type Rect = {
@@ -31,5 +32,30 @@ export declare const rect: {
31
32
  anchor: (r: Rect, name: RectAnchor) => Position;
32
33
  /** 从中心向 toward 方向射线与矩形边界交点(含旋转),Path 端点贴 Node 边界用 */
33
34
  boundaryPoint: (r: Rect, toward: Position) => Position;
35
+ /** 边上比例点:side 直边 t∈[0,1] 处(两角 anchor 线性插值,含旋转);方向见 EDGE_ENDS */
36
+ edgePoint: (r: Rect, side: Side, t: number) => Position;
34
37
  };
38
+ /** rectOutline 的命令算子(供 compile 翻译为 PathCommand;几何在 core 下沉,便于未来 rectangle node shape 复用) */
39
+ export type RectOutlineOp = {
40
+ kind: 'move';
41
+ to: Position;
42
+ } | {
43
+ kind: 'line';
44
+ to: Position;
45
+ } | {
46
+ kind: 'arc';
47
+ center: Position;
48
+ radius: number;
49
+ startAngle: number;
50
+ endAngle: number;
51
+ } | {
52
+ kind: 'close';
53
+ };
54
+ /**
55
+ * 矩形 outline:两对角 → 顺时针 path 算子序列
56
+ * @description from/to 任意顺序,归一化 (x0,y0)=min、(x1,y1)=max。直角 = 4 line + close(起点左上 (x0,y0));
57
+ * 圆角 = 4 line + 4 quarter-arc + close(起点 (x0+r, y0))。roundedCorners clamp 到 min(w,h)/2。
58
+ * 角度约定同 geometry/arc(y-down:0=+x, 90=+y/下, 180=-x, 270=-y/上)。
59
+ */
60
+ export declare const rectOutline: (from: Position, to: Position, roundedCorners?: number) => Array<RectOutlineOp>;
35
61
  //# sourceMappingURL=rect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/geometry/rect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,gCAAgC;AAChC,MAAM,MAAM,IAAI,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,YAAY;;;;;;;;;;CAUf,CAAC;AAEX,+BAA+B;AAC/B,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE1E,eAAO,MAAM,IAAI;IACf,WAAW;gBACC,IAAI,KAAG,QAAQ;IAC3B,uBAAuB;kBACT,IAAI,KAAK,QAAQ,KAAG,OAAO;IAMzC,sCAAsC;gBAC1B,IAAI,QAAQ,UAAU,KAAG,QAAQ;IAuC7C,qDAAqD;uBAClC,IAAI,UAAU,QAAQ,KAAG,QAAQ;CAUrD,CAAC"}
1
+ {"version":3,"file":"rect.d.ts","sourceRoot":"","sources":["../../../src/geometry/rect.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,IAAI,EAAa,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,gCAAgC;AAChC,MAAM,MAAM,IAAI,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,YAAY;;;;;;;;;;CAUf,CAAC;AAEX,+BAA+B;AAC/B,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE1E,eAAO,MAAM,IAAI;IACf,WAAW;gBACC,IAAI,KAAG,QAAQ;IAC3B,uBAAuB;kBACT,IAAI,KAAK,QAAQ,KAAG,OAAO;IAMzC,sCAAsC;gBAC1B,IAAI,QAAQ,UAAU,KAAG,QAAQ;IAuC7C,qDAAqD;uBAClC,IAAI,UAAU,QAAQ,KAAG,QAAQ;IAUpD,gEAAgE;mBACjD,IAAI,QAAQ,IAAI,KAAK,MAAM,KAAG,QAAQ;CAItD,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,QAAQ,EACd,IAAI,QAAQ,EACZ,iBAAiB,MAAM,KACtB,KAAK,CAAC,aAAa,CAgCrB,CAAC"}
@@ -51,6 +51,17 @@ var arcSegmentSample = (center, radius, startAngleDeg, endAngleDeg, t) => {
51
51
  tangent: normalize([-sin * sweepSign, cos * sweepSign])
52
52
  };
53
53
  };
54
+ /** 椭圆弧段(参数角度数,与 ir/path arc 同约定);点用 (rx·cos, ry·sin),切线沿扫描方向 */
55
+ var ellipseArcSegmentSample = (center, rx, ry, startAngleDeg, endAngleDeg, t) => {
56
+ const rad = (startAngleDeg + t * (endAngleDeg - startAngleDeg)) * DEG_TO_RAD;
57
+ const cos = Math.cos(rad);
58
+ const sin = Math.sin(rad);
59
+ const sweepSign = endAngleDeg >= startAngleDeg ? 1 : -1;
60
+ return {
61
+ point: [center[0] + rx * cos, center[1] + ry * sin],
62
+ tangent: normalize([-rx * sin * sweepSign, ry * cos * sweepSign])
63
+ };
64
+ };
54
65
  /** 整圆,从 0°(east) 开始,与 compile/path circlePath 输出方向(右→左→右,sweep=1)一致 */
55
66
  var circleSegmentSample = (center, radius, t) => {
56
67
  const rad = t * 360 * DEG_TO_RAD;
@@ -75,6 +86,7 @@ var ellipseSegmentSample = (center, rx, ry, t) => {
75
86
  exports.arcSegmentSample = arcSegmentSample;
76
87
  exports.circleSegmentSample = circleSegmentSample;
77
88
  exports.cubicSegmentSample = cubicSegmentSample;
89
+ exports.ellipseArcSegmentSample = ellipseArcSegmentSample;
78
90
  exports.ellipseSegmentSample = ellipseSegmentSample;
79
91
  exports.foldSegmentSample = foldSegmentSample;
80
92
  exports.lineSegmentSample = lineSegmentSample;
@@ -28,6 +28,8 @@ export declare const cubicSegmentSample: (from: Position, c1: Position, c2: Posi
28
28
  export declare const foldSegmentSample: (from: Position, corner: Position, to: Position, t: number) => SegmentSample;
29
29
  /** 弧段(角度度数,与 ir/path arc 同约定);切线沿扫描方向:endAngle ≥ start 取 (-sin,cos),否则反向 */
30
30
  export declare const arcSegmentSample: (center: Position, radius: number, startAngleDeg: number, endAngleDeg: number, t: number) => SegmentSample;
31
+ /** 椭圆弧段(参数角度数,与 ir/path arc 同约定);点用 (rx·cos, ry·sin),切线沿扫描方向 */
32
+ export declare const ellipseArcSegmentSample: (center: Position, rx: number, ry: number, startAngleDeg: number, endAngleDeg: number, t: number) => SegmentSample;
31
33
  /** 整圆,从 0°(east) 开始,与 compile/path circlePath 输出方向(右→左→右,sweep=1)一致 */
32
34
  export declare const circleSegmentSample: (center: Position, radius: number, t: number) => SegmentSample;
33
35
  /** 整椭圆,参数化 (rx·cos(2πt), ry·sin(2πt)) */
@@ -1 +1 @@
1
- {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../../src/geometry/segment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiBxC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,wBAAwB;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,iCAAiC;IACjC,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAQF,oBAAoB;AACpB,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAGD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,SAAS,QAAQ,EACjB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aASF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,QAAQ,EACd,IAAI,QAAQ,EACZ,IAAI,QAAQ,EACZ,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,QAAQ,QAAQ,EAChB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAGF,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,GAAG,MAAM,KACR,aAUF,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,GAAG,MAAM,KACR,aASF,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,QAAQ,EAChB,IAAI,MAAM,EACV,IAAI,MAAM,EACV,GAAG,MAAM,KACR,aASF,CAAC"}
1
+ {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../../src/geometry/segment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiBxC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,wBAAwB;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,iCAAiC;IACjC,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAQF,oBAAoB;AACpB,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAGD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,SAAS,QAAQ,EACjB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aASF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,QAAQ,EACd,IAAI,QAAQ,EACZ,IAAI,QAAQ,EACZ,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAqBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,QAAQ,EACd,QAAQ,QAAQ,EAChB,IAAI,QAAQ,EACZ,GAAG,MAAM,KACR,aAGF,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,GAAG,MAAM,KACR,aAUF,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,GAClC,QAAQ,QAAQ,EAChB,IAAI,MAAM,EACV,IAAI,MAAM,EACV,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,GAAG,MAAM,KACR,aAUF,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,QAAQ,EAChB,QAAQ,MAAM,EACd,GAAG,MAAM,KACR,aASF,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,QAAQ,EAChB,IAAI,MAAM,EACV,IAAI,MAAM,EACV,GAAG,MAAM,KACR,aASF,CAAC"}
@@ -6,6 +6,8 @@ const require_offset_position = require("./ir/position/offset-position.cjs");
6
6
  const require_font = require("./ir/font.cjs");
7
7
  const require_text = require("./ir/text.cjs");
8
8
  const require_arrow = require("./ir/path/arrow.cjs");
9
+ const require__transform = require("./geometry/_transform.cjs");
10
+ const require_rect = require("./geometry/rect.cjs");
9
11
  const require_target = require("./ir/path/target.cjs");
10
12
  const require_step = require("./ir/path/step.cjs");
11
13
  const require_path = require("./ir/path/path.cjs");
@@ -14,8 +16,6 @@ const require_coordinate = require("./ir/coordinate.cjs");
14
16
  const require_transform = require("./ir/transform.cjs");
15
17
  const require_scope = require("./ir/scope.cjs");
16
18
  const require_scene = require("./ir/scene.cjs");
17
- const require__transform = require("./geometry/_transform.cjs");
18
- const require_rect = require("./geometry/rect.cjs");
19
19
  const require_circle = require("./geometry/circle.cjs");
20
20
  const require_ellipse = require("./geometry/ellipse.cjs");
21
21
  const require_diamond = require("./geometry/diamond.cjs");
@@ -23,6 +23,7 @@ const require_index = require("./shapes/index.cjs");
23
23
  const require_text_metrics = require("./compile/text-metrics.cjs");
24
24
  const require_layout = require("./compile/layout.cjs");
25
25
  const require_compile = require("./compile/compile.cjs");
26
+ const require_parseNodeTarget = require("./parsers/parseNodeTarget.cjs");
26
27
  const require_parseTargetSugar = require("./parsers/parseTargetSugar.cjs");
27
28
  const require_parseWay = require("./parsers/parseWay.cjs");
28
29
  const require_polar = require("./geometry/polar.cjs");
@@ -31,6 +32,7 @@ exports.ARROW_MARKER_DEFAULT_SIZE = require_arrow.ARROW_MARKER_DEFAULT_SIZE;
31
32
  exports.ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = require_arrow.ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH;
32
33
  exports.ARROW_SHAPES = require_arrow.ARROW_SHAPES;
33
34
  exports.AT_DIRECTIONS = require_at_position.AT_DIRECTIONS;
35
+ exports.AnchorRefSchema = require_target.AnchorRefSchema;
34
36
  exports.ArcStepSchema = require_step.ArcStepSchema;
35
37
  exports.ArrowDefaultSchema = require_scope.ArrowDefaultSchema;
36
38
  exports.ArrowDetailSchema = require_arrow.ArrowDetailSchema;
@@ -61,12 +63,14 @@ exports.NODE_TEXT_ALIGNS = require_node.NODE_TEXT_ALIGNS;
61
63
  exports.NodeDefaultSchema = require_scope.NodeDefaultSchema;
62
64
  exports.NodeLabelSchema = require_node.NodeLabelSchema;
63
65
  exports.NodeSchema = require_node.NodeSchema;
66
+ exports.NodeTargetSchema = require_target.NodeTargetSchema;
64
67
  exports.OffsetPositionSchema = require_offset_position.OffsetPositionSchema;
65
68
  exports.PathDefaultSchema = require_scope.PathDefaultSchema;
66
69
  exports.PathSchema = require_path.PathSchema;
67
70
  exports.PolarPositionSchema = require_polar_position.PolarPositionSchema;
68
71
  exports.PositionSchema = require_position.PositionSchema;
69
72
  exports.RECT_ANCHORS = require_rect.RECT_ANCHORS;
73
+ exports.RectangleStepSchema = require_step.RectangleStepSchema;
70
74
  exports.RelativeAccumulateTargetSchema = require_target.RelativeAccumulateTargetSchema;
71
75
  exports.RelativeTargetSchema = require_target.RelativeTargetSchema;
72
76
  exports.SceneSchema = require_scene.SceneSchema;
@@ -83,6 +87,7 @@ exports.diamond = require_diamond.diamond;
83
87
  exports.ellipse = require_ellipse.ellipse;
84
88
  exports.fallbackMeasurer = require_text_metrics.fallbackMeasurer;
85
89
  exports.localToWorld = require__transform.localToWorld;
90
+ exports.parseNodeTarget = require_parseNodeTarget.parseNodeTarget;
86
91
  exports.parseTargetSugar = require_parseTargetSugar.parseTargetSugar;
87
92
  exports.parseWay = require_parseWay.parseWay;
88
93
  exports.point = require_point.point;
@@ -2,8 +2,8 @@
2
2
  * @retikz/core 公开 API
3
3
  * @description 任何 framework adapter(@retikz/react、@retikz/vue、@retikz/canvas、@retikz/ssr)只能 import 本文件导出内容,不准走子路径。本包零 React/零 DOM 依赖
4
4
  */
5
- export { PositionSchema, PolarPositionSchema, AtPositionSchema, OffsetPositionSchema, AT_DIRECTIONS, TargetSchema, RelativeTargetSchema, RelativeAccumulateTargetSchema, MoveStepSchema, LineStepSchema, FoldStepSchema, CycleStepSchema, CurveStepSchema, CubicStepSchema, BendStepSchema, ArcStepSchema, CirclePathStepSchema, EllipsePathStepSchema, ControlPointSchema, StepLabelSchema, StepSchema, NodeSchema, NodeLabelSchema, CoordinateSchema, FontSchema, TextBlockSchema, LineSpecSchema, PathSchema, ArrowDetailSchema, ArrowEndDetailSchema, ScopeSchema, NodeDefaultSchema, PathDefaultSchema, LabelDefaultSchema, ArrowDefaultSchema, TransformSchema, ChildSchema, SceneSchema, CURRENT_IR_VERSION, } from './ir';
6
- export type { IRPosition, IRAtPosition, IROffsetPosition, AtDirection, IRTarget, IRRelativeTarget, IRRelativeAccumulateTarget, IRMoveStep, IRLineStep, IRFoldStep, IRCycleStep, IRCurveStep, IRCubicStep, IRBendStep, IRArcStep, IRCirclePathStep, IREllipsePathStep, IRControlPoint, IRStepLabel, IRStep, IRNode, IRNodeLabel, IRCoordinate, IRFont, IRLineSpec, IRTextBlock, IRPath, IRScope, IRNodeDefault, IRPathDefault, IRLabelDefault, IRArrowDefault, StyleChannel, IRTransform, IRTranslateTransform, IRPolarTranslateTransform, IRAtTranslateTransform, IROffsetTranslateTransform, IRRotateTransform, IRScaleTransform, IRChild, IR, ArrowShape, IRArrowDetail, IRArrowEndDetail, NodeShape, BuiltinShapeName, NodeTextAlign, } from './ir';
5
+ export { PositionSchema, PolarPositionSchema, AtPositionSchema, OffsetPositionSchema, AT_DIRECTIONS, TargetSchema, AnchorRefSchema, NodeTargetSchema, RelativeTargetSchema, RelativeAccumulateTargetSchema, MoveStepSchema, LineStepSchema, FoldStepSchema, CycleStepSchema, CurveStepSchema, CubicStepSchema, BendStepSchema, ArcStepSchema, CirclePathStepSchema, EllipsePathStepSchema, RectangleStepSchema, ControlPointSchema, StepLabelSchema, StepSchema, NodeSchema, NodeLabelSchema, CoordinateSchema, FontSchema, TextBlockSchema, LineSpecSchema, PathSchema, ArrowDetailSchema, ArrowEndDetailSchema, ScopeSchema, NodeDefaultSchema, PathDefaultSchema, LabelDefaultSchema, ArrowDefaultSchema, TransformSchema, ChildSchema, SceneSchema, CURRENT_IR_VERSION, } from './ir';
6
+ export type { IRPosition, IRAtPosition, IROffsetPosition, AtDirection, IRTarget, IRAnchorRef, IRNodeTarget, IRRelativeTarget, IRRelativeAccumulateTarget, IRMoveStep, IRLineStep, IRFoldStep, IRCycleStep, IRCurveStep, IRCubicStep, IRBendStep, IRArcStep, IRCirclePathStep, IREllipsePathStep, IRRectangleStep, IRControlPoint, IRStepLabel, IRStep, IRNode, IRNodeLabel, IRCoordinate, IRFont, IRLineSpec, IRTextBlock, IRPath, IRScope, IRNodeDefault, IRPathDefault, IRLabelDefault, IRArrowDefault, StyleChannel, IRTransform, IRTranslateTransform, IRPolarTranslateTransform, IRAtTranslateTransform, IROffsetTranslateTransform, IRRotateTransform, IRScaleTransform, IRChild, IR, ArrowShape, IRArrowDetail, IRArrowEndDetail, NodeShape, BuiltinShapeName, NodeTextAlign, } from './ir';
7
7
  export { ARROW_SHAPES, DEFAULT_ARROW_SHAPE, HOLLOW_ARROW_SHAPES, ARROW_MARKER_DEFAULT_SIZE, ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH, NODE_SHAPES, NODE_TEXT_ALIGNS, } from './ir';
8
8
  export type { ScenePrimitive, RectPrim, EllipsePrim, TextPrim, TextLine, PathPrim, PathCommand,
9
9
  /** 7 个 named PathCommand 分支(便于 wrapper / Pick<>) */
@@ -13,7 +13,7 @@ TranslateTransform, RotateTransform, ScaleTransform, Layout, Scene, } from './pr
13
13
  export type { FontSpec, TextMetrics, TextMeasurer, CompileOptions, CompileWarning, } from './compile';
14
14
  export { computeLayout, fallbackMeasurer, compileToScene } from './compile';
15
15
  export type { WayItem, WayDSL, WayCycle, WayVia, WayRelativeItem, WayLabel, WayLabelOp, } from './parsers';
16
- export { parseWay, DrawWay, parseTargetSugar } from './parsers';
16
+ export { parseWay, DrawWay, parseTargetSugar, parseNodeTarget } from './parsers';
17
17
  export type { Position, Rect, RectAnchor, Circle, Ellipse, Diamond, PolarPosition, } from './geometry';
18
18
  export { point, rect, circle, ellipse, diamond, RECT_ANCHORS, polar } from './geometry';
19
19
  export type { ShapeDefinition, ShapeStyle } from './shapes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ export declare const CoordinateSchema: z.ZodObject<{
39
39
  }>]>;
40
40
  }, "strip", z.ZodTypeAny, {
41
41
  type: "coordinate";
42
+ id: string;
42
43
  position: [number, number] | import('./position').PolarPosition | {
43
44
  direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
44
45
  of: string;
@@ -47,9 +48,9 @@ export declare const CoordinateSchema: z.ZodObject<{
47
48
  of: string | [number, number] | import('./position').PolarPosition;
48
49
  offset: [number, number];
49
50
  };
50
- id: string;
51
51
  }, {
52
52
  type: "coordinate";
53
+ id: string;
53
54
  position: [number, number] | import('./position').PolarPosition | {
54
55
  direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
55
56
  of: string;
@@ -58,7 +59,6 @@ export declare const CoordinateSchema: z.ZodObject<{
58
59
  of: string | [number, number] | import('./position').PolarPosition;
59
60
  offset: [number, number];
60
61
  };
61
- id: string;
62
62
  }>;
63
63
  /** Coordinate IR 类型 `{ type:'coordinate', id, position }` */
64
64
  export type IRCoordinate = z.infer<typeof CoordinateSchema>;
@@ -374,6 +374,7 @@ export declare const NodeSchema: z.ZodObject<{
374
374
  shape?: string | undefined;
375
375
  scale?: number | undefined;
376
376
  color?: string | undefined;
377
+ id?: string | undefined;
377
378
  textColor?: string | undefined;
378
379
  label?: {
379
380
  text: string;
@@ -404,19 +405,18 @@ export declare const NodeSchema: z.ZodObject<{
404
405
  rotate?: number | "none" | "radial" | "tangent" | undefined;
405
406
  keepUpright?: boolean | undefined;
406
407
  }[] | undefined;
408
+ roundedCorners?: number | undefined;
407
409
  stroke?: string | undefined;
408
410
  strokeWidth?: number | undefined;
409
411
  fillOpacity?: number | undefined;
410
412
  drawOpacity?: number | undefined;
411
413
  zIndex?: number | undefined;
412
414
  rotate?: number | undefined;
413
- id?: string | undefined;
414
415
  align?: "left" | "right" | "center" | undefined;
415
416
  lineHeight?: number | undefined;
416
417
  dashed?: boolean | undefined;
417
418
  dotted?: boolean | undefined;
418
419
  dashArray?: number[] | undefined;
419
- roundedCorners?: number | undefined;
420
420
  minimumWidth?: number | undefined;
421
421
  minimumHeight?: number | undefined;
422
422
  minimumSize?: number | undefined;
@@ -459,6 +459,7 @@ export declare const NodeSchema: z.ZodObject<{
459
459
  shape?: string | undefined;
460
460
  scale?: number | undefined;
461
461
  color?: string | undefined;
462
+ id?: string | undefined;
462
463
  textColor?: string | undefined;
463
464
  label?: {
464
465
  text: string;
@@ -489,19 +490,18 @@ export declare const NodeSchema: z.ZodObject<{
489
490
  rotate?: number | "none" | "radial" | "tangent" | undefined;
490
491
  keepUpright?: boolean | undefined;
491
492
  }[] | undefined;
493
+ roundedCorners?: number | undefined;
492
494
  stroke?: string | undefined;
493
495
  strokeWidth?: number | undefined;
494
496
  fillOpacity?: number | undefined;
495
497
  drawOpacity?: number | undefined;
496
498
  zIndex?: number | undefined;
497
499
  rotate?: number | undefined;
498
- id?: string | undefined;
499
500
  align?: "left" | "right" | "center" | undefined;
500
501
  lineHeight?: number | undefined;
501
502
  dashed?: boolean | undefined;
502
503
  dotted?: boolean | undefined;
503
504
  dashArray?: number[] | undefined;
504
- roundedCorners?: number | undefined;
505
505
  minimumWidth?: number | undefined;
506
506
  minimumHeight?: number | undefined;
507
507
  minimumSize?: number | undefined;