@vvfx/ge-ir 0.0.1-beta.6 → 0.0.1-beta.8

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 (66) hide show
  1. package/README.md +65 -27
  2. package/dist/common/coordinate-mapping.d.ts +14 -0
  3. package/dist/common/data-path.d.ts +15 -0
  4. package/dist/common/json-normalization.d.ts +3 -0
  5. package/dist/common/math.d.ts +4 -0
  6. package/dist/{passthrough.d.ts → effects-passthrough.d.ts} +3 -2
  7. package/dist/ge2ir/assemble.d.ts +4 -0
  8. package/dist/ge2ir/index.d.ts +4 -2
  9. package/dist/ge2ir/mapping.d.ts +6 -0
  10. package/dist/ge2ir/{parsers/component-parser.d.ts → parser/component.d.ts} +5 -4
  11. package/dist/ge2ir/parser/layer.d.ts +4 -0
  12. package/dist/ge2ir/{scene-reader.d.ts → parser/scene.d.ts} +2 -2
  13. package/dist/ge2ir/{parsers/timeline-parser.d.ts → parser/timeline.d.ts} +5 -3
  14. package/dist/ge2ir/{merge/merge.d.ts → post-process.d.ts} +1 -1
  15. package/dist/ge2ir/types.d.ts +4 -3
  16. package/dist/index.d.ts +7 -18
  17. package/dist/index.js +2277 -2496
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +2277 -2480
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/ir2ge/assemble.d.ts +8 -0
  22. package/dist/ir2ge/converter/animation.d.ts +5 -0
  23. package/dist/ir2ge/converter/bezier.d.ts +35 -0
  24. package/dist/ir2ge/converter/layer-strategy.d.ts +18 -0
  25. package/dist/ir2ge/converter/normalized-animation.d.ts +15 -0
  26. package/dist/ir2ge/converter/timing.d.ts +14 -0
  27. package/dist/ir2ge/{ir/layer-utils.d.ts → converter/transform.d.ts} +5 -4
  28. package/dist/ir2ge/generator/component.d.ts +9 -0
  29. package/dist/ir2ge/generator/layer.d.ts +6 -0
  30. package/dist/ir2ge/generator/timeline.d.ts +7 -0
  31. package/dist/ir2ge/index.d.ts +10 -14
  32. package/dist/ir2ge/mapping.d.ts +5 -0
  33. package/dist/ir2ge/post-process/ge-mask-remap.d.ts +2 -14
  34. package/dist/ir2ge/post-process/index.d.ts +8 -18
  35. package/dist/ir2ge/post-process/mask.d.ts +5 -18
  36. package/dist/ir2ge/post-process/merge-preserved-resources.d.ts +3 -0
  37. package/dist/ir2ge/post-process/parenting.d.ts +2 -2
  38. package/dist/ir2ge/post-process/visibility.d.ts +11 -15
  39. package/dist/ir2ge/types.d.ts +27 -18
  40. package/package.json +3 -3
  41. package/dist/ge2ir/converter.d.ts +0 -3
  42. package/dist/ge2ir/pool/pool.d.ts +0 -4
  43. package/dist/ge2ir/reverse/blend-mode.d.ts +0 -2
  44. package/dist/ge2ir/reverse/coordinate.d.ts +0 -1
  45. package/dist/ge2ir/reverse/end-behavior.d.ts +0 -3
  46. package/dist/ge2ir/reverse/timing.d.ts +0 -2
  47. package/dist/ir2ge/assembly/generator.d.ts +0 -21
  48. package/dist/ir2ge/assembly/scene-assembly.d.ts +0 -11
  49. package/dist/ir2ge/builders/animation.d.ts +0 -4
  50. package/dist/ir2ge/builders/bezier.d.ts +0 -44
  51. package/dist/ir2ge/builders/component.d.ts +0 -13
  52. package/dist/ir2ge/builders/effects.d.ts +0 -9
  53. package/dist/ir2ge/builders/layer.d.ts +0 -6
  54. package/dist/ir2ge/builders/timeline.d.ts +0 -9
  55. package/dist/ir2ge/builders/timing.d.ts +0 -17
  56. package/dist/ir2ge/ir/anchor-strategy.d.ts +0 -24
  57. package/dist/ir2ge/ir/layer-dimensions.d.ts +0 -7
  58. package/dist/ir2ge/ir/parent-link.d.ts +0 -6
  59. package/dist/ir2ge/ir/specific.d.ts +0 -12
  60. package/dist/ir2ge/utils.d.ts +0 -14
  61. package/dist/shared/coordinate.d.ts +0 -11
  62. package/dist/shared/json-value.d.ts +0 -2
  63. package/dist/shared/types.d.ts +0 -60
  64. /package/dist/ge2ir/{parsers/animation-parser.d.ts → parser/animation.d.ts} +0 -0
  65. /package/dist/ge2ir/{parsers/keyframe-parser.d.ts → parser/keyframe.d.ts} +0 -0
  66. /package/dist/ge2ir/{parsers/transform-parser.d.ts → parser/transform.d.ts} +0 -0
