@retikz/core 0.2.0-alpha.8 → 0.2.0-alpha.9
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.
- package/dist/es/compile/clip.d.ts +17 -0
- package/dist/es/compile/clip.d.ts.map +1 -0
- package/dist/es/compile/clip.js +84 -0
- package/dist/es/compile/compile.d.ts.map +1 -1
- package/dist/es/compile/compile.js +31 -5
- package/dist/es/compile/node.d.ts +2 -1
- package/dist/es/compile/node.d.ts.map +1 -1
- package/dist/es/compile/node.js +3 -3
- package/dist/es/compile/path/anchor.d.ts.map +1 -1
- package/dist/es/compile/path/anchor.js +12 -0
- package/dist/es/compile/path/index.d.ts.map +1 -1
- package/dist/es/compile/path/index.js +11 -3
- package/dist/es/compile/position.d.ts +8 -2
- package/dist/es/compile/position.d.ts.map +1 -1
- package/dist/es/compile/position.js +7 -1
- package/dist/es/index.d.ts +5 -3
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/index.js +7 -5
- package/dist/es/ir/clip.d.ts +72 -0
- package/dist/es/ir/clip.d.ts.map +1 -0
- package/dist/es/ir/clip.js +37 -0
- package/dist/es/ir/coordinate.d.ts +3 -3
- package/dist/es/ir/coordinate.d.ts.map +1 -1
- package/dist/es/ir/coordinate.js +4 -2
- package/dist/es/ir/index.d.ts +1 -0
- package/dist/es/ir/index.d.ts.map +1 -1
- package/dist/es/ir/node.d.ts +5 -5
- package/dist/es/ir/node.d.ts.map +1 -1
- package/dist/es/ir/node.js +4 -2
- package/dist/es/ir/path/arrow.d.ts +12 -12
- package/dist/es/ir/path/path.d.ts +128 -128
- package/dist/es/ir/path/step.d.ts +134 -134
- package/dist/es/ir/path/step.js +1 -1
- package/dist/es/ir/path/target.d.ts +1 -1
- package/dist/es/ir/path/target.d.ts.map +1 -1
- package/dist/es/ir/path/target.js +4 -2
- package/dist/es/ir/position/between-position.d.ts +26 -0
- package/dist/es/ir/position/between-position.d.ts.map +1 -0
- package/dist/es/ir/position/between-position.js +21 -0
- package/dist/es/ir/position/index.d.ts +1 -0
- package/dist/es/ir/position/index.d.ts.map +1 -1
- package/dist/es/ir/scene.d.ts +51 -0
- package/dist/es/ir/scene.d.ts.map +1 -1
- package/dist/es/ir/scene.js +14 -2
- package/dist/es/ir/scope.d.ts +303 -198
- package/dist/es/ir/scope.d.ts.map +1 -1
- package/dist/es/ir/scope.js +2 -0
- package/dist/es/primitive/clip.d.ts +18 -0
- package/dist/es/primitive/clip.d.ts.map +1 -0
- package/dist/es/primitive/group.d.ts +6 -0
- package/dist/es/primitive/group.d.ts.map +1 -1
- package/dist/es/primitive/index.d.ts +1 -0
- package/dist/es/primitive/index.d.ts.map +1 -1
- package/dist/es/primitive/paint.d.ts +11 -5
- package/dist/es/primitive/paint.d.ts.map +1 -1
- package/dist/es/primitive/scene.d.ts +2 -1
- package/dist/es/primitive/scene.d.ts.map +1 -1
- package/dist/lib/compile/clip.cjs +84 -0
- package/dist/lib/compile/clip.d.ts +17 -0
- package/dist/lib/compile/clip.d.ts.map +1 -0
- package/dist/lib/compile/compile.cjs +31 -5
- package/dist/lib/compile/compile.d.ts.map +1 -1
- package/dist/lib/compile/node.cjs +3 -3
- package/dist/lib/compile/node.d.ts +2 -1
- package/dist/lib/compile/node.d.ts.map +1 -1
- package/dist/lib/compile/path/anchor.cjs +12 -0
- package/dist/lib/compile/path/anchor.d.ts.map +1 -1
- package/dist/lib/compile/path/index.cjs +11 -3
- package/dist/lib/compile/path/index.d.ts.map +1 -1
- package/dist/lib/compile/position.cjs +7 -1
- package/dist/lib/compile/position.d.ts +8 -2
- package/dist/lib/compile/position.d.ts.map +1 -1
- package/dist/lib/index.cjs +9 -3
- package/dist/lib/index.d.ts +5 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/ir/clip.cjs +37 -0
- package/dist/lib/ir/clip.d.ts +72 -0
- package/dist/lib/ir/clip.d.ts.map +1 -0
- package/dist/lib/ir/coordinate.cjs +4 -2
- package/dist/lib/ir/coordinate.d.ts +3 -3
- package/dist/lib/ir/coordinate.d.ts.map +1 -1
- package/dist/lib/ir/index.d.ts +1 -0
- package/dist/lib/ir/index.d.ts.map +1 -1
- package/dist/lib/ir/node.cjs +4 -2
- package/dist/lib/ir/node.d.ts +5 -5
- package/dist/lib/ir/node.d.ts.map +1 -1
- package/dist/lib/ir/path/arrow.d.ts +12 -12
- package/dist/lib/ir/path/path.d.ts +128 -128
- package/dist/lib/ir/path/step.cjs +1 -1
- package/dist/lib/ir/path/step.d.ts +134 -134
- package/dist/lib/ir/path/target.cjs +4 -2
- package/dist/lib/ir/path/target.d.ts +1 -1
- package/dist/lib/ir/path/target.d.ts.map +1 -1
- package/dist/lib/ir/position/between-position.cjs +22 -0
- package/dist/lib/ir/position/between-position.d.ts +26 -0
- package/dist/lib/ir/position/between-position.d.ts.map +1 -0
- package/dist/lib/ir/position/index.d.ts +1 -0
- package/dist/lib/ir/position/index.d.ts.map +1 -1
- package/dist/lib/ir/scene.cjs +14 -1
- package/dist/lib/ir/scene.d.ts +51 -0
- package/dist/lib/ir/scene.d.ts.map +1 -1
- package/dist/lib/ir/scope.cjs +2 -0
- package/dist/lib/ir/scope.d.ts +303 -198
- package/dist/lib/ir/scope.d.ts.map +1 -1
- package/dist/lib/primitive/clip.d.ts +18 -0
- package/dist/lib/primitive/clip.d.ts.map +1 -0
- package/dist/lib/primitive/group.d.ts +6 -0
- package/dist/lib/primitive/group.d.ts.map +1 -1
- package/dist/lib/primitive/index.d.ts +1 -0
- package/dist/lib/primitive/index.d.ts.map +1 -1
- package/dist/lib/primitive/paint.d.ts +11 -5
- package/dist/lib/primitive/paint.d.ts.map +1 -1
- package/dist/lib/primitive/scene.d.ts +2 -1
- package/dist/lib/primitive/scene.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/es/ir/path/step.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PositionSchema } from "../position/position.js";
|
|
2
|
+
import { TargetSchema } from "./target.js";
|
|
2
3
|
import { FontSchema } from "../font.js";
|
|
3
4
|
import { JsonObjectSchema } from "../json.js";
|
|
4
|
-
import { TargetSchema } from "./target.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/ir/path/step.ts
|
|
7
7
|
/**
|
|
@@ -104,7 +104,7 @@ export declare const TargetSchema: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNum
|
|
|
104
104
|
}, {
|
|
105
105
|
of: string | [number, number] | import('..').PolarPosition;
|
|
106
106
|
offset: [number, number];
|
|
107
|
-
}
|
|
107
|
+
}>, z.ZodLazy<z.ZodType<import('..').IRBetweenPosition, z.ZodTypeDef, import('..').IRBetweenPosition>>]>;
|
|
108
108
|
/** 路径端点:直接坐标 [x, y]、极坐标、节点 id 字符串、相对偏移对象 */
|
|
109
109
|
export type IRTarget = z.infer<typeof TargetSchema>;
|
|
110
110
|
/** 相对前一 step 终点的偏移;不更新 prevEnd(TikZ `(+x, +y)`) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMpE,eAAO,MAAM,eAAe;;;;;;;;;IAiBsF,CAAC;AAEnH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASmE,CAAC;AAEjG,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;;;;EAQ9B,CAAC;AAEJ,eAAO,MAAM,8BAA8B;;;;;;EAQxC,CAAC;AAEJ,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../../../src/ir/path/target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMpE,eAAO,MAAM,eAAe;;;;;;;;;IAiBsF,CAAC;AAEnH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASmE,CAAC;AAEjG,uCAAuC;AACvC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;;;;EAQ9B,CAAC;AAEJ,eAAO,MAAM,8BAA8B;;;;;;EAQxC,CAAC;AAEJ,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wGAatB,CAAC;AAEJ,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEpD,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEpE,2CAA2C;AAC3C,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { PositionSchema } from "../position/position.js";
|
|
|
2
2
|
import { PolarPositionSchema } from "../position/polar-position.js";
|
|
3
3
|
import { OffsetPositionSchema } from "../position/offset-position.js";
|
|
4
4
|
import { RECT_ANCHORS } from "../../geometry/rect.js";
|
|
5
|
+
import { BetweenPositionSchema } from "../position/between-position.js";
|
|
5
6
|
import { z } from "zod";
|
|
6
7
|
//#region src/ir/path/target.ts
|
|
7
8
|
/** 9 个命名 anchor(复用 geometry/rect.ts,避免两套常量) */
|
|
@@ -32,7 +33,8 @@ var TargetSchema = z.union([
|
|
|
32
33
|
NodeTargetSchema,
|
|
33
34
|
RelativeTargetSchema,
|
|
34
35
|
RelativeAccumulateTargetSchema,
|
|
35
|
-
OffsetPositionSchema
|
|
36
|
-
|
|
36
|
+
OffsetPositionSchema,
|
|
37
|
+
z.lazy(() => BetweenPositionSchema)
|
|
38
|
+
]).describe("Path endpoint: Cartesian [x, y], polar position, node target object ({ id, anchor?, offset? }), relative offset object ({ relative } / { relativeAccumulate }), offset position ({ of, offset } mirroring TikZ `calc`), or between position ({ between: [A, B], t } proportional point) — all resolved at compile time. Node id string shorthand is React DSL only (parsed to a node target object before reaching the IR).");
|
|
37
39
|
//#endregion
|
|
38
40
|
export { AnchorRefSchema, NodeTargetSchema, RelativeAccumulateTargetSchema, RelativeTargetSchema, TargetSchema };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { PolarPosition } from '../../geometry/polar';
|
|
3
|
+
import { IRNodeTarget } from '../path/target';
|
|
4
|
+
import { IROffsetPosition } from './offset-position';
|
|
5
|
+
import { IRPosition } from './position';
|
|
6
|
+
/**
|
|
7
|
+
* 自包含端点类型(partway between 的端点)
|
|
8
|
+
* @description 笛卡尔 / 极坐标 / 节点引用 / offset 定位 / 嵌套 between;**明确排除** path-relative
|
|
9
|
+
* (`{ relative }` / `{ relativeAccumulate }`——它们需要"上一段终点"游标,在两点之间取点的语境无意义)。
|
|
10
|
+
* 自包含让 between 端点不引 `TargetSchema`,避免 `Position` ↔ `Target` schema 成环。
|
|
11
|
+
*/
|
|
12
|
+
export type IRAbsoluteTarget = IRPosition | PolarPosition | IRNodeTarget | IROffsetPosition | IRBetweenPosition;
|
|
13
|
+
/**
|
|
14
|
+
* 两端点之间按比例 t 取点(lerp)
|
|
15
|
+
* @description `between` 两端点为 `AbsoluteTarget`(可嵌套 between);`t ∈ [0,1]`(外插推迟)。
|
|
16
|
+
* compile 把两端点各 resolve 成世界坐标后 `lerpPoint(A, B, t)`。对应 TikZ `($(A)!t!(B)$)`。
|
|
17
|
+
*/
|
|
18
|
+
export type IRBetweenPosition = {
|
|
19
|
+
between: [IRAbsoluteTarget, IRAbsoluteTarget];
|
|
20
|
+
t: number;
|
|
21
|
+
};
|
|
22
|
+
/** AbsoluteTarget schema(z.lazy 自引用:between 可嵌套 between;NodeTarget 在 lazy thunk 内引用化解跨文件环) */
|
|
23
|
+
export declare const AbsoluteTargetSchema: z.ZodType<IRAbsoluteTarget>;
|
|
24
|
+
/** BetweenPosition schema:`{ between: [AbsoluteTarget, AbsoluteTarget], t: 0..1 }` */
|
|
25
|
+
export declare const BetweenPositionSchema: z.ZodType<IRBetweenPosition>;
|
|
26
|
+
//# sourceMappingURL=between-position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"between-position.d.ts","sourceRoot":"","sources":["../../../../src/ir/position/between-position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,KAAK,UAAU,EAAkB,MAAM,YAAY,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAQ5D,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAe9D,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PositionSchema } from "./position.js";
|
|
2
|
+
import { PolarPositionSchema } from "./polar-position.js";
|
|
3
|
+
import { OffsetPositionSchema } from "./offset-position.js";
|
|
4
|
+
import { NodeTargetSchema } from "../path/target.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
//#region src/ir/position/between-position.ts
|
|
7
|
+
/** AbsoluteTarget schema(z.lazy 自引用:between 可嵌套 between;NodeTarget 在 lazy thunk 内引用化解跨文件环) */
|
|
8
|
+
var AbsoluteTargetSchema = z.lazy(() => z.union([
|
|
9
|
+
PositionSchema,
|
|
10
|
+
PolarPositionSchema,
|
|
11
|
+
NodeTargetSchema,
|
|
12
|
+
OffsetPositionSchema,
|
|
13
|
+
BetweenPositionSchema
|
|
14
|
+
]));
|
|
15
|
+
/** BetweenPosition schema:`{ between: [AbsoluteTarget, AbsoluteTarget], t: 0..1 }` */
|
|
16
|
+
var BetweenPositionSchema = z.lazy(() => z.object({
|
|
17
|
+
between: z.tuple([AbsoluteTargetSchema, AbsoluteTargetSchema]).describe("Two endpoints (AbsoluteTarget each; path-relative excluded)"),
|
|
18
|
+
t: z.number().min(0).max(1).describe("Proportion along A→B, 0..1 (0 = A, 1 = B); extrapolation not supported")
|
|
19
|
+
}).describe("Proportional point between two endpoints (TikZ `($(A)!t!(B)$)`); resolved to `lerp(A, B, t)` at compile time. Admitted into Node/Coordinate position and path Step.to."));
|
|
20
|
+
//#endregion
|
|
21
|
+
export { AbsoluteTargetSchema, BetweenPositionSchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/position/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ir/position/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
package/dist/es/ir/scene.d.ts
CHANGED
|
@@ -14,18 +14,69 @@ export type IRChild = IRNode | IRPath | IRCoordinate | IRScope;
|
|
|
14
14
|
* scope 内嵌 scope 无深度限制(与 polar/offset 嵌套规则一致)
|
|
15
15
|
*/
|
|
16
16
|
export declare const ChildSchema: z.ZodType<IRChild>;
|
|
17
|
+
/**
|
|
18
|
+
* 显式视框 schema(覆盖自动算的 layout 范围)
|
|
19
|
+
* @description 具名四字段(与 Scene.layout / SVG viewBox 同构);width / height `.positive().finite()`、
|
|
20
|
+
* x / y `.finite()` 守 Scene JSON 可序列化。设值时 compile 直接用它作 Scene.layout、忽略 padding。
|
|
21
|
+
*/
|
|
22
|
+
export declare const ViewBoxSchema: z.ZodObject<{
|
|
23
|
+
x: z.ZodNumber;
|
|
24
|
+
y: z.ZodNumber;
|
|
25
|
+
width: z.ZodNumber;
|
|
26
|
+
height: z.ZodNumber;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
}, {
|
|
33
|
+
x: number;
|
|
34
|
+
y: number;
|
|
35
|
+
width: number;
|
|
36
|
+
height: number;
|
|
37
|
+
}>;
|
|
38
|
+
/** 显式视框 IR 类型 `{ x, y, width, height }` */
|
|
39
|
+
export type IRViewBox = z.infer<typeof ViewBoxSchema>;
|
|
17
40
|
export declare const SceneSchema: z.ZodObject<{
|
|
18
41
|
version: z.ZodLiteral<1>;
|
|
19
42
|
type: z.ZodLiteral<"scene">;
|
|
20
43
|
children: z.ZodArray<z.ZodType<IRChild, z.ZodTypeDef, IRChild>, "many">;
|
|
44
|
+
viewBox: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
x: z.ZodNumber;
|
|
46
|
+
y: z.ZodNumber;
|
|
47
|
+
width: z.ZodNumber;
|
|
48
|
+
height: z.ZodNumber;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
width: number;
|
|
53
|
+
height: number;
|
|
54
|
+
}, {
|
|
55
|
+
x: number;
|
|
56
|
+
y: number;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
}>>;
|
|
21
60
|
}, "strip", z.ZodTypeAny, {
|
|
22
61
|
type: "scene";
|
|
23
62
|
children: IRChild[];
|
|
24
63
|
version: 1;
|
|
64
|
+
viewBox?: {
|
|
65
|
+
x: number;
|
|
66
|
+
y: number;
|
|
67
|
+
width: number;
|
|
68
|
+
height: number;
|
|
69
|
+
} | undefined;
|
|
25
70
|
}, {
|
|
26
71
|
type: "scene";
|
|
27
72
|
children: IRChild[];
|
|
28
73
|
version: 1;
|
|
74
|
+
viewBox?: {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
width: number;
|
|
78
|
+
height: number;
|
|
79
|
+
} | undefined;
|
|
29
80
|
}>;
|
|
30
81
|
/** retikz IR 顶层 Scene——可序列化 JSON 形式的绘制描述 */
|
|
31
82
|
export type IR = z.infer<typeof SceneSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/ir/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,OAAO,EAAsC,MAAM,SAAS,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAM1C,CAAC;AAKF,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/ir/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,OAAO,EAAsC,MAAM,SAAS,CAAC;AAE3E;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAM1C,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EASvB,CAAC;AAEJ,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBrB,CAAC;AAEJ,4CAA4C;AAC5C,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAE7C,qCAAqC;AACrC,eAAO,MAAM,kBAAkB,EAAG,CAAU,CAAC"}
|
package/dist/es/ir/scene.js
CHANGED
|
@@ -16,12 +16,24 @@ var ChildSchema = z.lazy(() => z.discriminatedUnion("type", [
|
|
|
16
16
|
ScopeSchema
|
|
17
17
|
]).describe("Top-level scene child: a node, a path, a coordinate placeholder, or a scope container; discriminator field is `type`"));
|
|
18
18
|
__registerChildSchema(ChildSchema);
|
|
19
|
+
/**
|
|
20
|
+
* 显式视框 schema(覆盖自动算的 layout 范围)
|
|
21
|
+
* @description 具名四字段(与 Scene.layout / SVG viewBox 同构);width / height `.positive().finite()`、
|
|
22
|
+
* x / y `.finite()` 守 Scene JSON 可序列化。设值时 compile 直接用它作 Scene.layout、忽略 padding。
|
|
23
|
+
*/
|
|
24
|
+
var ViewBoxSchema = z.object({
|
|
25
|
+
x: z.number().finite().describe("ViewBox left-top x"),
|
|
26
|
+
y: z.number().finite().describe("ViewBox left-top y"),
|
|
27
|
+
width: z.number().finite().positive().describe("ViewBox width (> 0)"),
|
|
28
|
+
height: z.number().finite().positive().describe("ViewBox height (> 0)")
|
|
29
|
+
}).describe("Explicit viewBox overriding the auto-computed layout range (fixed size / clipping / multi-figure alignment). When set, Scene.layout uses it directly and padding is ignored.");
|
|
19
30
|
var SceneSchema = z.object({
|
|
20
31
|
version: z.literal(1).describe("IR major version number; bump only on breaking schema changes"),
|
|
21
32
|
type: z.literal("scene").describe("Discriminator marking this object as the root scene"),
|
|
22
|
-
children: z.array(ChildSchema).describe("Top-level children of the scene; nodes register ids that paths can reference")
|
|
33
|
+
children: z.array(ChildSchema).describe("Top-level children of the scene; nodes register ids that paths can reference"),
|
|
34
|
+
viewBox: ViewBoxSchema.optional().describe("Optional explicit viewBox; when set, Scene.layout uses it (ignoring padding) instead of the auto-computed bounding box. Omitted = automatic AABB + padding.")
|
|
23
35
|
}).describe("Top-level retikz IR scene — the canonical, JSON-serializable representation of a drawing");
|
|
24
36
|
/** IR 当前主版本号;只在 schema 出现破坏性变更时递增 */
|
|
25
37
|
var CURRENT_IR_VERSION = 1;
|
|
26
38
|
//#endregion
|
|
27
|
-
export { CURRENT_IR_VERSION, ChildSchema, SceneSchema };
|
|
39
|
+
export { CURRENT_IR_VERSION, ChildSchema, SceneSchema, ViewBoxSchema };
|