@retikz/core 0.2.0 → 0.3.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/es/compile/compile.d.ts +13 -1
- package/dist/es/compile/compile.d.ts.map +1 -1
- package/dist/es/compile/compile.js +8 -2
- package/dist/es/compile/lowerComposites.d.ts +19 -0
- package/dist/es/compile/lowerComposites.d.ts.map +1 -0
- package/dist/es/compile/lowerComposites.js +64 -0
- package/dist/es/compile/node.d.ts.map +1 -1
- package/dist/es/compile/node.js +9 -6
- package/dist/es/compile/path/label.d.ts.map +1 -1
- package/dist/es/compile/path/label.js +5 -3
- package/dist/es/compile/text-baseline.d.ts +28 -0
- package/dist/es/compile/text-baseline.d.ts.map +1 -0
- package/dist/es/compile/text-baseline.js +40 -0
- package/dist/es/compile/text-metrics.d.ts +1 -1
- package/dist/es/composites/index.d.ts +3 -0
- package/dist/es/composites/index.d.ts.map +1 -0
- package/dist/es/composites/types.d.ts +21 -0
- package/dist/es/composites/types.d.ts.map +1 -0
- package/dist/es/composites/types.js +9 -0
- package/dist/es/index.d.ts +5 -3
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/index.js +3 -1
- package/dist/es/ir/composite.d.ts +37 -0
- package/dist/es/ir/composite.d.ts.map +1 -0
- package/dist/es/ir/composite.js +19 -0
- package/dist/es/ir/index.d.ts +1 -0
- package/dist/es/ir/index.d.ts.map +1 -1
- package/dist/es/ir/scene.d.ts +7 -5
- package/dist/es/ir/scene.d.ts.map +1 -1
- package/dist/es/ir/scene.js +7 -5
- package/dist/es/ir/scope.d.ts +2 -1
- package/dist/es/ir/scope.d.ts.map +1 -1
- package/dist/lib/compile/compile.cjs +8 -2
- package/dist/lib/compile/compile.d.ts +13 -1
- package/dist/lib/compile/compile.d.ts.map +1 -1
- package/dist/lib/compile/lowerComposites.cjs +64 -0
- package/dist/lib/compile/lowerComposites.d.ts +19 -0
- package/dist/lib/compile/lowerComposites.d.ts.map +1 -0
- package/dist/lib/compile/node.cjs +9 -6
- package/dist/lib/compile/node.d.ts.map +1 -1
- package/dist/lib/compile/path/label.cjs +5 -3
- package/dist/lib/compile/path/label.d.ts.map +1 -1
- package/dist/lib/compile/text-baseline.cjs +40 -0
- package/dist/lib/compile/text-baseline.d.ts +28 -0
- package/dist/lib/compile/text-baseline.d.ts.map +1 -0
- package/dist/lib/compile/text-metrics.d.ts +1 -1
- package/dist/lib/composites/index.d.ts +3 -0
- package/dist/lib/composites/index.d.ts.map +1 -0
- package/dist/lib/composites/types.cjs +9 -0
- package/dist/lib/composites/types.d.ts +21 -0
- package/dist/lib/composites/types.d.ts.map +1 -0
- package/dist/lib/index.cjs +4 -0
- package/dist/lib/index.d.ts +5 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/ir/composite.cjs +20 -0
- package/dist/lib/ir/composite.d.ts +37 -0
- package/dist/lib/ir/composite.d.ts.map +1 -0
- package/dist/lib/ir/index.d.ts +1 -0
- package/dist/lib/ir/index.d.ts.map +1 -1
- package/dist/lib/ir/scene.cjs +7 -5
- package/dist/lib/ir/scene.d.ts +7 -5
- package/dist/lib/ir/scene.d.ts.map +1 -1
- package/dist/lib/ir/scope.d.ts +2 -1
- package/dist/lib/ir/scope.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/es/ir/scene.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { IRComposite } from './composite';
|
|
2
3
|
import { IRCoordinate } from './coordinate';
|
|
3
4
|
import { IRNode } from './node';
|
|
4
5
|
import { IRPath } from './path';
|
|
5
6
|
import { IRScope } from './scope';
|
|
6
7
|
/**
|
|
7
|
-
* 顶层 Scene 的子节点:node / path / coordinate / scope
|
|
8
|
+
* 顶层 Scene 的子节点:tier1 node / path / coordinate / scope,或 tier2 composite(有 namespace)
|
|
8
9
|
* @description 手写而非 z.infer 派生,与 ScopeSchema 互递归(scope.children 也是 IRChild[])
|
|
9
10
|
*/
|
|
10
|
-
export type IRChild = IRNode | IRPath | IRCoordinate | IRScope;
|
|
11
|
+
export type IRChild = IRNode | IRPath | IRCoordinate | IRScope | IRComposite;
|
|
11
12
|
/**
|
|
12
|
-
* ChildSchema:
|
|
13
|
-
* @description
|
|
14
|
-
*
|
|
13
|
+
* ChildSchema:tier1 四类 discriminatedUnion(按 type)+ tier2 开放节点(有 namespace)
|
|
14
|
+
* @description tier1 节点无 namespace、按 `type` 判别;tier2 节点有 namespace(CompositeNodeSchema passthrough)。
|
|
15
|
+
* namespace 必填 / 缺失互斥,union 天然无歧义分流;精确字段校验在 compile 期由 lowerComposites 用注册 schema 完成。
|
|
16
|
+
* 用 `z.ZodType<IRChild>` + `z.lazy` 让 ScopeSchema.children 能递归引用自己。
|
|
15
17
|
*/
|
|
16
18
|
export declare const ChildSchema: z.ZodType<IRChild>;
|
|
17
19
|
/**
|
|
@@ -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;
|
|
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,EAAuB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AACpE,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,GAAG,WAAW,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAW1C,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
|
@@ -2,19 +2,21 @@ import { PathSchema } from "./path/path.js";
|
|
|
2
2
|
import { NodeSchema } from "./node.js";
|
|
3
3
|
import { CoordinateSchema } from "./coordinate.js";
|
|
4
4
|
import { ScopeSchema, __registerChildSchema } from "./scope.js";
|
|
5
|
+
import { CompositeNodeSchema } from "./composite.js";
|
|
5
6
|
import { z } from "zod";
|
|
6
7
|
//#region src/ir/scene.ts
|
|
7
8
|
/**
|
|
8
|
-
* ChildSchema:
|
|
9
|
-
* @description
|
|
10
|
-
*
|
|
9
|
+
* ChildSchema:tier1 四类 discriminatedUnion(按 type)+ tier2 开放节点(有 namespace)
|
|
10
|
+
* @description tier1 节点无 namespace、按 `type` 判别;tier2 节点有 namespace(CompositeNodeSchema passthrough)。
|
|
11
|
+
* namespace 必填 / 缺失互斥,union 天然无歧义分流;精确字段校验在 compile 期由 lowerComposites 用注册 schema 完成。
|
|
12
|
+
* 用 `z.ZodType<IRChild>` + `z.lazy` 让 ScopeSchema.children 能递归引用自己。
|
|
11
13
|
*/
|
|
12
|
-
var ChildSchema = z.lazy(() => z.discriminatedUnion("type", [
|
|
14
|
+
var ChildSchema = z.lazy(() => z.union([z.discriminatedUnion("type", [
|
|
13
15
|
NodeSchema,
|
|
14
16
|
PathSchema,
|
|
15
17
|
CoordinateSchema,
|
|
16
18
|
ScopeSchema
|
|
17
|
-
]).describe("
|
|
19
|
+
]).describe("Tier 1 scene child: a node, a path, a coordinate placeholder, or a scope container; discriminator field is `type`"), CompositeNodeSchema.describe("Tier 2 composite node: carries `namespace` + `type`; precise field validation happens at compile via the registered domain schema")]));
|
|
18
20
|
__registerChildSchema(ChildSchema);
|
|
19
21
|
/**
|
|
20
22
|
* 显式视框 schema(覆盖自动算的 layout 范围)
|
package/dist/es/ir/scope.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { IRClipSpec } from './clip';
|
|
3
|
+
import { IRComposite } from './composite';
|
|
3
4
|
import { IRCoordinate } from './coordinate';
|
|
4
5
|
import { IRPaintSpec } from './paint';
|
|
5
6
|
import { IRNode } from './node';
|
|
@@ -2820,7 +2821,7 @@ export type IRScope = {
|
|
|
2820
2821
|
resetStyle?: boolean | Array<StyleChannel>;
|
|
2821
2822
|
zIndex?: number;
|
|
2822
2823
|
clip?: IRClipSpec;
|
|
2823
|
-
children: Array<IRNode | IRPath | IRCoordinate | IRScope>;
|
|
2824
|
+
children: Array<IRNode | IRPath | IRCoordinate | IRScope | IRComposite>;
|
|
2824
2825
|
};
|
|
2825
2826
|
/**
|
|
2826
2827
|
* 注册 ChildSchema 引用——由 scene.ts 在定义 ChildSchema 后调用一次
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/ir/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAOhE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB5B,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,CAAC;AAEpD,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEhE,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/D;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/ir/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAOhE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AAEZ;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8GrB,CAAC"}
|
|
@@ -2,6 +2,7 @@ const require_rect = require("../geometry/rect.cjs");
|
|
|
2
2
|
const require_index = require("../shapes/index.cjs");
|
|
3
3
|
const require_index$1 = require("../arrows/index.cjs");
|
|
4
4
|
const require_index$2 = require("../patterns/index.cjs");
|
|
5
|
+
const require_lowerComposites = require("./lowerComposites.cjs");
|
|
5
6
|
const require_name_stack = require("./name-stack.cjs");
|
|
6
7
|
const require_scope = require("./scope.cjs");
|
|
7
8
|
const require_position = require("./position.cjs");
|
|
@@ -125,6 +126,10 @@ var compileToScene = (ir, options = {}) => {
|
|
|
125
126
|
const round = require_precision.makeRound(options.precision ?? 2);
|
|
126
127
|
const nodeDistance = options.nodeDistance;
|
|
127
128
|
const onWarn = options.onWarn ?? defaultWarnDispatcher;
|
|
129
|
+
const loweredIr = require_lowerComposites.lowerComposites(ir, options.composites ?? [], {
|
|
130
|
+
onWarn,
|
|
131
|
+
maxDepth: options.maxCompositeDepth
|
|
132
|
+
});
|
|
128
133
|
const effectiveShapes = options.shapes ? {
|
|
129
134
|
...require_index.BUILTIN_SHAPES,
|
|
130
135
|
...options.shapes
|
|
@@ -235,6 +240,7 @@ var compileToScene = (ir, options = {}) => {
|
|
|
235
240
|
const processChildren = (children, chain, sink, locatorPrefix, layoutsAccumulator, pathsAccumulator, styleStack) => {
|
|
236
241
|
for (let i = 0; i < children.length; i++) {
|
|
237
242
|
const child = children[i];
|
|
243
|
+
if ("namespace" in child) throw new Error(`Unexpected composite node '${child.namespace}.${child.type}' reached compile; composites must be lowered via lowerComposites first.`);
|
|
238
244
|
if (child.type === "node") {
|
|
239
245
|
const layout = require_node.layoutNode(require_style.resolveNodeStyle(child, styleStack), measureText, nameStack, nodeDistance, chain, require_style.resolveLabelDefault(styleStack), effectiveShapes, require_anchor.refPointOfTarget);
|
|
240
246
|
const globalLayout = chain.length === 0 ? layout : require_scope.projectLayoutToGlobal(layout, chain);
|
|
@@ -323,7 +329,7 @@ var compileToScene = (ir, options = {}) => {
|
|
|
323
329
|
}
|
|
324
330
|
};
|
|
325
331
|
const rootPaths = [];
|
|
326
|
-
processChildren(
|
|
332
|
+
processChildren(loweredIr.children, [], primitives, "", [], rootPaths, []);
|
|
327
333
|
resolvePendingPaths(rootPaths);
|
|
328
334
|
if (placeholderBalance !== 0) {
|
|
329
335
|
const detail = typeof process !== "undefined" && process.env.NODE_ENV !== "production" ? ` at ${collectPlaceholderLocators(primitives).join(", ")}` : "";
|
|
@@ -332,7 +338,7 @@ var compileToScene = (ir, options = {}) => {
|
|
|
332
338
|
const resources = [...paint.resources(), ...clip.resources()];
|
|
333
339
|
return {
|
|
334
340
|
primitives: stableSortByZIndex(sealSink(primitives)),
|
|
335
|
-
layout:
|
|
341
|
+
layout: loweredIr.viewBox !== void 0 ? viewBoxToLayout(loweredIr.viewBox, round) : require_layout.computeLayout(allPoints, layoutPadding, round),
|
|
336
342
|
...resources.length > 0 ? { resources } : {}
|
|
337
343
|
};
|
|
338
344
|
};
|
|
@@ -4,6 +4,7 @@ import { ShapeDefinition } from '../shapes';
|
|
|
4
4
|
import { ArrowDefinition } from '../arrows';
|
|
5
5
|
import { PatternDefinition } from '../patterns';
|
|
6
6
|
import { PathGeneratorDefinition } from '../pathGenerators';
|
|
7
|
+
import { CompositeDefinition } from '../composites';
|
|
7
8
|
import { TextMeasurer } from './text-metrics';
|
|
8
9
|
/** 编译期警告:path / position 解析失败时通过 `CompileOptions.onWarn` 发出,不影响编译产物 */
|
|
9
10
|
export type CompileWarning = {
|
|
@@ -11,7 +12,7 @@ export type CompileWarning = {
|
|
|
11
12
|
* 警告类型代码(机器可读)
|
|
12
13
|
* @description 用户可按 code 分支处理;未来 alpha 加新 code 不破坏调用方
|
|
13
14
|
*/
|
|
14
|
-
code: 'UNRESOLVED_NODE_REFERENCE' | 'PATH_TOO_SHORT' | 'ANCHOR_RESOLUTION_FAILED' | 'OFFSET_BASE_UNRESOLVED' | 'POLAR_ORIGIN_UNRESOLVED' | 'AT_TARGET_UNRESOLVED' | 'RELATIVE_INITIAL_NO_PREV_END' | 'BBOX_EXTREME_INPUT' | 'DUPLICATE_NODE_ID' | 'SHAPE_OVERRIDES_BUILTIN' | 'ARROW_OVERRIDES_BUILTIN' | 'PATTERN_OVERRIDES_BUILTIN' | (string & {});
|
|
15
|
+
code: 'UNRESOLVED_NODE_REFERENCE' | 'PATH_TOO_SHORT' | 'ANCHOR_RESOLUTION_FAILED' | 'OFFSET_BASE_UNRESOLVED' | 'POLAR_ORIGIN_UNRESOLVED' | 'AT_TARGET_UNRESOLVED' | 'RELATIVE_INITIAL_NO_PREV_END' | 'BBOX_EXTREME_INPUT' | 'DUPLICATE_NODE_ID' | 'SHAPE_OVERRIDES_BUILTIN' | 'ARROW_OVERRIDES_BUILTIN' | 'PATTERN_OVERRIDES_BUILTIN' | 'COMPOSITE_NOT_REGISTERED' | (string & {});
|
|
15
16
|
/** 人类可读消息(英文) */
|
|
16
17
|
message: string;
|
|
17
18
|
/** IR locator 路径(jq-like,如 `'children[3].path.children[1].to'`) */
|
|
@@ -66,6 +67,17 @@ export type CompileOptions = {
|
|
|
66
67
|
* `generator.name` 仍是字符串;generator 函数本身只在此运行时注入面、不进 IR。
|
|
67
68
|
*/
|
|
68
69
|
pathGenerators?: Record<string, PathGeneratorDefinition>;
|
|
70
|
+
/**
|
|
71
|
+
* 运行时注入的 Tier 2 composite 展开逻辑(不进 IR)
|
|
72
|
+
* @description compileToScene 第一步据各 def 的 schema 提取的 `${namespace}.${type}` 把 IR 里的 composite
|
|
73
|
+
* 节点展开成 Tier 1;core 无内置。未注册 namespace/type → `onWarn(COMPOSITE_NOT_REGISTERED)` + 跳过该节点。
|
|
74
|
+
*/
|
|
75
|
+
composites?: Array<CompositeDefinition>;
|
|
76
|
+
/**
|
|
77
|
+
* composite 嵌套展开的最大深度(防环 / 防失控递归)
|
|
78
|
+
* @description 默认 32;composite 展开出 composite 时累加,超限或环 throw。
|
|
79
|
+
*/
|
|
80
|
+
maxCompositeDepth?: number;
|
|
69
81
|
};
|
|
70
82
|
/**
|
|
71
83
|
* IR → Scene 纯函数转换,所有 adapter 共享
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/compile/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAwC,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAAa,KAAK,EAA6B,MAAM,cAAc,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/compile/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAwC,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EAAa,KAAK,EAA6B,MAAM,cAAc,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAwBzD,OAAO,EAAE,KAAK,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AA4CrE,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,IAAI,EACA,2BAA2B,GAC3B,gBAAgB,GAChB,0BAA0B,GAC1B,wBAAwB,GACxB,yBAAyB,GACzB,sBAAsB,GACtB,8BAA8B,GAC9B,oBAAoB,GACpB,mBAAmB,GACnB,yBAAyB,GACzB,yBAAyB,GACzB,2BAA2B,GAC3B,0BAA0B,GAC1B,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,2BAA2B;AAC3B,MAAM,MAAM,cAAc,GAAG;IAC3B,oCAAoC;IACpC,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACzD;;;;OAIG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACxC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AA+HF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,IAAI,EAAE,EAAE,UAAS,cAAmB,KAAG,KAiWrE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
let zod = require("zod");
|
|
2
|
+
/**
|
|
3
|
+
* 从注册项的 schema 提取 `namespace` / `type` 的 literal 值(建表 key)
|
|
4
|
+
* @description schema 须是 extend `CompositeBaseSchema` 的 ZodObject,且 namespace / type 为 z.literal;
|
|
5
|
+
* 否则注册期抛清晰错(不重复写 namespace / type 的代价是 schema 形态约束)。
|
|
6
|
+
*/
|
|
7
|
+
var extractKey = (schema) => {
|
|
8
|
+
if (!(schema instanceof zod.z.ZodObject)) throw new Error("Composite schema must be a ZodObject extending CompositeBaseSchema.");
|
|
9
|
+
const shape = schema.shape;
|
|
10
|
+
const namespace = shape.namespace;
|
|
11
|
+
const type = shape.type;
|
|
12
|
+
if (!(namespace instanceof zod.z.ZodLiteral) || !(type instanceof zod.z.ZodLiteral)) throw new Error("Composite schema must declare `namespace` and `type` as z.literal(...).");
|
|
13
|
+
return {
|
|
14
|
+
namespace: String(namespace.value),
|
|
15
|
+
type: String(type.value)
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Tier 2 lowering:把 IR 里的 composite 节点据注册表展开成 Tier 1
|
|
20
|
+
* @description compileToScene 第一步调用。DFS 遍历,`'namespace' in node` → tier2(据 `${namespace}.${type}`
|
|
21
|
+
* 查表 → `schema.parse(node)` 精确校验 + 强类型 → `expand` → 递归展开产物 fixpoint),否则 tier1(scope 递归
|
|
22
|
+
* children)。未注册 → `onWarn(COMPOSITE_NOT_REGISTERED)` + 跳过该节点(不进 Scene),继续编译其余;
|
|
23
|
+
* 环 / 超 `maxDepth` → throw(死循环防护)。无 tier2 节点时等价于原样返回。
|
|
24
|
+
*/
|
|
25
|
+
var lowerComposites = (ir, composites, options) => {
|
|
26
|
+
const { onWarn, maxDepth = 32 } = options;
|
|
27
|
+
const registry = /* @__PURE__ */ new Map();
|
|
28
|
+
for (const definition of composites) {
|
|
29
|
+
const { namespace, type } = extractKey(definition.schema);
|
|
30
|
+
const key = `${namespace}.${type}`;
|
|
31
|
+
if (registry.has(key)) throw new Error(`Duplicate composite registration: '${key}'`);
|
|
32
|
+
registry.set(key, definition);
|
|
33
|
+
}
|
|
34
|
+
const expandList = (children, depth, path) => children.flatMap((child, index) => expandChild(child, depth, `${path}[${index}]`));
|
|
35
|
+
const expandChild = (child, depth, path) => {
|
|
36
|
+
if ("namespace" in child) {
|
|
37
|
+
const key = `${child.namespace}.${child.type}`;
|
|
38
|
+
const definition = registry.get(key);
|
|
39
|
+
if (!definition) {
|
|
40
|
+
onWarn({
|
|
41
|
+
code: "COMPOSITE_NOT_REGISTERED",
|
|
42
|
+
message: `No composite registered for '${key}'; the node is skipped.`,
|
|
43
|
+
path
|
|
44
|
+
});
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
if (depth >= maxDepth) throw new Error(`COMPOSITE_NEST_TOO_DEEP: composite expansion exceeded ${maxDepth} levels at ${path} (cyclic or runaway expand?)`);
|
|
48
|
+
const parsed = definition.schema.parse(child);
|
|
49
|
+
const produced = definition.expand(parsed);
|
|
50
|
+
return expandList(Array.isArray(produced) ? produced : [produced], depth + 1, path);
|
|
51
|
+
}
|
|
52
|
+
if (child.type === "scope") return [{
|
|
53
|
+
...child,
|
|
54
|
+
children: expandList(child.children, depth, `${path}.children`)
|
|
55
|
+
}];
|
|
56
|
+
return [child];
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
...ir,
|
|
60
|
+
children: expandList(ir.children, 0, "children")
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
64
|
+
exports.lowerComposites = lowerComposites;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CompositeDefinition } from '../composites';
|
|
2
|
+
import { IR } from '../ir';
|
|
3
|
+
import { CompileWarning } from './compile';
|
|
4
|
+
/** composite 嵌套展开的默认最大深度(防环 / 防失控递归);可经 CompileOptions.maxCompositeDepth 覆盖 */
|
|
5
|
+
export declare const DEFAULT_MAX_COMPOSITE_DEPTH = 32;
|
|
6
|
+
type LowerOptions = {
|
|
7
|
+
onWarn: (warning: CompileWarning) => void;
|
|
8
|
+
maxDepth?: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Tier 2 lowering:把 IR 里的 composite 节点据注册表展开成 Tier 1
|
|
12
|
+
* @description compileToScene 第一步调用。DFS 遍历,`'namespace' in node` → tier2(据 `${namespace}.${type}`
|
|
13
|
+
* 查表 → `schema.parse(node)` 精确校验 + 强类型 → `expand` → 递归展开产物 fixpoint),否则 tier1(scope 递归
|
|
14
|
+
* children)。未注册 → `onWarn(COMPOSITE_NOT_REGISTERED)` + 跳过该节点(不进 Scene),继续编译其余;
|
|
15
|
+
* 环 / 超 `maxDepth` → throw(死循环防护)。无 tier2 节点时等价于原样返回。
|
|
16
|
+
*/
|
|
17
|
+
export declare const lowerComposites: (ir: IR, composites: Array<CompositeDefinition>, options: LowerOptions) => IR;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=lowerComposites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowerComposites.d.ts","sourceRoot":"","sources":["../../../src/compile/lowerComposites.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,+EAA+E;AAC/E,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAoBF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,IAAI,EAAE,EACN,YAAY,KAAK,CAAC,mBAAmB,CAAC,EACtC,SAAS,YAAY,KACpB,EA8CF,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const require_index = require("../shapes/index.cjs");
|
|
2
2
|
const require_position = require("./position.cjs");
|
|
3
|
+
const require_text_baseline = require("./text-baseline.cjs");
|
|
3
4
|
//#region src/compile/node.ts
|
|
4
5
|
var DEFAULT_FONT_SIZE = 14;
|
|
5
6
|
var DEFAULT_PADDING = 8;
|
|
@@ -383,18 +384,19 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
|
|
|
383
384
|
if (layout.lines) {
|
|
384
385
|
const halfBlockW = layout.textWidth / 2;
|
|
385
386
|
const xOffset = layout.align === "start" ? -halfBlockW : layout.align === "end" ? halfBlockW : 0;
|
|
387
|
+
const lineHeight = round(layout.lineHeight);
|
|
386
388
|
inner.push({
|
|
387
389
|
type: "text",
|
|
388
390
|
x: round(layout.rect.x + xOffset),
|
|
389
|
-
y: round(layout.rect.y),
|
|
391
|
+
y: round(require_text_baseline.toAlphabeticBaselineY(layout.rect.y, "middle", layout.lines.length, lineHeight, layout.fontSize)),
|
|
390
392
|
lines: layout.lines,
|
|
391
393
|
fontSize: layout.fontSize,
|
|
392
394
|
fontFamily: layout.fontFamily,
|
|
393
395
|
fontWeight: layout.fontWeight,
|
|
394
396
|
fontStyle: layout.fontStyle,
|
|
395
397
|
align: layout.align,
|
|
396
|
-
baseline: "
|
|
397
|
-
lineHeight
|
|
398
|
+
baseline: "alphabetic",
|
|
399
|
+
lineHeight,
|
|
398
400
|
fill: layout.textColor ?? "currentColor",
|
|
399
401
|
opacity: layout.opacity,
|
|
400
402
|
measuredWidth: round(layout.textWidth),
|
|
@@ -426,18 +428,19 @@ var emitNodePrimitives = (layout, round, resolveFill) => {
|
|
|
426
428
|
opacity: lab.opacity ?? layout.opacity
|
|
427
429
|
});
|
|
428
430
|
}
|
|
431
|
+
const labLineHeight = round(lab.fontSize * DEFAULT_LINE_HEIGHT_FACTOR);
|
|
429
432
|
const textPrim = {
|
|
430
433
|
type: "text",
|
|
431
434
|
x: round(lx),
|
|
432
|
-
y: round(ly),
|
|
435
|
+
y: round(require_text_baseline.toAlphabeticBaselineY(ly, "middle", 1, labLineHeight, lab.fontSize)),
|
|
433
436
|
lines: [{ text: lab.text }],
|
|
434
437
|
fontSize: lab.fontSize,
|
|
435
438
|
fontFamily: lab.fontFamily,
|
|
436
439
|
fontWeight: lab.fontWeight,
|
|
437
440
|
fontStyle: lab.fontStyle,
|
|
438
441
|
align: "middle",
|
|
439
|
-
baseline: "
|
|
440
|
-
lineHeight:
|
|
442
|
+
baseline: "alphabetic",
|
|
443
|
+
lineHeight: labLineHeight,
|
|
441
444
|
fill: lab.textColor ?? "currentColor",
|
|
442
445
|
opacity: lab.opacity ?? layout.opacity,
|
|
443
446
|
measuredWidth: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAc,MAAM,EAAe,WAAW,EAAE,MAAM,OAAO,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAa,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAmB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/compile/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const require_text_baseline = require("../text-baseline.cjs");
|
|
1
2
|
//#region src/compile/path/label.ts
|
|
2
3
|
/** 边标注默认字号 / 偏移量 */
|
|
3
4
|
var LABEL_FONT_SIZE = 14;
|
|
@@ -60,15 +61,16 @@ var emitLabelPrimitive = (label, sample, measureText, round, hostOpacity) => {
|
|
|
60
61
|
x += LABEL_SIDE_OFFSET;
|
|
61
62
|
align = "start";
|
|
62
63
|
} else baseline = "bottom";
|
|
64
|
+
const emittedLineHeight = round(lineHeight);
|
|
63
65
|
const text = {
|
|
64
66
|
type: "text",
|
|
65
67
|
x: round(x),
|
|
66
|
-
y: round(y),
|
|
68
|
+
y: round(require_text_baseline.toAlphabeticBaselineY(y, baseline, 1, emittedLineHeight, fontSize)),
|
|
67
69
|
lines: [{ text: label.text }],
|
|
68
70
|
fontSize,
|
|
69
71
|
align,
|
|
70
|
-
baseline,
|
|
71
|
-
lineHeight:
|
|
72
|
+
baseline: "alphabetic",
|
|
73
|
+
lineHeight: emittedLineHeight,
|
|
72
74
|
measuredWidth: round(measuredWidth),
|
|
73
75
|
measuredHeight: round(measuredHeight),
|
|
74
76
|
fill: label.textColor ?? "currentColor"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/compile/path/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAmBpD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,WAAW,CAAC,UAAU,CAAC,KAAG,MAIhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,WAAW,EAClB,QAAQ,aAAa,EACrB,aAAa,YAAY,EACzB,OAAO,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAC5B,cAAc,MAAM,KACnB;IAAE,SAAS,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CAmGxD,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/compile/text-baseline.ts
|
|
2
|
+
/**
|
|
3
|
+
* 文本垂直定位归一:任意 baseline 锚点 → 首行 alphabetic 基线 y
|
|
4
|
+
* @description canvas 的 `textBaseline` 与 SVG 的 `dominant-baseline` 是两套同名异义的关键字
|
|
5
|
+
* (`top/middle/bottom` 各按「em 方块」与「字体 ascent/descent」两种不同参照线解释),
|
|
6
|
+
* 只有 `alphabetic`(拉丁字母坐的底线)在两套模型、各浏览器里定义一致。故 core 在编译期把
|
|
7
|
+
* 所有文本的垂直锚点统一折算成首行 alphabetic 基线、emit `baseline: 'alphabetic'`,让 adapter
|
|
8
|
+
* 只渲染这一条无歧义的基线 —— 跨后端像素一致,垂直定位逻辑收口到 renderer-agnostic 的 core。
|
|
9
|
+
*
|
|
10
|
+
* 无字体测量器时用下方 ascent/descent 近似(占一个 em,asc 8 : desc 2 拆分),renderer-agnostic
|
|
11
|
+
* 且两后端一致;接入精确测量器后只需替换 asc/desc 来源,折算公式不变。
|
|
12
|
+
*/
|
|
13
|
+
/** ascent 近似占 fontSize 比例(基线之上) */
|
|
14
|
+
var ASCENT_FACTOR = .8;
|
|
15
|
+
/** descent 近似占 fontSize 比例(基线之下) */
|
|
16
|
+
var DESCENT_FACTOR = .2;
|
|
17
|
+
/**
|
|
18
|
+
* 把按 `baseline` 解释的垂直锚点 `y` 折算成首行 alphabetic 基线 y
|
|
19
|
+
* @description 多行文本首行基线在上、后续行按 lineHeight 向下堆叠;折算保持「关键字所指的块边界
|
|
20
|
+
* (top=块顶 ascent 线 / bottom=块底 descent 线 / middle=视觉中心 / alphabetic=首行基线)落在 y」。
|
|
21
|
+
* @param y - 原垂直锚点(含义由 baseline 决定)
|
|
22
|
+
* @param baseline - 锚点语义
|
|
23
|
+
* @param lineCount - 文本行数(≥1)
|
|
24
|
+
* @param lineHeight - 行高(相邻行基线间距)
|
|
25
|
+
* @param fontSize - 字号(算 ascent/descent 用)
|
|
26
|
+
* @returns 首行 alphabetic 基线 y
|
|
27
|
+
*/
|
|
28
|
+
var toAlphabeticBaselineY = (y, baseline, lineCount, lineHeight, fontSize) => {
|
|
29
|
+
const asc = fontSize * ASCENT_FACTOR;
|
|
30
|
+
const desc = fontSize * DESCENT_FACTOR;
|
|
31
|
+
const span = (lineCount - 1) * lineHeight;
|
|
32
|
+
switch (baseline) {
|
|
33
|
+
case "top": return y + asc;
|
|
34
|
+
case "bottom": return y - span - desc;
|
|
35
|
+
case "middle": return y - span / 2 + (asc - desc) / 2;
|
|
36
|
+
case "alphabetic": return y;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.toAlphabeticBaselineY = toAlphabeticBaselineY;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文本垂直定位归一:任意 baseline 锚点 → 首行 alphabetic 基线 y
|
|
3
|
+
* @description canvas 的 `textBaseline` 与 SVG 的 `dominant-baseline` 是两套同名异义的关键字
|
|
4
|
+
* (`top/middle/bottom` 各按「em 方块」与「字体 ascent/descent」两种不同参照线解释),
|
|
5
|
+
* 只有 `alphabetic`(拉丁字母坐的底线)在两套模型、各浏览器里定义一致。故 core 在编译期把
|
|
6
|
+
* 所有文本的垂直锚点统一折算成首行 alphabetic 基线、emit `baseline: 'alphabetic'`,让 adapter
|
|
7
|
+
* 只渲染这一条无歧义的基线 —— 跨后端像素一致,垂直定位逻辑收口到 renderer-agnostic 的 core。
|
|
8
|
+
*
|
|
9
|
+
* 无字体测量器时用下方 ascent/descent 近似(占一个 em,asc 8 : desc 2 拆分),renderer-agnostic
|
|
10
|
+
* 且两后端一致;接入精确测量器后只需替换 asc/desc 来源,折算公式不变。
|
|
11
|
+
*/
|
|
12
|
+
/** ascent 近似占 fontSize 比例(基线之上) */
|
|
13
|
+
export declare const ASCENT_FACTOR = 0.8;
|
|
14
|
+
/** descent 近似占 fontSize 比例(基线之下) */
|
|
15
|
+
export declare const DESCENT_FACTOR = 0.2;
|
|
16
|
+
/**
|
|
17
|
+
* 把按 `baseline` 解释的垂直锚点 `y` 折算成首行 alphabetic 基线 y
|
|
18
|
+
* @description 多行文本首行基线在上、后续行按 lineHeight 向下堆叠;折算保持「关键字所指的块边界
|
|
19
|
+
* (top=块顶 ascent 线 / bottom=块底 descent 线 / middle=视觉中心 / alphabetic=首行基线)落在 y」。
|
|
20
|
+
* @param y - 原垂直锚点(含义由 baseline 决定)
|
|
21
|
+
* @param baseline - 锚点语义
|
|
22
|
+
* @param lineCount - 文本行数(≥1)
|
|
23
|
+
* @param lineHeight - 行高(相邻行基线间距)
|
|
24
|
+
* @param fontSize - 字号(算 ascent/descent 用)
|
|
25
|
+
* @returns 首行 alphabetic 基线 y
|
|
26
|
+
*/
|
|
27
|
+
export declare const toAlphabeticBaselineY: (y: number, baseline: "top" | "middle" | "bottom" | "alphabetic", lineCount: number, lineHeight: number, fontSize: number) => number;
|
|
28
|
+
//# sourceMappingURL=text-baseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-baseline.d.ts","sourceRoot":"","sources":["../../../src/compile/text-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,mCAAmC;AACnC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,oCAAoC;AACpC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,GAChC,GAAG,MAAM,EACT,UAAU,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,EACpD,WAAW,MAAM,EACjB,YAAY,MAAM,EAClB,UAAU,MAAM,KACf,MAcF,CAAC"}
|
|
@@ -22,7 +22,7 @@ export type TextMetrics = {
|
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* 文字度量函数接口(编译期由 adapter 注入)
|
|
25
|
-
* @description @retikz/react: canvas measureText;@retikz/ssr: opentype.js/fontkit;@retikz/canvas: ctx.measureText
|
|
25
|
+
* @description @retikz/react: canvas measureText;@retikz/ssr: opentype.js/fontkit;@retikz/render/canvas: ctx.measureText
|
|
26
26
|
*/
|
|
27
27
|
export type TextMeasurer = (text: string, font: FontSpec) => TextMetrics;
|
|
28
28
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composites/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/composites/types.ts
|
|
2
|
+
/**
|
|
3
|
+
* 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
|
|
4
|
+
* @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
|
|
5
|
+
* 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐 `definePathGenerator`。
|
|
6
|
+
*/
|
|
7
|
+
var defineComposite = (definition) => definition;
|
|
8
|
+
//#endregion
|
|
9
|
+
exports.defineComposite = defineComposite;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ZodType } from 'zod';
|
|
2
|
+
import { IRChild } from '../ir';
|
|
3
|
+
/**
|
|
4
|
+
* Tier 2 composite 注册项
|
|
5
|
+
* @description domain 包注册一个 Tier 2 type 的全部契约。`schema` 是完整节点 schema(extend `CompositeBaseSchema`,
|
|
6
|
+
* 含 namespace / type literal + 字段 + describe);`expand` 收 `schema.parse` 后的强类型节点、产 Tier 1。
|
|
7
|
+
* namespace / type 由 core 从 schema 的 literal 提取,不在此重复写。配 `defineComposite` 获得强类型 `expand`。
|
|
8
|
+
*/
|
|
9
|
+
export type CompositeDefinition<T = unknown> = {
|
|
10
|
+
/** 完整节点 schema(extend CompositeBaseSchema;namespace / type 为 literal) */
|
|
11
|
+
schema: ZodType<T>;
|
|
12
|
+
/** 把该 composite 节点展开成 Tier 1 IR 的纯函数;据节点字段不同产不同子树 */
|
|
13
|
+
expand: (node: T) => IRChild | Array<IRChild>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* 注册一个 Tier 2 composite(保留 `expand` 的强类型节点参数)
|
|
17
|
+
* @description domain 包用它注册:`expand` 的 node 自动推断为 `z.infer<typeof schema>`;返回值擦除泛型,
|
|
18
|
+
* 可放进 `CompileOptions.composites: Array<CompositeDefinition>`。对齐 `definePathGenerator`。
|
|
19
|
+
*/
|
|
20
|
+
export declare const defineComposite: <T>(definition: CompositeDefinition<T>) => CompositeDefinition;
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/composites/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC7C,yEAAyE;IACzE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,qDAAqD;IACrD,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CAC/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,YAAY,mBAAmB,CAAC,CAAC,CAAC,KAAG,mBACrC,CAAC"}
|
package/dist/lib/index.cjs
CHANGED
|
@@ -19,6 +19,7 @@ const require_node = require("./ir/node.cjs");
|
|
|
19
19
|
const require_coordinate = require("./ir/coordinate.cjs");
|
|
20
20
|
const require_transform = require("./ir/transform.cjs");
|
|
21
21
|
const require_scope = require("./ir/scope.cjs");
|
|
22
|
+
const require_composite = require("./ir/composite.cjs");
|
|
22
23
|
const require_scene = require("./ir/scene.cjs");
|
|
23
24
|
const require_circle = require("./geometry/circle.cjs");
|
|
24
25
|
const require_ellipse = require("./geometry/ellipse.cjs");
|
|
@@ -35,6 +36,7 @@ const require_parseWay = require("./parsers/parseWay.cjs");
|
|
|
35
36
|
const require_polar = require("./geometry/polar.cjs");
|
|
36
37
|
const require_point = require("./geometry/point.cjs");
|
|
37
38
|
const require_define = require("./pathGenerators/define.cjs");
|
|
39
|
+
const require_types = require("./composites/types.cjs");
|
|
38
40
|
exports.ARROW_MARKER_DEFAULT_SIZE = require_arrow.ARROW_MARKER_DEFAULT_SIZE;
|
|
39
41
|
exports.ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH = require_arrow.ARROW_MARKER_HOLLOW_DEFAULT_LINE_WIDTH;
|
|
40
42
|
exports.ARROW_SHAPES = require_arrow.ARROW_SHAPES;
|
|
@@ -55,6 +57,7 @@ exports.CURRENT_IR_VERSION = require_scene.CURRENT_IR_VERSION;
|
|
|
55
57
|
exports.ChildSchema = require_scene.ChildSchema;
|
|
56
58
|
exports.CirclePathStepSchema = require_step.CirclePathStepSchema;
|
|
57
59
|
exports.ClipSpecSchema = require_clip.ClipSpecSchema;
|
|
60
|
+
exports.CompositeBaseSchema = require_composite.CompositeBaseSchema;
|
|
58
61
|
exports.ControlPointSchema = require_step.ControlPointSchema;
|
|
59
62
|
exports.CoordinateSchema = require_coordinate.CoordinateSchema;
|
|
60
63
|
exports.CubicStepSchema = require_step.CubicStepSchema;
|
|
@@ -102,6 +105,7 @@ exports.ViewBoxSchema = require_scene.ViewBoxSchema;
|
|
|
102
105
|
exports.circle = require_circle.circle;
|
|
103
106
|
exports.compileToScene = require_compile.compileToScene;
|
|
104
107
|
exports.computeLayout = require_layout.computeLayout;
|
|
108
|
+
exports.defineComposite = require_types.defineComposite;
|
|
105
109
|
exports.definePathGenerator = require_define.definePathGenerator;
|
|
106
110
|
exports.diamond = require_diamond.diamond;
|
|
107
111
|
exports.ellipse = require_ellipse.ellipse;
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @retikz/core 公开 API
|
|
3
|
-
* @description 任何 framework adapter(@retikz/react、@retikz/vue、@retikz/canvas、@retikz/ssr)只能 import 本文件导出内容,不准走子路径。本包零 React/零 DOM 依赖
|
|
3
|
+
* @description 任何 framework adapter(@retikz/react、@retikz/vue、@retikz/render/canvas、@retikz/ssr)只能 import 本文件导出内容,不准走子路径。本包零 React/零 DOM 依赖
|
|
4
4
|
*/
|
|
5
|
-
export { PositionSchema, PolarPositionSchema, AtPositionSchema, OffsetPositionSchema, AT_DIRECTIONS, TargetSchema, AnchorRefSchema, NodeTargetSchema, RelativeTargetSchema, RelativeAccumulateTargetSchema, AbsoluteTargetSchema, BetweenPositionSchema, MoveStepSchema, LineStepSchema, FoldStepSchema, CycleStepSchema, CurveStepSchema, CubicStepSchema, BendStepSchema, ArcStepSchema, CirclePathStepSchema, EllipsePathStepSchema, RectangleStepSchema, GeneratorStepSchema, ControlPointSchema, StepLabelSchema, StepSchema, NodeSchema, NodeLabelSchema, CoordinateSchema, FontSchema, TextBlockSchema, LineSpecSchema, PathSchema, ArrowDetailSchema, ArrowEndDetailSchema, ScopeSchema, NodeDefaultSchema, PathDefaultSchema, LabelDefaultSchema, ArrowDefaultSchema, TransformSchema, ChildSchema, SceneSchema, CURRENT_IR_VERSION, PaintSpecSchema, GradientStopSchema, JsonValueSchema, JsonObjectSchema, ClipSpecSchema, ViewBoxSchema, } from './ir';
|
|
6
|
-
export type { IRPosition, IRAtPosition, IROffsetPosition, AtDirection, IRTarget, IRAnchorRef, IRNodeTarget, IRRelativeTarget, IRRelativeAccumulateTarget, IRAbsoluteTarget, IRBetweenPosition, IRMoveStep, IRLineStep, IRFoldStep, IRCycleStep, IRCurveStep, IRCubicStep, IRBendStep, IRArcStep, IRCirclePathStep, IREllipsePathStep, IRRectangleStep, IRGeneratorStep, 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, BuiltinArrowName, ArrowShapeName, IRArrowDetail, IRArrowEndDetail, NodeShape, BuiltinShapeName, NodeTextAlign, PatternShapeName, BuiltinPatternName, IRPaintSpec, IRGradientStop, JsonValue, IRJsonObject, IRClipSpec, IRViewBox, } from './ir';
|
|
5
|
+
export { PositionSchema, PolarPositionSchema, AtPositionSchema, OffsetPositionSchema, AT_DIRECTIONS, TargetSchema, AnchorRefSchema, NodeTargetSchema, RelativeTargetSchema, RelativeAccumulateTargetSchema, AbsoluteTargetSchema, BetweenPositionSchema, MoveStepSchema, LineStepSchema, FoldStepSchema, CycleStepSchema, CurveStepSchema, CubicStepSchema, BendStepSchema, ArcStepSchema, CirclePathStepSchema, EllipsePathStepSchema, RectangleStepSchema, GeneratorStepSchema, ControlPointSchema, StepLabelSchema, StepSchema, NodeSchema, NodeLabelSchema, CoordinateSchema, FontSchema, TextBlockSchema, LineSpecSchema, PathSchema, ArrowDetailSchema, ArrowEndDetailSchema, ScopeSchema, CompositeBaseSchema, NodeDefaultSchema, PathDefaultSchema, LabelDefaultSchema, ArrowDefaultSchema, TransformSchema, ChildSchema, SceneSchema, CURRENT_IR_VERSION, PaintSpecSchema, GradientStopSchema, JsonValueSchema, JsonObjectSchema, ClipSpecSchema, ViewBoxSchema, } from './ir';
|
|
6
|
+
export type { IRPosition, IRAtPosition, IROffsetPosition, AtDirection, IRTarget, IRAnchorRef, IRNodeTarget, IRRelativeTarget, IRRelativeAccumulateTarget, IRAbsoluteTarget, IRBetweenPosition, IRMoveStep, IRLineStep, IRFoldStep, IRCycleStep, IRCurveStep, IRCubicStep, IRBendStep, IRArcStep, IRCirclePathStep, IREllipsePathStep, IRRectangleStep, IRGeneratorStep, IRControlPoint, IRStepLabel, IRStep, IRNode, IRNodeLabel, IRCoordinate, IRFont, IRLineSpec, IRTextBlock, IRPath, IRScope, IRComposite, IRNodeDefault, IRPathDefault, IRLabelDefault, IRArrowDefault, StyleChannel, IRTransform, IRTranslateTransform, IRPolarTranslateTransform, IRAtTranslateTransform, IROffsetTranslateTransform, IRRotateTransform, IRScaleTransform, IRChild, IR, ArrowShape, BuiltinArrowName, ArrowShapeName, IRArrowDetail, IRArrowEndDetail, NodeShape, BuiltinShapeName, NodeTextAlign, PatternShapeName, BuiltinPatternName, IRPaintSpec, IRGradientStop, JsonValue, IRJsonObject, IRClipSpec, IRViewBox, } 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, PATTERN_SHAPES, } from './ir';
|
|
8
8
|
export type { ScenePrimitive, RectPrim, EllipsePrim, TextPrim, TextLine, PathPrim, PathCommand,
|
|
9
9
|
/** 7 个 named PathCommand 分支(便于 wrapper / Pick<>) */
|
|
@@ -30,5 +30,7 @@ export type { PatternDefinition, PatternEmitContext } from './patterns';
|
|
|
30
30
|
export { BUILTIN_PATTERNS } from './patterns';
|
|
31
31
|
export type { PathGeneratorDefinition, PathGeneratorContext } from './pathGenerators';
|
|
32
32
|
export { definePathGenerator } from './pathGenerators';
|
|
33
|
+
export type { CompositeDefinition } from './composites';
|
|
34
|
+
export { defineComposite } from './composites';
|
|
33
35
|
export type { ValueOf, AssertEqual } from './types';
|
|
34
36
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -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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"}
|