package/README.md CHANGED
@@ -1,38 +1,74 @@
1
1
  # @vvfx/ge-ir
2
2
 
3
3
  > 内部转换包。统一承载 Galacean Effects JSONScene 与 `@vvfx/animation-ir`
4
- > 之间的双向转换能力,供 monorepo 内的 lottie2ge、dsl2ge、调试页面等链路复用。
4
+ > 之间的双向转换能力,供 monorepo 内的 lottie2ge、ge-dsl、调试页面等链路复用。
5
5
 
6
6
  ## 能力范围
7
7
 
8
8
  ```
9
- JSONScene ── convertGEToIR ──> IRComposition ── convertIRToGE ──> JSONScene
10
- @vvfx/animation-ir
9
+ GE JSONScene ── convertGEToIR ──> IRComposition ── convertIRToGE ──> GE JSONScene
11
10
  ```
12
11
 
13
12
  本包不定义 IR 数据模型;`@vvfx/animation-ir` 仍是 IR 类型和校验逻辑的唯一真源。
14
13
 
14
+ ## 源码结构
15
+
16
+ ```text
17
+ src/
18
+ ├── common/
19
+ │ ├── coordinate-mapping.ts # GE 2D/3D 坐标换算
20
+ │ ├── data-path.ts # 实体 ID、DataPath 与实体池索引
21
+ │ ├── json-normalization.ts # JSON 边界校验与规范化
22
+ │ └── math.ts # 数值计算
23
+ ├── ge2ir/
24
+ │ ├── index.ts # GE → IR 流程编排
25
+ │ ├── assemble.ts # 组装最终 IRComposition
26
+ │ ├── parser/ # 解析 scene、layer、component、animation
27
+ │ ├── mapping.ts # GE 值到 IR 值的纯映射
28
+ │ └── post-process.ts # 合并图层并恢复层级
29
+ ├── ir2ge/
30
+ │ ├── index.ts # IR → GE 流程编排
31
+ │ ├── assemble.ts # 组装最终 GE JSONScene
32
+ │ ├── converter/ # IR 语义到 GE payload 的转换
33
+ │ ├── generator/ # 生成 item、component 和 timeline
34
+ │ ├── post-process/ # 处理层级、mask、可见性与保留资源
35
+ │ ├── mapping.ts # IR 值到 GE 值的纯映射
36
+ │ └── types.ts # 内部类型与生成阶段实体池
37
+ ├── effects-passthrough.ts # Effects 保真数据的读取与失效处理
38
+ └── index.ts # 稳定公开入口
39
+ ```
40
+
15
41
  ## 主要 API
16
42
 
17
43
  ```ts
44
+ import type { JSONScene } from '@galacean/effects-specification';
18
45
  import { convertGEToIR, convertIRToGE } from '@vvfx/ge-ir';
46
+ import type { GEToIROptions } from '@vvfx/ge-ir';
19
47
 
20
- const ir = convertGEToIR(scene, { frameRate: 30 });
48
+ const options: GEToIROptions = { frameRate: 30 };
49
+ const ir = convertGEToIR(scene, options);
21
50
  const roundTrippedScene = convertIRToGE(ir);
22
51
  ```
23
52
 
24
53
  - `convertIRToGE(ir, duration?)`:IR -> GE JSONScene。
25
54
  - `convertGEToIR(scene, options)`:GE JSONScene -> IRComposition。
