@retikz/core 0.3.0-alpha.3 → 0.3.0-alpha.4

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 (214) hide show
  1. package/README.md +41 -41
  2. package/dist/es/compile/anchor-cache.d.ts +5 -3
  3. package/dist/es/compile/anchor-cache.d.ts.map +1 -1
  4. package/dist/es/compile/anchor-cache.js +14 -10
  5. package/dist/es/compile/boundary.d.ts +19 -0
  6. package/dist/es/compile/boundary.d.ts.map +1 -0
  7. package/dist/es/compile/boundary.js +64 -0
  8. package/dist/es/compile/compile.d.ts.map +1 -1
  9. package/dist/es/compile/compile.js +14 -2
  10. package/dist/es/compile/node.d.ts +24 -8
  11. package/dist/es/compile/node.d.ts.map +1 -1
  12. package/dist/es/compile/node.js +100 -16
  13. package/dist/es/compile/path/anchor.d.ts.map +1 -1
  14. package/dist/es/compile/path/anchor.js +7 -6
  15. package/dist/es/compile/path/index.d.ts.map +1 -1
  16. package/dist/es/compile/path/index.js +5 -3
  17. package/dist/es/compile/path/relative.js +1 -1
  18. package/dist/es/compile/scope.d.ts.map +1 -1
  19. package/dist/es/compile/scope.js +2 -1
  20. package/dist/es/geometry/arc.d.ts +14 -0
  21. package/dist/es/geometry/arc.d.ts.map +1 -1
  22. package/dist/es/geometry/arc.js +65 -9
  23. package/dist/es/geometry/index.d.ts +1 -0
  24. package/dist/es/geometry/index.d.ts.map +1 -1
  25. package/dist/es/geometry/rect.d.ts +2 -2
  26. package/dist/es/geometry/rect.d.ts.map +1 -1
  27. package/dist/es/geometry/rect.js +3 -3
  28. package/dist/es/geometry/roundedContour.d.ts +88 -0
  29. package/dist/es/geometry/roundedContour.d.ts.map +1 -0
  30. package/dist/es/geometry/roundedContour.js +417 -0
  31. package/dist/es/index.d.ts +6 -5
  32. package/dist/es/index.d.ts.map +1 -1
  33. package/dist/es/index.js +9 -6
  34. package/dist/es/ir/boundary.d.ts +25 -0
  35. package/dist/es/ir/boundary.d.ts.map +1 -0
  36. package/dist/es/ir/boundary.js +14 -0
  37. package/dist/es/ir/index.d.ts +2 -0
  38. package/dist/es/ir/index.d.ts.map +1 -1
  39. package/dist/es/ir/node.d.ts +43 -7
  40. package/dist/es/ir/node.d.ts.map +1 -1
  41. package/dist/es/ir/node.js +8 -3
  42. package/dist/es/ir/path/arrow.d.ts +12 -12
  43. package/dist/es/ir/path/path.d.ts +490 -147
  44. package/dist/es/ir/path/path.d.ts.map +1 -1
  45. package/dist/es/ir/path/path.js +2 -0
  46. package/dist/es/ir/path/step.d.ts +674 -154
  47. package/dist/es/ir/path/step.d.ts.map +1 -1
  48. package/dist/es/ir/path/step.js +2 -2
  49. package/dist/es/ir/path/target.d.ts +43 -8
  50. package/dist/es/ir/path/target.d.ts.map +1 -1
  51. package/dist/es/ir/path/target.js +4 -5
  52. package/dist/es/ir/scope.d.ts +843 -234
  53. package/dist/es/ir/scope.d.ts.map +1 -1
  54. package/dist/es/ir/scope.js +6 -2
  55. package/dist/es/ir/shape.d.ts +14 -0
  56. package/dist/es/ir/shape.d.ts.map +1 -0
  57. package/dist/es/ir/shape.js +9 -0
  58. package/dist/es/parsers/parseNodeTarget.d.ts.map +1 -1
  59. package/dist/es/parsers/parseNodeTarget.js +4 -2
  60. package/dist/es/primitive/ellipse.d.ts +3 -0
  61. package/dist/es/primitive/ellipse.d.ts.map +1 -1
  62. package/dist/es/primitive/group.d.ts +3 -0
  63. package/dist/es/primitive/group.d.ts.map +1 -1
  64. package/dist/es/primitive/path.d.ts +3 -0
  65. package/dist/es/primitive/path.d.ts.map +1 -1
  66. package/dist/es/primitive/rect.d.ts +3 -0
  67. package/dist/es/primitive/rect.d.ts.map +1 -1
  68. package/dist/es/primitive/text.d.ts +3 -0
  69. package/dist/es/primitive/text.d.ts.map +1 -1
  70. package/dist/es/shapes/_contour.d.ts +19 -0
  71. package/dist/es/shapes/_contour.d.ts.map +1 -0
  72. package/dist/es/shapes/_contour.js +60 -0
  73. package/dist/es/shapes/_shared.d.ts +54 -0
  74. package/dist/es/shapes/_shared.d.ts.map +1 -1
  75. package/dist/es/shapes/_shared.js +68 -1
  76. package/dist/es/shapes/arc.d.ts +8 -0
  77. package/dist/es/shapes/arc.d.ts.map +1 -0
  78. package/dist/es/shapes/arc.js +104 -0
  79. package/dist/es/shapes/define.d.ts +13 -0
  80. package/dist/es/shapes/define.d.ts.map +1 -0
  81. package/dist/es/shapes/define.js +13 -0
  82. package/dist/es/shapes/ellipse.d.ts +5 -4
  83. package/dist/es/shapes/ellipse.d.ts.map +1 -1
  84. package/dist/es/shapes/ellipse.js +15 -7
  85. package/dist/es/shapes/index.d.ts +9 -6
  86. package/dist/es/shapes/index.d.ts.map +1 -1
  87. package/dist/es/shapes/index.js +10 -5
  88. package/dist/es/shapes/polygon.d.ts +13 -0
  89. package/dist/es/shapes/polygon.d.ts.map +1 -0
  90. package/dist/es/shapes/polygon.js +104 -0
  91. package/dist/es/shapes/rectangle.d.ts +7 -5
  92. package/dist/es/shapes/rectangle.d.ts.map +1 -1
  93. package/dist/es/shapes/rectangle.js +37 -8
  94. package/dist/es/shapes/sector.d.ts +9 -0
  95. package/dist/es/shapes/sector.d.ts.map +1 -0
  96. package/dist/es/shapes/sector.js +143 -0
  97. package/dist/es/shapes/star.d.ts +15 -0
  98. package/dist/es/shapes/star.d.ts.map +1 -0
  99. package/dist/es/shapes/star.js +113 -0
  100. package/dist/es/shapes/types.d.ts +47 -14
  101. package/dist/es/shapes/types.d.ts.map +1 -1
  102. package/dist/lib/compile/anchor-cache.cjs +14 -10
  103. package/dist/lib/compile/anchor-cache.d.ts +5 -3
  104. package/dist/lib/compile/anchor-cache.d.ts.map +1 -1
  105. package/dist/lib/compile/boundary.cjs +65 -0
  106. package/dist/lib/compile/boundary.d.ts +19 -0
  107. package/dist/lib/compile/boundary.d.ts.map +1 -0
  108. package/dist/lib/compile/compile.cjs +14 -2
  109. package/dist/lib/compile/compile.d.ts.map +1 -1
  110. package/dist/lib/compile/node.cjs +100 -16
  111. package/dist/lib/compile/node.d.ts +24 -8
  112. package/dist/lib/compile/node.d.ts.map +1 -1
  113. package/dist/lib/compile/path/anchor.cjs +7 -6
  114. package/dist/lib/compile/path/anchor.d.ts.map +1 -1
  115. package/dist/lib/compile/path/index.cjs +5 -3
  116. package/dist/lib/compile/path/index.d.ts.map +1 -1
  117. package/dist/lib/compile/path/relative.cjs +1 -1
  118. package/dist/lib/compile/scope.cjs +2 -1
  119. package/dist/lib/compile/scope.d.ts.map +1 -1
  120. package/dist/lib/geometry/arc.cjs +66 -8
  121. package/dist/lib/geometry/arc.d.ts +14 -0
  122. package/dist/lib/geometry/arc.d.ts.map +1 -1
  123. package/dist/lib/geometry/index.d.ts +1 -0
  124. package/dist/lib/geometry/index.d.ts.map +1 -1
  125. package/dist/lib/geometry/rect.cjs +3 -3
  126. package/dist/lib/geometry/rect.d.ts +2 -2
  127. package/dist/lib/geometry/rect.d.ts.map +1 -1
  128. package/dist/lib/geometry/roundedContour.cjs +418 -0
  129. package/dist/lib/geometry/roundedContour.d.ts +88 -0
  130. package/dist/lib/geometry/roundedContour.d.ts.map +1 -0
  131. package/dist/lib/index.cjs +14 -7
  132. package/dist/lib/index.d.ts +6 -5
  133. package/dist/lib/index.d.ts.map +1 -1
  134. package/dist/lib/ir/boundary.cjs +15 -0
  135. package/dist/lib/ir/boundary.d.ts +25 -0
  136. package/dist/lib/ir/boundary.d.ts.map +1 -0
  137. package/dist/lib/ir/index.d.ts +2 -0
  138. package/dist/lib/ir/index.d.ts.map +1 -1
  139. package/dist/lib/ir/node.cjs +8 -3
  140. package/dist/lib/ir/node.d.ts +43 -7
  141. package/dist/lib/ir/node.d.ts.map +1 -1
  142. package/dist/lib/ir/path/arrow.d.ts +12 -12
  143. package/dist/lib/ir/path/path.cjs +2 -0
  144. package/dist/lib/ir/path/path.d.ts +490 -147
  145. package/dist/lib/ir/path/path.d.ts.map +1 -1
  146. package/dist/lib/ir/path/step.cjs +2 -2
  147. package/dist/lib/ir/path/step.d.ts +674 -154
  148. package/dist/lib/ir/path/step.d.ts.map +1 -1
  149. package/dist/lib/ir/path/target.cjs +4 -5
  150. package/dist/lib/ir/path/target.d.ts +43 -8
  151. package/dist/lib/ir/path/target.d.ts.map +1 -1
  152. package/dist/lib/ir/scope.cjs +6 -2
  153. package/dist/lib/ir/scope.d.ts +843 -234
  154. package/dist/lib/ir/scope.d.ts.map +1 -1
  155. package/dist/lib/ir/shape.cjs +9 -0
  156. package/dist/lib/ir/shape.d.ts +14 -0
  157. package/dist/lib/ir/shape.d.ts.map +1 -0
  158. package/dist/lib/parsers/parseNodeTarget.cjs +4 -2
  159. package/dist/lib/parsers/parseNodeTarget.d.ts.map +1 -1
  160. package/dist/lib/primitive/ellipse.d.ts +3 -0
  161. package/dist/lib/primitive/ellipse.d.ts.map +1 -1
  162. package/dist/lib/primitive/group.d.ts +3 -0
  163. package/dist/lib/primitive/group.d.ts.map +1 -1
  164. package/dist/lib/primitive/path.d.ts +3 -0
  165. package/dist/lib/primitive/path.d.ts.map +1 -1
  166. package/dist/lib/primitive/rect.d.ts +3 -0
  167. package/dist/lib/primitive/rect.d.ts.map +1 -1
  168. package/dist/lib/primitive/text.d.ts +3 -0
  169. package/dist/lib/primitive/text.d.ts.map +1 -1
  170. package/dist/lib/shapes/_contour.cjs +61 -0
  171. package/dist/lib/shapes/_contour.d.ts +19 -0
  172. package/dist/lib/shapes/_contour.d.ts.map +1 -0
  173. package/dist/lib/shapes/_shared.cjs +70 -0
  174. package/dist/lib/shapes/_shared.d.ts +54 -0
  175. package/dist/lib/shapes/_shared.d.ts.map +1 -1
  176. package/dist/lib/shapes/arc.cjs +104 -0
  177. package/dist/lib/shapes/arc.d.ts +8 -0
  178. package/dist/lib/shapes/arc.d.ts.map +1 -0
  179. package/dist/lib/shapes/define.cjs +13 -0
  180. package/dist/lib/shapes/define.d.ts +13 -0
  181. package/dist/lib/shapes/define.d.ts.map +1 -0
  182. package/dist/lib/shapes/ellipse.cjs +15 -7
  183. package/dist/lib/shapes/ellipse.d.ts +5 -4
  184. package/dist/lib/shapes/ellipse.d.ts.map +1 -1
  185. package/dist/lib/shapes/index.cjs +12 -6
  186. package/dist/lib/shapes/index.d.ts +9 -6
  187. package/dist/lib/shapes/index.d.ts.map +1 -1
  188. package/dist/lib/shapes/polygon.cjs +104 -0
  189. package/dist/lib/shapes/polygon.d.ts +13 -0
  190. package/dist/lib/shapes/polygon.d.ts.map +1 -0
  191. package/dist/lib/shapes/rectangle.cjs +37 -8
  192. package/dist/lib/shapes/rectangle.d.ts +7 -5
  193. package/dist/lib/shapes/rectangle.d.ts.map +1 -1
  194. package/dist/lib/shapes/sector.cjs +143 -0
  195. package/dist/lib/shapes/sector.d.ts +9 -0
  196. package/dist/lib/shapes/sector.d.ts.map +1 -0
  197. package/dist/lib/shapes/star.cjs +113 -0
  198. package/dist/lib/shapes/star.d.ts +15 -0
  199. package/dist/lib/shapes/star.d.ts.map +1 -0
  200. package/dist/lib/shapes/types.d.ts +47 -14
  201. package/dist/lib/shapes/types.d.ts.map +1 -1
  202. package/package.json +2 -2
  203. package/dist/es/shapes/circle.d.ts +0 -8
  204. package/dist/es/shapes/circle.d.ts.map +0 -1
  205. package/dist/es/shapes/circle.js +0 -34
  206. package/dist/es/shapes/diamond.d.ts +0 -8
  207. package/dist/es/shapes/diamond.d.ts.map +0 -1
  208. package/dist/es/shapes/diamond.js +0 -66
  209. package/dist/lib/shapes/circle.cjs +0 -34
  210. package/dist/lib/shapes/circle.d.ts +0 -8
  211. package/dist/lib/shapes/circle.d.ts.map +0 -1
  212. package/dist/lib/shapes/diamond.cjs +0 -66
  213. package/dist/lib/shapes/diamond.d.ts +0 -8
  214. package/dist/lib/shapes/diamond.d.ts.map +0 -1
