@vvfx/ge-ir 0.0.1-beta.7 → 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.
- package/README.md +65 -27
- package/dist/common/coordinate-mapping.d.ts +14 -0
- package/dist/common/data-path.d.ts +15 -0
- package/dist/common/json-normalization.d.ts +3 -0
- package/dist/common/math.d.ts +4 -0
- package/dist/{passthrough.d.ts → effects-passthrough.d.ts} +3 -2
- package/dist/ge2ir/assemble.d.ts +4 -0
- package/dist/ge2ir/index.d.ts +4 -2
- package/dist/ge2ir/mapping.d.ts +6 -0
- package/dist/ge2ir/{parsers/component-parser.d.ts → parser/component.d.ts} +5 -4
- package/dist/ge2ir/parser/layer.d.ts +4 -0
- package/dist/ge2ir/{scene-reader.d.ts → parser/scene.d.ts} +2 -2
- package/dist/ge2ir/{parsers/timeline-parser.d.ts → parser/timeline.d.ts} +5 -3
- package/dist/ge2ir/{merge/merge.d.ts → post-process.d.ts} +1 -1
- package/dist/ge2ir/types.d.ts +4 -3
- package/dist/index.d.ts +7 -19
- package/dist/index.js +4268 -4531
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4270 -4515
- package/dist/index.mjs.map +1 -1
- package/dist/ir2ge/assemble.d.ts +8 -0
- package/dist/ir2ge/converter/animation.d.ts +5 -0
- package/dist/ir2ge/converter/bezier.d.ts +35 -0
- package/dist/ir2ge/converter/layer-strategy.d.ts +18 -0
- package/dist/ir2ge/converter/normalized-animation.d.ts +15 -0
- package/dist/ir2ge/converter/timing.d.ts +14 -0
- package/dist/ir2ge/{ir/layer-utils.d.ts → converter/transform.d.ts} +5 -4
- package/dist/ir2ge/generator/component.d.ts +9 -0
- package/dist/ir2ge/generator/layer.d.ts +6 -0
- package/dist/ir2ge/generator/timeline.d.ts +7 -0
- package/dist/ir2ge/index.d.ts +10 -14
- package/dist/ir2ge/mapping.d.ts +5 -0
- package/dist/ir2ge/post-process/ge-mask-remap.d.ts +2 -14
- package/dist/ir2ge/post-process/index.d.ts +8 -18
- package/dist/ir2ge/post-process/mask.d.ts +5 -18
- package/dist/ir2ge/post-process/merge-preserved-resources.d.ts +3 -0
- package/dist/ir2ge/post-process/parenting.d.ts +2 -2
- package/dist/ir2ge/post-process/visibility.d.ts +11 -15
- package/dist/ir2ge/types.d.ts +27 -18
- package/package.json +3 -3
- package/dist/ge2ir/converter.d.ts +0 -3
- package/dist/ge2ir/pool/pool.d.ts +0 -4
- package/dist/ge2ir/reverse/blend-mode.d.ts +0 -2
- package/dist/ge2ir/reverse/coordinate.d.ts +0 -1
- package/dist/ge2ir/reverse/end-behavior.d.ts +0 -3
- package/dist/ge2ir/reverse/timing.d.ts +0 -2
- package/dist/ir2ge/assembly/generator.d.ts +0 -21
- package/dist/ir2ge/assembly/scene-assembly.d.ts +0 -11
- package/dist/ir2ge/builders/animation.d.ts +0 -12
- package/dist/ir2ge/builders/bezier.d.ts +0 -44
- package/dist/ir2ge/builders/component.d.ts +0 -13
- package/dist/ir2ge/builders/effects.d.ts +0 -9
- package/dist/ir2ge/builders/layer.d.ts +0 -6
- package/dist/ir2ge/builders/timeline.d.ts +0 -9
- package/dist/ir2ge/builders/timing.d.ts +0 -17
- package/dist/ir2ge/ir/anchor-strategy.d.ts +0 -24
- package/dist/ir2ge/ir/layer-dimensions.d.ts +0 -7
- package/dist/ir2ge/ir/parent-link.d.ts +0 -6
- package/dist/ir2ge/ir/specific.d.ts +0 -12
- package/dist/ir2ge/utils.d.ts +0 -14
- package/dist/shared/coordinate.d.ts +0 -11
- package/dist/shared/json-value.d.ts +0 -2
- package/dist/shared/types.d.ts +0 -60
- /package/dist/ge2ir/{parsers/animation-parser.d.ts → parser/animation.d.ts} +0 -0
- /package/dist/ge2ir/{parsers/keyframe-parser.d.ts → parser/keyframe.d.ts} +0 -0
- /package/dist/ge2ir/{parsers/transform-parser.d.ts → parser/transform.d.ts} +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/passthrough.ts","../src/shared/coordinate.ts","../src/ir2ge/utils.ts","../src/ir2ge/builders/timeline.ts","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/scene.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/composition.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/number-expression.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/base-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/particle-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/particle-shape.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/model/light.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/model/mesh.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/model/camera.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/model/material.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/item/model/render.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/text.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/shape/shape-component-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/shape/shape-primitive-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/shape/shape-stroke-param.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/animation-graph/graph-node-datas.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/assets.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/data-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/geometry-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.8.1/node_modules/@galacean/effects-specification/es/index.js","../src/ir2ge/builders/bezier.ts","../src/ir2ge/ir/parent-link.ts","../src/ir2ge/builders/timing.ts","../src/ir2ge/ir/layer-utils.ts","../src/ir2ge/builders/animation.ts","../src/ir2ge/builders/effects.ts","../src/ir2ge/ir/layer-dimensions.ts","../src/ir2ge/builders/component.ts","../src/ir2ge/ir/anchor-strategy.ts","../src/ir2ge/builders/layer.ts","../src/ir2ge/assembly/scene-assembly.ts","../src/ir2ge/post-process/parenting.ts","../src/ir2ge/post-process/mask.ts","../src/ir2ge/post-process/ge-mask-remap.ts","../src/ir2ge/post-process/visibility.ts","../src/ir2ge/post-process/index.ts","../src/shared/json-value.ts","../src/ir2ge/assembly/generator.ts","../src/ge2ir/pool/pool.ts","../src/ge2ir/reverse/end-behavior.ts","../src/ge2ir/scene-reader.ts","../src/ge2ir/parsers/timeline-parser.ts","../src/ge2ir/reverse/coordinate.ts","../src/ge2ir/parsers/transform-parser.ts","../src/ge2ir/parsers/keyframe-parser.ts","../src/ge2ir/parsers/animation-parser.ts","../src/ge2ir/reverse/blend-mode.ts","../src/ge2ir/parsers/component-parser.ts","../src/ge2ir/reverse/timing.ts","../src/ge2ir/merge/merge.ts","../src/ge2ir/converter.ts","../src/ir2ge/ir/specific.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","import type { EffectsCompositionSpecific, EffectsLayerSpecific, IRComposition, IRLayerNode } from '@vvfx/animation-ir';\n\nexport type EffectsLayerSpecificInvalidationTarget =\n | 'position' | 'rotation' | 'scale' | 'color' | 'opacity'\n | 'anchor' | 'mask' | 'precomp';\n\n/** Read GE layer passthrough data. */\nexport function getEffectsLayerSpecific (\n ir: IRComposition,\n layer: IRLayerNode,\n): EffectsLayerSpecific | undefined {\n return ir.source === 'effects' ? layer.specific?.effects : undefined;\n}\n\n/** Read GE composition passthrough data. */\nexport function getEffectsCompositionSpecific (\n ir: IRComposition,\n): EffectsCompositionSpecific | undefined {\n return ir.source === 'effects' ? ir.specific?.effects : undefined;\n}\n\nconst EFFECTS_ANIMATION_SPECIFIC_KEYS = [\n 'positionOverLifetime',\n 'rotationOverLifetime',\n 'sizeOverLifetime',\n 'colorOverLifetime',\n] as const satisfies readonly (keyof EffectsLayerSpecific)[];\n\nconst KEYS_BY_INVALIDATION_TARGET: Record<\n EffectsLayerSpecificInvalidationTarget,\n readonly (keyof EffectsLayerSpecific)[]\n> = {\n position: ['positionOverLifetime'],\n rotation: ['rotationOverLifetime', 'sourceHierarchy'],\n scale: ['sizeOverLifetime', 'sourceHierarchy'],\n color: ['colorOverLifetime'],\n opacity: ['colorOverLifetime'],\n anchor: ['sourceHierarchy'],\n mask: ['mask'],\n precomp: ['precompRefId', 'precompContent'],\n};\n\n/**\n * Remove raw GE values that would otherwise shadow an edited normalized field.\n * Empty `effects` and `specific` containers are pruned so serialization stays clean.\n */\nexport function invalidateEffectsLayerSpecific (\n layer: IRLayerNode,\n target: EffectsLayerSpecificInvalidationTarget,\n): (keyof EffectsLayerSpecific)[] {\n const effects = layer.specific?.effects;\n\n if (effects == null) {\n return [];\n }\n\n const removed: (keyof EffectsLayerSpecific)[] = [];\n\n for (const key of KEYS_BY_INVALIDATION_TARGET[target]) {\n if (key in effects) {\n delete effects[key];\n removed.push(key);\n }\n }\n\n if (Object.keys(effects).length === 0 && layer.specific != null) {\n delete layer.specific.effects;\n }\n if (layer.specific != null && Object.keys(layer.specific).length === 0) {\n delete layer.specific;\n }\n\n return removed;\n}\n\n/** Whether invalidating opacity would also discard a GE color animation. */\nexport function hasEffectsColorAnimationPassthrough (layer: IRLayerNode): boolean {\n const color = layer.specific?.effects?.colorOverLifetime;\n\n if (color == null) {\n return false;\n }\n\n return Object.keys(color).some(channelKey => channelKey !== 'opacity');\n}\n\n/** Whether the layer retains any raw GE animation payload. */\nexport function hasEffectsAnimationPassthrough (layer: IRLayerNode): boolean {\n const effects = layer.specific?.effects;\n\n return effects != null && EFFECTS_ANIMATION_SPECIFIC_KEYS.some(key => effects[key] != null);\n}\n","export const DEFAULT_CAMERA_Z = 8;\nexport const DEFAULT_CAMERA_FOV = 60;\n\nexport const DEFAULT_CLIP_MODE = 1;\n\n/** 2D pixel space -> GE 3D world unit ratio for a given canvas size. */\nexport function get2dTo3dRatio (width: number, height: number): number {\n let ratio =\n (2 / height) * DEFAULT_CAMERA_Z * Math.tan((DEFAULT_CAMERA_FOV / 2) * (Math.PI / 180)) +\n 1e-6;\n\n if (DEFAULT_CLIP_MODE === 1) {\n ratio *= height / width;\n }\n\n return ratio;\n}\n\n/**\n * Convert a 2D point in canvas pixel space (origin top-left) to a GE 3D world\n * point (origin centered, Y flipped). The `z` parameter applies the GE camera\n * adapter to stay perspective-correct for non-zero Z layers.\n */\nexport function convert2dTo3dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const offsetX = (x - width / 2.0) * ratio * adaptRatioZ;\n const offsetY = (height / 2.0 - y) * ratio * adaptRatioZ;\n\n return [offsetX, offsetY, z];\n}\n","import { v4 } from 'uuid';\nimport type { DataPath } from '@galacean/effects-specification';\n\n// ── IDs ──\n\n/** Generate a 32-char hex GE entity id (UUID v4 with dashes stripped). */\nexport function createId (): string {\n return v4().replace(/-/g, '');\n}\n\n/** Wrap an id into a `{ id }` GE DataPath reference. */\nexport function toDataPath (id: string): DataPath {\n return { id };\n}\n\n// ── Numbers ──\n\n/** Round a number to the given decimal precision (default 4). */\nexport function roundNumber (value: number, precision = 4): number {\n const factor = 10 ** precision;\n\n return Math.round(value * factor) / factor;\n}\n\n/** Linear interpolation between `a` and `b` by `factor` ∈ [0, 1]. */\nexport function lerp (a: number, b: number, factor: number): number {\n return (1 - factor) * a + factor * b;\n}\n\n// ── Text metrics ──\n\n/**\n * Rough text width estimate used when the IR layer does not record a\n * measured width. Average character width ≈ 0.6 × fontSize.\n */\nexport function estimateTextWidth (text: string, fontSize: number, letterSpacing?: number): number {\n if (text.length === 0) {\n return 0;\n }\n\n const avgCharWidth = fontSize * 0.6;\n const spacing = (letterSpacing ?? 0) * (text.length - 1);\n\n return text.length * avgCharWidth + spacing;\n}\n","import type { DataPath, TimelineClipData } from '@galacean/effects-specification';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport type { ECSCollector, TransformAnimation } from '../types';\n\n/**\n * Build the ObjectBindingTrack + Activation/Transform/SpriteColor child tracks\n * for one VFX item. Shared by lottie2ge and dsl2ge generators.\n *\n * The SpriteColor track is omitted for null layers (itemType `'null'` or\n * the GE numeric code `'3'`).\n */\nexport function buildTimelineTracks (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n itemType: string,\n): string {\n const objectBindingTrackId = createId();\n const childTrackIds: DataPath[] = [];\n\n childTrackIds.push(toDataPath(buildActivationTrack(collector, delay, duration, endBehavior)));\n childTrackIds.push(toDataPath(buildTransformTrack(collector, delay, duration, endBehavior, animation)));\n\n if (isPrecompItemType(itemType)) {\n childTrackIds.push(toDataPath(buildSubCompositionTrack(collector, delay, duration, endBehavior)));\n }\n\n if (!isNullItemType(itemType)) {\n childTrackIds.push(toDataPath(buildSpriteColorTrack(collector, delay, duration, endBehavior, animation)));\n }\n\n collector.miscs.push({\n id: objectBindingTrackId,\n dataType: 'ObjectBindingTrack',\n children: childTrackIds,\n clips: [],\n });\n\n return objectBindingTrackId;\n}\n\nfunction isNullItemType (itemType: string): boolean {\n return itemType === 'null' || itemType === '3' || isPrecompItemType(itemType);\n}\n\nfunction isPrecompItemType (itemType: string): boolean {\n return itemType === 'precomp' || itemType === '7';\n}\n\nfunction buildActivationTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n): string {\n const assetId = createId();\n\n collector.miscs.push({ id: assetId, dataType: 'ActivationPlayableAsset' });\n\n const trackId = createId();\n const clip: TimelineClipData = {\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n };\n\n collector.miscs.push({\n id: trackId,\n dataType: 'ActivationTrack',\n children: [],\n clips: [clip],\n });\n\n return trackId;\n}\n\nfunction buildTransformTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n): string {\n const assetId = createId();\n const asset: Record<string, unknown> = {\n id: assetId,\n dataType: 'TransformPlayableAsset',\n positionOverLifetime: animation.positionOverLifetime ?? {},\n };\n\n if (animation.rotationOverLifetime != null) {\n asset['rotationOverLifetime'] = animation.rotationOverLifetime;\n }\n if (animation.sizeOverLifetime != null) {\n asset['sizeOverLifetime'] = animation.sizeOverLifetime;\n }\n collector.miscs.push(asset);\n\n const trackId = createId();\n\n collector.miscs.push({\n id: trackId,\n dataType: 'TransformTrack',\n children: [],\n clips: [{\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n }],\n });\n\n return trackId;\n}\n\nfunction buildSpriteColorTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n): string {\n const assetId = createId();\n const asset: Record<string, unknown> = {\n id: assetId,\n dataType: 'SpriteColorPlayableAsset',\n startColor: [1, 1, 1, 1],\n };\n\n if (animation.colorOverLifetime != null) {\n asset['colorOverLifetime'] = animation.colorOverLifetime;\n }\n collector.miscs.push(asset);\n\n const trackId = createId();\n\n collector.miscs.push({\n id: trackId,\n dataType: 'SpriteColorTrack',\n children: [],\n clips: [{\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n }],\n });\n\n return trackId;\n}\n\nfunction buildSubCompositionTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n): string {\n const assetId = createId();\n\n collector.miscs.push({ id: assetId, dataType: 'SubCompositionPlayableAsset' });\n\n const trackId = createId();\n\n collector.miscs.push({\n id: trackId,\n dataType: 'SubCompositionTrack',\n children: [],\n clips: [{\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n }],\n });\n\n return trackId;\n}\n","/**\n * JSON 版本\n */\nexport var JSONSceneVersion;\n(function (JSONSceneVersion) {\n JSONSceneVersion[\"1_0\"] = \"1.0\";\n JSONSceneVersion[\"1_1\"] = \"1.1\";\n JSONSceneVersion[\"1_2\"] = \"1.2\";\n JSONSceneVersion[\"1_3\"] = \"1.3\";\n JSONSceneVersion[\"1_5\"] = \"1.5\";\n JSONSceneVersion[\"1_8\"] = \"1.8\";\n JSONSceneVersion[\"2_0\"] = \"2.0\";\n JSONSceneVersion[\"2_1\"] = \"2.1\";\n JSONSceneVersion[\"2_2\"] = \"2.2\";\n JSONSceneVersion[\"2_3\"] = \"2.3\";\n JSONSceneVersion[\"2_4\"] = \"2.4\";\n JSONSceneVersion[\"3_0\"] = \"3.0\";\n JSONSceneVersion[\"3_1\"] = \"3.1\";\n JSONSceneVersion[\"3_2\"] = \"3.2\";\n JSONSceneVersion[\"3_3\"] = \"3.3\";\n JSONSceneVersion[\"3_4\"] = \"3.4\";\n JSONSceneVersion[\"3_5\"] = \"3.5\";\n JSONSceneVersion[\"3_6\"] = \"3.6\";\n JSONSceneVersion[\"3_7\"] = \"3.7\";\n JSONSceneVersion[\"LATEST\"] = \"3.7\";\n})(JSONSceneVersion || (JSONSceneVersion = {}));\n","/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nexport var RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nexport var BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nexport var SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 元素是否被蒙版遮挡/反向遮挡\n */\nexport var ObscuredMode;\n(function (ObscuredMode) {\n /**\n * 无\n */\n // NONE = 0,\n // /**\n // * 蒙版\n // */\n // MASK = 1,\n /**\n * 被遮挡\n */\n ObscuredMode[ObscuredMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n ObscuredMode[ObscuredMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(ObscuredMode || (ObscuredMode = {}));\n/**\n * 发射器形状\n */\nexport var ParticleEmitterShapeType;\n(function (ParticleEmitterShapeType) {\n /**\n * 没有类型\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ParticleEmitterShapeType || (ParticleEmitterShapeType = {}));\n/**\n * 插件类型\n */\nexport var PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nexport var InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nexport var InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nexport var ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n /**\n * 特效元素\n */\n ItemType[\"effect\"] = \"effect\";\n /**\n * 形状元素\n */\n ItemType[\"shape\"] = \"shape\";\n /**\n * 后处理元素\n */\n ItemType[\"postProcessVolume\"] = \"postProcessVolume\";\n /**\n * 节点元素\n */\n ItemType[\"node\"] = \"node\";\n /**\n * 视频元素\n */\n ItemType[\"video\"] = \"video\";\n /**\n * 音频元素\n */\n ItemType[\"audio\"] = \"audio\";\n /**\n * 富文本元素\n */\n ItemType[\"richtext\"] = \"richtext\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nexport var RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nexport var ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\nexport var RenderType;\n(function (RenderType) {\n RenderType[\"Opaque\"] = \"Opaque\";\n RenderType[\"Transparent\"] = \"Transparent\";\n})(RenderType || (RenderType = {}));\nexport var RenderFace;\n(function (RenderFace) {\n RenderFace[\"Both\"] = \"Both\";\n RenderFace[\"Back\"] = \"Back\";\n RenderFace[\"Front\"] = \"Front\";\n})(RenderFace || (RenderFace = {}));\n","import { CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL } from './constants';\nexport var CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = 1] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = 0] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n","/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nexport var ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线(Hermite 曲线)\n * @deprecated 使用 BEZIER_CURVE 替代,此类型仅用于旧数据迁移兼容\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n * @deprecated 使用 BEZIER_CURVE_PATH 替代,此类型仅用于旧数据迁移兼容\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n * 直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n /**\n * 贝塞尔曲线四元数\n */\n ValueType[ValueType[\"BEZIER_CURVE_QUAT\"] = 23] = \"BEZIER_CURVE_QUAT\";\n /**\n * 颜色曲线\n */\n ValueType[ValueType[\"COLOR_CURVE\"] = 24] = \"COLOR_CURVE\";\n /**\n * Vector4 曲线\n */\n ValueType[ValueType[\"VECTOR4_CURVE\"] = 25] = \"VECTOR4_CURVE\";\n /**\n * Vector2 曲线\n */\n ValueType[ValueType[\"VECTOR2_CURVE\"] = 26] = \"VECTOR2_CURVE\";\n /**\n * Vector3 曲线\n */\n ValueType[ValueType[\"VECTOR3_CURVE\"] = 27] = \"VECTOR3_CURVE\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nexport var BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n","import { END_BEHAVIOR_DESTROY, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_RESTART, } from '../constants';\n/**\n * 结束行为\n */\nexport var EndBehavior;\n(function (EndBehavior) {\n /**\n * 销毁\n */\n EndBehavior[EndBehavior[\"destroy\"] = 0] = \"destroy\";\n /**\n * 重播\n */\n EndBehavior[EndBehavior[\"restart\"] = 5] = \"restart\";\n /**\n * 无限播放\n */\n EndBehavior[EndBehavior[\"forward\"] = 2] = \"forward\";\n /**\n * 冻结\n */\n EndBehavior[EndBehavior[\"freeze\"] = 4] = \"freeze\";\n})(EndBehavior || (EndBehavior = {}));\n","/**\n * 粒子交互行为\n */\nexport var ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n","export var ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n","export var LightType;\n(function (LightType) {\n /**\n * 点光源\n */\n LightType[\"point\"] = \"point\";\n /**\n * 聚光灯\n */\n LightType[\"spot\"] = \"spot\";\n /**\n * 方向光\n */\n LightType[\"directional\"] = \"directional\";\n /**\n * 环境光\n */\n LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n","export var ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n","export var CameraType;\n(function (CameraType) {\n CameraType[\"orthographic\"] = \"orthographic\";\n CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n","// 材质类型\nexport var MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nexport var MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n","/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nexport var RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n /**\n * 漫反射\n */\n RenderMode3D[\"diffuse\"] = \"diffuse\";\n})(RenderMode3D || (RenderMode3D = {}));\n","export var TextOverflow;\n(function (TextOverflow) {\n /**\n * visible 模式下,文本内容超出边界框时,会继续显示内容,不进行裁剪或缩放。\n */\n TextOverflow[TextOverflow[\"visible\"] = 0] = \"visible\";\n /**\n * display 模式下,会显示所有文本,文本字号大小会根据边界框调整。\n */\n TextOverflow[TextOverflow[\"display\"] = 1] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 2] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 3] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nexport var TextSizeMode;\n(function (TextSizeMode) {\n /**\n * 自适应宽度\n */\n TextSizeMode[TextSizeMode[\"autoWidth\"] = 0] = \"autoWidth\";\n /**\n * 自适应高度\n */\n TextSizeMode[TextSizeMode[\"autoHeight\"] = 1] = \"autoHeight\";\n /**\n * 固定宽高\n */\n TextSizeMode[TextSizeMode[\"fixed\"] = 2] = \"fixed\";\n})(TextSizeMode || (TextSizeMode = {}));\nexport var TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nexport var TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从 (x,y) 开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从 (x,y) 结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\nexport var TextVerticalAlign;\n(function (TextVerticalAlign) {\n /**\n * 文本顶对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"bottom\"] = 2] = \"bottom\";\n})(TextVerticalAlign || (TextVerticalAlign = {}));\n/**\n * 文本字重\n */\nexport var TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nexport var FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n","export var FillType;\n(function (FillType) {\n FillType[FillType[\"Solid\"] = 0] = \"Solid\";\n FillType[FillType[\"GradientLinear\"] = 1] = \"GradientLinear\";\n FillType[FillType[\"GradientRadial\"] = 2] = \"GradientRadial\";\n FillType[FillType[\"GradientAngular\"] = 3] = \"GradientAngular\";\n FillType[FillType[\"Texture\"] = 4] = \"Texture\";\n})(FillType || (FillType = {}));\nexport var TexturePaintScaleMode;\n(function (TexturePaintScaleMode) {\n TexturePaintScaleMode[TexturePaintScaleMode[\"Fill\"] = 0] = \"Fill\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Fit\"] = 1] = \"Fit\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Crop\"] = 2] = \"Crop\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Tile\"] = 3] = \"Tile\";\n})(TexturePaintScaleMode || (TexturePaintScaleMode = {}));\n","/**\n * 矢量图形类型\n */\nexport var ShapePrimitiveType;\n(function (ShapePrimitiveType) {\n /**\n * 自定义图形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Custom\"] = 0] = \"Custom\";\n /**\n * 矩形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Rectangle\"] = 1] = \"Rectangle\";\n /**\n * 椭圆\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Ellipse\"] = 2] = \"Ellipse\";\n /**\n * 多边形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Polygon\"] = 3] = \"Polygon\";\n /**\n * 星形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Star\"] = 4] = \"Star\";\n})(ShapePrimitiveType || (ShapePrimitiveType = {}));\n","export var LineCap;\n(function (LineCap) {\n /** 默认值。向线条的每个末端添加平直的边缘 */\n LineCap[LineCap[\"Butt\"] = 0] = \"Butt\";\n /** 向线条的每个末端添加圆形线帽 */\n LineCap[LineCap[\"Round\"] = 1] = \"Round\";\n /** 向线条的每个末端添加正方形线帽 */\n LineCap[LineCap[\"Square\"] = 2] = \"Square\";\n})(LineCap || (LineCap = {}));\nexport var LineJoin;\n(function (LineJoin) {\n /** 创建圆角 */\n LineJoin[LineJoin[\"Round\"] = 0] = \"Round\";\n /** 创建斜角 */\n LineJoin[LineJoin[\"Bevel\"] = 1] = \"Bevel\";\n /** 创建尖角 */\n LineJoin[LineJoin[\"Miter\"] = 2] = \"Miter\";\n})(LineJoin || (LineJoin = {}));\n","export var NodeDataType;\n(function (NodeDataType) {\n NodeDataType[\"AnimationClipNodeData\"] = \"AnimationClipNodeData\";\n NodeDataType[\"BlendNodeData\"] = \"BlendNodeData\";\n NodeDataType[\"ApplyAdditiveNodeData\"] = \"ApplyAdditiveNodeData\";\n NodeDataType[\"LayerBlendNodeData\"] = \"LayerBlendNodeData\";\n NodeDataType[\"StateMachineNodeData\"] = \"StateMachineNodeData\";\n NodeDataType[\"TransitionNodeData\"] = \"TransitionNodeData\";\n NodeDataType[\"StateNodeData\"] = \"StateNodeData\";\n NodeDataType[\"ConstFloatNodeData\"] = \"ConstFloatNodeData\";\n NodeDataType[\"ConstBoolNodeData\"] = \"ConstBoolNodeData\";\n NodeDataType[\"ControlParameterBoolNodeData\"] = \"ControlParameterBoolNodeData\";\n NodeDataType[\"ControlParameterFloatNodeData\"] = \"ControlParameterFloatNodeData\";\n NodeDataType[\"ControlParameterTriggerNodeData\"] = \"ControlParameterTriggerNodeData\";\n NodeDataType[\"NotNodeData\"] = \"NotNodeData\";\n NodeDataType[\"AndNodeData\"] = \"AndNodeData\";\n NodeDataType[\"OrNodeData\"] = \"OrNodeData\";\n NodeDataType[\"EqualNodeData\"] = \"EqualNodeData\";\n NodeDataType[\"GreaterNodeData\"] = \"GreaterNodeData\";\n NodeDataType[\"LessNodeData\"] = \"LessNodeData\";\n})(NodeDataType || (NodeDataType = {}));\n","/**\n * 动态换图类型\n * @since 1.1.0\n */\nexport var BackgroundType;\n(function (BackgroundType) {\n BackgroundType[\"video\"] = \"video\";\n BackgroundType[\"image\"] = \"image\";\n})(BackgroundType || (BackgroundType = {}));\n/**\n * 多媒体资源类型\n * @since 2.1.0\n */\nexport var MultimediaType;\n(function (MultimediaType) {\n MultimediaType[\"video\"] = \"video\";\n MultimediaType[\"audio\"] = \"audio\";\n})(MultimediaType || (MultimediaType = {}));\nexport var HevcVideoCodec;\n(function (HevcVideoCodec) {\n HevcVideoCodec[\"L30\"] = \"hev1.1.0.L30.B0\";\n HevcVideoCodec[\"L60\"] = \"hev1.1.0.L60.B0\";\n HevcVideoCodec[\"L63\"] = \"hev1.1.0.L63.B0\";\n HevcVideoCodec[\"L90\"] = \"hev1.1.0.L90.B0\";\n HevcVideoCodec[\"L93\"] = \"hev1.1.0.L93.B0\";\n HevcVideoCodec[\"L120\"] = \"hev1.1.0.L120.B0\";\n HevcVideoCodec[\"L150\"] = \"hev1.1.0.L150.B0\";\n HevcVideoCodec[\"L180\"] = \"hev1.1.0.L180.B0\";\n})(HevcVideoCodec || (HevcVideoCodec = {}));\n","export var DataType;\n(function (DataType) {\n DataType[\"VFXItemData\"] = \"VFXItemData\";\n // Assets\n DataType[\"Material\"] = \"Material\";\n DataType[\"Shader\"] = \"Shader\";\n DataType[\"Geometry\"] = \"Geometry\";\n DataType[\"Texture\"] = \"Texture\";\n DataType[\"Image\"] = \"Image\";\n DataType[\"AnimationClip\"] = \"AnimationClip\";\n DataType[\"BinaryAsset\"] = \"BinaryAsset\";\n // Timeline\n DataType[\"TrackAsset\"] = \"TrackAsset\";\n DataType[\"TimelineAsset\"] = \"TimelineAsset\";\n DataType[\"ObjectBindingTrack\"] = \"ObjectBindingTrack\";\n DataType[\"TransformTrack\"] = \"TransformTrack\";\n DataType[\"SpriteColorTrack\"] = \"SpriteColorTrack\";\n DataType[\"ActivationTrack\"] = \"ActivationTrack\";\n DataType[\"SubCompositionTrack\"] = \"SubCompositionTrack\";\n DataType[\"FloatPropertyTrack\"] = \"FloatPropertyTrack\";\n DataType[\"ColorPropertyTrack\"] = \"ColorPropertyTrack\";\n DataType[\"Vector2PropertyTrack\"] = \"Vector2PropertyTrack\";\n DataType[\"Vector3PropertyTrack\"] = \"Vector3PropertyTrack\";\n DataType[\"Vector4PropertyTrack\"] = \"Vector4PropertyTrack\";\n DataType[\"TransformPlayableAsset\"] = \"TransformPlayableAsset\";\n DataType[\"SpriteColorPlayableAsset\"] = \"SpriteColorPlayableAsset\";\n DataType[\"ActivationPlayableAsset\"] = \"ActivationPlayableAsset\";\n DataType[\"SubCompositionPlayableAsset\"] = \"SubCompositionPlayableAsset\";\n DataType[\"FloatPropertyPlayableAsset\"] = \"FloatPropertyPlayableAsset\";\n DataType[\"ColorPropertyPlayableAsset\"] = \"ColorPropertyPlayableAsset\";\n DataType[\"Vector2PropertyPlayableAsset\"] = \"Vector2PropertyPlayableAsset\";\n DataType[\"Vector3PropertyPlayableAsset\"] = \"Vector3PropertyPlayableAsset\";\n DataType[\"Vector4PropertyPlayableAsset\"] = \"Vector4PropertyPlayableAsset\";\n // Components\n DataType[\"MeshComponent\"] = \"MeshComponent\";\n DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n DataType[\"LightComponent\"] = \"LightComponent\";\n DataType[\"CameraComponent\"] = \"CameraComponent\";\n DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n DataType[\"TreeComponent\"] = \"TreeComponent\";\n DataType[\"AnimationComponent\"] = \"AnimationComponent\";\n DataType[\"SpineComponent\"] = \"SpineComponent\";\n DataType[\"VideoComponent\"] = \"VideoComponent\";\n DataType[\"AudioComponent\"] = \"AudioComponent\";\n DataType[\"RichTextComponent\"] = \"RichTextComponent\";\n DataType[\"OrientationComponent\"] = \"OrientationComponent\";\n DataType[\"ShapeComponent\"] = \"ShapeComponent\";\n DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n DataType[\"InteractComponent\"] = \"InteractComponent\";\n DataType[\"CameraController\"] = \"CameraController\";\n DataType[\"PostProcessVolume\"] = \"PostProcessVolume\";\n DataType[\"EffectComponent\"] = \"EffectComponent\";\n DataType[\"TextComponent\"] = \"TextComponent\";\n DataType[\"AnimationGraphAsset\"] = \"AnimationGraphAsset\";\n DataType[\"CompositionComponent\"] = \"CompositionComponent\";\n DataType[\"FFDComponent\"] = \"FFDComponent\";\n DataType[\"FrameComponent\"] = \"FrameComponent\";\n DataType[\"Animator\"] = \"Animator\";\n // Non-EffectObject\n DataType[\"TimelineClip\"] = \"TimelineClip\";\n})(DataType || (DataType = {}));\n","export var GeometryType;\n(function (GeometryType) {\n /**\n * Draw single points.\n */\n GeometryType[GeometryType[\"POINTS\"] = 0] = \"POINTS\";\n /**\n * Draw lines. Each vertex connects to the one after it.\n */\n GeometryType[GeometryType[\"LINES\"] = 1] = \"LINES\";\n /**\n * Draw lines. Each set of two vertices is treated as a separate line segment.\n */\n GeometryType[GeometryType[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n /**\n * Draw a connected group of line segments from the first vertex to the last.\n */\n GeometryType[GeometryType[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n /**\n * Draw triangles. Each set of three vertices creates a separate triangle.\n */\n GeometryType[GeometryType[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n /**\n * Draw a connected strip of triangles.\n */\n GeometryType[GeometryType[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n /**\n * Draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan.\n */\n GeometryType[GeometryType[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n})(GeometryType || (GeometryType = {}));\nexport var VertexFormatType;\n(function (VertexFormatType) {\n VertexFormatType[VertexFormatType[\"Float16\"] = 0] = \"Float16\";\n VertexFormatType[VertexFormatType[\"Float32\"] = 1] = \"Float32\";\n VertexFormatType[VertexFormatType[\"Int8\"] = 2] = \"Int8\";\n VertexFormatType[VertexFormatType[\"Int16\"] = 3] = \"Int16\";\n VertexFormatType[VertexFormatType[\"Int32\"] = 4] = \"Int32\";\n VertexFormatType[VertexFormatType[\"UInt8\"] = 5] = \"UInt8\";\n VertexFormatType[VertexFormatType[\"UInt16\"] = 6] = \"UInt16\";\n VertexFormatType[VertexFormatType[\"UInt32\"] = 7] = \"UInt32\";\n})(VertexFormatType || (VertexFormatType = {}));\nexport var IndexFormatType;\n(function (IndexFormatType) {\n IndexFormatType[IndexFormatType[\"None\"] = -1] = \"None\";\n IndexFormatType[IndexFormatType[\"UInt8\"] = 0] = \"UInt8\";\n IndexFormatType[IndexFormatType[\"UInt16\"] = 1] = \"UInt16\";\n IndexFormatType[IndexFormatType[\"UInt32\"] = 2] = \"UInt32\";\n})(IndexFormatType || (IndexFormatType = {}));\n// BINORMAL[n]\tBinormal\tfloat4\n// BLENDINDICES[n]\t混合索引\tuint\n// BLENDWEIGHT[n]\t混合权重\tFLOAT\n// COLOR[n]\t漫射和反射颜色\tfloat4\n// NORMAL[n]\t法向矢量\tfloat4\n// POSITION[n]\t对象空间中的顶点位置。\tfloat4\n// POSITIONT\t变换的顶点位置。\tfloat4\n// PSIZE[n]\t点大小\tFLOAT\n// TANGENT[n]\t正切\tfloat4\n// TEXCOORD[n]\t纹理坐标\tfloat4\n// POSITION_BS[n]\tBlend Shape 空间中的顶点位置\tfloat4\n// NORMAL_BS[n]\tBlend Shape 空间中的法向矢量\tfloat4\n// TANGENT_BS[n]\tBlend Shape 空间中的正切矢量\tfloat4\nexport var VertexBufferSemantic;\n(function (VertexBufferSemantic) {\n VertexBufferSemantic[\"Position\"] = \"POSITION\";\n VertexBufferSemantic[\"Uv\"] = \"TEXCOORD0\";\n VertexBufferSemantic[\"Uv2\"] = \"TEXCOORD1\";\n VertexBufferSemantic[\"Normal\"] = \"NORMAL\";\n VertexBufferSemantic[\"Tangent\"] = \"TANGENT\";\n VertexBufferSemantic[\"Color\"] = \"COLOR\";\n VertexBufferSemantic[\"Joints\"] = \"JOINTS\";\n VertexBufferSemantic[\"Weights\"] = \"WEIGHTS\";\n //\n VertexBufferSemantic[\"PositionBS0\"] = \"POSITION_BS0\";\n VertexBufferSemantic[\"PositionBS1\"] = \"POSITION_BS1\";\n VertexBufferSemantic[\"PositionBS2\"] = \"POSITION_BS2\";\n VertexBufferSemantic[\"PositionBS3\"] = \"POSITION_BS3\";\n VertexBufferSemantic[\"PositionBS4\"] = \"POSITION_BS4\";\n VertexBufferSemantic[\"PositionBS5\"] = \"POSITION_BS5\";\n VertexBufferSemantic[\"PositionBS6\"] = \"POSITION_BS6\";\n VertexBufferSemantic[\"PositionBS7\"] = \"POSITION_BS7\";\n VertexBufferSemantic[\"NormalBS0\"] = \"NORMAL_BS0\";\n VertexBufferSemantic[\"NormalBS1\"] = \"NORMAL_BS1\";\n VertexBufferSemantic[\"NormalBS2\"] = \"NORMAL_BS2\";\n VertexBufferSemantic[\"NormalBS3\"] = \"NORMAL_BS3\";\n VertexBufferSemantic[\"TangentBS0\"] = \"TANGENT_BS0\";\n VertexBufferSemantic[\"TangentBS1\"] = \"TANGENT_BS1\";\n VertexBufferSemantic[\"TangentBS2\"] = \"TANGENT_BS2\";\n VertexBufferSemantic[\"TangentBS3\"] = \"TANGENT_BS3\";\n})(VertexBufferSemantic || (VertexBufferSemantic = {}));\n","import { JSONSceneVersion } from './scene';\nexport * from './type';\nexport * from './composition';\nexport * from './texture';\nexport * from './constants';\nexport * from './number-expression';\nexport * from './scene';\nexport * from './math';\nexport * from './item';\nexport * from './item/base-item';\nexport * from './item/camera-item';\nexport * from './item/composition-item';\nexport * from './item/interact-item';\nexport * from './item/null-item';\nexport * from './item/particle-item';\nexport * from './item/particle-shape';\nexport * from './item/plugin-item';\nexport * from './item/sprite-item';\nexport * from './item/spine-item';\nexport * from './item/effect-item';\nexport * from './item/text-item';\nexport * from './item/rich-text-item';\nexport * from './item/video-item';\nexport * from './item/audio-item';\nexport * from './item/model';\nexport * from './vfx-item-data';\nexport * from './animation';\nexport * from './binary';\nexport * from './text';\nexport * from './components';\nexport * from './buitin-object-guid';\nexport * from './shape';\nexport * from './animation-graph';\nexport * from './timeline';\nexport * from './assets';\nexport * from './render-settings';\nexport * from './curve-data';\nexport * from './data-type';\nexport * from './effects-object-data';\nexport * from './material-data';\nexport * from './geometry-data';\nexport * from './shader-data';\nexport * from './effects-package-data';\nexport const LATEST_VERSION = JSONSceneVersion.LATEST;\n","/**\n * Converts IR keyframe-based animation data to GE BezierKeyframeValue format.\n *\n * GE BezierKeyframeValue format per keyframe:\n * - First: [EASE_OUT(3), [t, v, out_cp_x, out_cp_y]]\n * - Middle: [EASE(1), [in_cp_x, in_cp_y, t, v, out_cp_x, out_cp_y]]\n * - Last: [EASE_IN(2), [in_cp_x, in_cp_y, t, v]]\n *\n * Time is normalized to [0, 1] based on the layer's visible frame range (ip → op).\n */\n\nimport type { IRAnimatedProperty, IRBezierHandle, IRKeyframe, IRVec3 } from '@vvfx/animation-ir';\nimport { type BezierKeyframeValue, BezierKeyframeType } from '@galacean/effects-specification';\nimport { lerp, roundNumber } from '../utils';\n\nexport interface IRToGETimeContext {\n /** Layer visible start frame. */\n startFrame: number;\n /** Layer visible end frame. */\n endFrame: number;\n}\n\nexport interface IRPositionGEResult {\n /** Timing curves in BezierKeyframeValue format (1D, time-domain only). */\n curves: BezierKeyframeValue[][];\n /** Path points per segment: [[start_x, start_y], [end_x, end_y]]. */\n pathPoints: [[number, number], [number, number]][];\n /** Spatial control points per segment: [[to_x, to_y], [ti_x, ti_y]]. */\n controlPoints: [[number, number], [number, number]][];\n}\n\nconst DEFAULT_OUT_TANGENT: IRBezierHandle = { x: 0.33, y: 0.33 };\nconst DEFAULT_IN_TANGENT: IRBezierHandle = { x: 0.67, y: 0.67 };\n\nfunction normalizeTime (frameTime: number, startFrame: number, endFrame: number): number {\n const frames = Math.max(1, endFrame - startFrame);\n\n return (frameTime - startFrame) / frames;\n}\n\nfunction getScalarValue (keyframe: IRKeyframe, dimensionIndex?: number): number {\n const value = keyframe.value;\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value) && dimensionIndex != null) {\n return value[dimensionIndex] ?? 0;\n }\n\n return 0;\n}\n\n/**\n * Convert a 1D animated property (opacity / rotation) to GE BezierKeyframeValue[][].\n * Returns a single-element outer array with the full curve.\n */\nexport function irScalarKeyframesToGE (\n property: IRAnimatedProperty<number>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const curve = buildCurveForDimension(property.keyframes, timeContext, undefined);\n\n return curve != null ? [curve] : undefined;\n}\n\n/**\n * Convert a multi-dimensional animated property (scale / anchor) to GE BezierKeyframeValue[][].\n * Returns one curve per dimension in the outer array.\n */\nexport function irVectorKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const firstValue = property.keyframes[0].value;\n const dimensions = Array.isArray(firstValue) ? firstValue.length : 1;\n const curves: BezierKeyframeValue[][] = [];\n\n for (let d = 0; d < dimensions; d++) {\n const curve = buildCurveForDimension(property.keyframes, timeContext, d);\n\n curves.push(curve ?? []);\n }\n\n return curves.length > 0 ? curves : undefined;\n}\n\n/**\n * Convert position keyframes to GE path animation format (pp/cp + timing curves).\n */\nexport function irPositionKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): IRPositionGEResult | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const keyframes = property.keyframes;\n const pathPoints: [[number, number], [number, number]][] = [];\n const controlPoints: [[number, number], [number, number]][] = [];\n const timingCurvePoints: Array<{\n t: number;\n outTangent: IRBezierHandle;\n inTangent: IRBezierHandle;\n }> = [];\n\n for (let i = 0; i < keyframes.length; i++) {\n const kf = keyframes[i];\n const normalizedT = normalizeTime(kf.frame, timeContext.startFrame, timeContext.endFrame);\n\n timingCurvePoints.push({\n t: normalizedT,\n outTangent: kf.outTangent ?? DEFAULT_OUT_TANGENT,\n inTangent: kf.inTangent ?? DEFAULT_IN_TANGENT,\n });\n\n if (i < keyframes.length - 1) {\n const nextKf = keyframes[i + 1];\n const startPos = kf.value ?? [0, 0, 0];\n const segmentEnd = kf.hold === true\n ? startPos\n : (kf.endValue ?? nextKf.value ?? startPos);\n\n pathPoints.push([\n [startPos[0] ?? 0, startPos[1] ?? 0],\n [segmentEnd[0] ?? 0, segmentEnd[1] ?? 0],\n ]);\n\n // Spatial control points (per IRKeyframe convention): outgoing CP from\n // kf[i].spatialOut, incoming CP from kf[i+1].spatialIn. Without explicit\n // spatial handles on either side, use linear one-third handles.\n let toPoint: [number, number];\n let tiPoint: [number, number];\n\n if (kf.spatialOut != null && nextKf.spatialIn != null) {\n toPoint = [kf.spatialOut[0] ?? 0, kf.spatialOut[1] ?? 0];\n tiPoint = [nextKf.spatialIn[0] ?? 0, nextKf.spatialIn[1] ?? 0];\n } else {\n const sx = startPos[0] ?? 0;\n const sy = startPos[1] ?? 0;\n const ex = segmentEnd[0] ?? 0;\n const ey = segmentEnd[1] ?? 0;\n\n toPoint = [-sx / 3 + ex / 3, -sy / 3 + ey / 3];\n tiPoint = [sx / 3 - ex / 3, sy / 3 - ey / 3];\n }\n controlPoints.push([toPoint, tiPoint]);\n }\n }\n\n // Prepend a static segment if the first keyframe doesn't start at t=0.\n // The bridge segment runs synthetic-at-t=0 → original-kf[0]; for it to be a\n // flat hold the END-side tangent (which `buildPositionTimingCurves` reads as\n // `next.inTangent`) must be {1, 1}. Override the original first kf's\n // inTangent before unshifting (its previous value was either DEFAULT, since\n // the IR convention leaves a first-kf inTangent undefined, or whatever the\n // producer set as a no-op).\n if (timingCurvePoints.length > 0 && timingCurvePoints[0].t > 0) {\n timingCurvePoints[0].inTangent = { x: 1, y: 1 };\n timingCurvePoints.unshift({\n t: 0,\n outTangent: { x: 0, y: 0 },\n inTangent: { x: 1, y: 1 },\n });\n pathPoints.unshift([pathPoints[0]?.[0] ?? [0, 0], pathPoints[0]?.[0] ?? [0, 0]]);\n controlPoints.unshift([[0, 0], [0, 0]]);\n }\n\n // Build timing-only bezier curves (in time-time domain)\n const timingCurves = buildPositionTimingCurves(timingCurvePoints);\n\n return {\n curves: timingCurves != null ? [timingCurves] : [[]],\n pathPoints,\n controlPoints,\n };\n}\n\n// ─── Internal helpers ───────────────────────────────────────\n\nfunction makeEaseOut (seg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_OUT, [\n roundNumber(seg[0], 4), roundNumber(seg[1], 4), roundNumber(seg[2], 4), roundNumber(seg[3], 4),\n ], BezierKeyframeType.EASE_OUT] as BezierKeyframeValue;\n}\n\nfunction makeEaseIn (prevSeg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_IN, [\n roundNumber(prevSeg[4], 4), roundNumber(prevSeg[5], 4), roundNumber(prevSeg[6], 4), roundNumber(prevSeg[7], 4),\n ], BezierKeyframeType.EASE_IN] as BezierKeyframeValue;\n}\n\nfunction makeEase (prevSeg: number[], currSeg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE, [\n roundNumber(prevSeg[4], 4), roundNumber(prevSeg[5], 4), roundNumber(prevSeg[6], 4), roundNumber(prevSeg[7], 4),\n roundNumber(currSeg[2], 4), roundNumber(currSeg[3], 4),\n ], BezierKeyframeType.EASE] as BezierKeyframeValue;\n}\n\nfunction buildCurveForDimension (\n keyframes: IRKeyframe[],\n timeContext: IRToGETimeContext,\n dimensionIndex: number | undefined,\n): BezierKeyframeValue[] | undefined {\n if (keyframes.length < 2) {\n return undefined;\n }\n\n // Build intermediate bezier representation\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < keyframes.length - 1; i++) {\n const kf = keyframes[i];\n const nextKf = keyframes[i + 1];\n const t0 = normalizeTime(kf.frame, timeContext.startFrame, timeContext.endFrame);\n const t1 = normalizeTime(nextKf.frame, timeContext.startFrame, timeContext.endFrame);\n const v0 = getScalarValue(kf, dimensionIndex);\n const endKeyframe = kf.endValue != null ? { ...kf, value: kf.endValue } : nextKf;\n const v1 = kf.hold === true ? v0 : getScalarValue(endKeyframe, dimensionIndex);\n const outHandle = kf.hold === true\n ? { x: 0, y: 0 }\n : (kf.outTangent ?? DEFAULT_OUT_TANGENT);\n // Per IR convention, the incoming tangent for segment i lives on kf[i+1].\n const inHandle = kf.hold === true\n ? { x: 1, y: 1 }\n : (nextKf.inTangent ?? DEFAULT_IN_TANGENT);\n\n const outCpX = lerp(t0, t1, outHandle.x);\n const outCpY = lerp(v0, v1, outHandle.y);\n const inCpX = lerp(t0, t1, inHandle.x);\n const inCpY = lerp(v0, v1, inHandle.y);\n\n bezierCurves.push([\n t0, v0,\n outCpX, outCpY,\n inCpX, inCpY,\n t1, v1,\n ]);\n }\n\n if (bezierCurves.length === 0) {\n return undefined;\n }\n\n // Prepend a hold segment if first keyframe is not at t=0\n const firstT = bezierCurves[0][0];\n\n if (firstT > 0) {\n const firstV = bezierCurves[0][1];\n\n bezierCurves.unshift([0, firstV, 0, firstV, firstT, firstV, firstT, firstV]);\n }\n\n // Convert to GE BezierKeyframeValue format\n const result: BezierKeyframeValue[] = [];\n const totalPoints = bezierCurves.length + 1;\n\n for (let i = 0; i < totalPoints; i++) {\n if (i === 0) {\n result.push(makeEaseOut(bezierCurves[0]));\n } else if (i === totalPoints - 1) {\n result.push(makeEaseIn(bezierCurves[i - 1]));\n } else {\n result.push(makeEase(bezierCurves[i - 1], bezierCurves[i]));\n }\n }\n\n return result;\n}\n\nfunction buildPositionTimingCurves (\n points: Array<{ t: number; outTangent: IRBezierHandle; inTangent: IRBezierHandle }>,\n): BezierKeyframeValue[] | undefined {\n if (points.length < 2) {\n return undefined;\n }\n\n // For position, the bezier curve is in time-time domain\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const current = points[i];\n const next = points[i + 1];\n const t0 = current.t;\n const t1 = next.t;\n const outCpX = lerp(t0, t1, current.outTangent.x);\n const outCpY = lerp(t0, t1, current.outTangent.y);\n // Per IR convention: incoming tangent for segment current→next sits on next.\n const inCpX = lerp(t0, t1, next.inTangent.x);\n const inCpY = lerp(t0, t1, next.inTangent.y);\n\n bezierCurves.push([t0, t0, outCpX, outCpY, inCpX, inCpY, t1, t1]);\n }\n\n if (bezierCurves.length === 0) {\n return undefined;\n }\n\n const result: BezierKeyframeValue[] = [];\n const totalPoints = bezierCurves.length + 1;\n\n for (let i = 0; i < totalPoints; i++) {\n if (i === 0) {\n result.push(makeEaseOut(bezierCurves[0]));\n } else if (i === totalPoints - 1) {\n result.push(makeEaseIn(bezierCurves[i - 1]));\n } else {\n result.push(makeEase(bezierCurves[i - 1], bezierCurves[i]));\n }\n }\n\n return result;\n}\n\n/**\n * Determine if a property has enough keyframes to warrant keyframe mode (pkf/skf/rkf/okf).\n */\nexport function shouldUseKeyframeMode (property: IRAnimatedProperty): boolean {\n return property.keyframed === true\n && property.keyframes != null\n && property.keyframes.length > 12;\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\n\n/**\n * True when the child lifetime is independent of its transform parent's\n * clipping window. An omitted lifetimeMode keeps the legacy clipped default.\n */\nexport function hasIndependentParentLifetime (layer: IRLayerNode): boolean {\n return layer.parent?.lifetimeMode === 'independent';\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { roundNumber } from '../utils';\n\n/**\n * Map an IR layer's time range to GE delay/duration in seconds, applying\n * the time-stretch and offset semantics from `IRTimeContext`.\n *\n * dsl-source IRs leave `stretch` and `offsetFrame` undefined, in which case\n * this collapses to `delay = (startFrame - compositionInPoint) / fr` and\n * `duration = (endFrame - startFrame) / fr` — exactly what dsl2ge used to\n * compute inline.\n *\n * Zero/negative durations are clamped to a 0.0001 epsilon so GE keeps the\n * activation track alive for the (degenerate) layer.\n */\nexport function computeLayerTiming (\n layer: IRLayerNode,\n frameRate: number,\n compositionInPoint = 0,\n): { delay: number; layerDuration: number } {\n const time = layer.time;\n const stretch = time.stretch ?? 1;\n const offsetFrame = time.offsetFrame ?? 0;\n\n const delay = roundNumber((offsetFrame + time.startFrame * stretch - compositionInPoint) / frameRate, 4);\n const rawDuration = (time.endFrame - time.startFrame) * stretch / frameRate;\n const layerDuration = rawDuration > 0 ? roundNumber(rawDuration, 4) : 0.0001;\n\n return { delay, layerDuration };\n}\n","import type { IRLayerNode, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { IRToGETimeContext } from '../builders/bezier';\nimport { convert2dTo3dPoint } from '../../shared/coordinate';\nimport type { LayerProcessingContext } from '../types';\nimport { hasIndependentParentLifetime } from './parent-link';\n\nexport { computeLayerTiming } from '../builders/timing';\n\nexport function computeStaticPosition (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n anchorOffsetX = 0,\n anchorOffsetY = 0,\n): [number, number, number] {\n const transform = layer.transform;\n\n if (transform?.position?.keyframed === true && transform.position.keyframes.length !== 1) {\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n }\n\n const isNullType = layer.type === 'null' || layer.type === 'precomp';\n\n const positionValue = transform?.position?.keyframed === true\n ? transform.position.keyframes[0]?.value\n : transform?.position?.value;\n\n if (Array.isArray(positionValue)) {\n const pos = positionValue;\n\n return convert2dTo3dPoint(\n (pos[0] ?? 0) + anchorOffsetX,\n (pos[1] ?? 0) + anchorOffsetY,\n isNullType ? 0 : (pos[2] ?? 0),\n ctx.width, ctx.height,\n );\n }\n\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n}\n\nexport function getStaticAnchor (layer: IRLayerNode): [number, number] {\n const value = layer.transform?.anchor?.value;\n\n if (Array.isArray(value) && value.length >= 2) {\n return [value[0], value[1]];\n }\n\n return [0, 0];\n}\n\nfunction getStaticScaleFromIR (layer: IRLayerNode): [number, number] {\n const scale = layer.transform?.scale;\n\n if (scale == null) {\n return [1, 1];\n }\n if (scale.keyframed && scale.keyframes.length !== 1) {\n return [1, 1];\n }\n const value = scale.keyframed ? scale.keyframes[0]?.value : scale.value;\n\n if (!Array.isArray(value)) {\n return [1, 1];\n }\n\n return [value[0] ?? 1, value[1] ?? 1];\n}\n\nexport function applyScalePositionAdjust (\n position: [number, number, number],\n layer: IRLayerNode,\n bounds: IRLocalBounds,\n ratio: number,\n): [number, number, number] {\n const staticScale = getStaticScaleFromIR(layer);\n const { x, y, width, height } = bounds;\n\n if ((staticScale[0] === 1 && staticScale[1] === 1) || width <= 0 || height <= 0) {\n return position;\n }\n\n const anchor = getStaticAnchor(layer);\n const anchorDiffX = anchor[0] - (x + width / 2);\n const anchorDiffY = anchor[1] - (y + height / 2);\n\n if (Math.abs(anchorDiffX) <= 0.5 && Math.abs(anchorDiffY) <= 0.5) {\n return position;\n }\n\n return [\n position[0] + anchorDiffX * (1 - staticScale[0]) * ratio,\n position[1] - anchorDiffY * (1 - staticScale[1]) * ratio,\n position[2],\n ];\n}\n\nexport function computeAnchorInfo (\n layer: IRLayerNode,\n bounds: IRLocalBounds,\n): { anchorScaleX: number; anchorScaleY: number; anchorOffsetX: number; anchorOffsetY: number } {\n const anchor = getStaticAnchor(layer);\n const { x, y, width, height } = bounds;\n const localAnchorX = anchor[0] - x;\n const localAnchorY = anchor[1] - y;\n let anchorScaleX = 0.5;\n let anchorScaleY = 0.5;\n let anchorOffsetX = 0;\n let anchorOffsetY = 0;\n\n if (width > 0 && height > 0) {\n anchorScaleX = localAnchorX / width;\n anchorScaleY = localAnchorY / height;\n anchorOffsetX = -(localAnchorX - width / 2);\n anchorOffsetY = -(localAnchorY - height / 2);\n }\n\n if (layer.type === 'text' && layer.text != null && width > 0 && height > 0) {\n if (layer.text.anchorAdjust === true) {\n if (layer.text.textAlign === 'left') {\n anchorOffsetX = -(localAnchorX - width / 2);\n anchorScaleX = localAnchorX / width - 0.5;\n }\n if (layer.text.textAlign === 'center') {\n anchorOffsetX = -localAnchorX;\n anchorScaleX = localAnchorX / width + 0.5;\n }\n if (layer.text.textAlign === 'right') {\n anchorOffsetX = -(localAnchorX + width / 2);\n anchorScaleX = localAnchorX / width + 1.5;\n }\n // GE renders glyphs in the lower half of the quad, so offset by half the\n // layer height to align the visible text center with Lottie's anchor.\n const textHeight = height / 2;\n\n anchorOffsetY = -(localAnchorY + textHeight);\n anchorScaleY = -localAnchorY / textHeight;\n }\n }\n\n const isSpriteForAnchor = layer.type === 'image' || layer.type === 'solid';\n const staticRotationZ = getStaticRotationZ(layer);\n const hasStaticRotation = staticRotationZ != null;\n\n if (\n isSpriteForAnchor\n && hasStaticRotation\n && hasIndependentParentLifetime(layer)\n && (anchorOffsetX !== 0 || anchorOffsetY !== 0)\n ) {\n const rotValue = staticRotationZ ?? 0;\n\n if (rotValue !== 0) {\n const rad = rotValue * Math.PI / 180;\n const cosR = Math.cos(rad);\n const sinR = Math.sin(rad);\n const rotatedX = anchorOffsetX * cosR - anchorOffsetY * sinR;\n const rotatedY = anchorOffsetX * sinR + anchorOffsetY * cosR;\n\n anchorOffsetX = rotatedX;\n anchorOffsetY = rotatedY;\n }\n }\n\n return { anchorScaleX, anchorScaleY, anchorOffsetX, anchorOffsetY };\n}\n\nfunction getStaticRotationZ (layer: IRLayerNode): number | undefined {\n const rotationZ = layer.transform?.rotation?.z;\n\n if (rotationZ != null && !rotationZ.keyframed && typeof rotationZ.value === 'number') {\n return rotationZ.value;\n }\n\n return undefined;\n}\n\nexport function getTimeContext (layer: IRLayerNode): IRToGETimeContext {\n return {\n startFrame: layer.time.startFrame,\n endFrame: layer.time.endFrame,\n };\n}\n","import type { IRAnimatedProperty, IRComposition, IRLayerNode, IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport {\n irPositionKeyframesToGE, irScalarKeyframesToGE, irVectorKeyframesToGE, shouldUseKeyframeMode,\n type IRToGETimeContext,\n} from './bezier';\nimport { type BezierKeyframeValue, ValueType } from '@galacean/effects-specification';\nimport { getEffectsLayerSpecific } from '../../passthrough';\nimport { roundNumber } from '../utils';\nimport { convert2dTo3dPoint } from '../../shared/coordinate';\nimport { getTimeContext } from '../ir/layer-utils';\nimport type { LayerProcessingContext, TransformAnimation } from '../types';\n\nexport function buildTransformAnimation (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n): TransformAnimation {\n if (layer.transform == null) {\n return {};\n }\n\n // Passthrough: ge2ir stores raw animation data in specific.effects to bypass the\n // IR keyframe conversion pipeline. Raw GE data is used verbatim when\n // available; otherwise the standard IR → GE conversion runs.\n const effectsSpecific = getEffectsLayerSpecific(ctx.ir, layer);\n const passthroughPosition = effectsSpecific?.positionOverLifetime;\n const passthroughRotation = effectsSpecific?.rotationOverLifetime;\n const passthroughSize = effectsSpecific?.sizeOverLifetime;\n const normalized = buildNormalizedTransformAnimation(layer, ctx);\n\n const positionOverLifetime = passthroughPosition ?? normalized.positionOverLifetime;\n const rotationOverLifetime = passthroughRotation ?? normalized.rotationOverLifetime;\n const sizeOverLifetime = passthroughSize ?? normalized.sizeOverLifetime;\n\n return { positionOverLifetime, rotationOverLifetime, sizeOverLifetime };\n}\n\n/**\n * Encode normalized IR transform channels as GE timeline payloads without\n * consulting composition-specific passthrough data. Sibling converters use\n * this when they need the canonical curve encoding for a preserved sub-scene.\n */\nexport function buildNormalizedTransformAnimation (\n layer: IRLayerNode,\n ctx: Pick<LayerProcessingContext, 'width' | 'height'>,\n): TransformAnimation {\n const transform = layer.transform;\n\n if (transform == null) {\n return {};\n }\n\n const timeContext = getTimeContext(layer);\n\n return {\n positionOverLifetime: buildPositionAnim(layer, transform, timeContext, ctx),\n rotationOverLifetime: buildRotationAnim(transform, timeContext),\n sizeOverLifetime: buildSizeAnim(transform, timeContext),\n };\n}\n\nfunction buildPositionAnim (\n layer: IRLayerNode,\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n ctx: Pick<LayerProcessingContext, 'width' | 'height'>,\n): Record<string, unknown> | undefined {\n if (transform.position == null || !transform.position.keyframed) {\n return undefined;\n }\n\n assertContiguousPositionSegments(transform.position, layer);\n\n const posResult = irPositionKeyframesToGE(transform.position, timeContext);\n\n if (posResult == null) {\n return undefined;\n }\n\n const pathPoints: [number, number, number][] = [];\n const controlPoints: [number, number, number][] = [];\n const useKeyframeMode = shouldUseKeyframeMode(transform.position);\n\n const firstPathPoint = posResult.pathPoints[0]?.[0];\n\n if (firstPathPoint != null) {\n const point3d = convert2dTo3dPoint(\n firstPathPoint[0], firstPathPoint[1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(point3d);\n }\n\n for (const pathPoint of posResult.pathPoints) {\n const endPoint3d = convert2dTo3dPoint(\n pathPoint[1][0], pathPoint[1][1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(endPoint3d);\n }\n\n for (let i = 0; i < posResult.controlPoints.length; i++) {\n const cp = posResult.controlPoints[i];\n const pp = posResult.pathPoints[i];\n\n if (useKeyframeMode) {\n const dx = pp[1][0] - pp[0][0];\n const dy = pp[1][1] - pp[0][1];\n const cp1 = convert2dTo3dPoint(dx / 3 + pp[0][0], dy / 3 + pp[0][1], 0, ctx.width, ctx.height);\n const cp2 = convert2dTo3dPoint(-dx / 3 + pp[1][0], -dy / 3 + pp[1][1], 0, ctx.width, ctx.height);\n\n controlPoints.push(cp1, cp2);\n } else {\n const cp1 = convert2dTo3dPoint(cp[0][0] + pp[0][0], cp[0][1] + pp[0][1], 0, ctx.width, ctx.height);\n const cp2 = convert2dTo3dPoint(cp[1][0] + pp[1][0], cp[1][1] + pp[1][1], 0, ctx.width, ctx.height);\n\n controlPoints.push(cp1, cp2);\n }\n }\n\n const curveData = posResult.curves[0] ?? [];\n const easingData: BezierKeyframeValue[] = curveData.map((kf: BezierKeyframeValue) => [kf[0], kf[1]] as BezierKeyframeValue);\n\n const roundedPathPoints = pathPoints.map(p => [\n roundNumber(p[0], 4), roundNumber(p[1], 4), p[2],\n ] as [number, number, number]);\n const roundedControlPoints = controlPoints.map(p => [\n roundNumber(p[0], 4), roundNumber(p[1], 4), p[2],\n ] as [number, number, number]);\n\n const pathPayload: unknown[] = [easingData, roundedPathPoints];\n\n if (roundedControlPoints.length > 0) {\n pathPayload.push(roundedControlPoints);\n }\n\n return {\n path: [ValueType.BEZIER_CURVE_PATH, pathPayload],\n };\n}\n\nfunction assertContiguousPositionSegments (\n position: Extract<IRAnimatedProperty<IRVec3>, { keyframed: true }>,\n layer: IRLayerNode,\n): void {\n for (let index = 0; index < position.keyframes.length - 1; index++) {\n const segmentEnd = position.keyframes[index].endValue;\n const nextStart = position.keyframes[index + 1].value;\n\n if (segmentEnd == null) {\n continue;\n }\n\n const isContiguous = segmentEnd.every((value, dimension) => (\n Math.abs(value - nextStart[dimension]) <= 1e-6\n ));\n\n if (!isContiguous) {\n throw new Error(\n `[ge-ir] Layer '${layer.name}' has a discontiguous position segment at keyframe ${index}; `\n + 'GE path animation cannot preserve a segment endValue that differs from the next keyframe value.',\n );\n }\n }\n}\n\nfunction buildRotationAnim (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): Record<string, unknown> | undefined {\n const result: Record<string, unknown> = {};\n const rotation = transform.rotation;\n const x = buildRotationAxis(rotation?.x, timeContext);\n const y = buildRotationAxis(rotation?.y, timeContext);\n const z = buildRotationAxis(rotation?.z, timeContext);\n const hasX = x != null;\n const hasY = y != null;\n const hasZ = z != null;\n\n if (x != null) { result['x'] = x; }\n if (y != null) { result['y'] = y; }\n if (z != null) { result['z'] = z; }\n\n if (!hasZ && !hasX && !hasY) {\n return undefined;\n }\n\n result['asRotation'] = true;\n const axisCount = (hasX ? 1 : 0) + (hasY ? 1 : 0) + (hasZ ? 1 : 0);\n\n if (axisCount > 1 || hasX || hasY) {\n result['separateAxes'] = true;\n }\n\n return result;\n}\n\nfunction buildRotationAxis (\n property: IRAnimatedProperty<number> | undefined,\n timeContext: IRToGETimeContext,\n): unknown[] | undefined {\n if (property == null) {\n return undefined;\n }\n if (!property.keyframed) {\n return property.value !== 0 ? [ValueType.CONSTANT, property.value] : undefined;\n }\n if (property.keyframes.length === 1) {\n const value = property.keyframes[0].value;\n\n return value !== 0 ? [ValueType.CONSTANT, value] : undefined;\n }\n if (!axisHasRotationValue(property)) {\n return undefined;\n }\n const curves = irScalarKeyframesToGE(property, timeContext);\n\n return curves != null ? [ValueType.BEZIER_CURVE, curves[0]] : undefined;\n}\n\nfunction axisHasRotationValue (\n rotation: Extract<NonNullable<IRTransformChannels['rotation']>['x'], { keyframed: true }>,\n): boolean {\n return rotation.keyframes.some(keyframe => (\n Math.abs(keyframe.value) > 0.0001\n || Math.abs(keyframe.endValue ?? 0) > 0.0001\n ));\n}\n\nfunction buildSizeAnim (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): Record<string, unknown> | undefined {\n if (transform.scale == null) {\n return undefined;\n }\n\n if (transform.scale.keyframed) {\n if (transform.scale.keyframes.length === 1) {\n return buildConstantSizeAnimation(transform.scale.keyframes[0].value);\n }\n const curves = irVectorKeyframesToGE(transform.scale, timeContext);\n\n if (curves != null && curves.length >= 2) {\n return {\n separateAxes: true,\n x: [ValueType.BEZIER_CURVE, curves[0]],\n y: [ValueType.BEZIER_CURVE, curves[1]],\n ...(curves.length >= 3 && { z: [ValueType.BEZIER_CURVE, curves[2]] }),\n };\n }\n\n return undefined;\n }\n\n return buildConstantSizeAnimation(transform.scale.value);\n}\n\nfunction buildConstantSizeAnimation (scale: IRVec3): Record<string, unknown> | undefined {\n if (Math.abs(scale[0] - 1) <= 0.0001 && Math.abs(scale[1] - 1) <= 0.0001) {\n return undefined;\n }\n\n return {\n separateAxes: true,\n x: [ValueType.CONSTANT, scale[0]],\n y: [ValueType.CONSTANT, scale[1]],\n z: [ValueType.CONSTANT, scale[2]],\n };\n}\n\nexport function buildColorAnimation (layer: IRLayerNode, ir: IRComposition): Record<string, unknown> | undefined {\n const passthroughColor = getEffectsLayerSpecific(ir, layer)?.colorOverLifetime;\n\n if (passthroughColor != null) {\n return passthroughColor;\n }\n\n return buildNormalizedColorAnimation(layer);\n}\n\n/** Encode normalized IR opacity as a GE color-over-lifetime payload. */\nexport function buildNormalizedColorAnimation (layer: IRLayerNode): Record<string, unknown> | undefined {\n const transform = layer.transform;\n\n if (transform?.opacity == null) {\n return undefined;\n }\n\n const timeContext = getTimeContext(layer);\n\n if (timeContext.endFrame - timeContext.startFrame <= 0) {\n return {\n opacity: [ValueType.CONSTANT, 0],\n };\n }\n\n if (transform.opacity.keyframed) {\n if (transform.opacity.keyframes.length === 1) {\n const opacityValue = transform.opacity.keyframes[0].value;\n\n return opacityValue !== 1 ? { opacity: [ValueType.CONSTANT, opacityValue] } : undefined;\n }\n const curves = irScalarKeyframesToGE(transform.opacity, timeContext);\n\n if (curves != null) {\n return {\n opacity: [ValueType.BEZIER_CURVE, curves[0]],\n };\n }\n\n return undefined;\n }\n\n const opacityValue = transform.opacity.value;\n\n if (typeof opacityValue === 'number' && opacityValue !== 1) {\n return {\n opacity: [ValueType.CONSTANT, opacityValue],\n };\n }\n\n return undefined;\n}\n","import { type IRBlendMode, IRBlendMode as IRBlendModeConst } from '@vvfx/animation-ir';\nimport type { DataPath } from '@galacean/effects-specification';\nimport { createId, toDataPath } from '../utils';\nimport type { ECSCollector, GETransform } from '../types';\n\nexport { estimateTextWidth } from '../utils';\n\nexport function buildGETransform (\n position: [number, number, number],\n eulerHint: [number, number, number],\n scale: [number, number, number],\n): GETransform {\n return {\n position: { x: position[0], y: position[1], z: position[2] },\n eulerHint: { x: eulerHint[0], y: eulerHint[1], z: eulerHint[2] },\n scale: { x: scale[0], y: scale[1], z: scale[2] },\n };\n}\n\nexport function getGEItemType (type: string): string {\n switch (type) {\n case 'image':\n case 'solid':\n return 'sprite';\n case 'text':\n return 'text';\n case 'shape':\n return 'sprite';\n default:\n return 'null';\n }\n}\n\nexport function getGEItemTypeCode (type: string): string {\n switch (type) {\n case 'image':\n case 'solid':\n return '1';\n case 'text':\n return 'text';\n case 'shape':\n return 'shape';\n default:\n return '3';\n }\n}\n\nexport function registerTexture (\n collector: ECSCollector,\n imageUrl: string,\n cache: Map<string, DataPath>,\n): DataPath {\n const cached = cache.get(imageUrl);\n\n if (cached != null) {\n return cached;\n }\n\n const imageId = createId();\n const textureId = createId();\n\n collector.images.push({ id: imageId, url: imageUrl });\n collector.textures.push({\n id: textureId,\n dataType: 'Texture',\n source: toDataPath(imageId),\n flipY: true,\n });\n\n const dataPathRef = toDataPath(textureId);\n\n cache.set(imageUrl, dataPathRef);\n\n return dataPathRef;\n}\n\nconst GE_BLENDING_BY_IR_MODE: Record<IRBlendMode, number | undefined> = {\n [IRBlendModeConst.Normal]: undefined,\n [IRBlendModeConst.Multiply]: 6,\n [IRBlendModeConst.Screen]: 9,\n [IRBlendModeConst.Overlay]: 13,\n [IRBlendModeConst.Darken]: 2,\n [IRBlendModeConst.Lighten]: 3,\n [IRBlendModeConst.ColorDodge]: 10,\n [IRBlendModeConst.ColorBurn]: 7,\n [IRBlendModeConst.HardLight]: 14,\n [IRBlendModeConst.SoftLight]: 15,\n [IRBlendModeConst.Difference]: 4,\n [IRBlendModeConst.Exclusion]: 5,\n [IRBlendModeConst.Hue]: 11,\n [IRBlendModeConst.Saturation]: 12,\n [IRBlendModeConst.Color]: 8,\n [IRBlendModeConst.Luminosity]: 16,\n [IRBlendModeConst.Add]: 1,\n};\n\nexport function mapBlendingMode (blendMode: IRBlendMode | undefined): number | undefined {\n if (blendMode == null) {\n return undefined;\n }\n\n return GE_BLENDING_BY_IR_MODE[blendMode];\n}\n\n","import type { IRLayerNode, IRLocalBounds } from '@vvfx/animation-ir';\n\nconst DEFAULT_LOCAL_BOUNDS: IRLocalBounds = { x: 0, y: 0, width: 1, height: 1 };\n\n/**\n * Read source-neutral local bounds from an IR layer. When the producer\n * did not resolve one, returns `fallback` (defaults to bounds at the origin\n * with a one-pixel width and height).\n */\nexport function getLayerLocalBounds (\n layer: IRLayerNode,\n fallback: IRLocalBounds = DEFAULT_LOCAL_BOUNDS,\n): IRLocalBounds {\n return layer.localBounds ?? fallback;\n}\n","import type {\n IRColor, IRComposition, IRCustomShapePath, IRLayerNode, IRShapeData,\n IRShapePaintData,\n} from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport { type DataPath, ValueType } from '@galacean/effects-specification';\nimport { getEffectsLayerSpecific } from '../../passthrough';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { estimateTextWidth, mapBlendingMode, registerTexture } from './effects';\nimport { getLayerLocalBounds } from '../ir/layer-dimensions';\nimport type { LayerProcessingContext } from '../types';\n\nexport function buildComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string | undefined {\n switch (layer.type) {\n case 'image':\n case 'solid':\n return buildSpriteComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'text':\n return buildTextComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'shape':\n return buildShapeComponent(layer, itemId, ctx);\n default:\n return undefined;\n }\n}\n\n/**\n * Copy the raw GE mask object (from specific.effects passthrough) onto a freshly\n * built component, as a top-level `mask` field matching GE's structure. For a\n * mask SOURCE this carries `{isMask:true, alphaMaskEnabled}`; for a TARGET it\n * carries `{isMask:false, reference, inverted}` where `reference.id` is still\n * the stale GE1 component id — `applyGEMaskRemap` rewrites it in post-process.\n * No-op for non-GE sources (Lottie masks go through the IRLayerNode.mask path).\n */\nexport function applyGEMask (ir: IRComposition, layer: IRLayerNode, component: Record<string, unknown>): void {\n const effectsMask = getEffectsLayerSpecific(ir, layer)?.mask;\n\n if (effectsMask != null && component['mask'] == null) {\n component['mask'] = { ...effectsMask };\n }\n}\n\nfunction buildSpriteComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string {\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n const startColor = layer.solidColor != null\n ? [\n roundNumber(layer.solidColor[0], 4),\n roundNumber(layer.solidColor[1], 4),\n roundNumber(layer.solidColor[2], 4),\n roundNumber(layer.solidColor[3], 4),\n ]\n : [1, 1, 1, 1];\n\n let textureDataPath: DataPath | undefined;\n\n const assetUrl = layer.asset?.url;\n const textureUrl = assetUrl != null && assetUrl !== '' ? assetUrl : layer.asset?.refId;\n\n if (textureUrl != null && textureUrl !== '' && textureUrl !== 'mask://placeholder') {\n textureDataPath = registerTexture(ctx.collector, textureUrl, ctx.textureCache);\n }\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'SpriteComponent',\n item: toDataPath(itemId),\n options: { startColor },\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n ...(textureDataPath != null && { texture: textureDataPath }),\n },\n };\n\n const isNonDefaultAnchor = Math.abs(anchorScaleX - 0.5) > 0.001 || Math.abs(anchorScaleY - 0.5) > 0.001;\n\n if (isNonDefaultAnchor) {\n (component['renderer'] as Record<string, unknown>)['anchor'] = [\n roundNumber(anchorScaleX, 4),\n roundNumber(anchorScaleY, 4),\n ];\n }\n\n applyGEMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildTextComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string | undefined {\n const textInfo = layer.text;\n\n if (textInfo == null) {\n return undefined;\n }\n\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n const textColor: number[] = [\n roundNumber(textInfo.color[0], 4),\n roundNumber(textInfo.color[1], 4),\n roundNumber(textInfo.color[2], 4),\n textInfo.color[3],\n ];\n const textWidth = textInfo.width ?? estimateTextWidth(textInfo.content, textInfo.fontSize, textInfo.letterSpacing);\n const lineHeight = typeof textInfo.lineHeight === 'number' && textInfo.lineHeight > 0\n ? textInfo.lineHeight\n : textInfo.fontSize;\n const textHeight = Math.max(textInfo.height ?? textInfo.fontSize * 1.2, lineHeight);\n\n const { width: layerWidth, height: layerHeight } = getLayerLocalBounds(layer);\n const textSizeW = roundNumber(ctx.ratio * layerWidth, 4);\n const textSizeH = roundNumber(ctx.ratio * layerHeight, 4);\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'TextComponent',\n item: toDataPath(itemId),\n options: {\n text: textInfo.content,\n fontSize: textInfo.fontSize,\n textColor,\n fontFamily: textInfo.fontFamily || 'sans-serif',\n fontWeight: textInfo.fontWeight,\n textAlign: textInfo.textAlign === 'center' ? 1 : textInfo.textAlign === 'right' ? 2 : 0,\n fontStyle: textInfo.fontStyle,\n letterSpace: textInfo.letterSpacing,\n lineHeight,\n textWidth,\n textHeight,\n autoWidth: textInfo.autoWidth,\n size: [textSizeW, textSizeH],\n },\n renderer: {\n renderMode: 1,\n anchor: [anchorScaleX, anchorScaleY],\n ...(blending !== undefined && { blending }),\n },\n };\n\n applyGEMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildShapeComponent (\n layer: IRLayerNode,\n itemId: string,\n ctx: LayerProcessingContext,\n): string | undefined {\n if (layer.shapes == null || layer.shapes.length === 0) {\n return undefined;\n }\n\n const shapeData = layer.shapes[0];\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'ShapeComponent',\n item: toDataPath(itemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n },\n };\n\n applyGEMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nexport function buildShapeOptions (\n shapeData: IRShapeData,\n ratio: number,\n ctx?: LayerProcessingContext,\n): Record<string, unknown> {\n const options: Record<string, unknown> = {\n type: mapShapePrimitiveType(shapeData.primitiveType),\n };\n\n switch (shapeData.primitiveType) {\n case IRShapePrimitiveType.Custom:\n Object.assign(options, mapCustomPaths(shapeData.customPaths, ratio));\n\n break;\n case IRShapePrimitiveType.Rectangle:\n options['width'] = roundNumber(shapeData.width * ratio, 4);\n options['height'] = roundNumber(shapeData.height * ratio, 4);\n options['roundness'] = shapeData.roundness ?? 0;\n\n break;\n case IRShapePrimitiveType.Ellipse:\n options['xRadius'] = roundNumber(shapeData.xRadius * ratio, 4);\n options['yRadius'] = roundNumber(shapeData.yRadius * ratio, 4);\n\n break;\n case IRShapePrimitiveType.Polygon:\n options['pointCount'] = shapeData.pointCount;\n options['radius'] = roundNumber(shapeData.radius * ratio, 4);\n options['roundness'] = shapeData.roundness ?? 0;\n\n break;\n case IRShapePrimitiveType.Star:\n options['pointCount'] = shapeData.pointCount;\n options['innerRadius'] = roundNumber(shapeData.innerRadius * ratio, 4);\n options['outerRadius'] = roundNumber(shapeData.outerRadius * ratio, 4);\n options['innerRoundness'] = shapeData.innerRoundness ?? 0;\n options['outerRoundness'] = shapeData.outerRoundness ?? 0;\n\n break;\n }\n\n if (shapeData.fills != null && shapeData.fills.length > 0) {\n options['fills'] = shapeData.fills\n .map(fill => mapShapePaint(fill, ratio, ctx))\n .filter((fill): fill is Record<string, unknown> => fill != null);\n } else {\n options['fills'] = [];\n }\n if (shapeData.strokes != null && shapeData.strokes.length > 0) {\n options['strokes'] = shapeData.strokes\n .map(stroke => mapShapePaint(stroke, ratio, ctx))\n .filter((stroke): stroke is Record<string, unknown> => stroke != null);\n } else {\n options['strokes'] = [];\n }\n if (typeof shapeData.strokeWidth === 'number') {\n options['strokeWidth'] = roundNumber(shapeData.strokeWidth * ratio, 4);\n }\n if (shapeData.strokeCap != null) {\n options['strokeCap'] = mapLineCap(shapeData.strokeCap);\n }\n if (shapeData.strokeJoin != null) {\n options['strokeJoin'] = mapLineJoin(shapeData.strokeJoin);\n }\n\n return options;\n}\n\nconst SHAPE_PRIMITIVE_TYPE_TO_GE: Record<IRShapeData['primitiveType'], number> = {\n [IRShapePrimitiveType.Custom]: 0,\n [IRShapePrimitiveType.Rectangle]: 1,\n [IRShapePrimitiveType.Ellipse]: 2,\n [IRShapePrimitiveType.Polygon]: 3,\n [IRShapePrimitiveType.Star]: 4,\n};\n\nconst FILL_TYPE_TO_GE: Record<IRShapePaintData['type'], number> = {\n [IRFillType.Solid]: 0,\n [IRFillType.LinearGradient]: 1,\n [IRFillType.RadialGradient]: 2,\n [IRFillType.AngularGradient]: 3,\n [IRFillType.Texture]: 4,\n};\n\nconst LINE_CAP_TO_GE: Record<string, number> = {\n [IRLineCap.Butt]: 0,\n [IRLineCap.Round]: 1,\n [IRLineCap.Square]: 2,\n};\n\nconst LINE_JOIN_TO_GE: Record<string, number> = {\n [IRLineJoin.Round]: 0,\n [IRLineJoin.Bevel]: 1,\n [IRLineJoin.Miter]: 2,\n};\n\nfunction mapShapePrimitiveType (primitiveType: IRShapeData['primitiveType']): number {\n return SHAPE_PRIMITIVE_TYPE_TO_GE[primitiveType];\n}\n\nfunction mapLineCap (lineCap: string): number {\n return LINE_CAP_TO_GE[lineCap] ?? 0;\n}\n\nfunction mapLineJoin (lineJoin: string): number {\n return LINE_JOIN_TO_GE[lineJoin] ?? 2;\n}\n\nfunction mapShapePaint (\n paint: IRShapePaintData,\n ratio: number,\n ctx: LayerProcessingContext | undefined,\n): Record<string, unknown> | undefined {\n if (paint.type === IRFillType.Solid) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n color: colorToGE(paint.color),\n };\n }\n\n if (\n paint.type === IRFillType.LinearGradient ||\n paint.type === IRFillType.RadialGradient ||\n paint.type === IRFillType.AngularGradient\n ) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n gradientStops: [ValueType.GRADIENT_COLOR, paint.gradientStops],\n startPoint: vec2ToGE(paint.gradientStart, ratio),\n endPoint: vec2ToGE(paint.gradientEnd, ratio),\n };\n }\n\n if (paint.type === IRFillType.Texture) {\n const textureAssetUrl = paint.texture.url;\n const textureUrl = textureAssetUrl != null && textureAssetUrl !== ''\n ? textureAssetUrl\n : paint.texture.refId;\n const texture = textureUrl != null && ctx != null\n ? registerTexture(ctx.collector, textureUrl, ctx.textureCache)\n : undefined;\n\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n ...(texture != null && { texture }),\n scaleMode: paint.scaleMode ?? 0,\n };\n }\n\n return undefined;\n}\n\nfunction colorToGE (color: IRColor): { r: number; g: number; b: number; a: number } {\n return {\n r: roundNumber(color[0], 4),\n g: roundNumber(color[1], 4),\n b: roundNumber(color[2], 4),\n a: roundNumber(color[3], 4),\n };\n}\n\nfunction vec2ToGE (\n value: [number, number] | undefined,\n ratio: number,\n): { x: number; y: number } {\n return {\n x: roundNumber((value?.[0] ?? 0) * ratio, 4),\n y: roundNumber(-(value?.[1] ?? 0) * ratio, 4),\n };\n}\n\nfunction mapCustomPaths (paths: IRCustomShapePath[], ratio: number): Record<string, unknown> {\n const points: Array<{ x: number; y: number }> = [];\n const easingIns: Array<{ x: number; y: number }> = [];\n const easingOuts: Array<{ x: number; y: number }> = [];\n const shapes: Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }> = [];\n\n for (const path of paths) {\n const indexes: Array<{ point: number; easingIn: number; easingOut: number }> = [];\n\n for (let index = 0; index < path.points.length; index++) {\n const point = path.points[index];\n const easingIn = path.inTangents[index];\n const easingOut = path.outTangents[index];\n const pointIndex = points.length;\n\n points.push({\n x: roundNumber(point.x * ratio, 4),\n y: roundNumber(-point.y * ratio, 4),\n });\n easingIns.push({\n x: roundNumber((easingIn?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingIn?.y ?? 0) * ratio, 4),\n });\n easingOuts.push({\n x: roundNumber((easingOut?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingOut?.y ?? 0) * ratio, 4),\n });\n indexes.push({ point: pointIndex, easingIn: pointIndex, easingOut: pointIndex });\n }\n\n shapes.push({ close: path.closed, indexes });\n }\n\n return { points, easingIns, easingOuts, shapes };\n}\n","import type { IRComposition, IRLayerNode, IRLocalBounds } from '@vvfx/animation-ir';\nimport { getEffectsLayerSpecific } from '../../passthrough';\nimport { computeAnchorInfo, getStaticAnchor } from './layer-utils';\nimport { getLayerLocalBounds } from './layer-dimensions';\n\n/**\n * How the generator should handle a layer's anchor offset.\n *\n * - `inline-anchor` — emit one VFX item with `renderer.anchor` baked into the\n * GE renderer and `anchorOffset` shifted into `transform.position`. Centered\n * layers also use this kind with `anchorScale = [0.5, 0.5]` and\n * `anchorOffset = [0, 0]`.\n * - `split-null-sprite` — emit a null+sprite hierarchy so the transform pivot\n * sits at the anchor; the sprite carries the visual content and is parented\n * to the null with an anchor-relative position.\n *\n * The decision is a GE lowering detail derived from source-neutral IR geometry\n * and animation semantics. GE-originated IR may additionally preserve its\n * original hierarchy through `specific.effects.sourceHierarchy`.\n */\nexport type GELayerLoweringPlan =\n | {\n kind: 'inline-anchor';\n anchorScale: [number, number];\n anchorOffset: [number, number];\n }\n | { kind: 'split-null-sprite' };\n\nexport function planGELayerLowering (\n ir: IRComposition,\n layer: IRLayerNode,\n): GELayerLoweringPlan {\n const sourceHierarchy = getEffectsLayerSpecific(ir, layer)?.sourceHierarchy;\n\n if (sourceHierarchy === 'null-sprite-pair') {\n return { kind: 'split-null-sprite' };\n }\n\n const bounds = getLayerLocalBounds(layer);\n\n if (sourceHierarchy !== 'single-item' && needsPivotContainer(layer, bounds)) {\n return { kind: 'split-null-sprite' };\n }\n\n const info = computeAnchorInfo(layer, bounds);\n\n return {\n kind: 'inline-anchor',\n anchorScale: [info.anchorScaleX, info.anchorScaleY],\n anchorOffset: [info.anchorOffsetX, info.anchorOffsetY],\n };\n}\n\nfunction needsPivotContainer (layer: IRLayerNode, bounds: IRLocalBounds): boolean {\n if (layer.type !== 'image' && layer.type !== 'solid') {\n return false;\n }\n if (layer.localBounds == null) {\n return false;\n }\n const { x, y, width, height } = bounds;\n\n if (width <= 0 || height <= 0) {\n return false;\n }\n const anchor = getStaticAnchor(layer);\n const anchorOffCenter = Math.abs(anchor[0] - (x + width / 2)) > 0.5\n || Math.abs(anchor[1] - (y + height / 2)) > 0.5;\n\n if (!anchorOffCenter) {\n return false;\n }\n const transform = layer.transform;\n const rotation = transform?.rotation;\n const hasRotationAnim = rotation?.x?.keyframed === true\n || rotation?.y?.keyframed === true\n || rotation?.z?.keyframed === true;\n const hasScaleAnim = transform?.scale?.keyframed === true;\n\n return hasRotationAnim || hasScaleAnim;\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { getEffectsLayerSpecific } from '../../passthrough';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { buildTimelineTracks } from './timeline';\nimport { buildColorAnimation, buildTransformAnimation } from './animation';\nimport { applyGEMask, buildComponent, buildShapeOptions } from './component';\nimport { buildGETransform, getGEItemType, getGEItemTypeCode, mapBlendingMode } from './effects';\nimport { applyScalePositionAdjust, computeAnchorInfo, computeLayerTiming, computeStaticPosition, getStaticAnchor } from '../ir/layer-utils';\nimport { getLayerLocalBounds } from '../ir/layer-dimensions';\nimport { planGELayerLowering } from '../ir/anchor-strategy';\nimport type { GEItem, LayerProcessingContext, TransformAnimation } from '../types';\n\nexport function processNullLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const position = computeStaticPosition(layer, ctx);\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 4, animation, 'null',\n );\n\n const item: GEItem = {\n id: itemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: '3',\n visible: layer.visible,\n endBehavior: 4,\n delay,\n renderLevel: 'B+',\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(position, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(item);\n ctx.processedItems.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nexport function processPrecompLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const position = computeStaticPosition(layer, ctx);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 4, animation, 'precomp',\n );\n const effectsSpecific = getEffectsLayerSpecific(ctx.ir, layer);\n const content = buildPrecompContent(effectsSpecific?.precompContent, effectsSpecific?.precompRefId);\n\n const item: GEItem = {\n id: itemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: '7',\n visible: layer.visible,\n endBehavior: 4,\n delay,\n renderLevel: 'B+',\n content,\n components: [],\n transform: buildGETransform(position, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(item);\n ctx.processedItems.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nfunction buildPrecompContent (\n rawContent: Record<string, unknown> | undefined,\n refId: string | undefined,\n): Record<string, unknown> {\n const content = rawContent != null ? cloneRecord(rawContent) : {};\n const rawOptions = content['options'];\n const options = isRecord(rawOptions) ? { ...rawOptions } : {};\n\n if (refId != null) {\n options['refId'] = refId;\n }\n\n content['options'] = options;\n\n return content;\n}\n\nfunction cloneRecord (value: Record<string, unknown>): Record<string, unknown> {\n return JSON.parse(JSON.stringify(value)) as Record<string, unknown>;\n}\n\nfunction isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * Emit a null+sprite pair: the null carries the layer transform and sits at\n * the layer's logical position; the sprite/text child carries the visual\n * content offset by the anchor so the pivot is at the right point.\n *\n * Used by both `processParentLayer` and GE lowering for layers that require a\n * pivot container.\n */\nfunction emitNullSpritePair (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const bounds = getLayerLocalBounds(layer);\n const { x, y, width: layerWidth, height: layerHeight } = bounds;\n\n const nullItemId = createId();\n\n ctx.layerToItemId[layerIndex] = nullItemId;\n\n const nullAnimation = buildTransformAnimation(layer, ctx);\n const nullPosition = computeStaticPosition(layer, ctx);\n\n const nullTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 4, nullAnimation, 'null',\n );\n\n const nullItem: GEItem = {\n id: nullItemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: '3',\n visible: true,\n endBehavior: 4,\n delay,\n renderLevel: 'B+',\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(nullPosition, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(nullItem);\n ctx.processedItems.push({ itemId: nullItemId, objectBindingTrackId: nullTrackId, layerIndex });\n\n const childItemId = createId();\n\n const anchor = getStaticAnchor(layer);\n const centerX = x + layerWidth / 2;\n const centerY = y + layerHeight / 2;\n const childPosition: [number, number, number] = [\n -ctx.ratio * (anchor[0] - centerX),\n ctx.ratio * (anchor[1] - centerY),\n 0,\n ];\n\n const childColorAnim = buildColorAnimation(layer, ctx.ir);\n const childTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0,\n { colorOverLifetime: childColorAnim }, getGEItemType(layer.type),\n );\n\n const componentId = buildComponent(layer, childItemId, 0.5, 0.5, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n const scaledW = roundNumber(ctx.ratio * layerWidth, 4);\n const scaledH = roundNumber(ctx.ratio * layerHeight, 4);\n const childScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n const childItem: GEItem = {\n id: childItemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: getGEItemTypeCode(layer.type),\n visible: layer.visible,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(childPosition, [0, 0, 0], childScale),\n anchor: { x: 0, y: 0 },\n size: { x: scaledW, y: scaledH },\n },\n parentId: nullItemId,\n };\n\n ctx.collector.items.push(childItem);\n ctx.processedItems.push({ itemId: childItemId, objectBindingTrackId: childTrackId, layerIndex });\n}\n\nexport function processParentLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n emitNullSpritePair(layer, ctx);\n}\n\nexport function processVisualLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const strategy = planGELayerLowering(ctx.ir, layer);\n\n if (strategy.kind === 'split-null-sprite') {\n processPivotContainerLayer(layer, ctx);\n\n return;\n }\n\n if (layer.type === 'shape' && layer.shapes != null && layer.shapes.length > 0) {\n processShapeLayerMultiItem(layer, ctx);\n\n return;\n }\n\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const bounds = getLayerLocalBounds(layer);\n const { width: layerWidth, height: layerHeight } = bounds;\n const scaledW = ctx.ratio * layerWidth;\n const scaledH = ctx.ratio * layerHeight;\n\n const [anchorScaleX, anchorScaleY] = strategy.anchorScale;\n const [anchorOffsetX, anchorOffsetY] = strategy.anchorOffset;\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = {\n ...animation,\n colorOverLifetime: colorAnimation,\n };\n\n const rawPosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const position = applyScalePositionAdjust(rawPosition, layer, bounds, ctx.ratio);\n\n const itemType = getGEItemType(layer.type);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0, fullAnimation, itemType,\n );\n\n const componentId = buildComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n // GE 2.x TextComponent.updateTexture overwrites transform.size to\n // (textWidth × 0.0123, textHeight × 0.0123) regardless of what we emit,\n // so the only knob left to control on-screen size is transform.scale.\n // Pre-bake it so version36Migration's scaleFactor = (preScale / textWidth) / 0.0123\n // resolves to ctx.ratio / 0.0123 — the correct ratio for this composition.\n const itemScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n const item: GEItem = {\n id: itemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: getGEItemTypeCode(layer.type),\n visible: layer.visible,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(position, [0, 0, 0], itemScale),\n anchor: { x: 0, y: 0 },\n size: { x: roundNumber(scaledW, 4), y: roundNumber(scaledH, 4) },\n },\n };\n\n ctx.collector.items.push(item);\n ctx.processedItems.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nfunction processPivotContainerLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n emitNullSpritePair(layer, ctx);\n}\n\nfunction processShapeLayerMultiItem (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n // A GE Shape item commonly has no transform.size, so ge2ir cannot recover\n // layer-local bounds. Treat missing bounds as empty here: the generic 1×1\n // fallback would invent a half-pixel anchor offset and shift every rebuilt\n // shape (notably mask sources) away from its authored position.\n const bounds = getLayerLocalBounds(layer, { x: 0, y: 0, width: 0, height: 0 });\n const anchor = getStaticAnchor(layer);\n const { anchorOffsetX, anchorOffsetY } = computeAnchorInfo(layer, bounds);\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = { ...animation, colorOverLifetime: colorAnimation };\n const basePosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const blending = mapBlendingMode(layer.blendMode);\n\n for (let shapeIdx = 0; shapeIdx < layer.shapes!.length; shapeIdx++) {\n const shapeData = layer.shapes![shapeIdx];\n const shapeItemId = createId();\n\n if (shapeIdx === 0) {\n ctx.layerToItemId[layerIndex] = shapeItemId;\n }\n\n const shapeOffsetX = ctx.ratio * (shapeData.position[0] - anchor[0]);\n const shapeOffsetY = -ctx.ratio * (shapeData.position[1] - anchor[1]);\n const shapePosition: [number, number, number] = [\n basePosition[0] + shapeOffsetX,\n basePosition[1] + shapeOffsetY,\n basePosition[2],\n ];\n\n const shapeComponentId = createId();\n\n const component: Record<string, unknown> = {\n id: shapeComponentId,\n dataType: 'ShapeComponent',\n item: toDataPath(shapeItemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n },\n };\n\n // Mask source shape (isMask:true) — copy onto the first shape item only.\n if (shapeIdx === 0) {\n applyGEMask(ctx.ir, layer, component);\n }\n\n ctx.collector.components.push(component);\n if (shapeIdx === 0) {\n ctx.layerToComponentId[layerIndex] = shapeComponentId;\n }\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0, fullAnimation, 'shape',\n );\n\n const shapeItem: GEItem = {\n id: shapeItemId,\n dataType: 'VFXItemData',\n name: shapeIdx === 0 ? layer.name : `${layer.name}_shape_${shapeIdx}`,\n duration: layerDuration,\n type: 'shape',\n visible: layer.visible,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: [toDataPath(shapeComponentId)],\n transform: {\n ...buildGETransform(shapePosition, [0, 0, 0], [1, 1, 1]),\n anchor: { x: 0, y: 0 },\n },\n };\n\n ctx.collector.items.push(shapeItem);\n ctx.processedItems.push({ itemId: shapeItemId, objectBindingTrackId, layerIndex });\n }\n}\n","import { IREndBehavior, type IRComposition, type IRColor } from '@vvfx/animation-ir';\nimport { type DataPath, type JSONScene, JSONSceneVersion } from '@galacean/effects-specification';\nimport { DEFAULT_CLIP_MODE, DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z } from '../../shared/coordinate';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport type { ECSCollector, ProcessedItem } from '../types';\n\nconst DEFAULT_PLAYER_VERSION = {\n web: '2.8.9',\n native: '0.0.1.202311221223',\n};\n\n/**\n * Assemble the top-level GE JSONScene wrapper from a populated collector.\n *\n * Reads composition-level properties (`name`, `width`/`height`, `endBehavior`,\n * `backgroundColor`) directly from the IR. The optional `duration` arg is a\n * caller override — when omitted, derived from `(outPoint - inPoint) / frameRate`.\n */\nexport function assembleScene (\n ir: IRComposition,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n duration?: number,\n): JSONScene {\n const finalDuration = duration ?? deriveDuration(ir);\n const timelineAssetId = createId();\n const objectBindingTrackRefs: DataPath[] = processedItems.map(pi => toDataPath(pi.objectBindingTrackId));\n\n collector.miscs.push({\n id: timelineAssetId,\n dataType: 'TimelineAsset',\n tracks: objectBindingTrackRefs,\n });\n\n const compositionComponentId = createId();\n const compositionId = createId();\n const sceneBindings = processedItems.map(pi => ({\n key: toDataPath(pi.objectBindingTrackId),\n value: toDataPath(pi.itemId),\n }));\n const allItemRefs: DataPath[] = processedItems.map(pi => toDataPath(pi.itemId));\n\n collector.components.push({\n id: compositionComponentId,\n dataType: 'CompositionComponent',\n item: toDataPath(compositionId),\n items: allItemRefs,\n timelineAsset: toDataPath(timelineAssetId),\n sceneBindings,\n });\n\n const composition: Record<string, unknown> = {\n id: compositionId,\n name: ir.name,\n duration: finalDuration,\n startTime: 0,\n endBehavior: mapCompositionEndBehavior(ir.endBehavior),\n previewSize: [ir.width, ir.height],\n camera: {\n fov: DEFAULT_CAMERA_FOV,\n far: 40,\n near: 0.1,\n clipMode: DEFAULT_CLIP_MODE,\n position: [0, 0, DEFAULT_CAMERA_Z],\n rotation: [0, 0, 0],\n },\n components: [toDataPath(compositionComponentId)],\n };\n\n if (ir.backgroundColor != null) {\n composition['background'] = { color: colorToRoundedRgba(ir.backgroundColor) };\n }\n\n return {\n version: JSONSceneVersion['3_6'],\n playerVersion: DEFAULT_PLAYER_VERSION,\n images: collector.images,\n fonts: [],\n plugins: [],\n type: 'ge',\n compositionId,\n compositions: [composition],\n components: collector.components,\n geometries: [],\n materials: [],\n items: collector.items as unknown as Record<string, unknown>[],\n shaders: [],\n bins: [],\n textures: collector.textures,\n animations: [],\n miscs: collector.miscs,\n } as unknown as JSONScene;\n}\n\nfunction deriveDuration (ir: IRComposition): number {\n return ir.frameRate > 0 ? (ir.outPoint - ir.inPoint) / ir.frameRate : 0;\n}\n\n/**\n * Map IR composition end behavior to GE's numeric end-behavior.\n * Undefined defaults to Restart (5) for backward compatibility. DSL's boolean\n * loop flag maps to either Restart or Destroy at the adapter boundary.\n */\nfunction mapCompositionEndBehavior (eb: IREndBehavior | undefined): number {\n switch (eb) {\n case undefined:\n case IREndBehavior.Restart:\n return 5;\n case IREndBehavior.Forward:\n return 2;\n case IREndBehavior.Freeze:\n return 4;\n case IREndBehavior.Destroy:\n return 0;\n }\n}\n\nfunction colorToRoundedRgba (color: IRColor): number[] {\n return [\n roundNumber(color[0]),\n roundNumber(color[1]),\n roundNumber(color[2]),\n roundNumber(color[3], 4),\n ];\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { getStaticAnchor } from '../ir/layer-utils';\nimport type { GEItem } from '../types';\n\nexport function applyParenting (\n layers: IRLayerNode[],\n items: GEItem[],\n layerToItemId: Record<number, string>,\n ratio: number,\n width: number,\n height: number,\n): void {\n const layerByIndex = new Map<number, IRLayerNode>();\n\n for (const layer of layers) {\n layerByIndex.set(layer.index, layer);\n }\n\n const itemById = new Map<string, GEItem>();\n\n for (const item of items) {\n itemById.set(item.id, item);\n }\n\n for (const layer of layers) {\n if (layer.parent == null) {\n continue;\n }\n\n const childItemId = layerToItemId[layer.index];\n const parentLayer = layerByIndex.get(layer.parent.index);\n\n if (parentLayer == null || childItemId == null) {\n continue;\n }\n\n const parentItemId = layerToItemId[parentLayer.index];\n\n if (parentItemId == null) {\n continue;\n }\n\n const childItem = itemById.get(childItemId);\n\n if (childItem == null) {\n continue;\n }\n\n childItem.parentId = parentItemId;\n\n const parentAnchor = getStaticAnchor(parentLayer);\n const adjustX = -ratio * (parentAnchor[0] - width / 2);\n const adjustY = ratio * (parentAnchor[1] - height / 2);\n\n childItem.transform.position.x += adjustX;\n childItem.transform.position.y += adjustY;\n }\n}\n","/**\n * Mask post-process: emits a mask shape item + component for each layer that\n * carries `IRMaskData`, propagating the mask reference to the layer's renderer\n * component or — for parent layers — to descendant renderers.\n *\n * The decision to emit (per-layer) is gated solely on `layer.mask != null`,\n * so any IR producer can opt in by writing the field. Currently only lottie\n * IR has masks; dsl IR leaves `mask` undefined and this module no-ops for it.\n *\n * The lookup callbacks let each pipeline plug in its own layer-to-emitted-id\n * mapping — lottie keeps `layerToItemId`/`layerToComponentId`/`parentIndexSet`\n * during emission, dsl tracks differently. Mask handling stays generic.\n */\nimport type { IRComposition, IRLayerNode, IRMaskData } from '@vvfx/animation-ir';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { buildTimelineTracks } from '../builders/timeline';\nimport { computeLayerTiming } from '../builders/timing';\nimport { getStaticAnchor } from '../ir/layer-utils';\nimport type { ECSCollector, GEItem, ProcessedItem } from '../types';\n\n/**\n * Pipeline-specific lookups consumed during mask emission. A pipeline that\n * never produces masks can pass stub callbacks (the iterator skips layers\n * without `mask`, so the callbacks are never invoked in that case).\n */\nexport interface MaskLayerLookup {\n getItemId(layerIndex: number): string | undefined;\n getComponentId(layerIndex: number): string | undefined;\n isParentLayer(layerIndex: number): boolean;\n}\n\n/**\n * Per-component bookkeeping for whichever mask currently occupies a renderer\n * component's single mask slot. Used only to arbitrate propagation; kept out of\n * the emitted ref so GE-irrelevant hints never reach the scene JSON.\n */\ntype MaskSlotMeta = Map<string, { isAutoMask: boolean; area: number }>;\n\nexport function applyMasks (\n ir: IRComposition,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n lookup: MaskLayerLookup,\n): void {\n const layers = ir.layers;\n const maskSlotMeta: MaskSlotMeta = new Map();\n\n const componentById = new Map<string, Record<string, unknown>>();\n\n for (const comp of collector.components) {\n componentById.set(comp['id'] as string, comp);\n }\n\n for (let i = layers.length - 1; i >= 0; i--) {\n const layer = layers[i];\n const maskData = layer.mask;\n\n if (maskData == null) {\n continue;\n }\n\n if (isMaskExactCrop(maskData, layer, width, height, lookup)) {\n continue;\n }\n\n const layerItemId = lookup.getItemId(layer.index);\n\n if (layerItemId == null) {\n continue;\n }\n\n const layerComponentId = lookup.getComponentId(layer.index);\n\n buildMaskForLayer(\n layer, layerItemId, layerComponentId, collector, processedItems,\n ratio, width, height, frameRate, ir.inPoint, lookup, maskSlotMeta, componentById, maskData,\n );\n }\n}\n\nfunction buildMaskForLayer (\n layer: IRLayerNode,\n layerItemId: string,\n layerComponentId: string | undefined,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n compositionInPoint: number,\n lookup: MaskLayerLookup,\n maskSlotMeta: MaskSlotMeta,\n componentById: Map<string, Record<string, unknown>>,\n maskData?: IRMaskData,\n): void {\n const mask = maskData ?? layer.mask!;\n const maskItemId = createId();\n const maskComponentId = createId();\n const maskBounds = getMaskBounds(mask);\n\n const [anchorX, anchorY] = getStaticAnchor(layer);\n const maskPosX = roundNumber((maskBounds.cx - anchorX) * ratio, 4);\n const maskPosY = roundNumber(-(maskBounds.cy - anchorY) * ratio, 4);\n\n const timing = computeLayerTiming(layer, frameRate, compositionInPoint);\n const delay = timing.delay;\n const maskDuration = timing.layerDuration;\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n const isAutoMask = mask.isAutoMask === true;\n const maskArea = maskBounds.width * maskBounds.height;\n\n if (layerIsParent) {\n const hasDescendants = hasClaimableRendererDescendants(\n collector.items, componentById, layerItemId, isAutoMask, maskArea, maskSlotMeta,\n );\n\n if (!hasDescendants) {\n return;\n }\n }\n\n const maskItem: GEItem = {\n id: maskItemId,\n dataType: 'VFXItemData',\n name: `${layer.name}_mask`,\n duration: maskDuration,\n type: 'shape',\n visible: true,\n endBehavior: 0,\n delay: roundNumber(delay, 4),\n renderLevel: 'B+',\n components: [toDataPath(maskComponentId)],\n transform: {\n position: { x: maskPosX, y: maskPosY, z: 0 },\n eulerHint: { x: 0, y: 0, z: 0 },\n anchor: { x: 0, y: 0 },\n scale: { x: 1, y: 1, z: 1 },\n },\n parentId: layerItemId,\n };\n\n const maskComponent: Record<string, unknown> = isSimpleRectMask(mask)\n ? {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: 1,\n dataType: 'ShapeComponent',\n width: roundNumber(maskBounds.width * ratio, 4),\n height: roundNumber(maskBounds.height * ratio, 4),\n roundness: 0,\n fills: [{ type: 0, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: 0,\n strokeJoin: 0,\n renderer: { renderMode: 1 },\n mask: { isMask: true, alphaMaskEnabled: false },\n }\n : buildPolygonMaskComponent(maskComponentId, maskItemId, mask, maskBounds, ratio);\n\n collector.items.push(maskItem);\n collector.components.push(maskComponent);\n componentById.set(maskComponentId, maskComponent);\n\n if (layerIsParent) {\n applyMaskReferenceToDescendants(collector.items, componentById, layerItemId, maskComponentId, isAutoMask, maskArea, maskSlotMeta);\n } else if (layerComponentId != null) {\n const targetComponent = componentById.get(layerComponentId);\n\n if (targetComponent != null) {\n targetComponent['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(layerComponentId, { isAutoMask, area: maskArea });\n }\n }\n\n const maskTrackId = buildTimelineTracks(\n collector, delay, maskDuration, 0, {}, 'shape',\n );\n\n processedItems.push({ itemId: maskItemId, objectBindingTrackId: maskTrackId, layerIndex: -1 });\n}\n\nfunction buildMaskRef (maskComponentId: string): Record<string, unknown> {\n return {\n isMask: false,\n reference: toDataPath(maskComponentId),\n inverted: false,\n };\n}\n\nfunction applyMaskReferenceToDescendants (\n items: GEItem[],\n componentById: Map<string, Record<string, unknown>>,\n parentItemId: string,\n maskComponentId: string,\n isAutoMask: boolean,\n maskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): void {\n function visit (targetParentId: string): void {\n for (const item of items) {\n if (item.parentId !== targetParentId) {\n continue;\n }\n\n if (item.type === 'shape' && item.name.endsWith('_mask')) {\n continue;\n }\n\n const componentRefs = item.components;\n\n if (componentRefs != null && componentRefs.length > 0) {\n const compRef = componentRefs[0];\n const component = componentById.get(compRef.id);\n\n if (component != null && component['renderer'] != null\n && shouldClaimMaskSlot(component['mask'] != null, maskSlotMeta.get(compRef.id), isAutoMask, maskArea)) {\n component['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(compRef.id, { isAutoMask, area: maskArea });\n }\n }\n\n visit(item.id);\n }\n }\n\n visit(parentItemId);\n}\n\n/**\n * Decide whether a propagating mask should take a renderer component's single\n * mask slot. Preserves the original arbitration: an empty slot is always taken;\n * an authored mask is never displaced; an auto mask yields to an authored mask\n * or to a tighter (smaller-area) auto mask.\n */\nfunction shouldClaimMaskSlot (\n hasExistingMask: boolean,\n existing: { isAutoMask: boolean; area: number } | undefined,\n isAutoMask: boolean,\n maskArea: number,\n): boolean {\n if (!hasExistingMask) {\n return true;\n }\n\n if (existing?.isAutoMask !== true) {\n return false;\n }\n\n if (!isAutoMask) {\n return true;\n }\n\n return maskArea < existing.area;\n}\n\nfunction hasClaimableRendererDescendants (\n items: GEItem[],\n componentById: Map<string, Record<string, unknown>>,\n parentItemId: string,\n isCurrentAutoMask: boolean,\n currentMaskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): boolean {\n function visit (targetParentId: string): boolean {\n for (const item of items) {\n if (item.parentId !== targetParentId) {\n continue;\n }\n\n const componentRefs = item.components;\n\n if (componentRefs != null && componentRefs.length > 0) {\n const compRef = componentRefs[0];\n const component = componentById.get(compRef.id);\n\n if (component != null && component['renderer'] != null\n && shouldClaimMaskSlot(component['mask'] != null, maskSlotMeta.get(compRef.id), isCurrentAutoMask, currentMaskArea)) {\n return true;\n }\n }\n\n if (visit(item.id)) {\n return true;\n }\n }\n\n return false;\n }\n\n return visit(parentItemId);\n}\n\nfunction computePointBounds (points: Array<{ x: number; y: number }>): { minX: number; minY: number; maxX: number; maxY: number } {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n\n for (const point of points) {\n minX = Math.min(minX, point.x);\n minY = Math.min(minY, point.y);\n maxX = Math.max(maxX, point.x);\n maxY = Math.max(maxY, point.y);\n }\n\n return { minX, minY, maxX, maxY };\n}\n\nfunction isMaskExactCrop (mask: IRMaskData, layer: IRLayerNode, width: number, height: number, lookup: MaskLayerLookup): boolean {\n const path = mask.path;\n\n if (path.points.length === 0) {\n return true;\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n const maskW = maxX - minX;\n const maskH = maxY - minY;\n\n if (mask.isAutoMask === true) {\n if (Math.abs(maskW - width) < 1 && Math.abs(maskH - height) < 1) {\n return true;\n }\n }\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n if (mask.isAutoMask !== true && layerIsParent && isSimpleRectMask(mask)) {\n const precompW = layer.asset?.width;\n const precompH = layer.asset?.height;\n\n if (precompW != null && precompH != null && precompW > 0 && precompH > 0) {\n if (minX <= 0 && minY <= 0 && maxX >= precompW && maxY >= precompH) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getMaskBounds (mask: IRMaskData): { cx: number; cy: number; width: number; height: number } {\n const path = mask.path;\n\n if (path.points.length === 0) {\n return { cx: 0, cy: 0, width: 0, height: 0 };\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n return {\n cx: (minX + maxX) / 2,\n cy: (minY + maxY) / 2,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nfunction isSimpleRectMask (mask: IRMaskData): boolean {\n const path = mask.path;\n\n return path.points.length === 4\n && path.inTangents.every(tangent => Math.abs(tangent.x) < 0.01 && Math.abs(tangent.y) < 0.01)\n && path.outTangents.every(tangent => Math.abs(tangent.x) < 0.01 && Math.abs(tangent.y) < 0.01);\n}\n\nfunction buildPolygonMaskComponent (\n maskComponentId: string,\n maskItemId: string,\n mask: IRMaskData,\n bounds: { cx: number; cy: number; width: number; height: number },\n ratio: number,\n): Record<string, unknown> {\n const path = mask.path;\n const customPoints: Array<{ x: number; y: number }> = [];\n const customEasingIns: Array<{ x: number; y: number }> = [];\n const customEasingOuts: Array<{ x: number; y: number }> = [];\n const customIndexes: Array<{ point: number; easingIn: number; easingOut: number }> = [];\n\n for (let idx = 0; idx < path.points.length; idx++) {\n const pt = path.points[idx];\n const ei = path.inTangents[idx];\n const eo = path.outTangents[idx];\n\n customPoints.push({\n x: roundNumber((pt.x - bounds.cx) * ratio, 4),\n y: roundNumber(-(pt.y - bounds.cy) * ratio, 4),\n });\n customEasingIns.push({\n x: roundNumber((ei?.x ?? 0) * ratio, 4),\n y: roundNumber(-(ei?.y ?? 0) * ratio, 4),\n });\n customEasingOuts.push({\n x: roundNumber((eo?.x ?? 0) * ratio, 4),\n y: roundNumber(-(eo?.y ?? 0) * ratio, 4),\n });\n customIndexes.push({ point: idx, easingIn: idx, easingOut: idx });\n }\n\n return {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: 0,\n dataType: 'ShapeComponent',\n points: customPoints,\n easingIns: customEasingIns,\n easingOuts: customEasingOuts,\n shapes: [{ close: path.closed, indexes: customIndexes }],\n fills: [{ type: 0, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: 0,\n strokeJoin: 0,\n renderer: { renderMode: 1 },\n mask: { isMask: true, alphaMaskEnabled: false },\n };\n}\n","import { toDataPath } from '../utils';\nimport type { ECSCollector } from '../types';\n\n/**\n * Remap GE mask references after ge2ir round-trip.\n *\n * ge2ir carries each masked component's raw `mask` object verbatim (via\n * `IRLayerNode.specific.effects.mask`), but `mask.reference.id` still points at the\n * ORIGINAL (GE1) mask-source component id, which ir2ge has regenerated. This\n * pass rewrites every target's `reference.id` from the stale GE1 id to the\n * freshly-minted GE2 component id, using the `GEComponentId → newId` map built\n * during the layer walk.\n *\n * Mirrors `applyParenting`: an IR-side reference (here the stale id stored in\n * data) → map → regenerated id → written in place. Mask SOURCE components have\n * no `reference` and are skipped. Dangling references (source not regenerated —\n * e.g. dropped by the null+sprite merger) have their `mask` removed so the GE\n * runtime doesn't choke on an id that resolves to nothing.\n */\nexport function applyGEMaskRemap (\n collector: ECSCollector,\n GEComponentIdToNewId: Record<string, string>,\n): void {\n for (const component of collector.components) {\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask == null) {\n continue;\n }\n\n const reference = mask['reference'] as { id?: string } | undefined;\n const oldId = reference?.id;\n\n if (oldId == null) {\n // Mask source (isMask:true) — no reference to remap.\n continue;\n }\n\n const newId = GEComponentIdToNewId[oldId];\n\n if (newId == null) {\n // Dangling: the referenced source was not regenerated. Drop the mask so\n // the target renders unmasked rather than referencing a nonexistent id.\n delete component['mask'];\n\n continue;\n }\n\n mask['reference'] = toDataPath(newId);\n }\n}\n","import type { DataPath, TimelineClipData } from '@galacean/effects-specification';\n\ninterface ProcessedItemRef {\n itemId: string;\n objectBindingTrackId: string;\n}\n\ninterface NormalizeVisibilityParams {\n items: Record<string, unknown>[];\n miscs: Record<string, unknown>[];\n processedItems: ProcessedItemRef[];\n /** Child item IDs whose lifetime is independent of the transform parent's window. */\n independentLifetimeChildItemIds?: Set<string>;\n roundNumber: (value: number, precision: number) => number;\n}\n\n/**\n * Normalize child visibility delays so children never appear before their parent.\n *\n * Topologically sorts items (parent-first) so by the time we process any child\n * its parent's delay/duration are already finalized. For children with an\n * independent lifetime, we instead advance the parent's delay/duration so the\n * child can render from its own start time (GE requires the parent to be active\n * for transform inheritance, but the parent-link relationship does not propagate\n * visibility). Only the ActivationTrack clip is updated; TransformTrack\n * keyframes are normalized to the original time range and would hold their\n * first frame value if the track started earlier.\n */\nexport function normalizeChildVisibilityByParentDelays ({\n items,\n miscs,\n processedItems,\n independentLifetimeChildItemIds = new Set<string>(),\n roundNumber,\n}: NormalizeVisibilityParams): void {\n const itemById = new Map<string, Record<string, unknown>>();\n\n for (const item of items) {\n itemById.set(item['id'] as string, item);\n }\n\n const processedByItemId = new Map<string, ProcessedItemRef>();\n\n for (const pi of processedItems) {\n processedByItemId.set(pi.itemId, pi);\n }\n\n const miscById = new Map<string, Record<string, unknown>>();\n\n for (const misc of miscs) {\n miscById.set(misc['id'] as string, misc);\n }\n\n // Phase 1: Advance transform parents so independent-lifetime children can\n // render from the child's own start time.\n advanceIndependentLifetimeParents(\n items,\n itemById,\n processedByItemId,\n miscById,\n independentLifetimeChildItemIds,\n roundNumber,\n );\n\n // Phase 2: Normalize precomp child visibility (unchanged).\n const effectiveDelayCache = new Map<string, number>();\n\n function getEffectiveDelay (itemId: string, visited = new Set<string>()): number {\n if (effectiveDelayCache.has(itemId)) {\n return effectiveDelayCache.get(itemId) as number;\n }\n if (visited.has(itemId)) {\n return 0;\n }\n\n visited.add(itemId);\n\n const item = itemById.get(itemId);\n\n if (item == null) {\n return 0;\n }\n\n let delay = (item['delay'] as number) ?? 0;\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId != null && parentId !== '') {\n delay = Math.max(delay, getEffectiveDelay(parentId, visited));\n }\n\n effectiveDelayCache.set(itemId, delay);\n\n return delay;\n }\n\n // Build topological order (parent-first) so that when processing any child,\n // its parent's delay/duration are already finalized.\n const sortedItems = topologicalSort(items, itemById);\n\n for (const item of sortedItems) {\n const itemId = item['id'] as string;\n const originalDelay = (item['delay'] as number) ?? 0;\n const originalDuration = (item['duration'] as number) ?? 0;\n const effectiveDelay = getEffectiveDelay(itemId);\n\n if (effectiveDelay <= originalDelay) {\n continue;\n }\n\n const parentId = item['parentId'] as string | undefined;\n const parentItem = (parentId != null && parentId !== '') ? itemById.get(parentId) : undefined;\n const parentDuration = parentItem ? ((parentItem['duration'] as number) ?? 0) : 0;\n\n // Distinguish time-contained children from global-time parent-link children:\n // Precomp children live entirely within the parent's time range (delay + duration <= parentDuration).\n // Parent-link children share the global time coordinate with their parent.\n const isPrecompChild = parentItem != null\n && (originalDelay + originalDuration) <= parentDuration + 0.001;\n\n let newDuration: number;\n\n if (isPrecompChild) {\n // Precomp child: keep duration unchanged (clamped to parent boundary).\n newDuration = Math.min(originalDuration, parentDuration - originalDelay);\n } else {\n // Parent-link child: trim the invisible portion before effectiveDelay.\n const timeDiff = effectiveDelay - originalDelay;\n\n newDuration = originalDuration - timeDiff;\n }\n\n if (newDuration <= 0) {\n newDuration = 0.0001;\n }\n\n item['delay'] = roundNumber(effectiveDelay, 4);\n item['duration'] = roundNumber(newDuration, 4);\n\n syncTimelineClips(itemId, effectiveDelay, newDuration, processedByItemId, miscById, roundNumber);\n }\n}\n\nfunction advanceIndependentLifetimeParents (\n items: Record<string, unknown>[],\n itemById: Map<string, Record<string, unknown>>,\n processedByItemId: Map<string, ProcessedItemRef>,\n miscById: Map<string, Record<string, unknown>>,\n independentLifetimeChildItemIds: Set<string>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n if (independentLifetimeChildItemIds.size === 0) {\n return;\n }\n\n // Collect the maximum advance (head) and extension (tail) needed per parent.\n const parentAdvanceMap = new Map<string, number>();\n const parentExtendMap = new Map<string, number>();\n\n for (const item of items) {\n if (!independentLifetimeChildItemIds.has(item['id'] as string)) {\n continue;\n }\n\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId == null || parentId === '') {\n continue;\n }\n\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const childDelay = (item['delay'] as number) ?? 0;\n const childDuration = (item['duration'] as number) ?? 0;\n const parentDelay = (parentItem['delay'] as number) ?? 0;\n const parentDuration = (parentItem['duration'] as number) ?? 0;\n\n if (childDelay < parentDelay) {\n const advance = parentDelay - childDelay;\n const existing = parentAdvanceMap.get(parentId) ?? 0;\n\n if (advance > existing) {\n parentAdvanceMap.set(parentId, advance);\n }\n }\n\n const childEnd = childDelay + childDuration;\n const parentEnd = parentDelay + parentDuration;\n\n if (childEnd > parentEnd + 0.001) {\n const extend = childEnd - parentEnd;\n const existing = parentExtendMap.get(parentId) ?? 0;\n\n if (extend > existing) {\n parentExtendMap.set(parentId, extend);\n }\n }\n }\n\n // Merge all parent IDs that need adjustment.\n // Materialize Map iterators: loose SWC array-spread lowering assumes arrays.\n const allParentIds = new Set([\n ...Array.from(parentAdvanceMap.keys()),\n ...Array.from(parentExtendMap.keys()),\n ]);\n\n // Apply adjustments: update parent item delay/duration and sync ActivationTrack clips.\n for (const parentId of allParentIds) {\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const advance = parentAdvanceMap.get(parentId) ?? 0;\n const extend = parentExtendMap.get(parentId) ?? 0;\n const parentDelay = (parentItem['delay'] as number) ?? 0;\n const parentDuration = (parentItem['duration'] as number) ?? 0;\n const newDelay = roundNumber(parentDelay - advance, 4);\n const newDuration = roundNumber(parentDuration + advance + extend, 4);\n\n parentItem['delay'] = newDelay;\n parentItem['duration'] = newDuration;\n\n // Only sync ActivationTrack — TransformTrack keyframes are normalized to\n // the original time range and will hold their last frame value when the\n // track extends beyond the original duration.\n const processed = processedByItemId.get(parentId);\n\n if (processed != null) {\n const obt = miscById.get(processed.objectBindingTrackId);\n\n if (obt != null && Array.isArray(obt['children'])) {\n for (const childRef of obt['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack?.['dataType'] === 'ActivationTrack' && Array.isArray(childTrack['clips'])) {\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = newDelay;\n clip.duration = newDuration;\n }\n }\n }\n }\n }\n }\n}\n\n/**\n * Topological sort: parents are processed before their children.\n * Falls back to original order for items without parent relationships.\n */\nfunction topologicalSort (\n items: Record<string, unknown>[],\n itemById: Map<string, Record<string, unknown>>,\n): Record<string, unknown>[] {\n const sorted: Record<string, unknown>[] = [];\n const visited = new Set<string>();\n\n function visit (item: Record<string, unknown>): void {\n const itemId = item['id'] as string;\n\n if (visited.has(itemId)) {\n return;\n }\n\n visited.add(itemId);\n\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId != null && parentId !== '') {\n const parentItem = itemById.get(parentId);\n\n if (parentItem != null) {\n visit(parentItem);\n }\n }\n\n sorted.push(item);\n }\n\n for (const item of items) {\n visit(item);\n }\n\n return sorted;\n}\n\nfunction syncTimelineClips (\n itemId: string,\n delay: number,\n duration: number,\n processedByItemId: Map<string, ProcessedItemRef>,\n miscById: Map<string, Record<string, unknown>>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n const processedItem = processedByItemId.get(itemId);\n\n if (processedItem == null) {\n return;\n }\n\n const obt = miscById.get(processedItem.objectBindingTrackId);\n\n if (obt == null || !Array.isArray(obt['children'])) {\n return;\n }\n\n for (const childRef of obt['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack == null || !Array.isArray(childTrack['clips'])) {\n continue;\n }\n\n const trackType = childTrack['dataType'] as string;\n\n if (trackType !== 'ActivationTrack' && trackType !== 'TransformTrack' && trackType !== 'SpriteColorTrack') {\n continue;\n }\n\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = roundNumber(delay, 4);\n clip.duration = roundNumber(duration, 4);\n }\n }\n}\n","import type { IRComposition } from '@vvfx/animation-ir';\nimport type { ECSCollector, ProcessedItem } from '../types';\nimport { applyParenting } from './parenting';\nimport { applyMasks, type MaskLayerLookup } from './mask';\nimport { applyGEMaskRemap } from './ge-mask-remap';\nimport { normalizeChildVisibilityByParentDelays } from './visibility';\nimport { hasIndependentParentLifetime } from '../ir/parent-link';\nimport { roundNumber } from '../utils';\n\nexport type { MaskLayerLookup } from './mask';\n\n/**\n * Post-emit state populated by the unified pipeline's per-layer walk.\n * All fields beyond `collector` + `processedItems` are optional — each\n * post-process step is gated on the presence of the data it needs, not\n * on `ir.source`. Steps that only apply to certain sources naturally\n * no-op when the relevant data is absent (e.g. dsl IR has no masks).\n */\nexport interface PostProcessState {\n collector: ECSCollector;\n processedItems: ProcessedItem[];\n /** Per-layer lookups consumed by the shared mask post-process. */\n maskLookup?: MaskLayerLookup;\n layerToItemId?: Record<number, string>;\n parentIndexSet?: Set<number>;\n ratio?: number;\n width?: number;\n height?: number;\n frameRate?: number;\n /** GE1→GE2 component-id map for remapping ge2ir mask passthrough references. */\n GEComponentIdToNewId?: Record<string, string>;\n}\n\n/**\n * Run post-emit mutations on the collector before `assembleScene`.\n * Order: parenting → mask → visibility. Each step is gated on whether\n * the pipeline supplied the required tracking state.\n */\nexport function applyPostProcess (ir: IRComposition, state: PostProcessState): void {\n applyParentingStep(ir, state);\n applySharedMaskPostProcess(ir, state);\n applyGEMaskRemapStep(ir, state);\n applyVisibilityStep(ir, state);\n}\n\nfunction applyGEMaskRemapStep (ir: IRComposition, state: PostProcessState): void {\n // Only Effects-sourced compositions carry passthrough mask references that need\n // remapping. Lottie/dsl masks are built with correct ids by applyMasks and\n // must not be touched (their reference ids are absent from the GE map, so a\n // blind remap would wrongly delete them).\n if (ir.source !== 'effects' || state.GEComponentIdToNewId == null) {\n return;\n }\n\n applyGEMaskRemap(state.collector, state.GEComponentIdToNewId);\n}\n\nfunction applySharedMaskPostProcess (ir: IRComposition, state: PostProcessState): void {\n if (state.maskLookup == null\n || state.ratio == null\n || state.width == null\n || state.height == null\n || state.frameRate == null\n ) {\n return;\n }\n\n applyMasks(\n ir,\n state.collector,\n state.processedItems,\n state.ratio,\n state.width,\n state.height,\n state.frameRate,\n state.maskLookup,\n );\n}\n\nfunction applyParentingStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, layerToItemId, ratio, width, height } = state;\n\n if (layerToItemId == null || ratio == null || width == null || height == null) {\n return;\n }\n\n applyParenting(ir.layers, collector.items, layerToItemId, ratio, width, height);\n}\n\nfunction applyVisibilityStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, processedItems, layerToItemId } = state;\n\n if (layerToItemId == null) {\n return;\n }\n\n const independentLifetimeChildItemIds = new Set<string>();\n\n for (const layer of ir.layers) {\n if (hasIndependentParentLifetime(layer)) {\n const itemId = layerToItemId[layer.index];\n\n if (itemId != null) {\n independentLifetimeChildItemIds.add(itemId);\n }\n }\n }\n\n normalizeChildVisibilityByParentDelays({\n items: collector.items as unknown as Record<string, unknown>[],\n miscs: collector.miscs,\n processedItems,\n independentLifetimeChildItemIds,\n roundNumber,\n });\n}\n","const OMIT = Symbol('omit-json-value');\n\ntype JsonValue = null | string | boolean | number | JsonValue[] | { [key: string]: JsonValue };\n\n/** Return a detached value whose runtime shape is stable across JSON persistence. */\nexport function normalizeJsonValue<T> (value: T): T {\n const normalized = normalize(value, '$', false);\n\n if (normalized === OMIT) {\n throw new TypeError('[ge-ir] A top-level JSON value cannot be undefined.');\n }\n\n return normalized as T;\n}\n\nfunction normalize (value: unknown, path: string, inArray: boolean): JsonValue | typeof OMIT {\n if (value === undefined) {\n return inArray ? null : OMIT;\n }\n if (value === null || typeof value === 'string' || typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n throw new TypeError(`[ge-ir] Non-finite number at ${path} is not JSON-compatible.`);\n }\n\n return Object.is(value, -0) ? 0 : value;\n }\n if (Array.isArray(value)) {\n return value.map((item, index) => {\n const normalizedItem = normalize(item, `${path}[${index}]`, true);\n\n if (normalizedItem === OMIT) {\n throw new TypeError(`[ge-ir] Array item at ${path}[${index}] could not be normalized.`);\n }\n\n return normalizedItem;\n });\n }\n if (typeof value !== 'object') {\n throw new TypeError(`[ge-ir] ${typeof value} at ${path} is not JSON-compatible.`);\n }\n\n const prototype = Reflect.getPrototypeOf(value);\n\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(`[ge-ir] Non-plain object at ${path} is not JSON-compatible.`);\n }\n\n const result: Record<string, JsonValue> = {};\n\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n const normalizedItem = normalize(item, `${path}.${key}`, false);\n\n if (normalizedItem !== OMIT) {\n result[key] = normalizedItem;\n }\n }\n\n return result;\n}\n","/**\n * Unified IR → GE scene generation pipeline. All IR sources (lottie, dsl,\n * future) are processed here. Normalized animation semantics select the GE\n * lowering plan; source-specific payloads are consulted only for fidelity\n * restoration such as GE hierarchy, mask and precomp graphs.\n */\n\nimport { validateIRCompositionOrThrow, type IRComposition, type IRLayerNode } from '@vvfx/animation-ir';\nimport type { DataPath, JSONScene } from '@galacean/effects-specification';\nimport { getEffectsCompositionSpecific, getEffectsLayerSpecific } from '../../passthrough';\nimport { get2dTo3dRatio } from '../../shared/coordinate';\nimport { processNullLayer, processParentLayer, processPrecompLayer, processVisualLayer } from '../builders/layer';\nimport { assembleScene } from './scene-assembly';\nimport { applyPostProcess } from '../post-process';\nimport { normalizeJsonValue } from '../../shared/json-value';\nimport type { ECSCollector, LayerProcessingContext, ProcessedItem } from '../types';\n\n/**\n * Convert an IR composition to a GE JSONScene.\n *\n * All IR sources (lottie, dsl, future) go through this single unified\n * pipeline. Normalized animation semantics select the GE lowering plan;\n * source-specific payloads may preserve authored GE hierarchy or restore\n * mask and precomp graphs.\n *\n * The optional `duration` arg is a caller override; lottie2ge currently passes\n * the duration computed from the raw json upstream. When omitted, the\n * canonical assembler derives it from `(outPoint - inPoint) / frameRate`.\n */\nexport function convertIRToGE (\n ir: IRComposition,\n duration?: number,\n): JSONScene {\n validateIRCompositionOrThrow(ir);\n\n const { width, height, frameRate } = ir;\n const ratio = get2dTo3dRatio(width, height);\n\n const collector: ECSCollector = {\n images: [],\n components: [],\n items: [],\n textures: [],\n miscs: [],\n };\n const processedItems: ProcessedItem[] = [];\n const layerToItemId: Record<number, string> = {};\n const layerToComponentId: Record<number, string> = {};\n const textureCache = new Map<string, DataPath>();\n\n const parentIndexSet = new Set<number>();\n\n for (const layer of ir.layers) {\n if (layer.parent != null) {\n parentIndexSet.add(layer.parent.index);\n }\n }\n\n const workingIR: IRComposition = {\n ...ir,\n layers: getLayersWithExtendedParentEndFrames(ir.layers, parentIndexSet),\n };\n\n const ctx: LayerProcessingContext = {\n ir: workingIR,\n collector,\n processedItems,\n layerToItemId,\n layerToComponentId,\n textureCache,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n };\n\n for (const layer of workingIR.layers) {\n processLayer(layer, ctx);\n }\n\n // Build GE1-component-id → regenerated-component-id map for mask reference\n // remapping (ge2ir round-trip). Keyed by the original GE component id that\n // ge2ir stored in specific.effects; value is the component id this layer minted.\n const GEComponentIdToNewId: Record<string, string> = {};\n\n for (const layer of workingIR.layers) {\n const GEComponentId = getEffectsLayerSpecific(workingIR, layer)?.sourceComponentId;\n const newId = layerToComponentId[layer.index];\n\n if (GEComponentId != null && newId != null) {\n GEComponentIdToNewId[GEComponentId] = newId;\n }\n }\n\n applyPostProcess(workingIR, {\n collector,\n processedItems,\n layerToItemId,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n GEComponentIdToNewId,\n maskLookup: {\n getItemId: idx => layerToItemId[idx],\n getComponentId: idx => layerToComponentId[idx],\n isParentLayer: idx => parentIndexSet.has(idx),\n },\n });\n\n collector.items.reverse();\n processedItems.reverse();\n\n return normalizeJsonValue(mergePreservedPrecompScene(\n assembleScene(workingIR, collector, processedItems, duration) as unknown as Record<string, unknown>,\n workingIR,\n )) as unknown as JSONScene;\n}\n\nfunction processLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n if (layer.type === 'precomp') {\n if (hasGEPrecompMetadata(ctx.ir, layer)) {\n processPrecompLayer(layer, ctx);\n } else {\n processNullLayer(layer, ctx);\n }\n } else if (layer.type === 'null') {\n processNullLayer(layer, ctx);\n } else if (ctx.parentIndexSet.has(layer.index)) {\n processParentLayer(layer, ctx);\n } else {\n processVisualLayer(layer, ctx);\n }\n}\n\nfunction hasGEPrecompMetadata (ir: IRComposition, layer: IRLayerNode): boolean {\n const specific = getEffectsLayerSpecific(ir, layer);\n\n return specific?.precompRefId != null || specific?.precompContent != null;\n}\n\n/**\n * Extend parent layers' endFrame to cover independent child lifetimes.\n *\n * In Lottie, child layers (linked via layer.parent) inherit the parent's transform\n * even after the parent becomes invisible. GE requires the parent item to be active\n * for transform inheritance to work, so we extend the parent's endFrame to cover\n * the full lifetime of children whose lifetime is independent.\n *\n * Keyframes beyond the extended endFrame are NOT included — they represent animation\n * that never plays in Lottie (layer is invisible and has no child needing it).\n */\nfunction getLayersWithExtendedParentEndFrames (layers: IRLayerNode[], parentIndexSet: Set<number>): IRLayerNode[] {\n const clonedLayers = layers.map(layer => ({\n ...layer,\n time: { ...layer.time },\n }));\n\n for (const layer of clonedLayers) {\n if (!parentIndexSet.has(layer.index)) {\n continue;\n }\n\n let maxEnd = layer.time.endFrame;\n\n for (const child of clonedLayers) {\n if (child.parent?.index === layer.index && child.parent.lifetimeMode === 'independent') {\n if (child.time.endFrame > maxEnd) {\n maxEnd = child.time.endFrame;\n }\n }\n }\n\n if (maxEnd > layer.time.endFrame) {\n layer.time.endFrame = maxEnd;\n }\n }\n\n return clonedLayers;\n}\n\nfunction mergePreservedPrecompScene (\n generated: Record<string, unknown>,\n ir: IRComposition,\n): Record<string, unknown> {\n const specific = getEffectsCompositionSpecific(ir);\n const sourceScene = specific?.sourceScene;\n\n if (sourceScene == null) {\n return generated;\n }\n\n const result = { ...generated };\n const sourceCompositionId = specific?.sourceCompositionId;\n const excluded = collectRootCompositionIds(sourceScene, sourceCompositionId);\n const pools = [\n 'images',\n 'fonts',\n 'plugins',\n 'components',\n 'geometries',\n 'materials',\n 'items',\n 'shaders',\n 'bins',\n 'textures',\n 'animations',\n 'miscs',\n ];\n\n for (const pool of pools) {\n result[pool] = mergePool(\n asArray(generated[pool]),\n asArray(sourceScene[pool]).filter(entry => !isExcludedPoolEntry(pool, entry, excluded)),\n );\n }\n\n result['compositions'] = mergePool(\n asRecordArray(generated['compositions']),\n asRecordArray(sourceScene['compositions']).filter(comp => comp['id'] !== sourceCompositionId),\n );\n\n return result;\n}\n\ninterface ExcludedRootCompositionIds {\n components: Set<string>;\n items: Set<string>;\n miscs: Set<string>;\n}\n\nfunction collectRootCompositionIds (\n sourceScene: Record<string, unknown>,\n sourceCompositionId: string | undefined,\n): ExcludedRootCompositionIds {\n const excluded: ExcludedRootCompositionIds = {\n components: new Set(),\n items: new Set(),\n miscs: new Set(),\n };\n\n if (sourceCompositionId == null) {\n return excluded;\n }\n\n const components = asRecordArray(sourceScene['components']);\n const items = asRecordArray(sourceScene['items']);\n const miscs = asRecordArray(sourceScene['miscs']);\n const componentById = indexById(components);\n const itemById = indexById(items);\n const miscById = indexById(miscs);\n const rootComposition = asRecordArray(sourceScene['compositions'])\n .find(composition => composition['id'] === sourceCompositionId);\n\n if (rootComposition == null) {\n return excluded;\n }\n\n for (const componentRef of asDataPathArray(rootComposition['components'])) {\n const componentId = componentRef.id;\n const component = componentById.get(componentId);\n\n if (component == null) {\n continue;\n }\n\n excluded.components.add(componentId);\n\n for (const itemRef of asDataPathArray(component['items'])) {\n collectItemAndOwnedComponents(itemRef.id, itemById, excluded);\n }\n\n const timelineAssetId = readDataPathId(component['timelineAsset']);\n\n if (timelineAssetId != null) {\n collectMiscGraph(timelineAssetId, miscById, excluded);\n }\n\n for (const binding of asRecordArray(component['sceneBindings'])) {\n const trackId = readDataPathId(binding['key']);\n\n if (trackId != null) {\n collectMiscGraph(trackId, miscById, excluded);\n }\n }\n }\n\n return excluded;\n}\n\nfunction collectItemAndOwnedComponents (\n itemId: string,\n itemById: Map<string, Record<string, unknown>>,\n excluded: ExcludedRootCompositionIds,\n): void {\n const item = itemById.get(itemId);\n\n if (item == null || excluded.items.has(itemId)) {\n return;\n }\n\n excluded.items.add(itemId);\n\n for (const componentRef of asDataPathArray(item['components'])) {\n excluded.components.add(componentRef.id);\n }\n}\n\nfunction collectMiscGraph (\n miscId: string,\n miscById: Map<string, Record<string, unknown>>,\n excluded: ExcludedRootCompositionIds,\n): void {\n if (excluded.miscs.has(miscId)) {\n return;\n }\n\n const misc = miscById.get(miscId);\n\n if (misc == null) {\n return;\n }\n\n excluded.miscs.add(miscId);\n\n for (const childRef of asDataPathArray(misc['tracks'])) {\n collectMiscGraph(childRef.id, miscById, excluded);\n }\n\n for (const childRef of asDataPathArray(misc['children'])) {\n collectMiscGraph(childRef.id, miscById, excluded);\n }\n\n for (const clip of asRecordArray(misc['clips'])) {\n const assetId = readDataPathId(clip['asset']);\n\n if (assetId != null) {\n collectMiscGraph(assetId, miscById, excluded);\n }\n }\n}\n\nfunction isExcludedPoolEntry (\n pool: string,\n entry: unknown,\n excluded: ExcludedRootCompositionIds,\n): boolean {\n if (!isRecord(entry)) {\n return false;\n }\n\n const id = entry['id'];\n\n if (typeof id !== 'string') {\n return false;\n }\n\n if (pool === 'components') {\n return excluded.components.has(id);\n }\n if (pool === 'items') {\n return excluded.items.has(id);\n }\n if (pool === 'miscs') {\n return excluded.miscs.has(id);\n }\n\n return false;\n}\n\nfunction mergePool (\n generated: unknown[],\n preserved: unknown[],\n): unknown[] {\n const result = [...generated];\n const seen = new Set<string>();\n\n for (const entry of result) {\n const key = poolEntryKey(entry);\n\n if (key != null) {\n seen.add(key);\n }\n }\n\n for (const entry of preserved) {\n const key = poolEntryKey(entry);\n\n if (key != null) {\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n }\n\n result.push(cloneJson(entry));\n }\n\n return result;\n}\n\nfunction poolEntryKey (entry: unknown): string | undefined {\n const id = isRecord(entry) ? entry['id'] : undefined;\n\n if (typeof id === 'string') {\n return `id:${id}`;\n }\n\n return `json:${JSON.stringify(entry)}`;\n}\n\nfunction asArray (value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction asRecordArray (value: unknown): Record<string, unknown>[] {\n return Array.isArray(value)\n ? value.filter((entry): entry is Record<string, unknown> => entry != null && typeof entry === 'object' && !Array.isArray(entry))\n : [];\n}\n\nfunction asDataPathArray (value: unknown): Array<{ id: string }> {\n return Array.isArray(value)\n ? value.filter((entry): entry is { id: string } => isRecord(entry) && typeof entry['id'] === 'string')\n : [];\n}\n\nfunction readDataPathId (value: unknown): string | undefined {\n return isRecord(value) && typeof value['id'] === 'string' ? value['id'] : undefined;\n}\n\nfunction indexById (entries: Record<string, unknown>[]): Map<string, Record<string, unknown>> {\n const map = new Map<string, Record<string, unknown>>();\n\n for (const entry of entries) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n map.set(id, entry);\n }\n }\n\n return map;\n}\n\nfunction cloneJson<T> (value: T): T {\n return normalizeJsonValue(value);\n}\n\nfunction isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import type { GEPoolIndex, GERecord } from '../../shared/types';\n\nexport function buildPoolIndex (pool: GERecord[] | undefined): GEPoolIndex {\n const map: GEPoolIndex = new Map();\n\n if (!Array.isArray(pool)) {\n return map;\n }\n\n for (const entry of pool) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n map.set(id, entry);\n }\n }\n\n return map;\n}\n\nexport function resolveDataPath (\n pool: GEPoolIndex,\n ref: unknown,\n): GERecord | undefined {\n if (ref == null || typeof ref !== 'object') {\n return undefined;\n }\n\n const id = (ref as GERecord)['id'];\n\n if (typeof id !== 'string') {\n return undefined;\n }\n\n return pool.get(id);\n}\n\nexport function resolveDataPathId (ref: unknown): string | undefined {\n if (ref == null || typeof ref !== 'object') {\n return undefined;\n }\n\n const id = (ref as GERecord)['id'];\n\n return typeof id === 'string' ? id : undefined;\n}\n","import { IREndBehavior } from '@vvfx/animation-ir';\nimport type { IREndBehavior as IREndBehaviorType } from '@vvfx/animation-ir';\n\nexport function reverseEndBehavior (GEBehavior: number | undefined): IREndBehaviorType | undefined {\n if (GEBehavior == null) {\n return undefined;\n }\n\n switch (GEBehavior) {\n case 0:\n return IREndBehavior.Destroy;\n case 2:\n return IREndBehavior.Forward;\n case 4:\n return IREndBehavior.Freeze;\n case 5:\n return IREndBehavior.Restart;\n default:\n return undefined;\n }\n}\n\nexport function reverseCompositionEndBehavior (GEBehavior: number | undefined): IREndBehaviorType | undefined {\n return reverseEndBehavior(GEBehavior);\n}\n","import type { IRColor } from '@vvfx/animation-ir';\nimport { get2dTo3dRatio } from '../shared/coordinate';\nimport { buildPoolIndex, resolveDataPath, resolveDataPathId } from './pool/pool';\nimport { reverseCompositionEndBehavior } from './reverse/end-behavior';\nimport type { GE2IROptions, GESceneContext } from './types';\n\nexport function buildSceneContext (scene: Record<string, unknown>, options: GE2IROptions): GESceneContext {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(c => c['id'] === compositionId);\n\n if (composition == null) {\n throw new Error(`[ge2ir] composition not found for id: ${compositionId}`);\n }\n\n const previewSize = composition['previewSize'] as [number, number] | undefined;\n const width = previewSize?.[0] ?? 512;\n const height = previewSize?.[1] ?? 512;\n const duration = composition['duration'] as number ?? 1;\n const frameRate = options.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n\n const inPoint = 0;\n // GE durations are expressed in seconds and are not guaranteed to land on\n // an integer frame. Preserve the fractional frame so GE → IR → GE does not\n // shorten or extend the composition at the tail.\n const outPoint = duration * frameRate;\n\n const endBehavior = reverseCompositionEndBehavior(composition['endBehavior'] as number | undefined);\n\n let backgroundColor: IRColor | undefined;\n const bg = composition['background'] as Record<string, unknown> | undefined;\n\n if (bg != null) {\n const color = bg['color'] as number[] | undefined;\n\n if (color != null && color.length >= 4) {\n backgroundColor = [color[0], color[1], color[2], color[3]];\n }\n }\n\n const compositionName = (composition['name'] as string) ?? 'Untitled';\n\n const items = scene['items'] as Record<string, unknown>[] | undefined;\n const components = scene['components'] as Record<string, unknown>[] | undefined;\n const miscs = scene['miscs'] as Record<string, unknown>[] | undefined;\n const images = scene['images'] as Record<string, unknown>[] | undefined;\n const textures = scene['textures'] as Record<string, unknown>[] | undefined;\n\n const itemById = buildPoolIndex(items);\n const componentById = buildPoolIndex(components);\n const miscById = buildPoolIndex(miscs);\n const imageById = buildPoolIndex(images);\n const textureById = buildPoolIndex(textures);\n\n const itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);\n\n return {\n compositionId,\n width,\n height,\n frameRate,\n ratio,\n duration,\n inPoint,\n outPoint,\n compositionName,\n endBehavior,\n backgroundColor,\n itemById,\n componentById,\n miscById,\n imageById,\n textureById,\n itemIdToTrackId,\n };\n}\n\nfunction buildSceneBindings (\n componentById: Map<string, Record<string, unknown>>,\n miscById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Map<string, string> {\n const map = new Map<string, string>();\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return map;\n }\n\n const bindings = compositionComponent['sceneBindings'] as Array<{\n key: { id: string };\n value: { id: string };\n }> | undefined;\n\n if (bindings == null) {\n return map;\n }\n\n for (const binding of bindings) {\n const trackId = resolveDataPathId(binding.key);\n const itemId = resolveDataPathId(binding.value);\n\n if (trackId != null && itemId != null) {\n map.set(itemId, trackId);\n }\n }\n\n return map;\n}\n\nfunction findCompositionComponent (\n componentById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const compRefs = composition['components'] as Array<{ id: string }> | undefined;\n\n if (compRefs == null || compRefs.length === 0) {\n return undefined;\n }\n\n for (const ref of compRefs) {\n const component = resolveDataPath(componentById, ref);\n\n if (component?.['dataType'] === 'CompositionComponent') {\n return component;\n }\n }\n\n return undefined;\n}\n\nexport function getCompositionItemIds (scene: Record<string, unknown>): string[] {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(c => c['id'] === compositionId);\n\n if (composition == null) {\n return [];\n }\n\n const componentById = buildPoolIndex(scene['components'] as Record<string, unknown>[] | undefined);\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return [];\n }\n\n const itemRefs = compositionComponent['items'] as Array<{ id: string }> | undefined;\n\n if (itemRefs == null) {\n return [];\n }\n\n return itemRefs.map(ref => ref.id).filter((id): id is string => typeof id === 'string');\n}\n","import { resolveDataPath, resolveDataPathId } from '../pool/pool';\nimport type { GESceneContext } from '../types';\n\nexport interface TimelineData {\n delay: number;\n duration: number;\n endBehavior: number;\n transformAsset?: Record<string, unknown>;\n spriteColorAsset?: Record<string, unknown>;\n}\n\nexport function parseTimeline (\n itemId: string,\n ctx: GESceneContext,\n): TimelineData | undefined {\n const trackId = ctx.itemIdToTrackId.get(itemId);\n\n if (trackId == null) {\n return undefined;\n }\n\n const objectBindingTrack = ctx.miscById.get(trackId);\n\n if (objectBindingTrack == null) {\n return undefined;\n }\n\n const childRefs = objectBindingTrack['children'] as Array<{ id: string }> | undefined;\n\n if (childRefs == null) {\n return undefined;\n }\n\n let delay = 0;\n let duration = 0;\n let endBehavior = 0;\n let transformAsset: Record<string, unknown> | undefined;\n let spriteColorAsset: Record<string, unknown> | undefined;\n\n for (const ref of childRefs) {\n const childTrackId = resolveDataPathId(ref);\n\n if (childTrackId == null) {\n continue;\n }\n\n const childTrack = ctx.miscById.get(childTrackId);\n\n if (childTrack == null) {\n continue;\n }\n\n const dataType = childTrack['dataType'] as string;\n const clips = childTrack['clips'] as Array<Record<string, unknown>> | undefined;\n\n if (clips == null || clips.length === 0) {\n continue;\n }\n\n const clip = clips[0];\n\n if (dataType === 'ActivationTrack') {\n delay = (clip['start'] as number) ?? 0;\n duration = (clip['duration'] as number) ?? 0;\n endBehavior = (clip['endBehavior'] as number) ?? 0;\n } else if (dataType === 'TransformTrack') {\n const assetRef = clip['asset'] as { id: string } | undefined;\n\n if (assetRef != null) {\n transformAsset = resolveDataPath(ctx.miscById, assetRef);\n }\n } else if (dataType === 'SpriteColorTrack') {\n const assetRef = clip['asset'] as { id: string } | undefined;\n\n if (assetRef != null) {\n spriteColorAsset = resolveDataPath(ctx.miscById, assetRef);\n }\n }\n }\n\n return { delay, duration, endBehavior, transformAsset, spriteColorAsset };\n}\n","import { DEFAULT_CAMERA_Z, get2dTo3dRatio } from '../../shared/coordinate';\n\nexport function convert3dTo2dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const effectiveRatio = Math.abs(adaptRatioZ) > 1e-10 ? ratio * adaptRatioZ : ratio;\n const px = x / effectiveRatio + width / 2;\n const py = height / 2 - y / effectiveRatio;\n\n return [px, py, z];\n}\n","import type { IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport { convert3dTo2dPoint } from '../reverse/coordinate';\nimport type { GESceneContext } from '../types';\n\nexport function parseStaticTransform (\n itemTransform: Record<string, unknown>,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const position = itemTransform['position'] as { x: number; y: number; z: number } | undefined;\n\n if (position != null) {\n const pos2d = convert3dTo2dPoint(position.x, position.y, position.z ?? 0, ctx.width, ctx.height);\n\n channels.position = { keyframed: false, value: pos2d };\n }\n\n const scale = itemTransform['scale'] as { x: number; y: number; z: number } | undefined;\n\n if (scale != null) {\n const sv: IRVec3 = [scale.x ?? 1, scale.y ?? 1, scale.z ?? 1];\n const isDefault = Math.abs(sv[0] - 1) < 1e-6 && Math.abs(sv[1] - 1) < 1e-6 && Math.abs(sv[2] - 1) < 1e-6;\n\n if (!isDefault) {\n channels.scale = { keyframed: false, value: sv };\n }\n }\n\n const eulerHint = itemTransform['eulerHint'] as { x: number; y: number; z: number } | undefined;\n\n if (eulerHint != null) {\n const x = Math.abs(eulerHint.x) > 1e-6 ? { keyframed: false as const, value: eulerHint.x } : undefined;\n const y = Math.abs(eulerHint.y) > 1e-6 ? { keyframed: false as const, value: eulerHint.y } : undefined;\n const z = Math.abs(eulerHint.z) > 1e-6 ? { keyframed: false as const, value: eulerHint.z } : undefined;\n\n if (x != null || y != null || z != null) {\n channels.rotation = {\n ...(x != null && { x }),\n ...(y != null && { y }),\n ...(z != null && { z }),\n };\n }\n }\n\n return channels;\n}\n","import type { IRBezierHandle, IRKeyframe } from '@vvfx/animation-ir';\n\nfunction inverseLerp (a: number, b: number, value: number): number {\n const range = b - a;\n\n if (Math.abs(range) < 1e-10) {\n return 0;\n }\n\n return (value - a) / range;\n}\n\nexport function parseBezierKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): IRKeyframe<number>[] {\n if (curves.length === 0) {\n return [];\n }\n\n const segments = extractSegments(curves);\n\n if (segments.length === 0) {\n return [];\n }\n\n const frames = endFrame - startFrame;\n const keyframes: IRKeyframe<number>[] = [];\n\n const firstSeg = segments[0];\n const firstT = firstSeg[0];\n const firstV = firstSeg[1];\n\n if (segments.length > 0) {\n const hasPrependedHold = segments.length >= 2\n && Math.abs(firstV - segments[0][7]) < 1e-6\n && Math.abs(firstV - firstSeg[1]) < 1e-6\n && Math.abs(firstT) < 1e-10;\n\n if (hasPrependedHold && Math.abs(firstSeg[6] - segments[1]?.[0]) < 1e-6 && Math.abs(firstV - firstSeg[7]) < 1e-6) {\n segments.shift();\n }\n }\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const t0 = seg[0];\n const v0 = seg[1];\n const outCpX = seg[2];\n const outCpY = seg[3];\n const t1 = seg[6];\n const v1 = seg[7];\n\n const frameTime = t0 * frames + startFrame;\n\n const isHold = Math.abs(v0 - v1) < 1e-6\n && Math.abs(outCpY - v0) < 1e-6\n && Math.abs(seg[5] - v0) < 1e-6;\n\n const outTangent: IRBezierHandle = {\n x: inverseLerp(t0, t1, outCpX),\n y: inverseLerp(v0, v1, outCpY),\n };\n\n if (i === 0) {\n keyframes.push({\n frame: frameTime,\n value: v0,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n } else {\n const prevSeg = segments[i - 1];\n const prevInCpX = prevSeg[4];\n const prevInCpY = prevSeg[5];\n const prevT0 = prevSeg[0];\n const prevV0 = prevSeg[1];\n const prevT1 = prevSeg[6];\n const prevV1 = prevSeg[7];\n\n const inTangent: IRBezierHandle = {\n x: inverseLerp(prevT0, prevT1, prevInCpX),\n y: inverseLerp(prevV0, prevV1, prevInCpY),\n };\n\n keyframes.push({\n frame: frameTime,\n value: v0,\n inTangent,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n const lastT1 = lastSeg[6];\n const lastV1 = lastSeg[7];\n const lastFrameTime = lastT1 * frames + startFrame;\n\n const lastInTangent: IRBezierHandle = {\n x: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[4]),\n y: inverseLerp(lastSeg[1], lastSeg[7], lastSeg[5]),\n };\n\n keyframes.push({\n frame: lastFrameTime,\n value: lastV1,\n inTangent: lastInTangent,\n });\n\n return keyframes;\n}\n\nfunction extractSegments (curves: unknown[]): number[][] {\n const segments: number[][] = [];\n\n for (let i = 0; i < curves.length; i++) {\n const entry = curves[i] as [number, number[], number];\n const type = entry[0];\n const data = entry[1];\n\n if (type === 3) {\n // EASE_OUT: [t, v, out_cx, out_cy] — first keyframe of a segment\n\n if (i + 1 < curves.length) {\n const nextEntry = curves[i + 1] as [number, number[], number];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === 2) {\n // EASE_IN immediately follows: single segment\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === 1) {\n // EASE follows\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n } else if (type === 1 && i + 1 < curves.length) {\n // EASE: [in_cx, in_cy, t, v, out_cx, out_cy] — middle keyframe\n const nextEntry = curves[i + 1] as [number, number[], number];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === 2) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === 1) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n }\n\n return segments;\n}\n\nexport function parsePositionTimingKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): Array<{ frame: number; outTangent?: IRBezierHandle; inTangent?: IRBezierHandle }> {\n const segments = extractSegments(curves);\n\n if (segments.length === 0) {\n return [];\n }\n\n const frames = endFrame - startFrame;\n const result: Array<{ frame: number; outTangent?: IRBezierHandle; inTangent?: IRBezierHandle }> = [];\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const t0 = seg[0];\n const outCpX = seg[2];\n const outCpY = seg[3];\n const t1 = seg[6];\n\n const frameTime = t0 * frames + startFrame;\n\n const outTangent: IRBezierHandle = {\n x: inverseLerp(t0, t1, outCpX),\n y: inverseLerp(t0, t1, outCpY),\n };\n\n if (i === 0) {\n result.push({ frame: frameTime, outTangent });\n } else {\n const prevSeg = segments[i - 1];\n const inTangent: IRBezierHandle = {\n x: inverseLerp(prevSeg[0], prevSeg[6], prevSeg[4]),\n y: inverseLerp(prevSeg[0], prevSeg[6], prevSeg[5]),\n };\n\n result.push({ frame: frameTime, outTangent, inTangent });\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n const lastFrameTime = lastSeg[6] * frames + startFrame;\n\n const lastInTangent: IRBezierHandle = {\n x: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[4]),\n y: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[5]),\n };\n\n result.push({ frame: lastFrameTime, inTangent: lastInTangent });\n\n return result;\n}\n","import type {\n IRAnimatedProperty, IRKeyframe, IRRotationChannels, IRSpatialTangent, IRTransformChannels,\n IRVec3,\n} from '@vvfx/animation-ir';\nimport { parseBezierKeyframes, parsePositionTimingKeyframes } from './keyframe-parser';\nimport { convert3dTo2dPoint } from '../reverse/coordinate';\nimport type { GESceneContext } from '../types';\n\nexport function parseTransformAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const posOverLifetime = asset['positionOverLifetime'] as Record<string, unknown> | undefined;\n\n if (posOverLifetime != null) {\n const posAnim = parsePositionAnimation(posOverLifetime, startFrame, endFrame, ctx);\n\n if (posAnim != null) {\n channels.position = posAnim;\n }\n }\n\n const rotOverLifetime = asset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n\n if (rotOverLifetime != null) {\n const rotation = parseRotationAnimation(rotOverLifetime, startFrame, endFrame);\n\n if (rotation != null) {\n channels.rotation = rotation;\n }\n }\n\n const sizeOverLifetime = asset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (sizeOverLifetime != null) {\n const scaleAnim = parseScaleAnimation(sizeOverLifetime, startFrame, endFrame);\n\n if (scaleAnim != null) {\n channels.scale = scaleAnim;\n }\n }\n\n return channels;\n}\n\nexport function parseOpacityAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n const colorOverLifetime = asset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (colorOverLifetime == null) {\n return undefined;\n }\n\n const opacity = colorOverLifetime['opacity'] as unknown[] | undefined;\n\n if (opacity == null || !Array.isArray(opacity) || opacity.length < 2) {\n return undefined;\n }\n\n const valueType = opacity[0] as number;\n\n if (valueType === 0) {\n return { keyframed: false, value: opacity[1] as number };\n }\n\n if (valueType === 13) {\n const curves = opacity[1] as unknown[];\n const keyframes = parseBezierKeyframes(curves, startFrame, endFrame);\n\n if (keyframes.length >= 2) {\n return { keyframed: true, keyframes };\n }\n }\n\n return undefined;\n}\n\nfunction parsePositionAnimation (\n posOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): IRAnimatedProperty<IRVec3> | undefined {\n const pathData = posOverLifetime['path'] as unknown[] | undefined;\n\n if (pathData == null || !Array.isArray(pathData) || pathData.length < 2) {\n return undefined;\n }\n\n const valueType = pathData[0] as number;\n\n if (valueType !== 22) {\n return undefined;\n }\n\n const payload = pathData[1] as unknown[];\n\n if (!Array.isArray(payload) || payload.length < 2) {\n return undefined;\n }\n\n const easingData = payload[0] as unknown[];\n const pathPoints = payload[1] as [number, number, number][];\n const controlPointsRaw = payload[2] as [number, number, number][] | undefined;\n\n if (!Array.isArray(pathPoints) || pathPoints.length < 2) {\n return undefined;\n }\n\n const timingKfs = parsePositionTimingKeyframes(easingData, startFrame, endFrame);\n\n if (timingKfs.length < 2) {\n return undefined;\n }\n\n // Detect and skip prepended hold segment\n let startIdx = 0;\n\n if (timingKfs.length > 2) {\n const firstPP = pathPoints[0];\n const secondPP = pathPoints[1];\n\n if (\n firstPP != null && secondPP != null\n && Math.abs(firstPP[0] - secondPP[0]) < 1e-6\n && Math.abs(firstPP[1] - secondPP[1]) < 1e-6\n ) {\n startIdx = 1;\n }\n }\n\n const keyframes: IRKeyframe<IRVec3>[] = [];\n const pendingSpatialIn = new Map<number, IRSpatialTangent>();\n\n for (let i = startIdx; i < timingKfs.length; i++) {\n const timing = timingKfs[i];\n const pp = pathPoints[Math.min(i, pathPoints.length - 1)];\n const pos2d = convert3dTo2dPoint(pp[0], pp[1], pp[2] ?? 0, ctx.width, ctx.height);\n\n const kf: IRKeyframe<IRVec3> = {\n frame: timing.frame,\n value: pos2d,\n };\n\n if (i > startIdx && timing.inTangent != null) {\n kf.inTangent = timing.inTangent;\n }\n if (i < timingKfs.length - 1 && timing.outTangent != null) {\n kf.outTangent = timing.outTangent;\n }\n\n const kfIndex = keyframes.length;\n const pendingSI = pendingSpatialIn.get(kfIndex);\n\n if (pendingSI != null) {\n kf.spatialIn = pendingSI;\n }\n\n if (controlPointsRaw != null && i - startIdx < timingKfs.length - startIdx - 1) {\n const segIdx = i - startIdx;\n const cp1Idx = segIdx * 2;\n const cp2Idx = segIdx * 2 + 1;\n\n if (cp1Idx < controlPointsRaw.length && cp2Idx < controlPointsRaw.length) {\n const cp1 = controlPointsRaw[cp1Idx];\n const cp2 = controlPointsRaw[cp2Idx];\n const ppStart = pathPoints[i];\n const ppEnd = pathPoints[Math.min(i + 1, pathPoints.length - 1)];\n const ppStart2d = convert3dTo2dPoint(ppStart[0], ppStart[1], ppStart[2] ?? 0, ctx.width, ctx.height);\n const ppEnd2d = convert3dTo2dPoint(ppEnd[0], ppEnd[1], ppEnd[2] ?? 0, ctx.width, ctx.height);\n const cp1_2d = convert3dTo2dPoint(cp1[0], cp1[1], cp1[2] ?? 0, ctx.width, ctx.height);\n const cp2_2d = convert3dTo2dPoint(cp2[0], cp2[1], cp2[2] ?? 0, ctx.width, ctx.height);\n\n kf.spatialOut = [cp1_2d[0] - ppStart2d[0], cp1_2d[1] - ppStart2d[1]];\n\n pendingSpatialIn.set(kfIndex + 1, [cp2_2d[0] - ppEnd2d[0], cp2_2d[1] - ppEnd2d[1]]);\n }\n }\n\n keyframes.push(kf);\n }\n\n if (keyframes.length < 2) {\n return undefined;\n }\n\n return { keyframed: true, keyframes };\n}\n\nfunction parseRotationAnimation (\n rotOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRRotationChannels | undefined {\n const separateAxes = rotOverLifetime['separateAxes'] === true;\n const xData = rotOverLifetime['x'] as unknown[] | undefined;\n const yData = rotOverLifetime['y'] as unknown[] | undefined;\n const zData = rotOverLifetime['z'] as unknown[] | undefined;\n const x = separateAxes ? parseScalarChannel(xData, startFrame, endFrame) : undefined;\n const y = separateAxes ? parseScalarChannel(yData, startFrame, endFrame) : undefined;\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (x == null && y == null && z == null) {\n return undefined;\n }\n\n return {\n ...(x != null && { x }),\n ...(y != null && { y }),\n ...(z != null && { z }),\n };\n}\n\nfunction parseScaleAnimation (\n sizeOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<IRVec3> | undefined {\n const xData = sizeOverLifetime['x'] as unknown[] | undefined;\n const yData = sizeOverLifetime['y'] as unknown[] | undefined;\n const zData = sizeOverLifetime['z'] as unknown[] | undefined;\n\n const x = parseScalarChannel(xData, startFrame, endFrame);\n const y = parseScalarChannel(yData, startFrame, endFrame);\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (x == null && y == null && z == null) {\n return undefined;\n }\n\n const xKeyframed = x?.keyframed === true;\n const yKeyframed = y?.keyframed === true;\n const zKeyframed = z?.keyframed === true;\n const xStaticValue = x?.keyframed === false ? x.value : 1;\n const yStaticValue = y?.keyframed === false ? y.value : 1;\n const zStaticValue = z?.keyframed === false ? z.value : 1;\n\n if (!xKeyframed && !yKeyframed && !zKeyframed) {\n return {\n keyframed: false,\n value: [xStaticValue, yStaticValue, zStaticValue],\n };\n }\n\n const xKfs = x?.keyframes ?? [{ frame: startFrame, value: xStaticValue }, { frame: endFrame, value: xStaticValue }];\n const yKfs = y?.keyframes ?? [{ frame: startFrame, value: yStaticValue }, { frame: endFrame, value: yStaticValue }];\n const zKfs = z?.keyframes ?? [{ frame: startFrame, value: zStaticValue }, { frame: endFrame, value: zStaticValue }];\n\n const allFrames = new Set<number>();\n\n for (const kf of xKfs) { allFrames.add(kf.frame); }\n for (const kf of yKfs) { allFrames.add(kf.frame); }\n for (const kf of zKfs) { allFrames.add(kf.frame); }\n\n // Keep Array.from: loose SWC array-spread lowering does not expand Set in dist.\n const sortedFrames = Array.from(allFrames).sort((a, b) => a - b);\n\n const keyframes: IRKeyframe<IRVec3>[] = sortedFrames.map(frame => {\n const xv = findValueAtFrame(xKfs, frame, xStaticValue);\n const yv = findValueAtFrame(yKfs, frame, yStaticValue);\n const zv = findValueAtFrame(zKfs, frame, zStaticValue);\n\n const kf: IRKeyframe<IRVec3> = {\n frame,\n value: [xv.value, yv.value, zv.value],\n };\n\n if (xv.outTangent != null) { kf.outTangent = xv.outTangent; }\n if (xv.inTangent != null) { kf.inTangent = xv.inTangent; }\n if (xv.hold === true) { kf.hold = true; }\n\n return kf;\n });\n\n return { keyframed: true, keyframes };\n}\n\nfunction parseScalarChannel (\n data: unknown[] | undefined,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n if (data == null || !Array.isArray(data) || data.length < 2) {\n return undefined;\n }\n\n const valueType = data[0] as number;\n\n if (valueType === 0) {\n return { keyframed: false, value: data[1] as number };\n }\n\n if (valueType === 13) {\n const curves = data[1] as unknown[];\n const keyframes = parseBezierKeyframes(curves, startFrame, endFrame);\n\n if (keyframes.length >= 2) {\n return { keyframed: true, keyframes };\n }\n }\n\n return undefined;\n}\n\nfunction findValueAtFrame (\n keyframes: IRKeyframe<number>[],\n frame: number,\n defaultValue: number,\n): { value: number; outTangent?: { x: number; y: number }; inTangent?: { x: number; y: number }; hold?: boolean } {\n for (const kf of keyframes) {\n if (Math.abs(kf.frame - frame) < 1e-6) {\n return { value: kf.value, outTangent: kf.outTangent, inTangent: kf.inTangent, hold: kf.hold };\n }\n }\n\n return { value: defaultValue };\n}\n","import { IRBlendMode } from '@vvfx/animation-ir';\nimport type { IRBlendMode as IRBlendModeType } from '@vvfx/animation-ir';\n\nconst IR_BLEND_MODE_BY_GE: Record<number, IRBlendModeType> = {\n 1: IRBlendMode.Add,\n 2: IRBlendMode.Darken,\n 3: IRBlendMode.Lighten,\n 4: IRBlendMode.Difference,\n 5: IRBlendMode.Exclusion,\n 6: IRBlendMode.Multiply,\n 7: IRBlendMode.ColorBurn,\n 8: IRBlendMode.Color,\n 9: IRBlendMode.Screen,\n 10: IRBlendMode.ColorDodge,\n 11: IRBlendMode.Hue,\n 12: IRBlendMode.Saturation,\n 13: IRBlendMode.Overlay,\n 14: IRBlendMode.HardLight,\n 15: IRBlendMode.SoftLight,\n 16: IRBlendMode.Luminosity,\n};\n\nexport function reverseBlendMode (GECode: number | undefined): IRBlendModeType | undefined {\n if (GECode == null) {\n return undefined;\n }\n\n return IR_BLEND_MODE_BY_GE[GECode];\n}\n","import type {\n IRAssetReference,\n IRBlendMode,\n IRColor,\n IRCustomShapePath,\n IRShapeData,\n IRShapePaintData,\n IRShapeStyleData,\n IRTextData,\n} from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport { resolveDataPath, resolveDataPathId } from '../pool/pool';\nimport { reverseBlendMode } from '../reverse/blend-mode';\nimport type { GESceneContext } from '../types';\n\nexport interface ComponentData {\n type: 'image' | 'solid' | 'text' | 'shape';\n asset?: IRAssetReference;\n solidColor?: IRColor;\n text?: IRTextData;\n shapes?: IRShapeData[];\n blendMode?: IRBlendMode;\n anchorScale?: [number, number];\n /** Original GE component id — rendezvous key for cross-component references (masks). */\n GEComponentId?: string;\n /** Raw GE component-level `mask` object (source: {isMask:true,...}, target: {isMask:false,reference,inverted}). */\n rawMask?: Record<string, unknown>;\n}\n\nexport function parseComponent (\n item: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData | undefined {\n const componentRefs = item['components'] as Array<{ id: string }> | undefined;\n\n if (componentRefs == null || componentRefs.length === 0) {\n return undefined;\n }\n\n for (const ref of componentRefs) {\n const compId = resolveDataPathId(ref);\n\n if (compId == null) {\n continue;\n }\n\n const component = ctx.componentById.get(compId);\n\n if (component == null) {\n continue;\n }\n\n const dataType = component['dataType'] as string;\n let result: ComponentData | undefined;\n\n if (dataType === 'SpriteComponent') {\n result = parseSpriteComponent(component, ctx);\n } else if (dataType === 'TextComponent') {\n result = parseTextComponent(component);\n } else if (dataType === 'ShapeComponent') {\n result = parseShapeComponent(component, ctx);\n }\n\n if (result == null) {\n continue;\n }\n\n result.GEComponentId = component['id'] as string;\n\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask != null) {\n result.rawMask = mask;\n }\n\n return result;\n }\n\n return undefined;\n}\n\nfunction parseSpriteComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n const options = component['options'] as Record<string, unknown> | undefined;\n\n let asset: IRAssetReference | undefined;\n let solidColor: IRColor | undefined;\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n const textureRef = renderer['texture'] as { id: string } | undefined;\n\n if (textureRef != null) {\n const texture = resolveDataPath(ctx.textureById, textureRef);\n\n if (texture != null) {\n const sourceRef = texture['source'] as { id: string } | undefined;\n const image = sourceRef != null ? resolveDataPath(ctx.imageById, sourceRef) : undefined;\n\n if (image != null) {\n asset = { url: image['url'] as string };\n }\n }\n }\n\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n if (options != null) {\n const startColor = options['startColor'] as number[] | undefined;\n\n if (startColor != null && startColor.length >= 4) {\n const isWhite = Math.abs(startColor[0] - 1) < 1e-4\n && Math.abs(startColor[1] - 1) < 1e-4\n && Math.abs(startColor[2] - 1) < 1e-4\n && Math.abs(startColor[3] - 1) < 1e-4;\n\n if (!isWhite) {\n solidColor = [startColor[0], startColor[1], startColor[2], startColor[3]];\n }\n }\n }\n\n const type = asset != null ? 'image' as const : 'solid' as const;\n\n return { type, asset, solidColor, blendMode, anchorScale };\n}\n\nfunction parseTextComponent (component: Record<string, unknown>): ComponentData {\n const options = component['options'] as Record<string, unknown> | undefined;\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n\n if (options == null) {\n return { type: 'text' };\n }\n\n const textColor = options['textColor'] as number[] | undefined;\n const color: IRColor = textColor != null && textColor.length >= 4\n ? [textColor[0], textColor[1], textColor[2], textColor[3]]\n : [0, 0, 0, 1];\n\n const textAlignNum = options['textAlign'] as number | undefined;\n const textAlign = textAlignNum === 1 ? 'center' : textAlignNum === 2 ? 'right' : 'left';\n\n const text: IRTextData = {\n content: (options['text'] as string) ?? '',\n fontSize: (options['fontSize'] as number) ?? 12,\n color,\n fontFamily: (options['fontFamily'] as string) ?? 'sans-serif',\n fontWeight: (options['fontWeight'] as IRTextData['fontWeight']) ?? 'normal',\n textAlign,\n fontStyle: (options['fontStyle'] as 'normal' | 'italic' | 'oblique') ?? 'normal',\n letterSpacing: (options['letterSpace'] as number) ?? 0,\n lineHeight: options['lineHeight'] as number | undefined,\n autoWidth: (options['autoWidth'] as boolean) ?? true,\n width: options['textWidth'] as number | undefined,\n height: options['textHeight'] as number | undefined,\n };\n\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n return { type: 'text', text, blendMode, anchorScale };\n}\n\nfunction parseShapeComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n let blendMode: IRBlendMode | undefined;\n\n if (renderer != null) {\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n }\n\n const shapeData = parseShapeOptions(component, ctx);\n\n return {\n type: 'shape',\n shapes: shapeData != null ? [shapeData] : undefined,\n blendMode,\n };\n}\n\nfunction parseShapeOptions (component: Record<string, unknown>, ctx: GESceneContext): IRShapeData | undefined {\n const GEType = component['type'] as number | undefined;\n const primitiveType = reverseShapePrimitiveType(GEType ?? 0);\n const style: IRShapeStyleData = {\n position: [0, 0],\n fills: [],\n strokes: [],\n };\n\n const GEFills = component['fills'] as Record<string, unknown>[] | undefined;\n\n if (GEFills != null) {\n style.fills = GEFills.map(f => reverseShapePaint(f, ctx)).filter((f): f is IRShapePaintData => f != null);\n }\n\n const GEStrokes = component['strokes'] as Record<string, unknown>[] | undefined;\n\n if (GEStrokes != null) {\n style.strokes = GEStrokes.map(s => reverseShapePaint(s, ctx)).filter((s): s is IRShapePaintData => s != null);\n }\n\n const GEStrokeWidth = component['strokeWidth'] as number | undefined;\n\n if (typeof GEStrokeWidth === 'number' && Number.isFinite(GEStrokeWidth) && GEStrokeWidth >= 0) {\n style.strokeWidth = GEStrokeWidth / ctx.ratio;\n }\n\n const GEStrokeCap = component['strokeCap'] as number | undefined;\n\n if (GEStrokeCap != null) {\n style.strokeCap = reverseLineCap(GEStrokeCap) as IRShapeStyleData['strokeCap'];\n }\n\n const GEStrokeJoin = component['strokeJoin'] as number | undefined;\n\n if (GEStrokeJoin != null) {\n style.strokeJoin = reverseLineJoin(GEStrokeJoin) as IRShapeStyleData['strokeJoin'];\n }\n\n switch (primitiveType) {\n case IRShapePrimitiveType.Custom: {\n const customPaths = reverseCustomPaths(component, ctx.ratio);\n const firstPath = customPaths[0];\n\n return firstPath != null\n ? { ...style, primitiveType, customPaths: [firstPath, ...customPaths.slice(1)] }\n : undefined;\n }\n case IRShapePrimitiveType.Rectangle: {\n const width = readScaledNumber(component, 'width', ctx.ratio);\n const height = readScaledNumber(component, 'height', ctx.ratio);\n\n return width != null && height != null\n ? { ...style, primitiveType, width, height, ...readOptionalNumberField(component, 'roundness') }\n : undefined;\n }\n case IRShapePrimitiveType.Ellipse: {\n const xRadius = readScaledNumber(component, 'xRadius', ctx.ratio);\n const yRadius = readScaledNumber(component, 'yRadius', ctx.ratio);\n\n return xRadius != null && yRadius != null ? { ...style, primitiveType, xRadius, yRadius } : undefined;\n }\n case IRShapePrimitiveType.Polygon: {\n const pointCount = readPointCount(component);\n const radius = readScaledNumber(component, 'radius', ctx.ratio);\n\n return pointCount != null && radius != null\n ? { ...style, primitiveType, pointCount, radius, ...readOptionalNumberField(component, 'roundness') }\n : undefined;\n }\n case IRShapePrimitiveType.Star: {\n const pointCount = readPointCount(component);\n const innerRadius = readScaledNumber(component, 'innerRadius', ctx.ratio);\n const outerRadius = readScaledNumber(component, 'outerRadius', ctx.ratio);\n\n return pointCount != null && innerRadius != null && outerRadius != null\n ? {\n ...style, primitiveType, pointCount, innerRadius, outerRadius,\n ...readOptionalNumberField(component, 'innerRoundness'),\n ...readOptionalNumberField(component, 'outerRoundness'),\n }\n : undefined;\n }\n }\n}\n\nconst GE_TO_SHAPE_PRIMITIVE_TYPE: Record<number, IRShapeData['primitiveType']> = {\n 0: IRShapePrimitiveType.Custom,\n 1: IRShapePrimitiveType.Rectangle,\n 2: IRShapePrimitiveType.Ellipse,\n 3: IRShapePrimitiveType.Polygon,\n 4: IRShapePrimitiveType.Star,\n};\n\nfunction reverseShapePrimitiveType (GEType: number): IRShapeData['primitiveType'] {\n return GE_TO_SHAPE_PRIMITIVE_TYPE[GEType] ?? IRShapePrimitiveType.Custom;\n}\n\nfunction reverseShapePaint (paint: Record<string, unknown>, ctx: GESceneContext): IRShapePaintData | undefined {\n const GEType = paint['type'] as number | undefined;\n\n if (GEType === 0) {\n const color = paint['color'] as { r: number; g: number; b: number; a: number } | undefined;\n\n if (color == null) {\n return undefined;\n }\n\n return { type: IRFillType.Solid, color: [color.r, color.g, color.b, color.a] };\n }\n\n if (GEType === 1 || GEType === 2 || GEType === 3) {\n const typeMap: Record<number, IRShapePaintData['type']> = {\n 1: IRFillType.LinearGradient,\n 2: IRFillType.RadialGradient,\n 3: IRFillType.AngularGradient,\n };\n\n const gradientStopsRaw = paint['gradientStops'] as [number, unknown] | undefined;\n const stops = Array.isArray(gradientStopsRaw) && gradientStopsRaw.length >= 2\n ? gradientStopsRaw[1] as [number, number, number, number, number][]\n : [];\n\n const startPoint = paint['startPoint'] as { x: number; y: number } | undefined;\n const endPoint = paint['endPoint'] as { x: number; y: number } | undefined;\n\n return {\n type: typeMap[GEType] as 'linear-gradient' | 'radial-gradient' | 'angular-gradient',\n gradientStops: stops,\n gradientStart: startPoint != null ? [startPoint.x / ctx.ratio, -startPoint.y / ctx.ratio] : undefined,\n gradientEnd: endPoint != null ? [endPoint.x / ctx.ratio, -endPoint.y / ctx.ratio] : undefined,\n };\n }\n\n if (GEType === 4) {\n const texture = resolveTextureAsset(paint['texture'], ctx);\n\n if (texture == null) {\n return undefined;\n }\n\n const scaleMode = paint['scaleMode'];\n\n return {\n type: IRFillType.Texture,\n texture,\n ...(isTextureScaleMode(scaleMode) && { scaleMode }),\n };\n }\n\n return undefined;\n}\n\nfunction reverseLineCap (GECode: number): string {\n const map: Record<number, string> = { 0: IRLineCap.Butt, 1: IRLineCap.Round, 2: IRLineCap.Square };\n\n return map[GECode] ?? IRLineCap.Butt;\n}\n\nfunction reverseLineJoin (GECode: number): string {\n const map: Record<number, string> = { 0: IRLineJoin.Round, 1: IRLineJoin.Bevel, 2: IRLineJoin.Miter };\n\n return map[GECode] ?? IRLineJoin.Miter;\n}\n\nfunction reverseCustomPaths (component: Record<string, unknown>, ratio: number): IRCustomShapePath[] {\n const points = component['points'] as Array<{ x: number; y: number }> | undefined;\n const easingIns = component['easingIns'] as Array<{ x: number; y: number }> | undefined;\n const easingOuts = component['easingOuts'] as Array<{ x: number; y: number }> | undefined;\n const shapes = component['shapes'] as Array<{ close: boolean; indexes: Array<{ point: number; easingIn: number; easingOut: number }> }> | undefined;\n\n if (points == null || shapes == null) {\n return [];\n }\n\n return shapes.map(shape => {\n const pathPoints: Array<{ x: number; y: number }> = [];\n const pathInTangents: Array<{ x: number; y: number }> = [];\n const pathOutTangents: Array<{ x: number; y: number }> = [];\n\n for (const idx of shape.indexes) {\n const pt = points[idx.point];\n const ei = easingIns?.[idx.easingIn];\n const eo = easingOuts?.[idx.easingOut];\n\n pathPoints.push({ x: pt.x / ratio, y: -pt.y / ratio });\n pathInTangents.push({ x: (ei?.x ?? 0) / ratio, y: -(ei?.y ?? 0) / ratio });\n pathOutTangents.push({ x: (eo?.x ?? 0) / ratio, y: -(eo?.y ?? 0) / ratio });\n }\n\n return {\n points: pathPoints,\n inTangents: pathInTangents,\n outTangents: pathOutTangents,\n closed: shape.close,\n };\n });\n}\n\nfunction readScaledNumber (\n component: Record<string, unknown>,\n key: string,\n ratio: number,\n): number | undefined {\n const value = component[key];\n\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n\n return value / ratio;\n}\n\nfunction readOptionalNumberField<K extends string> (\n component: Record<string, unknown>,\n key: K,\n): Partial<Record<K, number>> {\n const value = component[key];\n\n return typeof value === 'number' && Number.isFinite(value) ? { [key]: value } as Record<K, number> : {};\n}\n\nfunction readPointCount (component: Record<string, unknown>): number | undefined {\n const value = component['pointCount'];\n\n return typeof value === 'number' && Number.isInteger(value) && value >= 2 ? value : undefined;\n}\n\nfunction resolveTextureAsset (textureRef: unknown, ctx: GESceneContext): IRAssetReference | undefined {\n const texture = resolveDataPath(ctx.textureById, textureRef);\n const sourceRef = texture?.['source'];\n const image = sourceRef != null ? resolveDataPath(ctx.imageById, sourceRef) : undefined;\n const url = image?.['url'];\n\n return typeof url === 'string' && url.trim() !== '' ? { url } : undefined;\n}\n\nfunction isTextureScaleMode (value: unknown): value is 0 | 1 | 2 | 3 {\n return typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 3;\n}\n","import type { IRTimeContext } from '@vvfx/animation-ir';\n\nexport function reverseLayerTiming (\n delay: number,\n duration: number,\n frameRate: number,\n): IRTimeContext {\n const startFrame = Math.round(delay * frameRate * 1000) / 1000;\n const endFrame = Math.round((delay + duration) * frameRate * 1000) / 1000;\n\n return { startFrame, endFrame };\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport type { GESceneContext } from '../types';\nimport { resolveDataPathId } from '../pool/pool';\nimport { parseTimeline } from '../parsers/timeline-parser';\n\nexport interface RawLayerDescriptor {\n itemId: string;\n item: Record<string, unknown>;\n layer: IRLayerNode;\n}\n\nexport function mergeNullSpritePairs (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): RawLayerDescriptor[] {\n const childByParentId = new Map<string, RawLayerDescriptor[]>();\n\n for (const desc of descriptors) {\n const parentId = desc.item['parentId'] as string | undefined;\n\n if (parentId != null) {\n if (!childByParentId.has(parentId)) {\n childByParentId.set(parentId, []);\n }\n childByParentId.get(parentId)!.push(desc);\n }\n }\n\n // Pass 1: identify all merge pairs (null parent → sprite child)\n const mergedChildIds = new Set<string>();\n const mergeMap = new Map<string, RawLayerDescriptor>();\n\n for (const desc of descriptors) {\n const isNull = desc.item['type'] === '3';\n\n if (!isNull) {\n continue;\n }\n\n const children = childByParentId.get(desc.itemId);\n\n if (children == null || children.length === 0) {\n continue;\n }\n\n // Only merge an UNAMBIGUOUS emitNullSpritePair artifact: a null whose ONLY\n // child is exactly one same-name visual sprite. ir2ge's emitNullSpritePair\n // produces precisely this shape (null + one same-name child). If the null\n // has any OTHER children, it is a genuine Lottie parent null — merging it\n // into a single semantic layer would change the anchor those other children are\n // parented against, shifting them. Leave such nulls intact.\n if (children.length !== 1) {\n continue;\n }\n\n const onlyChild = children[0];\n const childType = onlyChild.item['type'] as string;\n const isVisual = childType === '1' || childType === 'text' || childType === 'shape';\n const sameName = (onlyChild.item['name'] as string) === (desc.item['name'] as string);\n\n if (\n !isVisual\n || !sameName\n || !hasNoComponents(desc.item)\n || !hasVisualComponent(onlyChild, ctx)\n || !hasSplitPairTiming(desc, onlyChild, ctx)\n || !hasParentTransformSignal(desc, ctx)\n || !hasNoIndependentChildTransform(onlyChild, ctx)\n ) {\n continue;\n }\n\n const sameNameChild = onlyChild;\n\n mergedChildIds.add(sameNameChild.itemId);\n mergeMap.set(desc.itemId, mergeNullAndSprite(desc, sameNameChild, ctx));\n }\n\n // Pass 2: build result, replacing merged nulls and skipping merged children\n const result: RawLayerDescriptor[] = [];\n\n for (const desc of descriptors) {\n if (mergedChildIds.has(desc.itemId)) {\n continue;\n }\n\n const merged = mergeMap.get(desc.itemId);\n\n if (merged != null) {\n result.push(merged);\n } else {\n result.push(desc);\n }\n }\n\n return result;\n}\n\nfunction hasNoComponents (item: Record<string, unknown>): boolean {\n const components = item['components'];\n\n return !Array.isArray(components) || components.length === 0;\n}\n\nfunction hasVisualComponent (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const components = desc.item['components'];\n\n if (!Array.isArray(components) || components.length === 0) {\n return false;\n }\n\n return components.some(ref => {\n const componentId = resolveDataPathId(ref);\n const component = componentId != null ? ctx.componentById.get(componentId) : undefined;\n const dataType = component?.['dataType'];\n\n return dataType === 'SpriteComponent' || dataType === 'TextComponent' || dataType === 'ShapeComponent';\n });\n}\n\nfunction hasSplitPairTiming (\n parent: RawLayerDescriptor,\n child: RawLayerDescriptor,\n ctx: GESceneContext,\n): boolean {\n const parentTimeline = parseTimeline(parent.itemId, ctx);\n const childTimeline = parseTimeline(child.itemId, ctx);\n const parentEndBehavior = parentTimeline?.endBehavior ?? readItemEndBehavior(parent.item);\n const childEndBehavior = childTimeline?.endBehavior ?? readItemEndBehavior(child.item);\n\n if (parentEndBehavior !== 4 || childEndBehavior !== 0) {\n return false;\n }\n\n if (parentTimeline == null || childTimeline == null) {\n return true;\n }\n\n return nearlyEqual(parentTimeline.delay, childTimeline.delay)\n && nearlyEqual(parentTimeline.duration, childTimeline.duration);\n}\n\nfunction hasParentTransformSignal (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(desc.itemId, ctx);\n\n if (hasTransformPayload(timeline?.transformAsset)) {\n return true;\n }\n\n const transform = desc.item['transform'];\n\n return isRecord(transform) && (hasNonDefaultScale(transform) || hasNonDefaultEulerHint(transform));\n}\n\nfunction hasNoIndependentChildTransform (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(desc.itemId, ctx);\n\n return timeline?.transformAsset != null && !hasTransformPayload(timeline.transformAsset);\n}\n\nfunction hasTransformPayload (asset: Record<string, unknown> | undefined): boolean {\n if (asset == null) {\n return false;\n }\n\n return hasNonEmptyRecord(asset['positionOverLifetime'])\n || hasNonEmptyRecord(asset['rotationOverLifetime'])\n || hasNonEmptyRecord(asset['sizeOverLifetime']);\n}\n\nfunction hasNonDefaultScale (transform: Record<string, unknown>): boolean {\n const scale = transform['scale'];\n\n if (!isRecord(scale)) {\n return false;\n }\n\n const x = typeof scale['x'] === 'number' ? scale['x'] : 1;\n const y = typeof scale['y'] === 'number' ? scale['y'] : 1;\n const z = typeof scale['z'] === 'number' ? scale['z'] : 1;\n\n return Math.abs(x - 1) > 1e-6 || Math.abs(y - 1) > 1e-6 || Math.abs(z - 1) > 1e-6;\n}\n\nfunction hasNonDefaultEulerHint (transform: Record<string, unknown>): boolean {\n const eulerHint = transform['eulerHint'];\n\n if (!isRecord(eulerHint)) {\n return false;\n }\n\n const x = typeof eulerHint['x'] === 'number' ? eulerHint['x'] : 0;\n const y = typeof eulerHint['y'] === 'number' ? eulerHint['y'] : 0;\n const z = typeof eulerHint['z'] === 'number' ? eulerHint['z'] : 0;\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6;\n}\n\nfunction hasNonEmptyRecord (value: unknown): boolean {\n return isRecord(value) && Object.keys(value).length > 0;\n}\n\nfunction readItemEndBehavior (item: Record<string, unknown>): number | undefined {\n const endBehavior = item['endBehavior'];\n\n return typeof endBehavior === 'number' ? endBehavior : undefined;\n}\n\nfunction nearlyEqual (a: number, b: number): boolean {\n return Math.abs(a - b) < 1e-6;\n}\n\nfunction isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction mergeNullAndSprite (\n nullDesc: RawLayerDescriptor,\n childDesc: RawLayerDescriptor,\n ctx: GESceneContext,\n): RawLayerDescriptor {\n const merged = { ...nullDesc.layer };\n\n // Take type from child\n merged.type = childDesc.layer.type;\n merged.asset = childDesc.layer.asset;\n merged.text = childDesc.layer.text;\n merged.shapes = childDesc.layer.shapes;\n merged.solidColor = childDesc.layer.solidColor;\n merged.blendMode = childDesc.layer.blendMode;\n\n // Visibility from child\n merged.visible = childDesc.layer.visible;\n\n // Compute anchor from child position offset\n const childTransform = childDesc.item['transform'] as Record<string, unknown> | undefined;\n const childPosition = childTransform?.['position'] as { x: number; y: number; z: number } | undefined;\n const childSize = childTransform?.['size'] as { x: number; y: number } | undefined;\n\n if (childPosition != null && childSize != null) {\n const layerWidth = childSize.x / ctx.ratio;\n const layerHeight = childSize.y / ctx.ratio;\n\n const anchorX = -childPosition.x / ctx.ratio + layerWidth / 2;\n const anchorY = childPosition.y / ctx.ratio + layerHeight / 2;\n\n if (merged.transform == null) {\n merged.transform = {};\n }\n\n merged.transform.anchor = { keyframed: false, value: [anchorX, anchorY, 0] };\n merged.localBounds = { x: 0, y: 0, width: layerWidth, height: layerHeight };\n }\n\n // Opacity from child\n if (childDesc.layer.transform?.opacity != null) {\n if (merged.transform == null) {\n merged.transform = {};\n }\n merged.transform.opacity = childDesc.layer.transform.opacity;\n }\n\n // The merged layer renders the child's visual component, but the parent owns\n // transform animation passthrough. Deep-merge specific.effects so neither side\n // loses GE reconstruction data.\n if (childDesc.layer.specific != null) {\n const parentEffects = merged.specific?.effects;\n const childEffects = childDesc.layer.specific.effects;\n\n merged.specific = {\n ...merged.specific,\n ...childDesc.layer.specific,\n ...((parentEffects != null || childEffects != null) && {\n effects: {\n ...(parentEffects ?? {}),\n ...(childEffects ?? {}),\n },\n }),\n };\n }\n\n merged.specific = {\n ...merged.specific,\n effects: {\n ...merged.specific?.effects,\n sourceHierarchy: 'null-sprite-pair',\n },\n };\n\n return {\n itemId: nullDesc.itemId,\n item: nullDesc.item,\n layer: merged,\n };\n}\n\nexport function resolveHierarchy (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): void {\n const idToIndex = new Map<string, number>();\n const idToDesc = new Map<string, RawLayerDescriptor>();\n\n for (const desc of descriptors) {\n idToIndex.set(desc.itemId, desc.layer.index);\n idToDesc.set(desc.itemId, desc);\n }\n\n for (const desc of descriptors) {\n const parentId = desc.item['parentId'] as string | undefined;\n\n if (parentId == null) {\n continue;\n }\n\n const parentIndex = idToIndex.get(parentId);\n const parentDesc = idToDesc.get(parentId);\n\n if (parentIndex == null || parentDesc == null) {\n continue;\n }\n\n desc.layer.parent = {\n index: parentIndex,\n lifetimeMode: 'clipped',\n };\n\n const parentAnchor = getAnchorFromDesc(parentDesc);\n const pos = desc.layer.transform?.position;\n\n if (pos != null && !pos.keyframed && pos.value != null) {\n const pos2d = pos.value;\n\n desc.layer.transform!.position = {\n keyframed: false,\n value: [\n pos2d[0] + (parentAnchor[0] - ctx.width / 2),\n pos2d[1] + (parentAnchor[1] - ctx.height / 2),\n pos2d[2] ?? 0,\n ],\n };\n }\n }\n}\n\nfunction getAnchorFromDesc (desc: RawLayerDescriptor): [number, number] {\n const anchor = desc.layer.transform?.anchor;\n\n if (anchor != null && !anchor.keyframed && Array.isArray(anchor.value) && anchor.value.length >= 2) {\n return [anchor.value[0], anchor.value[1]];\n }\n\n return [0, 0];\n}\n","import type {\n EffectsLayerSpecific, IRComposition, IRCompositionSpecific, IRColor, IRLayerNode,\n IRLayerType, IRTextData, IRTransformChannels,\n} from '@vvfx/animation-ir';\nimport { buildSceneContext, getCompositionItemIds } from './scene-reader';\nimport { parseTimeline } from './parsers/timeline-parser';\nimport { parseStaticTransform } from './parsers/transform-parser';\nimport { parseTransformAnimation, parseOpacityAnimation } from './parsers/animation-parser';\nimport { parseComponent } from './parsers/component-parser';\nimport { reverseLayerTiming } from './reverse/timing';\nimport { mergeNullSpritePairs, resolveHierarchy, type RawLayerDescriptor } from './merge/merge';\nimport type { GE2IROptions, GESceneContext } from './types';\nimport { normalizeJsonValue } from '../shared/json-value';\n\nexport function convertGEToIR (scene: Record<string, unknown>, options: GE2IROptions): IRComposition {\n const ctx = buildSceneContext(scene, options);\n const itemIds = getCompositionItemIds(scene);\n\n // Reverse: GE items are in display order (ir2ge reverses at the end),\n // IR layers need to be in push order so ir2ge's final reverse restores display order.\n const reversedItemIds = [...itemIds].reverse();\n const descriptors: RawLayerDescriptor[] = [];\n\n let layerIndex = 0;\n\n for (const itemId of reversedItemIds) {\n const item = ctx.itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n\n const layer = parseItemToLayer(item, itemId, layerIndex, ctx);\n\n descriptors.push({ itemId, item, layer });\n layerIndex++;\n }\n\n const merged = mergeNullSpritePairs(descriptors, ctx);\n\n // Re-index after merge\n for (let i = 0; i < merged.length; i++) {\n merged[i].layer.index = i;\n }\n\n resolveHierarchy(merged, ctx);\n\n const layers = merged.map(d => d.layer);\n\n return normalizeJsonValue({\n source: 'effects',\n name: ctx.compositionName,\n width: ctx.width,\n height: ctx.height,\n frameRate: ctx.frameRate,\n inPoint: ctx.inPoint,\n outPoint: ctx.outPoint,\n backgroundColor: ctx.backgroundColor,\n endBehavior: ctx.endBehavior,\n layers,\n specific: buildCompositionSpecific(scene, ctx.compositionId, itemIds, ctx),\n });\n}\n\nfunction parseItemToLayer (\n item: Record<string, unknown>,\n itemId: string,\n index: number,\n ctx: GESceneContext,\n): IRLayerNode {\n const name = (item['name'] as string) ?? `layer_${index}`;\n const GEType = item['type'] as string;\n const visible = item['visible'] as boolean ?? true;\n let rawTransformPassthrough: EffectsLayerSpecific | undefined;\n\n const timeline = parseTimeline(itemId, ctx);\n const delay = timeline?.delay ?? (item['delay'] as number ?? 0);\n const duration = timeline?.duration ?? (item['duration'] as number ?? 0);\n\n const time = reverseLayerTiming(delay, duration, ctx.frameRate);\n\n const componentData = parseComponent(item, ctx);\n let type: IRLayerType;\n\n if (GEType === '3') {\n type = 'null';\n } else if (componentData?.type === 'text' || GEType === 'text') {\n type = 'text';\n } else if (componentData?.type === 'shape' || GEType === 'shape') {\n type = 'shape';\n } else if (componentData?.type === 'image') {\n type = 'image';\n } else if (GEType === '7') {\n type = 'precomp';\n } else if (componentData?.solidColor != null) {\n type = 'solid';\n } else if (GEType === '1') {\n type = 'solid';\n } else {\n type = 'null';\n }\n\n // Parse transforms\n const itemTransform = item['transform'] as Record<string, unknown> | undefined;\n const itemSize = readItemSize(itemTransform);\n const textBounds = type === 'text' && itemSize == null\n ? readTextBounds(componentData?.text)\n : undefined;\n const localBounds: IRLayerNode['localBounds'] = itemSize != null\n ? {\n x: 0,\n y: 0,\n width: itemSize.x / ctx.ratio,\n height: itemSize.y / ctx.ratio,\n }\n : textBounds;\n let transform: IRTransformChannels | undefined;\n\n if (itemTransform != null) {\n const staticChannels = parseStaticTransform(itemTransform, ctx);\n\n transform = { ...staticChannels };\n\n // Text layers carry their pixel-sizing scale on transform.scale\n // (scale = ratio × local bounds). ir2ge RECOMPUTES this item scale from\n // localBounds in processVisualLayer, so keeping it in the IR scale channel\n // would make buildSizeAnim emit a duplicate sizeOverLifetime constant that\n // double-scales the glyphs (garbled/stretched text). Drop the static scale\n // for text; genuine text scale animation still rides through\n // specific.effects.sizeOverLifetime passthrough.\n if (type === 'text') {\n delete transform.scale;\n }\n }\n\n // Parse animation from timeline tracks — passthrough raw GE animation data\n // via specific.effects. Converting to IR keyframes and back would lose data (ir2ge\n // only handles specific ValueType variants and makes assumptions about\n // static positions). The raw data is injected verbatim by ir2ge.\n if (timeline?.transformAsset != null) {\n const asset = timeline.transformAsset;\n const animChannels = parseTransformAnimation(asset, time.startFrame, time.endFrame, ctx);\n\n if (transform == null) {\n transform = {};\n }\n\n // Use parsed IR channels when available (CONSTANT/BEZIER_CURVE types),\n // but also store raw data for passthrough of unsupported types (LINE_SEGMENTS etc.)\n if (animChannels.rotation != null) {\n transform.rotation = animChannels.rotation;\n }\n if (animChannels.scale != null) {\n transform.scale = animChannels.scale;\n }\n\n // Passthrough raw animation data for channels that can't round-trip through IR\n const rawPassthrough: EffectsLayerSpecific = {};\n const posOL = asset['positionOverLifetime'] as Record<string, unknown> | undefined;\n const rotOL = asset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n const sizeOL = asset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (posOL != null && posOL['path'] != null) {\n rawPassthrough.positionOverLifetime = posOL;\n }\n if (rotOL != null && Object.keys(rotOL).length > 0) {\n rawPassthrough.rotationOverLifetime = rotOL;\n }\n if (sizeOL != null && Object.keys(sizeOL).length > 0) {\n rawPassthrough.sizeOverLifetime = sizeOL;\n }\n\n if (Object.keys(rawPassthrough).length > 0) {\n rawTransformPassthrough = rawPassthrough;\n }\n }\n\n // Parse opacity\n let rawColorOverLifetime: Record<string, unknown> | undefined;\n\n if (timeline?.spriteColorAsset != null) {\n const opacity = parseOpacityAnimation(timeline.spriteColorAsset, time.startFrame, time.endFrame);\n\n if (opacity != null) {\n if (transform == null) {\n transform = {};\n }\n transform.opacity = opacity;\n }\n\n const col = timeline.spriteColorAsset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (col != null && Object.keys(col).length > 0) {\n rawColorOverLifetime = col;\n }\n }\n\n // Anchor from component — default to center (0.5, 0.5) when not explicitly set.\n // Some GE text has no transform.size, so its bounds come from TextComponent.options.\n // The anchor itself still follows the same normalized renderer coordinates as every\n // other visual layer; text alignment and glyph baseline are renderer-internal details.\n if (type !== 'null' && localBounds != null) {\n const layerWidth = localBounds.width;\n const layerHeight = localBounds.height;\n const anchorScale = componentData?.anchorScale ?? [0.5, 0.5];\n const anchorInfo = reverseGenericAnchor(anchorScale, layerWidth, layerHeight);\n const { anchorX, anchorY, anchorOffsetX, anchorOffsetY } = anchorInfo;\n\n if (transform == null) {\n transform = {};\n }\n\n transform.anchor = {\n keyframed: false,\n value: [anchorX, anchorY, 0],\n };\n\n // Reverse the position adjustments ir2ge's processVisualLayer re-applies\n // for non-centered anchors, so they don't double-apply on round-trip.\n // Forward order (in 2D-px equivalent): pos += anchorOffset (computeStaticPosition),\n // then pos += scaleAdjust (applyScalePositionAdjust). We subtract both.\n const pos = transform.position;\n\n if (pos != null && !pos.keyframed && pos.value != null) {\n // scaleAdjust (only when static scale != 1 and anchor off-center by >0.5px):\n // 3D: x += anchorDiffX*(1-sx)*ratio ; y -= anchorDiffY*(1-sy)*ratio\n // In 2D-px (÷ratio, y-axis flips sign): x2d += anchorDiffX*(1-sx) ;\n // y2d += anchorDiffY*(1-sy) (the two sign flips cancel).\n const scale = transform.scale?.keyframed === false && Array.isArray(transform.scale.value)\n ? transform.scale.value\n : [1, 1, 1];\n const sx = scale[0] ?? 1;\n const sy = scale[1] ?? 1;\n const anchorDiffX = anchorX - layerWidth / 2;\n const anchorDiffY = anchorY - layerHeight / 2;\n const anchorOffCenter = Math.abs(anchorDiffX) > 0.5 || Math.abs(anchorDiffY) > 0.5;\n const hasStaticScale = !(sx === 1 && sy === 1);\n\n let scaleAdjustX = 0;\n let scaleAdjustY = 0;\n\n if (hasStaticScale && anchorOffCenter && layerWidth > 0 && layerHeight > 0) {\n scaleAdjustX = anchorDiffX * (1 - sx);\n scaleAdjustY = anchorDiffY * (1 - sy);\n }\n\n const totalX = anchorOffsetX + scaleAdjustX;\n const totalY = anchorOffsetY + scaleAdjustY;\n\n if (Math.abs(totalX) > 1e-6 || Math.abs(totalY) > 1e-6) {\n transform.position = {\n keyframed: false,\n value: [pos.value[0] - totalX, pos.value[1] - totalY, pos.value[2] ?? 0],\n };\n }\n }\n }\n\n const text = componentData?.text == null ? undefined : { ...componentData.text };\n const solidColor: IRColor | undefined = type === 'solid'\n ? componentData?.solidColor ?? [1, 1, 1, 1]\n : componentData?.solidColor;\n\n if (text?.autoWidth === false) {\n text.width ??= localBounds?.width;\n text.height ??= localBounds?.height;\n }\n const layer = {\n index,\n name,\n type,\n time,\n visible,\n transform,\n localBounds,\n } as IRLayerNode;\n\n if (componentData?.asset != null) {\n layer.asset = componentData.asset;\n }\n if (solidColor != null) {\n layer.solidColor = solidColor;\n }\n if (text != null) {\n layer.text = text;\n }\n if (componentData?.shapes != null) {\n layer.shapes = componentData.shapes;\n }\n if (componentData?.blendMode != null) {\n layer.blendMode = componentData.blendMode;\n }\n const GEComponentId = componentData?.GEComponentId;\n const rawMask = componentData?.rawMask;\n const precompContent = GEType === '7' ? item['content'] as Record<string, unknown> | undefined : undefined;\n const precompRefId = isRecord(precompContent?.['options'])\n ? precompContent['options']['refId']\n : undefined;\n\n // Mask round-trip: GEComponentId is the rendezvous key linking a target's\n // mask.reference.id (a GE1 component id) to the regenerated GE2 component id.\n // ir2ge copies specific.effects.mask onto the rebuilt component and a post-process pass\n // remaps the stale reference id. sourceHierarchy records the pre-merge shape;\n // mergeNullSpritePairs replaces it when a pair collapses into one semantic layer.\n const effectsSpecific: EffectsLayerSpecific = {\n sourceHierarchy: 'single-item',\n ...(rawTransformPassthrough ?? {}),\n ...(rawColorOverLifetime != null && { colorOverLifetime: rawColorOverLifetime }),\n ...(GEComponentId != null && { sourceComponentId: GEComponentId }),\n ...(rawMask != null && { mask: rawMask }),\n ...(typeof precompRefId === 'string' && { precompRefId }),\n ...(precompContent != null && { precompContent: cloneJson(precompContent) }),\n };\n\n layer.specific = {\n ...layer.specific,\n effects: effectsSpecific,\n };\n\n return layer;\n}\n\nfunction buildCompositionSpecific (\n scene: Record<string, unknown>,\n compositionId: string,\n itemIds: string[],\n ctx: GESceneContext,\n): IRCompositionSpecific | undefined {\n if (!hasPrecompItem(itemIds, ctx)) {\n return undefined;\n }\n\n return {\n effects: {\n sourceCompositionId: compositionId,\n sourceScene: cloneJson(scene),\n },\n };\n}\n\nfunction hasPrecompItem (itemIds: string[], ctx: GESceneContext): boolean {\n return itemIds.some(itemId => ctx.itemById.get(itemId)?.['type'] === '7');\n}\n\nfunction cloneJson<T> (value: T): T {\n return normalizeJsonValue(value);\n}\n\nfunction isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\ninterface ReversedAnchorInfo {\n anchorX: number;\n anchorY: number;\n anchorOffsetX: number;\n anchorOffsetY: number;\n}\n\nfunction readItemSize (\n itemTransform: Record<string, unknown> | undefined,\n): { x: number; y: number } | undefined {\n const size = itemTransform?.['size'];\n\n if (!isRecord(size)) {\n return undefined;\n }\n\n const x = size['x'];\n const y = size['y'];\n\n return typeof x === 'number' && Number.isFinite(x) && x > 0\n && typeof y === 'number' && Number.isFinite(y) && y > 0\n ? { x, y }\n : undefined;\n}\n\nfunction readTextBounds (text: IRTextData | undefined): IRLayerNode['localBounds'] {\n const width = text?.width;\n const height = text?.height;\n\n return typeof width === 'number' && Number.isFinite(width) && width > 0\n && typeof height === 'number' && Number.isFinite(height) && height > 0\n ? { x: 0, y: 0, width, height }\n : undefined;\n}\n\nfunction reverseGenericAnchor (\n anchorScale: [number, number],\n width: number,\n height: number,\n): ReversedAnchorInfo {\n const anchorX = anchorScale[0] * width;\n const anchorY = anchorScale[1] * height;\n\n return {\n anchorX,\n anchorY,\n anchorOffsetX: -(anchorX - width / 2),\n anchorOffsetY: -(anchorY - height / 2),\n };\n}\n","/**\n * Read-side accessors for the `IRLayerNode.specific.lottie` slot.\n *\n * The shared generator must not branch on lottie semantics directly — every\n * Lottie-specific reads go through these helpers so the rest of ir2ge stays\n * agnostic to the producing tool.\n *\n * Parent lifetime semantics are represented directly by the generic IR relation.\n */\n\nimport type { IRLayerNode, LottieLayerSpecific } from '@vvfx/animation-ir';\n\nexport type { LottieLayerSpecific };\n\nexport function readLottieSpecific (layer: IRLayerNode): LottieLayerSpecific | undefined {\n return layer.specific?.lottie;\n}\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_type_of","obj","Symbol","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","o","minLen","n","toString","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","next","bind","isArray","done","value","TypeError","getEffectsLayerSpecific","ir","layer","specific","effects","undefined","getEffectsCompositionSpecific","EFFECTS_ANIMATION_SPECIFIC_KEYS","KEYS_BY_INVALIDATION_TARGET","position","rotation","scale","color","opacity","anchor","mask","precomp","invalidateEffectsLayerSpecific","removed","push","keys","hasEffectsColorAnimationPassthrough","colorOverLifetime","some","channelKey","hasEffectsAnimationPassthrough","DEFAULT_CAMERA_Z","DEFAULT_CAMERA_FOV","DEFAULT_CLIP_MODE","get2dTo3dRatio","width","height","ratio","Math","tan","PI","convert2dTo3dPoint","x","y","z","adaptRatioZ","offsetX","offsetY","createId","v4","replace","toDataPath","id","roundNumber","precision","factor","round","lerp","a","b","estimateTextWidth","text","fontSize","letterSpacing","avgCharWidth","spacing","buildTimelineTracks","collector","delay","duration","endBehavior","animation","itemType","objectBindingTrackId","childTrackIds","buildActivationTrack","buildTransformTrack","isPrecompItemType","buildSubCompositionTrack","isNullItemType","buildSpriteColorTrack","miscs","dataType","children","clips","assetId","trackId","clip","start","asset","positionOverLifetime","rotationOverLifetime","sizeOverLifetime","startColor","JSONSceneVersion","RenderLevel","BlendingMode","SideMode","ObscuredMode","ParticleEmitterShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","RenderType","RenderFace","CameraClipMode","ValueType","BezierKeyframeType","EndBehavior","ParticleInteractionBehavior","ShapeArcMode","LightType","ModelBoundingType","CameraType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextSizeMode","TextBaseline","TextAlignment","TextVerticalAlign","TextWeight","FontStyle","FillType","TexturePaintScaleMode","ShapePrimitiveType","LineCap","LineJoin","NodeDataType","BackgroundType","MultimediaType","HevcVideoCodec","DataType","GeometryType","VertexFormatType","IndexFormatType","VertexBufferSemantic","LATEST","DEFAULT_OUT_TANGENT","DEFAULT_IN_TANGENT","normalizeTime","frameTime","startFrame","endFrame","frames","max","getScalarValue","keyframe","dimensionIndex","irScalarKeyframesToGE","property","timeContext","keyframed","keyframes","curve","buildCurveForDimension","irVectorKeyframesToGE","firstValue","dimensions","curves","d","irPositionKeyframesToGE","pathPoints","controlPoints","timingCurvePoints","kf","normalizedT","frame","t","outTangent","inTangent","startPos","segmentEnd","nextKf","hold","endValue","toPoint","tiPoint","spatialOut","spatialIn","sx","sy","ex","ey","unshift","timingCurves","buildPositionTimingCurves","makeEaseOut","seg","EASE_OUT","makeEaseIn","prevSeg","EASE_IN","makeEase","currSeg","EASE","bezierCurves","t0","t1","v0","endKeyframe","v1","outHandle","inHandle","outCpX","outCpY","inCpX","inCpY","firstT","firstV","result","totalPoints","points","current","shouldUseKeyframeMode","hasIndependentParentLifetime","parent","lifetimeMode","computeLayerTiming","frameRate","compositionInPoint","time","stretch","offsetFrame","rawDuration","layerDuration","computeStaticPosition","ctx","anchorOffsetX","anchorOffsetY","transform","isNullType","type","positionValue","pos","getStaticAnchor","getStaticScaleFromIR","applyScalePositionAdjust","bounds","staticScale","anchorDiffX","anchorDiffY","abs","computeAnchorInfo","localAnchorX","localAnchorY","anchorScaleX","anchorScaleY","anchorAdjust","textAlign","textHeight","isSpriteForAnchor","staticRotationZ","getStaticRotationZ","hasStaticRotation","rotValue","rad","cosR","cos","sinR","sin","rotatedX","rotatedY","rotationZ","getTimeContext","buildTransformAnimation","effectsSpecific","passthroughPosition","passthroughRotation","passthroughSize","normalized","buildNormalizedTransformAnimation","buildPositionAnim","buildRotationAnim","buildSizeAnim","posResult","assertContiguousPositionSegments","useKeyframeMode","firstPathPoint","point3d","pathPoint","endPoint3d","cp","pp","dx","dy","cp1","cp2","curveData","easingData","map","roundedPathPoints","p","roundedControlPoints","pathPayload","path","BEZIER_CURVE_PATH","index","nextStart","isContiguous","every","dimension","Error","buildRotationAxis","hasX","hasY","hasZ","axisCount","CONSTANT","axisHasRotationValue","BEZIER_CURVE","buildConstantSizeAnimation","separateAxes","buildColorAnimation","passthroughColor","buildNormalizedColorAnimation","opacityValue","buildGETransform","eulerHint","getGEItemType","getGEItemTypeCode","registerTexture","imageUrl","cache","cached","get","imageId","textureId","images","url","textures","flipY","dataPathRef","set","_obj","GE_BLENDING_BY_IR_MODE","IRBlendModeConst","Normal","Multiply","Screen","Overlay","Darken","Lighten","ColorDodge","ColorBurn","HardLight","SoftLight","Difference","Exclusion","Hue","Saturation","Color","Luminosity","Add","mapBlendingMode","blendMode","DEFAULT_LOCAL_BOUNDS","getLayerLocalBounds","fallback","localBounds","buildComponent","itemId","buildSpriteComponent","buildTextComponent","buildShapeComponent","applyGEMask","component","effectsMask","componentId","blending","solidColor","textureDataPath","assetUrl","textureUrl","refId","textureCache","item","options","renderer","renderMode","texture","isNonDefaultAnchor","components","textInfo","textColor","textWidth","content","lineHeight","layerWidth","layerHeight","textSizeW","textSizeH","fontFamily","fontWeight","fontStyle","letterSpace","autoWidth","size","shapes","shapeData","buildShapeOptions","mapShapePrimitiveType","primitiveType","IRShapePrimitiveType","Custom","mapCustomPaths","customPaths","Rectangle","roundness","Ellipse","xRadius","yRadius","Polygon","pointCount","radius","Star","innerRadius","outerRadius","innerRoundness","outerRoundness","fills","fill","mapShapePaint","filter","strokes","stroke","strokeWidth","strokeCap","mapLineCap","strokeJoin","mapLineJoin","SHAPE_PRIMITIVE_TYPE_TO_GE","FILL_TYPE_TO_GE","IRFillType","Solid","LinearGradient","RadialGradient","AngularGradient","Texture","LINE_CAP_TO_GE","IRLineCap","Butt","Round","Square","LINE_JOIN_TO_GE","IRLineJoin","Bevel","Miter","lineCap","lineJoin","paint","colorToGE","gradientStops","GRADIENT_COLOR","startPoint","vec2ToGE","gradientStart","endPoint","gradientEnd","textureAssetUrl","scaleMode","r","g","paths","easingIns","easingOuts","indexes","point","easingIn","inTangents","easingOut","outTangents","pointIndex","close","closed","planGELayerLowering","sourceHierarchy","kind","needsPivotContainer","info","anchorScale","anchorOffset","anchorOffCenter","hasRotationAnim","hasScaleAnim","processNullLayer","layerIndex","layerToItemId","inPoint","visible","renderLevel","items","processedItems","processPrecompLayer","buildPrecompContent","precompContent","precompRefId","rawContent","cloneRecord","rawOptions","isRecord","JSON","parse","stringify","emitNullSpritePair","nullItemId","nullAnimation","nullPosition","nullTrackId","nullItem","childItemId","centerX","centerY","childPosition","childColorAnim","childTrackId","layerToComponentId","scaledW","scaledH","childScale","childItem","parentId","processParentLayer","processVisualLayer","strategy","processPivotContainerLayer","processShapeLayerMultiItem","colorAnimation","fullAnimation","rawPosition","itemScale","basePosition","shapeIdx","shapeItemId","shapeOffsetX","shapeOffsetY","shapePosition","shapeComponentId","shapeItem","DEFAULT_PLAYER_VERSION","web","native","assembleScene","finalDuration","deriveDuration","timelineAssetId","objectBindingTrackRefs","pi","tracks","compositionComponentId","compositionId","sceneBindings","allItemRefs","timelineAsset","composition","startTime","mapCompositionEndBehavior","previewSize","camera","fov","far","near","clipMode","backgroundColor","colorToRoundedRgba","version","playerVersion","fonts","plugins","compositions","geometries","materials","shaders","bins","animations","outPoint","eb","IREndBehavior","Restart","Forward","Freeze","Destroy","applyParenting","layers","layerByIndex","Map","itemById","parentLayer","parentItemId","parentAnchor","adjustX","adjustY","applyMasks","lookup","maskSlotMeta","componentById","comp","maskData","isMaskExactCrop","layerItemId","getItemId","layerComponentId","getComponentId","buildMaskForLayer","maskItemId","maskComponentId","maskBounds","getMaskBounds","anchorX","anchorY","maskPosX","cx","maskPosY","cy","timing","maskDuration","layerIsParent","isParentLayer","isAutoMask","maskArea","hasDescendants","hasClaimableRendererDescendants","maskItem","maskComponent","isSimpleRectMask","isMask","alphaMaskEnabled","buildPolygonMaskComponent","applyMaskReferenceToDescendants","targetComponent","buildMaskRef","area","maskTrackId","reference","inverted","visit","targetParentId","endsWith","componentRefs","compRef","shouldClaimMaskSlot","hasExistingMask","existing","isCurrentAutoMask","currentMaskArea","computePointBounds","minX","Infinity","minY","maxX","maxY","min","maskW","maskH","precompW","precompH","tangent","customPoints","customEasingIns","customEasingOuts","customIndexes","idx","pt","ei","eo","applyGEMaskRemap","GEComponentIdToNewId","oldId","newId","normalizeChildVisibilityByParentDelays","independentLifetimeChildItemIds","Set","processedByItemId","miscById","misc","advanceIndependentLifetimeParents","effectiveDelayCache","getEffectiveDelay","visited","has","add","sortedItems","topologicalSort","parentItem","originalDelay","originalDuration","effectiveDelay","parentDuration","isPrecompChild","newDuration","timeDiff","syncTimelineClips","parentAdvanceMap","parentExtendMap","childDelay","childDuration","parentDelay","advance","childEnd","parentEnd","extend","allParentIds","newDelay","processed","obt","childRef","childTrack","sorted","processedItem","trackType","applyPostProcess","state","applyParentingStep","applySharedMaskPostProcess","applyGEMaskRemapStep","applyVisibilityStep","maskLookup","OMIT","normalizeJsonValue","normalize","inArray","Number","isFinite","is","normalizedItem","Reflect","getPrototypeOf","entries","convertIRToGE","validateIRCompositionOrThrow","parentIndexSet","workingIR","getLayersWithExtendedParentEndFrames","processLayer","GEComponentId","sourceComponentId","reverse","mergePreservedPrecompScene","hasGEPrecompMetadata","clonedLayers","maxEnd","child","generated","pool","mergePool","asArray","sourceScene","entry","isExcludedPoolEntry","excluded","sourceCompositionId","collectRootCompositionIds","pools","asRecordArray","indexById","rootComposition","find","asDataPathArray","componentRef","itemRef","collectItemAndOwnedComponents","readDataPathId","collectMiscGraph","binding","miscId","preserved","seen","poolEntryKey","cloneJson","buildPoolIndex","resolveDataPath","ref","resolveDataPathId","reverseEndBehavior","GEBehavior","reverseCompositionEndBehavior","buildSceneContext","scene","c","bg","compositionName","imageById","textureById","itemIdToTrackId","buildSceneBindings","compositionComponent","findCompositionComponent","bindings","compRefs","getCompositionItemIds","itemRefs","parseTimeline","objectBindingTrack","childRefs","transformAsset","spriteColorAsset","assetRef","convert3dTo2dPoint","effectiveRatio","px","py","parseStaticTransform","itemTransform","channels","pos2d","sv","isDefault","inverseLerp","range","parseBezierKeyframes","segments","extractSegments","firstSeg","hasPrependedHold","shift","isHold","prevInCpX","prevInCpY","prevT0","prevV0","prevT1","prevV1","lastSeg","lastT1","lastV1","lastFrameTime","lastInTangent","data","nextEntry","nextType","nextData","parsePositionTimingKeyframes","parseTransformAnimation","posOverLifetime","posAnim","parsePositionAnimation","rotOverLifetime","parseRotationAnimation","scaleAnim","parseScaleAnimation","parseOpacityAnimation","valueType","pathData","payload","controlPointsRaw","timingKfs","startIdx","firstPP","secondPP","pendingSpatialIn","kfIndex","pendingSI","segIdx","cp1Idx","cp2Idx","ppStart","ppEnd","ppStart2d","ppEnd2d","cp1_2d","cp2_2d","xData","yData","zData","parseScalarChannel","xKeyframed","yKeyframed","zKeyframed","xStaticValue","yStaticValue","zStaticValue","xKfs","yKfs","zKfs","allFrames","sortedFrames","sort","xv","findValueAtFrame","yv","zv","defaultValue","IR_BLEND_MODE_BY_GE","IRBlendMode","reverseBlendMode","GECode","parseComponent","compId","parseSpriteComponent","parseTextComponent","parseShapeComponent","rawMask","textureRef","sourceRef","image","isWhite","textAlignNum","parseShapeOptions","GEType","reverseShapePrimitiveType","style","GEFills","f","reverseShapePaint","GEStrokes","s","GEStrokeWidth","GEStrokeCap","reverseLineCap","GEStrokeJoin","reverseLineJoin","reverseCustomPaths","firstPath","readScaledNumber","readOptionalNumberField","readPointCount","GE_TO_SHAPE_PRIMITIVE_TYPE","typeMap","gradientStopsRaw","stops","resolveTextureAsset","isTextureScaleMode","shape","pathInTangents","pathOutTangents","isInteger","trim","reverseLayerTiming","mergeNullSpritePairs","descriptors","childByParentId","desc","mergedChildIds","mergeMap","isNull","onlyChild","childType","isVisual","sameName","hasNoComponents","hasVisualComponent","hasSplitPairTiming","hasParentTransformSignal","hasNoIndependentChildTransform","sameNameChild","mergeNullAndSprite","merged","parentTimeline","childTimeline","parentEndBehavior","readItemEndBehavior","childEndBehavior","nearlyEqual","timeline","hasTransformPayload","hasNonDefaultScale","hasNonDefaultEulerHint","hasNonEmptyRecord","nullDesc","childDesc","childTransform","childSize","parentEffects","childEffects","resolveHierarchy","idToIndex","idToDesc","parentIndex","parentDesc","getAnchorFromDesc","convertGEToIR","itemIds","reversedItemIds","parseItemToLayer","buildCompositionSpecific","rawTransformPassthrough","componentData","itemSize","readItemSize","textBounds","readTextBounds","staticChannels","animChannels","rawPassthrough","posOL","rotOL","sizeOL","rawColorOverLifetime","col","anchorInfo","reverseGenericAnchor","hasStaticScale","scaleAdjustX","scaleAdjustY","totalX","totalY","hasPrecompItem","readLottieSpecific","lottie"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/scene.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/composition.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/number-expression.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/base-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-shape.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/light.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/mesh.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/camera.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/material.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/render.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/text.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-component-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-primitive-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-stroke-param.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/animation-graph/graph-node-datas.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/assets.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/data-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/geometry-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/index.js","../src/common/coordinate-mapping.ts","../src/effects-passthrough.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_type_of.js","../src/common/json-normalization.ts","../src/common/data-path.ts","../src/common/math.ts","../src/ir2ge/post-process/merge-preserved-resources.ts","../src/ir2ge/assemble.ts","../src/ir2ge/converter/timing.ts","../src/ir2ge/generator/timeline.ts","../src/ir2ge/converter/bezier.ts","../src/ir2ge/converter/transform.ts","../src/ir2ge/converter/normalized-animation.ts","../src/ir2ge/converter/animation.ts","../src/ir2ge/mapping.ts","../src/ir2ge/generator/component.ts","../src/ir2ge/converter/layer-strategy.ts","../src/ir2ge/generator/layer.ts","../src/ir2ge/post-process/parenting.ts","../src/ir2ge/post-process/mask.ts","../src/ir2ge/post-process/ge-mask-remap.ts","../src/ir2ge/post-process/visibility.ts","../src/ir2ge/post-process/index.ts","../src/ir2ge/index.ts","../src/ge2ir/assemble.ts","../src/ge2ir/mapping.ts","../src/ge2ir/parser/scene.ts","../src/ge2ir/parser/keyframe.ts","../src/ge2ir/parser/animation.ts","../src/ge2ir/parser/component.ts","../src/ge2ir/parser/timeline.ts","../src/ge2ir/parser/transform.ts","../src/ge2ir/parser/layer.ts","../src/ge2ir/post-process.ts","../src/ge2ir/index.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","/**\n * JSON 版本\n */\nexport var JSONSceneVersion;\n(function (JSONSceneVersion) {\n JSONSceneVersion[\"1_0\"] = \"1.0\";\n JSONSceneVersion[\"1_1\"] = \"1.1\";\n JSONSceneVersion[\"1_2\"] = \"1.2\";\n JSONSceneVersion[\"1_3\"] = \"1.3\";\n JSONSceneVersion[\"1_5\"] = \"1.5\";\n JSONSceneVersion[\"1_8\"] = \"1.8\";\n JSONSceneVersion[\"2_0\"] = \"2.0\";\n JSONSceneVersion[\"2_1\"] = \"2.1\";\n JSONSceneVersion[\"2_2\"] = \"2.2\";\n JSONSceneVersion[\"2_3\"] = \"2.3\";\n JSONSceneVersion[\"2_4\"] = \"2.4\";\n JSONSceneVersion[\"3_0\"] = \"3.0\";\n JSONSceneVersion[\"3_1\"] = \"3.1\";\n JSONSceneVersion[\"3_2\"] = \"3.2\";\n JSONSceneVersion[\"3_3\"] = \"3.3\";\n JSONSceneVersion[\"3_4\"] = \"3.4\";\n JSONSceneVersion[\"3_5\"] = \"3.5\";\n JSONSceneVersion[\"3_6\"] = \"3.6\";\n JSONSceneVersion[\"LATEST\"] = \"3.6\";\n})(JSONSceneVersion || (JSONSceneVersion = {}));\n","/*********************************************/\n/* 元素属性参数类型 */\n/*********************************************/\n/**\n * 渲染等级\n */\nexport var RenderLevel;\n(function (RenderLevel) {\n RenderLevel[\"S\"] = \"S\";\n RenderLevel[\"APlus\"] = \"A+\";\n RenderLevel[\"A\"] = \"A\";\n RenderLevel[\"BPlus\"] = \"B+\";\n RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nexport var BlendingMode;\n(function (BlendingMode) {\n /**\n * 普通混合模式\n */\n BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n /**\n * 叠加混合模式\n */\n BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n /**\n * 相乘混合模式\n */\n BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n /**\n * 亮度混合模式\n */\n BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n /**\n * 减色混合模式\n */\n BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n /**\n * 强光混合模式\n */\n BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n /**\n * 弱光混合模式\n */\n BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n /**\n * 亮度叠加混合模式\n */\n BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nexport var SideMode;\n(function (SideMode) {\n /**\n * 双面模式\n */\n SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n /**\n * 正面模式\n */\n SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n /**\n * 背面模式\n */\n SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n * 元素是否被蒙版遮挡/反向遮挡\n */\nexport var ObscuredMode;\n(function (ObscuredMode) {\n /**\n * 无\n */\n // NONE = 0,\n // /**\n // * 蒙版\n // */\n // MASK = 1,\n /**\n * 被遮挡\n */\n ObscuredMode[ObscuredMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n /**\n * 被反向遮挡\n */\n ObscuredMode[ObscuredMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(ObscuredMode || (ObscuredMode = {}));\n/**\n * 发射器形状\n */\nexport var ParticleEmitterShapeType;\n(function (ParticleEmitterShapeType) {\n /**\n * 没有类型\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"NONE\"] = 0] = \"NONE\";\n /**\n * 圆球\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n /**\n * 圆锥\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"CONE\"] = 2] = \"CONE\";\n /**\n * 半球\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n /**\n * 圆\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n /**\n * 圆环\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"DONUT\"] = 5] = \"DONUT\";\n /**\n * 矩形\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n /**\n * 矩形框\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n /**\n * 直线\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"EDGE\"] = 8] = \"EDGE\";\n /**\n * 贴图\n */\n ParticleEmitterShapeType[ParticleEmitterShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ParticleEmitterShapeType || (ParticleEmitterShapeType = {}));\n/**\n * 插件类型\n */\nexport var PluginType;\n(function (PluginType) {\n /**\n * 陀螺仪\n */\n PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n /**\n * Spine\n */\n PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nexport var InteractType;\n(function (InteractType) {\n /**\n * 点击\n */\n InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n /**\n * 消息\n * 前端收到 onMessageItem 回调\n */\n InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n /**\n * 拖拽\n */\n InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nexport var InteractBehavior;\n(function (InteractBehavior) {\n /**\n * 无\n */\n InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n /**\n * 通知\n */\n InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n /**\n * 重置播放器\n */\n InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n /**\n * 清除元素\n */\n InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n /**\n * 暂停播放器\n */\n InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nexport var ItemType;\n(function (ItemType) {\n /**\n * 错误元素\n */\n ItemType[\"base\"] = \"0\";\n /**\n * 图层元素\n */\n ItemType[\"sprite\"] = \"1\";\n /**\n * 粒子元素\n */\n ItemType[\"particle\"] = \"2\";\n /**\n * 空节点元素\n */\n ItemType[\"null\"] = \"3\";\n /**\n * 交互元素\n */\n ItemType[\"interact\"] = \"4\";\n /**\n * 插件元素\n */\n ItemType[\"plugin\"] = \"5\";\n /**\n * 相机元素\n */\n ItemType[\"camera\"] = \"6\";\n /**\n * 预合成元素\n */\n ItemType[\"composition\"] = \"7\";\n /**\n * Spine 元素\n */\n ItemType[\"spine\"] = \"spine\";\n /**\n * Mesh 元素\n */\n ItemType[\"mesh\"] = \"mesh\";\n /**\n * 节点树元素\n */\n ItemType[\"tree\"] = \"tree\";\n /**\n * 文本元素\n */\n ItemType[\"text\"] = \"text\";\n /**\n * 灯光元素\n */\n ItemType[\"light\"] = \"light\";\n /**\n * 天空盒元素\n */\n ItemType[\"skybox\"] = \"skybox\";\n /**\n * 特效元素\n */\n ItemType[\"effect\"] = \"effect\";\n /**\n * 形状元素\n */\n ItemType[\"shape\"] = \"shape\";\n /**\n * 后处理元素\n */\n ItemType[\"postProcessVolume\"] = \"postProcessVolume\";\n /**\n * 节点元素\n */\n ItemType[\"node\"] = \"node\";\n /**\n * 视频元素\n */\n ItemType[\"video\"] = \"video\";\n /**\n * 音频元素\n */\n ItemType[\"audio\"] = \"audio\";\n /**\n * 富文本元素\n */\n ItemType[\"richtext\"] = \"richtext\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nexport var RenderMode;\n(function (RenderMode) {\n /**\n * 广告牌模式\n */\n RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n /**\n * 网格模式\n */\n RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n /**\n * 垂直广告牌模式\n */\n RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n /**\n * 水平广告牌模式\n */\n RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nexport var ParticleOrigin;\n(function (ParticleOrigin) {\n /**\n * 水平和垂直中点\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n /**\n * 水平左侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n /**\n * 水平左侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n /**\n * 水平左侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n /**\n * 水平中间 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n /**\n * 水平中间 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n /**\n * 水平右侧 垂直顶部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n /**\n * 水平右侧 垂直中间\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n /**\n * 水平右侧 垂直底部\n */\n ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\nexport var RenderType;\n(function (RenderType) {\n RenderType[\"Opaque\"] = \"Opaque\";\n RenderType[\"Transparent\"] = \"Transparent\";\n})(RenderType || (RenderType = {}));\nexport var RenderFace;\n(function (RenderFace) {\n RenderFace[\"Both\"] = \"Both\";\n RenderFace[\"Back\"] = \"Back\";\n RenderFace[\"Front\"] = \"Front\";\n})(RenderFace || (RenderFace = {}));\n","import { CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL } from './constants';\nexport var CameraClipMode;\n(function (CameraClipMode) {\n /**\n * 剪裁上下\n */\n CameraClipMode[CameraClipMode[\"portrait\"] = 1] = \"portrait\";\n /**\n * 剪裁左右\n */\n CameraClipMode[CameraClipMode[\"landscape\"] = 0] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n","/*********************************************/\n/* 基本数值属性参数 */\n/*********************************************/\nexport var ValueType;\n(function (ValueType) {\n /**\n * 常数\n */\n ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n /**\n * 二维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n /**\n * 三维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n /**\n * 四维常数向量\n */\n ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n /**\n * 随机数\n */\n ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n /**\n * 直线\n */\n ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n /**\n * 曲线\n */\n ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n /**\n * 贝塞尔路径\n */\n ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n /**\n * 颜色\n */\n ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n /**\n * 渐变色\n */\n ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n /**\n * 蒙版形状点集\n */\n ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n /**\n * 蒙版形状切分\n */\n ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n /**\n * 直线路径\n */\n ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n /**\n * 多色\n */\n ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n /**\n * 二进制指针\n */\n ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n /**\n * 贝塞尔曲线\n */\n ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n /**\n * 贝塞尔曲线路径\n */\n ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n /**\n * 贝塞尔曲线四元数\n */\n ValueType[ValueType[\"BEZIER_CURVE_QUAT\"] = 23] = \"BEZIER_CURVE_QUAT\";\n /**\n * 颜色曲线\n */\n ValueType[ValueType[\"COLOR_CURVE\"] = 24] = \"COLOR_CURVE\";\n /**\n * Vector4 曲线\n */\n ValueType[ValueType[\"VECTOR4_CURVE\"] = 25] = \"VECTOR4_CURVE\";\n /**\n * Vector2 曲线\n */\n ValueType[ValueType[\"VECTOR2_CURVE\"] = 26] = \"VECTOR2_CURVE\";\n /**\n * Vector3 曲线\n */\n ValueType[ValueType[\"VECTOR3_CURVE\"] = 27] = \"VECTOR3_CURVE\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nexport var BezierKeyframeType;\n(function (BezierKeyframeType) {\n BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n","import { END_BEHAVIOR_DESTROY, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_RESTART, } from '../constants';\n/**\n * 结束行为\n */\nexport var EndBehavior;\n(function (EndBehavior) {\n /**\n * 销毁\n */\n EndBehavior[EndBehavior[\"destroy\"] = 0] = \"destroy\";\n /**\n * 重播\n */\n EndBehavior[EndBehavior[\"restart\"] = 5] = \"restart\";\n /**\n * 无限播放\n */\n EndBehavior[EndBehavior[\"forward\"] = 2] = \"forward\";\n /**\n * 冻结\n */\n EndBehavior[EndBehavior[\"freeze\"] = 4] = \"freeze\";\n})(EndBehavior || (EndBehavior = {}));\n","/**\n * 粒子交互行为\n */\nexport var ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n /**\n * 无\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n /**\n * 移出粒子\n */\n ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n","export var ShapeArcMode;\n(function (ShapeArcMode) {\n /**\n * 随机\n */\n ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n /**\n * 单向循环\n */\n ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n /**\n * 双向循环\n */\n ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n /**\n * 均匀爆发\n */\n ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n","export var LightType;\n(function (LightType) {\n /**\n * 点光源\n */\n LightType[\"point\"] = \"point\";\n /**\n * 聚光灯\n */\n LightType[\"spot\"] = \"spot\";\n /**\n * 方向光\n */\n LightType[\"directional\"] = \"directional\";\n /**\n * 环境光\n */\n LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n","export var ModelBoundingType;\n(function (ModelBoundingType) {\n ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n","export var CameraType;\n(function (CameraType) {\n CameraType[\"orthographic\"] = \"orthographic\";\n CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n","// 材质类型\nexport var MaterialType;\n(function (MaterialType) {\n MaterialType[\"unlit\"] = \"unlit\";\n MaterialType[\"pbr\"] = \"pbr\";\n // 头发材质,在 pbr 材质基础上扩展\n MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nexport var MaterialBlending;\n(function (MaterialBlending) {\n MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n","/**\n * 3D渲染模式:将渲染过程中的中间结果输出,主要用于排查渲染效果问题,支持 pbr 和 unlit 材质\n */\nexport var RenderMode3D;\n(function (RenderMode3D) {\n /**\n * 正常渲染\n */\n RenderMode3D[\"none\"] = \"none\";\n /**\n * 纹理坐标\n */\n RenderMode3D[\"uv\"] = \"uv\";\n /**\n * 世界坐标法线\n */\n RenderMode3D[\"normal\"] = \"normal\";\n /**\n * 基础颜色\n */\n RenderMode3D[\"basecolor\"] = \"basecolor\";\n /**\n * 基础颜色 Alpha\n */\n RenderMode3D[\"alpha\"] = \"alpha\";\n /**\n * 金属度\n */\n RenderMode3D[\"metallic\"] = \"metallic\";\n /**\n * 粗超度\n */\n RenderMode3D[\"roughness\"] = \"roughness\";\n /**\n * 环境遮蔽\n */\n RenderMode3D[\"ao\"] = \"ao\";\n /**\n * 自发光\n */\n RenderMode3D[\"emissive\"] = \"emissive\";\n /**\n * 漫反射\n */\n RenderMode3D[\"diffuse\"] = \"diffuse\";\n})(RenderMode3D || (RenderMode3D = {}));\n","export var TextOverflow;\n(function (TextOverflow) {\n /**\n * visible 模式下,文本内容超出边界框时,会继续显示内容,不进行裁剪或缩放。\n */\n TextOverflow[TextOverflow[\"visible\"] = 0] = \"visible\";\n /**\n * display 模式下,会显示所有文本,文本字号大小会根据边界框调整。\n */\n TextOverflow[TextOverflow[\"display\"] = 1] = \"display\";\n /**\n * clip 模式下,当文本内容超出边界框时,多余的会被截断。\n */\n TextOverflow[TextOverflow[\"clip\"] = 2] = \"clip\";\n /**\n * ellipsis 模式下,会使用(...)来代替超出边界框的内容。\n */\n TextOverflow[TextOverflow[\"ellipsis\"] = 3] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nexport var TextSizeMode;\n(function (TextSizeMode) {\n /**\n * 自适应宽度\n */\n TextSizeMode[TextSizeMode[\"autoWidth\"] = 0] = \"autoWidth\";\n /**\n * 自适应高度\n */\n TextSizeMode[TextSizeMode[\"autoHeight\"] = 1] = \"autoHeight\";\n /**\n * 固定宽高\n */\n TextSizeMode[TextSizeMode[\"fixed\"] = 2] = \"fixed\";\n})(TextSizeMode || (TextSizeMode = {}));\nexport var TextBaseline;\n(function (TextBaseline) {\n /**\n * 文本顶对齐。\n */\n TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nexport var TextAlignment;\n(function (TextAlignment) {\n /**\n * text alignment starts from(x,y) to right direction\n * 从 (x,y) 开始第一个字符,向右边延伸\n */\n TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n /**\n * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n * (x,y) 为文字中间位置,(最左位置 + 最右位置)/2 = (x,y)\n */\n TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n /**\n * text alignment ends with(x,y) from left direction\n * 从 (x,y) 结束最后一个字符,向左边延伸\n */\n TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\nexport var TextVerticalAlign;\n(function (TextVerticalAlign) {\n /**\n * 文本顶对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"top\"] = 0] = \"top\";\n /**\n * 文本垂直居中对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"middle\"] = 1] = \"middle\";\n /**\n * 文本底对齐。\n */\n TextVerticalAlign[TextVerticalAlign[\"bottom\"] = 2] = \"bottom\";\n})(TextVerticalAlign || (TextVerticalAlign = {}));\n/**\n * 文本字重\n */\nexport var TextWeight;\n(function (TextWeight) {\n /**\n * 正常\n */\n TextWeight[\"normal\"] = \"normal\";\n /**\n * 粗体\n */\n TextWeight[\"bold\"] = \"bold\";\n /**\n * 瘦体\n */\n TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nexport var FontStyle;\n(function (FontStyle) {\n /**\n * 正常\n */\n FontStyle[\"normal\"] = \"normal\";\n /**\n * 斜体\n */\n FontStyle[\"italic\"] = \"italic\";\n /**\n * 倾斜体\n */\n FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n","export var FillType;\n(function (FillType) {\n FillType[FillType[\"Solid\"] = 0] = \"Solid\";\n FillType[FillType[\"GradientLinear\"] = 1] = \"GradientLinear\";\n FillType[FillType[\"GradientRadial\"] = 2] = \"GradientRadial\";\n FillType[FillType[\"GradientAngular\"] = 3] = \"GradientAngular\";\n FillType[FillType[\"Texture\"] = 4] = \"Texture\";\n})(FillType || (FillType = {}));\nexport var TexturePaintScaleMode;\n(function (TexturePaintScaleMode) {\n TexturePaintScaleMode[TexturePaintScaleMode[\"Fill\"] = 0] = \"Fill\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Fit\"] = 1] = \"Fit\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Crop\"] = 2] = \"Crop\";\n TexturePaintScaleMode[TexturePaintScaleMode[\"Tile\"] = 3] = \"Tile\";\n})(TexturePaintScaleMode || (TexturePaintScaleMode = {}));\n","/**\n * 矢量图形类型\n */\nexport var ShapePrimitiveType;\n(function (ShapePrimitiveType) {\n /**\n * 自定义图形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Custom\"] = 0] = \"Custom\";\n /**\n * 矩形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Rectangle\"] = 1] = \"Rectangle\";\n /**\n * 椭圆\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Ellipse\"] = 2] = \"Ellipse\";\n /**\n * 多边形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Polygon\"] = 3] = \"Polygon\";\n /**\n * 星形\n */\n ShapePrimitiveType[ShapePrimitiveType[\"Star\"] = 4] = \"Star\";\n})(ShapePrimitiveType || (ShapePrimitiveType = {}));\n","export var LineCap;\n(function (LineCap) {\n /** 默认值。向线条的每个末端添加平直的边缘 */\n LineCap[LineCap[\"Butt\"] = 0] = \"Butt\";\n /** 向线条的每个末端添加圆形线帽 */\n LineCap[LineCap[\"Round\"] = 1] = \"Round\";\n /** 向线条的每个末端添加正方形线帽 */\n LineCap[LineCap[\"Square\"] = 2] = \"Square\";\n})(LineCap || (LineCap = {}));\nexport var LineJoin;\n(function (LineJoin) {\n /** 创建圆角 */\n LineJoin[LineJoin[\"Round\"] = 0] = \"Round\";\n /** 创建斜角 */\n LineJoin[LineJoin[\"Bevel\"] = 1] = \"Bevel\";\n /** 创建尖角 */\n LineJoin[LineJoin[\"Miter\"] = 2] = \"Miter\";\n})(LineJoin || (LineJoin = {}));\n","export var NodeDataType;\n(function (NodeDataType) {\n NodeDataType[\"AnimationClipNodeData\"] = \"AnimationClipNodeData\";\n NodeDataType[\"BlendNodeData\"] = \"BlendNodeData\";\n NodeDataType[\"ApplyAdditiveNodeData\"] = \"ApplyAdditiveNodeData\";\n NodeDataType[\"LayerBlendNodeData\"] = \"LayerBlendNodeData\";\n NodeDataType[\"StateMachineNodeData\"] = \"StateMachineNodeData\";\n NodeDataType[\"TransitionNodeData\"] = \"TransitionNodeData\";\n NodeDataType[\"StateNodeData\"] = \"StateNodeData\";\n NodeDataType[\"ConstFloatNodeData\"] = \"ConstFloatNodeData\";\n NodeDataType[\"ConstBoolNodeData\"] = \"ConstBoolNodeData\";\n NodeDataType[\"ControlParameterBoolNodeData\"] = \"ControlParameterBoolNodeData\";\n NodeDataType[\"ControlParameterFloatNodeData\"] = \"ControlParameterFloatNodeData\";\n NodeDataType[\"ControlParameterTriggerNodeData\"] = \"ControlParameterTriggerNodeData\";\n NodeDataType[\"NotNodeData\"] = \"NotNodeData\";\n NodeDataType[\"AndNodeData\"] = \"AndNodeData\";\n NodeDataType[\"OrNodeData\"] = \"OrNodeData\";\n NodeDataType[\"EqualNodeData\"] = \"EqualNodeData\";\n NodeDataType[\"GreaterNodeData\"] = \"GreaterNodeData\";\n NodeDataType[\"LessNodeData\"] = \"LessNodeData\";\n})(NodeDataType || (NodeDataType = {}));\n","/**\n * 动态换图类型\n * @since 1.1.0\n */\nexport var BackgroundType;\n(function (BackgroundType) {\n BackgroundType[\"video\"] = \"video\";\n BackgroundType[\"image\"] = \"image\";\n})(BackgroundType || (BackgroundType = {}));\n/**\n * 多媒体资源类型\n * @since 2.1.0\n */\nexport var MultimediaType;\n(function (MultimediaType) {\n MultimediaType[\"video\"] = \"video\";\n MultimediaType[\"audio\"] = \"audio\";\n})(MultimediaType || (MultimediaType = {}));\nexport var HevcVideoCodec;\n(function (HevcVideoCodec) {\n HevcVideoCodec[\"L30\"] = \"hev1.1.0.L30.B0\";\n HevcVideoCodec[\"L60\"] = \"hev1.1.0.L60.B0\";\n HevcVideoCodec[\"L63\"] = \"hev1.1.0.L63.B0\";\n HevcVideoCodec[\"L90\"] = \"hev1.1.0.L90.B0\";\n HevcVideoCodec[\"L93\"] = \"hev1.1.0.L93.B0\";\n HevcVideoCodec[\"L120\"] = \"hev1.1.0.L120.B0\";\n HevcVideoCodec[\"L150\"] = \"hev1.1.0.L150.B0\";\n HevcVideoCodec[\"L180\"] = \"hev1.1.0.L180.B0\";\n})(HevcVideoCodec || (HevcVideoCodec = {}));\n","export var DataType;\n(function (DataType) {\n DataType[\"VFXItemData\"] = \"VFXItemData\";\n // Assets\n DataType[\"Material\"] = \"Material\";\n DataType[\"Shader\"] = \"Shader\";\n DataType[\"Geometry\"] = \"Geometry\";\n DataType[\"Texture\"] = \"Texture\";\n DataType[\"Image\"] = \"Image\";\n DataType[\"AnimationClip\"] = \"AnimationClip\";\n DataType[\"BinaryAsset\"] = \"BinaryAsset\";\n // Timeline\n DataType[\"TrackAsset\"] = \"TrackAsset\";\n DataType[\"TimelineAsset\"] = \"TimelineAsset\";\n DataType[\"ObjectBindingTrack\"] = \"ObjectBindingTrack\";\n DataType[\"TransformTrack\"] = \"TransformTrack\";\n DataType[\"SpriteColorTrack\"] = \"SpriteColorTrack\";\n DataType[\"ActivationTrack\"] = \"ActivationTrack\";\n DataType[\"SubCompositionTrack\"] = \"SubCompositionTrack\";\n DataType[\"FloatPropertyTrack\"] = \"FloatPropertyTrack\";\n DataType[\"ColorPropertyTrack\"] = \"ColorPropertyTrack\";\n DataType[\"Vector2PropertyTrack\"] = \"Vector2PropertyTrack\";\n DataType[\"Vector3PropertyTrack\"] = \"Vector3PropertyTrack\";\n DataType[\"Vector4PropertyTrack\"] = \"Vector4PropertyTrack\";\n DataType[\"TransformPlayableAsset\"] = \"TransformPlayableAsset\";\n DataType[\"SpriteColorPlayableAsset\"] = \"SpriteColorPlayableAsset\";\n DataType[\"ActivationPlayableAsset\"] = \"ActivationPlayableAsset\";\n DataType[\"SubCompositionPlayableAsset\"] = \"SubCompositionPlayableAsset\";\n DataType[\"FloatPropertyPlayableAsset\"] = \"FloatPropertyPlayableAsset\";\n DataType[\"ColorPropertyPlayableAsset\"] = \"ColorPropertyPlayableAsset\";\n DataType[\"Vector2PropertyPlayableAsset\"] = \"Vector2PropertyPlayableAsset\";\n DataType[\"Vector3PropertyPlayableAsset\"] = \"Vector3PropertyPlayableAsset\";\n DataType[\"Vector4PropertyPlayableAsset\"] = \"Vector4PropertyPlayableAsset\";\n // Components\n DataType[\"MeshComponent\"] = \"MeshComponent\";\n DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n DataType[\"LightComponent\"] = \"LightComponent\";\n DataType[\"CameraComponent\"] = \"CameraComponent\";\n DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n DataType[\"TreeComponent\"] = \"TreeComponent\";\n DataType[\"AnimationComponent\"] = \"AnimationComponent\";\n DataType[\"SpineComponent\"] = \"SpineComponent\";\n DataType[\"VideoComponent\"] = \"VideoComponent\";\n DataType[\"AudioComponent\"] = \"AudioComponent\";\n DataType[\"RichTextComponent\"] = \"RichTextComponent\";\n DataType[\"OrientationComponent\"] = \"OrientationComponent\";\n DataType[\"ShapeComponent\"] = \"ShapeComponent\";\n DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n DataType[\"InteractComponent\"] = \"InteractComponent\";\n DataType[\"CameraController\"] = \"CameraController\";\n DataType[\"PostProcessVolume\"] = \"PostProcessVolume\";\n DataType[\"EffectComponent\"] = \"EffectComponent\";\n DataType[\"TextComponent\"] = \"TextComponent\";\n DataType[\"AnimationGraphAsset\"] = \"AnimationGraphAsset\";\n DataType[\"CompositionComponent\"] = \"CompositionComponent\";\n DataType[\"FFDComponent\"] = \"FFDComponent\";\n DataType[\"Animator\"] = \"Animator\";\n // Non-EffectObject\n DataType[\"TimelineClip\"] = \"TimelineClip\";\n})(DataType || (DataType = {}));\n","export var GeometryType;\n(function (GeometryType) {\n /**\n * Draw single points.\n */\n GeometryType[GeometryType[\"POINTS\"] = 0] = \"POINTS\";\n /**\n * Draw lines. Each vertex connects to the one after it.\n */\n GeometryType[GeometryType[\"LINES\"] = 1] = \"LINES\";\n /**\n * Draw lines. Each set of two vertices is treated as a separate line segment.\n */\n GeometryType[GeometryType[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n /**\n * Draw a connected group of line segments from the first vertex to the last.\n */\n GeometryType[GeometryType[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n /**\n * Draw triangles. Each set of three vertices creates a separate triangle.\n */\n GeometryType[GeometryType[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n /**\n * Draw a connected strip of triangles.\n */\n GeometryType[GeometryType[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n /**\n * Draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan.\n */\n GeometryType[GeometryType[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n})(GeometryType || (GeometryType = {}));\nexport var VertexFormatType;\n(function (VertexFormatType) {\n VertexFormatType[VertexFormatType[\"Float16\"] = 0] = \"Float16\";\n VertexFormatType[VertexFormatType[\"Float32\"] = 1] = \"Float32\";\n VertexFormatType[VertexFormatType[\"Int8\"] = 2] = \"Int8\";\n VertexFormatType[VertexFormatType[\"Int16\"] = 3] = \"Int16\";\n VertexFormatType[VertexFormatType[\"Int32\"] = 4] = \"Int32\";\n VertexFormatType[VertexFormatType[\"UInt8\"] = 5] = \"UInt8\";\n VertexFormatType[VertexFormatType[\"UInt16\"] = 6] = \"UInt16\";\n VertexFormatType[VertexFormatType[\"UInt32\"] = 7] = \"UInt32\";\n})(VertexFormatType || (VertexFormatType = {}));\nexport var IndexFormatType;\n(function (IndexFormatType) {\n IndexFormatType[IndexFormatType[\"None\"] = -1] = \"None\";\n IndexFormatType[IndexFormatType[\"UInt8\"] = 0] = \"UInt8\";\n IndexFormatType[IndexFormatType[\"UInt16\"] = 1] = \"UInt16\";\n IndexFormatType[IndexFormatType[\"UInt32\"] = 2] = \"UInt32\";\n})(IndexFormatType || (IndexFormatType = {}));\n// BINORMAL[n]\tBinormal\tfloat4\n// BLENDINDICES[n]\t混合索引\tuint\n// BLENDWEIGHT[n]\t混合权重\tFLOAT\n// COLOR[n]\t漫射和反射颜色\tfloat4\n// NORMAL[n]\t法向矢量\tfloat4\n// POSITION[n]\t对象空间中的顶点位置。\tfloat4\n// POSITIONT\t变换的顶点位置。\tfloat4\n// PSIZE[n]\t点大小\tFLOAT\n// TANGENT[n]\t正切\tfloat4\n// TEXCOORD[n]\t纹理坐标\tfloat4\n// POSITION_BS[n]\tBlend Shape 空间中的顶点位置\tfloat4\n// NORMAL_BS[n]\tBlend Shape 空间中的法向矢量\tfloat4\n// TANGENT_BS[n]\tBlend Shape 空间中的正切矢量\tfloat4\nexport var VertexBufferSemantic;\n(function (VertexBufferSemantic) {\n VertexBufferSemantic[\"Position\"] = \"POSITION\";\n VertexBufferSemantic[\"Uv\"] = \"TEXCOORD0\";\n VertexBufferSemantic[\"Uv2\"] = \"TEXCOORD1\";\n VertexBufferSemantic[\"Normal\"] = \"NORMAL\";\n VertexBufferSemantic[\"Tangent\"] = \"TANGENT\";\n VertexBufferSemantic[\"Color\"] = \"COLOR\";\n VertexBufferSemantic[\"Joints\"] = \"JOINTS\";\n VertexBufferSemantic[\"Weights\"] = \"WEIGHTS\";\n //\n VertexBufferSemantic[\"PositionBS0\"] = \"POSITION_BS0\";\n VertexBufferSemantic[\"PositionBS1\"] = \"POSITION_BS1\";\n VertexBufferSemantic[\"PositionBS2\"] = \"POSITION_BS2\";\n VertexBufferSemantic[\"PositionBS3\"] = \"POSITION_BS3\";\n VertexBufferSemantic[\"PositionBS4\"] = \"POSITION_BS4\";\n VertexBufferSemantic[\"PositionBS5\"] = \"POSITION_BS5\";\n VertexBufferSemantic[\"PositionBS6\"] = \"POSITION_BS6\";\n VertexBufferSemantic[\"PositionBS7\"] = \"POSITION_BS7\";\n VertexBufferSemantic[\"NormalBS0\"] = \"NORMAL_BS0\";\n VertexBufferSemantic[\"NormalBS1\"] = \"NORMAL_BS1\";\n VertexBufferSemantic[\"NormalBS2\"] = \"NORMAL_BS2\";\n VertexBufferSemantic[\"NormalBS3\"] = \"NORMAL_BS3\";\n VertexBufferSemantic[\"TangentBS0\"] = \"TANGENT_BS0\";\n VertexBufferSemantic[\"TangentBS1\"] = \"TANGENT_BS1\";\n VertexBufferSemantic[\"TangentBS2\"] = \"TANGENT_BS2\";\n VertexBufferSemantic[\"TangentBS3\"] = \"TANGENT_BS3\";\n})(VertexBufferSemantic || (VertexBufferSemantic = {}));\n","import { JSONSceneVersion } from './scene';\nexport * from './type';\nexport * from './composition';\nexport * from './texture';\nexport * from './constants';\nexport * from './number-expression';\nexport * from './scene';\nexport * from './math';\nexport * from './item';\nexport * from './item/base-item';\nexport * from './item/camera-item';\nexport * from './item/composition-item';\nexport * from './item/interact-item';\nexport * from './item/null-item';\nexport * from './item/particle-item';\nexport * from './item/particle-shape';\nexport * from './item/plugin-item';\nexport * from './item/sprite-item';\nexport * from './item/spine-item';\nexport * from './item/effect-item';\nexport * from './item/text-item';\nexport * from './item/rich-text-item';\nexport * from './item/video-item';\nexport * from './item/audio-item';\nexport * from './item/model';\nexport * from './vfx-item-data';\nexport * from './animation-clip-data';\nexport * from './binary';\nexport * from './text';\nexport * from './components';\nexport * from './buitin-object-guid';\nexport * from './shape';\nexport * from './animation-graph';\nexport * from './timeline';\nexport * from './assets';\nexport * from './render-settings';\nexport * from './curve-data';\nexport * from './data-type';\nexport * from './effects-object-data';\nexport * from './material-data';\nexport * from './geometry-data';\nexport * from './shader-data';\nexport * from './effects-package-data';\nexport const LATEST_VERSION = JSONSceneVersion.LATEST;\n","import { CameraClipMode } from '@galacean/effects-specification';\n\n/** Default camera Z position for 2D GE scenes. */\nexport const DEFAULT_CAMERA_Z = 8;\n/** Default camera field of view for 2D GE scenes. */\nexport const DEFAULT_CAMERA_FOV = 60;\n/** Default camera clipping mode for 2D GE scenes. */\nexport const DEFAULT_CLIP_MODE = CameraClipMode.portrait;\n\n/** Return the pixel-to-world scale for the given canvas. */\nexport function get2dTo3dRatio (width: number, height: number): number {\n let ratio =\n (2 / height) * DEFAULT_CAMERA_Z * Math.tan((DEFAULT_CAMERA_FOV / 2) * (Math.PI / 180)) +\n 1e-6;\n\n if (DEFAULT_CLIP_MODE === CameraClipMode.portrait) {\n ratio *= height / width;\n }\n\n return ratio;\n}\n\n/**\n * Convert a canvas point from a top-left origin to GE world space with a centered\n * origin and inverted Y axis. The Z value is included in the perspective adjustment.\n */\nexport function convert2dTo3dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const offsetX = (x - width / 2.0) * ratio * adaptRatioZ;\n const offsetY = (height / 2.0 - y) * ratio * adaptRatioZ;\n\n return [offsetX, offsetY, z];\n}\n","import type { EffectsCompositionSpecific, EffectsLayerSpecific, IRComposition, IRLayerNode } from '@vvfx/animation-ir';\n\n// Access and invalidate GE-specific data retained outside normalized IR fields.\n/** Normalized field whose conflicting Effects passthrough data should be removed. */\nexport type EffectsLayerSpecificInvalidationTarget =\n | 'position' | 'rotation' | 'scale' | 'color' | 'opacity'\n | 'anchor' | 'mask' | 'precomp';\n\n/** Return Effects passthrough data for a layer from a GE composition. */\nexport function getEffectsLayerSpecific (\n ir: IRComposition,\n layer: IRLayerNode,\n): EffectsLayerSpecific | undefined {\n return ir.source === 'effects' ? layer.specific?.effects : undefined;\n}\n\n/** Return Effects passthrough data for a GE composition. */\nexport function getEffectsCompositionSpecific (\n ir: IRComposition,\n): EffectsCompositionSpecific | undefined {\n return ir.source === 'effects' ? ir.specific?.effects : undefined;\n}\n\nconst EFFECTS_ANIMATION_SPECIFIC_KEYS = [\n 'positionOverLifetime',\n 'rotationOverLifetime',\n 'sizeOverLifetime',\n 'colorOverLifetime',\n] as const satisfies readonly (keyof EffectsLayerSpecific)[];\n\nconst KEYS_BY_INVALIDATION_TARGET: Record<\n EffectsLayerSpecificInvalidationTarget,\n readonly (keyof EffectsLayerSpecific)[]\n> = {\n position: ['positionOverLifetime'],\n rotation: ['rotationOverLifetime', 'sourceHierarchy'],\n scale: ['sizeOverLifetime', 'sourceHierarchy'],\n color: ['colorOverLifetime'],\n opacity: ['colorOverLifetime'],\n anchor: ['sourceHierarchy'],\n mask: ['mask'],\n precomp: ['precompRefId', 'precompContent'],\n};\n\n/**\n * Remove raw GE values that would otherwise shadow an edited normalized field.\n * Empty `effects` and `specific` containers are pruned so serialization stays clean.\n */\nexport function invalidateEffectsLayerSpecific (\n layer: IRLayerNode,\n target: EffectsLayerSpecificInvalidationTarget,\n): (keyof EffectsLayerSpecific)[] {\n const effects = layer.specific?.effects;\n\n if (effects == null) {\n return [];\n }\n\n const removed: (keyof EffectsLayerSpecific)[] = [];\n\n for (const key of KEYS_BY_INVALIDATION_TARGET[target]) {\n if (key in effects) {\n delete effects[key];\n removed.push(key);\n }\n }\n\n if (Object.keys(effects).length === 0 && layer.specific != null) {\n delete layer.specific.effects;\n }\n if (layer.specific != null && Object.keys(layer.specific).length === 0) {\n delete layer.specific;\n }\n\n return removed;\n}\n\n/** Whether invalidating opacity would also discard a GE color animation. */\nexport function hasEffectsColorAnimationPassthrough (layer: IRLayerNode): boolean {\n const color = layer.specific?.effects?.colorOverLifetime;\n\n if (color == null) {\n return false;\n }\n\n return Object.keys(color).some(channelKey => channelKey !== 'opacity');\n}\n\n/** Whether the layer retains any raw GE animation payload. */\nexport function hasEffectsAnimationPassthrough (layer: IRLayerNode): boolean {\n const effects = layer.specific?.effects;\n\n return effects != null && EFFECTS_ANIMATION_SPECIFIC_KEYS.some(key => effects[key] != null);\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","const OMIT = Symbol('omit-json-value');\n\ntype JsonValue = null | string | boolean | number | JsonValue[] | { [key: string]: JsonValue };\n\nexport function isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** Clone and normalize a value to its JSON-persisted runtime shape. */\nexport function normalizeJsonValue<T> (value: T): T {\n const normalized = normalize(value, '$', false);\n\n if (normalized === OMIT) {\n throw new TypeError('[ge-ir] A top-level JSON value cannot be undefined.');\n }\n\n return normalized as T;\n}\n\nfunction normalize (value: unknown, path: string, inArray: boolean): JsonValue | typeof OMIT {\n if (value === undefined) {\n return inArray ? null : OMIT;\n }\n if (value === null || typeof value === 'string' || typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) {\n throw new TypeError(`[ge-ir] Non-finite number at ${path} is not JSON-compatible.`);\n }\n\n return Object.is(value, -0) ? 0 : value;\n }\n if (Array.isArray(value)) {\n return value.map((item, index) => {\n const normalizedItem = normalize(item, `${path}[${index}]`, true);\n\n if (normalizedItem === OMIT) {\n throw new TypeError(`[ge-ir] Array item at ${path}[${index}] could not be normalized.`);\n }\n\n return normalizedItem;\n });\n }\n if (typeof value !== 'object') {\n throw new TypeError(`[ge-ir] ${typeof value} at ${path} is not JSON-compatible.`);\n }\n\n const prototype = Reflect.getPrototypeOf(value);\n\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(`[ge-ir] Non-plain object at ${path} is not JSON-compatible.`);\n }\n\n const result: Record<string, JsonValue> = {};\n\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n const normalizedItem = normalize(item, `${path}.${key}`, false);\n\n if (normalizedItem !== OMIT) {\n result[key] = normalizedItem;\n }\n }\n\n return result;\n}\n","import type { DataPath } from '@galacean/effects-specification';\nimport { v4 } from 'uuid';\nimport { isRecord } from './json-normalization';\n\ntype GERecord = Record<string, unknown>;\n\n/** GE entity pool indexed by ID. */\nexport type GEPoolIndex = Map<string, GERecord>;\n\n/** Create a 32-character hexadecimal GE entity ID. */\nexport function createId (): string {\n return v4().replace(/-/g, '');\n}\n\n/** Wrap an ID in a GE DataPath reference. */\nexport function toDataPath (id: string): DataPath {\n return { id };\n}\n\n/** Index GE pool entries by string ID. */\nexport function buildPoolIndex (pool: GERecord[] | undefined): GEPoolIndex {\n const map: GEPoolIndex = new Map();\n\n if (!Array.isArray(pool)) {\n return map;\n }\n\n for (const entry of pool) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n map.set(id, entry);\n }\n }\n\n return map;\n}\n\n/** Resolve a GE DataPath against an indexed pool. */\nexport function resolveDataPath (pool: GEPoolIndex, ref: unknown): GERecord | undefined {\n const id = resolveDataPathId(ref);\n\n return id != null ? pool.get(id) : undefined;\n}\n\n/** Return the string ID stored in a GE DataPath-like value. */\nexport function resolveDataPathId (ref: unknown): string | undefined {\n return isRecord(ref) && typeof ref['id'] === 'string' ? ref['id'] : undefined;\n}\n","/** Round a number to the given decimal precision. */\nexport function roundNumber (value: number, precision = 4): number {\n const factor = 10 ** precision;\n\n return Math.round(value * factor) / factor;\n}\n\n/** Interpolate linearly between `a` and `b`. */\nexport function lerp (a: number, b: number, factor: number): number {\n return (1 - factor) * a + factor * b;\n}\n","import type { IRComposition } from '@vvfx/animation-ir';\nimport { buildPoolIndex, resolveDataPathId } from '../../common/data-path';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { getEffectsCompositionSpecific } from '../../effects-passthrough';\n\n/** Merge non-root pools retained from a source GE scene into the generated scene. */\nexport function mergePreservedResources (\n generated: Record<string, unknown>,\n ir: IRComposition,\n): Record<string, unknown> {\n const specific = getEffectsCompositionSpecific(ir);\n const sourceScene = specific?.sourceScene;\n\n if (sourceScene == null) {\n return generated;\n }\n\n const result = { ...generated };\n const sourceCompositionId = specific?.sourceCompositionId;\n const excluded = collectRootCompositionIds(sourceScene, sourceCompositionId);\n const pools = [\n 'images',\n 'fonts',\n 'plugins',\n 'components',\n 'geometries',\n 'materials',\n 'items',\n 'shaders',\n 'bins',\n 'textures',\n 'animations',\n 'miscs',\n ];\n\n for (const pool of pools) {\n result[pool] = mergePool(\n asArray(generated[pool]),\n asArray(sourceScene[pool]).filter(entry => !isExcludedPoolEntry(pool, entry, excluded)),\n );\n }\n\n result['compositions'] = mergePool(\n asRecordArray(generated['compositions']),\n asRecordArray(sourceScene['compositions']).filter(comp => comp['id'] !== sourceCompositionId),\n );\n\n return result;\n}\n\ninterface ExcludedRootCompositionIds {\n components: Set<string>;\n items: Set<string>;\n miscs: Set<string>;\n}\n\nfunction collectRootCompositionIds (\n sourceScene: Record<string, unknown>,\n sourceCompositionId: string | undefined,\n): ExcludedRootCompositionIds {\n const excluded: ExcludedRootCompositionIds = {\n components: new Set(),\n items: new Set(),\n miscs: new Set(),\n };\n\n if (sourceCompositionId == null) {\n return excluded;\n }\n\n const components = asRecordArray(sourceScene['components']);\n const items = asRecordArray(sourceScene['items']);\n const miscs = asRecordArray(sourceScene['miscs']);\n const componentById = buildPoolIndex(components);\n const itemById = buildPoolIndex(items);\n const miscById = buildPoolIndex(miscs);\n const rootComposition = asRecordArray(sourceScene['compositions'])\n .find(composition => composition['id'] === sourceCompositionId);\n\n if (rootComposition == null) {\n return excluded;\n }\n\n for (const componentRef of asDataPathArray(rootComposition['components'])) {\n const componentId = componentRef.id;\n const component = componentById.get(componentId);\n\n if (component == null) {\n continue;\n }\n\n excluded.components.add(componentId);\n\n for (const itemRef of asDataPathArray(component['items'])) {\n collectItemAndOwnedComponents(itemRef.id, itemById, excluded);\n }\n\n const timelineAssetId = resolveDataPathId(component['timelineAsset']);\n\n if (timelineAssetId != null) {\n collectMiscGraph(timelineAssetId, miscById, excluded);\n }\n\n for (const binding of asRecordArray(component['sceneBindings'])) {\n const trackId = resolveDataPathId(binding['key']);\n\n if (trackId != null) {\n collectMiscGraph(trackId, miscById, excluded);\n }\n }\n }\n\n return excluded;\n}\n\nfunction collectItemAndOwnedComponents (\n itemId: string,\n itemById: Map<string, Record<string, unknown>>,\n excluded: ExcludedRootCompositionIds,\n): void {\n const item = itemById.get(itemId);\n\n if (item == null || excluded.items.has(itemId)) {\n return;\n }\n\n excluded.items.add(itemId);\n\n for (const componentRef of asDataPathArray(item['components'])) {\n excluded.components.add(componentRef.id);\n }\n}\n\nfunction collectMiscGraph (\n miscId: string,\n miscById: Map<string, Record<string, unknown>>,\n excluded: ExcludedRootCompositionIds,\n): void {\n if (excluded.miscs.has(miscId)) {\n return;\n }\n\n const misc = miscById.get(miscId);\n\n if (misc == null) {\n return;\n }\n\n excluded.miscs.add(miscId);\n\n for (const childRef of asDataPathArray(misc['tracks'])) {\n collectMiscGraph(childRef.id, miscById, excluded);\n }\n\n for (const childRef of asDataPathArray(misc['children'])) {\n collectMiscGraph(childRef.id, miscById, excluded);\n }\n\n for (const clip of asRecordArray(misc['clips'])) {\n const assetId = resolveDataPathId(clip['asset']);\n\n if (assetId != null) {\n collectMiscGraph(assetId, miscById, excluded);\n }\n }\n}\n\nfunction isExcludedPoolEntry (\n pool: string,\n entry: unknown,\n excluded: ExcludedRootCompositionIds,\n): boolean {\n if (!isRecord(entry)) {\n return false;\n }\n\n const id = entry['id'];\n\n if (typeof id !== 'string') {\n return false;\n }\n\n if (pool === 'components') {\n return excluded.components.has(id);\n }\n if (pool === 'items') {\n return excluded.items.has(id);\n }\n if (pool === 'miscs') {\n return excluded.miscs.has(id);\n }\n\n return false;\n}\n\nfunction mergePool (generated: unknown[], preserved: unknown[]): unknown[] {\n const result = [...generated];\n const seen = new Set<string>();\n\n for (const entry of result) {\n const key = poolEntryKey(entry);\n\n if (key != null) {\n seen.add(key);\n }\n }\n\n for (const entry of preserved) {\n const key = poolEntryKey(entry);\n\n if (key != null) {\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n }\n\n result.push(normalizeJsonValue(entry));\n }\n\n return result;\n}\n\nfunction poolEntryKey (entry: unknown): string | undefined {\n const id = isRecord(entry) ? entry['id'] : undefined;\n\n if (typeof id === 'string') {\n return `id:${id}`;\n }\n\n return `json:${JSON.stringify(entry)}`;\n}\n\nfunction asArray (value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction asRecordArray (value: unknown): Record<string, unknown>[] {\n return Array.isArray(value)\n ? value.filter((entry): entry is Record<string, unknown> => (\n entry != null && typeof entry === 'object' && !Array.isArray(entry)\n ))\n : [];\n}\n\nfunction asDataPathArray (value: unknown): Array<{ id: string }> {\n return Array.isArray(value)\n ? value.filter((entry): entry is { id: string } => isRecord(entry) && typeof entry['id'] === 'string')\n : [];\n}\n","import { IREndBehavior, type IRComposition, type IRColor } from '@vvfx/animation-ir';\nimport type {\n CompositionComponentData, CompositionData, DataPath, JSONScene, RGBAColorValue,\n TimelineAssetData, VFXItemData,\n} from '@galacean/effects-specification';\nimport { DataType, EndBehavior, JSONSceneVersion } from '@galacean/effects-specification';\nimport {\n DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z, DEFAULT_CLIP_MODE,\n} from '../common/coordinate-mapping';\nimport { createId, toDataPath } from '../common/data-path';\nimport { normalizeJsonValue } from '../common/json-normalization';\nimport { roundNumber } from '../common/math';\nimport { mergePreservedResources } from './post-process/merge-preserved-resources';\nimport type {\n ECSCollector, GeneratedComponentData, GeneratedItemBinding, GeneratedMiscData,\n} from './types';\n\nconst DEFAULT_PLAYER_VERSION = {\n web: '2.8.9',\n native: '0.0.1.202311221223',\n};\n\n/**\n * Assemble a GE JSONScene from generated pools and preserved source resources.\n * `duration` overrides the value derived from the IR frame bounds.\n */\nexport function assembleGEScene (\n ir: IRComposition,\n collector: ECSCollector,\n itemBindings: GeneratedItemBinding[],\n duration?: number,\n): JSONScene {\n const finalDuration = duration ?? deriveDuration(ir);\n const timelineAssetId = createId();\n const objectBindingTrackRefs: DataPath[] = itemBindings.map(binding => toDataPath(binding.objectBindingTrackId));\n\n const timelineAsset: TimelineAssetData & GeneratedMiscData = {\n id: timelineAssetId,\n dataType: DataType.TimelineAsset,\n tracks: objectBindingTrackRefs,\n };\n\n collector.miscs.push(timelineAsset);\n\n const compositionComponentId = createId();\n const compositionId = createId();\n const sceneBindings = itemBindings.map(binding => ({\n key: toDataPath(binding.objectBindingTrackId),\n value: toDataPath(binding.itemId),\n }));\n const allItemRefs: DataPath[] = itemBindings.map(binding => toDataPath(binding.itemId));\n\n const compositionComponent: CompositionComponentData & GeneratedComponentData = {\n id: compositionComponentId,\n dataType: DataType.CompositionComponent,\n item: toDataPath(compositionId),\n items: allItemRefs,\n timelineAsset: toDataPath(timelineAssetId),\n sceneBindings,\n };\n\n collector.components.push(compositionComponent);\n\n const composition: CompositionData & Record<string, unknown> = {\n id: compositionId,\n name: ir.name,\n duration: finalDuration,\n startTime: 0,\n endBehavior: mapCompositionEndBehavior(ir.endBehavior),\n previewSize: [ir.width, ir.height],\n camera: {\n fov: DEFAULT_CAMERA_FOV,\n far: 40,\n near: 0.1,\n clipMode: DEFAULT_CLIP_MODE,\n position: [0, 0, DEFAULT_CAMERA_Z],\n rotation: [0, 0, 0],\n },\n components: [toDataPath(compositionComponentId)],\n };\n\n if (ir.backgroundColor != null) {\n composition['background'] = { color: colorToRoundedRgba(ir.backgroundColor) };\n }\n\n const generatedScene: JSONScene = {\n version: JSONSceneVersion['3_6'],\n playerVersion: DEFAULT_PLAYER_VERSION,\n images: collector.images,\n fonts: [],\n plugins: [],\n type: 'ge',\n compositionId,\n compositions: [composition],\n components: collector.components,\n geometries: [],\n materials: [],\n // The specification still requires deprecated VFXItemData.content;\n // generated component-backed items intentionally omit it.\n items: collector.items as VFXItemData[],\n shaders: [],\n bins: [],\n textures: collector.textures,\n animations: [],\n miscs: collector.miscs,\n };\n\n return normalizeJsonValue(mergePreservedResources(\n generatedScene as unknown as Record<string, unknown>,\n ir,\n )) as unknown as JSONScene;\n}\n\nfunction deriveDuration (ir: IRComposition): number {\n return ir.frameRate > 0 ? (ir.outPoint - ir.inPoint) / ir.frameRate : 0;\n}\n\n/** Map IR composition end behavior to GE. Missing values default to restart. */\nfunction mapCompositionEndBehavior (endBehavior: IREndBehavior | undefined): EndBehavior {\n switch (endBehavior) {\n case undefined:\n case IREndBehavior.Restart:\n return EndBehavior.restart;\n case IREndBehavior.Forward:\n return EndBehavior.forward;\n case IREndBehavior.Freeze:\n return EndBehavior.freeze;\n case IREndBehavior.Destroy:\n return EndBehavior.destroy;\n }\n}\n\nfunction colorToRoundedRgba (color: IRColor): RGBAColorValue {\n return [\n roundNumber(color[0]),\n roundNumber(color[1]),\n roundNumber(color[2]),\n roundNumber(color[3], 4),\n ];\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { roundNumber } from '../../common/math';\n\n/**\n * Convert an IR frame range to GE delay and duration, including stretch and\n * offset semantics. Degenerate durations use a minimal activation interval.\n */\nexport function computeLayerTiming (\n layer: IRLayerNode,\n frameRate: number,\n compositionInPoint = 0,\n): { delay: number; layerDuration: number } {\n const time = layer.time;\n const stretch = time.stretch ?? 1;\n const offsetFrame = time.offsetFrame ?? 0;\n\n const delay = roundNumber((offsetFrame + time.startFrame * stretch - compositionInPoint) / frameRate, 4);\n const rawDuration = (time.endFrame - time.startFrame) * stretch / frameRate;\n const layerDuration = rawDuration > 0 ? roundNumber(rawDuration, 4) : 0.0001;\n\n return { delay, layerDuration };\n}\n\n/**\n * Extend transform-parent lifetimes to cover independent children. GE requires\n * the parent item to remain active for transform inheritance.\n */\nexport function extendParentEndFrames (\n layers: IRLayerNode[],\n parentIndexSet: Set<number>,\n): IRLayerNode[] {\n const clonedLayers = layers.map(layer => ({\n ...layer,\n time: { ...layer.time },\n }));\n\n for (const layer of clonedLayers) {\n if (!parentIndexSet.has(layer.index)) {\n continue;\n }\n\n let maxEnd = layer.time.endFrame;\n\n for (const child of clonedLayers) {\n if (child.parent?.index === layer.index\n && child.parent.lifetimeMode === 'independent'\n && child.time.endFrame > maxEnd\n ) {\n maxEnd = child.time.endFrame;\n }\n }\n\n if (maxEnd > layer.time.endFrame) {\n layer.time.endFrame = maxEnd;\n }\n }\n\n return clonedLayers;\n}\n","import type { DataPath, TimelineClipData, TrackAssetData } from '@galacean/effects-specification';\nimport { DataType, type EndBehavior, ItemType } from '@galacean/effects-specification';\nimport { createId, toDataPath } from '../../common/data-path';\nimport { roundNumber } from '../../common/math';\nimport type { ECSCollector, GeneratedMiscData, TransformAnimation } from '../types';\n\n/**\n * Build binding, activation, transform, and optional color tracks for one item.\n * Null and precomposition items omit the color track.\n */\nexport function buildTimelineTracks (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n animation: TransformAnimation,\n itemType: ItemType,\n): string {\n const objectBindingTrackId = createId();\n const childTrackIds: DataPath[] = [];\n\n childTrackIds.push(toDataPath(buildActivationTrack(collector, delay, duration, endBehavior)));\n childTrackIds.push(toDataPath(buildTransformTrack(collector, delay, duration, endBehavior, animation)));\n\n if (isPrecompItemType(itemType)) {\n childTrackIds.push(toDataPath(buildSubCompositionTrack(collector, delay, duration, endBehavior)));\n }\n\n if (!isNullItemType(itemType)) {\n childTrackIds.push(toDataPath(buildSpriteColorTrack(collector, delay, duration, endBehavior, animation)));\n }\n\n const objectBindingTrack: TrackAssetData & GeneratedMiscData = {\n id: objectBindingTrackId,\n dataType: DataType.ObjectBindingTrack,\n children: childTrackIds,\n clips: [],\n };\n\n collector.miscs.push(objectBindingTrack);\n\n return objectBindingTrackId;\n}\n\nfunction isNullItemType (itemType: ItemType): boolean {\n return itemType === ItemType.null || isPrecompItemType(itemType);\n}\n\nfunction isPrecompItemType (itemType: ItemType): boolean {\n return itemType === ItemType.composition;\n}\n\nfunction buildActivationTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n): string {\n return appendPlayableTrack(collector, delay, duration, endBehavior, {\n assetDataType: DataType.ActivationPlayableAsset,\n trackDataType: DataType.ActivationTrack,\n });\n}\n\nfunction buildTransformTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n animation: TransformAnimation,\n): string {\n const assetFields: Record<string, unknown> = {\n positionOverLifetime: animation.positionOverLifetime ?? {},\n };\n\n if (animation.rotationOverLifetime != null) {\n assetFields['rotationOverLifetime'] = animation.rotationOverLifetime;\n }\n if (animation.sizeOverLifetime != null) {\n assetFields['sizeOverLifetime'] = animation.sizeOverLifetime;\n }\n\n return appendPlayableTrack(collector, delay, duration, endBehavior, {\n assetDataType: DataType.TransformPlayableAsset,\n trackDataType: DataType.TransformTrack,\n assetFields,\n });\n}\n\nfunction buildSpriteColorTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n animation: TransformAnimation,\n): string {\n const assetFields: Record<string, unknown> = {\n startColor: [1, 1, 1, 1],\n };\n\n if (animation.colorOverLifetime != null) {\n assetFields['colorOverLifetime'] = animation.colorOverLifetime;\n }\n\n return appendPlayableTrack(collector, delay, duration, endBehavior, {\n assetDataType: DataType.SpriteColorPlayableAsset,\n trackDataType: DataType.SpriteColorTrack,\n assetFields,\n });\n}\n\nfunction buildSubCompositionTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n): string {\n return appendPlayableTrack(collector, delay, duration, endBehavior, {\n assetDataType: DataType.SubCompositionPlayableAsset,\n trackDataType: DataType.SubCompositionTrack,\n });\n}\n\ninterface TimelineTrackSpec {\n assetDataType: DataType;\n trackDataType: DataType;\n assetFields?: Record<string, unknown>;\n}\n\nfunction appendPlayableTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n spec: TimelineTrackSpec,\n): string {\n const assetId = createId();\n\n const playableAsset: GeneratedMiscData = {\n id: assetId,\n dataType: spec.assetDataType,\n ...spec.assetFields,\n };\n\n collector.miscs.push(playableAsset);\n\n const trackId = createId();\n const clip: TimelineClipData = {\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n };\n\n const track: TrackAssetData & GeneratedMiscData = {\n id: trackId,\n dataType: spec.trackDataType,\n children: [],\n clips: [clip],\n };\n\n collector.miscs.push(track);\n\n return trackId;\n}\n","/**\n * Encode IR keyframes as GE BezierKeyframeValue payloads.\n *\n * Wire format:\n * - First: [EASE_OUT(3), [t, v, out_cp_x, out_cp_y]]\n * - Middle: [EASE(1), [in_cp_x, in_cp_y, t, v, out_cp_x, out_cp_y]]\n * - Last: [EASE_IN(2), [in_cp_x, in_cp_y, t, v]]\n *\n * Time is normalized to the layer's visible frame range.\n */\n\nimport type { IRAnimatedProperty, IRBezierHandle, IRKeyframe, IRVec3 } from '@vvfx/animation-ir';\nimport { type BezierKeyframeValue, BezierKeyframeType } from '@galacean/effects-specification';\nimport { lerp, roundNumber } from '../../common/math';\n\nexport interface IRToGETimeContext {\n /** Layer visible start frame. */\n startFrame: number;\n /** Layer visible end frame. */\n endFrame: number;\n}\n\ninterface GEPositionAnimationData {\n /** One-dimensional timing curves in BezierKeyframeValue format. */\n curves: BezierKeyframeValue[][];\n /** Segment endpoints as `[[startX, startY], [endX, endY]]`. */\n pathPoints: [[number, number], [number, number]][];\n /** Segment control offsets as `[[outX, outY], [inX, inY]]`. */\n controlPoints: [[number, number], [number, number]][];\n}\n\nconst DEFAULT_OUT_TANGENT: IRBezierHandle = { x: 0.33, y: 0.33 };\nconst DEFAULT_IN_TANGENT: IRBezierHandle = { x: 0.67, y: 0.67 };\n\nfunction normalizeTime (frameTime: number, startFrame: number, endFrame: number): number {\n const frames = Math.max(1, endFrame - startFrame);\n\n return (frameTime - startFrame) / frames;\n}\n\nfunction getScalarValue (keyframe: IRKeyframe, dimensionIndex?: number): number {\n const value = keyframe.value;\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value) && dimensionIndex != null) {\n return value[dimensionIndex] ?? 0;\n }\n\n return 0;\n}\n\n/** Convert a scalar property to a single GE Bezier curve. */\nexport function convertIRScalarKeyframesToGE (\n property: IRAnimatedProperty<number>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const curve = buildCurveForDimension(property.keyframes, timeContext, undefined);\n\n return curve != null ? [curve] : undefined;\n}\n\n/** Convert a vector property to one GE Bezier curve per dimension. */\nexport function convertIRVectorKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const firstValue = property.keyframes[0].value;\n const dimensions = Array.isArray(firstValue) ? firstValue.length : 1;\n const curves: BezierKeyframeValue[][] = [];\n\n for (let dimensionIndex = 0; dimensionIndex < dimensions; dimensionIndex++) {\n const curve = buildCurveForDimension(property.keyframes, timeContext, dimensionIndex);\n\n curves.push(curve ?? []);\n }\n\n return curves.length > 0 ? curves : undefined;\n}\n\n/** Convert position keyframes to GE path, control-point, and timing payloads. */\nexport function convertIRPositionKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): GEPositionAnimationData | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const keyframes = property.keyframes;\n const pathPoints: [[number, number], [number, number]][] = [];\n const controlPoints: [[number, number], [number, number]][] = [];\n const timingCurvePoints: Array<{\n normalizedTime: number;\n outTangent: IRBezierHandle;\n inTangent: IRBezierHandle;\n }> = [];\n\n for (let i = 0; i < keyframes.length; i++) {\n const keyframe = keyframes[i];\n const normalizedTime = normalizeTime(keyframe.frame, timeContext.startFrame, timeContext.endFrame);\n\n timingCurvePoints.push({\n normalizedTime,\n outTangent: keyframe.outTangent ?? DEFAULT_OUT_TANGENT,\n inTangent: keyframe.inTangent ?? DEFAULT_IN_TANGENT,\n });\n\n if (i < keyframes.length - 1) {\n const nextKeyframe = keyframes[i + 1];\n const startPosition = keyframe.value ?? [0, 0, 0];\n const segmentEnd = keyframe.hold === true\n ? startPosition\n : (keyframe.endValue ?? nextKeyframe.value ?? startPosition);\n\n pathPoints.push([\n [startPosition[0] ?? 0, startPosition[1] ?? 0],\n [segmentEnd[0] ?? 0, segmentEnd[1] ?? 0],\n ]);\n\n // IR stores the outgoing handle on the current keyframe and the incoming\n // handle on the next. Missing handles use linear one-third offsets.\n let outgoingControlPoint: [number, number];\n let incomingControlPoint: [number, number];\n\n if (keyframe.spatialOut != null && nextKeyframe.spatialIn != null) {\n outgoingControlPoint = [keyframe.spatialOut[0] ?? 0, keyframe.spatialOut[1] ?? 0];\n incomingControlPoint = [nextKeyframe.spatialIn[0] ?? 0, nextKeyframe.spatialIn[1] ?? 0];\n } else {\n const startX = startPosition[0] ?? 0;\n const startY = startPosition[1] ?? 0;\n const endX = segmentEnd[0] ?? 0;\n const endY = segmentEnd[1] ?? 0;\n\n outgoingControlPoint = [-startX / 3 + endX / 3, -startY / 3 + endY / 3];\n incomingControlPoint = [startX / 3 - endX / 3, startY / 3 - endY / 3];\n }\n controlPoints.push([outgoingControlPoint, incomingControlPoint]);\n }\n }\n\n // A delayed position animation needs a stationary bridge from time zero.\n // Override the first incoming handle so the bridge remains flat.\n if (timingCurvePoints.length > 0 && timingCurvePoints[0].normalizedTime > 0) {\n timingCurvePoints[0].inTangent = { x: 1, y: 1 };\n timingCurvePoints.unshift({\n normalizedTime: 0,\n outTangent: { x: 0, y: 0 },\n inTangent: { x: 1, y: 1 },\n });\n pathPoints.unshift([pathPoints[0]?.[0] ?? [0, 0], pathPoints[0]?.[0] ?? [0, 0]]);\n controlPoints.unshift([[0, 0], [0, 0]]);\n }\n\n const timingCurves = buildPositionTimingCurves(timingCurvePoints);\n\n return {\n curves: timingCurves != null ? [timingCurves] : [[]],\n pathPoints,\n controlPoints,\n };\n}\n\nfunction makeEaseOut (segment: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_OUT, [\n roundNumber(segment[0], 4), roundNumber(segment[1], 4),\n roundNumber(segment[2], 4), roundNumber(segment[3], 4),\n ], BezierKeyframeType.EASE_OUT] as BezierKeyframeValue;\n}\n\nfunction makeEaseIn (previousSegment: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_IN, [\n roundNumber(previousSegment[4], 4), roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4), roundNumber(previousSegment[7], 4),\n ], BezierKeyframeType.EASE_IN] as BezierKeyframeValue;\n}\n\nfunction makeEase (previousSegment: number[], currentSegment: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE, [\n roundNumber(previousSegment[4], 4), roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4), roundNumber(previousSegment[7], 4),\n roundNumber(currentSegment[2], 4), roundNumber(currentSegment[3], 4),\n ], BezierKeyframeType.EASE] as BezierKeyframeValue;\n}\n\nfunction serializeBezierSegments (segments: number[][]): BezierKeyframeValue[] | undefined {\n if (segments.length === 0) {\n return undefined;\n }\n\n const result: BezierKeyframeValue[] = [];\n const totalPoints = segments.length + 1;\n\n for (let i = 0; i < totalPoints; i++) {\n if (i === 0) {\n result.push(makeEaseOut(segments[0]));\n } else if (i === totalPoints - 1) {\n result.push(makeEaseIn(segments[i - 1]));\n } else {\n result.push(makeEase(segments[i - 1], segments[i]));\n }\n }\n\n return result;\n}\n\nfunction buildCurveForDimension (\n keyframes: IRKeyframe[],\n timeContext: IRToGETimeContext,\n dimensionIndex: number | undefined,\n): BezierKeyframeValue[] | undefined {\n if (keyframes.length < 2) {\n return undefined;\n }\n\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < keyframes.length - 1; i++) {\n const keyframe = keyframes[i];\n const nextKeyframe = keyframes[i + 1];\n const t0 = normalizeTime(keyframe.frame, timeContext.startFrame, timeContext.endFrame);\n const t1 = normalizeTime(nextKeyframe.frame, timeContext.startFrame, timeContext.endFrame);\n const v0 = getScalarValue(keyframe, dimensionIndex);\n const endKeyframe = keyframe.endValue != null ? { ...keyframe, value: keyframe.endValue } : nextKeyframe;\n const v1 = keyframe.hold === true ? v0 : getScalarValue(endKeyframe, dimensionIndex);\n const outHandle = keyframe.hold === true\n ? { x: 0, y: 0 }\n : (keyframe.outTangent ?? DEFAULT_OUT_TANGENT);\n // IR stores a segment's incoming tangent on its ending keyframe.\n const inHandle = keyframe.hold === true\n ? { x: 1, y: 1 }\n : (nextKeyframe.inTangent ?? DEFAULT_IN_TANGENT);\n\n const outControlPointX = lerp(t0, t1, outHandle.x);\n const outControlPointY = lerp(v0, v1, outHandle.y);\n const inControlPointX = lerp(t0, t1, inHandle.x);\n const inControlPointY = lerp(v0, v1, inHandle.y);\n\n bezierCurves.push([\n t0, v0,\n outControlPointX, outControlPointY,\n inControlPointX, inControlPointY,\n t1, v1,\n ]);\n }\n\n if (bezierCurves.length === 0) {\n return undefined;\n }\n\n const firstTime = bezierCurves[0][0];\n\n if (firstTime > 0) {\n const firstValue = bezierCurves[0][1];\n\n bezierCurves.unshift([\n 0, firstValue, 0, firstValue, firstTime, firstValue, firstTime, firstValue,\n ]);\n }\n\n return serializeBezierSegments(bezierCurves);\n}\n\nfunction buildPositionTimingCurves (\n points: Array<{ normalizedTime: number; outTangent: IRBezierHandle; inTangent: IRBezierHandle }>,\n): BezierKeyframeValue[] | undefined {\n if (points.length < 2) {\n return undefined;\n }\n\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const currentPoint = points[i];\n const nextPoint = points[i + 1];\n const t0 = currentPoint.normalizedTime;\n const t1 = nextPoint.normalizedTime;\n const outControlPointX = lerp(t0, t1, currentPoint.outTangent.x);\n const outControlPointY = lerp(t0, t1, currentPoint.outTangent.y);\n // IR stores a segment's incoming tangent on its ending keyframe.\n const inControlPointX = lerp(t0, t1, nextPoint.inTangent.x);\n const inControlPointY = lerp(t0, t1, nextPoint.inTangent.y);\n\n bezierCurves.push([\n t0, t0, outControlPointX, outControlPointY, inControlPointX, inControlPointY, t1, t1,\n ]);\n }\n\n return serializeBezierSegments(bezierCurves);\n}\n\n/** Return whether GE's compact keyframe fields are required for this property. */\nexport function shouldUseKeyframeMode (property: IRAnimatedProperty): boolean {\n return property.keyframed === true\n && property.keyframes != null\n && property.keyframes.length > 12;\n}\n","import type { IRLayerNode, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { IRToGETimeContext } from './bezier';\nimport { convert2dTo3dPoint } from '../../common/coordinate-mapping';\nimport type { LayerGenerationContext } from '../types';\n\nconst DEFAULT_LOCAL_BOUNDS: IRLocalBounds = { x: 0, y: 0, width: 1, height: 1 };\n\nexport function getLayerLocalBounds (\n layer: IRLayerNode,\n fallback: IRLocalBounds = DEFAULT_LOCAL_BOUNDS,\n): IRLocalBounds {\n return layer.localBounds ?? fallback;\n}\n\nexport function hasIndependentParentLifetime (layer: IRLayerNode): boolean {\n return layer.parent?.lifetimeMode === 'independent';\n}\n\nexport function computeStaticPosition (\n layer: IRLayerNode,\n ctx: LayerGenerationContext,\n anchorOffsetX = 0,\n anchorOffsetY = 0,\n): [number, number, number] {\n const transform = layer.transform;\n\n if (transform?.position?.keyframed === true && transform.position.keyframes.length !== 1) {\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n }\n\n const isNullType = layer.type === 'null' || layer.type === 'precomp';\n\n const positionValue = transform?.position?.keyframed === true\n ? transform.position.keyframes[0]?.value\n : transform?.position?.value;\n\n if (Array.isArray(positionValue)) {\n return convert2dTo3dPoint(\n (positionValue[0] ?? 0) + anchorOffsetX,\n (positionValue[1] ?? 0) + anchorOffsetY,\n isNullType ? 0 : (positionValue[2] ?? 0),\n ctx.width, ctx.height,\n );\n }\n\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n}\n\nexport function getStaticAnchor (layer: IRLayerNode): [number, number] {\n const value = layer.transform?.anchor?.value;\n\n if (Array.isArray(value) && value.length >= 2) {\n return [value[0], value[1]];\n }\n\n return [0, 0];\n}\n\nfunction getStaticScaleFromIR (layer: IRLayerNode): [number, number] {\n const scale = layer.transform?.scale;\n\n if (scale == null) {\n return [1, 1];\n }\n if (scale.keyframed && scale.keyframes.length !== 1) {\n return [1, 1];\n }\n const value = scale.keyframed ? scale.keyframes[0]?.value : scale.value;\n\n if (!Array.isArray(value)) {\n return [1, 1];\n }\n\n return [value[0] ?? 1, value[1] ?? 1];\n}\n\nexport function applyScalePositionAdjust (\n position: [number, number, number],\n layer: IRLayerNode,\n bounds: IRLocalBounds,\n ratio: number,\n): [number, number, number] {\n const staticScale = getStaticScaleFromIR(layer);\n const { x, y, width, height } = bounds;\n\n if ((staticScale[0] === 1 && staticScale[1] === 1) || width <= 0 || height <= 0) {\n return position;\n }\n\n const anchor = getStaticAnchor(layer);\n const anchorDiffX = anchor[0] - (x + width / 2);\n const anchorDiffY = anchor[1] - (y + height / 2);\n\n if (Math.abs(anchorDiffX) <= 0.5 && Math.abs(anchorDiffY) <= 0.5) {\n return position;\n }\n\n return [\n position[0] + anchorDiffX * (1 - staticScale[0]) * ratio,\n position[1] - anchorDiffY * (1 - staticScale[1]) * ratio,\n position[2],\n ];\n}\n\nexport function computeAnchorInfo (\n layer: IRLayerNode,\n bounds: IRLocalBounds,\n): { anchorScaleX: number; anchorScaleY: number; anchorOffsetX: number; anchorOffsetY: number } {\n const anchor = getStaticAnchor(layer);\n const { x, y, width, height } = bounds;\n const localAnchorX = anchor[0] - x;\n const localAnchorY = anchor[1] - y;\n let anchorScaleX = 0.5;\n let anchorScaleY = 0.5;\n let anchorOffsetX = 0;\n let anchorOffsetY = 0;\n\n if (width > 0 && height > 0) {\n anchorScaleX = localAnchorX / width;\n anchorScaleY = localAnchorY / height;\n anchorOffsetX = -(localAnchorX - width / 2);\n anchorOffsetY = -(localAnchorY - height / 2);\n }\n\n if (layer.type === 'text' && layer.text != null && width > 0 && height > 0) {\n if (layer.text.anchorAdjust === true) {\n if (layer.text.textAlign === 'left') {\n anchorOffsetX = -(localAnchorX - width / 2);\n anchorScaleX = localAnchorX / width - 0.5;\n }\n if (layer.text.textAlign === 'center') {\n anchorOffsetX = -localAnchorX;\n anchorScaleX = localAnchorX / width + 0.5;\n }\n if (layer.text.textAlign === 'right') {\n anchorOffsetX = -(localAnchorX + width / 2);\n anchorScaleX = localAnchorX / width + 1.5;\n }\n // GE places glyphs in the lower half of the text quad. Offset by half the\n // layer height to align the visible center with the IR anchor.\n const textHeight = height / 2;\n\n anchorOffsetY = -(localAnchorY + textHeight);\n anchorScaleY = -localAnchorY / textHeight;\n }\n }\n\n const isSpriteForAnchor = layer.type === 'image' || layer.type === 'solid';\n const staticRotationZ = getStaticRotationZ(layer);\n const hasStaticRotation = staticRotationZ != null;\n\n if (\n isSpriteForAnchor\n && hasStaticRotation\n && hasIndependentParentLifetime(layer)\n && (anchorOffsetX !== 0 || anchorOffsetY !== 0)\n ) {\n const rotationValue = staticRotationZ ?? 0;\n\n if (rotationValue !== 0) {\n const radians = rotationValue * Math.PI / 180;\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n const rotatedX = anchorOffsetX * cosine - anchorOffsetY * sine;\n const rotatedY = anchorOffsetX * sine + anchorOffsetY * cosine;\n\n anchorOffsetX = rotatedX;\n anchorOffsetY = rotatedY;\n }\n }\n\n return { anchorScaleX, anchorScaleY, anchorOffsetX, anchorOffsetY };\n}\n\nfunction getStaticRotationZ (layer: IRLayerNode): number | undefined {\n const rotationZ = layer.transform?.rotation?.z;\n\n if (rotationZ != null && !rotationZ.keyframed && typeof rotationZ.value === 'number') {\n return rotationZ.value;\n }\n\n return undefined;\n}\n\nexport function getTimeContext (layer: IRLayerNode): IRToGETimeContext {\n return {\n startFrame: layer.time.startFrame,\n endFrame: layer.time.endFrame,\n };\n}\n","import type { IRAnimatedProperty, IRLayerNode, IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport type {\n BezierCurvePathValue, BezierKeyframeValue, ColorOverLifetime, FixedNumberExpression,\n PositionOverLifetime, RotationOverLifetime, SizeOverLifetime, TransformPlayableAssetData,\n} from '@galacean/effects-specification';\nimport { ValueType } from '@galacean/effects-specification';\nimport {\n convertIRPositionKeyframesToGE, convertIRScalarKeyframesToGE, convertIRVectorKeyframesToGE,\n shouldUseKeyframeMode,\n type IRToGETimeContext,\n} from './bezier';\nimport { convert2dTo3dPoint } from '../../common/coordinate-mapping';\nimport { roundNumber } from '../../common/math';\nimport { getTimeContext } from './transform';\n\ninterface NormalizedAnimationContext {\n width: number;\n height: number;\n}\n\ntype NormalizedTransformAnimation = Pick<TransformPlayableAssetData,\n 'positionOverLifetime' | 'rotationOverLifetime' | 'sizeOverLifetime'>;\n\n/**\n * Encode normalized IR transform channels as GE timeline payloads without\n * consulting composition-specific passthrough data.\n */\nexport function buildNormalizedTransformAnimation (\n layer: IRLayerNode,\n ctx: NormalizedAnimationContext,\n): NormalizedTransformAnimation {\n const transform = layer.transform;\n\n if (transform == null) {\n return {};\n }\n\n const timeContext = getTimeContext(layer);\n\n return {\n positionOverLifetime: buildPositionAnimation(layer, transform, timeContext, ctx),\n rotationOverLifetime: buildRotationAnimation(transform, timeContext),\n sizeOverLifetime: buildSizeAnimation(transform, timeContext),\n };\n}\n\nfunction buildPositionAnimation (\n layer: IRLayerNode,\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n ctx: NormalizedAnimationContext,\n): PositionOverLifetime | undefined {\n if (transform.position == null || !transform.position.keyframed) {\n return undefined;\n }\n\n assertContiguousPositionSegments(transform.position, layer);\n\n const positionResult = convertIRPositionKeyframesToGE(transform.position, timeContext);\n\n if (positionResult == null) {\n return undefined;\n }\n\n const pathPoints: [number, number, number][] = [];\n const controlPoints: [number, number, number][] = [];\n const useKeyframeMode = shouldUseKeyframeMode(transform.position);\n\n const firstPathPoint = positionResult.pathPoints[0]?.[0];\n\n if (firstPathPoint != null) {\n const point3d = convert2dTo3dPoint(\n firstPathPoint[0], firstPathPoint[1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(point3d);\n }\n\n for (const pathPoint of positionResult.pathPoints) {\n const endPoint3d = convert2dTo3dPoint(\n pathPoint[1][0], pathPoint[1][1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(endPoint3d);\n }\n\n for (let i = 0; i < positionResult.controlPoints.length; i++) {\n const controlPointPair = positionResult.controlPoints[i];\n const pathPointPair = positionResult.pathPoints[i];\n\n if (useKeyframeMode) {\n const dx = pathPointPair[1][0] - pathPointPair[0][0];\n const dy = pathPointPair[1][1] - pathPointPair[0][1];\n const firstControlPoint = convert2dTo3dPoint(\n dx / 3 + pathPointPair[0][0], dy / 3 + pathPointPair[0][1], 0, ctx.width, ctx.height,\n );\n const secondControlPoint = convert2dTo3dPoint(\n -dx / 3 + pathPointPair[1][0], -dy / 3 + pathPointPair[1][1], 0, ctx.width, ctx.height,\n );\n\n controlPoints.push(firstControlPoint, secondControlPoint);\n } else {\n const firstControlPoint = convert2dTo3dPoint(\n controlPointPair[0][0] + pathPointPair[0][0], controlPointPair[0][1] + pathPointPair[0][1],\n 0, ctx.width, ctx.height,\n );\n const secondControlPoint = convert2dTo3dPoint(\n controlPointPair[1][0] + pathPointPair[1][0], controlPointPair[1][1] + pathPointPair[1][1],\n 0, ctx.width, ctx.height,\n );\n\n controlPoints.push(firstControlPoint, secondControlPoint);\n }\n }\n\n const curveData = positionResult.curves[0] ?? [];\n const easingData: BezierKeyframeValue[] = curveData.map((keyframeValue: BezierKeyframeValue) => (\n [keyframeValue[0], keyframeValue[1]] as BezierKeyframeValue\n ));\n\n const roundedPathPoints = pathPoints.map(roundPathPoint);\n const roundedControlPoints = controlPoints.map(roundPathPoint);\n\n const pathPayload: BezierCurvePathValue = [easingData, roundedPathPoints, roundedControlPoints];\n\n return {\n path: [ValueType.BEZIER_CURVE_PATH, pathPayload],\n };\n}\n\nfunction roundPathPoint (point: [number, number, number]): [number, number, number] {\n return [roundNumber(point[0], 4), roundNumber(point[1], 4), point[2]];\n}\n\nfunction assertContiguousPositionSegments (\n position: Extract<IRAnimatedProperty<IRVec3>, { keyframed: true }>,\n layer: IRLayerNode,\n): void {\n for (let index = 0; index < position.keyframes.length - 1; index++) {\n const segmentEnd = position.keyframes[index].endValue;\n const nextStart = position.keyframes[index + 1].value;\n\n if (segmentEnd == null) {\n continue;\n }\n\n const isContiguous = segmentEnd.every((value, dimension) => (\n Math.abs(value - nextStart[dimension]) <= 1e-6\n ));\n\n if (!isContiguous) {\n throw new Error(\n `[ge-ir] Layer '${layer.name}' has a discontiguous position segment at keyframe ${index}; `\n + 'GE path animation cannot preserve a segment endValue that differs from the next keyframe value.',\n );\n }\n }\n}\n\nfunction buildRotationAnimation (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): RotationOverLifetime | undefined {\n const result: RotationOverLifetime = {};\n const rotation = transform.rotation;\n const x = buildRotationAxis(rotation?.x, timeContext);\n const y = buildRotationAxis(rotation?.y, timeContext);\n const z = buildRotationAxis(rotation?.z, timeContext);\n const hasX = x != null;\n const hasY = y != null;\n const hasZ = z != null;\n\n if (x != null) { result.x = x; }\n if (y != null) { result.y = y; }\n if (z != null) { result.z = z; }\n\n if (!hasZ && !hasX && !hasY) {\n return undefined;\n }\n\n result.asRotation = true;\n const axisCount = (hasX ? 1 : 0) + (hasY ? 1 : 0) + (hasZ ? 1 : 0);\n\n if (axisCount > 1 || hasX || hasY) {\n result.separateAxes = true;\n }\n\n return result;\n}\n\nfunction buildRotationAxis (\n property: IRAnimatedProperty<number> | undefined,\n timeContext: IRToGETimeContext,\n): FixedNumberExpression | undefined {\n if (property == null) {\n return undefined;\n }\n if (!property.keyframed) {\n return property.value !== 0 ? [ValueType.CONSTANT, property.value] : undefined;\n }\n if (property.keyframes.length === 1) {\n const value = property.keyframes[0].value;\n\n return value !== 0 ? [ValueType.CONSTANT, value] : undefined;\n }\n if (!axisHasRotationValue(property)) {\n return undefined;\n }\n const curves = convertIRScalarKeyframesToGE(property, timeContext);\n\n return curves != null ? [ValueType.BEZIER_CURVE, curves[0]] : undefined;\n}\n\nfunction axisHasRotationValue (\n rotation: Extract<NonNullable<IRTransformChannels['rotation']>['x'], { keyframed: true }>,\n): boolean {\n return rotation.keyframes.some(keyframe => (\n Math.abs(keyframe.value) > 0.0001\n || Math.abs(keyframe.endValue ?? 0) > 0.0001\n ));\n}\n\nfunction buildSizeAnimation (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): SizeOverLifetime | undefined {\n if (transform.scale == null) {\n return undefined;\n }\n\n if (transform.scale.keyframed) {\n if (transform.scale.keyframes.length === 1) {\n return buildConstantSizeAnimation(transform.scale.keyframes[0].value);\n }\n const curves = convertIRVectorKeyframesToGE(transform.scale, timeContext);\n\n if (curves != null && curves.length >= 2) {\n return {\n separateAxes: true,\n x: [ValueType.BEZIER_CURVE, curves[0]],\n y: [ValueType.BEZIER_CURVE, curves[1]],\n ...(curves.length >= 3 && { z: [ValueType.BEZIER_CURVE, curves[2]] }),\n };\n }\n\n return undefined;\n }\n\n return buildConstantSizeAnimation(transform.scale.value);\n}\n\nfunction buildConstantSizeAnimation (scale: IRVec3): SizeOverLifetime | undefined {\n if (Math.abs(scale[0] - 1) <= 0.0001 && Math.abs(scale[1] - 1) <= 0.0001) {\n return undefined;\n }\n\n return {\n separateAxes: true,\n x: [ValueType.CONSTANT, scale[0]],\n y: [ValueType.CONSTANT, scale[1]],\n z: [ValueType.CONSTANT, scale[2]],\n };\n}\n\n/** Encode normalized IR opacity as a GE color-over-lifetime payload. */\nexport function buildNormalizedColorAnimation (layer: IRLayerNode): ColorOverLifetime | undefined {\n const transform = layer.transform;\n\n if (transform?.opacity == null) {\n return undefined;\n }\n\n const timeContext = getTimeContext(layer);\n\n if (timeContext.endFrame - timeContext.startFrame <= 0) {\n return {\n opacity: [ValueType.CONSTANT, 0],\n };\n }\n\n if (transform.opacity.keyframed) {\n if (transform.opacity.keyframes.length === 1) {\n const opacityValue = transform.opacity.keyframes[0].value;\n\n return opacityValue !== 1 ? { opacity: [ValueType.CONSTANT, opacityValue] } : undefined;\n }\n const curves = convertIRScalarKeyframesToGE(transform.opacity, timeContext);\n\n if (curves != null) {\n return {\n opacity: [ValueType.BEZIER_CURVE, curves[0]],\n };\n }\n\n return undefined;\n }\n\n const opacityValue = transform.opacity.value;\n\n if (typeof opacityValue === 'number' && opacityValue !== 1) {\n return {\n opacity: [ValueType.CONSTANT, opacityValue],\n };\n }\n\n return undefined;\n}\n","import type { IRComposition, IRLayerNode } from '@vvfx/animation-ir';\nimport type { ColorOverLifetime } from '@galacean/effects-specification';\nimport { getEffectsLayerSpecific } from '../../effects-passthrough';\nimport { buildNormalizedColorAnimation, buildNormalizedTransformAnimation } from './normalized-animation';\nimport type { GEAnimationPayload, LayerGenerationContext, TransformAnimation } from '../types';\n\nexport function buildTransformAnimation (\n layer: IRLayerNode,\n ctx: LayerGenerationContext,\n): TransformAnimation {\n if (layer.transform == null) {\n return {};\n }\n\n // Prefer preserved GE payloads; otherwise encode normalized IR channels.\n const effectsSpecific = getEffectsLayerSpecific(ctx.ir, layer);\n const passthroughPosition = effectsSpecific?.positionOverLifetime;\n const passthroughRotation = effectsSpecific?.rotationOverLifetime;\n const passthroughSize = effectsSpecific?.sizeOverLifetime;\n const normalized = buildNormalizedTransformAnimation(layer, ctx);\n\n const positionOverLifetime = passthroughPosition ?? normalized.positionOverLifetime;\n const rotationOverLifetime = passthroughRotation ?? normalized.rotationOverLifetime;\n const sizeOverLifetime = passthroughSize ?? normalized.sizeOverLifetime;\n\n return { positionOverLifetime, rotationOverLifetime, sizeOverLifetime };\n}\n\nexport function buildColorAnimation (\n layer: IRLayerNode,\n ir: IRComposition,\n): GEAnimationPayload<ColorOverLifetime> | undefined {\n const passthroughColor = getEffectsLayerSpecific(ir, layer)?.colorOverLifetime;\n\n if (passthroughColor != null) {\n return passthroughColor;\n }\n\n return buildNormalizedColorAnimation(layer);\n}\n","import { IRBlendMode } from '@vvfx/animation-ir';\nimport { ItemType } from '@galacean/effects-specification';\n\n// Value-level mappings used by the IR-to-GE conversion pipeline.\nconst GE_BLENDING_BY_IR_MODE: Record<IRBlendMode, number | undefined> = {\n [IRBlendMode.Normal]: undefined,\n [IRBlendMode.Multiply]: 6,\n [IRBlendMode.Screen]: 9,\n [IRBlendMode.Overlay]: 13,\n [IRBlendMode.Darken]: 2,\n [IRBlendMode.Lighten]: 3,\n [IRBlendMode.ColorDodge]: 10,\n [IRBlendMode.ColorBurn]: 7,\n [IRBlendMode.HardLight]: 14,\n [IRBlendMode.SoftLight]: 15,\n [IRBlendMode.Difference]: 4,\n [IRBlendMode.Exclusion]: 5,\n [IRBlendMode.Hue]: 11,\n [IRBlendMode.Saturation]: 12,\n [IRBlendMode.Color]: 8,\n [IRBlendMode.Luminosity]: 16,\n [IRBlendMode.Add]: 1,\n};\n\nexport function mapBlendModeToGE (blendMode: IRBlendMode | undefined): number | undefined {\n return blendMode != null ? GE_BLENDING_BY_IR_MODE[blendMode] : undefined;\n}\n\nexport function mapLayerTypeToGETimelineType (type: string): ItemType {\n switch (type) {\n case 'image':\n case 'solid':\n case 'shape':\n return ItemType.sprite;\n case 'text':\n return ItemType.text;\n default:\n return ItemType.null;\n }\n}\n\nexport function mapLayerTypeToGEItemType (type: string): ItemType {\n switch (type) {\n case 'image':\n case 'solid':\n return ItemType.sprite;\n case 'text':\n return ItemType.text;\n case 'shape':\n return ItemType.shape;\n default:\n return ItemType.null;\n }\n}\n","import type {\n IRColor, IRComposition, IRCustomShapePath, IRLayerNode, IRShapeData,\n IRShapePaintData,\n} from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport {\n DataType, type DataPath, FillType, LineCap as EffectsLineCap, LineJoin as EffectsLineJoin,\n RenderMode, type RGBAColorValue, ShapePrimitiveType, TextAlignment, ValueType,\n} from '@galacean/effects-specification';\nimport { getEffectsLayerSpecific } from '../../effects-passthrough';\nimport { createId, toDataPath } from '../../common/data-path';\nimport { roundNumber } from '../../common/math';\nimport { mapBlendModeToGE } from '../mapping';\nimport { getLayerLocalBounds } from '../converter/transform';\nimport type { ECSCollector, GeneratedComponentData, LayerGenerationContext } from '../types';\n\nfunction estimateTextWidth (text: string, fontSize: number, letterSpacing?: number): number {\n if (text.length === 0) {\n return 0;\n }\n\n const averageCharacterWidth = fontSize * 0.6;\n const spacing = (letterSpacing ?? 0) * (text.length - 1);\n\n return text.length * averageCharacterWidth + spacing;\n}\n\nfunction registerTexture (\n collector: ECSCollector,\n imageUrl: string,\n cache: Map<string, DataPath>,\n): DataPath {\n const cached = cache.get(imageUrl);\n\n if (cached != null) {\n return cached;\n }\n\n const imageId = createId();\n const textureId = createId();\n\n collector.images.push({ id: imageId, url: imageUrl });\n collector.textures.push({\n id: textureId,\n dataType: DataType.Texture,\n source: toDataPath(imageId),\n flipY: true,\n });\n\n const dataPathRef = toDataPath(textureId);\n\n cache.set(imageUrl, dataPathRef);\n\n return dataPathRef;\n}\n\nexport function buildComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string | undefined {\n switch (layer.type) {\n case 'image':\n case 'solid':\n return buildSpriteComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'text':\n return buildTextComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'shape':\n return buildShapeComponent(layer, itemId, ctx);\n default:\n return undefined;\n }\n}\n\n/**\n * Copy a preserved GE mask to the generated component. Target references still\n * use source component IDs and are remapped after generation.\n */\nexport function copyPassthroughMaskToComponent (\n ir: IRComposition,\n layer: IRLayerNode,\n component: GeneratedComponentData,\n): void {\n const effectsMask = getEffectsLayerSpecific(ir, layer)?.mask;\n\n if (effectsMask != null && component['mask'] == null) {\n component['mask'] = { ...effectsMask };\n }\n}\n\nfunction buildSpriteComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const componentId = createId();\n const blending = mapBlendModeToGE(layer.blendMode);\n const startColor: RGBAColorValue = layer.solidColor != null\n ? [\n roundNumber(layer.solidColor[0], 4),\n roundNumber(layer.solidColor[1], 4),\n roundNumber(layer.solidColor[2], 4),\n roundNumber(layer.solidColor[3], 4),\n ]\n : [1, 1, 1, 1];\n\n let textureDataPath: DataPath | undefined;\n\n const assetUrl = layer.asset?.url;\n const textureUrl = assetUrl != null && assetUrl !== '' ? assetUrl : layer.asset?.refId;\n\n if (textureUrl != null && textureUrl !== '' && textureUrl !== 'mask://placeholder') {\n textureDataPath = registerTexture(ctx.collector, textureUrl, ctx.textureCache);\n }\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.SpriteComponent,\n item: toDataPath(itemId),\n options: { startColor },\n renderer: {\n renderMode: RenderMode.MESH,\n ...(blending !== undefined && { blending }),\n ...(textureDataPath != null && { texture: textureDataPath }),\n },\n };\n\n const isNonDefaultAnchor = Math.abs(anchorScaleX - 0.5) > 0.001 || Math.abs(anchorScaleY - 0.5) > 0.001;\n\n if (isNonDefaultAnchor) {\n (component['renderer'] as Record<string, unknown>)['anchor'] = [\n roundNumber(anchorScaleX, 4),\n roundNumber(anchorScaleY, 4),\n ];\n }\n\n copyPassthroughMaskToComponent(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildTextComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string | undefined {\n const textInfo = layer.text;\n\n if (textInfo == null) {\n return undefined;\n }\n\n const componentId = createId();\n const blending = mapBlendModeToGE(layer.blendMode);\n const textColor: RGBAColorValue = [\n roundNumber(textInfo.color[0], 4),\n roundNumber(textInfo.color[1], 4),\n roundNumber(textInfo.color[2], 4),\n textInfo.color[3],\n ];\n const textWidth = textInfo.width ?? estimateTextWidth(textInfo.content, textInfo.fontSize, textInfo.letterSpacing);\n const lineHeight = typeof textInfo.lineHeight === 'number' && textInfo.lineHeight > 0\n ? textInfo.lineHeight\n : textInfo.fontSize;\n const textHeight = Math.max(textInfo.height ?? textInfo.fontSize * 1.2, lineHeight);\n\n const { width: layerWidth, height: layerHeight } = getLayerLocalBounds(layer);\n const textSizeW = roundNumber(ctx.ratio * layerWidth, 4);\n const textSizeH = roundNumber(ctx.ratio * layerHeight, 4);\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.TextComponent,\n item: toDataPath(itemId),\n options: {\n text: textInfo.content,\n fontSize: textInfo.fontSize,\n textColor,\n fontFamily: textInfo.fontFamily || 'sans-serif',\n fontWeight: textInfo.fontWeight,\n textAlign: textInfo.textAlign === 'center'\n ? TextAlignment.middle\n : textInfo.textAlign === 'right' ? TextAlignment.right : TextAlignment.left,\n fontStyle: textInfo.fontStyle,\n letterSpace: textInfo.letterSpacing,\n lineHeight,\n textWidth,\n textHeight,\n autoWidth: textInfo.autoWidth,\n size: [textSizeW, textSizeH],\n },\n renderer: {\n renderMode: RenderMode.MESH,\n anchor: [anchorScaleX, anchorScaleY],\n ...(blending !== undefined && { blending }),\n },\n };\n\n copyPassthroughMaskToComponent(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildShapeComponent (\n layer: IRLayerNode,\n itemId: string,\n ctx: LayerGenerationContext,\n): string | undefined {\n if (layer.shapes == null || layer.shapes.length === 0) {\n return undefined;\n }\n\n const shapeData = layer.shapes[0];\n const componentId = createId();\n const blending = mapBlendModeToGE(layer.blendMode);\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.ShapeComponent,\n item: toDataPath(itemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: RenderMode.MESH,\n ...(blending !== undefined && { blending }),\n },\n };\n\n copyPassthroughMaskToComponent(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nexport function buildShapeOptions (\n shapeData: IRShapeData,\n ratio: number,\n ctx?: LayerGenerationContext,\n): Record<string, unknown> {\n const options: Record<string, unknown> = {\n type: mapShapePrimitiveType(shapeData.primitiveType),\n };\n\n switch (shapeData.primitiveType) {\n case IRShapePrimitiveType.Custom:\n Object.assign(options, mapCustomPaths(shapeData.customPaths, ratio));\n\n break;\n case IRShapePrimitiveType.Rectangle:\n options['width'] = roundNumber(shapeData.width * ratio, 4);\n options['height'] = roundNumber(shapeData.height * ratio, 4);\n options['roundness'] = shapeData.roundness ?? 0;\n\n break;\n case IRShapePrimitiveType.Ellipse:\n options['xRadius'] = roundNumber(shapeData.xRadius * ratio, 4);\n options['yRadius'] = roundNumber(shapeData.yRadius * ratio, 4);\n\n break;\n case IRShapePrimitiveType.Polygon:\n options['pointCount'] = shapeData.pointCount;\n options['radius'] = roundNumber(shapeData.radius * ratio, 4);\n options['roundness'] = shapeData.roundness ?? 0;\n\n break;\n case IRShapePrimitiveType.Star:\n options['pointCount'] = shapeData.pointCount;\n options['innerRadius'] = roundNumber(shapeData.innerRadius * ratio, 4);\n options['outerRadius'] = roundNumber(shapeData.outerRadius * ratio, 4);\n options['innerRoundness'] = shapeData.innerRoundness ?? 0;\n options['outerRoundness'] = shapeData.outerRoundness ?? 0;\n\n break;\n }\n\n if (shapeData.fills != null && shapeData.fills.length > 0) {\n options['fills'] = shapeData.fills\n .map(fill => mapShapePaint(fill, ratio, ctx))\n .filter((fill): fill is Record<string, unknown> => fill != null);\n } else {\n options['fills'] = [];\n }\n if (shapeData.strokes != null && shapeData.strokes.length > 0) {\n options['strokes'] = shapeData.strokes\n .map(stroke => mapShapePaint(stroke, ratio, ctx))\n .filter((stroke): stroke is Record<string, unknown> => stroke != null);\n } else {\n options['strokes'] = [];\n }\n if (typeof shapeData.strokeWidth === 'number') {\n options['strokeWidth'] = roundNumber(shapeData.strokeWidth * ratio, 4);\n }\n if (shapeData.strokeCap != null) {\n options['strokeCap'] = mapLineCap(shapeData.strokeCap);\n }\n if (shapeData.strokeJoin != null) {\n options['strokeJoin'] = mapLineJoin(shapeData.strokeJoin);\n }\n\n return options;\n}\n\nconst SHAPE_PRIMITIVE_TYPE_TO_GE: Record<IRShapeData['primitiveType'], ShapePrimitiveType> = {\n [IRShapePrimitiveType.Custom]: ShapePrimitiveType.Custom,\n [IRShapePrimitiveType.Rectangle]: ShapePrimitiveType.Rectangle,\n [IRShapePrimitiveType.Ellipse]: ShapePrimitiveType.Ellipse,\n [IRShapePrimitiveType.Polygon]: ShapePrimitiveType.Polygon,\n [IRShapePrimitiveType.Star]: ShapePrimitiveType.Star,\n};\n\nconst FILL_TYPE_TO_GE: Record<IRShapePaintData['type'], FillType> = {\n [IRFillType.Solid]: FillType.Solid,\n [IRFillType.LinearGradient]: FillType.GradientLinear,\n [IRFillType.RadialGradient]: FillType.GradientRadial,\n [IRFillType.AngularGradient]: FillType.GradientAngular,\n [IRFillType.Texture]: FillType.Texture,\n};\n\nconst LINE_CAP_TO_GE: Record<string, EffectsLineCap> = {\n [IRLineCap.Butt]: EffectsLineCap.Butt,\n [IRLineCap.Round]: EffectsLineCap.Round,\n [IRLineCap.Square]: EffectsLineCap.Square,\n};\n\nconst LINE_JOIN_TO_GE: Record<string, EffectsLineJoin> = {\n [IRLineJoin.Round]: EffectsLineJoin.Round,\n [IRLineJoin.Bevel]: EffectsLineJoin.Bevel,\n [IRLineJoin.Miter]: EffectsLineJoin.Miter,\n};\n\nfunction mapShapePrimitiveType (primitiveType: IRShapeData['primitiveType']): ShapePrimitiveType {\n return SHAPE_PRIMITIVE_TYPE_TO_GE[primitiveType];\n}\n\nfunction mapLineCap (lineCap: string): EffectsLineCap {\n return LINE_CAP_TO_GE[lineCap] ?? EffectsLineCap.Butt;\n}\n\nfunction mapLineJoin (lineJoin: string): EffectsLineJoin {\n return LINE_JOIN_TO_GE[lineJoin] ?? EffectsLineJoin.Miter;\n}\n\nfunction mapShapePaint (\n paint: IRShapePaintData,\n ratio: number,\n ctx: LayerGenerationContext | undefined,\n): Record<string, unknown> | undefined {\n if (paint.type === IRFillType.Solid) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n color: colorToGE(paint.color),\n };\n }\n\n if (\n paint.type === IRFillType.LinearGradient ||\n paint.type === IRFillType.RadialGradient ||\n paint.type === IRFillType.AngularGradient\n ) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n gradientStops: [ValueType.GRADIENT_COLOR, paint.gradientStops],\n startPoint: vec2ToGE(paint.gradientStart, ratio),\n endPoint: vec2ToGE(paint.gradientEnd, ratio),\n };\n }\n\n if (paint.type === IRFillType.Texture) {\n const textureAssetUrl = paint.texture.url;\n const textureUrl = textureAssetUrl != null && textureAssetUrl !== ''\n ? textureAssetUrl\n : paint.texture.refId;\n const texture = textureUrl != null && ctx != null\n ? registerTexture(ctx.collector, textureUrl, ctx.textureCache)\n : undefined;\n\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n ...(texture != null && { texture }),\n scaleMode: paint.scaleMode ?? 0,\n };\n }\n\n return undefined;\n}\n\nfunction colorToGE (color: IRColor): { r: number; g: number; b: number; a: number } {\n return {\n r: roundNumber(color[0], 4),\n g: roundNumber(color[1], 4),\n b: roundNumber(color[2], 4),\n a: roundNumber(color[3], 4),\n };\n}\n\nfunction vec2ToGE (\n value: [number, number] | undefined,\n ratio: number,\n): { x: number; y: number } {\n return {\n x: roundNumber((value?.[0] ?? 0) * ratio, 4),\n y: roundNumber(-(value?.[1] ?? 0) * ratio, 4),\n };\n}\n\nfunction mapCustomPaths (paths: IRCustomShapePath[], ratio: number): Record<string, unknown> {\n const points: Array<{ x: number; y: number }> = [];\n const easingIns: Array<{ x: number; y: number }> = [];\n const easingOuts: Array<{ x: number; y: number }> = [];\n const shapes: Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }> = [];\n\n for (const path of paths) {\n const indexes: Array<{ point: number; easingIn: number; easingOut: number }> = [];\n\n for (let index = 0; index < path.points.length; index++) {\n const point = path.points[index];\n const easingIn = path.inTangents[index];\n const easingOut = path.outTangents[index];\n const pointIndex = points.length;\n\n points.push({\n x: roundNumber(point.x * ratio, 4),\n y: roundNumber(-point.y * ratio, 4),\n });\n easingIns.push({\n x: roundNumber((easingIn?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingIn?.y ?? 0) * ratio, 4),\n });\n easingOuts.push({\n x: roundNumber((easingOut?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingOut?.y ?? 0) * ratio, 4),\n });\n indexes.push({ point: pointIndex, easingIn: pointIndex, easingOut: pointIndex });\n }\n\n shapes.push({ close: path.closed, indexes });\n }\n\n return { points, easingIns, easingOuts, shapes };\n}\n","import type { IRComposition, IRLayerNode, IRLocalBounds } from '@vvfx/animation-ir';\nimport { getEffectsLayerSpecific } from '../../effects-passthrough';\nimport { computeAnchorInfo, getLayerLocalBounds, getStaticAnchor } from './transform';\n\n/**\n * Anchor encoding strategy.\n *\n * - `inline-anchor` encodes the renderer anchor and compensates item position.\n * - `split-null-sprite` places transforms on a null parent and visual content\n * on an anchor-offset child.\n * Effects passthrough data may request the source hierarchy.\n */\ntype LayerGenerationStrategy =\n | {\n kind: 'inline-anchor';\n anchorScale: [number, number];\n anchorOffset: [number, number];\n }\n | { kind: 'split-null-sprite' };\n\nexport function resolveLayerGenerationStrategy (\n ir: IRComposition,\n layer: IRLayerNode,\n): LayerGenerationStrategy {\n const sourceHierarchy = getEffectsLayerSpecific(ir, layer)?.sourceHierarchy;\n\n if (sourceHierarchy === 'null-sprite-pair') {\n return { kind: 'split-null-sprite' };\n }\n\n const bounds = getLayerLocalBounds(layer);\n\n if (sourceHierarchy !== 'single-item' && needsPivotContainer(layer, bounds)) {\n return { kind: 'split-null-sprite' };\n }\n\n const info = computeAnchorInfo(layer, bounds);\n\n return {\n kind: 'inline-anchor',\n anchorScale: [info.anchorScaleX, info.anchorScaleY],\n anchorOffset: [info.anchorOffsetX, info.anchorOffsetY],\n };\n}\n\nfunction needsPivotContainer (layer: IRLayerNode, bounds: IRLocalBounds): boolean {\n if (layer.type !== 'image' && layer.type !== 'solid') {\n return false;\n }\n if (layer.localBounds == null) {\n return false;\n }\n const { x, y, width, height } = bounds;\n\n if (width <= 0 || height <= 0) {\n return false;\n }\n const anchor = getStaticAnchor(layer);\n const anchorOffCenter = Math.abs(anchor[0] - (x + width / 2)) > 0.5\n || Math.abs(anchor[1] - (y + height / 2)) > 0.5;\n\n if (!anchorOffCenter) {\n return false;\n }\n const transform = layer.transform;\n const rotation = transform?.rotation;\n const hasRotationAnimation = rotation?.x?.keyframed === true\n || rotation?.y?.keyframed === true\n || rotation?.z?.keyframed === true;\n const hasScaleAnimation = transform?.scale?.keyframed === true;\n\n return hasRotationAnimation || hasScaleAnimation;\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport {\n DataType, EndBehavior, ItemType, RenderLevel, RenderMode,\n type TransformData,\n} from '@galacean/effects-specification';\nimport { getEffectsLayerSpecific } from '../../effects-passthrough';\nimport { createId, toDataPath } from '../../common/data-path';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { buildTimelineTracks } from './timeline';\nimport { computeLayerTiming } from '../converter/timing';\nimport { buildColorAnimation, buildTransformAnimation } from '../converter/animation';\nimport { buildComponent, buildShapeOptions, copyPassthroughMaskToComponent } from './component';\nimport { mapBlendModeToGE, mapLayerTypeToGEItemType, mapLayerTypeToGETimelineType } from '../mapping';\nimport {\n applyScalePositionAdjust, computeAnchorInfo, computeStaticPosition, getLayerLocalBounds, getStaticAnchor,\n} from '../converter/transform';\nimport { resolveLayerGenerationStrategy } from '../converter/layer-strategy';\nimport type {\n GeneratedComponentData, GeneratedVFXItemData, LayerGenerationContext, TransformAnimation,\n} from '../types';\n\nfunction buildGETransform (\n position: [number, number, number],\n eulerHint: [number, number, number],\n scale: [number, number, number],\n): TransformData {\n return {\n position: { x: position[0], y: position[1], z: position[2] },\n eulerHint: { x: eulerHint[0], y: eulerHint[1], z: eulerHint[2] },\n scale: { x: scale[0], y: scale[1], z: scale[2] },\n };\n}\n\nexport function appendNullLayer (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const position = computeStaticPosition(layer, ctx);\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.freeze, animation, ItemType.null,\n );\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name,\n duration: layerDuration,\n type: ItemType.null,\n visible: layer.visible,\n endBehavior: EndBehavior.freeze,\n delay,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(position, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nexport function appendPrecompLayer (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const position = computeStaticPosition(layer, ctx);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.freeze, animation, ItemType.composition,\n );\n const effectsSpecific = getEffectsLayerSpecific(ctx.ir, layer);\n const content = buildPrecompContent(effectsSpecific?.precompContent, effectsSpecific?.precompRefId);\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name,\n duration: layerDuration,\n type: ItemType.composition,\n visible: layer.visible,\n endBehavior: EndBehavior.freeze,\n delay,\n renderLevel: RenderLevel.BPlus,\n content,\n components: [],\n transform: buildGETransform(position, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nfunction buildPrecompContent (\n rawContent: Record<string, unknown> | undefined,\n refId: string | undefined,\n): Record<string, unknown> {\n const content = rawContent != null ? normalizeJsonValue(rawContent) : {};\n const rawOptions = content['options'];\n const options = isRecord(rawOptions) ? { ...rawOptions } : {};\n\n if (refId != null) {\n options['refId'] = refId;\n }\n\n content['options'] = options;\n\n return content;\n}\n\n/**\n * Append a null/visual pair. The null owns the layer transform; the child owns\n * anchor-offset visual content.\n */\nfunction appendNullSpritePair (\n layer: IRLayerNode,\n ctx: LayerGenerationContext,\n): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const bounds = getLayerLocalBounds(layer);\n const { x, y, width: layerWidth, height: layerHeight } = bounds;\n\n const nullItemId = createId();\n\n ctx.layerToItemId[layerIndex] = nullItemId;\n\n const nullAnimation = buildTransformAnimation(layer, ctx);\n const nullPosition = computeStaticPosition(layer, ctx);\n\n const nullTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.freeze, nullAnimation, ItemType.null,\n );\n\n const nullItem: GeneratedVFXItemData = {\n id: nullItemId,\n dataType: DataType.VFXItemData,\n name: layer.name,\n duration: layerDuration,\n type: ItemType.null,\n visible: true,\n endBehavior: EndBehavior.freeze,\n delay,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(nullPosition, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(nullItem);\n ctx.itemBindings.push({ itemId: nullItemId, objectBindingTrackId: nullTrackId, layerIndex });\n\n const childItemId = createId();\n\n const anchor = getStaticAnchor(layer);\n const centerX = x + layerWidth / 2;\n const centerY = y + layerHeight / 2;\n const childPosition: [number, number, number] = [\n -ctx.ratio * (anchor[0] - centerX),\n ctx.ratio * (anchor[1] - centerY),\n 0,\n ];\n\n const childColorAnimation = buildColorAnimation(layer, ctx.ir);\n const childTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.destroy,\n { colorOverLifetime: childColorAnimation }, mapLayerTypeToGETimelineType(layer.type),\n );\n\n const componentId = buildComponent(layer, childItemId, 0.5, 0.5, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n const scaledW = roundNumber(ctx.ratio * layerWidth, 4);\n const scaledH = roundNumber(ctx.ratio * layerHeight, 4);\n const childScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n const childItem: GeneratedVFXItemData = {\n id: childItemId,\n dataType: DataType.VFXItemData,\n name: layer.name,\n duration: layerDuration,\n type: mapLayerTypeToGEItemType(layer.type),\n visible: layer.visible,\n endBehavior: EndBehavior.destroy,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(childPosition, [0, 0, 0], childScale),\n anchor: { x: 0, y: 0 },\n size: { x: scaledW, y: scaledH },\n },\n parentId: nullItemId,\n };\n\n ctx.collector.items.push(childItem);\n ctx.itemBindings.push({ itemId: childItemId, objectBindingTrackId: childTrackId, layerIndex });\n}\n\nexport function appendParentLayer (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n appendNullSpritePair(layer, ctx);\n}\n\nexport function appendVisualLayer (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n const strategy = resolveLayerGenerationStrategy(ctx.ir, layer);\n\n if (strategy.kind === 'split-null-sprite') {\n appendNullSpritePair(layer, ctx);\n\n return;\n }\n\n if (layer.type === 'shape' && layer.shapes != null && layer.shapes.length > 0) {\n appendShapeLayerItems(layer, ctx);\n\n return;\n }\n\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const bounds = getLayerLocalBounds(layer);\n const { width: layerWidth, height: layerHeight } = bounds;\n const scaledW = ctx.ratio * layerWidth;\n const scaledH = ctx.ratio * layerHeight;\n\n const [anchorScaleX, anchorScaleY] = strategy.anchorScale;\n const [anchorOffsetX, anchorOffsetY] = strategy.anchorOffset;\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = {\n ...animation,\n colorOverLifetime: colorAnimation,\n };\n\n const rawPosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const position = applyScalePositionAdjust(rawPosition, layer, bounds, ctx.ratio);\n\n const itemType = mapLayerTypeToGETimelineType(layer.type);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.destroy, fullAnimation, itemType,\n );\n\n const componentId = buildComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n // GE 2.x derives text transform.size from glyph metrics, so transform.scale\n // carries the intended composition-space size.\n const itemScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name,\n duration: layerDuration,\n type: mapLayerTypeToGEItemType(layer.type),\n visible: layer.visible,\n endBehavior: EndBehavior.destroy,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(position, [0, 0, 0], itemScale),\n anchor: { x: 0, y: 0 },\n size: { x: roundNumber(scaledW, 4), y: roundNumber(scaledH, 4) },\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nfunction appendShapeLayerItems (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n // Shape items may omit transform.size. Empty bounds avoid the half-pixel\n // anchor offset introduced by the generic 1×1 fallback.\n const bounds = getLayerLocalBounds(layer, { x: 0, y: 0, width: 0, height: 0 });\n const anchor = getStaticAnchor(layer);\n const { anchorOffsetX, anchorOffsetY } = computeAnchorInfo(layer, bounds);\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = { ...animation, colorOverLifetime: colorAnimation };\n const basePosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const blending = mapBlendModeToGE(layer.blendMode);\n\n for (let shapeIndex = 0; shapeIndex < layer.shapes!.length; shapeIndex++) {\n const shapeData = layer.shapes![shapeIndex];\n const shapeItemId = createId();\n\n if (shapeIndex === 0) {\n ctx.layerToItemId[layerIndex] = shapeItemId;\n }\n\n const shapeOffsetX = ctx.ratio * (shapeData.position[0] - anchor[0]);\n const shapeOffsetY = -ctx.ratio * (shapeData.position[1] - anchor[1]);\n const shapePosition: [number, number, number] = [\n basePosition[0] + shapeOffsetX,\n basePosition[1] + shapeOffsetY,\n basePosition[2],\n ];\n\n const shapeComponentId = createId();\n\n const component: GeneratedComponentData = {\n id: shapeComponentId,\n dataType: DataType.ShapeComponent,\n item: toDataPath(shapeItemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: RenderMode.MESH,\n ...(blending !== undefined && { blending }),\n },\n };\n\n // Attach a preserved source mask to the first generated shape component.\n if (shapeIndex === 0) {\n copyPassthroughMaskToComponent(ctx.ir, layer, component);\n }\n\n ctx.collector.components.push(component);\n if (shapeIndex === 0) {\n ctx.layerToComponentId[layerIndex] = shapeComponentId;\n }\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, EndBehavior.destroy, fullAnimation, ItemType.shape,\n );\n\n const shapeItem: GeneratedVFXItemData = {\n id: shapeItemId,\n dataType: DataType.VFXItemData,\n name: shapeIndex === 0 ? layer.name : `${layer.name}_shape_${shapeIndex}`,\n duration: layerDuration,\n type: ItemType.shape,\n visible: layer.visible,\n endBehavior: EndBehavior.destroy,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: [toDataPath(shapeComponentId)],\n transform: {\n ...buildGETransform(shapePosition, [0, 0, 0], [1, 1, 1]),\n anchor: { x: 0, y: 0 },\n },\n };\n\n ctx.collector.items.push(shapeItem);\n ctx.itemBindings.push({ itemId: shapeItemId, objectBindingTrackId, layerIndex });\n }\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { getStaticAnchor } from '../converter/transform';\nimport type { GeneratedVFXItemData } from '../types';\n\nexport function applyParenting (\n layers: IRLayerNode[],\n items: GeneratedVFXItemData[],\n layerToItemId: Record<number, string>,\n ratio: number,\n width: number,\n height: number,\n): void {\n const layerByIndex = new Map<number, IRLayerNode>();\n\n for (const layer of layers) {\n layerByIndex.set(layer.index, layer);\n }\n\n const itemById = new Map<string, GeneratedVFXItemData>();\n\n for (const item of items) {\n itemById.set(item.id, item);\n }\n\n for (const layer of layers) {\n if (layer.parent == null) {\n continue;\n }\n\n const childItemId = layerToItemId[layer.index];\n const parentLayer = layerByIndex.get(layer.parent.index);\n\n if (parentLayer == null || childItemId == null) {\n continue;\n }\n\n const parentItemId = layerToItemId[parentLayer.index];\n\n if (parentItemId == null) {\n continue;\n }\n\n const childItem = itemById.get(childItemId);\n\n if (childItem == null) {\n continue;\n }\n\n childItem.parentId = parentItemId;\n\n const parentAnchor = getStaticAnchor(parentLayer);\n const adjustX = -ratio * (parentAnchor[0] - width / 2);\n const adjustY = ratio * (parentAnchor[1] - height / 2);\n\n childItem.transform.position.x += adjustX;\n childItem.transform.position.y += adjustY;\n }\n}\n","/**\n * Generate GE mask items for masked IR layers and attach references to direct\n * or descendant renderer components.\n */\nimport type { IRComposition, IRLayerNode, IRMaskData } from '@vvfx/animation-ir';\nimport {\n DataType, EndBehavior, FillType, ItemType, LineCap,\n LineJoin, type MaskOptions, RenderLevel, RenderMode, ShapePrimitiveType,\n} from '@galacean/effects-specification';\nimport { createId, toDataPath } from '../../common/data-path';\nimport { isRecord } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { buildTimelineTracks } from '../generator/timeline';\nimport { computeLayerTiming } from '../converter/timing';\nimport { getStaticAnchor } from '../converter/transform';\nimport type {\n ECSCollector, GeneratedComponentData, GeneratedItemBinding, GeneratedVFXItemData,\n} from '../types';\n\n/** Resolve IR layer indices to generated items and components. */\nexport interface MaskLayerLookup {\n getItemId(layerIndex: number): string | undefined;\n getComponentId(layerIndex: number): string | undefined;\n isParentLayer(layerIndex: number): boolean;\n}\n\n/** Internal ownership metadata for each renderer's single mask slot. */\ntype MaskSlotMeta = Map<string, { isAutoMask: boolean; area: number }>;\n\ninterface MaskTarget {\n componentId: string;\n component: GeneratedComponentData;\n}\n\nexport function applyMasks (\n ir: IRComposition,\n collector: ECSCollector,\n itemBindings: GeneratedItemBinding[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n lookup: MaskLayerLookup,\n): void {\n const layers = ir.layers;\n const maskSlotMeta: MaskSlotMeta = new Map();\n\n const componentById = new Map<string, GeneratedComponentData>();\n\n for (const comp of collector.components) {\n componentById.set(comp.id, comp);\n }\n\n for (let i = layers.length - 1; i >= 0; i--) {\n const layer = layers[i];\n const maskData = layer.mask;\n\n if (maskData == null) {\n continue;\n }\n\n if (isMaskExactCrop(maskData, layer, width, height, lookup)) {\n continue;\n }\n\n const layerItemId = lookup.getItemId(layer.index);\n\n if (layerItemId == null) {\n continue;\n }\n\n const layerComponentId = lookup.getComponentId(layer.index);\n\n buildMaskForLayer(\n layer, layerItemId, layerComponentId, collector, itemBindings,\n ratio, width, height, frameRate, ir.inPoint, lookup, maskSlotMeta, componentById, maskData,\n );\n }\n}\n\nfunction buildMaskForLayer (\n layer: IRLayerNode,\n layerItemId: string,\n layerComponentId: string | undefined,\n collector: ECSCollector,\n itemBindings: GeneratedItemBinding[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n compositionInPoint: number,\n lookup: MaskLayerLookup,\n maskSlotMeta: MaskSlotMeta,\n componentById: Map<string, GeneratedComponentData>,\n maskData?: IRMaskData,\n): void {\n const mask = maskData ?? layer.mask!;\n const maskItemId = createId();\n const maskComponentId = createId();\n const maskBounds = getMaskBounds(mask);\n\n const [anchorX, anchorY] = getStaticAnchor(layer);\n const maskPosX = roundNumber((maskBounds.cx - anchorX) * ratio, 4);\n const maskPosY = roundNumber(-(maskBounds.cy - anchorY) * ratio, 4);\n\n const timing = computeLayerTiming(layer, frameRate, compositionInPoint);\n const delay = timing.delay;\n const maskDuration = timing.layerDuration;\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n const isAutoMask = mask.isAutoMask === true;\n const maskArea = maskBounds.width * maskBounds.height;\n const descendantTargets = layerIsParent\n ? collectClaimableRendererDescendants(\n collector.items, componentById, layerItemId, isAutoMask, maskArea, maskSlotMeta,\n )\n : undefined;\n\n if (descendantTargets?.length === 0) {\n return;\n }\n\n const maskItem: GeneratedVFXItemData = {\n id: maskItemId,\n dataType: DataType.VFXItemData,\n name: `${layer.name}_mask`,\n duration: maskDuration,\n type: ItemType.shape,\n visible: true,\n endBehavior: EndBehavior.destroy,\n delay: roundNumber(delay, 4),\n renderLevel: RenderLevel.BPlus,\n components: [toDataPath(maskComponentId)],\n transform: {\n position: { x: maskPosX, y: maskPosY, z: 0 },\n eulerHint: { x: 0, y: 0, z: 0 },\n anchor: { x: 0, y: 0 },\n scale: { x: 1, y: 1, z: 1 },\n },\n parentId: layerItemId,\n };\n\n const maskComponent: GeneratedComponentData = isSimpleRectMask(mask)\n ? {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: ShapePrimitiveType.Rectangle,\n dataType: DataType.ShapeComponent,\n width: roundNumber(maskBounds.width * ratio, 4),\n height: roundNumber(maskBounds.height * ratio, 4),\n roundness: 0,\n fills: [{ type: FillType.Solid, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: LineCap.Butt,\n strokeJoin: LineJoin.Round,\n renderer: { renderMode: RenderMode.MESH },\n mask: { isMask: true, alphaMaskEnabled: false },\n }\n : buildPolygonMaskComponent(maskComponentId, maskItemId, mask, maskBounds, ratio);\n\n collector.items.push(maskItem);\n collector.components.push(maskComponent);\n componentById.set(maskComponentId, maskComponent);\n\n if (descendantTargets != null) {\n applyMaskReferenceToTargets(descendantTargets, maskComponentId, isAutoMask, maskArea, maskSlotMeta);\n } else if (layerComponentId != null) {\n const targetComponent = componentById.get(layerComponentId);\n\n if (targetComponent != null) {\n targetComponent['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(layerComponentId, { isAutoMask, area: maskArea });\n }\n }\n\n const maskTrackId = buildTimelineTracks(\n collector, delay, maskDuration, EndBehavior.destroy, {}, ItemType.shape,\n );\n\n itemBindings.push({ itemId: maskItemId, objectBindingTrackId: maskTrackId, layerIndex: -1 });\n}\n\nfunction buildMaskRef (maskComponentId: string): MaskOptions {\n return {\n isMask: false,\n reference: toDataPath(maskComponentId),\n inverted: false,\n };\n}\n\nfunction applyMaskReferenceToTargets (\n targets: MaskTarget[],\n maskComponentId: string,\n isAutoMask: boolean,\n maskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): void {\n for (const target of targets) {\n target.component['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(target.componentId, { isAutoMask, area: maskArea });\n }\n}\n\n/**\n * Claim an empty slot without replacing an authored mask. An automatic mask\n * yields to an authored mask or a smaller automatic mask.\n */\nfunction shouldClaimMaskSlot (\n hasExistingMask: boolean,\n existing: { isAutoMask: boolean; area: number } | undefined,\n isAutoMask: boolean,\n maskArea: number,\n): boolean {\n if (!hasExistingMask) {\n return true;\n }\n\n if (existing?.isAutoMask !== true) {\n return false;\n }\n\n if (!isAutoMask) {\n return true;\n }\n\n return maskArea < existing.area;\n}\n\nfunction collectClaimableRendererDescendants (\n items: GeneratedVFXItemData[],\n componentById: Map<string, GeneratedComponentData>,\n parentItemId: string,\n isCurrentAutoMask: boolean,\n currentMaskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): MaskTarget[] {\n const targets: MaskTarget[] = [];\n\n function visit (targetParentId: string): void {\n for (const item of items) {\n if (item.parentId !== targetParentId) {\n continue;\n }\n\n const componentRefs = item.components;\n\n if (componentRefs != null && componentRefs.length > 0) {\n const componentReference = componentRefs[0];\n const component = componentById.get(componentReference.id);\n\n if (\n component != null\n && !isMaskSourceComponent(component)\n && component['renderer'] != null\n && shouldClaimMaskSlot(\n component['mask'] != null, maskSlotMeta.get(componentReference.id), isCurrentAutoMask, currentMaskArea,\n )\n ) {\n targets.push({ componentId: componentReference.id, component });\n }\n }\n\n visit(item.id);\n }\n }\n\n visit(parentItemId);\n\n return targets;\n}\n\nfunction isMaskSourceComponent (component: GeneratedComponentData): boolean {\n const mask = component['mask'];\n\n return isRecord(mask) && mask['isMask'] === true;\n}\n\nfunction computePointBounds (\n points: Array<{ x: number; y: number }>,\n): { minX: number; minY: number; maxX: number; maxY: number } {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n\n for (const point of points) {\n minX = Math.min(minX, point.x);\n minY = Math.min(minY, point.y);\n maxX = Math.max(maxX, point.x);\n maxY = Math.max(maxY, point.y);\n }\n\n return { minX, minY, maxX, maxY };\n}\n\nfunction isMaskExactCrop (\n mask: IRMaskData,\n layer: IRLayerNode,\n width: number,\n height: number,\n lookup: MaskLayerLookup,\n): boolean {\n const path = mask.path;\n\n if (path.points.length === 0) {\n return true;\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n const maskW = maxX - minX;\n const maskH = maxY - minY;\n\n if (mask.isAutoMask === true) {\n if (Math.abs(maskW - width) < 1 && Math.abs(maskH - height) < 1) {\n return true;\n }\n }\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n if (mask.isAutoMask !== true && layerIsParent && isSimpleRectMask(mask)) {\n const precompW = layer.asset?.width;\n const precompH = layer.asset?.height;\n\n if (precompW != null && precompH != null && precompW > 0 && precompH > 0) {\n if (minX <= 0 && minY <= 0 && maxX >= precompW && maxY >= precompH) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getMaskBounds (mask: IRMaskData): { cx: number; cy: number; width: number; height: number } {\n const path = mask.path;\n\n if (path.points.length === 0) {\n return { cx: 0, cy: 0, width: 0, height: 0 };\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n return {\n cx: (minX + maxX) / 2,\n cy: (minY + maxY) / 2,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nfunction isSimpleRectMask (mask: IRMaskData): boolean {\n const path = mask.path;\n\n return path.points.length === 4\n && path.inTangents.every(isZeroTangent)\n && path.outTangents.every(isZeroTangent);\n}\n\nfunction isZeroTangent (tangent: { x: number; y: number }): boolean {\n return Math.abs(tangent.x) < 0.01 && Math.abs(tangent.y) < 0.01;\n}\n\nfunction buildPolygonMaskComponent (\n maskComponentId: string,\n maskItemId: string,\n mask: IRMaskData,\n bounds: { cx: number; cy: number; width: number; height: number },\n ratio: number,\n): GeneratedComponentData {\n const path = mask.path;\n const customPoints: Array<{ x: number; y: number }> = [];\n const customEasingIns: Array<{ x: number; y: number }> = [];\n const customEasingOuts: Array<{ x: number; y: number }> = [];\n const customIndexes: Array<{ point: number; easingIn: number; easingOut: number }> = [];\n\n for (let pointIndex = 0; pointIndex < path.points.length; pointIndex++) {\n const point = path.points[pointIndex];\n const easingIn = path.inTangents[pointIndex];\n const easingOut = path.outTangents[pointIndex];\n\n customPoints.push({\n x: roundNumber((point.x - bounds.cx) * ratio, 4),\n y: roundNumber(-(point.y - bounds.cy) * ratio, 4),\n });\n customEasingIns.push({\n x: roundNumber((easingIn?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingIn?.y ?? 0) * ratio, 4),\n });\n customEasingOuts.push({\n x: roundNumber((easingOut?.x ?? 0) * ratio, 4),\n y: roundNumber(-(easingOut?.y ?? 0) * ratio, 4),\n });\n customIndexes.push({ point: pointIndex, easingIn: pointIndex, easingOut: pointIndex });\n }\n\n return {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: ShapePrimitiveType.Custom,\n dataType: DataType.ShapeComponent,\n points: customPoints,\n easingIns: customEasingIns,\n easingOuts: customEasingOuts,\n shapes: [{ close: path.closed, indexes: customIndexes }],\n fills: [{ type: FillType.Solid, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: LineCap.Butt,\n strokeJoin: LineJoin.Round,\n renderer: { renderMode: RenderMode.MESH },\n mask: { isMask: true, alphaMaskEnabled: false },\n };\n}\n","import { toDataPath } from '../../common/data-path';\nimport type { ECSCollector } from '../types';\n\n/**\n * Remap preserved mask targets from source component IDs to regenerated IDs.\n * Source masks have no reference; unresolved target masks are removed.\n */\nexport function applyGEMaskRemap (\n collector: ECSCollector,\n GEComponentIdToNewId: Record<string, string>,\n): void {\n for (const component of collector.components) {\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask == null) {\n continue;\n }\n\n const reference = mask['reference'] as { id?: string } | undefined;\n const oldId = reference?.id;\n\n if (oldId == null) {\n continue;\n }\n\n const newId = GEComponentIdToNewId[oldId];\n\n if (newId == null) {\n // Remove unresolved targets instead of emitting dangling references.\n delete component['mask'];\n\n continue;\n }\n\n mask['reference'] = toDataPath(newId);\n }\n}\n","import type { DataPath, TimelineClipData, VFXItemData } from '@galacean/effects-specification';\nimport { DataType } from '@galacean/effects-specification';\nimport type { GeneratedMiscData } from '../types';\n\ntype VisibilityItem = Pick<VFXItemData, 'id' | 'delay' | 'duration' | 'parentId'>;\n\ninterface GeneratedItemBindingRef {\n itemId: string;\n objectBindingTrackId: string;\n}\n\ninterface NormalizeVisibilityParams {\n items: VisibilityItem[];\n miscs: GeneratedMiscData[];\n itemBindings: GeneratedItemBindingRef[];\n /** Child item IDs whose lifetime is independent of the transform parent's window. */\n independentLifetimeChildItemIds?: Set<string>;\n roundNumber: (value: number, precision: number) => number;\n}\n\n/**\n * Normalize item lifetimes in parent-first order. Contained children are clamped\n * to their parent; independent children extend the transform parent's activation\n * interval. Transform keyframes retain their original time domain.\n */\nexport function normalizeChildVisibilityByParentDelays ({\n items,\n miscs,\n itemBindings,\n independentLifetimeChildItemIds = new Set<string>(),\n roundNumber,\n}: NormalizeVisibilityParams): void {\n const itemById = new Map<string, VisibilityItem>();\n\n for (const item of items) {\n itemById.set(item.id, item);\n }\n\n const bindingByItemId = new Map<string, GeneratedItemBindingRef>();\n\n for (const binding of itemBindings) {\n bindingByItemId.set(binding.itemId, binding);\n }\n\n const miscById = new Map<string, GeneratedMiscData>();\n\n for (const misc of miscs) {\n miscById.set(misc.id, misc);\n }\n\n advanceIndependentLifetimeParents(\n items,\n itemById,\n bindingByItemId,\n miscById,\n independentLifetimeChildItemIds,\n roundNumber,\n );\n\n const effectiveDelayCache = new Map<string, number>();\n\n function getEffectiveDelay (itemId: string, visited = new Set<string>()): number {\n if (effectiveDelayCache.has(itemId)) {\n return effectiveDelayCache.get(itemId) as number;\n }\n if (visited.has(itemId)) {\n return 0;\n }\n\n visited.add(itemId);\n\n const item = itemById.get(itemId);\n\n if (item == null) {\n return 0;\n }\n\n let delay = item.delay ?? 0;\n const parentId = item.parentId;\n\n if (parentId != null && parentId !== '') {\n delay = Math.max(delay, getEffectiveDelay(parentId, visited));\n }\n\n effectiveDelayCache.set(itemId, delay);\n\n return delay;\n }\n\n const sortedItems = topologicalSort(items, itemById);\n\n for (const item of sortedItems) {\n const itemId = item.id;\n const originalDelay = item.delay ?? 0;\n const originalDuration = item.duration;\n const effectiveDelay = getEffectiveDelay(itemId);\n\n if (effectiveDelay <= originalDelay) {\n continue;\n }\n\n const parentId = item.parentId;\n const parentItem = (parentId != null && parentId !== '') ? itemById.get(parentId) : undefined;\n const parentDuration = parentItem?.duration ?? 0;\n\n // Precomposition children use parent-local time; transform-linked children\n // use composition time.\n const isPrecompChild = parentItem != null\n && (originalDelay + originalDuration) <= parentDuration + 0.001;\n\n let newDuration: number;\n\n if (isPrecompChild) {\n newDuration = Math.min(originalDuration, parentDuration - originalDelay);\n } else {\n const timeDiff = effectiveDelay - originalDelay;\n\n newDuration = originalDuration - timeDiff;\n }\n\n if (newDuration <= 0) {\n newDuration = 0.0001;\n }\n\n item.delay = roundNumber(effectiveDelay, 4);\n item.duration = roundNumber(newDuration, 4);\n\n syncTimelineClips(itemId, effectiveDelay, newDuration, bindingByItemId, miscById, roundNumber);\n }\n}\n\nfunction advanceIndependentLifetimeParents (\n items: VisibilityItem[],\n itemById: Map<string, VisibilityItem>,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n independentLifetimeChildItemIds: Set<string>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n if (independentLifetimeChildItemIds.size === 0) {\n return;\n }\n\n const parentAdvanceMap = new Map<string, number>();\n const parentExtendMap = new Map<string, number>();\n\n for (const item of items) {\n if (!independentLifetimeChildItemIds.has(item.id)) {\n continue;\n }\n\n const parentId = item.parentId;\n\n if (parentId == null || parentId === '') {\n continue;\n }\n\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const childDelay = item.delay ?? 0;\n const childDuration = item.duration;\n const parentDelay = parentItem.delay ?? 0;\n const parentDuration = parentItem.duration;\n\n if (childDelay < parentDelay) {\n const advance = parentDelay - childDelay;\n const existing = parentAdvanceMap.get(parentId) ?? 0;\n\n if (advance > existing) {\n parentAdvanceMap.set(parentId, advance);\n }\n }\n\n const childEnd = childDelay + childDuration;\n const parentEnd = parentDelay + parentDuration;\n\n if (childEnd > parentEnd + 0.001) {\n const extend = childEnd - parentEnd;\n const existing = parentExtendMap.get(parentId) ?? 0;\n\n if (extend > existing) {\n parentExtendMap.set(parentId, extend);\n }\n }\n }\n\n // Materialize iterators before array spread for ES5-compatible transpilation.\n const allParentIds = new Set([\n ...Array.from(parentAdvanceMap.keys()),\n ...Array.from(parentExtendMap.keys()),\n ]);\n\n for (const parentId of allParentIds) {\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const advance = parentAdvanceMap.get(parentId) ?? 0;\n const extend = parentExtendMap.get(parentId) ?? 0;\n const parentDelay = parentItem.delay ?? 0;\n const parentDuration = parentItem.duration;\n const newDelay = roundNumber(parentDelay - advance, 4);\n const newDuration = roundNumber(parentDuration + advance + extend, 4);\n\n parentItem.delay = newDelay;\n parentItem.duration = newDuration;\n\n // Extend only activation; transform keyframes retain their original time domain.\n const binding = bindingByItemId.get(parentId);\n\n if (binding != null) {\n const objectBindingTrack = miscById.get(binding.objectBindingTrackId);\n\n if (objectBindingTrack != null && Array.isArray(objectBindingTrack['children'])) {\n for (const childRef of objectBindingTrack['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack?.['dataType'] === DataType.ActivationTrack && Array.isArray(childTrack['clips'])) {\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = newDelay;\n clip.duration = newDuration;\n }\n }\n }\n }\n }\n }\n}\n\n/** Sort items parent-first while preserving order among unrelated items. */\nfunction topologicalSort (\n items: VisibilityItem[],\n itemById: Map<string, VisibilityItem>,\n): VisibilityItem[] {\n const sorted: VisibilityItem[] = [];\n const visited = new Set<string>();\n\n function visit (item: VisibilityItem): void {\n const itemId = item.id;\n\n if (visited.has(itemId)) {\n return;\n }\n\n visited.add(itemId);\n\n const parentId = item.parentId;\n\n if (parentId != null && parentId !== '') {\n const parentItem = itemById.get(parentId);\n\n if (parentItem != null) {\n visit(parentItem);\n }\n }\n\n sorted.push(item);\n }\n\n for (const item of items) {\n visit(item);\n }\n\n return sorted;\n}\n\nfunction syncTimelineClips (\n itemId: string,\n delay: number,\n duration: number,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n const binding = bindingByItemId.get(itemId);\n\n if (binding == null) {\n return;\n }\n\n const objectBindingTrack = miscById.get(binding.objectBindingTrackId);\n\n if (objectBindingTrack == null || !Array.isArray(objectBindingTrack['children'])) {\n return;\n }\n\n for (const childRef of objectBindingTrack['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack == null || !Array.isArray(childTrack['clips'])) {\n continue;\n }\n\n const trackType = childTrack.dataType;\n\n if (trackType !== DataType.ActivationTrack\n && trackType !== DataType.TransformTrack\n && trackType !== DataType.SpriteColorTrack\n ) {\n continue;\n }\n\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = roundNumber(delay, 4);\n clip.duration = roundNumber(duration, 4);\n }\n }\n}\n","import type { IRComposition } from '@vvfx/animation-ir';\nimport { roundNumber } from '../../common/math';\nimport type { ECSCollector, GeneratedItemBinding } from '../types';\nimport { applyParenting } from './parenting';\nimport { applyMasks, type MaskLayerLookup } from './mask';\nimport { applyGEMaskRemap } from './ge-mask-remap';\nimport { normalizeChildVisibilityByParentDelays } from './visibility';\nimport { hasIndependentParentLifetime } from '../converter/transform';\n\n/** Generation state consumed by optional post-processing steps. */\ninterface PostProcessState {\n collector: ECSCollector;\n itemBindings: GeneratedItemBinding[];\n /** Per-layer lookups used during mask generation. */\n maskLookup?: MaskLayerLookup;\n layerToItemId?: Record<number, string>;\n parentIndexSet?: Set<number>;\n ratio?: number;\n width?: number;\n height?: number;\n frameRate?: number;\n /** Source-to-generated component ID map for preserved mask references. */\n GEComponentIdToNewId?: Record<string, string>;\n}\n\n/** Run ordered post-generation passes before scene assembly. */\nexport function applyPostProcess (ir: IRComposition, state: PostProcessState): void {\n applyParentingStep(ir, state);\n applySharedMaskPostProcess(ir, state);\n applyGEMaskRemapStep(ir, state);\n applyVisibilityStep(ir, state);\n}\n\nfunction applyGEMaskRemapStep (ir: IRComposition, state: PostProcessState): void {\n // Generated IR masks already use regenerated IDs; only preserved Effects masks need remapping.\n if (ir.source !== 'effects' || state.GEComponentIdToNewId == null) {\n return;\n }\n\n applyGEMaskRemap(state.collector, state.GEComponentIdToNewId);\n}\n\nfunction applySharedMaskPostProcess (ir: IRComposition, state: PostProcessState): void {\n if (state.maskLookup == null\n || state.ratio == null\n || state.width == null\n || state.height == null\n || state.frameRate == null\n ) {\n return;\n }\n\n applyMasks(\n ir,\n state.collector,\n state.itemBindings,\n state.ratio,\n state.width,\n state.height,\n state.frameRate,\n state.maskLookup,\n );\n}\n\nfunction applyParentingStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, layerToItemId, ratio, width, height } = state;\n\n if (layerToItemId == null || ratio == null || width == null || height == null) {\n return;\n }\n\n applyParenting(ir.layers, collector.items, layerToItemId, ratio, width, height);\n}\n\nfunction applyVisibilityStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, itemBindings, layerToItemId } = state;\n\n if (layerToItemId == null) {\n return;\n }\n\n const independentLifetimeChildItemIds = new Set<string>();\n\n for (const layer of ir.layers) {\n if (hasIndependentParentLifetime(layer)) {\n const itemId = layerToItemId[layer.index];\n\n if (itemId != null) {\n independentLifetimeChildItemIds.add(itemId);\n }\n }\n }\n\n normalizeChildVisibilityByParentDelays({\n items: collector.items,\n miscs: collector.miscs,\n itemBindings,\n independentLifetimeChildItemIds,\n roundNumber,\n });\n}\n","import { validateIRCompositionOrThrow, type IRComposition, type IRLayerNode } from '@vvfx/animation-ir';\nimport type { DataPath, JSONScene } from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../common/coordinate-mapping';\nimport { getEffectsLayerSpecific } from '../effects-passthrough';\nimport { assembleGEScene } from './assemble';\nimport { extendParentEndFrames } from './converter/timing';\nimport { appendNullLayer, appendParentLayer, appendPrecompLayer, appendVisualLayer } from './generator/layer';\nimport { applyPostProcess } from './post-process';\nimport type { ECSCollector, GeneratedItemBinding, LayerGenerationContext } from './types';\n\n/**\n * Convert an IR composition to a GE JSONScene.\n *\n * Effects passthrough data is used only to preserve source hierarchy, masks,\n * precompositions, and animation encodings that normalized IR cannot represent.\n * `duration` overrides the range derived from the IR frame bounds.\n */\nexport function convertIRToGE (\n ir: IRComposition,\n duration?: number,\n): JSONScene {\n validateIRCompositionOrThrow(ir);\n\n const { width, height, frameRate } = ir;\n const ratio = get2dTo3dRatio(width, height);\n\n const collector: ECSCollector = {\n images: [],\n components: [],\n items: [],\n textures: [],\n miscs: [],\n };\n const itemBindings: GeneratedItemBinding[] = [];\n const layerToItemId: Record<number, string> = {};\n const layerToComponentId: Record<number, string> = {};\n const textureCache = new Map<string, DataPath>();\n\n const parentIndexSet = new Set<number>();\n\n for (const layer of ir.layers) {\n if (layer.parent != null) {\n parentIndexSet.add(layer.parent.index);\n }\n }\n\n const workingIR: IRComposition = {\n ...ir,\n layers: extendParentEndFrames(ir.layers, parentIndexSet),\n };\n\n const ctx: LayerGenerationContext = {\n ir: workingIR,\n collector,\n itemBindings,\n layerToItemId,\n layerToComponentId,\n textureCache,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n };\n\n for (const layer of workingIR.layers) {\n appendLayer(layer, ctx);\n }\n\n // Map source component IDs to regenerated IDs for mask-reference remapping.\n const GEComponentIdToNewId: Record<string, string> = {};\n\n for (const layer of workingIR.layers) {\n const GEComponentId = getEffectsLayerSpecific(workingIR, layer)?.sourceComponentId;\n const newId = layerToComponentId[layer.index];\n\n if (GEComponentId != null && newId != null) {\n GEComponentIdToNewId[GEComponentId] = newId;\n }\n }\n\n applyPostProcess(workingIR, {\n collector,\n itemBindings,\n layerToItemId,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n GEComponentIdToNewId,\n maskLookup: {\n getItemId: idx => layerToItemId[idx],\n getComponentId: idx => layerToComponentId[idx],\n isParentLayer: idx => parentIndexSet.has(idx),\n },\n });\n\n collector.items.reverse();\n itemBindings.reverse();\n\n return assembleGEScene(workingIR, collector, itemBindings, duration);\n}\n\nfunction appendLayer (layer: IRLayerNode, ctx: LayerGenerationContext): void {\n if (layer.type === 'precomp') {\n if (hasGEPrecompMetadata(ctx.ir, layer)) {\n appendPrecompLayer(layer, ctx);\n } else {\n appendNullLayer(layer, ctx);\n }\n } else if (layer.type === 'null') {\n appendNullLayer(layer, ctx);\n } else if (ctx.parentIndexSet.has(layer.index)) {\n appendParentLayer(layer, ctx);\n } else {\n appendVisualLayer(layer, ctx);\n }\n}\n\nfunction hasGEPrecompMetadata (ir: IRComposition, layer: IRLayerNode): boolean {\n const specific = getEffectsLayerSpecific(ir, layer);\n\n return specific?.precompRefId != null || specific?.precompContent != null;\n}\n","import type { IRComposition, IRCompositionSpecific, IRLayerNode } from '@vvfx/animation-ir';\nimport { ItemType } from '@galacean/effects-specification';\nimport { normalizeJsonValue } from '../common/json-normalization';\nimport type { GESceneContext } from './types';\n\n/** Assemble parsed GE data into the final normalized IR composition. */\nexport function assembleIRComposition (\n scene: Record<string, unknown>,\n itemIds: string[],\n layers: IRLayerNode[],\n ctx: GESceneContext,\n): IRComposition {\n return normalizeJsonValue({\n source: 'effects',\n name: ctx.compositionName,\n width: ctx.width,\n height: ctx.height,\n frameRate: ctx.frameRate,\n inPoint: ctx.inPoint,\n outPoint: ctx.outPoint,\n backgroundColor: ctx.backgroundColor,\n endBehavior: ctx.endBehavior,\n layers,\n specific: buildCompositionSpecific(scene, ctx.compositionId, itemIds, ctx),\n });\n}\n\nfunction buildCompositionSpecific (\n scene: Record<string, unknown>,\n compositionId: string,\n itemIds: string[],\n ctx: GESceneContext,\n): IRCompositionSpecific | undefined {\n if (!hasPrecompItem(itemIds, ctx)) {\n return undefined;\n }\n\n return {\n effects: {\n sourceCompositionId: compositionId,\n sourceScene: normalizeJsonValue(scene),\n },\n };\n}\n\nfunction hasPrecompItem (itemIds: string[], ctx: GESceneContext): boolean {\n return itemIds.some(itemId => ctx.itemById.get(itemId)?.['type'] === ItemType.composition);\n}\n","// Value-level mappings used by the GE-to-IR conversion pipeline.\nimport { IRBlendMode, IREndBehavior, type IRTimeContext } from '@vvfx/animation-ir';\nimport { EndBehavior } from '@galacean/effects-specification';\nimport { DEFAULT_CAMERA_Z, get2dTo3dRatio } from '../common/coordinate-mapping';\n\nconst IR_BLEND_MODE_BY_GE: Record<number, IRBlendMode> = {\n 1: IRBlendMode.Add,\n 2: IRBlendMode.Darken,\n 3: IRBlendMode.Lighten,\n 4: IRBlendMode.Difference,\n 5: IRBlendMode.Exclusion,\n 6: IRBlendMode.Multiply,\n 7: IRBlendMode.ColorBurn,\n 8: IRBlendMode.Color,\n 9: IRBlendMode.Screen,\n 10: IRBlendMode.ColorDodge,\n 11: IRBlendMode.Hue,\n 12: IRBlendMode.Saturation,\n 13: IRBlendMode.Overlay,\n 14: IRBlendMode.HardLight,\n 15: IRBlendMode.SoftLight,\n 16: IRBlendMode.Luminosity,\n};\n\nexport function mapBlendModeToIR (GECode: number | undefined): IRBlendMode | undefined {\n if (GECode == null) {\n return undefined;\n }\n\n return IR_BLEND_MODE_BY_GE[GECode];\n}\n\nexport function mapEndBehaviorToIR (GEBehavior: EndBehavior | undefined): IREndBehavior | undefined {\n if (GEBehavior == null) {\n return undefined;\n }\n\n switch (GEBehavior) {\n case EndBehavior.destroy:\n return IREndBehavior.Destroy;\n case EndBehavior.forward:\n return IREndBehavior.Forward;\n case EndBehavior.freeze:\n return IREndBehavior.Freeze;\n case EndBehavior.restart:\n return IREndBehavior.Restart;\n default:\n return undefined;\n }\n}\n\nexport function mapLayerTimingToIR (\n delay: number,\n duration: number,\n frameRate: number,\n): IRTimeContext {\n const startFrame = Math.round(delay * frameRate * 1000) / 1000;\n const endFrame = Math.round((delay + duration) * frameRate * 1000) / 1000;\n\n return { startFrame, endFrame };\n}\n\nexport function convert3dTo2dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const effectiveRatio = Math.abs(adaptRatioZ) > 1e-10 ? ratio * adaptRatioZ : ratio;\n const px = x / effectiveRatio + width / 2;\n const py = height / 2 - y / effectiveRatio;\n\n return [px, py, z];\n}\n","import type { IRColor } from '@vvfx/animation-ir';\nimport {\n DataType, type DataPath, type EndBehavior, type SceneBindingData,\n} from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { buildPoolIndex, resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { mapEndBehaviorToIR } from '../mapping';\nimport type { GEToIROptions, GESceneContext } from '../types';\n\nexport function buildSceneContext (scene: Record<string, unknown>, options: GEToIROptions): GESceneContext {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(candidate => candidate['id'] === compositionId);\n\n if (composition == null) {\n throw new Error(`[ge2ir] composition not found for id: ${compositionId}`);\n }\n\n const previewSize = composition['previewSize'] as [number, number] | undefined;\n const width = previewSize?.[0] ?? 512;\n const height = previewSize?.[1] ?? 512;\n const duration = composition['duration'] as number ?? 1;\n const frameRate = options.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n\n const inPoint = 0;\n // Preserve fractional frames because GE durations need not end on a frame boundary.\n const outPoint = duration * frameRate;\n\n const endBehavior = mapEndBehaviorToIR(composition['endBehavior'] as EndBehavior | undefined);\n\n let backgroundColor: IRColor | undefined;\n const background = composition['background'] as Record<string, unknown> | undefined;\n\n if (background != null) {\n const color = background['color'] as number[] | undefined;\n\n if (color != null && color.length >= 4) {\n backgroundColor = [color[0], color[1], color[2], color[3]];\n }\n }\n\n const compositionName = (composition['name'] as string) ?? 'Untitled';\n\n const items = scene['items'] as Record<string, unknown>[] | undefined;\n const components = scene['components'] as Record<string, unknown>[] | undefined;\n const miscs = scene['miscs'] as Record<string, unknown>[] | undefined;\n const images = scene['images'] as Record<string, unknown>[] | undefined;\n const textures = scene['textures'] as Record<string, unknown>[] | undefined;\n\n const itemById = buildPoolIndex(items);\n const componentById = buildPoolIndex(components);\n const miscById = buildPoolIndex(miscs);\n const imageById = buildPoolIndex(images);\n const textureById = buildPoolIndex(textures);\n\n const itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);\n\n return {\n compositionId,\n width,\n height,\n frameRate,\n ratio,\n duration,\n inPoint,\n outPoint,\n compositionName,\n endBehavior,\n backgroundColor,\n itemById,\n componentById,\n miscById,\n imageById,\n textureById,\n itemIdToTrackId,\n };\n}\n\nfunction buildSceneBindings (\n componentById: Map<string, Record<string, unknown>>,\n miscById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Map<string, string> {\n const trackIdByItemId = new Map<string, string>();\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return trackIdByItemId;\n }\n\n const bindings = compositionComponent['sceneBindings'] as SceneBindingData[] | undefined;\n\n if (bindings == null) {\n return trackIdByItemId;\n }\n\n for (const binding of bindings) {\n const trackId = resolveDataPathId(binding.key);\n const itemId = resolveDataPathId(binding.value);\n\n if (trackId != null && itemId != null) {\n trackIdByItemId.set(itemId, trackId);\n }\n }\n\n return trackIdByItemId;\n}\n\nfunction findCompositionComponent (\n componentById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const componentReferences = composition['components'] as DataPath[] | undefined;\n\n if (componentReferences == null || componentReferences.length === 0) {\n return undefined;\n }\n\n for (const componentReference of componentReferences) {\n const component = resolveDataPath(componentById, componentReference);\n\n if (component?.['dataType'] === DataType.CompositionComponent) {\n return component;\n }\n }\n\n return undefined;\n}\n\nexport function getCompositionItemIds (scene: Record<string, unknown>): string[] {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(candidate => candidate['id'] === compositionId);\n\n if (composition == null) {\n return [];\n }\n\n const componentById = buildPoolIndex(scene['components'] as Record<string, unknown>[] | undefined);\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return [];\n }\n\n const itemReferences = compositionComponent['items'] as DataPath[] | undefined;\n\n if (itemReferences == null) {\n return [];\n }\n\n return itemReferences\n .map(itemReference => itemReference.id)\n .filter((id): id is string => typeof id === 'string');\n}\n","import type { IRBezierHandle, IRKeyframe } from '@vvfx/animation-ir';\nimport { BezierKeyframeType } from '@galacean/effects-specification';\n\ntype BezierSegment = [number, number, number, number, number, number, number, number];\n\nconst TIME_EPSILON = 1e-10;\nconst VALUE_EPSILON = 1e-6;\n\nfunction inverseLerp (a: number, b: number, value: number): number {\n const range = b - a;\n\n if (Math.abs(range) < 1e-10) {\n return 0;\n }\n\n return (value - a) / range;\n}\n\nexport function parseBezierKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): IRKeyframe<number>[] {\n if (curves.length === 0 || !Number.isFinite(startFrame) || !Number.isFinite(endFrame) || endFrame <= startFrame) {\n return [];\n }\n\n const extractedSegments = extractSegments(curves);\n const segments = normalizeScalarSegments(extractedSegments);\n\n if (segments == null || segments.length === 0) {\n return [];\n }\n\n const frames = endFrame - startFrame;\n const keyframes: IRKeyframe<number>[] = [];\n\n const firstSegment = segments[0];\n const firstTime = firstSegment[0];\n const firstValue = firstSegment[1];\n const secondSegment = segments[1];\n\n const hasPrependedHold = secondSegment != null\n && Math.abs(firstValue - firstSegment[7]) < VALUE_EPSILON\n && Math.abs(firstTime) < TIME_EPSILON\n && Math.abs(firstSegment[6] - secondSegment[0]) < VALUE_EPSILON;\n\n if (hasPrependedHold) {\n segments.shift();\n }\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const t0 = segment[0];\n const v0 = segment[1];\n const outControlPointY = segment[3];\n const v1 = segment[7];\n\n const frameTime = t0 * frames + startFrame;\n\n const isHold = Math.abs(v0 - v1) < 1e-6\n && Math.abs(outControlPointY - v0) < 1e-6\n && Math.abs(segment[5] - v0) < 1e-6;\n\n const outTangent = parseSegmentTangent(segment, 'out', 'value');\n\n if (i === 0) {\n keyframes.push({\n frame: frameTime,\n value: v0,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n } else {\n const previousSegment = segments[i - 1];\n const inTangent = parseSegmentTangent(previousSegment, 'in', 'value');\n\n keyframes.push({\n frame: frameTime,\n value: v0,\n inTangent,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n }\n }\n\n const lastSegment = segments[segments.length - 1];\n const lastTime = lastSegment[6];\n const lastValue = lastSegment[7];\n const lastFrameTime = lastTime * frames + startFrame;\n\n const lastInTangent = parseSegmentTangent(lastSegment, 'in', 'value');\n\n keyframes.push({\n frame: lastFrameTime,\n value: lastValue,\n inTangent: lastInTangent,\n });\n\n return keyframes;\n}\n\nfunction extractSegments (curves: unknown[]): BezierSegment[] {\n if (!isSupportedEaseCurve(curves)) {\n return [];\n }\n\n const segments: BezierSegment[] = [];\n\n for (let i = 0; i < curves.length; i++) {\n const entry = curves[i] as [BezierKeyframeType, number[], BezierKeyframeType];\n const type = entry[0];\n const data = entry[1];\n\n if (type === BezierKeyframeType.EASE_OUT) {\n // EASE_OUT: [t, v, out_cx, out_cy] — first keyframe of a segment\n\n if (i + 1 < curves.length) {\n const nextEntry = curves[i + 1] as [BezierKeyframeType, number[], BezierKeyframeType];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === BezierKeyframeType.EASE_IN) {\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n } else if (type === BezierKeyframeType.EASE && i + 1 < curves.length) {\n // EASE: [in_cx, in_cy, t, v, out_cx, out_cy] — middle keyframe\n const nextEntry = curves[i + 1] as [BezierKeyframeType, number[], BezierKeyframeType];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === BezierKeyframeType.EASE_IN) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n }\n\n return segments;\n}\n\nfunction isSupportedEaseCurve (curves: unknown[]): boolean {\n if (curves.length < 2) {\n return false;\n }\n\n return curves.every((entry, index) => {\n if (!Array.isArray(entry) || !Array.isArray(entry[1])) {\n return false;\n }\n\n const expectedType = index === 0\n ? BezierKeyframeType.EASE_OUT\n : index === curves.length - 1\n ? BezierKeyframeType.EASE_IN\n : BezierKeyframeType.EASE;\n const expectedLength = expectedType === BezierKeyframeType.EASE ? 6 : 4;\n\n return entry[0] === expectedType\n && entry[1].length >= expectedLength\n && entry[1].slice(0, expectedLength).every(value => typeof value === 'number' && Number.isFinite(value));\n });\n}\n\n/**\n * Remove zero-duration segments with equal endpoints. Instantaneous jumps are not\n * representable in normalized IR and remain in raw passthrough data.\n */\nfunction normalizeScalarSegments (segments: BezierSegment[]): BezierSegment[] | undefined {\n const normalized: BezierSegment[] = [];\n\n for (const segment of segments) {\n const duration = segment[6] - segment[0];\n\n if (duration < -TIME_EPSILON) {\n return undefined;\n }\n if (Math.abs(duration) <= TIME_EPSILON) {\n if (Math.abs(segment[7] - segment[1]) > VALUE_EPSILON) {\n return undefined;\n }\n continue;\n }\n\n const outTangentX = inverseLerp(segment[0], segment[6], segment[2]);\n const inTangentX = inverseLerp(segment[0], segment[6], segment[4]);\n\n if (outTangentX < 0 || outTangentX > 1 || inTangentX < 0 || inTangentX > 1) {\n return undefined;\n }\n\n normalized.push(segment);\n }\n\n return normalized;\n}\n\nexport function parsePositionTimingKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): Array<{ frame: number; outTangent?: IRBezierHandle; inTangent?: IRBezierHandle }> {\n const segments = extractSegments(curves);\n\n if (segments.length === 0) {\n return [];\n }\n\n const frames = endFrame - startFrame;\n const result: Array<{ frame: number; outTangent?: IRBezierHandle; inTangent?: IRBezierHandle }> = [];\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const t0 = segment[0];\n\n const frameTime = t0 * frames + startFrame;\n\n const outTangent = parseSegmentTangent(segment, 'out', 'time');\n\n if (i === 0) {\n result.push({ frame: frameTime, outTangent });\n } else {\n const previousSegment = segments[i - 1];\n const inTangent = parseSegmentTangent(previousSegment, 'in', 'time');\n\n result.push({ frame: frameTime, outTangent, inTangent });\n }\n }\n\n const lastSegment = segments[segments.length - 1];\n const lastFrameTime = lastSegment[6] * frames + startFrame;\n\n const lastInTangent = parseSegmentTangent(lastSegment, 'in', 'time');\n\n result.push({ frame: lastFrameTime, inTangent: lastInTangent });\n\n return result;\n}\n\nfunction parseSegmentTangent (\n segment: BezierSegment,\n direction: 'in' | 'out',\n valueDomain: 'time' | 'value',\n): IRBezierHandle {\n const controlPointIndex = direction === 'out' ? 2 : 4;\n const valueStart = valueDomain === 'time' ? segment[0] : segment[1];\n const valueEnd = valueDomain === 'time' ? segment[6] : segment[7];\n\n return {\n x: inverseLerp(segment[0], segment[6], segment[controlPointIndex]),\n y: inverseLerp(valueStart, valueEnd, segment[controlPointIndex + 1]),\n };\n}\n","import type {\n IRAnimatedProperty, IRBezierHandle, IRKeyframe, IRRotationChannels, IRSpatialTangent,\n IRTransformChannels, IRVec3,\n} from '@vvfx/animation-ir';\nimport { ValueType } from '@galacean/effects-specification';\nimport { parseBezierKeyframes, parsePositionTimingKeyframes } from './keyframe';\nimport { convert3dTo2dPoint } from '../mapping';\nimport type { GESceneContext } from '../types';\n\nconst POSITION_EPSILON = 1e-6;\n\ntype PositionTimingKeyframe = {\n frame: number;\n outTangent?: IRBezierHandle;\n inTangent?: IRBezierHandle;\n};\n\nexport function parseTransformAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const positionOverLifetime = asset['positionOverLifetime'] as Record<string, unknown> | undefined;\n\n if (positionOverLifetime != null) {\n const positionAnimation = parsePositionAnimation(positionOverLifetime, startFrame, endFrame, ctx);\n\n if (positionAnimation != null) {\n channels.position = positionAnimation;\n }\n }\n\n const rotationOverLifetime = asset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n\n if (rotationOverLifetime != null) {\n const rotation = parseRotationAnimation(rotationOverLifetime, startFrame, endFrame);\n\n if (rotation != null) {\n channels.rotation = rotation;\n }\n }\n\n const sizeOverLifetime = asset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (sizeOverLifetime != null) {\n const scaleAnimation = parseScaleAnimation(sizeOverLifetime, startFrame, endFrame);\n\n if (scaleAnimation != null) {\n channels.scale = scaleAnimation;\n }\n }\n\n return channels;\n}\n\nexport function parseOpacityAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n const colorOverLifetime = asset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (colorOverLifetime == null) {\n return undefined;\n }\n\n const opacity = colorOverLifetime['opacity'] as unknown[] | undefined;\n\n return parseScalarChannel(opacity, startFrame, endFrame);\n}\n\nfunction parsePositionAnimation (\n positionOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): IRAnimatedProperty<IRVec3> | undefined {\n const pathData = positionOverLifetime['path'] as unknown[] | undefined;\n\n if (pathData == null || !Array.isArray(pathData) || pathData.length < 2) {\n return undefined;\n }\n\n const valueType = pathData[0] as ValueType;\n\n if (valueType !== ValueType.BEZIER_CURVE_PATH) {\n return undefined;\n }\n\n const payload = pathData[1] as unknown[];\n\n if (!Array.isArray(payload) || payload.length < 2) {\n return undefined;\n }\n\n const easingData = payload[0];\n const pathPoints = payload[1] as [number, number, number][];\n const controlPointsRaw = payload[2] as [number, number, number][] | undefined;\n\n if (!Array.isArray(easingData) || !Array.isArray(pathPoints) || pathPoints.length < 2) {\n return undefined;\n }\n\n const timingKeyframes = parsePositionTimingKeyframes(easingData, startFrame, endFrame);\n\n if (timingKeyframes.length < 2) {\n return undefined;\n }\n\n const startIndex = isPrependedPositionBridge(\n timingKeyframes, pathPoints, controlPointsRaw, startFrame,\n ) ? 1 : 0;\n\n const keyframes: IRKeyframe<IRVec3>[] = [];\n const pendingSpatialIn = new Map<number, IRSpatialTangent>();\n\n for (let i = startIndex; i < timingKeyframes.length; i++) {\n const timing = timingKeyframes[i];\n const pathPoint = pathPoints[Math.min(i, pathPoints.length - 1)];\n const position2d = convert3dTo2dPoint(\n pathPoint[0], pathPoint[1], pathPoint[2] ?? 0, ctx.width, ctx.height,\n );\n\n const keyframe: IRKeyframe<IRVec3> = {\n frame: timing.frame,\n value: position2d,\n };\n\n if (i > startIndex && timing.inTangent != null) {\n keyframe.inTangent = timing.inTangent;\n }\n if (i < timingKeyframes.length - 1 && timing.outTangent != null) {\n keyframe.outTangent = timing.outTangent;\n }\n\n const keyframeIndex = keyframes.length;\n const pendingSpatialInTangent = pendingSpatialIn.get(keyframeIndex);\n\n if (pendingSpatialInTangent != null) {\n keyframe.spatialIn = pendingSpatialInTangent;\n }\n\n if (controlPointsRaw != null && i < timingKeyframes.length - 1) {\n const segmentIndex = i;\n const firstControlPointIndex = segmentIndex * 2;\n const secondControlPointIndex = segmentIndex * 2 + 1;\n\n if (firstControlPointIndex < controlPointsRaw.length && secondControlPointIndex < controlPointsRaw.length) {\n const firstControlPoint = controlPointsRaw[firstControlPointIndex];\n const secondControlPoint = controlPointsRaw[secondControlPointIndex];\n const startPathPoint = pathPoints[i];\n const endPathPoint = pathPoints[Math.min(i + 1, pathPoints.length - 1)];\n const startPathPoint2d = convert3dTo2dPoint(\n startPathPoint[0], startPathPoint[1], startPathPoint[2] ?? 0, ctx.width, ctx.height,\n );\n const endPathPoint2d = convert3dTo2dPoint(\n endPathPoint[0], endPathPoint[1], endPathPoint[2] ?? 0, ctx.width, ctx.height,\n );\n const firstControlPoint2d = convert3dTo2dPoint(\n firstControlPoint[0], firstControlPoint[1], firstControlPoint[2] ?? 0, ctx.width, ctx.height,\n );\n const secondControlPoint2d = convert3dTo2dPoint(\n secondControlPoint[0], secondControlPoint[1], secondControlPoint[2] ?? 0, ctx.width, ctx.height,\n );\n\n keyframe.spatialOut = [\n firstControlPoint2d[0] - startPathPoint2d[0], firstControlPoint2d[1] - startPathPoint2d[1],\n ];\n\n pendingSpatialIn.set(keyframeIndex + 1, [\n secondControlPoint2d[0] - endPathPoint2d[0], secondControlPoint2d[1] - endPathPoint2d[1],\n ]);\n }\n }\n\n keyframes.push(keyframe);\n }\n\n if (keyframes.length < 2) {\n return undefined;\n }\n\n return { keyframed: true, keyframes };\n}\n\nfunction isPrependedPositionBridge (\n timingKeyframes: PositionTimingKeyframe[],\n pathPoints: [number, number, number][],\n controlPoints: [number, number, number][] | undefined,\n startFrame: number,\n): boolean {\n if (timingKeyframes.length <= 2 || pathPoints.length <= 2) {\n return false;\n }\n\n const firstTiming = timingKeyframes[0];\n const secondTiming = timingKeyframes[1];\n const firstPathPoint = pathPoints[0];\n const secondPathPoint = pathPoints[1];\n\n if (\n firstTiming == null || secondTiming == null\n || firstPathPoint == null || secondPathPoint == null\n || Math.abs(firstTiming.frame - startFrame) >= POSITION_EPSILON\n || !pointNearlyEquals(firstPathPoint, secondPathPoint)\n ) {\n return false;\n }\n\n const bridgeDuration = secondTiming.frame - firstTiming.frame;\n const isZeroDurationNoOp = Math.abs(bridgeDuration) < POSITION_EPSILON;\n const isDelayedHoldBridge = bridgeDuration > POSITION_EPSILON\n && bezierHandleNearlyEquals(firstTiming.outTangent, 0, 0)\n && bezierHandleNearlyEquals(secondTiming.inTangent, 1, 1);\n\n if (!isZeroDurationNoOp && !isDelayedHoldBridge) {\n return false;\n }\n\n if (controlPoints == null) {\n return true;\n }\n\n return pointNearlyEquals(controlPoints[0], firstPathPoint)\n && pointNearlyEquals(controlPoints[1], secondPathPoint);\n}\n\nfunction bezierHandleNearlyEquals (\n handle: IRBezierHandle | undefined,\n x: number,\n y: number,\n): boolean {\n return handle != null\n && Math.abs(handle.x - x) < POSITION_EPSILON\n && Math.abs(handle.y - y) < POSITION_EPSILON;\n}\n\nfunction pointNearlyEquals (\n left: [number, number, number] | undefined,\n right: [number, number, number] | undefined,\n): boolean {\n return left != null && right != null\n && Math.abs(left[0] - right[0]) < POSITION_EPSILON\n && Math.abs(left[1] - right[1]) < POSITION_EPSILON\n && Math.abs((left[2] ?? 0) - (right[2] ?? 0)) < POSITION_EPSILON;\n}\n\nfunction parseRotationAnimation (\n rotationOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRRotationChannels | undefined {\n const separateAxes = rotationOverLifetime['separateAxes'] === true;\n const xData = rotationOverLifetime['x'] as unknown[] | undefined;\n const yData = rotationOverLifetime['y'] as unknown[] | undefined;\n const zData = rotationOverLifetime['z'] as unknown[] | undefined;\n const x = separateAxes ? parseScalarChannel(xData, startFrame, endFrame) : undefined;\n const y = separateAxes ? parseScalarChannel(yData, startFrame, endFrame) : undefined;\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (x == null && y == null && z == null) {\n return undefined;\n }\n\n return {\n ...(x != null && { x }),\n ...(y != null && { y }),\n ...(z != null && { z }),\n };\n}\n\nfunction parseScaleAnimation (\n sizeOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<IRVec3> | undefined {\n const xData = sizeOverLifetime['x'] as unknown[] | undefined;\n const yData = sizeOverLifetime['y'] as unknown[] | undefined;\n const zData = sizeOverLifetime['z'] as unknown[] | undefined;\n\n const x = parseScalarChannel(xData, startFrame, endFrame);\n const y = parseScalarChannel(yData, startFrame, endFrame);\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (x == null && y == null && z == null) {\n return undefined;\n }\n\n const axes = [toScaleAxis(x), toScaleAxis(y), toScaleAxis(z)] as const;\n const animatedAxes = axes\n .map(axis => axis.animation)\n .filter((animation): animation is ScalarKeyframedProperty => animation != null);\n\n if (animatedAxes.length === 0) {\n return {\n keyframed: false,\n value: [axes[0].staticValue, axes[1].staticValue, axes[2].staticValue],\n };\n }\n\n if (!animatedAxes.every(animation => scalarAnimationIsContinuous(animation))) {\n return undefined;\n }\n if (!scaleAnimationFramesAreAligned(animatedAxes)) {\n return undefined;\n }\n\n const template = animatedAxes[0];\n const segmentHandles: ScaleSegmentHandles[] = [];\n\n for (let index = 0; index < template.keyframes.length - 1; index++) {\n const handles = resolveScaleSegmentHandles(animatedAxes, index);\n\n if (handles == null) {\n return undefined;\n }\n segmentHandles.push(handles);\n }\n\n const keyframes: IRKeyframe<IRVec3>[] = template.keyframes.map((keyframe, index) => ({\n frame: keyframe.frame,\n value: [readScaleAxisValue(axes[0], index), readScaleAxisValue(axes[1], index), readScaleAxisValue(axes[2], index)],\n ...(segmentHandles[index - 1]?.inTangent != null && { inTangent: segmentHandles[index - 1].inTangent }),\n ...(segmentHandles[index]?.outTangent != null && { outTangent: segmentHandles[index].outTangent }),\n }));\n\n return { keyframed: true, keyframes };\n}\n\ntype ScalarKeyframedProperty = Extract<IRAnimatedProperty<number>, { keyframed: true }>;\n\ninterface ScaleAxis {\n staticValue: number;\n animation?: ScalarKeyframedProperty;\n}\n\ninterface ScaleSegmentHandles {\n outTangent?: IRBezierHandle;\n inTangent?: IRBezierHandle;\n}\n\nfunction toScaleAxis (property: IRAnimatedProperty<number> | undefined): ScaleAxis {\n if (property == null) {\n return { staticValue: 1 };\n }\n if (!property.keyframed) {\n return { staticValue: property.value };\n }\n\n const firstValue = property.keyframes[0]?.value ?? 1;\n const constant = property.keyframes.every(keyframe => (\n scalarValuesEqual(keyframe.value, firstValue)\n && (keyframe.endValue == null || scalarValuesEqual(keyframe.endValue, firstValue))\n ));\n\n return constant\n ? { staticValue: firstValue }\n : { staticValue: firstValue, animation: property };\n}\n\nfunction scalarAnimationIsContinuous (animation: ScalarKeyframedProperty): boolean {\n return animation.keyframes.slice(0, -1).every((keyframe, index) => {\n const next = animation.keyframes[index + 1];\n const endValue = keyframe.hold === true\n ? keyframe.value\n : keyframe.endValue ?? next.value;\n\n return scalarValuesEqual(endValue, next.value);\n });\n}\n\nfunction scaleAnimationFramesAreAligned (animations: ScalarKeyframedProperty[]): boolean {\n const template = animations[0];\n\n return animations.every(animation => (\n animation.keyframes.length === template.keyframes.length\n && animation.keyframes.every((keyframe, index) => (\n Math.abs(keyframe.frame - template.keyframes[index].frame) < 1e-6\n ))\n ));\n}\n\nfunction resolveScaleSegmentHandles (\n animations: ScalarKeyframedProperty[],\n index: number,\n): ScaleSegmentHandles | undefined {\n let selected: ScaleSegmentHandles | undefined;\n\n for (const animation of animations) {\n const keyframe = animation.keyframes[index];\n const next = animation.keyframes[index + 1];\n const endValue = keyframe.endValue ?? next.value;\n\n if (scalarValuesEqual(keyframe.value, endValue)) {\n continue;\n }\n\n const candidate: ScaleSegmentHandles = {\n ...(keyframe.outTangent != null && { outTangent: keyframe.outTangent }),\n ...(next.inTangent != null && { inTangent: next.inTangent }),\n };\n\n if (selected != null && !scaleSegmentHandlesEqual(selected, candidate)) {\n return undefined;\n }\n selected = candidate;\n }\n\n if (selected != null) {\n return selected;\n }\n\n const keyframe = animations[0].keyframes[index];\n const next = animations[0].keyframes[index + 1];\n\n return {\n ...(keyframe.outTangent != null && { outTangent: keyframe.outTangent }),\n ...(next.inTangent != null && { inTangent: next.inTangent }),\n };\n}\n\nfunction scaleSegmentHandlesEqual (left: ScaleSegmentHandles, right: ScaleSegmentHandles): boolean {\n return bezierHandlesEqual(left.outTangent, right.outTangent)\n && bezierHandlesEqual(left.inTangent, right.inTangent);\n}\n\nfunction bezierHandlesEqual (left: IRBezierHandle | undefined, right: IRBezierHandle | undefined): boolean {\n if (left == null || right == null) {\n return left === right;\n }\n\n return Math.abs(left.x - right.x) < 1e-6 && Math.abs(left.y - right.y) < 1e-6;\n}\n\nfunction readScaleAxisValue (axis: ScaleAxis, index: number): number {\n return axis.animation?.keyframes[index]?.value ?? axis.staticValue;\n}\n\nfunction scalarValuesEqual (left: number, right: number): boolean {\n return Math.abs(left - right) < 1e-6;\n}\n\nfunction parseScalarChannel (\n data: unknown[] | undefined,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n if (data == null || !Array.isArray(data) || data.length < 2) {\n return undefined;\n }\n\n const valueType = data[0] as ValueType;\n\n if (valueType === ValueType.CONSTANT) {\n const value = data[1];\n\n return typeof value === 'number' && Number.isFinite(value)\n ? { keyframed: false, value }\n : undefined;\n }\n\n if (valueType === ValueType.BEZIER_CURVE) {\n const curves = data[1];\n\n if (!Array.isArray(curves)) {\n return undefined;\n }\n\n const keyframes = parseBezierKeyframes(curves, startFrame, endFrame);\n\n if (keyframes.length >= 2) {\n return { keyframed: true, keyframes };\n }\n }\n\n return undefined;\n}\n","import type {\n IRAssetReference, IRBlendMode, IRColor, IRCustomShapePath, IRShapeData,\n IRShapePaintData, IRShapeStyleData, IRTextData,\n} from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport {\n DataType, type DataPath, FillType, LineCap as EffectsLineCap, LineJoin as EffectsLineJoin,\n ShapePrimitiveType, TextAlignment,\n} from '@galacean/effects-specification';\nimport { resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { mapBlendModeToIR } from '../mapping';\nimport type { GESceneContext } from '../types';\n\ninterface ParsedComponentData {\n type: 'image' | 'solid' | 'text' | 'shape';\n asset?: IRAssetReference;\n solidColor?: IRColor;\n text?: IRTextData;\n shapes?: IRShapeData[];\n blendMode?: IRBlendMode;\n anchorScale?: [number, number];\n /** Source GE component ID used to remap cross-component references. */\n GEComponentId?: string;\n /** Raw component mask preserved for source and target reconstruction. */\n rawMask?: Record<string, unknown>;\n}\n\nexport function parseComponent (\n item: Record<string, unknown>,\n ctx: GESceneContext,\n): ParsedComponentData | undefined {\n const componentRefs = item['components'] as DataPath[] | undefined;\n\n if (componentRefs == null || componentRefs.length === 0) {\n return undefined;\n }\n\n for (const componentReference of componentRefs) {\n const componentId = resolveDataPathId(componentReference);\n\n if (componentId == null) {\n continue;\n }\n\n const component = ctx.componentById.get(componentId);\n\n if (component == null) {\n continue;\n }\n\n const dataType = component['dataType'] as DataType;\n let result: ParsedComponentData | undefined;\n\n if (dataType === DataType.SpriteComponent) {\n result = parseSpriteComponent(component, ctx);\n } else if (dataType === DataType.TextComponent) {\n result = parseTextComponent(component);\n } else if (dataType === DataType.ShapeComponent) {\n result = parseShapeComponent(component, ctx);\n }\n\n if (result == null) {\n continue;\n }\n\n result.GEComponentId = component['id'] as string;\n\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask != null) {\n result.rawMask = mask;\n }\n\n return result;\n }\n\n return undefined;\n}\n\nfunction parseSpriteComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ParsedComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n const options = component['options'] as Record<string, unknown> | undefined;\n\n let asset: IRAssetReference | undefined;\n let solidColor: IRColor | undefined;\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n const textureReference = renderer['texture'] as { id: string } | undefined;\n\n if (textureReference != null) {\n const texture = resolveDataPath(ctx.textureById, textureReference);\n\n if (texture != null) {\n const sourceReference = texture['source'] as { id: string } | undefined;\n const image = sourceReference != null ? resolveDataPath(ctx.imageById, sourceReference) : undefined;\n\n if (image != null) {\n asset = { url: image['url'] as string };\n }\n }\n }\n\n blendMode = mapBlendModeToIR(renderer['blending'] as number | undefined);\n\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n if (options != null) {\n const startColor = options['startColor'] as number[] | undefined;\n\n if (startColor != null && startColor.length >= 4) {\n const isWhite = Math.abs(startColor[0] - 1) < 1e-4\n && Math.abs(startColor[1] - 1) < 1e-4\n && Math.abs(startColor[2] - 1) < 1e-4\n && Math.abs(startColor[3] - 1) < 1e-4;\n\n if (!isWhite) {\n solidColor = [startColor[0], startColor[1], startColor[2], startColor[3]];\n }\n }\n }\n\n const type = asset != null ? 'image' as const : 'solid' as const;\n\n return { type, asset, solidColor, blendMode, anchorScale };\n}\n\nfunction parseTextComponent (component: Record<string, unknown>): ParsedComponentData {\n const options = component['options'] as Record<string, unknown> | undefined;\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n\n if (options == null) {\n return { type: 'text' };\n }\n\n const textColor = options['textColor'] as number[] | undefined;\n const color: IRColor = textColor != null && textColor.length >= 4\n ? [textColor[0], textColor[1], textColor[2], textColor[3]]\n : [0, 0, 0, 1];\n\n const textAlignCode = options['textAlign'] as number | undefined;\n const textAlign = textAlignCode === TextAlignment.middle\n ? 'center'\n : textAlignCode === TextAlignment.right ? 'right' : 'left';\n\n const text: IRTextData = {\n content: (options['text'] as string) ?? '',\n fontSize: (options['fontSize'] as number) ?? 12,\n color,\n fontFamily: (options['fontFamily'] as string) ?? 'sans-serif',\n fontWeight: (options['fontWeight'] as IRTextData['fontWeight']) ?? 'normal',\n textAlign,\n fontStyle: (options['fontStyle'] as 'normal' | 'italic' | 'oblique') ?? 'normal',\n letterSpacing: (options['letterSpace'] as number) ?? 0,\n lineHeight: options['lineHeight'] as number | undefined,\n autoWidth: (options['autoWidth'] as boolean) ?? true,\n width: options['textWidth'] as number | undefined,\n height: options['textHeight'] as number | undefined,\n };\n\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n blendMode = mapBlendModeToIR(renderer['blending'] as number | undefined);\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n return { type: 'text', text, blendMode, anchorScale };\n}\n\nfunction parseShapeComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ParsedComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n let blendMode: IRBlendMode | undefined;\n\n if (renderer != null) {\n blendMode = mapBlendModeToIR(renderer['blending'] as number | undefined);\n }\n\n const shapeData = parseShapeOptions(component, ctx);\n\n return {\n type: 'shape',\n shapes: shapeData != null ? [shapeData] : undefined,\n blendMode,\n };\n}\n\nfunction parseShapeOptions (component: Record<string, unknown>, ctx: GESceneContext): IRShapeData | undefined {\n const GEType = component['type'] as ShapePrimitiveType | undefined;\n const primitiveType = mapShapePrimitiveTypeToIR(GEType ?? ShapePrimitiveType.Custom);\n const style: IRShapeStyleData = {\n position: [0, 0],\n fills: [],\n strokes: [],\n };\n\n const GEFills = component['fills'] as Record<string, unknown>[] | undefined;\n\n if (GEFills != null) {\n style.fills = GEFills\n .map(fill => parseShapePaint(fill, ctx))\n .filter((fill): fill is IRShapePaintData => fill != null);\n }\n\n const GEStrokes = component['strokes'] as Record<string, unknown>[] | undefined;\n\n if (GEStrokes != null) {\n style.strokes = GEStrokes\n .map(stroke => parseShapePaint(stroke, ctx))\n .filter((stroke): stroke is IRShapePaintData => stroke != null);\n }\n\n const GEStrokeWidth = component['strokeWidth'] as number | undefined;\n\n if (typeof GEStrokeWidth === 'number' && Number.isFinite(GEStrokeWidth) && GEStrokeWidth >= 0) {\n style.strokeWidth = GEStrokeWidth / ctx.ratio;\n }\n\n const GEStrokeCap = component['strokeCap'] as number | undefined;\n\n if (GEStrokeCap != null) {\n style.strokeCap = mapLineCapToIR(GEStrokeCap) as IRShapeStyleData['strokeCap'];\n }\n\n const GEStrokeJoin = component['strokeJoin'] as number | undefined;\n\n if (GEStrokeJoin != null) {\n style.strokeJoin = mapLineJoinToIR(GEStrokeJoin) as IRShapeStyleData['strokeJoin'];\n }\n\n switch (primitiveType) {\n case IRShapePrimitiveType.Custom: {\n const customPaths = parseCustomPaths(component, ctx.ratio);\n const firstPath = customPaths[0];\n\n return firstPath != null\n ? { ...style, primitiveType, customPaths: [firstPath, ...customPaths.slice(1)] }\n : undefined;\n }\n case IRShapePrimitiveType.Rectangle: {\n const width = readScaledNumber(component, 'width', ctx.ratio);\n const height = readScaledNumber(component, 'height', ctx.ratio);\n\n return width != null && height != null\n ? { ...style, primitiveType, width, height, ...readOptionalNumberField(component, 'roundness') }\n : undefined;\n }\n case IRShapePrimitiveType.Ellipse: {\n const xRadius = readScaledNumber(component, 'xRadius', ctx.ratio);\n const yRadius = readScaledNumber(component, 'yRadius', ctx.ratio);\n\n return xRadius != null && yRadius != null ? { ...style, primitiveType, xRadius, yRadius } : undefined;\n }\n case IRShapePrimitiveType.Polygon: {\n const pointCount = readPointCount(component);\n const radius = readScaledNumber(component, 'radius', ctx.ratio);\n\n return pointCount != null && radius != null\n ? { ...style, primitiveType, pointCount, radius, ...readOptionalNumberField(component, 'roundness') }\n : undefined;\n }\n case IRShapePrimitiveType.Star: {\n const pointCount = readPointCount(component);\n const innerRadius = readScaledNumber(component, 'innerRadius', ctx.ratio);\n const outerRadius = readScaledNumber(component, 'outerRadius', ctx.ratio);\n\n return pointCount != null && innerRadius != null && outerRadius != null\n ? {\n ...style, primitiveType, pointCount, innerRadius, outerRadius,\n ...readOptionalNumberField(component, 'innerRoundness'),\n ...readOptionalNumberField(component, 'outerRoundness'),\n }\n : undefined;\n }\n }\n}\n\nconst GE_TO_SHAPE_PRIMITIVE_TYPE: Record<ShapePrimitiveType, IRShapeData['primitiveType']> = {\n [ShapePrimitiveType.Custom]: IRShapePrimitiveType.Custom,\n [ShapePrimitiveType.Rectangle]: IRShapePrimitiveType.Rectangle,\n [ShapePrimitiveType.Ellipse]: IRShapePrimitiveType.Ellipse,\n [ShapePrimitiveType.Polygon]: IRShapePrimitiveType.Polygon,\n [ShapePrimitiveType.Star]: IRShapePrimitiveType.Star,\n};\n\nfunction mapShapePrimitiveTypeToIR (GEType: ShapePrimitiveType): IRShapeData['primitiveType'] {\n return GE_TO_SHAPE_PRIMITIVE_TYPE[GEType] ?? IRShapePrimitiveType.Custom;\n}\n\nfunction parseShapePaint (paint: Record<string, unknown>, ctx: GESceneContext): IRShapePaintData | undefined {\n const GEType = paint['type'] as FillType | undefined;\n\n if (GEType === FillType.Solid) {\n const color = paint['color'] as { r: number; g: number; b: number; a: number } | undefined;\n\n if (color == null) {\n return undefined;\n }\n\n return { type: IRFillType.Solid, color: [color.r, color.g, color.b, color.a] };\n }\n\n if (GEType === FillType.GradientLinear || GEType === FillType.GradientRadial || GEType === FillType.GradientAngular) {\n const typeMap: Record<number, IRShapePaintData['type']> = {\n [FillType.GradientLinear]: IRFillType.LinearGradient,\n [FillType.GradientRadial]: IRFillType.RadialGradient,\n [FillType.GradientAngular]: IRFillType.AngularGradient,\n };\n\n const gradientStopsRaw = paint['gradientStops'] as [number, unknown] | undefined;\n const stops = Array.isArray(gradientStopsRaw) && gradientStopsRaw.length >= 2\n ? gradientStopsRaw[1] as [number, number, number, number, number][]\n : [];\n\n const startPoint = paint['startPoint'] as { x: number; y: number } | undefined;\n const endPoint = paint['endPoint'] as { x: number; y: number } | undefined;\n\n return {\n type: typeMap[GEType] as 'linear-gradient' | 'radial-gradient' | 'angular-gradient',\n gradientStops: stops,\n gradientStart: startPoint != null ? [startPoint.x / ctx.ratio, -startPoint.y / ctx.ratio] : undefined,\n gradientEnd: endPoint != null ? [endPoint.x / ctx.ratio, -endPoint.y / ctx.ratio] : undefined,\n };\n }\n\n if (GEType === FillType.Texture) {\n const texture = resolveTextureAsset(paint['texture'], ctx);\n\n if (texture == null) {\n return undefined;\n }\n\n const scaleMode = paint['scaleMode'];\n\n return {\n type: IRFillType.Texture,\n texture,\n ...(isTextureScaleMode(scaleMode) && { scaleMode }),\n };\n }\n\n return undefined;\n}\n\nfunction mapLineCapToIR (GECode: number): string {\n const lineCapByCode: Record<number, string> = {\n [EffectsLineCap.Butt]: IRLineCap.Butt,\n [EffectsLineCap.Round]: IRLineCap.Round,\n [EffectsLineCap.Square]: IRLineCap.Square,\n };\n\n return lineCapByCode[GECode] ?? IRLineCap.Butt;\n}\n\nfunction mapLineJoinToIR (GECode: number): string {\n const lineJoinByCode: Record<number, string> = {\n [EffectsLineJoin.Round]: IRLineJoin.Round,\n [EffectsLineJoin.Bevel]: IRLineJoin.Bevel,\n [EffectsLineJoin.Miter]: IRLineJoin.Miter,\n };\n\n return lineJoinByCode[GECode] ?? IRLineJoin.Miter;\n}\n\nfunction parseCustomPaths (component: Record<string, unknown>, ratio: number): IRCustomShapePath[] {\n const points = component['points'] as Array<{ x: number; y: number }> | undefined;\n const easingIns = component['easingIns'] as Array<{ x: number; y: number }> | undefined;\n const easingOuts = component['easingOuts'] as Array<{ x: number; y: number }> | undefined;\n const shapes = component['shapes'] as Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }> | undefined;\n\n if (points == null || shapes == null) {\n return [];\n }\n\n return shapes.map(shape => {\n const pathPoints: Array<{ x: number; y: number }> = [];\n const pathInTangents: Array<{ x: number; y: number }> = [];\n const pathOutTangents: Array<{ x: number; y: number }> = [];\n\n for (const pathIndex of shape.indexes) {\n const point = points[pathIndex.point];\n const easingIn = easingIns?.[pathIndex.easingIn];\n const easingOut = easingOuts?.[pathIndex.easingOut];\n\n pathPoints.push({ x: point.x / ratio, y: -point.y / ratio });\n pathInTangents.push({ x: (easingIn?.x ?? 0) / ratio, y: -(easingIn?.y ?? 0) / ratio });\n pathOutTangents.push({ x: (easingOut?.x ?? 0) / ratio, y: -(easingOut?.y ?? 0) / ratio });\n }\n\n return {\n points: pathPoints,\n inTangents: pathInTangents,\n outTangents: pathOutTangents,\n closed: shape.close,\n };\n });\n}\n\nfunction readScaledNumber (\n component: Record<string, unknown>,\n key: string,\n ratio: number,\n): number | undefined {\n const value = component[key];\n\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n return undefined;\n }\n\n return value / ratio;\n}\n\nfunction readOptionalNumberField<K extends string> (\n component: Record<string, unknown>,\n key: K,\n): Partial<Record<K, number>> {\n const value = component[key];\n\n return typeof value === 'number' && Number.isFinite(value) ? { [key]: value } as Record<K, number> : {};\n}\n\nfunction readPointCount (component: Record<string, unknown>): number | undefined {\n const value = component['pointCount'];\n\n return typeof value === 'number' && Number.isInteger(value) && value >= 2 ? value : undefined;\n}\n\nfunction resolveTextureAsset (textureReference: unknown, ctx: GESceneContext): IRAssetReference | undefined {\n const texture = resolveDataPath(ctx.textureById, textureReference);\n const sourceReference = texture?.['source'];\n const image = sourceReference != null ? resolveDataPath(ctx.imageById, sourceReference) : undefined;\n const url = image?.['url'];\n\n return typeof url === 'string' && url.trim() !== '' ? { url } : undefined;\n}\n\nfunction isTextureScaleMode (value: unknown): value is 0 | 1 | 2 | 3 {\n return typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 3;\n}\n","import {\n DataType, type DataPath, EndBehavior, type TimelineClipData,\n} from '@galacean/effects-specification';\nimport { resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport type { GESceneContext } from '../types';\n\ninterface ParsedTimelineData {\n delay: number;\n duration: number;\n endBehavior: EndBehavior;\n transformAsset?: Record<string, unknown>;\n spriteColorAsset?: Record<string, unknown>;\n}\n\nexport function parseTimeline (\n itemId: string,\n ctx: GESceneContext,\n): ParsedTimelineData | undefined {\n const trackId = ctx.itemIdToTrackId.get(itemId);\n\n if (trackId == null) {\n return undefined;\n }\n\n const objectBindingTrack = ctx.miscById.get(trackId);\n\n if (objectBindingTrack == null) {\n return undefined;\n }\n\n const childReferences = objectBindingTrack['children'] as DataPath[] | undefined;\n\n if (childReferences == null) {\n return undefined;\n }\n\n let delay = 0;\n let duration = 0;\n let endBehavior = EndBehavior.destroy;\n let transformAsset: Record<string, unknown> | undefined;\n let spriteColorAsset: Record<string, unknown> | undefined;\n\n for (const childReference of childReferences) {\n const childTrackId = resolveDataPathId(childReference);\n\n if (childTrackId == null) {\n continue;\n }\n\n const childTrack = ctx.miscById.get(childTrackId);\n\n if (childTrack == null) {\n continue;\n }\n\n const dataType = childTrack['dataType'];\n const clips = childTrack['clips'] as TimelineClipData[] | undefined;\n\n if (clips == null || clips.length === 0) {\n continue;\n }\n\n const clip = clips[0];\n\n if (dataType === DataType.ActivationTrack) {\n delay = clip.start ?? 0;\n duration = clip.duration ?? 0;\n endBehavior = clip.endBehavior ?? EndBehavior.destroy;\n } else if (dataType === DataType.TransformTrack) {\n const assetReference = clip.asset;\n\n if (assetReference != null) {\n transformAsset = resolveDataPath(ctx.miscById, assetReference);\n }\n } else if (dataType === DataType.SpriteColorTrack) {\n const assetReference = clip.asset;\n\n if (assetReference != null) {\n spriteColorAsset = resolveDataPath(ctx.miscById, assetReference);\n }\n }\n }\n\n return { delay, duration, endBehavior, transformAsset, spriteColorAsset };\n}\n","import type { IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport { convert3dTo2dPoint } from '../mapping';\nimport type { GESceneContext } from '../types';\n\nexport function parseStaticTransform (\n itemTransform: Record<string, unknown>,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const position = itemTransform['position'] as { x: number; y: number; z: number } | undefined;\n\n if (position != null) {\n const position2d = convert3dTo2dPoint(position.x, position.y, position.z ?? 0, ctx.width, ctx.height);\n\n channels.position = { keyframed: false, value: position2d };\n }\n\n const scale = itemTransform['scale'] as { x: number; y: number; z: number } | undefined;\n\n if (scale != null) {\n const scaleValue: IRVec3 = [scale.x ?? 1, scale.y ?? 1, scale.z ?? 1];\n const isDefault = scaleValue.every(value => Math.abs(value - 1) < 1e-6);\n\n if (!isDefault) {\n channels.scale = { keyframed: false, value: scaleValue };\n }\n }\n\n const eulerHint = itemTransform['eulerHint'] as { x: number; y: number; z: number } | undefined;\n\n if (eulerHint != null) {\n const x = Math.abs(eulerHint.x) > 1e-6 ? { keyframed: false as const, value: eulerHint.x } : undefined;\n const y = Math.abs(eulerHint.y) > 1e-6 ? { keyframed: false as const, value: eulerHint.y } : undefined;\n const z = Math.abs(eulerHint.z) > 1e-6 ? { keyframed: false as const, value: eulerHint.z } : undefined;\n\n if (x != null || y != null || z != null) {\n channels.rotation = {\n ...(x != null && { x }),\n ...(y != null && { y }),\n ...(z != null && { z }),\n };\n }\n }\n\n return channels;\n}\n","import type {\n EffectsLayerSpecific, IRColor, IRLayerNode, IRLayerType, IRTextData,\n IRTransformChannels,\n} from '@vvfx/animation-ir';\nimport { ItemType } from '@galacean/effects-specification';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { mapLayerTimingToIR } from '../mapping';\nimport type { GESceneContext } from '../types';\nimport { parseOpacityAnimation, parseTransformAnimation } from './animation';\nimport { parseComponent } from './component';\nimport { parseTimeline } from './timeline';\nimport { parseStaticTransform } from './transform';\n\n/** Parse one GE item and its referenced component data into an IR layer. */\nexport function parseItemToLayer (\n item: Record<string, unknown>,\n itemId: string,\n index: number,\n ctx: GESceneContext,\n): IRLayerNode {\n const name = (item['name'] as string) ?? `layer_${index}`;\n const GEType = item['type'] as ItemType;\n const visible = item['visible'] as boolean ?? true;\n let rawTransformPassthrough: EffectsLayerSpecific | undefined;\n\n const timeline = parseTimeline(itemId, ctx);\n const delay = timeline?.delay ?? (item['delay'] as number ?? 0);\n const duration = timeline?.duration ?? (item['duration'] as number ?? 0);\n\n const time = mapLayerTimingToIR(delay, duration, ctx.frameRate);\n\n const componentData = parseComponent(item, ctx);\n let type: IRLayerType;\n\n if (GEType === ItemType.null) {\n type = 'null';\n } else if (componentData?.type === 'text' || GEType === ItemType.text) {\n type = 'text';\n } else if (componentData?.type === 'shape' || GEType === ItemType.shape) {\n type = 'shape';\n } else if (componentData?.type === 'image') {\n type = 'image';\n } else if (GEType === ItemType.composition) {\n type = 'precomp';\n } else if (componentData?.solidColor != null) {\n type = 'solid';\n } else if (GEType === ItemType.sprite) {\n type = 'solid';\n } else {\n type = 'null';\n }\n\n const itemTransform = item['transform'] as Record<string, unknown> | undefined;\n const itemSize = readItemSize(itemTransform);\n const textBounds = type === 'text' && itemSize == null\n ? readTextBounds(componentData?.text)\n : undefined;\n const localBounds: IRLayerNode['localBounds'] = itemSize != null\n ? {\n x: 0,\n y: 0,\n width: itemSize.x / ctx.ratio,\n height: itemSize.y / ctx.ratio,\n }\n : textBounds;\n let transform: IRTransformChannels | undefined;\n\n if (itemTransform != null) {\n const staticChannels = parseStaticTransform(itemTransform, ctx);\n\n transform = { ...staticChannels };\n\n // GE text scale encodes glyph dimensions and is regenerated from local bounds.\n if (type === 'text') {\n delete transform.scale;\n }\n }\n\n // Normalize supported channels and preserve raw GE payloads for unsupported encodings.\n if (timeline?.transformAsset != null) {\n const transformAsset = timeline.transformAsset;\n const animationChannels = parseTransformAnimation(transformAsset, time.startFrame, time.endFrame, ctx);\n\n if (transform == null) {\n transform = {};\n }\n\n if (animationChannels.rotation != null) {\n transform.rotation = animationChannels.rotation;\n }\n if (animationChannels.scale != null) {\n transform.scale = animationChannels.scale;\n }\n\n const rawPassthrough: EffectsLayerSpecific = {};\n const rawPositionOverLifetime = transformAsset['positionOverLifetime'] as Record<string, unknown> | undefined;\n const rawRotationOverLifetime = transformAsset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n const rawSizeOverLifetime = transformAsset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (rawPositionOverLifetime != null && rawPositionOverLifetime['path'] != null) {\n rawPassthrough.positionOverLifetime = rawPositionOverLifetime;\n }\n if (rawRotationOverLifetime != null && Object.keys(rawRotationOverLifetime).length > 0) {\n rawPassthrough.rotationOverLifetime = rawRotationOverLifetime;\n }\n if (rawSizeOverLifetime != null && Object.keys(rawSizeOverLifetime).length > 0) {\n rawPassthrough.sizeOverLifetime = rawSizeOverLifetime;\n }\n\n if (Object.keys(rawPassthrough).length > 0) {\n rawTransformPassthrough = rawPassthrough;\n }\n }\n\n let rawColorOverLifetime: Record<string, unknown> | undefined;\n\n if (timeline?.spriteColorAsset != null) {\n const opacity = parseOpacityAnimation(timeline.spriteColorAsset, time.startFrame, time.endFrame);\n\n if (opacity != null) {\n if (transform == null) {\n transform = {};\n }\n transform.opacity = opacity;\n }\n\n const rawColor = timeline.spriteColorAsset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (rawColor != null && Object.keys(rawColor).length > 0) {\n rawColorOverLifetime = rawColor;\n }\n }\n\n // Renderer anchors default to the center. Text without transform.size derives its\n // bounds from component options; alignment and baseline do not change anchor coordinates.\n if (type !== 'null' && localBounds != null) {\n const layerWidth = localBounds.width;\n const layerHeight = localBounds.height;\n const anchorScale = componentData?.anchorScale ?? [0.5, 0.5];\n const anchorInfo = deriveAnchorFromScale(anchorScale, layerWidth, layerHeight);\n const { anchorX, anchorY, anchorOffsetX, anchorOffsetY } = anchorInfo;\n\n if (transform == null) {\n transform = {};\n }\n\n transform.anchor = {\n keyframed: false,\n value: [anchorX, anchorY, 0],\n };\n\n // Undo the anchor and static-scale position compensation applied during GE generation.\n const position = transform.position;\n\n if (position != null && !position.keyframed && position.value != null) {\n const scale = transform.scale?.keyframed === false && Array.isArray(transform.scale.value)\n ? transform.scale.value\n : [1, 1, 1];\n const scaleX = scale[0] ?? 1;\n const scaleY = scale[1] ?? 1;\n const anchorDiffX = anchorX - layerWidth / 2;\n const anchorDiffY = anchorY - layerHeight / 2;\n const anchorOffCenter = Math.abs(anchorDiffX) > 0.5 || Math.abs(anchorDiffY) > 0.5;\n const hasStaticScale = !(scaleX === 1 && scaleY === 1);\n\n let scaleAdjustX = 0;\n let scaleAdjustY = 0;\n\n if (hasStaticScale && anchorOffCenter && layerWidth > 0 && layerHeight > 0) {\n scaleAdjustX = anchorDiffX * (1 - scaleX);\n scaleAdjustY = anchorDiffY * (1 - scaleY);\n }\n\n const totalX = anchorOffsetX + scaleAdjustX;\n const totalY = anchorOffsetY + scaleAdjustY;\n\n if (Math.abs(totalX) > 1e-6 || Math.abs(totalY) > 1e-6) {\n transform.position = {\n keyframed: false,\n value: [\n position.value[0] - totalX,\n position.value[1] - totalY,\n position.value[2] ?? 0,\n ],\n };\n }\n }\n }\n\n const text = componentData?.text == null ? undefined : { ...componentData.text };\n const solidColor: IRColor | undefined = type === 'solid'\n ? componentData?.solidColor ?? [1, 1, 1, 1]\n : componentData?.solidColor;\n\n if (text?.autoWidth === false) {\n text.width ??= localBounds?.width;\n text.height ??= localBounds?.height;\n }\n const layer = {\n index,\n name,\n type,\n time,\n visible,\n transform,\n localBounds,\n } as IRLayerNode;\n\n if (componentData?.asset != null) {\n layer.asset = componentData.asset;\n }\n if (solidColor != null) {\n layer.solidColor = solidColor;\n }\n if (text != null) {\n layer.text = text;\n }\n if (componentData?.shapes != null) {\n layer.shapes = componentData.shapes;\n }\n if (componentData?.blendMode != null) {\n layer.blendMode = componentData.blendMode;\n }\n const GEComponentId = componentData?.GEComponentId;\n const rawMask = componentData?.rawMask;\n const precompContent = GEType === ItemType.composition\n ? item['content'] as Record<string, unknown> | undefined\n : undefined;\n const precompReferenceId = isRecord(precompContent?.['options'])\n ? precompContent['options']['refId']\n : undefined;\n\n const effectsSpecific: EffectsLayerSpecific = {\n sourceHierarchy: 'single-item',\n ...(rawTransformPassthrough ?? {}),\n ...(rawColorOverLifetime != null && { colorOverLifetime: rawColorOverLifetime }),\n ...(GEComponentId != null && { sourceComponentId: GEComponentId }),\n ...(rawMask != null && { mask: rawMask }),\n ...(typeof precompReferenceId === 'string' && { precompRefId: precompReferenceId }),\n ...(precompContent != null && { precompContent: normalizeJsonValue(precompContent) }),\n };\n\n layer.specific = {\n ...layer.specific,\n effects: effectsSpecific,\n };\n\n return layer;\n}\n\ninterface DerivedAnchorInfo {\n anchorX: number;\n anchorY: number;\n anchorOffsetX: number;\n anchorOffsetY: number;\n}\n\nfunction readItemSize (\n itemTransform: Record<string, unknown> | undefined,\n): { x: number; y: number } | undefined {\n const size = itemTransform?.['size'];\n\n if (!isRecord(size)) {\n return undefined;\n }\n\n const x = size['x'];\n const y = size['y'];\n\n return typeof x === 'number' && Number.isFinite(x) && x > 0\n && typeof y === 'number' && Number.isFinite(y) && y > 0\n ? { x, y }\n : undefined;\n}\n\nfunction readTextBounds (text: IRTextData | undefined): IRLayerNode['localBounds'] {\n const width = text?.width;\n const height = text?.height;\n\n return typeof width === 'number' && Number.isFinite(width) && width > 0\n && typeof height === 'number' && Number.isFinite(height) && height > 0\n ? { x: 0, y: 0, width, height }\n : undefined;\n}\n\nfunction deriveAnchorFromScale (\n anchorScale: [number, number],\n width: number,\n height: number,\n): DerivedAnchorInfo {\n const anchorX = anchorScale[0] * width;\n const anchorY = anchorScale[1] * height;\n\n return {\n anchorX,\n anchorY,\n anchorOffsetX: -(anchorX - width / 2),\n anchorOffsetY: -(anchorY - height / 2),\n };\n}\n","// Restore cross-item layer structures after individual GE items are parsed.\nimport type { IRLayerNode } from '@vvfx/animation-ir';\nimport { DataType, EndBehavior, ItemType } from '@galacean/effects-specification';\nimport type { GESceneContext } from './types';\nimport { resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport { parseTimeline } from './parser/timeline';\n\nexport interface RawLayerDescriptor {\n itemId: string;\n item: Record<string, unknown>;\n layer: IRLayerNode;\n}\n\nexport function mergeNullSpritePairs (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): RawLayerDescriptor[] {\n const childByParentId = new Map<string, RawLayerDescriptor[]>();\n\n for (const descriptor of descriptors) {\n const parentId = descriptor.item['parentId'] as string | undefined;\n\n if (parentId != null) {\n if (!childByParentId.has(parentId)) {\n childByParentId.set(parentId, []);\n }\n childByParentId.get(parentId)!.push(descriptor);\n }\n }\n\n const mergedChildIds = new Set<string>();\n const mergedDescriptorByParentId = new Map<string, RawLayerDescriptor>();\n\n for (const descriptor of descriptors) {\n const isNullItem = (descriptor.item['type'] as ItemType) === ItemType.null;\n\n if (!isNullItem) {\n continue;\n }\n\n const children = childByParentId.get(descriptor.itemId);\n\n if (children == null || children.length === 0) {\n continue;\n }\n\n // Merge only the exact null/visual pair used to encode an anchor pivot.\n // A null with multiple children may be an authored parent and must remain intact.\n if (children.length !== 1) {\n continue;\n }\n\n const onlyChild = children[0];\n const childType = onlyChild.item['type'] as ItemType;\n const isVisual = childType === ItemType.sprite || childType === ItemType.text || childType === ItemType.shape;\n const sameName = (onlyChild.item['name'] as string) === (descriptor.item['name'] as string);\n\n if (\n !isVisual\n || !sameName\n || !hasNoComponents(descriptor.item)\n || !hasVisualComponent(onlyChild, ctx)\n || !hasSplitPairTiming(descriptor, onlyChild, ctx)\n || !hasParentTransformSignal(descriptor, ctx)\n || !hasNoIndependentChildTransform(onlyChild, ctx)\n ) {\n continue;\n }\n\n const sameNameChild = onlyChild;\n\n mergedChildIds.add(sameNameChild.itemId);\n mergedDescriptorByParentId.set(\n descriptor.itemId,\n mergeNullAndSprite(descriptor, sameNameChild, ctx),\n );\n }\n\n const result: RawLayerDescriptor[] = [];\n\n for (const descriptor of descriptors) {\n if (mergedChildIds.has(descriptor.itemId)) {\n continue;\n }\n\n const merged = mergedDescriptorByParentId.get(descriptor.itemId);\n\n if (merged != null) {\n result.push(merged);\n } else {\n result.push(descriptor);\n }\n }\n\n return result;\n}\n\nfunction hasNoComponents (item: Record<string, unknown>): boolean {\n const components = item['components'];\n\n return !Array.isArray(components) || components.length === 0;\n}\n\nfunction hasVisualComponent (descriptor: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const components = descriptor.item['components'];\n\n if (!Array.isArray(components) || components.length === 0) {\n return false;\n }\n\n return components.some(componentReference => {\n const componentId = resolveDataPathId(componentReference);\n const component = componentId != null ? ctx.componentById.get(componentId) : undefined;\n const dataType = component?.['dataType'];\n\n return dataType === DataType.SpriteComponent\n || dataType === DataType.TextComponent\n || dataType === DataType.ShapeComponent;\n });\n}\n\nfunction hasSplitPairTiming (\n parent: RawLayerDescriptor,\n child: RawLayerDescriptor,\n ctx: GESceneContext,\n): boolean {\n const parentTimeline = parseTimeline(parent.itemId, ctx);\n const childTimeline = parseTimeline(child.itemId, ctx);\n const parentEndBehavior = parentTimeline?.endBehavior ?? readItemEndBehavior(parent.item);\n const childEndBehavior = childTimeline?.endBehavior ?? readItemEndBehavior(child.item);\n\n if (parentEndBehavior !== EndBehavior.freeze || childEndBehavior !== EndBehavior.destroy) {\n return false;\n }\n\n if (parentTimeline == null || childTimeline == null) {\n return true;\n }\n\n return nearlyEqual(parentTimeline.delay, childTimeline.delay)\n && nearlyEqual(parentTimeline.duration, childTimeline.duration);\n}\n\nfunction hasParentTransformSignal (descriptor: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(descriptor.itemId, ctx);\n\n if (hasTransformPayload(timeline?.transformAsset)) {\n return true;\n }\n\n const transform = descriptor.item['transform'];\n\n return isRecord(transform) && (hasNonDefaultScale(transform) || hasNonDefaultEulerHint(transform));\n}\n\nfunction hasNoIndependentChildTransform (descriptor: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(descriptor.itemId, ctx);\n\n return timeline?.transformAsset != null && !hasTransformPayload(timeline.transformAsset);\n}\n\nfunction hasTransformPayload (asset: Record<string, unknown> | undefined): boolean {\n if (asset == null) {\n return false;\n }\n\n return hasNonEmptyRecord(asset['positionOverLifetime'])\n || hasNonEmptyRecord(asset['rotationOverLifetime'])\n || hasNonEmptyRecord(asset['sizeOverLifetime']);\n}\n\nfunction hasNonDefaultScale (transform: Record<string, unknown>): boolean {\n const scale = transform['scale'];\n\n if (!isRecord(scale)) {\n return false;\n }\n\n const x = typeof scale['x'] === 'number' ? scale['x'] : 1;\n const y = typeof scale['y'] === 'number' ? scale['y'] : 1;\n const z = typeof scale['z'] === 'number' ? scale['z'] : 1;\n\n return Math.abs(x - 1) > 1e-6 || Math.abs(y - 1) > 1e-6 || Math.abs(z - 1) > 1e-6;\n}\n\nfunction hasNonDefaultEulerHint (transform: Record<string, unknown>): boolean {\n const eulerHint = transform['eulerHint'];\n\n if (!isRecord(eulerHint)) {\n return false;\n }\n\n const x = typeof eulerHint['x'] === 'number' ? eulerHint['x'] : 0;\n const y = typeof eulerHint['y'] === 'number' ? eulerHint['y'] : 0;\n const z = typeof eulerHint['z'] === 'number' ? eulerHint['z'] : 0;\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6;\n}\n\nfunction hasNonEmptyRecord (value: unknown): boolean {\n return isRecord(value) && Object.keys(value).length > 0;\n}\n\nfunction readItemEndBehavior (item: Record<string, unknown>): EndBehavior | undefined {\n const endBehavior = item['endBehavior'];\n\n return endBehavior === EndBehavior.destroy\n || endBehavior === EndBehavior.forward\n || endBehavior === EndBehavior.freeze\n || endBehavior === EndBehavior.restart\n ? endBehavior\n : undefined;\n}\n\nfunction nearlyEqual (a: number, b: number): boolean {\n return Math.abs(a - b) < 1e-6;\n}\n\nfunction mergeNullAndSprite (\n nullDescriptor: RawLayerDescriptor,\n childDescriptor: RawLayerDescriptor,\n ctx: GESceneContext,\n): RawLayerDescriptor {\n const merged = { ...nullDescriptor.layer };\n\n merged.type = childDescriptor.layer.type;\n merged.asset = childDescriptor.layer.asset;\n merged.text = childDescriptor.layer.text;\n merged.shapes = childDescriptor.layer.shapes;\n merged.solidColor = childDescriptor.layer.solidColor;\n merged.blendMode = childDescriptor.layer.blendMode;\n\n merged.visible = childDescriptor.layer.visible;\n\n const childTransform = childDescriptor.item['transform'] as Record<string, unknown> | undefined;\n const childPosition = childTransform?.['position'] as { x: number; y: number; z: number } | undefined;\n const childSize = childTransform?.['size'] as { x: number; y: number } | undefined;\n\n if (childPosition != null && childSize != null) {\n const layerWidth = childSize.x / ctx.ratio;\n const layerHeight = childSize.y / ctx.ratio;\n\n const anchorX = -childPosition.x / ctx.ratio + layerWidth / 2;\n const anchorY = childPosition.y / ctx.ratio + layerHeight / 2;\n\n if (merged.transform == null) {\n merged.transform = {};\n }\n\n merged.transform.anchor = { keyframed: false, value: [anchorX, anchorY, 0] };\n merged.localBounds = { x: 0, y: 0, width: layerWidth, height: layerHeight };\n }\n\n if (childDescriptor.layer.transform?.opacity != null) {\n if (merged.transform == null) {\n merged.transform = {};\n }\n merged.transform.opacity = childDescriptor.layer.transform.opacity;\n }\n\n // The parent owns transform passthrough; the child owns visual metadata.\n if (childDescriptor.layer.specific != null) {\n const parentEffects = merged.specific?.effects;\n const childEffects = childDescriptor.layer.specific.effects;\n\n merged.specific = {\n ...merged.specific,\n ...childDescriptor.layer.specific,\n ...((parentEffects != null || childEffects != null) && {\n effects: {\n ...(parentEffects ?? {}),\n ...(childEffects ?? {}),\n },\n }),\n };\n }\n\n merged.specific = {\n ...merged.specific,\n effects: {\n ...merged.specific?.effects,\n sourceHierarchy: 'null-sprite-pair',\n },\n };\n\n return {\n itemId: nullDescriptor.itemId,\n item: nullDescriptor.item,\n layer: merged,\n };\n}\n\nexport function resolveHierarchy (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): void {\n const layerIndexByItemId = new Map<string, number>();\n const descriptorByItemId = new Map<string, RawLayerDescriptor>();\n\n for (const descriptor of descriptors) {\n layerIndexByItemId.set(descriptor.itemId, descriptor.layer.index);\n descriptorByItemId.set(descriptor.itemId, descriptor);\n }\n\n for (const descriptor of descriptors) {\n const parentId = descriptor.item['parentId'] as string | undefined;\n\n if (parentId == null) {\n continue;\n }\n\n const parentIndex = layerIndexByItemId.get(parentId);\n const parentDescriptor = descriptorByItemId.get(parentId);\n\n if (parentIndex == null || parentDescriptor == null) {\n continue;\n }\n\n descriptor.layer.parent = {\n index: parentIndex,\n lifetimeMode: 'clipped',\n };\n\n const parentAnchor = getDescriptorAnchor(parentDescriptor);\n const position = descriptor.layer.transform?.position;\n\n if (position != null && !position.keyframed && position.value != null) {\n const position2d = position.value;\n\n descriptor.layer.transform!.position = {\n keyframed: false,\n value: [\n position2d[0] + (parentAnchor[0] - ctx.width / 2),\n position2d[1] + (parentAnchor[1] - ctx.height / 2),\n position2d[2] ?? 0,\n ],\n };\n }\n }\n}\n\nfunction getDescriptorAnchor (descriptor: RawLayerDescriptor): [number, number] {\n const anchor = descriptor.layer.transform?.anchor;\n\n if (anchor != null && !anchor.keyframed && Array.isArray(anchor.value) && anchor.value.length >= 2) {\n return [anchor.value[0], anchor.value[1]];\n }\n\n return [0, 0];\n}\n","import type { IRComposition } from '@vvfx/animation-ir';\nimport { assembleIRComposition } from './assemble';\nimport { buildSceneContext, getCompositionItemIds } from './parser/scene';\nimport { parseItemToLayer } from './parser/layer';\nimport { mergeNullSpritePairs, resolveHierarchy, type RawLayerDescriptor } from './post-process';\nimport type { GEToIROptions } from './types';\n\n/** Convert a GE scene to normalized IR while retaining fidelity passthrough data. */\nexport function convertGEToIR (scene: Record<string, unknown>, options: GEToIROptions): IRComposition {\n const ctx = buildSceneContext(scene, options);\n const itemIds = getCompositionItemIds(scene);\n\n // GE stores items in display order, while IR uses generation order.\n const reversedItemIds = [...itemIds].reverse();\n const descriptors: RawLayerDescriptor[] = [];\n\n let layerIndex = 0;\n\n for (const itemId of reversedItemIds) {\n const item = ctx.itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n\n const layer = parseItemToLayer(item, itemId, layerIndex, ctx);\n\n descriptors.push({ itemId, item, layer });\n layerIndex++;\n }\n\n const mergedDescriptors = mergeNullSpritePairs(descriptors, ctx);\n\n for (let i = 0; i < mergedDescriptors.length; i++) {\n mergedDescriptors[i].layer.index = i;\n }\n\n resolveHierarchy(mergedDescriptors, ctx);\n\n return assembleIRComposition(\n scene,\n itemIds,\n mergedDescriptors.map(descriptor => descriptor.layer),\n ctx,\n );\n}\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","o","minLen","n","toString","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","done","value","TypeError","JSONSceneVersion","RenderLevel","BlendingMode","SideMode","ObscuredMode","ParticleEmitterShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","RenderType","RenderFace","CameraClipMode","ValueType","BezierKeyframeType","EndBehavior","ParticleInteractionBehavior","ShapeArcMode","LightType","ModelBoundingType","CameraType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextSizeMode","TextBaseline","TextAlignment","TextVerticalAlign","TextWeight","FontStyle","FillType","TexturePaintScaleMode","ShapePrimitiveType","LineCap","LineJoin","NodeDataType","BackgroundType","MultimediaType","HevcVideoCodec","DataType","GeometryType","VertexFormatType","IndexFormatType","VertexBufferSemantic","LATEST","DEFAULT_CAMERA_Z","DEFAULT_CAMERA_FOV","DEFAULT_CLIP_MODE","portrait","get2dTo3dRatio","width","height","ratio","Math","tan","PI","convert2dTo3dPoint","x","y","z","adaptRatioZ","offsetX","offsetY","getEffectsLayerSpecific","ir","layer","specific","effects","undefined","getEffectsCompositionSpecific","EFFECTS_ANIMATION_SPECIFIC_KEYS","KEYS_BY_INVALIDATION_TARGET","position","rotation","scale","color","opacity","anchor","mask","precomp","invalidateEffectsLayerSpecific","removed","push","keys","hasEffectsColorAnimationPassthrough","colorOverLifetime","some","channelKey","hasEffectsAnimationPassthrough","_type_of","obj","OMIT","isRecord","normalizeJsonValue","normalized","normalize","path","inArray","Number","isFinite","is","map","item","index","normalizedItem","Reflect","getPrototypeOf","result","entries","createId","v4","replace","toDataPath","id","buildPoolIndex","pool","Map","entry","set","resolveDataPath","ref","resolveDataPathId","get","roundNumber","precision","factor","round","lerp","a","b","mergePreservedResources","generated","mergePool","asArray","sourceScene","filter","isExcludedPoolEntry","excluded","sourceCompositionId","collectRootCompositionIds","pools","asRecordArray","comp","components","Set","items","miscs","componentById","itemById","miscById","rootComposition","find","composition","asDataPathArray","componentRef","componentId","component","add","itemRef","collectItemAndOwnedComponents","timelineAssetId","collectMiscGraph","binding","trackId","itemId","has","miscId","misc","childRef","clip","assetId","preserved","seen","poolEntryKey","JSON","stringify","DEFAULT_PLAYER_VERSION","web","native","assembleGEScene","collector","itemBindings","duration","finalDuration","deriveDuration","objectBindingTrackRefs","objectBindingTrackId","timelineAsset","dataType","TimelineAsset","tracks","compositionComponentId","compositionId","sceneBindings","allItemRefs","compositionComponent","CompositionComponent","startTime","endBehavior","mapCompositionEndBehavior","previewSize","camera","fov","far","near","clipMode","backgroundColor","colorToRoundedRgba","generatedScene","version","playerVersion","images","fonts","plugins","type","compositions","geometries","materials","shaders","bins","textures","animations","frameRate","outPoint","inPoint","IREndBehavior","Restart","restart","Forward","forward","Freeze","freeze","Destroy","destroy","computeLayerTiming","compositionInPoint","time","stretch","offsetFrame","delay","startFrame","rawDuration","endFrame","layerDuration","extendParentEndFrames","layers","parentIndexSet","clonedLayers","maxEnd","child","parent","lifetimeMode","buildTimelineTracks","animation","itemType","childTrackIds","buildActivationTrack","buildTransformTrack","isPrecompItemType","buildSubCompositionTrack","isNullItemType","buildSpriteColorTrack","objectBindingTrack","ObjectBindingTrack","children","clips","null","appendPlayableTrack","assetDataType","ActivationPlayableAsset","trackDataType","ActivationTrack","assetFields","positionOverLifetime","rotationOverLifetime","sizeOverLifetime","TransformPlayableAsset","TransformTrack","startColor","SpriteColorPlayableAsset","SpriteColorTrack","SubCompositionPlayableAsset","SubCompositionTrack","spec","playableAsset","start","asset","track","DEFAULT_OUT_TANGENT","DEFAULT_IN_TANGENT","normalizeTime","frameTime","frames","max","getScalarValue","keyframe","dimensionIndex","convertIRScalarKeyframesToGE","property","timeContext","keyframed","keyframes","curve","buildCurveForDimension","convertIRVectorKeyframesToGE","firstValue","dimensions","curves","convertIRPositionKeyframesToGE","pathPoints","controlPoints","timingCurvePoints","normalizedTime","frame","outTangent","inTangent","startPosition","segmentEnd","nextKeyframe","hold","endValue","outgoingControlPoint","incomingControlPoint","spatialOut","spatialIn","startX","startY","endX","endY","unshift","timingCurves","buildPositionTimingCurves","makeEaseOut","segment","EASE_OUT","makeEaseIn","previousSegment","EASE_IN","makeEase","currentSegment","EASE","serializeBezierSegments","segments","totalPoints","bezierCurves","t0","t1","v0","endKeyframe","v1","outHandle","inHandle","outControlPointX","outControlPointY","inControlPointX","inControlPointY","firstTime","points","currentPoint","nextPoint","shouldUseKeyframeMode","DEFAULT_LOCAL_BOUNDS","getLayerLocalBounds","fallback","localBounds","hasIndependentParentLifetime","computeStaticPosition","ctx","anchorOffsetX","anchorOffsetY","transform","isNullType","positionValue","getStaticAnchor","getStaticScaleFromIR","applyScalePositionAdjust","bounds","staticScale","anchorDiffX","anchorDiffY","abs","computeAnchorInfo","localAnchorX","localAnchorY","anchorScaleX","anchorScaleY","text","anchorAdjust","textAlign","textHeight","isSpriteForAnchor","staticRotationZ","getStaticRotationZ","hasStaticRotation","rotationValue","radians","cosine","cos","sine","sin","rotatedX","rotatedY","rotationZ","getTimeContext","buildNormalizedTransformAnimation","buildPositionAnimation","buildRotationAnimation","buildSizeAnimation","positionResult","assertContiguousPositionSegments","useKeyframeMode","firstPathPoint","point3d","pathPoint","endPoint3d","controlPointPair","pathPointPair","dx","dy","firstControlPoint","secondControlPoint","curveData","easingData","keyframeValue","roundedPathPoints","roundPathPoint","roundedControlPoints","pathPayload","BEZIER_CURVE_PATH","point","nextStart","isContiguous","every","dimension","Error","buildRotationAxis","hasX","hasY","hasZ","asRotation","axisCount","separateAxes","CONSTANT","axisHasRotationValue","BEZIER_CURVE","buildConstantSizeAnimation","buildNormalizedColorAnimation","opacityValue","buildTransformAnimation","effectsSpecific","passthroughPosition","passthroughRotation","passthroughSize","buildColorAnimation","passthroughColor","_obj","GE_BLENDING_BY_IR_MODE","IRBlendMode","Normal","Multiply","Screen","Overlay","Darken","Lighten","ColorDodge","ColorBurn","HardLight","SoftLight","Difference","Exclusion","Hue","Saturation","Color","Luminosity","Add","mapBlendModeToGE","blendMode","mapLayerTypeToGETimelineType","sprite","mapLayerTypeToGEItemType","shape","estimateTextWidth","fontSize","letterSpacing","averageCharacterWidth","spacing","registerTexture","imageUrl","cache","cached","imageId","textureId","url","Texture","flipY","dataPathRef","buildComponent","buildSpriteComponent","buildTextComponent","buildShapeComponent","copyPassthroughMaskToComponent","effectsMask","blending","solidColor","textureDataPath","assetUrl","textureUrl","refId","textureCache","SpriteComponent","options","renderer","renderMode","MESH","texture","isNonDefaultAnchor","textInfo","textColor","textWidth","content","lineHeight","layerWidth","layerHeight","textSizeW","textSizeH","TextComponent","fontFamily","fontWeight","middle","right","left","fontStyle","letterSpace","autoWidth","size","shapes","shapeData","ShapeComponent","buildShapeOptions","mapShapePrimitiveType","primitiveType","IRShapePrimitiveType","Custom","mapCustomPaths","customPaths","Rectangle","roundness","Ellipse","xRadius","yRadius","Polygon","pointCount","radius","Star","innerRadius","outerRadius","innerRoundness","outerRoundness","fills","fill","mapShapePaint","strokes","stroke","strokeWidth","strokeCap","mapLineCap","strokeJoin","mapLineJoin","SHAPE_PRIMITIVE_TYPE_TO_GE","FILL_TYPE_TO_GE","IRFillType","Solid","LinearGradient","GradientLinear","RadialGradient","GradientRadial","AngularGradient","GradientAngular","LINE_CAP_TO_GE","IRLineCap","Butt","EffectsLineCap","Round","Square","LINE_JOIN_TO_GE","IRLineJoin","EffectsLineJoin","Bevel","Miter","lineCap","lineJoin","paint","colorToGE","gradientStops","GRADIENT_COLOR","startPoint","vec2ToGE","gradientStart","endPoint","gradientEnd","textureAssetUrl","scaleMode","r","g","paths","easingIns","easingOuts","indexes","easingIn","inTangents","easingOut","outTangents","pointIndex","close","closed","resolveLayerGenerationStrategy","sourceHierarchy","kind","needsPivotContainer","info","anchorScale","anchorOffset","anchorOffCenter","hasRotationAnimation","hasScaleAnimation","buildGETransform","eulerHint","appendNullLayer","layerIndex","layerToItemId","VFXItemData","visible","renderLevel","BPlus","appendPrecompLayer","buildPrecompContent","precompContent","precompRefId","rawContent","rawOptions","appendNullSpritePair","nullItemId","nullAnimation","nullPosition","nullTrackId","nullItem","childItemId","centerX","centerY","childPosition","childColorAnimation","childTrackId","layerToComponentId","scaledW","scaledH","childScale","childItem","parentId","appendParentLayer","appendVisualLayer","strategy","appendShapeLayerItems","colorAnimation","fullAnimation","rawPosition","itemScale","basePosition","shapeIndex","shapeItemId","shapeOffsetX","shapeOffsetY","shapePosition","shapeComponentId","shapeItem","applyParenting","layerByIndex","parentLayer","parentItemId","parentAnchor","adjustX","adjustY","applyMasks","lookup","maskSlotMeta","maskData","isMaskExactCrop","layerItemId","getItemId","layerComponentId","getComponentId","buildMaskForLayer","maskItemId","maskComponentId","maskBounds","getMaskBounds","anchorX","anchorY","maskPosX","cx","maskPosY","cy","timing","maskDuration","layerIsParent","isParentLayer","isAutoMask","maskArea","descendantTargets","collectClaimableRendererDescendants","maskItem","maskComponent","isSimpleRectMask","isMask","alphaMaskEnabled","buildPolygonMaskComponent","applyMaskReferenceToTargets","targetComponent","buildMaskRef","area","maskTrackId","reference","inverted","targets","shouldClaimMaskSlot","hasExistingMask","existing","isCurrentAutoMask","currentMaskArea","visit","targetParentId","componentRefs","componentReference","isMaskSourceComponent","computePointBounds","minX","Infinity","minY","maxX","maxY","min","maskW","maskH","precompW","precompH","isZeroTangent","tangent","customPoints","customEasingIns","customEasingOuts","customIndexes","applyGEMaskRemap","GEComponentIdToNewId","oldId","newId","normalizeChildVisibilityByParentDelays","independentLifetimeChildItemIds","bindingByItemId","advanceIndependentLifetimeParents","effectiveDelayCache","getEffectiveDelay","visited","sortedItems","topologicalSort","originalDelay","originalDuration","effectiveDelay","parentItem","parentDuration","isPrecompChild","newDuration","timeDiff","syncTimelineClips","parentAdvanceMap","parentExtendMap","childDelay","childDuration","parentDelay","advance","childEnd","parentEnd","extend","allParentIds","newDelay","childTrack","sorted","trackType","applyPostProcess","state","applyParentingStep","applySharedMaskPostProcess","applyGEMaskRemapStep","applyVisibilityStep","maskLookup","convertIRToGE","validateIRCompositionOrThrow","workingIR","appendLayer","GEComponentId","sourceComponentId","idx","reverse","hasGEPrecompMetadata","assembleIRComposition","scene","itemIds","compositionName","buildCompositionSpecific","hasPrecompItem","IR_BLEND_MODE_BY_GE","mapBlendModeToIR","GECode","mapEndBehaviorToIR","GEBehavior","mapLayerTimingToIR","convert3dTo2dPoint","effectiveRatio","px","py","buildSceneContext","candidate","background","imageById","textureById","itemIdToTrackId","buildSceneBindings","trackIdByItemId","findCompositionComponent","bindings","componentReferences","getCompositionItemIds","itemReferences","itemReference","TIME_EPSILON","VALUE_EPSILON","inverseLerp","range","parseBezierKeyframes","extractedSegments","extractSegments","normalizeScalarSegments","firstSegment","secondSegment","hasPrependedHold","shift","isHold","parseSegmentTangent","lastSegment","lastTime","lastValue","lastFrameTime","lastInTangent","isSupportedEaseCurve","data","nextEntry","nextType","nextData","expectedType","expectedLength","outTangentX","inTangentX","parsePositionTimingKeyframes","direction","valueDomain","controlPointIndex","valueStart","valueEnd","POSITION_EPSILON","parseTransformAnimation","channels","positionAnimation","parsePositionAnimation","parseRotationAnimation","scaleAnimation","parseScaleAnimation","parseOpacityAnimation","parseScalarChannel","pathData","valueType","payload","controlPointsRaw","timingKeyframes","startIndex","isPrependedPositionBridge","pendingSpatialIn","position2d","keyframeIndex","pendingSpatialInTangent","segmentIndex","firstControlPointIndex","secondControlPointIndex","startPathPoint","endPathPoint","startPathPoint2d","endPathPoint2d","firstControlPoint2d","secondControlPoint2d","firstTiming","secondTiming","secondPathPoint","pointNearlyEquals","bridgeDuration","isZeroDurationNoOp","isDelayedHoldBridge","bezierHandleNearlyEquals","handle","xData","yData","zData","axes","toScaleAxis","animatedAxes","axis","staticValue","scalarAnimationIsContinuous","scaleAnimationFramesAreAligned","template","segmentHandles","handles","resolveScaleSegmentHandles","readScaleAxisValue","constant","scalarValuesEqual","selected","scaleSegmentHandlesEqual","bezierHandlesEqual","parseComponent","parseSpriteComponent","parseTextComponent","parseShapeComponent","rawMask","textureReference","sourceReference","image","isWhite","textAlignCode","parseShapeOptions","GEType","mapShapePrimitiveTypeToIR","style","GEFills","parseShapePaint","GEStrokes","GEStrokeWidth","GEStrokeCap","mapLineCapToIR","GEStrokeJoin","mapLineJoinToIR","parseCustomPaths","firstPath","readScaledNumber","readOptionalNumberField","readPointCount","GE_TO_SHAPE_PRIMITIVE_TYPE","typeMap","gradientStopsRaw","stops","resolveTextureAsset","isTextureScaleMode","lineCapByCode","lineJoinByCode","pathInTangents","pathOutTangents","pathIndex","isInteger","trim","parseTimeline","childReferences","transformAsset","spriteColorAsset","childReference","assetReference","parseStaticTransform","itemTransform","scaleValue","isDefault","parseItemToLayer","rawTransformPassthrough","timeline","componentData","itemSize","readItemSize","textBounds","readTextBounds","staticChannels","animationChannels","rawPassthrough","rawPositionOverLifetime","rawRotationOverLifetime","rawSizeOverLifetime","rawColorOverLifetime","rawColor","anchorInfo","deriveAnchorFromScale","scaleX","scaleY","hasStaticScale","scaleAdjustX","scaleAdjustY","totalX","totalY","precompReferenceId","mergeNullSpritePairs","descriptors","childByParentId","descriptor","mergedChildIds","mergedDescriptorByParentId","isNullItem","onlyChild","childType","isVisual","sameName","hasNoComponents","hasVisualComponent","hasSplitPairTiming","hasParentTransformSignal","hasNoIndependentChildTransform","sameNameChild","mergeNullAndSprite","merged","parentTimeline","childTimeline","parentEndBehavior","readItemEndBehavior","childEndBehavior","nearlyEqual","hasTransformPayload","hasNonDefaultScale","hasNonDefaultEulerHint","hasNonEmptyRecord","nullDescriptor","childDescriptor","childTransform","childSize","parentEffects","childEffects","resolveHierarchy","layerIndexByItemId","descriptorByItemId","parentIndex","parentDescriptor","getDescriptorAnchor","convertGEToIR","reversedItemIds","mergedDescriptors"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27]}
|