26
- - `GE2IROptions`:当前包含 `frameRate`。
27
- - `JSONScene` / `DataPath`:从 `@galacean/effects-specification` 透出,方便 sibling 包消费。
55
+ - `GEToIROptions`:当前包含 `frameRate`。
56
+
57
+ `JSONScene` 由 `@galacean/effects-specification` 定义,应从其真实定义包直接导入。
28
58
 
29
59
  ## 共享契约
30
60
 
31
- `src/shared/coordinate.ts` 是正反向坐标换算的共同真源:
61
+ 共享实现仍按职责归属在各自源码模块,对外统一从包根入口导入:
62
+
63
+ ```ts
64
+ import {
65
+ convert2dTo3dPoint, get2dTo3dRatio, invalidateEffectsLayerSpecific,
66
+ } from '@vvfx/ge-ir';
67
+ ```
68
+
69
+ 公开的坐标换算能力包括:
32
70
 
33
71
  - `DEFAULT_CAMERA_Z`
34
- - `DEFAULT_CAMERA_FOV`
35
- - `DEFAULT_CLIP_MODE`
36
72
  - `get2dTo3dRatio`
37
73
  - `convert2dTo3dPoint`
38
74
 
@@ -52,14 +88,12 @@ const roundTrippedScene = convertIRToGE(ir);
52
88
  - `sourceHierarchy`
53
89
 
54
90
  `sourceHierarchy` 保留 GE 原始的 `single-item` / `null-sprite-pair` 结构。编辑 anchor、
55
- rotation 或 scale 后会使该提示失效,后续由 GE lowering 重新按动画语义决策。
91
+ rotation 或 scale 后会使该提示失效,后续由 GE 生成策略重新按动画语义决策。
56
92
 
57
93
  ### Passthrough 辅助函数
58
94
 
59
95
  ```ts
60
- import { getEffectsLayerSpecific, invalidateEffectsLayerSpecific } from '@vvfx/ge-ir';
61
-
62
- const effectsData = getEffectsLayerSpecific(composition, layer);
96
+ import { invalidateEffectsLayerSpecific } from '@vvfx/ge-ir';
63
97
 
64
98
  layer.transform = {
65
99
  ...layer.transform,
@@ -70,24 +104,28 @@ invalidateEffectsLayerSpecific(layer, 'opacity');
70
104
  ```
71
105
 
72
106
  修改已经存在等价保真数据的规范化字段后,应调用 `invalidateEffectsLayerSpecific`,避免旧的 GE
73
- payload 在 lowering 时覆盖编辑结果。函数会返回被删除的字段,并自动清理已经为空的容器。
107
+ payload 在生成 GE 时覆盖编辑结果。函数会返回被删除的字段,并自动清理已经为空的容器。
74
108
 
75
- 公共辅助 API 还包括 `getEffectsCompositionSpecific`、`hasEffectsAnimationPassthrough` 和
76
- `hasEffectsColorAnimationPassthrough`。
109
+ 根入口还提供 `hasEffectsAnimationPassthrough` 和 `hasEffectsColorAnimationPassthrough`。
77
110
 
78
- `src/shared/types.ts` 放置不属于单一方向的 GE wire/pool 基础结构:
111
+ 生成阶段的内部类型定义在 `src/ir2ge/types.ts`:
79
112
 
80
- - `GERecord`
81
- - `GEDataPath`
82
- - `GEPoolIndex`
83
- - `GETransform`
84
- - `GEItem`
113
+ - `GeneratedVFXItemData`
114
+ - `GeneratedComponentData`
115
+ - `GeneratedMiscData`
85
116
  - `ECSCollector`
86
117
 
87
- ## 稳定性分层
118
+ 标准 GE 数据直接复用 `@galacean/effects-specification` 的 `TransformData`、`VFXItemData`、
119
+ `ComponentData`、`EffectsObjectData` 和 `JSONScene`。这里只保留生成阶段确实需要的兼容桥接:组件和 misc
120
+ 允许携带转换器透传字段;`GeneratedVFXItemData` 允许省略规范包仍标记为必填、但已废弃的 `content`。
121
+
122
+ ## 导出边界
88
123
 
89
- `src/index.ts` 按三层导出:
124
+ 根入口统一提供稳定的跨包能力:
90
125
 