@@ -1,5 +1,7 @@
1
+ import { z } from 'zod';
1
2
  import { Position } from '../geometry/point';
2
3
  import { Rect } from '../geometry/rect';
4
+ import { IRJsonObject } from '../ir/json';
3
5
  import { PaintValue, ScenePrimitive } from '../primitive';
4
6
  /**
5
7
  * emit 需要的视觉样式子集
@@ -13,38 +15,69 @@ export type ShapeStyle = {
13
15
  strokeOpacity?: number;
14
16
  strokeWidth?: number;
15
17
  dashPattern?: Array<number>;
16
- roundedCorners?: number;
18
+ cornerRadius?: number;
17
19
  opacity?: number;
18
20
  };
19
21
  /**
20
- * 一个 shape 的可注册定义:外接 / 边界 / anchor / emit 四件事
21
- * @description plain object(factory 友好:`createPolygonShape(6)` 这类普通函数返回它即可);含函数、
22
- * **不进 IR**,走 `CompileOptions.shapes` 运行时注入。内置 4 shape 也是注册项(无内置特权)。
22
+ * 一个 shape 的参数化可注册定义(定义点 typed 形态)
23
+ * @description plain object(factory 友好:`createPolygonShape(6)` 这类普通函数返回它即可);含函数与
24
+ * `paramsSchema`,**不进 IR**,走 `CompileOptions.shapes` 运行时注入。内置 4 shape 也是注册项(无内置特权)。
25
+ * 每个计算函数末位收 per-instance `params`(类型由 `paramsSchema.parse` 在编译期保证),无参形状用
26
+ * `z.strictObject({})` 并忽略 `params`。
27
+ *
28
+ * - `paramsSchema`:类型约束输出 JSON-safe(`z.ZodType<TParams>`)。这是类型层约束,不是运行时唯一保证——
29
+ * compile 在 `paramsSchema.parse(params)` 之后还会对结果跑一次 `JsonObjectSchema.parse`,拦下宽松
30
+ * schema 放过的非 JSON 输出(function / undefined 等)。
23
31
  *
24
32
  * 坐标语义两套,第三方最易写错:
25
33
  * - `boundaryPoint` / `anchor` 收**带 `rotate` 的 Rect**——用 re-export 的 `worldToLocal` / `localToWorld` 写局部系几何。
26
34
  * - `emit` 收**轴对齐 Rect(rotate=0)**——旋转由编译器在外层 `GroupPrim` 统一施加。
27
35
  */