91
- - 公开/主链路:`convertIRToGE`、`convertGEToIR`、基础类型。
92
- - sibling 包 API:`readLottieSpecific`、`hasIndependentParentLifetime`、部分 GE 处理中间类型。
93
- - debug internals:bezier/timeline/post-process/utils 等调试链路会用到的内部符号。
126
+ - 转换:`convertIRToGE`、`convertGEToIR`。
127
+ - 坐标换算:`convert2dTo3dPoint`、`get2dTo3dRatio`、`DEFAULT_CAMERA_Z`。
128
+ - 动画生成:`buildNormalizedColorAnimation`、`buildNormalizedTransformAnimation`。
129
+ - Passthrough:`hasEffectsAnimationPassthrough`、`hasEffectsColorAnimationPassthrough`、
130
+ `invalidateEffectsLayerSpecific`。
131
+ - 类型:`GEToIROptions`。
@@ -0,0 +1,14 @@
1
+ import { CameraClipMode } from '@galacean/effects-specification';
2
+ /** Default camera Z position for 2D GE scenes. */
3
+ export declare const DEFAULT_CAMERA_Z = 8;
4
+ /** Default camera field of view for 2D GE scenes. */
5
+ export declare const DEFAULT_CAMERA_FOV = 60;
6
+ /** Default camera clipping mode for 2D GE scenes. */
7
+ export declare const DEFAULT_CLIP_MODE = CameraClipMode.portrait;
8
+ /** Return the pixel-to-world scale for the given canvas. */
9
+ export declare function get2dTo3dRatio(width: number, height: number): number;
10
+ /**
11
+ * Convert a canvas point from a top-left origin to GE world space with a centered
12
+ * origin and inverted Y axis. The Z value is included in the perspective adjustment.
13
+ */
14
+ export declare function convert2dTo3dPoint(x: number, y: number, z: number, width: number, height: number): [number, number, number];
@@ -0,0 +1,15 @@
1
+ import type { DataPath } from '@galacean/effects-specification';
2
+ type GERecord = Record<string, unknown>;
3
+ /** GE entity pool indexed by ID. */
4
+ export type GEPoolIndex = Map<string, GERecord>;
5
+ /** Create a 32-character hexadecimal GE entity ID. */
6
+ export declare function createId(): string;
7
+ /** Wrap an ID in a GE DataPath reference. */
8
+ export declare function toDataPath(id: string): DataPath;
9
+ /** Index GE pool entries by string ID. */
10
+ export declare function buildPoolIndex(pool: GERecord[] | undefined): GEPoolIndex;
11
+ /** Resolve a GE DataPath against an indexed pool. */
12
+ export declare function resolveDataPath(pool: GEPoolIndex, ref: unknown): GERecord | undefined;
13
+ /** Return the string ID stored in a GE DataPath-like value. */
14
+ export declare function resolveDataPathId(ref: unknown): string | undefined;
15
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
2
+ /** Clone and normalize a value to its JSON-persisted runtime shape. */
3
+ export declare function normalizeJsonValue<T>(value: T): T;
@@ -0,0 +1,4 @@
1
+ /** Round a number to the given decimal precision. */
2
+ export declare function roundNumber(value: number, precision?: number): number;
3
+ /** Interpolate linearly between `a` and `b`. */
4
+ export declare function lerp(a: number, b: number, factor: number): number;
@@ -1,8 +1,9 @@
1
1
  import type { EffectsCompositionSpecific, EffectsLayerSpecific, IRComposition, IRLayerNode } from '@vvfx/animation-ir';
2
+ /** Normalized field whose conflicting Effects passthrough data should be removed. */
2
3
  export type EffectsLayerSpecificInvalidationTarget = 'position' | 'rotation' | 'scale' | 'color' | 'opacity' | 'anchor' | 'mask' | 'precomp';
3
- /** Read GE layer passthrough data. */
4
+ /** Return Effects passthrough data for a layer from a GE composition. */
4
5
  export declare function getEffectsLayerSpecific(ir: IRComposition, layer: IRLayerNode): EffectsLayerSpecific | undefined;
5
- /** Read GE composition passthrough data. */
6
+ /** Return Effects passthrough data for a GE composition. */
6
7
  export declare function getEffectsCompositionSpecific(ir: IRComposition): EffectsCompositionSpecific | undefined;
7
8
  /**
8
9
  * Remove raw GE values that would otherwise shadow an edited normalized field.
@@ -0,0 +1,4 @@
1
+ import type { IRComposition, IRLayerNode } from '@vvfx/animation-ir';
2
+ import type { GESceneContext } from './types';
3
+ /** Assemble parsed GE data into the final normalized IR composition. */
4
+ export declare function assembleIRComposition(scene: Record<string, unknown>, itemIds: string[], layers: IRLayerNode[], ctx: GESceneContext): IRComposition;
@@ -1,2 +1,4 @@
1
- export { convertGEToIR } from './converter';
2
- export type { GE2IROptions } from './types';
1
+ import type { IRComposition } from '@vvfx/animation-ir';
2
+ import type { GEToIROptions } from './types';
3
+ /** Convert a GE scene to normalized IR while retaining fidelity passthrough data. */
4
+ export declare function convertGEToIR(scene: Record<string, unknown>, options: GEToIROptions): IRComposition;
@@ -0,0 +1,6 @@
1
+ import { IRBlendMode, IREndBehavior, type IRTimeContext } from '@vvfx/animation-ir';
2
+ import { EndBehavior } from '@galacean/effects-specification';
3
+ export declare function mapBlendModeToIR(GECode: number | undefined): IRBlendMode | undefined;
4
+ export declare function mapEndBehaviorToIR(GEBehavior: EndBehavior | undefined): IREndBehavior | undefined;
5
+ export declare function mapLayerTimingToIR(delay: number, duration: number, frameRate: number): IRTimeContext;
6
+ export declare function convert3dTo2dPoint(x: number, y: number, z: number, width: number, height: number): [number, number, number];
@@ -1,6 +1,6 @@
1
1
  import type { IRAssetReference, IRBlendMode, IRColor, IRShapeData, IRTextData } from '@vvfx/animation-ir';
2
2
  import type { GESceneContext } from '../types';