28
- export type ShapeDefinition = {
36
+ export type ShapeDefinitionInput<TParams extends IRJsonObject> = {
37
+ /** params 的 zod schema;类型约束输出 JSON-safe(运行时双 parse 才是真正护栏,见编译期桥接) */
38
+ paramsSchema: z.ZodType<TParams>;
29
39
  /**
30
- * 外接:内容半轴(text + padding)→ 外接框半轴。
31
- * @description rectangle: identity;circle: √(hw²+hh²) 两轴相等;ellipse: ×√2;diamond: ×2。
40
+ * 外接:内容半轴(text + padding)+ params → 外接框半轴。
41
+ * @description 必返回**包含完整 shape 的精确 AABB 半轴**(compile 的 viewBox / scope bbox 只累积该 AABB
42
+ * 四角)。rectangle: identity;circle: √(hw²+hh²) 两轴相等;ellipse: ×√2;diamond: ×2;参数化形状据 params 算。
32
43
  */
33
- circumscribe: (innerHalfWidth: number, innerHalfHeight: number) => {
44
+ circumscribe: (innerHalfWidth: number, innerHalfHeight: number, params: TParams) => {
34
45
  halfWidth: number;
35
46
  halfHeight: number;
36
47
  };
37
- /** 中心 → toward 射线 ∩ 边界(rect 带 rotate)。 */
38
- boundaryPoint: (rect: Rect, toward: Position) => Position;
48
+ /**
49
+ * AABB 中心相对 node `position` 的偏移(可选;缺省 `[0, 0]` = AABB 中心即 position)。
50
+ * @description 多数 shape 的视觉 AABB 以 position 为中心(rectangle / ellipse / diamond);但 sector 等
51
+ * 形状的语义锚点(圆心 apex)才是 position,其外接 AABB 中心偏在一侧——此 hook 让 compile 把
52
+ * `rect.center` 放到 `position + offset`,使 bbox / viewBox 罩住完整形状、anchor 以 AABB 中心 rect 计算时
53
+ * apex 落回 position。返回**未旋转**局部偏移(compile 在施加 node rotate 前用于定位 rect 中心)。
54
+ */
55
+ circumscribeOffset?: (params: TParams) => Position;
56
+ /** 中心 → toward 射线 ∩ 边界(rect 带 rotate);params 喂参数化边界。 */
57
+ boundaryPoint: (rect: Rect, toward: Position, params: TParams) => Position;
39
58
  /** 命名 anchor 世界坐标;shape 不认识的名字返回 `undefined`(调用方据此抛清晰错误)。 */
40
- anchor: (rect: Rect, name: string) => Position | undefined;
59
+ anchor: (rect: Rect, name: string, params: TParams) => Position | undefined;
41
60
  /**
42
61
  * 边上比例点:side 真实边界从约定起点起 t∈[0,1] 处(轴对齐空间求出后由 layout 投回世界系)。
43
62
  * @description 可选——内置 4 shape 必实现,不实现的 shape 收到 `{ side, t }` 时编译期(resolveEdgePoint)抛明确错。
44
63
  * 与 `anchor` 同坐标语义:收**带 rotate 的 Rect**,自行用 worldToLocal/localToWorld 处理旋转。
45
64
  */
46
- edgePoint?: (rect: Rect, side: 'north' | 'south' | 'east' | 'west', t: number) => Position;
47
- /** 视觉 primitive,**轴对齐空间**(rotate 由编译器外层 GroupPrim 统一施加)。 */
48
- emit: (rect: Rect, style: ShapeStyle, round: (n: number) => number) => Iterable<ScenePrimitive>;
65
+ edgePoint?: (rect: Rect, side: 'north' | 'south' | 'east' | 'west', t: number, params: TParams) => Position;
66
+ /** 视觉 primitive,**轴对齐空间**(rotate 由编译器外层 GroupPrim 统一施加);params 喂参数化几何。 */
67
+ emit: (rect: Rect, style: ShapeStyle, round: (n: number) => number, params: TParams) => Iterable<ScenePrimitive>;
68
+ /**
69
+ * node scale 作用于 params 的方式(可选)。
70
+ * @description 给定原始 params 与水平 / 垂直缩放因子 `sx` / `sy`,返回缩放后的 params。
71
+ * 缺省时编译器沿用默认行为——深度缩放 params 里所有数值叶子(uniform 几何均值因子)。
72
+ * 适用于 params 含「非长度」语义字段(如角度)的形状:sector / arc 只缩半径、不缩角度,
73
+ * 通过本 hook 把 startAngle / endAngle 排除在缩放外。不缩放任何 params 的形状不必实现。
74
+ */
75
+ scaleParams?: (params: TParams, sx: number, sy: number) => TParams;
49
76
  };
77
+ /**
78
+ * shape 定义的擦除形态:registry 存这个
79
+ * @description 所有函数收 `IRJsonObject`(实际类型由 `paramsSchema.parse` 在编译期保证);registry 同构
80
+ * `Record<string, ShapeDefinition>`、不泛型化(避免逆变 / 落 any)。定义点用 `defineShape<TParams>` 拿类型安全。
81
+ */
82
+ export type ShapeDefinition = ShapeDefinitionInput<IRJsonObject>;
50
83
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shapes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;OAGG;IACH,YAAY,EAAE,CACZ,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,KACpB;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,0CAA0C;IAC1C,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC;IAC1D,6DAA6D;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;IAC3D;;;;OAIG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EACzC,CAAC,EAAE,MAAM,KACN,QAAQ,CAAC;IACd,4DAA4D;IAC5D,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,KAAK,QAAQ,CAAC,cAAc,CAAC,CAAC;CACjG,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shapes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,YAAY,IAAI;IAC/D,qEAAqE;IACrE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,YAAY,EAAE,CACZ,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,OAAO,KACZ;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC;IACnD,wDAAwD;IACxD,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC;IAC3E,6DAA6D;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,SAAS,CAAC;IAC5E;;;;OAIG;IACH,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EACzC,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,OAAO,KACZ,QAAQ,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,CACJ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,MAAM,EAAE,OAAO,KACZ,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CACpE,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retikz/core",
3
- "version": "0.3.0-alpha.3",
3
+ "version": "0.3.0-alpha.4",
4
4
  "description": "retikz v0.1 core: framework-agnostic IR, scene compiler, and pure parsers.",
5
5
  "type": "module",
6
6
  "author": "Pionpill",
@@ -14,7 +14,7 @@
14
14
  "repository": {
15
15
  "type": "git",
16
16
  "url": "git+https://github.com/Pionpill/retikz.git",
17
- "directory": "packages/core"
17
+ "directory": "packages/core/core"
18
18
  },
19
19
  "bugs": {
20
20
  "url": "https://github.com/Pionpill/retikz/issues"
@@ -1,8 +0,0 @@
1
- import { ShapeDefinition } from './types';
2
- /**
3
- * circle 注册项
4
- * @description circumscribe = 内框对角线/2(两轴相等);几何走 circle 数学层;
5
- * emit 复用 `ellipse.emit`(circle = rx=ry 的 ellipse),与旧 circle→`emitEllipseShape` 等价
6
- */
7
- export declare const circle: ShapeDefinition;
8
- //# sourceMappingURL=circle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/shapes/circle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,eAYpB,CAAC"}
@@ -1,34 +0,0 @@
1
- import { circle as circle$1 } from "../geometry/circle.js";
2
- import { asRectAnchor } from "./_shared.js";
3
- import { ellipse } from "./ellipse.js";
4
- //#region src/shapes/circle.ts
5
- /** 外接框 Rect → Circle(radius = 半宽;circle 外接框宽=高) */
6
- var toCircle = (r) => ({
7
- x: r.x,
8
- y: r.y,
9
- radius: r.width / 2,
10
- rotate: r.rotate
11
- });
12
- /**
13
- * circle 注册项
14
- * @description circumscribe = 内框对角线/2(两轴相等);几何走 circle 数学层;
15
- * emit 复用 `ellipse.emit`(circle = rx=ry 的 ellipse),与旧 circle→`emitEllipseShape` 等价
16
- */
17
- var circle = {
18
- circumscribe: (hw, hh) => {
19
- const r = Math.sqrt(hw * hw + hh * hh);
20
- return {
21
- halfWidth: r,
22
- halfHeight: r
23
- };
24
- },
25
- boundaryPoint: (r, toward) => circle$1.boundaryPoint(toCircle(r), toward),
26
- anchor: (r, name) => {
27
- const a = asRectAnchor(name);
28
- return a ? circle$1.anchor(toCircle(r), a) : void 0;
29
- },
30
- edgePoint: (r, side, t) => circle$1.edgePoint(toCircle(r), side, t),
31
- emit: (r, style, round) => ellipse.emit(r, style, round)
32
- };
33
- //#endregion
34
- export { circle };
@@ -1,8 +0,0 @@
1
- import { ShapeDefinition } from './types';
2
- /**
3
- * diamond 注册项
4
- * @description circumscribe = 内框 ×2(内框 4 顶点落在菱形 4 边上);几何由外接框半轴派生;
5
- * emit 在**轴对齐空间**取 4 顶点出 PathPrim(rotate 由外层 group 施加),与旧 `emitDiamondShape(unrotated(...))` 等价
6
- */
7
- export declare const diamond: ShapeDefinition;
8
- //# sourceMappingURL=diamond.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/shapes/diamond.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAW/C;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,eAgCrB,CAAC"}
@@ -1,66 +0,0 @@
1
- import { asRectAnchor } from "./_shared.js";
2
- import { diamond as diamond$1 } from "../geometry/diamond.js";
3
- //#region src/shapes/diamond.ts
4
- /** 外接框 Rect → Diamond(halfA/halfB = 半宽/半高;顶点在 ±halfA / ±halfB) */
5
- var toDiamond = (r) => ({
6
- x: r.x,
7
- y: r.y,
8
- halfA: r.width / 2,
9
- halfB: r.height / 2,
10
- rotate: r.rotate
11
- });
12
- /**
13
- * diamond 注册项
14
- * @description circumscribe = 内框 ×2(内框 4 顶点落在菱形 4 边上);几何由外接框半轴派生;
15
- * emit 在**轴对齐空间**取 4 顶点出 PathPrim(rotate 由外层 group 施加),与旧 `emitDiamondShape(unrotated(...))` 等价
16
- */
17
- var diamond = {
18
- circumscribe: (hw, hh) => ({
19
- halfWidth: hw * 2,
20
- halfHeight: hh * 2
21
- }),
22
- boundaryPoint: (r, toward) => diamond$1.boundaryPoint(toDiamond(r), toward),
23
- anchor: (r, name) => {
24
- const a = asRectAnchor(name);
25
- return a ? diamond$1.anchor(toDiamond(r), a) : void 0;
26
- },
27
- edgePoint: (r, side, t) => diamond$1.edgePoint(toDiamond(r), side, t),
28
- *emit(r, style, round) {
29
- const d = toDiamond(r);
30
- const e = diamond$1.anchor(d, "east");
31
- const n = diamond$1.anchor(d, "north");
32
- const w = diamond$1.anchor(d, "west");
33
- const s = diamond$1.anchor(d, "south");
34
- yield {
35
- type: "path",
36
- commands: [
37
- {
38
- kind: "move",
39
- to: [round(e[0]), round(e[1])]
40
- },
41
- {
42
- kind: "line",
43
- to: [round(n[0]), round(n[1])]
44
- },
45
- {
46
- kind: "line",
47
- to: [round(w[0]), round(w[1])]
48
- },
49
- {
50
- kind: "line",
51
- to: [round(s[0]), round(s[1])]
52
- },
53
- { kind: "close" }
54
- ],
55
- fill: style.fill ?? "transparent",
56
- fillOpacity: style.fillOpacity,
57
- stroke: style.stroke ?? "currentColor",
58
- strokeOpacity: style.strokeOpacity,
59
- strokeWidth: style.strokeWidth ?? 1,
60
- dashPattern: style.dashPattern,
61
- opacity: style.opacity
62
- };
63
- }
64
- };
65
- //#endregion
66
- export { diamond };
@@ -1,34 +0,0 @@
1
- const require_circle = require("../geometry/circle.cjs");
2
- const require__shared = require("./_shared.cjs");
3
- const require_ellipse = require("./ellipse.cjs");
4
- //#region src/shapes/circle.ts
5
- /** 外接框 Rect → Circle(radius = 半宽;circle 外接框宽=高) */
6
- var toCircle = (r) => ({
7
- x: r.x,
8
- y: r.y,
9
- radius: r.width / 2,
10
- rotate: r.rotate
11
- });
12
- /**
13
- * circle 注册项
14
- * @description circumscribe = 内框对角线/2(两轴相等);几何走 circle 数学层;
15
- * emit 复用 `ellipse.emit`(circle = rx=ry 的 ellipse),与旧 circle→`emitEllipseShape` 等价
16
- */
17
- var circle = {
18
- circumscribe: (hw, hh) => {
19
- const r = Math.sqrt(hw * hw + hh * hh);
20
- return {
21
- halfWidth: r,
22
- halfHeight: r
23
- };
24
- },
25
- boundaryPoint: (r, toward) => require_circle.circle.boundaryPoint(toCircle(r), toward),
26
- anchor: (r, name) => {
27
- const a = require__shared.asRectAnchor(name);
28
- return a ? require_circle.circle.anchor(toCircle(r), a) : void 0;
29
- },
30
- edgePoint: (r, side, t) => require_circle.circle.edgePoint(toCircle(r), side, t),
31
- emit: (r, style, round) => require_ellipse.ellipse.emit(r, style, round)
32
- };
33
- //#endregion
34
- exports.circle = circle;
@@ -1,8 +0,0 @@
1
- import { ShapeDefinition } from './types';
2
- /**
3
- * circle 注册项
4
- * @description circumscribe = 内框对角线/2(两轴相等);几何走 circle 数学层;
5
- * emit 复用 `ellipse.emit`(circle = rx=ry 的 ellipse),与旧 circle→`emitEllipseShape` 等价
6
- */
7
- export declare const circle: ShapeDefinition;
8
- //# sourceMappingURL=circle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circle.d.ts","sourceRoot":"","sources":["../../../src/shapes/circle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,eAYpB,CAAC"}
@@ -1,66 +0,0 @@
1
- const require__shared = require("./_shared.cjs");
2
- const require_diamond = require("../geometry/diamond.cjs");
3
- //#region src/shapes/diamond.ts
4
- /** 外接框 Rect → Diamond(halfA/halfB = 半宽/半高;顶点在 ±halfA / ±halfB) */
5
- var toDiamond = (r) => ({
6
- x: r.x,
7
- y: r.y,
8
- halfA: r.width / 2,
9
- halfB: r.height / 2,
10
- rotate: r.rotate
11
- });
12
- /**
13
- * diamond 注册项
14
- * @description circumscribe = 内框 ×2(内框 4 顶点落在菱形 4 边上);几何由外接框半轴派生;
15
- * emit 在**轴对齐空间**取 4 顶点出 PathPrim(rotate 由外层 group 施加),与旧 `emitDiamondShape(unrotated(...))` 等价
16
- */
17
- var diamond = {
18
- circumscribe: (hw, hh) => ({
19
- halfWidth: hw * 2,
20
- halfHeight: hh * 2
21
- }),
22
- boundaryPoint: (r, toward) => require_diamond.diamond.boundaryPoint(toDiamond(r), toward),
23
- anchor: (r, name) => {
24
- const a = require__shared.asRectAnchor(name);
25
- return a ? require_diamond.diamond.anchor(toDiamond(r), a) : void 0;
26
- },
27
- edgePoint: (r, side, t) => require_diamond.diamond.edgePoint(toDiamond(r), side, t),
28
- *emit(r, style, round) {
29
- const d = toDiamond(r);
30
- const e = require_diamond.diamond.anchor(d, "east");
31
- const n = require_diamond.diamond.anchor(d, "north");
32
- const w = require_diamond.diamond.anchor(d, "west");
33
- const s = require_diamond.diamond.anchor(d, "south");
34
- yield {
35
- type: "path",
36
- commands: [
37
- {
38
- kind: "move",
39
- to: [round(e[0]), round(e[1])]
40
- },
41
- {
42
- kind: "line",
43
- to: [round(n[0]), round(n[1])]
44
- },
45
- {
46
- kind: "line",
47
- to: [round(w[0]), round(w[1])]
48
- },
49
- {
50
- kind: "line",
51
- to: [round(s[0]), round(s[1])]
52
- },
53
- { kind: "close" }
54
- ],
55
- fill: style.fill ?? "transparent",
56
- fillOpacity: style.fillOpacity,
57
- stroke: style.stroke ?? "currentColor",
58
- strokeOpacity: style.strokeOpacity,
59
- strokeWidth: style.strokeWidth ?? 1,
60
- dashPattern: style.dashPattern,
61
- opacity: style.opacity
62
- };
63
- }
64
- };
65
- //#endregion
66
- exports.diamond = diamond;
@@ -1,8 +0,0 @@
1
- import { ShapeDefinition } from './types';
2
- /**
3
- * diamond 注册项
4
- * @description circumscribe = 内框 ×2(内框 4 顶点落在菱形 4 边上);几何由外接框半轴派生;
5
- * emit 在**轴对齐空间**取 4 顶点出 PathPrim(rotate 由外层 group 施加),与旧 `emitDiamondShape(unrotated(...))` 等价
6
- */
7
- export declare const diamond: ShapeDefinition;
8
- //# sourceMappingURL=diamond.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diamond.d.ts","sourceRoot":"","sources":["../../../src/shapes/diamond.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAW/C;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,eAgCrB,CAAC"}