3
- export interface ComponentData {
3
+ interface ParsedComponentData {
4
4
  type: 'image' | 'solid' | 'text' | 'shape';
5
5
  asset?: IRAssetReference;
6
6
  solidColor?: IRColor;
@@ -8,9 +8,10 @@ export interface ComponentData {
8
8
  shapes?: IRShapeData[];
9
9
  blendMode?: IRBlendMode;
10
10
  anchorScale?: [number, number];
11
- /** Original GE component id — rendezvous key for cross-component references (masks). */
11
+ /** Source GE component ID used to remap cross-component references. */
12
12
  GEComponentId?: string;
13
- /** Raw GE component-level `mask` object (source: {isMask:true,...}, target: {isMask:false,reference,inverted}). */
13
+ /** Raw component mask preserved for source and target reconstruction. */
14
14
  rawMask?: Record<string, unknown>;
15
15
  }
16
- export declare function parseComponent(item: Record<string, unknown>, ctx: GESceneContext): ComponentData | undefined;
16
+ export declare function parseComponent(item: Record<string, unknown>, ctx: GESceneContext): ParsedComponentData | undefined;
17
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { IRLayerNode } from '@vvfx/animation-ir';
2
+ import type { GESceneContext } from '../types';
3
+ /** Parse one GE item and its referenced component data into an IR layer. */
4
+ export declare function parseItemToLayer(item: Record<string, unknown>, itemId: string, index: number, ctx: GESceneContext): IRLayerNode;
@@ -1,3 +1,3 @@
1
- import type { GE2IROptions, GESceneContext } from './types';
2
- export declare function buildSceneContext(scene: Record<string, unknown>, options: GE2IROptions): GESceneContext;
1
+ import type { GEToIROptions, GESceneContext } from '../types';
2
+ export declare function buildSceneContext(scene: Record<string, unknown>, options: GEToIROptions): GESceneContext;
3
3
  export declare function getCompositionItemIds(scene: Record<string, unknown>): string[];
@@ -1,9 +1,11 @@
1
+ import { EndBehavior } from '@galacean/effects-specification';
1
2
  import type { GESceneContext } from '../types';
2
- export interface TimelineData {
3
+ interface ParsedTimelineData {
3
4
  delay: number;
4
5
  duration: number;
5
- endBehavior: number;
6
+ endBehavior: EndBehavior;
6
7
  transformAsset?: Record<string, unknown>;
7
8
  spriteColorAsset?: Record<string, unknown>;
8
9
  }
9
- export declare function parseTimeline(itemId: string, ctx: GESceneContext): TimelineData | undefined;
10
+ export declare function parseTimeline(itemId: string, ctx: GESceneContext): ParsedTimelineData | undefined;
11
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { IRLayerNode } from '@vvfx/animation-ir';
2
- import type { GESceneContext } from '../types';
2
+ import type { GESceneContext } from './types';
3
3
  export interface RawLayerDescriptor {
4
4
  itemId: string;
5
5
  item: Record<string, unknown>;
@@ -1,6 +1,8 @@
1
1
  import type { IRColor, IREndBehavior } from '@vvfx/animation-ir';
2
- import type { GEPoolIndex } from '../shared/types';
3
- export interface GE2IROptions {
2
+ import type { GEPoolIndex } from '../common/data-path';
3
+ /** Options for converting a GE scene to IR. */
4
+ export interface GEToIROptions {
5
+ /** Frame rate used to express GE second-based timing in IR frames. */
4
6
  frameRate: number;
5
7
  }
6
8
  export interface GESceneContext {
@@ -22,4 +24,3 @@ export interface GESceneContext {
22
24
  textureById: GEPoolIndex;
23
25
  itemIdToTrackId: Map<string, string>;
24
26
  }
25
- export type GEJsonContext = GESceneContext;
package/dist/index.d.ts CHANGED
@@ -1,18 +1,7 @@
1
- export { convertIRToGE } from './ir2ge/assembly/generator';
2
- export { convertGEToIR } from './ge2ir/converter';
3
- export type { GE2IROptions } from './ge2ir/types';
4
- export type { DataPath, JSONScene } from '@galacean/effects-specification';
5
- export { getEffectsCompositionSpecific, getEffectsLayerSpecific, hasEffectsAnimationPassthrough, hasEffectsColorAnimationPassthrough, invalidateEffectsLayerSpecific, } from './passthrough';
6
- export type { EffectsLayerSpecificInvalidationTarget } from './passthrough';
7
- export { readLottieSpecific } from './ir2ge/ir/specific';
8
- export type { LottieLayerSpecific } from './ir2ge/ir/specific';
9
- export { hasIndependentParentLifetime } from './ir2ge/ir/parent-link';
10
- export type { ECSCollector, GEDataPath, GEItem, GEPoolIndex, GERecord, GETransform } from './shared/types';
11
- export type { ProcessedItem, TransformAnimation } from './ir2ge/types';
12
- export { DEFAULT_CAMERA_Z, DEFAULT_CAMERA_FOV, DEFAULT_CLIP_MODE, get2dTo3dRatio, convert2dTo3dPoint, } from './shared/coordinate';
13
- export { assembleScene } from './ir2ge/assembly/scene-assembly';
14
- export { estimateTextWidth, roundNumber, lerp, createId, toDataPath } from './ir2ge/utils';
15
- export { irScalarKeyframesToGE, irVectorKeyframesToGE, irPositionKeyframesToGE, shouldUseKeyframeMode, } from './ir2ge/builders/bezier';
16
- export type { IRToGETimeContext, IRPositionGEResult } from './ir2ge/builders/bezier';
17
- export { buildTimelineTracks } from './ir2ge/builders/timeline';
18
- export { normalizeChildVisibilityByParentDelays } from './ir2ge/post-process/visibility';
1
+ export { convertIRToGE } from './ir2ge';
2
+ export { convertGEToIR } from './ge2ir';
3
+ export { buildNormalizedColorAnimation, buildNormalizedTransformAnimation, } from './ir2ge/converter/normalized-animation';
4
+ export { convert2dTo3dPoint, DEFAULT_CAMERA_Z, get2dTo3dRatio, } from './common/coordinate-mapping';
5
+ export { hasEffectsAnimationPassthrough, hasEffectsColorAnimationPassthrough, invalidateEffectsLayerSpecific, } from './effects-passthrough';
6
+ export type { GEToIROptions } from './ge2ir/types';
7
+ export type { EffectsLayerSpecificInvalidationTarget } from './effects-passthrough';